component-previewer 0.1.0 → 0.2.0

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 (53) hide show
  1. package/README.md +67 -12
  2. package/lib/module/PreviewControls.js +159 -14
  3. package/lib/module/PreviewControls.js.map +1 -1
  4. package/lib/module/PreviewList.js +3 -0
  5. package/lib/module/PreviewList.js.map +1 -1
  6. package/lib/module/PreviewStage.js +47 -12
  7. package/lib/module/PreviewStage.js.map +1 -1
  8. package/lib/module/Previewer.js +22 -3
  9. package/lib/module/Previewer.js.map +1 -1
  10. package/lib/module/controls.js +32 -6
  11. package/lib/module/controls.js.map +1 -1
  12. package/lib/module/csf.js +5 -2
  13. package/lib/module/csf.js.map +1 -1
  14. package/lib/module/globals.js +14 -0
  15. package/lib/module/globals.js.map +1 -0
  16. package/lib/module/index.js +2 -0
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/module/persistence.js +45 -0
  19. package/lib/module/persistence.js.map +1 -0
  20. package/lib/module/shell.js +13 -3
  21. package/lib/module/shell.js.map +1 -1
  22. package/lib/typescript/src/PreviewControls.d.ts +6 -1
  23. package/lib/typescript/src/PreviewControls.d.ts.map +1 -1
  24. package/lib/typescript/src/PreviewList.d.ts.map +1 -1
  25. package/lib/typescript/src/PreviewStage.d.ts +8 -2
  26. package/lib/typescript/src/PreviewStage.d.ts.map +1 -1
  27. package/lib/typescript/src/Previewer.d.ts +6 -2
  28. package/lib/typescript/src/Previewer.d.ts.map +1 -1
  29. package/lib/typescript/src/controls.d.ts +8 -0
  30. package/lib/typescript/src/controls.d.ts.map +1 -1
  31. package/lib/typescript/src/csf.d.ts.map +1 -1
  32. package/lib/typescript/src/globals.d.ts +3 -0
  33. package/lib/typescript/src/globals.d.ts.map +1 -0
  34. package/lib/typescript/src/index.d.ts +4 -1
  35. package/lib/typescript/src/index.d.ts.map +1 -1
  36. package/lib/typescript/src/persistence.d.ts +11 -0
  37. package/lib/typescript/src/persistence.d.ts.map +1 -0
  38. package/lib/typescript/src/shell.d.ts +3 -2
  39. package/lib/typescript/src/shell.d.ts.map +1 -1
  40. package/lib/typescript/src/types.d.ts +9 -1
  41. package/lib/typescript/src/types.d.ts.map +1 -1
  42. package/package.json +4 -4
  43. package/src/PreviewControls.tsx +109 -6
  44. package/src/PreviewList.tsx +7 -1
  45. package/src/PreviewStage.tsx +54 -9
  46. package/src/Previewer.tsx +30 -3
  47. package/src/controls.ts +24 -4
  48. package/src/csf.ts +6 -1
  49. package/src/globals.ts +13 -0
  50. package/src/index.ts +6 -0
  51. package/src/persistence.ts +49 -0
  52. package/src/shell.tsx +15 -5
  53. package/src/types.ts +19 -1
package/README.md CHANGED
@@ -49,26 +49,81 @@ Peer dependencies: `react`, `react-native`.
49
49
 
50
50
  Open any story and tap **Controls** to edit its `args` on-device and re-render live (the Storybook-controls equivalent). Control kinds are inferred from the arg **values** with zero config:
51
51
 
52
- | value type | control |
53
- | ---------- | ---------------- |
54
- | `string` | text field |
55
- | `number` | numeric field |
56
- | `boolean` | switch |
52
+ | value type | control |
53
+ | ---------------------- | -------------------------------- |
54
+ | `string` | text field |
55
+ | `string` like `#rrggbb`| color swatch + hex field |
56
+ | `number` | numeric field |
57
+ | `boolean` | switch |
57
58
 
58
- Functions, objects, arrays, `null`/`undefined` are skipped (passed through untouched). For a dropdown, declare optional **CSF `argTypes`** on a story (also used for ranges):
59
+ Functions, plain objects, arrays, `null`/`undefined` are skipped by inference (passed through untouched). Declare optional **CSF `argTypes`** to force a control a dropdown, a range, an explicit color, or an editable object/array:
59
60
 
60
61
  ```tsx
61
62
  export default {
62
63
  title: 'Badge',
63
64
  component: Badge,
64
- args: { tone: 'neutral' },
65
- argTypes: { tone: { control: 'select', options: ['neutral', 'success', 'danger'] } },
65
+ args: { tone: 'neutral', accent: '#3366ff', data: { rows: 3 } },
66
+ argTypes: {
67
+ tone: { control: 'select', options: ['neutral', 'success', 'danger'] },
68
+ size: { control: 'range', min: 16, max: 256, step: 8 }, // clamped number field
69
+ accent: { control: 'color' }, // swatch + hex (also auto-inferred for #hex values)
70
+ data: { control: 'object' }, // JSON editor (objects + arrays), commits on valid JSON
71
+ },
66
72
  };
67
- // 'range' is supported too and renders as a clamped number field:
68
- // argTypes: { size: { control: 'range', min: 16, max: 256, step: 8 } }
69
73
  ```
70
74
 
71
- A **Reset** button restores the story's declared args. Edits never leak between stories.
75
+ A **Reset** button restores the story's declared args; **Copy** logs the current args as JSON (pass `onCopyArgs` to wire a real clipboard). Edits never leak between stories.
76
+
77
+ ### Args persistence
78
+
79
+ Edited args persist **per story id** across list ↔ stage navigation and Fast Refresh, with zero dependencies (an in-memory session store). To also survive a **cold reload**, pass a `persistence` adapter — the package never imports a storage lib itself:
80
+
81
+ ```tsx
82
+ import { Previewer, type ArgsPersistence } from 'component-previewer';
83
+
84
+ // any synchronous get/set/remove around AsyncStorage, MMKV, a file, etc.
85
+ const persistence: ArgsPersistence = { get, set, remove };
86
+
87
+ <Previewer stories={…} shell={Shell} persistence={persistence} />
88
+ ```
89
+
90
+ ## Globals — parameterize the one shell (theme, locale, …)
91
+
92
+ Args are per-component props. **Globals** are toolbar-level params that vary the
93
+ **shell** across every story — the canonical case is light/dark. Declare them on
94
+ `<Previewer globalTypes>` and read them in your shell:
95
+
96
+ ```tsx
97
+ const Shell: ShellComponent = ({ children, globals }) => (
98
+ <AppProviders mode={globals?.theme === 'light' ? 'light' : 'dark'}>{children}</AppProviders>
99
+ );
100
+
101
+ <Previewer
102
+ stories={…}
103
+ shell={Shell}
104
+ globalTypes={{ theme: { options: ['dark', 'light'], default: 'dark' } }}
105
+ />
106
+ ```
107
+
108
+ A **Globals** section appears at the top of the Controls panel; switching `theme`
109
+ re-renders the current story through the same shell. This is what removes the two
110
+ classic sources of duplication:
111
+
112
+ - **No forked light/dark stories.** One story, toggled — not `export const Light` +
113
+ `export const Dark` with a hand-written `dark` decorator.
114
+ - **No separate "lab" component with its own switchers.** Variant axes (a card's
115
+ `state`, a chart's `data`) belong in `args`/`argTypes` and drive the Controls
116
+ panel; theme/locale belong in `globalTypes`. There's nothing left for a bespoke
117
+ lab harness to do.
118
+
119
+ ## Single source of truth (no shell drift)
120
+
121
+ The differentiator is that your **real** `AppProviders` is the `shell`, so the
122
+ preview can't drift from the app. Globals exist specifically so you never have to
123
+ fork that shell into a lighter "preview-only" copy to vary the theme — vary it
124
+ with a global instead. The package deliberately can't *auto-detect* a forked
125
+ shell (it can't see your app root), so the contract is the guard: **import your
126
+ real providers as `shell`; parameterize with `globalTypes`; never re-author.**
72
127
 
73
128
  ## Run the example
74
129
 
@@ -118,7 +173,7 @@ Build/packaging: `react-native-builder-bob` (ESM `module` + `typescript` targets
118
173
  - **Core:** CSF parsing, zero-codegen discovery (`require.context` / `import.meta.glob`), registry, real-shell compose. Pure and unit-tested.
119
174
  - **Native backend:** boot-flag entry swap + in-app picker + real-shell render + deep-link, verified on the iOS simulator (including a native `expo-blur` story).
120
175
  - **Web backend:** renders the same CSF stories via react-native-web (native-module cap documented).
121
- - **Live props controls:** value-inferred text/number/boolean + CSF `argTypes` select/range, on-device, live.
176
+ - **Live props controls:** value-inferred text/number/boolean/color + CSF `argTypes` select/range/color/object, on-device, live. Edits persist per story (session + optional cold-reload adapter); Copy/Reset.
122
177
  - **Roadmap:** TS-type-driven prop controls (auto-infer from prop types), VS Code extension, more CSF decorator edge cases.
123
178
 
124
179
  ## License
@@ -1,15 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
3
+ import React, { useState } from 'react';
4
4
  import { Pressable, ScrollView, StyleSheet, Switch, Text, TextInput, View } from 'react-native';
5
5
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  // Dependency-free controls panel (bottom sheet). Neutral chrome — the host theme
7
- // applies to the previewed story, not here. Each control edits one arg live.
7
+ // applies to the previewed story, not here. A top "Globals" section switches the
8
+ // shell (theme/locale, …); below it, each control edits one arg live.
8
9
  export function PreviewControls({
9
10
  controls,
10
11
  onChange,
11
- onReset
12
+ onReset,
13
+ onCopy,
14
+ globalTypes,
15
+ globals,
16
+ onGlobalChange
12
17
  }) {
18
+ const globalKeys = globalTypes ? Object.keys(globalTypes) : [];
13
19
  return /*#__PURE__*/_jsxs(View, {
14
20
  style: styles.sheet,
15
21
  children: [/*#__PURE__*/_jsxs(View, {
@@ -17,17 +23,62 @@ export function PreviewControls({
17
23
  children: [/*#__PURE__*/_jsx(Text, {
18
24
  style: styles.title,
19
25
  children: "Props"
20
- }), /*#__PURE__*/_jsx(Pressable, {
21
- onPress: onReset,
22
- accessibilityLabel: "Reset props",
23
- children: /*#__PURE__*/_jsx(Text, {
24
- style: styles.reset,
25
- children: "Reset"
26
- })
26
+ }), /*#__PURE__*/_jsxs(View, {
27
+ style: styles.headerActions,
28
+ children: [onCopy && /*#__PURE__*/_jsx(Pressable, {
29
+ onPress: onCopy,
30
+ accessibilityRole: "button",
31
+ accessibilityLabel: "Copy props",
32
+ children: /*#__PURE__*/_jsx(Text, {
33
+ style: styles.action,
34
+ children: "Copy"
35
+ })
36
+ }), /*#__PURE__*/_jsx(Pressable, {
37
+ onPress: onReset,
38
+ accessibilityRole: "button",
39
+ accessibilityLabel: "Reset props",
40
+ children: /*#__PURE__*/_jsx(Text, {
41
+ style: styles.action,
42
+ children: "Reset"
43
+ })
44
+ })]
27
45
  })]
28
- }), /*#__PURE__*/_jsx(ScrollView, {
46
+ }), /*#__PURE__*/_jsxs(ScrollView, {
29
47
  keyboardShouldPersistTaps: "handled",
30
- children: controls.map(c => /*#__PURE__*/_jsxs(View, {
48
+ children: [globalKeys.length > 0 && globalTypes && globals && onGlobalChange && /*#__PURE__*/_jsxs(View, {
49
+ style: styles.globals,
50
+ children: [/*#__PURE__*/_jsx(Text, {
51
+ style: styles.sectionLabel,
52
+ children: "Globals"
53
+ }), globalKeys.map(key => {
54
+ const gt = globalTypes[key];
55
+ return /*#__PURE__*/_jsxs(View, {
56
+ style: styles.row,
57
+ children: [/*#__PURE__*/_jsx(Text, {
58
+ style: styles.label,
59
+ children: gt.label ?? key
60
+ }), /*#__PURE__*/_jsx(View, {
61
+ style: styles.control,
62
+ children: /*#__PURE__*/_jsx(View, {
63
+ style: styles.options,
64
+ children: gt.options.map(opt => {
65
+ const selected = opt === globals[key];
66
+ return /*#__PURE__*/_jsx(Pressable, {
67
+ style: [styles.pill, selected && styles.pillSelected],
68
+ onPress: () => onGlobalChange(key, opt),
69
+ accessibilityRole: "button",
70
+ accessibilityLabel: `${gt.label ?? key}: ${String(opt)}`,
71
+ children: /*#__PURE__*/_jsx(Text, {
72
+ style: [styles.pillText, selected && styles.pillTextSelected],
73
+ children: String(opt)
74
+ })
75
+ }, String(opt));
76
+ })
77
+ })
78
+ })]
79
+ }, key);
80
+ })]
81
+ }), controls.map(c => /*#__PURE__*/_jsxs(View, {
31
82
  style: styles.row,
32
83
  children: [/*#__PURE__*/_jsx(Text, {
33
84
  style: styles.label,
@@ -39,7 +90,7 @@ export function PreviewControls({
39
90
  onChange: v => onChange(c.name, v)
40
91
  })
41
92
  })]
42
- }, c.name))
93
+ }, c.name))]
43
94
  })]
44
95
  });
45
96
  }
@@ -82,6 +133,28 @@ function ControlInput({
82
133
  }, String(opt));
83
134
  })
84
135
  });
136
+ case 'color':
137
+ return /*#__PURE__*/_jsxs(View, {
138
+ style: styles.colorRow,
139
+ children: [/*#__PURE__*/_jsx(View, {
140
+ style: [styles.swatch, {
141
+ backgroundColor: control.value || 'transparent'
142
+ }]
143
+ }), /*#__PURE__*/_jsx(TextInput, {
144
+ style: [styles.input, styles.colorInput],
145
+ value: control.value,
146
+ autoCapitalize: "none",
147
+ autoCorrect: false,
148
+ placeholder: "#rrggbb",
149
+ placeholderTextColor: "#666",
150
+ onChangeText: onChange
151
+ })]
152
+ });
153
+ case 'object':
154
+ return /*#__PURE__*/_jsx(ObjectInput, {
155
+ value: control.value,
156
+ onChange: onChange
157
+ });
85
158
  default:
86
159
  // 'text'
87
160
  return /*#__PURE__*/_jsx(TextInput, {
@@ -93,6 +166,34 @@ function ControlInput({
93
166
  });
94
167
  }
95
168
  }
169
+
170
+ // Object/array editor. Holds the raw text locally so a transiently-invalid edit
171
+ // (mid-typing) isn't reverted keystroke-by-keystroke; commits only on valid JSON.
172
+ // Reset reseeds it because the panel is keyed by a reset nonce in PreviewStage.
173
+ function ObjectInput({
174
+ value,
175
+ onChange
176
+ }) {
177
+ const [text, setText] = useState(() => JSON.stringify(value, null, 2));
178
+ const [valid, setValid] = useState(true);
179
+ return /*#__PURE__*/_jsx(TextInput, {
180
+ style: [styles.input, styles.objectInput, !valid && styles.objectInvalid],
181
+ value: text,
182
+ multiline: true,
183
+ autoCapitalize: "none",
184
+ autoCorrect: false,
185
+ onChangeText: t => {
186
+ setText(t);
187
+ try {
188
+ const parsed = JSON.parse(t);
189
+ setValid(true);
190
+ onChange(parsed);
191
+ } catch {
192
+ setValid(false); // keep the text; don't commit until it parses
193
+ }
194
+ }
195
+ });
196
+ }
96
197
  const styles = StyleSheet.create({
97
198
  sheet: {
98
199
  position: 'absolute',
@@ -120,11 +221,28 @@ const styles = StyleSheet.create({
120
221
  fontSize: 16,
121
222
  fontWeight: '700'
122
223
  },
123
- reset: {
224
+ headerActions: {
225
+ flexDirection: 'row',
226
+ gap: 16
227
+ },
228
+ action: {
124
229
  color: '#7aa2ff',
125
230
  fontSize: 14,
126
231
  fontWeight: '600'
127
232
  },
233
+ globals: {
234
+ marginBottom: 8,
235
+ paddingBottom: 8,
236
+ borderBottomWidth: StyleSheet.hairlineWidth,
237
+ borderBottomColor: '#333'
238
+ },
239
+ sectionLabel: {
240
+ color: '#7f7f88',
241
+ fontSize: 11,
242
+ fontWeight: '700',
243
+ textTransform: 'uppercase',
244
+ letterSpacing: 0.6
245
+ },
128
246
  row: {
129
247
  flexDirection: 'row',
130
248
  alignItems: 'center',
@@ -150,6 +268,33 @@ const styles = StyleSheet.create({
150
268
  width: '100%',
151
269
  textAlign: 'right'
152
270
  },
271
+ colorRow: {
272
+ flexDirection: 'row',
273
+ alignItems: 'center',
274
+ gap: 8,
275
+ width: '100%'
276
+ },
277
+ swatch: {
278
+ width: 26,
279
+ height: 26,
280
+ borderRadius: 6,
281
+ borderWidth: StyleSheet.hairlineWidth,
282
+ borderColor: '#555'
283
+ },
284
+ colorInput: {
285
+ flex: 1,
286
+ minWidth: 0
287
+ },
288
+ objectInput: {
289
+ textAlign: 'left',
290
+ minHeight: 88,
291
+ fontFamily: 'Courier',
292
+ fontSize: 12
293
+ },
294
+ objectInvalid: {
295
+ borderWidth: 1,
296
+ borderColor: '#e0566f'
297
+ },
153
298
  options: {
154
299
  flexDirection: 'row',
155
300
  flexWrap: 'wrap',
@@ -1 +1 @@
1
- {"version":3,"names":["React","Pressable","ScrollView","StyleSheet","Switch","Text","TextInput","View","jsx","_jsx","jsxs","_jsxs","PreviewControls","controls","onChange","onReset","style","styles","sheet","children","header","title","onPress","accessibilityLabel","reset","keyboardShouldPersistTaps","map","c","row","label","name","control","ControlInput","v","kind","value","onValueChange","input","keyboardType","String","onChangeText","text","n","Number","trim","isNaN","next","min","Math","max","options","opt","selected","pill","pillSelected","pillText","pillTextSelected","autoCapitalize","autoCorrect","create","position","left","right","bottom","maxHeight","backgroundColor","borderTopLeftRadius","borderTopRightRadius","paddingHorizontal","paddingTop","paddingBottom","borderTopWidth","hairlineWidth","borderTopColor","flexDirection","justifyContent","alignItems","marginBottom","color","fontSize","fontWeight","paddingVertical","gap","width","flex","borderRadius","minWidth","textAlign","flexWrap"],"sourceRoot":"../../src","sources":["PreviewControls.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","Pressable","ScrollView","StyleSheet","Switch","Text","TextInput","View","jsx","_jsx","jsxs","_jsxs","PreviewControls","controls","onChange","onReset","onCopy","globalTypes","globals","onGlobalChange","globalKeys","Object","keys","style","styles","sheet","children","header","title","headerActions","onPress","accessibilityRole","accessibilityLabel","action","keyboardShouldPersistTaps","length","sectionLabel","map","key","gt","row","label","control","options","opt","selected","pill","pillSelected","String","pillText","pillTextSelected","c","name","ControlInput","v","kind","value","onValueChange","input","keyboardType","onChangeText","text","n","Number","trim","isNaN","next","min","Math","max","colorRow","swatch","backgroundColor","colorInput","autoCapitalize","autoCorrect","placeholder","placeholderTextColor","ObjectInput","setText","JSON","stringify","valid","setValid","objectInput","objectInvalid","multiline","t","parsed","parse","create","position","left","right","bottom","maxHeight","borderTopLeftRadius","borderTopRightRadius","paddingHorizontal","paddingTop","paddingBottom","borderTopWidth","hairlineWidth","borderTopColor","flexDirection","justifyContent","alignItems","marginBottom","color","fontSize","fontWeight","gap","borderBottomWidth","borderBottomColor","textTransform","letterSpacing","paddingVertical","width","flex","borderRadius","minWidth","textAlign","height","borderWidth","borderColor","minHeight","fontFamily","flexWrap"],"sourceRoot":"../../src","sources":["PreviewControls.tsx"],"mappings":"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","ignoreList":[]}
@@ -39,6 +39,9 @@ export function PreviewList({
39
39
  }) => /*#__PURE__*/_jsxs(Pressable, {
40
40
  style: styles.row,
41
41
  onPress: () => onSelect(item),
42
+ accessibilityRole: "button",
43
+ accessibilityLabel: `${item.title} / ${item.name}`,
44
+ testID: `story-row-${item.id}`,
42
45
  children: [/*#__PURE__*/_jsxs(Text, {
43
46
  style: styles.rowTitle,
44
47
  children: [item.title, " ", /*#__PURE__*/_jsxs(Text, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useState","FlatList","Pressable","StyleSheet","Text","TextInput","View","jsxs","_jsxs","jsx","_jsx","PreviewList","entries","onSelect","query","setQuery","filtered","q","trim","toLowerCase","filter","e","title","name","includes","style","styles","root","children","heading","length","search","placeholder","placeholderTextColor","autoCapitalize","autoCorrect","value","onChangeText","empty","data","keyExtractor","id","renderItem","item","row","onPress","rowTitle","rowName","rowId","create","flex","paddingTop","paddingHorizontal","backgroundColor","color","fontSize","fontWeight","marginBottom","borderRadius","paddingVertical","marginTop","borderBottomWidth","hairlineWidth","borderBottomColor"],"sourceRoot":"../../src","sources":["PreviewList.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","useState","FlatList","Pressable","StyleSheet","Text","TextInput","View","jsxs","_jsxs","jsx","_jsx","PreviewList","entries","onSelect","query","setQuery","filtered","q","trim","toLowerCase","filter","e","title","name","includes","style","styles","root","children","heading","length","search","placeholder","placeholderTextColor","autoCapitalize","autoCorrect","value","onChangeText","empty","data","keyExtractor","id","renderItem","item","row","onPress","accessibilityRole","accessibilityLabel","testID","rowTitle","rowName","rowId","create","flex","paddingTop","paddingHorizontal","backgroundColor","color","fontSize","fontWeight","marginBottom","borderRadius","paddingVertical","marginTop","borderBottomWidth","hairlineWidth","borderBottomColor"],"sourceRoot":"../../src","sources":["PreviewList.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,48 +4,83 @@ import React, { useMemo, useState } from 'react';
4
4
  import { Pressable, StyleSheet, Text, View } from 'react-native';
5
5
  import { inferControls } from "./controls.js";
6
6
  import { PreviewControls } from "./PreviewControls.js";
7
+ import { loadArgs, resetArgs, saveArgs } from "./persistence.js";
7
8
  import { composeStory } from "./shell.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  // Renders the selected story full-bleed, composed with the real shell (outer)
10
11
  // and the story's decorators (inner). The picker chrome stays outside the shell.
11
- // Live props controls edit `args` and re-render the story in place.
12
+ // Live props controls edit `args` and re-render the story in place. Edits persist
13
+ // per story id (session by default; cross-reload if a `persistence` adapter is
14
+ // passed), so navigating away and back keeps your tweaks. `globals` parameterize
15
+ // the shell (theme/locale) from the same panel.
12
16
  export function PreviewStage({
13
17
  entry,
14
18
  shell,
15
- onBack
19
+ onBack,
20
+ persistence,
21
+ onCopyArgs,
22
+ globalTypes,
23
+ globals,
24
+ onGlobalChange
16
25
  }) {
17
- const [args, setArgs] = useState(entry.args);
26
+ const [args, setArgs] = useState(() => loadArgs(entry.id, entry.args, persistence));
18
27
  const [controlsOpen, setControlsOpen] = useState(false);
28
+ // Bumped on Reset to remount the controls panel so the JSON object editor
29
+ // reseeds its local text from the restored args.
30
+ const [resetNonce, setResetNonce] = useState(0);
19
31
  const controls = useMemo(() => inferControls(args, entry.argTypes), [args, entry.argTypes]);
32
+ const change = (name, value) => setArgs(a => {
33
+ const next = {
34
+ ...a,
35
+ [name]: value
36
+ };
37
+ saveArgs(entry.id, next, persistence);
38
+ return next;
39
+ });
40
+ const reset = () => {
41
+ resetArgs(entry.id, persistence);
42
+ setArgs(entry.args);
43
+ setResetNonce(n => n + 1);
44
+ };
45
+
46
+ // Default copy logs the args JSON (zero-dep); a host can wire a real clipboard.
47
+ const copy = () => {
48
+ if (onCopyArgs) onCopyArgs(args, entry);else console.log(`[previewer] ${entry.id} args:\n${JSON.stringify(args, null, 2)}`);
49
+ };
50
+ const hasGlobals = !!globalTypes && Object.keys(globalTypes).length > 0;
51
+ const hasPanel = controls.length > 0 || hasGlobals;
20
52
  return /*#__PURE__*/_jsxs(View, {
21
53
  style: styles.root,
22
54
  children: [/*#__PURE__*/_jsx(View, {
23
55
  style: styles.content,
24
- children: composeStory(entry, shell, args)
56
+ children: composeStory(entry, shell, args, globals)
25
57
  }), /*#__PURE__*/_jsx(Pressable, {
26
58
  style: styles.back,
27
59
  onPress: onBack,
60
+ accessibilityRole: "button",
28
61
  accessibilityLabel: "Back to stories",
29
62
  children: /*#__PURE__*/_jsxs(Text, {
30
63
  style: styles.backText,
31
64
  children: ["\u2039 ", entry.title, " / ", entry.name]
32
65
  })
33
- }), controls.length > 0 && /*#__PURE__*/_jsx(Pressable, {
66
+ }), hasPanel && /*#__PURE__*/_jsx(Pressable, {
34
67
  style: styles.toggle,
35
68
  onPress: () => setControlsOpen(v => !v),
69
+ accessibilityRole: "button",
36
70
  accessibilityLabel: "Toggle props controls",
37
71
  children: /*#__PURE__*/_jsx(Text, {
38
72
  style: styles.backText,
39
73
  children: controlsOpen ? 'Controls ▾' : 'Controls ▴'
40
74
  })
41
- }), controlsOpen && controls.length > 0 && /*#__PURE__*/_jsx(PreviewControls, {
75
+ }), controlsOpen && hasPanel && /*#__PURE__*/_jsx(PreviewControls, {
42
76
  controls: controls,
43
- onChange: (name, value) => setArgs(a => ({
44
- ...a,
45
- [name]: value
46
- })),
47
- onReset: () => setArgs(entry.args)
48
- })]
77
+ onChange: change,
78
+ onReset: reset,
79
+ onCopy: copy,
80
+ globalTypes: globalTypes,
81
+ globals: globals,
82
+ onGlobalChange: onGlobalChange
83
+ }, resetNonce)]
49
84
  });
50
85
  }
51
86
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useState","Pressable","StyleSheet","Text","View","inferControls","PreviewControls","composeStory","jsx","_jsx","jsxs","_jsxs","PreviewStage","entry","shell","onBack","args","setArgs","controlsOpen","setControlsOpen","controls","argTypes","style","styles","root","children","content","back","onPress","accessibilityLabel","backText","title","name","length","toggle","v","onChange","value","a","onReset","create","flex","position","top","left","backgroundColor","borderRadius","paddingHorizontal","paddingVertical","right","color","fontSize","fontWeight"],"sourceRoot":"../../src","sources":["PreviewStage.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","useState","Pressable","StyleSheet","Text","View","inferControls","PreviewControls","loadArgs","resetArgs","saveArgs","composeStory","jsx","_jsx","jsxs","_jsxs","PreviewStage","entry","shell","onBack","persistence","onCopyArgs","globalTypes","globals","onGlobalChange","args","setArgs","id","controlsOpen","setControlsOpen","resetNonce","setResetNonce","controls","argTypes","change","name","value","a","next","reset","n","copy","console","log","JSON","stringify","hasGlobals","Object","keys","length","hasPanel","style","styles","root","children","content","back","onPress","accessibilityRole","accessibilityLabel","backText","title","toggle","v","onChange","onReset","onCopy","create","flex","position","top","left","backgroundColor","borderRadius","paddingHorizontal","paddingVertical","right","color","fontSize","fontWeight"],"sourceRoot":"../../src","sources":["PreviewStage.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,26 +1,45 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { useState } from 'react';
4
+ import { initGlobals } from "./globals.js";
4
5
  import { PreviewList } from "./PreviewList.js";
5
6
  import { PreviewStage } from "./PreviewStage.js";
6
7
  import { jsx as _jsx } from "react/jsx-runtime";
7
8
  // The reusable picker + stage UI. The host builds `stories` via
8
9
  // fromRequireContext/fromGlob and passes its real `shell` (AppProviders).
9
10
  // `initialStoryId` boots straight into one story (useful for deep links /
10
- // screenshots / "jump to the thing I'm editing").
11
+ // screenshots / "jump to the thing I'm editing"). `persistence` (optional) makes
12
+ // edited args survive a cold reload; `onCopyArgs` (optional) wires a real
13
+ // clipboard for the Copy button (defaults to console.log). `globalTypes`
14
+ // (optional) declares toolbar params (theme/locale) that the shell reads — one
15
+ // real shell parameterized, instead of forked light/dark copies.
11
16
  export function Previewer({
12
17
  stories,
13
18
  shell,
14
- initialStoryId
19
+ initialStoryId,
20
+ persistence,
21
+ onCopyArgs,
22
+ globalTypes
15
23
  }) {
16
24
  const initial = initialStoryId ? stories.find(s => s.id === initialStoryId) ?? null : null;
17
25
  const [selected, setSelected] = useState(initial);
26
+ // Globals live above the selected story so they survive list <-> stage nav.
27
+ const [globals, setGlobals] = useState(() => initGlobals(globalTypes));
28
+ const changeGlobal = (key, value) => setGlobals(g => ({
29
+ ...g,
30
+ [key]: value
31
+ }));
18
32
  if (selected) {
19
33
  // key by story id so live-edited arg state resets cleanly per story.
20
34
  return /*#__PURE__*/_jsx(PreviewStage, {
21
35
  entry: selected,
22
36
  shell: shell,
23
- onBack: () => setSelected(null)
37
+ onBack: () => setSelected(null),
38
+ persistence: persistence,
39
+ onCopyArgs: onCopyArgs,
40
+ globalTypes: globalTypes,
41
+ globals: globals,
42
+ onGlobalChange: changeGlobal
24
43
  }, selected.id);
25
44
  }
26
45
  return /*#__PURE__*/_jsx(PreviewList, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","PreviewList","PreviewStage","jsx","_jsx","Previewer","stories","shell","initialStoryId","initial","find","s","id","selected","setSelected","entry","onBack","entries","onSelect"],"sourceRoot":"../../src","sources":["Previewer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI9C;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAC;EACxBC,OAAO;EACPC,KAAK;EACLC;AAKF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,cAAc,GAAIF,OAAO,CAACI,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKJ,cAAc,CAAC,IAAI,IAAI,GAAI,IAAI;EAC9F,MAAM,CAACK,QAAQ,EAAEC,WAAW,CAAC,GAAGd,QAAQ,CAAoBS,OAAO,CAAC;EAEpE,IAAII,QAAQ,EAAE;IACZ;IACA,oBAAOT,IAAA,CAACF,YAAY;MAAmBa,KAAK,EAAEF,QAAS;MAACN,KAAK,EAAEA,KAAM;MAACS,MAAM,EAAEA,CAAA,KAAMF,WAAW,CAAC,IAAI;IAAE,GAA5ED,QAAQ,CAACD,EAAqE,CAAC;EAC3G;EACA,oBAAOR,IAAA,CAACH,WAAW;IAACgB,OAAO,EAAEX,OAAQ;IAACY,QAAQ,EAAEJ;EAAY,CAAE,CAAC;AACjE","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","initGlobals","PreviewList","PreviewStage","jsx","_jsx","Previewer","stories","shell","initialStoryId","persistence","onCopyArgs","globalTypes","initial","find","s","id","selected","setSelected","globals","setGlobals","changeGlobal","key","value","g","entry","onBack","onGlobalChange","entries","onSelect"],"sourceRoot":"../../src","sources":["Previewer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,WAAW,QAAQ,cAAW;AACvC,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAK9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAC;EACxBC,OAAO;EACPC,KAAK;EACLC,cAAc;EACdC,WAAW;EACXC,UAAU;EACVC;AAQF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGJ,cAAc,GAAIF,OAAO,CAACO,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKP,cAAc,CAAC,IAAI,IAAI,GAAI,IAAI;EAC9F,MAAM,CAACQ,QAAQ,EAAEC,WAAW,CAAC,GAAGlB,QAAQ,CAAoBa,OAAO,CAAC;EACpE;EACA,MAAM,CAACM,OAAO,EAAEC,UAAU,CAAC,GAAGpB,QAAQ,CAAC,MAAMC,WAAW,CAACW,WAAW,CAAC,CAAC;EACtE,MAAMS,YAAY,GAAGA,CAACC,GAAW,EAAEC,KAAc,KAAKH,UAAU,CAAEI,CAAC,KAAM;IAAE,GAAGA,CAAC;IAAE,CAACF,GAAG,GAAGC;EAAM,CAAC,CAAC,CAAC;EAEjG,IAAIN,QAAQ,EAAE;IACZ;IACA,oBACEZ,IAAA,CAACF,YAAY;MAEXsB,KAAK,EAAER,QAAS;MAChBT,KAAK,EAAEA,KAAM;MACbkB,MAAM,EAAEA,CAAA,KAAMR,WAAW,CAAC,IAAI,CAAE;MAChCR,WAAW,EAAEA,WAAY;MACzBC,UAAU,EAAEA,UAAW;MACvBC,WAAW,EAAEA,WAAY;MACzBO,OAAO,EAAEA,OAAQ;MACjBQ,cAAc,EAAEN;IAAa,GARxBJ,QAAQ,CAACD,EASf,CAAC;EAEN;EACA,oBAAOX,IAAA,CAACH,WAAW;IAAC0B,OAAO,EAAErB,OAAQ;IAACsB,QAAQ,EAAEX;EAAY,CAAE,CAAC;AACjE","ignoreList":[]}