@ankhorage/zora 22.0.72 → 22.0.74

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 (477) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/dist/{features/authoring/allowedChildren.d.ts → constants/authoring.d.ts} +40 -1
  4. package/dist/constants/authoring.d.ts.map +1 -0
  5. package/dist/{features/authoring/allowedChildren.js → constants/authoring.js} +53 -1
  6. package/dist/constants/authoring.js.map +1 -0
  7. package/dist/features/accordion/accordionItemMeta.js +1 -1
  8. package/dist/features/accordion/accordionItemMeta.js.map +1 -1
  9. package/dist/features/accordion/accordionMeta.js.map +1 -1
  10. package/dist/features/activity-indicator/activityIndicatorMeta.js.map +1 -1
  11. package/dist/features/app-bar/appBarMeta.js.map +1 -1
  12. package/dist/features/auth/forgotPasswordFormMeta.js.map +1 -1
  13. package/dist/features/auth/oauthProviderButtonMeta.js.map +1 -1
  14. package/dist/features/auth/oauthProviderListMeta.js.map +1 -1
  15. package/dist/features/auth/otpFormMeta.js.map +1 -1
  16. package/dist/features/auth/signInFormMeta.js.map +1 -1
  17. package/dist/features/auth/signUpFormMeta.js.map +1 -1
  18. package/dist/features/bottom-sheet/bottomSheetMeta.js +1 -1
  19. package/dist/features/bottom-sheet/bottomSheetMeta.js.map +1 -1
  20. package/dist/features/breadcrumbs/breadcrumbsMeta.js.map +1 -1
  21. package/dist/features/button/adapters/inbound/Button.d.ts.map +1 -1
  22. package/dist/features/button/adapters/inbound/Button.js +2 -1
  23. package/dist/features/button/adapters/inbound/Button.js.map +1 -1
  24. package/dist/features/button/buttonGroupMeta.js.map +1 -1
  25. package/dist/features/button/buttonMeta.js +1 -1
  26. package/dist/features/button/buttonMeta.js.map +1 -1
  27. package/dist/features/card/adapters/inbound/Card.d.ts.map +1 -1
  28. package/dist/features/card/adapters/inbound/Card.js +2 -1
  29. package/dist/features/card/adapters/inbound/Card.js.map +1 -1
  30. package/dist/features/card/cardMeta.js +2 -2
  31. package/dist/features/card/cardMeta.js.map +1 -1
  32. package/dist/features/card/mediaCardMeta.js +1 -1
  33. package/dist/features/card/mediaCardMeta.js.map +1 -1
  34. package/dist/features/card/postCardMeta.js +1 -1
  35. package/dist/features/card/postCardMeta.js.map +1 -1
  36. package/dist/features/card/productCardMeta.js.map +1 -1
  37. package/dist/features/chat/chatListItemMeta.js.map +1 -1
  38. package/dist/features/chat/messageBubbleMeta.js +1 -1
  39. package/dist/features/chat/messageBubbleMeta.js.map +1 -1
  40. package/dist/features/collection-editor/meta.js.map +1 -1
  41. package/dist/features/content-rail/contentRailMeta.js +1 -1
  42. package/dist/features/content-rail/contentRailMeta.js.map +1 -1
  43. package/dist/features/date-picker/datePickerMeta.js.map +1 -1
  44. package/dist/features/dialog/dialogMeta.js +1 -1
  45. package/dist/features/dialog/dialogMeta.js.map +1 -1
  46. package/dist/features/empty-state/emptyStateMeta.js.map +1 -1
  47. package/dist/features/form/checkbox/checkboxMeta.js.map +1 -1
  48. package/dist/features/form/field/meta.js.map +1 -1
  49. package/dist/features/form/formActionsMeta.js.map +1 -1
  50. package/dist/features/form/formErrorMeta.js.map +1 -1
  51. package/dist/features/form/formMeta.js.map +1 -1
  52. package/dist/features/form/radio/adapters/inbound/RadioGroup.d.ts.map +1 -1
  53. package/dist/features/form/radio/adapters/inbound/RadioGroup.js +2 -1
  54. package/dist/features/form/radio/adapters/inbound/RadioGroup.js.map +1 -1
  55. package/dist/features/form/radio/radioMeta.js.map +1 -1
  56. package/dist/features/form/select/selectMeta.js.map +1 -1
  57. package/dist/features/form/switch/switchMeta.js.map +1 -1
  58. package/dist/features/form/text-input/textInputMeta.js.map +1 -1
  59. package/dist/features/game/{adapters/inbound → utils}/measureGameEntity.d.ts +1 -1
  60. package/dist/features/game/utils/measureGameEntity.d.ts.map +1 -0
  61. package/dist/features/game/utils/measureGameEntity.js.map +1 -0
  62. package/dist/features/game/utils/useGameEntityMeasurement.js +1 -1
  63. package/dist/features/game/utils/useGameEntityMeasurement.js.map +1 -1
  64. package/dist/features/gradient/gradientMeta.js +1 -1
  65. package/dist/features/gradient/gradientMeta.js.map +1 -1
  66. package/dist/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.d.ts +1 -1
  67. package/dist/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.d.ts.map +1 -1
  68. package/dist/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.js.map +1 -1
  69. package/dist/features/graph-view/adapters/inbound/web-artifact/GraphView.d.ts +1 -96
  70. package/dist/features/graph-view/adapters/inbound/web-artifact/GraphView.d.ts.map +1 -1
  71. package/dist/features/graph-view/adapters/inbound/web-artifact/GraphView.js.map +1 -1
  72. package/dist/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.d.ts +1 -1
  73. package/dist/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.d.ts.map +1 -1
  74. package/dist/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.js.map +1 -1
  75. package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphController.d.ts +1 -1
  76. package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphController.d.ts.map +1 -1
  77. package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphController.js.map +1 -1
  78. package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.d.ts +1 -1
  79. package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.d.ts.map +1 -1
  80. package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.js.map +1 -1
  81. package/dist/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.d.ts +1 -1
  82. package/dist/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.d.ts.map +1 -1
  83. package/dist/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.js.map +1 -1
  84. package/dist/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.d.ts +1 -1
  85. package/dist/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.d.ts.map +1 -1
  86. package/dist/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.js.map +1 -1
  87. package/dist/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.d.ts +1 -1
  88. package/dist/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.d.ts.map +1 -1
  89. package/dist/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.js.map +1 -1
  90. package/dist/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.d.ts +1 -1
  91. package/dist/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.d.ts.map +1 -1
  92. package/dist/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.js.map +1 -1
  93. package/dist/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.d.ts +1 -1
  94. package/dist/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.d.ts.map +1 -1
  95. package/dist/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.js.map +1 -1
  96. package/dist/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.d.ts +1 -1
  97. package/dist/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.d.ts.map +1 -1
  98. package/dist/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.js.map +1 -1
  99. package/dist/features/graph-view/public.d.ts +2 -1
  100. package/dist/features/graph-view/public.d.ts.map +1 -1
  101. package/dist/features/graph-view/public.js +1 -1
  102. package/dist/features/graph-view/public.js.map +1 -1
  103. package/dist/features/hero/heroMeta.js.map +1 -1
  104. package/dist/features/icon/iconMeta.js.map +1 -1
  105. package/dist/features/image/imageMeta.js.map +1 -1
  106. package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.js +1 -1
  107. package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.js.map +1 -1
  108. package/dist/features/layout/appShellMeta.js.map +1 -1
  109. package/dist/features/layout/gridMeta.js +1 -1
  110. package/dist/features/layout/gridMeta.js.map +1 -1
  111. package/dist/features/layout/screenMeta.js +1 -1
  112. package/dist/features/layout/screenMeta.js.map +1 -1
  113. package/dist/features/layout/scrollViewMeta.js +1 -1
  114. package/dist/features/layout/scrollViewMeta.js.map +1 -1
  115. package/dist/features/layout/viewMeta.js +1 -1
  116. package/dist/features/layout/viewMeta.js.map +1 -1
  117. package/dist/features/list/flatListMeta.js +1 -1
  118. package/dist/features/list/flatListMeta.js.map +1 -1
  119. package/dist/features/list/meta.js.map +1 -1
  120. package/dist/features/missing-element/missingElementMeta.js.map +1 -1
  121. package/dist/features/palette-item/paletteItemMeta.js.map +1 -1
  122. package/dist/features/popover-menu/popoverMenuMeta.js.map +1 -1
  123. package/dist/features/progress/progressMeta.js.map +1 -1
  124. package/dist/features/reader/meta.js +1 -1
  125. package/dist/features/reader/meta.js.map +1 -1
  126. package/dist/features/{authoring → registry}/bindableComponentMeta.d.ts.map +1 -1
  127. package/dist/features/registry/bindableComponentMeta.js.map +1 -0
  128. package/dist/features/registry/componentMeta.d.ts.map +1 -0
  129. package/dist/features/{authoring → registry}/componentMeta.js +1 -1
  130. package/dist/features/registry/componentMeta.js.map +1 -0
  131. package/dist/features/{authoring/utils → registry}/createManifestBindings.d.ts +1 -1
  132. package/dist/features/registry/createManifestBindings.d.ts.map +1 -0
  133. package/dist/features/registry/createManifestBindings.js.map +1 -0
  134. package/dist/features/{authoring/utils → registry}/finalizeFeatureMetadata.d.ts +1 -1
  135. package/dist/features/registry/finalizeFeatureMetadata.d.ts.map +1 -0
  136. package/dist/features/{authoring/utils → registry}/finalizeFeatureMetadata.js +1 -1
  137. package/dist/features/registry/finalizeFeatureMetadata.js.map +1 -0
  138. package/dist/features/{authoring → registry}/index.d.ts +1 -1
  139. package/dist/features/registry/index.d.ts.map +1 -0
  140. package/dist/features/{authoring → registry}/index.js +1 -1
  141. package/dist/features/registry/index.js.map +1 -0
  142. package/dist/features/registry/themeRecipeMeta.d.ts.map +1 -0
  143. package/dist/features/registry/themeRecipeMeta.js.map +1 -0
  144. package/dist/features/scanner/meta.js +1 -1
  145. package/dist/features/scanner/meta.js.map +1 -1
  146. package/dist/features/section/screenSectionMeta.js +1 -1
  147. package/dist/features/section/screenSectionMeta.js.map +1 -1
  148. package/dist/features/section/sectionHeaderMeta.js.map +1 -1
  149. package/dist/features/selection/meta.js.map +1 -1
  150. package/dist/features/skeleton/skeletonMeta.js.map +1 -1
  151. package/dist/features/surface/surfaceMeta.js +1 -1
  152. package/dist/features/surface/surfaceMeta.js.map +1 -1
  153. package/dist/features/tabs/tabPanelMeta.js +1 -1
  154. package/dist/features/tabs/tabPanelMeta.js.map +1 -1
  155. package/dist/features/theme/ThemeModeToggle.meta.js.map +1 -1
  156. package/dist/features/theme/composition/useZoraThemeRecipe.d.ts +3 -1
  157. package/dist/features/theme/composition/useZoraThemeRecipe.d.ts.map +1 -1
  158. package/dist/features/theme/composition/useZoraThemeRecipe.js +3 -2
  159. package/dist/features/theme/composition/useZoraThemeRecipe.js.map +1 -1
  160. package/dist/features/theme/utils/resolveZoraThemeRecipe.d.ts +3 -1
  161. package/dist/features/theme/utils/resolveZoraThemeRecipe.d.ts.map +1 -1
  162. package/dist/features/theme/utils/resolveZoraThemeRecipe.js +6 -6
  163. package/dist/features/theme/utils/resolveZoraThemeRecipe.js.map +1 -1
  164. package/dist/features/time-picker/timePickerMeta.js.map +1 -1
  165. package/dist/features/timeline/meta.js.map +1 -1
  166. package/dist/features/toast/toastMeta.js.map +1 -1
  167. package/dist/features/toast/toastProviderMeta.js.map +1 -1
  168. package/dist/features/tree-view/meta.js.map +1 -1
  169. package/dist/features/typography/adapters/inbound/Heading.d.ts.map +1 -1
  170. package/dist/features/typography/adapters/inbound/Heading.js +2 -1
  171. package/dist/features/typography/adapters/inbound/Heading.js.map +1 -1
  172. package/dist/features/typography/adapters/inbound/Text.d.ts.map +1 -1
  173. package/dist/features/typography/adapters/inbound/Text.js +2 -1
  174. package/dist/features/typography/adapters/inbound/Text.js.map +1 -1
  175. package/dist/features/typography/headingMeta.js +1 -1
  176. package/dist/features/typography/headingMeta.js.map +1 -1
  177. package/dist/features/typography/textMeta.js +1 -1
  178. package/dist/features/typography/textMeta.js.map +1 -1
  179. package/dist/index.d.ts +2 -2
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.js +1 -1
  182. package/dist/index.js.map +1 -1
  183. package/dist/types/auth.d.ts +1 -1
  184. package/dist/types/auth.d.ts.map +1 -1
  185. package/dist/types/auth.js.map +1 -1
  186. package/dist/types/avatar-group.d.ts +1 -1
  187. package/dist/types/avatar-group.d.ts.map +1 -1
  188. package/dist/types/avatar-group.js.map +1 -1
  189. package/dist/types/button-group.d.ts +1 -1
  190. package/dist/types/button-group.d.ts.map +1 -1
  191. package/dist/types/button-group.js.map +1 -1
  192. package/dist/types/chat.d.ts +1 -1
  193. package/dist/types/chat.d.ts.map +1 -1
  194. package/dist/types/chat.js.map +1 -1
  195. package/dist/types/gradient.d.ts +1 -1
  196. package/dist/types/gradient.d.ts.map +1 -1
  197. package/dist/types/gradient.js.map +1 -1
  198. package/dist/types/graph-view.d.ts +98 -0
  199. package/dist/types/graph-view.d.ts.map +1 -0
  200. package/dist/types/graph-view.js +2 -0
  201. package/dist/types/graph-view.js.map +1 -0
  202. package/dist/types/graphViewRuntime.d.ts +1 -1
  203. package/dist/types/graphViewRuntime.d.ts.map +1 -1
  204. package/dist/types/graphViewRuntime.js.map +1 -1
  205. package/dist/types/post-card.d.ts +1 -1
  206. package/dist/types/post-card.d.ts.map +1 -1
  207. package/dist/types/post-card.js.map +1 -1
  208. package/dist/types/radio.d.ts +1 -1
  209. package/dist/types/radio.d.ts.map +1 -1
  210. package/dist/types/radio.js.map +1 -1
  211. package/dist/types/scanner.d.ts +1 -1
  212. package/dist/types/scanner.d.ts.map +1 -1
  213. package/dist/types/scanner.js.map +1 -1
  214. package/dist/types/skeleton.d.ts +1 -1
  215. package/dist/types/skeleton.d.ts.map +1 -1
  216. package/dist/types/skeleton.js.map +1 -1
  217. package/dist/types/theme-mode-toggle.d.ts +1 -1
  218. package/dist/types/theme-mode-toggle.d.ts.map +1 -1
  219. package/dist/types/theme-mode-toggle.js.map +1 -1
  220. package/package.json +25 -25
  221. package/src/{features/authoring/allowedChildren.ts → constants/authoring.ts} +55 -0
  222. package/src/features/accordion/accordionItemMeta.ts +2 -2
  223. package/src/features/accordion/accordionMeta.ts +1 -1
  224. package/src/features/activity-indicator/activityIndicatorMeta.ts +1 -1
  225. package/src/features/app-bar/appBarMeta.ts +1 -1
  226. package/src/features/auth/forgotPasswordFormMeta.ts +1 -1
  227. package/src/features/auth/oauthProviderButtonMeta.ts +1 -1
  228. package/src/features/auth/oauthProviderListMeta.ts +1 -1
  229. package/src/features/auth/otpFormMeta.ts +1 -1
  230. package/src/features/auth/public.test.ts +21 -18
  231. package/src/features/auth/signInFormMeta.ts +1 -1
  232. package/src/features/auth/signUpFormMeta.ts +1 -1
  233. package/src/features/bottom-sheet/bottomSheetMeta.ts +1 -1
  234. package/src/features/breadcrumbs/breadcrumbsMeta.ts +1 -1
  235. package/src/features/button/adapters/inbound/Button.tsx +2 -1
  236. package/src/features/button/buttonGroupMeta.ts +1 -1
  237. package/src/features/button/buttonMeta.ts +2 -2
  238. package/src/features/card/adapters/inbound/Card.tsx +2 -1
  239. package/src/features/card/adapters/inbound/PostCard.test.tsx +4 -4
  240. package/src/features/card/adapters/inbound/ProductCard.test.tsx +9 -9
  241. package/src/features/card/cardMeta.ts +3 -3
  242. package/src/features/card/mediaCardMeta.ts +1 -1
  243. package/src/features/card/postCardMeta.ts +2 -2
  244. package/src/features/card/productCardMeta.ts +1 -1
  245. package/src/features/chat/adapters/inbound/ChatListItem.test.tsx +4 -4
  246. package/src/features/chat/chatListItemMeta.ts +1 -1
  247. package/src/features/chat/messageBubbleMeta.ts +2 -2
  248. package/src/features/collection-editor/meta.ts +1 -1
  249. package/src/features/content-rail/contentRailMeta.ts +2 -2
  250. package/src/features/date-picker/datePickerMeta.ts +1 -1
  251. package/src/features/date-picker/public.test.ts +4 -6
  252. package/src/features/dialog/dialogMeta.ts +1 -1
  253. package/src/features/empty-state/emptyStateMeta.ts +1 -1
  254. package/src/features/form/checkbox/checkboxMeta.ts +1 -1
  255. package/src/features/form/field/meta.ts +1 -1
  256. package/src/features/form/formActionsMeta.ts +1 -1
  257. package/src/features/form/formErrorMeta.ts +1 -1
  258. package/src/features/form/formMeta.ts +1 -1
  259. package/src/features/form/radio/adapters/inbound/RadioGroup.tsx +2 -1
  260. package/src/features/form/radio/radioMeta.ts +1 -1
  261. package/src/features/form/select/selectMeta.ts +1 -1
  262. package/src/features/form/switch/switchMeta.ts +1 -1
  263. package/src/features/form/text-input/textInputMeta.ts +1 -1
  264. package/src/features/game/{adapters/inbound → utils}/measureGameEntity.ts +1 -1
  265. package/src/features/game/utils/useGameEntityMeasurement.ts +1 -1
  266. package/src/features/gradient/gradientMeta.ts +2 -2
  267. package/src/features/gradient/public.test.ts +4 -6
  268. package/src/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.tsx +1 -1
  269. package/src/features/graph-view/adapters/inbound/web-artifact/GraphView.tsx +6 -116
  270. package/src/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.ts +1 -1
  271. package/src/features/graph-view/adapters/inbound/web-artifact/createGraphController.ts +1 -1
  272. package/src/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.test.ts +2 -2
  273. package/src/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.ts +8 -8
  274. package/src/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.test.ts +1 -1
  275. package/src/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.ts +1 -1
  276. package/src/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.ts +1 -1
  277. package/src/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.ts +1 -1
  278. package/src/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.ts +1 -1
  279. package/src/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.ts +1 -1
  280. package/src/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.ts +1 -1
  281. package/src/features/graph-view/public.ts +18 -18
  282. package/src/features/hero/heroMeta.ts +1 -1
  283. package/src/features/icon/iconMeta.ts +1 -1
  284. package/src/features/icon/utils/meta.test.ts +8 -17
  285. package/src/features/image/imageMeta.ts +1 -1
  286. package/src/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.ts +1 -1
  287. package/src/features/layout/appShellMeta.ts +1 -1
  288. package/src/features/layout/gridMeta.ts +2 -2
  289. package/src/features/layout/screenMeta.ts +2 -2
  290. package/src/features/layout/scrollViewMeta.ts +1 -1
  291. package/src/features/layout/viewMeta.ts +2 -2
  292. package/src/features/list/flatListMeta.ts +1 -1
  293. package/src/features/list/meta.ts +1 -1
  294. package/src/features/missing-element/MissingElement.test.ts +7 -6
  295. package/src/features/missing-element/missingElementMeta.ts +1 -1
  296. package/src/features/palette-item/paletteItemMeta.ts +1 -1
  297. package/src/features/popover-menu/popoverMenuMeta.ts +1 -1
  298. package/src/features/progress/progressMeta.ts +1 -1
  299. package/src/features/reader/meta.ts +2 -2
  300. package/src/features/{authoring → registry}/componentMeta.ts +1 -1
  301. package/src/features/{authoring/utils → registry}/createManifestBindings.ts +1 -1
  302. package/src/features/{authoring → registry}/featureManifest.test.ts +1 -1
  303. package/src/features/{authoring/utils → registry}/finalizeFeatureMetadata.ts +2 -2
  304. package/src/features/{authoring → registry}/index.ts +1 -1
  305. package/src/features/scanner/meta.ts +2 -2
  306. package/src/features/section/screenSectionMeta.ts +2 -2
  307. package/src/features/section/sectionHeaderMeta.ts +1 -1
  308. package/src/features/selection/meta.ts +1 -1
  309. package/src/features/skeleton/public.test.ts +6 -6
  310. package/src/features/skeleton/skeletonMeta.ts +1 -1
  311. package/src/features/surface/surfaceMeta.ts +1 -1
  312. package/src/features/tabs/tabPanelMeta.ts +1 -1
  313. package/src/features/theme/ThemeModeToggle.meta.ts +1 -1
  314. package/src/features/theme/composition/useZoraThemeRecipe.ts +4 -2
  315. package/src/features/theme/utils/resolveZoraThemeRecipe.test.ts +45 -8
  316. package/src/features/theme/utils/resolveZoraThemeRecipe.ts +11 -8
  317. package/src/features/time-picker/public.test.ts +4 -6
  318. package/src/features/time-picker/timePickerMeta.ts +1 -1
  319. package/src/features/timeline/meta.ts +1 -1
  320. package/src/features/toast/public.test.ts +4 -3
  321. package/src/features/toast/toastMeta.ts +1 -1
  322. package/src/features/toast/toastProviderMeta.ts +1 -1
  323. package/src/features/tree-view/meta.ts +1 -1
  324. package/src/features/typography/adapters/inbound/Heading.tsx +2 -1
  325. package/src/features/typography/adapters/inbound/Text.tsx +2 -1
  326. package/src/features/typography/headingMeta.ts +2 -2
  327. package/src/features/typography/textMeta.ts +2 -2
  328. package/src/features/uploader/public.test.ts +1 -1
  329. package/src/index.ts +33 -33
  330. package/src/structureOwnership.test.ts +3 -3
  331. package/src/types/auth.ts +1 -1
  332. package/src/types/avatar-group.ts +1 -1
  333. package/src/types/button-group.ts +1 -1
  334. package/src/types/chat.ts +1 -1
  335. package/src/types/gradient.ts +1 -1
  336. package/src/types/graph-view.ts +117 -0
  337. package/src/types/graphViewRuntime.ts +1 -1
  338. package/src/types/post-card.ts +1 -1
  339. package/src/types/radio.ts +1 -1
  340. package/src/types/scanner.ts +1 -1
  341. package/src/types/skeleton.ts +1 -1
  342. package/src/types/theme-mode-toggle.ts +1 -1
  343. package/web-dist/chunks/{Accordion-jd33dw92.js → Accordion-07rdw2vh.js} +1 -1
  344. package/web-dist/chunks/{Accordion-sn80af3k.js → Accordion-45ej9brb.js} +1 -1
  345. package/web-dist/chunks/{Accordion-qyckg9d2.js → Accordion-555gnfmw.js} +3 -3
  346. package/web-dist/chunks/{Accordion-ypdtx57y.js → Accordion-73m7z73v.js} +3 -3
  347. package/web-dist/chunks/{Accordion-s334j5tf.js → Accordion-8af800ts.js} +2 -2
  348. package/web-dist/chunks/{Accordion-7ycn5332.js → Accordion-9rnepkvk.js} +1 -1
  349. package/web-dist/chunks/{Accordion-1vbm971q.js → Accordion-avmgvcef.js} +1 -1
  350. package/web-dist/chunks/{Accordion-a03xpbc0.js → Accordion-b3qy1trj.js} +39 -7
  351. package/web-dist/chunks/Accordion-e1nn8m46.js +82 -0
  352. package/web-dist/chunks/{Accordion-eps4ej1m.js → Accordion-emczc5rg.js} +33 -5
  353. package/web-dist/chunks/{Accordion-wzybs1e3.js → Accordion-jhwsvx3g.js} +1 -1
  354. package/web-dist/chunks/{Accordion-qy22k9t8.js → Accordion-jj3bg8c1.js} +1 -1
  355. package/web-dist/chunks/{Accordion-nn80tt99.js → Accordion-mpnb4qqw.js} +2 -2
  356. package/web-dist/chunks/{Accordion-z5rdysmt.js → Accordion-nc5gnvnb.js} +33 -4
  357. package/web-dist/chunks/{Accordion-qkrwkab6.js → Accordion-nn38n7q4.js} +1 -1
  358. package/web-dist/chunks/{Accordion-zh8esf04.js → Accordion-pnvt10cv.js} +2 -2
  359. package/web-dist/chunks/{Accordion-4prv90j4.js → Accordion-qvt6qdqm.js} +1 -1
  360. package/web-dist/chunks/{Accordion-hk6zs4dc.js → Accordion-tj61sa5s.js} +2 -2
  361. package/web-dist/chunks/{Accordion-5r2dxq03.js → Accordion-v1dtv6v0.js} +1 -1
  362. package/web-dist/chunks/{Accordion-5t5sw5cp.js → Accordion-vmz8y01b.js} +4 -4
  363. package/web-dist/chunks/{Accordion-pssgp0pq.js → Accordion-ycmg06sq.js} +71 -4
  364. package/web-dist/chunks/{Accordion-h62mzp3n.js → Accordion-yz7b7njb.js} +2 -2
  365. package/web-dist/chunks/{Accordion-2ga47602.js → Accordion-zf3kzvef.js} +1 -1
  366. package/web-dist/components/accordion/Accordion.js +3 -3
  367. package/web-dist/components/accordion-item/AccordionItem.js +3 -3
  368. package/web-dist/components/app-bar/AppBar.js +4 -4
  369. package/web-dist/components/avatar/Avatar.js +3 -3
  370. package/web-dist/components/avatar-group/AvatarGroup.js +3 -3
  371. package/web-dist/components/barcode-scanner-view/BarcodeScannerView.js +6 -6
  372. package/web-dist/components/breadcrumbs/Breadcrumbs.js +3 -3
  373. package/web-dist/components/button/Button.js +2 -2
  374. package/web-dist/components/button-group/ButtonGroup.js +2 -2
  375. package/web-dist/components/camera-permission-view/CameraPermissionView.js +6 -6
  376. package/web-dist/components/card/Card.js +5 -5
  377. package/web-dist/components/chat-list-item/ChatListItem.js +4 -4
  378. package/web-dist/components/checkbox/Checkbox.js +3 -3
  379. package/web-dist/components/checkbox-group/CheckboxGroup.js +3 -3
  380. package/web-dist/components/chip/Chip.js +3 -3
  381. package/web-dist/components/chip-group/ChipGroup.js +3 -3
  382. package/web-dist/components/collection-editor/CollectionEditor.js +5 -5
  383. package/web-dist/components/content-rail/ContentRail.js +3 -3
  384. package/web-dist/components/data-table/DataTable.js +9 -9
  385. package/web-dist/components/date-picker/DatePicker.js +3 -3
  386. package/web-dist/components/dialog/Dialog.js +3 -3
  387. package/web-dist/components/empty-state/EmptyState.js +6 -6
  388. package/web-dist/components/field/Field.js +3 -3
  389. package/web-dist/components/flat-list/FlatList.js +4 -4
  390. package/web-dist/components/forgot-password-form/ForgotPasswordForm.js +7 -7
  391. package/web-dist/components/form/Form.js +5 -5
  392. package/web-dist/components/form-actions/FormActions.js +5 -5
  393. package/web-dist/components/form-error/FormError.js +5 -5
  394. package/web-dist/components/game/Game.js +1 -1
  395. package/web-dist/components/game-entity/GameEntity.js +1 -1
  396. package/web-dist/components/game-field/GameField.js +1 -1
  397. package/web-dist/components/game-input-zone/GameInputZone.js +1 -1
  398. package/web-dist/components/game-measurement-probe/GameMeasurementProbe.js +1 -1
  399. package/web-dist/components/game-overlay/GameOverlay.js +1 -1
  400. package/web-dist/components/graph-view/GraphView.d.ts +1 -96
  401. package/web-dist/components/heading/Heading.js +2 -2
  402. package/web-dist/components/hero/Hero.js +5 -5
  403. package/web-dist/components/icon-button/IconButton.js +2 -2
  404. package/web-dist/components/list/List.js +4 -4
  405. package/web-dist/components/list-item/ListItem.js +4 -4
  406. package/web-dist/components/list-section/ListSection.js +4 -4
  407. package/web-dist/components/media-card/MediaCard.js +5 -5
  408. package/web-dist/components/message-bubble/MessageBubble.js +4 -4
  409. package/web-dist/components/metric-card/MetricCard.js +5 -5
  410. package/web-dist/components/missing-element/MissingElement.js +2 -2
  411. package/web-dist/components/o-auth-provider-button/OAuthProviderButton.js +7 -7
  412. package/web-dist/components/o-auth-provider-list/OAuthProviderList.js +7 -7
  413. package/web-dist/components/otp-form/OtpForm.js +7 -7
  414. package/web-dist/components/pagination/Pagination.js +3 -3
  415. package/web-dist/components/palette-item/PaletteItem.js +5 -5
  416. package/web-dist/components/post-card/PostCard.js +5 -5
  417. package/web-dist/components/product-card/ProductCard.js +5 -5
  418. package/web-dist/components/progress/Progress.js +3 -3
  419. package/web-dist/components/progress-ring/ProgressRing.js +3 -3
  420. package/web-dist/components/radio/Radio.js +3 -3
  421. package/web-dist/components/radio-group/RadioGroup.js +3 -3
  422. package/web-dist/components/reader-surface/ReaderSurface.js +5 -5
  423. package/web-dist/components/scan-overlay/ScanOverlay.js +6 -6
  424. package/web-dist/components/screen-section/ScreenSection.js +3 -3
  425. package/web-dist/components/search-input/SearchInput.js +3 -3
  426. package/web-dist/components/section-header/SectionHeader.js +3 -3
  427. package/web-dist/components/section-list/SectionList.js +4 -4
  428. package/web-dist/components/select/Select.js +2 -2
  429. package/web-dist/components/sign-in-form/SignInForm.js +7 -7
  430. package/web-dist/components/sign-up-form/SignUpForm.js +7 -7
  431. package/web-dist/components/skeleton/Skeleton.js +8 -8
  432. package/web-dist/components/skeleton-card/SkeletonCard.js +8 -8
  433. package/web-dist/components/skeleton-list/SkeletonList.js +8 -8
  434. package/web-dist/components/skeleton-text/SkeletonText.js +8 -8
  435. package/web-dist/components/text/Text.js +2 -2
  436. package/web-dist/components/text-input/TextInput.js +3 -3
  437. package/web-dist/components/time-picker/TimePicker.js +3 -3
  438. package/web-dist/components/timeline/Timeline.js +2 -2
  439. package/web-dist/components/toolbar/Toolbar.js +5 -5
  440. package/web-dist/components/tree-item/TreeItem.js +5 -5
  441. package/web-dist/components/uploader/Uploader.js +7 -7
  442. package/web-dist/manifest.json +354 -354
  443. package/dist/features/authoring/allowedChildren.d.ts.map +0 -1
  444. package/dist/features/authoring/allowedChildren.js.map +0 -1
  445. package/dist/features/authoring/bindableComponentMeta.js.map +0 -1
  446. package/dist/features/authoring/componentMeta.d.ts.map +0 -1
  447. package/dist/features/authoring/componentMeta.js.map +0 -1
  448. package/dist/features/authoring/constants.d.ts +0 -40
  449. package/dist/features/authoring/constants.d.ts.map +0 -1
  450. package/dist/features/authoring/constants.js +0 -53
  451. package/dist/features/authoring/constants.js.map +0 -1
  452. package/dist/features/authoring/index.d.ts.map +0 -1
  453. package/dist/features/authoring/index.js.map +0 -1
  454. package/dist/features/authoring/themeRecipeMeta.d.ts.map +0 -1
  455. package/dist/features/authoring/themeRecipeMeta.js.map +0 -1
  456. package/dist/features/authoring/utils/createManifestBindings.d.ts.map +0 -1
  457. package/dist/features/authoring/utils/createManifestBindings.js.map +0 -1
  458. package/dist/features/authoring/utils/finalizeFeatureMetadata.d.ts.map +0 -1
  459. package/dist/features/authoring/utils/finalizeFeatureMetadata.js.map +0 -1
  460. package/dist/features/game/adapters/inbound/measureGameEntity.d.ts.map +0 -1
  461. package/dist/features/game/adapters/inbound/measureGameEntity.js.map +0 -1
  462. package/src/features/authoring/constants.ts +0 -56
  463. package/web-dist/chunks/Accordion-wvphg9x4.js +0 -246
  464. /package/dist/features/game/{adapters/inbound → utils}/measureGameEntity.js +0 -0
  465. /package/dist/features/{authoring → registry}/bindableComponentMeta.d.ts +0 -0
  466. /package/dist/features/{authoring → registry}/bindableComponentMeta.js +0 -0
  467. /package/dist/features/{authoring → registry}/componentMeta.d.ts +0 -0
  468. /package/dist/features/{authoring/utils → registry}/createManifestBindings.js +0 -0
  469. /package/dist/features/{authoring → registry}/themeRecipeMeta.d.ts +0 -0
  470. /package/dist/features/{authoring → registry}/themeRecipeMeta.js +0 -0
  471. /package/src/features/{authoring → registry}/authoringMeta.test.ts +0 -0
  472. /package/src/features/{authoring → registry}/bindableComponentMeta.test.ts +0 -0
  473. /package/src/features/{authoring → registry}/bindableComponentMeta.ts +0 -0
  474. /package/src/features/{authoring → registry}/componentMeta.test.ts +0 -0
  475. /package/src/features/{authoring → registry}/radioGroupReachability.test.ts +0 -0
  476. /package/src/features/{authoring → registry}/themeRecipeMeta.test.ts +0 -0
  477. /package/src/features/{authoring → registry}/themeRecipeMeta.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  import { isRecord } from '@ankhorage/utility/object';
2
2
  import type { Core } from 'cytoscape';
3
3
 
4
+ import type { GraphViewEdge, GraphViewNode } from '../../../../../types/graph-view';
4
5
  import { createRenderableGraphElements } from './createRenderableGraphElements';
5
- import type { GraphViewEdge, GraphViewNode } from './GraphView';
6
6
 
7
7
  /***
8
8
  * Reconciles graph data in one batch while retaining positions, selection and element identity.
@@ -1,18 +1,18 @@
1
- export {
2
- GraphView,
3
- type GraphViewCallbacks,
4
- type GraphViewController,
5
- type GraphViewEdge,
6
- type GraphViewElementEvent,
7
- type GraphViewElementEventType,
8
- type GraphViewFitOptions,
9
- type GraphViewLayoutName,
10
- type GraphViewNode,
11
- type GraphViewNodeRenderContext,
12
- type GraphViewPoint,
13
- type GraphViewProps,
14
- type GraphViewRenderedNode,
15
- type GraphViewSize,
16
- type GraphViewStyleRule,
17
- type GraphViewViewport,
18
- } from './adapters/inbound/web-artifact/GraphView';
1
+ export type {
2
+ GraphViewCallbacks,
3
+ GraphViewController,
4
+ GraphViewEdge,
5
+ GraphViewElementEvent,
6
+ GraphViewElementEventType,
7
+ GraphViewFitOptions,
8
+ GraphViewLayoutName,
9
+ GraphViewNode,
10
+ GraphViewNodeRenderContext,
11
+ GraphViewPoint,
12
+ GraphViewProps,
13
+ GraphViewRenderedNode,
14
+ GraphViewSize,
15
+ GraphViewStyleRule,
16
+ GraphViewViewport,
17
+ } from '../../types/graph-view';
18
+ export { GraphView } from './adapters/inbound/web-artifact/GraphView';
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const heroMeta = {
4
4
  name: 'Hero',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const iconMeta = {
4
4
  name: 'Icon',
@@ -1,21 +1,12 @@
1
1
  import { expect, test } from 'bun:test';
2
2
 
3
- import { ZORA_COMPONENT_META } from '../../authoring/componentMeta';
3
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../../constants/authoring';
4
+ import { iconMeta } from '../iconMeta';
4
5
 
5
- test('permits media-backed Icon and Image content in ordinary screen containers', () => {
6
- const icon = ZORA_COMPONENT_META.Icon;
7
- expect(icon.directManifestNode).toBe(true);
8
- expect(icon.allowedChildren).toEqual([]);
9
- expect(icon.props.source).toMatchObject({ type: 'media', mediaKinds: ['image'] });
10
- for (const container of [
11
- ZORA_COMPONENT_META.View,
12
- ZORA_COMPONENT_META.ScrollView,
13
- ZORA_COMPONENT_META.Grid,
14
- ZORA_COMPONENT_META.Card,
15
- ZORA_COMPONENT_META.Screen,
16
- ZORA_COMPONENT_META.ScreenSection,
17
- ]) {
18
- expect(container.allowedChildren).toContain('Icon');
19
- expect(container.allowedChildren).toContain('Image');
20
- }
6
+ test('permits media-backed Icon and Image content in ordinary containers', () => {
7
+ expect(iconMeta.directManifestNode).toBe(true);
8
+ expect(iconMeta.allowedChildren).toEqual([]);
9
+ expect(iconMeta.props.source).toMatchObject({ type: 'media', mediaKinds: ['image'] });
10
+ expect(CONTAINER_ALLOWED_CHILDREN).toContain('Icon');
11
+ expect(CONTAINER_ALLOWED_CHILDREN).toContain('Image');
21
12
  });
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const imageMeta = {
4
4
  name: 'Image',
@@ -1,5 +1,5 @@
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../constants/authoring';
1
2
  import type { ZoraComponentMeta } from '../../types/authoring';
2
- import { CONTAINER_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
3
3
 
4
4
  export const keyboardAvoidingViewMeta = {
5
5
  name: 'KeyboardAvoidingView',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const appShellMeta = {
4
4
  name: 'AppShell',
@@ -1,10 +1,10 @@
1
- import type { ZoraComponentMeta } from '../../types/authoring';
2
1
  import {
3
2
  CHESS_ALLOWED_CHILDREN,
4
3
  CONTAINER_ALLOWED_CHILDREN,
5
4
  GAME_ALLOWED_CHILDREN,
6
5
  TABLETOP_ALLOWED_CHILDREN,
7
- } from '../authoring/allowedChildren';
6
+ } from '../../constants/authoring';
7
+ import type { ZoraComponentMeta } from '../../types/authoring';
8
8
  import { LAYOUT_PROPS } from './constants';
9
9
 
10
10
  export const gridMeta = {
@@ -1,5 +1,5 @@
1
- import type { ZoraComponentMeta } from '../authoring';
2
- import { SCREEN_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
1
+ import { SCREEN_ALLOWED_CHILDREN } from '../../constants/authoring';
2
+ import type { ZoraComponentMeta } from '../../types/authoring';
3
3
 
4
4
  export const screenMeta = {
5
5
  name: 'Screen',
@@ -1,5 +1,5 @@
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../constants/authoring';
1
2
  import type { ZoraComponentMeta } from '../../types/authoring';
2
- import { CONTAINER_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
3
3
  import { LAYOUT_PROPS } from './constants';
4
4
 
5
5
  export const scrollViewMeta = {
@@ -1,9 +1,9 @@
1
- import type { ZoraComponentMeta } from '../../types/authoring';
2
1
  import {
3
2
  CHESS_ALLOWED_CHILDREN,
4
3
  CONTAINER_ALLOWED_CHILDREN,
5
4
  GAME_ALLOWED_CHILDREN,
6
- } from '../authoring/allowedChildren';
5
+ } from '../../constants/authoring';
6
+ import type { ZoraComponentMeta } from '../../types/authoring';
7
7
  import { LAYOUT_PROPS } from './constants';
8
8
 
9
9
  export const viewMeta = {
@@ -1,5 +1,5 @@
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../constants/authoring';
1
2
  import type { ZoraComponentMeta } from '../../types/authoring';
2
- import { CONTAINER_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
3
3
 
4
4
  export const flatListMeta = {
5
5
  name: 'FlatList',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  const LIST_NOTE =
4
4
  'List feature component; collection authoring is represented through List metadata.';
@@ -1,11 +1,11 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
2
 
3
- import { ZORA_BINDABLE_COMPONENT_META, ZORA_COMPONENT_META } from '../authoring';
3
+ import { cardMeta } from '../card/cardMeta';
4
+ import { emptyStateMeta } from '../empty-state/emptyStateMeta';
4
5
  import { missingElementMeta } from './missingElementMeta';
5
6
 
6
7
  describe('MissingElement draft contract', () => {
7
8
  test('is a release-blocking manifest leaf distinct from completed states', () => {
8
- expect(ZORA_COMPONENT_META.MissingElement).toBe(missingElementMeta);
9
9
  expect(missingElementMeta.directManifestNode).toBe(true);
10
10
  expect(missingElementMeta.allowedChildren).toEqual([]);
11
11
  expect(missingElementMeta.manifestPolicy).toEqual({
@@ -13,8 +13,8 @@ describe('MissingElement draft contract', () => {
13
13
  availability: 'draft-only',
14
14
  releaseGate: 'blocked',
15
15
  });
16
- expect(ZORA_COMPONENT_META.Card.manifestPolicy).toBeUndefined();
17
- expect(ZORA_COMPONENT_META.EmptyState.manifestPolicy).toBeUndefined();
16
+ expect(cardMeta.manifestPolicy).toBeUndefined();
17
+ expect(emptyStateMeta.manifestPolicy).toBeUndefined();
18
18
  });
19
19
 
20
20
  test('captures only stable serializable gap and layout data', () => {
@@ -34,10 +34,11 @@ describe('MissingElement draft contract', () => {
34
34
  expect(() => JSON.stringify(missingElementMeta)).not.toThrow();
35
35
  });
36
36
 
37
- test('has no event, data-binding, runtime-requirement, or fallback contract', () => {
37
+ test('has no event, data-binding, runtime-requirement, or fallback contract', async () => {
38
38
  expect(missingElementMeta.events).toBeUndefined();
39
39
  expect(missingElementMeta.requirements).toBeUndefined();
40
- expect(ZORA_BINDABLE_COMPONENT_META).not.toHaveProperty('MissingElement');
40
+ const bindableSource = await Bun.file('src/features/registry/bindableComponentMeta.ts').text();
41
+ expect(bindableSource).not.toContain('MissingElement');
41
42
  });
42
43
 
43
44
  test('visibly and accessibly identifies the gap while preserving its minimum dimensions', async () => {
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  const instanceAuthoring = { authority: 'instance' } as const;
4
4
 
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const paletteItemMeta = {
4
4
  name: 'PaletteItem',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const popoverMenuMeta = {
4
4
  name: 'PopoverMenu',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
  import { ZORA_COLORS } from '../theme/colorModel';
3
3
 
4
4
  export const progressMeta = {
@@ -1,5 +1,5 @@
1
- import type { ZoraComponentMeta } from '../authoring';
2
- import { CONTAINER_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../constants/authoring';
2
+ import type { ZoraComponentMeta } from '../../types/authoring';
3
3
 
4
4
  const EMPTY_EVENT_FIELDS = [] as const;
5
5
 
@@ -102,7 +102,7 @@ import { treeItemMeta, treeViewMeta } from '../tree-view/meta';
102
102
  import { headingMeta } from '../typography/headingMeta';
103
103
  import { textMeta } from '../typography/textMeta';
104
104
  import { uploaderMeta } from '../uploader/uploaderMeta';
105
- import { finalizeFeatureMetadata } from './utils/finalizeFeatureMetadata';
105
+ import { finalizeFeatureMetadata } from './finalizeFeatureMetadata';
106
106
 
107
107
  export const ZORA_COMPONENT_META: ZoraComponentMetaRegistry = finalizeFeatureMetadata({
108
108
  Accordion: accordionMeta,
@@ -1,6 +1,6 @@
1
1
  import type { UiComponentBindingMeta } from '@ankhorage/contracts';
2
2
 
3
- import type { ZoraComponentMeta } from '../../../types/authoring';
3
+ import type { ZoraComponentMeta } from '../../types/authoring';
4
4
 
5
5
  /*** Derives scalar bindings and normalized events from explicit component authoring schemas. */
6
6
  export function createManifestBindings(
@@ -2,8 +2,8 @@ import { existsSync } from 'node:fs';
2
2
 
3
3
  import { expect, test } from 'bun:test';
4
4
 
5
+ import { FEATURE_MANIFEST_ELEMENTS } from '../../constants/authoring';
5
6
  import { ZORA_COMPONENT_META } from './componentMeta';
6
- import { FEATURE_MANIFEST_ELEMENTS } from './constants';
7
7
 
8
8
  test('every selected feature element is directly authorable through its canonical public facade', async () => {
9
9
  const catalog = new Map(Object.entries(ZORA_COMPONENT_META));
@@ -1,5 +1,5 @@
1
- import type { ZoraComponentMetaRegistry } from '../../../types/authoring';
2
- import { FEATURE_MANIFEST_ELEMENTS } from '../constants';
1
+ import { FEATURE_MANIFEST_ELEMENTS } from '../../constants/authoring';
2
+ import type { ZoraComponentMetaRegistry } from '../../types/authoring';
3
3
  import { createManifestBindings } from './createManifestBindings';
4
4
 
5
5
  /*** Completes feature bindings while preserving each component's explicit value contracts. */
@@ -1,3 +1,4 @@
1
+ export { ZORA_THEME_TOKEN_FAMILIES } from '../../constants/authoring';
1
2
  export type {
2
3
  ZoraComponentBlueprint,
3
4
  ZoraComponentCategory,
@@ -29,5 +30,4 @@ export type {
29
30
  export type { ZoraBindableComponentType } from './bindableComponentMeta';
30
31
  export { ZORA_BINDABLE_COMPONENT_META } from './bindableComponentMeta';
31
32
  export { ZORA_COMPONENT_META } from './componentMeta';
32
- export { ZORA_THEME_TOKEN_FAMILIES } from './constants';
33
33
  export { ZORA_THEME_RECIPE_META } from './themeRecipeMeta';
@@ -1,5 +1,5 @@
1
- import type { ZoraComponentMeta } from '../authoring';
2
- import { CONTAINER_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../constants/authoring';
2
+ import type { ZoraComponentMeta } from '../../types/authoring';
3
3
 
4
4
  export const scanOverlayMeta = {
5
5
  name: 'ScanOverlay',
@@ -1,5 +1,5 @@
1
- import type { ZoraComponentMeta } from '../authoring';
2
- import { SCREEN_SECTION_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
1
+ import { SCREEN_SECTION_ALLOWED_CHILDREN } from '../../constants/authoring';
2
+ import type { ZoraComponentMeta } from '../../types/authoring';
3
3
 
4
4
  export const screenSectionMeta = {
5
5
  name: 'ScreenSection',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const sectionHeaderMeta = {
4
4
  name: 'SectionHeader',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  const SELECTION_NOTE = 'Selection pattern component; not represented as a manifest node in v1.';
4
4
 
@@ -1,6 +1,6 @@
1
1
  import { expect, test } from 'bun:test';
2
2
 
3
- import { ZORA_COMPONENT_META } from '../authoring/componentMeta';
3
+ import { skeletonCardMeta, skeletonListMeta, skeletonMeta, skeletonTextMeta } from './skeletonMeta';
4
4
 
5
5
  test('skeletons support direct authoring and automatic feature loading states', async () => {
6
6
  const [dataTableSource, publicSource] = await Promise.all([
@@ -8,15 +8,15 @@ test('skeletons support direct authoring and automatic feature loading states',
8
8
  Bun.file('src/features/skeleton/public.ts').text(),
9
9
  ]);
10
10
 
11
- expect(ZORA_COMPONENT_META.Skeleton.directManifestNode).toBe(true);
12
- expect(ZORA_COMPONENT_META.SkeletonCard.directManifestNode).toBe(true);
13
- expect(ZORA_COMPONENT_META.SkeletonList.directManifestNode).toBe(true);
14
- expect(ZORA_COMPONENT_META.SkeletonText.directManifestNode).toBe(true);
11
+ expect(skeletonMeta.directManifestNode).toBe(true);
12
+ expect(skeletonCardMeta.directManifestNode).toBe(true);
13
+ expect(skeletonListMeta.directManifestNode).toBe(true);
14
+ expect(skeletonTextMeta.directManifestNode).toBe(true);
15
15
  expect(publicSource).toContain('Skeleton');
16
16
  expect(publicSource).toContain('SkeletonCard');
17
17
  expect(publicSource).toContain('SkeletonList');
18
18
  expect(publicSource).toContain('SkeletonText');
19
- expect(ZORA_COMPONENT_META.SkeletonList.bindings?.props?.rows?.value.type).toBe('number');
19
+ expect(skeletonListMeta.props.rows.type).toBe('number');
20
20
 
21
21
  expect(dataTableSource).toContain("from '../../../skeleton/public'");
22
22
  expect(dataTableSource).toContain('if (loading)');
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const skeletonMeta = {
4
4
  name: 'Skeleton',
@@ -1,5 +1,5 @@
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../constants/authoring';
1
2
  import type { ZoraComponentMeta } from '../../types/authoring';
2
- import { CONTAINER_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
3
3
  import { LAYOUT_PROPS } from '../layout/constants';
4
4
 
5
5
  export const surfaceMeta = {
@@ -1,5 +1,5 @@
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../constants/authoring';
1
2
  import type { ZoraComponentMeta } from '../../types/authoring';
2
- import { CONTAINER_ALLOWED_CHILDREN } from '../authoring/allowedChildren';
3
3
  import { LAYOUT_PROPS } from '../layout/constants';
4
4
 
5
5
  export const tabPanelMeta = {
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const themeModeToggleMeta = {
4
4
  name: 'ThemeModeToggle',
@@ -1,7 +1,9 @@
1
+ import type { ZoraThemeRecipeMeta } from '../../../types/theme-recipe';
1
2
  import { resolveZoraThemeRecipe } from '../utils/resolveZoraThemeRecipe';
2
3
  import { useZoraTheme } from './useZoraTheme';
3
4
 
4
- export function useZoraThemeRecipe(recipeName: string) {
5
+ /*** Resolve one feature-owned theme recipe against the active ZORA theme. */
6
+ export function useZoraThemeRecipe(meta: ZoraThemeRecipeMeta) {
5
7
  const { theme } = useZoraTheme();
6
- return resolveZoraThemeRecipe(theme, recipeName);
8
+ return resolveZoraThemeRecipe(theme, meta);
7
9
  }
@@ -1,6 +1,7 @@
1
1
  import type { ThemeConfig } from '@ankhorage/contracts';
2
2
  import { describe, expect, test } from 'bun:test';
3
3
 
4
+ import type { ZoraThemeRecipeMeta } from '../../../types/theme-recipe';
4
5
  import { resolveZoraThemeRecipe } from './resolveZoraThemeRecipe';
5
6
 
6
7
  const baseConfig: ThemeConfig = {
@@ -11,6 +12,32 @@ const baseConfig: ThemeConfig = {
11
12
  tokens: { spacing: { hero: 64 } },
12
13
  };
13
14
 
15
+ const buttonRecipeMeta = {
16
+ name: 'Button',
17
+ kind: 'component',
18
+ fields: {
19
+ color: { type: 'choice', label: 'Color', options: ['primary', 'danger'], default: 'primary' },
20
+ variant: { type: 'choice', label: 'Variant', options: ['solid', 'soft'], default: 'solid' },
21
+ size: { type: 'choice', label: 'Size', options: ['s', 'm', 'l'], default: 'l' },
22
+ },
23
+ } as const satisfies ZoraThemeRecipeMeta;
24
+
25
+ const cardRecipeMeta = {
26
+ name: 'Card',
27
+ kind: 'component',
28
+ fields: {
29
+ tone: {
30
+ type: 'choice',
31
+ label: 'Tone',
32
+ options: ['default', 'outline'],
33
+ default: 'default',
34
+ },
35
+ padding: { type: 'token', label: 'Padding', tokenFamily: 'spacing' },
36
+ radius: { type: 'token', label: 'Radius', tokenFamily: 'radii', default: 'l' },
37
+ compact: { type: 'boolean', label: 'Compact', default: false },
38
+ },
39
+ } as const satisfies ZoraThemeRecipeMeta;
40
+
14
41
  function runtimeTheme(config: ThemeConfig) {
15
42
  return {
16
43
  config,
@@ -26,6 +53,7 @@ function runtimeTheme(config: ThemeConfig) {
26
53
  };
27
54
  }
28
55
 
56
+ /*** Add persisted recipes to the reusable test theme config. */
29
57
  function withRecipes(recipes: ThemeConfig['recipes']): ThemeConfig {
30
58
  return { ...baseConfig, recipes };
31
59
  }
@@ -35,7 +63,7 @@ describe('resolveZoraThemeRecipe', () => {
35
63
  const theme = runtimeTheme(
36
64
  withRecipes({ components: { Card: { tone: 'outline', padding: 'hero' } } }),
37
65
  );
38
- expect(resolveZoraThemeRecipe(theme, 'Card')).toEqual({
66
+ expect(resolveZoraThemeRecipe(theme, cardRecipeMeta)).toEqual({
39
67
  tone: 'outline',
40
68
  padding: 'hero',
41
69
  radius: 'l',
@@ -47,7 +75,7 @@ describe('resolveZoraThemeRecipe', () => {
47
75
  const theme = runtimeTheme(
48
76
  withRecipes({ components: { Button: { variant: 'soft', retiredField: 'legacy' } } }),
49
77
  );
50
- expect(resolveZoraThemeRecipe(theme, 'Button')).toEqual({
78
+ expect(resolveZoraThemeRecipe(theme, buttonRecipeMeta)).toEqual({
51
79
  color: 'primary',
52
80
  variant: 'soft',
53
81
  size: 'l',
@@ -56,17 +84,26 @@ describe('resolveZoraThemeRecipe', () => {
56
84
 
57
85
  test('rejects invalid known choices and token references', () => {
58
86
  const choiceTheme = runtimeTheme(withRecipes({ components: { Button: { variant: 'neon' } } }));
59
- expect(() => resolveZoraThemeRecipe(choiceTheme, 'Button')).toThrow(
87
+ expect(() => resolveZoraThemeRecipe(choiceTheme, buttonRecipeMeta)).toThrow(
60
88
  'Invalid theme recipe choice',
61
89
  );
62
90
 
63
91
  const tokenTheme = runtimeTheme(withRecipes({ components: { Card: { padding: 'missing' } } }));
64
- expect(() => resolveZoraThemeRecipe(tokenTheme, 'Card')).toThrow('Unknown spacing token');
92
+ expect(() => resolveZoraThemeRecipe(tokenTheme, cardRecipeMeta)).toThrow(
93
+ 'Unknown spacing token',
94
+ );
65
95
  });
66
96
 
67
- test('rejects code requests for unknown recipe names', () => {
68
- expect(() => resolveZoraThemeRecipe(runtimeTheme(baseConfig), 'Missing')).toThrow(
69
- 'Unknown ZORA theme recipe',
70
- );
97
+ test('resolves pattern recipes from the pattern namespace', () => {
98
+ const patternMeta = {
99
+ name: 'Hero',
100
+ kind: 'pattern',
101
+ fields: {
102
+ compact: { type: 'boolean', label: 'Compact', default: false },
103
+ },
104
+ } as const satisfies ZoraThemeRecipeMeta;
105
+ const theme = runtimeTheme(withRecipes({ patterns: { Hero: { compact: true } } }));
106
+
107
+ expect(resolveZoraThemeRecipe(theme, patternMeta)).toEqual({ compact: true });
71
108
  });
72
109
  });
@@ -1,7 +1,10 @@
1
1
  import type { ThemeConfig, ThemeRecipeOverrideValue } from '@ankhorage/contracts';
2
2
 
3
- import type { ZoraThemeRecipeFieldMeta, ZoraThemeTokenFamily } from '../../../types/theme-recipe';
4
- import { ZORA_THEME_RECIPE_META } from '../../authoring/themeRecipeMeta';
3
+ import type {
4
+ ZoraThemeRecipeFieldMeta,
5
+ ZoraThemeRecipeMeta,
6
+ ZoraThemeTokenFamily,
7
+ } from '../../../types/theme-recipe';
5
8
 
6
9
  interface ZoraThemeRecipeRuntimeTheme {
7
10
  readonly config: ThemeConfig;
@@ -16,15 +19,12 @@ interface ZoraThemeRecipeRuntimeTheme {
16
19
  };
17
20
  }
18
21
 
19
- const recipeMetaByName = new Map(Object.entries(ZORA_THEME_RECIPE_META));
20
-
22
+ /*** Resolve one feature-owned theme recipe against persisted theme overrides. */
21
23
  export function resolveZoraThemeRecipe(
22
24
  theme: ZoraThemeRecipeRuntimeTheme,
23
- recipeName: string,
25
+ meta: ZoraThemeRecipeMeta,
24
26
  ): Readonly<Record<string, ThemeRecipeOverrideValue>> {
25
- const meta = recipeMetaByName.get(recipeName);
26
- if (!meta) throw new RangeError(`Unknown ZORA theme recipe: ${recipeName}.`);
27
-
27
+ const recipeName = meta.name;
28
28
  const recipes =
29
29
  meta.kind === 'component' ? theme.config.recipes?.components : theme.config.recipes?.patterns;
30
30
  const overrides = new Map(Object.entries(recipes ?? {})).get(recipeName);
@@ -44,6 +44,7 @@ export function resolveZoraThemeRecipe(
44
44
  return Object.fromEntries(resolved);
45
45
  }
46
46
 
47
+ /*** Validate one persisted recipe value against its feature-owned metadata. */
47
48
  function validateFieldValue(
48
49
  theme: ZoraThemeRecipeRuntimeTheme,
49
50
  recipeName: string,
@@ -70,6 +71,7 @@ function validateFieldValue(
70
71
  }
71
72
  }
72
73
 
74
+ /*** Check whether one runtime theme exposes the referenced token. */
73
75
  function hasThemeToken(
74
76
  theme: ZoraThemeRecipeRuntimeTheme,
75
77
  family: ZoraThemeTokenFamily,
@@ -86,6 +88,7 @@ function hasThemeToken(
86
88
  );
87
89
  }
88
90
 
91
+ /*** Check an own property without traversing the prototype chain. */
89
92
  function hasOwn(value: object, key: PropertyKey): boolean {
90
93
  return Object.prototype.hasOwnProperty.call(value, key);
91
94
  }
@@ -1,6 +1,6 @@
1
1
  import { expect, test } from 'bun:test';
2
2
 
3
- import { ZORA_COMPONENT_META } from '../authoring/componentMeta';
3
+ import { timePickerMeta } from './timePickerMeta';
4
4
 
5
5
  test('TimePicker keeps one manifest contract across native and web presentation hosts', async () => {
6
6
  const nativeSource = await Bun.file(
@@ -12,12 +12,10 @@ test('TimePicker keeps one manifest contract across native and web presentation
12
12
  const contentSource = await Bun.file(
13
13
  'src/features/time-picker/composition/TimePickerContent.tsx',
14
14
  ).text();
15
- const meta = ZORA_COMPONENT_META.TimePicker;
16
15
 
17
- expect(meta.directManifestNode).toBe(true);
18
- expect(meta.props.value?.type).toBe('string');
19
- expect(meta.events?.valueChange?.eventType).toBe('timePicker.valueChange');
20
- expect(meta.bindings?.props?.value?.value.type).toBe('string');
16
+ expect(timePickerMeta.directManifestNode).toBe(true);
17
+ expect(timePickerMeta.props.value.type).toBe('string');
18
+ expect(timePickerMeta.events.valueChange.eventType).toBe('timePicker.valueChange');
21
19
  expect(nativeSource).toContain('useBottomSheet()');
22
20
  expect(webSource).toContain('<Popover');
23
21
  expect(webSource).not.toContain('useBottomSheet');
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const timePickerMeta = {
4
4
  name: 'TimePicker',
@@ -1,4 +1,4 @@
1
- import type { ZoraComponentMeta } from '../authoring';
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
2
 
3
3
  export const timelineMeta = {
4
4
  name: 'Timeline',
@@ -1,6 +1,7 @@
1
1
  import { expect, test } from 'bun:test';
2
2
 
3
- import { ZORA_COMPONENT_META } from '../authoring/componentMeta';
3
+ import { toastMeta } from './toastMeta';
4
+ import { toastProviderMeta } from './toastProviderMeta';
4
5
 
5
6
  test('Toast stays imperative and installs its host only when the ZoraProvider capability is enabled', async () => {
6
7
  const [publicSource, providerSource, webCapabilities, nativeCapabilities] = await Promise.all([
@@ -10,8 +11,8 @@ test('Toast stays imperative and installs its host only when the ZoraProvider ca
10
11
  Bun.file('src/features/theme/composition/ZoraRuntimeCapabilities.native.tsx').text(),
11
12
  ]);
12
13
 
13
- expect(ZORA_COMPONENT_META.Toast?.directManifestNode).toBe(false);
14
- expect(ZORA_COMPONENT_META.ToastProvider?.directManifestNode).toBe(false);
14
+ expect(toastMeta.directManifestNode).toBe(false);
15
+ expect(toastProviderMeta.directManifestNode).toBe(false);
15
16
  expect(publicSource).toContain("useToast } from '@ankhorage/surface'");
16
17
  expect(providerSource).toContain('toast = false');
17
18
  expect(webCapabilities).toContain('if (!toast)');