@ankhorage/zora 2.8.6 → 2.9.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 (395) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/components/app-bar/AppBar.d.ts.map +1 -1
  4. package/dist/components/app-bar/AppBar.js +3 -3
  5. package/dist/components/app-bar/AppBar.js.map +1 -1
  6. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  7. package/dist/components/avatar/Avatar.js +1 -1
  8. package/dist/components/avatar/Avatar.js.map +1 -1
  9. package/dist/components/avatar-group/AvatarGroup.d.ts.map +1 -1
  10. package/dist/components/avatar-group/AvatarGroup.js +1 -1
  11. package/dist/components/avatar-group/AvatarGroup.js.map +1 -1
  12. package/dist/components/badge/Badge.d.ts.map +1 -1
  13. package/dist/components/badge/Badge.js +1 -1
  14. package/dist/components/badge/Badge.js.map +1 -1
  15. package/dist/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  16. package/dist/components/breadcrumbs/Breadcrumbs.js +2 -2
  17. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
  18. package/dist/components/button/Button.d.ts.map +1 -1
  19. package/dist/components/button/Button.js +2 -2
  20. package/dist/components/button/Button.js.map +1 -1
  21. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -1
  22. package/dist/components/button-group/ButtonGroup.js +1 -1
  23. package/dist/components/button-group/ButtonGroup.js.map +1 -1
  24. package/dist/components/card/Card.d.ts.map +1 -1
  25. package/dist/components/card/Card.js +3 -2
  26. package/dist/components/card/Card.js.map +1 -1
  27. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  28. package/dist/components/checkbox/Checkbox.js +2 -2
  29. package/dist/components/checkbox/Checkbox.js.map +1 -1
  30. package/dist/components/checkbox/CheckboxGroup.d.ts.map +1 -1
  31. package/dist/components/checkbox/CheckboxGroup.js +7 -4
  32. package/dist/components/checkbox/CheckboxGroup.js.map +1 -1
  33. package/dist/components/chip/Chip.d.ts.map +1 -1
  34. package/dist/components/chip/Chip.js +2 -2
  35. package/dist/components/chip/Chip.js.map +1 -1
  36. package/dist/components/chip-group/ChipGroup.d.ts.map +1 -1
  37. package/dist/components/chip-group/ChipGroup.js +5 -2
  38. package/dist/components/chip-group/ChipGroup.js.map +1 -1
  39. package/dist/components/data-table/DataTable.d.ts.map +1 -1
  40. package/dist/components/data-table/DataTable.js +20 -14
  41. package/dist/components/data-table/DataTable.js.map +1 -1
  42. package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
  43. package/dist/components/date-picker/DatePicker.js +23 -6
  44. package/dist/components/date-picker/DatePicker.js.map +1 -1
  45. package/dist/components/drawer/Drawer.d.ts.map +1 -1
  46. package/dist/components/drawer/Drawer.js +2 -2
  47. package/dist/components/drawer/Drawer.js.map +1 -1
  48. package/dist/components/form/Form.d.ts.map +1 -1
  49. package/dist/components/form/Form.js +5 -3
  50. package/dist/components/form/Form.js.map +1 -1
  51. package/dist/components/form/FormActions.d.ts.map +1 -1
  52. package/dist/components/form/FormActions.js +2 -2
  53. package/dist/components/form/FormActions.js.map +1 -1
  54. package/dist/components/form/FormError.d.ts.map +1 -1
  55. package/dist/components/form/FormError.js +1 -1
  56. package/dist/components/form/FormError.js.map +1 -1
  57. package/dist/components/form/FormField.d.ts.map +1 -1
  58. package/dist/components/form/FormField.js +3 -3
  59. package/dist/components/form/FormField.js.map +1 -1
  60. package/dist/components/gradient/Gradient.d.ts.map +1 -1
  61. package/dist/components/gradient/Gradient.js +1 -1
  62. package/dist/components/gradient/Gradient.js.map +1 -1
  63. package/dist/components/heading/Heading.d.ts.map +1 -1
  64. package/dist/components/heading/Heading.js +2 -2
  65. package/dist/components/heading/Heading.js.map +1 -1
  66. package/dist/components/icon/Icon.d.ts.map +1 -1
  67. package/dist/components/icon/Icon.js +1 -1
  68. package/dist/components/icon/Icon.js.map +1 -1
  69. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  70. package/dist/components/icon-button/IconButton.js +2 -2
  71. package/dist/components/icon-button/IconButton.js.map +1 -1
  72. package/dist/components/image/Image.d.ts.map +1 -1
  73. package/dist/components/image/Image.js +1 -1
  74. package/dist/components/image/Image.js.map +1 -1
  75. package/dist/components/input/Input.d.ts.map +1 -1
  76. package/dist/components/input/Input.js +2 -2
  77. package/dist/components/input/Input.js.map +1 -1
  78. package/dist/components/media-card/MediaCard.d.ts.map +1 -1
  79. package/dist/components/media-card/MediaCard.js +2 -2
  80. package/dist/components/media-card/MediaCard.js.map +1 -1
  81. package/dist/components/metric-card/MetricCard.d.ts.map +1 -1
  82. package/dist/components/metric-card/MetricCard.js +2 -2
  83. package/dist/components/metric-card/MetricCard.js.map +1 -1
  84. package/dist/components/modal/Modal.d.ts.map +1 -1
  85. package/dist/components/modal/Modal.js +2 -2
  86. package/dist/components/modal/Modal.js.map +1 -1
  87. package/dist/components/navigation-item/NavigationItem.d.ts.map +1 -1
  88. package/dist/components/navigation-item/NavigationItem.js +2 -2
  89. package/dist/components/navigation-item/NavigationItem.js.map +1 -1
  90. package/dist/components/navigation-list/NavigationList.d.ts.map +1 -1
  91. package/dist/components/navigation-list/NavigationList.js +3 -3
  92. package/dist/components/navigation-list/NavigationList.js.map +1 -1
  93. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  94. package/dist/components/pagination/Pagination.js +8 -7
  95. package/dist/components/pagination/Pagination.js.map +1 -1
  96. package/dist/components/progress/Progress.d.ts.map +1 -1
  97. package/dist/components/progress/Progress.js +1 -1
  98. package/dist/components/progress/Progress.js.map +1 -1
  99. package/dist/components/radio/Radio.js +2 -2
  100. package/dist/components/radio/Radio.js.map +1 -1
  101. package/dist/components/radio/RadioGroup.d.ts.map +1 -1
  102. package/dist/components/radio/RadioGroup.js +7 -4
  103. package/dist/components/radio/RadioGroup.js.map +1 -1
  104. package/dist/components/rating/Rating.d.ts.map +1 -1
  105. package/dist/components/rating/Rating.js +1 -1
  106. package/dist/components/rating/Rating.js.map +1 -1
  107. package/dist/components/search-bar/SearchBar.d.ts.map +1 -1
  108. package/dist/components/search-bar/SearchBar.js +5 -2
  109. package/dist/components/search-bar/SearchBar.js.map +1 -1
  110. package/dist/components/select/Select.d.ts.map +1 -1
  111. package/dist/components/select/Select.js +12 -4
  112. package/dist/components/select/Select.js.map +1 -1
  113. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  114. package/dist/components/tabs/Tabs.js +17 -4
  115. package/dist/components/tabs/Tabs.js.map +1 -1
  116. package/dist/components/text/Text.d.ts.map +1 -1
  117. package/dist/components/text/Text.js +1 -1
  118. package/dist/components/text/Text.js.map +1 -1
  119. package/dist/components/textarea/Textarea.d.ts.map +1 -1
  120. package/dist/components/textarea/Textarea.js +2 -2
  121. package/dist/components/textarea/Textarea.js.map +1 -1
  122. package/dist/components/time-picker/TimePicker.d.ts.map +1 -1
  123. package/dist/components/time-picker/TimePicker.js +16 -4
  124. package/dist/components/time-picker/TimePicker.js.map +1 -1
  125. package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
  126. package/dist/components/toolbar/Toolbar.js +1 -1
  127. package/dist/components/toolbar/Toolbar.js.map +1 -1
  128. package/dist/foundation/Box.d.ts.map +1 -1
  129. package/dist/foundation/Box.js +1 -1
  130. package/dist/foundation/Box.js.map +1 -1
  131. package/dist/foundation/Center.d.ts.map +1 -1
  132. package/dist/foundation/Center.js +1 -1
  133. package/dist/foundation/Center.js.map +1 -1
  134. package/dist/foundation/Container.d.ts.map +1 -1
  135. package/dist/foundation/Container.js +1 -1
  136. package/dist/foundation/Container.js.map +1 -1
  137. package/dist/foundation/Divider.d.ts.map +1 -1
  138. package/dist/foundation/Divider.js +1 -1
  139. package/dist/foundation/Divider.js.map +1 -1
  140. package/dist/foundation/Grid.d.ts.map +1 -1
  141. package/dist/foundation/Grid.js +1 -1
  142. package/dist/foundation/Grid.js.map +1 -1
  143. package/dist/foundation/Inline.d.ts.map +1 -1
  144. package/dist/foundation/Inline.js +1 -1
  145. package/dist/foundation/Inline.js.map +1 -1
  146. package/dist/foundation/Show.d.ts.map +1 -1
  147. package/dist/foundation/Show.js +1 -1
  148. package/dist/foundation/Show.js.map +1 -1
  149. package/dist/foundation/Spacer.d.ts.map +1 -1
  150. package/dist/foundation/Spacer.js +1 -1
  151. package/dist/foundation/Spacer.js.map +1 -1
  152. package/dist/foundation/Stack.d.ts.map +1 -1
  153. package/dist/foundation/Stack.js +1 -1
  154. package/dist/foundation/Stack.js.map +1 -1
  155. package/dist/foundation/Surface.d.ts.map +1 -1
  156. package/dist/foundation/Surface.js +1 -1
  157. package/dist/foundation/Surface.js.map +1 -1
  158. package/dist/layout/app-shell/AppShell.d.ts.map +1 -1
  159. package/dist/layout/app-shell/AppShell.js +1 -1
  160. package/dist/layout/app-shell/AppShell.js.map +1 -1
  161. package/dist/layout/screen/Screen.d.ts.map +1 -1
  162. package/dist/layout/screen/Screen.js +1 -1
  163. package/dist/layout/screen/Screen.js.map +1 -1
  164. package/dist/layout/screen-section/ScreenSection.d.ts.map +1 -1
  165. package/dist/layout/screen-section/ScreenSection.js +1 -1
  166. package/dist/layout/screen-section/ScreenSection.js.map +1 -1
  167. package/dist/layout/settings-layout/SettingsLayout.d.ts.map +1 -1
  168. package/dist/layout/settings-layout/SettingsLayout.js +1 -1
  169. package/dist/layout/settings-layout/SettingsLayout.js.map +1 -1
  170. package/dist/layout/sidebar-layout/SidebarLayout.d.ts.map +1 -1
  171. package/dist/layout/sidebar-layout/SidebarLayout.js +1 -1
  172. package/dist/layout/sidebar-layout/SidebarLayout.js.map +1 -1
  173. package/dist/layout/topbar-layout/TopbarLayout.d.ts.map +1 -1
  174. package/dist/layout/topbar-layout/TopbarLayout.js +1 -1
  175. package/dist/layout/topbar-layout/TopbarLayout.js.map +1 -1
  176. package/dist/patterns/auth/ForgotPasswordForm.d.ts.map +1 -1
  177. package/dist/patterns/auth/ForgotPasswordForm.js +3 -3
  178. package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -1
  179. package/dist/patterns/auth/OAuthProviderButton.d.ts.map +1 -1
  180. package/dist/patterns/auth/OAuthProviderButton.js +2 -2
  181. package/dist/patterns/auth/OAuthProviderButton.js.map +1 -1
  182. package/dist/patterns/auth/OAuthProviderList.d.ts.map +1 -1
  183. package/dist/patterns/auth/OAuthProviderList.js +2 -2
  184. package/dist/patterns/auth/OAuthProviderList.js.map +1 -1
  185. package/dist/patterns/auth/OtpForm.d.ts.map +1 -1
  186. package/dist/patterns/auth/OtpForm.js +3 -3
  187. package/dist/patterns/auth/OtpForm.js.map +1 -1
  188. package/dist/patterns/auth/SignInForm.d.ts.map +1 -1
  189. package/dist/patterns/auth/SignInForm.js +4 -4
  190. package/dist/patterns/auth/SignInForm.js.map +1 -1
  191. package/dist/patterns/auth/SignUpForm.d.ts.map +1 -1
  192. package/dist/patterns/auth/SignUpForm.js +3 -3
  193. package/dist/patterns/auth/SignUpForm.js.map +1 -1
  194. package/dist/patterns/chat-list-item/ChatListItem.d.ts.map +1 -1
  195. package/dist/patterns/chat-list-item/ChatListItem.js +2 -2
  196. package/dist/patterns/chat-list-item/ChatListItem.js.map +1 -1
  197. package/dist/patterns/collection-editor/CollectionEditor.d.ts.map +1 -1
  198. package/dist/patterns/collection-editor/CollectionEditor.js +5 -5
  199. package/dist/patterns/collection-editor/CollectionEditor.js.map +1 -1
  200. package/dist/patterns/confirm-dialog/ConfirmDialog.d.ts.map +1 -1
  201. package/dist/patterns/confirm-dialog/ConfirmDialog.js +4 -4
  202. package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
  203. package/dist/patterns/disclosure-section/DisclosureSection.d.ts.map +1 -1
  204. package/dist/patterns/disclosure-section/DisclosureSection.js +4 -3
  205. package/dist/patterns/disclosure-section/DisclosureSection.js.map +1 -1
  206. package/dist/patterns/empty-state/EmptyState.d.ts.map +1 -1
  207. package/dist/patterns/empty-state/EmptyState.js +4 -4
  208. package/dist/patterns/empty-state/EmptyState.js.map +1 -1
  209. package/dist/patterns/filter-bar/FilterBar.d.ts.map +1 -1
  210. package/dist/patterns/filter-bar/FilterBar.js +1 -1
  211. package/dist/patterns/filter-bar/FilterBar.js.map +1 -1
  212. package/dist/patterns/hero/Hero.d.ts.map +1 -1
  213. package/dist/patterns/hero/Hero.js +10 -6
  214. package/dist/patterns/hero/Hero.js.map +1 -1
  215. package/dist/patterns/image-preview/ImagePreview.d.ts.map +1 -1
  216. package/dist/patterns/image-preview/ImagePreview.js +1 -1
  217. package/dist/patterns/image-preview/ImagePreview.js.map +1 -1
  218. package/dist/patterns/image-upload-field/ImageUploadField.d.ts.map +1 -1
  219. package/dist/patterns/image-upload-field/ImageUploadField.js +19 -13
  220. package/dist/patterns/image-upload-field/ImageUploadField.js.map +1 -1
  221. package/dist/patterns/inspector-field/InspectorField.d.ts.map +1 -1
  222. package/dist/patterns/inspector-field/InspectorField.js +1 -1
  223. package/dist/patterns/inspector-field/InspectorField.js.map +1 -1
  224. package/dist/patterns/message-bubble/MessageBubble.d.ts.map +1 -1
  225. package/dist/patterns/message-bubble/MessageBubble.js +2 -2
  226. package/dist/patterns/message-bubble/MessageBubble.js.map +1 -1
  227. package/dist/patterns/notice/Notice.d.ts.map +1 -1
  228. package/dist/patterns/notice/Notice.js +1 -1
  229. package/dist/patterns/notice/Notice.js.map +1 -1
  230. package/dist/patterns/post-card/PostCard.d.ts.map +1 -1
  231. package/dist/patterns/post-card/PostCard.js +2 -2
  232. package/dist/patterns/post-card/PostCard.js.map +1 -1
  233. package/dist/patterns/product-card/ProductCard.d.ts.map +1 -1
  234. package/dist/patterns/product-card/ProductCard.js +4 -4
  235. package/dist/patterns/product-card/ProductCard.js.map +1 -1
  236. package/dist/patterns/product-card/types.d.ts +2 -1
  237. package/dist/patterns/product-card/types.d.ts.map +1 -1
  238. package/dist/patterns/product-card/types.js.map +1 -1
  239. package/dist/patterns/responsive-panel/ResponsivePanel.d.ts.map +1 -1
  240. package/dist/patterns/responsive-panel/ResponsivePanel.js +13 -4
  241. package/dist/patterns/responsive-panel/ResponsivePanel.js.map +1 -1
  242. package/dist/patterns/scanner/BarcodeScannerView.d.ts.map +1 -1
  243. package/dist/patterns/scanner/BarcodeScannerView.js +3 -3
  244. package/dist/patterns/scanner/BarcodeScannerView.js.map +1 -1
  245. package/dist/patterns/scanner/CameraPermissionView.d.ts.map +1 -1
  246. package/dist/patterns/scanner/CameraPermissionView.js +4 -4
  247. package/dist/patterns/scanner/CameraPermissionView.js.map +1 -1
  248. package/dist/patterns/scanner/ScanOverlay.d.ts.map +1 -1
  249. package/dist/patterns/scanner/ScanOverlay.js +1 -1
  250. package/dist/patterns/scanner/ScanOverlay.js.map +1 -1
  251. package/dist/patterns/section-header/SectionHeader.d.ts.map +1 -1
  252. package/dist/patterns/section-header/SectionHeader.js +1 -1
  253. package/dist/patterns/section-header/SectionHeader.js.map +1 -1
  254. package/dist/patterns/selection/SelectableItem.d.ts +1 -1
  255. package/dist/patterns/selection/SelectableItem.d.ts.map +1 -1
  256. package/dist/patterns/selection/SelectableItem.js +15 -5
  257. package/dist/patterns/selection/SelectableItem.js.map +1 -1
  258. package/dist/patterns/selection/SelectionProvider.d.ts +1 -1
  259. package/dist/patterns/selection/SelectionProvider.d.ts.map +1 -1
  260. package/dist/patterns/selection/SelectionProvider.js +4 -2
  261. package/dist/patterns/selection/SelectionProvider.js.map +1 -1
  262. package/dist/patterns/selection/types.d.ts +3 -0
  263. package/dist/patterns/selection/types.d.ts.map +1 -1
  264. package/dist/patterns/selection/types.js.map +1 -1
  265. package/dist/patterns/settings-row/SettingsRow.d.ts.map +1 -1
  266. package/dist/patterns/settings-row/SettingsRow.js +3 -3
  267. package/dist/patterns/settings-row/SettingsRow.js.map +1 -1
  268. package/dist/patterns/switch-field/SwitchField.d.ts.map +1 -1
  269. package/dist/patterns/switch-field/SwitchField.js +2 -2
  270. package/dist/patterns/switch-field/SwitchField.js.map +1 -1
  271. package/dist/patterns/tile-grid/TileGrid.d.ts.map +1 -1
  272. package/dist/patterns/tile-grid/TileGrid.js +1 -1
  273. package/dist/patterns/tile-grid/TileGrid.js.map +1 -1
  274. package/dist/patterns/timeline/Timeline.d.ts.map +1 -1
  275. package/dist/patterns/timeline/Timeline.js +1 -1
  276. package/dist/patterns/timeline/Timeline.js.map +1 -1
  277. package/dist/patterns/tree-view/TreeItem.d.ts.map +1 -1
  278. package/dist/patterns/tree-view/TreeItem.js +3 -3
  279. package/dist/patterns/tree-view/TreeItem.js.map +1 -1
  280. package/dist/patterns/tree-view/TreeView.d.ts.map +1 -1
  281. package/dist/patterns/tree-view/TreeView.js +4 -2
  282. package/dist/patterns/tree-view/TreeView.js.map +1 -1
  283. package/dist/patterns/zora-drawer-content/ZoraDrawerContent.d.ts.map +1 -1
  284. package/dist/patterns/zora-drawer-content/ZoraDrawerContent.js +2 -2
  285. package/dist/patterns/zora-drawer-content/ZoraDrawerContent.js.map +1 -1
  286. package/dist/patterns/zora-tab-bar/ZoraTabBar.d.ts.map +1 -1
  287. package/dist/patterns/zora-tab-bar/ZoraTabBar.js +5 -3
  288. package/dist/patterns/zora-tab-bar/ZoraTabBar.js.map +1 -1
  289. package/dist/registry.d.ts +1 -1
  290. package/dist/registry.d.ts.map +1 -1
  291. package/dist/registry.js +2 -1
  292. package/dist/registry.js.map +1 -1
  293. package/dist/theme/ZoraBaseProps.d.ts +6 -0
  294. package/dist/theme/ZoraBaseProps.d.ts.map +1 -1
  295. package/dist/theme/ZoraBaseProps.js.map +1 -1
  296. package/package.json +2 -2
  297. package/src/components/app-bar/AppBar.tsx +3 -0
  298. package/src/components/avatar/Avatar.tsx +1 -0
  299. package/src/components/avatar-group/AvatarGroup.tsx +1 -0
  300. package/src/components/badge/Badge.tsx +1 -0
  301. package/src/components/breadcrumbs/Breadcrumbs.tsx +2 -0
  302. package/src/components/button/Button.tsx +8 -1
  303. package/src/components/button-group/ButtonGroup.tsx +1 -0
  304. package/src/components/card/Card.tsx +3 -1
  305. package/src/components/checkbox/Checkbox.tsx +7 -2
  306. package/src/components/checkbox/CheckboxGroup.tsx +8 -0
  307. package/src/components/chip/Chip.tsx +8 -1
  308. package/src/components/chip-group/ChipGroup.tsx +5 -0
  309. package/src/components/data-table/DataTable.tsx +25 -8
  310. package/src/components/date-picker/DatePicker.tsx +26 -3
  311. package/src/components/drawer/Drawer.tsx +2 -1
  312. package/src/components/form/Form.tsx +5 -0
  313. package/src/components/form/FormActions.tsx +8 -1
  314. package/src/components/form/FormError.tsx +7 -1
  315. package/src/components/form/FormField.tsx +3 -0
  316. package/src/components/gradient/Gradient.tsx +1 -0
  317. package/src/components/heading/Heading.tsx +3 -2
  318. package/src/components/icon/Icon.tsx +6 -1
  319. package/src/components/icon-button/IconButton.tsx +2 -0
  320. package/src/components/image/Image.tsx +6 -1
  321. package/src/components/input/Input.tsx +3 -0
  322. package/src/components/media-card/MediaCard.tsx +2 -0
  323. package/src/components/metric-card/MetricCard.tsx +2 -0
  324. package/src/components/modal/Modal.tsx +2 -1
  325. package/src/components/navigation-item/NavigationItem.tsx +2 -0
  326. package/src/components/navigation-list/NavigationList.tsx +3 -0
  327. package/src/components/pagination/Pagination.tsx +8 -1
  328. package/src/components/progress/Progress.tsx +1 -0
  329. package/src/components/radio/Radio.tsx +2 -2
  330. package/src/components/radio/RadioGroup.tsx +8 -0
  331. package/src/components/rating/Rating.tsx +1 -0
  332. package/src/components/search-bar/SearchBar.tsx +7 -1
  333. package/src/components/select/Select.tsx +30 -21
  334. package/src/components/tabs/Tabs.tsx +17 -3
  335. package/src/components/text/Text.tsx +1 -0
  336. package/src/components/textarea/Textarea.tsx +2 -0
  337. package/src/components/time-picker/TimePicker.tsx +19 -2
  338. package/src/components/toolbar/Toolbar.tsx +1 -0
  339. package/src/foundation/Box.tsx +6 -1
  340. package/src/foundation/Center.tsx +6 -1
  341. package/src/foundation/Container.tsx +6 -1
  342. package/src/foundation/Divider.tsx +6 -1
  343. package/src/foundation/Grid.tsx +6 -1
  344. package/src/foundation/Inline.tsx +6 -1
  345. package/src/foundation/Show.tsx +6 -1
  346. package/src/foundation/Spacer.tsx +6 -1
  347. package/src/foundation/Stack.tsx +6 -1
  348. package/src/foundation/Surface.tsx +6 -1
  349. package/src/interactionPolicy.test.ts +226 -0
  350. package/src/layout/app-shell/AppShell.tsx +1 -0
  351. package/src/layout/screen/Screen.tsx +1 -0
  352. package/src/layout/screen-section/ScreenSection.tsx +1 -0
  353. package/src/layout/settings-layout/SettingsLayout.tsx +1 -0
  354. package/src/layout/sidebar-layout/SidebarLayout.tsx +1 -0
  355. package/src/layout/topbar-layout/TopbarLayout.tsx +1 -0
  356. package/src/patterns/auth/ForgotPasswordForm.tsx +3 -0
  357. package/src/patterns/auth/OAuthProviderButton.tsx +2 -0
  358. package/src/patterns/auth/OAuthProviderList.tsx +2 -0
  359. package/src/patterns/auth/OtpForm.tsx +3 -0
  360. package/src/patterns/auth/SignInForm.tsx +4 -0
  361. package/src/patterns/auth/SignUpForm.tsx +3 -0
  362. package/src/patterns/chat-list-item/ChatListItem.tsx +2 -0
  363. package/src/patterns/collection-editor/CollectionEditor.tsx +12 -1
  364. package/src/patterns/confirm-dialog/ConfirmDialog.tsx +15 -2
  365. package/src/patterns/disclosure-section/DisclosureSection.tsx +4 -1
  366. package/src/patterns/empty-state/EmptyState.tsx +4 -0
  367. package/src/patterns/filter-bar/FilterBar.tsx +1 -0
  368. package/src/patterns/hero/Hero.tsx +14 -4
  369. package/src/patterns/image-preview/ImagePreview.tsx +1 -0
  370. package/src/patterns/image-upload-field/ImageUploadField.tsx +30 -9
  371. package/src/patterns/inspector-field/InspectorField.tsx +1 -0
  372. package/src/patterns/message-bubble/MessageBubble.tsx +2 -0
  373. package/src/patterns/notice/Notice.tsx +1 -0
  374. package/src/patterns/post-card/PostCard.tsx +2 -0
  375. package/src/patterns/product-card/ProductCard.tsx +19 -3
  376. package/src/patterns/product-card/types.ts +3 -1
  377. package/src/patterns/responsive-panel/ResponsivePanel.tsx +15 -2
  378. package/src/patterns/scanner/BarcodeScannerView.tsx +3 -0
  379. package/src/patterns/scanner/CameraPermissionView.tsx +4 -0
  380. package/src/patterns/scanner/ScanOverlay.tsx +1 -0
  381. package/src/patterns/section-header/SectionHeader.tsx +1 -0
  382. package/src/patterns/selection/SelectableItem.tsx +16 -4
  383. package/src/patterns/selection/SelectionProvider.tsx +3 -1
  384. package/src/patterns/selection/types.ts +3 -0
  385. package/src/patterns/settings-row/SettingsRow.tsx +4 -2
  386. package/src/patterns/switch-field/SwitchField.tsx +9 -1
  387. package/src/patterns/tile-grid/TileGrid.tsx +1 -0
  388. package/src/patterns/timeline/Timeline.tsx +1 -0
  389. package/src/patterns/tree-view/TreeItem.tsx +3 -0
  390. package/src/patterns/tree-view/TreeView.tsx +3 -0
  391. package/src/patterns/zora-drawer-content/ZoraDrawerContent.tsx +2 -0
  392. package/src/patterns/zora-tab-bar/ZoraTabBar.tsx +11 -2
  393. package/src/registry.test.ts +47 -14
  394. package/src/registry.ts +29 -3
  395. package/src/theme/ZoraBaseProps.ts +8 -0
@@ -16,6 +16,7 @@ function TreeViewInner<TId extends string = string>({
16
16
  onExpandedChange,
17
17
  renderItem,
18
18
  testID,
19
+ interactionPolicy,
19
20
  }: TreeViewProps<TId>) {
20
21
  const [internalExpandedIds, setInternalExpandedIds] = React.useState<readonly TId[]>(
21
22
  defaultExpandedIds ?? [],
@@ -25,6 +26,7 @@ function TreeViewInner<TId extends string = string>({
25
26
  const expandedIds = isControlled ? controlledExpandedIds : internalExpandedIds;
26
27
 
27
28
  const handleToggleExpand = (id: TId) => {
29
+ if (interactionPolicy === 'passive') return;
28
30
  const isExpanded = expandedIds.includes(id);
29
31
  const newIds = isExpanded ? expandedIds.filter((eid) => eid !== id) : [...expandedIds, id];
30
32
 
@@ -46,6 +48,7 @@ function TreeViewInner<TId extends string = string>({
46
48
  onToggleExpand={handleToggleExpand}
47
49
  renderItem={renderItem}
48
50
  selectedId={selectedId}
51
+ interactionPolicy={interactionPolicy}
49
52
  />
50
53
  ))}
51
54
  </Stack>
@@ -11,6 +11,7 @@ import type { ZoraDrawerContentProps } from './types';
11
11
  function ZoraDrawerContentInner({
12
12
  themeId: _themeId,
13
13
  mode: _mode,
14
+ interactionPolicy,
14
15
  state,
15
16
  navigation,
16
17
  descriptors,
@@ -44,6 +45,7 @@ function ZoraDrawerContentInner({
44
45
  compact={compact}
45
46
  footer={footer}
46
47
  header={header}
48
+ interactionPolicy={interactionPolicy}
47
49
  items={items}
48
50
  testID={testID}
49
51
  />
@@ -33,6 +33,7 @@ function resolveAccessibilityLabel(
33
33
  function ZoraTabBarInner({
34
34
  themeId: _themeId,
35
35
  mode: _mode,
36
+ interactionPolicy,
36
37
  state,
37
38
  navigation,
38
39
  descriptors,
@@ -88,7 +89,11 @@ function ZoraTabBarInner({
88
89
  accessibilityState={{ selected: active, disabled }}
89
90
  disabled={disabled}
90
91
  key={item.route.key}
91
- onPress={createTabBarItemPressHandler({ item, navigation })}
92
+ onPress={
93
+ interactionPolicy === 'passive'
94
+ ? undefined
95
+ : createTabBarItemPressHandler({ item, navigation })
96
+ }
92
97
  style={{
93
98
  alignItems: 'center',
94
99
  backgroundColor,
@@ -135,7 +140,11 @@ function ZoraTabBarInner({
135
140
  }
136
141
 
137
142
  return (
138
- <Surface variant="raised" testID={testID ? `${testID}-chrome` : undefined}>
143
+ <Surface
144
+ interactionPolicy={interactionPolicy}
145
+ testID={testID ? `${testID}-chrome` : undefined}
146
+ variant="raised"
147
+ >
139
148
  {content}
140
149
  </Surface>
141
150
  );
@@ -3,6 +3,48 @@ import { describe, expect, test } from 'bun:test';
3
3
  import type { ZoraComponentRegistry } from './index';
4
4
 
5
5
  const NON_RUNTIME_COMPONENT_EXPORTS = new Set(['SelectionProvider', 'ToastProvider']);
6
+ const REGISTRY_SNAPSHOT_PREFIX = 'ZORA_REGISTRY_SNAPSHOT:';
7
+
8
+ let registryEntriesPromise: Promise<readonly string[]> | undefined;
9
+
10
+ async function listRuntimeRegistryEntries(): Promise<readonly string[]> {
11
+ registryEntriesPromise ??= (async () => {
12
+ const subprocess = Bun.spawn({
13
+ cmd: [process.execPath, 'test', 'test-fixtures/registrySnapshot.test.ts'],
14
+ stdout: 'pipe',
15
+ stderr: 'pipe',
16
+ });
17
+ const [stdout, stderr, exitCode] = await Promise.all([
18
+ new Response(subprocess.stdout).text(),
19
+ new Response(subprocess.stderr).text(),
20
+ subprocess.exited,
21
+ ]);
22
+
23
+ if (exitCode !== 0) {
24
+ throw new Error(`Failed to inspect ZORA_COMPONENT_REGISTRY:\n${stdout}\n${stderr}`);
25
+ }
26
+
27
+ const output = `${stdout}\n${stderr}`;
28
+ const escapedPrefix = REGISTRY_SNAPSHOT_PREFIX.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
29
+ const snapshotJson = new RegExp(`${escapedPrefix}(\\[[^\\r\\n]*\\])`).exec(output)?.[1];
30
+
31
+ if (!snapshotJson) {
32
+ throw new Error('Registry snapshot subprocess did not emit a registry snapshot.');
33
+ }
34
+
35
+ const parsed: unknown = JSON.parse(snapshotJson);
36
+ if (
37
+ !Array.isArray(parsed) ||
38
+ !parsed.every((entry): entry is string => typeof entry === 'string')
39
+ ) {
40
+ throw new Error('Registry snapshot must be a JSON array of component names.');
41
+ }
42
+
43
+ return parsed;
44
+ })();
45
+
46
+ return registryEntriesPromise;
47
+ }
6
48
 
7
49
  async function listPublicConcreteComponentExports(): Promise<readonly string[]> {
8
50
  const source = await Bun.file('src/index.ts').text();
@@ -18,24 +60,15 @@ async function listPublicConcreteComponentExports(): Promise<readonly string[]>
18
60
  .sort();
19
61
  }
20
62
 
21
- async function listRegistryEntries(): Promise<readonly string[]> {
22
- const source = await Bun.file('src/registry.ts').text();
23
- const registryObject =
24
- /export const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = \{([\s\S]+)\n\};/.exec(source);
25
-
26
- expect(registryObject).not.toBeNull();
27
-
28
- return Array.from((registryObject?.[1] ?? '').matchAll(/^ {2}([A-Z][A-Za-z0-9]+),$/gm))
29
- .map((match) => match[1])
30
- .sort();
31
- }
32
-
33
63
  describe('ZORA_COMPONENT_REGISTRY', () => {
34
64
  test('is exported from the public root API', async () => {
35
65
  const source = await Bun.file('src/index.ts').text();
36
66
  const registry: ZoraComponentRegistry = {};
67
+ const registryEntries = await listRuntimeRegistryEntries();
37
68
 
38
69
  expect(registry).toEqual({});
70
+ expect(registryEntries).toContain('Screen');
71
+ expect(registryEntries).toContain('Box');
39
72
  expect(source).toContain("export type { ZoraComponentRegistry } from './registry';");
40
73
  expect(source).toContain("export { ZORA_COMPONENT_REGISTRY } from './registry';");
41
74
  });
@@ -43,11 +76,11 @@ describe('ZORA_COMPONENT_REGISTRY', () => {
43
76
  test('covers every public concrete ZORA component export supported for runtime rendering', async () => {
44
77
  const publicComponentExports = await listPublicConcreteComponentExports();
45
78
 
46
- expect(await listRegistryEntries()).toEqual(publicComponentExports);
79
+ expect(await listRuntimeRegistryEntries()).toEqual(publicComponentExports);
47
80
  });
48
81
 
49
82
  test('does not register provider-only exports', async () => {
50
- const registryEntries = await listRegistryEntries();
83
+ const registryEntries = await listRuntimeRegistryEntries();
51
84
 
52
85
  expect(registryEntries).not.toContain('ToastProvider');
53
86
  expect(registryEntries).not.toContain('SelectionProvider');
package/src/registry.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { InteractionPolicyProps } from '@ankhorage/surface';
1
2
  import type React from 'react';
2
3
 
3
4
  import { ActionSheet, ActionSheetItem } from './components/action-sheet';
@@ -97,9 +98,32 @@ import { TreeItem, TreeView } from './patterns/tree-view';
97
98
  import { ZoraDrawerContent } from './patterns/zora-drawer-content';
98
99
  import { ZoraTabBar } from './patterns/zora-tab-bar';
99
100
 
100
- export type ZoraComponentRegistry = Record<string, React.ElementType>;
101
+ export type ZoraComponentRegistry = Readonly<Record<string, React.ElementType>>;
101
102
 
102
- export const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = {
103
+ type ComponentPropsFor<K extends keyof typeof _ZORA_COMPONENT_REGISTRY> = React.ComponentProps<
104
+ (typeof _ZORA_COMPONENT_REGISTRY)[K]
105
+ >;
106
+
107
+ type AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P
108
+ ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>
109
+ ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps
110
+ ? true
111
+ : false
112
+ : false
113
+ : false;
114
+
115
+ type RegistryInteractionPolicyContract = {
116
+ [K in keyof typeof _ZORA_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<
117
+ ComponentPropsFor<K>
118
+ >;
119
+ };
120
+
121
+ type _AssertTrue<T extends true> = T;
122
+ type _RegistryInteractionPolicyCheck = _AssertTrue<
123
+ RegistryInteractionPolicyContract[keyof typeof _ZORA_COMPONENT_REGISTRY]
124
+ >;
125
+
126
+ const _ZORA_COMPONENT_REGISTRY = {
103
127
  ActionSheet,
104
128
  ActionSheetItem,
105
129
  AppBar,
@@ -209,4 +233,6 @@ export const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = {
209
233
  TreeView,
210
234
  ZoraDrawerContent,
211
235
  ZoraTabBar,
212
- };
236
+ } as const satisfies ZoraComponentRegistry;
237
+
238
+ export const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_COMPONENT_REGISTRY;
@@ -1,3 +1,5 @@
1
+ import type { InteractionPolicy } from '@ankhorage/surface';
2
+
1
3
  import type { ZoraThemeId, ZoraThemeMode } from './types';
2
4
 
3
5
  export interface ZoraBaseProps {
@@ -17,4 +19,10 @@ export interface ZoraBaseProps {
17
19
  mode?: ZoraThemeMode;
18
20
 
19
21
  testID?: string;
22
+
23
+ /**
24
+ * Controls whether user interaction is enabled or suppressed.
25
+ * When omitted, the component behaves as enabled.
26
+ */
27
+ interactionPolicy?: InteractionPolicy;
20
28
  }