@buoy-gg/zustand 7.0.32 → 7.0.34

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 (35) hide show
  1. package/lib/commonjs/zustand/components/ZustandDetailViewToggle.js +13 -107
  2. package/lib/commonjs/zustand/components/ZustandEventFilterView.js +24 -288
  3. package/lib/commonjs/zustand/components/ZustandModal.js +83 -141
  4. package/lib/commonjs/zustand/components/ZustandStateChangeItem.js +8 -61
  5. package/lib/commonjs/zustand/components/ZustandStateInfoView.js +2 -46
  6. package/lib/commonjs/zustand/components/ZustandStoreBrowser.js +29 -54
  7. package/lib/commonjs/zustand/hooks/useZustandStateChanges.js +33 -53
  8. package/lib/commonjs/zustand/sync/zustandSyncAdapter.js +24 -78
  9. package/lib/commonjs/zustand/utils/snapshotProvider.js +17 -60
  10. package/lib/commonjs/zustand/utils/zustandStateStore.js +37 -223
  11. package/lib/module/zustand/components/ZustandDetailViewToggle.js +15 -109
  12. package/lib/module/zustand/components/ZustandEventFilterView.js +28 -292
  13. package/lib/module/zustand/components/ZustandModal.js +85 -143
  14. package/lib/module/zustand/components/ZustandStateChangeItem.js +10 -63
  15. package/lib/module/zustand/components/ZustandStateInfoView.js +1 -45
  16. package/lib/module/zustand/components/ZustandStoreBrowser.js +31 -56
  17. package/lib/module/zustand/hooks/useZustandStateChanges.js +34 -54
  18. package/lib/module/zustand/sync/zustandSyncAdapter.js +25 -79
  19. package/lib/module/zustand/utils/snapshotProvider.js +18 -61
  20. package/lib/module/zustand/utils/zustandStateStore.js +37 -223
  21. package/lib/typescript/zustand/components/ZustandDetailViewToggle.d.ts +2 -1
  22. package/lib/typescript/zustand/components/ZustandDetailViewToggle.d.ts.map +1 -1
  23. package/lib/typescript/zustand/components/ZustandEventFilterView.d.ts +6 -0
  24. package/lib/typescript/zustand/components/ZustandEventFilterView.d.ts.map +1 -1
  25. package/lib/typescript/zustand/components/ZustandModal.d.ts.map +1 -1
  26. package/lib/typescript/zustand/components/ZustandStateChangeItem.d.ts.map +1 -1
  27. package/lib/typescript/zustand/components/ZustandStateInfoView.d.ts.map +1 -1
  28. package/lib/typescript/zustand/components/ZustandStoreBrowser.d.ts.map +1 -1
  29. package/lib/typescript/zustand/hooks/useZustandStateChanges.d.ts +2 -1
  30. package/lib/typescript/zustand/hooks/useZustandStateChanges.d.ts.map +1 -1
  31. package/lib/typescript/zustand/sync/zustandSyncAdapter.d.ts +103 -117
  32. package/lib/typescript/zustand/sync/zustandSyncAdapter.d.ts.map +1 -1
  33. package/lib/typescript/zustand/utils/zustandStateStore.d.ts +6 -26
  34. package/lib/typescript/zustand/utils/zustandStateStore.d.ts.map +1 -1
  35. package/package.json +3 -3
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ZustandDetailViewToggle = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
8
  var _sharedUi = require("@buoy-gg/shared-ui");
10
9
  var _jsxRuntime = require("react/jsx-runtime");
11
10
  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); }
@@ -13,130 +12,37 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
13
12
  * ZustandDetailViewToggle
14
13
  *
15
14
  * Three-card toggle for switching between Change, State, and Diff views.
16
- * Mirrors ReduxDetailViewToggle.tsx
15
+ * The cards themselves are the shared `DetailViewToggle`; this file owns
16
+ * the zustand view list and testID prefix.
17
17
  */
18
18
 
19
- const VIEW_CONFIGS = [{
19
+ const VIEWS = [{
20
20
  key: "change",
21
21
  label: "CHANGE",
22
22
  description: "View change details",
23
- icon: _sharedUi.FileText,
24
- activeColor: _sharedUi.night.color.accent
23
+ icon: _sharedUi.FileText
25
24
  }, {
26
25
  key: "state",
27
26
  label: "STATE",
28
27
  description: "View current state",
29
- icon: _sharedUi.Database,
30
- activeColor: _sharedUi.night.color.accent
28
+ icon: _sharedUi.Database
31
29
  }, {
32
30
  key: "diff",
33
31
  label: "DIFF",
34
32
  description: "Compare changes",
35
- icon: _sharedUi.GitBranch,
36
- activeColor: _sharedUi.night.color.accent
33
+ icon: _sharedUi.GitBranch
37
34
  }];
35
+ const DIFF_DISABLED = ["diff"];
38
36
  const ZustandDetailViewToggle = exports.ZustandDetailViewToggle = /*#__PURE__*/(0, _react.memo)(function ZustandDetailViewToggle({
39
37
  activeView,
40
38
  onViewChange,
41
39
  diffDisabled = false
42
40
  }) {
43
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
44
- style: styles.container,
45
- children: VIEW_CONFIGS.map(config => {
46
- const isActive = activeView === config.key;
47
- const isDisabled = config.key === "diff" && diffDisabled;
48
- const IconComponent = config.icon;
49
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
50
- style: [styles.card, isActive && [styles.cardActive, {
51
- borderColor: config.activeColor
52
- }], isDisabled && styles.cardDisabled],
53
- onPress: () => !isDisabled && onViewChange(config.key),
54
- activeOpacity: isDisabled ? 1 : 0.8,
55
- disabled: isDisabled,
56
- testID: `buoy-zustand-view-${config.key}`,
57
- accessibilityRole: "button",
58
- accessibilityLabel: config.label,
59
- accessibilityState: {
60
- disabled: isDisabled,
61
- selected: isActive
62
- },
63
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
64
- style: styles.cardContent,
65
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
66
- size: 14,
67
- color: isActive ? config.activeColor : isDisabled ? _sharedUi.night.color.textTertiary : _sharedUi.night.color.textSecondary
68
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
69
- style: [styles.cardLabel, isActive && [styles.cardLabelActive, {
70
- color: config.activeColor
71
- }], isDisabled && styles.cardLabelDisabled],
72
- children: config.label
73
- })]
74
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
75
- style: [styles.cardDescription, isActive && styles.cardDescriptionActive, isDisabled && styles.cardDescriptionDisabled],
76
- children: config.description
77
- })]
78
- }, config.key);
79
- })
41
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.DetailViewToggle, {
42
+ views: VIEWS,
43
+ activeView: activeView,
44
+ onViewChange: onViewChange,
45
+ disabledKeys: diffDisabled ? DIFF_DISABLED : undefined,
46
+ testIDPrefix: "buoy-zustand"
80
47
  });
81
- });
82
- const styles = _reactNative.StyleSheet.create({
83
- container: {
84
- flexDirection: "row",
85
- gap: 8,
86
- padding: 14,
87
- // Transparent so the night sheet's star field shows through.
88
- backgroundColor: "transparent"
89
- },
90
- card: {
91
- flex: 1,
92
- backgroundColor: _sharedUi.night.color.surface,
93
- borderRadius: 12,
94
- borderWidth: 1,
95
- borderColor: _sharedUi.night.color.border,
96
- padding: 10,
97
- gap: 4
98
- },
99
- cardActive: {
100
- borderWidth: 1.5,
101
- backgroundColor: _sharedUi.night.color.accentSoft,
102
- shadowColor: _sharedUi.night.color.accent,
103
- shadowOffset: {
104
- width: 0,
105
- height: 2
106
- },
107
- shadowOpacity: 0.1,
108
- shadowRadius: 8,
109
- elevation: 3
110
- },
111
- cardDisabled: {
112
- opacity: 0.5
113
- },
114
- cardContent: {
115
- flexDirection: "row",
116
- alignItems: "center",
117
- gap: 6
118
- },
119
- cardLabel: {
120
- fontSize: 10,
121
- fontWeight: "700",
122
- letterSpacing: 0.5,
123
- color: _sharedUi.night.color.textSecondary
124
- },
125
- cardLabelActive: {
126
- color: _sharedUi.night.color.text
127
- },
128
- cardLabelDisabled: {
129
- color: _sharedUi.night.color.textTertiary
130
- },
131
- cardDescription: {
132
- fontSize: 9,
133
- color: _sharedUi.night.color.textTertiary,
134
- lineHeight: 12
135
- },
136
- cardDescriptionActive: {
137
- color: _sharedUi.night.color.textSecondary
138
- },
139
- cardDescriptionDisabled: {
140
- color: _sharedUi.night.color.textTertiary
141
- }
142
48
  });
@@ -5,303 +5,39 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ZustandEventFilterView = ZustandEventFilterView;
7
7
  var _react = require("react");
8
- var _reactNative = require("react-native");
9
8
  var _sharedUi = require("@buoy-gg/shared-ui");
10
9
  var _zustandStateStore = require("../utils/zustandStateStore");
11
10
  var _testIDs = require("../utils/testIDs");
12
11
  var _jsxRuntime = require("react/jsx-runtime");
13
- /** Returns the store color for a given pattern if it exactly matches a registered store name */
14
- function getStoreColorForPattern(pattern, stores) {
15
- const match = stores.find(s => s.name.toLowerCase() === pattern.toLowerCase());
16
- return match ? _zustandStateStore.zustandStateStore.getStoreColor(match.name) : null;
17
- }
12
+ /**
13
+ * ZustandEventFilterView
14
+ *
15
+ * The shared `EntityFilterView` with zustand's nouns: registered stores you
16
+ * can tap to hide, active store-name patterns, and how it works.
17
+ */
18
18
 
19
- /** True if any active pattern filters out this store */
20
- function isStoreFiltered(store, ignoredPatterns) {
21
- return Array.from(ignoredPatterns).some(p => store.name.toLowerCase().includes(p.toLowerCase()));
22
- }
19
+ const EXAMPLES = ["• auth → hides authStore from stores & events", "• temp → hides tempStore, tempUserStore", "• cart → hides cartStore from both tabs"];
23
20
  function ZustandEventFilterView({
24
21
  ignoredPatterns,
25
22
  onTogglePattern,
26
23
  onAddPattern,
27
24
  stores
28
25
  }) {
29
- const [showAddInput, setShowAddInput] = (0, _react.useState)(false);
30
- const [inputValue, setInputValue] = (0, _react.useState)("");
31
- const handleAddPattern = () => {
32
- const trimmed = inputValue.trim();
33
- if (trimmed) {
34
- onAddPattern(trimmed);
35
- setInputValue("");
36
- setShowAddInput(false);
37
- }
38
- };
39
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
40
- style: styles.container,
41
- contentContainerStyle: styles.scrollContent,
42
- showsVerticalScrollIndicator: false,
43
- testID: `${_testIDs.ZUSTAND_TEST_ID}-filters-scroll`,
44
- children: [stores.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
45
- style: styles.section,
46
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.SectionHeader, {
47
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SectionHeader.Title, {
48
- children: "REGISTERED STORES"
49
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SectionHeader.Badge, {
50
- count: stores.length,
51
- color: _sharedUi.night.color.accent,
52
- testID: `${_testIDs.ZUSTAND_TEST_ID}-filters-store-count`
53
- })]
54
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
55
- style: styles.storeList,
56
- contentContainerStyle: styles.storeListContent,
57
- showsVerticalScrollIndicator: true,
58
- nestedScrollEnabled: true,
59
- children: stores.map(store => {
60
- const storeColor = _zustandStateStore.zustandStateStore.getStoreColor(store.name);
61
- const filtered = isStoreFiltered(store, ignoredPatterns);
62
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
63
- style: [styles.storeRow, filtered && styles.storeRowFiltered],
64
- onPress: () => onAddPattern(store.name),
65
- disabled: filtered,
66
- testID: `${_testIDs.ZUSTAND_TEST_ID}-filters-store-${(0, _testIDs.slugForTestID)(store.name)}`,
67
- accessibilityRole: "button",
68
- accessibilityLabel: `Hide ${store.name}`,
69
- accessibilityState: {
70
- disabled: filtered
71
- },
72
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
73
- style: [styles.storeDot, {
74
- backgroundColor: filtered ? _sharedUi.night.color.textTertiary : storeColor
75
- }]
76
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
77
- style: [styles.storeRowText, filtered && styles.storeRowTextFiltered, !filtered && {
78
- color: storeColor
79
- }],
80
- numberOfLines: 1,
81
- children: store.name
82
- }), filtered ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
83
- style: styles.filteredLabel,
84
- children: "hidden"
85
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
86
- style: [styles.addLabel, {
87
- color: storeColor + "99"
88
- }],
89
- children: "+ hide"
90
- })]
91
- }, store.name);
92
- })
93
- })]
94
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
95
- style: styles.section,
96
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.SectionHeader, {
97
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SectionHeader.Icon, {
98
- icon: _sharedUi.Filter,
99
- color: _sharedUi.night.color.accent,
100
- size: 12
101
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SectionHeader.Title, {
102
- children: "STORE NAME FILTERS"
103
- }), ignoredPatterns.size > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SectionHeader.Badge, {
104
- count: ignoredPatterns.size,
105
- color: _sharedUi.night.color.accent,
106
- testID: `${_testIDs.ZUSTAND_TEST_ID}-filters-count`
107
- })]
108
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
109
- style: styles.addInputWrapper,
110
- children: !showAddInput ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.AddFilterButton, {
111
- onPress: () => setShowAddInput(true),
112
- color: _sharedUi.night.color.accent,
113
- label: "Add store name pattern",
114
- testID: `${_testIDs.ZUSTAND_TEST_ID}-filters-add-open`
115
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.AddFilterInput, {
116
- value: inputValue,
117
- onChange: setInputValue,
118
- onSubmit: handleAddPattern,
119
- onCancel: () => {
120
- setShowAddInput(false);
121
- setInputValue("");
122
- },
123
- placeholder: "Enter store name pattern to hide...",
124
- color: _sharedUi.night.color.accent,
125
- testID: `${_testIDs.ZUSTAND_TEST_ID}-filters-add-input`
126
- })
127
- }), ignoredPatterns.size > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
128
- style: styles.patternList,
129
- children: Array.from(ignoredPatterns).map(pattern => {
130
- const storeColor = getStoreColorForPattern(pattern, stores);
131
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
132
- style: styles.patternRow,
133
- onPress: () => onTogglePattern(pattern),
134
- activeOpacity: 0.8,
135
- testID: `${_testIDs.ZUSTAND_TEST_ID}-filters-chip-${(0, _testIDs.slugForTestID)(pattern)}`,
136
- accessibilityRole: "button",
137
- accessibilityLabel: `Remove filter ${pattern}`,
138
- children: [storeColor ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
139
- style: [styles.storeDot, {
140
- backgroundColor: storeColor
141
- }]
142
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
143
- style: [styles.patternText, storeColor ? {
144
- color: storeColor
145
- } : null],
146
- numberOfLines: 1,
147
- children: pattern
148
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.X, {
149
- size: 12,
150
- color: _sharedUi.night.color.accent + "80"
151
- })]
152
- }, pattern);
153
- })
154
- })]
155
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
156
- style: styles.section,
157
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.SectionHeader, {
158
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SectionHeader.Icon, {
159
- icon: _sharedUi.Filter,
160
- color: _sharedUi.night.color.textSecondary,
161
- size: 12
162
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SectionHeader.Title, {
163
- children: "HOW EVENT FILTERS WORK"
164
- })]
165
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
166
- style: styles.howItWorksText,
167
- children: "Patterns hide matching stores from both the Stores tab and the Events tab. Tap a store above to quickly add it as a filter."
168
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
169
- style: styles.examplesContainer,
170
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
171
- style: styles.examplesTitle,
172
- children: "EXAMPLES:"
173
- }), ["• auth → hides authStore from stores & events", "• temp → hides tempStore, tempUserStore", "• cart → hides cartStore from both tabs"].map(ex => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
174
- style: styles.exampleItem,
175
- children: ex
176
- }, ex))]
177
- })]
178
- })]
26
+ const entities = (0, _react.useMemo)(() => stores.map(store => ({
27
+ name: store.name,
28
+ color: _zustandStateStore.zustandStateStore.getStoreColor(store.name)
29
+ })), [stores]);
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.EntityFilterView, {
31
+ entities: entities,
32
+ ignoredPatterns: ignoredPatterns,
33
+ onTogglePattern: onTogglePattern,
34
+ onAddPattern: onAddPattern,
35
+ entityNoun: "STORES",
36
+ entitySingular: "store",
37
+ entityKey: "store",
38
+ testIDPrefix: _testIDs.ZUSTAND_TEST_ID,
39
+ slug: _testIDs.slugForTestID,
40
+ howItWorks: "Patterns hide matching stores from both the Stores tab and the Events tab. Tap a store above to quickly add it as a filter.",
41
+ examples: EXAMPLES
179
42
  });
180
- }
181
- const styles = _reactNative.StyleSheet.create({
182
- container: {
183
- flex: 1,
184
- // Transparent so the night sheet's star field shows through.
185
- backgroundColor: "transparent"
186
- },
187
- scrollContent: {
188
- paddingTop: 16,
189
- paddingHorizontal: 16,
190
- paddingBottom: 24,
191
- gap: 16
192
- },
193
- section: {
194
- backgroundColor: _sharedUi.night.color.surface,
195
- borderRadius: 16,
196
- borderWidth: 1,
197
- borderColor: _sharedUi.night.color.border,
198
- overflow: "hidden"
199
- },
200
- storeList: {
201
- maxHeight: 180
202
- },
203
- storeListContent: {
204
- paddingHorizontal: 16,
205
- paddingTop: 8,
206
- paddingBottom: 16,
207
- gap: 10
208
- },
209
- storeRow: {
210
- flexDirection: "row",
211
- alignItems: "center",
212
- gap: 10,
213
- paddingVertical: 10,
214
- paddingHorizontal: 12,
215
- backgroundColor: _sharedUi.night.color.surfaceElevated,
216
- borderRadius: 8,
217
- borderWidth: 1,
218
- borderColor: _sharedUi.night.color.border
219
- },
220
- storeRowFiltered: {
221
- opacity: 0.45
222
- },
223
- storeDot: {
224
- width: 7,
225
- height: 7,
226
- borderRadius: 3.5
227
- },
228
- storeRowText: {
229
- flex: 1,
230
- fontSize: 12,
231
- fontWeight: "600",
232
- fontFamily: "monospace"
233
- },
234
- storeRowTextFiltered: {
235
- color: _sharedUi.night.color.textTertiary,
236
- textDecorationLine: "line-through"
237
- },
238
- filteredLabel: {
239
- fontSize: 10,
240
- fontWeight: "500",
241
- color: _sharedUi.night.color.textTertiary,
242
- fontFamily: "monospace"
243
- },
244
- addLabel: {
245
- fontSize: 10,
246
- fontWeight: "600",
247
- fontFamily: "monospace"
248
- },
249
- addInputWrapper: {
250
- paddingHorizontal: 16,
251
- paddingTop: 8,
252
- paddingBottom: 8
253
- },
254
- patternList: {
255
- paddingHorizontal: 16,
256
- paddingBottom: 16,
257
- gap: 8
258
- },
259
- patternRow: {
260
- flexDirection: "row",
261
- alignItems: "center",
262
- justifyContent: "space-between",
263
- paddingVertical: 10,
264
- paddingHorizontal: 12,
265
- backgroundColor: _sharedUi.night.color.surfaceElevated,
266
- borderRadius: 8,
267
- borderWidth: 1,
268
- borderColor: _sharedUi.night.color.border,
269
- gap: 8
270
- },
271
- patternText: {
272
- flex: 1,
273
- fontSize: 12,
274
- fontFamily: "monospace",
275
- color: _sharedUi.night.color.text
276
- },
277
- howItWorksText: {
278
- fontSize: 11,
279
- color: _sharedUi.night.color.textSecondary,
280
- lineHeight: 16,
281
- marginTop: 8,
282
- paddingHorizontal: 16,
283
- fontFamily: "monospace"
284
- },
285
- examplesContainer: {
286
- paddingTop: 8,
287
- paddingHorizontal: 16,
288
- paddingBottom: 16,
289
- borderTopWidth: 1,
290
- borderTopColor: _sharedUi.night.color.border,
291
- marginTop: 12
292
- },
293
- examplesTitle: {
294
- fontSize: 10,
295
- fontWeight: "600",
296
- color: _sharedUi.night.color.textTertiary,
297
- fontFamily: "monospace",
298
- letterSpacing: 0.5,
299
- marginBottom: 6
300
- },
301
- exampleItem: {
302
- fontSize: 10,
303
- color: _sharedUi.night.color.textTertiary,
304
- fontFamily: "monospace",
305
- lineHeight: 16
306
- }
307
- });
43
+ }