@rookcom/monarch-react 0.0.0-canary-20261103180711
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +5 -0
- package/dist/components/actions/button/button.d.ts +32 -0
- package/dist/components/actions/button/button.d.ts.map +1 -0
- package/dist/components/actions/button/button.js +30 -0
- package/dist/components/actions/button/button.js.map +1 -0
- package/dist/components/actions/button/index.d.ts +2 -0
- package/dist/components/actions/button/index.d.ts.map +1 -0
- package/dist/components/actions/button/index.js +2 -0
- package/dist/components/actions/button/index.js.map +1 -0
- package/dist/components/actions/copy-button/copy-button.d.ts +71 -0
- package/dist/components/actions/copy-button/copy-button.d.ts.map +1 -0
- package/dist/components/actions/copy-button/copy-button.js +150 -0
- package/dist/components/actions/copy-button/copy-button.js.map +1 -0
- package/dist/components/actions/copy-button/index.d.ts +2 -0
- package/dist/components/actions/copy-button/index.d.ts.map +1 -0
- package/dist/components/actions/copy-button/index.js +2 -0
- package/dist/components/actions/copy-button/index.js.map +1 -0
- package/dist/components/actions/copy-field/copy-field.d.ts +47 -0
- package/dist/components/actions/copy-field/copy-field.d.ts.map +1 -0
- package/dist/components/actions/copy-field/copy-field.js +37 -0
- package/dist/components/actions/copy-field/copy-field.js.map +1 -0
- package/dist/components/actions/copy-field/index.d.ts +2 -0
- package/dist/components/actions/copy-field/index.d.ts.map +1 -0
- package/dist/components/actions/copy-field/index.js +2 -0
- package/dist/components/actions/copy-field/index.js.map +1 -0
- package/dist/components/data-display/badge/badge.d.ts +13 -0
- package/dist/components/data-display/badge/badge.d.ts.map +1 -0
- package/dist/components/data-display/badge/badge.js +7 -0
- package/dist/components/data-display/badge/badge.js.map +1 -0
- package/dist/components/data-display/badge/index.d.ts +2 -0
- package/dist/components/data-display/badge/index.d.ts.map +1 -0
- package/dist/components/data-display/badge/index.js +2 -0
- package/dist/components/data-display/badge/index.js.map +1 -0
- package/dist/components/data-display/card/card.d.ts +18 -0
- package/dist/components/data-display/card/card.d.ts.map +1 -0
- package/dist/components/data-display/card/card.js +21 -0
- package/dist/components/data-display/card/card.js.map +1 -0
- package/dist/components/data-display/card/index.d.ts +2 -0
- package/dist/components/data-display/card/index.d.ts.map +1 -0
- package/dist/components/data-display/card/index.js +2 -0
- package/dist/components/data-display/card/index.js.map +1 -0
- package/dist/components/data-display/description-list/description-list.d.ts +17 -0
- package/dist/components/data-display/description-list/description-list.d.ts.map +1 -0
- package/dist/components/data-display/description-list/description-list.js +10 -0
- package/dist/components/data-display/description-list/description-list.js.map +1 -0
- package/dist/components/data-display/description-list/index.d.ts +2 -0
- package/dist/components/data-display/description-list/index.d.ts.map +1 -0
- package/dist/components/data-display/description-list/index.js +2 -0
- package/dist/components/data-display/description-list/index.js.map +1 -0
- package/dist/components/data-display/progress-bar/index.d.ts +2 -0
- package/dist/components/data-display/progress-bar/index.d.ts.map +1 -0
- package/dist/components/data-display/progress-bar/index.js +2 -0
- package/dist/components/data-display/progress-bar/index.js.map +1 -0
- package/dist/components/data-display/progress-bar/progress-bar.d.ts +14 -0
- package/dist/components/data-display/progress-bar/progress-bar.d.ts.map +1 -0
- package/dist/components/data-display/progress-bar/progress-bar.js +12 -0
- package/dist/components/data-display/progress-bar/progress-bar.js.map +1 -0
- package/dist/components/data-display/stat-card/index.d.ts +2 -0
- package/dist/components/data-display/stat-card/index.d.ts.map +1 -0
- package/dist/components/data-display/stat-card/index.js +2 -0
- package/dist/components/data-display/stat-card/index.js.map +1 -0
- package/dist/components/data-display/stat-card/stat-card.d.ts +19 -0
- package/dist/components/data-display/stat-card/stat-card.d.ts.map +1 -0
- package/dist/components/data-display/stat-card/stat-card.js +11 -0
- package/dist/components/data-display/stat-card/stat-card.js.map +1 -0
- package/dist/components/data-display/status-badge/index.d.ts +2 -0
- package/dist/components/data-display/status-badge/index.d.ts.map +1 -0
- package/dist/components/data-display/status-badge/index.js +2 -0
- package/dist/components/data-display/status-badge/index.js.map +1 -0
- package/dist/components/data-display/status-badge/status-badge.d.ts +169 -0
- package/dist/components/data-display/status-badge/status-badge.d.ts.map +1 -0
- package/dist/components/data-display/status-badge/status-badge.js +139 -0
- package/dist/components/data-display/status-badge/status-badge.js.map +1 -0
- package/dist/components/data-grid/data-table/data-table.d.ts +53 -0
- package/dist/components/data-grid/data-table/data-table.d.ts.map +1 -0
- package/dist/components/data-grid/data-table/data-table.js +47 -0
- package/dist/components/data-grid/data-table/data-table.js.map +1 -0
- package/dist/components/data-grid/data-table/index.d.ts +2 -0
- package/dist/components/data-grid/data-table/index.d.ts.map +1 -0
- package/dist/components/data-grid/data-table/index.js +2 -0
- package/dist/components/data-grid/data-table/index.js.map +1 -0
- package/dist/components/feedback/alert/alert.d.ts +17 -0
- package/dist/components/feedback/alert/alert.d.ts.map +1 -0
- package/dist/components/feedback/alert/alert.js +17 -0
- package/dist/components/feedback/alert/alert.js.map +1 -0
- package/dist/components/feedback/alert/index.d.ts +2 -0
- package/dist/components/feedback/alert/index.d.ts.map +1 -0
- package/dist/components/feedback/alert/index.js +2 -0
- package/dist/components/feedback/alert/index.js.map +1 -0
- package/dist/components/feedback/empty-state/empty-state.d.ts +17 -0
- package/dist/components/feedback/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/feedback/empty-state/empty-state.js +10 -0
- package/dist/components/feedback/empty-state/empty-state.js.map +1 -0
- package/dist/components/feedback/empty-state/index.d.ts +2 -0
- package/dist/components/feedback/empty-state/index.d.ts.map +1 -0
- package/dist/components/feedback/empty-state/index.js +2 -0
- package/dist/components/feedback/empty-state/index.js.map +1 -0
- package/dist/components/feedback/error-state/error-state.d.ts +23 -0
- package/dist/components/feedback/error-state/error-state.d.ts.map +1 -0
- package/dist/components/feedback/error-state/error-state.js +15 -0
- package/dist/components/feedback/error-state/error-state.js.map +1 -0
- package/dist/components/feedback/error-state/index.d.ts +2 -0
- package/dist/components/feedback/error-state/index.d.ts.map +1 -0
- package/dist/components/feedback/error-state/index.js +2 -0
- package/dist/components/feedback/error-state/index.js.map +1 -0
- package/dist/components/feedback/skeleton/index.d.ts +2 -0
- package/dist/components/feedback/skeleton/index.d.ts.map +1 -0
- package/dist/components/feedback/skeleton/index.js +2 -0
- package/dist/components/feedback/skeleton/index.js.map +1 -0
- package/dist/components/feedback/skeleton/skeleton.d.ts +12 -0
- package/dist/components/feedback/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/feedback/skeleton/skeleton.js +10 -0
- package/dist/components/feedback/skeleton/skeleton.js.map +1 -0
- package/dist/components/feedback/spinner/index.d.ts +2 -0
- package/dist/components/feedback/spinner/index.d.ts.map +1 -0
- package/dist/components/feedback/spinner/index.js +2 -0
- package/dist/components/feedback/spinner/index.js.map +1 -0
- package/dist/components/feedback/spinner/spinner.d.ts +12 -0
- package/dist/components/feedback/spinner/spinner.d.ts.map +1 -0
- package/dist/components/feedback/spinner/spinner.js +10 -0
- package/dist/components/feedback/spinner/spinner.js.map +1 -0
- package/dist/components/feedback/toast/index.d.ts +2 -0
- package/dist/components/feedback/toast/index.d.ts.map +1 -0
- package/dist/components/feedback/toast/index.js +2 -0
- package/dist/components/feedback/toast/index.js.map +1 -0
- package/dist/components/feedback/toast/toast.d.ts +40 -0
- package/dist/components/feedback/toast/toast.d.ts.map +1 -0
- package/dist/components/feedback/toast/toast.js +67 -0
- package/dist/components/feedback/toast/toast.js.map +1 -0
- package/dist/components/forms/checkbox/checkbox.d.ts +15 -0
- package/dist/components/forms/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/forms/checkbox/checkbox.js +23 -0
- package/dist/components/forms/checkbox/checkbox.js.map +1 -0
- package/dist/components/forms/checkbox/index.d.ts +2 -0
- package/dist/components/forms/checkbox/index.d.ts.map +1 -0
- package/dist/components/forms/checkbox/index.js +2 -0
- package/dist/components/forms/checkbox/index.js.map +1 -0
- package/dist/components/forms/combobox/combobox.d.ts +35 -0
- package/dist/components/forms/combobox/combobox.d.ts.map +1 -0
- package/dist/components/forms/combobox/combobox.js +152 -0
- package/dist/components/forms/combobox/combobox.js.map +1 -0
- package/dist/components/forms/combobox/index.d.ts +2 -0
- package/dist/components/forms/combobox/index.d.ts.map +1 -0
- package/dist/components/forms/combobox/index.js +2 -0
- package/dist/components/forms/combobox/index.js.map +1 -0
- package/dist/components/forms/form-field/form-field.d.ts +65 -0
- package/dist/components/forms/form-field/form-field.d.ts.map +1 -0
- package/dist/components/forms/form-field/form-field.js +101 -0
- package/dist/components/forms/form-field/form-field.js.map +1 -0
- package/dist/components/forms/form-field/index.d.ts +2 -0
- package/dist/components/forms/form-field/index.d.ts.map +1 -0
- package/dist/components/forms/form-field/index.js +2 -0
- package/dist/components/forms/form-field/index.js.map +1 -0
- package/dist/components/forms/segmented-control/index.d.ts +2 -0
- package/dist/components/forms/segmented-control/index.d.ts.map +1 -0
- package/dist/components/forms/segmented-control/index.js +2 -0
- package/dist/components/forms/segmented-control/index.js.map +1 -0
- package/dist/components/forms/segmented-control/segmented-control.d.ts +62 -0
- package/dist/components/forms/segmented-control/segmented-control.d.ts.map +1 -0
- package/dist/components/forms/segmented-control/segmented-control.js +139 -0
- package/dist/components/forms/segmented-control/segmented-control.js.map +1 -0
- package/dist/components/forms/select/index.d.ts +2 -0
- package/dist/components/forms/select/index.d.ts.map +1 -0
- package/dist/components/forms/select/index.js +2 -0
- package/dist/components/forms/select/index.js.map +1 -0
- package/dist/components/forms/select/select.d.ts +27 -0
- package/dist/components/forms/select/select.d.ts.map +1 -0
- package/dist/components/forms/select/select.js +39 -0
- package/dist/components/forms/select/select.js.map +1 -0
- package/dist/components/forms/switch/index.d.ts +2 -0
- package/dist/components/forms/switch/index.d.ts.map +1 -0
- package/dist/components/forms/switch/index.js +2 -0
- package/dist/components/forms/switch/index.js.map +1 -0
- package/dist/components/forms/switch/switch.d.ts +13 -0
- package/dist/components/forms/switch/switch.d.ts.map +1 -0
- package/dist/components/forms/switch/switch.js +21 -0
- package/dist/components/forms/switch/switch.js.map +1 -0
- package/dist/components/forms/text-field/index.d.ts +2 -0
- package/dist/components/forms/text-field/index.d.ts.map +1 -0
- package/dist/components/forms/text-field/index.js +2 -0
- package/dist/components/forms/text-field/index.js.map +1 -0
- package/dist/components/forms/text-field/text-field.d.ts +15 -0
- package/dist/components/forms/text-field/text-field.d.ts.map +1 -0
- package/dist/components/forms/text-field/text-field.js +14 -0
- package/dist/components/forms/text-field/text-field.js.map +1 -0
- package/dist/components/identity/avatar/avatar.d.ts +16 -0
- package/dist/components/identity/avatar/avatar.d.ts.map +1 -0
- package/dist/components/identity/avatar/avatar.js +28 -0
- package/dist/components/identity/avatar/avatar.js.map +1 -0
- package/dist/components/identity/avatar/index.d.ts +2 -0
- package/dist/components/identity/avatar/index.d.ts.map +1 -0
- package/dist/components/identity/avatar/index.js +2 -0
- package/dist/components/identity/avatar/index.js.map +1 -0
- package/dist/components/layout/separator/index.d.ts +2 -0
- package/dist/components/layout/separator/index.d.ts.map +1 -0
- package/dist/components/layout/separator/index.js +2 -0
- package/dist/components/layout/separator/index.js.map +1 -0
- package/dist/components/layout/separator/separator.d.ts +4 -0
- package/dist/components/layout/separator/separator.d.ts.map +1 -0
- package/dist/components/layout/separator/separator.js +9 -0
- package/dist/components/layout/separator/separator.js.map +1 -0
- package/dist/components/layout/visually-hidden/index.d.ts +2 -0
- package/dist/components/layout/visually-hidden/index.d.ts.map +1 -0
- package/dist/components/layout/visually-hidden/index.js +2 -0
- package/dist/components/layout/visually-hidden/index.js.map +1 -0
- package/dist/components/layout/visually-hidden/visually-hidden.d.ts +4 -0
- package/dist/components/layout/visually-hidden/visually-hidden.d.ts.map +1 -0
- package/dist/components/layout/visually-hidden/visually-hidden.js +7 -0
- package/dist/components/layout/visually-hidden/visually-hidden.js.map +1 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +19 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.js +19 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/navigation/breadcrumb/index.d.ts +2 -0
- package/dist/components/navigation/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/navigation/breadcrumb/index.js +2 -0
- package/dist/components/navigation/breadcrumb/index.js.map +1 -0
- package/dist/components/navigation/link/index.d.ts +2 -0
- package/dist/components/navigation/link/index.d.ts.map +1 -0
- package/dist/components/navigation/link/index.js +2 -0
- package/dist/components/navigation/link/index.js.map +1 -0
- package/dist/components/navigation/link/link.d.ts +13 -0
- package/dist/components/navigation/link/link.d.ts.map +1 -0
- package/dist/components/navigation/link/link.js +18 -0
- package/dist/components/navigation/link/link.js.map +1 -0
- package/dist/components/navigation/pagination/index.d.ts +2 -0
- package/dist/components/navigation/pagination/index.d.ts.map +1 -0
- package/dist/components/navigation/pagination/index.js +2 -0
- package/dist/components/navigation/pagination/index.js.map +1 -0
- package/dist/components/navigation/pagination/pagination.d.ts +18 -0
- package/dist/components/navigation/pagination/pagination.d.ts.map +1 -0
- package/dist/components/navigation/pagination/pagination.js +40 -0
- package/dist/components/navigation/pagination/pagination.js.map +1 -0
- package/dist/components/navigation/tabs/index.d.ts +2 -0
- package/dist/components/navigation/tabs/index.d.ts.map +1 -0
- package/dist/components/navigation/tabs/index.js +2 -0
- package/dist/components/navigation/tabs/index.js.map +1 -0
- package/dist/components/navigation/tabs/tabs.d.ts +12 -0
- package/dist/components/navigation/tabs/tabs.d.ts.map +1 -0
- package/dist/components/navigation/tabs/tabs.js +17 -0
- package/dist/components/navigation/tabs/tabs.js.map +1 -0
- package/dist/components/overlays/dialog/dialog.d.ts +22 -0
- package/dist/components/overlays/dialog/dialog.d.ts.map +1 -0
- package/dist/components/overlays/dialog/dialog.js +33 -0
- package/dist/components/overlays/dialog/dialog.js.map +1 -0
- package/dist/components/overlays/dialog/index.d.ts +2 -0
- package/dist/components/overlays/dialog/index.d.ts.map +1 -0
- package/dist/components/overlays/dialog/index.js +2 -0
- package/dist/components/overlays/dialog/index.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.d.ts +24 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.d.ts.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.js +41 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/index.d.ts +2 -0
- package/dist/components/overlays/dropdown-menu/index.d.ts.map +1 -0
- package/dist/components/overlays/dropdown-menu/index.js +2 -0
- package/dist/components/overlays/dropdown-menu/index.js.map +1 -0
- package/dist/components/overlays/popover/index.d.ts +2 -0
- package/dist/components/overlays/popover/index.d.ts.map +1 -0
- package/dist/components/overlays/popover/index.js +2 -0
- package/dist/components/overlays/popover/index.js.map +1 -0
- package/dist/components/overlays/popover/popover.d.ts +8 -0
- package/dist/components/overlays/popover/popover.d.ts.map +1 -0
- package/dist/components/overlays/popover/popover.js +14 -0
- package/dist/components/overlays/popover/popover.js.map +1 -0
- package/dist/components/overlays/tooltip/index.d.ts +2 -0
- package/dist/components/overlays/tooltip/index.d.ts.map +1 -0
- package/dist/components/overlays/tooltip/index.js +2 -0
- package/dist/components/overlays/tooltip/index.js.map +1 -0
- package/dist/components/overlays/tooltip/tooltip.d.ts +20 -0
- package/dist/components/overlays/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/overlays/tooltip/tooltip.js +12 -0
- package/dist/components/overlays/tooltip/tooltip.js.map +1 -0
- package/dist/components/technical/secret-field/index.d.ts +2 -0
- package/dist/components/technical/secret-field/index.d.ts.map +1 -0
- package/dist/components/technical/secret-field/index.js +2 -0
- package/dist/components/technical/secret-field/index.js.map +1 -0
- package/dist/components/technical/secret-field/secret-field.d.ts +38 -0
- package/dist/components/technical/secret-field/secret-field.d.ts.map +1 -0
- package/dist/components/technical/secret-field/secret-field.js +42 -0
- package/dist/components/technical/secret-field/secret-field.js.map +1 -0
- package/dist/components/typography/kbd/index.d.ts +2 -0
- package/dist/components/typography/kbd/index.d.ts.map +1 -0
- package/dist/components/typography/kbd/index.js +2 -0
- package/dist/components/typography/kbd/index.js.map +1 -0
- package/dist/components/typography/kbd/kbd.d.ts +4 -0
- package/dist/components/typography/kbd/kbd.d.ts.map +1 -0
- package/dist/components/typography/kbd/kbd.js +7 -0
- package/dist/components/typography/kbd/kbd.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/cx.d.ts +3 -0
- package/dist/internal/cx.d.ts.map +1 -0
- package/dist/internal/cx.js +6 -0
- package/dist/internal/cx.js.map +1 -0
- package/dist/internal/icons.d.ts +20 -0
- package/dist/internal/icons.d.ts.map +1 -0
- package/dist/internal/icons.js +63 -0
- package/dist/internal/icons.js.map +1 -0
- package/dist/manifest.json +4484 -0
- package/dist/patterns/actions/toolbar/index.d.ts +2 -0
- package/dist/patterns/actions/toolbar/index.d.ts.map +1 -0
- package/dist/patterns/actions/toolbar/index.js +2 -0
- package/dist/patterns/actions/toolbar/index.js.map +1 -0
- package/dist/patterns/actions/toolbar/toolbar.d.ts +20 -0
- package/dist/patterns/actions/toolbar/toolbar.d.ts.map +1 -0
- package/dist/patterns/actions/toolbar/toolbar.js +46 -0
- package/dist/patterns/actions/toolbar/toolbar.js.map +1 -0
- package/dist/patterns/layout/page-header/index.d.ts +2 -0
- package/dist/patterns/layout/page-header/index.d.ts.map +1 -0
- package/dist/patterns/layout/page-header/index.js +2 -0
- package/dist/patterns/layout/page-header/index.js.map +1 -0
- package/dist/patterns/layout/page-header/page-header.d.ts +17 -0
- package/dist/patterns/layout/page-header/page-header.d.ts.map +1 -0
- package/dist/patterns/layout/page-header/page-header.js +7 -0
- package/dist/patterns/layout/page-header/page-header.js.map +1 -0
- package/dist/patterns/layout/settings-section/index.d.ts +2 -0
- package/dist/patterns/layout/settings-section/index.d.ts.map +1 -0
- package/dist/patterns/layout/settings-section/index.js +2 -0
- package/dist/patterns/layout/settings-section/index.js.map +1 -0
- package/dist/patterns/layout/settings-section/settings-section.d.ts +33 -0
- package/dist/patterns/layout/settings-section/settings-section.d.ts.map +1 -0
- package/dist/patterns/layout/settings-section/settings-section.js +15 -0
- package/dist/patterns/layout/settings-section/settings-section.js.map +1 -0
- package/dist/patterns/layout/split-layout/index.d.ts +2 -0
- package/dist/patterns/layout/split-layout/index.d.ts.map +1 -0
- package/dist/patterns/layout/split-layout/index.js +2 -0
- package/dist/patterns/layout/split-layout/index.js.map +1 -0
- package/dist/patterns/layout/split-layout/split-layout.d.ts +21 -0
- package/dist/patterns/layout/split-layout/split-layout.d.ts.map +1 -0
- package/dist/patterns/layout/split-layout/split-layout.js +10 -0
- package/dist/patterns/layout/split-layout/split-layout.js.map +1 -0
- package/dist/patterns/search/filter-bar/filter-bar.d.ts +25 -0
- package/dist/patterns/search/filter-bar/filter-bar.d.ts.map +1 -0
- package/dist/patterns/search/filter-bar/filter-bar.js +13 -0
- package/dist/patterns/search/filter-bar/filter-bar.js.map +1 -0
- package/dist/patterns/search/filter-bar/index.d.ts +2 -0
- package/dist/patterns/search/filter-bar/index.d.ts.map +1 -0
- package/dist/patterns/search/filter-bar/index.js +2 -0
- package/dist/patterns/search/filter-bar/index.js.map +1 -0
- package/dist/styles.css +2437 -0
- package/package.json +72 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useCallback, useState, } from 'react';
|
|
4
|
+
import { cx } from '../../../internal/cx.js';
|
|
5
|
+
/** The keys that move focus, mapped to a step. `null` = not a navigation key. */
|
|
6
|
+
function stepFor(key, dir) {
|
|
7
|
+
const forward = dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
|
|
8
|
+
const back = dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
|
|
9
|
+
if (key === forward || key === 'ArrowDown')
|
|
10
|
+
return 1;
|
|
11
|
+
if (key === back || key === 'ArrowUp')
|
|
12
|
+
return -1;
|
|
13
|
+
if (key === 'Home')
|
|
14
|
+
return 'first';
|
|
15
|
+
if (key === 'End')
|
|
16
|
+
return 'last';
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
/** Index of the next enabled option, wrapping around; -1 when none is enabled. */
|
|
20
|
+
function nextEnabled(options, from, step, allDisabled) {
|
|
21
|
+
if (allDisabled)
|
|
22
|
+
return -1;
|
|
23
|
+
const n = options.length;
|
|
24
|
+
if (step === 'first')
|
|
25
|
+
return options.findIndex((o) => !o.disabled);
|
|
26
|
+
if (step === 'last') {
|
|
27
|
+
for (let i = n - 1; i >= 0; i--)
|
|
28
|
+
if (!options[i]?.disabled)
|
|
29
|
+
return i;
|
|
30
|
+
return -1;
|
|
31
|
+
}
|
|
32
|
+
for (let k = 1; k <= n; k++) {
|
|
33
|
+
const i = (((from + step * k) % n) + n) % n;
|
|
34
|
+
if (!options[i]?.disabled)
|
|
35
|
+
return i;
|
|
36
|
+
}
|
|
37
|
+
return -1;
|
|
38
|
+
}
|
|
39
|
+
function directionOf(el, dir) {
|
|
40
|
+
if (dir)
|
|
41
|
+
return dir;
|
|
42
|
+
return typeof getComputedStyle === 'function' && getComputedStyle(el).direction === 'rtl'
|
|
43
|
+
? 'rtl'
|
|
44
|
+
: 'ltr';
|
|
45
|
+
}
|
|
46
|
+
function focusOption(root, index) {
|
|
47
|
+
root?.querySelectorAll('[data-index]')[index]?.focus();
|
|
48
|
+
}
|
|
49
|
+
function OptionContent({ option }) {
|
|
50
|
+
return (_jsxs(_Fragment, { children: [option.icon ? (_jsx("span", { className: "mn-segmented-control__icon", "aria-hidden": true, children: option.icon })) : null, _jsx("span", { className: option.hideLabel ? 'mn-visually-hidden' : 'mn-segmented-control__label', children: option.label }), option.count !== undefined ? (_jsxs(_Fragment, { children: [' ', _jsx("span", { className: "mn-segmented-control__count", children: option.count })] })) : null, option.suffix ? (_jsxs(_Fragment, { children: [' ', _jsx("span", { className: "mn-segmented-control__suffix", children: option.suffix })] })) : null] }));
|
|
51
|
+
}
|
|
52
|
+
function useControllable(value, defaultValue, onChange) {
|
|
53
|
+
const [inner, setInner] = useState(defaultValue);
|
|
54
|
+
const controlled = value !== undefined;
|
|
55
|
+
const current = controlled ? value : inner;
|
|
56
|
+
const set = useCallback((next) => {
|
|
57
|
+
if (!controlled)
|
|
58
|
+
setInner(next);
|
|
59
|
+
onChange?.(next);
|
|
60
|
+
}, [controlled, onChange]);
|
|
61
|
+
return [current, set];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A single choice from 2–5 short options, shown as one connected control:
|
|
65
|
+
* view switches (list/board), periods (monthly/yearly), filters. It is a
|
|
66
|
+
* radio group (WAI-ARIA APG): one Tab stop, arrow keys move and select,
|
|
67
|
+
* Home/End jump. For several independent on/off choices use ToggleGroup;
|
|
68
|
+
* when each option shows its own panel use Tabs.
|
|
69
|
+
*/
|
|
70
|
+
function SegmentedControlInner({ options, value: valueProp, defaultValue, onValueChange, size = 'md', block = false, disabled = false, dir, name, required, className, ...rest }, ref) {
|
|
71
|
+
const [value, setValue] = useControllable(valueProp, defaultValue, onValueChange);
|
|
72
|
+
const selectedIndex = options.findIndex((o) => o.value === value);
|
|
73
|
+
// The one Tab stop: the selected option, or the first enabled one.
|
|
74
|
+
const tabStop = selectedIndex >= 0 && !options[selectedIndex]?.disabled
|
|
75
|
+
? selectedIndex
|
|
76
|
+
: nextEnabled(options, 0, 'first', disabled);
|
|
77
|
+
const handleKeyDown = (event, from) => {
|
|
78
|
+
const step = stepFor(event.key, directionOf(event.currentTarget, dir));
|
|
79
|
+
if (step === null)
|
|
80
|
+
return;
|
|
81
|
+
const to = nextEnabled(options, from, step, disabled);
|
|
82
|
+
const option = options[to];
|
|
83
|
+
if (!option)
|
|
84
|
+
return;
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
focusOption(event.currentTarget.parentElement, to);
|
|
87
|
+
// Radio pattern: selection follows focus.
|
|
88
|
+
if (option.value !== value)
|
|
89
|
+
setValue(option.value);
|
|
90
|
+
};
|
|
91
|
+
return (_jsxs("div", { ref: ref, role: "radiogroup", ...rest, dir: dir, "aria-disabled": disabled || undefined, "aria-required": required || undefined, className: cx('mn-segmented-control', className), "data-size": size, "data-block": block || undefined, "data-disabled": disabled || undefined, children: [options.map((option, index) => {
|
|
92
|
+
const checked = index === selectedIndex;
|
|
93
|
+
const off = disabled || option.disabled;
|
|
94
|
+
return (_jsx("button", { type: "button", role: "radio", "aria-checked": checked, tabIndex: index === tabStop ? 0 : -1, disabled: off || undefined, title: option.hideLabel ? option.label : undefined, "data-index": index, "data-state": checked ? 'on' : 'off', "data-icon-only": option.hideLabel || undefined, className: "mn-segmented-control__item", onKeyDown: (event) => handleKeyDown(event, index), onClick: () => {
|
|
95
|
+
if (!checked)
|
|
96
|
+
setValue(option.value);
|
|
97
|
+
}, children: _jsx(OptionContent, { option: option }) }, option.value));
|
|
98
|
+
}), name !== undefined ? _jsx("input", { type: "hidden", name: name, value: value ?? '' }) : null] }));
|
|
99
|
+
}
|
|
100
|
+
export const SegmentedControl = forwardRef(SegmentedControlInner);
|
|
101
|
+
/**
|
|
102
|
+
* Several independent on/off choices shown as one connected control, for
|
|
103
|
+
* example a set of filters. Each option is a toggle button (`aria-pressed`)
|
|
104
|
+
* inside a labelled group. One Tab stop; arrow keys move focus, Space or
|
|
105
|
+
* Enter toggles.
|
|
106
|
+
*/
|
|
107
|
+
function ToggleGroupInner({ options, value: valueProp, defaultValue, onValueChange, size = 'md', block = false, disabled = false, dir, className, ...rest }, ref) {
|
|
108
|
+
const [value, setValue] = useControllable(valueProp, defaultValue ?? [], onValueChange);
|
|
109
|
+
// Roving focus remembers the last focused option, independent of what is pressed.
|
|
110
|
+
const [active, setActive] = useState(() => Math.max(0, nextEnabled(options, 0, 'first', disabled)));
|
|
111
|
+
const tabStop = options[active] && !options[active]?.disabled
|
|
112
|
+
? active
|
|
113
|
+
: nextEnabled(options, 0, 'first', disabled);
|
|
114
|
+
const handleKeyDown = (event, from) => {
|
|
115
|
+
const step = stepFor(event.key, directionOf(event.currentTarget, dir));
|
|
116
|
+
if (step === null)
|
|
117
|
+
return;
|
|
118
|
+
const to = nextEnabled(options, from, step, disabled);
|
|
119
|
+
if (to < 0)
|
|
120
|
+
return;
|
|
121
|
+
event.preventDefault();
|
|
122
|
+
setActive(to);
|
|
123
|
+
focusOption(event.currentTarget.parentElement, to);
|
|
124
|
+
};
|
|
125
|
+
return (_jsx("div", { ref: ref, role: "group", ...rest, dir: dir, "aria-disabled": disabled || undefined, className: cx('mn-segmented-control', className), "data-size": size, "data-block": block || undefined, "data-disabled": disabled || undefined, "data-multiple": "", children: options.map((option, index) => {
|
|
126
|
+
const pressed = value.includes(option.value);
|
|
127
|
+
const off = disabled || option.disabled;
|
|
128
|
+
return (_jsx("button", { type: "button", "aria-pressed": pressed, tabIndex: index === tabStop ? 0 : -1, disabled: off || undefined, title: option.hideLabel ? option.label : undefined, "data-index": index, "data-state": pressed ? 'on' : 'off', "data-icon-only": option.hideLabel || undefined, className: "mn-segmented-control__item", onFocus: () => setActive(index), onKeyDown: (event) => handleKeyDown(event, index), onClick: () => {
|
|
129
|
+
const next = pressed
|
|
130
|
+
? value.filter((v) => v !== option.value)
|
|
131
|
+
: options
|
|
132
|
+
.filter((o) => o.value === option.value || value.includes(o.value))
|
|
133
|
+
.map((o) => o.value);
|
|
134
|
+
setValue(next);
|
|
135
|
+
}, children: _jsx(OptionContent, { option: option }) }, option.value));
|
|
136
|
+
}) }));
|
|
137
|
+
}
|
|
138
|
+
export const ToggleGroup = forwardRef(ToggleGroupInner);
|
|
139
|
+
//# sourceMappingURL=segmented-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-control.js","sourceRoot":"","sources":["../../../../src/components/forms/segmented-control/segmented-control.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/select/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/select/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
3
|
+
/**
|
|
4
|
+
* Single-value select built on Radix Select: typeahead, arrow-key navigation,
|
|
5
|
+
* and screen-reader semantics come from the primitive.
|
|
6
|
+
*
|
|
7
|
+
* <Select value={v} onValueChange={setV}>
|
|
8
|
+
* <SelectTrigger placeholder="Choose a status" />
|
|
9
|
+
* <SelectContent>
|
|
10
|
+
* <SelectItem value="open">Open</SelectItem>
|
|
11
|
+
* </SelectContent>
|
|
12
|
+
* </Select>
|
|
13
|
+
*/
|
|
14
|
+
export declare const Select: import("react").FC<SelectPrimitive.SelectProps>;
|
|
15
|
+
export declare const SelectGroup: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
16
|
+
export declare const SelectValue: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
17
|
+
export interface SelectTriggerProps extends ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {
|
|
18
|
+
placeholder?: string;
|
|
19
|
+
size?: 'sm' | 'md' | 'lg';
|
|
20
|
+
invalid?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare const SelectTrigger: import("react").ForwardRefExoticComponent<SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
23
|
+
export declare const SelectContent: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
24
|
+
export declare const SelectItem: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
25
|
+
export declare const SelectLabel: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
26
|
+
export declare const SelectSeparator: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
27
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/select/select.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,wBAAwB,EAAmB,MAAM,OAAO,CAAC;AACnF,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAK1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,iDAAuB,CAAC;AAC3C,eAAO,MAAM,WAAW,6HAAwB,CAAC;AACjD,eAAO,MAAM,WAAW,8HAAwB,CAAC;AAEjD,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB,CAClE,OAAO,eAAe,CAAC,OAAO,CAC/B;IACC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,kHAuBxB,CAAC;AAEH,eAAO,MAAM,aAAa,4LAsBxB,CAAC;AAEH,eAAO,MAAM,UAAU,yLAYrB,CAAC;AAEH,eAAO,MAAM,WAAW,0LAKtB,CAAC;AAEH,eAAO,MAAM,eAAe,8LAW1B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
5
|
+
import { cx } from '../../../internal/cx.js';
|
|
6
|
+
import { CheckGlyph, ChevronDownGlyph } from '../../../internal/icons.js';
|
|
7
|
+
import { useFieldControl } from '../form-field/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Single-value select built on Radix Select: typeahead, arrow-key navigation,
|
|
10
|
+
* and screen-reader semantics come from the primitive.
|
|
11
|
+
*
|
|
12
|
+
* <Select value={v} onValueChange={setV}>
|
|
13
|
+
* <SelectTrigger placeholder="Choose a status" />
|
|
14
|
+
* <SelectContent>
|
|
15
|
+
* <SelectItem value="open">Open</SelectItem>
|
|
16
|
+
* </SelectContent>
|
|
17
|
+
* </Select>
|
|
18
|
+
*/
|
|
19
|
+
export const Select = SelectPrimitive.Root;
|
|
20
|
+
export const SelectGroup = SelectPrimitive.Group;
|
|
21
|
+
export const SelectValue = SelectPrimitive.Value;
|
|
22
|
+
export const SelectTrigger = forwardRef(function SelectTrigger({ placeholder, size = 'md', invalid, className, children, ...rest }, ref) {
|
|
23
|
+
// `required` is not a valid attribute on the trigger <button>; aria-required carries the meaning.
|
|
24
|
+
const { required: _required, ...props } = useFieldControl(rest, { invalid });
|
|
25
|
+
return (_jsxs(SelectPrimitive.Trigger, { ref: ref, ...props, "data-size": size, className: cx('mn-input', 'mn-select', className), children: [children ?? _jsx(SelectPrimitive.Value, { placeholder: placeholder }), _jsx(SelectPrimitive.Icon, { className: "mn-select__icon", children: _jsx(ChevronDownGlyph, {}) })] }));
|
|
26
|
+
});
|
|
27
|
+
export const SelectContent = forwardRef(function SelectContent({ className, children, position = 'popper', sideOffset = 4, ...rest }, ref) {
|
|
28
|
+
return (_jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Content, { ref: ref, position: position, sideOffset: sideOffset, ...rest, className: cx('mn-menu', 'mn-select__content', className), children: _jsx(SelectPrimitive.Viewport, { className: "mn-select__viewport", children: children }) }) }));
|
|
29
|
+
});
|
|
30
|
+
export const SelectItem = forwardRef(function SelectItem({ className, children, ...rest }, ref) {
|
|
31
|
+
return (_jsxs(SelectPrimitive.Item, { ref: ref, ...rest, className: cx('mn-menu__item', className), children: [_jsx(SelectPrimitive.ItemText, { children: children }), _jsx(SelectPrimitive.ItemIndicator, { className: "mn-menu__indicator", children: _jsx(CheckGlyph, {}) })] }));
|
|
32
|
+
});
|
|
33
|
+
export const SelectLabel = forwardRef(function SelectLabel({ className, ...rest }, ref) {
|
|
34
|
+
return _jsx(SelectPrimitive.Label, { ref: ref, ...rest, className: cx('mn-menu__label', className) });
|
|
35
|
+
});
|
|
36
|
+
export const SelectSeparator = forwardRef(function SelectSeparator({ className, ...rest }, ref) {
|
|
37
|
+
return (_jsx(SelectPrimitive.Separator, { ref: ref, ...rest, className: cx('mn-menu__separator', className) }));
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/components/forms/select/select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/switch/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/switch/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
|
|
2
|
+
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
3
|
+
export interface SwitchProps extends ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {
|
|
4
|
+
label?: ReactNode;
|
|
5
|
+
description?: ReactNode;
|
|
6
|
+
size?: 'sm' | 'md';
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An on/off setting that applies immediately. For choices that are submitted
|
|
10
|
+
* with a form, prefer Checkbox.
|
|
11
|
+
*/
|
|
12
|
+
export declare const Switch: import("react").ForwardRefExoticComponent<SwitchProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
13
|
+
//# sourceMappingURL=switch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/switch/switch.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAI1D,MAAM,WAAW,WAAY,SAAQ,wBAAwB,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC;IACxF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,2GAsClB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useId, } from 'react';
|
|
4
|
+
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
5
|
+
import { cx } from '../../../internal/cx.js';
|
|
6
|
+
import { useFieldControl } from '../form-field/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* An on/off setting that applies immediately. For choices that are submitted
|
|
9
|
+
* with a form, prefer Checkbox.
|
|
10
|
+
*/
|
|
11
|
+
export const Switch = forwardRef(function Switch({ label, description, size = 'md', className, ...rest }, ref) {
|
|
12
|
+
const auto = useId();
|
|
13
|
+
const props = useFieldControl(rest);
|
|
14
|
+
const id = props.id ?? `mn-switch-${auto}`;
|
|
15
|
+
const descriptionId = description ? `${id}-description` : undefined;
|
|
16
|
+
const control = (_jsx(SwitchPrimitive.Root, { ref: ref, ...props, id: id, "aria-describedby": cx(props['aria-describedby'], descriptionId), "data-size": size, className: cx('mn-switch', label ? undefined : className), children: _jsx(SwitchPrimitive.Thumb, { className: "mn-switch__thumb" }) }));
|
|
17
|
+
if (!label)
|
|
18
|
+
return control;
|
|
19
|
+
return (_jsxs("div", { className: cx('mn-choice', 'mn-choice--switch', className), "data-disabled": props.disabled || undefined, children: [_jsxs("div", { className: "mn-choice__text", children: [_jsx("label", { htmlFor: id, className: "mn-choice__label", children: label }), description ? (_jsx("p", { id: descriptionId, className: "mn-choice__description", children: description })) : null] }), control] }));
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../src/components/forms/switch/switch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,UAAU,EACV,KAAK,GAIN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAC9B,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG;IAC1E,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,aAAa,IAAI,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,MAAM,OAAO,GAAG,CACd,KAAC,eAAe,CAAC,IAAI,IACnB,GAAG,EAAE,GAAG,KACJ,KAAK,EACT,EAAE,EAAE,EAAE,sBACY,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,eACnD,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,YAEzD,KAAC,eAAe,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,GAAG,GACjC,CACxB,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3B,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,mBAAmB,EAAE,SAAS,CAAC,mBAC3C,KAAK,CAAC,QAAQ,IAAI,SAAS,aAE1C,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAE,EAAE,EAAE,SAAS,EAAC,kBAAkB,YAC7C,KAAK,GACA,EACP,WAAW,CAAC,CAAC,CAAC,CACb,YAAG,EAAE,EAAE,aAAa,EAAE,SAAS,EAAC,wBAAwB,YACrD,WAAW,GACV,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,OAAO,IACJ,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/text-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/text-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type TextareaHTMLAttributes } from 'react';
|
|
2
|
+
export type ControlSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
4
|
+
size?: ControlSize;
|
|
5
|
+
/** Marks the value invalid. Inside a Field, the Field's `invalid` is used. */
|
|
6
|
+
invalid?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
9
|
+
export interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
10
|
+
invalid?: boolean;
|
|
11
|
+
/** Allow vertical resizing. Default true. */
|
|
12
|
+
resizable?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const Textarea: import("react").ForwardRefExoticComponent<TextareaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
|
|
15
|
+
//# sourceMappingURL=text-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/text-field/text-field.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAI1F,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACrF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,KAAK,yGAMhB,CAAC;AAEH,MAAM,WAAW,aAAc,SAAQ,sBAAsB,CAAC,mBAAmB,CAAC;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,+GAcnB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { cx } from '../../../internal/cx.js';
|
|
5
|
+
import { useFieldControl } from '../form-field/index.js';
|
|
6
|
+
export const Input = forwardRef(function Input({ size = 'md', invalid, className, ...rest }, ref) {
|
|
7
|
+
const props = useFieldControl(rest, { invalid });
|
|
8
|
+
return _jsx("input", { ref: ref, ...props, "data-size": size, className: cx('mn-input', className) });
|
|
9
|
+
});
|
|
10
|
+
export const Textarea = forwardRef(function Textarea({ invalid, resizable = true, rows = 3, className, ...rest }, ref) {
|
|
11
|
+
const props = useFieldControl(rest, { invalid });
|
|
12
|
+
return (_jsx("textarea", { ref: ref, rows: rows, ...props, "data-resizable": resizable || undefined, className: cx('mn-input', 'mn-textarea', className) }));
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=text-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../../../src/components/forms/text-field/text-field.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAyD,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAA+B,SAAS,KAAK,CAC1E,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAC5C,GAAG;IAEH,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,gBAAO,GAAG,EAAE,GAAG,KAAM,KAAK,eAAa,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,GAAI,CAAC;AAC/F,CAAC,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAqC,SAAS,QAAQ,CACtF,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAC3D,GAAG;IAEH,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,CACL,mBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,KACN,KAAK,oBACO,SAAS,IAAI,SAAS,EACtC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,GACnD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
export interface AvatarProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
3
|
+
/** Person or entity name. Used for the image alt text and the initials fallback. */
|
|
4
|
+
name: string;
|
|
5
|
+
src?: string | null;
|
|
6
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
7
|
+
shape?: 'circle' | 'square';
|
|
8
|
+
/**
|
|
9
|
+
* Set when a visible name sits next to the avatar, so screen readers do not
|
|
10
|
+
* hear the name twice.
|
|
11
|
+
*/
|
|
12
|
+
decorative?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function initials(name: string): string;
|
|
15
|
+
export declare function Avatar({ name, src, size, shape, decorative, className, style, ...rest }: AvatarProps): import("react").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../../src/components/identity/avatar/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAGtD,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IACpF,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM7C;AASD,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,GAAG,EACH,IAAW,EACX,KAAgB,EAChB,UAAkB,EAClB,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,WAAW,+BA6Bb"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { cx } from '../../../internal/cx.js';
|
|
5
|
+
export function initials(name) {
|
|
6
|
+
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
7
|
+
if (parts.length === 0)
|
|
8
|
+
return '?';
|
|
9
|
+
const first = parts[0]?.charAt(0) ?? '';
|
|
10
|
+
const last = parts.length > 1 ? (parts[parts.length - 1]?.charAt(0) ?? '') : '';
|
|
11
|
+
return (first + last).toUpperCase();
|
|
12
|
+
}
|
|
13
|
+
/** Stable hue per name so the same person gets the same fallback colour everywhere. */
|
|
14
|
+
function hueFor(name) {
|
|
15
|
+
let h = 0;
|
|
16
|
+
for (let i = 0; i < name.length; i++)
|
|
17
|
+
h = (h * 31 + name.charCodeAt(i)) % 360;
|
|
18
|
+
return h;
|
|
19
|
+
}
|
|
20
|
+
export function Avatar({ name, src, size = 'md', shape = 'circle', decorative = false, className, style, ...rest }) {
|
|
21
|
+
const [failed, setFailed] = useState(false);
|
|
22
|
+
const showImage = Boolean(src) && !failed;
|
|
23
|
+
const a11y = decorative
|
|
24
|
+
? { 'aria-hidden': true }
|
|
25
|
+
: { role: 'img', 'aria-label': name };
|
|
26
|
+
return (_jsx("span", { ...rest, ...a11y, className: cx('mn-avatar', className), "data-size": size, "data-shape": shape, style: { ...style, ['--mn-avatar-hue']: String(hueFor(name)) }, children: showImage ? (_jsx("img", { className: "mn-avatar__image", src: src ?? undefined, alt: "", onError: () => setFailed(true) })) : (_jsx("span", { className: "mn-avatar__initials", "aria-hidden": true, children: initials(name) })) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../../src/components/identity/avatar/avatar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAuB,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAe7C,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC;AAED,uFAAuF;AACvF,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9E,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,IAAI,EACJ,GAAG,EACH,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,QAAQ,EAChB,UAAU,GAAG,KAAK,EAClB,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACK;IACZ,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,UAAU;QACrB,CAAC,CAAC,EAAE,aAAa,EAAE,IAAa,EAAE;QAClC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAc,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACjD,OAAO,CACL,kBACM,IAAI,KACJ,IAAI,EACR,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,eAC1B,IAAI,gBACH,KAAK,EACjB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,iBAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,YAEvE,SAAS,CAAC,CAAC,CAAC,CACX,cACE,SAAS,EAAC,kBAAkB,EAC5B,GAAG,EAAE,GAAG,IAAI,SAAS,EACrB,GAAG,EAAC,EAAE,EACN,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAC9B,CACH,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,qBAAqB,iCAClC,QAAQ,CAAC,IAAI,CAAC,GACV,CACR,GACI,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/identity/avatar/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/identity/avatar/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/separator/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/layout/separator/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
2
|
+
/** Visual divider. `decorative` (default) hides it from assistive technology. */
|
|
3
|
+
export declare const Separator: import("react").ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
4
|
+
//# sourceMappingURL=separator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/separator/separator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAGhE,iFAAiF;AACjF,eAAO,MAAM,SAAS,2LAapB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
4
|
+
import { cx } from '../../../internal/cx.js';
|
|
5
|
+
/** Visual divider. `decorative` (default) hides it from assistive technology. */
|
|
6
|
+
export const Separator = forwardRef(function Separator({ className, orientation = 'horizontal', decorative = true, ...rest }, ref) {
|
|
7
|
+
return (_jsx(SeparatorPrimitive.Root, { ref: ref, orientation: orientation, decorative: decorative, ...rest, className: cx('mn-separator', className) }));
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=separator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.js","sourceRoot":"","sources":["../../../../src/components/layout/separator/separator.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAkD,MAAM,OAAO,CAAC;AACnF,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAE7C,iFAAiF;AACjF,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAGjC,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,GAAG,YAAY,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG;IAC7F,OAAO,CACL,KAAC,kBAAkB,CAAC,IAAI,IACtB,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,KAClB,IAAI,EACR,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,GACxC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/visually-hidden/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/layout/visually-hidden/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
/** Hides content visually while keeping it available to assistive technology. */
|
|
3
|
+
export declare function VisuallyHidden({ className, ...rest }: HTMLAttributes<HTMLSpanElement>): import("react").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=visually-hidden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visually-hidden.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/visually-hidden/visually-hidden.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,eAAe,CAAC,+BAErF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from '../../../internal/cx.js';
|
|
3
|
+
/** Hides content visually while keeping it available to assistive technology. */
|
|
4
|
+
export function VisuallyHidden({ className, ...rest }) {
|
|
5
|
+
return _jsx("span", { ...rest, className: cx('mn-visually-hidden', className) });
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=visually-hidden.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visually-hidden.js","sourceRoot":"","sources":["../../../../src/components/layout/visually-hidden/visually-hidden.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAE7C,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAmC;IACpF,OAAO,kBAAU,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAI,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type AnchorHTMLAttributes, type ElementType, type ReactNode } from 'react';
|
|
2
|
+
export interface BreadcrumbItem {
|
|
3
|
+
label: ReactNode;
|
|
4
|
+
/** Omit on the current page. */
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface BreadcrumbProps {
|
|
8
|
+
items: BreadcrumbItem[];
|
|
9
|
+
/** Show at most this many items; the middle ones collapse into a menu. Default 4. */
|
|
10
|
+
maxVisible?: number;
|
|
11
|
+
/** Link component, e.g. Next.js `Link`. Defaults to `a`. */
|
|
12
|
+
linkAs?: ElementType<AnchorHTMLAttributes<HTMLAnchorElement>>;
|
|
13
|
+
/** Accessible name of the nav. */
|
|
14
|
+
label?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Location trail. The last item is the current page (`aria-current="page"`). */
|
|
18
|
+
export declare function Breadcrumb({ items, maxVisible, linkAs: LinkComp, label, className, }: BreadcrumbProps): import("react").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=breadcrumb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/breadcrumb/breadcrumb.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,oBAAoB,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAU9F,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC9D,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,UAAc,EACd,MAAM,EAAE,QAAc,EACtB,KAAoB,EACpB,SAAS,GACV,EAAE,eAAe,+BAoDjB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Fragment } from 'react';
|
|
4
|
+
import { cx } from '../../../internal/cx.js';
|
|
5
|
+
import { ChevronRightGlyph } from '../../../internal/icons.js';
|
|
6
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '../../overlays/dropdown-menu/index.js';
|
|
7
|
+
/** Location trail. The last item is the current page (`aria-current="page"`). */
|
|
8
|
+
export function Breadcrumb({ items, maxVisible = 4, linkAs: LinkComp = 'a', label = 'Breadcrumb', className, }) {
|
|
9
|
+
const collapse = items.length > maxVisible;
|
|
10
|
+
const head = collapse ? items.slice(0, 1) : items;
|
|
11
|
+
const hidden = collapse ? items.slice(1, items.length - (maxVisible - 2)) : [];
|
|
12
|
+
const tail = collapse ? items.slice(items.length - (maxVisible - 2)) : [];
|
|
13
|
+
const visible = collapse ? [...head, 'menu', ...tail] : head;
|
|
14
|
+
return (_jsx("nav", { "aria-label": label, className: cx('mn-breadcrumb', className), children: _jsx("ol", { className: "mn-breadcrumb__list", children: visible.map((item, i) => {
|
|
15
|
+
const last = i === visible.length - 1;
|
|
16
|
+
return (_jsxs(Fragment, { children: [_jsx("li", { className: "mn-breadcrumb__item", children: item === 'menu' ? (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { className: "mn-breadcrumb__more", "aria-label": `Show ${hidden.length} more levels`, children: "\u2026" }), _jsx(DropdownMenuContent, { children: hidden.map((h, j) => (_jsx(DropdownMenuItem, { asChild: true, children: _jsx(LinkComp, { href: h.href, children: h.label }) }, j))) })] })) : last || !item.href ? (_jsx("span", { className: "mn-breadcrumb__current", "aria-current": last ? 'page' : undefined, children: item.label })) : (_jsx(LinkComp, { href: item.href, className: "mn-breadcrumb__link", children: item.label })) }), !last ? (_jsx("li", { "aria-hidden": true, className: "mn-breadcrumb__sep", children: _jsx(ChevronRightGlyph, {}) })) : null] }, i));
|
|
17
|
+
}) }) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../../../src/components/navigation/breadcrumb/breadcrumb.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/breadcrumb/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|