@vjdesigns/vjdesigns-ui 2.4.0 → 3.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/LICENSE +15 -0
- package/README.md +45 -1
- package/dist/ai/llms-full.txt +141 -76
- package/dist/ai/registry.json +125 -61
- package/dist/components/data-display/Accordion/Accordion.cjs.js +1 -1
- package/dist/components/data-display/Accordion/Accordion.mjs +22 -22
- package/dist/components/data-display/Accordion/Accordion.module.css.mjs +1 -2
- package/dist/components/data-display/Avatar/Avatar.cjs.js +1 -1
- package/dist/components/data-display/Avatar/Avatar.mjs +92 -92
- package/dist/components/data-display/Avatar/Avatar.module.css.mjs +1 -2
- package/dist/components/data-display/Badge/Badge.cjs.js +1 -1
- package/dist/components/data-display/Badge/Badge.mjs +2 -2
- package/dist/components/data-display/Badge/Badge.module.css.mjs +1 -2
- package/dist/components/data-display/Card/Card.cjs.js +1 -1
- package/dist/components/data-display/Card/Card.mjs +2 -2
- package/dist/components/data-display/Card/Card.module.css.mjs +1 -2
- package/dist/components/data-display/Carousel/Carousel.cjs.js +1 -1
- package/dist/components/data-display/Carousel/Carousel.mjs +42 -42
- package/dist/components/data-display/Carousel/Carousel.module.css.mjs +1 -2
- package/dist/components/data-display/Chat/Chat.cjs.js +1 -1
- package/dist/components/data-display/Chat/Chat.mjs +114 -118
- package/dist/components/data-display/Chat/Chat.module.css.mjs +1 -2
- package/dist/components/data-display/Chat/streams.mjs +1 -2
- package/dist/components/data-display/Chip/Chip.cjs.js +1 -1
- package/dist/components/data-display/Chip/Chip.mjs +50 -54
- package/dist/components/data-display/Chip/Chip.module.css.mjs +1 -2
- package/dist/components/data-display/CodeBlock/CodeBlock.cjs.js +4 -4
- package/dist/components/data-display/CodeBlock/CodeBlock.mjs +113 -113
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.mjs +1 -2
- package/dist/components/data-display/CodeBlock/tokenize.mjs +1 -2
- package/dist/components/data-display/DataGrid/DataGrid.cjs.js +1 -1
- package/dist/components/data-display/DataGrid/DataGrid.d.ts +59 -3
- package/dist/components/data-display/DataGrid/DataGrid.mjs +382 -272
- package/dist/components/data-display/DataGrid/DataGrid.module.css.cjs.js +1 -1
- package/dist/components/data-display/DataGrid/DataGrid.module.css.mjs +29 -26
- package/dist/components/data-display/DataGrid/dataGridUtils.cjs.js +1 -1
- package/dist/components/data-display/DataGrid/dataGridUtils.d.ts +18 -0
- package/dist/components/data-display/DataGrid/dataGridUtils.mjs +100 -32
- package/dist/components/data-display/EmptyState/EmptyState.cjs.js +1 -1
- package/dist/components/data-display/EmptyState/EmptyState.mjs +53 -53
- package/dist/components/data-display/EmptyState/EmptyState.module.css.mjs +1 -2
- package/dist/components/data-display/Image/Image.cjs.js +1 -1
- package/dist/components/data-display/Image/Image.mjs +6 -6
- package/dist/components/data-display/Image/Image.module.css.mjs +1 -2
- package/dist/components/data-display/List/List.cjs.js +1 -1
- package/dist/components/data-display/List/List.mjs +68 -68
- package/dist/components/data-display/List/List.module.css.mjs +1 -2
- package/dist/components/data-display/Stat/Stat.cjs.js +1 -1
- package/dist/components/data-display/Stat/Stat.mjs +112 -112
- package/dist/components/data-display/Stat/Stat.module.css.mjs +1 -2
- package/dist/components/data-display/Table/Table.cjs.js +1 -1
- package/dist/components/data-display/Table/Table.mjs +187 -183
- package/dist/components/data-display/Table/Table.module.css.mjs +1 -2
- package/dist/components/data-display/Table/useTable.cjs.js +1 -1
- package/dist/components/data-display/Table/useTable.mjs +2 -2
- package/dist/components/data-display/Timeline/Timeline.cjs.js +1 -1
- package/dist/components/data-display/Timeline/Timeline.mjs +64 -64
- package/dist/components/data-display/Timeline/Timeline.module.css.mjs +1 -2
- package/dist/components/data-display/TreeView/TreeView.cjs.js +1 -1
- package/dist/components/data-display/TreeView/TreeView.mjs +107 -119
- package/dist/components/data-display/TreeView/TreeView.module.css.mjs +1 -2
- package/dist/components/data-display/TreeView/treeUtils.mjs +1 -2
- package/dist/components/data-display/VirtualList/VirtualList.cjs.js +1 -1
- package/dist/components/data-display/VirtualList/VirtualList.mjs +2 -2
- package/dist/components/data-display/VirtualList/VirtualList.module.css.mjs +1 -2
- package/dist/components/feedback/Alert/Alert.cjs.js +1 -1
- package/dist/components/feedback/Alert/Alert.mjs +56 -56
- package/dist/components/feedback/Alert/Alert.module.css.mjs +1 -2
- package/dist/components/feedback/Banner/Banner.cjs.js +1 -1
- package/dist/components/feedback/Banner/Banner.mjs +48 -48
- package/dist/components/feedback/Banner/Banner.module.css.mjs +1 -2
- package/dist/components/feedback/ErrorSummary/ErrorSummary.cjs.js +1 -1
- package/dist/components/feedback/ErrorSummary/ErrorSummary.mjs +10 -10
- package/dist/components/feedback/ErrorSummary/ErrorSummary.module.css.mjs +1 -2
- package/dist/components/feedback/Progress/Progress.cjs.js +1 -1
- package/dist/components/feedback/Progress/Progress.mjs +2 -2
- package/dist/components/feedback/Progress/Progress.module.css.mjs +1 -2
- package/dist/components/feedback/Skeleton/Skeleton.cjs.js +1 -1
- package/dist/components/feedback/Skeleton/Skeleton.mjs +73 -73
- package/dist/components/feedback/Skeleton/Skeleton.module.css.mjs +1 -2
- package/dist/components/feedback/Spinner/Spinner.cjs.js +1 -1
- package/dist/components/feedback/Spinner/Spinner.mjs +29 -29
- package/dist/components/feedback/Spinner/Spinner.module.css.mjs +1 -2
- package/dist/components/feedback/Toast/Toast.cjs.js +1 -1
- package/dist/components/feedback/Toast/Toast.mjs +42 -42
- package/dist/components/feedback/Toast/Toast.module.css.mjs +1 -2
- package/dist/components/feedback/Toast/ToastItem.cjs.js +1 -1
- package/dist/components/feedback/Toast/ToastItem.mjs +10 -10
- package/dist/components/feedback/Toast/ToastProvider.cjs.js +1 -1
- package/dist/components/feedback/Toast/ToastProvider.mjs +11 -11
- package/dist/components/feedback/Toast/ToastViewport.cjs.js +1 -1
- package/dist/components/feedback/Toast/ToastViewport.mjs +30 -30
- package/dist/components/feedback/Toast/toastStore.mjs +1 -2
- package/dist/components/feedback/Toast/toastTiming.cjs.js +1 -1
- package/dist/components/feedback/Toast/toastTiming.mjs +2 -2
- package/dist/components/feedback/Toast/useToast.cjs.js +1 -1
- package/dist/components/feedback/Toast/useToast.mjs +2 -2
- package/dist/components/feedback/Toast/useToastAnnouncer.cjs.js +1 -1
- package/dist/components/feedback/Toast/useToastAnnouncer.mjs +2 -2
- package/dist/components/forms/CheckBox/CheckBox.cjs.js +1 -1
- package/dist/components/forms/CheckBox/CheckBox.mjs +2 -2
- package/dist/components/forms/CheckBox/CheckBox.module.css.mjs +1 -2
- package/dist/components/forms/ColorPicker/ColorInput.cjs.js +1 -1
- package/dist/components/forms/ColorPicker/ColorInput.mjs +43 -43
- package/dist/components/forms/ColorPicker/ColorPicker.cjs.js +1 -1
- package/dist/components/forms/ColorPicker/ColorPicker.mjs +153 -153
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.mjs +1 -2
- package/dist/components/forms/ColorPicker/colorUtils.mjs +1 -2
- package/dist/components/forms/Combobox/Combobox.cjs.js +1 -1
- package/dist/components/forms/Combobox/Combobox.mjs +200 -213
- package/dist/components/forms/Combobox/Combobox.module.css.mjs +1 -2
- package/dist/components/forms/Combobox/ComboboxPopup.cjs.js +1 -1
- package/dist/components/forms/Combobox/ComboboxPopup.mjs +164 -121
- package/dist/components/forms/Combobox/comboboxUtils.cjs.js +1 -1
- package/dist/components/forms/Combobox/comboboxUtils.d.ts +4 -1
- package/dist/components/forms/Combobox/comboboxUtils.mjs +21 -20
- package/dist/components/forms/DatePicker/Calendar.cjs.js +1 -1
- package/dist/components/forms/DatePicker/Calendar.mjs +60 -66
- package/dist/components/forms/DatePicker/Calendar.module.css.mjs +1 -2
- package/dist/components/forms/DatePicker/DatePicker.cjs.js +1 -1
- package/dist/components/forms/DatePicker/DatePicker.mjs +72 -74
- package/dist/components/forms/DatePicker/DatePicker.module.css.mjs +1 -2
- package/dist/components/forms/DatePicker/DateRangePicker.cjs.js +1 -1
- package/dist/components/forms/DatePicker/DateRangePicker.mjs +117 -117
- package/dist/components/forms/DatePicker/DateRangePicker.module.css.mjs +1 -2
- package/dist/components/forms/DatePicker/dateUtils.mjs +1 -2
- package/dist/components/forms/DatePicker/index.d.ts +1 -1
- package/dist/components/forms/DateTimePicker/DateTimePicker.cjs.js +1 -1
- package/dist/components/forms/DateTimePicker/DateTimePicker.mjs +19 -19
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.mjs +1 -2
- package/dist/components/forms/Field/Field.cjs.js +1 -1
- package/dist/components/forms/Field/Field.mjs +14 -14
- package/dist/components/forms/Field/Field.module.css.mjs +1 -2
- package/dist/components/forms/Field/FieldContext.cjs.js +1 -1
- package/dist/components/forms/Field/FieldContext.mjs +2 -2
- package/dist/components/forms/FileUpload/FileUpload.cjs.js +1 -1
- package/dist/components/forms/FileUpload/FileUpload.mjs +250 -255
- package/dist/components/forms/FileUpload/FileUpload.module.css.mjs +1 -2
- package/dist/components/forms/Input/Input.cjs.js +1 -1
- package/dist/components/forms/Input/Input.mjs +35 -35
- package/dist/components/forms/Input/Input.module.css.mjs +1 -2
- package/dist/components/forms/NumberInput/NumberInput.cjs.js +1 -1
- package/dist/components/forms/NumberInput/NumberInput.mjs +137 -142
- package/dist/components/forms/NumberInput/NumberInput.module.css.mjs +1 -2
- package/dist/components/forms/PasswordInput/PasswordInput.cjs.js +1 -1
- package/dist/components/forms/PasswordInput/PasswordInput.mjs +142 -142
- package/dist/components/forms/PasswordInput/PasswordInput.module.css.mjs +1 -2
- package/dist/components/forms/PinInput/PinInput.cjs.js +1 -1
- package/dist/components/forms/PinInput/PinInput.mjs +12 -12
- package/dist/components/forms/PinInput/PinInput.module.css.mjs +1 -2
- package/dist/components/forms/Radio/Radio.cjs.js +1 -1
- package/dist/components/forms/Radio/Radio.mjs +2 -2
- package/dist/components/forms/Radio/Radio.module.css.mjs +1 -2
- package/dist/components/forms/Rating/Rating.cjs.js +1 -1
- package/dist/components/forms/Rating/Rating.mjs +110 -109
- package/dist/components/forms/Rating/Rating.module.css.mjs +1 -2
- package/dist/components/forms/SearchInput/SearchInput.cjs.js +1 -1
- package/dist/components/forms/SearchInput/SearchInput.mjs +118 -126
- package/dist/components/forms/SearchInput/SearchInput.module.css.mjs +1 -2
- package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.js +1 -1
- package/dist/components/forms/SegmentedControl/SegmentedControl.mjs +46 -43
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.js +1 -1
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.mjs +2 -3
- package/dist/components/forms/Select/Select.cjs.js +1 -1
- package/dist/components/forms/Select/Select.mjs +2 -2
- package/dist/components/forms/Select/Select.module.css.mjs +1 -2
- package/dist/components/forms/Slider/Slider.cjs.js +1 -1
- package/dist/components/forms/Slider/Slider.mjs +2 -2
- package/dist/components/forms/Slider/Slider.module.css.mjs +1 -2
- package/dist/components/forms/Switch/Switch.cjs.js +1 -1
- package/dist/components/forms/Switch/Switch.mjs +39 -39
- package/dist/components/forms/Switch/Switch.module.css.mjs +1 -2
- package/dist/components/forms/TagInput/TagInput.cjs.js +1 -1
- package/dist/components/forms/TagInput/TagInput.mjs +197 -203
- package/dist/components/forms/TagInput/TagInput.module.css.mjs +1 -2
- package/dist/components/forms/Textarea/Textarea.cjs.js +1 -1
- package/dist/components/forms/Textarea/Textarea.mjs +59 -59
- package/dist/components/forms/Textarea/Textarea.module.css.mjs +1 -2
- package/dist/components/forms/TimePicker/TimePicker.cjs.js +1 -1
- package/dist/components/forms/TimePicker/TimePicker.mjs +65 -67
- package/dist/components/forms/TimePicker/TimePicker.module.css.mjs +1 -2
- package/dist/components/forms/TimePicker/index.d.ts +1 -0
- package/dist/components/forms/TimePicker/timeUtils.cjs.js +1 -1
- package/dist/components/forms/TimePicker/timeUtils.d.ts +4 -1
- package/dist/components/forms/TimePicker/timeUtils.mjs +43 -38
- package/dist/components/forms/ToggleGroup/ToggleGroup.cjs.js +1 -1
- package/dist/components/forms/ToggleGroup/ToggleGroup.mjs +10 -10
- package/dist/components/forms/ToggleGroup/ToggleGroup.module.css.mjs +1 -2
- package/dist/components/layout/Box/Box.mjs +1 -2
- package/dist/components/layout/Box/Box.module.css.mjs +1 -2
- package/dist/components/layout/Container/Container.mjs +1 -2
- package/dist/components/layout/Container/Container.module.css.mjs +1 -2
- package/dist/components/layout/Divider/Divider.mjs +1 -2
- package/dist/components/layout/Divider/Divider.module.css.mjs +1 -2
- package/dist/components/layout/Flex/Flex.cjs.js +1 -1
- package/dist/components/layout/Flex/Flex.mjs +12 -13
- package/dist/components/layout/Flex/Flex.module.css.mjs +1 -2
- package/dist/components/layout/Grid/Grid.cjs.js +1 -1
- package/dist/components/layout/Grid/Grid.mjs +20 -21
- package/dist/components/layout/Grid/Grid.module.css.mjs +1 -2
- package/dist/components/layout/ResizablePanels/ResizablePanels.cjs.js +1 -1
- package/dist/components/layout/ResizablePanels/ResizablePanels.mjs +17 -17
- package/dist/components/layout/ResizablePanels/ResizablePanels.module.css.mjs +1 -2
- package/dist/components/layout/ScrollArea/ScrollArea.cjs.js +1 -1
- package/dist/components/layout/ScrollArea/ScrollArea.mjs +2 -2
- package/dist/components/layout/ScrollArea/ScrollArea.module.css.mjs +1 -2
- package/dist/components/layout/Stack/Stack.cjs.js +1 -1
- package/dist/components/layout/Stack/Stack.mjs +8 -9
- package/dist/components/layout/Stack/Stack.module.css.mjs +1 -2
- package/dist/components/navigation/Breadcrumbs/Breadcrumbs.cjs.js +1 -1
- package/dist/components/navigation/Breadcrumbs/Breadcrumbs.mjs +41 -41
- package/dist/components/navigation/Breadcrumbs/Breadcrumbs.module.css.mjs +1 -2
- package/dist/components/navigation/ContextMenu/ContextMenu.cjs.js +1 -1
- package/dist/components/navigation/ContextMenu/ContextMenu.mjs +48 -48
- package/dist/components/navigation/ContextMenu/ContextMenu.module.css.mjs +1 -2
- package/dist/components/navigation/Link/Link.cjs.js +1 -1
- package/dist/components/navigation/Link/Link.mjs +6 -7
- package/dist/components/navigation/Link/Link.module.css.mjs +1 -2
- package/dist/components/navigation/Menu/Menu.cjs.js +1 -1
- package/dist/components/navigation/Menu/Menu.mjs +11 -11
- package/dist/components/navigation/Menu/Menu.module.css.mjs +1 -2
- package/dist/components/navigation/Menu/MenuContent.cjs.js +1 -1
- package/dist/components/navigation/Menu/MenuContent.mjs +46 -46
- package/dist/components/navigation/Menu/MenuContext.cjs.js +1 -1
- package/dist/components/navigation/Menu/MenuContext.mjs +2 -2
- package/dist/components/navigation/Menu/MenuItem.cjs.js +1 -1
- package/dist/components/navigation/Menu/MenuItem.mjs +35 -39
- package/dist/components/navigation/Menu/MenuSub.cjs.js +1 -1
- package/dist/components/navigation/Menu/MenuSub.mjs +16 -20
- package/dist/components/navigation/Menu/useMenuRoot.cjs.js +1 -1
- package/dist/components/navigation/Menu/useMenuRoot.mjs +2 -2
- package/dist/components/navigation/Navbar/Navbar.cjs.js +1 -1
- package/dist/components/navigation/Navbar/Navbar.mjs +111 -111
- package/dist/components/navigation/Navbar/Navbar.module.css.mjs +1 -2
- package/dist/components/navigation/Pagination/Pagination.cjs.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.mjs +31 -35
- package/dist/components/navigation/Pagination/Pagination.module.css.mjs +1 -2
- package/dist/components/navigation/Sidebar/Sidebar.cjs.js +1 -1
- package/dist/components/navigation/Sidebar/Sidebar.mjs +52 -52
- package/dist/components/navigation/Sidebar/Sidebar.module.css.mjs +1 -2
- package/dist/components/navigation/Sidebar/SidebarContext.cjs.js +1 -1
- package/dist/components/navigation/Sidebar/SidebarContext.mjs +2 -2
- package/dist/components/navigation/Sidebar/SidebarParts.cjs.js +1 -1
- package/dist/components/navigation/Sidebar/SidebarParts.mjs +76 -80
- package/dist/components/navigation/SkipLink/SkipLink.cjs.js +1 -1
- package/dist/components/navigation/SkipLink/SkipLink.mjs +12 -12
- package/dist/components/navigation/SkipLink/SkipLink.module.css.mjs +1 -2
- package/dist/components/navigation/Stepper/Stepper.cjs.js +1 -1
- package/dist/components/navigation/Stepper/Stepper.mjs +46 -46
- package/dist/components/navigation/Stepper/Stepper.module.css.mjs +1 -2
- package/dist/components/navigation/Tabs/Tabs.cjs.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.mjs +2 -2
- package/dist/components/navigation/Tabs/Tabs.module.css.mjs +1 -2
- package/dist/components/overlays/CommandPalette/CommandPalette.cjs.js +1 -1
- package/dist/components/overlays/CommandPalette/CommandPalette.mjs +206 -206
- package/dist/components/overlays/CommandPalette/CommandPalette.module.css.mjs +1 -2
- package/dist/components/overlays/CommandPalette/CommandPaletteContext.cjs.js +1 -1
- package/dist/components/overlays/CommandPalette/CommandPaletteContext.mjs +2 -2
- package/dist/components/overlays/CommandPalette/CommandPaletteParts.cjs.js +1 -1
- package/dist/components/overlays/CommandPalette/CommandPaletteParts.mjs +104 -104
- package/dist/components/overlays/CommandPalette/commandPaletteUtils.cjs.js +1 -1
- package/dist/components/overlays/CommandPalette/commandPaletteUtils.mjs +62 -60
- package/dist/components/overlays/Drawer/Drawer.cjs.js +1 -1
- package/dist/components/overlays/Drawer/Drawer.mjs +31 -31
- package/dist/components/overlays/Drawer/Drawer.module.css.mjs +1 -2
- package/dist/components/overlays/Drawer/DrawerContent.cjs.js +1 -1
- package/dist/components/overlays/Drawer/DrawerContent.mjs +99 -99
- package/dist/components/overlays/Drawer/DrawerContext.cjs.js +1 -1
- package/dist/components/overlays/Drawer/DrawerContext.mjs +2 -2
- package/dist/components/overlays/Drawer/DrawerParts.cjs.js +1 -1
- package/dist/components/overlays/Drawer/DrawerParts.mjs +18 -18
- package/dist/components/overlays/Drawer/internal.mjs +1 -2
- package/dist/components/overlays/Drawer/useDragToClose.cjs.js +1 -1
- package/dist/components/overlays/Drawer/useDragToClose.mjs +2 -2
- package/dist/components/overlays/HoverCard/HoverCard.cjs.js +1 -1
- package/dist/components/overlays/HoverCard/HoverCard.mjs +31 -31
- package/dist/components/overlays/HoverCard/HoverCard.module.css.mjs +1 -2
- package/dist/components/overlays/Modal/ConfirmModal.cjs.js +1 -1
- package/dist/components/overlays/Modal/ConfirmModal.mjs +21 -23
- package/dist/components/overlays/Modal/Modal.cjs.js +1 -1
- package/dist/components/overlays/Modal/Modal.mjs +47 -47
- package/dist/components/overlays/Modal/Modal.module.css.mjs +1 -2
- package/dist/components/overlays/Modal/ModalContent.cjs.js +1 -1
- package/dist/components/overlays/Modal/ModalContent.mjs +24 -24
- package/dist/components/overlays/Modal/ModalContext.cjs.js +1 -1
- package/dist/components/overlays/Modal/ModalContext.mjs +2 -2
- package/dist/components/overlays/Modal/useScrollRegion.cjs.js +1 -1
- package/dist/components/overlays/Modal/useScrollRegion.mjs +2 -2
- package/dist/components/overlays/Popover/Popover.cjs.js +1 -1
- package/dist/components/overlays/Popover/Popover.mjs +40 -40
- package/dist/components/overlays/Popover/Popover.module.css.mjs +1 -2
- package/dist/components/overlays/Popover/PopoverContent.cjs.js +1 -1
- package/dist/components/overlays/Popover/PopoverContent.mjs +39 -39
- package/dist/components/overlays/Popover/PopoverContext.cjs.js +1 -1
- package/dist/components/overlays/Popover/PopoverContext.mjs +2 -2
- package/dist/components/overlays/Tooltip/Tooltip.cjs.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.mjs +100 -95
- package/dist/components/overlays/Tooltip/Tooltip.module.css.mjs +1 -2
- package/dist/components/primitives/Button/Button.cjs.js +1 -1
- package/dist/components/primitives/Button/Button.mjs +59 -63
- package/dist/components/primitives/Button/Button.module.css.mjs +1 -2
- package/dist/components/primitives/Icon/Icon.cjs.js +1 -1
- package/dist/components/primitives/Icon/Icon.mjs +5 -6
- package/dist/components/primitives/Icon/Icon.module.css.mjs +1 -2
- package/dist/components/primitives/Icon/IconSvg.mjs +1 -2
- package/dist/components/primitives/Icon/icons.mjs +1 -2
- package/dist/components/primitives/Kbd/Kbd.cjs.js +1 -1
- package/dist/components/primitives/Kbd/Kbd.mjs +30 -30
- package/dist/components/primitives/Kbd/Kbd.module.css.mjs +1 -2
- package/dist/components/primitives/Typography/Typography.mjs +1 -2
- package/dist/components/primitives/Typography/Typography.module.css.mjs +1 -2
- package/dist/components/utilities/LocaleProvider/LocaleProvider.cjs.js +1 -1
- package/dist/components/utilities/LocaleProvider/LocaleProvider.mjs +11 -11
- package/dist/components/utilities/LocaleProvider/LocaleProvider.module.css.mjs +1 -2
- package/dist/components/utilities/Portal/Portal.cjs.js +1 -1
- package/dist/components/utilities/Portal/Portal.mjs +2 -2
- package/dist/components/utilities/Theme/Theme.cjs.js +1 -1
- package/dist/components/utilities/Theme/Theme.mjs +13 -13
- package/dist/components/utilities/Theme/Theme.module.css.mjs +1 -2
- package/dist/components/utilities/VisuallyHidden/VisuallyHidden.mjs +1 -2
- package/dist/components/utilities/VisuallyHidden/VisuallyHidden.module.css.mjs +1 -2
- package/dist/hooks/elementSource.cjs.js +1 -1
- package/dist/hooks/elementSource.mjs +4 -3
- package/dist/hooks/useClipboard.cjs.js +1 -1
- package/dist/hooks/useClipboard.mjs +2 -2
- package/dist/hooks/useControllableState.cjs.js +1 -1
- package/dist/hooks/useControllableState.mjs +2 -2
- package/dist/hooks/useDisclosure.cjs.js +1 -1
- package/dist/hooks/useDisclosure.mjs +2 -2
- package/dist/hooks/useDismiss.cjs.js +1 -1
- package/dist/hooks/useDismiss.mjs +2 -2
- package/dist/hooks/useElementObservers.cjs.js +1 -1
- package/dist/hooks/useElementObservers.mjs +2 -2
- package/dist/hooks/useEnvironment.cjs.js +1 -1
- package/dist/hooks/useEnvironment.mjs +2 -2
- package/dist/hooks/useFloatingPosition.cjs.js +1 -1
- package/dist/hooks/useFloatingPosition.mjs +2 -2
- package/dist/hooks/useFocusTrap.cjs.js +1 -1
- package/dist/hooks/useFocusTrap.mjs +4 -15
- package/dist/hooks/useFormReset.cjs.js +1 -1
- package/dist/hooks/useFormReset.mjs +2 -2
- package/dist/hooks/useFormValidation.cjs.js +1 -1
- package/dist/hooks/useFormValidation.mjs +2 -2
- package/dist/hooks/useHotkeys.cjs.js +1 -1
- package/dist/hooks/useHotkeys.mjs +2 -2
- package/dist/hooks/useInertOutside.cjs.js +1 -1
- package/dist/hooks/useInertOutside.mjs +5 -9
- package/dist/hooks/useMediaQuery.cjs.js +1 -1
- package/dist/hooks/useMediaQuery.mjs +2 -2
- package/dist/hooks/useMergedRef.cjs.js +1 -1
- package/dist/hooks/useMergedRef.mjs +2 -2
- package/dist/hooks/useOverlayLayer.cjs.js +1 -1
- package/dist/hooks/useOverlayLayer.mjs +3 -3
- package/dist/hooks/useResponsiveValue.cjs.js +1 -1
- package/dist/hooks/useResponsiveValue.mjs +2 -2
- package/dist/hooks/useScrollLock.cjs.js +1 -1
- package/dist/hooks/useScrollLock.mjs +2 -2
- package/dist/hooks/useStorage.cjs.js +1 -1
- package/dist/hooks/useStorage.mjs +2 -2
- package/dist/hooks/useTiming.cjs.js +1 -1
- package/dist/hooks/useTiming.mjs +10 -15
- package/dist/hooks/useVirtualizer.cjs.js +1 -1
- package/dist/hooks/useVirtualizer.d.ts +13 -0
- package/dist/hooks/useVirtualizer.mjs +93 -54
- package/dist/i18n/en.cjs.js +1 -1
- package/dist/i18n/en.mjs +194 -4
- package/dist/i18n/merge.mjs +1 -2
- package/dist/i18n/plural.mjs +1 -2
- package/dist/i18n/types.d.ts +240 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +114 -114
- package/dist/locales/ar.cjs.js +1 -1
- package/dist/locales/ar.mjs +230 -4
- package/dist/locales/bn.cjs.js +1 -1
- package/dist/locales/bn.mjs +167 -4
- package/dist/locales/cs.cjs.js +1 -1
- package/dist/locales/cs.mjs +212 -4
- package/dist/locales/da.cjs.js +1 -1
- package/dist/locales/da.mjs +194 -4
- package/dist/locales/de.cjs.js +1 -1
- package/dist/locales/de.mjs +194 -4
- package/dist/locales/el.cjs.js +1 -1
- package/dist/locales/el.mjs +194 -4
- package/dist/locales/es.cjs.js +1 -1
- package/dist/locales/es.mjs +194 -4
- package/dist/locales/fa.cjs.js +1 -1
- package/dist/locales/fa.mjs +167 -4
- package/dist/locales/fi.cjs.js +1 -1
- package/dist/locales/fi.mjs +194 -4
- package/dist/locales/fr.cjs.js +1 -1
- package/dist/locales/fr.mjs +194 -4
- package/dist/locales/he.cjs.js +1 -1
- package/dist/locales/he.mjs +203 -4
- package/dist/locales/hi.cjs.js +1 -1
- package/dist/locales/hi.mjs +194 -4
- package/dist/locales/hu.cjs.js +1 -1
- package/dist/locales/hu.mjs +167 -4
- package/dist/locales/id.cjs.js +1 -1
- package/dist/locales/id.mjs +167 -4
- package/dist/locales/it.cjs.js +1 -1
- package/dist/locales/it.mjs +194 -4
- package/dist/locales/ja.cjs.js +1 -1
- package/dist/locales/ja.mjs +167 -4
- package/dist/locales/ko.cjs.js +1 -1
- package/dist/locales/ko.mjs +167 -4
- package/dist/locales/nb.cjs.js +1 -1
- package/dist/locales/nb.mjs +194 -4
- package/dist/locales/nl.cjs.js +1 -1
- package/dist/locales/nl.mjs +194 -4
- package/dist/locales/pl.cjs.js +1 -1
- package/dist/locales/pl.mjs +212 -4
- package/dist/locales/pt-BR.cjs.js +1 -1
- package/dist/locales/pt-BR.mjs +194 -4
- package/dist/locales/ro.cjs.js +1 -1
- package/dist/locales/ro.mjs +203 -4
- package/dist/locales/ru.cjs.js +1 -1
- package/dist/locales/ru.mjs +212 -4
- package/dist/locales/sv.cjs.js +1 -1
- package/dist/locales/sv.mjs +194 -4
- package/dist/locales/th.cjs.js +1 -1
- package/dist/locales/th.mjs +167 -4
- package/dist/locales/tr.cjs.js +1 -1
- package/dist/locales/tr.mjs +167 -4
- package/dist/locales/uk.cjs.js +1 -1
- package/dist/locales/uk.mjs +212 -4
- package/dist/locales/ur.cjs.js +1 -1
- package/dist/locales/ur.mjs +194 -4
- package/dist/locales/vi.cjs.js +1 -1
- package/dist/locales/vi.mjs +167 -4
- package/dist/locales/zh-Hans.cjs.js +1 -1
- package/dist/locales/zh-Hans.mjs +167 -4
- package/dist/locales/zh-Hant.cjs.js +1 -1
- package/dist/locales/zh-Hant.mjs +167 -4
- package/dist/types/common.mjs +1 -2
- package/dist/utils/announce.cjs.js +1 -1
- package/dist/utils/announce.mjs +3 -4
- package/dist/utils/brandPalette.mjs +1 -2
- package/dist/utils/clipboard.mjs +1 -2
- package/dist/utils/cx.mjs +1 -2
- package/dist/utils/fillSlot.cjs.js +1 -1
- package/dist/utils/fillSlot.mjs +2 -2
- package/dist/utils/flattenChildren.mjs +1 -2
- package/dist/utils/hotkeys.mjs +1 -2
- package/dist/utils/intl.cjs.js +1 -0
- package/dist/utils/intl.d.ts +10 -0
- package/dist/utils/intl.mjs +15 -0
- package/dist/utils/refs.mjs +1 -2
- package/dist/utils/responsive.mjs +1 -2
- package/dist/utils/slot.mjs +1 -2
- package/dist/utils/validators.mjs +1 -2
- package/dist/vjdesigns-ui.css +1 -1
- package/dist/vjdesigns-ui.css.d.ts +2 -0
- package/package.json +103 -90
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
"use client";
|
|
2
|
+
import { Button as e } from "../../primitives/Button/Button.mjs";
|
|
3
|
+
import { useMergedRef as t } from "../../../hooks/useMergedRef.mjs";
|
|
4
|
+
import { getChildRef as n, isSingleElement as r } from "../../../utils/refs.mjs";
|
|
5
|
+
import { cloneSlot as i } from "../../../utils/slot.mjs";
|
|
5
6
|
import { MenuLevelContext as a, MenuTreeContext as o, useMenuLevel as s, useMenuTree as c } from "./MenuContext.mjs";
|
|
6
7
|
import { MenuContent as l } from "./MenuContent.mjs";
|
|
7
8
|
import { useMenuRoot as u } from "./useMenuRoot.mjs";
|
|
@@ -9,7 +10,7 @@ import { MenuCheckboxItem as d, MenuGroup as f, MenuItem as p, MenuLabel as m, M
|
|
|
9
10
|
import { MenuSub as v, MenuSubContent as y, MenuSubTrigger as b } from "./MenuSub.mjs";
|
|
10
11
|
import { useRef as x } from "react";
|
|
11
12
|
import { jsx as S } from "react/jsx-runtime";
|
|
12
|
-
|
|
13
|
+
// src/components/navigation/Menu/Menu.tsx
|
|
13
14
|
var C = ({ children: e, ...t }) => {
|
|
14
15
|
let { level: n, tree: r } = u(t);
|
|
15
16
|
return /* @__PURE__ */ S(o.Provider, {
|
|
@@ -27,14 +28,14 @@ function w(e) {
|
|
|
27
28
|
var T = ({ children: a, asChild: o, onClick: l, onKeyDown: u, onPointerDown: d, id: f, ref: p, ...m }) => {
|
|
28
29
|
let h = s("Menu.Trigger");
|
|
29
30
|
c("Menu.Trigger");
|
|
30
|
-
let g = (o ??
|
|
31
|
-
u?.(e),
|
|
31
|
+
let g = (o ?? r(a)) && r(a) ? a : null, _ = g ? n(g) : void 0, v = t(h.triggerRef, p, _), y = x(!1), b = (e) => {
|
|
32
|
+
u?.(e), e.defaultPrevented || (e.key === "ArrowDown" || e.key === "ArrowUp" ? (e.preventDefault(), h.setOpen(!0, { focus: e.key === "ArrowDown" ? "first" : "last" })) : (e.key === "Enter" || e.key === " ") && (y.current = !0));
|
|
32
33
|
}, C = (e) => {
|
|
33
34
|
d?.(e), y.current = !1;
|
|
34
35
|
}, T = (e) => {
|
|
35
36
|
l?.(e);
|
|
36
37
|
let t = y.current || e.detail === 0;
|
|
37
|
-
y.current = !1,
|
|
38
|
+
y.current = !1, e.defaultPrevented || (h.open ? h.setOpen(!1, { restore: "force" }) : h.setOpen(!0, { focus: t ? "first" : "content" }));
|
|
38
39
|
}, E = g ? g.props.id : void 0, D = {
|
|
39
40
|
id: f ?? E ?? h.triggerId,
|
|
40
41
|
"aria-haspopup": "menu",
|
|
@@ -45,10 +46,10 @@ var T = ({ children: a, asChild: o, onClick: l, onKeyDown: u, onPointerDown: d,
|
|
|
45
46
|
onKeyDown: b,
|
|
46
47
|
onPointerDown: C
|
|
47
48
|
};
|
|
48
|
-
return g ?
|
|
49
|
+
return g ? i(g, {
|
|
49
50
|
...w(m),
|
|
50
51
|
...D
|
|
51
|
-
}, v) : /* @__PURE__ */ S(
|
|
52
|
+
}, v) : /* @__PURE__ */ S(e, {
|
|
52
53
|
...m,
|
|
53
54
|
...D,
|
|
54
55
|
ref: v,
|
|
@@ -68,5 +69,4 @@ var T = ({ children: a, asChild: o, onClick: l, onKeyDown: u, onPointerDown: d,
|
|
|
68
69
|
SubTrigger: b,
|
|
69
70
|
SubContent: y
|
|
70
71
|
});
|
|
71
|
-
//#endregion
|
|
72
72
|
export { E as Menu, d as MenuCheckboxItem, l as MenuContent, f as MenuGroup, p as MenuItem, m as MenuLabel, h as MenuRadioGroup, g as MenuRadioItem, _ as MenuSeparator, v as MenuSub, y as MenuSubContent, b as MenuSubTrigger, T as MenuTrigger };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/navigation/Menu/Menu.module.css
|
|
2
2
|
var e = "_positioner_g4nth_15", t = "_content_g4nth_27", n = "_sm_g4nth_113", r = "_md_g4nth_127", i = "_lg_g4nth_141", a = "_item_g4nth_221", o = "_subTrigger_g4nth_305", s = "_danger_g4nth_315", c = "_indicator_g4nth_357", l = "_icon_g4nth_359", u = "_chevron_g4nth_361", d = "_label_g4nth_413", f = "_shortcut_g4nth_425", p = "_group_g4nth_481", m = "_groupLabel_g4nth_493", h = "_separator_g4nth_521", g = {
|
|
3
3
|
positioner: e,
|
|
4
4
|
content: t,
|
|
@@ -18,5 +18,4 @@ var e = "_positioner_g4nth_15", t = "_content_g4nth_27", n = "_sm_g4nth_113", r
|
|
|
18
18
|
groupLabel: m,
|
|
19
19
|
separator: h
|
|
20
20
|
};
|
|
21
|
-
//#endregion
|
|
22
21
|
export { u as chevron, t as content, s as danger, g as default, p as group, m as groupLabel, l as icon, c as indicator, a as item, d as label, i as lg, r as md, e as positioner, h as separator, f as shortcut, n as sm, o as subTrigger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("../../../hooks/
|
|
1
|
+
"use client";const e=require("../../../hooks/useFloatingPosition.cjs.js"),t=require("../../../hooks/useFocusTrap.cjs.js"),n=require("../../../hooks/useOverlayLayer.cjs.js"),r=require("../../../utils/cx.cjs.js"),i=require("../../utilities/Portal/Portal.cjs.js"),a=require("../../../hooks/useMergedRef.cjs.js"),o=require("./MenuContext.cjs.js"),s=require("./Menu.module.css.cjs.js");let c=require("react"),l=require("react/jsx-runtime");var u={sm:s.default.sm,md:s.default.md,lg:s.default.lg},d=500;function f(e,t){if(!t)return e;let[n,r]=e.split(`-`);return n!==`top`&&n!==`bottom`||!r?e:`${n}-${r===`start`?`end`:`start`}`}var p=({container:e,...t})=>{let n=o.useMenuLevel(`Menu.Content`),r=o.useMenuTree(`Menu.Content`);return n.open?(0,l.jsx)(i.Portal,{container:e,children:(0,l.jsx)(m,{...t,level:n,tree:r})}):null},m=({level:i,tree:p,children:m,placement:h,offset:g,maxHeight:_,className:v,style:y,ref:b,onKeyDown:x,onPointerEnter:S,onFocus:C,"aria-label":w,"aria-labelledby":T,...E})=>{let D=(0,c.useRef)(null),O=a.useMergedRef(i.contentRef,b),[k,A]=(0,c.useState)(`ltr`);(0,c.useLayoutEffect)(()=>{let e=(i.anchorRef??i.triggerRef).current;e&&A(getComputedStyle(e).direction===`rtl`?`rtl`:`ltr`)},[i.anchorRef,i.triggerRef]);let j=f(h??(i.isSub?o.defaultSubPlacement(k===`rtl`):`bottom-start`),k===`rtl`),M=e.useFloatingPosition(i.anchorRef??i.triggerRef,D,{open:!0,placement:j,offset:g??(i.isSub?4:8)}),N=M.isPositioned,P=M.placement.split(`-`)[0],F=n.useOverlayLayer({active:!0,elements:()=>[D,i.anchorRef??i.triggerRef],onEscape:()=>i.setOpen(!1,{restore:`force`}),onOutsidePress:e=>{if(i.isSub){i.setOpen(!1,{restore:`auto`});return}let t=e.target instanceof Element?e.target:null;i.setOpen(!1,{restore:t?.closest(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),label,summary,iframe,[contenteditable='true'],[tabindex]`)?`none`:`deferred`})}});(0,c.useEffect)(()=>{if(!N||i.openFocusRef.current===`none`)return;let e=i.contentRef.current;if(e)return t.focusWhenReady(()=>{let t=i.openFocusRef.current;if(t===`none`||!e.isConnected)return null;let n=o.getMenuItems(e),r=(t===`first`?n[0]:t===`last`?n[n.length-1]:null)??e;return o.focusItem(r),document.activeElement===r&&(i.openFocusRef.current=`none`),r})},[N,i.focusNonce,i.openFocusRef,i.contentRef]),(0,c.useLayoutEffect)(()=>{let{contentRef:e,triggerRef:t,restoreModeRef:n,isSub:r}=i,a=e.current,o=`[data-menu-tree="${p.treeId}"]`;return()=>{let e=n.current;if(n.current=`auto`,r&&p.closingAllRef.current)return;let i=document.activeElement,s=!i||i===document.body||(r?!!a?.contains(i):!!i.closest(o)),c=()=>{let e=t.current;e?.isConnected&&e.focus({preventScroll:!0})};e===`force`||e===`auto`&&s?c():e===`deferred`&&window.setTimeout(c,0)}},[]);let I=(0,c.useRef)({buffer:``,timer:0});(0,c.useEffect)(()=>()=>window.clearTimeout(I.current.timer),[]);let L=(e,t,n)=>{let r=I.current;window.clearTimeout(r.timer),r.buffer+=e.toLowerCase(),r.timer=window.setTimeout(()=>{r.buffer=``},d);let i=r.buffer,a=Array.from(i).every(e=>e===i[0]),s=a?i[0]:i,c=a?n+1:Math.max(n,0),l=[...t.slice(c),...t.slice(0,c)].find(e=>o.getItemText(e).toLowerCase().startsWith(s));l&&o.focusItem(l)},R=e=>{if(x?.(e),e.defaultPrevented)return;let t=i.contentRef.current,n=e.target;if(!t||!t.contains(n))return;let r=o.getMenuItems(t),a=n.closest(`[${o.ITEM_ATTR}]`),s=a?r.indexOf(a):-1,c=getComputedStyle(t).direction===`rtl`,l=c?`ArrowLeft`:`ArrowRight`,u=c?`ArrowRight`:`ArrowLeft`,d=r.length-1,f=()=>{i.openSub!==null&&i.setOpenSub(null)};switch(e.key){case`ArrowDown`:e.preventDefault(),f(),r.length&&o.focusItem(r[(s+1)%r.length]);return;case`ArrowUp`:e.preventDefault(),f(),r.length&&o.focusItem(r[s<=0?d:s-1]);return;case`Home`:case`PageUp`:e.preventDefault(),f(),o.focusItem(r[0]);return;case`End`:case`PageDown`:e.preventDefault(),f(),o.focusItem(r[d]);return;case l:a?.getAttribute(`aria-haspopup`)===`menu`&&(e.preventDefault(),a.click());return;case u:i.isSub&&(e.preventDefault(),i.setOpen(!1,{restore:`force`}));return;case`Enter`:case` `:if(e.key===` `&&I.current.buffer){e.preventDefault(),L(` `,r,s);return}if(a){if(e.preventDefault(),e.repeat)return;a.click()}return;case`Tab`:p.focusRootTrigger(),p.closeAll(`none`);return;default:e.key.length!==1||e.ctrlKey||e.metaKey||e.altKey||(e.preventDefault(),L(e.key,r,s))}},z=e=>{C?.(e);let t=i.contentRef.current,n=e.target;if(t&&n.hasAttribute(`data-menu-item`)&&t.contains(n))for(let e of o.getMenuItems(t))e.tabIndex=e===n?0:-1},B=e=>{S?.(e),i.parent?.cancelSubTimer()},V=T??(w?void 0:i.triggerRef.current?.id||i.triggerId),H=_===void 0?y:{...y,"--_max-h":typeof _==`number`?`${_}px`:_};return(0,l.jsx)(n.OverlayLayerProvider,{layer:F,children:(0,l.jsx)(o.MenuLevelContext.Provider,{value:i,children:(0,l.jsx)(`div`,{ref:D,className:s.default.positioner,style:M.style,dir:k,children:(0,l.jsx)(`div`,{"aria-label":w,"aria-labelledby":V,tabIndex:-1,...E,role:`menu`,"aria-orientation":`vertical`,id:i.contentId,ref:O,className:r.cx(s.default.content,u[p.size],v),style:H,"data-side":P,"data-state":`open`,"data-menu-tree":p.treeId,onKeyDown:R,onPointerEnter:B,onFocus:z,children:m})})})})};exports.MenuContent=p,exports.MenuSurface=m;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
import { useFloatingPosition as
|
|
3
|
-
import { focusWhenReady as
|
|
4
|
-
import {
|
|
5
|
-
import { cx as
|
|
6
|
-
import { Portal as
|
|
1
|
+
"use client";
|
|
2
|
+
import { useFloatingPosition as e } from "../../../hooks/useFloatingPosition.mjs";
|
|
3
|
+
import { focusWhenReady as t } from "../../../hooks/useFocusTrap.mjs";
|
|
4
|
+
import { OverlayLayerProvider as n, useOverlayLayer as r } from "../../../hooks/useOverlayLayer.mjs";
|
|
5
|
+
import { cx as i } from "../../../utils/cx.mjs";
|
|
6
|
+
import { Portal as a } from "../../utilities/Portal/Portal.mjs";
|
|
7
|
+
import { useMergedRef as o } from "../../../hooks/useMergedRef.mjs";
|
|
7
8
|
import { ITEM_ATTR as s, MenuLevelContext as c, defaultSubPlacement as l, focusItem as u, getItemText as d, getMenuItems as f, useMenuLevel as p, useMenuTree as m } from "./MenuContext.mjs";
|
|
8
9
|
import h from "./Menu.module.css.mjs";
|
|
9
10
|
import { useEffect as g, useLayoutEffect as _, useRef as v, useState as y } from "react";
|
|
10
11
|
import { jsx as b } from "react/jsx-runtime";
|
|
11
|
-
|
|
12
|
+
// src/components/navigation/Menu/MenuContent.tsx
|
|
12
13
|
var x = {
|
|
13
14
|
sm: h.sm,
|
|
14
15
|
md: h.md,
|
|
@@ -21,7 +22,7 @@ function C(e, t) {
|
|
|
21
22
|
}
|
|
22
23
|
var w = ({ container: e, ...t }) => {
|
|
23
24
|
let n = p("Menu.Content"), r = m("Menu.Content");
|
|
24
|
-
return n.open ? /* @__PURE__ */ b(
|
|
25
|
+
return n.open ? /* @__PURE__ */ b(a, {
|
|
25
26
|
container: e,
|
|
26
27
|
children: /* @__PURE__ */ b(T, {
|
|
27
28
|
...t,
|
|
@@ -29,49 +30,49 @@ var w = ({ container: e, ...t }) => {
|
|
|
29
30
|
tree: r
|
|
30
31
|
})
|
|
31
32
|
}) : null;
|
|
32
|
-
}, T = ({ level:
|
|
33
|
-
let I = v(null), L =
|
|
33
|
+
}, T = ({ level: a, tree: p, children: m, placement: w, offset: T, maxHeight: E, className: D, style: O, ref: k, onKeyDown: A, onPointerEnter: j, onFocus: M, "aria-label": N, "aria-labelledby": P, ...F }) => {
|
|
34
|
+
let I = v(null), L = o(a.contentRef, k), [R, z] = y("ltr");
|
|
34
35
|
_(() => {
|
|
35
|
-
let e = (
|
|
36
|
+
let e = (a.anchorRef ?? a.triggerRef).current;
|
|
36
37
|
e && z(getComputedStyle(e).direction === "rtl" ? "rtl" : "ltr");
|
|
37
|
-
}, [
|
|
38
|
-
let B = C(w ?? (
|
|
38
|
+
}, [a.anchorRef, a.triggerRef]);
|
|
39
|
+
let B = C(w ?? (a.isSub ? l(R === "rtl") : "bottom-start"), R === "rtl"), V = e(a.anchorRef ?? a.triggerRef, I, {
|
|
39
40
|
open: !0,
|
|
40
41
|
placement: B,
|
|
41
|
-
offset: T ?? (
|
|
42
|
-
}), H = V.isPositioned, U = V.placement.split("-")[0], W =
|
|
42
|
+
offset: T ?? (a.isSub ? 4 : 8)
|
|
43
|
+
}), H = V.isPositioned, U = V.placement.split("-")[0], W = r({
|
|
43
44
|
active: !0,
|
|
44
|
-
elements: () => [I,
|
|
45
|
-
onEscape: () =>
|
|
45
|
+
elements: () => [I, a.anchorRef ?? a.triggerRef],
|
|
46
|
+
onEscape: () => a.setOpen(!1, { restore: "force" }),
|
|
46
47
|
onOutsidePress: (e) => {
|
|
47
|
-
if (
|
|
48
|
-
|
|
48
|
+
if (a.isSub) {
|
|
49
|
+
a.setOpen(!1, { restore: "auto" });
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
51
52
|
let t = e.target instanceof Element ? e.target : null;
|
|
52
|
-
|
|
53
|
+
a.setOpen(!1, { restore: t?.closest("a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),label,summary,iframe,[contenteditable='true'],[tabindex]") ? "none" : "deferred" });
|
|
53
54
|
}
|
|
54
55
|
});
|
|
55
56
|
g(() => {
|
|
56
|
-
if (!H ||
|
|
57
|
-
let e =
|
|
58
|
-
if (e) return
|
|
59
|
-
let t =
|
|
57
|
+
if (!H || a.openFocusRef.current === "none") return;
|
|
58
|
+
let e = a.contentRef.current;
|
|
59
|
+
if (e) return t(() => {
|
|
60
|
+
let t = a.openFocusRef.current;
|
|
60
61
|
if (t === "none" || !e.isConnected) return null;
|
|
61
62
|
let n = f(e), r = (t === "first" ? n[0] : t === "last" ? n[n.length - 1] : null) ?? e;
|
|
62
|
-
return u(r), document.activeElement === r && (
|
|
63
|
+
return u(r), document.activeElement === r && (a.openFocusRef.current = "none"), r;
|
|
63
64
|
});
|
|
64
65
|
}, [
|
|
65
66
|
H,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
a.focusNonce,
|
|
68
|
+
a.openFocusRef,
|
|
69
|
+
a.contentRef
|
|
69
70
|
]), _(() => {
|
|
70
|
-
let { contentRef: e, triggerRef: t, restoreModeRef: n, isSub: r } =
|
|
71
|
+
let { contentRef: e, triggerRef: t, restoreModeRef: n, isSub: r } = a, i = e.current, o = `[data-menu-tree="${p.treeId}"]`;
|
|
71
72
|
return () => {
|
|
72
73
|
let e = n.current;
|
|
73
74
|
if (n.current = "auto", r && p.closingAllRef.current) return;
|
|
74
|
-
let
|
|
75
|
+
let a = document.activeElement, s = !a || a === document.body || (r ? !!i?.contains(a) : !!a.closest(o)), c = () => {
|
|
75
76
|
let e = t.current;
|
|
76
77
|
e?.isConnected && e.focus({ preventScroll: !0 });
|
|
77
78
|
};
|
|
@@ -92,17 +93,17 @@ var w = ({ container: e, ...t }) => {
|
|
|
92
93
|
c && u(c);
|
|
93
94
|
}, q = (e) => {
|
|
94
95
|
if (A?.(e), e.defaultPrevented) return;
|
|
95
|
-
let t =
|
|
96
|
+
let t = a.contentRef.current, n = e.target;
|
|
96
97
|
if (!t || !t.contains(n)) return;
|
|
97
|
-
let r = f(t), i = n.closest(`[${s}]`),
|
|
98
|
-
|
|
98
|
+
let r = f(t), i = n.closest(`[${s}]`), o = i ? r.indexOf(i) : -1, c = getComputedStyle(t).direction === "rtl", l = c ? "ArrowLeft" : "ArrowRight", d = c ? "ArrowRight" : "ArrowLeft", m = r.length - 1, h = () => {
|
|
99
|
+
a.openSub !== null && a.setOpenSub(null);
|
|
99
100
|
};
|
|
100
101
|
switch (e.key) {
|
|
101
102
|
case "ArrowDown":
|
|
102
|
-
e.preventDefault(), h(), r.length && u(r[(
|
|
103
|
+
e.preventDefault(), h(), r.length && u(r[(o + 1) % r.length]);
|
|
103
104
|
return;
|
|
104
105
|
case "ArrowUp":
|
|
105
|
-
e.preventDefault(), h(), r.length && u(r[
|
|
106
|
+
e.preventDefault(), h(), r.length && u(r[o <= 0 ? m : o - 1]);
|
|
106
107
|
return;
|
|
107
108
|
case "Home":
|
|
108
109
|
case "PageUp":
|
|
@@ -116,12 +117,12 @@ var w = ({ container: e, ...t }) => {
|
|
|
116
117
|
i?.getAttribute("aria-haspopup") === "menu" && (e.preventDefault(), i.click());
|
|
117
118
|
return;
|
|
118
119
|
case d:
|
|
119
|
-
|
|
120
|
+
a.isSub && (e.preventDefault(), a.setOpen(!1, { restore: "force" }));
|
|
120
121
|
return;
|
|
121
122
|
case "Enter":
|
|
122
123
|
case " ":
|
|
123
124
|
if (e.key === " " && G.current.buffer) {
|
|
124
|
-
e.preventDefault(), K(" ", r,
|
|
125
|
+
e.preventDefault(), K(" ", r, o);
|
|
125
126
|
return;
|
|
126
127
|
}
|
|
127
128
|
if (i) {
|
|
@@ -132,22 +133,22 @@ var w = ({ container: e, ...t }) => {
|
|
|
132
133
|
case "Tab":
|
|
133
134
|
p.focusRootTrigger(), p.closeAll("none");
|
|
134
135
|
return;
|
|
135
|
-
default: e.key.length
|
|
136
|
+
default: e.key.length !== 1 || e.ctrlKey || e.metaKey || e.altKey || (e.preventDefault(), K(e.key, r, o));
|
|
136
137
|
}
|
|
137
138
|
}, J = (e) => {
|
|
138
139
|
M?.(e);
|
|
139
|
-
let t =
|
|
140
|
+
let t = a.contentRef.current, n = e.target;
|
|
140
141
|
if (t && n.hasAttribute("data-menu-item") && t.contains(n)) for (let e of f(t)) e.tabIndex = e === n ? 0 : -1;
|
|
141
142
|
}, Y = (e) => {
|
|
142
|
-
j?.(e),
|
|
143
|
-
}, X = P ?? (N ? void 0 :
|
|
143
|
+
j?.(e), a.parent?.cancelSubTimer();
|
|
144
|
+
}, X = P ?? (N ? void 0 : a.triggerRef.current?.id || a.triggerId), Z = E === void 0 ? O : {
|
|
144
145
|
...O,
|
|
145
146
|
"--_max-h": typeof E == "number" ? `${E}px` : E
|
|
146
147
|
};
|
|
147
|
-
return /* @__PURE__ */ b(
|
|
148
|
+
return /* @__PURE__ */ b(n, {
|
|
148
149
|
layer: W,
|
|
149
150
|
children: /* @__PURE__ */ b(c.Provider, {
|
|
150
|
-
value:
|
|
151
|
+
value: a,
|
|
151
152
|
children: /* @__PURE__ */ b("div", {
|
|
152
153
|
ref: I,
|
|
153
154
|
className: h.positioner,
|
|
@@ -160,9 +161,9 @@ var w = ({ container: e, ...t }) => {
|
|
|
160
161
|
...F,
|
|
161
162
|
role: "menu",
|
|
162
163
|
"aria-orientation": "vertical",
|
|
163
|
-
id:
|
|
164
|
+
id: a.contentId,
|
|
164
165
|
ref: L,
|
|
165
|
-
className:
|
|
166
|
+
className: i(h.content, x[p.size], D),
|
|
166
167
|
style: Z,
|
|
167
168
|
"data-side": U,
|
|
168
169
|
"data-state": "open",
|
|
@@ -176,5 +177,4 @@ var w = ({ container: e, ...t }) => {
|
|
|
176
177
|
})
|
|
177
178
|
});
|
|
178
179
|
};
|
|
179
|
-
//#endregion
|
|
180
180
|
export { w as MenuContent, T as MenuSurface };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
let e=require("react");var t=(0,e.createContext)(null),n=(0,e.createContext)(null),r=(0,e.createContext)(null);function i(n){let r=(0,e.useContext)(t);if(!r)throw Error(`${n} must be rendered inside <Menu>.`);return r}function a(t){let r=(0,e.useContext)(n);if(!r)throw Error(`${t} must be rendered inside <Menu>.`);return r}function o(t){let n=(0,e.useContext)(r);if(!n)throw Error(`${t} must be rendered inside <Menu.Sub>.`);return n}function s(){let[t,n]=(0,e.useState)(null),r=(0,e.useRef)(void 0),i=(0,e.useRef)(void 0),a=(0,e.useCallback)(()=>{r.current!==void 0&&window.clearTimeout(r.current),r.current=void 0,i.current=void 0},[]),o=(0,e.useCallback)(e=>{a(),n(e)},[a]),s=(0,e.useCallback)(e=>{a(),n(t=>t===e?null:t)},[a]),c=(0,e.useCallback)((e,t)=>{(r.current===void 0||i.current!==e)&&(a(),i.current=e,r.current=window.setTimeout(()=>{r.current=void 0,i.current=void 0,n(e)},t))},[a]);return(0,e.useEffect)(()=>a,[a]),(0,e.useMemo)(()=>({openSub:t,setOpenSub:o,closeSub:s,scheduleSub:c,cancelSubTimer:a}),[t,o,s,c,a])}var c=`data-menu-item`;function l(e){return Array.from(e.querySelectorAll(`[${c}]`)).filter(t=>t.closest(`[role="menu"]`)===e)}function u(e){return e.getAttribute(`data-menu-text`)||(e.querySelector(`[data-menu-label]`)?.textContent??e.textContent??``).trim()}function d(e){e&&(e.focus({preventScroll:!0}),e.scrollIntoView?.({block:`nearest`}))}var f=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),label,summary,iframe,[contenteditable='true'],[tabindex]`;function p(e){return e?`left-start`:`right-start`}exports.ITEM_ATTR=c,exports.MenuLevelContext=n,exports.MenuSubContext=r,exports.MenuTreeContext=t,exports.PRESS_FOCUSABLE=f,exports.defaultSubPlacement=p,exports.focusItem=d,exports.getItemText=u,exports.getMenuItems=l,exports.useMenuLevel=a,exports.useMenuSub=o,exports.useMenuTree=i,exports.useSubmenuState=s;
|
|
1
|
+
"use client";let e=require("react");var t=(0,e.createContext)(null),n=(0,e.createContext)(null),r=(0,e.createContext)(null);function i(n){let r=(0,e.useContext)(t);if(!r)throw Error(`${n} must be rendered inside <Menu>.`);return r}function a(t){let r=(0,e.useContext)(n);if(!r)throw Error(`${t} must be rendered inside <Menu>.`);return r}function o(t){let n=(0,e.useContext)(r);if(!n)throw Error(`${t} must be rendered inside <Menu.Sub>.`);return n}function s(){let[t,n]=(0,e.useState)(null),r=(0,e.useRef)(void 0),i=(0,e.useRef)(void 0),a=(0,e.useCallback)(()=>{r.current!==void 0&&window.clearTimeout(r.current),r.current=void 0,i.current=void 0},[]),o=(0,e.useCallback)(e=>{a(),n(e)},[a]),s=(0,e.useCallback)(e=>{a(),n(t=>t===e?null:t)},[a]),c=(0,e.useCallback)((e,t)=>{(r.current===void 0||i.current!==e)&&(a(),i.current=e,r.current=window.setTimeout(()=>{r.current=void 0,i.current=void 0,n(e)},t))},[a]);return(0,e.useEffect)(()=>a,[a]),(0,e.useMemo)(()=>({openSub:t,setOpenSub:o,closeSub:s,scheduleSub:c,cancelSubTimer:a}),[t,o,s,c,a])}var c=`data-menu-item`;function l(e){return Array.from(e.querySelectorAll(`[${c}]`)).filter(t=>t.closest(`[role="menu"]`)===e)}function u(e){return e.getAttribute(`data-menu-text`)||(e.querySelector(`[data-menu-label]`)?.textContent??e.textContent??``).trim()}function d(e){e&&(e.focus({preventScroll:!0}),e.scrollIntoView?.({block:`nearest`}))}var f=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),label,summary,iframe,[contenteditable='true'],[tabindex]`;function p(e){return e?`left-start`:`right-start`}exports.ITEM_ATTR=c,exports.MenuLevelContext=n,exports.MenuSubContext=r,exports.MenuTreeContext=t,exports.PRESS_FOCUSABLE=f,exports.defaultSubPlacement=p,exports.focusItem=d,exports.getItemText=u,exports.getMenuItems=l,exports.useMenuLevel=a,exports.useMenuSub=o,exports.useMenuTree=i,exports.useSubmenuState=s;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { createContext as e, useCallback as t, useContext as n, useEffect as r, useMemo as i, useRef as a, useState as o } from "react";
|
|
2
|
-
|
|
3
|
+
// src/components/navigation/Menu/MenuContext.ts
|
|
3
4
|
var s = e(null), c = e(null), l = e(null);
|
|
4
5
|
function u(e) {
|
|
5
6
|
let t = n(s);
|
|
@@ -56,5 +57,4 @@ var v = "a[href],button:not([disabled]),input:not([disabled]),select:not([disabl
|
|
|
56
57
|
function y(e) {
|
|
57
58
|
return e ? "left-start" : "right-start";
|
|
58
59
|
}
|
|
59
|
-
//#endregion
|
|
60
60
|
export { m as ITEM_ATTR, c as MenuLevelContext, l as MenuSubContext, s as MenuTreeContext, v as PRESS_FOCUSABLE, y as defaultSubPlacement, _ as focusItem, g as getItemText, h as getMenuItems, d as useMenuLevel, f as useMenuSub, u as useMenuTree, p as useSubmenuState };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("../../../hooks/useControllableState.cjs.js"),t=require("../../../
|
|
1
|
+
"use client";const e=require("../../../hooks/useControllableState.cjs.js"),t=require("../../../utils/cx.cjs.js"),n=require("../../primitives/Icon/icons.cjs.js"),r=require("../../primitives/Icon/Icon.cjs.js"),i=require("../../primitives/Kbd/Kbd.cjs.js"),a=require("../../../hooks/useMergedRef.cjs.js"),o=require("./MenuContext.cjs.js"),s=require("./Menu.module.css.cjs.js");let c=require("react"),l=require("react/jsx-runtime");var u={neutral:void 0,danger:s.default.danger};function d(e){let t={target:e,defaultPrevented:!1,preventDefault:()=>{t.defaultPrevented=!0}};return t}var f={cmd:`Meta`,meta:`Meta`,ctrl:`Control`,alt:`Alt`,option:`Alt`,shift:`Shift`,enter:`Enter`,return:`Enter`,esc:`Escape`,tab:`Tab`,space:`Space`,backspace:`Backspace`,delete:`Delete`,capslock:`CapsLock`,up:`ArrowUp`,down:`ArrowDown`,left:`ArrowLeft`,right:`ArrowRight`,pageup:`PageUp`,pagedown:`PageDown`,home:`Home`,end:`End`};function p(e,t){return e.map(e=>{let n=e.toLowerCase();return n===`mod`?t===`mac`?`Meta`:`Control`:f[n]??(e.length===1?e.toUpperCase():e)}).join(`+`)}var m={sm:`sm`,md:`sm`,lg:`md`},h=100,g=300,_={x:NaN,y:NaN},v=({role:e,tone:n=`neutral`,disabled:r=!1,icon:c,indicator:d,shortcut:f,end:v,href:y,target:b,rel:x,subId:S,textValue:C,onActivate:w,children:T,className:E,onClick:D,onPointerMove:O,ref:k,"aria-keyshortcuts":A,...j})=>{let M=o.useMenuLevel(`Menu.Item`),N=o.useMenuTree(`Menu.Item`),P=i.useKbdPlatform(),F=a.useMergedRef(k),I=e=>{if(O?.(e),e.defaultPrevented||e.pointerType===`touch`)return;let t=_.x!==e.clientX||_.y!==e.clientY;if(_.x=e.clientX,_.y=e.clientY,!t)return;let n=e.currentTarget,i=S&&M.openSub===S?document.getElementById(n.getAttribute(`aria-controls`)??``):null,a=!!i&&i.contains(document.activeElement);document.activeElement!==n&&!a&&n.focus({preventScroll:!0}),S?M.openSub===S?M.cancelSubTimer():r||M.scheduleSub(S,h):M.openSub!==null&&M.scheduleSub(null,g)},L=e=>{r?e.preventDefault():(D?.(e),e.defaultPrevented||w(e))},R=Array.isArray(f),z=A??(R?p(f,P):void 0),B={...j,ref:F,role:e,tabIndex:-1,"aria-disabled":r||void 0,"aria-keyshortcuts":z,"data-disabled":r?``:void 0,"data-menu-text":C,[o.ITEM_ATTR]:``,className:t.cx(s.default.item,u[n],E),onClick:L,onPointerMove:I},V=(0,l.jsxs)(l.Fragment,{children:[d!==void 0&&(0,l.jsx)(`span`,{"aria-hidden":`true`,className:s.default.indicator,children:d}),c&&(0,l.jsx)(`span`,{"aria-hidden":`true`,className:s.default.icon,children:c}),(0,l.jsx)(`span`,{className:s.default.label,"data-menu-label":``,children:T}),f!=null&&f!==!1&&(0,l.jsx)(`span`,{"aria-hidden":`true`,className:s.default.shortcut,children:R?(0,l.jsx)(i.KbdShortcut,{keys:f,size:m[N.size],variant:`soft`}):f}),v]});return y!==void 0&&!r?(0,l.jsx)(`a`,{...B,href:y,target:b,rel:x,children:V}):(0,l.jsx)(`div`,{...B,children:V})};function y(e,t){let n=o.useMenuTree(`Menu.Item`);return r=>{(e??n.closeOnSelect??t)&&!r.defaultPrevented&&n.closeAll(`force`)}}var b=({onSelect:e,closeOnSelect:t,...n})=>{let r=y(t,!0);return(0,l.jsx)(v,{...n,role:`menuitem`,onActivate:t=>{let n=d(t.currentTarget);e?.(n),r(n)}})},x=({checked:t,defaultChecked:r=!1,onCheckedChange:i,onSelect:a,closeOnSelect:o,...s})=>{let[c,u]=e.useControllableState({value:t,defaultValue:r,onChange:i}),f=y(o,!1);return(0,l.jsx)(v,{...s,role:`menuitemcheckbox`,"aria-checked":c,"data-state":c?`checked`:`unchecked`,indicator:c?(0,l.jsx)(n.CheckIcon,{size:`sm`,strokeWidth:3}):null,onActivate:e=>{let t=d(e.currentTarget);a?.(t),u(!c),f(t)}})},S=(0,c.createContext)(null);function C(){let e=(0,c.useId)(),[t,n]=(0,c.useState)(null);return{value:(0,c.useMemo)(()=>({defaultLabelId:e,setLabelId:n}),[e]),labelledBy:t??void 0}}var w=({className:e,children:n,...r})=>{let{value:i,labelledBy:a}=C();return(0,l.jsx)(S.Provider,{value:i,children:(0,l.jsx)(`div`,{role:`group`,"aria-labelledby":r[`aria-label`]?void 0:a,...r,className:t.cx(s.default.group,e),children:n})})},T=({className:e,id:n,...r})=>{let i=(0,c.useContext)(S),a=n??i?.defaultLabelId,o=i?.setLabelId;return(0,c.useLayoutEffect)(()=>{if(o&&a)return o(a),()=>o(null)},[o,a]),(0,l.jsx)(`div`,{...r,id:a,className:t.cx(s.default.groupLabel,e)})},E=({className:e,...n})=>(0,l.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,...n,className:t.cx(s.default.separator,e)}),D=(0,c.createContext)(null),O=({value:n,defaultValue:r,onValueChange:i,className:a,children:o,...u})=>{let[d,f]=e.useControllableState({value:n,defaultValue:r??null,onChange:e=>{e!==null&&i?.(e)}}),p=(0,c.useMemo)(()=>({value:d,setValue:f}),[d,f]),{value:m,labelledBy:h}=C();return(0,l.jsx)(S.Provider,{value:m,children:(0,l.jsx)(D.Provider,{value:p,children:(0,l.jsx)(`div`,{role:`group`,"aria-labelledby":u[`aria-label`]?void 0:h,...u,className:t.cx(s.default.group,a),children:o})})})},k=({value:e,onSelect:t,closeOnSelect:n,...i})=>{let a=(0,c.useContext)(D),o=y(n,!1);if(!a)throw Error(`Menu.RadioItem must be rendered inside <Menu.RadioGroup>.`);let s=a.value===e;return(0,l.jsx)(v,{...i,role:`menuitemradio`,"aria-checked":s,"data-state":s?`checked`:`unchecked`,indicator:s?(0,l.jsx)(r.Icon,{size:`sm`,children:(0,l.jsx)(`circle`,{cx:`12`,cy:`12`,r:`5`,fill:`currentColor`,stroke:`none`})}):null,onActivate:n=>{let r=d(n.currentTarget);t?.(r),a.setValue(e),o(r)}})};exports.MenuCheckboxItem=x,exports.MenuGroup=w,exports.MenuItem=b,exports.MenuItemBase=v,exports.MenuLabel=T,exports.MenuRadioGroup=O,exports.MenuRadioItem=k,exports.MenuSeparator=E;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { useControllableState as e } from "../../../hooks/useControllableState.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { cx as t } from "../../../utils/cx.mjs";
|
|
4
|
+
import { CheckIcon as n } from "../../primitives/Icon/icons.mjs";
|
|
5
|
+
import { Icon as r } from "../../primitives/Icon/Icon.mjs";
|
|
6
|
+
import { KbdShortcut as i, useKbdPlatform as a } from "../../primitives/Kbd/Kbd.mjs";
|
|
7
|
+
import { useMergedRef as o } from "../../../hooks/useMergedRef.mjs";
|
|
7
8
|
import { ITEM_ATTR as s, useMenuLevel as c, useMenuTree as l } from "./MenuContext.mjs";
|
|
8
9
|
import u from "./Menu.module.css.mjs";
|
|
9
10
|
import { createContext as d, useContext as f, useId as p, useLayoutEffect as m, useMemo as h, useState as g } from "react";
|
|
10
11
|
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
11
|
-
|
|
12
|
+
// src/components/navigation/Menu/MenuItem.tsx
|
|
12
13
|
var b = {
|
|
13
14
|
neutral: void 0,
|
|
14
15
|
danger: u.danger
|
|
@@ -60,30 +61,26 @@ var w = {
|
|
|
60
61
|
}, T = 100, E = 300, D = {
|
|
61
62
|
x: NaN,
|
|
62
63
|
y: NaN
|
|
63
|
-
}, O = ({ role: e, tone:
|
|
64
|
-
let L = c("Menu.Item"), R = l("Menu.Item"), z =
|
|
64
|
+
}, O = ({ role: e, tone: n = "neutral", disabled: r = !1, icon: d, indicator: f, shortcut: p, end: m, href: h, target: g, rel: x, subId: S, textValue: O, onActivate: k, children: A, className: j, onClick: M, onPointerMove: N, ref: P, "aria-keyshortcuts": F, ...I }) => {
|
|
65
|
+
let L = c("Menu.Item"), R = l("Menu.Item"), z = a(), B = o(P), V = (e) => {
|
|
65
66
|
if (N?.(e), e.defaultPrevented || e.pointerType === "touch") return;
|
|
66
67
|
let t = D.x !== e.clientX || D.y !== e.clientY;
|
|
67
68
|
if (D.x = e.clientX, D.y = e.clientY, !t) return;
|
|
68
|
-
let n = e.currentTarget,
|
|
69
|
-
document.activeElement !== n && !a && n.focus({ preventScroll: !0 }), S ? L.openSub === S ? L.cancelSubTimer() :
|
|
69
|
+
let n = e.currentTarget, i = S && L.openSub === S ? document.getElementById(n.getAttribute("aria-controls") ?? "") : null, a = !!i && i.contains(document.activeElement);
|
|
70
|
+
document.activeElement !== n && !a && n.focus({ preventScroll: !0 }), S ? L.openSub === S ? L.cancelSubTimer() : r || L.scheduleSub(S, T) : L.openSub !== null && L.scheduleSub(null, E);
|
|
70
71
|
}, H = (e) => {
|
|
71
|
-
|
|
72
|
-
e.preventDefault();
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
M?.(e), !e.defaultPrevented && k(e);
|
|
72
|
+
r ? e.preventDefault() : (M?.(e), e.defaultPrevented || k(e));
|
|
76
73
|
}, U = Array.isArray(p), W = F ?? (U ? C(p, z) : void 0), G = {
|
|
77
74
|
...I,
|
|
78
75
|
ref: B,
|
|
79
76
|
role: e,
|
|
80
77
|
tabIndex: -1,
|
|
81
|
-
"aria-disabled":
|
|
78
|
+
"aria-disabled": r || void 0,
|
|
82
79
|
"aria-keyshortcuts": W,
|
|
83
|
-
"data-disabled":
|
|
80
|
+
"data-disabled": r ? "" : void 0,
|
|
84
81
|
"data-menu-text": O,
|
|
85
82
|
[s]: "",
|
|
86
|
-
className:
|
|
83
|
+
className: t(u.item, b[n], j),
|
|
87
84
|
onClick: H,
|
|
88
85
|
onPointerMove: V
|
|
89
86
|
}, K = /* @__PURE__ */ y(_, { children: [
|
|
@@ -105,7 +102,7 @@ var w = {
|
|
|
105
102
|
p != null && p !== !1 && /* @__PURE__ */ v("span", {
|
|
106
103
|
"aria-hidden": "true",
|
|
107
104
|
className: u.shortcut,
|
|
108
|
-
children: U ? /* @__PURE__ */ v(
|
|
105
|
+
children: U ? /* @__PURE__ */ v(i, {
|
|
109
106
|
keys: p,
|
|
110
107
|
size: w[R.size],
|
|
111
108
|
variant: "soft"
|
|
@@ -113,7 +110,7 @@ var w = {
|
|
|
113
110
|
}),
|
|
114
111
|
m
|
|
115
112
|
] });
|
|
116
|
-
return h !== void 0 && !
|
|
113
|
+
return h !== void 0 && !r ? /* @__PURE__ */ v("a", {
|
|
117
114
|
...G,
|
|
118
115
|
href: h,
|
|
119
116
|
target: g,
|
|
@@ -140,10 +137,10 @@ var A = ({ onSelect: e, closeOnSelect: t, ...n }) => {
|
|
|
140
137
|
e?.(n), r(n);
|
|
141
138
|
}
|
|
142
139
|
});
|
|
143
|
-
}, j = ({ checked: t, defaultChecked:
|
|
140
|
+
}, j = ({ checked: t, defaultChecked: r = !1, onCheckedChange: i, onSelect: a, closeOnSelect: o, ...s }) => {
|
|
144
141
|
let [c, l] = e({
|
|
145
142
|
value: t,
|
|
146
|
-
defaultValue:
|
|
143
|
+
defaultValue: r,
|
|
147
144
|
onChange: i
|
|
148
145
|
}), u = k(o, !1);
|
|
149
146
|
return /* @__PURE__ */ v(O, {
|
|
@@ -151,7 +148,7 @@ var A = ({ onSelect: e, closeOnSelect: t, ...n }) => {
|
|
|
151
148
|
role: "menuitemcheckbox",
|
|
152
149
|
"aria-checked": c,
|
|
153
150
|
"data-state": c ? "checked" : "unchecked",
|
|
154
|
-
indicator: c ? /* @__PURE__ */ v(
|
|
151
|
+
indicator: c ? /* @__PURE__ */ v(n, {
|
|
155
152
|
size: "sm",
|
|
156
153
|
strokeWidth: 3
|
|
157
154
|
}) : null,
|
|
@@ -171,7 +168,7 @@ function N() {
|
|
|
171
168
|
labelledBy: t ?? void 0
|
|
172
169
|
};
|
|
173
170
|
}
|
|
174
|
-
var P = ({ className: e, children:
|
|
171
|
+
var P = ({ className: e, children: n, ...r }) => {
|
|
175
172
|
let { value: i, labelledBy: a } = N();
|
|
176
173
|
return /* @__PURE__ */ v(M.Provider, {
|
|
177
174
|
value: i,
|
|
@@ -179,27 +176,27 @@ var P = ({ className: e, children: t, ...r }) => {
|
|
|
179
176
|
role: "group",
|
|
180
177
|
"aria-labelledby": r["aria-label"] ? void 0 : a,
|
|
181
178
|
...r,
|
|
182
|
-
className:
|
|
183
|
-
children:
|
|
179
|
+
className: t(u.group, e),
|
|
180
|
+
children: n
|
|
184
181
|
})
|
|
185
182
|
});
|
|
186
|
-
}, F = ({ className: e, id:
|
|
187
|
-
let i = f(M), a =
|
|
183
|
+
}, F = ({ className: e, id: n, ...r }) => {
|
|
184
|
+
let i = f(M), a = n ?? i?.defaultLabelId, o = i?.setLabelId;
|
|
188
185
|
return m(() => {
|
|
189
186
|
if (o && a) return o(a), () => o(null);
|
|
190
187
|
}, [o, a]), /* @__PURE__ */ v("div", {
|
|
191
188
|
...r,
|
|
192
189
|
id: a,
|
|
193
|
-
className:
|
|
190
|
+
className: t(u.groupLabel, e)
|
|
194
191
|
});
|
|
195
|
-
}, I = ({ className: e, ...
|
|
192
|
+
}, I = ({ className: e, ...n }) => /* @__PURE__ */ v("div", {
|
|
196
193
|
role: "separator",
|
|
197
194
|
"aria-orientation": "horizontal",
|
|
198
|
-
...
|
|
199
|
-
className:
|
|
200
|
-
}), L = d(null), R = ({ value:
|
|
195
|
+
...n,
|
|
196
|
+
className: t(u.separator, e)
|
|
197
|
+
}), L = d(null), R = ({ value: n, defaultValue: r, onValueChange: i, className: a, children: o, ...s }) => {
|
|
201
198
|
let [c, l] = e({
|
|
202
|
-
value:
|
|
199
|
+
value: n,
|
|
203
200
|
defaultValue: r ?? null,
|
|
204
201
|
onChange: (e) => {
|
|
205
202
|
e !== null && i?.(e);
|
|
@@ -216,21 +213,21 @@ var P = ({ className: e, children: t, ...r }) => {
|
|
|
216
213
|
role: "group",
|
|
217
214
|
"aria-labelledby": s["aria-label"] ? void 0 : p,
|
|
218
215
|
...s,
|
|
219
|
-
className:
|
|
216
|
+
className: t(u.group, a),
|
|
220
217
|
children: o
|
|
221
218
|
})
|
|
222
219
|
})
|
|
223
220
|
});
|
|
224
|
-
}, z = ({ value: e, onSelect: t, closeOnSelect: n, ...
|
|
221
|
+
}, z = ({ value: e, onSelect: t, closeOnSelect: n, ...i }) => {
|
|
225
222
|
let a = f(L), o = k(n, !1);
|
|
226
223
|
if (!a) throw Error("Menu.RadioItem must be rendered inside <Menu.RadioGroup>.");
|
|
227
224
|
let s = a.value === e;
|
|
228
225
|
return /* @__PURE__ */ v(O, {
|
|
229
|
-
...
|
|
226
|
+
...i,
|
|
230
227
|
role: "menuitemradio",
|
|
231
228
|
"aria-checked": s,
|
|
232
229
|
"data-state": s ? "checked" : "unchecked",
|
|
233
|
-
indicator: s ? /* @__PURE__ */ v(
|
|
230
|
+
indicator: s ? /* @__PURE__ */ v(r, {
|
|
234
231
|
size: "sm",
|
|
235
232
|
children: /* @__PURE__ */ v("circle", {
|
|
236
233
|
cx: "12",
|
|
@@ -246,5 +243,4 @@ var P = ({ className: e, children: t, ...r }) => {
|
|
|
246
243
|
}
|
|
247
244
|
});
|
|
248
245
|
};
|
|
249
|
-
//#endregion
|
|
250
246
|
export { j as MenuCheckboxItem, P as MenuGroup, A as MenuItem, O as MenuItemBase, F as MenuLabel, R as MenuRadioGroup, z as MenuRadioItem, I as MenuSeparator };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("../../../
|
|
1
|
+
"use client";const e=require("../../../utils/cx.cjs.js"),t=require("../../primitives/Icon/icons.cjs.js"),n=require("../../utilities/Portal/Portal.cjs.js"),r=require("../../../hooks/useMergedRef.cjs.js"),i=require("./MenuContext.cjs.js"),a=require("./MenuContent.cjs.js"),o=require("./MenuItem.cjs.js"),s=require("./Menu.module.css.cjs.js");let c=require("react"),l=require("react/jsx-runtime");var u=({children:e,onOpenChange:t})=>{let n=i.useMenuLevel(`Menu.Sub`),r=`sub-${(0,c.useId)()}`,a=n.open&&n.openSub===r,o=(0,c.useRef)(null),s=(0,c.useRef)(null),u=(0,c.useRef)(`none`),d=(0,c.useRef)(`auto`),[f,p]=(0,c.useState)(0),m=i.useSubmenuState(),{setOpenSub:h}=m,{setOpenSub:g,closeSub:_}=n,v=(0,c.useCallback)((e,t={})=>{e?(d.current=`auto`,u.current=t.focus??`none`,p(e=>e+1),g(r)):(d.current=t.restore??`auto`,_(r))},[r,g,_]);(0,c.useEffect)(()=>{a||(h(null),u.current=`none`)},[a,h]);let y=(0,c.useRef)(t);y.current=t;let b=(0,c.useRef)(!0);(0,c.useEffect)(()=>{b.current?b.current=!1:y.current?.(a)},[a]);let x=(0,c.useMemo)(()=>({id:r,isSub:!0,open:a,setOpen:v,focusNonce:f,openFocusRef:u,restoreModeRef:d,triggerRef:o,contentRef:s,contentId:`${r}-menu`,triggerId:`${r}-trigger`,parent:n,...m}),[r,a,v,f,n,m]);return(0,l.jsx)(i.MenuSubContext.Provider,{value:x,children:e})},d=({ref:n,id:a,className:c,...u})=>{let d=i.useMenuSub(`Menu.SubTrigger`),f=r.useMergedRef(d.triggerRef,n);return(0,l.jsx)(o.MenuItemBase,{...u,ref:f,id:a??d.triggerId,role:`menuitem`,"aria-haspopup":`menu`,"aria-expanded":d.open,"aria-controls":d.open?d.contentId:void 0,"data-state":d.open?`open`:`closed`,subId:d.id,className:e.cx(s.default.subTrigger,c),end:(0,l.jsx)(`span`,{"aria-hidden":`true`,className:s.default.chevron,children:(0,l.jsx)(t.ChevronRightIcon,{size:`sm`})}),onActivate:e=>{d.setOpen(!0,{focus:e.detail===0?`first`:`none`})}})},f=({container:e,...t})=>{let r=i.useMenuSub(`Menu.SubContent`),o=i.useMenuTree(`Menu.SubContent`);return r.open?(0,l.jsx)(n.Portal,{container:e,children:(0,l.jsx)(a.MenuSurface,{...t,level:r,tree:o})}):null};exports.MenuSub=u,exports.MenuSubContent=f,exports.MenuSubTrigger=d;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
import { cx as
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../../../utils/cx.mjs";
|
|
3
|
+
import { ChevronRightIcon as t } from "../../primitives/Icon/icons.mjs";
|
|
3
4
|
import { Portal as n } from "../../utilities/Portal/Portal.mjs";
|
|
4
|
-
import {
|
|
5
|
+
import { useMergedRef as r } from "../../../hooks/useMergedRef.mjs";
|
|
5
6
|
import { MenuSubContext as i, useMenuLevel as a, useMenuSub as o, useMenuTree as s, useSubmenuState as c } from "./MenuContext.mjs";
|
|
6
|
-
import l from "./
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
7
|
+
import { MenuSurface as l } from "./MenuContent.mjs";
|
|
8
|
+
import { MenuItemBase as u } from "./MenuItem.mjs";
|
|
9
|
+
import d from "./Menu.module.css.mjs";
|
|
9
10
|
import { useCallback as f, useEffect as p, useId as m, useMemo as h, useRef as g, useState as _ } from "react";
|
|
10
11
|
import { jsx as v } from "react/jsx-runtime";
|
|
11
|
-
|
|
12
|
+
// src/components/navigation/Menu/MenuSub.tsx
|
|
12
13
|
var y = ({ children: e, onOpenChange: t }) => {
|
|
13
14
|
let n = a("Menu.Sub"), r = `sub-${m()}`, o = n.open && n.openSub === r, s = g(null), l = g(null), u = g("none"), d = g("auto"), [y, b] = _(0), x = c(), { setOpenSub: S } = x, { setOpenSub: C, closeSub: w } = n, T = f((e, t = {}) => {
|
|
14
15
|
e ? (d.current = "auto", u.current = t.focus ?? "none", b((e) => e + 1), C(r)) : (d.current = t.restore ?? "auto", w(r));
|
|
@@ -24,11 +25,7 @@ var y = ({ children: e, onOpenChange: t }) => {
|
|
|
24
25
|
E.current = t;
|
|
25
26
|
let D = g(!0);
|
|
26
27
|
p(() => {
|
|
27
|
-
|
|
28
|
-
D.current = !1;
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
E.current?.(o);
|
|
28
|
+
D.current ? D.current = !1 : E.current?.(o);
|
|
32
29
|
}, [o]);
|
|
33
30
|
let O = h(() => ({
|
|
34
31
|
id: r,
|
|
@@ -57,10 +54,10 @@ var y = ({ children: e, onOpenChange: t }) => {
|
|
|
57
54
|
children: e
|
|
58
55
|
});
|
|
59
56
|
}, b = ({ ref: n, id: i, className: a, ...s }) => {
|
|
60
|
-
let c = o("Menu.SubTrigger"),
|
|
61
|
-
return /* @__PURE__ */ v(
|
|
57
|
+
let c = o("Menu.SubTrigger"), l = r(c.triggerRef, n);
|
|
58
|
+
return /* @__PURE__ */ v(u, {
|
|
62
59
|
...s,
|
|
63
|
-
ref:
|
|
60
|
+
ref: l,
|
|
64
61
|
id: i ?? c.triggerId,
|
|
65
62
|
role: "menuitem",
|
|
66
63
|
"aria-haspopup": "menu",
|
|
@@ -68,11 +65,11 @@ var y = ({ children: e, onOpenChange: t }) => {
|
|
|
68
65
|
"aria-controls": c.open ? c.contentId : void 0,
|
|
69
66
|
"data-state": c.open ? "open" : "closed",
|
|
70
67
|
subId: c.id,
|
|
71
|
-
className:
|
|
68
|
+
className: e(d.subTrigger, a),
|
|
72
69
|
end: /* @__PURE__ */ v("span", {
|
|
73
70
|
"aria-hidden": "true",
|
|
74
|
-
className:
|
|
75
|
-
children: /* @__PURE__ */ v(
|
|
71
|
+
className: d.chevron,
|
|
72
|
+
children: /* @__PURE__ */ v(t, { size: "sm" })
|
|
76
73
|
}),
|
|
77
74
|
onActivate: (e) => {
|
|
78
75
|
c.setOpen(!0, { focus: e.detail === 0 ? "first" : "none" });
|
|
@@ -82,12 +79,11 @@ var y = ({ children: e, onOpenChange: t }) => {
|
|
|
82
79
|
let r = o("Menu.SubContent"), i = s("Menu.SubContent");
|
|
83
80
|
return r.open ? /* @__PURE__ */ v(n, {
|
|
84
81
|
container: e,
|
|
85
|
-
children: /* @__PURE__ */ v(
|
|
82
|
+
children: /* @__PURE__ */ v(l, {
|
|
86
83
|
...t,
|
|
87
84
|
level: r,
|
|
88
85
|
tree: i
|
|
89
86
|
})
|
|
90
87
|
}) : null;
|
|
91
88
|
};
|
|
92
|
-
//#endregion
|
|
93
89
|
export { y as MenuSub, x as MenuSubContent, b as MenuSubTrigger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("../../../hooks/useControllableState.cjs.js"),t=require("./MenuContext.cjs.js");let n=require("react");function r({open:r,defaultOpen:i=!1,onOpenChange:a,size:o=`md`,closeOnSelect:s,anchorRef:c}){let[l,u]=e.useControllableState({value:r,defaultValue:i,onChange:a}),d=(0,n.useRef)(null),f=(0,n.useRef)(null),p=(0,n.useRef)(i?`first`:`none`),m=(0,n.useRef)(`auto`),h=(0,n.useRef)(!1),[g,_]=(0,n.useState)(0),v=t.useSubmenuState(),{setOpenSub:y}=v,b=(0,n.useId)(),x=(0,n.useCallback)((e,t={})=>{e?(h.current=!1,m.current=`auto`,p.current=t.focus??`first`,_(e=>e+1)):m.current=t.restore??`auto`,u(e)},[u]);return(0,n.useEffect)(()=>{l?h.current=!1:y(null)},[l,y]),{level:(0,n.useMemo)(()=>({id:b,isSub:!1,open:l,setOpen:x,focusNonce:g,openFocusRef:p,restoreModeRef:m,triggerRef:d,anchorRef:c,contentRef:f,contentId:`${b}-menu`,triggerId:`${b}-trigger`,parent:null,...v}),[l,x,g,b,v,c]),tree:(0,n.useMemo)(()=>({treeId:b,size:o,closeOnSelect:s,closingAllRef:h,closeAll:(e=`force`)=>{h.current=!0,x(!1,{restore:e}),window.setTimeout(()=>{h.current=!1},0)},focusRootTrigger:()=>d.current?.focus({preventScroll:!0})}),[b,o,s,x])}}exports.useMenuRoot=r;
|
|
1
|
+
"use client";const e=require("../../../hooks/useControllableState.cjs.js"),t=require("./MenuContext.cjs.js");let n=require("react");function r({open:r,defaultOpen:i=!1,onOpenChange:a,size:o=`md`,closeOnSelect:s,anchorRef:c}){let[l,u]=e.useControllableState({value:r,defaultValue:i,onChange:a}),d=(0,n.useRef)(null),f=(0,n.useRef)(null),p=(0,n.useRef)(i?`first`:`none`),m=(0,n.useRef)(`auto`),h=(0,n.useRef)(!1),[g,_]=(0,n.useState)(0),v=t.useSubmenuState(),{setOpenSub:y}=v,b=(0,n.useId)(),x=(0,n.useCallback)((e,t={})=>{e?(h.current=!1,m.current=`auto`,p.current=t.focus??`first`,_(e=>e+1)):m.current=t.restore??`auto`,u(e)},[u]);return(0,n.useEffect)(()=>{l?h.current=!1:y(null)},[l,y]),{level:(0,n.useMemo)(()=>({id:b,isSub:!1,open:l,setOpen:x,focusNonce:g,openFocusRef:p,restoreModeRef:m,triggerRef:d,anchorRef:c,contentRef:f,contentId:`${b}-menu`,triggerId:`${b}-trigger`,parent:null,...v}),[l,x,g,b,v,c]),tree:(0,n.useMemo)(()=>({treeId:b,size:o,closeOnSelect:s,closingAllRef:h,closeAll:(e=`force`)=>{h.current=!0,x(!1,{restore:e}),window.setTimeout(()=>{h.current=!1},0)},focusRootTrigger:()=>d.current?.focus({preventScroll:!0})}),[b,o,s,x])}}exports.useMenuRoot=r;
|