@askrjs/themes 0.0.2 → 0.0.4
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/README.md +78 -0
- package/THEMING.md +50 -8
- package/dist/{_internal → components/_internal}/box-layout.js +4 -3
- package/dist/components/_internal/box-layout.js.map +1 -0
- package/dist/components/_internal/classes.js.map +1 -0
- package/dist/components/_internal/jsx.js.map +1 -0
- package/dist/components/_internal/layout.d.ts +6 -28
- package/dist/{_internal → components/_internal}/layout.js +5 -15
- package/dist/components/_internal/layout.js.map +1 -0
- package/dist/{_internal → components/_internal}/merge-props.js +5 -0
- package/dist/components/_internal/merge-props.js.map +1 -0
- package/dist/components/_internal/pathname.js +39 -0
- package/dist/components/_internal/pathname.js.map +1 -0
- package/dist/components/_internal/style.js +41 -0
- package/dist/components/_internal/style.js.map +1 -0
- package/dist/components/alert/alert.d.ts +7 -0
- package/dist/components/alert/alert.js +65 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/alert.types.d.ts +22 -0
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/aspect-ratio/aspect-ratio.d.ts +8 -3
- package/dist/components/aspect-ratio/aspect-ratio.js +33 -0
- package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -0
- package/dist/components/aspect-ratio/aspect-ratio.types.d.ts +18 -12
- package/dist/components/aspect-ratio/index.d.ts +2 -2
- package/dist/components/badge/badge.a11y.d.ts +13 -9
- package/dist/components/badge/badge.d.ts +8 -3
- package/dist/{badge → components/badge}/badge.js +5 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/badge.types.d.ts +18 -12
- package/dist/components/badge/index.d.ts +3 -3
- package/dist/components/block/block.a11y.d.ts +20 -0
- package/dist/components/block/block.d.ts +9 -0
- package/dist/components/block/block.js +66 -0
- package/dist/components/block/block.js.map +1 -0
- package/dist/components/block/block.types.d.ts +38 -0
- package/dist/components/block/index.d.ts +3 -0
- package/dist/components/box/box.a11y.d.ts +13 -9
- package/dist/components/box/box.d.ts +9 -4
- package/dist/{box → components/box}/box.js +3 -2
- package/dist/components/box/box.js.map +1 -0
- package/dist/components/box/box.types.d.ts +67 -61
- package/dist/components/box/index.d.ts +3 -3
- package/dist/components/breadcrumb/breadcrumb.a11y.d.ts +13 -9
- package/dist/components/breadcrumb/breadcrumb.a11y.js +15 -0
- package/dist/components/breadcrumb/breadcrumb.a11y.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +18 -13
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.types.d.ts +64 -58
- package/dist/components/breadcrumb/index.d.ts +3 -3
- package/dist/components/button-group/button-group.d.ts +7 -0
- package/dist/components/button-group/button-group.js +20 -0
- package/dist/components/button-group/button-group.js.map +1 -0
- package/dist/components/button-group/button-group.types.d.ts +14 -0
- package/dist/components/button-group/index.d.ts +2 -0
- package/dist/components/card/card.d.ts +13 -7
- package/dist/components/card/card.js +95 -0
- package/dist/components/card/card.js.map +1 -0
- package/dist/components/card/card.types.d.ts +32 -24
- package/dist/components/card/index.d.ts +2 -2
- package/dist/components/close/close.d.ts +7 -0
- package/dist/components/close/close.js +22 -0
- package/dist/components/close/close.js.map +1 -0
- package/dist/components/close/close.types.d.ts +10 -0
- package/dist/components/close/index.d.ts +2 -0
- package/dist/components/container/container.a11y.d.ts +19 -15
- package/dist/components/container/container.d.ts +8 -3
- package/dist/{container → components/container}/container.js +3 -3
- package/dist/components/container/container.js.map +1 -0
- package/dist/components/container/container.types.d.ts +26 -26
- package/dist/components/container/index.d.ts +3 -3
- package/dist/components/empty-state/empty-state.d.ts +7 -2
- package/dist/components/empty-state/empty-state.js.map +1 -0
- package/dist/components/empty-state/empty-state.types.d.ts +15 -8
- package/dist/components/empty-state/index.d.ts +2 -2
- package/dist/components/field/field.d.ts +9 -0
- package/dist/components/field/field.js +41 -0
- package/dist/components/field/field.js.map +1 -0
- package/dist/components/field/field.types.d.ts +20 -0
- package/dist/components/field/index.d.ts +2 -0
- package/dist/components/flex/flex.a11y.d.ts +21 -17
- package/dist/components/flex/flex.d.ts +9 -4
- package/dist/{flex → components/flex}/flex.js +3 -2
- package/dist/components/flex/flex.js.map +1 -0
- package/dist/components/flex/flex.types.d.ts +38 -37
- package/dist/components/flex/index.d.ts +3 -3
- package/dist/components/header/header.a11y.d.ts +13 -9
- package/dist/components/header/header.a11y.js +12 -0
- package/dist/components/header/header.a11y.js.map +1 -0
- package/dist/components/header/header.d.ts +7 -2
- package/dist/components/header/header.js.map +1 -0
- package/dist/components/header/header.types.d.ts +8 -4
- package/dist/components/inline/index.d.ts +8 -6
- package/dist/components/inline/index.js.map +1 -0
- package/dist/components/input-group/index.d.ts +2 -0
- package/dist/components/input-group/input-group.d.ts +9 -0
- package/dist/components/input-group/input-group.js +39 -0
- package/dist/components/input-group/input-group.js.map +1 -0
- package/dist/components/input-group/input-group.types.d.ts +26 -0
- package/dist/components/list-group/index.d.ts +2 -0
- package/dist/components/list-group/list-group.d.ts +9 -0
- package/dist/components/list-group/list-group.js +43 -0
- package/dist/components/list-group/list-group.js.map +1 -0
- package/dist/components/list-group/list-group.types.d.ts +32 -0
- package/dist/components/nav/index.d.ts +2 -0
- package/dist/components/nav/nav.d.ts +13 -0
- package/dist/components/nav/nav.js +113 -0
- package/dist/components/nav/nav.js.map +1 -0
- package/dist/components/nav/nav.types.d.ts +56 -0
- package/dist/components/navbar/index.d.ts +5 -2
- package/dist/components/navbar/navbar-panel.js +48 -0
- package/dist/components/navbar/navbar-panel.js.map +1 -0
- package/dist/components/navbar/navbar.context.js +13 -0
- package/dist/components/navbar/navbar.context.js.map +1 -0
- package/dist/components/navbar/navbar.d.ts +45 -7
- package/dist/components/navbar/navbar.js +221 -0
- package/dist/components/navbar/navbar.js.map +1 -0
- package/dist/components/navbar/navbar.render.js +26 -0
- package/dist/components/navbar/navbar.render.js.map +1 -0
- package/dist/components/navbar/navbar.shared.js +18 -0
- package/dist/components/navbar/navbar.shared.js.map +1 -0
- package/dist/components/navbar/navbar.types.d.ts +29 -22
- package/dist/components/overlays/dropdown-content.d.ts +8 -0
- package/dist/components/overlays/dropdown-content.js +18 -0
- package/dist/components/overlays/dropdown-content.js.map +1 -0
- package/dist/components/pagination/index.d.ts +2 -0
- package/dist/components/pagination/pagination.d.ts +11 -0
- package/dist/components/pagination/pagination.js +95 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/pagination/pagination.types.d.ts +40 -0
- package/dist/components/section/index.d.ts +3 -3
- package/dist/components/section/section.a11y.d.ts +14 -10
- package/dist/components/section/section.d.ts +8 -3
- package/dist/{section → components/section}/section.js +3 -2
- package/dist/components/section/section.js.map +1 -0
- package/dist/components/section/section.types.d.ts +20 -14
- package/dist/components/separator/index.d.ts +3 -3
- package/dist/components/separator/separator.a11y.d.ts +13 -9
- package/dist/components/separator/separator.a11y.js +15 -0
- package/dist/components/separator/separator.a11y.js.map +1 -0
- package/dist/components/separator/separator.d.ts +8 -3
- package/dist/components/separator/separator.js.map +1 -0
- package/dist/components/separator/separator.types.d.ts +19 -13
- package/dist/components/shell/index.d.ts +3 -0
- package/dist/components/shell/shell-nav.types.d.ts +7 -0
- package/dist/components/shell/shell-panel.js +54 -0
- package/dist/components/shell/shell-panel.js.map +1 -0
- package/dist/components/shell/shell-responsive.js +110 -0
- package/dist/components/shell/shell-responsive.js.map +1 -0
- package/dist/components/shell/shell.a11y.d.ts +23 -0
- package/dist/components/shell/shell.a11y.js +23 -0
- package/dist/components/shell/shell.a11y.js.map +1 -0
- package/dist/components/shell/shell.d.ts +13 -0
- package/dist/components/shell/shell.js +69 -0
- package/dist/components/shell/shell.js.map +1 -0
- package/dist/components/shell/shell.types.d.ts +58 -0
- package/dist/components/sidebar/sidebar-panel.d.ts +7 -0
- package/dist/components/sidebar/sidebar-panel.js +59 -0
- package/dist/components/sidebar/sidebar-panel.js.map +1 -0
- package/dist/components/sidebar/sidebar-toggle.d.ts +7 -0
- package/dist/components/sidebar/sidebar-toggle.js +8 -0
- package/dist/components/sidebar/sidebar-toggle.js.map +1 -0
- package/dist/components/sidebar/sidebar.context.js +21 -0
- package/dist/components/sidebar/sidebar.context.js.map +1 -0
- package/dist/components/sidebar/sidebar.d.ts +7 -0
- package/dist/components/sidebar/sidebar.js +228 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/sidebar/sidebar.shared.js +12 -0
- package/dist/components/sidebar/sidebar.shared.js.map +1 -0
- package/dist/components/sidebar/sidebar.types.d.ts +30 -0
- package/dist/components/skeleton/index.d.ts +3 -3
- package/dist/components/skeleton/skeleton.a11y.d.ts +12 -8
- package/dist/components/skeleton/skeleton.d.ts +8 -3
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/skeleton/skeleton.types.d.ts +16 -10
- package/dist/components/spacer/index.d.ts +3 -3
- package/dist/components/spacer/spacer.a11y.d.ts +16 -12
- package/dist/components/spacer/spacer.d.ts +8 -3
- package/dist/{spacer → components/spacer}/spacer.js +3 -1
- package/dist/components/spacer/spacer.js.map +1 -0
- package/dist/components/spacer/spacer.types.d.ts +23 -21
- package/dist/components/spinner/index.d.ts +2 -2
- package/dist/components/spinner/spinner.d.ts +7 -2
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/spinner/spinner.types.d.ts +9 -4
- package/dist/components/stack/index.d.ts +3 -3
- package/dist/components/stack/stack.a11y.d.ts +17 -13
- package/dist/components/stack/stack.d.ts +8 -3
- package/dist/components/stack/stack.js.map +1 -0
- package/dist/components/stack/stack.types.d.ts +19 -13
- package/dist/components/theme/index.d.ts +1 -2
- package/dist/components/theme/theme.d.ts +41 -34
- package/dist/{theme → components/theme}/theme.js +33 -4
- package/dist/components/theme/theme.js.map +1 -0
- package/dist/controls.d.ts +10 -0
- package/dist/controls.js +7 -0
- package/dist/feedback.d.ts +5 -0
- package/dist/feedback.js +4 -0
- package/dist/layouts.d.ts +25 -0
- package/dist/layouts.js +11 -0
- package/dist/navs.d.ts +15 -0
- package/dist/navs.js +9 -0
- package/dist/overlays.d.ts +3 -0
- package/dist/overlays.js +4 -0
- package/dist/shells.d.ts +16 -0
- package/dist/shells.js +11 -0
- package/dist/surfaces.d.ts +16 -0
- package/dist/surfaces.js +9 -0
- package/dist/theme.d.ts +2 -0
- package/dist/theme.js +3 -0
- package/dist/themes/default/index.css +3132 -832
- package/package.json +65 -25
- package/src/components/_internal/box-layout.ts +8 -0
- package/src/components/_internal/jsx.ts +91 -16
- package/src/components/_internal/layout.ts +4 -17
- package/src/components/_internal/merge-props.ts +9 -0
- package/src/components/_internal/pathname.ts +67 -0
- package/src/components/_internal/style.ts +51 -0
- package/src/components/alert/alert.tsx +84 -0
- package/src/components/alert/alert.types.ts +20 -0
- package/src/components/alert/index.ts +2 -0
- package/src/components/aspect-ratio/aspect-ratio.tsx +10 -24
- package/src/components/aspect-ratio/aspect-ratio.types.ts +2 -1
- package/src/components/badge/badge.tsx +6 -0
- package/src/components/badge/badge.types.ts +2 -1
- package/src/components/block/block.a11y.ts +17 -0
- package/src/components/block/block.tsx +71 -0
- package/src/components/block/block.types.ts +60 -0
- package/src/components/block/index.ts +11 -0
- package/src/components/box/box.tsx +3 -2
- package/src/components/box/box.types.ts +2 -1
- package/src/components/breadcrumb/breadcrumb.types.ts +2 -1
- package/src/components/button-group/button-group.tsx +32 -0
- package/src/components/button-group/button-group.types.ts +12 -0
- package/src/components/button-group/index.ts +2 -0
- package/src/components/card/card.tsx +72 -43
- package/src/components/card/card.types.ts +6 -1
- package/src/components/card/index.ts +10 -1
- package/src/components/close/close.tsx +19 -0
- package/src/components/close/close.types.ts +7 -0
- package/src/components/close/index.ts +2 -0
- package/src/components/container/container.tsx +4 -4
- package/src/components/container/container.types.ts +2 -1
- package/src/components/empty-state/empty-state.types.ts +3 -0
- package/src/components/field/field.tsx +36 -0
- package/src/components/field/field.types.ts +19 -0
- package/src/components/field/index.ts +2 -0
- package/src/components/flex/flex.tsx +4 -2
- package/src/components/flex/flex.types.ts +2 -1
- package/src/components/input-group/index.ts +7 -0
- package/src/components/input-group/input-group.tsx +57 -0
- package/src/components/input-group/input-group.types.ts +26 -0
- package/src/components/list-group/index.ts +7 -0
- package/src/components/list-group/list-group.tsx +74 -0
- package/src/components/list-group/list-group.types.ts +32 -0
- package/src/components/nav/index.ts +14 -0
- package/src/components/nav/nav.tsx +203 -0
- package/src/components/nav/nav.types.ts +68 -0
- package/src/components/navbar/index.ts +9 -2
- package/src/components/navbar/navbar-panel.tsx +67 -0
- package/src/components/navbar/navbar.context.ts +22 -0
- package/src/components/navbar/navbar.render.tsx +32 -0
- package/src/components/navbar/navbar.shared.ts +21 -0
- package/src/components/navbar/navbar.tsx +262 -53
- package/src/components/navbar/navbar.types.ts +36 -22
- package/src/components/overlays/dropdown-content.tsx +28 -0
- package/src/components/pagination/index.ts +8 -0
- package/src/components/pagination/pagination.tsx +158 -0
- package/src/components/pagination/pagination.types.ts +41 -0
- package/src/components/section/section.tsx +3 -2
- package/src/components/section/section.types.ts +2 -1
- package/src/components/separator/separator.types.ts +2 -1
- package/src/components/shell/index.ts +16 -0
- package/src/components/shell/shell-nav.types.ts +3 -0
- package/src/components/shell/shell-panel.tsx +85 -0
- package/src/components/shell/shell-responsive.tsx +212 -0
- package/src/components/shell/shell.a11y.ts +20 -0
- package/src/components/shell/shell.tsx +74 -0
- package/src/components/shell/shell.types.ts +71 -0
- package/src/components/sidebar/index.ts +5 -0
- package/src/components/sidebar/sidebar-panel.tsx +76 -0
- package/src/components/sidebar/sidebar-toggle.tsx +5 -0
- package/src/components/sidebar/sidebar.context.ts +40 -0
- package/src/components/sidebar/sidebar.shared.ts +12 -0
- package/src/components/sidebar/sidebar.tsx +355 -0
- package/src/components/sidebar/sidebar.types.ts +35 -0
- package/src/components/skeleton/skeleton.types.ts +2 -1
- package/src/components/spacer/spacer.tsx +4 -1
- package/src/components/spacer/spacer.types.ts +3 -2
- package/src/components/stack/stack.types.ts +2 -1
- package/src/components/theme/index.ts +10 -1
- package/src/components/theme/theme.tsx +15 -4
- package/src/controls.ts +18 -0
- package/src/feedback.ts +6 -0
- package/src/layouts.ts +19 -0
- package/src/navs.ts +26 -0
- package/src/overlays.ts +90 -0
- package/src/shells.ts +13 -0
- package/src/surfaces.ts +23 -0
- package/src/theme.ts +21 -0
- package/src/themes/default/index.css +13 -3
- package/src/themes/default/styles/actions/button-group.css +74 -0
- package/src/themes/default/styles/actions/button.css +48 -8
- package/src/themes/default/styles/actions/toggle-group.css +19 -12
- package/src/themes/default/styles/actions/toggle.css +16 -10
- package/src/themes/default/styles/base/icon.css +2 -0
- package/src/themes/default/styles/base/reset.css +28 -0
- package/src/themes/default/styles/base/typography.css +37 -17
- package/src/themes/default/styles/base/utilities.css +56 -39
- package/src/themes/default/styles/disclosure/accordion.css +22 -14
- package/src/themes/default/styles/disclosure/collapsible.css +22 -11
- package/src/themes/default/styles/display/alert.css +109 -0
- package/src/themes/default/styles/display/avatar.css +9 -4
- package/src/themes/default/styles/display/badge.css +12 -3
- package/src/themes/default/styles/display/card.css +16 -4
- package/src/themes/default/styles/display/coverage.css +2 -14
- package/src/themes/default/styles/display/list-group.css +84 -0
- package/src/themes/default/styles/display/progress-circle.css +3 -2
- package/src/themes/default/styles/display/progress.css +8 -5
- package/src/themes/default/styles/display/scroll-area.css +15 -0
- package/src/themes/default/styles/display/separator.css +4 -4
- package/src/themes/default/styles/display/skeleton.css +25 -2
- package/src/themes/default/styles/display/spinner.css +1 -1
- package/src/themes/default/styles/display/table.css +7 -4
- package/src/themes/default/styles/display/virtual-list.css +29 -0
- package/src/themes/default/styles/display/virtual-table.css +68 -0
- package/src/themes/default/styles/forms/checkbox.css +2 -1
- package/src/themes/default/styles/forms/field.css +22 -0
- package/src/themes/default/styles/forms/form.css +1 -1
- package/src/themes/default/styles/forms/input-group.css +202 -0
- package/src/themes/default/styles/forms/input.css +22 -6
- package/src/themes/default/styles/forms/label.css +2 -0
- package/src/themes/default/styles/forms/radio-group.css +22 -13
- package/src/themes/default/styles/forms/select.css +71 -26
- package/src/themes/default/styles/forms/slider.css +32 -16
- package/src/themes/default/styles/forms/switch.css +2 -1
- package/src/themes/default/styles/forms/textarea.css +35 -6
- package/src/themes/default/styles/layout/aspect-ratio.css +3 -1
- package/src/themes/default/styles/layout/block.css +23 -0
- package/src/themes/default/styles/layout/patterns.css +155 -3
- package/src/themes/default/styles/layout/responsive-layout.css +140 -121
- package/src/themes/default/styles/navigation/breadcrumb.css +7 -1
- package/src/themes/default/styles/navigation/menu.css +150 -7
- package/src/themes/default/styles/navigation/menubar.css +194 -28
- package/src/themes/default/styles/navigation/nav.css +231 -0
- package/src/themes/default/styles/navigation/pagination.css +91 -0
- package/src/themes/default/styles/overlays/alert-dialog.css +1 -1
- package/src/themes/default/styles/overlays/dialog.css +42 -10
- package/src/themes/default/styles/overlays/dropdown.css +160 -0
- package/src/themes/default/styles/overlays/hover-card.css +28 -3
- package/src/themes/default/styles/overlays/popover.css +50 -6
- package/src/themes/default/styles/overlays/toast.css +66 -17
- package/src/themes/default/styles/overlays/tooltip.css +45 -18
- package/src/themes/default/styles/shell/header.css +18 -3
- package/src/themes/default/styles/shell/navbar.css +434 -73
- package/src/themes/default/styles/shell/sidebar.css +809 -0
- package/src/themes/default/styles/shell/theme.css +7 -5
- package/src/themes/default/tokens.css +186 -123
- package/src/themes/presets/calico.css +46 -0
- package/src/themes/presets/ginger.css +46 -0
- package/src/themes/presets/index.css +5 -0
- package/src/themes/presets/tabby.css +46 -0
- package/src/themes/presets/torty.css +49 -0
- package/src/themes/presets/tuxedo.css +49 -0
- package/templates/theme/index.css +14 -4
- package/templates/theme/styles/actions/button-group.css +74 -0
- package/templates/theme/styles/actions/button.css +48 -8
- package/templates/theme/styles/actions/toggle-group.css +19 -12
- package/templates/theme/styles/actions/toggle.css +16 -10
- package/templates/theme/styles/base/icon.css +2 -0
- package/templates/theme/styles/base/reset.css +28 -0
- package/templates/theme/styles/base/typography.css +37 -17
- package/templates/theme/styles/disclosure/accordion.css +22 -14
- package/templates/theme/styles/disclosure/collapsible.css +22 -11
- package/templates/theme/styles/display/alert.css +109 -0
- package/templates/theme/styles/display/avatar.css +9 -4
- package/templates/theme/styles/display/badge.css +12 -3
- package/templates/theme/styles/display/card.css +16 -4
- package/templates/theme/styles/display/coverage.css +105 -15
- package/templates/theme/styles/display/list-group.css +84 -0
- package/templates/theme/styles/display/progress-circle.css +3 -2
- package/templates/theme/styles/display/progress.css +8 -5
- package/templates/theme/styles/display/scroll-area.css +15 -0
- package/templates/theme/styles/display/separator.css +4 -4
- package/templates/theme/styles/display/skeleton.css +25 -2
- package/templates/theme/styles/display/spinner.css +1 -1
- package/templates/theme/styles/display/table.css +7 -4
- package/templates/theme/styles/display/virtual-list.css +29 -0
- package/templates/theme/styles/display/virtual-table.css +68 -0
- package/templates/theme/styles/forms/checkbox.css +2 -1
- package/templates/theme/styles/forms/field.css +22 -0
- package/templates/theme/styles/forms/form.css +1 -1
- package/templates/theme/styles/forms/input-group.css +202 -0
- package/templates/theme/styles/forms/input.css +22 -6
- package/templates/theme/styles/forms/label.css +2 -0
- package/templates/theme/styles/forms/radio-group.css +22 -13
- package/templates/theme/styles/forms/select.css +71 -26
- package/templates/theme/styles/forms/slider.css +32 -16
- package/templates/theme/styles/forms/switch.css +2 -1
- package/templates/theme/styles/forms/textarea.css +35 -6
- package/templates/theme/styles/layout/aspect-ratio.css +3 -1
- package/templates/theme/styles/layout/block.css +23 -0
- package/templates/theme/styles/layout/patterns.css +155 -3
- package/templates/theme/styles/layout/responsive-layout.css +140 -121
- package/templates/theme/styles/navigation/breadcrumb.css +22 -8
- package/templates/theme/styles/navigation/menu.css +150 -7
- package/templates/theme/styles/navigation/menubar.css +194 -28
- package/templates/theme/styles/navigation/nav.css +231 -0
- package/templates/theme/styles/navigation/pagination.css +91 -0
- package/templates/theme/styles/overlays/alert-dialog.css +1 -1
- package/templates/theme/styles/overlays/dialog.css +42 -10
- package/templates/theme/styles/overlays/dropdown.css +160 -0
- package/templates/theme/styles/overlays/hover-card.css +28 -3
- package/templates/theme/styles/overlays/popover.css +50 -6
- package/templates/theme/styles/overlays/toast.css +66 -17
- package/templates/theme/styles/overlays/tooltip.css +45 -18
- package/templates/theme/styles/shell/header.css +18 -3
- package/templates/theme/styles/shell/navbar.css +434 -73
- package/templates/theme/styles/shell/sidebar.css +809 -0
- package/templates/theme/styles/shell/theme.css +7 -5
- package/templates/theme/tokens.css +186 -123
- package/dist/_internal/box-layout.js.map +0 -1
- package/dist/_internal/classes.js.map +0 -1
- package/dist/_internal/jsx.js.map +0 -1
- package/dist/_internal/layout.d.ts +0 -9
- package/dist/_internal/layout.js.map +0 -1
- package/dist/_internal/merge-props.js.map +0 -1
- package/dist/accessible-icon/accessible-icon.d.ts +0 -7
- package/dist/accessible-icon/accessible-icon.js +0 -20
- package/dist/accessible-icon/accessible-icon.js.map +0 -1
- package/dist/accessible-icon/accessible-icon.types.d.ts +0 -9
- package/dist/aspect-ratio/aspect-ratio.d.ts +0 -8
- package/dist/aspect-ratio/aspect-ratio.js +0 -36
- package/dist/aspect-ratio/aspect-ratio.js.map +0 -1
- package/dist/aspect-ratio/aspect-ratio.types.d.ts +0 -20
- package/dist/aspect-ratio/index.d.ts +0 -2
- package/dist/badge/badge.d.ts +0 -8
- package/dist/badge/badge.js.map +0 -1
- package/dist/badge/badge.types.d.ts +0 -20
- package/dist/badge/index.d.ts +0 -2
- package/dist/box/box.d.ts +0 -9
- package/dist/box/box.js.map +0 -1
- package/dist/box/box.types.d.ts +0 -71
- package/dist/box/index.d.ts +0 -2
- package/dist/breadcrumb/breadcrumb.d.ts +0 -18
- package/dist/breadcrumb/breadcrumb.js.map +0 -1
- package/dist/breadcrumb/breadcrumb.types.d.ts +0 -64
- package/dist/breadcrumb/index.d.ts +0 -2
- package/dist/card/card.d.ts +0 -12
- package/dist/card/card.js +0 -68
- package/dist/card/card.js.map +0 -1
- package/dist/card/card.types.d.ts +0 -37
- package/dist/card/index.d.ts +0 -2
- package/dist/components/_internal/box-layout.d.ts +0 -7
- package/dist/components/_internal/classes.d.ts +0 -1
- package/dist/components/_internal/jsx.d.ts +0 -8
- package/dist/components/_internal/merge-props.d.ts +0 -1
- package/dist/components/_internal/style.d.ts +0 -1
- package/dist/components/accessible-icon/accessible-icon.d.ts +0 -2
- package/dist/components/accessible-icon/accessible-icon.types.d.ts +0 -5
- package/dist/components/accessible-icon/index.d.ts +0 -2
- package/dist/components/grid/grid.a11y.d.ts +0 -21
- package/dist/components/grid/grid.d.ts +0 -4
- package/dist/components/grid/grid.types.d.ts +0 -37
- package/dist/components/grid/index.d.ts +0 -3
- package/dist/components/header/index.d.ts +0 -3
- package/dist/components/index.d.ts +0 -49
- package/dist/components/index.js +0 -28
- package/dist/components/logos/create-logo.d.ts +0 -5
- package/dist/components/logos/github-logo.d.ts +0 -4
- package/dist/components/logos/google-logo.d.ts +0 -4
- package/dist/components/logos/index.d.ts +0 -5
- package/dist/components/logos/microsoft-logo.d.ts +0 -4
- package/dist/components/logos/types.d.ts +0 -14
- package/dist/components/sidebar-layout/index.d.ts +0 -3
- package/dist/components/sidebar-layout/sidebar-layout.a11y.d.ts +0 -15
- package/dist/components/sidebar-layout/sidebar-layout.d.ts +0 -2
- package/dist/components/sidebar-layout/sidebar-layout.types.d.ts +0 -20
- package/dist/components/topbar-layout/index.d.ts +0 -3
- package/dist/components/topbar-layout/topbar-layout.a11y.d.ts +0 -13
- package/dist/components/topbar-layout/topbar-layout.d.ts +0 -2
- package/dist/components/topbar-layout/topbar-layout.types.d.ts +0 -12
- package/dist/container/container.d.ts +0 -8
- package/dist/container/container.js.map +0 -1
- package/dist/container/container.types.d.ts +0 -28
- package/dist/container/index.d.ts +0 -2
- package/dist/empty-state/empty-state.d.ts +0 -7
- package/dist/empty-state/empty-state.js.map +0 -1
- package/dist/empty-state/empty-state.types.d.ts +0 -13
- package/dist/flex/flex.d.ts +0 -9
- package/dist/flex/flex.js.map +0 -1
- package/dist/flex/flex.types.d.ts +0 -41
- package/dist/flex/index.d.ts +0 -2
- package/dist/grid/grid.d.ts +0 -9
- package/dist/grid/grid.js +0 -115
- package/dist/grid/grid.js.map +0 -1
- package/dist/grid/grid.types.d.ts +0 -40
- package/dist/grid/index.d.ts +0 -2
- package/dist/header/header.d.ts +0 -7
- package/dist/header/header.js.map +0 -1
- package/dist/header/header.types.d.ts +0 -9
- package/dist/inline/index.d.ts +0 -7
- package/dist/inline/index.js.map +0 -1
- package/dist/logos/create-logo.d.ts +0 -1
- package/dist/logos/create-logo.js +0 -75
- package/dist/logos/create-logo.js.map +0 -1
- package/dist/logos/github-logo.d.ts +0 -18
- package/dist/logos/github-logo.js +0 -9
- package/dist/logos/github-logo.js.map +0 -1
- package/dist/logos/google-logo.d.ts +0 -18
- package/dist/logos/google-logo.js +0 -23
- package/dist/logos/google-logo.js.map +0 -1
- package/dist/logos/index.d.ts +0 -4
- package/dist/logos/microsoft-logo.d.ts +0 -18
- package/dist/logos/microsoft-logo.js +0 -35
- package/dist/logos/microsoft-logo.js.map +0 -1
- package/dist/logos/types.d.ts +0 -16
- package/dist/navbar/index.d.ts +0 -2
- package/dist/navbar/navbar.d.ts +0 -12
- package/dist/navbar/navbar.js +0 -73
- package/dist/navbar/navbar.js.map +0 -1
- package/dist/navbar/navbar.types.d.ts +0 -31
- package/dist/section/index.d.ts +0 -2
- package/dist/section/section.d.ts +0 -8
- package/dist/section/section.js.map +0 -1
- package/dist/section/section.types.d.ts +0 -22
- package/dist/separator/index.d.ts +0 -2
- package/dist/separator/separator.d.ts +0 -8
- package/dist/separator/separator.js.map +0 -1
- package/dist/separator/separator.types.d.ts +0 -21
- package/dist/sidebar-layout/index.d.ts +0 -2
- package/dist/sidebar-layout/sidebar-layout.d.ts +0 -7
- package/dist/sidebar-layout/sidebar-layout.js +0 -51
- package/dist/sidebar-layout/sidebar-layout.js.map +0 -1
- package/dist/sidebar-layout/sidebar-layout.types.d.ts +0 -20
- package/dist/skeleton/index.d.ts +0 -2
- package/dist/skeleton/skeleton.d.ts +0 -8
- package/dist/skeleton/skeleton.js.map +0 -1
- package/dist/skeleton/skeleton.types.d.ts +0 -18
- package/dist/spacer/index.d.ts +0 -2
- package/dist/spacer/spacer.d.ts +0 -8
- package/dist/spacer/spacer.js.map +0 -1
- package/dist/spacer/spacer.types.d.ts +0 -25
- package/dist/spinner/index.d.ts +0 -2
- package/dist/spinner/spinner.d.ts +0 -7
- package/dist/spinner/spinner.js.map +0 -1
- package/dist/spinner/spinner.types.d.ts +0 -10
- package/dist/stack/index.d.ts +0 -2
- package/dist/stack/stack.d.ts +0 -8
- package/dist/stack/stack.js.map +0 -1
- package/dist/stack/stack.types.d.ts +0 -21
- package/dist/theme/index.d.ts +0 -1
- package/dist/theme/theme.d.ts +0 -44
- package/dist/theme/theme.js.map +0 -1
- package/dist/topbar-layout/index.d.ts +0 -2
- package/dist/topbar-layout/topbar-layout.d.ts +0 -7
- package/dist/topbar-layout/topbar-layout.js +0 -37
- package/dist/topbar-layout/topbar-layout.js.map +0 -1
- package/dist/topbar-layout/topbar-layout.types.d.ts +0 -13
- package/src/askr-compat.d.ts +0 -110
- package/src/askr-router.d.ts +0 -16
- package/src/components/accessible-icon/accessible-icon.tsx +0 -18
- package/src/components/accessible-icon/accessible-icon.types.ts +0 -5
- package/src/components/accessible-icon/index.ts +0 -2
- package/src/components/grid/grid.a11y.ts +0 -22
- package/src/components/grid/grid.tsx +0 -172
- package/src/components/grid/grid.types.ts +0 -45
- package/src/components/grid/index.ts +0 -10
- package/src/components/index.ts +0 -108
- package/src/components/logos/create-logo.tsx +0 -103
- package/src/components/logos/github-logo.tsx +0 -13
- package/src/components/logos/google-logo.tsx +0 -34
- package/src/components/logos/index.ts +0 -5
- package/src/components/logos/microsoft-logo.tsx +0 -10
- package/src/components/logos/types.ts +0 -24
- package/src/components/sidebar-layout/index.ts +0 -6
- package/src/components/sidebar-layout/sidebar-layout.a11y.ts +0 -16
- package/src/components/sidebar-layout/sidebar-layout.tsx +0 -59
- package/src/components/sidebar-layout/sidebar-layout.types.ts +0 -22
- package/src/components/topbar-layout/index.ts +0 -3
- package/src/components/topbar-layout/topbar-layout.a11y.ts +0 -14
- package/src/components/topbar-layout/topbar-layout.tsx +0 -39
- package/src/components/topbar-layout/topbar-layout.types.ts +0 -13
- package/src/themes/default/styles/layout/dashboard-layout.css +0 -15
- package/src/themes/default/styles/layout/docs-layout.css +0 -10
- package/src/themes/default/styles/layout/sidebar.css +0 -10
- package/src/themes/default/styles/navigation/navigation-menu.css +0 -90
- package/src/themes/default/styles/navigation/tabs.css +0 -61
- package/src/themes/default/styles/overlays/dropdown-menu.css +0 -109
- package/templates/theme/styles/layout/dashboard-layout.css +0 -16
- package/templates/theme/styles/layout/docs-layout.css +0 -11
- package/templates/theme/styles/layout/sidebar.css +0 -11
- package/templates/theme/styles/navigation/navigation-menu.css +0 -90
- package/templates/theme/styles/navigation/tabs.css +0 -61
- package/templates/theme/styles/overlays/dropdown-menu.css +0 -109
- /package/dist/{_internal → components/_internal}/classes.js +0 -0
- /package/dist/{_internal → components/_internal}/jsx.js +0 -0
- /package/dist/{breadcrumb → components/breadcrumb}/breadcrumb.js +0 -0
- /package/dist/{empty-state → components/empty-state}/empty-state.js +0 -0
- /package/dist/{header → components/header}/header.js +0 -0
- /package/dist/{inline → components/inline}/index.js +0 -0
- /package/dist/{separator → components/separator}/separator.js +0 -0
- /package/dist/{skeleton → components/skeleton}/skeleton.js +0 -0
- /package/dist/{spinner → components/spinner}/spinner.js +0 -0
- /package/dist/{stack → components/stack}/stack.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askrjs/themes",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Default theme tokens, styles, and themed layout wrappers for Askr apps.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"askr",
|
|
@@ -36,9 +36,39 @@
|
|
|
36
36
|
"exports": {
|
|
37
37
|
".": "./src/index.css",
|
|
38
38
|
"./default": "./src/themes/default/index.css",
|
|
39
|
-
"./
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
"./presets": "./src/themes/presets/index.css",
|
|
40
|
+
"./cat-presets": "./src/themes/presets/index.css",
|
|
41
|
+
"./theme": {
|
|
42
|
+
"types": "./dist/theme.d.ts",
|
|
43
|
+
"import": "./dist/theme.js"
|
|
44
|
+
},
|
|
45
|
+
"./layouts": {
|
|
46
|
+
"types": "./dist/layouts.d.ts",
|
|
47
|
+
"import": "./dist/layouts.js"
|
|
48
|
+
},
|
|
49
|
+
"./controls": {
|
|
50
|
+
"types": "./dist/controls.d.ts",
|
|
51
|
+
"import": "./dist/controls.js"
|
|
52
|
+
},
|
|
53
|
+
"./surfaces": {
|
|
54
|
+
"types": "./dist/surfaces.d.ts",
|
|
55
|
+
"import": "./dist/surfaces.js"
|
|
56
|
+
},
|
|
57
|
+
"./feedback": {
|
|
58
|
+
"types": "./dist/feedback.d.ts",
|
|
59
|
+
"import": "./dist/feedback.js"
|
|
60
|
+
},
|
|
61
|
+
"./shells": {
|
|
62
|
+
"types": "./dist/shells.d.ts",
|
|
63
|
+
"import": "./dist/shells.js"
|
|
64
|
+
},
|
|
65
|
+
"./navs": {
|
|
66
|
+
"types": "./dist/navs.d.ts",
|
|
67
|
+
"import": "./dist/navs.js"
|
|
68
|
+
},
|
|
69
|
+
"./overlays": {
|
|
70
|
+
"types": "./dist/overlays.d.ts",
|
|
71
|
+
"import": "./dist/overlays.js"
|
|
42
72
|
},
|
|
43
73
|
"./default/card.css": "./src/themes/default/styles/display/card.css",
|
|
44
74
|
"./default/tokens.css": "./src/themes/default/tokens.css",
|
|
@@ -48,20 +78,26 @@
|
|
|
48
78
|
"./default/badge.css": "./src/themes/default/styles/display/badge.css",
|
|
49
79
|
"./default/breadcrumb.css": "./src/themes/default/styles/navigation/breadcrumb.css",
|
|
50
80
|
"./default/button.css": "./src/themes/default/styles/actions/button.css",
|
|
81
|
+
"./default/button-group.css": "./src/themes/default/styles/actions/button-group.css",
|
|
82
|
+
"./default/nav.css": "./src/themes/default/styles/navigation/nav.css",
|
|
83
|
+
"./default/block.css": "./src/themes/default/styles/layout/block.css",
|
|
51
84
|
"./default/checkbox.css": "./src/themes/default/styles/forms/checkbox.css",
|
|
52
85
|
"./default/collapsible.css": "./src/themes/default/styles/disclosure/collapsible.css",
|
|
86
|
+
"./default/alert.css": "./src/themes/default/styles/display/alert.css",
|
|
53
87
|
"./default/coverage.css": "./src/themes/default/styles/display/coverage.css",
|
|
54
88
|
"./default/table.css": "./src/themes/default/styles/display/table.css",
|
|
55
|
-
"./default/dashboard-layout.css": "./src/themes/default/styles/layout/dashboard-layout.css",
|
|
56
89
|
"./default/dialog.css": "./src/themes/default/styles/overlays/dialog.css",
|
|
57
|
-
"./default/
|
|
58
|
-
"./default/dropdown-menu.css": "./src/themes/default/styles/overlays/dropdown-menu.css",
|
|
90
|
+
"./default/dropdown.css": "./src/themes/default/styles/overlays/dropdown.css",
|
|
59
91
|
"./default/input.css": "./src/themes/default/styles/forms/input.css",
|
|
92
|
+
"./default/input-group.css": "./src/themes/default/styles/forms/input-group.css",
|
|
93
|
+
"./default/field.css": "./src/themes/default/styles/forms/field.css",
|
|
60
94
|
"./default/label.css": "./src/themes/default/styles/forms/label.css",
|
|
95
|
+
"./default/list-group.css": "./src/themes/default/styles/display/list-group.css",
|
|
96
|
+
"./default/virtual-list.css": "./src/themes/default/styles/display/virtual-list.css",
|
|
61
97
|
"./default/menu.css": "./src/themes/default/styles/navigation/menu.css",
|
|
62
98
|
"./default/menubar.css": "./src/themes/default/styles/navigation/menubar.css",
|
|
99
|
+
"./default/pagination.css": "./src/themes/default/styles/navigation/pagination.css",
|
|
63
100
|
"./default/navbar.css": "./src/themes/default/styles/shell/navbar.css",
|
|
64
|
-
"./default/navigation-menu.css": "./src/themes/default/styles/navigation/navigation-menu.css",
|
|
65
101
|
"./default/patterns.css": "./src/themes/default/styles/layout/patterns.css",
|
|
66
102
|
"./default/popover.css": "./src/themes/default/styles/overlays/popover.css",
|
|
67
103
|
"./default/progress.css": "./src/themes/default/styles/display/progress.css",
|
|
@@ -70,17 +106,16 @@
|
|
|
70
106
|
"./default/responsive-layout.css": "./src/themes/default/styles/layout/responsive-layout.css",
|
|
71
107
|
"./default/select.css": "./src/themes/default/styles/forms/select.css",
|
|
72
108
|
"./default/separator.css": "./src/themes/default/styles/display/separator.css",
|
|
73
|
-
"./default/sidebar.css": "./src/themes/default/styles/layout/sidebar.css",
|
|
74
109
|
"./default/skeleton.css": "./src/themes/default/styles/display/skeleton.css",
|
|
75
110
|
"./default/slider.css": "./src/themes/default/styles/forms/slider.css",
|
|
76
111
|
"./default/spinner.css": "./src/themes/default/styles/display/spinner.css",
|
|
77
112
|
"./default/switch.css": "./src/themes/default/styles/forms/switch.css",
|
|
78
|
-
"./default/tabs.css": "./src/themes/default/styles/navigation/tabs.css",
|
|
79
113
|
"./default/textarea.css": "./src/themes/default/styles/forms/textarea.css",
|
|
80
114
|
"./default/toast.css": "./src/themes/default/styles/overlays/toast.css",
|
|
81
115
|
"./default/toggle.css": "./src/themes/default/styles/actions/toggle.css",
|
|
82
116
|
"./default/toggle-group.css": "./src/themes/default/styles/actions/toggle-group.css",
|
|
83
117
|
"./default/tooltip.css": "./src/themes/default/styles/overlays/tooltip.css",
|
|
118
|
+
"./default/virtual-table.css": "./src/themes/default/styles/display/virtual-table.css",
|
|
84
119
|
"./templates/*": "./templates/*"
|
|
85
120
|
},
|
|
86
121
|
"publishConfig": {
|
|
@@ -88,28 +123,32 @@
|
|
|
88
123
|
},
|
|
89
124
|
"scripts": {
|
|
90
125
|
"new:theme": "node ./scripts/new-theme.js",
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
126
|
+
"clean": "npx --yes rimraf dist node_modules",
|
|
127
|
+
"bench": "npm run bench:tier2",
|
|
128
|
+
"bench:tier1": "cross-env NODE_ENV=production vp test bench --run --reporter=default --config vitest.bench.tier1.config.ts",
|
|
129
|
+
"bench:tier2": "cross-env NODE_ENV=production vp test bench --run --reporter=default --config vitest.bench.tier2.config.ts",
|
|
130
|
+
"bench:tier3": "cross-env NODE_ENV=production vp test bench --run --reporter=default --config vitest.bench.tier3.config.ts",
|
|
131
|
+
"bench:tier4": "cross-env NODE_ENV=production vp test bench --run --reporter=default --config vitest.bench.tier4.config.ts",
|
|
132
|
+
"test": "npm run test:unit && npm run test:jsdom && npm run test:browser",
|
|
133
|
+
"test:unit": "vp test run -c vitest.test.unit.config.ts",
|
|
134
|
+
"test:jsdom": "cross-env NODE_ENV=production vp test run -c vitest.test.jsdom.config.ts",
|
|
135
|
+
"test:browser": "vp test run -c vitest.test.browser.config.ts --mode production",
|
|
97
136
|
"fmt": "vp fmt .",
|
|
98
137
|
"lint": "vp lint .",
|
|
99
|
-
"build
|
|
100
|
-
"build": "vp pack && npm run build:types && npm run verify:token-contract && npm run verify:responsive && npm run verify:slots",
|
|
138
|
+
"build": "vp pack",
|
|
101
139
|
"prepublishOnly": "npm run build"
|
|
102
140
|
},
|
|
103
141
|
"devDependencies": {
|
|
104
|
-
"@askrjs/askr": "^0.0.
|
|
105
|
-
"@askrjs/ui": "^0.0.
|
|
142
|
+
"@askrjs/askr": "^0.0.37",
|
|
143
|
+
"@askrjs/ui": "^0.0.7",
|
|
106
144
|
"@askrjs/vite": "^0.0.2",
|
|
107
|
-
"@tsdown/css": "0.
|
|
108
|
-
"@types/node": "^25.
|
|
145
|
+
"@tsdown/css": "0.22.0",
|
|
146
|
+
"@types/node": "^25.9.1",
|
|
147
|
+
"cross-env": "^10.1.0",
|
|
109
148
|
"jsdom": "^29.1.1",
|
|
110
|
-
"playwright": "^1.
|
|
149
|
+
"playwright": "^1.60.0",
|
|
111
150
|
"typescript": "^6.0.3",
|
|
112
|
-
"vite-plus": "^0.1.
|
|
151
|
+
"vite-plus": "^0.1.22"
|
|
113
152
|
},
|
|
114
153
|
"peerDependencies": {
|
|
115
154
|
"@askrjs/askr": ">=0.0.1 <0.1.0",
|
|
@@ -117,5 +156,6 @@
|
|
|
117
156
|
},
|
|
118
157
|
"engines": {
|
|
119
158
|
"node": ">=18"
|
|
120
|
-
}
|
|
159
|
+
},
|
|
160
|
+
"packageManager": "npm@11.15.0"
|
|
121
161
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { mergeLayoutStyles, resolveSpaceValue, setResponsiveStyleVar } from "./layout";
|
|
2
|
+
import { styleDeclarationsToClass } from "./style";
|
|
2
3
|
import type { BoxLayoutOwnProps } from "../box/box.types";
|
|
3
4
|
|
|
4
5
|
const SPACE_PROP_KEYS = new Set([
|
|
@@ -154,3 +155,10 @@ export function withBoxLayoutStyle(
|
|
|
154
155
|
): string | undefined {
|
|
155
156
|
return mergeLayoutStyles(styles, userStyle);
|
|
156
157
|
}
|
|
158
|
+
|
|
159
|
+
export function withBoxLayoutClass(
|
|
160
|
+
styles: Record<string, string | number>,
|
|
161
|
+
userStyle: unknown,
|
|
162
|
+
): string | undefined {
|
|
163
|
+
return styleDeclarationsToClass(mergeLayoutStyles(styles, userStyle));
|
|
164
|
+
}
|
|
@@ -75,6 +75,86 @@ export function collectJsxElements(
|
|
|
75
75
|
return result;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
function serializeArray(value: readonly unknown[]): string {
|
|
79
|
+
if (value.length === 0) {
|
|
80
|
+
return "";
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (value.length === 1) {
|
|
84
|
+
return serializeForId(value[0]);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (value.length === 2) {
|
|
88
|
+
return `${serializeForId(value[0])}|${serializeForId(value[1])}`;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
let result = serializeForId(value[0]);
|
|
92
|
+
|
|
93
|
+
for (let index = 1; index < value.length; index += 1) {
|
|
94
|
+
result += `|${serializeForId(value[index])}`;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function serializeSerializableProps(props: Record<string, unknown>): string {
|
|
101
|
+
const keys: string[] = [];
|
|
102
|
+
|
|
103
|
+
for (const key of Object.keys(props)) {
|
|
104
|
+
if (key === "children" || key === "ref" || key.startsWith("on")) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const entryValue = props[key];
|
|
109
|
+
|
|
110
|
+
if (
|
|
111
|
+
typeof entryValue === "string" ||
|
|
112
|
+
typeof entryValue === "number" ||
|
|
113
|
+
typeof entryValue === "boolean"
|
|
114
|
+
) {
|
|
115
|
+
keys.push(key);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (keys.length === 0) {
|
|
120
|
+
return "";
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (keys.length === 1) {
|
|
124
|
+
const key = keys[0];
|
|
125
|
+
|
|
126
|
+
return `${key}:${String(props[key])}`;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (keys.length === 2) {
|
|
130
|
+
if (keys[1].localeCompare(keys[0]) < 0) {
|
|
131
|
+
[keys[0], keys[1]] = [keys[1], keys[0]];
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return `${keys[0]}:${String(props[keys[0]])},${keys[1]}:${String(props[keys[1]])}`;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
keys.sort((left, right) => left.localeCompare(right));
|
|
138
|
+
|
|
139
|
+
let result = `${keys[0]}:${String(props[keys[0]])}`;
|
|
140
|
+
|
|
141
|
+
for (let index = 1; index < keys.length; index += 1) {
|
|
142
|
+
const key = keys[index];
|
|
143
|
+
result += `,${key}:${String(props[key])}`;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function hasEmptyJsxChildren(children: unknown): boolean {
|
|
150
|
+
return (
|
|
151
|
+
children === undefined ||
|
|
152
|
+
children === null ||
|
|
153
|
+
typeof children === "boolean" ||
|
|
154
|
+
(Array.isArray(children) && children.length === 0)
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
78
158
|
export function extractTextContent(value: unknown): string {
|
|
79
159
|
if (Array.isArray(value)) {
|
|
80
160
|
return value.map((entry) => extractTextContent(entry)).join("");
|
|
@@ -102,7 +182,7 @@ export function extractTextContent(value: unknown): string {
|
|
|
102
182
|
|
|
103
183
|
export function serializeForId(value: unknown): string {
|
|
104
184
|
if (Array.isArray(value)) {
|
|
105
|
-
return value
|
|
185
|
+
return serializeArray(value);
|
|
106
186
|
}
|
|
107
187
|
|
|
108
188
|
if (value === undefined || value === null || typeof value === "boolean") {
|
|
@@ -120,21 +200,16 @@ export function serializeForId(value: unknown): string {
|
|
|
120
200
|
: typeof value.type === "function"
|
|
121
201
|
? value.type.name || "component"
|
|
122
202
|
: "component";
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
.sort(([left], [right]) => left.localeCompare(right))
|
|
134
|
-
.map(([key, entryValue]) => `${key}:${String(entryValue)}`)
|
|
135
|
-
.join(",");
|
|
136
|
-
|
|
137
|
-
return `${typeName}[${propEntries}](${serializeForId(value.props?.children)})`;
|
|
203
|
+
const props = (value.props ?? {}) as Record<string, unknown>;
|
|
204
|
+
const propEntries = serializeSerializableProps(props);
|
|
205
|
+
const children = props.children;
|
|
206
|
+
const propsPrefix = propEntries === "" ? `${typeName}[]` : `${typeName}[${propEntries}]`;
|
|
207
|
+
|
|
208
|
+
if (hasEmptyJsxChildren(children)) {
|
|
209
|
+
return `${propsPrefix}()`;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return `${propsPrefix}(${serializeForId(children)})`;
|
|
138
213
|
}
|
|
139
214
|
|
|
140
215
|
return typeof value;
|
|
@@ -49,8 +49,8 @@ const SECTION_SIZE_MAP: Record<string, string> = {
|
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
|
-
* Returns true when `value` is a concrete CSS length/size that can be
|
|
53
|
-
*
|
|
52
|
+
* Returns true when `value` is a concrete CSS length/size that can be serialized
|
|
53
|
+
* into a CSS declaration without token translation.
|
|
54
54
|
*/
|
|
55
55
|
export function isCssLength(value: unknown): value is string {
|
|
56
56
|
if (typeof value !== "string") return false;
|
|
@@ -151,19 +151,6 @@ export function resolveSectionSizeValue(value: string): string {
|
|
|
151
151
|
return SECTION_SIZE_MAP[trimmed] ?? trimmed;
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
export function resolveGridTrackValue(value: string | number): string {
|
|
155
|
-
if (typeof value === "number") {
|
|
156
|
-
return `repeat(${value}, minmax(0, 1fr))`;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const trimmed = value.trim();
|
|
160
|
-
if (/^\d+$/.test(trimmed)) {
|
|
161
|
-
return `repeat(${trimmed}, minmax(0, 1fr))`;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return trimmed;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
154
|
export function resolveJustifyValue(value: string): string {
|
|
168
155
|
const trimmed = value.trim();
|
|
169
156
|
if (trimmed === "between") return "space-between";
|
|
@@ -189,8 +176,8 @@ export function resolveInlineAlignValue(value: "left" | "center" | "right"): {
|
|
|
189
176
|
}
|
|
190
177
|
|
|
191
178
|
/**
|
|
192
|
-
* Merges a record of computed layout
|
|
193
|
-
* The user's
|
|
179
|
+
* Merges a record of computed layout declarations with a user-supplied style
|
|
180
|
+
* value. The user's declarations take precedence for conflicting keys.
|
|
194
181
|
*/
|
|
195
182
|
export function mergeLayoutStyles(
|
|
196
183
|
layout: Record<string, string | number>,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { classes } from "./classes";
|
|
2
|
+
|
|
1
3
|
type Handler = (...args: readonly unknown[]) => void;
|
|
2
4
|
type Ref<T> = { current: T | null } | ((value: T | null) => void) | null | undefined;
|
|
3
5
|
|
|
@@ -16,6 +18,8 @@ function isDefaultPrevented(value: unknown): value is { defaultPrevented: true }
|
|
|
16
18
|
|
|
17
19
|
function composeHandlers(first: Handler, second: Handler): Handler {
|
|
18
20
|
return (...args) => {
|
|
21
|
+
// Internal composition runs first so wrappers can normalize state or stop
|
|
22
|
+
// follow-on handlers when the event has already been consumed.
|
|
19
23
|
first(...args);
|
|
20
24
|
|
|
21
25
|
if (isDefaultPrevented(args[0])) {
|
|
@@ -82,6 +86,11 @@ export function mergeProps<TBase extends object, TInjected extends object>(
|
|
|
82
86
|
continue;
|
|
83
87
|
}
|
|
84
88
|
|
|
89
|
+
if (key === "class") {
|
|
90
|
+
(out as Record<string, unknown>)[key] = classes(injectedValue, baseValue);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
|
|
85
94
|
(out as Record<string, unknown>)[key] = baseValue;
|
|
86
95
|
}
|
|
87
96
|
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
function normalizePathname(pathname: string): string {
|
|
2
|
+
return pathname.endsWith("/") && pathname !== "/" ? pathname.slice(0, -1) : pathname;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
function getWindowLocation(): Location | null {
|
|
6
|
+
return typeof window === "undefined" ? null : window.location;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function resolvePathname(href: string): string | null {
|
|
10
|
+
if (href.startsWith("#")) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const location = getWindowLocation();
|
|
15
|
+
|
|
16
|
+
if (href.startsWith("/") && !href.startsWith("//")) {
|
|
17
|
+
const queryIndex = href.indexOf("?");
|
|
18
|
+
const hashIndex = href.indexOf("#");
|
|
19
|
+
let pathEnd = href.length;
|
|
20
|
+
|
|
21
|
+
if (queryIndex !== -1) {
|
|
22
|
+
pathEnd = Math.min(pathEnd, queryIndex);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (hashIndex !== -1) {
|
|
26
|
+
pathEnd = Math.min(pathEnd, hashIndex);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const pathname = normalizePathname(href.slice(0, pathEnd));
|
|
30
|
+
|
|
31
|
+
if (location && hashIndex !== -1) {
|
|
32
|
+
const searchEnd = hashIndex === -1 ? href.length : hashIndex;
|
|
33
|
+
const search = queryIndex === -1 ? "" : href.slice(queryIndex, searchEnd);
|
|
34
|
+
const locationPathname = normalizePathname(location.pathname || "/");
|
|
35
|
+
|
|
36
|
+
if (pathname === locationPathname && search === location.search) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return pathname;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const baseHref = location?.href ?? "http://localhost/";
|
|
45
|
+
const baseOrigin = location?.origin ?? "http://localhost";
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
const target = new URL(href, baseHref);
|
|
49
|
+
|
|
50
|
+
if (target.origin !== baseOrigin) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (
|
|
55
|
+
location &&
|
|
56
|
+
target.hash &&
|
|
57
|
+
normalizePathname(target.pathname) === normalizePathname(location.pathname || "/") &&
|
|
58
|
+
target.search === location.search
|
|
59
|
+
) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return normalizePathname(target.pathname);
|
|
64
|
+
} catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -16,3 +16,54 @@ export function mergeCssVar(style: unknown, name: string, value: string): string
|
|
|
16
16
|
|
|
17
17
|
return decl;
|
|
18
18
|
}
|
|
19
|
+
|
|
20
|
+
const STYLE_REGISTRY_ATTR = "data-askr-style-registry";
|
|
21
|
+
const STYLE_CLASS_PREFIX = "ak-style-";
|
|
22
|
+
|
|
23
|
+
const styleClassCache = new Map<string, string>();
|
|
24
|
+
const registeredDeclarations = new Set<string>();
|
|
25
|
+
|
|
26
|
+
let nextStyleClassId = 0;
|
|
27
|
+
|
|
28
|
+
function ensureStyleElement(): HTMLStyleElement | null {
|
|
29
|
+
if (typeof document === "undefined") return null;
|
|
30
|
+
|
|
31
|
+
const existing = document.querySelector(`style[${STYLE_REGISTRY_ATTR}]`);
|
|
32
|
+
if (existing instanceof HTMLStyleElement) {
|
|
33
|
+
return existing;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const styleElement = document.createElement("style");
|
|
37
|
+
styleElement.setAttribute(STYLE_REGISTRY_ATTR, "true");
|
|
38
|
+
(document.head ?? document.documentElement).append(styleElement);
|
|
39
|
+
|
|
40
|
+
return styleElement;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function normalizeDeclarations(declarations: string): string {
|
|
44
|
+
return declarations.trim().replace(/;+\s*$/, "");
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function styleDeclarationsToClass(declarations: string | undefined): string | undefined {
|
|
48
|
+
if (typeof declarations !== "string") return undefined;
|
|
49
|
+
|
|
50
|
+
const normalized = normalizeDeclarations(declarations);
|
|
51
|
+
if (!normalized) return undefined;
|
|
52
|
+
|
|
53
|
+
let className = styleClassCache.get(normalized);
|
|
54
|
+
if (className === undefined) {
|
|
55
|
+
className = `${STYLE_CLASS_PREFIX}${++nextStyleClassId}`;
|
|
56
|
+
styleClassCache.set(normalized, className);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (!registeredDeclarations.has(normalized)) {
|
|
60
|
+
const styleElement = ensureStyleElement();
|
|
61
|
+
if (styleElement) {
|
|
62
|
+
const rule = `.${className}{${normalized}}`;
|
|
63
|
+
styleElement.textContent = `${styleElement.textContent ?? ""}\n${rule}`;
|
|
64
|
+
registeredDeclarations.add(normalized);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return className;
|
|
69
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { classes } from "../_internal/classes";
|
|
2
|
+
import { Close } from "../close";
|
|
3
|
+
import type { AlertProps } from "./alert.types";
|
|
4
|
+
|
|
5
|
+
function resolveAlertRole(variant: AlertProps["variant"] | undefined): "alert" | "status" {
|
|
6
|
+
if (variant === "danger" || variant === "warning") {
|
|
7
|
+
return "alert";
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return "status";
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function Alert(props: AlertProps): JSX.Element {
|
|
14
|
+
const {
|
|
15
|
+
actions,
|
|
16
|
+
children,
|
|
17
|
+
class: className,
|
|
18
|
+
description,
|
|
19
|
+
dismissLabel = "Dismiss alert",
|
|
20
|
+
dismissible = false,
|
|
21
|
+
icon,
|
|
22
|
+
onDismiss,
|
|
23
|
+
ref,
|
|
24
|
+
title,
|
|
25
|
+
titleAs: TitleTag = "h3",
|
|
26
|
+
variant = "default",
|
|
27
|
+
role,
|
|
28
|
+
...rest
|
|
29
|
+
} = props;
|
|
30
|
+
const shouldRenderDismiss = dismissible && onDismiss !== undefined;
|
|
31
|
+
const resolvedRole = role ?? resolveAlertRole(variant);
|
|
32
|
+
const hasVariant = variant !== "default";
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div
|
|
36
|
+
{...rest}
|
|
37
|
+
ref={ref}
|
|
38
|
+
class={classes(
|
|
39
|
+
"alert",
|
|
40
|
+
hasVariant ? `alert-${variant}` : undefined,
|
|
41
|
+
shouldRenderDismiss ? "alert-dismissible" : undefined,
|
|
42
|
+
className,
|
|
43
|
+
)}
|
|
44
|
+
data-dismissible={shouldRenderDismiss ? "true" : undefined}
|
|
45
|
+
data-slot="alert"
|
|
46
|
+
data-variant={hasVariant ? variant : undefined}
|
|
47
|
+
role={resolvedRole}
|
|
48
|
+
>
|
|
49
|
+
{icon !== undefined ? (
|
|
50
|
+
<div aria-hidden="true" class="alert-icon" data-slot="alert-icon">
|
|
51
|
+
{icon}
|
|
52
|
+
</div>
|
|
53
|
+
) : null}
|
|
54
|
+
|
|
55
|
+
<div class="alert-content" data-slot="alert-content">
|
|
56
|
+
{title !== undefined ? (
|
|
57
|
+
<TitleTag class="alert-title" data-slot="alert-title">
|
|
58
|
+
{title}
|
|
59
|
+
</TitleTag>
|
|
60
|
+
) : null}
|
|
61
|
+
|
|
62
|
+
{description !== undefined ? (
|
|
63
|
+
<p class="alert-description" data-slot="alert-description">
|
|
64
|
+
{description}
|
|
65
|
+
</p>
|
|
66
|
+
) : null}
|
|
67
|
+
|
|
68
|
+
{children}
|
|
69
|
+
|
|
70
|
+
{actions !== undefined ? (
|
|
71
|
+
<div class="alert-actions" data-slot="alert-actions">
|
|
72
|
+
{actions}
|
|
73
|
+
</div>
|
|
74
|
+
) : null}
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
{shouldRenderDismiss ? (
|
|
78
|
+
<div class="alert-close" data-slot="alert-close">
|
|
79
|
+
<Close label={dismissLabel} onPress={onDismiss} />
|
|
80
|
+
</div>
|
|
81
|
+
) : null}
|
|
82
|
+
</div>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Ref } from "@askrjs/askr/foundations/utilities";
|
|
2
|
+
|
|
3
|
+
export type AlertVariant = "default" | "info" | "success" | "warning" | "danger";
|
|
4
|
+
export type AlertHeadingTag = "h2" | "h3" | "h4" | "h5" | "h6";
|
|
5
|
+
|
|
6
|
+
type DivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref">;
|
|
7
|
+
|
|
8
|
+
export type AlertProps = DivProps & {
|
|
9
|
+
actions?: unknown;
|
|
10
|
+
children?: unknown;
|
|
11
|
+
description?: unknown;
|
|
12
|
+
dismissLabel?: string;
|
|
13
|
+
dismissible?: boolean;
|
|
14
|
+
icon?: unknown;
|
|
15
|
+
onDismiss?: () => void;
|
|
16
|
+
title?: unknown;
|
|
17
|
+
titleAs?: AlertHeadingTag;
|
|
18
|
+
variant?: AlertVariant;
|
|
19
|
+
ref?: Ref<HTMLDivElement>;
|
|
20
|
+
};
|
|
@@ -1,35 +1,15 @@
|
|
|
1
1
|
import { Slot } from "@askrjs/askr/foundations";
|
|
2
2
|
import { mergeProps } from "../_internal/merge-props";
|
|
3
|
+
import { mergeLayoutStyles } from "../_internal/layout";
|
|
4
|
+
import { styleDeclarationsToClass } from "../_internal/style";
|
|
3
5
|
import type { AspectRatioAsChildProps, AspectRatioProps } from "./aspect-ratio.types";
|
|
4
6
|
|
|
5
|
-
function serializeStyle(base: Record<string, string | number>, user: unknown): string {
|
|
6
|
-
const merged: Record<string, unknown> = { ...base };
|
|
7
|
-
|
|
8
|
-
if (user && typeof user === "object") {
|
|
9
|
-
Object.assign(merged, user as Record<string, unknown>);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (typeof user === "string" && user.trim()) {
|
|
13
|
-
return `${Object.entries(merged)
|
|
14
|
-
.filter(([, value]) => value !== undefined && value !== null)
|
|
15
|
-
.map(([key, value]) => key.replace(/([A-Z])/g, "-$1").toLowerCase() + ":" + String(value))
|
|
16
|
-
.join(";")};${user.trim()}`;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return Object.entries(merged)
|
|
20
|
-
.filter(([, value]) => value !== undefined && value !== null)
|
|
21
|
-
.map(([key, value]) => key.replace(/([A-Z])/g, "-$1").toLowerCase() + ":" + String(value))
|
|
22
|
-
.join(";");
|
|
23
|
-
}
|
|
24
|
-
|
|
25
7
|
export function AspectRatio(props: AspectRatioProps): JSX.Element;
|
|
26
8
|
export function AspectRatio(props: AspectRatioAsChildProps): JSX.Element;
|
|
27
9
|
export function AspectRatio(props: AspectRatioProps | AspectRatioAsChildProps) {
|
|
28
10
|
const { asChild, children, ratio = 1, ref, style, ...rest } = props;
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
"data-slot": "aspect-ratio",
|
|
32
|
-
style: serializeStyle(
|
|
11
|
+
const layoutClass = styleDeclarationsToClass(
|
|
12
|
+
mergeLayoutStyles(
|
|
33
13
|
{
|
|
34
14
|
display: "block",
|
|
35
15
|
width: "100%",
|
|
@@ -38,6 +18,12 @@ export function AspectRatio(props: AspectRatioProps | AspectRatioAsChildProps) {
|
|
|
38
18
|
},
|
|
39
19
|
style,
|
|
40
20
|
),
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
const finalProps = mergeProps(rest, {
|
|
24
|
+
ref,
|
|
25
|
+
"data-slot": "aspect-ratio",
|
|
26
|
+
...(layoutClass ? { class: layoutClass } : {}),
|
|
41
27
|
});
|
|
42
28
|
|
|
43
29
|
if (asChild) {
|