@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
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { View, Text, StyleSheet } from "react-native";
4
4
  import { buoyColors } from "../gameUI/constants/gameUIColors.js";
5
+ import { night } from "../night/nightTheme.js";
5
6
 
6
7
  // Badge variants
7
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -11,9 +12,9 @@ const STATUS_COLORS = {
11
12
  error: buoyColors.error,
12
13
  warning: buoyColors.warning,
13
14
  info: buoyColors.primary,
14
- pending: buoyColors.textSecondary,
15
+ pending: night.color.textSecondary,
15
16
  active: buoyColors.success,
16
- inactive: buoyColors.textMuted,
17
+ inactive: night.color.textTertiary,
17
18
  stale: buoyColors.warning,
18
19
  fetching: buoyColors.primary
19
20
  };
@@ -23,9 +24,9 @@ const METHOD_COLORS = {
23
24
  GET: buoyColors.success,
24
25
  POST: buoyColors.primary,
25
26
  PUT: buoyColors.warning,
26
- PATCH: buoyColors.textSecondary,
27
+ PATCH: night.color.textSecondary,
27
28
  DELETE: buoyColors.error,
28
- HEAD: buoyColors.textMuted,
29
+ HEAD: night.color.textTertiary,
29
30
  OPTIONS: buoyColors.primary
30
31
  };
31
32
 
@@ -183,13 +184,13 @@ function getTypeColor(type) {
183
184
  string: buoyColors.primary,
184
185
  number: buoyColors.primary,
185
186
  boolean: buoyColors.primary,
186
- object: buoyColors.textSecondary,
187
- array: buoyColors.textSecondary,
188
- null: buoyColors.textMuted,
189
- undefined: buoyColors.textMuted,
190
- function: buoyColors.textSecondary
187
+ object: night.color.textSecondary,
188
+ array: night.color.textSecondary,
189
+ null: night.color.textTertiary,
190
+ undefined: night.color.textTertiary,
191
+ function: night.color.textSecondary
191
192
  };
192
- return typeColors[type.toLowerCase()] || buoyColors.textMuted;
193
+ return typeColors[type.toLowerCase()] || night.color.textTertiary;
193
194
  }
194
195
  const styles = StyleSheet.create({
195
196
  statusDot: {
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
4
4
  import { ChevronDown, ChevronRight } from "../../icons/index.js";
5
- import { buoyColors } from "../gameUI/constants/gameUIColors.js";
5
+ import { night } from "../night/nightTheme.js";
6
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  export function CompactRow({
8
8
  statusDotColor,
@@ -24,11 +24,15 @@ export function CompactRow({
24
24
  expandedGlowColor
25
25
  }) {
26
26
  return /*#__PURE__*/_jsx(View, {
27
- style: styles.rowWrapper,
27
+ style: [styles.rowWrapper, isExpanded && styles.rowWrapperExpanded],
28
28
  children: /*#__PURE__*/_jsxs(View, {
29
29
  style: [styles.row, isSelected && styles.selectedRow, isExpanded && [styles.expandedRowActive, {
30
- borderColor: expandedGlowColor || buoyColors.primary,
31
- shadowColor: expandedGlowColor || buoyColors.primary
30
+ borderColor: expandedGlowColor || night.color.accent,
31
+ // The resting hairline sets borderBottomColor specifically, and a
32
+ // specific side always beats the generic borderColor — restate it
33
+ // or the expanded card's bottom edge keeps the faint separator.
34
+ borderBottomColor: expandedGlowColor || night.color.accent,
35
+ shadowColor: expandedGlowColor || night.color.accent
32
36
  }]],
33
37
  children: [/*#__PURE__*/_jsx(TouchableOpacity, {
34
38
  onPress: onPress,
@@ -88,10 +92,10 @@ export function CompactRow({
88
92
  style: styles.chevronContainer,
89
93
  children: isExpanded ? /*#__PURE__*/_jsx(ChevronDown, {
90
94
  size: 14,
91
- color: buoyColors.textMuted
95
+ color: night.color.textTertiary
92
96
  }) : /*#__PURE__*/_jsx(ChevronRight, {
93
97
  size: 14,
94
- color: buoyColors.textMuted
98
+ color: night.color.textTertiary
95
99
  })
96
100
  })]
97
101
  })]
@@ -109,15 +113,23 @@ const styles = StyleSheet.create({
109
113
  marginHorizontal: 8,
110
114
  marginVertical: 3
111
115
  },
116
+ /** The expanded card scales to 1.02 and grows a 2px glow border, which eats
117
+ * the 3px resting margin — without extra room its bottom edge sits on the
118
+ * next card. */
119
+ rowWrapperExpanded: {
120
+ marginVertical: 12
121
+ },
112
122
  row: {
113
- backgroundColor: buoyColors.card,
123
+ // Translucent night scrim so the shared ToolBackground reads through —
124
+ // kept in step with DevToolsCard (same fill, same luminance contract).
125
+ backgroundColor: "rgba(12, 12, 12, 0.9)",
114
126
  borderRadius: 8,
115
127
  borderWidth: 1,
116
- borderColor: buoyColors.border + "40",
128
+ borderColor: night.color.border,
117
129
  // …separated by a single hairline instead of four borders per row.
118
130
  // Declared after borderWidth so the specific side wins on the chat path.
119
131
  borderBottomWidth: 1,
120
- borderBottomColor: buoyColors.border + "40",
132
+ borderBottomColor: night.color.separator,
121
133
  padding: 12,
122
134
  paddingHorizontal: 12,
123
135
  transform: [{
@@ -127,12 +139,12 @@ const styles = StyleSheet.create({
127
139
  selectedRow: {
128
140
  // Neutral fill, no outline, no lift — the same selection language as the
129
141
  // sidebar. The classic path keeps its tinted, scaled, glowing card.
130
- backgroundColor: buoyColors.primary + "15",
131
- borderColor: buoyColors.primary + "50",
142
+ backgroundColor: night.color.accentSoft,
143
+ borderColor: night.color.accentBorderStrong,
132
144
  transform: [{
133
145
  scale: 1.01
134
146
  }],
135
- shadowColor: buoyColors.primary,
147
+ shadowColor: night.color.accent,
136
148
  shadowOffset: {
137
149
  width: 0,
138
150
  height: 0
@@ -146,6 +158,7 @@ const styles = StyleSheet.create({
146
158
  scale: 1.02
147
159
  }],
148
160
  borderWidth: 2,
161
+ paddingBottom: 16,
149
162
  shadowOffset: {
150
163
  width: 0,
151
164
  height: 0
@@ -183,7 +196,7 @@ const styles = StyleSheet.create({
183
196
  },
184
197
  observerText: {
185
198
  fontSize: 10,
186
- color: buoyColors.textMuted,
199
+ color: night.color.textTertiary,
187
200
  marginTop: 1
188
201
  },
189
202
  querySection: {
@@ -193,7 +206,7 @@ const styles = StyleSheet.create({
193
206
  queryHash: {
194
207
  fontFamily: "monospace",
195
208
  fontSize: 12,
196
- color: buoyColors.text,
209
+ color: night.color.text,
197
210
  lineHeight: 16
198
211
  },
199
212
  secondaryRow: {
@@ -204,7 +217,7 @@ const styles = StyleSheet.create({
204
217
  },
205
218
  secondaryText: {
206
219
  fontSize: 10,
207
- color: buoyColors.textMuted,
220
+ color: night.color.textTertiary,
208
221
  marginTop: 1
209
222
  },
210
223
  rightSection: {
@@ -229,12 +242,12 @@ const styles = StyleSheet.create({
229
242
  marginTop: 8,
230
243
  paddingTop: 8,
231
244
  borderTopWidth: 1,
232
- borderTopColor: buoyColors.border + "20",
245
+ borderTopColor: night.color.separator,
233
246
  marginLeft: 24 // Align with content after status dot
234
247
  },
235
248
  bottomRightText: {
236
249
  fontSize: 9,
237
- color: buoyColors.textMuted,
250
+ color: night.color.textTertiary,
238
251
  fontFamily: "monospace"
239
252
  }
240
253
  });
@@ -15,7 +15,7 @@
15
15
  */
16
16
 
17
17
  import { View, TouchableOpacity, StyleSheet } from "react-native";
18
- import { buoyColors } from "../gameUI/constants/gameUIColors.js";
18
+ import { night } from "../night/nightTheme.js";
19
19
 
20
20
  /**
21
21
  * Standard card dimensions - adjust these to change all DevTools cards globally
@@ -85,23 +85,27 @@ const styles = StyleSheet.create({
85
85
  marginVertical: DEVTOOLS_CARD_CONSTANTS.marginVertical
86
86
  },
87
87
  card: {
88
- backgroundColor: buoyColors.card,
88
+ // Translucent night scrim — same luminance contract as the old
89
+ // buoyColors.cardScrim (backing stays readable under the brightest
90
+ // scenes), re-based on the night surface so the ToolBackground reads
91
+ // through every tool's card lists, not only around them.
92
+ backgroundColor: "rgba(12, 12, 12, 0.9)",
89
93
  borderRadius: DEVTOOLS_CARD_CONSTANTS.borderRadius,
90
94
  borderWidth: DEVTOOLS_CARD_CONSTANTS.borderWidth,
91
- borderColor: buoyColors.border + "40",
95
+ borderColor: night.color.border,
92
96
  // The separator. On classic this just re-states the full outline; on chat
93
97
  // it is the ONLY edge the row has.
94
98
  borderBottomWidth: 1,
95
- borderBottomColor: buoyColors.border + "40",
99
+ borderBottomColor: night.color.separator,
96
100
  padding: DEVTOOLS_CARD_CONSTANTS.padding,
97
101
  paddingHorizontal: DEVTOOLS_CARD_CONSTANTS.padding,
98
102
  minHeight: DEVTOOLS_CARD_CONSTANTS.minHeight
99
103
  },
100
104
  selectedCard: {
101
- // Neutral grey fill, no tinted outline and no lift — see CompactRow.
102
- backgroundColor: buoyColors.primary + "15",
103
- borderColor: buoyColors.primary + "50",
104
- shadowColor: buoyColors.primary,
105
+ // The night selection language: soft accent fill + accent border.
106
+ backgroundColor: night.color.accentSoft,
107
+ borderColor: night.color.accentBorderStrong,
108
+ shadowColor: night.color.accent,
105
109
  shadowOffset: {
106
110
  width: 0,
107
111
  height: 0
@@ -7,6 +7,7 @@ import { SectionHeader } from "./SectionHeader.js";
7
7
  import { FilterList, AddFilterInput, AddFilterButton } from "./FilterComponents.js";
8
8
  import { useFilterManager } from "../../hooks/useFilterManager.js";
9
9
  import { buoyColors } from "../gameUI/constants/gameUIColors.js";
10
+ import { night } from "../night/nightTheme.js";
10
11
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
12
  export function DynamicFilterView({
12
13
  sections = [],
@@ -60,7 +61,7 @@ export function DynamicFilterView({
60
61
  style: [styles.tabButton, currentActiveTab === tab.id ? styles.tabButtonActive : styles.tabButtonInactive],
61
62
  children: [tab.icon && /*#__PURE__*/_jsx(tab.icon, {
62
63
  size: 14,
63
- color: currentActiveTab === tab.id ? buoyColors.primary : buoyColors.textMuted
64
+ color: currentActiveTab === tab.id ? buoyColors.primary : night.color.textTertiary
64
65
  }), /*#__PURE__*/_jsx(Text, {
65
66
  style: [styles.tabButtonText, currentActiveTab === tab.id ? styles.tabButtonTextActive : styles.tabButtonTextInactive],
66
67
  children: tab.label
@@ -300,7 +301,7 @@ export function DynamicFilterView({
300
301
  children: [/*#__PURE__*/_jsxs(SectionHeader, {
301
302
  children: [/*#__PURE__*/_jsx(SectionHeader.Icon, {
302
303
  icon: howItWorksSection.icon || Filter,
303
- color: buoyColors.textSecondary,
304
+ color: night.color.textSecondary,
304
305
  size: 12
305
306
  }), /*#__PURE__*/_jsx(SectionHeader.Title, {
306
307
  children: howItWorksSection.title || "HOW FILTERS WORK"
@@ -351,7 +352,8 @@ export function DynamicFilterView({
351
352
  const styles = StyleSheet.create({
352
353
  container: {
353
354
  flex: 1,
354
- backgroundColor: buoyColors.base
355
+ // Transparent so the host modal's night star field shows through.
356
+ backgroundColor: "transparent"
355
357
  },
356
358
  content: {
357
359
  flex: 1
@@ -366,9 +368,9 @@ const styles = StyleSheet.create({
366
368
  paddingHorizontal: 16,
367
369
  paddingVertical: 12,
368
370
  gap: 8,
369
- backgroundColor: buoyColors.card,
371
+ backgroundColor: night.color.surface,
370
372
  borderBottomWidth: 1,
371
- borderBottomColor: buoyColors.border
373
+ borderBottomColor: night.color.border
372
374
  },
373
375
  tabButton: {
374
376
  flex: 1,
@@ -388,14 +390,14 @@ const styles = StyleSheet.create({
388
390
  */
389
391
  tabButtonActive: {
390
392
  // White THUMB, not a grey one — the INACTIVE tab is already
391
- // `buoyColors.hover` here, so a grey active state would be invisible.
393
+ // `night.color.surfaceElevated` here, so a grey active state would be invisible.
392
394
  backgroundColor: buoyColors.primary + "20",
393
395
  borderColor: buoyColors.primary,
394
396
  borderWidth: 2
395
397
  },
396
398
  tabButtonInactive: {
397
- backgroundColor: buoyColors.hover,
398
- borderColor: buoyColors.border
399
+ backgroundColor: night.color.surfaceElevated,
400
+ borderColor: night.color.border
399
401
  },
400
402
  tabButtonText: {
401
403
  fontSize: 11,
@@ -406,7 +408,7 @@ const styles = StyleSheet.create({
406
408
  color: buoyColors.primary
407
409
  },
408
410
  tabButtonTextInactive: {
409
- color: buoyColors.textMuted
411
+ color: night.color.textTertiary
410
412
  },
411
413
  tabBadge: {
412
414
  backgroundColor: buoyColors.primary + "40",
@@ -434,7 +436,7 @@ const styles = StyleSheet.create({
434
436
  marginTop: 8
435
437
  },
436
438
  filterCard: {
437
- backgroundColor: buoyColors.card,
439
+ backgroundColor: night.color.surface,
438
440
  borderRadius: 12,
439
441
  // rounded-xl
440
442
  paddingHorizontal: 8,
@@ -443,7 +445,7 @@ const styles = StyleSheet.create({
443
445
  alignItems: "center",
444
446
  justifyContent: "center",
445
447
  borderWidth: 1,
446
- borderColor: buoyColors.border,
448
+ borderColor: night.color.border,
447
449
  width: 72,
448
450
  minHeight: 68
449
451
  },
@@ -467,7 +469,7 @@ const styles = StyleSheet.create({
467
469
  filterCountActive: {
468
470
  fontSize: 14,
469
471
  fontWeight: "700",
470
- color: buoyColors.text,
472
+ color: night.color.text,
471
473
  fontFamily: "monospace",
472
474
  marginTop: 3,
473
475
  marginBottom: 1,
@@ -481,14 +483,14 @@ const styles = StyleSheet.create({
481
483
  filterCountZero: {
482
484
  fontSize: 11,
483
485
  fontWeight: "500",
484
- color: buoyColors.textMuted,
486
+ color: night.color.textTertiary,
485
487
  fontFamily: "monospace",
486
488
  marginTop: 3,
487
489
  marginBottom: 1
488
490
  },
489
491
  filterLabelCompact: {
490
492
  fontSize: 10,
491
- color: buoyColors.text,
493
+ color: night.color.text,
492
494
  fontWeight: "600",
493
495
  textAlign: "center",
494
496
  textTransform: "capitalize",
@@ -501,14 +503,14 @@ const styles = StyleSheet.create({
501
503
  },
502
504
  filterDescriptionBottom: {
503
505
  fontSize: 8,
504
- color: buoyColors.textMuted,
506
+ color: night.color.textTertiary,
505
507
  textAlign: "center",
506
508
  marginTop: 2,
507
509
  lineHeight: 11
508
510
  },
509
511
  sectionDescription: {
510
512
  fontSize: 10,
511
- color: buoyColors.textSecondary,
513
+ color: night.color.textSecondary,
512
514
  marginTop: 4,
513
515
  marginBottom: 4,
514
516
  lineHeight: 14
@@ -529,11 +531,11 @@ const styles = StyleSheet.create({
529
531
  fontFamily: "monospace"
530
532
  },
531
533
  activeFiltersSection: {
532
- backgroundColor: buoyColors.card,
534
+ backgroundColor: night.color.surface,
533
535
  borderRadius: 16,
534
536
  // rounded-2xl like web
535
537
  borderWidth: 1,
536
- borderColor: buoyColors.border,
538
+ borderColor: night.color.border,
537
539
  marginTop: 16,
538
540
  overflow: "hidden"
539
541
  },
@@ -544,17 +546,17 @@ const styles = StyleSheet.create({
544
546
  maxHeight: 200
545
547
  },
546
548
  includeOnlySection: {
547
- backgroundColor: buoyColors.card,
549
+ backgroundColor: night.color.surface,
548
550
  borderRadius: 16,
549
551
  // rounded-2xl like web
550
552
  borderWidth: 1,
551
- borderColor: buoyColors.border,
553
+ borderColor: night.color.border,
552
554
  marginTop: 16,
553
555
  overflow: "hidden"
554
556
  },
555
557
  includeOnlyDescription: {
556
558
  fontSize: 10,
557
- color: buoyColors.textSecondary,
559
+ color: night.color.textSecondary,
558
560
  paddingHorizontal: 16,
559
561
  paddingTop: 8,
560
562
  lineHeight: 14
@@ -570,17 +572,17 @@ const styles = StyleSheet.create({
570
572
  maxHeight: 150
571
573
  },
572
574
  excludeFiltersSection: {
573
- backgroundColor: buoyColors.card,
575
+ backgroundColor: night.color.surface,
574
576
  borderRadius: 16,
575
577
  // rounded-2xl like web
576
578
  borderWidth: 1,
577
- borderColor: buoyColors.border,
579
+ borderColor: night.color.border,
578
580
  marginTop: 16,
579
581
  overflow: "hidden"
580
582
  },
581
583
  excludeFiltersDescription: {
582
584
  fontSize: 10,
583
- color: buoyColors.textSecondary,
585
+ color: night.color.textSecondary,
584
586
  paddingHorizontal: 16,
585
587
  paddingTop: 8,
586
588
  lineHeight: 14
@@ -616,7 +618,7 @@ const styles = StyleSheet.create({
616
618
  },
617
619
  filterSummaryText: {
618
620
  fontSize: 11,
619
- color: buoyColors.text,
621
+ color: night.color.text,
620
622
  lineHeight: 16
621
623
  },
622
624
  filterSummaryInclude: {
@@ -629,17 +631,17 @@ const styles = StyleSheet.create({
629
631
  },
630
632
  emptyStateText: {
631
633
  fontSize: 11,
632
- color: buoyColors.textMuted,
634
+ color: night.color.textTertiary,
633
635
  fontStyle: "italic",
634
636
  textAlign: "center",
635
637
  paddingVertical: 12
636
638
  },
637
639
  availableKeysSection: {
638
- backgroundColor: buoyColors.card,
640
+ backgroundColor: night.color.surface,
639
641
  borderRadius: 16,
640
642
  // rounded-2xl like web
641
643
  borderWidth: 1,
642
- borderColor: buoyColors.border,
644
+ borderColor: night.color.border,
643
645
  marginTop: 16,
644
646
  overflow: "hidden"
645
647
  },
@@ -655,31 +657,31 @@ const styles = StyleSheet.create({
655
657
  justifyContent: "space-between",
656
658
  paddingVertical: 10,
657
659
  paddingHorizontal: 12,
658
- backgroundColor: buoyColors.hover,
660
+ backgroundColor: night.color.surfaceElevated,
659
661
  borderRadius: 8,
660
662
  borderWidth: 1,
661
- borderColor: buoyColors.border,
663
+ borderColor: night.color.border,
662
664
  marginBottom: 8
663
665
  },
664
666
  availableKeyText: {
665
667
  flex: 1,
666
668
  fontSize: 11,
667
- color: buoyColors.text,
669
+ color: night.color.text,
668
670
  fontFamily: "monospace",
669
671
  marginRight: 8
670
672
  },
671
673
  howItWorksSection: {
672
- backgroundColor: buoyColors.card,
674
+ backgroundColor: night.color.surface,
673
675
  borderRadius: 16,
674
676
  // rounded-2xl like web
675
677
  borderWidth: 1,
676
- borderColor: buoyColors.border,
678
+ borderColor: night.color.border,
677
679
  marginTop: 16,
678
680
  overflow: "hidden"
679
681
  },
680
682
  howItWorksText: {
681
683
  fontSize: 11,
682
- color: buoyColors.textSecondary,
684
+ color: night.color.textSecondary,
683
685
  lineHeight: 16,
684
686
  marginBottom: 12,
685
687
  marginTop: 8,
@@ -691,29 +693,29 @@ const styles = StyleSheet.create({
691
693
  paddingHorizontal: 16,
692
694
  paddingBottom: 16,
693
695
  borderTopWidth: 1,
694
- borderTopColor: buoyColors.border
696
+ borderTopColor: night.color.border
695
697
  },
696
698
  examplesTitle: {
697
699
  fontSize: 10,
698
700
  fontWeight: "600",
699
- color: buoyColors.textMuted,
701
+ color: night.color.textTertiary,
700
702
  fontFamily: "monospace",
701
703
  letterSpacing: 0.5,
702
704
  marginBottom: 6
703
705
  },
704
706
  exampleItem: {
705
707
  fontSize: 10,
706
- color: buoyColors.textMuted,
708
+ color: night.color.textTertiary,
707
709
  fontFamily: "monospace",
708
710
  lineHeight: 16
709
711
  },
710
712
  previewSection: {
711
- backgroundColor: buoyColors.hover,
713
+ backgroundColor: night.color.surfaceElevated,
712
714
  // Slightly lighter to distinguish from other sections
713
715
  borderRadius: 16,
714
716
  // rounded-2xl like web
715
717
  borderWidth: 1,
716
- borderColor: buoyColors.borderStrong,
718
+ borderColor: night.color.fillTertiary,
717
719
  marginTop: 16,
718
720
  overflow: "hidden"
719
721
  },
@@ -721,12 +723,12 @@ const styles = StyleSheet.create({
721
723
  paddingHorizontal: 16,
722
724
  paddingTop: 12,
723
725
  paddingBottom: 16,
724
- backgroundColor: buoyColors.base,
726
+ backgroundColor: night.color.bg,
725
727
  // Darker content area for contrast
726
728
  marginHorizontal: 12,
727
729
  marginBottom: 12,
728
730
  borderRadius: 8,
729
731
  borderWidth: 1,
730
- borderColor: buoyColors.border
732
+ borderColor: night.color.border
731
733
  }
732
734
  });
@@ -12,6 +12,7 @@ import React, { memo } from "react";
12
12
  import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
13
13
  import { ChevronLeft, ChevronRight } from "../../icons/lucide-icons.js";
14
14
  import { macOSColors } from "../gameUI/constants/macOSDesignSystemColors.js";
15
+ import { night } from "../night/nightTheme.js";
15
16
  import { useSafeAreaInsets } from "../../hooks/useSafeAreaInsets.js";
16
17
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
18
  /**
@@ -26,51 +27,56 @@ export const EventStepperFooter = /*#__PURE__*/memo(function EventStepperFooter(
26
27
  itemLabel = "Event",
27
28
  subtitle,
28
29
  absolute = false,
29
- applySafeAreaInset = true
30
+ applySafeAreaInset = true,
31
+ variant = "night"
30
32
  }) {
31
33
  const insets = useSafeAreaInsets();
32
34
 
33
35
  // Don't render if there's only one or no items
34
36
  if (totalItems <= 1) return null;
37
+ const isNight = variant === "night";
35
38
  const isFirstItem = currentIndex === 0;
36
39
  const isLastItem = currentIndex === totalItems - 1;
37
40
  const bottomPadding = applySafeAreaInset ? 12 + insets.bottom : 12;
41
+ // Night buttons are the plate-with-accent-label style — chevrons match.
42
+ const enabledInk = isNight ? night.color.accent : macOSColors.text.primary;
43
+ const disabledInk = isNight ? night.color.textTertiary : macOSColors.text.muted;
38
44
  return /*#__PURE__*/_jsxs(View, {
39
- style: [styles.footer, absolute && styles.footerAbsolute, {
45
+ style: [styles.footer, isNight && styles.nightFooter, absolute && styles.footerAbsolute, {
40
46
  paddingBottom: bottomPadding
41
47
  }],
42
48
  children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
43
49
  onPress: onPrevious,
44
50
  disabled: isFirstItem,
45
- style: [styles.navButton, isFirstItem && styles.navButtonDisabled],
51
+ style: [styles.navButton, isNight && styles.nightNavButton, isFirstItem && styles.navButtonDisabled],
46
52
  activeOpacity: 0.7,
47
53
  children: [/*#__PURE__*/_jsx(ChevronLeft, {
48
54
  size: 20,
49
- color: isFirstItem ? macOSColors.text.muted : macOSColors.text.primary
55
+ color: isFirstItem ? disabledInk : enabledInk
50
56
  }), /*#__PURE__*/_jsx(Text, {
51
- style: [styles.navButtonText, isFirstItem && styles.navButtonTextDisabled],
57
+ style: [styles.navButtonText, isNight && styles.nightNavButtonText, isFirstItem && styles.navButtonTextDisabled, isFirstItem && isNight && styles.nightNavButtonTextDisabled],
52
58
  children: "Previous"
53
59
  })]
54
60
  }), /*#__PURE__*/_jsxs(View, {
55
61
  style: styles.counterContainer,
56
62
  children: [/*#__PURE__*/_jsxs(Text, {
57
- style: styles.counterText,
63
+ style: [styles.counterText, isNight && styles.nightCounterText],
58
64
  children: [itemLabel, " ", currentIndex + 1, " of ", totalItems]
59
65
  }), subtitle && /*#__PURE__*/_jsx(Text, {
60
- style: styles.subtitleText,
66
+ style: [styles.subtitleText, isNight && styles.nightSubtitleText],
61
67
  children: subtitle
62
68
  })]
63
69
  }), /*#__PURE__*/_jsxs(TouchableOpacity, {
64
70
  onPress: onNext,
65
71
  disabled: isLastItem,
66
- style: [styles.navButton, isLastItem && styles.navButtonDisabled],
72
+ style: [styles.navButton, isNight && styles.nightNavButton, isLastItem && styles.navButtonDisabled],
67
73
  activeOpacity: 0.7,
68
74
  children: [/*#__PURE__*/_jsx(Text, {
69
- style: [styles.navButtonText, isLastItem && styles.navButtonTextDisabled],
75
+ style: [styles.navButtonText, isNight && styles.nightNavButtonText, isLastItem && styles.navButtonTextDisabled, isLastItem && isNight && styles.nightNavButtonTextDisabled],
70
76
  children: "Next"
71
77
  }), /*#__PURE__*/_jsx(ChevronRight, {
72
78
  size: 20,
73
- color: isLastItem ? macOSColors.text.muted : macOSColors.text.primary
79
+ color: isLastItem ? disabledInk : enabledInk
74
80
  })]
75
81
  })]
76
82
  });
@@ -139,5 +145,27 @@ const styles = StyleSheet.create({
139
145
  color: macOSColors.text.secondary,
140
146
  fontFamily: "monospace",
141
147
  marginTop: 2
148
+ },
149
+ // ── Night variant (see ui/night/nightTheme.ts): near-black glass bar with
150
+ // hairline top border, plate buttons, night text hierarchy.
151
+ nightFooter: {
152
+ backgroundColor: "rgba(5, 5, 5, 0.92)",
153
+ borderTopColor: night.color.border
154
+ },
155
+ nightNavButton: {
156
+ backgroundColor: night.color.button,
157
+ borderRadius: 15
158
+ },
159
+ nightNavButtonText: {
160
+ color: night.color.accent
161
+ },
162
+ nightNavButtonTextDisabled: {
163
+ color: night.color.textTertiary
164
+ },
165
+ nightCounterText: {
166
+ color: night.color.text
167
+ },
168
+ nightSubtitleText: {
169
+ color: night.color.textSecondary
142
170
  }
143
171
  });