@ankhorage/zora 0.9.0 → 0.11.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 (516) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +80 -34
  3. package/dist/components/badge/Badge.d.ts +1 -1
  4. package/dist/components/badge/Badge.d.ts.map +1 -1
  5. package/dist/components/badge/Badge.js +3 -1
  6. package/dist/components/badge/Badge.js.map +1 -1
  7. package/dist/components/badge/types.d.ts +2 -1
  8. package/dist/components/badge/types.d.ts.map +1 -1
  9. package/dist/components/badge/types.js.map +1 -1
  10. package/dist/components/button/Button.d.ts +1 -1
  11. package/dist/components/button/Button.d.ts.map +1 -1
  12. package/dist/components/button/Button.js +3 -1
  13. package/dist/components/button/Button.js.map +1 -1
  14. package/dist/components/button/types.d.ts +2 -1
  15. package/dist/components/button/types.d.ts.map +1 -1
  16. package/dist/components/button/types.js.map +1 -1
  17. package/dist/components/card/Card.d.ts +1 -1
  18. package/dist/components/card/Card.d.ts.map +1 -1
  19. package/dist/components/card/Card.js +3 -1
  20. package/dist/components/card/Card.js.map +1 -1
  21. package/dist/components/card/types.d.ts +2 -1
  22. package/dist/components/card/types.d.ts.map +1 -1
  23. package/dist/components/card/types.js.map +1 -1
  24. package/dist/components/checkbox/Checkbox.d.ts +4 -0
  25. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  26. package/dist/components/checkbox/Checkbox.js +8 -0
  27. package/dist/components/checkbox/Checkbox.js.map +1 -0
  28. package/dist/components/checkbox/CheckboxGroup.d.ts +1 -1
  29. package/dist/components/checkbox/CheckboxGroup.d.ts.map +1 -1
  30. package/dist/components/checkbox/CheckboxGroup.js +3 -1
  31. package/dist/components/checkbox/CheckboxGroup.js.map +1 -1
  32. package/dist/components/checkbox/index.d.ts +2 -3
  33. package/dist/components/checkbox/index.d.ts.map +1 -1
  34. package/dist/components/checkbox/index.js +1 -1
  35. package/dist/components/checkbox/index.js.map +1 -1
  36. package/dist/components/checkbox/types.d.ts +5 -2
  37. package/dist/components/checkbox/types.d.ts.map +1 -1
  38. package/dist/components/checkbox/types.js.map +1 -1
  39. package/dist/components/drawer/Drawer.d.ts +1 -1
  40. package/dist/components/drawer/Drawer.d.ts.map +1 -1
  41. package/dist/components/drawer/Drawer.js +3 -1
  42. package/dist/components/drawer/Drawer.js.map +1 -1
  43. package/dist/components/drawer/types.d.ts +2 -1
  44. package/dist/components/drawer/types.d.ts.map +1 -1
  45. package/dist/components/drawer/types.js.map +1 -1
  46. package/dist/components/form/Form.d.ts +1 -1
  47. package/dist/components/form/Form.d.ts.map +1 -1
  48. package/dist/components/form/Form.js +3 -1
  49. package/dist/components/form/Form.js.map +1 -1
  50. package/dist/components/form/FormActions.d.ts +1 -1
  51. package/dist/components/form/FormActions.d.ts.map +1 -1
  52. package/dist/components/form/FormActions.js +3 -1
  53. package/dist/components/form/FormActions.js.map +1 -1
  54. package/dist/components/form/FormError.d.ts +1 -1
  55. package/dist/components/form/FormError.d.ts.map +1 -1
  56. package/dist/components/form/FormError.js +6 -3
  57. package/dist/components/form/FormError.js.map +1 -1
  58. package/dist/components/form/FormField.d.ts +1 -1
  59. package/dist/components/form/FormField.d.ts.map +1 -1
  60. package/dist/components/form/FormField.js +5 -3
  61. package/dist/components/form/FormField.js.map +1 -1
  62. package/dist/components/form/types.d.ts +6 -9
  63. package/dist/components/form/types.d.ts.map +1 -1
  64. package/dist/components/form/types.js.map +1 -1
  65. package/dist/components/heading/Heading.d.ts +1 -1
  66. package/dist/components/heading/Heading.d.ts.map +1 -1
  67. package/dist/components/heading/Heading.js +3 -1
  68. package/dist/components/heading/Heading.js.map +1 -1
  69. package/dist/components/heading/types.d.ts +2 -2
  70. package/dist/components/heading/types.d.ts.map +1 -1
  71. package/dist/components/heading/types.js.map +1 -1
  72. package/dist/components/icon/Icon.d.ts +4 -2
  73. package/dist/components/icon/Icon.d.ts.map +1 -1
  74. package/dist/components/icon/Icon.js +3 -1
  75. package/dist/components/icon/Icon.js.map +1 -1
  76. package/dist/components/icon-button/IconButton.d.ts +1 -1
  77. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  78. package/dist/components/icon-button/IconButton.js +3 -1
  79. package/dist/components/icon-button/IconButton.js.map +1 -1
  80. package/dist/components/icon-button/types.d.ts +2 -1
  81. package/dist/components/icon-button/types.d.ts.map +1 -1
  82. package/dist/components/icon-button/types.js.map +1 -1
  83. package/dist/components/input/Input.d.ts +1 -1
  84. package/dist/components/input/Input.d.ts.map +1 -1
  85. package/dist/components/input/Input.js +5 -2
  86. package/dist/components/input/Input.js.map +1 -1
  87. package/dist/components/input/types.d.ts +2 -1
  88. package/dist/components/input/types.d.ts.map +1 -1
  89. package/dist/components/input/types.js.map +1 -1
  90. package/dist/components/modal/Modal.d.ts +1 -1
  91. package/dist/components/modal/Modal.d.ts.map +1 -1
  92. package/dist/components/modal/Modal.js +3 -1
  93. package/dist/components/modal/Modal.js.map +1 -1
  94. package/dist/components/modal/types.d.ts +2 -1
  95. package/dist/components/modal/types.d.ts.map +1 -1
  96. package/dist/components/modal/types.js.map +1 -1
  97. package/dist/components/radio/Radio.d.ts +4 -0
  98. package/dist/components/radio/Radio.d.ts.map +1 -0
  99. package/dist/components/radio/Radio.js +8 -0
  100. package/dist/components/radio/Radio.js.map +1 -0
  101. package/dist/components/radio/RadioGroup.d.ts +1 -1
  102. package/dist/components/radio/RadioGroup.d.ts.map +1 -1
  103. package/dist/components/radio/RadioGroup.js +3 -1
  104. package/dist/components/radio/RadioGroup.js.map +1 -1
  105. package/dist/components/radio/index.d.ts +2 -3
  106. package/dist/components/radio/index.d.ts.map +1 -1
  107. package/dist/components/radio/index.js +1 -1
  108. package/dist/components/radio/index.js.map +1 -1
  109. package/dist/components/radio/types.d.ts +5 -2
  110. package/dist/components/radio/types.d.ts.map +1 -1
  111. package/dist/components/radio/types.js.map +1 -1
  112. package/dist/components/select/Select.d.ts +1 -1
  113. package/dist/components/select/Select.d.ts.map +1 -1
  114. package/dist/components/select/Select.js +6 -3
  115. package/dist/components/select/Select.js.map +1 -1
  116. package/dist/components/select/types.d.ts +2 -2
  117. package/dist/components/select/types.d.ts.map +1 -1
  118. package/dist/components/select/types.js.map +1 -1
  119. package/dist/components/tabs/Tabs.d.ts +1 -1
  120. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  121. package/dist/components/tabs/Tabs.js +6 -3
  122. package/dist/components/tabs/Tabs.js.map +1 -1
  123. package/dist/components/tabs/types.d.ts +2 -2
  124. package/dist/components/tabs/types.d.ts.map +1 -1
  125. package/dist/components/tabs/types.js.map +1 -1
  126. package/dist/components/text/Text.d.ts +1 -1
  127. package/dist/components/text/Text.d.ts.map +1 -1
  128. package/dist/components/text/Text.js +3 -1
  129. package/dist/components/text/Text.js.map +1 -1
  130. package/dist/components/text/types.d.ts +2 -2
  131. package/dist/components/text/types.d.ts.map +1 -1
  132. package/dist/components/text/types.js.map +1 -1
  133. package/dist/components/textarea/Textarea.d.ts +1 -1
  134. package/dist/components/textarea/Textarea.d.ts.map +1 -1
  135. package/dist/components/textarea/Textarea.js +5 -2
  136. package/dist/components/textarea/Textarea.js.map +1 -1
  137. package/dist/components/textarea/types.d.ts +2 -1
  138. package/dist/components/textarea/types.d.ts.map +1 -1
  139. package/dist/components/textarea/types.js.map +1 -1
  140. package/dist/components/toolbar/Toolbar.d.ts +1 -1
  141. package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
  142. package/dist/components/toolbar/Toolbar.js +3 -1
  143. package/dist/components/toolbar/Toolbar.js.map +1 -1
  144. package/dist/components/toolbar/ToolbarAction.d.ts +1 -1
  145. package/dist/components/toolbar/ToolbarAction.d.ts.map +1 -1
  146. package/dist/components/toolbar/ToolbarAction.js +3 -1
  147. package/dist/components/toolbar/ToolbarAction.js.map +1 -1
  148. package/dist/components/toolbar/types.d.ts +3 -4
  149. package/dist/components/toolbar/types.d.ts.map +1 -1
  150. package/dist/components/toolbar/types.js.map +1 -1
  151. package/dist/foundation/Box.d.ts +7 -0
  152. package/dist/foundation/Box.d.ts.map +1 -0
  153. package/dist/foundation/Box.js +8 -0
  154. package/dist/foundation/Box.js.map +1 -0
  155. package/dist/foundation/Center.d.ts +7 -0
  156. package/dist/foundation/Center.d.ts.map +1 -0
  157. package/dist/foundation/Center.js +8 -0
  158. package/dist/foundation/Center.js.map +1 -0
  159. package/dist/foundation/Container.d.ts +7 -0
  160. package/dist/foundation/Container.d.ts.map +1 -0
  161. package/dist/foundation/Container.js +8 -0
  162. package/dist/foundation/Container.js.map +1 -0
  163. package/dist/foundation/Divider.d.ts +7 -0
  164. package/dist/foundation/Divider.d.ts.map +1 -0
  165. package/dist/foundation/Divider.js +8 -0
  166. package/dist/foundation/Divider.js.map +1 -0
  167. package/dist/foundation/Grid.d.ts +7 -0
  168. package/dist/foundation/Grid.d.ts.map +1 -0
  169. package/dist/foundation/Grid.js +8 -0
  170. package/dist/foundation/Grid.js.map +1 -0
  171. package/dist/foundation/Inline.d.ts +7 -0
  172. package/dist/foundation/Inline.d.ts.map +1 -0
  173. package/dist/foundation/Inline.js +8 -0
  174. package/dist/foundation/Inline.js.map +1 -0
  175. package/dist/foundation/Show.d.ts +7 -0
  176. package/dist/foundation/Show.d.ts.map +1 -0
  177. package/dist/foundation/Show.js +8 -0
  178. package/dist/foundation/Show.js.map +1 -0
  179. package/dist/foundation/Spacer.d.ts +7 -0
  180. package/dist/foundation/Spacer.d.ts.map +1 -0
  181. package/dist/foundation/Spacer.js +8 -0
  182. package/dist/foundation/Spacer.js.map +1 -0
  183. package/dist/foundation/Stack.d.ts +7 -0
  184. package/dist/foundation/Stack.d.ts.map +1 -0
  185. package/dist/foundation/Stack.js +8 -0
  186. package/dist/foundation/Stack.js.map +1 -0
  187. package/dist/foundation/Surface.d.ts +8 -0
  188. package/dist/foundation/Surface.d.ts.map +1 -0
  189. package/dist/foundation/Surface.js +8 -0
  190. package/dist/foundation/Surface.js.map +1 -0
  191. package/dist/foundation/index.d.ts +20 -2
  192. package/dist/foundation/index.d.ts.map +1 -1
  193. package/dist/foundation/index.js +10 -1
  194. package/dist/foundation/index.js.map +1 -1
  195. package/dist/layout/app-shell/AppShell.d.ts +1 -1
  196. package/dist/layout/app-shell/AppShell.d.ts.map +1 -1
  197. package/dist/layout/app-shell/AppShell.js +3 -1
  198. package/dist/layout/app-shell/AppShell.js.map +1 -1
  199. package/dist/layout/app-shell/types.d.ts +2 -2
  200. package/dist/layout/app-shell/types.d.ts.map +1 -1
  201. package/dist/layout/app-shell/types.js.map +1 -1
  202. package/dist/layout/auth-layout/AuthLayout.d.ts +1 -1
  203. package/dist/layout/auth-layout/AuthLayout.d.ts.map +1 -1
  204. package/dist/layout/auth-layout/AuthLayout.js +3 -1
  205. package/dist/layout/auth-layout/AuthLayout.js.map +1 -1
  206. package/dist/layout/auth-layout/types.d.ts +2 -2
  207. package/dist/layout/auth-layout/types.d.ts.map +1 -1
  208. package/dist/layout/auth-layout/types.js.map +1 -1
  209. package/dist/layout/page/Page.d.ts +1 -1
  210. package/dist/layout/page/Page.d.ts.map +1 -1
  211. package/dist/layout/page/Page.js +3 -1
  212. package/dist/layout/page/Page.js.map +1 -1
  213. package/dist/layout/page/types.d.ts +2 -2
  214. package/dist/layout/page/types.d.ts.map +1 -1
  215. package/dist/layout/page/types.js.map +1 -1
  216. package/dist/layout/page-header/PageHeader.d.ts +1 -1
  217. package/dist/layout/page-header/PageHeader.d.ts.map +1 -1
  218. package/dist/layout/page-header/PageHeader.js +3 -1
  219. package/dist/layout/page-header/PageHeader.js.map +1 -1
  220. package/dist/layout/page-header/types.d.ts +2 -2
  221. package/dist/layout/page-header/types.d.ts.map +1 -1
  222. package/dist/layout/page-header/types.js.map +1 -1
  223. package/dist/layout/page-section/PageSection.d.ts +1 -1
  224. package/dist/layout/page-section/PageSection.d.ts.map +1 -1
  225. package/dist/layout/page-section/PageSection.js +3 -1
  226. package/dist/layout/page-section/PageSection.js.map +1 -1
  227. package/dist/layout/page-section/types.d.ts +2 -2
  228. package/dist/layout/page-section/types.d.ts.map +1 -1
  229. package/dist/layout/page-section/types.js.map +1 -1
  230. package/dist/layout/settings-layout/SettingsLayout.d.ts +1 -1
  231. package/dist/layout/settings-layout/SettingsLayout.d.ts.map +1 -1
  232. package/dist/layout/settings-layout/SettingsLayout.js +3 -1
  233. package/dist/layout/settings-layout/SettingsLayout.js.map +1 -1
  234. package/dist/layout/settings-layout/types.d.ts +2 -2
  235. package/dist/layout/settings-layout/types.d.ts.map +1 -1
  236. package/dist/layout/settings-layout/types.js.map +1 -1
  237. package/dist/layout/sidebar-layout/SidebarLayout.d.ts +1 -1
  238. package/dist/layout/sidebar-layout/SidebarLayout.d.ts.map +1 -1
  239. package/dist/layout/sidebar-layout/SidebarLayout.js +3 -1
  240. package/dist/layout/sidebar-layout/SidebarLayout.js.map +1 -1
  241. package/dist/layout/sidebar-layout/types.d.ts +2 -2
  242. package/dist/layout/sidebar-layout/types.d.ts.map +1 -1
  243. package/dist/layout/sidebar-layout/types.js.map +1 -1
  244. package/dist/layout/topbar-layout/TopbarLayout.d.ts +1 -1
  245. package/dist/layout/topbar-layout/TopbarLayout.d.ts.map +1 -1
  246. package/dist/layout/topbar-layout/TopbarLayout.js +3 -1
  247. package/dist/layout/topbar-layout/TopbarLayout.js.map +1 -1
  248. package/dist/layout/topbar-layout/types.d.ts +2 -2
  249. package/dist/layout/topbar-layout/types.d.ts.map +1 -1
  250. package/dist/layout/topbar-layout/types.js.map +1 -1
  251. package/dist/patterns/auth/ForgotPasswordForm.d.ts +1 -1
  252. package/dist/patterns/auth/ForgotPasswordForm.d.ts.map +1 -1
  253. package/dist/patterns/auth/ForgotPasswordForm.js +3 -1
  254. package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -1
  255. package/dist/patterns/auth/OtpForm.d.ts +1 -1
  256. package/dist/patterns/auth/OtpForm.d.ts.map +1 -1
  257. package/dist/patterns/auth/OtpForm.js +3 -1
  258. package/dist/patterns/auth/OtpForm.js.map +1 -1
  259. package/dist/patterns/auth/SignInForm.d.ts +1 -1
  260. package/dist/patterns/auth/SignInForm.d.ts.map +1 -1
  261. package/dist/patterns/auth/SignInForm.js +3 -1
  262. package/dist/patterns/auth/SignInForm.js.map +1 -1
  263. package/dist/patterns/auth/SignUpForm.d.ts +1 -1
  264. package/dist/patterns/auth/SignUpForm.d.ts.map +1 -1
  265. package/dist/patterns/auth/SignUpForm.js +3 -1
  266. package/dist/patterns/auth/SignUpForm.js.map +1 -1
  267. package/dist/patterns/auth/types.d.ts +2 -2
  268. package/dist/patterns/auth/types.d.ts.map +1 -1
  269. package/dist/patterns/auth/types.js.map +1 -1
  270. package/dist/patterns/collection-editor/CollectionEditor.d.ts +1 -1
  271. package/dist/patterns/collection-editor/CollectionEditor.d.ts.map +1 -1
  272. package/dist/patterns/collection-editor/CollectionEditor.js +3 -1
  273. package/dist/patterns/collection-editor/CollectionEditor.js.map +1 -1
  274. package/dist/patterns/collection-editor/types.d.ts +2 -2
  275. package/dist/patterns/collection-editor/types.d.ts.map +1 -1
  276. package/dist/patterns/collection-editor/types.js.map +1 -1
  277. package/dist/patterns/confirm-dialog/ConfirmDialog.d.ts +1 -1
  278. package/dist/patterns/confirm-dialog/ConfirmDialog.d.ts.map +1 -1
  279. package/dist/patterns/confirm-dialog/ConfirmDialog.js +3 -1
  280. package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
  281. package/dist/patterns/confirm-dialog/types.d.ts +2 -2
  282. package/dist/patterns/confirm-dialog/types.d.ts.map +1 -1
  283. package/dist/patterns/confirm-dialog/types.js.map +1 -1
  284. package/dist/patterns/disclosure-section/DisclosureSection.d.ts +1 -1
  285. package/dist/patterns/disclosure-section/DisclosureSection.d.ts.map +1 -1
  286. package/dist/patterns/disclosure-section/DisclosureSection.js +3 -1
  287. package/dist/patterns/disclosure-section/DisclosureSection.js.map +1 -1
  288. package/dist/patterns/disclosure-section/types.d.ts +2 -2
  289. package/dist/patterns/disclosure-section/types.d.ts.map +1 -1
  290. package/dist/patterns/disclosure-section/types.js.map +1 -1
  291. package/dist/patterns/empty-state/EmptyState.d.ts +1 -1
  292. package/dist/patterns/empty-state/EmptyState.d.ts.map +1 -1
  293. package/dist/patterns/empty-state/EmptyState.js +3 -1
  294. package/dist/patterns/empty-state/EmptyState.js.map +1 -1
  295. package/dist/patterns/empty-state/types.d.ts +2 -2
  296. package/dist/patterns/empty-state/types.d.ts.map +1 -1
  297. package/dist/patterns/empty-state/types.js.map +1 -1
  298. package/dist/patterns/form-field/FormField.d.ts +1 -1
  299. package/dist/patterns/form-field/FormField.d.ts.map +1 -1
  300. package/dist/patterns/form-field/FormField.js +3 -1
  301. package/dist/patterns/form-field/FormField.js.map +1 -1
  302. package/dist/patterns/form-field/types.d.ts +2 -1
  303. package/dist/patterns/form-field/types.d.ts.map +1 -1
  304. package/dist/patterns/form-field/types.js.map +1 -1
  305. package/dist/patterns/inspector-field/InspectorField.d.ts +1 -1
  306. package/dist/patterns/inspector-field/InspectorField.d.ts.map +1 -1
  307. package/dist/patterns/inspector-field/InspectorField.js +3 -1
  308. package/dist/patterns/inspector-field/InspectorField.js.map +1 -1
  309. package/dist/patterns/inspector-field/types.d.ts +2 -2
  310. package/dist/patterns/inspector-field/types.d.ts.map +1 -1
  311. package/dist/patterns/inspector-field/types.js.map +1 -1
  312. package/dist/patterns/notice/Notice.d.ts +1 -1
  313. package/dist/patterns/notice/Notice.d.ts.map +1 -1
  314. package/dist/patterns/notice/Notice.js +3 -1
  315. package/dist/patterns/notice/Notice.js.map +1 -1
  316. package/dist/patterns/notice/types.d.ts +2 -2
  317. package/dist/patterns/notice/types.d.ts.map +1 -1
  318. package/dist/patterns/notice/types.js.map +1 -1
  319. package/dist/patterns/panel/Panel.d.ts +1 -1
  320. package/dist/patterns/panel/Panel.d.ts.map +1 -1
  321. package/dist/patterns/panel/Panel.js +3 -1
  322. package/dist/patterns/panel/Panel.js.map +1 -1
  323. package/dist/patterns/panel/types.d.ts +2 -2
  324. package/dist/patterns/panel/types.d.ts.map +1 -1
  325. package/dist/patterns/panel/types.js.map +1 -1
  326. package/dist/patterns/responsive-panel/ResponsivePanel.d.ts +1 -1
  327. package/dist/patterns/responsive-panel/ResponsivePanel.d.ts.map +1 -1
  328. package/dist/patterns/responsive-panel/ResponsivePanel.js +3 -1
  329. package/dist/patterns/responsive-panel/ResponsivePanel.js.map +1 -1
  330. package/dist/patterns/responsive-panel/types.d.ts +2 -2
  331. package/dist/patterns/responsive-panel/types.d.ts.map +1 -1
  332. package/dist/patterns/responsive-panel/types.js.map +1 -1
  333. package/dist/patterns/section-header/SectionHeader.d.ts +1 -1
  334. package/dist/patterns/section-header/SectionHeader.d.ts.map +1 -1
  335. package/dist/patterns/section-header/SectionHeader.js +3 -1
  336. package/dist/patterns/section-header/SectionHeader.js.map +1 -1
  337. package/dist/patterns/section-header/types.d.ts +2 -2
  338. package/dist/patterns/section-header/types.d.ts.map +1 -1
  339. package/dist/patterns/section-header/types.js.map +1 -1
  340. package/dist/patterns/settings-row/SettingsRow.d.ts +1 -1
  341. package/dist/patterns/settings-row/SettingsRow.d.ts.map +1 -1
  342. package/dist/patterns/settings-row/SettingsRow.js +3 -1
  343. package/dist/patterns/settings-row/SettingsRow.js.map +1 -1
  344. package/dist/patterns/settings-row/types.d.ts +2 -2
  345. package/dist/patterns/settings-row/types.d.ts.map +1 -1
  346. package/dist/patterns/settings-row/types.js.map +1 -1
  347. package/dist/patterns/switch-field/SwitchField.d.ts +1 -1
  348. package/dist/patterns/switch-field/SwitchField.d.ts.map +1 -1
  349. package/dist/patterns/switch-field/SwitchField.js +3 -1
  350. package/dist/patterns/switch-field/SwitchField.js.map +1 -1
  351. package/dist/patterns/switch-field/types.d.ts +2 -2
  352. package/dist/patterns/switch-field/types.d.ts.map +1 -1
  353. package/dist/patterns/switch-field/types.js.map +1 -1
  354. package/dist/patterns/tile-grid/PaletteItem.d.ts +1 -1
  355. package/dist/patterns/tile-grid/PaletteItem.d.ts.map +1 -1
  356. package/dist/patterns/tile-grid/PaletteItem.js +6 -3
  357. package/dist/patterns/tile-grid/PaletteItem.js.map +1 -1
  358. package/dist/patterns/tile-grid/TileGrid.d.ts +1 -1
  359. package/dist/patterns/tile-grid/TileGrid.d.ts.map +1 -1
  360. package/dist/patterns/tile-grid/TileGrid.js +3 -1
  361. package/dist/patterns/tile-grid/TileGrid.js.map +1 -1
  362. package/dist/patterns/tile-grid/types.d.ts +3 -4
  363. package/dist/patterns/tile-grid/types.d.ts.map +1 -1
  364. package/dist/patterns/tile-grid/types.js.map +1 -1
  365. package/dist/patterns/tree-view/TreeItem.d.ts +3 -2
  366. package/dist/patterns/tree-view/TreeItem.d.ts.map +1 -1
  367. package/dist/patterns/tree-view/TreeItem.js +4 -2
  368. package/dist/patterns/tree-view/TreeItem.js.map +1 -1
  369. package/dist/patterns/tree-view/TreeView.d.ts +1 -1
  370. package/dist/patterns/tree-view/TreeView.d.ts.map +1 -1
  371. package/dist/patterns/tree-view/TreeView.js +3 -1
  372. package/dist/patterns/tree-view/TreeView.js.map +1 -1
  373. package/dist/patterns/tree-view/types.d.ts +2 -2
  374. package/dist/patterns/tree-view/types.d.ts.map +1 -1
  375. package/dist/patterns/tree-view/types.js.map +1 -1
  376. package/dist/theme/ZoraBaseProps.d.ts +18 -0
  377. package/dist/theme/ZoraBaseProps.d.ts.map +1 -0
  378. package/dist/theme/ZoraBaseProps.js +2 -0
  379. package/dist/theme/ZoraBaseProps.js.map +1 -0
  380. package/dist/theme/ZoraProvider.d.ts.map +1 -1
  381. package/dist/theme/ZoraProvider.js +8 -4
  382. package/dist/theme/ZoraProvider.js.map +1 -1
  383. package/dist/theme/ZoraThemeRuntimeContext.d.ts +9 -0
  384. package/dist/theme/ZoraThemeRuntimeContext.d.ts.map +1 -0
  385. package/dist/theme/ZoraThemeRuntimeContext.js +10 -0
  386. package/dist/theme/ZoraThemeRuntimeContext.js.map +1 -0
  387. package/dist/theme/ZoraThemeScope.d.ts +9 -0
  388. package/dist/theme/ZoraThemeScope.d.ts.map +1 -0
  389. package/dist/theme/ZoraThemeScope.js +41 -0
  390. package/dist/theme/ZoraThemeScope.js.map +1 -0
  391. package/dist/theme/index.d.ts +4 -0
  392. package/dist/theme/index.d.ts.map +1 -1
  393. package/dist/theme/index.js +2 -0
  394. package/dist/theme/index.js.map +1 -1
  395. package/dist/theme/resolveZoraScopedThemeId.d.ts +6 -0
  396. package/dist/theme/resolveZoraScopedThemeId.d.ts.map +1 -0
  397. package/dist/theme/resolveZoraScopedThemeId.js +15 -0
  398. package/dist/theme/resolveZoraScopedThemeId.js.map +1 -0
  399. package/dist/theme/withZoraThemeScope.d.ts +4 -0
  400. package/dist/theme/withZoraThemeScope.d.ts.map +1 -0
  401. package/dist/theme/withZoraThemeScope.js +16 -0
  402. package/dist/theme/withZoraThemeScope.js.map +1 -0
  403. package/package.json +1 -1
  404. package/src/components/badge/Badge.tsx +12 -1
  405. package/src/components/badge/types.ts +5 -4
  406. package/src/components/button/Button.tsx +11 -1
  407. package/src/components/button/types.ts +3 -4
  408. package/src/components/card/Card.tsx +6 -1
  409. package/src/components/card/types.ts +3 -1
  410. package/src/components/checkbox/Checkbox.tsx +11 -0
  411. package/src/components/checkbox/CheckboxGroup.tsx +6 -1
  412. package/src/components/checkbox/index.ts +2 -3
  413. package/src/components/checkbox/types.ts +13 -5
  414. package/src/components/drawer/Drawer.tsx +13 -1
  415. package/src/components/drawer/types.ts +9 -4
  416. package/src/components/form/Form.tsx +6 -1
  417. package/src/components/form/FormActions.tsx +6 -1
  418. package/src/components/form/FormError.tsx +7 -3
  419. package/src/components/form/FormField.tsx +24 -3
  420. package/src/components/form/types.ts +12 -12
  421. package/src/components/heading/Heading.tsx +6 -1
  422. package/src/components/heading/types.ts +3 -2
  423. package/src/components/icon/Icon.tsx +7 -2
  424. package/src/components/icon-button/IconButton.tsx +6 -1
  425. package/src/components/icon-button/types.ts +2 -1
  426. package/src/components/input/Input.tsx +13 -2
  427. package/src/components/input/types.ts +8 -4
  428. package/src/components/modal/Modal.tsx +6 -1
  429. package/src/components/modal/types.ts +5 -4
  430. package/src/components/radio/Radio.tsx +11 -0
  431. package/src/components/radio/RadioGroup.tsx +6 -1
  432. package/src/components/radio/index.ts +2 -3
  433. package/src/components/radio/types.ts +12 -5
  434. package/src/components/select/Select.tsx +9 -3
  435. package/src/components/select/types.ts +3 -2
  436. package/src/components/tabs/Tabs.tsx +9 -3
  437. package/src/components/tabs/types.ts +2 -2
  438. package/src/components/text/Text.tsx +6 -1
  439. package/src/components/text/types.ts +3 -2
  440. package/src/components/textarea/Textarea.tsx +13 -2
  441. package/src/components/textarea/types.ts +8 -4
  442. package/src/components/toolbar/Toolbar.tsx +6 -1
  443. package/src/components/toolbar/ToolbarAction.tsx +9 -1
  444. package/src/components/toolbar/types.ts +4 -4
  445. package/src/foundation/Box.tsx +13 -0
  446. package/src/foundation/Center.tsx +16 -0
  447. package/src/foundation/Container.tsx +17 -0
  448. package/src/foundation/Divider.tsx +17 -0
  449. package/src/foundation/Grid.tsx +13 -0
  450. package/src/foundation/Inline.tsx +16 -0
  451. package/src/foundation/Show.tsx +13 -0
  452. package/src/foundation/Spacer.tsx +16 -0
  453. package/src/foundation/Stack.tsx +13 -0
  454. package/src/foundation/Surface.tsx +20 -0
  455. package/src/foundation/index.test.ts +2 -2
  456. package/src/foundation/index.ts +20 -25
  457. package/src/layout/app-shell/AppShell.tsx +6 -1
  458. package/src/layout/app-shell/types.ts +3 -2
  459. package/src/layout/auth-layout/AuthLayout.tsx +6 -1
  460. package/src/layout/auth-layout/types.ts +3 -2
  461. package/src/layout/page/Page.tsx +12 -1
  462. package/src/layout/page/types.ts +2 -2
  463. package/src/layout/page-header/PageHeader.tsx +6 -1
  464. package/src/layout/page-header/types.ts +3 -2
  465. package/src/layout/page-section/PageSection.tsx +12 -1
  466. package/src/layout/page-section/types.ts +3 -2
  467. package/src/layout/settings-layout/SettingsLayout.tsx +6 -1
  468. package/src/layout/settings-layout/types.ts +3 -2
  469. package/src/layout/sidebar-layout/SidebarLayout.tsx +6 -1
  470. package/src/layout/sidebar-layout/types.ts +3 -2
  471. package/src/layout/topbar-layout/TopbarLayout.tsx +11 -1
  472. package/src/layout/topbar-layout/types.ts +3 -2
  473. package/src/patterns/auth/ForgotPasswordForm.tsx +6 -1
  474. package/src/patterns/auth/OtpForm.tsx +6 -1
  475. package/src/patterns/auth/SignInForm.tsx +6 -1
  476. package/src/patterns/auth/SignUpForm.tsx +6 -1
  477. package/src/patterns/auth/types.ts +2 -2
  478. package/src/patterns/collection-editor/CollectionEditor.tsx +6 -1
  479. package/src/patterns/collection-editor/types.ts +3 -2
  480. package/src/patterns/confirm-dialog/ConfirmDialog.tsx +6 -1
  481. package/src/patterns/confirm-dialog/types.ts +2 -2
  482. package/src/patterns/disclosure-section/DisclosureSection.tsx +6 -1
  483. package/src/patterns/disclosure-section/types.ts +3 -2
  484. package/src/patterns/empty-state/EmptyState.tsx +6 -1
  485. package/src/patterns/empty-state/types.ts +2 -2
  486. package/src/patterns/form-field/FormField.tsx +12 -1
  487. package/src/patterns/form-field/types.ts +9 -4
  488. package/src/patterns/inspector-field/InspectorField.tsx +11 -1
  489. package/src/patterns/inspector-field/types.ts +3 -2
  490. package/src/patterns/notice/Notice.tsx +6 -1
  491. package/src/patterns/notice/types.ts +2 -2
  492. package/src/patterns/panel/Panel.tsx +4 -1
  493. package/src/patterns/panel/types.ts +2 -2
  494. package/src/patterns/responsive-panel/ResponsivePanel.tsx +6 -1
  495. package/src/patterns/responsive-panel/types.ts +3 -2
  496. package/src/patterns/section-header/SectionHeader.tsx +6 -1
  497. package/src/patterns/section-header/types.ts +3 -2
  498. package/src/patterns/settings-row/SettingsRow.tsx +6 -1
  499. package/src/patterns/settings-row/types.ts +3 -2
  500. package/src/patterns/switch-field/SwitchField.tsx +6 -1
  501. package/src/patterns/switch-field/types.ts +3 -2
  502. package/src/patterns/tile-grid/PaletteItem.tsx +9 -3
  503. package/src/patterns/tile-grid/TileGrid.tsx +6 -1
  504. package/src/patterns/tile-grid/types.ts +4 -4
  505. package/src/patterns/tree-view/TreeItem.tsx +10 -3
  506. package/src/patterns/tree-view/TreeView.tsx +6 -1
  507. package/src/patterns/tree-view/types.ts +3 -2
  508. package/src/theme/ZoraBaseProps.ts +20 -0
  509. package/src/theme/ZoraProvider.tsx +9 -4
  510. package/src/theme/ZoraThemeRuntimeContext.tsx +18 -0
  511. package/src/theme/ZoraThemeScope.tsx +74 -0
  512. package/src/theme/index.ts +4 -0
  513. package/src/theme/resolveZoraScopedThemeId.test.ts +47 -0
  514. package/src/theme/resolveZoraScopedThemeId.ts +25 -0
  515. package/src/theme/themeScopeStructure.test.ts +220 -0
  516. package/src/theme/withZoraThemeScope.tsx +26 -0
@@ -1,8 +1,11 @@
1
1
  import React from 'react';
2
2
 
3
3
  import { Card } from '../../components/card';
4
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
4
5
  import type { PanelProps } from './types';
5
6
 
6
- export function Panel(props: PanelProps) {
7
+ function PanelInner({ themeId: _themeId, mode: _mode, ...props }: PanelProps) {
7
8
  return <Card {...props} />;
8
9
  }
10
+
11
+ export const Panel = withZoraThemeScope(PanelInner);
@@ -1,8 +1,9 @@
1
1
  import type React from 'react';
2
2
 
3
3
  import type { ZoraCardTone } from '../../internal/recipes';
4
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
4
5
 
5
- export interface PanelProps {
6
+ export interface PanelProps extends ZoraBaseProps {
6
7
  title?: React.ReactNode;
7
8
  description?: React.ReactNode;
8
9
  eyebrow?: React.ReactNode;
@@ -11,5 +12,4 @@ export interface PanelProps {
11
12
  children?: React.ReactNode;
12
13
  tone?: ZoraCardTone;
13
14
  compact?: boolean;
14
- testID?: string;
15
15
  }
@@ -2,10 +2,13 @@ import React from 'react';
2
2
 
3
3
  import { Drawer } from '../../components/drawer';
4
4
  import { Modal } from '../../components/modal';
5
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
5
6
  import { Panel } from '../panel';
6
7
  import type { ResponsivePanelProps } from './types';
7
8
 
8
- export function ResponsivePanel({
9
+ function ResponsivePanelInner({
10
+ themeId: _themeId,
11
+ mode: _mode,
9
12
  title,
10
13
  description,
11
14
  actions,
@@ -68,3 +71,5 @@ export function ResponsivePanel({
68
71
  </Panel>
69
72
  );
70
73
  }
74
+
75
+ export const ResponsivePanel = withZoraThemeScope(ResponsivePanelInner);
@@ -4,7 +4,9 @@ export type ResponsivePanelSide = 'left' | 'right';
4
4
  export type ResponsivePanelDesktopMode = 'inline' | 'floating';
5
5
  export type ResponsivePanelMobileMode = 'drawer' | 'modal';
6
6
 
7
- export interface ResponsivePanelProps {
7
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
8
+
9
+ export interface ResponsivePanelProps extends ZoraBaseProps {
8
10
  title?: React.ReactNode;
9
11
  description?: React.ReactNode;
10
12
  actions?: React.ReactNode;
@@ -16,5 +18,4 @@ export interface ResponsivePanelProps {
16
18
  desktopMode?: ResponsivePanelDesktopMode;
17
19
  mobileMode?: ResponsivePanelMobileMode;
18
20
  compact?: boolean;
19
- testID?: string;
20
21
  }
@@ -3,9 +3,12 @@ import React from 'react';
3
3
 
4
4
  import { Heading } from '../../components/heading';
5
5
  import { Text } from '../../components/text';
6
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
6
7
  import type { SectionHeaderProps } from './types';
7
8
 
8
- export function SectionHeader({
9
+ function SectionHeaderInner({
10
+ themeId: _themeId,
11
+ mode: _mode,
9
12
  title,
10
13
  description,
11
14
  eyebrow,
@@ -39,3 +42,5 @@ export function SectionHeader({
39
42
  </Stack>
40
43
  );
41
44
  }
45
+
46
+ export const SectionHeader = withZoraThemeScope(SectionHeaderInner);
@@ -1,9 +1,10 @@
1
1
  import type React from 'react';
2
2
 
3
- export interface SectionHeaderProps {
3
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
4
+
5
+ export interface SectionHeaderProps extends ZoraBaseProps {
4
6
  title: React.ReactNode;
5
7
  description?: React.ReactNode;
6
8
  eyebrow?: React.ReactNode;
7
9
  actions?: React.ReactNode;
8
- testID?: string;
9
10
  }
@@ -3,9 +3,12 @@ import React from 'react';
3
3
 
4
4
  import { Card } from '../../components/card';
5
5
  import { Text } from '../../components/text';
6
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
6
7
  import type { SettingsRowProps } from './types';
7
8
 
8
- export function SettingsRow({
9
+ function SettingsRowInner({
10
+ themeId: _themeId,
11
+ mode: _mode,
9
12
  title,
10
13
  description,
11
14
  meta,
@@ -39,3 +42,5 @@ export function SettingsRow({
39
42
  </Card>
40
43
  );
41
44
  }
45
+
46
+ export const SettingsRow = withZoraThemeScope(SettingsRowInner);
@@ -1,11 +1,12 @@
1
1
  import type React from 'react';
2
2
 
3
- interface SettingsRowBaseProps {
3
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
4
+
5
+ interface SettingsRowBaseProps extends ZoraBaseProps {
4
6
  title: React.ReactNode;
5
7
  description?: React.ReactNode;
6
8
  meta?: React.ReactNode;
7
9
  disabled?: boolean;
8
- testID?: string;
9
10
  }
10
11
 
11
12
  interface SettingsRowPressableProps {
@@ -1,10 +1,13 @@
1
1
  import { Switch } from '@ankhorage/surface';
2
2
  import React from 'react';
3
3
 
4
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
4
5
  import { SettingsRow } from '../settings-row';
5
6
  import type { SwitchFieldProps } from './types';
6
7
 
7
- export function SwitchField({
8
+ function SwitchFieldInner({
9
+ themeId: _themeId,
10
+ mode: _mode,
8
11
  label,
9
12
  description,
10
13
  value,
@@ -22,3 +25,5 @@ export function SwitchField({
22
25
  />
23
26
  );
24
27
  }
28
+
29
+ export const SwitchField = withZoraThemeScope(SwitchFieldInner);
@@ -1,10 +1,11 @@
1
1
  import type { ReactNode } from 'react';
2
2
 
3
- export interface SwitchFieldProps {
3
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
4
+
5
+ export interface SwitchFieldProps extends ZoraBaseProps {
4
6
  label: ReactNode;
5
7
  description?: ReactNode;
6
8
  value: boolean;
7
9
  onValueChange: (value: boolean) => void;
8
10
  disabled?: boolean;
9
- testID?: string;
10
11
  }
@@ -1,12 +1,16 @@
1
- import { Box, useTheme } from '@ankhorage/surface';
1
+ import { Box } from '@ankhorage/surface';
2
2
  import React from 'react';
3
3
 
4
4
  import { Card } from '../../components/card';
5
5
  import { Heading } from '../../components/heading';
6
6
  import { Text } from '../../components/text';
7
+ import { useZoraTheme } from '../../theme/useZoraTheme';
8
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
7
9
  import type { PaletteItemProps } from './types';
8
10
 
9
- export function PaletteItem({
11
+ function PaletteItemInner({
12
+ themeId: _themeId,
13
+ mode: _mode,
10
14
  title,
11
15
  description,
12
16
  icon,
@@ -16,7 +20,7 @@ export function PaletteItem({
16
20
  onPress,
17
21
  testID,
18
22
  }: PaletteItemProps) {
19
- const { theme } = useTheme();
23
+ const { theme } = useZoraTheme();
20
24
 
21
25
  return (
22
26
  <Card
@@ -49,3 +53,5 @@ export function PaletteItem({
49
53
  </Card>
50
54
  );
51
55
  }
56
+
57
+ export const PaletteItem = withZoraThemeScope(PaletteItemInner);
@@ -1,9 +1,12 @@
1
1
  import { Box } from '@ankhorage/surface';
2
2
  import React from 'react';
3
3
 
4
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
4
5
  import type { TileGridProps } from './types';
5
6
 
6
- export function TileGrid({
7
+ function TileGridInner({
8
+ themeId: _themeId,
9
+ mode: _mode,
7
10
  children,
8
11
  columns = 'responsive',
9
12
  compact = false,
@@ -42,3 +45,5 @@ export function TileGrid({
42
45
  </Box>
43
46
  );
44
47
  }
48
+
49
+ export const TileGrid = withZoraThemeScope(TileGridInner);
@@ -1,14 +1,15 @@
1
1
  import type { ButtonIconSpec } from '@ankhorage/surface';
2
2
  import type { ReactNode } from 'react';
3
3
 
4
- export interface TileGridProps {
4
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
5
+
6
+ export interface TileGridProps extends ZoraBaseProps {
5
7
  children?: ReactNode;
6
8
  columns?: number | 'responsive';
7
9
  compact?: boolean;
8
- testID?: string;
9
10
  }
10
11
 
11
- export interface PaletteItemProps {
12
+ export interface PaletteItemProps extends ZoraBaseProps {
12
13
  title: ReactNode;
13
14
  description?: ReactNode;
14
15
  icon?: ButtonIconSpec;
@@ -16,5 +17,4 @@ export interface PaletteItemProps {
16
17
  selected?: boolean;
17
18
  disabled?: boolean;
18
19
  onPress?: () => void;
19
- testID?: string;
20
20
  }
@@ -2,10 +2,12 @@ import { Box, Stack } from '@ankhorage/surface';
2
2
  import React from 'react';
3
3
 
4
4
  import { IconButton } from '../../components/icon-button';
5
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
6
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
5
7
  import { SettingsRow } from '../settings-row';
6
8
  import type { TreeItemNode, TreeItemRenderProps } from './types';
7
9
 
8
- interface TreeItemProps<TId extends string = string> {
10
+ interface TreeItemProps<TId extends string = string> extends ZoraBaseProps {
9
11
  node: TreeItemNode<TId>;
10
12
  depth: number;
11
13
  selectedId?: TId;
@@ -15,7 +17,9 @@ interface TreeItemProps<TId extends string = string> {
15
17
  renderItem?: (props: TreeItemRenderProps<TId>) => React.ReactNode;
16
18
  }
17
19
 
18
- export function TreeItem<TId extends string = string>({
20
+ function TreeItemInner<TId extends string = string>({
21
+ themeId: _themeId,
22
+ mode: _mode,
19
23
  node,
20
24
  depth,
21
25
  selectedId,
@@ -23,6 +27,7 @@ export function TreeItem<TId extends string = string>({
23
27
  onSelect,
24
28
  onToggleExpand,
25
29
  renderItem,
30
+ testID,
26
31
  }: TreeItemProps<TId>) {
27
32
  const hasChildren = node.children !== undefined && node.children.length > 0;
28
33
  const isExpanded = expandedIds.includes(node.id);
@@ -63,7 +68,7 @@ export function TreeItem<TId extends string = string>({
63
68
  };
64
69
 
65
70
  return (
66
- <Box>
71
+ <Box testID={testID}>
67
72
  <Box style={{ paddingLeft: depth * 16 }}>{renderContent()}</Box>
68
73
  {hasChildren && isExpanded ? (
69
74
  <Box>
@@ -84,3 +89,5 @@ export function TreeItem<TId extends string = string>({
84
89
  </Box>
85
90
  );
86
91
  }
92
+
93
+ export const TreeItem = withZoraThemeScope(TreeItemInner);
@@ -1,10 +1,13 @@
1
1
  import { Stack } from '@ankhorage/surface';
2
2
  import React from 'react';
3
3
 
4
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
4
5
  import { TreeItem } from './TreeItem';
5
6
  import type { TreeViewProps } from './types';
6
7
 
7
- export function TreeView<TId extends string = string>({
8
+ function TreeViewInner<TId extends string = string>({
9
+ themeId: _themeId,
10
+ mode: _mode,
8
11
  nodes,
9
12
  selectedId,
10
13
  expandedIds: controlledExpandedIds,
@@ -48,3 +51,5 @@ export function TreeView<TId extends string = string>({
48
51
  </Stack>
49
52
  );
50
53
  }
54
+
55
+ export const TreeView = withZoraThemeScope(TreeViewInner);
@@ -1,6 +1,8 @@
1
1
  import type { ButtonIconSpec } from '@ankhorage/surface';
2
2
  import type { ReactNode } from 'react';
3
3
 
4
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
5
+
4
6
  export interface TreeItemNode<TId extends string = string> {
5
7
  id: TId;
6
8
  label: ReactNode;
@@ -19,7 +21,7 @@ export interface TreeItemRenderProps<TId extends string = string> {
19
21
  hasChildren: boolean;
20
22
  }
21
23
 
22
- export interface TreeViewProps<TId extends string = string> {
24
+ export interface TreeViewProps<TId extends string = string> extends ZoraBaseProps {
23
25
  nodes: readonly TreeItemNode<TId>[];
24
26
  selectedId?: TId;
25
27
  expandedIds?: readonly TId[];
@@ -27,5 +29,4 @@ export interface TreeViewProps<TId extends string = string> {
27
29
  onSelect?: (id: TId) => void;
28
30
  onExpandedChange?: (ids: readonly TId[]) => void;
29
31
  renderItem?: (props: TreeItemRenderProps<TId>) => ReactNode;
30
- testID?: string;
31
32
  }
@@ -0,0 +1,20 @@
1
+ import type { ZoraThemeId, ZoraThemeMode } from './types';
2
+
3
+ export interface ZoraBaseProps {
4
+ /**
5
+ * Overrides the active ZORA theme for this component and its subtree.
6
+ * If omitted, the nearest parent theme is inherited.
7
+ *
8
+ * Plan 2: theme registries are not available yet. Only the inherited theme id
9
+ * is valid; unknown ids throw in dev/test and warn+fallback in production.
10
+ */
11
+ themeId?: ZoraThemeId;
12
+
13
+ /**
14
+ * Overrides the light/dark mode for this component and its subtree.
15
+ * If omitted, the nearest parent mode is inherited.
16
+ */
17
+ mode?: ZoraThemeMode;
18
+
19
+ testID?: string;
20
+ }
@@ -1,9 +1,10 @@
1
- import { ResponsiveProvider, ThemeProvider } from '@ankhorage/surface';
1
+ import { ThemeProvider } from '@ankhorage/surface';
2
2
  import React from 'react';
3
3
 
4
4
  import { createZoraThemeConfig } from './createZoraThemeConfig';
5
5
  import type { ZoraTheme, ZoraThemeMode } from './types';
6
6
  import { zoraDefaultTheme } from './zoraDefaultTheme';
7
+ import { ZoraThemeRuntimeContext } from './ZoraThemeRuntimeContext';
7
8
 
8
9
  export interface ZoraProviderProps {
9
10
  children: React.ReactNode;
@@ -16,9 +17,13 @@ export function ZoraProvider({
16
17
  theme = zoraDefaultTheme,
17
18
  initialMode = 'light',
18
19
  }: ZoraProviderProps) {
20
+ const runtimeValue = React.useMemo(() => ({ sourceTheme: theme, themeId: theme.id }), [theme]);
21
+
19
22
  return (
20
- <ThemeProvider initialConfig={createZoraThemeConfig(theme)} initialMode={initialMode}>
21
- <ResponsiveProvider>{children}</ResponsiveProvider>
22
- </ThemeProvider>
23
+ <ZoraThemeRuntimeContext.Provider value={runtimeValue}>
24
+ <ThemeProvider initialConfig={createZoraThemeConfig(theme)} initialMode={initialMode}>
25
+ {children}
26
+ </ThemeProvider>
27
+ </ZoraThemeRuntimeContext.Provider>
23
28
  );
24
29
  }
@@ -0,0 +1,18 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ import type { ZoraTheme, ZoraThemeId } from './types';
4
+ import { zoraDefaultTheme } from './zoraDefaultTheme';
5
+
6
+ interface ZoraThemeRuntime {
7
+ sourceTheme: ZoraTheme;
8
+ themeId: ZoraThemeId;
9
+ }
10
+
11
+ export const ZoraThemeRuntimeContext = createContext<ZoraThemeRuntime>({
12
+ sourceTheme: zoraDefaultTheme,
13
+ themeId: zoraDefaultTheme.id,
14
+ });
15
+
16
+ export function useZoraThemeRuntime(): ZoraThemeRuntime {
17
+ return useContext(ZoraThemeRuntimeContext);
18
+ }
@@ -0,0 +1,74 @@
1
+ import { createTheme, ThemeContext, useFontContext, useTheme } from '@ankhorage/surface';
2
+ import React, { useMemo } from 'react';
3
+
4
+ import { createZoraThemeConfig } from './createZoraThemeConfig';
5
+ import { resolveZoraScopedThemeId } from './resolveZoraScopedThemeId';
6
+ import type { ZoraThemeId, ZoraThemeMode } from './types';
7
+ import { useZoraThemeRuntime, ZoraThemeRuntimeContext } from './ZoraThemeRuntimeContext';
8
+
9
+ export interface ZoraThemeScopeProps {
10
+ children: React.ReactNode;
11
+ themeId?: ZoraThemeId;
12
+ mode?: ZoraThemeMode;
13
+ }
14
+
15
+ function ZoraThemeScopeInner({ children, themeId, mode }: ZoraThemeScopeProps) {
16
+ const parentSurface = useTheme();
17
+ const parentRuntime = useZoraThemeRuntime();
18
+ const { activeFontId } = useFontContext();
19
+
20
+ const scopedThemeId = resolveZoraScopedThemeId({
21
+ desiredThemeId: themeId,
22
+ inheritedThemeId: parentRuntime.themeId,
23
+ });
24
+
25
+ const scopedMode = mode ?? parentSurface.mode;
26
+
27
+ // Plan 2: there is no multi-theme registry yet. Keep the active theme seed inherited.
28
+ const surfaceConfig = useMemo(
29
+ () => createZoraThemeConfig(parentRuntime.sourceTheme),
30
+ [parentRuntime.sourceTheme],
31
+ );
32
+
33
+ const scopedTheme = useMemo(
34
+ () => createTheme(surfaceConfig, scopedMode, activeFontId),
35
+ [surfaceConfig, scopedMode, activeFontId],
36
+ );
37
+
38
+ const scopedSurfaceValue = useMemo(
39
+ () => ({
40
+ theme: scopedTheme,
41
+ mode: scopedMode,
42
+ setMode: parentSurface.setMode,
43
+ setThemeConfig: parentSurface.setThemeConfig,
44
+ _hasProvider: true,
45
+ }),
46
+ [parentSurface.setMode, parentSurface.setThemeConfig, scopedMode, scopedTheme],
47
+ );
48
+
49
+ const scopedRuntimeValue = useMemo(
50
+ () => ({
51
+ sourceTheme: parentRuntime.sourceTheme,
52
+ themeId: scopedThemeId,
53
+ }),
54
+ [parentRuntime.sourceTheme, scopedThemeId],
55
+ );
56
+
57
+ return (
58
+ <ZoraThemeRuntimeContext.Provider value={scopedRuntimeValue}>
59
+ <ThemeContext.Provider value={scopedSurfaceValue}>{children}</ThemeContext.Provider>
60
+ </ZoraThemeRuntimeContext.Provider>
61
+ );
62
+ }
63
+
64
+ export function ZoraThemeScope({ children, themeId, mode }: ZoraThemeScopeProps) {
65
+ if (mode === undefined && themeId === undefined) {
66
+ return children;
67
+ }
68
+
69
+ return (
70
+ <ZoraThemeScopeInner mode={mode} themeId={themeId}>
71
+ {children}
72
+ </ZoraThemeScopeInner>
73
+ );
74
+ }
@@ -9,6 +9,10 @@ export type {
9
9
  ZoraThemeMode,
10
10
  } from './types';
11
11
  export { useZoraTheme } from './useZoraTheme';
12
+ export { withZoraThemeScope } from './withZoraThemeScope';
13
+ export type { ZoraBaseProps } from './ZoraBaseProps';
12
14
  export { zoraDefaultTheme } from './zoraDefaultTheme';
13
15
  export type { ZoraProviderProps } from './ZoraProvider';
14
16
  export { ZoraProvider } from './ZoraProvider';
17
+ export type { ZoraThemeScopeProps } from './ZoraThemeScope';
18
+ export { ZoraThemeScope } from './ZoraThemeScope';
@@ -0,0 +1,47 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+
3
+ import { resolveZoraScopedThemeId } from './resolveZoraScopedThemeId';
4
+
5
+ describe('resolveZoraScopedThemeId', () => {
6
+ it('inherits the theme id when omitted', () => {
7
+ expect(resolveZoraScopedThemeId({ desiredThemeId: undefined, inheritedThemeId: 'zora' })).toBe(
8
+ 'zora',
9
+ );
10
+ });
11
+
12
+ it('accepts the inherited theme id when explicitly provided', () => {
13
+ expect(resolveZoraScopedThemeId({ desiredThemeId: 'zora', inheritedThemeId: 'zora' })).toBe(
14
+ 'zora',
15
+ );
16
+ });
17
+
18
+ it('throws in non-production for unknown theme ids', () => {
19
+ const originalEnv = process.env.NODE_ENV;
20
+ process.env.NODE_ENV = 'test';
21
+
22
+ expect(() =>
23
+ resolveZoraScopedThemeId({ desiredThemeId: 'studio', inheritedThemeId: 'zora' }),
24
+ ).toThrow(/Unknown ZORA theme id 'studio'/);
25
+
26
+ process.env.NODE_ENV = originalEnv;
27
+ });
28
+
29
+ it('warns and falls back in production for unknown theme ids', () => {
30
+ const originalEnv = process.env.NODE_ENV;
31
+ process.env.NODE_ENV = 'production';
32
+
33
+ const originalWarn = console.warn;
34
+ const warnings: string[] = [];
35
+ console.warn = (message: string) => {
36
+ warnings.push(message);
37
+ };
38
+
39
+ expect(resolveZoraScopedThemeId({ desiredThemeId: 'studio', inheritedThemeId: 'zora' })).toBe(
40
+ 'zora',
41
+ );
42
+ expect(warnings.join('\n')).toMatch(/Unknown ZORA theme id 'studio'/);
43
+
44
+ console.warn = originalWarn;
45
+ process.env.NODE_ENV = originalEnv;
46
+ });
47
+ });
@@ -0,0 +1,25 @@
1
+ import type { ZoraThemeId } from './types';
2
+
3
+ export function resolveZoraScopedThemeId({
4
+ desiredThemeId,
5
+ inheritedThemeId,
6
+ }: {
7
+ desiredThemeId: ZoraThemeId | undefined;
8
+ inheritedThemeId: ZoraThemeId;
9
+ }): ZoraThemeId {
10
+ if (desiredThemeId === undefined || desiredThemeId === inheritedThemeId) {
11
+ return inheritedThemeId;
12
+ }
13
+
14
+ const message = [
15
+ `Unknown ZORA theme id '${desiredThemeId}'.`,
16
+ 'Theme registries are not available yet; register the theme before using themeId scopes.',
17
+ ].join(' ');
18
+
19
+ if (process.env.NODE_ENV === 'production') {
20
+ console.warn(message);
21
+ return inheritedThemeId;
22
+ }
23
+
24
+ throw new Error(message);
25
+ }