@ankhorage/zora 2.8.7 → 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 (394) hide show
  1. package/CHANGELOG.md +6 -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 +2 -2
  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
@@ -9,7 +9,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
9
9
 
10
10
  export interface CenterProps extends ZoraBaseProps, Omit<SurfaceCenterProps, 'mode' | 'themeId'> {}
11
11
 
12
- function CenterInner({ themeId: _themeId, mode: _mode, ...props }: CenterProps) {
12
+ function CenterInner({
13
+ themeId: _themeId,
14
+ mode: _mode,
15
+ interactionPolicy: _interactionPolicy,
16
+ ...props
17
+ }: CenterProps) {
13
18
  return <SurfaceCenter {...props} />;
14
19
  }
15
20
 
@@ -10,7 +10,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
10
10
  export interface ContainerProps
11
11
  extends ZoraBaseProps, Omit<SurfaceContainerProps, 'mode' | 'themeId'> {}
12
12
 
13
- function ContainerInner({ themeId: _themeId, mode: _mode, ...props }: ContainerProps) {
13
+ function ContainerInner({
14
+ themeId: _themeId,
15
+ mode: _mode,
16
+ interactionPolicy: _interactionPolicy,
17
+ ...props
18
+ }: ContainerProps) {
14
19
  return <SurfaceContainer {...props} />;
15
20
  }
16
21
 
@@ -10,7 +10,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
10
10
  export interface DividerProps
11
11
  extends ZoraBaseProps, Omit<SurfaceDividerProps, 'mode' | 'themeId'> {}
12
12
 
13
- function DividerInner({ themeId: _themeId, mode: _mode, ...props }: DividerProps) {
13
+ function DividerInner({
14
+ themeId: _themeId,
15
+ mode: _mode,
16
+ interactionPolicy: _interactionPolicy,
17
+ ...props
18
+ }: DividerProps) {
14
19
  return <SurfaceDivider {...props} />;
15
20
  }
16
21
 
@@ -6,7 +6,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
6
6
 
7
7
  export interface GridProps extends ZoraBaseProps, Omit<SurfaceGridProps, 'mode' | 'themeId'> {}
8
8
 
9
- function GridInner({ themeId: _themeId, mode: _mode, ...props }: GridProps) {
9
+ function GridInner({
10
+ themeId: _themeId,
11
+ mode: _mode,
12
+ interactionPolicy: _interactionPolicy,
13
+ ...props
14
+ }: GridProps) {
10
15
  return <SurfaceGrid {...props} />;
11
16
  }
12
17
 
@@ -9,7 +9,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
9
9
 
10
10
  export interface InlineProps extends ZoraBaseProps, Omit<SurfaceInlineProps, 'mode' | 'themeId'> {}
11
11
 
12
- function InlineInner({ themeId: _themeId, mode: _mode, ...props }: InlineProps) {
12
+ function InlineInner({
13
+ themeId: _themeId,
14
+ mode: _mode,
15
+ interactionPolicy: _interactionPolicy,
16
+ ...props
17
+ }: InlineProps) {
13
18
  return <SurfaceInline {...props} />;
14
19
  }
15
20
 
@@ -6,7 +6,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
6
6
 
7
7
  export interface ShowProps extends ZoraBaseProps, Omit<SurfaceShowProps, 'mode' | 'themeId'> {}
8
8
 
9
- function ShowInner({ themeId: _themeId, mode: _mode, ...props }: ShowProps) {
9
+ function ShowInner({
10
+ themeId: _themeId,
11
+ mode: _mode,
12
+ interactionPolicy: _interactionPolicy,
13
+ ...props
14
+ }: ShowProps) {
10
15
  return <SurfaceShow {...props} />;
11
16
  }
12
17
 
@@ -9,7 +9,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
9
9
 
10
10
  export interface SpacerProps extends ZoraBaseProps, Omit<SurfaceSpacerProps, 'mode' | 'themeId'> {}
11
11
 
12
- function SpacerInner({ themeId: _themeId, mode: _mode, ...props }: SpacerProps) {
12
+ function SpacerInner({
13
+ themeId: _themeId,
14
+ mode: _mode,
15
+ interactionPolicy: _interactionPolicy,
16
+ ...props
17
+ }: SpacerProps) {
13
18
  return <SurfaceSpacer {...props} />;
14
19
  }
15
20
 
@@ -6,7 +6,12 @@ import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
6
6
 
7
7
  export interface StackProps extends ZoraBaseProps, Omit<SurfaceStackProps, 'mode' | 'themeId'> {}
8
8
 
9
- function StackInner({ themeId: _themeId, mode: _mode, ...props }: StackProps) {
9
+ function StackInner({
10
+ themeId: _themeId,
11
+ mode: _mode,
12
+ interactionPolicy: _interactionPolicy,
13
+ ...props
14
+ }: StackProps) {
10
15
  return <SurfaceStack {...props} />;
11
16
  }
12
17
 
@@ -13,7 +13,12 @@ export type { SurfaceVariant };
13
13
  export interface SurfaceProps
14
14
  extends ZoraBaseProps, Omit<SurfaceSurfaceProps, 'mode' | 'themeId'> {}
15
15
 
16
- function SurfaceInner({ themeId: _themeId, mode: _mode, ...props }: SurfaceProps) {
16
+ function SurfaceInner({
17
+ themeId: _themeId,
18
+ mode: _mode,
19
+ interactionPolicy: _interactionPolicy,
20
+ ...props
21
+ }: SurfaceProps) {
17
22
  return <SurfaceSurface {...props} />;
18
23
  }
19
24
 
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Interaction policy regression guards.
3
+ *
4
+ * These tests verify that internally owned interactions respect the passive
5
+ * policy returned by the canonical Surface type. They use static source
6
+ * inspection so they run fast and do not require a renderer.
7
+ */
8
+
9
+ import { readFileSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+
12
+ import { describe, expect, test } from 'bun:test';
13
+
14
+ const ROOT = join(import.meta.dir, '..');
15
+ const SRC_ROOT = join(ROOT, 'src');
16
+
17
+ function readSource(relativePath: string): string {
18
+ return readFileSync(join(SRC_ROOT, relativePath), 'utf8');
19
+ }
20
+
21
+ function readComponent(...segments: string[]): string {
22
+ return readSource(join('components', ...segments));
23
+ }
24
+
25
+ function readPattern(...segments: string[]): string {
26
+ return readSource(join('patterns', ...segments));
27
+ }
28
+
29
+ describe('InteractionPolicy declaration', () => {
30
+ test('ZoraBaseProps uses the canonical Surface type', () => {
31
+ const source = readSource('theme/ZoraBaseProps.ts');
32
+
33
+ expect(source).toContain("import type { InteractionPolicy } from '@ankhorage/surface';");
34
+ expect(source).toContain('interactionPolicy?: InteractionPolicy;');
35
+ });
36
+
37
+ test('no duplicate local InteractionPolicy type declarations in ZORA source', () => {
38
+ const files = [
39
+ readSource('theme/ZoraBaseProps.ts'),
40
+ readComponent('app-bar', 'types.ts'),
41
+ readComponent('breadcrumbs', 'types.ts'),
42
+ readPattern('empty-state', 'types.ts'),
43
+ readPattern('hero', 'types.ts'),
44
+ readPattern('product-card', 'types.ts'),
45
+ readPattern('scanner', 'types.ts'),
46
+ readPattern('zora-tab-bar', 'types.ts'),
47
+ readComponent('select', 'types.ts'),
48
+ readPattern('tree-view', 'types.ts'),
49
+ ];
50
+
51
+ for (const source of files) {
52
+ expect(source).not.toMatch(/interface.*InteractionPolicy|type\s+InteractionPolicy/);
53
+ }
54
+ });
55
+
56
+ test('registry contract is compile-time only', () => {
57
+ const registrySource = readSource('registry.ts');
58
+
59
+ expect(registrySource).not.toMatch(/type\s+InteractionPolicy/);
60
+ expect(registrySource).toContain(
61
+ "import type { InteractionPolicyProps } from '@ankhorage/surface';",
62
+ );
63
+ expect(registrySource).toMatch(/type\s+AcceptsSurfaceInteractionPolicyProps/);
64
+ });
65
+ });
66
+
67
+ describe('Surface wrapper propagation', () => {
68
+ test('foundation Surface forwards interactionPolicy to Surface', () => {
69
+ const source = readSource('foundation/Surface.tsx');
70
+
71
+ expect(source).toContain('interactionPolicy: _interactionPolicy,');
72
+ expect(source).toContain('<SurfaceSurface');
73
+ });
74
+ });
75
+
76
+ describe('AppBar', () => {
77
+ test('forwards interactionPolicy to internal IconButtons', () => {
78
+ const source = readComponent('app-bar', 'AppBar.tsx');
79
+
80
+ expect(source).not.toMatch(/interactionPolicy:\s*_interactionPolicy/);
81
+ expect(source).toMatch(
82
+ /<IconButton[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?onPress=\{resolvedMode\.onCancel\}/,
83
+ );
84
+ expect(source).toMatch(
85
+ /<IconButton[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?onPress=\{overflow\.onPress\}/,
86
+ );
87
+ });
88
+ });
89
+
90
+ describe('Breadcrumbs', () => {
91
+ test('forwards interactionPolicy to internal Buttons', () => {
92
+ const source = readComponent('breadcrumbs', 'Breadcrumbs.tsx');
93
+
94
+ expect(source).not.toMatch(/interactionPolicy:\s*_interactionPolicy/);
95
+ expect(source).toMatch(
96
+ /<Button[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?onPress=\{item\.onPress\}/,
97
+ );
98
+ });
99
+ });
100
+
101
+ describe('EmptyState', () => {
102
+ test('forwards interactionPolicy to Card and internal Buttons', () => {
103
+ const source = readPattern('empty-state', 'EmptyState.tsx');
104
+
105
+ expect(source).not.toMatch(/interactionPolicy:\s*_interactionPolicy/);
106
+ expect(source).toMatch(/<Card[\s\S]*?interactionPolicy=\{interactionPolicy\}/);
107
+ expect(source).toMatch(
108
+ /<Button[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?variant=\{primaryAction\.variant\}/,
109
+ );
110
+ expect(source).toMatch(
111
+ /<Button[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?variant=\{secondaryAction\.variant/,
112
+ );
113
+ });
114
+ });
115
+
116
+ describe('Hero', () => {
117
+ test('forwards interactionPolicy to Card', () => {
118
+ const source = readPattern('hero', 'Hero.tsx');
119
+
120
+ expect(source).not.toMatch(/interactionPolicy:\s*_interactionPolicy/);
121
+ expect(source).toMatch(/<Card[\s\S]*?interactionPolicy=\{interactionPolicy\}/);
122
+ });
123
+
124
+ test('passes interactionPolicy through renderAction to internal Buttons', () => {
125
+ const source = readPattern('hero', 'Hero.tsx');
126
+
127
+ expect(source).toMatch(
128
+ /function renderAction\([\s\S]*?interactionPolicy: HeroProps\['interactionPolicy'\]/,
129
+ );
130
+ expect(source).toMatch(
131
+ /<Button[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?variant=\{action\.variant/,
132
+ );
133
+ });
134
+ });
135
+
136
+ describe('ProductCard', () => {
137
+ test('types extend ZoraBaseProps instead of duplicating InteractionPolicy', () => {
138
+ const source = readPattern('product-card', 'types.ts');
139
+
140
+ expect(source).not.toMatch(
141
+ /import type \{\s*InteractionPolicy\s*\} from '@ankhorage\/surface';/,
142
+ );
143
+ expect(source).toMatch(/export interface ProductCardProps extends ZoraBaseProps/);
144
+ expect(source).not.toMatch(/interactionPolicy\?: InteractionPolicy;/);
145
+ });
146
+
147
+ test('forwards interactionPolicy to internal Buttons', () => {
148
+ const source = readPattern('product-card', 'ProductCard.tsx');
149
+
150
+ expect(source).toMatch(
151
+ /<Button[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?onPress=\{onPrimaryAction/,
152
+ );
153
+ expect(source).toMatch(
154
+ /<Button[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?onPress=\{onSecondaryAction/,
155
+ );
156
+ });
157
+ });
158
+
159
+ describe('CameraPermissionView', () => {
160
+ test('forwards interactionPolicy to internal Buttons after prop spreads', () => {
161
+ const source = readPattern('scanner', 'CameraPermissionView.tsx');
162
+
163
+ expect(source).toMatch(
164
+ /<Button[\s\S]*?\{\s*\.\.\.requestButtonProps\s*\}[\s\S]*?interactionPolicy=\{interactionPolicy\}/,
165
+ );
166
+ expect(source).toMatch(
167
+ /<Button[\s\S]*?\{\s*\.\.\.manualEntryButtonProps\s*\}[\s\S]*?interactionPolicy=\{interactionPolicy\}/,
168
+ );
169
+ });
170
+ });
171
+
172
+ describe('BarcodeScannerView', () => {
173
+ test('passes interactionPolicy to CameraPermissionView in non-granted states', () => {
174
+ const source = readPattern('scanner', 'BarcodeScannerView.tsx');
175
+
176
+ expect(source).toMatch(/<CameraPermissionView[\s\S]*?interactionPolicy=\{interactionPolicy\}/);
177
+ });
178
+ });
179
+
180
+ describe('ZoraTabBar', () => {
181
+ test('does not discard interactionPolicy', () => {
182
+ const source = readPattern('zora-tab-bar', 'ZoraTabBar.tsx');
183
+
184
+ expect(source).not.toMatch(/interactionPolicy:\s*_interactionPolicy/);
185
+ });
186
+
187
+ test('prevents navigation under passive without disabled semantics', () => {
188
+ const source = readPattern('zora-tab-bar', 'ZoraTabBar.tsx');
189
+
190
+ expect(source).toMatch(/onPress=\{[\s\S]*?interactionPolicy === 'passive'\s*\?\s*undefined/);
191
+ expect(source).not.toMatch(/disabled:\s*interactionPolicy === 'passive'/);
192
+ expect(source).not.toMatch(/accessibilityState.*disabled.*interactionPolicy === 'passive'/);
193
+ });
194
+ });
195
+
196
+ describe('Select', () => {
197
+ test('keeps Picker enabled controlled only by real disabled prop', () => {
198
+ const source = readComponent('select', 'Select.tsx');
199
+
200
+ expect(source).toMatch(/enabled=\{!disabled\}/);
201
+ });
202
+
203
+ test('prevents pointer/touch interaction with Picker subtree while passive', () => {
204
+ const source = readComponent('select', 'Select.tsx');
205
+
206
+ expect(source).toMatch(/pointerEvents=\{passive \? 'none' : 'auto'\}/);
207
+ expect(source).toMatch(
208
+ /onValueChange=\{\s*\(\s*itemValue\s*\)\s*=>\s*\{\s*if\s*\(\s*!passive\s*\)/,
209
+ );
210
+ });
211
+ });
212
+
213
+ describe('TreeItem', () => {
214
+ test('accepts and forwards interactionPolicy to owned and recursive controls', () => {
215
+ const source = readPattern('tree-view', 'TreeItem.tsx');
216
+
217
+ expect(source).toMatch(/interface TreeItemProps[\s\S]*?extends ZoraBaseProps/);
218
+ expect(source).toMatch(/function TreeItemInner[\s\S]*?interactionPolicy,/);
219
+ expect(source).toMatch(
220
+ /<IconButton[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?onPress=\{\(\) => onToggleExpand\(node\.id\)\}/,
221
+ );
222
+ expect(source).toMatch(
223
+ /node\.children\?\.map[\s\S]*?<TreeItem[\s\S]*?interactionPolicy=\{interactionPolicy\}[\s\S]*?node=\{child\}/,
224
+ );
225
+ });
226
+ });
@@ -8,6 +8,7 @@ import type { AppShellProps } from './types';
8
8
  function AppShellInner({
9
9
  themeId: _themeId,
10
10
  mode: _mode,
11
+ interactionPolicy: _interactionPolicy,
11
12
  children,
12
13
  header,
13
14
  footer,
@@ -9,6 +9,7 @@ import type { ScreenProps } from './types';
9
9
  function ScreenInner({
10
10
  themeId: _themeId,
11
11
  mode: _mode,
12
+ interactionPolicy: _interactionPolicy,
12
13
  children,
13
14
  footer,
14
15
  scroll = true,
@@ -8,6 +8,7 @@ import type { ScreenSectionProps } from './types';
8
8
  function ScreenSectionInner({
9
9
  themeId: _themeId,
10
10
  mode: _mode,
11
+ interactionPolicy: _interactionPolicy,
11
12
  title,
12
13
  description,
13
14
  actions,
@@ -9,6 +9,7 @@ import type { SettingsLayoutProps } from './types';
9
9
  function SettingsLayoutInner({
10
10
  themeId: _themeId,
11
11
  mode: _mode,
12
+ interactionPolicy: _interactionPolicy,
12
13
  title,
13
14
  description,
14
15
  sidebar,
@@ -7,6 +7,7 @@ import type { SidebarLayoutProps } from './types';
7
7
  function SidebarLayoutInner({
8
8
  themeId: _themeId,
9
9
  mode: _mode,
10
+ interactionPolicy: _interactionPolicy,
10
11
  sidebar,
11
12
  children,
12
13
  aside,
@@ -8,6 +8,7 @@ import type { TopbarLayoutProps } from './types';
8
8
  function TopbarLayoutInner({
9
9
  themeId: _themeId,
10
10
  mode: _mode,
11
+ interactionPolicy: _interactionPolicy,
11
12
  topbar,
12
13
  children,
13
14
  sidebar,
@@ -18,6 +18,7 @@ type ForgotPasswordFieldName = 'identifier';
18
18
  function ForgotPasswordFormInner({
19
19
  themeId: _themeId,
20
20
  mode: _mode,
21
+ interactionPolicy,
21
22
  identifiers = defaultIdentifiers,
22
23
  identifierLabel,
23
24
  signInLabel = 'Sign in',
@@ -67,6 +68,7 @@ function ForgotPasswordFormInner({
67
68
  }}
68
69
  size="s"
69
70
  color="neutral"
71
+ interactionPolicy={interactionPolicy}
70
72
  >
71
73
  {signInLabel}
72
74
  </Button>
@@ -76,6 +78,7 @@ function ForgotPasswordFormInner({
76
78
  disabled={disabled}
77
79
  error={error}
78
80
  fields={fields}
81
+ interactionPolicy={interactionPolicy}
79
82
  loading={loading}
80
83
  onChange={setValues}
81
84
  onSubmit={handleSubmit}
@@ -8,6 +8,7 @@ import type { OAuthProviderButtonProps } from './types';
8
8
  function OAuthProviderButtonInner({
9
9
  themeId: _themeId,
10
10
  mode: _mode,
11
+ interactionPolicy,
11
12
  providerId,
12
13
  label,
13
14
  icon,
@@ -28,6 +29,7 @@ function OAuthProviderButtonInner({
28
29
  color={color}
29
30
  disabled={disabled || loading || onPress === undefined}
30
31
  fullWidth={fullWidth}
32
+ interactionPolicy={interactionPolicy}
31
33
  leadingIcon={resolvedIcon}
32
34
  loading={loading}
33
35
  onPress={() => {
@@ -8,6 +8,7 @@ import type { OAuthProviderListProps } from './types';
8
8
  function OAuthProviderListInner({
9
9
  themeId: _themeId,
10
10
  mode: _mode,
11
+ interactionPolicy,
11
12
  providers,
12
13
  disabled = false,
13
14
  loading = false,
@@ -42,6 +43,7 @@ function OAuthProviderListInner({
42
43
  providerId={provider.id}
43
44
  size={size}
44
45
  variant={variant}
46
+ interactionPolicy={interactionPolicy}
45
47
  />
46
48
  ))}
47
49
  </Stack>
@@ -11,6 +11,7 @@ type OtpFieldName = 'otp';
11
11
  function OtpFormInner({
12
12
  themeId: _themeId,
13
13
  mode: _mode,
14
+ interactionPolicy,
14
15
  length = 6,
15
16
  otpLabel = 'Code',
16
17
  resendLabel = 'Resend code',
@@ -63,6 +64,7 @@ function OtpFormInner({
63
64
  }}
64
65
  size="s"
65
66
  color="neutral"
67
+ interactionPolicy={interactionPolicy}
66
68
  >
67
69
  {resendLabel}
68
70
  </Button>
@@ -72,6 +74,7 @@ function OtpFormInner({
72
74
  disabled={disabled}
73
75
  error={error}
74
76
  fields={fields}
77
+ interactionPolicy={interactionPolicy}
75
78
  loading={loading}
76
79
  onChange={setValues}
77
80
  onSubmit={handleSubmit}
@@ -17,6 +17,7 @@ type SignInFieldName = 'identifier' | 'secret';
17
17
 
18
18
  function SignInFormInner({
19
19
  themeId: _themeId,
20
+ interactionPolicy,
20
21
  mode: _mode,
21
22
  identifiers = defaultIdentifiers,
22
23
  identifierLabel,
@@ -80,6 +81,7 @@ function SignInFormInner({
80
81
  }}
81
82
  size="s"
82
83
  color="neutral"
84
+ interactionPolicy={interactionPolicy}
83
85
  >
84
86
  {forgotPasswordLabel}
85
87
  </Button>
@@ -93,6 +95,7 @@ function SignInFormInner({
93
95
  }}
94
96
  size="s"
95
97
  color="neutral"
98
+ interactionPolicy={interactionPolicy}
96
99
  >
97
100
  {signUpLabel}
98
101
  </Button>
@@ -103,6 +106,7 @@ function SignInFormInner({
103
106
  disabled={disabled}
104
107
  error={error}
105
108
  fields={fields}
109
+ interactionPolicy={interactionPolicy}
106
110
  loading={loading}
107
111
  onChange={setValues}
108
112
  onSubmit={handleSubmit}
@@ -33,6 +33,7 @@ function createValues(fields: readonly FormFieldConfig[]): FormValues {
33
33
 
34
34
  function SignUpFormInner({
35
35
  themeId: _themeId,
36
+ interactionPolicy,
36
37
  mode: _mode,
37
38
  fields = defaultSignUpFields,
38
39
  signInLabel = 'Sign in',
@@ -59,6 +60,7 @@ function SignUpFormInner({
59
60
  }}
60
61
  size="s"
61
62
  color="neutral"
63
+ interactionPolicy={interactionPolicy}
62
64
  >
63
65
  {signInLabel}
64
66
  </Button>
@@ -68,6 +70,7 @@ function SignUpFormInner({
68
70
  disabled={disabled}
69
71
  error={error}
70
72
  fields={fields}
73
+ interactionPolicy={interactionPolicy}
71
74
  loading={loading}
72
75
  onChange={setValues}
73
76
  onSubmit={onSubmit}
@@ -71,6 +71,7 @@ function renderUnreadCount(unreadCount: React.ReactNode) {
71
71
  function ChatListItemInner({
72
72
  themeId: _themeId,
73
73
  mode: _mode,
74
+ interactionPolicy,
74
75
  testID,
75
76
  title,
76
77
  preview,
@@ -203,6 +204,7 @@ function ChatListItemInner({
203
204
  accessibilityRole="button"
204
205
  accessibilityState={{ disabled, selected }}
205
206
  disabled={disabled}
207
+ interactionPolicy={interactionPolicy}
206
208
  onPress={onPress}
207
209
  radius="m"
208
210
  testID={testID}
@@ -22,6 +22,7 @@ function CollectionEditorInner<TItem>({
22
22
  emptyLabel = 'No items yet.',
23
23
  disabled,
24
24
  testID,
25
+ interactionPolicy,
25
26
  }: CollectionEditorProps<TItem>) {
26
27
  const isEmpty = items.length === 0;
27
28
 
@@ -29,11 +30,18 @@ function CollectionEditorInner<TItem>({
29
30
  <Panel
30
31
  compact
31
32
  description={description}
33
+ interactionPolicy={interactionPolicy}
32
34
  testID={testID}
33
35
  title={title}
34
36
  actions={
35
37
  onAdd ? (
36
- <Button variant="soft" size="s" disabled={disabled} onPress={onAdd}>
38
+ <Button
39
+ variant="soft"
40
+ size="s"
41
+ disabled={disabled}
42
+ interactionPolicy={interactionPolicy}
43
+ onPress={onAdd}
44
+ >
37
45
  {addLabel}
38
46
  </Button>
39
47
  ) : null
@@ -68,6 +76,7 @@ function CollectionEditorInner<TItem>({
68
76
  icon={{ name: 'arrow-up-outline' }}
69
77
  label="Move Up"
70
78
  disabled={disabled ?? index === 0}
79
+ interactionPolicy={interactionPolicy}
71
80
  onPress={() => onMove(index, index - 1)}
72
81
  size="s"
73
82
  variant="ghost"
@@ -76,6 +85,7 @@ function CollectionEditorInner<TItem>({
76
85
  icon={{ name: 'arrow-down-outline' }}
77
86
  label="Move Down"
78
87
  disabled={disabled ?? index === items.length - 1}
88
+ interactionPolicy={interactionPolicy}
79
89
  onPress={() => onMove(index, index + 1)}
80
90
  size="s"
81
91
  variant="ghost"
@@ -88,6 +98,7 @@ function CollectionEditorInner<TItem>({
88
98
  label="Remove"
89
99
  color="danger"
90
100
  disabled={disabled}
101
+ interactionPolicy={interactionPolicy}
91
102
  onPress={() => onRemove(index)}
92
103
  size="s"
93
104
  variant="ghost"
@@ -22,17 +22,30 @@ function ConfirmDialogInner({
22
22
  onConfirm,
23
23
  onCancel,
24
24
  testID,
25
+ interactionPolicy,
25
26
  }: ConfirmDialogProps) {
26
27
  return (
27
28
  <Modal
28
29
  closeOnBackdrop={closeOnBackdrop}
29
30
  description={description}
31
+ interactionPolicy={interactionPolicy}
30
32
  footer={
31
33
  <Stack direction={{ base: 'column', md: 'row' }} gap="s" justify="flex-end">
32
- <Button variant="soft" onPress={onCancel} color="neutral">
34
+ <Button
35
+ variant="soft"
36
+ interactionPolicy={interactionPolicy}
37
+ onPress={onCancel}
38
+ color="neutral"
39
+ >
33
40
  {cancelLabel}
34
41
  </Button>
35
- <Button variant={confirmVariant} loading={busy} onPress={onConfirm} color={confirmColor}>
42
+ <Button
43
+ variant={confirmVariant}
44
+ loading={busy}
45
+ interactionPolicy={interactionPolicy}
46
+ onPress={onConfirm}
47
+ color={confirmColor}
48
+ >
36
49
  {confirmLabel}
37
50
  </Button>
38
51
  </Stack>