@ankhorage/zora 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +80 -34
- package/dist/components/badge/Badge.d.ts +1 -1
- package/dist/components/badge/Badge.d.ts.map +1 -1
- package/dist/components/badge/Badge.js +3 -1
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/badge/types.d.ts +2 -1
- package/dist/components/badge/types.d.ts.map +1 -1
- package/dist/components/badge/types.js.map +1 -1
- package/dist/components/button/Button.d.ts +1 -1
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.js +3 -1
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/types.d.ts +2 -1
- package/dist/components/button/types.d.ts.map +1 -1
- package/dist/components/button/types.js.map +1 -1
- package/dist/components/card/Card.d.ts +1 -1
- package/dist/components/card/Card.d.ts.map +1 -1
- package/dist/components/card/Card.js +3 -1
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/card/types.d.ts +2 -1
- package/dist/components/card/types.d.ts.map +1 -1
- package/dist/components/card/types.js.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts +4 -0
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/Checkbox.js +8 -0
- package/dist/components/checkbox/Checkbox.js.map +1 -0
- package/dist/components/checkbox/CheckboxGroup.d.ts +1 -1
- package/dist/components/checkbox/CheckboxGroup.d.ts.map +1 -1
- package/dist/components/checkbox/CheckboxGroup.js +3 -1
- package/dist/components/checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +2 -3
- package/dist/components/checkbox/index.d.ts.map +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/types.d.ts +5 -2
- package/dist/components/checkbox/types.d.ts.map +1 -1
- package/dist/components/checkbox/types.js.map +1 -1
- package/dist/components/drawer/Drawer.d.ts +1 -1
- package/dist/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.js +3 -1
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/types.d.ts +2 -1
- package/dist/components/drawer/types.d.ts.map +1 -1
- package/dist/components/drawer/types.js.map +1 -1
- package/dist/components/form/Form.d.ts +1 -1
- package/dist/components/form/Form.d.ts.map +1 -1
- package/dist/components/form/Form.js +3 -1
- package/dist/components/form/Form.js.map +1 -1
- package/dist/components/form/FormActions.d.ts +1 -1
- package/dist/components/form/FormActions.d.ts.map +1 -1
- package/dist/components/form/FormActions.js +3 -1
- package/dist/components/form/FormActions.js.map +1 -1
- package/dist/components/form/FormError.d.ts +1 -1
- package/dist/components/form/FormError.d.ts.map +1 -1
- package/dist/components/form/FormError.js +6 -3
- package/dist/components/form/FormError.js.map +1 -1
- package/dist/components/form/FormField.d.ts +1 -1
- package/dist/components/form/FormField.d.ts.map +1 -1
- package/dist/components/form/FormField.js +5 -3
- package/dist/components/form/FormField.js.map +1 -1
- package/dist/components/form/types.d.ts +6 -9
- package/dist/components/form/types.d.ts.map +1 -1
- package/dist/components/form/types.js.map +1 -1
- package/dist/components/heading/Heading.d.ts +1 -1
- package/dist/components/heading/Heading.d.ts.map +1 -1
- package/dist/components/heading/Heading.js +3 -1
- package/dist/components/heading/Heading.js.map +1 -1
- package/dist/components/heading/types.d.ts +2 -2
- package/dist/components/heading/types.d.ts.map +1 -1
- package/dist/components/heading/types.js.map +1 -1
- package/dist/components/icon/Icon.d.ts +4 -2
- package/dist/components/icon/Icon.d.ts.map +1 -1
- package/dist/components/icon/Icon.js +3 -1
- package/dist/components/icon/Icon.js.map +1 -1
- package/dist/components/icon-button/IconButton.d.ts +1 -1
- package/dist/components/icon-button/IconButton.d.ts.map +1 -1
- package/dist/components/icon-button/IconButton.js +3 -1
- package/dist/components/icon-button/IconButton.js.map +1 -1
- package/dist/components/icon-button/types.d.ts +2 -1
- package/dist/components/icon-button/types.d.ts.map +1 -1
- package/dist/components/icon-button/types.js.map +1 -1
- package/dist/components/input/Input.d.ts +1 -1
- package/dist/components/input/Input.d.ts.map +1 -1
- package/dist/components/input/Input.js +5 -2
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/input/types.d.ts +2 -1
- package/dist/components/input/types.d.ts.map +1 -1
- package/dist/components/input/types.js.map +1 -1
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +3 -1
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/types.d.ts +2 -1
- package/dist/components/modal/types.d.ts.map +1 -1
- package/dist/components/modal/types.js.map +1 -1
- package/dist/components/radio/Radio.d.ts +4 -0
- package/dist/components/radio/Radio.d.ts.map +1 -0
- package/dist/components/radio/Radio.js +8 -0
- package/dist/components/radio/Radio.js.map +1 -0
- package/dist/components/radio/RadioGroup.d.ts +1 -1
- package/dist/components/radio/RadioGroup.d.ts.map +1 -1
- package/dist/components/radio/RadioGroup.js +3 -1
- package/dist/components/radio/RadioGroup.js.map +1 -1
- package/dist/components/radio/index.d.ts +2 -3
- package/dist/components/radio/index.d.ts.map +1 -1
- package/dist/components/radio/index.js +1 -1
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/radio/types.d.ts +5 -2
- package/dist/components/radio/types.d.ts.map +1 -1
- package/dist/components/radio/types.js.map +1 -1
- package/dist/components/select/Select.d.ts +1 -1
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +6 -3
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/types.d.ts +2 -2
- package/dist/components/select/types.d.ts.map +1 -1
- package/dist/components/select/types.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +6 -3
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/types.d.ts +2 -2
- package/dist/components/tabs/types.d.ts.map +1 -1
- package/dist/components/tabs/types.js.map +1 -1
- package/dist/components/text/Text.d.ts +1 -1
- package/dist/components/text/Text.d.ts.map +1 -1
- package/dist/components/text/Text.js +3 -1
- package/dist/components/text/Text.js.map +1 -1
- package/dist/components/text/types.d.ts +2 -2
- package/dist/components/text/types.d.ts.map +1 -1
- package/dist/components/text/types.js.map +1 -1
- package/dist/components/textarea/Textarea.d.ts +1 -1
- package/dist/components/textarea/Textarea.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.js +5 -2
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/textarea/types.d.ts +2 -1
- package/dist/components/textarea/types.d.ts.map +1 -1
- package/dist/components/textarea/types.js.map +1 -1
- package/dist/components/toolbar/Toolbar.d.ts +1 -1
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.js +3 -1
- package/dist/components/toolbar/Toolbar.js.map +1 -1
- package/dist/components/toolbar/ToolbarAction.d.ts +1 -1
- package/dist/components/toolbar/ToolbarAction.d.ts.map +1 -1
- package/dist/components/toolbar/ToolbarAction.js +3 -1
- package/dist/components/toolbar/ToolbarAction.js.map +1 -1
- package/dist/components/toolbar/types.d.ts +3 -4
- package/dist/components/toolbar/types.d.ts.map +1 -1
- package/dist/components/toolbar/types.js.map +1 -1
- package/dist/foundation/Box.d.ts +7 -0
- package/dist/foundation/Box.d.ts.map +1 -0
- package/dist/foundation/Box.js +8 -0
- package/dist/foundation/Box.js.map +1 -0
- package/dist/foundation/Center.d.ts +7 -0
- package/dist/foundation/Center.d.ts.map +1 -0
- package/dist/foundation/Center.js +8 -0
- package/dist/foundation/Center.js.map +1 -0
- package/dist/foundation/Container.d.ts +7 -0
- package/dist/foundation/Container.d.ts.map +1 -0
- package/dist/foundation/Container.js +8 -0
- package/dist/foundation/Container.js.map +1 -0
- package/dist/foundation/Divider.d.ts +7 -0
- package/dist/foundation/Divider.d.ts.map +1 -0
- package/dist/foundation/Divider.js +8 -0
- package/dist/foundation/Divider.js.map +1 -0
- package/dist/foundation/Grid.d.ts +7 -0
- package/dist/foundation/Grid.d.ts.map +1 -0
- package/dist/foundation/Grid.js +8 -0
- package/dist/foundation/Grid.js.map +1 -0
- package/dist/foundation/Inline.d.ts +7 -0
- package/dist/foundation/Inline.d.ts.map +1 -0
- package/dist/foundation/Inline.js +8 -0
- package/dist/foundation/Inline.js.map +1 -0
- package/dist/foundation/Show.d.ts +7 -0
- package/dist/foundation/Show.d.ts.map +1 -0
- package/dist/foundation/Show.js +8 -0
- package/dist/foundation/Show.js.map +1 -0
- package/dist/foundation/Spacer.d.ts +7 -0
- package/dist/foundation/Spacer.d.ts.map +1 -0
- package/dist/foundation/Spacer.js +8 -0
- package/dist/foundation/Spacer.js.map +1 -0
- package/dist/foundation/Stack.d.ts +7 -0
- package/dist/foundation/Stack.d.ts.map +1 -0
- package/dist/foundation/Stack.js +8 -0
- package/dist/foundation/Stack.js.map +1 -0
- package/dist/foundation/Surface.d.ts +8 -0
- package/dist/foundation/Surface.d.ts.map +1 -0
- package/dist/foundation/Surface.js +8 -0
- package/dist/foundation/Surface.js.map +1 -0
- package/dist/foundation/index.d.ts +20 -2
- package/dist/foundation/index.d.ts.map +1 -1
- package/dist/foundation/index.js +10 -1
- package/dist/foundation/index.js.map +1 -1
- package/dist/layout/app-shell/AppShell.d.ts +1 -1
- package/dist/layout/app-shell/AppShell.d.ts.map +1 -1
- package/dist/layout/app-shell/AppShell.js +3 -1
- package/dist/layout/app-shell/AppShell.js.map +1 -1
- package/dist/layout/app-shell/types.d.ts +2 -2
- package/dist/layout/app-shell/types.d.ts.map +1 -1
- package/dist/layout/app-shell/types.js.map +1 -1
- package/dist/layout/auth-layout/AuthLayout.d.ts +1 -1
- package/dist/layout/auth-layout/AuthLayout.d.ts.map +1 -1
- package/dist/layout/auth-layout/AuthLayout.js +3 -1
- package/dist/layout/auth-layout/AuthLayout.js.map +1 -1
- package/dist/layout/auth-layout/types.d.ts +2 -2
- package/dist/layout/auth-layout/types.d.ts.map +1 -1
- package/dist/layout/auth-layout/types.js.map +1 -1
- package/dist/layout/page/Page.d.ts +1 -1
- package/dist/layout/page/Page.d.ts.map +1 -1
- package/dist/layout/page/Page.js +3 -1
- package/dist/layout/page/Page.js.map +1 -1
- package/dist/layout/page/types.d.ts +2 -2
- package/dist/layout/page/types.d.ts.map +1 -1
- package/dist/layout/page/types.js.map +1 -1
- package/dist/layout/page-header/PageHeader.d.ts +1 -1
- package/dist/layout/page-header/PageHeader.d.ts.map +1 -1
- package/dist/layout/page-header/PageHeader.js +3 -1
- package/dist/layout/page-header/PageHeader.js.map +1 -1
- package/dist/layout/page-header/types.d.ts +2 -2
- package/dist/layout/page-header/types.d.ts.map +1 -1
- package/dist/layout/page-header/types.js.map +1 -1
- package/dist/layout/page-section/PageSection.d.ts +1 -1
- package/dist/layout/page-section/PageSection.d.ts.map +1 -1
- package/dist/layout/page-section/PageSection.js +3 -1
- package/dist/layout/page-section/PageSection.js.map +1 -1
- package/dist/layout/page-section/types.d.ts +2 -2
- package/dist/layout/page-section/types.d.ts.map +1 -1
- package/dist/layout/page-section/types.js.map +1 -1
- package/dist/layout/settings-layout/SettingsLayout.d.ts +1 -1
- package/dist/layout/settings-layout/SettingsLayout.d.ts.map +1 -1
- package/dist/layout/settings-layout/SettingsLayout.js +3 -1
- package/dist/layout/settings-layout/SettingsLayout.js.map +1 -1
- package/dist/layout/settings-layout/types.d.ts +2 -2
- package/dist/layout/settings-layout/types.d.ts.map +1 -1
- package/dist/layout/settings-layout/types.js.map +1 -1
- package/dist/layout/sidebar-layout/SidebarLayout.d.ts +1 -1
- package/dist/layout/sidebar-layout/SidebarLayout.d.ts.map +1 -1
- package/dist/layout/sidebar-layout/SidebarLayout.js +3 -1
- package/dist/layout/sidebar-layout/SidebarLayout.js.map +1 -1
- package/dist/layout/sidebar-layout/types.d.ts +2 -2
- package/dist/layout/sidebar-layout/types.d.ts.map +1 -1
- package/dist/layout/sidebar-layout/types.js.map +1 -1
- package/dist/layout/topbar-layout/TopbarLayout.d.ts +1 -1
- package/dist/layout/topbar-layout/TopbarLayout.d.ts.map +1 -1
- package/dist/layout/topbar-layout/TopbarLayout.js +3 -1
- package/dist/layout/topbar-layout/TopbarLayout.js.map +1 -1
- package/dist/layout/topbar-layout/types.d.ts +2 -2
- package/dist/layout/topbar-layout/types.d.ts.map +1 -1
- package/dist/layout/topbar-layout/types.js.map +1 -1
- package/dist/patterns/auth/ForgotPasswordForm.d.ts +1 -1
- package/dist/patterns/auth/ForgotPasswordForm.d.ts.map +1 -1
- package/dist/patterns/auth/ForgotPasswordForm.js +3 -1
- package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -1
- package/dist/patterns/auth/OtpForm.d.ts +1 -1
- package/dist/patterns/auth/OtpForm.d.ts.map +1 -1
- package/dist/patterns/auth/OtpForm.js +3 -1
- package/dist/patterns/auth/OtpForm.js.map +1 -1
- package/dist/patterns/auth/SignInForm.d.ts +1 -1
- package/dist/patterns/auth/SignInForm.d.ts.map +1 -1
- package/dist/patterns/auth/SignInForm.js +3 -1
- package/dist/patterns/auth/SignInForm.js.map +1 -1
- package/dist/patterns/auth/SignUpForm.d.ts +1 -1
- package/dist/patterns/auth/SignUpForm.d.ts.map +1 -1
- package/dist/patterns/auth/SignUpForm.js +3 -1
- package/dist/patterns/auth/SignUpForm.js.map +1 -1
- package/dist/patterns/auth/types.d.ts +2 -2
- package/dist/patterns/auth/types.d.ts.map +1 -1
- package/dist/patterns/auth/types.js.map +1 -1
- package/dist/patterns/collection-editor/CollectionEditor.d.ts +1 -1
- package/dist/patterns/collection-editor/CollectionEditor.d.ts.map +1 -1
- package/dist/patterns/collection-editor/CollectionEditor.js +3 -1
- package/dist/patterns/collection-editor/CollectionEditor.js.map +1 -1
- package/dist/patterns/collection-editor/types.d.ts +2 -2
- package/dist/patterns/collection-editor/types.d.ts.map +1 -1
- package/dist/patterns/collection-editor/types.js.map +1 -1
- package/dist/patterns/confirm-dialog/ConfirmDialog.d.ts +1 -1
- package/dist/patterns/confirm-dialog/ConfirmDialog.d.ts.map +1 -1
- package/dist/patterns/confirm-dialog/ConfirmDialog.js +3 -1
- package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
- package/dist/patterns/confirm-dialog/types.d.ts +2 -2
- package/dist/patterns/confirm-dialog/types.d.ts.map +1 -1
- package/dist/patterns/confirm-dialog/types.js.map +1 -1
- package/dist/patterns/disclosure-section/DisclosureSection.d.ts +1 -1
- package/dist/patterns/disclosure-section/DisclosureSection.d.ts.map +1 -1
- package/dist/patterns/disclosure-section/DisclosureSection.js +3 -1
- package/dist/patterns/disclosure-section/DisclosureSection.js.map +1 -1
- package/dist/patterns/disclosure-section/types.d.ts +2 -2
- package/dist/patterns/disclosure-section/types.d.ts.map +1 -1
- package/dist/patterns/disclosure-section/types.js.map +1 -1
- package/dist/patterns/empty-state/EmptyState.d.ts +1 -1
- package/dist/patterns/empty-state/EmptyState.d.ts.map +1 -1
- package/dist/patterns/empty-state/EmptyState.js +3 -1
- package/dist/patterns/empty-state/EmptyState.js.map +1 -1
- package/dist/patterns/empty-state/types.d.ts +2 -2
- package/dist/patterns/empty-state/types.d.ts.map +1 -1
- package/dist/patterns/empty-state/types.js.map +1 -1
- package/dist/patterns/form-field/FormField.d.ts +1 -1
- package/dist/patterns/form-field/FormField.d.ts.map +1 -1
- package/dist/patterns/form-field/FormField.js +3 -1
- package/dist/patterns/form-field/FormField.js.map +1 -1
- package/dist/patterns/form-field/types.d.ts +2 -1
- package/dist/patterns/form-field/types.d.ts.map +1 -1
- package/dist/patterns/form-field/types.js.map +1 -1
- package/dist/patterns/inspector-field/InspectorField.d.ts +1 -1
- package/dist/patterns/inspector-field/InspectorField.d.ts.map +1 -1
- package/dist/patterns/inspector-field/InspectorField.js +3 -1
- package/dist/patterns/inspector-field/InspectorField.js.map +1 -1
- package/dist/patterns/inspector-field/types.d.ts +2 -2
- package/dist/patterns/inspector-field/types.d.ts.map +1 -1
- package/dist/patterns/inspector-field/types.js.map +1 -1
- package/dist/patterns/notice/Notice.d.ts +1 -1
- package/dist/patterns/notice/Notice.d.ts.map +1 -1
- package/dist/patterns/notice/Notice.js +3 -1
- package/dist/patterns/notice/Notice.js.map +1 -1
- package/dist/patterns/notice/types.d.ts +2 -2
- package/dist/patterns/notice/types.d.ts.map +1 -1
- package/dist/patterns/notice/types.js.map +1 -1
- package/dist/patterns/panel/Panel.d.ts +1 -1
- package/dist/patterns/panel/Panel.d.ts.map +1 -1
- package/dist/patterns/panel/Panel.js +3 -1
- package/dist/patterns/panel/Panel.js.map +1 -1
- package/dist/patterns/panel/types.d.ts +2 -2
- package/dist/patterns/panel/types.d.ts.map +1 -1
- package/dist/patterns/panel/types.js.map +1 -1
- package/dist/patterns/responsive-panel/ResponsivePanel.d.ts +1 -1
- package/dist/patterns/responsive-panel/ResponsivePanel.d.ts.map +1 -1
- package/dist/patterns/responsive-panel/ResponsivePanel.js +3 -1
- package/dist/patterns/responsive-panel/ResponsivePanel.js.map +1 -1
- package/dist/patterns/responsive-panel/types.d.ts +2 -2
- package/dist/patterns/responsive-panel/types.d.ts.map +1 -1
- package/dist/patterns/responsive-panel/types.js.map +1 -1
- package/dist/patterns/section-header/SectionHeader.d.ts +1 -1
- package/dist/patterns/section-header/SectionHeader.d.ts.map +1 -1
- package/dist/patterns/section-header/SectionHeader.js +3 -1
- package/dist/patterns/section-header/SectionHeader.js.map +1 -1
- package/dist/patterns/section-header/types.d.ts +2 -2
- package/dist/patterns/section-header/types.d.ts.map +1 -1
- package/dist/patterns/section-header/types.js.map +1 -1
- package/dist/patterns/settings-row/SettingsRow.d.ts +1 -1
- package/dist/patterns/settings-row/SettingsRow.d.ts.map +1 -1
- package/dist/patterns/settings-row/SettingsRow.js +3 -1
- package/dist/patterns/settings-row/SettingsRow.js.map +1 -1
- package/dist/patterns/settings-row/types.d.ts +2 -2
- package/dist/patterns/settings-row/types.d.ts.map +1 -1
- package/dist/patterns/settings-row/types.js.map +1 -1
- package/dist/patterns/switch-field/SwitchField.d.ts +1 -1
- package/dist/patterns/switch-field/SwitchField.d.ts.map +1 -1
- package/dist/patterns/switch-field/SwitchField.js +3 -1
- package/dist/patterns/switch-field/SwitchField.js.map +1 -1
- package/dist/patterns/switch-field/types.d.ts +2 -2
- package/dist/patterns/switch-field/types.d.ts.map +1 -1
- package/dist/patterns/switch-field/types.js.map +1 -1
- package/dist/patterns/tile-grid/PaletteItem.d.ts +1 -1
- package/dist/patterns/tile-grid/PaletteItem.d.ts.map +1 -1
- package/dist/patterns/tile-grid/PaletteItem.js +6 -3
- package/dist/patterns/tile-grid/PaletteItem.js.map +1 -1
- package/dist/patterns/tile-grid/TileGrid.d.ts +1 -1
- package/dist/patterns/tile-grid/TileGrid.d.ts.map +1 -1
- package/dist/patterns/tile-grid/TileGrid.js +3 -1
- package/dist/patterns/tile-grid/TileGrid.js.map +1 -1
- package/dist/patterns/tile-grid/types.d.ts +3 -4
- package/dist/patterns/tile-grid/types.d.ts.map +1 -1
- package/dist/patterns/tile-grid/types.js.map +1 -1
- package/dist/patterns/tree-view/TreeItem.d.ts +3 -2
- package/dist/patterns/tree-view/TreeItem.d.ts.map +1 -1
- package/dist/patterns/tree-view/TreeItem.js +4 -2
- package/dist/patterns/tree-view/TreeItem.js.map +1 -1
- package/dist/patterns/tree-view/TreeView.d.ts +1 -1
- package/dist/patterns/tree-view/TreeView.d.ts.map +1 -1
- package/dist/patterns/tree-view/TreeView.js +3 -1
- package/dist/patterns/tree-view/TreeView.js.map +1 -1
- package/dist/patterns/tree-view/types.d.ts +2 -2
- package/dist/patterns/tree-view/types.d.ts.map +1 -1
- package/dist/patterns/tree-view/types.js.map +1 -1
- package/dist/theme/ZoraBaseProps.d.ts +18 -0
- package/dist/theme/ZoraBaseProps.d.ts.map +1 -0
- package/dist/theme/ZoraBaseProps.js +2 -0
- package/dist/theme/ZoraBaseProps.js.map +1 -0
- package/dist/theme/ZoraProvider.d.ts.map +1 -1
- package/dist/theme/ZoraProvider.js +8 -4
- package/dist/theme/ZoraProvider.js.map +1 -1
- package/dist/theme/ZoraThemeRuntimeContext.d.ts +9 -0
- package/dist/theme/ZoraThemeRuntimeContext.d.ts.map +1 -0
- package/dist/theme/ZoraThemeRuntimeContext.js +10 -0
- package/dist/theme/ZoraThemeRuntimeContext.js.map +1 -0
- package/dist/theme/ZoraThemeScope.d.ts +9 -0
- package/dist/theme/ZoraThemeScope.d.ts.map +1 -0
- package/dist/theme/ZoraThemeScope.js +41 -0
- package/dist/theme/ZoraThemeScope.js.map +1 -0
- package/dist/theme/index.d.ts +4 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +2 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/resolveZoraScopedThemeId.d.ts +6 -0
- package/dist/theme/resolveZoraScopedThemeId.d.ts.map +1 -0
- package/dist/theme/resolveZoraScopedThemeId.js +15 -0
- package/dist/theme/resolveZoraScopedThemeId.js.map +1 -0
- package/dist/theme/withZoraThemeScope.d.ts +4 -0
- package/dist/theme/withZoraThemeScope.d.ts.map +1 -0
- package/dist/theme/withZoraThemeScope.js +16 -0
- package/dist/theme/withZoraThemeScope.js.map +1 -0
- package/package.json +1 -1
- package/src/components/badge/Badge.tsx +12 -1
- package/src/components/badge/types.ts +5 -4
- package/src/components/button/Button.tsx +11 -1
- package/src/components/button/types.ts +3 -4
- package/src/components/card/Card.tsx +6 -1
- package/src/components/card/types.ts +3 -1
- package/src/components/checkbox/Checkbox.tsx +11 -0
- package/src/components/checkbox/CheckboxGroup.tsx +6 -1
- package/src/components/checkbox/index.ts +2 -3
- package/src/components/checkbox/types.ts +13 -5
- package/src/components/drawer/Drawer.tsx +13 -1
- package/src/components/drawer/types.ts +9 -4
- package/src/components/form/Form.tsx +6 -1
- package/src/components/form/FormActions.tsx +6 -1
- package/src/components/form/FormError.tsx +7 -3
- package/src/components/form/FormField.tsx +24 -3
- package/src/components/form/types.ts +12 -12
- package/src/components/heading/Heading.tsx +6 -1
- package/src/components/heading/types.ts +3 -2
- package/src/components/icon/Icon.tsx +7 -2
- package/src/components/icon-button/IconButton.tsx +6 -1
- package/src/components/icon-button/types.ts +2 -1
- package/src/components/input/Input.tsx +13 -2
- package/src/components/input/types.ts +8 -4
- package/src/components/modal/Modal.tsx +6 -1
- package/src/components/modal/types.ts +5 -4
- package/src/components/radio/Radio.tsx +11 -0
- package/src/components/radio/RadioGroup.tsx +6 -1
- package/src/components/radio/index.ts +2 -3
- package/src/components/radio/types.ts +12 -5
- package/src/components/select/Select.tsx +9 -3
- package/src/components/select/types.ts +3 -2
- package/src/components/tabs/Tabs.tsx +9 -3
- package/src/components/tabs/types.ts +2 -2
- package/src/components/text/Text.tsx +6 -1
- package/src/components/text/types.ts +3 -2
- package/src/components/textarea/Textarea.tsx +13 -2
- package/src/components/textarea/types.ts +8 -4
- package/src/components/toolbar/Toolbar.tsx +6 -1
- package/src/components/toolbar/ToolbarAction.tsx +9 -1
- package/src/components/toolbar/types.ts +4 -4
- package/src/foundation/Box.tsx +13 -0
- package/src/foundation/Center.tsx +16 -0
- package/src/foundation/Container.tsx +17 -0
- package/src/foundation/Divider.tsx +17 -0
- package/src/foundation/Grid.tsx +13 -0
- package/src/foundation/Inline.tsx +16 -0
- package/src/foundation/Show.tsx +13 -0
- package/src/foundation/Spacer.tsx +16 -0
- package/src/foundation/Stack.tsx +13 -0
- package/src/foundation/Surface.tsx +20 -0
- package/src/foundation/index.test.ts +2 -2
- package/src/foundation/index.ts +20 -25
- package/src/layout/app-shell/AppShell.tsx +6 -1
- package/src/layout/app-shell/types.ts +3 -2
- package/src/layout/auth-layout/AuthLayout.tsx +6 -1
- package/src/layout/auth-layout/types.ts +3 -2
- package/src/layout/page/Page.tsx +12 -1
- package/src/layout/page/types.ts +2 -2
- package/src/layout/page-header/PageHeader.tsx +6 -1
- package/src/layout/page-header/types.ts +3 -2
- package/src/layout/page-section/PageSection.tsx +12 -1
- package/src/layout/page-section/types.ts +3 -2
- package/src/layout/settings-layout/SettingsLayout.tsx +6 -1
- package/src/layout/settings-layout/types.ts +3 -2
- package/src/layout/sidebar-layout/SidebarLayout.tsx +6 -1
- package/src/layout/sidebar-layout/types.ts +3 -2
- package/src/layout/topbar-layout/TopbarLayout.tsx +11 -1
- package/src/layout/topbar-layout/types.ts +3 -2
- package/src/patterns/auth/ForgotPasswordForm.tsx +6 -1
- package/src/patterns/auth/OtpForm.tsx +6 -1
- package/src/patterns/auth/SignInForm.tsx +6 -1
- package/src/patterns/auth/SignUpForm.tsx +6 -1
- package/src/patterns/auth/types.ts +2 -2
- package/src/patterns/collection-editor/CollectionEditor.tsx +6 -1
- package/src/patterns/collection-editor/types.ts +3 -2
- package/src/patterns/confirm-dialog/ConfirmDialog.tsx +6 -1
- package/src/patterns/confirm-dialog/types.ts +2 -2
- package/src/patterns/disclosure-section/DisclosureSection.tsx +6 -1
- package/src/patterns/disclosure-section/types.ts +3 -2
- package/src/patterns/empty-state/EmptyState.tsx +6 -1
- package/src/patterns/empty-state/types.ts +2 -2
- package/src/patterns/form-field/FormField.tsx +12 -1
- package/src/patterns/form-field/types.ts +9 -4
- package/src/patterns/inspector-field/InspectorField.tsx +11 -1
- package/src/patterns/inspector-field/types.ts +3 -2
- package/src/patterns/notice/Notice.tsx +6 -1
- package/src/patterns/notice/types.ts +2 -2
- package/src/patterns/panel/Panel.tsx +4 -1
- package/src/patterns/panel/types.ts +2 -2
- package/src/patterns/responsive-panel/ResponsivePanel.tsx +6 -1
- package/src/patterns/responsive-panel/types.ts +3 -2
- package/src/patterns/section-header/SectionHeader.tsx +6 -1
- package/src/patterns/section-header/types.ts +3 -2
- package/src/patterns/settings-row/SettingsRow.tsx +6 -1
- package/src/patterns/settings-row/types.ts +3 -2
- package/src/patterns/switch-field/SwitchField.tsx +6 -1
- package/src/patterns/switch-field/types.ts +3 -2
- package/src/patterns/tile-grid/PaletteItem.tsx +9 -3
- package/src/patterns/tile-grid/TileGrid.tsx +6 -1
- package/src/patterns/tile-grid/types.ts +4 -4
- package/src/patterns/tree-view/TreeItem.tsx +10 -3
- package/src/patterns/tree-view/TreeView.tsx +6 -1
- package/src/patterns/tree-view/types.ts +3 -2
- package/src/theme/ZoraBaseProps.ts +20 -0
- package/src/theme/ZoraProvider.tsx +9 -4
- package/src/theme/ZoraThemeRuntimeContext.tsx +18 -0
- package/src/theme/ZoraThemeScope.tsx +74 -0
- package/src/theme/index.ts +4 -0
- package/src/theme/resolveZoraScopedThemeId.test.ts +47 -0
- package/src/theme/resolveZoraScopedThemeId.ts +25 -0
- package/src/theme/themeScopeStructure.test.ts +220 -0
- package/src/theme/withZoraThemeScope.tsx +26 -0
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
3
|
import { Card } from '../../components/card';
|
|
4
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
4
5
|
import type { PanelProps } from './types';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
function PanelInner({ themeId: _themeId, mode: _mode, ...props }: PanelProps) {
|
|
7
8
|
return <Card {...props} />;
|
|
8
9
|
}
|
|
10
|
+
|
|
11
|
+
export const Panel = withZoraThemeScope(PanelInner);
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
|
|
3
3
|
import type { ZoraCardTone } from '../../internal/recipes';
|
|
4
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
4
5
|
|
|
5
|
-
export interface PanelProps {
|
|
6
|
+
export interface PanelProps extends ZoraBaseProps {
|
|
6
7
|
title?: React.ReactNode;
|
|
7
8
|
description?: React.ReactNode;
|
|
8
9
|
eyebrow?: React.ReactNode;
|
|
@@ -11,5 +12,4 @@ export interface PanelProps {
|
|
|
11
12
|
children?: React.ReactNode;
|
|
12
13
|
tone?: ZoraCardTone;
|
|
13
14
|
compact?: boolean;
|
|
14
|
-
testID?: string;
|
|
15
15
|
}
|
|
@@ -2,10 +2,13 @@ import React from 'react';
|
|
|
2
2
|
|
|
3
3
|
import { Drawer } from '../../components/drawer';
|
|
4
4
|
import { Modal } from '../../components/modal';
|
|
5
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
5
6
|
import { Panel } from '../panel';
|
|
6
7
|
import type { ResponsivePanelProps } from './types';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
function ResponsivePanelInner({
|
|
10
|
+
themeId: _themeId,
|
|
11
|
+
mode: _mode,
|
|
9
12
|
title,
|
|
10
13
|
description,
|
|
11
14
|
actions,
|
|
@@ -68,3 +71,5 @@ export function ResponsivePanel({
|
|
|
68
71
|
</Panel>
|
|
69
72
|
);
|
|
70
73
|
}
|
|
74
|
+
|
|
75
|
+
export const ResponsivePanel = withZoraThemeScope(ResponsivePanelInner);
|
|
@@ -4,7 +4,9 @@ export type ResponsivePanelSide = 'left' | 'right';
|
|
|
4
4
|
export type ResponsivePanelDesktopMode = 'inline' | 'floating';
|
|
5
5
|
export type ResponsivePanelMobileMode = 'drawer' | 'modal';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
8
|
+
|
|
9
|
+
export interface ResponsivePanelProps extends ZoraBaseProps {
|
|
8
10
|
title?: React.ReactNode;
|
|
9
11
|
description?: React.ReactNode;
|
|
10
12
|
actions?: React.ReactNode;
|
|
@@ -16,5 +18,4 @@ export interface ResponsivePanelProps {
|
|
|
16
18
|
desktopMode?: ResponsivePanelDesktopMode;
|
|
17
19
|
mobileMode?: ResponsivePanelMobileMode;
|
|
18
20
|
compact?: boolean;
|
|
19
|
-
testID?: string;
|
|
20
21
|
}
|
|
@@ -3,9 +3,12 @@ import React from 'react';
|
|
|
3
3
|
|
|
4
4
|
import { Heading } from '../../components/heading';
|
|
5
5
|
import { Text } from '../../components/text';
|
|
6
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
6
7
|
import type { SectionHeaderProps } from './types';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
function SectionHeaderInner({
|
|
10
|
+
themeId: _themeId,
|
|
11
|
+
mode: _mode,
|
|
9
12
|
title,
|
|
10
13
|
description,
|
|
11
14
|
eyebrow,
|
|
@@ -39,3 +42,5 @@ export function SectionHeader({
|
|
|
39
42
|
</Stack>
|
|
40
43
|
);
|
|
41
44
|
}
|
|
45
|
+
|
|
46
|
+
export const SectionHeader = withZoraThemeScope(SectionHeaderInner);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
4
|
+
|
|
5
|
+
export interface SectionHeaderProps extends ZoraBaseProps {
|
|
4
6
|
title: React.ReactNode;
|
|
5
7
|
description?: React.ReactNode;
|
|
6
8
|
eyebrow?: React.ReactNode;
|
|
7
9
|
actions?: React.ReactNode;
|
|
8
|
-
testID?: string;
|
|
9
10
|
}
|
|
@@ -3,9 +3,12 @@ import React from 'react';
|
|
|
3
3
|
|
|
4
4
|
import { Card } from '../../components/card';
|
|
5
5
|
import { Text } from '../../components/text';
|
|
6
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
6
7
|
import type { SettingsRowProps } from './types';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
function SettingsRowInner({
|
|
10
|
+
themeId: _themeId,
|
|
11
|
+
mode: _mode,
|
|
9
12
|
title,
|
|
10
13
|
description,
|
|
11
14
|
meta,
|
|
@@ -39,3 +42,5 @@ export function SettingsRow({
|
|
|
39
42
|
</Card>
|
|
40
43
|
);
|
|
41
44
|
}
|
|
45
|
+
|
|
46
|
+
export const SettingsRow = withZoraThemeScope(SettingsRowInner);
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
4
|
+
|
|
5
|
+
interface SettingsRowBaseProps extends ZoraBaseProps {
|
|
4
6
|
title: React.ReactNode;
|
|
5
7
|
description?: React.ReactNode;
|
|
6
8
|
meta?: React.ReactNode;
|
|
7
9
|
disabled?: boolean;
|
|
8
|
-
testID?: string;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
interface SettingsRowPressableProps {
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Switch } from '@ankhorage/surface';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
4
5
|
import { SettingsRow } from '../settings-row';
|
|
5
6
|
import type { SwitchFieldProps } from './types';
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
function SwitchFieldInner({
|
|
9
|
+
themeId: _themeId,
|
|
10
|
+
mode: _mode,
|
|
8
11
|
label,
|
|
9
12
|
description,
|
|
10
13
|
value,
|
|
@@ -22,3 +25,5 @@ export function SwitchField({
|
|
|
22
25
|
/>
|
|
23
26
|
);
|
|
24
27
|
}
|
|
28
|
+
|
|
29
|
+
export const SwitchField = withZoraThemeScope(SwitchFieldInner);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
4
|
+
|
|
5
|
+
export interface SwitchFieldProps extends ZoraBaseProps {
|
|
4
6
|
label: ReactNode;
|
|
5
7
|
description?: ReactNode;
|
|
6
8
|
value: boolean;
|
|
7
9
|
onValueChange: (value: boolean) => void;
|
|
8
10
|
disabled?: boolean;
|
|
9
|
-
testID?: string;
|
|
10
11
|
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import { Box
|
|
1
|
+
import { Box } from '@ankhorage/surface';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
import { Card } from '../../components/card';
|
|
5
5
|
import { Heading } from '../../components/heading';
|
|
6
6
|
import { Text } from '../../components/text';
|
|
7
|
+
import { useZoraTheme } from '../../theme/useZoraTheme';
|
|
8
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
7
9
|
import type { PaletteItemProps } from './types';
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
function PaletteItemInner({
|
|
12
|
+
themeId: _themeId,
|
|
13
|
+
mode: _mode,
|
|
10
14
|
title,
|
|
11
15
|
description,
|
|
12
16
|
icon,
|
|
@@ -16,7 +20,7 @@ export function PaletteItem({
|
|
|
16
20
|
onPress,
|
|
17
21
|
testID,
|
|
18
22
|
}: PaletteItemProps) {
|
|
19
|
-
const { theme } =
|
|
23
|
+
const { theme } = useZoraTheme();
|
|
20
24
|
|
|
21
25
|
return (
|
|
22
26
|
<Card
|
|
@@ -49,3 +53,5 @@ export function PaletteItem({
|
|
|
49
53
|
</Card>
|
|
50
54
|
);
|
|
51
55
|
}
|
|
56
|
+
|
|
57
|
+
export const PaletteItem = withZoraThemeScope(PaletteItemInner);
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { Box } from '@ankhorage/surface';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
4
5
|
import type { TileGridProps } from './types';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
function TileGridInner({
|
|
8
|
+
themeId: _themeId,
|
|
9
|
+
mode: _mode,
|
|
7
10
|
children,
|
|
8
11
|
columns = 'responsive',
|
|
9
12
|
compact = false,
|
|
@@ -42,3 +45,5 @@ export function TileGrid({
|
|
|
42
45
|
</Box>
|
|
43
46
|
);
|
|
44
47
|
}
|
|
48
|
+
|
|
49
|
+
export const TileGrid = withZoraThemeScope(TileGridInner);
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { ButtonIconSpec } from '@ankhorage/surface';
|
|
2
2
|
import type { ReactNode } from 'react';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
5
|
+
|
|
6
|
+
export interface TileGridProps extends ZoraBaseProps {
|
|
5
7
|
children?: ReactNode;
|
|
6
8
|
columns?: number | 'responsive';
|
|
7
9
|
compact?: boolean;
|
|
8
|
-
testID?: string;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
export interface PaletteItemProps {
|
|
12
|
+
export interface PaletteItemProps extends ZoraBaseProps {
|
|
12
13
|
title: ReactNode;
|
|
13
14
|
description?: ReactNode;
|
|
14
15
|
icon?: ButtonIconSpec;
|
|
@@ -16,5 +17,4 @@ export interface PaletteItemProps {
|
|
|
16
17
|
selected?: boolean;
|
|
17
18
|
disabled?: boolean;
|
|
18
19
|
onPress?: () => void;
|
|
19
|
-
testID?: string;
|
|
20
20
|
}
|
|
@@ -2,10 +2,12 @@ import { Box, Stack } from '@ankhorage/surface';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
import { IconButton } from '../../components/icon-button';
|
|
5
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
6
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
5
7
|
import { SettingsRow } from '../settings-row';
|
|
6
8
|
import type { TreeItemNode, TreeItemRenderProps } from './types';
|
|
7
9
|
|
|
8
|
-
interface TreeItemProps<TId extends string = string> {
|
|
10
|
+
interface TreeItemProps<TId extends string = string> extends ZoraBaseProps {
|
|
9
11
|
node: TreeItemNode<TId>;
|
|
10
12
|
depth: number;
|
|
11
13
|
selectedId?: TId;
|
|
@@ -15,7 +17,9 @@ interface TreeItemProps<TId extends string = string> {
|
|
|
15
17
|
renderItem?: (props: TreeItemRenderProps<TId>) => React.ReactNode;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
function TreeItemInner<TId extends string = string>({
|
|
21
|
+
themeId: _themeId,
|
|
22
|
+
mode: _mode,
|
|
19
23
|
node,
|
|
20
24
|
depth,
|
|
21
25
|
selectedId,
|
|
@@ -23,6 +27,7 @@ export function TreeItem<TId extends string = string>({
|
|
|
23
27
|
onSelect,
|
|
24
28
|
onToggleExpand,
|
|
25
29
|
renderItem,
|
|
30
|
+
testID,
|
|
26
31
|
}: TreeItemProps<TId>) {
|
|
27
32
|
const hasChildren = node.children !== undefined && node.children.length > 0;
|
|
28
33
|
const isExpanded = expandedIds.includes(node.id);
|
|
@@ -63,7 +68,7 @@ export function TreeItem<TId extends string = string>({
|
|
|
63
68
|
};
|
|
64
69
|
|
|
65
70
|
return (
|
|
66
|
-
<Box>
|
|
71
|
+
<Box testID={testID}>
|
|
67
72
|
<Box style={{ paddingLeft: depth * 16 }}>{renderContent()}</Box>
|
|
68
73
|
{hasChildren && isExpanded ? (
|
|
69
74
|
<Box>
|
|
@@ -84,3 +89,5 @@ export function TreeItem<TId extends string = string>({
|
|
|
84
89
|
</Box>
|
|
85
90
|
);
|
|
86
91
|
}
|
|
92
|
+
|
|
93
|
+
export const TreeItem = withZoraThemeScope(TreeItemInner);
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Stack } from '@ankhorage/surface';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
4
5
|
import { TreeItem } from './TreeItem';
|
|
5
6
|
import type { TreeViewProps } from './types';
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
function TreeViewInner<TId extends string = string>({
|
|
9
|
+
themeId: _themeId,
|
|
10
|
+
mode: _mode,
|
|
8
11
|
nodes,
|
|
9
12
|
selectedId,
|
|
10
13
|
expandedIds: controlledExpandedIds,
|
|
@@ -48,3 +51,5 @@ export function TreeView<TId extends string = string>({
|
|
|
48
51
|
</Stack>
|
|
49
52
|
);
|
|
50
53
|
}
|
|
54
|
+
|
|
55
|
+
export const TreeView = withZoraThemeScope(TreeViewInner);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { ButtonIconSpec } from '@ankhorage/surface';
|
|
2
2
|
import type { ReactNode } from 'react';
|
|
3
3
|
|
|
4
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
5
|
+
|
|
4
6
|
export interface TreeItemNode<TId extends string = string> {
|
|
5
7
|
id: TId;
|
|
6
8
|
label: ReactNode;
|
|
@@ -19,7 +21,7 @@ export interface TreeItemRenderProps<TId extends string = string> {
|
|
|
19
21
|
hasChildren: boolean;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
export interface TreeViewProps<TId extends string = string> {
|
|
24
|
+
export interface TreeViewProps<TId extends string = string> extends ZoraBaseProps {
|
|
23
25
|
nodes: readonly TreeItemNode<TId>[];
|
|
24
26
|
selectedId?: TId;
|
|
25
27
|
expandedIds?: readonly TId[];
|
|
@@ -27,5 +29,4 @@ export interface TreeViewProps<TId extends string = string> {
|
|
|
27
29
|
onSelect?: (id: TId) => void;
|
|
28
30
|
onExpandedChange?: (ids: readonly TId[]) => void;
|
|
29
31
|
renderItem?: (props: TreeItemRenderProps<TId>) => ReactNode;
|
|
30
|
-
testID?: string;
|
|
31
32
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ZoraThemeId, ZoraThemeMode } from './types';
|
|
2
|
+
|
|
3
|
+
export interface ZoraBaseProps {
|
|
4
|
+
/**
|
|
5
|
+
* Overrides the active ZORA theme for this component and its subtree.
|
|
6
|
+
* If omitted, the nearest parent theme is inherited.
|
|
7
|
+
*
|
|
8
|
+
* Plan 2: theme registries are not available yet. Only the inherited theme id
|
|
9
|
+
* is valid; unknown ids throw in dev/test and warn+fallback in production.
|
|
10
|
+
*/
|
|
11
|
+
themeId?: ZoraThemeId;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Overrides the light/dark mode for this component and its subtree.
|
|
15
|
+
* If omitted, the nearest parent mode is inherited.
|
|
16
|
+
*/
|
|
17
|
+
mode?: ZoraThemeMode;
|
|
18
|
+
|
|
19
|
+
testID?: string;
|
|
20
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ThemeProvider } from '@ankhorage/surface';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
import { createZoraThemeConfig } from './createZoraThemeConfig';
|
|
5
5
|
import type { ZoraTheme, ZoraThemeMode } from './types';
|
|
6
6
|
import { zoraDefaultTheme } from './zoraDefaultTheme';
|
|
7
|
+
import { ZoraThemeRuntimeContext } from './ZoraThemeRuntimeContext';
|
|
7
8
|
|
|
8
9
|
export interface ZoraProviderProps {
|
|
9
10
|
children: React.ReactNode;
|
|
@@ -16,9 +17,13 @@ export function ZoraProvider({
|
|
|
16
17
|
theme = zoraDefaultTheme,
|
|
17
18
|
initialMode = 'light',
|
|
18
19
|
}: ZoraProviderProps) {
|
|
20
|
+
const runtimeValue = React.useMemo(() => ({ sourceTheme: theme, themeId: theme.id }), [theme]);
|
|
21
|
+
|
|
19
22
|
return (
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
+
<ZoraThemeRuntimeContext.Provider value={runtimeValue}>
|
|
24
|
+
<ThemeProvider initialConfig={createZoraThemeConfig(theme)} initialMode={initialMode}>
|
|
25
|
+
{children}
|
|
26
|
+
</ThemeProvider>
|
|
27
|
+
</ZoraThemeRuntimeContext.Provider>
|
|
23
28
|
);
|
|
24
29
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
import type { ZoraTheme, ZoraThemeId } from './types';
|
|
4
|
+
import { zoraDefaultTheme } from './zoraDefaultTheme';
|
|
5
|
+
|
|
6
|
+
interface ZoraThemeRuntime {
|
|
7
|
+
sourceTheme: ZoraTheme;
|
|
8
|
+
themeId: ZoraThemeId;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const ZoraThemeRuntimeContext = createContext<ZoraThemeRuntime>({
|
|
12
|
+
sourceTheme: zoraDefaultTheme,
|
|
13
|
+
themeId: zoraDefaultTheme.id,
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export function useZoraThemeRuntime(): ZoraThemeRuntime {
|
|
17
|
+
return useContext(ZoraThemeRuntimeContext);
|
|
18
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { createTheme, ThemeContext, useFontContext, useTheme } from '@ankhorage/surface';
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
|
+
|
|
4
|
+
import { createZoraThemeConfig } from './createZoraThemeConfig';
|
|
5
|
+
import { resolveZoraScopedThemeId } from './resolveZoraScopedThemeId';
|
|
6
|
+
import type { ZoraThemeId, ZoraThemeMode } from './types';
|
|
7
|
+
import { useZoraThemeRuntime, ZoraThemeRuntimeContext } from './ZoraThemeRuntimeContext';
|
|
8
|
+
|
|
9
|
+
export interface ZoraThemeScopeProps {
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
themeId?: ZoraThemeId;
|
|
12
|
+
mode?: ZoraThemeMode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function ZoraThemeScopeInner({ children, themeId, mode }: ZoraThemeScopeProps) {
|
|
16
|
+
const parentSurface = useTheme();
|
|
17
|
+
const parentRuntime = useZoraThemeRuntime();
|
|
18
|
+
const { activeFontId } = useFontContext();
|
|
19
|
+
|
|
20
|
+
const scopedThemeId = resolveZoraScopedThemeId({
|
|
21
|
+
desiredThemeId: themeId,
|
|
22
|
+
inheritedThemeId: parentRuntime.themeId,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const scopedMode = mode ?? parentSurface.mode;
|
|
26
|
+
|
|
27
|
+
// Plan 2: there is no multi-theme registry yet. Keep the active theme seed inherited.
|
|
28
|
+
const surfaceConfig = useMemo(
|
|
29
|
+
() => createZoraThemeConfig(parentRuntime.sourceTheme),
|
|
30
|
+
[parentRuntime.sourceTheme],
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
const scopedTheme = useMemo(
|
|
34
|
+
() => createTheme(surfaceConfig, scopedMode, activeFontId),
|
|
35
|
+
[surfaceConfig, scopedMode, activeFontId],
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const scopedSurfaceValue = useMemo(
|
|
39
|
+
() => ({
|
|
40
|
+
theme: scopedTheme,
|
|
41
|
+
mode: scopedMode,
|
|
42
|
+
setMode: parentSurface.setMode,
|
|
43
|
+
setThemeConfig: parentSurface.setThemeConfig,
|
|
44
|
+
_hasProvider: true,
|
|
45
|
+
}),
|
|
46
|
+
[parentSurface.setMode, parentSurface.setThemeConfig, scopedMode, scopedTheme],
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const scopedRuntimeValue = useMemo(
|
|
50
|
+
() => ({
|
|
51
|
+
sourceTheme: parentRuntime.sourceTheme,
|
|
52
|
+
themeId: scopedThemeId,
|
|
53
|
+
}),
|
|
54
|
+
[parentRuntime.sourceTheme, scopedThemeId],
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<ZoraThemeRuntimeContext.Provider value={scopedRuntimeValue}>
|
|
59
|
+
<ThemeContext.Provider value={scopedSurfaceValue}>{children}</ThemeContext.Provider>
|
|
60
|
+
</ZoraThemeRuntimeContext.Provider>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function ZoraThemeScope({ children, themeId, mode }: ZoraThemeScopeProps) {
|
|
65
|
+
if (mode === undefined && themeId === undefined) {
|
|
66
|
+
return children;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<ZoraThemeScopeInner mode={mode} themeId={themeId}>
|
|
71
|
+
{children}
|
|
72
|
+
</ZoraThemeScopeInner>
|
|
73
|
+
);
|
|
74
|
+
}
|
package/src/theme/index.ts
CHANGED
|
@@ -9,6 +9,10 @@ export type {
|
|
|
9
9
|
ZoraThemeMode,
|
|
10
10
|
} from './types';
|
|
11
11
|
export { useZoraTheme } from './useZoraTheme';
|
|
12
|
+
export { withZoraThemeScope } from './withZoraThemeScope';
|
|
13
|
+
export type { ZoraBaseProps } from './ZoraBaseProps';
|
|
12
14
|
export { zoraDefaultTheme } from './zoraDefaultTheme';
|
|
13
15
|
export type { ZoraProviderProps } from './ZoraProvider';
|
|
14
16
|
export { ZoraProvider } from './ZoraProvider';
|
|
17
|
+
export type { ZoraThemeScopeProps } from './ZoraThemeScope';
|
|
18
|
+
export { ZoraThemeScope } from './ZoraThemeScope';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
|
|
3
|
+
import { resolveZoraScopedThemeId } from './resolveZoraScopedThemeId';
|
|
4
|
+
|
|
5
|
+
describe('resolveZoraScopedThemeId', () => {
|
|
6
|
+
it('inherits the theme id when omitted', () => {
|
|
7
|
+
expect(resolveZoraScopedThemeId({ desiredThemeId: undefined, inheritedThemeId: 'zora' })).toBe(
|
|
8
|
+
'zora',
|
|
9
|
+
);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('accepts the inherited theme id when explicitly provided', () => {
|
|
13
|
+
expect(resolveZoraScopedThemeId({ desiredThemeId: 'zora', inheritedThemeId: 'zora' })).toBe(
|
|
14
|
+
'zora',
|
|
15
|
+
);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('throws in non-production for unknown theme ids', () => {
|
|
19
|
+
const originalEnv = process.env.NODE_ENV;
|
|
20
|
+
process.env.NODE_ENV = 'test';
|
|
21
|
+
|
|
22
|
+
expect(() =>
|
|
23
|
+
resolveZoraScopedThemeId({ desiredThemeId: 'studio', inheritedThemeId: 'zora' }),
|
|
24
|
+
).toThrow(/Unknown ZORA theme id 'studio'/);
|
|
25
|
+
|
|
26
|
+
process.env.NODE_ENV = originalEnv;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('warns and falls back in production for unknown theme ids', () => {
|
|
30
|
+
const originalEnv = process.env.NODE_ENV;
|
|
31
|
+
process.env.NODE_ENV = 'production';
|
|
32
|
+
|
|
33
|
+
const originalWarn = console.warn;
|
|
34
|
+
const warnings: string[] = [];
|
|
35
|
+
console.warn = (message: string) => {
|
|
36
|
+
warnings.push(message);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
expect(resolveZoraScopedThemeId({ desiredThemeId: 'studio', inheritedThemeId: 'zora' })).toBe(
|
|
40
|
+
'zora',
|
|
41
|
+
);
|
|
42
|
+
expect(warnings.join('\n')).toMatch(/Unknown ZORA theme id 'studio'/);
|
|
43
|
+
|
|
44
|
+
console.warn = originalWarn;
|
|
45
|
+
process.env.NODE_ENV = originalEnv;
|
|
46
|
+
});
|
|
47
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ZoraThemeId } from './types';
|
|
2
|
+
|
|
3
|
+
export function resolveZoraScopedThemeId({
|
|
4
|
+
desiredThemeId,
|
|
5
|
+
inheritedThemeId,
|
|
6
|
+
}: {
|
|
7
|
+
desiredThemeId: ZoraThemeId | undefined;
|
|
8
|
+
inheritedThemeId: ZoraThemeId;
|
|
9
|
+
}): ZoraThemeId {
|
|
10
|
+
if (desiredThemeId === undefined || desiredThemeId === inheritedThemeId) {
|
|
11
|
+
return inheritedThemeId;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const message = [
|
|
15
|
+
`Unknown ZORA theme id '${desiredThemeId}'.`,
|
|
16
|
+
'Theme registries are not available yet; register the theme before using themeId scopes.',
|
|
17
|
+
].join(' ');
|
|
18
|
+
|
|
19
|
+
if (process.env.NODE_ENV === 'production') {
|
|
20
|
+
console.warn(message);
|
|
21
|
+
return inheritedThemeId;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
throw new Error(message);
|
|
25
|
+
}
|