@ankhorage/zora 22.0.73 → 22.0.75
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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/dist/{features/authoring/allowedChildren.d.ts → constants/authoring.d.ts} +40 -1
- package/dist/constants/authoring.d.ts.map +1 -0
- package/dist/{features/authoring/allowedChildren.js → constants/authoring.js} +53 -1
- package/dist/constants/authoring.js.map +1 -0
- package/dist/features/accordion/accordionItemMeta.js +1 -1
- package/dist/features/accordion/accordionItemMeta.js.map +1 -1
- package/dist/features/accordion/accordionMeta.js.map +1 -1
- package/dist/features/activity-indicator/activityIndicatorMeta.js.map +1 -1
- package/dist/features/app-bar/appBarMeta.js.map +1 -1
- package/dist/features/auth/forgotPasswordFormMeta.js.map +1 -1
- package/dist/features/auth/oauthProviderButtonMeta.js.map +1 -1
- package/dist/features/auth/oauthProviderListMeta.js.map +1 -1
- package/dist/features/auth/otpFormMeta.js.map +1 -1
- package/dist/features/auth/signInFormMeta.js.map +1 -1
- package/dist/features/auth/signUpFormMeta.js.map +1 -1
- package/dist/features/bottom-sheet/bottomSheetMeta.js +1 -1
- package/dist/features/bottom-sheet/bottomSheetMeta.js.map +1 -1
- package/dist/features/breadcrumbs/breadcrumbsMeta.js.map +1 -1
- package/dist/features/button/adapters/inbound/Button.d.ts.map +1 -1
- package/dist/features/button/adapters/inbound/Button.js +2 -1
- package/dist/features/button/adapters/inbound/Button.js.map +1 -1
- package/dist/features/button/buttonGroupMeta.js.map +1 -1
- package/dist/features/button/buttonMeta.js +1 -1
- package/dist/features/button/buttonMeta.js.map +1 -1
- package/dist/features/card/adapters/inbound/Card.d.ts.map +1 -1
- package/dist/features/card/adapters/inbound/Card.js +2 -1
- package/dist/features/card/adapters/inbound/Card.js.map +1 -1
- package/dist/features/card/cardMeta.js +2 -2
- package/dist/features/card/cardMeta.js.map +1 -1
- package/dist/features/card/mediaCardMeta.js +1 -1
- package/dist/features/card/mediaCardMeta.js.map +1 -1
- package/dist/features/card/postCardMeta.js +1 -1
- package/dist/features/card/postCardMeta.js.map +1 -1
- package/dist/features/card/productCardMeta.js.map +1 -1
- package/dist/features/chat/chatListItemMeta.js.map +1 -1
- package/dist/features/chat/messageBubbleMeta.js +1 -1
- package/dist/features/chat/messageBubbleMeta.js.map +1 -1
- package/dist/features/collection-editor/meta.js.map +1 -1
- package/dist/features/content-rail/contentRailMeta.js +1 -1
- package/dist/features/content-rail/contentRailMeta.js.map +1 -1
- package/dist/features/date-picker/datePickerMeta.js.map +1 -1
- package/dist/features/dialog/dialogMeta.js +1 -1
- package/dist/features/dialog/dialogMeta.js.map +1 -1
- package/dist/features/empty-state/emptyStateMeta.js.map +1 -1
- package/dist/features/form/checkbox/checkboxMeta.js.map +1 -1
- package/dist/features/form/field/meta.js.map +1 -1
- package/dist/features/form/formActionsMeta.js.map +1 -1
- package/dist/features/form/formErrorMeta.js.map +1 -1
- package/dist/features/form/formMeta.js.map +1 -1
- package/dist/features/form/radio/adapters/inbound/RadioGroup.d.ts.map +1 -1
- package/dist/features/form/radio/adapters/inbound/RadioGroup.js +2 -1
- package/dist/features/form/radio/adapters/inbound/RadioGroup.js.map +1 -1
- package/dist/features/form/radio/radioMeta.js.map +1 -1
- package/dist/features/form/select/selectMeta.js.map +1 -1
- package/dist/features/form/switch/switchMeta.js.map +1 -1
- package/dist/features/form/text-input/textInputMeta.js.map +1 -1
- package/dist/features/game/{adapters/inbound → utils}/measureGameEntity.d.ts +1 -1
- package/dist/features/game/utils/measureGameEntity.d.ts.map +1 -0
- package/dist/features/game/utils/measureGameEntity.js.map +1 -0
- package/dist/features/game/utils/useGameEntityMeasurement.js +1 -1
- package/dist/features/game/utils/useGameEntityMeasurement.js.map +1 -1
- package/dist/features/gradient/gradientMeta.js +1 -1
- package/dist/features/gradient/gradientMeta.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/GraphView.d.ts +1 -96
- package/dist/features/graph-view/adapters/inbound/web-artifact/GraphView.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/GraphView.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphController.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphController.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphController.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.js.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.d.ts +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.d.ts.map +1 -1
- package/dist/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.js.map +1 -1
- package/dist/features/graph-view/public.d.ts +2 -1
- package/dist/features/graph-view/public.d.ts.map +1 -1
- package/dist/features/graph-view/public.js +1 -1
- package/dist/features/graph-view/public.js.map +1 -1
- package/dist/features/hero/heroMeta.js.map +1 -1
- package/dist/features/icon/iconMeta.js.map +1 -1
- package/dist/features/image/imageMeta.js.map +1 -1
- package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.js +1 -1
- package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.js.map +1 -1
- package/dist/features/layout/appShellMeta.js.map +1 -1
- package/dist/features/layout/gridMeta.js +1 -1
- package/dist/features/layout/gridMeta.js.map +1 -1
- package/dist/features/layout/screenMeta.js +1 -1
- package/dist/features/layout/screenMeta.js.map +1 -1
- package/dist/features/layout/scrollViewMeta.js +1 -1
- package/dist/features/layout/scrollViewMeta.js.map +1 -1
- package/dist/features/layout/viewMeta.js +1 -1
- package/dist/features/layout/viewMeta.js.map +1 -1
- package/dist/features/list/flatListMeta.js +1 -1
- package/dist/features/list/flatListMeta.js.map +1 -1
- package/dist/features/list/meta.js.map +1 -1
- package/dist/features/missing-element/missingElementMeta.js.map +1 -1
- package/dist/features/palette-item/paletteItemMeta.js.map +1 -1
- package/dist/features/popover-menu/popoverMenuMeta.js.map +1 -1
- package/dist/features/progress/progressMeta.js.map +1 -1
- package/dist/features/reader/meta.js +1 -1
- package/dist/features/reader/meta.js.map +1 -1
- package/dist/features/{authoring → registry}/bindableComponentMeta.d.ts.map +1 -1
- package/dist/features/registry/bindableComponentMeta.js.map +1 -0
- package/dist/features/registry/componentMeta.d.ts.map +1 -0
- package/dist/features/{authoring → registry}/componentMeta.js +1 -1
- package/dist/features/registry/componentMeta.js.map +1 -0
- package/dist/features/{authoring/utils → registry}/createManifestBindings.d.ts +1 -1
- package/dist/features/registry/createManifestBindings.d.ts.map +1 -0
- package/dist/features/registry/createManifestBindings.js.map +1 -0
- package/dist/features/{authoring/utils → registry}/finalizeFeatureMetadata.d.ts +1 -1
- package/dist/features/registry/finalizeFeatureMetadata.d.ts.map +1 -0
- package/dist/features/{authoring/utils → registry}/finalizeFeatureMetadata.js +1 -1
- package/dist/features/registry/finalizeFeatureMetadata.js.map +1 -0
- package/dist/features/{authoring → registry}/index.d.ts +1 -1
- package/dist/features/registry/index.d.ts.map +1 -0
- package/dist/features/{authoring → registry}/index.js +1 -1
- package/dist/features/registry/index.js.map +1 -0
- package/dist/features/registry/themeRecipeMeta.d.ts.map +1 -0
- package/dist/features/registry/themeRecipeMeta.js.map +1 -0
- package/dist/features/scanner/meta.js +1 -1
- package/dist/features/scanner/meta.js.map +1 -1
- package/dist/features/section/screenSectionMeta.js +1 -1
- package/dist/features/section/screenSectionMeta.js.map +1 -1
- package/dist/features/section/sectionHeaderMeta.js.map +1 -1
- package/dist/features/selection/meta.js.map +1 -1
- package/dist/features/skeleton/skeletonMeta.js.map +1 -1
- package/dist/features/surface/surfaceMeta.js +1 -1
- package/dist/features/surface/surfaceMeta.js.map +1 -1
- package/dist/features/tabs/tabPanelMeta.js +1 -1
- package/dist/features/tabs/tabPanelMeta.js.map +1 -1
- package/dist/features/theme/ThemeModeToggle.meta.js.map +1 -1
- package/dist/features/theme/composition/useZoraThemeRecipe.d.ts +3 -1
- package/dist/features/theme/composition/useZoraThemeRecipe.d.ts.map +1 -1
- package/dist/features/theme/composition/useZoraThemeRecipe.js +3 -2
- package/dist/features/theme/composition/useZoraThemeRecipe.js.map +1 -1
- package/dist/features/theme/utils/resolveZoraThemeRecipe.d.ts +3 -1
- package/dist/features/theme/utils/resolveZoraThemeRecipe.d.ts.map +1 -1
- package/dist/features/theme/utils/resolveZoraThemeRecipe.js +6 -6
- package/dist/features/theme/utils/resolveZoraThemeRecipe.js.map +1 -1
- package/dist/features/time-picker/timePickerMeta.js.map +1 -1
- package/dist/features/timeline/meta.js.map +1 -1
- package/dist/features/toast/toastMeta.js.map +1 -1
- package/dist/features/toast/toastProviderMeta.js.map +1 -1
- package/dist/features/tree-view/meta.js.map +1 -1
- package/dist/features/typography/adapters/inbound/Heading.d.ts.map +1 -1
- package/dist/features/typography/adapters/inbound/Heading.js +2 -1
- package/dist/features/typography/adapters/inbound/Heading.js.map +1 -1
- package/dist/features/typography/adapters/inbound/Text.d.ts.map +1 -1
- package/dist/features/typography/adapters/inbound/Text.js +2 -1
- package/dist/features/typography/adapters/inbound/Text.js.map +1 -1
- package/dist/features/typography/headingMeta.js +1 -1
- package/dist/features/typography/headingMeta.js.map +1 -1
- package/dist/features/typography/textMeta.js +1 -1
- package/dist/features/typography/textMeta.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/auth.d.ts +1 -1
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js.map +1 -1
- package/dist/types/avatar-group.d.ts +1 -1
- package/dist/types/avatar-group.d.ts.map +1 -1
- package/dist/types/avatar-group.js.map +1 -1
- package/dist/types/button-group.d.ts +1 -1
- package/dist/types/button-group.d.ts.map +1 -1
- package/dist/types/button-group.js.map +1 -1
- package/dist/types/chat.d.ts +1 -1
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/types/chat.js.map +1 -1
- package/dist/types/gradient.d.ts +1 -1
- package/dist/types/gradient.d.ts.map +1 -1
- package/dist/types/gradient.js.map +1 -1
- package/dist/types/graph-view.d.ts +98 -0
- package/dist/types/graph-view.d.ts.map +1 -0
- package/dist/types/graph-view.js +2 -0
- package/dist/types/graph-view.js.map +1 -0
- package/dist/types/graphViewRuntime.d.ts +1 -1
- package/dist/types/graphViewRuntime.d.ts.map +1 -1
- package/dist/types/graphViewRuntime.js.map +1 -1
- package/dist/types/post-card.d.ts +1 -1
- package/dist/types/post-card.d.ts.map +1 -1
- package/dist/types/post-card.js.map +1 -1
- package/dist/types/radio.d.ts +1 -1
- package/dist/types/radio.d.ts.map +1 -1
- package/dist/types/radio.js.map +1 -1
- package/dist/types/scanner.d.ts +1 -1
- package/dist/types/scanner.d.ts.map +1 -1
- package/dist/types/scanner.js.map +1 -1
- package/dist/types/skeleton.d.ts +1 -1
- package/dist/types/skeleton.d.ts.map +1 -1
- package/dist/types/skeleton.js.map +1 -1
- package/dist/types/theme-mode-toggle.d.ts +1 -1
- package/dist/types/theme-mode-toggle.d.ts.map +1 -1
- package/dist/types/theme-mode-toggle.js.map +1 -1
- package/package.json +12 -12
- package/src/{features/authoring/allowedChildren.ts → constants/authoring.ts} +55 -0
- package/src/features/accordion/accordionItemMeta.ts +2 -2
- package/src/features/accordion/accordionMeta.ts +1 -1
- package/src/features/activity-indicator/activityIndicatorMeta.ts +1 -1
- package/src/features/app-bar/appBarMeta.ts +1 -1
- package/src/features/auth/forgotPasswordFormMeta.ts +1 -1
- package/src/features/auth/oauthProviderButtonMeta.ts +1 -1
- package/src/features/auth/oauthProviderListMeta.ts +1 -1
- package/src/features/auth/otpFormMeta.ts +1 -1
- package/src/features/auth/public.test.ts +21 -18
- package/src/features/auth/signInFormMeta.ts +1 -1
- package/src/features/auth/signUpFormMeta.ts +1 -1
- package/src/features/bottom-sheet/bottomSheetMeta.ts +1 -1
- package/src/features/breadcrumbs/breadcrumbsMeta.ts +1 -1
- package/src/features/button/adapters/inbound/Button.tsx +2 -1
- package/src/features/button/buttonGroupMeta.ts +1 -1
- package/src/features/button/buttonMeta.ts +2 -2
- package/src/features/card/adapters/inbound/Card.tsx +2 -1
- package/src/features/card/adapters/inbound/PostCard.test.tsx +4 -4
- package/src/features/card/adapters/inbound/ProductCard.test.tsx +9 -9
- package/src/features/card/cardMeta.ts +3 -3
- package/src/features/card/mediaCardMeta.ts +1 -1
- package/src/features/card/postCardMeta.ts +2 -2
- package/src/features/card/productCardMeta.ts +1 -1
- package/src/features/chat/adapters/inbound/ChatListItem.test.tsx +4 -4
- package/src/features/chat/chatListItemMeta.ts +1 -1
- package/src/features/chat/messageBubbleMeta.ts +2 -2
- package/src/features/collection-editor/meta.ts +1 -1
- package/src/features/content-rail/contentRailMeta.ts +2 -2
- package/src/features/date-picker/datePickerMeta.ts +1 -1
- package/src/features/date-picker/public.test.ts +4 -6
- package/src/features/dialog/dialogMeta.ts +1 -1
- package/src/features/empty-state/emptyStateMeta.ts +1 -1
- package/src/features/form/checkbox/checkboxMeta.ts +1 -1
- package/src/features/form/field/meta.ts +1 -1
- package/src/features/form/formActionsMeta.ts +1 -1
- package/src/features/form/formErrorMeta.ts +1 -1
- package/src/features/form/formMeta.ts +1 -1
- package/src/features/form/radio/adapters/inbound/RadioGroup.tsx +2 -1
- package/src/features/form/radio/radioMeta.ts +1 -1
- package/src/features/form/select/selectMeta.ts +1 -1
- package/src/features/form/switch/switchMeta.ts +1 -1
- package/src/features/form/text-input/textInputMeta.ts +1 -1
- package/src/features/game/{adapters/inbound → utils}/measureGameEntity.ts +1 -1
- package/src/features/game/utils/useGameEntityMeasurement.ts +1 -1
- package/src/features/gradient/gradientMeta.ts +2 -2
- package/src/features/gradient/public.test.ts +4 -6
- package/src/features/graph-view/adapters/inbound/web-artifact/GraphNodeOverlay.tsx +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/GraphView.tsx +6 -116
- package/src/features/graph-view/adapters/inbound/web-artifact/bindGraphEvents.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/createGraphController.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.test.ts +2 -2
- package/src/features/graph-view/adapters/inbound/web-artifact/createGraphRuntime.ts +8 -8
- package/src/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.test.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/createRenderableGraphElements.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/fitGraphViewport.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/getGraphTopologyKey.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/readGraphRenderedNodes.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/runGraphLayout.ts +1 -1
- package/src/features/graph-view/adapters/inbound/web-artifact/syncGraphElements.ts +1 -1
- package/src/features/graph-view/public.ts +18 -18
- package/src/features/hero/heroMeta.ts +1 -1
- package/src/features/icon/iconMeta.ts +1 -1
- package/src/features/icon/utils/meta.test.ts +8 -17
- package/src/features/image/imageMeta.ts +1 -1
- package/src/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.ts +1 -1
- package/src/features/layout/appShellMeta.ts +1 -1
- package/src/features/layout/gridMeta.ts +2 -2
- package/src/features/layout/screenMeta.ts +2 -2
- package/src/features/layout/scrollViewMeta.ts +1 -1
- package/src/features/layout/viewMeta.ts +2 -2
- package/src/features/list/flatListMeta.ts +1 -1
- package/src/features/list/meta.ts +1 -1
- package/src/features/missing-element/MissingElement.test.ts +7 -6
- package/src/features/missing-element/missingElementMeta.ts +1 -1
- package/src/features/palette-item/paletteItemMeta.ts +1 -1
- package/src/features/popover-menu/popoverMenuMeta.ts +1 -1
- package/src/features/progress/progressMeta.ts +1 -1
- package/src/features/reader/meta.ts +2 -2
- package/src/features/{authoring → registry}/componentMeta.ts +1 -1
- package/src/features/{authoring/utils → registry}/createManifestBindings.ts +1 -1
- package/src/features/{authoring → registry}/featureManifest.test.ts +1 -1
- package/src/features/{authoring/utils → registry}/finalizeFeatureMetadata.ts +2 -2
- package/src/features/{authoring → registry}/index.ts +1 -1
- package/src/features/scanner/meta.ts +2 -2
- package/src/features/section/screenSectionMeta.ts +2 -2
- package/src/features/section/sectionHeaderMeta.ts +1 -1
- package/src/features/selection/meta.ts +1 -1
- package/src/features/skeleton/public.test.ts +6 -6
- package/src/features/skeleton/skeletonMeta.ts +1 -1
- package/src/features/surface/surfaceMeta.ts +1 -1
- package/src/features/tabs/tabPanelMeta.ts +1 -1
- package/src/features/theme/ThemeModeToggle.meta.ts +1 -1
- package/src/features/theme/composition/useZoraThemeRecipe.ts +4 -2
- package/src/features/theme/utils/resolveZoraThemeRecipe.test.ts +45 -8
- package/src/features/theme/utils/resolveZoraThemeRecipe.ts +11 -8
- package/src/features/time-picker/public.test.ts +4 -6
- package/src/features/time-picker/timePickerMeta.ts +1 -1
- package/src/features/timeline/meta.ts +1 -1
- package/src/features/toast/public.test.ts +4 -3
- package/src/features/toast/toastMeta.ts +1 -1
- package/src/features/toast/toastProviderMeta.ts +1 -1
- package/src/features/tree-view/meta.ts +1 -1
- package/src/features/typography/adapters/inbound/Heading.tsx +2 -1
- package/src/features/typography/adapters/inbound/Text.tsx +2 -1
- package/src/features/typography/headingMeta.ts +2 -2
- package/src/features/typography/textMeta.ts +2 -2
- package/src/features/uploader/public.test.ts +1 -1
- package/src/index.ts +33 -33
- package/src/structureOwnership.test.ts +3 -3
- package/src/types/auth.ts +1 -1
- package/src/types/avatar-group.ts +1 -1
- package/src/types/button-group.ts +1 -1
- package/src/types/chat.ts +1 -1
- package/src/types/gradient.ts +1 -1
- package/src/types/graph-view.ts +117 -0
- package/src/types/graphViewRuntime.ts +1 -1
- package/src/types/post-card.ts +1 -1
- package/src/types/radio.ts +1 -1
- package/src/types/scanner.ts +1 -1
- package/src/types/skeleton.ts +1 -1
- package/src/types/theme-mode-toggle.ts +1 -1
- package/web-dist/chunks/{Accordion-jd33dw92.js → Accordion-07rdw2vh.js} +1 -1
- package/web-dist/chunks/{Accordion-sn80af3k.js → Accordion-45ej9brb.js} +1 -1
- package/web-dist/chunks/{Accordion-qyckg9d2.js → Accordion-555gnfmw.js} +3 -3
- package/web-dist/chunks/{Accordion-ypdtx57y.js → Accordion-73m7z73v.js} +3 -3
- package/web-dist/chunks/{Accordion-s334j5tf.js → Accordion-8af800ts.js} +2 -2
- package/web-dist/chunks/{Accordion-7ycn5332.js → Accordion-9rnepkvk.js} +1 -1
- package/web-dist/chunks/{Accordion-1vbm971q.js → Accordion-avmgvcef.js} +1 -1
- package/web-dist/chunks/{Accordion-a03xpbc0.js → Accordion-b3qy1trj.js} +39 -7
- package/web-dist/chunks/Accordion-e1nn8m46.js +82 -0
- package/web-dist/chunks/{Accordion-eps4ej1m.js → Accordion-emczc5rg.js} +33 -5
- package/web-dist/chunks/{Accordion-wzybs1e3.js → Accordion-jhwsvx3g.js} +1 -1
- package/web-dist/chunks/{Accordion-qy22k9t8.js → Accordion-jj3bg8c1.js} +1 -1
- package/web-dist/chunks/{Accordion-nn80tt99.js → Accordion-mpnb4qqw.js} +2 -2
- package/web-dist/chunks/{Accordion-z5rdysmt.js → Accordion-nc5gnvnb.js} +33 -4
- package/web-dist/chunks/{Accordion-qkrwkab6.js → Accordion-nn38n7q4.js} +1 -1
- package/web-dist/chunks/{Accordion-zh8esf04.js → Accordion-pnvt10cv.js} +2 -2
- package/web-dist/chunks/{Accordion-4prv90j4.js → Accordion-qvt6qdqm.js} +1 -1
- package/web-dist/chunks/{Accordion-hk6zs4dc.js → Accordion-tj61sa5s.js} +2 -2
- package/web-dist/chunks/{Accordion-5r2dxq03.js → Accordion-v1dtv6v0.js} +1 -1
- package/web-dist/chunks/{Accordion-5t5sw5cp.js → Accordion-vmz8y01b.js} +4 -4
- package/web-dist/chunks/{Accordion-pssgp0pq.js → Accordion-ycmg06sq.js} +71 -4
- package/web-dist/chunks/{Accordion-h62mzp3n.js → Accordion-yz7b7njb.js} +2 -2
- package/web-dist/chunks/{Accordion-2ga47602.js → Accordion-zf3kzvef.js} +1 -1
- package/web-dist/components/accordion/Accordion.js +3 -3
- package/web-dist/components/accordion-item/AccordionItem.js +3 -3
- package/web-dist/components/app-bar/AppBar.js +4 -4
- package/web-dist/components/avatar/Avatar.js +3 -3
- package/web-dist/components/avatar-group/AvatarGroup.js +3 -3
- package/web-dist/components/barcode-scanner-view/BarcodeScannerView.js +6 -6
- package/web-dist/components/breadcrumbs/Breadcrumbs.js +3 -3
- package/web-dist/components/button/Button.js +2 -2
- package/web-dist/components/button-group/ButtonGroup.js +2 -2
- package/web-dist/components/camera-permission-view/CameraPermissionView.js +6 -6
- package/web-dist/components/card/Card.js +5 -5
- package/web-dist/components/chat-list-item/ChatListItem.js +4 -4
- package/web-dist/components/checkbox/Checkbox.js +3 -3
- package/web-dist/components/checkbox-group/CheckboxGroup.js +3 -3
- package/web-dist/components/chip/Chip.js +3 -3
- package/web-dist/components/chip-group/ChipGroup.js +3 -3
- package/web-dist/components/collection-editor/CollectionEditor.js +5 -5
- package/web-dist/components/content-rail/ContentRail.js +3 -3
- package/web-dist/components/data-table/DataTable.js +9 -9
- package/web-dist/components/date-picker/DatePicker.js +3 -3
- package/web-dist/components/dialog/Dialog.js +3 -3
- package/web-dist/components/empty-state/EmptyState.js +6 -6
- package/web-dist/components/field/Field.js +3 -3
- package/web-dist/components/flat-list/FlatList.js +4 -4
- package/web-dist/components/forgot-password-form/ForgotPasswordForm.js +7 -7
- package/web-dist/components/form/Form.js +5 -5
- package/web-dist/components/form-actions/FormActions.js +5 -5
- package/web-dist/components/form-error/FormError.js +5 -5
- package/web-dist/components/game/Game.js +1 -1
- package/web-dist/components/game-entity/GameEntity.js +1 -1
- package/web-dist/components/game-field/GameField.js +1 -1
- package/web-dist/components/game-input-zone/GameInputZone.js +1 -1
- package/web-dist/components/game-measurement-probe/GameMeasurementProbe.js +1 -1
- package/web-dist/components/game-overlay/GameOverlay.js +1 -1
- package/web-dist/components/graph-view/GraphView.d.ts +1 -96
- package/web-dist/components/heading/Heading.js +2 -2
- package/web-dist/components/hero/Hero.js +5 -5
- package/web-dist/components/icon-button/IconButton.js +2 -2
- package/web-dist/components/list/List.js +4 -4
- package/web-dist/components/list-item/ListItem.js +4 -4
- package/web-dist/components/list-section/ListSection.js +4 -4
- package/web-dist/components/media-card/MediaCard.js +5 -5
- package/web-dist/components/message-bubble/MessageBubble.js +4 -4
- package/web-dist/components/metric-card/MetricCard.js +5 -5
- package/web-dist/components/missing-element/MissingElement.js +2 -2
- package/web-dist/components/o-auth-provider-button/OAuthProviderButton.js +7 -7
- package/web-dist/components/o-auth-provider-list/OAuthProviderList.js +7 -7
- package/web-dist/components/otp-form/OtpForm.js +7 -7
- package/web-dist/components/pagination/Pagination.js +3 -3
- package/web-dist/components/palette-item/PaletteItem.js +5 -5
- package/web-dist/components/post-card/PostCard.js +5 -5
- package/web-dist/components/product-card/ProductCard.js +5 -5
- package/web-dist/components/progress/Progress.js +3 -3
- package/web-dist/components/progress-ring/ProgressRing.js +3 -3
- package/web-dist/components/radio/Radio.js +3 -3
- package/web-dist/components/radio-group/RadioGroup.js +3 -3
- package/web-dist/components/reader-surface/ReaderSurface.js +5 -5
- package/web-dist/components/scan-overlay/ScanOverlay.js +6 -6
- package/web-dist/components/screen-section/ScreenSection.js +3 -3
- package/web-dist/components/search-input/SearchInput.js +3 -3
- package/web-dist/components/section-header/SectionHeader.js +3 -3
- package/web-dist/components/section-list/SectionList.js +4 -4
- package/web-dist/components/select/Select.js +2 -2
- package/web-dist/components/sign-in-form/SignInForm.js +7 -7
- package/web-dist/components/sign-up-form/SignUpForm.js +7 -7
- package/web-dist/components/skeleton/Skeleton.js +8 -8
- package/web-dist/components/skeleton-card/SkeletonCard.js +8 -8
- package/web-dist/components/skeleton-list/SkeletonList.js +8 -8
- package/web-dist/components/skeleton-text/SkeletonText.js +8 -8
- package/web-dist/components/text/Text.js +2 -2
- package/web-dist/components/text-input/TextInput.js +3 -3
- package/web-dist/components/time-picker/TimePicker.js +3 -3
- package/web-dist/components/timeline/Timeline.js +2 -2
- package/web-dist/components/toolbar/Toolbar.js +5 -5
- package/web-dist/components/tree-item/TreeItem.js +5 -5
- package/web-dist/components/uploader/Uploader.js +7 -7
- package/web-dist/manifest.json +354 -354
- package/dist/features/authoring/allowedChildren.d.ts.map +0 -1
- package/dist/features/authoring/allowedChildren.js.map +0 -1
- package/dist/features/authoring/bindableComponentMeta.js.map +0 -1
- package/dist/features/authoring/componentMeta.d.ts.map +0 -1
- package/dist/features/authoring/componentMeta.js.map +0 -1
- package/dist/features/authoring/constants.d.ts +0 -40
- package/dist/features/authoring/constants.d.ts.map +0 -1
- package/dist/features/authoring/constants.js +0 -53
- package/dist/features/authoring/constants.js.map +0 -1
- package/dist/features/authoring/index.d.ts.map +0 -1
- package/dist/features/authoring/index.js.map +0 -1
- package/dist/features/authoring/themeRecipeMeta.d.ts.map +0 -1
- package/dist/features/authoring/themeRecipeMeta.js.map +0 -1
- package/dist/features/authoring/utils/createManifestBindings.d.ts.map +0 -1
- package/dist/features/authoring/utils/createManifestBindings.js.map +0 -1
- package/dist/features/authoring/utils/finalizeFeatureMetadata.d.ts.map +0 -1
- package/dist/features/authoring/utils/finalizeFeatureMetadata.js.map +0 -1
- package/dist/features/game/adapters/inbound/measureGameEntity.d.ts.map +0 -1
- package/dist/features/game/adapters/inbound/measureGameEntity.js.map +0 -1
- package/src/features/authoring/constants.ts +0 -56
- package/web-dist/chunks/Accordion-wvphg9x4.js +0 -246
- /package/dist/features/game/{adapters/inbound → utils}/measureGameEntity.js +0 -0
- /package/dist/features/{authoring → registry}/bindableComponentMeta.d.ts +0 -0
- /package/dist/features/{authoring → registry}/bindableComponentMeta.js +0 -0
- /package/dist/features/{authoring → registry}/componentMeta.d.ts +0 -0
- /package/dist/features/{authoring/utils → registry}/createManifestBindings.js +0 -0
- /package/dist/features/{authoring → registry}/themeRecipeMeta.d.ts +0 -0
- /package/dist/features/{authoring → registry}/themeRecipeMeta.js +0 -0
- /package/src/features/{authoring → registry}/authoringMeta.test.ts +0 -0
- /package/src/features/{authoring → registry}/bindableComponentMeta.test.ts +0 -0
- /package/src/features/{authoring → registry}/bindableComponentMeta.ts +0 -0
- /package/src/features/{authoring → registry}/componentMeta.test.ts +0 -0
- /package/src/features/{authoring → registry}/radioGroupReachability.test.ts +0 -0
- /package/src/features/{authoring → registry}/themeRecipeMeta.test.ts +0 -0
- /package/src/features/{authoring → registry}/themeRecipeMeta.ts +0 -0
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
import { expect, test } from 'bun:test';
|
|
2
2
|
|
|
3
|
-
import {
|
|
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
|
|
6
|
-
|
|
7
|
-
expect(
|
|
8
|
-
expect(
|
|
9
|
-
expect(
|
|
10
|
-
|
|
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,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,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 '
|
|
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
|
|
2
|
-
import {
|
|
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 '
|
|
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,11 +1,11 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test';
|
|
2
2
|
|
|
3
|
-
import {
|
|
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(
|
|
17
|
-
expect(
|
|
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
|
-
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
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 './
|
|
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 '
|
|
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
|
|
2
|
-
import {
|
|
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
|
|
2
|
-
import {
|
|
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
|
|
2
|
-
import {
|
|
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,6 +1,6 @@
|
|
|
1
1
|
import { expect, test } from 'bun:test';
|
|
2
2
|
|
|
3
|
-
import {
|
|
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(
|
|
12
|
-
expect(
|
|
13
|
-
expect(
|
|
14
|
-
expect(
|
|
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(
|
|
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,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,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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
92
|
+
expect(() => resolveZoraThemeRecipe(tokenTheme, cardRecipeMeta)).toThrow(
|
|
93
|
+
'Unknown spacing token',
|
|
94
|
+
);
|
|
65
95
|
});
|
|
66
96
|
|
|
67
|
-
test('
|
|
68
|
-
|
|
69
|
-
|
|
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 {
|
|
4
|
-
|
|
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
|
-
|
|
20
|
-
|
|
22
|
+
/*** Resolve one feature-owned theme recipe against persisted theme overrides. */
|
|
21
23
|
export function resolveZoraThemeRecipe(
|
|
22
24
|
theme: ZoraThemeRecipeRuntimeTheme,
|
|
23
|
-
|
|
25
|
+
meta: ZoraThemeRecipeMeta,
|
|
24
26
|
): Readonly<Record<string, ThemeRecipeOverrideValue>> {
|
|
25
|
-
const
|
|
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 {
|
|
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(
|
|
18
|
-
expect(
|
|
19
|
-
expect(
|
|
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,6 +1,7 @@
|
|
|
1
1
|
import { expect, test } from 'bun:test';
|
|
2
2
|
|
|
3
|
-
import {
|
|
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(
|
|
14
|
-
expect(
|
|
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)');
|
|
@@ -6,6 +6,7 @@ import type { HeadingProps } from '../../../../types/heading';
|
|
|
6
6
|
import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
|
|
7
7
|
import { useZoraTheme } from '../../../theme/composition/useZoraTheme';
|
|
8
8
|
import { useZoraThemeRecipe } from '../../../theme/composition/useZoraThemeRecipe';
|
|
9
|
+
import { headingThemeRecipeMeta } from '../../utils/headingThemeRecipeMeta';
|
|
9
10
|
import { resolveHeadingRecipe } from '../../utils/resolveHeadingRecipe';
|
|
10
11
|
import { resolveHeadingSizeFromLevel } from '../../utils/resolveHeadingSizeFromLevel';
|
|
11
12
|
import { resolveHeadingThemeRecipe } from '../../utils/resolveHeadingThemeRecipe';
|
|
@@ -68,7 +69,7 @@ function HeadingInner({
|
|
|
68
69
|
}: HeadingProps) {
|
|
69
70
|
const { theme } = useZoraTheme();
|
|
70
71
|
const { breakpoint } = useResponsiveRuntime();
|
|
71
|
-
const themeRecipe = resolveHeadingThemeRecipe(useZoraThemeRecipe(
|
|
72
|
+
const themeRecipe = resolveHeadingThemeRecipe(useZoraThemeRecipe(headingThemeRecipeMeta));
|
|
72
73
|
const content = resolveHeadingContent({ children, text, i18nKey });
|
|
73
74
|
const resolvedSize =
|
|
74
75
|
resolveResponsive(size ?? themeRecipe.size, breakpoint) ?? resolveHeadingSizeFromLevel(level);
|