@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
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { classes } from "../_internal/classes.js";
|
|
2
|
+
import { mergeProps } from "../_internal/merge-props.js";
|
|
3
|
+
import { jsx, jsxs } from "@askrjs/askr/jsx-runtime";
|
|
4
|
+
//#region src/components/shell/shell-panel.tsx
|
|
5
|
+
function renderShellPanel(props) {
|
|
6
|
+
const { active, brand, children, className, collapseLabel, dataOrientation, onClose, open, panelId, prefix, ref, rest } = props;
|
|
7
|
+
if (active && !open) return null;
|
|
8
|
+
const panelClass = `${prefix}-panel`;
|
|
9
|
+
const headerClass = `${prefix}-panel-header`;
|
|
10
|
+
const closeClass = `${prefix}-panel-close`;
|
|
11
|
+
const headerSlot = `${prefix}-panel-header`;
|
|
12
|
+
const closeSlot = `${prefix}-panel-close`;
|
|
13
|
+
const finalProps = mergeProps(rest, {
|
|
14
|
+
ref,
|
|
15
|
+
class: classes(panelClass, className),
|
|
16
|
+
"aria-label": active ? collapseLabel : rest["aria-label"],
|
|
17
|
+
"aria-modal": active ? "true" : rest["aria-modal"],
|
|
18
|
+
"data-slot": panelClass,
|
|
19
|
+
"data-state": active ? open ? "open" : "closed" : "open",
|
|
20
|
+
id: panelId,
|
|
21
|
+
role: rest.role,
|
|
22
|
+
tabIndex: active ? -1 : rest.tabIndex,
|
|
23
|
+
...dataOrientation !== void 0 ? { "data-orientation": dataOrientation } : {}
|
|
24
|
+
});
|
|
25
|
+
if (active) {
|
|
26
|
+
finalProps.role = "dialog";
|
|
27
|
+
finalProps["aria-modal"] = "true";
|
|
28
|
+
finalProps["aria-label"] = collapseLabel;
|
|
29
|
+
finalProps.tabIndex = -1;
|
|
30
|
+
finalProps.id = panelId;
|
|
31
|
+
}
|
|
32
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
33
|
+
...finalProps,
|
|
34
|
+
children: [active ? /* @__PURE__ */ jsxs("div", {
|
|
35
|
+
class: headerClass,
|
|
36
|
+
"data-slot": headerSlot,
|
|
37
|
+
children: [brand, /* @__PURE__ */ jsx("button", {
|
|
38
|
+
"aria-label": `Close ${collapseLabel}`,
|
|
39
|
+
class: closeClass,
|
|
40
|
+
"data-slot": closeSlot,
|
|
41
|
+
type: "button",
|
|
42
|
+
onClick: () => onClose(),
|
|
43
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
44
|
+
"aria-hidden": "true",
|
|
45
|
+
children: "x"
|
|
46
|
+
})
|
|
47
|
+
})]
|
|
48
|
+
}) : null, children]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { renderShellPanel };
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=shell-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-panel.js","names":[],"sources":["../../../src/components/shell/shell-panel.tsx"],"sourcesContent":["import { classes } from \"../_internal/classes\";\nimport { mergeProps } from \"../_internal/merge-props\";\n\nexport type ShellPanelRenderProps = {\n active: boolean;\n brand?: unknown;\n children?: unknown;\n className?: unknown;\n collapseLabel: string;\n dataOrientation?: string;\n onClose: () => void;\n open: boolean;\n panelId?: string;\n prefix: \"navbar\" | \"sidebar\";\n ref?: unknown;\n rest: Record<string, unknown>;\n};\n\nexport function renderShellPanel(props: ShellPanelRenderProps): JSX.Element | null {\n const {\n active,\n brand,\n children,\n className,\n collapseLabel,\n dataOrientation,\n onClose,\n open,\n panelId,\n prefix,\n ref,\n rest,\n } = props;\n\n if (active && !open) {\n return null;\n }\n\n const panelClass = `${prefix}-panel`;\n const headerClass = `${prefix}-panel-header`;\n const closeClass = `${prefix}-panel-close`;\n const headerSlot = `${prefix}-panel-header`;\n const closeSlot = `${prefix}-panel-close`;\n\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(panelClass, className),\n \"aria-label\": active ? collapseLabel : rest[\"aria-label\"],\n \"aria-modal\": active ? \"true\" : rest[\"aria-modal\"],\n \"data-slot\": panelClass,\n \"data-state\": active ? (open ? \"open\" : \"closed\") : \"open\",\n id: panelId,\n role: rest.role,\n tabIndex: active ? -1 : rest.tabIndex,\n ...(dataOrientation !== undefined ? { \"data-orientation\": dataOrientation } : {}),\n }) as Record<string, unknown>;\n\n if (active) {\n finalProps.role = \"dialog\";\n finalProps[\"aria-modal\"] = \"true\";\n finalProps[\"aria-label\"] = collapseLabel;\n finalProps.tabIndex = -1;\n finalProps.id = panelId;\n }\n\n return (\n <div {...finalProps}>\n {active ? (\n <div class={headerClass} data-slot={headerSlot}>\n {brand}\n <button\n aria-label={`Close ${collapseLabel}`}\n class={closeClass}\n data-slot={closeSlot}\n type=\"button\"\n onClick={() => onClose()}\n >\n <span aria-hidden=\"true\">x</span>\n </button>\n </div>\n ) : null}\n {children}\n </div>\n );\n}\n"],"mappings":";;;;AAkBA,SAAgB,iBAAiB,OAAkD;CACjF,MAAM,EACJ,QACA,OACA,UACA,WACA,eACA,iBACA,SACA,MACA,SACA,QACA,KACA,SACE;CAEJ,IAAI,UAAU,CAAC,MACb,OAAO;CAGT,MAAM,aAAa,GAAG,OAAO;CAC7B,MAAM,cAAc,GAAG,OAAO;CAC9B,MAAM,aAAa,GAAG,OAAO;CAC7B,MAAM,aAAa,GAAG,OAAO;CAC7B,MAAM,YAAY,GAAG,OAAO;CAE5B,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,YAAY,UAAU;EACrC,cAAc,SAAS,gBAAgB,KAAK;EAC5C,cAAc,SAAS,SAAS,KAAK;EACrC,aAAa;EACb,cAAc,SAAU,OAAO,SAAS,WAAY;EACpD,IAAI;EACJ,MAAM,KAAK;EACX,UAAU,SAAS,KAAK,KAAK;EAC7B,GAAI,oBAAoB,KAAA,IAAY,EAAE,oBAAoB,iBAAiB,GAAG,EAAE;EACjF,CAAC;CAEF,IAAI,QAAQ;EACV,WAAW,OAAO;EAClB,WAAW,gBAAgB;EAC3B,WAAW,gBAAgB;EAC3B,WAAW,WAAW;EACtB,WAAW,KAAK;;CAGlB,OACE,qBAAC,OAAD;EAAK,GAAI;YAAT,CACG,SACC,qBAAC,OAAD;GAAK,OAAO;GAAa,aAAW;aAApC,CACG,OACD,oBAAC,UAAD;IACE,cAAY,SAAS;IACrB,OAAO;IACP,aAAW;IACX,MAAK;IACL,eAAe,SAAS;cAExB,oBAAC,QAAD;KAAM,eAAY;eAAO;KAAQ,CAAA;IAC1B,CAAA,CACL;OACJ,MACH,SACG"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { isJsxElement, toChildArray } from "../_internal/jsx.js";
|
|
2
|
+
import { jsx } from "@askrjs/askr/jsx-runtime";
|
|
3
|
+
import { For } from "@askrjs/askr/control";
|
|
4
|
+
import { resource } from "@askrjs/askr/resources";
|
|
5
|
+
//#region src/components/shell/shell-responsive.tsx
|
|
6
|
+
let shellScrollLockCount = 0;
|
|
7
|
+
let shellScrollLockPreviousValue = null;
|
|
8
|
+
function acquireShellScrollLock() {
|
|
9
|
+
if (typeof document === "undefined") return;
|
|
10
|
+
const body = document.body;
|
|
11
|
+
if (shellScrollLockCount === 0) shellScrollLockPreviousValue = body.getAttribute("data-shell-scroll-lock");
|
|
12
|
+
shellScrollLockCount += 1;
|
|
13
|
+
body.setAttribute("data-shell-scroll-lock", "true");
|
|
14
|
+
}
|
|
15
|
+
function releaseShellScrollLock() {
|
|
16
|
+
if (typeof document === "undefined" || shellScrollLockCount === 0) return;
|
|
17
|
+
shellScrollLockCount -= 1;
|
|
18
|
+
if (shellScrollLockCount > 0) return;
|
|
19
|
+
const body = document.body;
|
|
20
|
+
if (shellScrollLockPreviousValue === null) body.removeAttribute("data-shell-scroll-lock");
|
|
21
|
+
else body.setAttribute("data-shell-scroll-lock", shellScrollLockPreviousValue);
|
|
22
|
+
shellScrollLockPreviousValue = null;
|
|
23
|
+
}
|
|
24
|
+
function isShellPanelChild(child, panelComponent) {
|
|
25
|
+
return isJsxElement(child) && child.type === panelComponent;
|
|
26
|
+
}
|
|
27
|
+
function renderKeyedShellChildren(children, keyPrefix) {
|
|
28
|
+
const keyedChildren = toChildArray(children).map((child, index) => {
|
|
29
|
+
if (!isJsxElement(child) || child.key != null) return child;
|
|
30
|
+
return {
|
|
31
|
+
...child,
|
|
32
|
+
key: `${keyPrefix}-${index}`
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
return /* @__PURE__ */ jsx(For, {
|
|
36
|
+
each: () => keyedChildren,
|
|
37
|
+
by: (child, index) => isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`,
|
|
38
|
+
children: (child) => child
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function renderKeyedShellPanelChildren(children, keyPrefix, panelProps) {
|
|
42
|
+
const keyedChildren = toChildArray(children).map((child, index) => {
|
|
43
|
+
if (!isJsxElement(child)) return child;
|
|
44
|
+
return {
|
|
45
|
+
...child,
|
|
46
|
+
key: child.key != null ? child.key : `${keyPrefix}-${index}`,
|
|
47
|
+
props: {
|
|
48
|
+
...child.props,
|
|
49
|
+
active: panelProps.active,
|
|
50
|
+
collapseLabel: panelProps.collapseLabel,
|
|
51
|
+
onClose: panelProps.onClose,
|
|
52
|
+
open: panelProps.open,
|
|
53
|
+
panelId: panelProps.panelId
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
return /* @__PURE__ */ jsx(For, {
|
|
58
|
+
each: () => keyedChildren,
|
|
59
|
+
by: (child, index) => isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`,
|
|
60
|
+
children: (child) => child
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function ShellResponsiveWatcher(props) {
|
|
64
|
+
const { breakpoint, isCollapsed, onExpand, onResize } = props;
|
|
65
|
+
resource(({ signal }) => {
|
|
66
|
+
const updateCollapsedState = () => {
|
|
67
|
+
const nextCollapsed = isCollapsed(breakpoint);
|
|
68
|
+
onResize(nextCollapsed);
|
|
69
|
+
if (!nextCollapsed) onExpand();
|
|
70
|
+
};
|
|
71
|
+
updateCollapsedState();
|
|
72
|
+
if (typeof window === "undefined") return null;
|
|
73
|
+
window.addEventListener("resize", updateCollapsedState);
|
|
74
|
+
signal.addEventListener("abort", () => {
|
|
75
|
+
window.removeEventListener("resize", updateCollapsedState);
|
|
76
|
+
}, { once: true });
|
|
77
|
+
return null;
|
|
78
|
+
}, [breakpoint]);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
function ShellPanelWatcher(props) {
|
|
82
|
+
const { contentId, onClose, open, panelSlot } = props;
|
|
83
|
+
resource(({ signal }) => {
|
|
84
|
+
if (!open || typeof window === "undefined") {
|
|
85
|
+
releaseShellScrollLock();
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const onKeyDown = (event) => {
|
|
89
|
+
if (event.key !== "Escape") return;
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
onClose();
|
|
92
|
+
};
|
|
93
|
+
window.addEventListener("keydown", onKeyDown);
|
|
94
|
+
const focusFrame = typeof window.requestAnimationFrame === "function" ? window.requestAnimationFrame(() => {
|
|
95
|
+
((typeof contentId === "string" ? document.getElementById(contentId) : null) ?? document.querySelector(`[data-slot="${panelSlot}"][data-state="open"]`))?.focus({ preventScroll: true });
|
|
96
|
+
}) : void 0;
|
|
97
|
+
acquireShellScrollLock();
|
|
98
|
+
signal.addEventListener("abort", () => {
|
|
99
|
+
window.removeEventListener("keydown", onKeyDown);
|
|
100
|
+
if (focusFrame !== void 0 && typeof window.cancelAnimationFrame === "function") window.cancelAnimationFrame(focusFrame);
|
|
101
|
+
releaseShellScrollLock();
|
|
102
|
+
}, { once: true });
|
|
103
|
+
return null;
|
|
104
|
+
}, [open]);
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
export { ShellPanelWatcher, ShellResponsiveWatcher, isShellPanelChild, renderKeyedShellChildren, renderKeyedShellPanelChildren };
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=shell-responsive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-responsive.js","names":[],"sources":["../../../src/components/shell/shell-responsive.tsx"],"sourcesContent":["import { For } from \"@askrjs/askr/control\";\nimport { resource } from \"@askrjs/askr/resources\";\nimport type { JSXElement } from \"@askrjs/askr/foundations\";\nimport { isJsxElement, toChildArray } from \"../_internal/jsx\";\n\nexport type ShellResponsivePanelProps = {\n active: boolean;\n collapseLabel: string;\n onClose: () => void;\n open: boolean;\n panelId?: string;\n};\n\nlet shellScrollLockCount = 0;\nlet shellScrollLockPreviousValue: string | null = null;\n\nfunction acquireShellScrollLock(): void {\n if (typeof document === \"undefined\") return;\n\n const body = document.body;\n if (shellScrollLockCount === 0) {\n shellScrollLockPreviousValue = body.getAttribute(\"data-shell-scroll-lock\");\n }\n\n shellScrollLockCount += 1;\n body.setAttribute(\"data-shell-scroll-lock\", \"true\");\n}\n\nfunction releaseShellScrollLock(): void {\n if (typeof document === \"undefined\" || shellScrollLockCount === 0) return;\n\n shellScrollLockCount -= 1;\n if (shellScrollLockCount > 0) return;\n\n const body = document.body;\n if (shellScrollLockPreviousValue === null) {\n body.removeAttribute(\"data-shell-scroll-lock\");\n } else {\n body.setAttribute(\"data-shell-scroll-lock\", shellScrollLockPreviousValue);\n }\n\n shellScrollLockPreviousValue = null;\n}\n\nexport function isShellPanelChild(child: unknown, panelComponent: unknown): child is JSXElement {\n return isJsxElement(child) && child.type === panelComponent;\n}\n\nexport function renderKeyedShellChildren(children: unknown, keyPrefix: string): JSX.Element {\n const keyedChildren = toChildArray(children).map((child, index) => {\n if (!isJsxElement(child) || child.key != null) {\n return child;\n }\n\n return {\n ...child,\n key: `${keyPrefix}-${index}`,\n };\n });\n\n return (\n <For\n each={() => keyedChildren}\n by={(child, index) =>\n isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`\n }\n >\n {(child) => child as never}\n </For>\n );\n}\n\nexport function renderKeyedShellPanelChildren(\n children: unknown,\n keyPrefix: string,\n panelProps: ShellResponsivePanelProps,\n): JSX.Element {\n const keyedChildren = toChildArray(children).map((child, index) => {\n if (!isJsxElement(child)) {\n return child;\n }\n\n return {\n ...child,\n key: child.key != null ? child.key : `${keyPrefix}-${index}`,\n props: {\n ...child.props,\n active: panelProps.active,\n collapseLabel: panelProps.collapseLabel,\n onClose: panelProps.onClose,\n open: panelProps.open,\n panelId: panelProps.panelId,\n },\n };\n });\n\n return (\n <For\n each={() => keyedChildren}\n by={(child, index) =>\n isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`\n }\n >\n {(child) => child as never}\n </For>\n );\n}\n\nexport function ShellResponsiveWatcher<TBreakpoint extends string>(props: {\n breakpoint: TBreakpoint;\n isCollapsed: (breakpoint: TBreakpoint) => boolean;\n onExpand: () => void;\n onResize: (nextCollapsed: boolean) => void;\n}): JSX.Element | null {\n const { breakpoint, isCollapsed, onExpand, onResize } = props;\n\n resource(\n ({ signal }: { signal: AbortSignal }) => {\n const updateCollapsedState = () => {\n const nextCollapsed = isCollapsed(breakpoint);\n onResize(nextCollapsed);\n\n if (!nextCollapsed) {\n onExpand();\n }\n };\n\n updateCollapsedState();\n\n if (typeof window === \"undefined\") {\n return null;\n }\n\n window.addEventListener(\"resize\", updateCollapsedState);\n signal.addEventListener(\n \"abort\",\n () => {\n window.removeEventListener(\"resize\", updateCollapsedState);\n },\n { once: true },\n );\n\n return null;\n },\n [breakpoint],\n );\n\n return null;\n}\n\nexport function ShellPanelWatcher(props: {\n contentId?: string;\n onClose: () => void;\n open: boolean;\n panelSlot: string;\n}): JSX.Element | null {\n const { contentId, onClose, open, panelSlot } = props;\n\n resource(\n ({ signal }: { signal: AbortSignal }) => {\n if (!open || typeof window === \"undefined\") {\n releaseShellScrollLock();\n return null;\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") {\n return;\n }\n\n event.preventDefault();\n onClose();\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n\n const focusFrame =\n typeof window.requestAnimationFrame === \"function\"\n ? window.requestAnimationFrame(() => {\n const content =\n (typeof contentId === \"string\" ? document.getElementById(contentId) : null) ??\n document.querySelector<HTMLElement>(\n `[data-slot=\"${panelSlot}\"][data-state=\"open\"]`,\n );\n\n content?.focus({ preventScroll: true });\n })\n : undefined;\n\n acquireShellScrollLock();\n\n signal.addEventListener(\n \"abort\",\n () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n\n if (focusFrame !== undefined && typeof window.cancelAnimationFrame === \"function\") {\n window.cancelAnimationFrame(focusFrame);\n }\n\n releaseShellScrollLock();\n },\n { once: true },\n );\n\n return null;\n },\n [open],\n );\n\n return null;\n}\n"],"mappings":";;;;;AAaA,IAAI,uBAAuB;AAC3B,IAAI,+BAA8C;AAElD,SAAS,yBAA+B;CACtC,IAAI,OAAO,aAAa,aAAa;CAErC,MAAM,OAAO,SAAS;CACtB,IAAI,yBAAyB,GAC3B,+BAA+B,KAAK,aAAa,yBAAyB;CAG5E,wBAAwB;CACxB,KAAK,aAAa,0BAA0B,OAAO;;AAGrD,SAAS,yBAA+B;CACtC,IAAI,OAAO,aAAa,eAAe,yBAAyB,GAAG;CAEnE,wBAAwB;CACxB,IAAI,uBAAuB,GAAG;CAE9B,MAAM,OAAO,SAAS;CACtB,IAAI,iCAAiC,MACnC,KAAK,gBAAgB,yBAAyB;MAE9C,KAAK,aAAa,0BAA0B,6BAA6B;CAG3E,+BAA+B;;AAGjC,SAAgB,kBAAkB,OAAgB,gBAA8C;CAC9F,OAAO,aAAa,MAAM,IAAI,MAAM,SAAS;;AAG/C,SAAgB,yBAAyB,UAAmB,WAAgC;CAC1F,MAAM,gBAAgB,aAAa,SAAS,CAAC,KAAK,OAAO,UAAU;EACjE,IAAI,CAAC,aAAa,MAAM,IAAI,MAAM,OAAO,MACvC,OAAO;EAGT,OAAO;GACL,GAAG;GACH,KAAK,GAAG,UAAU,GAAG;GACtB;GACD;CAEF,OACE,oBAAC,KAAD;EACE,YAAY;EACZ,KAAK,OAAO,UACV,aAAa,MAAM,IAAI,MAAM,OAAO,OAAO,OAAO,MAAM,IAAI,GAAG,GAAG,UAAU,GAAG;aAG/E,UAAU;EACR,CAAA;;AAIV,SAAgB,8BACd,UACA,WACA,YACa;CACb,MAAM,gBAAgB,aAAa,SAAS,CAAC,KAAK,OAAO,UAAU;EACjE,IAAI,CAAC,aAAa,MAAM,EACtB,OAAO;EAGT,OAAO;GACL,GAAG;GACH,KAAK,MAAM,OAAO,OAAO,MAAM,MAAM,GAAG,UAAU,GAAG;GACrD,OAAO;IACL,GAAG,MAAM;IACT,QAAQ,WAAW;IACnB,eAAe,WAAW;IAC1B,SAAS,WAAW;IACpB,MAAM,WAAW;IACjB,SAAS,WAAW;IACrB;GACF;GACD;CAEF,OACE,oBAAC,KAAD;EACE,YAAY;EACZ,KAAK,OAAO,UACV,aAAa,MAAM,IAAI,MAAM,OAAO,OAAO,OAAO,MAAM,IAAI,GAAG,GAAG,UAAU,GAAG;aAG/E,UAAU;EACR,CAAA;;AAIV,SAAgB,uBAAmD,OAK5C;CACrB,MAAM,EAAE,YAAY,aAAa,UAAU,aAAa;CAExD,UACG,EAAE,aAAsC;EACvC,MAAM,6BAA6B;GACjC,MAAM,gBAAgB,YAAY,WAAW;GAC7C,SAAS,cAAc;GAEvB,IAAI,CAAC,eACH,UAAU;;EAId,sBAAsB;EAEtB,IAAI,OAAO,WAAW,aACpB,OAAO;EAGT,OAAO,iBAAiB,UAAU,qBAAqB;EACvD,OAAO,iBACL,eACM;GACJ,OAAO,oBAAoB,UAAU,qBAAqB;KAE5D,EAAE,MAAM,MAAM,CACf;EAED,OAAO;IAET,CAAC,WAAW,CACb;CAED,OAAO;;AAGT,SAAgB,kBAAkB,OAKX;CACrB,MAAM,EAAE,WAAW,SAAS,MAAM,cAAc;CAEhD,UACG,EAAE,aAAsC;EACvC,IAAI,CAAC,QAAQ,OAAO,WAAW,aAAa;GAC1C,wBAAwB;GACxB,OAAO;;EAGT,MAAM,aAAa,UAAyB;GAC1C,IAAI,MAAM,QAAQ,UAChB;GAGF,MAAM,gBAAgB;GACtB,SAAS;;EAGX,OAAO,iBAAiB,WAAW,UAAU;EAE7C,MAAM,aACJ,OAAO,OAAO,0BAA0B,aACpC,OAAO,4BAA4B;GAOjC,EALG,OAAO,cAAc,WAAW,SAAS,eAAe,UAAU,GAAG,SACtE,SAAS,cACP,eAAe,UAAU,uBAC1B,GAEM,MAAM,EAAE,eAAe,MAAM,CAAC;IACvC,GACF,KAAA;EAEN,wBAAwB;EAExB,OAAO,iBACL,eACM;GACJ,OAAO,oBAAoB,WAAW,UAAU;GAEhD,IAAI,eAAe,KAAA,KAAa,OAAO,OAAO,yBAAyB,YACrE,OAAO,qBAAqB,WAAW;GAGzC,wBAAwB;KAE1B,EAAE,MAAM,MAAM,CACf;EAED,OAAO;IAET,CAAC,KAAK,CACP;CAED,OAAO"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/components/shell/shell.a11y.d.ts
|
|
2
|
+
declare const SHELL_A11Y_CONTRACT: {
|
|
3
|
+
readonly DATA_ATTRIBUTES: {
|
|
4
|
+
readonly slot: "data-slot";
|
|
5
|
+
readonly layout: "data-ak-layout";
|
|
6
|
+
readonly variant: "data-variant";
|
|
7
|
+
readonly gap: "data-gap";
|
|
8
|
+
};
|
|
9
|
+
readonly SLOT_VALUES: {
|
|
10
|
+
readonly root: "shell";
|
|
11
|
+
readonly nav: "shell-nav";
|
|
12
|
+
readonly main: "shell-main";
|
|
13
|
+
};
|
|
14
|
+
readonly VARIANT_VALUES: {
|
|
15
|
+
readonly sidebar: "sidebar";
|
|
16
|
+
readonly topbar: "topbar";
|
|
17
|
+
readonly rail: "rail";
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
type ShellA11yContract = typeof SHELL_A11Y_CONTRACT;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { SHELL_A11Y_CONTRACT, ShellA11yContract };
|
|
23
|
+
//# sourceMappingURL=shell.a11y.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/components/shell/shell.a11y.ts
|
|
2
|
+
const SHELL_A11Y_CONTRACT = {
|
|
3
|
+
DATA_ATTRIBUTES: {
|
|
4
|
+
slot: "data-slot",
|
|
5
|
+
layout: "data-ak-layout",
|
|
6
|
+
variant: "data-variant",
|
|
7
|
+
gap: "data-gap"
|
|
8
|
+
},
|
|
9
|
+
SLOT_VALUES: {
|
|
10
|
+
root: "shell",
|
|
11
|
+
nav: "shell-nav",
|
|
12
|
+
main: "shell-main"
|
|
13
|
+
},
|
|
14
|
+
VARIANT_VALUES: {
|
|
15
|
+
sidebar: "sidebar",
|
|
16
|
+
topbar: "topbar",
|
|
17
|
+
rail: "rail"
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { SHELL_A11Y_CONTRACT };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=shell.a11y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.a11y.js","names":[],"sources":["../../../src/components/shell/shell.a11y.ts"],"sourcesContent":["export const SHELL_A11Y_CONTRACT = {\n DATA_ATTRIBUTES: {\n slot: \"data-slot\" as const,\n layout: \"data-ak-layout\" as const,\n variant: \"data-variant\" as const,\n gap: \"data-gap\" as const,\n },\n SLOT_VALUES: {\n root: \"shell\" as const,\n nav: \"shell-nav\" as const,\n main: \"shell-main\" as const,\n },\n VARIANT_VALUES: {\n sidebar: \"sidebar\" as const,\n topbar: \"topbar\" as const,\n rail: \"rail\" as const,\n },\n} as const;\n\nexport type ShellA11yContract = typeof SHELL_A11Y_CONTRACT;\n"],"mappings":";AAAA,MAAa,sBAAsB;CACjC,iBAAiB;EACf,MAAM;EACN,QAAQ;EACR,SAAS;EACT,KAAK;EACN;CACD,aAAa;EACX,MAAM;EACN,KAAK;EACL,MAAM;EACP;CACD,gBAAgB;EACd,SAAS;EACT,QAAQ;EACR,MAAM;EACP;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ShellAsChildProps, ShellDivProps, ShellMainAsChildProps, ShellMainDivProps, ShellMainMainProps, ShellNavAsChildProps, ShellNavDivProps } from "./shell.types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/shell/shell.d.ts
|
|
4
|
+
declare function Shell(props: ShellDivProps): JSX.Element;
|
|
5
|
+
declare function Shell(props: ShellAsChildProps): JSX.Element;
|
|
6
|
+
declare function ShellNav(props: ShellNavDivProps): JSX.Element;
|
|
7
|
+
declare function ShellNav(props: ShellNavAsChildProps): JSX.Element;
|
|
8
|
+
declare function ShellMain(props: ShellMainMainProps): JSX.Element;
|
|
9
|
+
declare function ShellMain(props: ShellMainDivProps): JSX.Element;
|
|
10
|
+
declare function ShellMain(props: ShellMainAsChildProps): JSX.Element;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { Shell, ShellMain, ShellNav };
|
|
13
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { classes } from "../_internal/classes.js";
|
|
2
|
+
import { mergeProps } from "../_internal/merge-props.js";
|
|
3
|
+
import { jsx } from "@askrjs/askr/jsx-runtime";
|
|
4
|
+
import { Slot } from "@askrjs/askr/foundations";
|
|
5
|
+
//#region src/components/shell/shell.tsx
|
|
6
|
+
function Shell(props) {
|
|
7
|
+
const { asChild, children, class: className, variant = "sidebar", ref, ...rest } = props;
|
|
8
|
+
const finalProps = mergeProps(rest, {
|
|
9
|
+
ref,
|
|
10
|
+
class: classes("shell", className),
|
|
11
|
+
"data-slot": "shell",
|
|
12
|
+
"data-ak-layout": "true",
|
|
13
|
+
"data-variant": variant
|
|
14
|
+
});
|
|
15
|
+
if (asChild) return /* @__PURE__ */ jsx(Slot, {
|
|
16
|
+
asChild: true,
|
|
17
|
+
...finalProps,
|
|
18
|
+
children
|
|
19
|
+
});
|
|
20
|
+
return /* @__PURE__ */ jsx("div", {
|
|
21
|
+
...finalProps,
|
|
22
|
+
children
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function ShellNav(props) {
|
|
26
|
+
const { asChild, children, class: className, ref, ...rest } = props;
|
|
27
|
+
const finalProps = mergeProps(rest, {
|
|
28
|
+
ref,
|
|
29
|
+
class: classes("shell-nav", className),
|
|
30
|
+
"data-slot": "shell-nav",
|
|
31
|
+
"data-ak-layout": "true"
|
|
32
|
+
});
|
|
33
|
+
if (asChild) return /* @__PURE__ */ jsx(Slot, {
|
|
34
|
+
asChild: true,
|
|
35
|
+
...finalProps,
|
|
36
|
+
children
|
|
37
|
+
});
|
|
38
|
+
return /* @__PURE__ */ jsx("div", {
|
|
39
|
+
...finalProps,
|
|
40
|
+
children
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function ShellMain(props) {
|
|
44
|
+
const as = "as" in props ? props.as : "main";
|
|
45
|
+
const { asChild, children, class: className, ref, ...rest } = props;
|
|
46
|
+
const finalProps = mergeProps(rest, {
|
|
47
|
+
ref,
|
|
48
|
+
class: classes("shell-main", className),
|
|
49
|
+
"data-slot": "shell-main",
|
|
50
|
+
"data-ak-layout": "true"
|
|
51
|
+
});
|
|
52
|
+
if (asChild) return /* @__PURE__ */ jsx(Slot, {
|
|
53
|
+
asChild: true,
|
|
54
|
+
...finalProps,
|
|
55
|
+
children
|
|
56
|
+
});
|
|
57
|
+
if (as === "div") return /* @__PURE__ */ jsx("div", {
|
|
58
|
+
...finalProps,
|
|
59
|
+
children
|
|
60
|
+
});
|
|
61
|
+
return /* @__PURE__ */ jsx("main", {
|
|
62
|
+
...finalProps,
|
|
63
|
+
children
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { Shell, ShellMain, ShellNav };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","names":[],"sources":["../../../src/components/shell/shell.tsx"],"sourcesContent":["import { Slot } from \"@askrjs/askr/foundations\";\nimport { classes } from \"../_internal/classes\";\nimport { mergeProps } from \"../_internal/merge-props\";\nimport type {\n ShellAsChildProps,\n ShellDivProps,\n ShellMainAsChildProps,\n ShellMainDivProps,\n ShellMainMainProps,\n ShellNavAsChildProps,\n ShellNavDivProps,\n} from \"./shell.types\";\n\nexport function Shell(props: ShellDivProps): JSX.Element;\nexport function Shell(props: ShellAsChildProps): JSX.Element;\nexport function Shell(props: ShellDivProps | ShellAsChildProps) {\n const { asChild, children, class: className, variant = \"sidebar\", ref, ...rest } = props;\n\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"shell\", className),\n \"data-slot\": \"shell\",\n \"data-ak-layout\": \"true\",\n \"data-variant\": variant,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return <div {...finalProps}>{children}</div>;\n}\n\nexport function ShellNav(props: ShellNavDivProps): JSX.Element;\nexport function ShellNav(props: ShellNavAsChildProps): JSX.Element;\nexport function ShellNav(props: ShellNavDivProps | ShellNavAsChildProps) {\n const { asChild, children, class: className, ref, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"shell-nav\", className),\n \"data-slot\": \"shell-nav\",\n \"data-ak-layout\": \"true\",\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return <div {...finalProps}>{children}</div>;\n}\n\nexport function ShellMain(props: ShellMainMainProps): JSX.Element;\nexport function ShellMain(props: ShellMainDivProps): JSX.Element;\nexport function ShellMain(props: ShellMainAsChildProps): JSX.Element;\nexport function ShellMain(props: ShellMainMainProps | ShellMainDivProps | ShellMainAsChildProps) {\n const as = \"as\" in props ? props.as : \"main\";\n const { asChild, children, class: className, ref, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"shell-main\", className),\n \"data-slot\": \"shell-main\",\n \"data-ak-layout\": \"true\",\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n if (as === \"div\") {\n return <div {...finalProps}>{children}</div>;\n }\n\n return <main {...finalProps}>{children}</main>;\n}\n"],"mappings":";;;;;AAeA,SAAgB,MAAM,OAA0C;CAC9D,MAAM,EAAE,SAAS,UAAU,OAAO,WAAW,UAAU,WAAW,KAAK,GAAG,SAAS;CAEnF,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,SAAS,UAAU;EAClC,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EACjB,CAAC;CAEF,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;EAA2B,CAAA;CAG5E,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAa;EAAe,CAAA;;AAK9C,SAAgB,SAAS,OAAgD;CACvE,MAAM,EAAE,SAAS,UAAU,OAAO,WAAW,KAAK,GAAG,SAAS;CAC9D,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,aAAa,UAAU;EACtC,aAAa;EACb,kBAAkB;EACnB,CAAC;CAEF,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;EAA2B,CAAA;CAG5E,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAa;EAAe,CAAA;;AAM9C,SAAgB,UAAU,OAAuE;CAC/F,MAAM,KAAK,QAAQ,QAAQ,MAAM,KAAK;CACtC,MAAM,EAAE,SAAS,UAAU,OAAO,WAAW,KAAK,GAAG,SAAS;CAC9D,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,cAAc,UAAU;EACvC,aAAa;EACb,kBAAkB;EACnB,CAAC;CAEF,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;EAA2B,CAAA;CAG5E,IAAI,OAAO,OACT,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAa;EAAe,CAAA;CAG9C,OAAO,oBAAC,QAAD;EAAM,GAAI;EAAa;EAAgB,CAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { JSXElement } from "@askrjs/askr/foundations";
|
|
2
|
+
import { Ref } from "@askrjs/askr/foundations/utilities";
|
|
3
|
+
|
|
4
|
+
//#region src/components/shell/shell.types.d.ts
|
|
5
|
+
type ShellVariant = "sidebar" | "topbar" | "rail";
|
|
6
|
+
type ShellOwnProps = {
|
|
7
|
+
variant?: ShellVariant;
|
|
8
|
+
class?: string;
|
|
9
|
+
children?: unknown;
|
|
10
|
+
};
|
|
11
|
+
type ShellDivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & ShellOwnProps & {
|
|
12
|
+
asChild?: false;
|
|
13
|
+
ref?: Ref<HTMLDivElement>;
|
|
14
|
+
};
|
|
15
|
+
type ShellAsChildProps = Omit<ShellOwnProps, "as"> & {
|
|
16
|
+
asChild: true;
|
|
17
|
+
children: JSXElement;
|
|
18
|
+
ref?: Ref<unknown>;
|
|
19
|
+
};
|
|
20
|
+
type ShellProps = ShellDivProps | ShellAsChildProps;
|
|
21
|
+
type ShellNavOwnProps = {
|
|
22
|
+
class?: string;
|
|
23
|
+
children?: unknown;
|
|
24
|
+
};
|
|
25
|
+
type ShellNavDivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & ShellNavOwnProps & {
|
|
26
|
+
asChild?: false;
|
|
27
|
+
ref?: Ref<HTMLDivElement>;
|
|
28
|
+
};
|
|
29
|
+
type ShellNavAsChildProps = Omit<ShellNavOwnProps, "as"> & {
|
|
30
|
+
asChild: true;
|
|
31
|
+
children: JSXElement;
|
|
32
|
+
ref?: Ref<unknown>;
|
|
33
|
+
};
|
|
34
|
+
type ShellNavProps = ShellNavDivProps | ShellNavAsChildProps;
|
|
35
|
+
type ShellMainOwnProps = {
|
|
36
|
+
as?: "main" | "div";
|
|
37
|
+
class?: string;
|
|
38
|
+
children?: unknown;
|
|
39
|
+
};
|
|
40
|
+
type ShellMainMainProps = Omit<JSX.IntrinsicElements["main"], "children" | "ref"> & ShellMainOwnProps & {
|
|
41
|
+
as?: "main";
|
|
42
|
+
asChild?: false;
|
|
43
|
+
ref?: Ref<HTMLElement>;
|
|
44
|
+
};
|
|
45
|
+
type ShellMainDivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & ShellMainOwnProps & {
|
|
46
|
+
as: "div";
|
|
47
|
+
asChild?: false;
|
|
48
|
+
ref?: Ref<HTMLDivElement>;
|
|
49
|
+
};
|
|
50
|
+
type ShellMainAsChildProps = Omit<ShellMainOwnProps, "as"> & {
|
|
51
|
+
asChild: true;
|
|
52
|
+
children: JSXElement;
|
|
53
|
+
ref?: Ref<unknown>;
|
|
54
|
+
};
|
|
55
|
+
type ShellMainProps = ShellMainMainProps | ShellMainDivProps | ShellMainAsChildProps;
|
|
56
|
+
//#endregion
|
|
57
|
+
export { ShellAsChildProps, ShellDivProps, ShellMainAsChildProps, ShellMainDivProps, ShellMainMainProps, ShellMainProps, ShellNavAsChildProps, ShellNavDivProps, ShellNavProps, ShellOwnProps, ShellProps, ShellVariant };
|
|
58
|
+
//# sourceMappingURL=shell.types.d.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SidebarPanelProps } from "./sidebar.types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/sidebar/sidebar-panel.d.ts
|
|
4
|
+
declare function SidebarPanel(props: SidebarPanelProps): JSX.Element | null;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { SidebarPanel };
|
|
7
|
+
//# sourceMappingURL=sidebar-panel.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { renderShellPanel } from "../shell/shell-panel.js";
|
|
2
|
+
import { SidebarResponsiveContext } from "./sidebar.context.js";
|
|
3
|
+
import { readContext } from "@askrjs/askr";
|
|
4
|
+
//#region src/components/sidebar/sidebar-panel.tsx
|
|
5
|
+
function SidebarPanel(props) {
|
|
6
|
+
const { active: activeProp, brand, children, class: className, collapseLabel: collapseLabelProp, onClose, open: openProp, panelId: panelIdProp, ref, ...rest } = props;
|
|
7
|
+
const responsive = activeProp === void 0 || collapseLabelProp === void 0 || onClose === void 0 || openProp === void 0 || panelIdProp === void 0 ? (() => {
|
|
8
|
+
try {
|
|
9
|
+
return readContext(SidebarResponsiveContext);
|
|
10
|
+
} catch {
|
|
11
|
+
return {
|
|
12
|
+
active: () => false,
|
|
13
|
+
collapseLabel: () => "Menu",
|
|
14
|
+
closePanel: () => void 0,
|
|
15
|
+
iconCollapsed: () => false,
|
|
16
|
+
isRailCollapsible: () => false,
|
|
17
|
+
orientation: () => "vertical",
|
|
18
|
+
panelId: () => void 0,
|
|
19
|
+
panelOpen: () => false,
|
|
20
|
+
togglePanel: () => void 0,
|
|
21
|
+
toggleRail: () => void 0
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
})() : {
|
|
25
|
+
active: () => false,
|
|
26
|
+
collapseLabel: () => "Menu",
|
|
27
|
+
closePanel: () => void 0,
|
|
28
|
+
iconCollapsed: () => false,
|
|
29
|
+
isRailCollapsible: () => false,
|
|
30
|
+
orientation: () => "vertical",
|
|
31
|
+
panelId: () => void 0,
|
|
32
|
+
panelOpen: () => false,
|
|
33
|
+
togglePanel: () => void 0,
|
|
34
|
+
toggleRail: () => void 0
|
|
35
|
+
};
|
|
36
|
+
const active = activeProp ?? responsive.active();
|
|
37
|
+
const open = openProp ?? responsive.panelOpen();
|
|
38
|
+
const panelId = panelIdProp ?? responsive.panelId();
|
|
39
|
+
const collapseLabel = collapseLabelProp ?? responsive.collapseLabel();
|
|
40
|
+
const closePanel = onClose ?? responsive.closePanel;
|
|
41
|
+
return renderShellPanel({
|
|
42
|
+
active,
|
|
43
|
+
brand,
|
|
44
|
+
children,
|
|
45
|
+
className,
|
|
46
|
+
collapseLabel,
|
|
47
|
+
dataOrientation: responsive.orientation(),
|
|
48
|
+
onClose: closePanel,
|
|
49
|
+
open,
|
|
50
|
+
panelId,
|
|
51
|
+
prefix: "sidebar",
|
|
52
|
+
ref,
|
|
53
|
+
rest
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { SidebarPanel };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=sidebar-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-panel.js","names":[],"sources":["../../../src/components/sidebar/sidebar-panel.tsx"],"sourcesContent":["import { readContext } from \"@askrjs/askr\";\nimport { renderShellPanel } from \"../shell/shell-panel\";\nimport { SidebarResponsiveContext } from \"./sidebar.context\";\nimport type { SidebarPanelProps } from \"./sidebar.types\";\n\nexport function SidebarPanel(props: SidebarPanelProps): JSX.Element | null {\n const {\n active: activeProp,\n brand,\n children,\n class: className,\n collapseLabel: collapseLabelProp,\n onClose,\n open: openProp,\n panelId: panelIdProp,\n ref,\n ...rest\n } = props;\n const needsResponsiveContext =\n activeProp === undefined ||\n collapseLabelProp === undefined ||\n onClose === undefined ||\n openProp === undefined ||\n panelIdProp === undefined;\n const responsive = needsResponsiveContext\n ? (() => {\n try {\n return readContext(SidebarResponsiveContext);\n } catch {\n return {\n active: () => false,\n collapseLabel: () => \"Menu\",\n closePanel: () => undefined,\n iconCollapsed: () => false,\n isRailCollapsible: () => false,\n orientation: () => \"vertical\" as const,\n panelId: () => undefined,\n panelOpen: () => false,\n togglePanel: () => undefined,\n toggleRail: () => undefined,\n };\n }\n })()\n : {\n active: () => false,\n collapseLabel: () => \"Menu\",\n closePanel: () => undefined,\n iconCollapsed: () => false,\n isRailCollapsible: () => false,\n orientation: () => \"vertical\" as const,\n panelId: () => undefined,\n panelOpen: () => false,\n togglePanel: () => undefined,\n toggleRail: () => undefined,\n };\n const active = activeProp ?? responsive.active();\n const open = openProp ?? responsive.panelOpen();\n const panelId = panelIdProp ?? responsive.panelId();\n const collapseLabel = collapseLabelProp ?? responsive.collapseLabel();\n const closePanel = onClose ?? responsive.closePanel;\n\n return renderShellPanel({\n active,\n brand,\n children,\n className,\n collapseLabel,\n dataOrientation: responsive.orientation(),\n onClose: closePanel,\n open,\n panelId,\n prefix: \"sidebar\",\n ref,\n rest,\n });\n}\n"],"mappings":";;;;AAKA,SAAgB,aAAa,OAA8C;CACzE,MAAM,EACJ,QAAQ,YACR,OACA,UACA,OAAO,WACP,eAAe,mBACf,SACA,MAAM,UACN,SAAS,aACT,KACA,GAAG,SACD;CAOJ,MAAM,aALJ,eAAe,KAAA,KACf,sBAAsB,KAAA,KACtB,YAAY,KAAA,KACZ,aAAa,KAAA,KACb,gBAAgB,KAAA,WAEP;EACL,IAAI;GACF,OAAO,YAAY,yBAAyB;UACtC;GACN,OAAO;IACL,cAAc;IACd,qBAAqB;IACrB,kBAAkB,KAAA;IAClB,qBAAqB;IACrB,yBAAyB;IACzB,mBAAmB;IACnB,eAAe,KAAA;IACf,iBAAiB;IACjB,mBAAmB,KAAA;IACnB,kBAAkB,KAAA;IACnB;;KAED,GACJ;EACE,cAAc;EACd,qBAAqB;EACrB,kBAAkB,KAAA;EAClB,qBAAqB;EACrB,yBAAyB;EACzB,mBAAmB;EACnB,eAAe,KAAA;EACf,iBAAiB;EACjB,mBAAmB,KAAA;EACnB,kBAAkB,KAAA;EACnB;CACL,MAAM,SAAS,cAAc,WAAW,QAAQ;CAChD,MAAM,OAAO,YAAY,WAAW,WAAW;CAC/C,MAAM,UAAU,eAAe,WAAW,SAAS;CACnD,MAAM,gBAAgB,qBAAqB,WAAW,eAAe;CACrE,MAAM,aAAa,WAAW,WAAW;CAEzC,OAAO,iBAAiB;EACtB;EACA;EACA;EACA;EACA;EACA,iBAAiB,WAAW,aAAa;EACzC,SAAS;EACT;EACA;EACA,QAAQ;EACR;EACA;EACD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SidebarToggleProps } from "./sidebar.types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/sidebar/sidebar-toggle.d.ts
|
|
4
|
+
declare function SidebarToggle(_props: SidebarToggleProps): null;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { SidebarToggle };
|
|
7
|
+
//# sourceMappingURL=sidebar-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-toggle.js","names":[],"sources":["../../../src/components/sidebar/sidebar-toggle.tsx"],"sourcesContent":["import type { SidebarToggleProps } from \"./sidebar.types\";\n\nexport function SidebarToggle(_props: SidebarToggleProps): null {\n return null;\n}\n"],"mappings":";AAEA,SAAgB,cAAc,QAAkC;CAC9D,OAAO"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineContext } from "@askrjs/askr";
|
|
2
|
+
//#region src/components/sidebar/sidebar.context.ts
|
|
3
|
+
const defaultOrientation = () => "vertical";
|
|
4
|
+
const defaultResponsiveContext = {
|
|
5
|
+
active: () => false,
|
|
6
|
+
collapseLabel: () => "Menu",
|
|
7
|
+
closePanel: () => void 0,
|
|
8
|
+
iconCollapsed: () => false,
|
|
9
|
+
isRailCollapsible: () => false,
|
|
10
|
+
orientation: defaultOrientation,
|
|
11
|
+
panelId: () => void 0,
|
|
12
|
+
panelOpen: () => false,
|
|
13
|
+
togglePanel: () => void 0,
|
|
14
|
+
toggleRail: () => void 0
|
|
15
|
+
};
|
|
16
|
+
const SidebarContext = defineContext({ orientation: defaultOrientation });
|
|
17
|
+
const SidebarResponsiveContext = defineContext(defaultResponsiveContext);
|
|
18
|
+
//#endregion
|
|
19
|
+
export { SidebarContext, SidebarResponsiveContext };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=sidebar.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.context.js","names":[],"sources":["../../../src/components/sidebar/sidebar.context.ts"],"sourcesContent":["import { defineContext } from \"@askrjs/askr\";\n\nexport type SidebarContextValue = {\n orientation: () => \"vertical\";\n};\n\nexport type SidebarResponsiveContextValue = {\n active: () => boolean;\n collapseLabel: () => string;\n closePanel: () => void;\n iconCollapsed: () => boolean;\n isRailCollapsible: () => boolean;\n orientation: () => \"vertical\";\n panelId: () => string | undefined;\n panelOpen: () => boolean;\n togglePanel: () => void;\n toggleRail: () => void;\n};\n\nconst defaultOrientation = () => \"vertical\" as const;\n\nconst defaultResponsiveContext: SidebarResponsiveContextValue = {\n active: () => false,\n collapseLabel: () => \"Menu\",\n closePanel: () => undefined,\n iconCollapsed: () => false,\n isRailCollapsible: () => false,\n orientation: defaultOrientation,\n panelId: () => undefined,\n panelOpen: () => false,\n togglePanel: () => undefined,\n toggleRail: () => undefined,\n};\n\nexport const SidebarContext = defineContext<SidebarContextValue>({\n orientation: defaultOrientation,\n});\n\nexport const SidebarResponsiveContext =\n defineContext<SidebarResponsiveContextValue>(defaultResponsiveContext);\n"],"mappings":";;AAmBA,MAAM,2BAA2B;AAEjC,MAAM,2BAA0D;CAC9D,cAAc;CACd,qBAAqB;CACrB,kBAAkB,KAAA;CAClB,qBAAqB;CACrB,yBAAyB;CACzB,aAAa;CACb,eAAe,KAAA;CACf,iBAAiB;CACjB,mBAAmB,KAAA;CACnB,kBAAkB,KAAA;CACnB;AAED,MAAa,iBAAiB,cAAmC,EAC/D,aAAa,oBACd,CAAC;AAEF,MAAa,2BACX,cAA6C,yBAAyB"}
|