@ankhorage/zora 0.5.2 → 0.6.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 (84) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +267 -283
  3. package/dist/components/form/Form.d.ts +4 -0
  4. package/dist/components/form/Form.d.ts.map +1 -0
  5. package/dist/components/form/Form.js +27 -0
  6. package/dist/components/form/Form.js.map +1 -0
  7. package/dist/components/form/FormActions.d.ts +4 -0
  8. package/dist/components/form/FormActions.d.ts.map +1 -0
  9. package/dist/components/form/FormActions.js +12 -0
  10. package/dist/components/form/FormActions.js.map +1 -0
  11. package/dist/components/form/FormError.d.ts +4 -0
  12. package/dist/components/form/FormError.d.ts.map +1 -0
  13. package/dist/components/form/FormError.js +14 -0
  14. package/dist/components/form/FormError.js.map +1 -0
  15. package/dist/components/form/FormField.d.ts +4 -0
  16. package/dist/components/form/FormField.d.ts.map +1 -0
  17. package/dist/components/form/FormField.js +74 -0
  18. package/dist/components/form/FormField.js.map +1 -0
  19. package/dist/components/form/index.d.ts +8 -0
  20. package/dist/components/form/index.d.ts.map +1 -0
  21. package/dist/components/form/index.js +7 -0
  22. package/dist/components/form/index.js.map +1 -0
  23. package/dist/components/form/types.d.ts +107 -0
  24. package/dist/components/form/types.d.ts.map +1 -0
  25. package/dist/components/form/types.js +2 -0
  26. package/dist/components/form/types.js.map +1 -0
  27. package/dist/components/form/useFormController.d.ts +3 -0
  28. package/dist/components/form/useFormController.d.ts.map +1 -0
  29. package/dist/components/form/useFormController.js +62 -0
  30. package/dist/components/form/useFormController.js.map +1 -0
  31. package/dist/components/form/validation.d.ts +6 -0
  32. package/dist/components/form/validation.d.ts.map +1 -0
  33. package/dist/components/form/validation.js +52 -0
  34. package/dist/components/form/validation.js.map +1 -0
  35. package/dist/index.d.ts +4 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +2 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/patterns/auth/ForgotPasswordForm.d.ts +4 -0
  40. package/dist/patterns/auth/ForgotPasswordForm.d.ts.map +1 -0
  41. package/dist/patterns/auth/ForgotPasswordForm.js +31 -0
  42. package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -0
  43. package/dist/patterns/auth/OtpForm.d.ts +4 -0
  44. package/dist/patterns/auth/OtpForm.d.ts.map +1 -0
  45. package/dist/patterns/auth/OtpForm.js +30 -0
  46. package/dist/patterns/auth/OtpForm.js.map +1 -0
  47. package/dist/patterns/auth/SignInForm.d.ts +4 -0
  48. package/dist/patterns/auth/SignInForm.d.ts.map +1 -0
  49. package/dist/patterns/auth/SignInForm.js +45 -0
  50. package/dist/patterns/auth/SignInForm.js.map +1 -0
  51. package/dist/patterns/auth/SignUpForm.d.ts +4 -0
  52. package/dist/patterns/auth/SignUpForm.d.ts.map +1 -0
  53. package/dist/patterns/auth/SignUpForm.js +37 -0
  54. package/dist/patterns/auth/SignUpForm.js.map +1 -0
  55. package/dist/patterns/auth/index.d.ts +6 -0
  56. package/dist/patterns/auth/index.d.ts.map +1 -0
  57. package/dist/patterns/auth/index.js +5 -0
  58. package/dist/patterns/auth/index.js.map +1 -0
  59. package/dist/patterns/auth/types.d.ts +57 -0
  60. package/dist/patterns/auth/types.d.ts.map +1 -0
  61. package/dist/patterns/auth/types.js +2 -0
  62. package/dist/patterns/auth/types.js.map +1 -0
  63. package/dist/patterns/auth/utils.d.ts +8 -0
  64. package/dist/patterns/auth/utils.d.ts.map +1 -0
  65. package/dist/patterns/auth/utils.js +51 -0
  66. package/dist/patterns/auth/utils.js.map +1 -0
  67. package/package.json +2 -2
  68. package/src/components/form/Form.tsx +61 -0
  69. package/src/components/form/FormActions.tsx +23 -0
  70. package/src/components/form/FormError.tsx +20 -0
  71. package/src/components/form/FormField.tsx +128 -0
  72. package/src/components/form/index.ts +24 -0
  73. package/src/components/form/types.ts +115 -0
  74. package/src/components/form/useFormController.ts +105 -0
  75. package/src/components/form/validation.test.ts +79 -0
  76. package/src/components/form/validation.ts +83 -0
  77. package/src/index.ts +43 -2
  78. package/src/patterns/auth/ForgotPasswordForm.tsx +84 -0
  79. package/src/patterns/auth/OtpForm.tsx +80 -0
  80. package/src/patterns/auth/SignInForm.tsx +111 -0
  81. package/src/patterns/auth/SignUpForm.tsx +76 -0
  82. package/src/patterns/auth/index.ts +17 -0
  83. package/src/patterns/auth/types.ts +67 -0
  84. package/src/patterns/auth/utils.ts +80 -0
package/README.md CHANGED
@@ -94,14 +94,14 @@ Action button with ZORA defaults for tone, emphasis, size, and icons.
94
94
 
95
95
  ZORA props:
96
96
 
97
- | Prop | Type | Default | Notes |
98
- | --- | --- | --- | --- |
99
- | `children` | `React.ReactNode` | - | Button label or content. |
100
- | `tone` | `ZoraTone` | `'primary'` | Passed to Surface as `tone`. |
101
- | `emphasis` | `ZoraEmphasis` | `'solid'` | Passed to Surface as `variant`. |
102
- | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
103
- | `leadingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered before content. |
104
- | `trailingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered after content. |
97
+ | Prop | Type | Default | Notes |
98
+ | -------------- | ----------------- | ----------- | ------------------------------------------ |
99
+ | `children` | `React.ReactNode` | - | Button label or content. |
100
+ | `tone` | `ZoraTone` | `'primary'` | Passed to Surface as `tone`. |
101
+ | `emphasis` | `ZoraEmphasis` | `'solid'` | Passed to Surface as `variant`. |
102
+ | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
103
+ | `leadingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered before content. |
104
+ | `trailingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered after content. |
105
105
 
106
106
  Inherited props:
107
107
 
@@ -125,13 +125,13 @@ Compact icon-only button for toolbars, rows, and actions.
125
125
 
126
126
  ZORA props:
127
127
 
128
- | Prop | Type | Default | Notes |
129
- | --- | --- | --- | --- |
130
- | `icon` | `ButtonIconSpec` | - | Required icon to render. |
131
- | `label` | `string` | - | Required for `accessibilityLabel`. |
132
- | `tone` | `ZoraTone` | `'neutral'` | Button tone. |
133
- | `emphasis` | `ZoraEmphasis` | `'ghost'` | Button emphasis. |
134
- | `size` | `ZoraControlSize` | `'m'` | Button size. |
128
+ | Prop | Type | Default | Notes |
129
+ | ---------- | ----------------- | ----------- | ---------------------------------- |
130
+ | `icon` | `ButtonIconSpec` | - | Required icon to render. |
131
+ | `label` | `string` | - | Required for `accessibilityLabel`. |
132
+ | `tone` | `ZoraTone` | `'neutral'` | Button tone. |
133
+ | `emphasis` | `ZoraEmphasis` | `'ghost'` | Button emphasis. |
134
+ | `size` | `ZoraControlSize` | `'m'` | Button size. |
135
135
 
136
136
  Inherited props:
137
137
 
@@ -153,12 +153,12 @@ Small status label with ZORA tone, emphasis, and size defaults.
153
153
 
154
154
  ZORA props:
155
155
 
156
- | Prop | Type | Default | Notes |
157
- | --- | --- | --- | --- |
158
- | `children` | `React.ReactNode` | - | Rendered as Surface badge `content`. |
159
- | `tone` | `ZoraTone` | `'primary'` | Passed to Surface as `tone`. |
160
- | `emphasis` | `ZoraBadgeEmphasis` | `'soft'` | Passed to Surface as `variant`. |
161
- | `size` | `ZoraControlSize` | `'m'` | Passed to Surface as `size`. |
156
+ | Prop | Type | Default | Notes |
157
+ | ---------- | ------------------- | ----------- | ------------------------------------ |
158
+ | `children` | `React.ReactNode` | - | Rendered as Surface badge `content`. |
159
+ | `tone` | `ZoraTone` | `'primary'` | Passed to Surface as `tone`. |
160
+ | `emphasis` | `ZoraBadgeEmphasis` | `'soft'` | Passed to Surface as `variant`. |
161
+ | `size` | `ZoraControlSize` | `'m'` | Passed to Surface as `size`. |
162
162
 
163
163
  Inherited props:
164
164
 
@@ -173,11 +173,7 @@ Composed content surface with optional header, actions, footer, and ZORA card
173
173
  tones.
174
174
 
175
175
  ```tsx
176
- <Card
177
- actions={<Button>Open</Button>}
178
- description="A reusable product surface."
179
- title="Project"
180
- />
176
+ <Card actions={<Button>Open</Button>} description="A reusable product surface." title="Project" />
181
177
  ```
182
178
 
183
179
  <details>
@@ -185,16 +181,16 @@ tones.
185
181
 
186
182
  ZORA props:
187
183
 
188
- | Prop | Type | Default | Notes |
189
- | --- | --- | --- | --- |
190
- | `children` | `React.ReactNode` | - | Main card body. |
191
- | `title` | `React.ReactNode` | - | Header title. |
192
- | `description` | `React.ReactNode` | - | Header description. |
193
- | `eyebrow` | `React.ReactNode` | - | Small muted text above the title. |
194
- | `actions` | `React.ReactNode` | - | Header action area. |
195
- | `footer` | `React.ReactNode` | - | Footer area below body content. |
196
- | `tone` | `ZoraCardTone` | `'default'` | Maps to Surface variants: `default -> raised`, `subtle -> subtle`, `outline -> outline`. |
197
- | `compact` | `boolean` | `false` | Uses tighter padding and heading scale. |
184
+ | Prop | Type | Default | Notes |
185
+ | ------------- | ----------------- | ----------- | ---------------------------------------------------------------------------------------- |
186
+ | `children` | `React.ReactNode` | - | Main card body. |
187
+ | `title` | `React.ReactNode` | - | Header title. |
188
+ | `description` | `React.ReactNode` | - | Header description. |
189
+ | `eyebrow` | `React.ReactNode` | - | Small muted text above the title. |
190
+ | `actions` | `React.ReactNode` | - | Header action area. |
191
+ | `footer` | `React.ReactNode` | - | Footer area below body content. |
192
+ | `tone` | `ZoraCardTone` | `'default'` | Maps to Surface variants: `default -> raised`, `subtle -> subtle`, `outline -> outline`. |
193
+ | `compact` | `boolean` | `false` | Uses tighter padding and heading scale. |
198
194
 
199
195
  Inherited props:
200
196
 
@@ -221,11 +217,11 @@ Text input wrapper with ZORA sizing and optional Surface icon specs.
221
217
 
222
218
  ZORA props:
223
219
 
224
- | Prop | Type | Default | Notes |
225
- | --- | --- | --- | --- |
226
- | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
227
- | `leadingIcon` | `ButtonIconSpec` | - | Rendered as Surface `leadingAccessory`. |
228
- | `trailingIcon` | `ButtonIconSpec` | - | Rendered as Surface `trailingAccessory`. |
220
+ | Prop | Type | Default | Notes |
221
+ | -------------- | ----------------- | ------- | ---------------------------------------- |
222
+ | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
223
+ | `leadingIcon` | `ButtonIconSpec` | - | Rendered as Surface `leadingAccessory`. |
224
+ | `trailingIcon` | `ButtonIconSpec` | - | Rendered as Surface `trailingAccessory`. |
229
225
 
230
226
  Inherited props:
231
227
 
@@ -349,11 +345,11 @@ Multiline text input wrapper with ZORA sizing and optional Surface icon specs.
349
345
 
350
346
  ZORA props:
351
347
 
352
- | Prop | Type | Default | Notes |
353
- | --- | --- | --- | --- |
354
- | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
355
- | `leadingIcon` | `ButtonIconSpec` | - | Rendered as Surface `leadingAccessory`. |
356
- | `trailingIcon` | `ButtonIconSpec` | - | Rendered as Surface `trailingAccessory`. |
348
+ | Prop | Type | Default | Notes |
349
+ | -------------- | ----------------- | ------- | ---------------------------------------- |
350
+ | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
351
+ | `leadingIcon` | `ButtonIconSpec` | - | Rendered as Surface `leadingAccessory`. |
352
+ | `trailingIcon` | `ButtonIconSpec` | - | Rendered as Surface `trailingAccessory`. |
357
353
 
358
354
  Inherited props:
359
355
 
@@ -385,13 +381,13 @@ Generic controlled tabs for navigation and filtering.
385
381
 
386
382
  ZORA props:
387
383
 
388
- | Prop | Type | Default | Notes |
389
- | --- | --- | --- | --- |
390
- | `value` | `string` | - | Active tab value. |
391
- | `items` | `TabItem[]` | - | Array of tab objects. |
392
- | `onValueChange` | `(value: string) => void` | - | Change handler. |
393
- | `variant` | `'underline' \| 'pill' \| 'segmented'` | `'underline'` | Visual style. |
394
- | `size` | `ZoraControlSize` | `'m'` | Control size. |
384
+ | Prop | Type | Default | Notes |
385
+ | --------------- | -------------------------------------- | ------------- | --------------------- |
386
+ | `value` | `string` | - | Active tab value. |
387
+ | `items` | `TabItem[]` | - | Array of tab objects. |
388
+ | `onValueChange` | `(value: string) => void` | - | Change handler. |
389
+ | `variant` | `'underline' \| 'pill' \| 'segmented'` | `'underline'` | Visual style. |
390
+ | `size` | `ZoraControlSize` | `'m'` | Control size. |
395
391
 
396
392
  </details>
397
393
 
@@ -411,21 +407,21 @@ Horizontal shell for actions and tools.
411
407
 
412
408
  `Toolbar` props:
413
409
 
414
- | Prop | Type | Default | Notes |
415
- | --- | --- | --- | --- |
416
- | `children` | `React.ReactNode` | - | Toolbar content. |
417
- | `position` | `'top' \| 'bottom' \| 'inline'` | `'inline'` | Layout position. |
418
- | `floating` | `boolean` | `false` | Whether the toolbar floats with a shadow. |
419
- | `compact` | `boolean` | `true` | Tighter padding. |
410
+ | Prop | Type | Default | Notes |
411
+ | ---------- | ------------------------------- | ---------- | ----------------------------------------- |
412
+ | `children` | `React.ReactNode` | - | Toolbar content. |
413
+ | `position` | `'top' \| 'bottom' \| 'inline'` | `'inline'` | Layout position. |
414
+ | `floating` | `boolean` | `false` | Whether the toolbar floats with a shadow. |
415
+ | `compact` | `boolean` | `true` | Tighter padding. |
420
416
 
421
417
  `ToolbarAction` props:
422
418
 
423
- | Prop | Type | Default | Notes |
424
- | --- | --- | --- | --- |
425
- | `icon` | `ButtonIconSpec` | - | Required icon. |
426
- | `label` | `string` | - | Accessibility label. |
427
- | `active` | `boolean` | `false` | Highlighted state. |
428
- | `onPress` | `() => void` | - | Click handler. |
419
+ | Prop | Type | Default | Notes |
420
+ | --------- | ---------------- | ------- | -------------------- |
421
+ | `icon` | `ButtonIconSpec` | - | Required icon. |
422
+ | `label` | `string` | - | Accessibility label. |
423
+ | `active` | `boolean` | `false` | Highlighted state. |
424
+ | `onPress` | `() => void` | - | Click handler. |
429
425
 
430
426
  </details>
431
427
 
@@ -449,13 +445,13 @@ Standard dropdown selector wrapping `@react-native-picker/picker`.
449
445
 
450
446
  ZORA props:
451
447
 
452
- | Prop | Type | Default | Notes |
453
- | --- | --- | --- | --- |
454
- | `value` | `string` | - | Selected value. |
455
- | `options` | `SelectOption[]` | - | Array of option objects. |
456
- | `onValueChange` | `(value: string) => void` | - | Change handler. |
457
- | `invalid` | `boolean` | `false` | Error state styling. |
458
- | `disabled` | `boolean` | `false` | Interaction state. |
448
+ | Prop | Type | Default | Notes |
449
+ | --------------- | ------------------------- | ------- | ------------------------ |
450
+ | `value` | `string` | - | Selected value. |
451
+ | `options` | `SelectOption[]` | - | Array of option objects. |
452
+ | `onValueChange` | `(value: string) => void` | - | Change handler. |
453
+ | `invalid` | `boolean` | `false` | Error state styling. |
454
+ | `disabled` | `boolean` | `false` | Interaction state. |
459
455
 
460
456
  </details>
461
457
 
@@ -464,12 +460,7 @@ ZORA props:
464
460
  Centered overlay shell with optional header, body, footer, and width preset.
465
461
 
466
462
  ```tsx
467
- <Modal
468
- footer={<Button>Done</Button>}
469
- onDismiss={close}
470
- title="Details"
471
- visible={visible}
472
- />
463
+ <Modal footer={<Button>Done</Button>} onDismiss={close} title="Details" visible={visible} />
473
464
  ```
474
465
 
475
466
  <details>
@@ -477,13 +468,13 @@ Centered overlay shell with optional header, body, footer, and width preset.
477
468
 
478
469
  ZORA props:
479
470
 
480
- | Prop | Type | Default | Notes |
481
- | --- | --- | --- | --- |
482
- | `children` | `React.ReactNode` | - | Modal body. |
483
- | `title` | `React.ReactNode` | - | Header title. |
484
- | `description` | `React.ReactNode` | - | Header description. |
485
- | `footer` | `React.ReactNode` | - | Footer area. |
486
- | `width` | `ZoraContentWidth` | `'default'` | Resolves to `420`, `520`, or `560` pixels. |
471
+ | Prop | Type | Default | Notes |
472
+ | ------------- | ------------------ | ----------- | ------------------------------------------ |
473
+ | `children` | `React.ReactNode` | - | Modal body. |
474
+ | `title` | `React.ReactNode` | - | Header title. |
475
+ | `description` | `React.ReactNode` | - | Header description. |
476
+ | `footer` | `React.ReactNode` | - | Footer area. |
477
+ | `width` | `ZoraContentWidth` | `'default'` | Resolves to `420`, `520`, or `560` pixels. |
487
478
 
488
479
  Inherited props:
489
480
 
@@ -507,12 +498,12 @@ Side overlay shell with optional header, body, and footer.
507
498
 
508
499
  ZORA props:
509
500
 
510
- | Prop | Type | Default | Notes |
511
- | --- | --- | --- | --- |
512
- | `children` | `React.ReactNode` | - | Drawer body. |
513
- | `title` | `React.ReactNode` | - | Header title. |
514
- | `description` | `React.ReactNode` | - | Header description. |
515
- | `footer` | `React.ReactNode` | - | Footer area. |
501
+ | Prop | Type | Default | Notes |
502
+ | ------------- | ----------------- | ------- | ------------------- |
503
+ | `children` | `React.ReactNode` | - | Drawer body. |
504
+ | `title` | `React.ReactNode` | - | Header title. |
505
+ | `description` | `React.ReactNode` | - | Header description. |
506
+ | `footer` | `React.ReactNode` | - | Footer area. |
516
507
 
517
508
  Inherited props:
518
509
 
@@ -533,10 +524,7 @@ Use it as the outer layout inside `ZoraProvider`. Combine it with layout
533
524
  primitives like `SidebarLayout` or `Page` to structure inner content.
534
525
 
535
526
  ```tsx
536
- <AppShell
537
- header={<Toolbar position="inline">{actions}</Toolbar>}
538
- footer={<BottomBar />}
539
- >
527
+ <AppShell header={<Toolbar position="inline">{actions}</Toolbar>} footer={<BottomBar />}>
540
528
  <Page header={<PageHeader title="Dashboard" />}>{content}</Page>
541
529
  </AppShell>
542
530
  ```
@@ -544,10 +532,7 @@ primitives like `SidebarLayout` or `Page` to structure inner content.
544
532
  Example with overlay (e.g. mobile panel or drawer):
545
533
 
546
534
  ```tsx
547
- <AppShell
548
- footer={<BottomBar />}
549
- overlay={isOpen ? <MyDrawer onClose={close} /> : null}
550
- >
535
+ <AppShell footer={<BottomBar />} overlay={isOpen ? <MyDrawer onClose={close} /> : null}>
551
536
  {content}
552
537
  </AppShell>
553
538
  ```
@@ -604,13 +589,13 @@ Constrained page container with optional header and footer slots.
604
589
 
605
590
  ZORA props:
606
591
 
607
- | Prop | Type | Default | Notes |
608
- | --- | --- | --- | --- |
609
- | `children` | `React.ReactNode` | - | Page body. |
610
- | `header` | `React.ReactNode` | - | Rendered above body content. |
611
- | `footer` | `React.ReactNode` | - | Rendered below body content. |
612
- | `width` | `ZoraContentWidth` | `'default'` | Resolves to `760`, `1040`, or `1280` pixels. |
613
- | `testID` | `string` | - | Forwarded to the root Surface container. |
592
+ | Prop | Type | Default | Notes |
593
+ | ---------- | ------------------ | ----------- | -------------------------------------------- |
594
+ | `children` | `React.ReactNode` | - | Page body. |
595
+ | `header` | `React.ReactNode` | - | Rendered above body content. |
596
+ | `footer` | `React.ReactNode` | - | Rendered below body content. |
597
+ | `width` | `ZoraContentWidth` | `'default'` | Resolves to `760`, `1040`, or `1280` pixels. |
598
+ | `testID` | `string` | - | Forwarded to the root Surface container. |
614
599
 
615
600
  Inherited props:
616
601
 
@@ -631,14 +616,14 @@ Top-level page heading with optional eyebrow, metadata, and actions.
631
616
 
632
617
  ZORA props:
633
618
 
634
- | Prop | Type | Default | Notes |
635
- | --- | --- | --- | --- |
636
- | `title` | `React.ReactNode` | - | Required page title. |
637
- | `description` | `React.ReactNode` | - | Supporting copy below title. |
638
- | `eyebrow` | `React.ReactNode` | - | Small muted text above title. |
639
- | `actions` | `React.ReactNode` | - | Action area opposite the heading. |
640
- | `meta` | `React.ReactNode` | - | Extra content below description. |
641
- | `testID` | `string` | - | Forwarded to the root Surface stack. |
619
+ | Prop | Type | Default | Notes |
620
+ | ------------- | ----------------- | ------- | ------------------------------------ |
621
+ | `title` | `React.ReactNode` | - | Required page title. |
622
+ | `description` | `React.ReactNode` | - | Supporting copy below title. |
623
+ | `eyebrow` | `React.ReactNode` | - | Small muted text above title. |
624
+ | `actions` | `React.ReactNode` | - | Action area opposite the heading. |
625
+ | `meta` | `React.ReactNode` | - | Extra content below description. |
626
+ | `testID` | `string` | - | Forwarded to the root Surface stack. |
642
627
 
643
628
  Inherited props:
644
629
 
@@ -661,13 +646,13 @@ Section wrapper that optionally renders a `SectionHeader`.
661
646
 
662
647
  ZORA props:
663
648
 
664
- | Prop | Type | Default | Notes |
665
- | --- | --- | --- | --- |
666
- | `title` | `React.ReactNode` | - | Section title; when absent, no header is rendered. |
667
- | `description` | `React.ReactNode` | - | Passed to the section header. |
668
- | `actions` | `React.ReactNode` | - | Passed to the section header. |
669
- | `children` | `React.ReactNode` | - | Section body. |
670
- | `testID` | `string` | - | Forwarded to the root Surface stack. |
649
+ | Prop | Type | Default | Notes |
650
+ | ------------- | ----------------- | ------- | -------------------------------------------------- |
651
+ | `title` | `React.ReactNode` | - | Section title; when absent, no header is rendered. |
652
+ | `description` | `React.ReactNode` | - | Passed to the section header. |
653
+ | `actions` | `React.ReactNode` | - | Passed to the section header. |
654
+ | `children` | `React.ReactNode` | - | Section body. |
655
+ | `testID` | `string` | - | Forwarded to the root Surface stack. |
671
656
 
672
657
  Inherited props:
673
658
 
@@ -690,14 +675,14 @@ Responsive shell with required sidebar, main content, and optional aside.
690
675
 
691
676
  ZORA props:
692
677
 
693
- | Prop | Type | Default | Notes |
694
- | --- | --- | --- | --- |
695
- | `sidebar` | `React.ReactNode` | - | Required left column content. |
696
- | `children` | `React.ReactNode` | - | Main content. |
697
- | `aside` | `React.ReactNode` | - | Optional right column content. |
698
- | `sidebarWidth` | `number` | `280` | Desktop sidebar width. |
699
- | `asideWidth` | `number` | `280` | Desktop aside width. |
700
- | `testID` | `string` | - | Forwarded to the root Surface stack. |
678
+ | Prop | Type | Default | Notes |
679
+ | -------------- | ----------------- | ------- | ------------------------------------ |
680
+ | `sidebar` | `React.ReactNode` | - | Required left column content. |
681
+ | `children` | `React.ReactNode` | - | Main content. |
682
+ | `aside` | `React.ReactNode` | - | Optional right column content. |
683
+ | `sidebarWidth` | `number` | `280` | Desktop sidebar width. |
684
+ | `asideWidth` | `number` | `280` | Desktop aside width. |
685
+ | `testID` | `string` | - | Forwarded to the root Surface stack. |
701
686
 
702
687
  Inherited props:
703
688
 
@@ -720,12 +705,12 @@ Top navigation shell with optional sidebar composition.
720
705
 
721
706
  ZORA props:
722
707
 
723
- | Prop | Type | Default | Notes |
724
- | --- | --- | --- | --- |
725
- | `topbar` | `React.ReactNode` | - | Required topbar content. |
726
- | `children` | `React.ReactNode` | - | Main content. |
727
- | `sidebar` | `React.ReactNode` | - | Optional sidebar; when present, content is rendered through `SidebarLayout`. |
728
- | `testID` | `string` | - | Forwarded to the root Surface stack. |
708
+ | Prop | Type | Default | Notes |
709
+ | ---------- | ----------------- | ------- | ---------------------------------------------------------------------------- |
710
+ | `topbar` | `React.ReactNode` | - | Required topbar content. |
711
+ | `children` | `React.ReactNode` | - | Main content. |
712
+ | `sidebar` | `React.ReactNode` | - | Optional sidebar; when present, content is rendered through `SidebarLayout`. |
713
+ | `testID` | `string` | - | Forwarded to the root Surface stack. |
729
714
 
730
715
  Inherited props:
731
716
 
@@ -748,14 +733,14 @@ Reusable settings shell with page header, sidebar, and content region.
748
733
 
749
734
  ZORA props:
750
735
 
751
- | Prop | Type | Default | Notes |
752
- | --- | --- | --- | --- |
753
- | `title` | `React.ReactNode` | - | Optional page title; when absent, no page header is rendered. |
754
- | `description` | `React.ReactNode` | - | Header description. |
755
- | `sidebar` | `React.ReactNode` | - | Required settings navigation or context sidebar. |
756
- | `children` | `React.ReactNode` | - | Settings content. |
757
- | `actions` | `React.ReactNode` | - | Header action area. |
758
- | `testID` | `string` | - | Forwarded to `Page`. |
736
+ | Prop | Type | Default | Notes |
737
+ | ------------- | ----------------- | ------- | ------------------------------------------------------------- |
738
+ | `title` | `React.ReactNode` | - | Optional page title; when absent, no page header is rendered. |
739
+ | `description` | `React.ReactNode` | - | Header description. |
740
+ | `sidebar` | `React.ReactNode` | - | Required settings navigation or context sidebar. |
741
+ | `children` | `React.ReactNode` | - | Settings content. |
742
+ | `actions` | `React.ReactNode` | - | Header action area. |
743
+ | `testID` | `string` | - | Forwarded to `Page`. |
759
744
 
760
745
  Inherited props:
761
746
 
@@ -779,14 +764,14 @@ screens.
779
764
 
780
765
  ZORA props:
781
766
 
782
- | Prop | Type | Default | Notes |
783
- | --- | --- | --- | --- |
784
- | `title` | `React.ReactNode` | - | Card title. |
785
- | `description` | `React.ReactNode` | - | Card description. |
786
- | `eyebrow` | `React.ReactNode` | - | Card eyebrow. |
787
- | `children` | `React.ReactNode` | - | Form or auth content. |
788
- | `footer` | `React.ReactNode` | - | Card footer. |
789
- | `testID` | `string` | - | Forwarded to the root Surface center. |
767
+ | Prop | Type | Default | Notes |
768
+ | ------------- | ----------------- | ------- | ------------------------------------- |
769
+ | `title` | `React.ReactNode` | - | Card title. |
770
+ | `description` | `React.ReactNode` | - | Card description. |
771
+ | `eyebrow` | `React.ReactNode` | - | Card eyebrow. |
772
+ | `children` | `React.ReactNode` | - | Form or auth content. |
773
+ | `footer` | `React.ReactNode` | - | Card footer. |
774
+ | `testID` | `string` | - | Forwarded to the root Surface center. |
790
775
 
791
776
  Inherited props:
792
777
 
@@ -812,11 +797,11 @@ Surface field state.
812
797
 
813
798
  ZORA props:
814
799
 
815
- | Prop | Type | Default | Notes |
816
- | --- | --- | --- | --- |
817
- | `label` | `React.ReactNode` | - | Required field label. |
818
- | `description` | `React.ReactNode` | - | Rendered under the label. |
819
- | `helperText` | `React.ReactNode` | - | Passed to Surface `Field` as `helperText`. |
800
+ | Prop | Type | Default | Notes |
801
+ | ------------- | ----------------- | ------- | ------------------------------------------ |
802
+ | `label` | `React.ReactNode` | - | Required field label. |
803
+ | `description` | `React.ReactNode` | - | Rendered under the label. |
804
+ | `helperText` | `React.ReactNode` | - | Passed to Surface `Field` as `helperText`. |
820
805
 
821
806
  Inherited props:
822
807
 
@@ -838,14 +823,14 @@ Semantic notice surface with badge eyebrow, optional body, and actions.
838
823
 
839
824
  ZORA props:
840
825
 
841
- | Prop | Type | Default | Notes |
842
- | --- | --- | --- | --- |
843
- | `title` | `React.ReactNode` | - | Required notice title. |
844
- | `description` | `React.ReactNode` | - | Notice description. |
845
- | `children` | `React.ReactNode` | - | Optional body content. |
846
- | `actions` | `React.ReactNode` | - | Optional action area. |
847
- | `tone` | `ZoraTone` | `'primary'` | Drives the badge eyebrow tone. |
848
- | `testID` | `string` | - | Forwarded to the underlying `Card`. |
826
+ | Prop | Type | Default | Notes |
827
+ | ------------- | ----------------- | ----------- | ----------------------------------- |
828
+ | `title` | `React.ReactNode` | - | Required notice title. |
829
+ | `description` | `React.ReactNode` | - | Notice description. |
830
+ | `children` | `React.ReactNode` | - | Optional body content. |
831
+ | `actions` | `React.ReactNode` | - | Optional action area. |
832
+ | `tone` | `ZoraTone` | `'primary'` | Drives the badge eyebrow tone. |
833
+ | `testID` | `string` | - | Forwarded to the underlying `Card`. |
849
834
 
850
835
  Inherited props:
851
836
 
@@ -868,17 +853,17 @@ Named composition surface that currently forwards to `Card`.
868
853
 
869
854
  ZORA props:
870
855
 
871
- | Prop | Type | Default | Notes |
872
- | --- | --- | --- | --- |
873
- | `title` | `React.ReactNode` | - | Header title. |
874
- | `description` | `React.ReactNode` | - | Header description. |
875
- | `eyebrow` | `React.ReactNode` | - | Small muted text above the title. |
876
- | `actions` | `React.ReactNode` | - | Header action area. |
877
- | `footer` | `React.ReactNode` | - | Footer area below body content. |
878
- | `children` | `React.ReactNode` | - | Panel body. |
879
- | `tone` | `ZoraCardTone` | `'default'` | Same tone behavior as `Card`. |
880
- | `compact` | `boolean` | `false` | Same compact behavior as `Card`. |
881
- | `testID` | `string` | - | Forwarded through `Card`. |
856
+ | Prop | Type | Default | Notes |
857
+ | ------------- | ----------------- | ----------- | --------------------------------- |
858
+ | `title` | `React.ReactNode` | - | Header title. |
859
+ | `description` | `React.ReactNode` | - | Header description. |
860
+ | `eyebrow` | `React.ReactNode` | - | Small muted text above the title. |
861
+ | `actions` | `React.ReactNode` | - | Header action area. |
862
+ | `footer` | `React.ReactNode` | - | Footer area below body content. |
863
+ | `children` | `React.ReactNode` | - | Panel body. |
864
+ | `tone` | `ZoraCardTone` | `'default'` | Same tone behavior as `Card`. |
865
+ | `compact` | `boolean` | `false` | Same compact behavior as `Card`. |
866
+ | `testID` | `string` | - | Forwarded through `Card`. |
882
867
 
883
868
  Inherited props:
884
869
 
@@ -899,13 +884,13 @@ Reusable section heading with optional eyebrow, description, and actions.
899
884
 
900
885
  ZORA props:
901
886
 
902
- | Prop | Type | Default | Notes |
903
- | --- | --- | --- | --- |
904
- | `title` | `React.ReactNode` | - | Required heading title. |
905
- | `description` | `React.ReactNode` | - | Supporting copy. |
906
- | `eyebrow` | `React.ReactNode` | - | Small muted text above the title. |
907
- | `actions` | `React.ReactNode` | - | Action area opposite the heading. |
908
- | `testID` | `string` | - | Forwarded to the root Surface stack. |
887
+ | Prop | Type | Default | Notes |
888
+ | ------------- | ----------------- | ------- | ------------------------------------ |
889
+ | `title` | `React.ReactNode` | - | Required heading title. |
890
+ | `description` | `React.ReactNode` | - | Supporting copy. |
891
+ | `eyebrow` | `React.ReactNode` | - | Small muted text above the title. |
892
+ | `actions` | `React.ReactNode` | - | Action area opposite the heading. |
893
+ | `testID` | `string` | - | Forwarded to the root Surface stack. |
909
894
 
910
895
  Inherited props:
911
896
 
@@ -926,15 +911,15 @@ Compact settings row with optional metadata, control, and press handling.
926
911
 
927
912
  ZORA props:
928
913
 
929
- | Prop | Type | Default | Notes |
930
- | --- | --- | --- | --- |
931
- | `title` | `React.ReactNode` | - | Required row title. |
932
- | `description` | `React.ReactNode` | - | Row description. |
933
- | `meta` | `React.ReactNode` | - | Small muted metadata below the row content. |
934
- | `control` | `React.ReactNode` | - | Trailing control or action content. |
935
- | `onPress` | `() => void` | - | Makes the underlying card pressable. |
936
- | `disabled` | `boolean` | `false` | Forwarded to the underlying card. |
937
- | `testID` | `string` | - | Forwarded to the underlying card. |
914
+ | Prop | Type | Default | Notes |
915
+ | ------------- | ----------------- | ------- | ------------------------------------------- |
916
+ | `title` | `React.ReactNode` | - | Required row title. |
917
+ | `description` | `React.ReactNode` | - | Row description. |
918
+ | `meta` | `React.ReactNode` | - | Small muted metadata below the row content. |
919
+ | `control` | `React.ReactNode` | - | Trailing control or action content. |
920
+ | `onPress` | `() => void` | - | Makes the underlying card pressable. |
921
+ | `disabled` | `boolean` | `false` | Forwarded to the underlying card. |
922
+ | `testID` | `string` | - | Forwarded to the underlying card. |
938
923
 
939
924
  Inherited props:
940
925
 
@@ -958,24 +943,24 @@ No-data surface with title, optional supporting text, actions, and footer.
958
943
 
959
944
  ZORA props:
960
945
 
961
- | Prop | Type | Default | Notes |
962
- | --- | --- | --- | --- |
963
- | `title` | `React.ReactNode` | - | Required empty-state title. |
964
- | `description` | `React.ReactNode` | - | Supporting copy. |
965
- | `eyebrow` | `React.ReactNode` | - | Card eyebrow. |
966
- | `primaryAction` | `EmptyStateAction` | - | Primary action button. |
967
- | `secondaryAction` | `EmptyStateAction` | - | Secondary action button; defaults to `tone="neutral"` and `emphasis="soft"` when omitted on the action. |
968
- | `footer` | `React.ReactNode` | - | Footer content below actions. |
969
- | `testID` | `string` | - | Forwarded to the underlying card. |
946
+ | Prop | Type | Default | Notes |
947
+ | ----------------- | ------------------ | ------- | ------------------------------------------------------------------------------------------------------- |
948
+ | `title` | `React.ReactNode` | - | Required empty-state title. |
949
+ | `description` | `React.ReactNode` | - | Supporting copy. |
950
+ | `eyebrow` | `React.ReactNode` | - | Card eyebrow. |
951
+ | `primaryAction` | `EmptyStateAction` | - | Primary action button. |
952
+ | `secondaryAction` | `EmptyStateAction` | - | Secondary action button; defaults to `tone="neutral"` and `emphasis="soft"` when omitted on the action. |
953
+ | `footer` | `React.ReactNode` | - | Footer content below actions. |
954
+ | `testID` | `string` | - | Forwarded to the underlying card. |
970
955
 
971
956
  `EmptyStateAction`:
972
957
 
973
- | Prop | Type | Default | Notes |
974
- | --- | --- | --- | --- |
975
- | `label` | `React.ReactNode` | - | Button label. |
976
- | `onPress` | `() => void` | - | Button handler. |
977
- | `tone` | `ZoraTone` | - | Button tone. |
978
- | `emphasis` | `ZoraEmphasis` | - | Button emphasis. |
958
+ | Prop | Type | Default | Notes |
959
+ | ---------- | ----------------- | ------- | ---------------- |
960
+ | `label` | `React.ReactNode` | - | Button label. |
961
+ | `onPress` | `() => void` | - | Button handler. |
962
+ | `tone` | `ZoraTone` | - | Button tone. |
963
+ | `emphasis` | `ZoraEmphasis` | - | Button emphasis. |
979
964
 
980
965
  Inherited props:
981
966
 
@@ -1004,21 +989,21 @@ Narrow confirmation modal for destructive or high-signal decisions.
1004
989
 
1005
990
  ZORA props:
1006
991
 
1007
- | Prop | Type | Default | Notes |
1008
- | --- | --- | --- | --- |
1009
- | `visible` | `boolean` | - | Required modal visibility. |
1010
- | `title` | `React.ReactNode` | - | Required dialog title. |
1011
- | `description` | `React.ReactNode` | - | Dialog description. |
1012
- | `children` | `React.ReactNode` | - | Dialog body. |
1013
- | `confirmLabel` | `React.ReactNode` | `'Confirm'` | Confirm button label. |
1014
- | `cancelLabel` | `React.ReactNode` | `'Cancel'` | Cancel button label. |
1015
- | `confirmTone` | `ZoraTone` | `'danger'` | Confirm button tone. |
1016
- | `confirmEmphasis` | `ZoraEmphasis` | `'solid'` | Confirm button emphasis. |
1017
- | `busy` | `boolean` | `false` | Passed to the confirm button as `loading`. |
1018
- | `closeOnBackdrop` | `boolean` | `true` | Passed to the underlying modal. |
1019
- | `onConfirm` | `() => void` | - | Confirm button handler. |
1020
- | `onCancel` | `() => void` | - | Cancel button and modal dismiss handler. |
1021
- | `testID` | `string` | - | Forwarded to the underlying modal. |
992
+ | Prop | Type | Default | Notes |
993
+ | ----------------- | ----------------- | ----------- | ------------------------------------------ |
994
+ | `visible` | `boolean` | - | Required modal visibility. |
995
+ | `title` | `React.ReactNode` | - | Required dialog title. |
996
+ | `description` | `React.ReactNode` | - | Dialog description. |
997
+ | `children` | `React.ReactNode` | - | Dialog body. |
998
+ | `confirmLabel` | `React.ReactNode` | `'Confirm'` | Confirm button label. |
999
+ | `cancelLabel` | `React.ReactNode` | `'Cancel'` | Cancel button label. |
1000
+ | `confirmTone` | `ZoraTone` | `'danger'` | Confirm button tone. |
1001
+ | `confirmEmphasis` | `ZoraEmphasis` | `'solid'` | Confirm button emphasis. |
1002
+ | `busy` | `boolean` | `false` | Passed to the confirm button as `loading`. |
1003
+ | `closeOnBackdrop` | `boolean` | `true` | Passed to the underlying modal. |
1004
+ | `onConfirm` | `() => void` | - | Confirm button handler. |
1005
+ | `onCancel` | `() => void` | - | Cancel button and modal dismiss handler. |
1006
+ | `testID` | `string` | - | Forwarded to the underlying modal. |
1022
1007
 
1023
1008
  Confirm dialogs always use `Modal` with `width="narrow"`.
1024
1009
 
@@ -1033,9 +1018,7 @@ No inherited props. `ConfirmDialogProps` is declared directly by ZORA.
1033
1018
  Collapsible section for property groups and settings.
1034
1019
 
1035
1020
  ```tsx
1036
- <DisclosureSection title="Advanced Settings">
1037
- {content}
1038
- </DisclosureSection>
1021
+ <DisclosureSection title="Advanced Settings">{content}</DisclosureSection>
1039
1022
  ```
1040
1023
 
1041
1024
  <details>
@@ -1043,14 +1026,14 @@ Collapsible section for property groups and settings.
1043
1026
 
1044
1027
  ZORA props:
1045
1028
 
1046
- | Prop | Type | Default | Notes |
1047
- | --- | --- | --- | --- |
1048
- | `title` | `React.ReactNode` | - | Section title. |
1049
- | `description` | `React.ReactNode` | - | Subheading text. |
1050
- | `defaultOpen` | `boolean` | `true` | Initial state. |
1051
- | `open` | `boolean` | - | Controlled state. |
1052
- | `onOpenChange` | `(open: boolean) => void` | - | Toggle handler. |
1053
- | `actions` | `React.ReactNode` | - | Extra header actions. |
1029
+ | Prop | Type | Default | Notes |
1030
+ | -------------- | ------------------------- | ------- | --------------------- |
1031
+ | `title` | `React.ReactNode` | - | Section title. |
1032
+ | `description` | `React.ReactNode` | - | Subheading text. |
1033
+ | `defaultOpen` | `boolean` | `true` | Initial state. |
1034
+ | `open` | `boolean` | - | Controlled state. |
1035
+ | `onOpenChange` | `(open: boolean) => void` | - | Toggle handler. |
1036
+ | `actions` | `React.ReactNode` | - | Extra header actions. |
1054
1037
 
1055
1038
  </details>
1056
1039
 
@@ -1069,13 +1052,13 @@ Side panel that adapts to screen size (inline or overlay).
1069
1052
 
1070
1053
  ZORA props:
1071
1054
 
1072
- | Prop | Type | Default | Notes |
1073
- | --- | --- | --- | --- |
1074
- | `open` | `boolean` | - | Required visibility. |
1075
- | `onOpenChange` | `(open: boolean) => void` | - | Required change handler. |
1076
- | `side` | `'left' \| 'right'` | `'right'` | Layout side. |
1077
- | `desktopMode` | `'inline' \| 'floating'` | `'inline'` | Desktop rendering style. |
1078
- | `mobileMode` | `'drawer' \| 'modal'` | `'drawer'` | Mobile rendering style. |
1055
+ | Prop | Type | Default | Notes |
1056
+ | -------------- | ------------------------- | ---------- | ------------------------ |
1057
+ | `open` | `boolean` | - | Required visibility. |
1058
+ | `onOpenChange` | `(open: boolean) => void` | - | Required change handler. |
1059
+ | `side` | `'left' \| 'right'` | `'right'` | Layout side. |
1060
+ | `desktopMode` | `'inline' \| 'floating'` | `'inline'` | Desktop rendering style. |
1061
+ | `mobileMode` | `'drawer' \| 'modal'` | `'drawer'` | Mobile rendering style. |
1079
1062
 
1080
1063
  </details>
1081
1064
 
@@ -1084,7 +1067,10 @@ ZORA props:
1084
1067
  Dense form field optimized for property panels.
1085
1068
 
1086
1069
  ```tsx
1087
- <InspectorField control={<IconButton icon={{ name: 'refresh-outline' }} label="Reset" />} label="Opacity">
1070
+ <InspectorField
1071
+ control={<IconButton icon={{ name: 'refresh-outline' }} label="Reset" />}
1072
+ label="Opacity"
1073
+ >
1088
1074
  <Input value="100%" />
1089
1075
  </InspectorField>
1090
1076
  ```
@@ -1094,11 +1080,11 @@ Dense form field optimized for property panels.
1094
1080
 
1095
1081
  ZORA props:
1096
1082
 
1097
- | Prop | Type | Default | Notes |
1098
- | --- | --- | --- | --- |
1099
- | `label` | `React.ReactNode` | - | Field label. |
1100
- | `control` | `React.ReactNode` | - | Trailing control slot. |
1101
- | `children` | `React.ReactNode` | - | Main editor content. |
1083
+ | Prop | Type | Default | Notes |
1084
+ | ---------- | ----------------- | ------- | ---------------------- |
1085
+ | `label` | `React.ReactNode` | - | Field label. |
1086
+ | `control` | `React.ReactNode` | - | Trailing control slot. |
1087
+ | `children` | `React.ReactNode` | - | Main editor content. |
1102
1088
 
1103
1089
  Inherits all `FormField` props.
1104
1090
 
@@ -1117,12 +1103,12 @@ Labeled boolean toggle row.
1117
1103
 
1118
1104
  ZORA props:
1119
1105
 
1120
- | Prop | Type | Default | Notes |
1121
- | --- | --- | --- | --- |
1122
- | `label` | `React.ReactNode` | - | Required label. |
1123
- | `description` | `React.ReactNode` | - | Subheading text. |
1124
- | `value` | `boolean` | - | Required state. |
1125
- | `onValueChange` | `(value: boolean) => void` | - | Required handler. |
1106
+ | Prop | Type | Default | Notes |
1107
+ | --------------- | -------------------------- | ------- | ----------------- |
1108
+ | `label` | `React.ReactNode` | - | Required label. |
1109
+ | `description` | `React.ReactNode` | - | Subheading text. |
1110
+ | `value` | `boolean` | - | Required state. |
1111
+ | `onValueChange` | `(value: boolean) => void` | - | Required handler. |
1126
1112
 
1127
1113
  </details>
1128
1114
 
@@ -1132,10 +1118,8 @@ Hierarchical list for navigation and layers.
1132
1118
 
1133
1119
  ```tsx
1134
1120
  <TreeView
1135
- nodes={[
1136
- { id: '1', label: 'Folder', children: [{ id: '2', label: 'File' }] }
1137
- ]}
1138
- onSelect={id => console.log(id)}
1121
+ nodes={[{ id: '1', label: 'Folder', children: [{ id: '2', label: 'File' }] }]}
1122
+ onSelect={(id) => console.log(id)}
1139
1123
  />
1140
1124
  ```
1141
1125
 
@@ -1144,12 +1128,12 @@ Hierarchical list for navigation and layers.
1144
1128
 
1145
1129
  ZORA props:
1146
1130
 
1147
- | Prop | Type | Default | Notes |
1148
- | --- | --- | --- | --- |
1149
- | `nodes` | `TreeItemNode[]` | - | Required tree data. |
1150
- | `selectedId` | `string` | - | Active node. |
1151
- | `expandedIds` | `string[]` | - | Controlled expansion. |
1152
- | `onSelect` | `(id: string) => void` | - | Click handler. |
1131
+ | Prop | Type | Default | Notes |
1132
+ | ------------- | ---------------------- | ------- | --------------------- |
1133
+ | `nodes` | `TreeItemNode[]` | - | Required tree data. |
1134
+ | `selectedId` | `string` | - | Active node. |
1135
+ | `expandedIds` | `string[]` | - | Controlled expansion. |
1136
+ | `onSelect` | `(id: string) => void` | - | Click handler. |
1153
1137
 
1154
1138
  </details>
1155
1139
 
@@ -1169,17 +1153,17 @@ Grid-based selection for palettes and toolboxes.
1169
1153
 
1170
1154
  `TileGrid` props:
1171
1155
 
1172
- | Prop | Type | Default | Notes |
1173
- | --- | --- | --- | --- |
1156
+ | Prop | Type | Default | Notes |
1157
+ | --------- | ------------------------ | -------------- | ------------ |
1174
1158
  | `columns` | `number \| 'responsive'` | `'responsive'` | Grid layout. |
1175
1159
 
1176
1160
  `PaletteItem` props:
1177
1161
 
1178
- | Prop | Type | Default | Notes |
1179
- | --- | --- | --- | --- |
1180
- | `title` | `React.ReactNode` | - | Item title. |
1181
- | `selected` | `boolean` | `false` | Highlighted state. |
1182
- | `onPress` | `() => void` | - | Click handler. |
1162
+ | Prop | Type | Default | Notes |
1163
+ | ---------- | ----------------- | ------- | ------------------ |
1164
+ | `title` | `React.ReactNode` | - | Item title. |
1165
+ | `selected` | `boolean` | `false` | Highlighted state. |
1166
+ | `onPress` | `() => void` | - | Click handler. |
1183
1167
 
1184
1168
  </details>
1185
1169
 
@@ -1192,7 +1176,7 @@ Generic visual shell for editing ordered collections.
1192
1176
  items={items}
1193
1177
  renderItem={({ item }) => <Text>{item.name}</Text>}
1194
1178
  onAdd={() => add()}
1195
- onRemove={index => remove(index)}
1179
+ onRemove={(index) => remove(index)}
1196
1180
  />
1197
1181
  ```
1198
1182
 
@@ -1201,13 +1185,13 @@ Generic visual shell for editing ordered collections.
1201
1185
 
1202
1186
  ZORA props:
1203
1187
 
1204
- | Prop | Type | Default | Notes |
1205
- | --- | --- | --- | --- |
1206
- | `items` | `readonly T[]` | - | Required collection. |
1207
- | `renderItem` | `(props) => ReactNode` | - | Required item renderer. |
1208
- | `onAdd` | `() => void` | - | Add handler. |
1209
- | `onRemove` | `(index: number) => void` | - | Remove handler. |
1210
- | `onMove` | `(from, to) => void` | - | Reorder handler. |
1188
+ | Prop | Type | Default | Notes |
1189
+ | ------------ | ------------------------- | ------- | ----------------------- |
1190
+ | `items` | `readonly T[]` | - | Required collection. |
1191
+ | `renderItem` | `(props) => ReactNode` | - | Required item renderer. |
1192
+ | `onAdd` | `() => void` | - | Add handler. |
1193
+ | `onRemove` | `(index: number) => void` | - | Remove handler. |
1194
+ | `onMove` | `(from, to) => void` | - | Reorder handler. |
1211
1195
 
1212
1196
  </details>
1213
1197
 
@@ -1229,11 +1213,11 @@ Theme provider that creates the ZORA theme and passes it to Surface
1229
1213
 
1230
1214
  ZORA props:
1231
1215
 
1232
- | Prop | Type | Default | Notes |
1233
- | --- | --- | --- | --- |
1234
- | `children` | `React.ReactNode` | - | Required app content. |
1235
- | `initialConfig` | `ZoraThemeOverride` | - | Partial Surface `ThemeConfig` override merged into `zoraTheme`. |
1236
- | `initialMode` | `'light' \| 'dark'` | `'light'` | Initial theme mode passed to Surface. |
1216
+ | Prop | Type | Default | Notes |
1217
+ | --------------- | ------------------- | --------- | --------------------------------------------------------------- |
1218
+ | `children` | `React.ReactNode` | - | Required app content. |
1219
+ | `initialConfig` | `ZoraThemeOverride` | - | Partial Surface `ThemeConfig` override merged into `zoraTheme`. |
1220
+ | `initialMode` | `'light' \| 'dark'` | `'light'` | Initial theme mode passed to Surface. |
1237
1221
 
1238
1222
  Inherited props:
1239
1223
 
@@ -1281,12 +1265,12 @@ const zoraTheme: ThemeConfig = {
1281
1265
  light: {
1282
1266
  primaryColor: '#0f766e',
1283
1267
  harmony: 'analogous',
1284
- systemTone: 'jewel',
1268
+ systemTone: 'jewel',
1285
1269
  },
1286
1270
  dark: {
1287
1271
  primaryColor: '#2dd4bf',
1288
1272
  harmony: 'analogous',
1289
- systemTone: 'jewel',
1273
+ systemTone: 'jewel',
1290
1274
  },
1291
1275
  };
1292
1276
  ```