asheeui 0.6.15 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AsheeUIProvider.d.ts.map +1 -1
- package/dist/AsheeUIProvider.js +29 -24
- package/dist/components/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/accordion/Accordion.js +81 -173
- package/dist/components/accordion/accordion-config.js +12 -13
- package/dist/components/accordion/accordion-styles.js +21 -24
- package/dist/components/alert/Alert.d.ts +88 -0
- package/dist/components/alert/Alert.d.ts.map +1 -0
- package/dist/components/alert/Alert.js +61 -0
- package/dist/components/alert/alert-config.d.ts +56 -0
- package/dist/components/alert/alert-config.d.ts.map +1 -0
- package/dist/components/alert/alert-config.js +14 -0
- package/dist/components/alert/alert-styles.d.ts +32 -0
- package/dist/components/alert/alert-styles.d.ts.map +1 -0
- package/dist/components/alert/alert-styles.js +20 -0
- package/dist/components/alert/index.d.ts +3 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +3 -0
- package/dist/components/autocomplete/Autocomplete.d.ts +6 -6
- package/dist/components/autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/components/autocomplete/Autocomplete.js +114 -136
- package/dist/components/autocomplete/autocomplete-config.d.ts +1 -1
- package/dist/components/autocomplete/autocomplete-config.d.ts.map +1 -1
- package/dist/components/autocomplete/autocomplete-config.js +7 -12
- package/dist/components/avatar/Avatar.d.ts +87 -0
- package/dist/components/avatar/Avatar.d.ts.map +1 -0
- package/dist/components/avatar/Avatar.js +43 -0
- package/dist/components/avatar/avatar-config.d.ts +48 -0
- package/dist/components/avatar/avatar-config.d.ts.map +1 -0
- package/dist/components/avatar/avatar-config.js +14 -0
- package/dist/components/avatar/avatar-styles.d.ts +21 -0
- package/dist/components/avatar/avatar-styles.d.ts.map +1 -0
- package/dist/components/avatar/avatar-styles.js +13 -0
- package/dist/components/avatar/avatar.helpers.d.ts +19 -0
- package/dist/components/avatar/avatar.helpers.d.ts.map +1 -0
- package/dist/components/avatar/avatar.helpers.js +11 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +4 -0
- package/dist/components/badge/Badge.d.ts +69 -0
- package/dist/components/badge/Badge.d.ts.map +1 -0
- package/dist/components/badge/Badge.js +39 -0
- package/dist/components/badge/badge-config.d.ts +63 -0
- package/dist/components/badge/badge-config.d.ts.map +1 -0
- package/dist/components/badge/badge-config.js +15 -0
- package/dist/components/badge/badge-styles.d.ts +27 -0
- package/dist/components/badge/badge-styles.d.ts.map +1 -0
- package/dist/components/badge/badge-styles.js +25 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +3 -0
- package/dist/components/breadcrumb/Breadcrumb.d.ts +106 -0
- package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb/Breadcrumb.js +52 -0
- package/dist/components/breadcrumb/breadcrumb-config.d.ts +41 -0
- package/dist/components/breadcrumb/breadcrumb-config.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb-config.js +10 -0
- package/dist/components/breadcrumb/breadcrumb-styles.d.ts +28 -0
- package/dist/components/breadcrumb/breadcrumb-styles.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb-styles.js +17 -0
- package/dist/components/breadcrumb/index.d.ts +3 -0
- package/dist/components/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/breadcrumb/index.js +3 -0
- package/dist/components/button/Button.d.ts +29 -1
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.js +50 -108
- package/dist/components/button/button-config.js +16 -17
- package/dist/components/button/button-styles.js +10 -11
- package/dist/components/{date-picker/DatePicker.d.ts → calendar/Calendar.d.ts} +22 -22
- package/dist/components/calendar/Calendar.d.ts.map +1 -0
- package/dist/components/calendar/Calendar.js +123 -0
- package/dist/components/{date-picker/Calendar.d.ts → calendar/DateGrid.d.ts} +7 -7
- package/dist/components/calendar/DateGrid.d.ts.map +1 -0
- package/dist/components/calendar/DateGrid.js +194 -0
- package/dist/components/calendar/TimeSpinner.d.ts.map +1 -0
- package/dist/components/calendar/TimeSpinner.js +60 -0
- package/dist/components/{date-picker/date-picker-config.d.ts → calendar/calendar-config.d.ts} +17 -17
- package/dist/components/calendar/calendar-config.d.ts.map +1 -0
- package/dist/components/calendar/calendar-config.js +15 -0
- package/dist/components/{date-picker/date-picker-styles.d.ts → calendar/calendar-styles.d.ts} +1 -1
- package/dist/components/calendar/calendar-styles.d.ts.map +1 -0
- package/dist/components/calendar/calendar-styles.js +46 -0
- package/dist/components/{date-picker/date-picker.helpers.d.ts → calendar/calendar.helpers.d.ts} +9 -9
- package/dist/components/calendar/calendar.helpers.d.ts.map +1 -0
- package/dist/components/calendar/calendar.helpers.js +82 -0
- package/dist/components/calendar/index.d.ts +3 -0
- package/dist/components/calendar/index.d.ts.map +1 -0
- package/dist/components/calendar/index.js +6 -0
- package/dist/components/card/Card.d.ts +36 -16
- package/dist/components/card/Card.d.ts.map +1 -1
- package/dist/components/card/Card.js +115 -205
- package/dist/components/card/card-config.js +24 -21
- package/dist/components/card/card-styles.js +19 -22
- package/dist/components/carousel/Carousel.d.ts.map +1 -1
- package/dist/components/carousel/Carousel.js +125 -248
- package/dist/components/carousel/carousel-config.js +24 -25
- package/dist/components/carousel/carousel-styles.d.ts +1 -20
- package/dist/components/carousel/carousel-styles.d.ts.map +1 -1
- package/dist/components/carousel/carousel-styles.js +14 -16
- package/dist/components/chip/Chip.js +84 -191
- package/dist/components/chip/chip-config.js +13 -14
- package/dist/components/chip/chip-styles.js +22 -26
- package/dist/components/drawer/Drawer.d.ts +33 -11
- package/dist/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.js +70 -131
- package/dist/components/drawer/drawer-config.js +14 -15
- package/dist/components/drawer/drawer-styles.js +38 -42
- package/dist/components/{select/Select.d.ts → dropmenu/Dropmenu.d.ts} +22 -21
- package/dist/components/dropmenu/Dropmenu.d.ts.map +1 -0
- package/dist/components/dropmenu/Dropmenu.js +102 -0
- package/dist/components/{select/select-config.d.ts → dropmenu/dropmenu-config.d.ts} +8 -8
- package/dist/components/dropmenu/dropmenu-config.d.ts.map +1 -0
- package/dist/components/dropmenu/dropmenu-config.js +9 -0
- package/dist/components/{select/select-styles.d.ts → dropmenu/dropmenu-styles.d.ts} +1 -1
- package/dist/components/dropmenu/dropmenu-styles.d.ts.map +1 -0
- package/dist/components/dropmenu/dropmenu-styles.js +6 -0
- package/dist/components/dropmenu/index.d.ts +3 -0
- package/dist/components/dropmenu/index.d.ts.map +1 -0
- package/dist/components/dropmenu/index.js +3 -0
- package/dist/components/field/FieldShell.d.ts +13 -1
- package/dist/components/field/FieldShell.d.ts.map +1 -1
- package/dist/components/field/FieldShell.js +50 -56
- package/dist/components/field/field-config.js +17 -18
- package/dist/components/field/field-styles.js +8 -8
- package/dist/components/form/Form.d.ts +109 -0
- package/dist/components/form/Form.d.ts.map +1 -0
- package/dist/components/form/Form.js +42 -0
- package/dist/components/form/form-config.d.ts +57 -0
- package/dist/components/form/form-config.d.ts.map +1 -0
- package/dist/components/form/form-config.js +12 -0
- package/dist/components/form/form-styles.d.ts +27 -0
- package/dist/components/form/form-styles.d.ts.map +1 -0
- package/dist/components/form/form-styles.js +5 -0
- package/dist/components/form/index.d.ts +3 -0
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/index.js +3 -0
- package/dist/components/image/Image.d.ts +8 -9
- package/dist/components/image/Image.d.ts.map +1 -1
- package/dist/components/image/Image.js +65 -132
- package/dist/components/image/image-config.js +17 -18
- package/dist/components/image/image-styles.js +14 -15
- package/dist/components/input/Input.js +65 -150
- package/dist/components/input/PasswordInput.js +30 -49
- package/dist/components/input/input-config.js +7 -7
- package/dist/components/input/input-styles.js +9 -10
- package/dist/components/keyboard/KeyboardContext.js +10 -11
- package/dist/components/keyboard/KeyboardProvider.js +100 -181
- package/dist/components/keyboard/OnScreenKeyboard.d.ts.map +1 -1
- package/dist/components/keyboard/OnScreenKeyboard.js +159 -166
- package/dist/components/keyboard/keyboard-config.js +59 -57
- package/dist/components/keyboard/keyboard-styles.js +10 -11
- package/dist/components/keyboard/use-keyboard-field.js +29 -21
- package/dist/components/link/Link.d.ts +12 -10
- package/dist/components/link/Link.d.ts.map +1 -1
- package/dist/components/link/Link.js +47 -137
- package/dist/components/link/link-config.js +14 -15
- package/dist/components/link/link-styles.js +25 -29
- package/dist/components/marquee/Marquee.d.ts.map +1 -1
- package/dist/components/marquee/Marquee.js +58 -144
- package/dist/components/marquee/marquee-config.js +18 -19
- package/dist/components/marquee/marquee-styles.js +13 -15
- package/dist/components/{select-menu/SelectMenu.d.ts → menu/Menu.d.ts} +52 -19
- package/dist/components/menu/Menu.d.ts.map +1 -0
- package/dist/components/menu/Menu.js +161 -0
- package/dist/components/menu/index.d.ts +5 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/menu/index.js +4 -0
- package/dist/components/{select-menu/select-menu-config.d.ts → menu/menu-config.d.ts} +5 -5
- package/dist/components/menu/menu-config.d.ts.map +1 -0
- package/dist/components/menu/menu-config.js +14 -0
- package/dist/components/menu/menu-navigation.d.ts +38 -0
- package/dist/components/menu/menu-navigation.d.ts.map +1 -0
- package/dist/components/menu/menu-navigation.js +20 -0
- package/dist/components/{select-menu/use-select-floating.d.ts → menu/use-menu-floating.d.ts} +20 -10
- package/dist/components/menu/use-menu-floating.d.ts.map +1 -0
- package/dist/components/menu/use-menu-floating.js +43 -0
- package/dist/components/modal/Modal.d.ts +32 -11
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +74 -137
- package/dist/components/modal/modal-config.js +15 -16
- package/dist/components/modal/modal-styles.js +13 -14
- package/dist/components/multi-select/MultiSelect.d.ts +29 -12
- package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
- package/dist/components/multi-select/MultiSelect.js +162 -283
- package/dist/components/multi-select/multi-select-config.d.ts +24 -19
- package/dist/components/multi-select/multi-select-config.d.ts.map +1 -1
- package/dist/components/multi-select/multi-select-config.js +18 -21
- package/dist/components/multi-select/multi-select-styles.js +17 -20
- package/dist/components/pagination/Pagination.d.ts +91 -0
- package/dist/components/pagination/Pagination.d.ts.map +1 -0
- package/dist/components/pagination/Pagination.js +66 -0
- package/dist/components/pagination/index.d.ts +3 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +4 -0
- package/dist/components/pagination/pagination-config.d.ts +66 -0
- package/dist/components/pagination/pagination-config.d.ts.map +1 -0
- package/dist/components/pagination/pagination-config.js +19 -0
- package/dist/components/pagination/pagination-styles.d.ts +19 -0
- package/dist/components/pagination/pagination-styles.d.ts.map +1 -0
- package/dist/components/pagination/pagination-styles.js +5 -0
- package/dist/components/pagination/pagination.helpers.d.ts +26 -0
- package/dist/components/pagination/pagination.helpers.d.ts.map +1 -0
- package/dist/components/pagination/pagination.helpers.js +12 -0
- package/dist/components/radio/Radio.d.ts +53 -107
- package/dist/components/radio/Radio.d.ts.map +1 -1
- package/dist/components/radio/Radio.js +56 -79
- package/dist/components/radio/RadioGroup.d.ts +107 -53
- package/dist/components/radio/RadioGroup.d.ts.map +1 -1
- package/dist/components/radio/RadioGroup.js +51 -155
- package/dist/components/radio/index.d.ts +0 -1
- package/dist/components/radio/index.d.ts.map +1 -1
- package/dist/components/radio/radio-config.js +15 -16
- package/dist/components/radio/radio-context.js +6 -6
- package/dist/components/radio/radio-styles.js +55 -60
- package/dist/components/resizable-screen/ResizableScreen.d.ts +4 -4
- package/dist/components/resizable-screen/ResizableScreen.js +87 -177
- package/dist/components/resizable-screen/resizable-screen-config.js +16 -17
- package/dist/components/scrollbar/index.js +1 -0
- package/dist/components/scrollbar/scrollbar-config.js +13 -0
- package/dist/components/sidebar/Sidebar.d.ts +43 -22
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/Sidebar.js +148 -331
- package/dist/components/sidebar/sidebar-config.d.ts +98 -31
- package/dist/components/sidebar/sidebar-config.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar-config.js +47 -33
- package/dist/components/sidebar/sidebar-styles.js +27 -32
- package/dist/components/skeleton/Skeleton.d.ts +65 -0
- package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
- package/dist/components/skeleton/Skeleton.js +29 -0
- package/dist/components/skeleton/index.d.ts +3 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/index.js +3 -0
- package/dist/components/skeleton/skeleton-config.d.ts +40 -0
- package/dist/components/skeleton/skeleton-config.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton-config.js +13 -0
- package/dist/components/skeleton/skeleton-styles.d.ts +19 -0
- package/dist/components/skeleton/skeleton-styles.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton-styles.js +5 -0
- package/dist/components/spinner/spinner-config.js +12 -13
- package/dist/components/spinner/spinner-styles.js +13 -14
- package/dist/components/spinner/spinner.js +39 -82
- package/dist/components/switch/Switch.d.ts.map +1 -1
- package/dist/components/switch/Switch.js +64 -154
- package/dist/components/switch/switch-config.js +11 -12
- package/dist/components/switch/switch-styles.js +14 -16
- package/dist/components/table/Table.js +64 -186
- package/dist/components/table/table-config.js +17 -18
- package/dist/components/table/table-styles.js +48 -52
- package/dist/components/tabs/Tabs.d.ts +16 -8
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +93 -208
- package/dist/components/tabs/tabs-config.d.ts +42 -20
- package/dist/components/tabs/tabs-config.d.ts.map +1 -1
- package/dist/components/tabs/tabs-config.js +26 -18
- package/dist/components/tabs/tabs-styles.js +15 -17
- package/dist/components/textarea/Textarea.d.ts +10 -10
- package/dist/components/textarea/Textarea.js +52 -138
- package/dist/components/textarea/textarea-config.d.ts +2 -2
- package/dist/components/textarea/textarea-config.js +10 -11
- package/dist/components/textarea/textarea-styles.js +9 -10
- package/dist/components/toast/ToastContext.js +22 -26
- package/dist/components/toast/ToastItem.d.ts.map +1 -1
- package/dist/components/toast/ToastItem.js +83 -144
- package/dist/components/toast/ToastProvider.d.ts.map +1 -1
- package/dist/components/toast/ToastProvider.js +128 -190
- package/dist/components/toast/toast-config.js +23 -24
- package/dist/components/toast/toast-styles.js +50 -55
- package/dist/components/toast/use-pausable-timeout.js +17 -13
- package/dist/components/tooltip/Tooltip.d.ts +5 -0
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.js +68 -158
- package/dist/components/tooltip/tooltip-config.d.ts +25 -0
- package/dist/components/tooltip/tooltip-config.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip-config.js +26 -22
- package/dist/components/tooltip/tooltip-styles.js +15 -17
- package/dist/components/typography/Typography.d.ts +60 -0
- package/dist/components/typography/Typography.d.ts.map +1 -0
- package/dist/components/typography/Typography.js +28 -0
- package/dist/components/typography/index.d.ts +3 -0
- package/dist/components/typography/index.d.ts.map +1 -0
- package/dist/components/typography/index.js +3 -0
- package/dist/components/typography/typography-config.d.ts +54 -0
- package/dist/components/typography/typography-config.d.ts.map +1 -0
- package/dist/components/typography/typography-config.js +12 -0
- package/dist/components/typography/typography-styles.d.ts +21 -0
- package/dist/components/typography/typography-styles.d.ts.map +1 -0
- package/dist/components/typography/typography-styles.js +19 -0
- package/dist/config/default-config.d.ts.map +1 -1
- package/dist/config/default-config.js +11 -34
- package/dist/config/index.js +1 -0
- package/dist/config/resolve-color.js +23 -23
- package/dist/config/resolve-config.d.ts.map +1 -1
- package/dist/config/resolve-config.js +14 -12
- package/dist/config/validate-config.d.ts +34 -0
- package/dist/config/validate-config.d.ts.map +1 -0
- package/dist/config/validate-config.js +190 -0
- package/dist/icons/ArrowLeftIcon.js +16 -19
- package/dist/icons/CalendarIcon.js +43 -24
- package/dist/icons/CheckIcon.js +16 -19
- package/dist/icons/ChevronDownIcon.js +15 -21
- package/dist/icons/ChevronLeftIcon.js +16 -19
- package/dist/icons/ChevronRightIcon.js +16 -19
- package/dist/icons/ChevronUpIcon.js +16 -19
- package/dist/icons/ClearIcon.js +26 -22
- package/dist/icons/ClockIcon.js +20 -22
- package/dist/icons/CloseIcon.js +26 -22
- package/dist/icons/ErrorIcon.js +16 -19
- package/dist/icons/ExternalLinkIcon.js +25 -23
- package/dist/icons/EyeIcon.js +20 -22
- package/dist/icons/EyeOffIcon.js +21 -22
- package/dist/icons/InfoIcon.js +16 -19
- package/dist/icons/SearchIcon.js +25 -22
- package/dist/icons/WarningIcon.js +16 -19
- package/dist/index.d.ts +15 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -163
- package/dist/libs/context.js +10 -13
- package/dist/libs/index.js +4 -0
- package/dist/libs/registry.js +10 -12
- package/dist/libs/use-body-scroll-lock.d.ts +21 -0
- package/dist/libs/use-body-scroll-lock.d.ts.map +1 -0
- package/dist/libs/use-body-scroll-lock.js +27 -0
- package/dist/libs/use-dialog-overlay.d.ts +21 -0
- package/dist/libs/use-dialog-overlay.d.ts.map +1 -0
- package/dist/libs/use-dialog-overlay.js +21 -0
- package/dist/libs/use-floating-z-index.d.ts +32 -0
- package/dist/libs/use-floating-z-index.d.ts.map +1 -0
- package/dist/libs/use-floating-z-index.js +16 -0
- package/dist/libs/use-isomorphic-layout-effect.js +5 -5
- package/dist/libs/use-prefers-reduced-motion.d.ts +23 -0
- package/dist/libs/use-prefers-reduced-motion.d.ts.map +1 -0
- package/dist/libs/use-prefers-reduced-motion.js +19 -0
- package/dist/scripts/AsheeThemeScript.js +70 -44
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/radius.d.ts.map +1 -1
- package/dist/shared/radius.js +12 -13
- package/dist/shared/typography.d.ts +81 -0
- package/dist/shared/typography.d.ts.map +1 -0
- package/dist/shared/typography.js +137 -0
- package/dist/shared/variant.js +46 -134
- package/dist/theme/color.js +28 -28
- package/dist/theme/controller.d.ts.map +1 -1
- package/dist/theme/controller.js +65 -178
- package/dist/theme/useTheme.js +13 -44
- package/dist/utils/cn.js +7 -7
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/merge-object.js +13 -14
- package/dist/utils/resolve-token.js +11 -14
- package/dist/utils/stacking.d.ts +76 -0
- package/dist/utils/stacking.d.ts.map +1 -0
- package/dist/utils/stacking.js +34 -0
- package/package.json +22 -14
- package/dist/components/date-picker/Calendar.d.ts.map +0 -1
- package/dist/components/date-picker/Calendar.js +0 -224
- package/dist/components/date-picker/DatePicker.d.ts.map +0 -1
- package/dist/components/date-picker/DatePicker.js +0 -221
- package/dist/components/date-picker/TimeSpinner.d.ts.map +0 -1
- package/dist/components/date-picker/TimeSpinner.js +0 -84
- package/dist/components/date-picker/date-picker-config.d.ts.map +0 -1
- package/dist/components/date-picker/date-picker-config.js +0 -16
- package/dist/components/date-picker/date-picker-styles.d.ts.map +0 -1
- package/dist/components/date-picker/date-picker-styles.js +0 -47
- package/dist/components/date-picker/date-picker.helpers.d.ts.map +0 -1
- package/dist/components/date-picker/date-picker.helpers.js +0 -110
- package/dist/components/date-picker/index.d.ts +0 -3
- package/dist/components/date-picker/index.d.ts.map +0 -1
- package/dist/components/date-picker/index.js +0 -6
- package/dist/components/select/Select.d.ts.map +0 -1
- package/dist/components/select/Select.js +0 -196
- package/dist/components/select/index.d.ts +0 -3
- package/dist/components/select/index.d.ts.map +0 -1
- package/dist/components/select/index.js +0 -3
- package/dist/components/select/select-config.d.ts.map +0 -1
- package/dist/components/select/select-config.js +0 -10
- package/dist/components/select/select-styles.d.ts.map +0 -1
- package/dist/components/select/select-styles.js +0 -6
- package/dist/components/select-menu/SelectMenu.d.ts.map +0 -1
- package/dist/components/select-menu/SelectMenu.js +0 -198
- package/dist/components/select-menu/index.d.ts +0 -4
- package/dist/components/select-menu/index.d.ts.map +0 -1
- package/dist/components/select-menu/index.js +0 -3
- package/dist/components/select-menu/select-menu-config.d.ts.map +0 -1
- package/dist/components/select-menu/select-menu-config.js +0 -14
- package/dist/components/select-menu/use-select-floating.d.ts.map +0 -1
- package/dist/components/select-menu/use-select-floating.js +0 -50
- /package/dist/components/{date-picker → calendar}/TimeSpinner.d.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FloatingContext } from '@floating-ui/react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { MenuConfig,
|
|
3
|
+
import { MenuConfig, MenuOption } from './menu-config';
|
|
4
4
|
/**
|
|
5
5
|
* Menu props that extend MenuConfig with className.
|
|
6
6
|
* Used for menu configuration overrides.
|
|
@@ -12,9 +12,9 @@ export type MenuProps = MenuConfig & {
|
|
|
12
12
|
className?: string;
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
|
-
* Props for the
|
|
15
|
+
* Props for the Menu component.
|
|
16
16
|
*/
|
|
17
|
-
export interface
|
|
17
|
+
export interface MenuComponentProps {
|
|
18
18
|
/**
|
|
19
19
|
* Whether the menu is open.
|
|
20
20
|
*/
|
|
@@ -49,7 +49,7 @@ export interface SelectMenuProps {
|
|
|
49
49
|
/**
|
|
50
50
|
* Available options to display in the menu.
|
|
51
51
|
*/
|
|
52
|
-
options:
|
|
52
|
+
options: MenuOption[];
|
|
53
53
|
/**
|
|
54
54
|
* Currently selected values.
|
|
55
55
|
* Used to highlight selected options with a checkmark.
|
|
@@ -59,7 +59,7 @@ export interface SelectMenuProps {
|
|
|
59
59
|
* Callback fired when an option is selected.
|
|
60
60
|
* Receives the selected option object.
|
|
61
61
|
*/
|
|
62
|
-
|
|
62
|
+
onOptionSelect: (option: MenuOption) => void;
|
|
63
63
|
/**
|
|
64
64
|
* Whether search input is shown in the menu.
|
|
65
65
|
* @default true
|
|
@@ -72,7 +72,7 @@ export interface SelectMenuProps {
|
|
|
72
72
|
searchPlaceholder?: string;
|
|
73
73
|
/**
|
|
74
74
|
* Name attribute for the search input.
|
|
75
|
-
* @default "
|
|
75
|
+
* @default "menu-search"
|
|
76
76
|
*/
|
|
77
77
|
searchInputName?: string;
|
|
78
78
|
/**
|
|
@@ -100,7 +100,7 @@ export interface SelectMenuProps {
|
|
|
100
100
|
* Custom render function for each option.
|
|
101
101
|
* Receives the option and a boolean indicating if it's selected.
|
|
102
102
|
*/
|
|
103
|
-
renderOption?: (option:
|
|
103
|
+
renderOption?: (option: MenuOption, isSelected: boolean) => ReactNode;
|
|
104
104
|
/**
|
|
105
105
|
* Initial focus target for the FloatingFocusManager.
|
|
106
106
|
*/
|
|
@@ -110,13 +110,43 @@ export interface SelectMenuProps {
|
|
|
110
110
|
* @default false
|
|
111
111
|
*/
|
|
112
112
|
returnFocus?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Index of the option that keyboard navigation treats as current.
|
|
115
|
+
* When omitted, the menu tracks the current option itself.
|
|
116
|
+
*/
|
|
117
|
+
activeIndex?: number | null;
|
|
118
|
+
/**
|
|
119
|
+
* Called when the current option changes through keyboard navigation.
|
|
120
|
+
* A consumer that keeps focus in its own trigger uses this to mirror the
|
|
121
|
+
* current option in `aria-activedescendant`.
|
|
122
|
+
*/
|
|
123
|
+
onActiveIndexChange?: (index: number | null) => void;
|
|
124
|
+
/**
|
|
125
|
+
* Whether the listbox accepts more than one selection.
|
|
126
|
+
* Exposed as `aria-multiselectable` on the option list.
|
|
127
|
+
*
|
|
128
|
+
* @default false
|
|
129
|
+
*/
|
|
130
|
+
isMultiSelectable?: boolean;
|
|
113
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Identifier of one option inside a menu listbox.
|
|
134
|
+
*
|
|
135
|
+
* The listbox id comes from the floating element, so the identifier a consumer
|
|
136
|
+
* publishes through `aria-activedescendant` and the identifier the option
|
|
137
|
+
* carries are built the same way from the same id.
|
|
138
|
+
*
|
|
139
|
+
* @param listboxId - Id of the option list container.
|
|
140
|
+
* @param index - Position of the option in the rendered list.
|
|
141
|
+
* @returns The option id, or `undefined` when the list has no id yet.
|
|
142
|
+
*/
|
|
143
|
+
export declare function menuOptionId(listboxId: string | undefined, index: number): string | undefined;
|
|
114
144
|
/**
|
|
115
145
|
* A reusable dropdown menu for selecting options from a list.
|
|
116
146
|
*
|
|
117
|
-
*
|
|
147
|
+
* Menu renders a floating dropdown with search, option list, and
|
|
118
148
|
* selection state management. It is designed to be used as the dropdown
|
|
119
|
-
* implementation for
|
|
149
|
+
* implementation for Dropmenu, MultiSelect, and Autocomplete components.
|
|
120
150
|
*
|
|
121
151
|
* The component uses Floating UI for positioning and accessibility, and
|
|
122
152
|
* supports custom option rendering, search filtering, and configurable
|
|
@@ -128,7 +158,7 @@ export interface SelectMenuProps {
|
|
|
128
158
|
* the `menuProps.portal` prop if the menu needs to stay within a specific
|
|
129
159
|
* parent container. This is typically controlled by the parent component.
|
|
130
160
|
*
|
|
131
|
-
* @param props -
|
|
161
|
+
* @param props - Menu configuration options.
|
|
132
162
|
* @param props.isOpen - Whether the menu is open.
|
|
133
163
|
* @param props.context - Floating UI context.
|
|
134
164
|
* @param props.getFloatingProps - Props getter for the floating element.
|
|
@@ -136,10 +166,10 @@ export interface SelectMenuProps {
|
|
|
136
166
|
* @param props.isPositioned - Whether the floating element has been positioned by Floating UI. Defaults to true.
|
|
137
167
|
* @param props.options - Available options to display.
|
|
138
168
|
* @param props.selectedValues - Currently selected values.
|
|
139
|
-
* @param props.
|
|
169
|
+
* @param props.onOptionSelect - Callback fired when an option is selected.
|
|
140
170
|
* @param props.isSearch - Whether search is enabled. Defaults to true.
|
|
141
171
|
* @param props.searchPlaceholder - Search placeholder. Defaults to "Search...".
|
|
142
|
-
* @param props.searchInputName - Name attribute for the search input. Defaults to "
|
|
172
|
+
* @param props.searchInputName - Name attribute for the search input. Defaults to "menu-search".
|
|
143
173
|
* @param props.searchQuery - Controlled search query value.
|
|
144
174
|
* @param props.onSearchChange - Callback fired when the search query changes.
|
|
145
175
|
* @param props.belowList - Content below the options list.
|
|
@@ -148,33 +178,36 @@ export interface SelectMenuProps {
|
|
|
148
178
|
* @param props.renderOption - Custom render function for options.
|
|
149
179
|
* @param props.initialFocus - Initial focus target for the FloatingFocusManager.
|
|
150
180
|
* @param props.returnFocus - Whether to return focus to the trigger after closing. Defaults to false.
|
|
181
|
+
* @param props.activeIndex - Index the menu treats as the current option. Defaults to the menu tracking it itself.
|
|
182
|
+
* @param props.onActiveIndexChange - Called when the current option changes through keyboard navigation.
|
|
183
|
+
* @param props.isMultiSelectable - Whether the option list accepts more than one selection. Defaults to false.
|
|
151
184
|
*
|
|
152
185
|
* @example
|
|
153
186
|
* ```tsx
|
|
154
187
|
* const { refs, context } = useFloating(...);
|
|
155
188
|
*
|
|
156
|
-
* <
|
|
189
|
+
* <Menu
|
|
157
190
|
* isOpen={isOpen}
|
|
158
191
|
* context={context}
|
|
159
192
|
* getFloatingProps={getFloatingProps}
|
|
160
193
|
* setFloatingRef={refs.setFloating}
|
|
161
194
|
* options={options}
|
|
162
195
|
* selectedValues={selectedValues}
|
|
163
|
-
*
|
|
196
|
+
* onOptionSelect={handleSelect}
|
|
164
197
|
* />
|
|
165
198
|
* ```
|
|
166
199
|
*
|
|
167
200
|
* @example
|
|
168
201
|
* ```tsx
|
|
169
202
|
* // With custom menu configuration
|
|
170
|
-
* <
|
|
203
|
+
* <Menu
|
|
171
204
|
* isOpen={isOpen}
|
|
172
205
|
* context={context}
|
|
173
206
|
* getFloatingProps={getFloatingProps}
|
|
174
207
|
* setFloatingRef={refs.setFloating}
|
|
175
208
|
* options={options}
|
|
176
209
|
* selectedValues={selectedValues}
|
|
177
|
-
*
|
|
210
|
+
* onOptionSelect={handleSelect}
|
|
178
211
|
* menuProps={{
|
|
179
212
|
* className: "custom-dropdown",
|
|
180
213
|
* portal: false,
|
|
@@ -187,8 +220,8 @@ export interface SelectMenuProps {
|
|
|
187
220
|
* @see MenuConfig - The configuration type for menu items.
|
|
188
221
|
* @see Button - The button component used for menu items.
|
|
189
222
|
*/
|
|
190
|
-
export declare const
|
|
191
|
-
({ isOpen, floatingStyles, context, getFloatingProps, setFloatingRef, isPositioned, options, selectedValues,
|
|
223
|
+
export declare const Menu: {
|
|
224
|
+
({ isOpen, floatingStyles, context, getFloatingProps, setFloatingRef, isPositioned, options, selectedValues, onOptionSelect, isSearch, searchPlaceholder, searchInputName, searchQuery, onSearchChange, belowList, menuConfig, menuProps, renderOption, initialFocus, returnFocus, activeIndex: activeIndexProp, onActiveIndexChange, isMultiSelectable, }: MenuComponentProps): import("react").JSX.Element | null;
|
|
192
225
|
displayName: string;
|
|
193
226
|
};
|
|
194
|
-
//# sourceMappingURL=
|
|
227
|
+
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/components/menu/Menu.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAUf,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAOvB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,CAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAErC;;;OAGG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEtE;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAErD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAwBD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CAEpB;AA0ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,eAAO,MAAM,IAAI;gWAwBd,kBAAkB;;CAyXpB,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { cn as e } from "../../utils/cn.js";
|
|
4
|
+
import { useAsheeConfig as t } from "../../libs/context.js";
|
|
5
|
+
import { resolveCascade as n, resolveRadiusKey as r } from "../../utils/resolve-token.js";
|
|
6
|
+
import { CheckIcon as i } from "../../icons/CheckIcon.js";
|
|
7
|
+
import { Button as a } from "../button/Button.js";
|
|
8
|
+
import { Input as o } from "../input/Input.js";
|
|
9
|
+
import { SearchIcon as s } from "../../icons/SearchIcon.js";
|
|
10
|
+
import { useBodyScrollLock as c } from "../../libs/use-body-scroll-lock.js";
|
|
11
|
+
import { FALLBACK_MENU_CONFIG as l } from "./menu-config.js";
|
|
12
|
+
import { edgeOptionIndex as u, matchingOptionIndex as d, nextOptionIndex as f } from "./menu-navigation.js";
|
|
13
|
+
import { memo as p, useCallback as m, useEffect as h, useMemo as g, useRef as _, useState as v } from "react";
|
|
14
|
+
import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
15
|
+
import { FloatingFocusManager as S, FloatingPortal as C } from "@floating-ui/react";
|
|
16
|
+
//#region src/components/menu/Menu.tsx
|
|
17
|
+
function w(e, t) {
|
|
18
|
+
return e ? `${e}-option-${t}` : void 0;
|
|
19
|
+
}
|
|
20
|
+
var ee = p(function({ filteredOptions: e, selectedValues: t, onOptionSelect: n, renderOption: r, itemVariant: o, itemColor: s, activeItemVariant: c, activeItemColor: l, radius: u, size: d, optionRefs: f, listboxId: p, onOptionFocus: m }) {
|
|
21
|
+
let h = (e) => t.includes(e);
|
|
22
|
+
return e.length === 0 ? /* @__PURE__ */ b("div", {
|
|
23
|
+
role: "status",
|
|
24
|
+
className: "px-3 py-4 text-xs text-foreground/70 text-center",
|
|
25
|
+
children: "No options found"
|
|
26
|
+
}) : /* @__PURE__ */ b(y, { children: e.map((e, t) => {
|
|
27
|
+
let g = h(e.value);
|
|
28
|
+
return r ? r(e, g) : /* @__PURE__ */ x(a, {
|
|
29
|
+
ref: (e) => {
|
|
30
|
+
f.current[t] = e;
|
|
31
|
+
},
|
|
32
|
+
id: w(p, t),
|
|
33
|
+
role: "option",
|
|
34
|
+
"aria-selected": g,
|
|
35
|
+
"aria-disabled": e.disabled ? !0 : void 0,
|
|
36
|
+
onFocus: () => m(t),
|
|
37
|
+
variant: g ? c : o,
|
|
38
|
+
color: g ? l : s,
|
|
39
|
+
radius: u,
|
|
40
|
+
size: d,
|
|
41
|
+
isDisabled: e.disabled,
|
|
42
|
+
onClick: () => n(e),
|
|
43
|
+
className: "w-full justify-between font-normal text-left transition-colors truncate",
|
|
44
|
+
children: [/* @__PURE__ */ b("span", { children: e.label }), g && /* @__PURE__ */ b(i, { className: "w-3.5 h-3.5 shrink-0 ml-2" })]
|
|
45
|
+
}, String(e.value));
|
|
46
|
+
}) });
|
|
47
|
+
}), T = ({ isOpen: i, floatingStyles: a, context: p, getFloatingProps: y, setFloatingRef: w, isPositioned: T = !0, options: E = [], selectedValues: te = [], onOptionSelect: ne, isSearch: D = !0, searchPlaceholder: re = "Search...", searchInputName: ie = "menu-search", searchQuery: ae, onSearchChange: O, belowList: k, menuConfig: A, menuProps: j = {}, renderOption: oe, initialFocus: se, returnFocus: ce, activeIndex: M, onActiveIndexChange: N, isMultiSelectable: le = !1 }) => {
|
|
48
|
+
let P = t(), [ue, de] = v(""), F = ae ?? ue, fe = (e) => {
|
|
49
|
+
O ? O(e) : de(e);
|
|
50
|
+
}, pe = n(j?.lockScroll, A?.lockScroll, void 0, l.lockScroll), me = n(j?.portal, A?.portal, void 0, l.portal), he = n(j?.portalTarget, A?.portalTarget, void 0, typeof document < "u" ? document.body : null);
|
|
51
|
+
c(i && pe);
|
|
52
|
+
let I = g(() => !D || !F.trim() ? E : E.filter((e) => e.label.toLowerCase().includes(F.toLowerCase())), [
|
|
53
|
+
E,
|
|
54
|
+
D,
|
|
55
|
+
F
|
|
56
|
+
]), L = _([]), R = _(null), z = _(""), B = _(null), [ge, _e] = v(null), ve = m((e) => {
|
|
57
|
+
R.current = e, w(e);
|
|
58
|
+
}, [w]), V = M === void 0 ? ge : M, H = V !== null && V >= 0 && V < I.length ? V : null, U = m((e) => {
|
|
59
|
+
_e(e), N?.(e);
|
|
60
|
+
}, [N]), ye = m((e) => {
|
|
61
|
+
U(e);
|
|
62
|
+
}, [U]), W = m((e) => {
|
|
63
|
+
let t = L.current[e];
|
|
64
|
+
t && R.current?.contains(document.activeElement) && t.focus();
|
|
65
|
+
}, []), G = m((e) => {
|
|
66
|
+
e !== null && (U(e), W(e));
|
|
67
|
+
}, [W, U]), K = m((e) => {
|
|
68
|
+
G(f(I, H, e));
|
|
69
|
+
}, [
|
|
70
|
+
G,
|
|
71
|
+
H,
|
|
72
|
+
I
|
|
73
|
+
]), q = m((e) => {
|
|
74
|
+
G(u(I, e));
|
|
75
|
+
}, [G, I]), be = m((e) => {
|
|
76
|
+
z.current += e, G(d(I, z.current)), B.current && clearTimeout(B.current), B.current = setTimeout(() => {
|
|
77
|
+
z.current = "";
|
|
78
|
+
}, 500);
|
|
79
|
+
}, [G, I]);
|
|
80
|
+
h(() => () => {
|
|
81
|
+
B.current && clearTimeout(B.current);
|
|
82
|
+
}, []);
|
|
83
|
+
let xe = (e) => {
|
|
84
|
+
let t = e.target, n = t.tagName === "INPUT" || t.tagName === "TEXTAREA";
|
|
85
|
+
if (!(n && e.key !== "ArrowDown" && e.key !== "ArrowUp")) switch (e.key) {
|
|
86
|
+
case "ArrowDown":
|
|
87
|
+
e.preventDefault(), K(1);
|
|
88
|
+
return;
|
|
89
|
+
case "ArrowUp":
|
|
90
|
+
e.preventDefault(), K(-1);
|
|
91
|
+
return;
|
|
92
|
+
case "Home":
|
|
93
|
+
e.preventDefault(), q("first");
|
|
94
|
+
return;
|
|
95
|
+
case "End":
|
|
96
|
+
e.preventDefault(), q("last");
|
|
97
|
+
return;
|
|
98
|
+
default: !n && e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey && be(e.key);
|
|
99
|
+
}
|
|
100
|
+
}, J = n(j?.itemVariant, A?.itemVariant, void 0, l.itemVariant), Y = n(j?.itemColor, A?.itemColor, P.defaultColor, l.itemColor), Se = n(j?.activeItemVariant, A?.activeItemVariant, P.defaultVariant, l.activeItemVariant), Ce = n(j?.activeItemColor, A?.activeItemColor, P.defaultColor, l.activeItemColor), X = r(j?.radius, A?.radius, P.defaultRadius, l.radius), Z = n(j?.size, A?.size, void 0, l.size), Q = y({ onKeyDown: xe }), we = typeof Q.id == "string" ? Q.id : void 0;
|
|
101
|
+
if (!i) return null;
|
|
102
|
+
let $ = /* @__PURE__ */ b(S, {
|
|
103
|
+
context: p,
|
|
104
|
+
modal: !1,
|
|
105
|
+
initialFocus: se,
|
|
106
|
+
returnFocus: ce,
|
|
107
|
+
children: /* @__PURE__ */ x("div", {
|
|
108
|
+
ref: ve,
|
|
109
|
+
style: { ...a },
|
|
110
|
+
className: e("w-full outline-none max-h-60 shadow-xl bg-background border border-border p-1 flex flex-col gap-0.5 overflow-y-auto scrollable-hidden", "transition-none", T ? "animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150 ease-out" : "invisible opacity-0 pointer-events-none", j?.className),
|
|
111
|
+
role: "listbox",
|
|
112
|
+
"aria-multiselectable": le ? !0 : void 0,
|
|
113
|
+
...Q,
|
|
114
|
+
children: [
|
|
115
|
+
D && /* @__PURE__ */ b("div", {
|
|
116
|
+
className: "w-full p-1 mb-1 sticky top-0 z-10 border-b border-border",
|
|
117
|
+
children: /* @__PURE__ */ b(o, {
|
|
118
|
+
name: ie,
|
|
119
|
+
type: "text",
|
|
120
|
+
variant: "bordered",
|
|
121
|
+
radius: X,
|
|
122
|
+
color: Y,
|
|
123
|
+
size: Z,
|
|
124
|
+
value: F,
|
|
125
|
+
onChange: (e) => fe(e.target.value),
|
|
126
|
+
startContent: /* @__PURE__ */ b(s, { className: "w-3.5 h-3.5 text-foreground/70" }),
|
|
127
|
+
placeholder: re,
|
|
128
|
+
autoFocus: !0,
|
|
129
|
+
className: "w-full pl-8 h-8 text-xs bg-secondary/30 border-none focus-visible:ring-0"
|
|
130
|
+
})
|
|
131
|
+
}),
|
|
132
|
+
/* @__PURE__ */ b(ee, {
|
|
133
|
+
filteredOptions: I,
|
|
134
|
+
selectedValues: te,
|
|
135
|
+
onOptionSelect: ne,
|
|
136
|
+
renderOption: oe,
|
|
137
|
+
itemVariant: J,
|
|
138
|
+
itemColor: Y,
|
|
139
|
+
activeItemVariant: Se,
|
|
140
|
+
activeItemColor: Ce,
|
|
141
|
+
radius: X,
|
|
142
|
+
size: Z,
|
|
143
|
+
optionRefs: L,
|
|
144
|
+
listboxId: we,
|
|
145
|
+
onOptionFocus: ye
|
|
146
|
+
}),
|
|
147
|
+
k && /* @__PURE__ */ b("div", {
|
|
148
|
+
className: "border-t border-border pt-1 mt-1",
|
|
149
|
+
children: k
|
|
150
|
+
})
|
|
151
|
+
]
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
return me ? /* @__PURE__ */ b(C, {
|
|
155
|
+
root: he,
|
|
156
|
+
children: $
|
|
157
|
+
}) : $;
|
|
158
|
+
};
|
|
159
|
+
T.displayName = "Menu";
|
|
160
|
+
//#endregion
|
|
161
|
+
export { T as Menu, w as menuOptionId };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { Color, Radius, Size, Variant } from '../../shared';
|
|
|
3
3
|
* A single option in the select menu.
|
|
4
4
|
* Each option must have a label and a unique value.
|
|
5
5
|
*/
|
|
6
|
-
export interface
|
|
6
|
+
export interface MenuOption {
|
|
7
7
|
/**
|
|
8
8
|
* Text displayed in the input and in the options list.
|
|
9
9
|
*/
|
|
@@ -26,7 +26,7 @@ export interface SelectMenuOption {
|
|
|
26
26
|
[key: string]: unknown;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Theme configuration options for the
|
|
29
|
+
* Theme configuration options for the Menu component.
|
|
30
30
|
* Controls the visual appearance of the dropdown menu and its items.
|
|
31
31
|
*/
|
|
32
32
|
export interface MenuConfig {
|
|
@@ -86,7 +86,7 @@ export interface MenuConfig {
|
|
|
86
86
|
* Whether to render the menu through Floating UI's `FloatingPortal`.
|
|
87
87
|
* When true, the menu is rendered at the document body level.
|
|
88
88
|
* Defaults to true. This is typically controlled by the parent
|
|
89
|
-
* component (
|
|
89
|
+
* component (Dropmenu, MultiSelect, Autocomplete) via their own
|
|
90
90
|
* config or props.
|
|
91
91
|
*
|
|
92
92
|
* @see FloatingPortal - https://floating-ui.com/docs/FloatingPortal
|
|
@@ -104,7 +104,7 @@ export interface MenuConfig {
|
|
|
104
104
|
* These values are used when instance props, component config,
|
|
105
105
|
* and global defaults are all undefined.
|
|
106
106
|
*/
|
|
107
|
-
export declare const
|
|
107
|
+
export declare const FALLBACK_MENU_CONFIG: {
|
|
108
108
|
radius: Radius;
|
|
109
109
|
size: Size;
|
|
110
110
|
itemVariant: Variant;
|
|
@@ -114,4 +114,4 @@ export declare const FALLBACK_SELECT_MENU_CONFIG: {
|
|
|
114
114
|
lockScroll: boolean;
|
|
115
115
|
portal: boolean;
|
|
116
116
|
};
|
|
117
|
-
//# sourceMappingURL=
|
|
117
|
+
//# sourceMappingURL=menu-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-config.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;YACf,MAAM;UACR,IAAI;iBACM,OAAO;eACP,KAAK;uBACC,OAAO;qBACP,KAAK;;;CAGpC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region src/components/menu/menu-config.ts
|
|
3
|
+
var e = {
|
|
4
|
+
radius: "md",
|
|
5
|
+
size: "md",
|
|
6
|
+
itemVariant: "ghost",
|
|
7
|
+
itemColor: "primary",
|
|
8
|
+
activeItemVariant: "faded",
|
|
9
|
+
activeItemColor: "primary",
|
|
10
|
+
lockScroll: !0,
|
|
11
|
+
portal: !0
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { e as FALLBACK_MENU_CONFIG };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MenuOption } from './menu-config';
|
|
2
|
+
/**
|
|
3
|
+
* Positions of the options that can be reached by keyboard navigation.
|
|
4
|
+
*
|
|
5
|
+
* @param options - The rendered option list, in display order.
|
|
6
|
+
* @returns The indexes of the options that are not disabled.
|
|
7
|
+
*/
|
|
8
|
+
export declare function enabledOptionIndexes(options: MenuOption[]): number[];
|
|
9
|
+
/**
|
|
10
|
+
* Resolves the option that a movement key lands on.
|
|
11
|
+
*
|
|
12
|
+
* Movement starts at the first option when nothing is current yet: forward
|
|
13
|
+
* movement lands on the first enabled option and backward movement on the last
|
|
14
|
+
* one. Once an option is current, movement wraps around the ends of the list.
|
|
15
|
+
*
|
|
16
|
+
* @param options - The rendered option list, in display order.
|
|
17
|
+
* @param currentIndex - The current option, or `null` when none is current.
|
|
18
|
+
* @param delta - Movement direction: `1` forward, `-1` backward.
|
|
19
|
+
* @returns The index to make current, or `null` when no option is reachable.
|
|
20
|
+
*/
|
|
21
|
+
export declare function nextOptionIndex(options: MenuOption[], currentIndex: number | null, delta: number): number | null;
|
|
22
|
+
/**
|
|
23
|
+
* Resolves the first or last reachable option.
|
|
24
|
+
*
|
|
25
|
+
* @param options - The rendered option list, in display order.
|
|
26
|
+
* @param edge - Which end of the list to resolve.
|
|
27
|
+
* @returns The index to make current, or `null` when no option is reachable.
|
|
28
|
+
*/
|
|
29
|
+
export declare function edgeOptionIndex(options: MenuOption[], edge: "first" | "last"): number | null;
|
|
30
|
+
/**
|
|
31
|
+
* Resolves the first reachable option whose label starts with `prefix`.
|
|
32
|
+
*
|
|
33
|
+
* @param options - The rendered option list, in display order.
|
|
34
|
+
* @param prefix - Characters typed so far, matched case insensitively.
|
|
35
|
+
* @returns The index to make current, or `null` when nothing matches.
|
|
36
|
+
*/
|
|
37
|
+
export declare function matchingOptionIndex(options: MenuOption[], prefix: string): number | null;
|
|
38
|
+
//# sourceMappingURL=menu-navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-navigation.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu-navigation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAKpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAaf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,EAAE,EACrB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAMf"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region src/components/menu/menu-navigation.ts
|
|
3
|
+
function e(e) {
|
|
4
|
+
return e.reduce((e, t, n) => (t.disabled || e.push(n), e), []);
|
|
5
|
+
}
|
|
6
|
+
function t(t, n, r) {
|
|
7
|
+
let i = e(t);
|
|
8
|
+
if (i.length === 0) return null;
|
|
9
|
+
let a = n === null ? -1 : i.indexOf(n);
|
|
10
|
+
return i[a === -1 ? r > 0 ? 0 : i.length - 1 : (a + r + i.length) % i.length];
|
|
11
|
+
}
|
|
12
|
+
function n(t, n) {
|
|
13
|
+
let r = e(t);
|
|
14
|
+
return r.length === 0 ? null : n === "first" ? r[0] : r[r.length - 1];
|
|
15
|
+
}
|
|
16
|
+
function r(t, n) {
|
|
17
|
+
return e(t).find((e) => t[e].label.toLowerCase().startsWith(n.toLowerCase())) ?? null;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { n as edgeOptionIndex, e as enabledOptionIndexes, r as matchingOptionIndex, t as nextOptionIndex };
|
package/dist/components/{select-menu/use-select-floating.d.ts → menu/use-menu-floating.d.ts}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { UseInteractionsReturn, Placement, useFloating } from '@floating-ui/react';
|
|
2
2
|
/**
|
|
3
|
-
* Configuration options for the
|
|
3
|
+
* Configuration options for the useMenuFloating hook.
|
|
4
4
|
* Controls the floating element's behavior, positioning, size, and
|
|
5
5
|
* interaction wiring (click-to-open, dismiss, and ARIA role).
|
|
6
6
|
*/
|
|
7
|
-
export interface
|
|
7
|
+
export interface UseMenuFloatingProps {
|
|
8
8
|
/**
|
|
9
9
|
* Whether the floating element is open.
|
|
10
10
|
* Controls visibility and triggers positioning calculations.
|
|
@@ -52,19 +52,28 @@ export interface UseSelectFloatingProps {
|
|
|
52
52
|
matchReferenceWidth?: boolean;
|
|
53
53
|
/**
|
|
54
54
|
* ARIA role applied to the floating element via useRole.
|
|
55
|
-
* "listbox" fits
|
|
56
|
-
*
|
|
55
|
+
* "listbox" fits Dropmenu/MultiSelect/Autocomplete; a component like
|
|
56
|
+
* Calendar reusing this hook can pass "dialog" instead.
|
|
57
57
|
*
|
|
58
58
|
* @default "listbox"
|
|
59
59
|
*/
|
|
60
60
|
role?: "listbox" | "menu" | "dialog" | "tooltip" | "grid" | "tree";
|
|
61
|
+
/**
|
|
62
|
+
* Layer delta added to the trigger's detected stacking-context z-index to
|
|
63
|
+
* resolve the floating element's final `z-index`. Keeps anchored popups
|
|
64
|
+
* above their own container (for example a navbar) while staying underneath
|
|
65
|
+
* unrelated app chrome.
|
|
66
|
+
*
|
|
67
|
+
* @default ASHEE_LAYER.dropdown
|
|
68
|
+
*/
|
|
69
|
+
zIndex?: number;
|
|
61
70
|
}
|
|
62
71
|
/**
|
|
63
|
-
* Return value of
|
|
72
|
+
* Return value of useMenuFloating. Combines Floating UI's positioning
|
|
64
73
|
* context with the resolved interaction prop-getters, so consumers don't
|
|
65
74
|
* need to wire useClick/useDismiss/useRole/useInteractions themselves.
|
|
66
75
|
*/
|
|
67
|
-
export interface
|
|
76
|
+
export interface UseMenuFloatingReturn<T extends HTMLElement> {
|
|
68
77
|
refs: ReturnType<typeof useFloating<T>>["refs"];
|
|
69
78
|
context: ReturnType<typeof useFloating<T>>["context"];
|
|
70
79
|
floatingStyles: React.CSSProperties;
|
|
@@ -93,13 +102,14 @@ export interface UseSelectFloatingReturn<T extends HTMLElement> {
|
|
|
93
102
|
* @param props.padding - Viewport padding for shift middleware. Defaults to 8.
|
|
94
103
|
* @param props.matchReferenceWidth - Whether to match reference width. Defaults to true.
|
|
95
104
|
* @param props.role - ARIA role for the floating element. Defaults to "listbox".
|
|
105
|
+
* @param props.zIndex - Layer delta for the floating element. Defaults to `ASHEE_LAYER.dropdown`.
|
|
96
106
|
* @returns Floating UI refs/context/styles plus `isPositioned` and the
|
|
97
107
|
* resolved `getReferenceProps`/`getFloatingProps` prop-getters.
|
|
98
108
|
*
|
|
99
109
|
* @example
|
|
100
110
|
* ```tsx
|
|
101
111
|
* const { refs, context, floatingStyles, getReferenceProps, getFloatingProps } =
|
|
102
|
-
*
|
|
112
|
+
* useMenuFloating({
|
|
103
113
|
* isOpen,
|
|
104
114
|
* onOpenChange: setIsOpen,
|
|
105
115
|
* disabled: props.disabled,
|
|
@@ -118,7 +128,7 @@ export interface UseSelectFloatingReturn<T extends HTMLElement> {
|
|
|
118
128
|
* ```
|
|
119
129
|
*
|
|
120
130
|
* @see useFloating - The underlying Floating UI hook.
|
|
121
|
-
* @see
|
|
131
|
+
* @see Dropmenu - The select component that uses this hook.
|
|
122
132
|
*/
|
|
123
|
-
export declare function
|
|
124
|
-
//# sourceMappingURL=use-
|
|
133
|
+
export declare function useMenuFloating<T extends HTMLElement = HTMLElement>({ isOpen, onOpenChange, disabled, placement, offsetDistance, padding, matchReferenceWidth, role, zIndex, }: UseMenuFloatingProps): UseMenuFloatingReturn<T>;
|
|
134
|
+
//# sourceMappingURL=use-menu-floating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-menu-floating.d.ts","sourceRoot":"","sources":["../../../src/components/menu/use-menu-floating.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAIL,KAAK,SAAS,EAKd,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAI5B;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAEnE;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,WAAW;IAC1D,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtD,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,gBAAgB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACnE,MAAM,EACN,YAAY,EACZ,QAAgB,EAChB,SAA0B,EAC1B,cAAkB,EAClB,OAAW,EACX,mBAA0B,EAC1B,IAAgB,EAChB,MAA6B,GAC9B,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAmDjD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { ASHEE_LAYER as e } from "../../utils/stacking.js";
|
|
4
|
+
import { useFloatingZIndex as t } from "../../libs/use-floating-z-index.js";
|
|
5
|
+
import { autoUpdate as n, flip as r, offset as i, shift as a, size as o, useClick as s, useDismiss as c, useFloating as l, useInteractions as u, useRole as d } from "@floating-ui/react";
|
|
6
|
+
//#region src/components/menu/use-menu-floating.ts
|
|
7
|
+
function f({ isOpen: f, onOpenChange: p, disabled: m = !1, placement: h = "bottom-start", offsetDistance: g = 4, padding: _ = 8, matchReferenceWidth: v = !0, role: y = "listbox", zIndex: b = e.dropdown }) {
|
|
8
|
+
let x = l({
|
|
9
|
+
open: f,
|
|
10
|
+
onOpenChange: (e) => !m && p(e),
|
|
11
|
+
placement: h,
|
|
12
|
+
strategy: "fixed",
|
|
13
|
+
whileElementsMounted: n,
|
|
14
|
+
middleware: [
|
|
15
|
+
i(g),
|
|
16
|
+
r(),
|
|
17
|
+
a({ padding: _ }),
|
|
18
|
+
o({ apply({ availableHeight: e, elements: t }) {
|
|
19
|
+
Object.assign(t.floating.style, {
|
|
20
|
+
maxHeight: `${e}px`,
|
|
21
|
+
...v && { width: `${t.reference.getBoundingClientRect().width}px` }
|
|
22
|
+
});
|
|
23
|
+
} })
|
|
24
|
+
]
|
|
25
|
+
}), S = t(x.refs.reference, f, b), { context: C } = x, w = s(C, { enabled: !m }), T = c(C), E = d(C, { role: y }), { getReferenceProps: D, getFloatingProps: O } = u([
|
|
26
|
+
w,
|
|
27
|
+
T,
|
|
28
|
+
E
|
|
29
|
+
]);
|
|
30
|
+
return {
|
|
31
|
+
refs: x.refs,
|
|
32
|
+
context: C,
|
|
33
|
+
floatingStyles: {
|
|
34
|
+
...x.floatingStyles,
|
|
35
|
+
zIndex: S
|
|
36
|
+
},
|
|
37
|
+
isPositioned: x.isPositioned,
|
|
38
|
+
getReferenceProps: D,
|
|
39
|
+
getFloatingProps: O
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { f as useMenuFloating };
|