@ankhorage/zora 2.8.7 → 2.9.1

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 (394) hide show
  1. package/CHANGELOG.md +13 -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.map +1 -1
  290. package/dist/registry.js +2 -1
  291. package/dist/registry.js.map +1 -1
  292. package/dist/theme/ZoraBaseProps.d.ts +6 -0
  293. package/dist/theme/ZoraBaseProps.d.ts.map +1 -1
  294. package/dist/theme/ZoraBaseProps.js.map +1 -1
  295. package/package.json +4 -4
  296. package/src/components/app-bar/AppBar.tsx +3 -0
  297. package/src/components/avatar/Avatar.tsx +1 -0
  298. package/src/components/avatar-group/AvatarGroup.tsx +1 -0
  299. package/src/components/badge/Badge.tsx +1 -0
  300. package/src/components/breadcrumbs/Breadcrumbs.tsx +2 -0
  301. package/src/components/button/Button.tsx +8 -1
  302. package/src/components/button-group/ButtonGroup.tsx +1 -0
  303. package/src/components/card/Card.tsx +3 -1
  304. package/src/components/checkbox/Checkbox.tsx +7 -2
  305. package/src/components/checkbox/CheckboxGroup.tsx +8 -0
  306. package/src/components/chip/Chip.tsx +8 -1
  307. package/src/components/chip-group/ChipGroup.tsx +5 -0
  308. package/src/components/data-table/DataTable.tsx +25 -8
  309. package/src/components/date-picker/DatePicker.tsx +26 -3
  310. package/src/components/drawer/Drawer.tsx +2 -1
  311. package/src/components/form/Form.tsx +5 -0
  312. package/src/components/form/FormActions.tsx +8 -1
  313. package/src/components/form/FormError.tsx +7 -1
  314. package/src/components/form/FormField.tsx +3 -0
  315. package/src/components/gradient/Gradient.tsx +1 -0
  316. package/src/components/heading/Heading.tsx +3 -2
  317. package/src/components/icon/Icon.tsx +6 -1
  318. package/src/components/icon-button/IconButton.tsx +2 -0
  319. package/src/components/image/Image.tsx +6 -1
  320. package/src/components/input/Input.tsx +3 -0
  321. package/src/components/media-card/MediaCard.tsx +2 -0
  322. package/src/components/metric-card/MetricCard.tsx +2 -0
  323. package/src/components/modal/Modal.tsx +2 -1
  324. package/src/components/navigation-item/NavigationItem.tsx +2 -0
  325. package/src/components/navigation-list/NavigationList.tsx +3 -0
  326. package/src/components/pagination/Pagination.tsx +8 -1
  327. package/src/components/progress/Progress.tsx +1 -0
  328. package/src/components/radio/Radio.tsx +2 -2
  329. package/src/components/radio/RadioGroup.tsx +8 -0
  330. package/src/components/rating/Rating.tsx +1 -0
  331. package/src/components/search-bar/SearchBar.tsx +7 -1
  332. package/src/components/select/Select.tsx +30 -21
  333. package/src/components/tabs/Tabs.tsx +17 -3
  334. package/src/components/text/Text.tsx +1 -0
  335. package/src/components/textarea/Textarea.tsx +2 -0
  336. package/src/components/time-picker/TimePicker.tsx +19 -2
  337. package/src/components/toolbar/Toolbar.tsx +1 -0
  338. package/src/foundation/Box.tsx +6 -1
  339. package/src/foundation/Center.tsx +6 -1
  340. package/src/foundation/Container.tsx +6 -1
  341. package/src/foundation/Divider.tsx +6 -1
  342. package/src/foundation/Grid.tsx +6 -1
  343. package/src/foundation/Inline.tsx +6 -1
  344. package/src/foundation/Show.tsx +6 -1
  345. package/src/foundation/Spacer.tsx +6 -1
  346. package/src/foundation/Stack.tsx +6 -1
  347. package/src/foundation/Surface.tsx +6 -1
  348. package/src/interactionPolicy.test.ts +226 -0
  349. package/src/layout/app-shell/AppShell.tsx +1 -0
  350. package/src/layout/screen/Screen.tsx +1 -0
  351. package/src/layout/screen-section/ScreenSection.tsx +1 -0
  352. package/src/layout/settings-layout/SettingsLayout.tsx +1 -0
  353. package/src/layout/sidebar-layout/SidebarLayout.tsx +1 -0
  354. package/src/layout/topbar-layout/TopbarLayout.tsx +1 -0
  355. package/src/patterns/auth/ForgotPasswordForm.tsx +3 -0
  356. package/src/patterns/auth/OAuthProviderButton.tsx +2 -0
  357. package/src/patterns/auth/OAuthProviderList.tsx +2 -0
  358. package/src/patterns/auth/OtpForm.tsx +3 -0
  359. package/src/patterns/auth/SignInForm.tsx +4 -0
  360. package/src/patterns/auth/SignUpForm.tsx +3 -0
  361. package/src/patterns/chat-list-item/ChatListItem.tsx +2 -0
  362. package/src/patterns/collection-editor/CollectionEditor.tsx +12 -1
  363. package/src/patterns/confirm-dialog/ConfirmDialog.tsx +15 -2
  364. package/src/patterns/disclosure-section/DisclosureSection.tsx +4 -1
  365. package/src/patterns/empty-state/EmptyState.tsx +4 -0
  366. package/src/patterns/filter-bar/FilterBar.tsx +1 -0
  367. package/src/patterns/hero/Hero.tsx +14 -4
  368. package/src/patterns/image-preview/ImagePreview.tsx +1 -0
  369. package/src/patterns/image-upload-field/ImageUploadField.tsx +30 -9
  370. package/src/patterns/inspector-field/InspectorField.tsx +1 -0
  371. package/src/patterns/message-bubble/MessageBubble.tsx +2 -0
  372. package/src/patterns/notice/Notice.tsx +1 -0
  373. package/src/patterns/post-card/PostCard.tsx +2 -0
  374. package/src/patterns/product-card/ProductCard.tsx +19 -3
  375. package/src/patterns/product-card/types.ts +3 -1
  376. package/src/patterns/responsive-panel/ResponsivePanel.tsx +15 -2
  377. package/src/patterns/scanner/BarcodeScannerView.tsx +3 -0
  378. package/src/patterns/scanner/CameraPermissionView.tsx +4 -0
  379. package/src/patterns/scanner/ScanOverlay.tsx +1 -0
  380. package/src/patterns/section-header/SectionHeader.tsx +1 -0
  381. package/src/patterns/selection/SelectableItem.tsx +16 -4
  382. package/src/patterns/selection/SelectionProvider.tsx +3 -1
  383. package/src/patterns/selection/types.ts +3 -0
  384. package/src/patterns/settings-row/SettingsRow.tsx +4 -2
  385. package/src/patterns/switch-field/SwitchField.tsx +9 -1
  386. package/src/patterns/tile-grid/TileGrid.tsx +1 -0
  387. package/src/patterns/timeline/Timeline.tsx +1 -0
  388. package/src/patterns/tree-view/TreeItem.tsx +3 -0
  389. package/src/patterns/tree-view/TreeView.tsx +3 -0
  390. package/src/patterns/zora-drawer-content/ZoraDrawerContent.tsx +2 -0
  391. package/src/patterns/zora-tab-bar/ZoraTabBar.tsx +11 -2
  392. package/src/registry.test.ts +53 -102
  393. package/src/registry.ts +28 -2
  394. 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
  );
@@ -1,104 +1,51 @@
1
- import { describe, expect, mock, test } from 'bun:test';
1
+ import { describe, expect, test } from 'bun:test';
2
2
 
3
3
  import type { ZoraComponentRegistry } from './index';
4
4
 
5
5
  const NON_RUNTIME_COMPONENT_EXPORTS = new Set(['SelectionProvider', 'ToastProvider']);
6
-
7
- function createMockComponent() {
8
- return null;
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;
9
47
  }
10
48
 
11
- const surfaceMockComponentNames = [
12
- 'ActionSheet',
13
- 'ActionSheetItem',
14
- 'AppBar',
15
- 'Badge',
16
- 'Box',
17
- 'Button',
18
- 'ButtonBase',
19
- 'Card',
20
- 'Center',
21
- 'Checkbox',
22
- 'Container',
23
- 'Divider',
24
- 'Drawer',
25
- 'DrawerNavigation',
26
- 'Field',
27
- 'Grid',
28
- 'Icon',
29
- 'IconButton',
30
- 'Image',
31
- 'Inline',
32
- 'Menu',
33
- 'Modal',
34
- 'NavigationItem',
35
- 'NavigationList',
36
- 'Radio',
37
- 'ScrollArea',
38
- 'Show',
39
- 'Spacer',
40
- 'Stack',
41
- 'Surface',
42
- 'Switch',
43
- 'Text',
44
- 'Textarea',
45
- 'ThemeProvider',
46
- 'Toast',
47
- 'ToastProvider',
48
- ] as const;
49
-
50
- const surfaceComponentMocks = Object.fromEntries(
51
- surfaceMockComponentNames.map((name) => [name, createMockComponent]),
52
- );
53
-
54
- await mock.module('react-native', () => ({
55
- Image: createMockComponent,
56
- Platform: {
57
- OS: 'web',
58
- select: <T>(options: Partial<Record<string, T>>): T | undefined =>
59
- options.web ?? options.default,
60
- },
61
- Pressable: createMockComponent,
62
- ScrollView: createMockComponent,
63
- StyleSheet: {
64
- create: <T>(styles: T): T => styles,
65
- flatten: <T>(style: T): T => style,
66
- },
67
- Text: createMockComponent,
68
- View: createMockComponent,
69
- }));
70
-
71
- await mock.module('@ankhorage/surface', () => ({
72
- ...surfaceComponentMocks,
73
- ThemeContext: {
74
- Provider: createMockComponent,
75
- },
76
- createTheme: () => ({}),
77
- resolveResponsive: <T>(value: T): T => value,
78
- useFontContext: () => ({ activeFontId: undefined }),
79
- useResponsiveRuntime: () => ({ breakpoint: 'base' }),
80
- useTheme: () => ({
81
- mode: 'light',
82
- setMode: () => undefined,
83
- setThemeConfig: () => undefined,
84
- theme: {},
85
- }),
86
- useToast: () => ({
87
- dismiss: () => undefined,
88
- show: () => undefined,
89
- }),
90
- }));
91
-
92
- await mock.module('@react-native-picker/picker', () => ({
93
- Picker: createMockComponent,
94
- }));
95
-
96
- await mock.module('expo-linear-gradient', () => ({
97
- LinearGradient: createMockComponent,
98
- }));
99
-
100
- const { ZORA_COMPONENT_REGISTRY } = await import('./registry');
101
-
102
49
  async function listPublicConcreteComponentExports(): Promise<readonly string[]> {
103
50
  const source = await Bun.file('src/index.ts').text();
104
51
  return Array.from(
@@ -116,10 +63,12 @@ async function listPublicConcreteComponentExports(): Promise<readonly string[]>
116
63
  describe('ZORA_COMPONENT_REGISTRY', () => {
117
64
  test('is exported from the public root API', async () => {
118
65
  const source = await Bun.file('src/index.ts').text();
119
- const registry: ZoraComponentRegistry = ZORA_COMPONENT_REGISTRY;
66
+ const registry: ZoraComponentRegistry = {};
67
+ const registryEntries = await listRuntimeRegistryEntries();
120
68
 
121
- expect(registry.Screen).toBeDefined();
122
- expect(registry.Box).toBeDefined();
69
+ expect(registry).toEqual({});
70
+ expect(registryEntries).toContain('Screen');
71
+ expect(registryEntries).toContain('Box');
123
72
  expect(source).toContain("export type { ZoraComponentRegistry } from './registry';");
124
73
  expect(source).toContain("export { ZORA_COMPONENT_REGISTRY } from './registry';");
125
74
  });
@@ -127,11 +76,13 @@ describe('ZORA_COMPONENT_REGISTRY', () => {
127
76
  test('covers every public concrete ZORA component export supported for runtime rendering', async () => {
128
77
  const publicComponentExports = await listPublicConcreteComponentExports();
129
78
 
130
- expect(Object.keys(ZORA_COMPONENT_REGISTRY).sort()).toEqual(publicComponentExports);
79
+ expect(await listRuntimeRegistryEntries()).toEqual(publicComponentExports);
131
80
  });
132
81
 
133
- test('does not register provider-only exports', () => {
134
- expect(ZORA_COMPONENT_REGISTRY.ToastProvider).toBeUndefined();
135
- expect(ZORA_COMPONENT_REGISTRY.SelectionProvider).toBeUndefined();
82
+ test('does not register provider-only exports', async () => {
83
+ const registryEntries = await listRuntimeRegistryEntries();
84
+
85
+ expect(registryEntries).not.toContain('ToastProvider');
86
+ expect(registryEntries).not.toContain('SelectionProvider');
136
87
  });
137
88
  });
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';
@@ -99,7 +100,30 @@ import { ZoraTabBar } from './patterns/zora-tab-bar';
99
100
 
100
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
  }