@buoy-gg/shared-ui 7.0.25 → 7.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/lib/commonjs/JsModal.js +156 -20
  2. package/lib/commonjs/JsModal.web.js +85 -39
  3. package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +14 -4
  4. package/lib/commonjs/dataViewer/diffThemes.js +20 -18
  5. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +8 -8
  6. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  7. package/lib/commonjs/icons/lucide-icons.js +74 -15
  8. package/lib/commonjs/index.js +86 -0
  9. package/lib/commonjs/ui/backgrounds/BackgroundSwitcher.js +248 -74
  10. package/lib/commonjs/ui/backgrounds/README.md +102 -20
  11. package/lib/commonjs/ui/backgrounds/backgroundStore.js +20 -6
  12. package/lib/commonjs/ui/backgrounds/index.js +91 -1
  13. package/lib/commonjs/ui/backgrounds/primitives.js +50 -14
  14. package/lib/commonjs/ui/backgrounds/registry.js +41 -64
  15. package/lib/commonjs/ui/backgrounds/rng.js +21 -0
  16. package/lib/commonjs/ui/backgrounds/skyClock.js +45 -0
  17. package/lib/commonjs/ui/backgrounds/variants/daylight.js +453 -0
  18. package/lib/commonjs/ui/backgrounds/variants/deepField.js +60 -30
  19. package/lib/commonjs/ui/backgrounds/variants/hyperspace.js +218 -0
  20. package/lib/commonjs/ui/backgrounds/variants/liveSky.js +898 -0
  21. package/lib/commonjs/ui/backgrounds/variants/meteors.js +257 -0
  22. package/lib/commonjs/ui/backgrounds/variants/moonlight.js +472 -0
  23. package/lib/commonjs/ui/backgrounds/variants/underwater.js +757 -0
  24. package/lib/commonjs/ui/components/Badge.js +11 -10
  25. package/lib/commonjs/ui/components/CompactRow.js +30 -17
  26. package/lib/commonjs/ui/components/DevToolsCard.js +12 -8
  27. package/lib/commonjs/ui/components/DynamicFilterView.js +43 -41
  28. package/lib/commonjs/ui/components/EventStepperFooter.js +38 -10
  29. package/lib/commonjs/ui/components/FilterComponents.js +11 -11
  30. package/lib/commonjs/ui/components/ModalHeader.js +13 -13
  31. package/lib/commonjs/ui/components/SectionHeader.js +3 -1
  32. package/lib/commonjs/ui/components/StorageTypeBadge.js +3 -2
  33. package/lib/commonjs/ui/components/TabSelector.js +56 -38
  34. package/lib/commonjs/ui/components/ValueTypeBadge.js +7 -6
  35. package/lib/commonjs/ui/components/WindowControls.js +37 -10
  36. package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +8 -0
  37. package/lib/commonjs/ui/night/nightTheme.js +120 -0
  38. package/lib/commonjs/ui/night/primitives.js +498 -0
  39. package/lib/module/JsModal.js +156 -20
  40. package/lib/module/JsModal.web.js +83 -39
  41. package/lib/module/dataViewer/VirtualizedDataExplorer.js +14 -4
  42. package/lib/module/dataViewer/diffThemes.js +20 -18
  43. package/lib/module/dataViewer/tree/TreeDiffViewer.js +9 -9
  44. package/lib/module/hooks/safe-area-impl.js +1 -1
  45. package/lib/module/icons/lucide-icons.js +74 -15
  46. package/lib/module/index.js +4 -0
  47. package/lib/module/ui/backgrounds/BackgroundSwitcher.js +250 -76
  48. package/lib/module/ui/backgrounds/README.md +102 -20
  49. package/lib/module/ui/backgrounds/backgroundStore.js +19 -5
  50. package/lib/module/ui/backgrounds/index.js +11 -2
  51. package/lib/module/ui/backgrounds/primitives.js +53 -16
  52. package/lib/module/ui/backgrounds/registry.js +41 -64
  53. package/lib/module/ui/backgrounds/rng.js +20 -0
  54. package/lib/module/ui/backgrounds/skyClock.js +39 -0
  55. package/lib/module/ui/backgrounds/variants/daylight.js +449 -0
  56. package/lib/module/ui/backgrounds/variants/deepField.js +62 -31
  57. package/lib/module/ui/backgrounds/variants/hyperspace.js +214 -0
  58. package/lib/module/ui/backgrounds/variants/liveSky.js +893 -0
  59. package/lib/module/ui/backgrounds/variants/meteors.js +253 -0
  60. package/lib/module/ui/backgrounds/variants/moonlight.js +468 -0
  61. package/lib/module/ui/backgrounds/variants/underwater.js +753 -0
  62. package/lib/module/ui/components/Badge.js +11 -10
  63. package/lib/module/ui/components/CompactRow.js +30 -17
  64. package/lib/module/ui/components/DevToolsCard.js +12 -8
  65. package/lib/module/ui/components/DynamicFilterView.js +43 -41
  66. package/lib/module/ui/components/EventStepperFooter.js +38 -10
  67. package/lib/module/ui/components/FilterComponents.js +11 -11
  68. package/lib/module/ui/components/ModalHeader.js +13 -13
  69. package/lib/module/ui/components/SectionHeader.js +3 -1
  70. package/lib/module/ui/components/StorageTypeBadge.js +3 -2
  71. package/lib/module/ui/components/TabSelector.js +57 -39
  72. package/lib/module/ui/components/ValueTypeBadge.js +7 -6
  73. package/lib/module/ui/components/WindowControls.js +37 -10
  74. package/lib/module/ui/gameUI/constants/gameUIColors.js +8 -0
  75. package/lib/module/ui/night/nightTheme.js +116 -0
  76. package/lib/module/ui/night/primitives.js +485 -0
  77. package/lib/typescript/commonjs/JsModal.d.ts +18 -0
  78. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/JsModal.web.d.ts +13 -0
  80. package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts +3 -1
  83. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  86. package/lib/typescript/commonjs/icons/lucide-icons.d.ts +12 -1
  87. package/lib/typescript/commonjs/icons/lucide-icons.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/index.d.ts +3 -0
  89. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/ui/backgrounds/BackgroundSwitcher.d.ts +26 -6
  91. package/lib/typescript/commonjs/ui/backgrounds/BackgroundSwitcher.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/ui/backgrounds/backgroundStore.d.ts +3 -0
  93. package/lib/typescript/commonjs/ui/backgrounds/backgroundStore.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts +7 -1
  95. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/ui/backgrounds/primitives.d.ts +18 -3
  97. package/lib/typescript/commonjs/ui/backgrounds/primitives.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts +8 -0
  99. package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/ui/backgrounds/rng.d.ts +6 -0
  101. package/lib/typescript/commonjs/ui/backgrounds/rng.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/ui/backgrounds/skyClock.d.ts +17 -0
  103. package/lib/typescript/commonjs/ui/backgrounds/skyClock.d.ts.map +1 -0
  104. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts +1 -1
  105. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/ui/backgrounds/variants/daylight.d.ts +30 -0
  107. package/lib/typescript/commonjs/ui/backgrounds/variants/daylight.d.ts.map +1 -0
  108. package/lib/typescript/commonjs/ui/backgrounds/variants/deepField.d.ts +19 -4
  109. package/lib/typescript/commonjs/ui/backgrounds/variants/deepField.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/ui/backgrounds/variants/hyperspace.d.ts +39 -0
  111. package/lib/typescript/commonjs/ui/backgrounds/variants/hyperspace.d.ts.map +1 -0
  112. package/lib/typescript/commonjs/ui/backgrounds/variants/liveSky.d.ts +41 -0
  113. package/lib/typescript/commonjs/ui/backgrounds/variants/liveSky.d.ts.map +1 -0
  114. package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts +26 -0
  115. package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts.map +1 -0
  116. package/lib/typescript/commonjs/ui/backgrounds/variants/moonlight.d.ts +35 -0
  117. package/lib/typescript/commonjs/ui/backgrounds/variants/moonlight.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/ui/backgrounds/variants/underwater.d.ts +51 -0
  119. package/lib/typescript/commonjs/ui/backgrounds/variants/underwater.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/ui/components/Badge.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts +2 -0
  124. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/ui/components/StorageTypeBadge.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/ui/components/TabSelector.d.ts +9 -0
  127. package/lib/typescript/commonjs/ui/components/TabSelector.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/ui/components/ValueTypeBadge.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/ui/components/WindowControls.d.ts +4 -2
  130. package/lib/typescript/commonjs/ui/components/WindowControls.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +8 -0
  132. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts +113 -0
  134. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/ui/night/primitives.d.ts +111 -0
  136. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -0
  137. package/lib/typescript/module/JsModal.d.ts +18 -0
  138. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  139. package/lib/typescript/module/JsModal.web.d.ts +13 -0
  140. package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
  141. package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  142. package/lib/typescript/module/dataViewer/diffThemes.d.ts +3 -1
  143. package/lib/typescript/module/dataViewer/diffThemes.d.ts.map +1 -1
  144. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  145. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  146. package/lib/typescript/module/icons/lucide-icons.d.ts +12 -1
  147. package/lib/typescript/module/icons/lucide-icons.d.ts.map +1 -1
  148. package/lib/typescript/module/index.d.ts +3 -0
  149. package/lib/typescript/module/index.d.ts.map +1 -1
  150. package/lib/typescript/module/ui/backgrounds/BackgroundSwitcher.d.ts +26 -6
  151. package/lib/typescript/module/ui/backgrounds/BackgroundSwitcher.d.ts.map +1 -1
  152. package/lib/typescript/module/ui/backgrounds/backgroundStore.d.ts +3 -0
  153. package/lib/typescript/module/ui/backgrounds/backgroundStore.d.ts.map +1 -1
  154. package/lib/typescript/module/ui/backgrounds/index.d.ts +7 -1
  155. package/lib/typescript/module/ui/backgrounds/index.d.ts.map +1 -1
  156. package/lib/typescript/module/ui/backgrounds/primitives.d.ts +18 -3
  157. package/lib/typescript/module/ui/backgrounds/primitives.d.ts.map +1 -1
  158. package/lib/typescript/module/ui/backgrounds/registry.d.ts +8 -0
  159. package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +1 -1
  160. package/lib/typescript/module/ui/backgrounds/rng.d.ts +6 -0
  161. package/lib/typescript/module/ui/backgrounds/rng.d.ts.map +1 -1
  162. package/lib/typescript/module/ui/backgrounds/skyClock.d.ts +17 -0
  163. package/lib/typescript/module/ui/backgrounds/skyClock.d.ts.map +1 -0
  164. package/lib/typescript/module/ui/backgrounds/types.d.ts +1 -1
  165. package/lib/typescript/module/ui/backgrounds/types.d.ts.map +1 -1
  166. package/lib/typescript/module/ui/backgrounds/variants/daylight.d.ts +30 -0
  167. package/lib/typescript/module/ui/backgrounds/variants/daylight.d.ts.map +1 -0
  168. package/lib/typescript/module/ui/backgrounds/variants/deepField.d.ts +19 -4
  169. package/lib/typescript/module/ui/backgrounds/variants/deepField.d.ts.map +1 -1
  170. package/lib/typescript/module/ui/backgrounds/variants/hyperspace.d.ts +39 -0
  171. package/lib/typescript/module/ui/backgrounds/variants/hyperspace.d.ts.map +1 -0
  172. package/lib/typescript/module/ui/backgrounds/variants/liveSky.d.ts +41 -0
  173. package/lib/typescript/module/ui/backgrounds/variants/liveSky.d.ts.map +1 -0
  174. package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts +26 -0
  175. package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts.map +1 -0
  176. package/lib/typescript/module/ui/backgrounds/variants/moonlight.d.ts +35 -0
  177. package/lib/typescript/module/ui/backgrounds/variants/moonlight.d.ts.map +1 -0
  178. package/lib/typescript/module/ui/backgrounds/variants/underwater.d.ts +51 -0
  179. package/lib/typescript/module/ui/backgrounds/variants/underwater.d.ts.map +1 -0
  180. package/lib/typescript/module/ui/components/Badge.d.ts.map +1 -1
  181. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
  182. package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +1 -1
  183. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts +2 -0
  184. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +1 -1
  185. package/lib/typescript/module/ui/components/StorageTypeBadge.d.ts.map +1 -1
  186. package/lib/typescript/module/ui/components/TabSelector.d.ts +9 -0
  187. package/lib/typescript/module/ui/components/TabSelector.d.ts.map +1 -1
  188. package/lib/typescript/module/ui/components/ValueTypeBadge.d.ts.map +1 -1
  189. package/lib/typescript/module/ui/components/WindowControls.d.ts +4 -2
  190. package/lib/typescript/module/ui/components/WindowControls.d.ts.map +1 -1
  191. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +8 -0
  192. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  193. package/lib/typescript/module/ui/night/nightTheme.d.ts +113 -0
  194. package/lib/typescript/module/ui/night/nightTheme.d.ts.map +1 -0
  195. package/lib/typescript/module/ui/night/primitives.d.ts +111 -0
  196. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -0
  197. package/package.json +4 -4
  198. package/lib/commonjs/ui/backgrounds/variants/lattice.js +0 -579
  199. package/lib/commonjs/ui/backgrounds/variants/starfield.js +0 -210
  200. package/lib/module/ui/backgrounds/variants/lattice.js +0 -575
  201. package/lib/module/ui/backgrounds/variants/starfield.js +0 -206
  202. package/lib/typescript/commonjs/ui/backgrounds/variants/lattice.d.ts +0 -33
  203. package/lib/typescript/commonjs/ui/backgrounds/variants/lattice.d.ts.map +0 -1
  204. package/lib/typescript/commonjs/ui/backgrounds/variants/starfield.d.ts +0 -12
  205. package/lib/typescript/commonjs/ui/backgrounds/variants/starfield.d.ts.map +0 -1
  206. package/lib/typescript/module/ui/backgrounds/variants/lattice.d.ts +0 -33
  207. package/lib/typescript/module/ui/backgrounds/variants/lattice.d.ts.map +0 -1
  208. package/lib/typescript/module/ui/backgrounds/variants/starfield.d.ts +0 -12
  209. package/lib/typescript/module/ui/backgrounds/variants/starfield.d.ts.map +0 -1
@@ -10,6 +10,7 @@ exports.StatusBadge = StatusBadge;
10
10
  exports.TypeBadge = TypeBadge;
11
11
  var _reactNative = require("react-native");
12
12
  var _gameUIColors = require("../gameUI/constants/gameUIColors.js");
13
+ var _nightTheme = require("../night/nightTheme.js");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
15
  // Badge variants
15
16
 
@@ -19,9 +20,9 @@ const STATUS_COLORS = {
19
20
  error: _gameUIColors.buoyColors.error,
20
21
  warning: _gameUIColors.buoyColors.warning,
21
22
  info: _gameUIColors.buoyColors.primary,
22
- pending: _gameUIColors.buoyColors.textSecondary,
23
+ pending: _nightTheme.night.color.textSecondary,
23
24
  active: _gameUIColors.buoyColors.success,
24
- inactive: _gameUIColors.buoyColors.textMuted,
25
+ inactive: _nightTheme.night.color.textTertiary,
25
26
  stale: _gameUIColors.buoyColors.warning,
26
27
  fetching: _gameUIColors.buoyColors.primary
27
28
  };
@@ -31,9 +32,9 @@ const METHOD_COLORS = {
31
32
  GET: _gameUIColors.buoyColors.success,
32
33
  POST: _gameUIColors.buoyColors.primary,
33
34
  PUT: _gameUIColors.buoyColors.warning,
34
- PATCH: _gameUIColors.buoyColors.textSecondary,
35
+ PATCH: _nightTheme.night.color.textSecondary,
35
36
  DELETE: _gameUIColors.buoyColors.error,
36
- HEAD: _gameUIColors.buoyColors.textMuted,
37
+ HEAD: _nightTheme.night.color.textTertiary,
37
38
  OPTIONS: _gameUIColors.buoyColors.primary
38
39
  };
39
40
 
@@ -191,13 +192,13 @@ function getTypeColor(type) {
191
192
  string: _gameUIColors.buoyColors.primary,
192
193
  number: _gameUIColors.buoyColors.primary,
193
194
  boolean: _gameUIColors.buoyColors.primary,
194
- object: _gameUIColors.buoyColors.textSecondary,
195
- array: _gameUIColors.buoyColors.textSecondary,
196
- null: _gameUIColors.buoyColors.textMuted,
197
- undefined: _gameUIColors.buoyColors.textMuted,
198
- function: _gameUIColors.buoyColors.textSecondary
195
+ object: _nightTheme.night.color.textSecondary,
196
+ array: _nightTheme.night.color.textSecondary,
197
+ null: _nightTheme.night.color.textTertiary,
198
+ undefined: _nightTheme.night.color.textTertiary,
199
+ function: _nightTheme.night.color.textSecondary
199
200
  };
200
- return typeColors[type.toLowerCase()] || _gameUIColors.buoyColors.textMuted;
201
+ return typeColors[type.toLowerCase()] || _nightTheme.night.color.textTertiary;
201
202
  }
202
203
  const styles = _reactNative.StyleSheet.create({
203
204
  statusDot: {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.CompactRow = CompactRow;
7
7
  var _reactNative = require("react-native");
8
8
  var _index = require("../../icons/index.js");
9
- var _gameUIColors = require("../gameUI/constants/gameUIColors.js");
9
+ var _nightTheme = require("../night/nightTheme.js");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  function CompactRow({
12
12
  statusDotColor,
@@ -28,11 +28,15 @@ function CompactRow({
28
28
  expandedGlowColor
29
29
  }) {
30
30
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
31
- style: styles.rowWrapper,
31
+ style: [styles.rowWrapper, isExpanded && styles.rowWrapperExpanded],
32
32
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
33
33
  style: [styles.row, isSelected && styles.selectedRow, isExpanded && [styles.expandedRowActive, {
34
- borderColor: expandedGlowColor || _gameUIColors.buoyColors.primary,
35
- shadowColor: expandedGlowColor || _gameUIColors.buoyColors.primary
34
+ borderColor: expandedGlowColor || _nightTheme.night.color.accent,
35
+ // The resting hairline sets borderBottomColor specifically, and a
36
+ // specific side always beats the generic borderColor — restate it
37
+ // or the expanded card's bottom edge keeps the faint separator.
38
+ borderBottomColor: expandedGlowColor || _nightTheme.night.color.accent,
39
+ shadowColor: expandedGlowColor || _nightTheme.night.color.accent
36
40
  }]],
37
41
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
38
42
  onPress: onPress,
@@ -92,10 +96,10 @@ function CompactRow({
92
96
  style: styles.chevronContainer,
93
97
  children: isExpanded ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ChevronDown, {
94
98
  size: 14,
95
- color: _gameUIColors.buoyColors.textMuted
99
+ color: _nightTheme.night.color.textTertiary
96
100
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ChevronRight, {
97
101
  size: 14,
98
- color: _gameUIColors.buoyColors.textMuted
102
+ color: _nightTheme.night.color.textTertiary
99
103
  })
100
104
  })]
101
105
  })]
@@ -113,15 +117,23 @@ const styles = _reactNative.StyleSheet.create({
113
117
  marginHorizontal: 8,
114
118
  marginVertical: 3
115
119
  },
120
+ /** The expanded card scales to 1.02 and grows a 2px glow border, which eats
121
+ * the 3px resting margin — without extra room its bottom edge sits on the
122
+ * next card. */
123
+ rowWrapperExpanded: {
124
+ marginVertical: 12
125
+ },
116
126
  row: {
117
- backgroundColor: _gameUIColors.buoyColors.card,
127
+ // Translucent night scrim so the shared ToolBackground reads through —
128
+ // kept in step with DevToolsCard (same fill, same luminance contract).
129
+ backgroundColor: "rgba(12, 12, 12, 0.9)",
118
130
  borderRadius: 8,
119
131
  borderWidth: 1,
120
- borderColor: _gameUIColors.buoyColors.border + "40",
132
+ borderColor: _nightTheme.night.color.border,
121
133
  // …separated by a single hairline instead of four borders per row.
122
134
  // Declared after borderWidth so the specific side wins on the chat path.
123
135
  borderBottomWidth: 1,
124
- borderBottomColor: _gameUIColors.buoyColors.border + "40",
136
+ borderBottomColor: _nightTheme.night.color.separator,
125
137
  padding: 12,
126
138
  paddingHorizontal: 12,
127
139
  transform: [{
@@ -131,12 +143,12 @@ const styles = _reactNative.StyleSheet.create({
131
143
  selectedRow: {
132
144
  // Neutral fill, no outline, no lift — the same selection language as the
133
145
  // sidebar. The classic path keeps its tinted, scaled, glowing card.
134
- backgroundColor: _gameUIColors.buoyColors.primary + "15",
135
- borderColor: _gameUIColors.buoyColors.primary + "50",
146
+ backgroundColor: _nightTheme.night.color.accentSoft,
147
+ borderColor: _nightTheme.night.color.accentBorderStrong,
136
148
  transform: [{
137
149
  scale: 1.01
138
150
  }],
139
- shadowColor: _gameUIColors.buoyColors.primary,
151
+ shadowColor: _nightTheme.night.color.accent,
140
152
  shadowOffset: {
141
153
  width: 0,
142
154
  height: 0
@@ -150,6 +162,7 @@ const styles = _reactNative.StyleSheet.create({
150
162
  scale: 1.02
151
163
  }],
152
164
  borderWidth: 2,
165
+ paddingBottom: 16,
153
166
  shadowOffset: {
154
167
  width: 0,
155
168
  height: 0
@@ -187,7 +200,7 @@ const styles = _reactNative.StyleSheet.create({
187
200
  },
188
201
  observerText: {
189
202
  fontSize: 10,
190
- color: _gameUIColors.buoyColors.textMuted,
203
+ color: _nightTheme.night.color.textTertiary,
191
204
  marginTop: 1
192
205
  },
193
206
  querySection: {
@@ -197,7 +210,7 @@ const styles = _reactNative.StyleSheet.create({
197
210
  queryHash: {
198
211
  fontFamily: "monospace",
199
212
  fontSize: 12,
200
- color: _gameUIColors.buoyColors.text,
213
+ color: _nightTheme.night.color.text,
201
214
  lineHeight: 16
202
215
  },
203
216
  secondaryRow: {
@@ -208,7 +221,7 @@ const styles = _reactNative.StyleSheet.create({
208
221
  },
209
222
  secondaryText: {
210
223
  fontSize: 10,
211
- color: _gameUIColors.buoyColors.textMuted,
224
+ color: _nightTheme.night.color.textTertiary,
212
225
  marginTop: 1
213
226
  },
214
227
  rightSection: {
@@ -233,12 +246,12 @@ const styles = _reactNative.StyleSheet.create({
233
246
  marginTop: 8,
234
247
  paddingTop: 8,
235
248
  borderTopWidth: 1,
236
- borderTopColor: _gameUIColors.buoyColors.border + "20",
249
+ borderTopColor: _nightTheme.night.color.separator,
237
250
  marginLeft: 24 // Align with content after status dot
238
251
  },
239
252
  bottomRightText: {
240
253
  fontSize: 9,
241
- color: _gameUIColors.buoyColors.textMuted,
254
+ color: _nightTheme.night.color.textTertiary,
242
255
  fontFamily: "monospace"
243
256
  }
244
257
  });
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.DEVTOOLS_CARD_CONSTANTS = void 0;
7
7
  exports.DevToolsCard = DevToolsCard;
8
8
  var _reactNative = require("react-native");
9
- var _gameUIColors = require("../gameUI/constants/gameUIColors.js");
9
+ var _nightTheme = require("../night/nightTheme.js");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  /**
12
12
  * DevToolsCard
@@ -89,23 +89,27 @@ const styles = _reactNative.StyleSheet.create({
89
89
  marginVertical: DEVTOOLS_CARD_CONSTANTS.marginVertical
90
90
  },
91
91
  card: {
92
- backgroundColor: _gameUIColors.buoyColors.card,
92
+ // Translucent night scrim — same luminance contract as the old
93
+ // buoyColors.cardScrim (backing stays readable under the brightest
94
+ // scenes), re-based on the night surface so the ToolBackground reads
95
+ // through every tool's card lists, not only around them.
96
+ backgroundColor: "rgba(12, 12, 12, 0.9)",
93
97
  borderRadius: DEVTOOLS_CARD_CONSTANTS.borderRadius,
94
98
  borderWidth: DEVTOOLS_CARD_CONSTANTS.borderWidth,
95
- borderColor: _gameUIColors.buoyColors.border + "40",
99
+ borderColor: _nightTheme.night.color.border,
96
100
  // The separator. On classic this just re-states the full outline; on chat
97
101
  // it is the ONLY edge the row has.
98
102
  borderBottomWidth: 1,
99
- borderBottomColor: _gameUIColors.buoyColors.border + "40",
103
+ borderBottomColor: _nightTheme.night.color.separator,
100
104
  padding: DEVTOOLS_CARD_CONSTANTS.padding,
101
105
  paddingHorizontal: DEVTOOLS_CARD_CONSTANTS.padding,
102
106
  minHeight: DEVTOOLS_CARD_CONSTANTS.minHeight
103
107
  },
104
108
  selectedCard: {
105
- // Neutral grey fill, no tinted outline and no lift — see CompactRow.
106
- backgroundColor: _gameUIColors.buoyColors.primary + "15",
107
- borderColor: _gameUIColors.buoyColors.primary + "50",
108
- shadowColor: _gameUIColors.buoyColors.primary,
109
+ // The night selection language: soft accent fill + accent border.
110
+ backgroundColor: _nightTheme.night.color.accentSoft,
111
+ borderColor: _nightTheme.night.color.accentBorderStrong,
112
+ shadowColor: _nightTheme.night.color.accent,
109
113
  shadowOffset: {
110
114
  width: 0,
111
115
  height: 0
@@ -11,6 +11,7 @@ var _SectionHeader = require("./SectionHeader.js");
11
11
  var _FilterComponents = require("./FilterComponents.js");
12
12
  var _useFilterManager = require("../../hooks/useFilterManager.js");
13
13
  var _gameUIColors = require("../gameUI/constants/gameUIColors.js");
14
+ var _nightTheme = require("../night/nightTheme.js");
14
15
  var _jsxRuntime = require("react/jsx-runtime");
15
16
  function DynamicFilterView({
16
17
  sections = [],
@@ -64,7 +65,7 @@ function DynamicFilterView({
64
65
  style: [styles.tabButton, currentActiveTab === tab.id ? styles.tabButtonActive : styles.tabButtonInactive],
65
66
  children: [tab.icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(tab.icon, {
66
67
  size: 14,
67
- color: currentActiveTab === tab.id ? _gameUIColors.buoyColors.primary : _gameUIColors.buoyColors.textMuted
68
+ color: currentActiveTab === tab.id ? _gameUIColors.buoyColors.primary : _nightTheme.night.color.textTertiary
68
69
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
69
70
  style: [styles.tabButtonText, currentActiveTab === tab.id ? styles.tabButtonTextActive : styles.tabButtonTextInactive],
70
71
  children: tab.label
@@ -304,7 +305,7 @@ function DynamicFilterView({
304
305
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_SectionHeader.SectionHeader, {
305
306
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionHeader.SectionHeader.Icon, {
306
307
  icon: howItWorksSection.icon || _index.Filter,
307
- color: _gameUIColors.buoyColors.textSecondary,
308
+ color: _nightTheme.night.color.textSecondary,
308
309
  size: 12
309
310
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionHeader.SectionHeader.Title, {
310
311
  children: howItWorksSection.title || "HOW FILTERS WORK"
@@ -355,7 +356,8 @@ function DynamicFilterView({
355
356
  const styles = _reactNative.StyleSheet.create({
356
357
  container: {
357
358
  flex: 1,
358
- backgroundColor: _gameUIColors.buoyColors.base
359
+ // Transparent so the host modal's night star field shows through.
360
+ backgroundColor: "transparent"
359
361
  },
360
362
  content: {
361
363
  flex: 1
@@ -370,9 +372,9 @@ const styles = _reactNative.StyleSheet.create({
370
372
  paddingHorizontal: 16,
371
373
  paddingVertical: 12,
372
374
  gap: 8,
373
- backgroundColor: _gameUIColors.buoyColors.card,
375
+ backgroundColor: _nightTheme.night.color.surface,
374
376
  borderBottomWidth: 1,
375
- borderBottomColor: _gameUIColors.buoyColors.border
377
+ borderBottomColor: _nightTheme.night.color.border
376
378
  },
377
379
  tabButton: {
378
380
  flex: 1,
@@ -392,14 +394,14 @@ const styles = _reactNative.StyleSheet.create({
392
394
  */
393
395
  tabButtonActive: {
394
396
  // White THUMB, not a grey one — the INACTIVE tab is already
395
- // `buoyColors.hover` here, so a grey active state would be invisible.
397
+ // `night.color.surfaceElevated` here, so a grey active state would be invisible.
396
398
  backgroundColor: _gameUIColors.buoyColors.primary + "20",
397
399
  borderColor: _gameUIColors.buoyColors.primary,
398
400
  borderWidth: 2
399
401
  },
400
402
  tabButtonInactive: {
401
- backgroundColor: _gameUIColors.buoyColors.hover,
402
- borderColor: _gameUIColors.buoyColors.border
403
+ backgroundColor: _nightTheme.night.color.surfaceElevated,
404
+ borderColor: _nightTheme.night.color.border
403
405
  },
404
406
  tabButtonText: {
405
407
  fontSize: 11,
@@ -410,7 +412,7 @@ const styles = _reactNative.StyleSheet.create({
410
412
  color: _gameUIColors.buoyColors.primary
411
413
  },
412
414
  tabButtonTextInactive: {
413
- color: _gameUIColors.buoyColors.textMuted
415
+ color: _nightTheme.night.color.textTertiary
414
416
  },
415
417
  tabBadge: {
416
418
  backgroundColor: _gameUIColors.buoyColors.primary + "40",
@@ -438,7 +440,7 @@ const styles = _reactNative.StyleSheet.create({
438
440
  marginTop: 8
439
441
  },
440
442
  filterCard: {
441
- backgroundColor: _gameUIColors.buoyColors.card,
443
+ backgroundColor: _nightTheme.night.color.surface,
442
444
  borderRadius: 12,
443
445
  // rounded-xl
444
446
  paddingHorizontal: 8,
@@ -447,7 +449,7 @@ const styles = _reactNative.StyleSheet.create({
447
449
  alignItems: "center",
448
450
  justifyContent: "center",
449
451
  borderWidth: 1,
450
- borderColor: _gameUIColors.buoyColors.border,
452
+ borderColor: _nightTheme.night.color.border,
451
453
  width: 72,
452
454
  minHeight: 68
453
455
  },
@@ -471,7 +473,7 @@ const styles = _reactNative.StyleSheet.create({
471
473
  filterCountActive: {
472
474
  fontSize: 14,
473
475
  fontWeight: "700",
474
- color: _gameUIColors.buoyColors.text,
476
+ color: _nightTheme.night.color.text,
475
477
  fontFamily: "monospace",
476
478
  marginTop: 3,
477
479
  marginBottom: 1,
@@ -485,14 +487,14 @@ const styles = _reactNative.StyleSheet.create({
485
487
  filterCountZero: {
486
488
  fontSize: 11,
487
489
  fontWeight: "500",
488
- color: _gameUIColors.buoyColors.textMuted,
490
+ color: _nightTheme.night.color.textTertiary,
489
491
  fontFamily: "monospace",
490
492
  marginTop: 3,
491
493
  marginBottom: 1
492
494
  },
493
495
  filterLabelCompact: {
494
496
  fontSize: 10,
495
- color: _gameUIColors.buoyColors.text,
497
+ color: _nightTheme.night.color.text,
496
498
  fontWeight: "600",
497
499
  textAlign: "center",
498
500
  textTransform: "capitalize",
@@ -505,14 +507,14 @@ const styles = _reactNative.StyleSheet.create({
505
507
  },
506
508
  filterDescriptionBottom: {
507
509
  fontSize: 8,
508
- color: _gameUIColors.buoyColors.textMuted,
510
+ color: _nightTheme.night.color.textTertiary,
509
511
  textAlign: "center",
510
512
  marginTop: 2,
511
513
  lineHeight: 11
512
514
  },
513
515
  sectionDescription: {
514
516
  fontSize: 10,
515
- color: _gameUIColors.buoyColors.textSecondary,
517
+ color: _nightTheme.night.color.textSecondary,
516
518
  marginTop: 4,
517
519
  marginBottom: 4,
518
520
  lineHeight: 14
@@ -533,11 +535,11 @@ const styles = _reactNative.StyleSheet.create({
533
535
  fontFamily: "monospace"
534
536
  },
535
537
  activeFiltersSection: {
536
- backgroundColor: _gameUIColors.buoyColors.card,
538
+ backgroundColor: _nightTheme.night.color.surface,
537
539
  borderRadius: 16,
538
540
  // rounded-2xl like web
539
541
  borderWidth: 1,
540
- borderColor: _gameUIColors.buoyColors.border,
542
+ borderColor: _nightTheme.night.color.border,
541
543
  marginTop: 16,
542
544
  overflow: "hidden"
543
545
  },
@@ -548,17 +550,17 @@ const styles = _reactNative.StyleSheet.create({
548
550
  maxHeight: 200
549
551
  },
550
552
  includeOnlySection: {
551
- backgroundColor: _gameUIColors.buoyColors.card,
553
+ backgroundColor: _nightTheme.night.color.surface,
552
554
  borderRadius: 16,
553
555
  // rounded-2xl like web
554
556
  borderWidth: 1,
555
- borderColor: _gameUIColors.buoyColors.border,
557
+ borderColor: _nightTheme.night.color.border,
556
558
  marginTop: 16,
557
559
  overflow: "hidden"
558
560
  },
559
561
  includeOnlyDescription: {
560
562
  fontSize: 10,
561
- color: _gameUIColors.buoyColors.textSecondary,
563
+ color: _nightTheme.night.color.textSecondary,
562
564
  paddingHorizontal: 16,
563
565
  paddingTop: 8,
564
566
  lineHeight: 14
@@ -574,17 +576,17 @@ const styles = _reactNative.StyleSheet.create({
574
576
  maxHeight: 150
575
577
  },
576
578
  excludeFiltersSection: {
577
- backgroundColor: _gameUIColors.buoyColors.card,
579
+ backgroundColor: _nightTheme.night.color.surface,
578
580
  borderRadius: 16,
579
581
  // rounded-2xl like web
580
582
  borderWidth: 1,
581
- borderColor: _gameUIColors.buoyColors.border,
583
+ borderColor: _nightTheme.night.color.border,
582
584
  marginTop: 16,
583
585
  overflow: "hidden"
584
586
  },
585
587
  excludeFiltersDescription: {
586
588
  fontSize: 10,
587
- color: _gameUIColors.buoyColors.textSecondary,
589
+ color: _nightTheme.night.color.textSecondary,
588
590
  paddingHorizontal: 16,
589
591
  paddingTop: 8,
590
592
  lineHeight: 14
@@ -620,7 +622,7 @@ const styles = _reactNative.StyleSheet.create({
620
622
  },
621
623
  filterSummaryText: {
622
624
  fontSize: 11,
623
- color: _gameUIColors.buoyColors.text,
625
+ color: _nightTheme.night.color.text,
624
626
  lineHeight: 16
625
627
  },
626
628
  filterSummaryInclude: {
@@ -633,17 +635,17 @@ const styles = _reactNative.StyleSheet.create({
633
635
  },
634
636
  emptyStateText: {
635
637
  fontSize: 11,
636
- color: _gameUIColors.buoyColors.textMuted,
638
+ color: _nightTheme.night.color.textTertiary,
637
639
  fontStyle: "italic",
638
640
  textAlign: "center",
639
641
  paddingVertical: 12
640
642
  },
641
643
  availableKeysSection: {
642
- backgroundColor: _gameUIColors.buoyColors.card,
644
+ backgroundColor: _nightTheme.night.color.surface,
643
645
  borderRadius: 16,
644
646
  // rounded-2xl like web
645
647
  borderWidth: 1,
646
- borderColor: _gameUIColors.buoyColors.border,
648
+ borderColor: _nightTheme.night.color.border,
647
649
  marginTop: 16,
648
650
  overflow: "hidden"
649
651
  },
@@ -659,31 +661,31 @@ const styles = _reactNative.StyleSheet.create({
659
661
  justifyContent: "space-between",
660
662
  paddingVertical: 10,
661
663
  paddingHorizontal: 12,
662
- backgroundColor: _gameUIColors.buoyColors.hover,
664
+ backgroundColor: _nightTheme.night.color.surfaceElevated,
663
665
  borderRadius: 8,
664
666
  borderWidth: 1,
665
- borderColor: _gameUIColors.buoyColors.border,
667
+ borderColor: _nightTheme.night.color.border,
666
668
  marginBottom: 8
667
669
  },
668
670
  availableKeyText: {
669
671
  flex: 1,
670
672
  fontSize: 11,
671
- color: _gameUIColors.buoyColors.text,
673
+ color: _nightTheme.night.color.text,
672
674
  fontFamily: "monospace",
673
675
  marginRight: 8
674
676
  },
675
677
  howItWorksSection: {
676
- backgroundColor: _gameUIColors.buoyColors.card,
678
+ backgroundColor: _nightTheme.night.color.surface,
677
679
  borderRadius: 16,
678
680
  // rounded-2xl like web
679
681
  borderWidth: 1,
680
- borderColor: _gameUIColors.buoyColors.border,
682
+ borderColor: _nightTheme.night.color.border,
681
683
  marginTop: 16,
682
684
  overflow: "hidden"
683
685
  },
684
686
  howItWorksText: {
685
687
  fontSize: 11,
686
- color: _gameUIColors.buoyColors.textSecondary,
688
+ color: _nightTheme.night.color.textSecondary,
687
689
  lineHeight: 16,
688
690
  marginBottom: 12,
689
691
  marginTop: 8,
@@ -695,29 +697,29 @@ const styles = _reactNative.StyleSheet.create({
695
697
  paddingHorizontal: 16,
696
698
  paddingBottom: 16,
697
699
  borderTopWidth: 1,
698
- borderTopColor: _gameUIColors.buoyColors.border
700
+ borderTopColor: _nightTheme.night.color.border
699
701
  },
700
702
  examplesTitle: {
701
703
  fontSize: 10,
702
704
  fontWeight: "600",
703
- color: _gameUIColors.buoyColors.textMuted,
705
+ color: _nightTheme.night.color.textTertiary,
704
706
  fontFamily: "monospace",
705
707
  letterSpacing: 0.5,
706
708
  marginBottom: 6
707
709
  },
708
710
  exampleItem: {
709
711
  fontSize: 10,
710
- color: _gameUIColors.buoyColors.textMuted,
712
+ color: _nightTheme.night.color.textTertiary,
711
713
  fontFamily: "monospace",
712
714
  lineHeight: 16
713
715
  },
714
716
  previewSection: {
715
- backgroundColor: _gameUIColors.buoyColors.hover,
717
+ backgroundColor: _nightTheme.night.color.surfaceElevated,
716
718
  // Slightly lighter to distinguish from other sections
717
719
  borderRadius: 16,
718
720
  // rounded-2xl like web
719
721
  borderWidth: 1,
720
- borderColor: _gameUIColors.buoyColors.borderStrong,
722
+ borderColor: _nightTheme.night.color.fillTertiary,
721
723
  marginTop: 16,
722
724
  overflow: "hidden"
723
725
  },
@@ -725,12 +727,12 @@ const styles = _reactNative.StyleSheet.create({
725
727
  paddingHorizontal: 16,
726
728
  paddingTop: 12,
727
729
  paddingBottom: 16,
728
- backgroundColor: _gameUIColors.buoyColors.base,
730
+ backgroundColor: _nightTheme.night.color.bg,
729
731
  // Darker content area for contrast
730
732
  marginHorizontal: 12,
731
733
  marginBottom: 12,
732
734
  borderRadius: 8,
733
735
  borderWidth: 1,
734
- borderColor: _gameUIColors.buoyColors.border
736
+ borderColor: _nightTheme.night.color.border
735
737
  }
736
738
  });
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _lucideIcons = require("../../icons/lucide-icons.js");
10
10
  var _macOSDesignSystemColors = require("../gameUI/constants/macOSDesignSystemColors.js");
11
+ var _nightTheme = require("../night/nightTheme.js");
11
12
  var _useSafeAreaInsets = require("../../hooks/useSafeAreaInsets.js");
12
13
  var _jsxRuntime = require("react/jsx-runtime");
13
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
@@ -31,51 +32,56 @@ const EventStepperFooter = exports.EventStepperFooter = /*#__PURE__*/(0, _react.
31
32
  itemLabel = "Event",
32
33
  subtitle,
33
34
  absolute = false,
34
- applySafeAreaInset = true
35
+ applySafeAreaInset = true,
36
+ variant = "night"
35
37
  }) {
36
38
  const insets = (0, _useSafeAreaInsets.useSafeAreaInsets)();
37
39
 
38
40
  // Don't render if there's only one or no items
39
41
  if (totalItems <= 1) return null;
42
+ const isNight = variant === "night";
40
43
  const isFirstItem = currentIndex === 0;
41
44
  const isLastItem = currentIndex === totalItems - 1;
42
45
  const bottomPadding = applySafeAreaInset ? 12 + insets.bottom : 12;
46
+ // Night buttons are the plate-with-accent-label style — chevrons match.
47
+ const enabledInk = isNight ? _nightTheme.night.color.accent : _macOSDesignSystemColors.macOSColors.text.primary;
48
+ const disabledInk = isNight ? _nightTheme.night.color.textTertiary : _macOSDesignSystemColors.macOSColors.text.muted;
43
49
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
44
- style: [styles.footer, absolute && styles.footerAbsolute, {
50
+ style: [styles.footer, isNight && styles.nightFooter, absolute && styles.footerAbsolute, {
45
51
  paddingBottom: bottomPadding
46
52
  }],
47
53
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
48
54
  onPress: onPrevious,
49
55
  disabled: isFirstItem,
50
- style: [styles.navButton, isFirstItem && styles.navButtonDisabled],
56
+ style: [styles.navButton, isNight && styles.nightNavButton, isFirstItem && styles.navButtonDisabled],
51
57
  activeOpacity: 0.7,
52
58
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideIcons.ChevronLeft, {
53
59
  size: 20,
54
- color: isFirstItem ? _macOSDesignSystemColors.macOSColors.text.muted : _macOSDesignSystemColors.macOSColors.text.primary
60
+ color: isFirstItem ? disabledInk : enabledInk
55
61
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
56
- style: [styles.navButtonText, isFirstItem && styles.navButtonTextDisabled],
62
+ style: [styles.navButtonText, isNight && styles.nightNavButtonText, isFirstItem && styles.navButtonTextDisabled, isFirstItem && isNight && styles.nightNavButtonTextDisabled],
57
63
  children: "Previous"
58
64
  })]
59
65
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
60
66
  style: styles.counterContainer,
61
67
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
62
- style: styles.counterText,
68
+ style: [styles.counterText, isNight && styles.nightCounterText],
63
69
  children: [itemLabel, " ", currentIndex + 1, " of ", totalItems]
64
70
  }), subtitle && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
65
- style: styles.subtitleText,
71
+ style: [styles.subtitleText, isNight && styles.nightSubtitleText],
66
72
  children: subtitle
67
73
  })]
68
74
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
69
75
  onPress: onNext,
70
76
  disabled: isLastItem,
71
- style: [styles.navButton, isLastItem && styles.navButtonDisabled],
77
+ style: [styles.navButton, isNight && styles.nightNavButton, isLastItem && styles.navButtonDisabled],
72
78
  activeOpacity: 0.7,
73
79
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
74
- style: [styles.navButtonText, isLastItem && styles.navButtonTextDisabled],
80
+ style: [styles.navButtonText, isNight && styles.nightNavButtonText, isLastItem && styles.navButtonTextDisabled, isLastItem && isNight && styles.nightNavButtonTextDisabled],
75
81
  children: "Next"
76
82
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideIcons.ChevronRight, {
77
83
  size: 20,
78
- color: isLastItem ? _macOSDesignSystemColors.macOSColors.text.muted : _macOSDesignSystemColors.macOSColors.text.primary
84
+ color: isLastItem ? disabledInk : enabledInk
79
85
  })]
80
86
  })]
81
87
  });
@@ -144,5 +150,27 @@ const styles = _reactNative.StyleSheet.create({
144
150
  color: _macOSDesignSystemColors.macOSColors.text.secondary,
145
151
  fontFamily: "monospace",
146
152
  marginTop: 2
153
+ },
154
+ // ── Night variant (see ui/night/nightTheme.ts): near-black glass bar with
155
+ // hairline top border, plate buttons, night text hierarchy.
156
+ nightFooter: {
157
+ backgroundColor: "rgba(5, 5, 5, 0.92)",
158
+ borderTopColor: _nightTheme.night.color.border
159
+ },
160
+ nightNavButton: {
161
+ backgroundColor: _nightTheme.night.color.button,
162
+ borderRadius: 15
163
+ },
164
+ nightNavButtonText: {
165
+ color: _nightTheme.night.color.accent
166
+ },
167
+ nightNavButtonTextDisabled: {
168
+ color: _nightTheme.night.color.textTertiary
169
+ },
170
+ nightCounterText: {
171
+ color: _nightTheme.night.color.text
172
+ },
173
+ nightSubtitleText: {
174
+ color: _nightTheme.night.color.textSecondary
147
175
  }
148
176
  });