@ankhorage/zora 14.0.1 → 16.0.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 (561) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/constants.d.ts +5 -0
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +5 -0
  6. package/dist/constants.js.map +1 -1
  7. package/dist/features/accordion/accordionItemMeta.d.ts +1 -1
  8. package/dist/features/app-bar/adapters/inbound/AppBar.d.ts.map +1 -1
  9. package/dist/features/app-bar/adapters/inbound/AppBar.js +28 -27
  10. package/dist/features/app-bar/adapters/inbound/AppBar.js.map +1 -1
  11. package/dist/features/app-bar/public.d.ts +1 -1
  12. package/dist/features/app-bar/public.d.ts.map +1 -1
  13. package/dist/features/app-bar/public.js.map +1 -1
  14. package/dist/features/bottom-sheet/bottomSheetMeta.d.ts +1 -1
  15. package/dist/features/bottom-sheet/public.d.ts +2 -2
  16. package/dist/features/bottom-sheet/public.d.ts.map +1 -1
  17. package/dist/features/bottom-sheet/public.js +1 -1
  18. package/dist/features/bottom-sheet/public.js.map +1 -1
  19. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.d.ts +5 -0
  20. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.d.ts.map +1 -0
  21. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.js +81 -0
  22. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.js.map +1 -0
  23. package/dist/features/breadcrumbs/breadcrumbsMeta.d.ts +119 -0
  24. package/dist/features/breadcrumbs/breadcrumbsMeta.d.ts.map +1 -0
  25. package/dist/features/breadcrumbs/breadcrumbsMeta.js +94 -0
  26. package/dist/features/breadcrumbs/breadcrumbsMeta.js.map +1 -0
  27. package/dist/features/breadcrumbs/public.d.ts +3 -0
  28. package/dist/features/breadcrumbs/public.d.ts.map +1 -0
  29. package/dist/features/breadcrumbs/public.js +2 -0
  30. package/dist/features/breadcrumbs/public.js.map +1 -0
  31. package/dist/features/card/cardMeta.d.ts +1 -1
  32. package/dist/features/card/mediaCardMeta.d.ts +1 -1
  33. package/dist/features/card/postCardMeta.d.ts +1 -1
  34. package/dist/features/data-table/adapters/inbound/DataTable.d.ts.map +1 -1
  35. package/dist/features/data-table/adapters/inbound/DataTable.js +4 -2
  36. package/dist/features/data-table/adapters/inbound/DataTable.js.map +1 -1
  37. package/dist/features/dialog/adapters/inbound/Dialog.d.ts +5 -0
  38. package/dist/features/dialog/adapters/inbound/Dialog.d.ts.map +1 -0
  39. package/dist/features/dialog/adapters/inbound/Dialog.js +45 -0
  40. package/dist/features/dialog/adapters/inbound/Dialog.js.map +1 -0
  41. package/dist/features/dialog/dialogMeta.d.ts +87 -0
  42. package/dist/features/dialog/dialogMeta.d.ts.map +1 -0
  43. package/dist/features/dialog/dialogMeta.js +59 -0
  44. package/dist/features/dialog/dialogMeta.js.map +1 -0
  45. package/dist/features/dialog/public.d.ts +3 -0
  46. package/dist/features/dialog/public.d.ts.map +1 -0
  47. package/dist/features/dialog/public.js +2 -0
  48. package/dist/features/dialog/public.js.map +1 -0
  49. package/dist/features/form/formFieldMeta.d.ts +1 -1
  50. package/dist/features/form/formFieldMeta.d.ts.map +1 -1
  51. package/dist/features/form/formFieldMeta.js +8 -1
  52. package/dist/features/form/formFieldMeta.js.map +1 -1
  53. package/dist/features/form/radio/utils/resolveRadioGroupThemeRecipe.d.ts +1 -1
  54. package/dist/features/form/search-input/adapters/inbound/SearchInput.d.ts +4 -0
  55. package/dist/features/form/search-input/adapters/inbound/SearchInput.d.ts.map +1 -0
  56. package/dist/{components/search-bar/SearchBar.js → features/form/search-input/adapters/inbound/SearchInput.js} +8 -10
  57. package/dist/features/form/search-input/adapters/inbound/SearchInput.js.map +1 -0
  58. package/dist/features/form/search-input/public.d.ts +3 -0
  59. package/dist/features/form/search-input/public.d.ts.map +1 -0
  60. package/dist/features/form/search-input/public.js +2 -0
  61. package/dist/features/form/search-input/public.js.map +1 -0
  62. package/dist/features/form/search-input/searchInputMeta.d.ts +126 -0
  63. package/dist/features/form/search-input/searchInputMeta.d.ts.map +1 -0
  64. package/dist/features/form/search-input/searchInputMeta.js +67 -0
  65. package/dist/features/form/search-input/searchInputMeta.js.map +1 -0
  66. package/dist/features/form/select/adapters/inbound/Select.d.ts +2 -0
  67. package/dist/features/form/select/adapters/inbound/Select.d.ts.map +1 -0
  68. package/dist/features/form/select/adapters/inbound/Select.js +2 -0
  69. package/dist/features/form/select/adapters/inbound/Select.js.map +1 -0
  70. package/dist/features/form/select/adapters/inbound/Select.native.d.ts +5 -0
  71. package/dist/features/form/select/adapters/inbound/Select.native.d.ts.map +1 -0
  72. package/dist/features/form/select/adapters/inbound/Select.native.js +42 -0
  73. package/dist/features/form/select/adapters/inbound/Select.native.js.map +1 -0
  74. package/dist/features/form/select/adapters/inbound/Select.web.d.ts +5 -0
  75. package/dist/features/form/select/adapters/inbound/Select.web.d.ts.map +1 -0
  76. package/dist/features/form/select/adapters/inbound/Select.web.js +31 -0
  77. package/dist/features/form/select/adapters/inbound/Select.web.js.map +1 -0
  78. package/dist/features/form/select/composition/SelectField.d.ts +10 -0
  79. package/dist/features/form/select/composition/SelectField.d.ts.map +1 -0
  80. package/dist/features/form/select/composition/SelectField.js +8 -0
  81. package/dist/features/form/select/composition/SelectField.js.map +1 -0
  82. package/dist/features/form/select/composition/SelectOptionRow.d.ts +12 -0
  83. package/dist/features/form/select/composition/SelectOptionRow.d.ts.map +1 -0
  84. package/dist/features/form/select/composition/SelectOptionRow.js +9 -0
  85. package/dist/features/form/select/composition/SelectOptionRow.js.map +1 -0
  86. package/dist/features/form/select/composition/SelectTrigger.d.ts +10 -0
  87. package/dist/features/form/select/composition/SelectTrigger.d.ts.map +1 -0
  88. package/dist/features/form/select/composition/SelectTrigger.js +9 -0
  89. package/dist/features/form/select/composition/SelectTrigger.js.map +1 -0
  90. package/dist/features/form/select/composition/useSelectController.d.ts +8 -0
  91. package/dist/features/form/select/composition/useSelectController.d.ts.map +1 -0
  92. package/dist/features/form/select/composition/useSelectController.js +15 -0
  93. package/dist/features/form/select/composition/useSelectController.js.map +1 -0
  94. package/dist/features/form/select/public.d.ts +3 -0
  95. package/dist/features/form/select/public.d.ts.map +1 -0
  96. package/dist/features/form/select/public.js +2 -0
  97. package/dist/features/form/select/public.js.map +1 -0
  98. package/dist/features/form/select/selectMeta.d.ts +195 -0
  99. package/dist/features/form/select/selectMeta.d.ts.map +1 -0
  100. package/dist/features/form/select/selectMeta.js +152 -0
  101. package/dist/features/form/select/selectMeta.js.map +1 -0
  102. package/dist/features/gradient/gradientMeta.d.ts +1 -1
  103. package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.d.ts +1 -1
  104. package/dist/features/layout/boxMeta.d.ts +1 -1
  105. package/dist/features/layout/containerMeta.d.ts +1 -1
  106. package/dist/features/layout/gridMeta.d.ts +1 -1
  107. package/dist/features/layout/stackMeta.d.ts +1 -1
  108. package/dist/features/list/flatListMeta.d.ts +1 -1
  109. package/dist/features/list/sectionListMeta.d.ts +1 -1
  110. package/dist/features/pagination/adapters/inbound/Pagination.d.ts +5 -0
  111. package/dist/features/pagination/adapters/inbound/Pagination.d.ts.map +1 -0
  112. package/dist/features/pagination/adapters/inbound/Pagination.js +43 -0
  113. package/dist/features/pagination/adapters/inbound/Pagination.js.map +1 -0
  114. package/dist/features/pagination/paginationMeta.d.ts +118 -0
  115. package/dist/features/pagination/paginationMeta.d.ts.map +1 -0
  116. package/dist/features/pagination/paginationMeta.js +53 -0
  117. package/dist/features/pagination/paginationMeta.js.map +1 -0
  118. package/dist/features/pagination/public.d.ts +3 -0
  119. package/dist/features/pagination/public.d.ts.map +1 -0
  120. package/dist/features/pagination/public.js +2 -0
  121. package/dist/features/pagination/public.js.map +1 -0
  122. package/dist/features/pagination/utils/resolvePaginationPage.d.ts +3 -0
  123. package/dist/features/pagination/utils/resolvePaginationPage.d.ts.map +1 -0
  124. package/dist/features/pagination/utils/resolvePaginationPage.js +7 -0
  125. package/dist/features/pagination/utils/resolvePaginationPage.js.map +1 -0
  126. package/dist/features/pagination/utils/resolvePaginationState.d.ts +17 -0
  127. package/dist/features/pagination/utils/resolvePaginationState.d.ts.map +1 -0
  128. package/dist/features/pagination/utils/resolvePaginationState.js +34 -0
  129. package/dist/features/pagination/utils/resolvePaginationState.js.map +1 -0
  130. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.d.ts +5 -0
  131. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.d.ts.map +1 -0
  132. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js +43 -0
  133. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js.map +1 -0
  134. package/dist/features/popover-menu/popoverMenuMeta.d.ts +9 -0
  135. package/dist/features/popover-menu/popoverMenuMeta.d.ts.map +1 -0
  136. package/dist/features/popover-menu/popoverMenuMeta.js +9 -0
  137. package/dist/features/popover-menu/popoverMenuMeta.js.map +1 -0
  138. package/dist/features/popover-menu/public.d.ts +3 -0
  139. package/dist/features/popover-menu/public.d.ts.map +1 -0
  140. package/dist/features/popover-menu/public.js +2 -0
  141. package/dist/features/popover-menu/public.js.map +1 -0
  142. package/dist/features/rating/adapters/inbound/Rating.d.ts +4 -0
  143. package/dist/features/rating/adapters/inbound/Rating.d.ts.map +1 -0
  144. package/dist/features/rating/adapters/inbound/Rating.js +49 -0
  145. package/dist/features/rating/adapters/inbound/Rating.js.map +1 -0
  146. package/dist/features/rating/public.d.ts +3 -0
  147. package/dist/features/rating/public.d.ts.map +1 -0
  148. package/dist/features/rating/public.js +2 -0
  149. package/dist/features/rating/public.js.map +1 -0
  150. package/dist/features/rating/ratingMeta.d.ts +57 -0
  151. package/dist/features/rating/ratingMeta.d.ts.map +1 -0
  152. package/dist/features/rating/ratingMeta.js +43 -0
  153. package/dist/features/rating/ratingMeta.js.map +1 -0
  154. package/dist/features/rating/utils/resolveRatingSegments.d.ts +9 -0
  155. package/dist/features/rating/utils/resolveRatingSegments.d.ts.map +1 -0
  156. package/dist/features/rating/utils/resolveRatingSegments.js +14 -0
  157. package/dist/features/rating/utils/resolveRatingSegments.js.map +1 -0
  158. package/dist/features/surface/surfaceMeta.d.ts +1 -1
  159. package/dist/features/tabs/adapters/inbound/Tab.d.ts +5 -0
  160. package/dist/features/tabs/adapters/inbound/Tab.d.ts.map +1 -0
  161. package/dist/features/tabs/adapters/inbound/Tab.js +14 -0
  162. package/dist/features/tabs/adapters/inbound/Tab.js.map +1 -0
  163. package/dist/features/tabs/adapters/inbound/TabList.d.ts +4 -0
  164. package/dist/features/tabs/adapters/inbound/TabList.d.ts.map +1 -0
  165. package/dist/features/tabs/adapters/inbound/TabList.js +9 -0
  166. package/dist/features/tabs/adapters/inbound/TabList.js.map +1 -0
  167. package/dist/features/tabs/adapters/inbound/TabPanel.d.ts +4 -0
  168. package/dist/features/tabs/adapters/inbound/TabPanel.d.ts.map +1 -0
  169. package/dist/features/tabs/adapters/inbound/TabPanel.js +11 -0
  170. package/dist/features/tabs/adapters/inbound/TabPanel.js.map +1 -0
  171. package/dist/features/tabs/adapters/inbound/Tabs.d.ts +4 -0
  172. package/dist/features/tabs/adapters/inbound/Tabs.d.ts.map +1 -0
  173. package/dist/features/tabs/adapters/inbound/Tabs.js +12 -0
  174. package/dist/features/tabs/adapters/inbound/Tabs.js.map +1 -0
  175. package/dist/features/tabs/composition/TabsInteractionPolicyContext.d.ts +3 -0
  176. package/dist/features/tabs/composition/TabsInteractionPolicyContext.d.ts.map +1 -0
  177. package/dist/features/tabs/composition/TabsInteractionPolicyContext.js +3 -0
  178. package/dist/features/tabs/composition/TabsInteractionPolicyContext.js.map +1 -0
  179. package/dist/features/tabs/public.d.ts +6 -0
  180. package/dist/features/tabs/public.d.ts.map +1 -0
  181. package/dist/features/tabs/public.js +5 -0
  182. package/dist/features/tabs/public.js.map +1 -0
  183. package/dist/features/tabs/tabListMeta.d.ts +9 -0
  184. package/dist/features/tabs/tabListMeta.d.ts.map +1 -0
  185. package/dist/features/tabs/tabListMeta.js +9 -0
  186. package/dist/features/tabs/tabListMeta.js.map +1 -0
  187. package/dist/features/tabs/tabMeta.d.ts +32 -0
  188. package/dist/features/tabs/tabMeta.d.ts.map +1 -0
  189. package/dist/features/tabs/tabMeta.js +14 -0
  190. package/dist/features/tabs/tabMeta.js.map +1 -0
  191. package/dist/features/tabs/tabPanelMeta.d.ts +15 -0
  192. package/dist/features/tabs/tabPanelMeta.d.ts.map +1 -0
  193. package/dist/features/tabs/tabPanelMeta.js +12 -0
  194. package/dist/features/tabs/tabPanelMeta.js.map +1 -0
  195. package/dist/features/tabs/tabsMeta.d.ts +58 -0
  196. package/dist/features/tabs/tabsMeta.d.ts.map +1 -0
  197. package/dist/features/tabs/tabsMeta.js +40 -0
  198. package/dist/features/tabs/tabsMeta.js.map +1 -0
  199. package/dist/features/toolbar/adapters/inbound/Toolbar.d.ts +4 -0
  200. package/dist/features/toolbar/adapters/inbound/Toolbar.d.ts.map +1 -0
  201. package/dist/features/toolbar/adapters/inbound/Toolbar.js +14 -0
  202. package/dist/features/toolbar/adapters/inbound/Toolbar.js.map +1 -0
  203. package/dist/features/toolbar/public.d.ts +3 -0
  204. package/dist/features/toolbar/public.d.ts.map +1 -0
  205. package/dist/features/toolbar/public.js +2 -0
  206. package/dist/features/toolbar/public.js.map +1 -0
  207. package/dist/features/toolbar/toolbarMeta.d.ts +29 -0
  208. package/dist/features/toolbar/toolbarMeta.d.ts.map +1 -0
  209. package/dist/features/toolbar/toolbarMeta.js +22 -0
  210. package/dist/features/toolbar/toolbarMeta.js.map +1 -0
  211. package/dist/features/typography/utils/resolveHeadingThemeRecipe.d.ts +1 -1
  212. package/dist/features/typography/utils/resolveTextThemeRecipe.d.ts +1 -1
  213. package/dist/features/uploader/adapters/inbound/Uploader.d.ts.map +1 -1
  214. package/dist/features/uploader/adapters/inbound/Uploader.js +3 -3
  215. package/dist/features/uploader/adapters/inbound/Uploader.js.map +1 -1
  216. package/dist/index.d.ts +10 -19
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +9 -9
  219. package/dist/index.js.map +1 -1
  220. package/dist/layout/screen/meta.d.ts +1 -1
  221. package/dist/layout/screen-section/meta.d.ts +1 -1
  222. package/dist/metadata/allowedChildren.d.ts +3 -3
  223. package/dist/metadata/allowedChildren.d.ts.map +1 -1
  224. package/dist/metadata/allowedChildren.js +6 -0
  225. package/dist/metadata/allowedChildren.js.map +1 -1
  226. package/dist/metadata/bindableComponentMeta.d.ts +3 -4
  227. package/dist/metadata/bindableComponentMeta.d.ts.map +1 -1
  228. package/dist/metadata/bindableComponentMeta.js +1 -2
  229. package/dist/metadata/bindableComponentMeta.js.map +1 -1
  230. package/dist/metadata/componentMeta.d.ts.map +1 -1
  231. package/dist/metadata/componentMeta.js +18 -14
  232. package/dist/metadata/componentMeta.js.map +1 -1
  233. package/dist/patterns/confirm-dialog/ConfirmDialog.js +3 -3
  234. package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
  235. package/dist/patterns/message-bubble/meta.d.ts +1 -1
  236. package/dist/patterns/notice/meta.d.ts +1 -1
  237. package/dist/patterns/panel/meta.d.ts +1 -1
  238. package/dist/patterns/reader/meta.d.ts +2 -2
  239. package/dist/patterns/scanner/meta.d.ts +2 -2
  240. package/dist/patterns/theme-composer/ThemeComposer.d.ts.map +1 -1
  241. package/dist/patterns/theme-composer/ThemeComposer.js +4 -4
  242. package/dist/patterns/theme-composer/ThemeComposer.js.map +1 -1
  243. package/dist/registry.d.ts.map +1 -1
  244. package/dist/registry.js +15 -14
  245. package/dist/registry.js.map +1 -1
  246. package/dist/types/app-bar.d.ts +6 -3
  247. package/dist/types/app-bar.d.ts.map +1 -1
  248. package/dist/types/app-bar.js.map +1 -1
  249. package/dist/{components/breadcrumbs/types.d.ts → types/breadcrumbs.d.ts} +8 -6
  250. package/dist/types/breadcrumbs.d.ts.map +1 -0
  251. package/dist/types/breadcrumbs.js +2 -0
  252. package/dist/types/breadcrumbs.js.map +1 -0
  253. package/dist/types/data-table.d.ts +2 -2
  254. package/dist/types/data-table.d.ts.map +1 -1
  255. package/dist/types/data-table.js.map +1 -1
  256. package/dist/types/dialog.d.ts +14 -0
  257. package/dist/types/dialog.d.ts.map +1 -0
  258. package/dist/types/dialog.js +2 -0
  259. package/dist/types/dialog.js.map +1 -0
  260. package/dist/types/pagination.d.ts +16 -0
  261. package/dist/types/pagination.d.ts.map +1 -0
  262. package/dist/types/pagination.js +2 -0
  263. package/dist/types/pagination.js.map +1 -0
  264. package/dist/types/popover-menu.d.ts +24 -0
  265. package/dist/types/popover-menu.d.ts.map +1 -0
  266. package/dist/types/popover-menu.js +2 -0
  267. package/dist/types/popover-menu.js.map +1 -0
  268. package/dist/types/rating.d.ts +9 -0
  269. package/dist/types/rating.d.ts.map +1 -0
  270. package/dist/types/rating.js +2 -0
  271. package/dist/types/rating.js.map +1 -0
  272. package/dist/types/search-input.d.ts +14 -0
  273. package/dist/types/search-input.d.ts.map +1 -0
  274. package/dist/types/search-input.js +2 -0
  275. package/dist/types/search-input.js.map +1 -0
  276. package/dist/types/select.d.ts +22 -0
  277. package/dist/types/select.d.ts.map +1 -0
  278. package/dist/types/select.js +2 -0
  279. package/dist/types/select.js.map +1 -0
  280. package/dist/types/tabs.d.ts +21 -0
  281. package/dist/types/tabs.d.ts.map +1 -0
  282. package/dist/types/tabs.js +2 -0
  283. package/dist/types/tabs.js.map +1 -0
  284. package/dist/types/toolbar.d.ts +8 -0
  285. package/dist/types/toolbar.d.ts.map +1 -0
  286. package/dist/types/toolbar.js +2 -0
  287. package/dist/types/toolbar.js.map +1 -0
  288. package/package.json +2 -4
  289. package/src/audit.test.ts +8 -47
  290. package/src/constants.ts +5 -0
  291. package/src/featureManifest.test.ts +31 -2
  292. package/src/features/app-bar/adapters/inbound/AppBar.tsx +50 -42
  293. package/src/features/app-bar/public.ts +1 -1
  294. package/src/features/bottom-sheet/public.test.ts +10 -1
  295. package/src/features/bottom-sheet/public.ts +9 -1
  296. package/src/features/breadcrumbs/adapters/inbound/Breadcrumbs.tsx +179 -0
  297. package/src/features/breadcrumbs/breadcrumbsMeta.ts +95 -0
  298. package/src/features/breadcrumbs/public.test.ts +22 -0
  299. package/src/features/breadcrumbs/public.ts +6 -0
  300. package/src/features/data-table/adapters/inbound/DataTable.tsx +9 -5
  301. package/src/features/dialog/adapters/inbound/Dialog.tsx +70 -0
  302. package/src/features/dialog/dialogMeta.ts +60 -0
  303. package/src/features/dialog/public.ts +2 -0
  304. package/src/features/form/formFieldMeta.ts +8 -1
  305. package/src/{components/search-bar/SearchBar.tsx → features/form/search-input/adapters/inbound/SearchInput.tsx} +10 -15
  306. package/src/features/form/search-input/public.ts +2 -0
  307. package/src/features/form/search-input/searchInputMeta.ts +68 -0
  308. package/src/features/form/select/adapters/inbound/Select.native.tsx +78 -0
  309. package/src/features/form/select/adapters/inbound/Select.tsx +1 -0
  310. package/src/features/form/select/adapters/inbound/Select.web.tsx +63 -0
  311. package/src/features/form/select/composition/SelectField.tsx +27 -0
  312. package/src/features/form/select/composition/SelectOptionRow.tsx +36 -0
  313. package/src/features/form/select/composition/SelectTrigger.tsx +32 -0
  314. package/src/features/form/select/composition/useSelectController.ts +21 -0
  315. package/src/features/form/select/public.test.ts +25 -0
  316. package/src/features/form/select/public.ts +2 -0
  317. package/src/features/form/select/selectMeta.ts +154 -0
  318. package/src/features/pagination/adapters/inbound/Pagination.tsx +116 -0
  319. package/src/features/pagination/paginationMeta.ts +54 -0
  320. package/src/features/pagination/public.ts +2 -0
  321. package/src/features/pagination/utils/resolvePaginationPage.ts +6 -0
  322. package/src/features/pagination/utils/resolvePaginationState.test.ts +29 -0
  323. package/src/features/pagination/utils/resolvePaginationState.ts +70 -0
  324. package/src/features/popover-menu/adapters/inbound/PopoverMenu.tsx +60 -0
  325. package/src/{components/rating/meta.ts → features/popover-menu/popoverMenuMeta.ts} +3 -3
  326. package/src/features/popover-menu/public.test.ts +11 -0
  327. package/src/features/popover-menu/public.ts +6 -0
  328. package/src/features/rating/adapters/inbound/Rating.tsx +70 -0
  329. package/src/features/rating/public.ts +2 -0
  330. package/src/features/rating/ratingMeta.ts +44 -0
  331. package/src/features/rating/utils/resolveRatingSegments.test.ts +20 -0
  332. package/src/features/rating/utils/resolveRatingSegments.ts +19 -0
  333. package/src/features/tabs/adapters/inbound/Tab.tsx +26 -0
  334. package/src/features/tabs/adapters/inbound/TabList.tsx +18 -0
  335. package/src/features/tabs/adapters/inbound/TabPanel.tsx +23 -0
  336. package/src/features/tabs/adapters/inbound/Tabs.tsx +23 -0
  337. package/src/features/tabs/composition/TabsInteractionPolicyContext.ts +4 -0
  338. package/src/features/tabs/public.ts +5 -0
  339. package/src/features/tabs/tabListMeta.ts +10 -0
  340. package/src/features/tabs/tabMeta.ts +15 -0
  341. package/src/features/tabs/tabPanelMeta.ts +13 -0
  342. package/src/features/tabs/tabsMeta.ts +41 -0
  343. package/src/features/toolbar/adapters/inbound/Toolbar.tsx +31 -0
  344. package/src/features/toolbar/public.ts +2 -0
  345. package/src/features/toolbar/toolbarMeta.ts +24 -0
  346. package/src/{components → features/typography}/contentFallback.test.ts +2 -8
  347. package/src/features/uploader/adapters/inbound/Uploader.tsx +3 -3
  348. package/src/index.ts +29 -19
  349. package/src/interactionPolicy.test.ts +19 -21
  350. package/src/metadata/allowedChildren.ts +6 -0
  351. package/src/metadata/bindableComponentMeta.test.ts +8 -0
  352. package/src/metadata/bindableComponentMeta.ts +1 -2
  353. package/src/metadata/componentMeta.test.ts +21 -1
  354. package/src/metadata/componentMeta.ts +18 -14
  355. package/src/nativePeerContract.test.ts +5 -19
  356. package/src/patterns/confirm-dialog/ConfirmDialog.tsx +3 -3
  357. package/src/patterns/theme-composer/ThemeComposer.tsx +7 -8
  358. package/src/platformAcceptance.test.ts +1 -1
  359. package/src/registry.ts +15 -14
  360. package/src/showcaseCoverage.test.ts +6 -3
  361. package/src/theme/themeScopeStructure.test.ts +24 -14
  362. package/src/types/app-bar.ts +6 -3
  363. package/src/{components/breadcrumbs/types.ts → types/breadcrumbs.ts} +8 -5
  364. package/src/types/data-table.ts +2 -2
  365. package/src/types/dialog.ts +15 -0
  366. package/src/{components/pagination/types.ts → types/pagination.ts} +5 -8
  367. package/src/types/popover-menu.ts +31 -0
  368. package/src/types/rating.ts +9 -0
  369. package/src/types/search-input.ts +14 -0
  370. package/src/{components/select/types.ts → types/select.ts} +11 -3
  371. package/src/types/tabs.ts +25 -0
  372. package/src/types/toolbar.ts +9 -0
  373. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +0 -7
  374. package/dist/components/breadcrumbs/Breadcrumbs.d.ts.map +0 -1
  375. package/dist/components/breadcrumbs/Breadcrumbs.js +0 -80
  376. package/dist/components/breadcrumbs/Breadcrumbs.js.map +0 -1
  377. package/dist/components/breadcrumbs/index.d.ts +0 -3
  378. package/dist/components/breadcrumbs/index.d.ts.map +0 -1
  379. package/dist/components/breadcrumbs/index.js +0 -2
  380. package/dist/components/breadcrumbs/index.js.map +0 -1
  381. package/dist/components/breadcrumbs/meta.d.ts +0 -9
  382. package/dist/components/breadcrumbs/meta.d.ts.map +0 -1
  383. package/dist/components/breadcrumbs/meta.js +0 -9
  384. package/dist/components/breadcrumbs/meta.js.map +0 -1
  385. package/dist/components/breadcrumbs/types.d.ts.map +0 -1
  386. package/dist/components/breadcrumbs/types.js +0 -2
  387. package/dist/components/breadcrumbs/types.js.map +0 -1
  388. package/dist/components/menu/DropdownMenu.d.ts +0 -7
  389. package/dist/components/menu/DropdownMenu.d.ts.map +0 -1
  390. package/dist/components/menu/DropdownMenu.js +0 -9
  391. package/dist/components/menu/DropdownMenu.js.map +0 -1
  392. package/dist/components/menu/Menu.d.ts +0 -7
  393. package/dist/components/menu/Menu.d.ts.map +0 -1
  394. package/dist/components/menu/Menu.js +0 -46
  395. package/dist/components/menu/Menu.js.map +0 -1
  396. package/dist/components/menu/index.d.ts +0 -4
  397. package/dist/components/menu/index.d.ts.map +0 -1
  398. package/dist/components/menu/index.js +0 -3
  399. package/dist/components/menu/index.js.map +0 -1
  400. package/dist/components/menu/meta.d.ts +0 -17
  401. package/dist/components/menu/meta.d.ts.map +0 -1
  402. package/dist/components/menu/meta.js +0 -17
  403. package/dist/components/menu/meta.js.map +0 -1
  404. package/dist/components/menu/types.d.ts +0 -22
  405. package/dist/components/menu/types.d.ts.map +0 -1
  406. package/dist/components/menu/types.js +0 -2
  407. package/dist/components/menu/types.js.map +0 -1
  408. package/dist/components/modal/Modal.d.ts +0 -7
  409. package/dist/components/modal/Modal.d.ts.map +0 -1
  410. package/dist/components/modal/Modal.js +0 -39
  411. package/dist/components/modal/Modal.js.map +0 -1
  412. package/dist/components/modal/index.d.ts +0 -3
  413. package/dist/components/modal/index.d.ts.map +0 -1
  414. package/dist/components/modal/index.js +0 -2
  415. package/dist/components/modal/index.js.map +0 -1
  416. package/dist/components/modal/meta.d.ts +0 -9
  417. package/dist/components/modal/meta.d.ts.map +0 -1
  418. package/dist/components/modal/meta.js +0 -9
  419. package/dist/components/modal/meta.js.map +0 -1
  420. package/dist/components/modal/types.d.ts +0 -12
  421. package/dist/components/modal/types.d.ts.map +0 -1
  422. package/dist/components/modal/types.js +0 -2
  423. package/dist/components/modal/types.js.map +0 -1
  424. package/dist/components/pagination/Pagination.d.ts +0 -7
  425. package/dist/components/pagination/Pagination.d.ts.map +0 -1
  426. package/dist/components/pagination/Pagination.js +0 -96
  427. package/dist/components/pagination/Pagination.js.map +0 -1
  428. package/dist/components/pagination/index.d.ts +0 -3
  429. package/dist/components/pagination/index.d.ts.map +0 -1
  430. package/dist/components/pagination/index.js +0 -2
  431. package/dist/components/pagination/index.js.map +0 -1
  432. package/dist/components/pagination/meta.d.ts +0 -9
  433. package/dist/components/pagination/meta.d.ts.map +0 -1
  434. package/dist/components/pagination/meta.js +0 -9
  435. package/dist/components/pagination/meta.js.map +0 -1
  436. package/dist/components/pagination/types.d.ts +0 -18
  437. package/dist/components/pagination/types.d.ts.map +0 -1
  438. package/dist/components/pagination/types.js +0 -2
  439. package/dist/components/pagination/types.js.map +0 -1
  440. package/dist/components/rating/Rating.d.ts +0 -7
  441. package/dist/components/rating/Rating.d.ts.map +0 -1
  442. package/dist/components/rating/Rating.js +0 -26
  443. package/dist/components/rating/Rating.js.map +0 -1
  444. package/dist/components/rating/index.d.ts +0 -3
  445. package/dist/components/rating/index.d.ts.map +0 -1
  446. package/dist/components/rating/index.js +0 -2
  447. package/dist/components/rating/index.js.map +0 -1
  448. package/dist/components/rating/meta.d.ts +0 -9
  449. package/dist/components/rating/meta.d.ts.map +0 -1
  450. package/dist/components/rating/meta.js +0 -9
  451. package/dist/components/rating/meta.js.map +0 -1
  452. package/dist/components/rating/resolveRatingSegments.d.ts +0 -7
  453. package/dist/components/rating/resolveRatingSegments.d.ts.map +0 -1
  454. package/dist/components/rating/resolveRatingSegments.js +0 -22
  455. package/dist/components/rating/resolveRatingSegments.js.map +0 -1
  456. package/dist/components/rating/types.d.ts +0 -11
  457. package/dist/components/rating/types.d.ts.map +0 -1
  458. package/dist/components/rating/types.js +0 -26
  459. package/dist/components/rating/types.js.map +0 -1
  460. package/dist/components/search-bar/SearchBar.d.ts +0 -7
  461. package/dist/components/search-bar/SearchBar.d.ts.map +0 -1
  462. package/dist/components/search-bar/SearchBar.js.map +0 -1
  463. package/dist/components/search-bar/index.d.ts +0 -3
  464. package/dist/components/search-bar/index.d.ts.map +0 -1
  465. package/dist/components/search-bar/index.js +0 -2
  466. package/dist/components/search-bar/index.js.map +0 -1
  467. package/dist/components/search-bar/meta.d.ts +0 -9
  468. package/dist/components/search-bar/meta.d.ts.map +0 -1
  469. package/dist/components/search-bar/meta.js +0 -9
  470. package/dist/components/search-bar/meta.js.map +0 -1
  471. package/dist/components/search-bar/types.d.ts +0 -14
  472. package/dist/components/search-bar/types.d.ts.map +0 -1
  473. package/dist/components/search-bar/types.js +0 -2
  474. package/dist/components/search-bar/types.js.map +0 -1
  475. package/dist/components/select/Select.d.ts +0 -7
  476. package/dist/components/select/Select.d.ts.map +0 -1
  477. package/dist/components/select/Select.js +0 -32
  478. package/dist/components/select/Select.js.map +0 -1
  479. package/dist/components/select/index.d.ts +0 -3
  480. package/dist/components/select/index.d.ts.map +0 -1
  481. package/dist/components/select/index.js +0 -3
  482. package/dist/components/select/index.js.map +0 -1
  483. package/dist/components/select/meta.d.ts +0 -9
  484. package/dist/components/select/meta.d.ts.map +0 -1
  485. package/dist/components/select/meta.js +0 -9
  486. package/dist/components/select/meta.js.map +0 -1
  487. package/dist/components/select/types.d.ts +0 -14
  488. package/dist/components/select/types.d.ts.map +0 -1
  489. package/dist/components/select/types.js +0 -2
  490. package/dist/components/select/types.js.map +0 -1
  491. package/dist/components/tabs/Tabs.d.ts +0 -9
  492. package/dist/components/tabs/Tabs.d.ts.map +0 -1
  493. package/dist/components/tabs/Tabs.js +0 -59
  494. package/dist/components/tabs/Tabs.js.map +0 -1
  495. package/dist/components/tabs/index.d.ts +0 -3
  496. package/dist/components/tabs/index.d.ts.map +0 -1
  497. package/dist/components/tabs/index.js +0 -3
  498. package/dist/components/tabs/index.js.map +0 -1
  499. package/dist/components/tabs/meta.d.ts +0 -9
  500. package/dist/components/tabs/meta.d.ts.map +0 -1
  501. package/dist/components/tabs/meta.js +0 -9
  502. package/dist/components/tabs/meta.js.map +0 -1
  503. package/dist/components/tabs/types.d.ts +0 -22
  504. package/dist/components/tabs/types.d.ts.map +0 -1
  505. package/dist/components/tabs/types.js +0 -2
  506. package/dist/components/tabs/types.js.map +0 -1
  507. package/dist/components/toolbar/Toolbar.d.ts +0 -9
  508. package/dist/components/toolbar/Toolbar.d.ts.map +0 -1
  509. package/dist/components/toolbar/Toolbar.js +0 -26
  510. package/dist/components/toolbar/Toolbar.js.map +0 -1
  511. package/dist/components/toolbar/ToolbarAction.d.ts +0 -9
  512. package/dist/components/toolbar/ToolbarAction.d.ts.map +0 -1
  513. package/dist/components/toolbar/ToolbarAction.js +0 -13
  514. package/dist/components/toolbar/ToolbarAction.js.map +0 -1
  515. package/dist/components/toolbar/index.d.ts +0 -4
  516. package/dist/components/toolbar/index.d.ts.map +0 -1
  517. package/dist/components/toolbar/index.js +0 -4
  518. package/dist/components/toolbar/index.js.map +0 -1
  519. package/dist/components/toolbar/meta.d.ts +0 -17
  520. package/dist/components/toolbar/meta.d.ts.map +0 -1
  521. package/dist/components/toolbar/meta.js +0 -17
  522. package/dist/components/toolbar/meta.js.map +0 -1
  523. package/dist/components/toolbar/types.d.ts +0 -18
  524. package/dist/components/toolbar/types.d.ts.map +0 -1
  525. package/dist/components/toolbar/types.js +0 -2
  526. package/dist/components/toolbar/types.js.map +0 -1
  527. package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -147
  528. package/src/components/breadcrumbs/index.ts +0 -2
  529. package/src/components/breadcrumbs/meta.ts +0 -10
  530. package/src/components/menu/DropdownMenu.tsx +0 -11
  531. package/src/components/menu/Menu.tsx +0 -59
  532. package/src/components/menu/index.ts +0 -3
  533. package/src/components/menu/meta.ts +0 -19
  534. package/src/components/menu/types.ts +0 -31
  535. package/src/components/modal/Modal.tsx +0 -63
  536. package/src/components/modal/index.ts +0 -2
  537. package/src/components/modal/meta.ts +0 -10
  538. package/src/components/modal/types.ts +0 -16
  539. package/src/components/pagination/Pagination.tsx +0 -199
  540. package/src/components/pagination/index.ts +0 -2
  541. package/src/components/pagination/meta.ts +0 -10
  542. package/src/components/rating/Rating.tsx +0 -42
  543. package/src/components/rating/index.ts +0 -2
  544. package/src/components/rating/resolveRatingSegments.test.ts +0 -60
  545. package/src/components/rating/resolveRatingSegments.ts +0 -34
  546. package/src/components/rating/types.ts +0 -37
  547. package/src/components/search-bar/index.ts +0 -2
  548. package/src/components/search-bar/meta.ts +0 -10
  549. package/src/components/search-bar/types.ts +0 -14
  550. package/src/components/select/Select.tsx +0 -67
  551. package/src/components/select/index.ts +0 -2
  552. package/src/components/select/meta.ts +0 -10
  553. package/src/components/tabs/Tabs.tsx +0 -129
  554. package/src/components/tabs/index.ts +0 -2
  555. package/src/components/tabs/meta.ts +0 -10
  556. package/src/components/tabs/types.ts +0 -25
  557. package/src/components/toolbar/Toolbar.tsx +0 -48
  558. package/src/components/toolbar/ToolbarAction.tsx +0 -28
  559. package/src/components/toolbar/index.ts +0 -3
  560. package/src/components/toolbar/meta.ts +0 -19
  561. package/src/components/toolbar/types.ts +0 -21
@@ -1,17 +0,0 @@
1
- export const toolbarMeta = {
2
- name: 'Toolbar',
3
- category: 'component',
4
- directManifestNode: false,
5
- allowedChildren: [],
6
- note: 'Action bar component; not represented as a manifest node in v1.',
7
- props: {},
8
- };
9
- export const toolbarActionMeta = {
10
- name: 'ToolbarAction',
11
- category: 'component',
12
- directManifestNode: false,
13
- allowedChildren: [],
14
- note: 'Action bar item; not represented as a manifest node in v1.',
15
- props: {},
16
- };
17
- //# sourceMappingURL=meta.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/components/toolbar/meta.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,EAAE;IACnB,IAAI,EAAE,iEAAiE;IACvE,KAAK,EAAE,EAAE;CAC2B,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,EAAE;IACnB,IAAI,EAAE,4DAA4D;IAClE,KAAK,EAAE,EAAE;CAC2B,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\n\nexport const toolbarMeta = {\n name: 'Toolbar',\n category: 'component',\n directManifestNode: false,\n allowedChildren: [],\n note: 'Action bar component; not represented as a manifest node in v1.',\n props: {},\n} as const satisfies ZoraComponentMeta;\n\nexport const toolbarActionMeta = {\n name: 'ToolbarAction',\n category: 'component',\n directManifestNode: false,\n allowedChildren: [],\n note: 'Action bar item; not represented as a manifest node in v1.',\n props: {},\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -1,18 +0,0 @@
1
- import type { ButtonIconSpec } from '@ankhorage/surface';
2
- import type React from 'react';
3
- import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
4
- export type ToolbarPosition = 'top' | 'bottom' | 'inline';
5
- export interface ToolbarProps extends ZoraBaseProps {
6
- children?: React.ReactNode;
7
- position?: ToolbarPosition;
8
- floating?: boolean;
9
- compact?: boolean;
10
- }
11
- export interface ToolbarActionProps extends ZoraBaseProps {
12
- label: string;
13
- icon: ButtonIconSpec;
14
- active?: boolean;
15
- disabled?: boolean;
16
- onPress?: () => void;
17
- }
18
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/toolbar/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ButtonIconSpec } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport type { ZoraBaseProps } from '../../theme/ZoraBaseProps';\n\nexport type ToolbarPosition = 'top' | 'bottom' | 'inline';\n\nexport interface ToolbarProps extends ZoraBaseProps {\n children?: React.ReactNode;\n position?: ToolbarPosition;\n floating?: boolean;\n compact?: boolean;\n}\n\nexport interface ToolbarActionProps extends ZoraBaseProps {\n label: string;\n icon: ButtonIconSpec;\n active?: boolean;\n disabled?: boolean;\n onPress?: () => void;\n}\n"]}
@@ -1,147 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Button } from '../../features/button/public';
4
- import { Icon } from '../../features/icon/public';
5
- import { Text } from '../../features/typography/public';
6
- import { Inline } from '../../foundation';
7
- import { resolveIconSize } from '../../internal/recipes';
8
- import { useZoraTheme } from '../../theme/useZoraTheme';
9
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
10
- import type { BreadcrumbItem, BreadcrumbsProps } from './types';
11
-
12
- type BreadcrumbRenderItem =
13
- | {
14
- item: BreadcrumbItem;
15
- type: 'item';
16
- }
17
- | {
18
- type: 'ellipsis';
19
- };
20
-
21
- function normalizeMaxItems(value: number | undefined): number | undefined {
22
- if (value === undefined || !Number.isFinite(value)) {
23
- return undefined;
24
- }
25
-
26
- return Math.max(0, Math.trunc(value));
27
- }
28
-
29
- function createRenderItems(
30
- items: readonly BreadcrumbItem[],
31
- maxItems: number | undefined,
32
- ): readonly BreadcrumbRenderItem[] {
33
- if (maxItems === undefined || maxItems === 0 || items.length <= maxItems || maxItems < 3) {
34
- return items.map((item) => ({ item, type: 'item' }));
35
- }
36
-
37
- const [firstItem] = items;
38
- if (firstItem === undefined) {
39
- return [];
40
- }
41
-
42
- const trailingCount = maxItems - 2;
43
- const trailingItems = items.slice(items.length - trailingCount);
44
-
45
- return [
46
- { item: firstItem, type: 'item' },
47
- { type: 'ellipsis' },
48
- ...trailingItems.map((item) => ({ item, type: 'item' }) satisfies BreadcrumbRenderItem),
49
- ];
50
- }
51
-
52
- function renderSeparator(separator: React.ReactNode) {
53
- return (
54
- <Text emphasis="muted" variant="bodySmall">
55
- {separator}
56
- </Text>
57
- );
58
- }
59
-
60
- function BreadcrumbLabel({ item, compact }: { item: BreadcrumbItem; compact: boolean }) {
61
- const { theme } = useZoraTheme();
62
-
63
- return (
64
- <Inline align="center" gap="xs" wrap="nowrap">
65
- {item.icon ? (
66
- <Icon
67
- {...item.icon}
68
- color={theme.semantics.content.muted}
69
- size={resolveIconSize(compact ? 's' : 'm')}
70
- />
71
- ) : null}
72
- <Text emphasis="muted" variant={compact ? 'caption' : 'bodySmall'}>
73
- {item.label}
74
- </Text>
75
- </Inline>
76
- );
77
- }
78
-
79
- function BreadcrumbsInner({
80
- themeId: _themeId,
81
- mode: _mode,
82
- interactionPolicy,
83
- items,
84
- separator = '/',
85
- maxItems,
86
- compact = false,
87
- disabled = false,
88
- testID,
89
- }: BreadcrumbsProps) {
90
- const normalizedMaxItems = normalizeMaxItems(maxItems);
91
- const renderItems = createRenderItems(items, normalizedMaxItems);
92
- const currentItemId = items.at(-1)?.id;
93
-
94
- if (items.length === 0) {
95
- return null;
96
- }
97
-
98
- return (
99
- <Inline align="center" gap={compact ? 'xs' : 's'} testID={testID} wrap="wrap">
100
- {renderItems.map((renderItem, index) => {
101
- const isLastRenderedItem = index === renderItems.length - 1;
102
- const showSeparator = !isLastRenderedItem;
103
-
104
- if (renderItem.type === 'ellipsis') {
105
- return (
106
- <React.Fragment key="ellipsis">
107
- <Text emphasis="muted" variant={compact ? 'caption' : 'bodySmall'}>
108
- …
109
- </Text>
110
- {showSeparator ? renderSeparator(separator) : null}
111
- </React.Fragment>
112
- );
113
- }
114
-
115
- const { item } = renderItem;
116
- const current = item.id === currentItemId;
117
- const interactive = !current && !disabled && !item.disabled && Boolean(item.onPress);
118
-
119
- return (
120
- <React.Fragment key={item.id}>
121
- {interactive ? (
122
- <Button
123
- color="neutral"
124
- interactionPolicy={interactionPolicy}
125
- leadingIcon={item.icon}
126
- onPress={item.onPress}
127
- size={compact ? 's' : 'm'}
128
- testID={testID ? `${testID}-item-${item.id}` : undefined}
129
- variant="ghost"
130
- >
131
- {item.label}
132
- </Button>
133
- ) : (
134
- <BreadcrumbLabel item={item} compact={compact} />
135
- )}
136
- {showSeparator ? renderSeparator(separator) : null}
137
- </React.Fragment>
138
- );
139
- })}
140
- </Inline>
141
- );
142
- }
143
-
144
- /***
145
- * Renders a breadcrumb trail for hierarchical navigation.
146
- */
147
- export const Breadcrumbs = withZoraThemeScope(BreadcrumbsInner);
@@ -1,2 +0,0 @@
1
- export { Breadcrumbs } from './Breadcrumbs';
2
- export type { BreadcrumbItem, BreadcrumbsProps } from './types';
@@ -1,10 +0,0 @@
1
- import type { ZoraComponentMeta } from '../../metadata';
2
-
3
- export const breadcrumbsMeta = {
4
- name: 'Breadcrumbs',
5
- category: 'component',
6
- directManifestNode: false,
7
- allowedChildren: [],
8
- note: 'Code-facing route hierarchy component; not represented as a manifest node in v1.',
9
- props: {},
10
- } as const satisfies ZoraComponentMeta;
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Menu } from './Menu';
4
- import type { DropdownMenuProps } from './types';
5
-
6
- /***
7
- * Convenience wrapper for rendering a `Menu` as a dropdown.
8
- */
9
- export function DropdownMenu(props: DropdownMenuProps) {
10
- return <Menu {...props} />;
11
- }
@@ -1,59 +0,0 @@
1
- import { Menu as SurfaceMenu, type MenuAction as SurfaceMenuAction } from '@ankhorage/surface';
2
- import React, { useMemo } from 'react';
3
-
4
- import { Icon } from '../../features/icon/public';
5
- import { Box } from '../../features/layout/public';
6
- import { resolveIconSize } from '../../internal/recipes';
7
- import { useZoraTheme } from '../../theme/useZoraTheme';
8
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
9
- import type { MenuAction, MenuProps } from './types';
10
-
11
- function renderActionLeading(action: MenuAction, iconColor: string) {
12
- if (action.leading) {
13
- return action.leading;
14
- }
15
-
16
- if (!action.icon) {
17
- return undefined;
18
- }
19
-
20
- return <Icon {...action.icon} color={iconColor} size={resolveIconSize('s')} />;
21
- }
22
-
23
- function renderActionTrailing(action: MenuAction) {
24
- if (!action.trailing) {
25
- return undefined;
26
- }
27
-
28
- return <Box>{action.trailing}</Box>;
29
- }
30
-
31
- function toSurfaceAction(action: MenuAction, iconColor: string): SurfaceMenuAction {
32
- return {
33
- activate: action.onPress,
34
- description: action.description,
35
- disabled: action.disabled,
36
- id: action.id,
37
- intent: action.intent,
38
- leading: renderActionLeading(action, iconColor),
39
- selected: action.selected,
40
- title: action.title,
41
- trailing: renderActionTrailing(action),
42
- };
43
- }
44
-
45
- function MenuInner({ themeId: _themeId, mode: _mode, actions, onDismiss, ...props }: MenuProps) {
46
- const { theme } = useZoraTheme();
47
- const iconColor = theme.semantics.content.muted;
48
- const surfaceActions = useMemo(
49
- () => actions.map((action) => toSurfaceAction(action, iconColor)),
50
- [actions, iconColor],
51
- );
52
-
53
- return <SurfaceMenu {...props} actions={surfaceActions} dismiss={onDismiss} />;
54
- }
55
-
56
- /***
57
- * Presents a list of actions as a menu with optional icons and intent styling.
58
- */
59
- export const Menu = withZoraThemeScope(MenuInner);
@@ -1,3 +0,0 @@
1
- export { DropdownMenu } from './DropdownMenu';
2
- export { Menu } from './Menu';
3
- export type { DropdownMenuProps, MenuAction, MenuActionIntent, MenuProps } from './types';
@@ -1,19 +0,0 @@
1
- import type { ZoraComponentMeta } from '../../metadata';
2
-
3
- export const menuMeta = {
4
- name: 'Menu',
5
- category: 'component',
6
- directManifestNode: false,
7
- allowedChildren: [],
8
- note: 'Surface-backed action menu; not represented as a manifest node in v1.',
9
- props: {},
10
- } as const satisfies ZoraComponentMeta;
11
-
12
- export const dropdownMenuMeta = {
13
- name: 'DropdownMenu',
14
- category: 'component',
15
- directManifestNode: false,
16
- allowedChildren: [],
17
- note: 'Product-facing alias for Menu trigger/action composition; not represented as a manifest node in v1.',
18
- props: {},
19
- } as const satisfies ZoraComponentMeta;
@@ -1,31 +0,0 @@
1
- import type {
2
- ButtonIconSpec,
3
- MenuActionIntent as SurfaceMenuActionIntent,
4
- MenuProps as SurfaceMenuProps,
5
- } from '@ankhorage/surface';
6
- import type React from 'react';
7
-
8
- import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
9
-
10
- export type MenuActionIntent = SurfaceMenuActionIntent;
11
-
12
- export interface MenuAction {
13
- id: string;
14
- title: React.ReactNode;
15
- description?: React.ReactNode;
16
- icon?: ButtonIconSpec;
17
- leading?: React.ReactNode;
18
- trailing?: React.ReactNode;
19
- intent?: MenuActionIntent;
20
- disabled?: boolean;
21
- selected?: boolean;
22
- onPress?: () => void;
23
- }
24
-
25
- export interface MenuProps
26
- extends ZoraBaseProps, Omit<SurfaceMenuProps, 'actions' | 'dismiss' | 'mode' | 'themeId'> {
27
- actions: readonly MenuAction[];
28
- onDismiss?: () => void;
29
- }
30
-
31
- export type DropdownMenuProps = MenuProps;
@@ -1,63 +0,0 @@
1
- import { Modal as SurfaceModal } from '@ankhorage/surface';
2
- import React, { useCallback, useEffect, useRef } from 'react';
3
-
4
- import { Box, Stack } from '../../features/layout/public';
5
- import { Heading } from '../../features/typography/public';
6
- import { Text } from '../../features/typography/public';
7
- import { resolveDialogWidth } from '../../internal/recipes';
8
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
9
- import type { ModalProps } from './types';
10
-
11
- function useStableCallback(callback: (() => void) | undefined): (() => void) | undefined {
12
- const callbackRef = useRef(callback);
13
-
14
- useEffect(() => {
15
- callbackRef.current = callback;
16
- }, [callback]);
17
-
18
- return useCallback(() => {
19
- callbackRef.current?.();
20
- }, []);
21
- }
22
-
23
- function ModalInner({
24
- themeId: _themeId,
25
- mode: _mode,
26
- children,
27
- title,
28
- description,
29
- footer,
30
- width = 'default',
31
- onDismiss,
32
- interactionPolicy,
33
- ...props
34
- }: ModalProps) {
35
- const hasHeader = title != null || description != null;
36
- const stableOnDismiss = useStableCallback(onDismiss);
37
-
38
- return (
39
- <SurfaceModal {...props} onDismiss={stableOnDismiss} interactionPolicy={interactionPolicy}>
40
- <Box maxWidth={resolveDialogWidth(width)} style={{ alignSelf: 'center', width: '100%' }}>
41
- <Stack gap="m">
42
- {hasHeader ? (
43
- <Stack gap="xs">
44
- {title ? <Heading level={3}>{title}</Heading> : null}
45
- {description ? (
46
- <Text emphasis="muted" variant="bodySmall">
47
- {description}
48
- </Text>
49
- ) : null}
50
- </Stack>
51
- ) : null}
52
- {children ? <Box>{children}</Box> : null}
53
- {footer ? <Box pt="xs">{footer}</Box> : null}
54
- </Stack>
55
- </Box>
56
- </SurfaceModal>
57
- );
58
- }
59
-
60
- /***
61
- * Modal dialog surface with header/content/footer slots.
62
- */
63
- export const Modal = withZoraThemeScope(ModalInner);
@@ -1,2 +0,0 @@
1
- export { Modal } from './Modal';
2
- export type { ModalProps } from './types';
@@ -1,10 +0,0 @@
1
- import type { ZoraComponentMeta } from '../../metadata';
2
-
3
- export const modalMeta = {
4
- name: 'Modal',
5
- category: 'component',
6
- directManifestNode: false,
7
- allowedChildren: [],
8
- note: 'Overlay component; not represented as a manifest node in v1.',
9
- props: {},
10
- } as const satisfies ZoraComponentMeta;
@@ -1,16 +0,0 @@
1
- import type { ModalProps as SurfaceModalProps } from '@ankhorage/surface';
2
- import type React from 'react';
3
-
4
- import type { ZoraContentWidth } from '../../internal/recipes';
5
- import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
6
-
7
- export interface ModalProps
8
- extends
9
- ZoraBaseProps,
10
- Pick<Omit<SurfaceModalProps, 'mode' | 'themeId'>, 'closeOnBackdrop' | 'onDismiss' | 'visible'> {
11
- children?: React.ReactNode;
12
- title?: React.ReactNode;
13
- description?: React.ReactNode;
14
- footer?: React.ReactNode;
15
- width?: ZoraContentWidth;
16
- }
@@ -1,199 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Button } from '../../features/button/public';
4
- import { Stack } from '../../features/layout/public';
5
- import { Text } from '../../features/typography/public';
6
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
7
- import type { PaginationProps } from './types';
8
-
9
- type PaginationItem = number | 'ellipsis';
10
-
11
- function clampInteger(value: number, min: number, max: number): number {
12
- if (!Number.isFinite(value)) {
13
- return min;
14
- }
15
-
16
- return Math.min(Math.max(Math.trunc(value), min), max);
17
- }
18
-
19
- function createRange(start: number, end: number): number[] {
20
- if (end < start) {
21
- return [];
22
- }
23
-
24
- return Array.from({ length: end - start + 1 }, (_, index) => start + index);
25
- }
26
-
27
- function normalizeCount(value: number | undefined, fallback: number): number {
28
- if (value === undefined || !Number.isFinite(value)) {
29
- return fallback;
30
- }
31
-
32
- return Math.max(0, Math.trunc(value));
33
- }
34
-
35
- function createPaginationItems({
36
- page,
37
- pageCount,
38
- siblingCount,
39
- boundaryCount,
40
- compact,
41
- }: {
42
- page: number;
43
- pageCount: number;
44
- siblingCount: number;
45
- boundaryCount: number;
46
- compact: boolean;
47
- }): readonly PaginationItem[] {
48
- if (pageCount <= 0) {
49
- return [];
50
- }
51
-
52
- if (compact) {
53
- return [page];
54
- }
55
-
56
- const boundaries = createRange(1, Math.min(boundaryCount, pageCount));
57
- const trailingBoundaries = createRange(Math.max(pageCount - boundaryCount + 1, 1), pageCount);
58
- const siblings = createRange(
59
- Math.max(page - siblingCount, 1),
60
- Math.min(page + siblingCount, pageCount),
61
- );
62
- const pages = [...new Set([...boundaries, ...siblings, ...trailingBoundaries])].sort(
63
- (left, right) => left - right,
64
- );
65
- const items: PaginationItem[] = [];
66
-
67
- pages.forEach((nextPage, index) => {
68
- const previousPage = pages[index - 1];
69
- if (previousPage !== undefined && nextPage - previousPage > 1) {
70
- items.push('ellipsis');
71
- }
72
-
73
- items.push(nextPage);
74
- });
75
-
76
- return items;
77
- }
78
-
79
- function PaginationInner({
80
- themeId: _themeId,
81
- mode: _mode,
82
- page,
83
- pageCount,
84
- onPageChange,
85
- disabled = false,
86
- siblingCount = 1,
87
- boundaryCount = 1,
88
- showFirstLast = false,
89
- previousLabel = 'Previous',
90
- nextLabel = 'Next',
91
- firstLabel = 'First',
92
- lastLabel = 'Last',
93
- compact = false,
94
- testID,
95
- interactionPolicy,
96
- }: PaginationProps) {
97
- const passive = interactionPolicy === 'passive';
98
- const normalizedPageCount = Math.max(0, Math.trunc(Number.isFinite(pageCount) ? pageCount : 0));
99
- const currentPage = clampInteger(page, 1, Math.max(normalizedPageCount, 1));
100
- const safeSiblingCount = normalizeCount(siblingCount, 1);
101
- const safeBoundaryCount = normalizeCount(boundaryCount, 1);
102
- const items = createPaginationItems({
103
- boundaryCount: safeBoundaryCount,
104
- compact,
105
- page: currentPage,
106
- pageCount: normalizedPageCount,
107
- siblingCount: safeSiblingCount,
108
- });
109
- const canGoPrevious = currentPage > 1;
110
- const canGoNext = currentPage < normalizedPageCount;
111
- const navigationDisabled = disabled || normalizedPageCount <= 1;
112
-
113
- const changePage = (nextPage: number) => {
114
- const clampedPage = clampInteger(nextPage, 1, Math.max(normalizedPageCount, 1));
115
- if (passive || disabled || clampedPage === currentPage) {
116
- return;
117
- }
118
-
119
- onPageChange?.(clampedPage);
120
- };
121
-
122
- return (
123
- <Stack align="center" direction="row" gap="xs" testID={testID}>
124
- {showFirstLast ? (
125
- <Button
126
- disabled={navigationDisabled || currentPage === 1}
127
- interactionPolicy={interactionPolicy}
128
- onPress={() => changePage(1)}
129
- size="s"
130
- testID={testID ? `${testID}-first` : undefined}
131
- variant="ghost"
132
- >
133
- {firstLabel}
134
- </Button>
135
- ) : null}
136
-
137
- <Button
138
- disabled={navigationDisabled || !canGoPrevious}
139
- interactionPolicy={interactionPolicy}
140
- onPress={() => changePage(currentPage - 1)}
141
- size="s"
142
- testID={testID ? `${testID}-previous` : undefined}
143
- variant="ghost"
144
- >
145
- {previousLabel}
146
- </Button>
147
-
148
- {items.map((item, index) =>
149
- item === 'ellipsis' ? (
150
- <Text key={`ellipsis-${index}`} emphasis="muted" variant="bodySmall">
151
- …
152
- </Text>
153
- ) : (
154
- <Button
155
- color={item === currentPage ? 'primary' : 'neutral'}
156
- disabled={disabled}
157
- interactionPolicy={interactionPolicy}
158
- key={item}
159
- onPress={() => changePage(item)}
160
- size="s"
161
- testID={testID ? `${testID}-page-${item}` : undefined}
162
- variant={item === currentPage ? 'solid' : 'ghost'}
163
- >
164
- {item}
165
- </Button>
166
- ),
167
- )}
168
-
169
- <Button
170
- disabled={navigationDisabled || !canGoNext}
171
- interactionPolicy={interactionPolicy}
172
- onPress={() => changePage(currentPage + 1)}
173
- size="s"
174
- testID={testID ? `${testID}-next` : undefined}
175
- variant="ghost"
176
- >
177
- {nextLabel}
178
- </Button>
179
-
180
- {showFirstLast ? (
181
- <Button
182
- disabled={navigationDisabled || currentPage === normalizedPageCount}
183
- interactionPolicy={interactionPolicy}
184
- onPress={() => changePage(normalizedPageCount)}
185
- size="s"
186
- testID={testID ? `${testID}-last` : undefined}
187
- variant="ghost"
188
- >
189
- {lastLabel}
190
- </Button>
191
- ) : null}
192
- </Stack>
193
- );
194
- }
195
-
196
- /***
197
- * Pagination control for navigating between pages of results.
198
- */
199
- export const Pagination = withZoraThemeScope(PaginationInner);
@@ -1,2 +0,0 @@
1
- export { Pagination } from './Pagination';
2
- export type { PaginationProps } from './types';
@@ -1,10 +0,0 @@
1
- import type { ZoraComponentMeta } from '../../metadata';
2
-
3
- export const paginationMeta = {
4
- name: 'Pagination',
5
- category: 'component',
6
- directManifestNode: false,
7
- allowedChildren: [],
8
- note: 'Code-facing controlled pagination component; not represented as a manifest node in v1.',
9
- props: {},
10
- } as const satisfies ZoraComponentMeta;