@vjdesigns/vjdesigns-ui 2.3.0 → 2.5.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 +199 -107
- package/dist/ai/registry.json +217 -77
- 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.d.ts +7 -2
- package/dist/components/data-display/Badge/Badge.mjs +4 -3
- package/dist/components/data-display/Badge/Badge.module.css.cjs.js +1 -1
- package/dist/components/data-display/Badge/Badge.module.css.mjs +34 -34
- 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 +14 -3
- package/dist/components/data-display/DataGrid/DataGrid.mjs +352 -267
- package/dist/components/data-display/DataGrid/DataGrid.module.css.cjs.js +1 -1
- package/dist/components/data-display/DataGrid/DataGrid.module.css.mjs +6 -5
- 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/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.mjs +1 -2
- 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 +14 -16
- package/dist/components/forms/TimePicker/TimePicker.module.css.mjs +1 -2
- 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.d.ts +65 -2
- package/dist/components/navigation/Navbar/Navbar.mjs +315 -175
- package/dist/components/navigation/Navbar/Navbar.module.css.cjs.js +1 -1
- package/dist/components/navigation/Navbar/Navbar.module.css.mjs +21 -13
- 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 +2 -2
- package/dist/i18n/merge.mjs +1 -2
- package/dist/i18n/plural.mjs +1 -2
- package/dist/i18n/types.d.ts +5 -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 +2 -2
- package/dist/locales/bn.cjs.js +1 -1
- package/dist/locales/bn.mjs +2 -2
- package/dist/locales/cs.cjs.js +1 -1
- package/dist/locales/cs.mjs +2 -2
- package/dist/locales/da.cjs.js +1 -1
- package/dist/locales/da.mjs +2 -2
- package/dist/locales/de.cjs.js +1 -1
- package/dist/locales/de.mjs +2 -2
- package/dist/locales/el.cjs.js +1 -1
- package/dist/locales/el.mjs +2 -2
- package/dist/locales/es.cjs.js +1 -1
- package/dist/locales/es.mjs +2 -2
- package/dist/locales/fa.cjs.js +1 -1
- package/dist/locales/fa.mjs +2 -2
- package/dist/locales/fi.cjs.js +1 -1
- package/dist/locales/fi.mjs +2 -2
- package/dist/locales/fr.cjs.js +1 -1
- package/dist/locales/fr.mjs +2 -2
- package/dist/locales/he.cjs.js +1 -1
- package/dist/locales/he.mjs +2 -2
- package/dist/locales/hi.cjs.js +1 -1
- package/dist/locales/hi.mjs +2 -2
- package/dist/locales/hu.cjs.js +1 -1
- package/dist/locales/hu.mjs +2 -2
- package/dist/locales/id.cjs.js +1 -1
- package/dist/locales/id.mjs +2 -2
- package/dist/locales/it.cjs.js +1 -1
- package/dist/locales/it.mjs +2 -2
- package/dist/locales/ja.cjs.js +1 -1
- package/dist/locales/ja.mjs +2 -2
- package/dist/locales/ko.cjs.js +1 -1
- package/dist/locales/ko.mjs +2 -2
- package/dist/locales/nb.cjs.js +1 -1
- package/dist/locales/nb.mjs +2 -2
- package/dist/locales/nl.cjs.js +1 -1
- package/dist/locales/nl.mjs +2 -2
- package/dist/locales/pl.cjs.js +1 -1
- package/dist/locales/pl.mjs +2 -2
- package/dist/locales/pt-BR.cjs.js +1 -1
- package/dist/locales/pt-BR.mjs +2 -2
- package/dist/locales/ro.cjs.js +1 -1
- package/dist/locales/ro.mjs +2 -2
- package/dist/locales/ru.cjs.js +1 -1
- package/dist/locales/ru.mjs +2 -2
- package/dist/locales/sv.cjs.js +1 -1
- package/dist/locales/sv.mjs +2 -2
- package/dist/locales/th.cjs.js +1 -1
- package/dist/locales/th.mjs +2 -2
- package/dist/locales/tr.cjs.js +1 -1
- package/dist/locales/tr.mjs +2 -2
- package/dist/locales/uk.cjs.js +1 -1
- package/dist/locales/uk.mjs +2 -2
- package/dist/locales/ur.cjs.js +1 -1
- package/dist/locales/ur.mjs +2 -2
- package/dist/locales/vi.cjs.js +1 -1
- package/dist/locales/vi.mjs +2 -2
- package/dist/locales/zh-Hans.cjs.js +1 -1
- package/dist/locales/zh-Hans.mjs +2 -2
- package/dist/locales/zh-Hant.cjs.js +1 -1
- package/dist/locales/zh-Hant.mjs +2 -2
- 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 +24 -14
package/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 VJDesigns
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
CHANGED
|
@@ -82,6 +82,50 @@ export function SignupForm() {
|
|
|
82
82
|
}
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
+
### Next.js (App Router) and React Server Components
|
|
86
|
+
|
|
87
|
+
The library works in Server Components. Interactive components (anything with state, effects, or context: `Button`, `DataGrid`, `Modal`, ...) are marked `"use client"`, so you can render them from a Server Component like any client component. Utilities (`cx`, `sortRows`, `createBrandPalette`, `getLocaleDirection`, ...) and the locale catalogs have no directive, so you can call or read them on the server too. Every component also renders on the server for the first paint.
|
|
88
|
+
|
|
89
|
+
Put the providers in a small client file of your own, and render it from the root layout:
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
// app/providers.tsx
|
|
93
|
+
"use client";
|
|
94
|
+
import { LocaleProvider, ToastProvider } from "@vjdesigns/vjdesigns-ui";
|
|
95
|
+
import es from "@vjdesigns/vjdesigns-ui/locales/es";
|
|
96
|
+
import type { ReactNode } from "react";
|
|
97
|
+
|
|
98
|
+
export function Providers({ children }: { children: ReactNode }) {
|
|
99
|
+
return (
|
|
100
|
+
<LocaleProvider locale="es" messages={es}>
|
|
101
|
+
<ToastProvider>{children}</ToastProvider>
|
|
102
|
+
</LocaleProvider>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```tsx
|
|
108
|
+
// app/layout.tsx (a Server Component)
|
|
109
|
+
import "@vjdesigns/vjdesigns-ui/dist/vjdesigns-ui.css";
|
|
110
|
+
import { getLocaleDirection } from "@vjdesigns/vjdesigns-ui";
|
|
111
|
+
import { Providers } from "./providers";
|
|
112
|
+
|
|
113
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
114
|
+
return (
|
|
115
|
+
<html lang="es" dir={getLocaleDirection("es")}>
|
|
116
|
+
<body>
|
|
117
|
+
<Providers>{children}</Providers>
|
|
118
|
+
</body>
|
|
119
|
+
</html>
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Two rules of Server Components to keep in mind:
|
|
125
|
+
|
|
126
|
+
- **Functions can't be passed from a Server Component to a client one.** That includes event handlers (`onClick`), DataGrid columns with `cell` or `value` functions, and the locale catalogs themselves (their plural messages are functions, which is why `LocaleProvider` goes in the client providers file above). Render those components from your own `"use client"` file.
|
|
127
|
+
- **Compound parts can't be reached with a dot from a Server Component** (`Tabs.List`, `Menu.Item`): Next.js reports "You cannot dot into a client module". Use them inside a `"use client"` file, or use the named exports where they exist (`CardHeader`, `CardBody`, `NavbarBrand`, ...).
|
|
128
|
+
|
|
85
129
|
### Angular
|
|
86
130
|
|
|
87
131
|
Make a standalone wrapper that renders the React component into its host element. The wrapper uses `createElement`, so you don't need to change your JSX or TSX settings.
|
|
@@ -778,4 +822,4 @@ See [RELEASING.md](RELEASING.md) for the full process, including how to update t
|
|
|
778
822
|
|
|
779
823
|
## License
|
|
780
824
|
|
|
781
|
-
ISC
|
|
825
|
+
[ISC](LICENSE) © 2026 VJDesigns. The Pro package (`pro/`) has its own commercial license.
|
package/dist/ai/llms-full.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @vjdesigns/vjdesigns-ui 2.
|
|
1
|
+
# @vjdesigns/vjdesigns-ui 2.4.0: full reference
|
|
2
2
|
|
|
3
3
|
> Accessible React 19 component library: WCAG 2.2 AA verified (axe on every story, a contrast check on every color pair), 31 languages with right-to-left support, themeable with any brand color (auto-adjusted to stay accessible), tree-shakable, no runtime dependencies besides React.
|
|
4
4
|
|
|
@@ -83,6 +83,50 @@ export function SignupForm() {
|
|
|
83
83
|
}
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
### Next.js (App Router) and React Server Components
|
|
87
|
+
|
|
88
|
+
The library works in Server Components. Interactive components (anything with state, effects, or context: `Button`, `DataGrid`, `Modal`, ...) are marked `"use client"`, so you can render them from a Server Component like any client component. Utilities (`cx`, `sortRows`, `createBrandPalette`, `getLocaleDirection`, ...) and the locale catalogs have no directive, so you can call or read them on the server too. Every component also renders on the server for the first paint.
|
|
89
|
+
|
|
90
|
+
Put the providers in a small client file of your own, and render it from the root layout:
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
// app/providers.tsx
|
|
94
|
+
"use client";
|
|
95
|
+
import { LocaleProvider, ToastProvider } from "@vjdesigns/vjdesigns-ui";
|
|
96
|
+
import es from "@vjdesigns/vjdesigns-ui/locales/es";
|
|
97
|
+
import type { ReactNode } from "react";
|
|
98
|
+
|
|
99
|
+
export function Providers({ children }: { children: ReactNode }) {
|
|
100
|
+
return (
|
|
101
|
+
<LocaleProvider locale="es" messages={es}>
|
|
102
|
+
<ToastProvider>{children}</ToastProvider>
|
|
103
|
+
</LocaleProvider>
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
// app/layout.tsx (a Server Component)
|
|
110
|
+
import "@vjdesigns/vjdesigns-ui/dist/vjdesigns-ui.css";
|
|
111
|
+
import { getLocaleDirection } from "@vjdesigns/vjdesigns-ui";
|
|
112
|
+
import { Providers } from "./providers";
|
|
113
|
+
|
|
114
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
115
|
+
return (
|
|
116
|
+
<html lang="es" dir={getLocaleDirection("es")}>
|
|
117
|
+
<body>
|
|
118
|
+
<Providers>{children}</Providers>
|
|
119
|
+
</body>
|
|
120
|
+
</html>
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Two rules of Server Components to keep in mind:
|
|
126
|
+
|
|
127
|
+
- **Functions can't be passed from a Server Component to a client one.** That includes event handlers (`onClick`), DataGrid columns with `cell` or `value` functions, and the locale catalogs themselves (their plural messages are functions, which is why `LocaleProvider` goes in the client providers file above). Render those components from your own `"use client"` file.
|
|
128
|
+
- **Compound parts can't be reached with a dot from a Server Component** (`Tabs.List`, `Menu.Item`): Next.js reports "You cannot dot into a client module". Use them inside a `"use client"` file, or use the named exports where they exist (`CardHeader`, `CardBody`, `NavbarBrand`, ...).
|
|
129
|
+
|
|
86
130
|
### Angular
|
|
87
131
|
|
|
88
132
|
Make a standalone wrapper that renders the React component into its host element. The wrapper uses `createElement`, so you don't need to change your JSX or TSX settings.
|
|
@@ -607,8 +651,8 @@ import { Avatar } from "@vjdesigns/vjdesigns-ui";
|
|
|
607
651
|
|
|
608
652
|
Category: data-display · Storybook: Data Display/Avatar
|
|
609
653
|
|
|
610
|
-
A person's photo (`src`), with a fallback chain of image, initials (from
|
|
611
|
-
`name`), then a user icon, so it always shows something. Supports a border,
|
|
654
|
+
A person's photo (`src`), with a fallback chain of image, initials (from
|
|
655
|
+
`name`), then a user icon, so it always shows something. Supports a border,
|
|
612
656
|
a presence status dot, a highlight ring, and stacking in an `AvatarGroup`.
|
|
613
657
|
|
|
614
658
|
### Props
|
|
@@ -655,7 +699,7 @@ import { AvatarGroup } from "@vjdesigns/vjdesigns-ui";
|
|
|
655
699
|
|
|
656
700
|
Category: data-display · Storybook: Data Display/Avatar
|
|
657
701
|
|
|
658
|
-
Overlapping stack of avatars in a labelled `role="group"`. Avatars beyond
|
|
702
|
+
Overlapping stack of avatars in a labelled `role="group"`. Avatars beyond
|
|
659
703
|
`max` collapse into a "+N" surplus avatar with an accessible label.
|
|
660
704
|
|
|
661
705
|
### Props
|
|
@@ -711,6 +755,7 @@ Renders a `<span>` with no role. For counts, pass `label` (e.g.
|
|
|
711
755
|
- Counts
|
|
712
756
|
- Anchored
|
|
713
757
|
- In text
|
|
758
|
+
- Inverse: `inverse` swaps the solid colors, for a badge on a solid tone surface: a solid Navbar, a Banner, a primary card.
|
|
714
759
|
- On surfaces (both themes)
|
|
715
760
|
|
|
716
761
|
## BadgeAnchor
|
|
@@ -1232,6 +1277,7 @@ real `<table role="grid">` with `aria-sort`, `aria-selected`,
|
|
|
1232
1277
|
- `onSelectedChange`: `(selected: DataGridRowId[]) => void`. Called with the next selected ids.
|
|
1233
1278
|
- `isRowSelectable`: `(row: T) => boolean`. Rows that can't be selected (their checkbox is disabled).
|
|
1234
1279
|
- `pageSize`: `number`. Rows per page. Shows a footer with the range and `Pagination`. Without it, every row shows.
|
|
1280
|
+
- `virtualize`: `boolean | "auto"` (default "auto"). Render only the rows in view (plus a few above and below), so grids of 100,000+ rows scroll, sort, filter, and select without delay. `"auto"` turns it on when more than 100 rows show at once. While it's on, the body scrolls inside the grid (its height is `maxHeight`, 70% of the window by default) and the table uses fixed layout unless you set `layout`, so columns keep their widths while you scroll; give columns a `width` to size them. Screen readers still get the full count (`aria-rowcount`) and each row's position (`aria-rowindex`).
|
|
1235
1281
|
- `page`: `number`. Current page, starting at 1 (controlled).
|
|
1236
1282
|
- `defaultPage`: `number` (default 1). Initial page when uncontrolled.
|
|
1237
1283
|
- `onPageChange`: `(page: number) => void`. Called with the next page.
|
|
@@ -1245,7 +1291,7 @@ real `<table role="grid">` with `aria-sort`, `aria-selected`,
|
|
|
1245
1291
|
- `hoverable`: `boolean` (default true). Highlight rows under the pointer.
|
|
1246
1292
|
- `stickyHeader`: `boolean` (default true). Keep the header row visible while scrolling.
|
|
1247
1293
|
- `maxHeight`: `CSSProperties["maxHeight"]`. Maximum height of the scrolling body (CSS length, or px as a number).
|
|
1248
|
-
- `layout`: `"auto" | "fixed"` (default "auto"). Table layout. `fixed` makes column widths exact (content wraps or clips instead of widening a column).
|
|
1294
|
+
- `layout`: `"auto" | "fixed"` (default "auto" ("fixed" while virtualized)). Table layout. `fixed` makes column widths exact (content wraps or clips instead of widening a column).
|
|
1249
1295
|
- `tableStyle`: `CSSProperties`. Style for the `<table>` (for example a total width when columns are resized).
|
|
1250
1296
|
- `className`: `string`. Class name for the outer frame.
|
|
1251
1297
|
- `style`: `CSSProperties`. Style for the outer frame.
|
|
@@ -1264,6 +1310,7 @@ real `<table role="grid">` with `aria-sort`, `aria-selected`,
|
|
|
1264
1310
|
- Sticky Header: A long list in a fixed-height area, with the header kept in view.
|
|
1265
1311
|
- Right To Left: In right-to-left layouts the columns mirror and ArrowRight moves toward the start.
|
|
1266
1312
|
- Extending Columns: Extending columns: `headerEnd` adds content after a header's label, outside its sort button (here a column menu button), and `className` / `style` reach every cell of a column. Controls marked `data-grid-secondary` don't steal the header's focus: the sort button stays its target, and F2 then Tab reaches them.
|
|
1313
|
+
- Large data (100,000 rows): 100,000 rows with sorting, search, and selection. Only the rows in view (plus a few above and below) are in the page, so scrolling, sorting, filtering, and selecting stay instant at any size. Screen readers still hear the full count (`aria-rowcount`) and each row's position.
|
|
1267
1314
|
|
|
1268
1315
|
## EmptyState
|
|
1269
1316
|
|
|
@@ -1384,19 +1431,19 @@ import { List } from "@vjdesigns/vjdesigns-ui";
|
|
|
1384
1431
|
|
|
1385
1432
|
Category: data-display · Storybook: Data Display/List
|
|
1386
1433
|
|
|
1387
|
-
A semantic list (`<ul>` or `<ol>`) with styled markers and rich items.
|
|
1388
|
-
|
|
1389
|
-
Every variant draws its own markers, so the browser's markers are removed
|
|
1390
|
-
with CSS; `role="list"` is added so Safari and VoiceOver keep announcing
|
|
1391
|
-
the list and its item count.
|
|
1392
|
-
|
|
1393
|
-
This is a list, not a listbox: items are not selectable options and there
|
|
1394
|
-
is no roving focus. Interactive items (`List.ItemButton`, `List.ItemLink`)
|
|
1395
|
-
are ordinary Tab stops. For choosing among options, use a Listbox,
|
|
1396
|
-
Combobox, or Select instead.
|
|
1397
|
-
|
|
1398
|
-
Grouping: put a `List.Subheader` (a real heading by default) before each
|
|
1399
|
-
list and point the list at it with `aria-labelledby`, so screen readers
|
|
1434
|
+
A semantic list (`<ul>` or `<ol>`) with styled markers and rich items.
|
|
1435
|
+
|
|
1436
|
+
Every variant draws its own markers, so the browser's markers are removed
|
|
1437
|
+
with CSS; `role="list"` is added so Safari and VoiceOver keep announcing
|
|
1438
|
+
the list and its item count.
|
|
1439
|
+
|
|
1440
|
+
This is a list, not a listbox: items are not selectable options and there
|
|
1441
|
+
is no roving focus. Interactive items (`List.ItemButton`, `List.ItemLink`)
|
|
1442
|
+
are ordinary Tab stops. For choosing among options, use a Listbox,
|
|
1443
|
+
Combobox, or Select instead.
|
|
1444
|
+
|
|
1445
|
+
Grouping: put a `List.Subheader` (a real heading by default) before each
|
|
1446
|
+
list and point the list at it with `aria-labelledby`, so screen readers
|
|
1400
1447
|
announce "Account, list, 3 items".
|
|
1401
1448
|
|
|
1402
1449
|
### Props
|
|
@@ -1416,8 +1463,8 @@ announce "Account, list, 3 items".
|
|
|
1416
1463
|
|
|
1417
1464
|
Also exported as `ListItem`.
|
|
1418
1465
|
|
|
1419
|
-
A static list item (`<li>`) with optional `start`, `title`, `description`,
|
|
1420
|
-
`meta`, and `end` slots, or plain `children`. For a clickable row, use
|
|
1466
|
+
A static list item (`<li>`) with optional `start`, `title`, `description`,
|
|
1467
|
+
`meta`, and `end` slots, or plain `children`. For a clickable row, use
|
|
1421
1468
|
`List.ItemButton` or `List.ItemLink`.
|
|
1422
1469
|
|
|
1423
1470
|
- `start`: `ReactNode`. Leading visual: an `Avatar`, an `Icon`, or a thumbnail.
|
|
@@ -1435,14 +1482,14 @@ A static list item (`<li>`) with optional `start`, `title`, `description`,
|
|
|
1435
1482
|
|
|
1436
1483
|
Also exported as `ListItemButton`.
|
|
1437
1484
|
|
|
1438
|
-
A list item whose main area is a real `<button>`. The button wraps the
|
|
1439
|
-
title (or `children` when there is no title) and its hit area is
|
|
1440
|
-
stretched over the whole row, so the row is clickable, while `end`
|
|
1441
|
-
actions sit above it and stay independently clickable. Never nest
|
|
1442
|
-
interactive elements in `title` or `description`.
|
|
1443
|
-
|
|
1444
|
-
`className` and `style` go on the row `<li>`; `ref`, `onClick`, `type`,
|
|
1445
|
-
`aria-*`, and every other prop go on the `<button>`. The description and
|
|
1485
|
+
A list item whose main area is a real `<button>`. The button wraps the
|
|
1486
|
+
title (or `children` when there is no title) and its hit area is
|
|
1487
|
+
stretched over the whole row, so the row is clickable, while `end`
|
|
1488
|
+
actions sit above it and stay independently clickable. Never nest
|
|
1489
|
+
interactive elements in `title` or `description`.
|
|
1490
|
+
|
|
1491
|
+
`className` and `style` go on the row `<li>`; `ref`, `onClick`, `type`,
|
|
1492
|
+
`aria-*`, and every other prop go on the `<button>`. The description and
|
|
1446
1493
|
meta become the button's accessible description.
|
|
1447
1494
|
|
|
1448
1495
|
- `start`: `ReactNode`. Leading visual: an `Avatar`, an `Icon`, or a thumbnail.
|
|
@@ -1464,12 +1511,12 @@ meta become the button's accessible description.
|
|
|
1464
1511
|
|
|
1465
1512
|
Also exported as `ListItemLink`.
|
|
1466
1513
|
|
|
1467
|
-
A list item whose main area is a real `<a>`, stretched over the whole row
|
|
1468
|
-
like `List.ItemButton`. `selected` sets `aria-current="page"` (override
|
|
1469
|
-
with `current`). When `disabled`, the link loses its `href` and is marked
|
|
1470
|
-
`aria-disabled`, so it can't be followed or focused.
|
|
1471
|
-
|
|
1472
|
-
`className` and `style` go on the row `<li>`; everything else, including
|
|
1514
|
+
A list item whose main area is a real `<a>`, stretched over the whole row
|
|
1515
|
+
like `List.ItemButton`. `selected` sets `aria-current="page"` (override
|
|
1516
|
+
with `current`). When `disabled`, the link loses its `href` and is marked
|
|
1517
|
+
`aria-disabled`, so it can't be followed or focused.
|
|
1518
|
+
|
|
1519
|
+
`className` and `style` go on the row `<li>`; everything else, including
|
|
1473
1520
|
`ref` and `href`, goes on the `<a>`.
|
|
1474
1521
|
|
|
1475
1522
|
- `start`: `ReactNode`. Leading visual: an `Avatar`, an `Icon`, or a thumbnail.
|
|
@@ -1491,14 +1538,14 @@ with `current`). When `disabled`, the link loses its `href` and is marked
|
|
|
1491
1538
|
|
|
1492
1539
|
Also exported as `ListSubheader`.
|
|
1493
1540
|
|
|
1494
|
-
An uppercase label for a group of items. Render it before (outside) a
|
|
1495
|
-
`List`, give it an `id`, and pass that id to the list's
|
|
1496
|
-
`aria-labelledby`. It must not go inside the `<ul>`, where it would be
|
|
1497
|
-
counted as an item.
|
|
1498
|
-
|
|
1499
|
-
```tsx
|
|
1500
|
-
<List.Subheader id="acct">Account</List.Subheader>
|
|
1501
|
-
<List aria-labelledby="acct">...</List>
|
|
1541
|
+
An uppercase label for a group of items. Render it before (outside) a
|
|
1542
|
+
`List`, give it an `id`, and pass that id to the list's
|
|
1543
|
+
`aria-labelledby`. It must not go inside the `<ul>`, where it would be
|
|
1544
|
+
counted as an item.
|
|
1545
|
+
|
|
1546
|
+
```tsx
|
|
1547
|
+
<List.Subheader id="acct">Account</List.Subheader>
|
|
1548
|
+
<List aria-labelledby="acct">...</List>
|
|
1502
1549
|
```
|
|
1503
1550
|
|
|
1504
1551
|
- `as`: `ListSubheaderElement` (default "h3"). Element to render. A heading (default `h3`) so grouped lists show up in the screen reader's headings list; pick the level that fits the page outline, or `div` when a heading would be out of place.
|
|
@@ -1635,7 +1682,7 @@ Semantic data table. See `TableRoot` docs above; parts are attached as `Table.*`
|
|
|
1635
1682
|
|
|
1636
1683
|
Also exported as `TableCaption`.
|
|
1637
1684
|
|
|
1638
|
-
The table's title (`<caption>`). It names the table and, when the table
|
|
1685
|
+
The table's title (`<caption>`). It names the table and, when the table
|
|
1639
1686
|
scrolls, its scroll region. Strongly recommended on every table.
|
|
1640
1687
|
|
|
1641
1688
|
- Plus every native `<caption>` attribute.
|
|
@@ -1677,9 +1724,9 @@ A table row (`<tr>`).
|
|
|
1677
1724
|
|
|
1678
1725
|
Also exported as `TableHeaderCell`.
|
|
1679
1726
|
|
|
1680
|
-
A header cell (`<th>`). With `sortable`, the whole cell is a real
|
|
1681
|
-
`<button>` and the header carries `aria-sort` while it is the sorted column.
|
|
1682
|
-
The sort icon shows the direction by shape (up arrow, down arrow, or a
|
|
1727
|
+
A header cell (`<th>`). With `sortable`, the whole cell is a real
|
|
1728
|
+
`<button>` and the header carries `aria-sort` while it is the sorted column.
|
|
1729
|
+
The sort icon shows the direction by shape (up arrow, down arrow, or a
|
|
1683
1730
|
neutral double arrow), not by color alone.
|
|
1684
1731
|
|
|
1685
1732
|
- `align`: `TableCellAlign` (default "start" ("end" when `numeric`)). Horizontal alignment.
|
|
@@ -1709,8 +1756,8 @@ A data cell (`<td>`).
|
|
|
1709
1756
|
|
|
1710
1757
|
Also exported as `TableSelectCell`.
|
|
1711
1758
|
|
|
1712
|
-
A data cell holding the row's selection checkbox. Pair with `selected` on
|
|
1713
|
-
the `Table.Row`. Give it a `rowLabel` (or `checkboxLabel`) so each
|
|
1759
|
+
A data cell holding the row's selection checkbox. Pair with `selected` on
|
|
1760
|
+
the `Table.Row`. Give it a `rowLabel` (or `checkboxLabel`) so each
|
|
1714
1761
|
checkbox has a unique accessible name.
|
|
1715
1762
|
|
|
1716
1763
|
- `checked`: `boolean` (required). Whether the row is selected.
|
|
@@ -1724,7 +1771,7 @@ checkbox has a unique accessible name.
|
|
|
1724
1771
|
|
|
1725
1772
|
Also exported as `TableSelectAllCell`.
|
|
1726
1773
|
|
|
1727
|
-
A header cell (`<th scope="col">`) with a "select all" checkbox. Shows the
|
|
1774
|
+
A header cell (`<th scope="col">`) with a "select all" checkbox. Shows the
|
|
1728
1775
|
mixed state (`aria-checked="mixed"`) when some rows are selected.
|
|
1729
1776
|
|
|
1730
1777
|
- `checked`: `boolean` (required). Whether every row is selected.
|
|
@@ -2799,6 +2846,7 @@ and size are wired automatically, as with `Input`.
|
|
|
2799
2846
|
- Required: `required` blocks native form submission until an option is chosen (`setCustomValidity` on the text input).
|
|
2800
2847
|
- Clear On Escape: `clearOnEscape`: once the text matches the selection, Escape also clears the selection.
|
|
2801
2848
|
- Form submit, reset, and custom values: Form behavior: Enter submits what is shown (cleared text submits no team), a form reset restores the default, and re-entering a custom tag that's already chosen doesn't remove it.
|
|
2849
|
+
- Long list (10,000 options): 10,000 options. Only the options in view are in the page (plus the highlighted one), so opening, scrolling, and typing stay instant. Each option carries its position in the full list (`aria-setsize`, `aria-posinset`), so screen readers still hear "10,000 of 10,000". Lists with groups always render in full.
|
|
2802
2850
|
|
|
2803
2851
|
## DatePicker
|
|
2804
2852
|
|
|
@@ -3196,7 +3244,7 @@ import { FileUpload } from "@vjdesigns/vjdesigns-ui";
|
|
|
3196
3244
|
|
|
3197
3245
|
Category: forms · Storybook: Forms/FileUpload
|
|
3198
3246
|
|
|
3199
|
-
File picker with drag and drop, validation, and a file list.
|
|
3247
|
+
File picker with drag and drop, validation, and a file list.
|
|
3200
3248
|
`FileUpload.List` is the standalone list for custom layouts.
|
|
3201
3249
|
|
|
3202
3250
|
### Props
|
|
@@ -3235,13 +3283,13 @@ File picker with drag and drop, validation, and a file list.
|
|
|
3235
3283
|
|
|
3236
3284
|
Also exported as `FileUploadList`.
|
|
3237
3285
|
|
|
3238
|
-
The list of selected files: icon or image thumbnail, name (truncated, full
|
|
3239
|
-
name on hover and focus), formatted size, optional upload progress and
|
|
3240
|
-
status, and a remove button per file. `FileUpload` renders one for you;
|
|
3241
|
-
use `FileUpload.List` directly for custom layouts.
|
|
3242
|
-
|
|
3243
|
-
After a removal, focus moves to the next item's remove button (or the
|
|
3244
|
-
previous one), then to `focusFallback` when the list becomes empty.
|
|
3286
|
+
The list of selected files: icon or image thumbnail, name (truncated, full
|
|
3287
|
+
name on hover and focus), formatted size, optional upload progress and
|
|
3288
|
+
status, and a remove button per file. `FileUpload` renders one for you;
|
|
3289
|
+
use `FileUpload.List` directly for custom layouts.
|
|
3290
|
+
|
|
3291
|
+
After a removal, focus moves to the next item's remove button (or the
|
|
3292
|
+
previous one), then to `focusFallback` when the list becomes empty.
|
|
3245
3293
|
Upload completions and failures are announced in a polite live region.
|
|
3246
3294
|
|
|
3247
3295
|
- `files`: `File[]` (required). The files to show.
|
|
@@ -3339,21 +3387,21 @@ import { NumberInput } from "@vjdesigns/vjdesigns-ui";
|
|
|
3339
3387
|
|
|
3340
3388
|
Category: forms · Storybook: Forms/NumberInput
|
|
3341
3389
|
|
|
3342
|
-
A numeric text field following the WAI-ARIA spinbutton pattern. The
|
|
3343
|
-
`<input>` itself is the spinbutton: it takes focus, exposes
|
|
3344
|
-
`aria-valuenow`/`min`/`max`/`valuetext`, and handles ArrowUp/Down,
|
|
3345
|
-
PageUp/Down, Home/End, and Enter. Stepper buttons are pointer
|
|
3346
|
-
conveniences (press and hold to repeat) and stay out of the tab order.
|
|
3347
|
-
|
|
3348
|
-
Shows a formatted value (`Intl.NumberFormat`) when not focused and the
|
|
3349
|
-
plain editable number while focused; parses locale input (group
|
|
3350
|
-
separators, decimal comma). Built on `Input`, so size, variant, radius,
|
|
3351
|
-
addons, and `Field` wiring match every other text field.
|
|
3352
|
-
|
|
3353
|
-
```tsx
|
|
3354
|
-
<Field label="Weight">
|
|
3355
|
-
<NumberInput min={0} step={2.5} endAddon="kg" defaultValue={60} />
|
|
3356
|
-
</Field>
|
|
3390
|
+
A numeric text field following the WAI-ARIA spinbutton pattern. The
|
|
3391
|
+
`<input>` itself is the spinbutton: it takes focus, exposes
|
|
3392
|
+
`aria-valuenow`/`min`/`max`/`valuetext`, and handles ArrowUp/Down,
|
|
3393
|
+
PageUp/Down, Home/End, and Enter. Stepper buttons are pointer
|
|
3394
|
+
conveniences (press and hold to repeat) and stay out of the tab order.
|
|
3395
|
+
|
|
3396
|
+
Shows a formatted value (`Intl.NumberFormat`) when not focused and the
|
|
3397
|
+
plain editable number while focused; parses locale input (group
|
|
3398
|
+
separators, decimal comma). Built on `Input`, so size, variant, radius,
|
|
3399
|
+
addons, and `Field` wiring match every other text field.
|
|
3400
|
+
|
|
3401
|
+
```tsx
|
|
3402
|
+
<Field label="Weight">
|
|
3403
|
+
<NumberInput min={0} step={2.5} endAddon="kg" defaultValue={60} />
|
|
3404
|
+
</Field>
|
|
3357
3405
|
```
|
|
3358
3406
|
|
|
3359
3407
|
### Props
|
|
@@ -5452,22 +5500,22 @@ import { Navbar } from "@vjdesigns/vjdesigns-ui";
|
|
|
5452
5500
|
|
|
5453
5501
|
Category: navigation · Storybook: Navigation/Navbar
|
|
5454
5502
|
|
|
5455
|
-
The top header of an app or site. Renders a `<header>` (a `banner`
|
|
5456
|
-
landmark when it isn't inside `main`, `article`, `aside`, `nav`, or
|
|
5457
|
-
`section`) with brand, navigation, and actions. Below `collapseBelow`
|
|
5458
|
-
the navigation moves into a modal drawer opened by a menu button.
|
|
5459
|
-
|
|
5460
|
-
```tsx
|
|
5461
|
-
<Navbar>
|
|
5462
|
-
<Navbar.Brand href="/">Hoops</Navbar.Brand>
|
|
5463
|
-
<Navbar.Nav>
|
|
5464
|
-
<Navbar.Link href="/" active>Home</Navbar.Link>
|
|
5465
|
-
<Navbar.Link href="/teams">Teams</Navbar.Link>
|
|
5466
|
-
</Navbar.Nav>
|
|
5467
|
-
<Navbar.Actions>
|
|
5468
|
-
<Button size="sm">Sign in</Button>
|
|
5469
|
-
</Navbar.Actions>
|
|
5470
|
-
</Navbar>
|
|
5503
|
+
The top header of an app or site. Renders a `<header>` (a `banner`
|
|
5504
|
+
landmark when it isn't inside `main`, `article`, `aside`, `nav`, or
|
|
5505
|
+
`section`) with brand, navigation, and actions. Below `collapseBelow`
|
|
5506
|
+
the navigation moves into a modal drawer opened by a menu button.
|
|
5507
|
+
|
|
5508
|
+
```tsx
|
|
5509
|
+
<Navbar>
|
|
5510
|
+
<Navbar.Brand href="/">Hoops</Navbar.Brand>
|
|
5511
|
+
<Navbar.Nav>
|
|
5512
|
+
<Navbar.Link href="/" active>Home</Navbar.Link>
|
|
5513
|
+
<Navbar.Link href="/teams">Teams</Navbar.Link>
|
|
5514
|
+
</Navbar.Nav>
|
|
5515
|
+
<Navbar.Actions>
|
|
5516
|
+
<Button size="sm">Sign in</Button>
|
|
5517
|
+
</Navbar.Actions>
|
|
5518
|
+
</Navbar>
|
|
5471
5519
|
```
|
|
5472
5520
|
|
|
5473
5521
|
### Props
|
|
@@ -5505,12 +5553,12 @@ The logo or product name at the start of the bar, usually a link home.
|
|
|
5505
5553
|
|
|
5506
5554
|
Also exported as `NavbarNav`.
|
|
5507
5555
|
|
|
5508
|
-
The primary links: a `<nav>` landmark around a `<ul>`. Above the
|
|
5509
|
-
`collapseBelow` breakpoint they sit in the bar; below it they are hidden
|
|
5510
|
-
(`display: none`) and the same links render vertically in a drawer that the
|
|
5511
|
-
menu button opens. Only one copy is ever exposed to assistive technology.
|
|
5512
|
-
|
|
5513
|
-
Other props go on the inline `<nav>` only. The drawer copy gets the same
|
|
5556
|
+
The primary links: a `<nav>` landmark around a `<ul>`. Above the
|
|
5557
|
+
`collapseBelow` breakpoint they sit in the bar; below it they are hidden
|
|
5558
|
+
(`display: none`) and the same links render vertically in a drawer that the
|
|
5559
|
+
menu button opens. Only one copy is ever exposed to assistive technology.
|
|
5560
|
+
|
|
5561
|
+
Other props go on the inline `<nav>` only. The drawer copy gets the same
|
|
5514
5562
|
`aria-label` / `aria-labelledby`.
|
|
5515
5563
|
|
|
5516
5564
|
- `children`: `ReactNode`. `Navbar.Link`s (each is wrapped in an `<li>` for you) and/or `Navbar.Item`s.
|
|
@@ -5523,9 +5571,9 @@ Other props go on the inline `<nav>` only. The drawer copy gets the same
|
|
|
5523
5571
|
|
|
5524
5572
|
Also exported as `NavbarItem`.
|
|
5525
5573
|
|
|
5526
|
-
A list item in `Navbar.Nav`. `Navbar.Link` adds its own `<li>`, so you
|
|
5527
|
-
only need this to wrap something else, to put props on the `<li>`, or to
|
|
5528
|
-
show an item only in the bar or only in the drawer (`showIn`). A `ref`
|
|
5574
|
+
A list item in `Navbar.Nav`. `Navbar.Link` adds its own `<li>`, so you
|
|
5575
|
+
only need this to wrap something else, to put props on the `<li>`, or to
|
|
5576
|
+
show an item only in the bar or only in the drawer (`showIn`). A `ref`
|
|
5529
5577
|
attaches to the bar's copy.
|
|
5530
5578
|
|
|
5531
5579
|
- `children`: `ReactNode`. A `Navbar.Link`, or any other control (e.g. a `Button`) that belongs in the list.
|
|
@@ -5536,18 +5584,47 @@ attaches to the bar's copy.
|
|
|
5536
5584
|
|
|
5537
5585
|
Also exported as `NavbarLink`.
|
|
5538
5586
|
|
|
5539
|
-
A primary navigation link. Wraps itself in an `<li>` unless it's already
|
|
5540
|
-
inside `Navbar.Item`. In the mobile drawer, clicking it closes the drawer
|
|
5541
|
-
(even if a router prevents the default navigation).
|
|
5542
|
-
|
|
5543
|
-
It renders once in the bar and once in the drawer (only one is ever
|
|
5587
|
+
A primary navigation link. Wraps itself in an `<li>` unless it's already
|
|
5588
|
+
inside `Navbar.Item`. In the mobile drawer, clicking it closes the drawer
|
|
5589
|
+
(even if a router prevents the default navigation).
|
|
5590
|
+
|
|
5591
|
+
It renders once in the bar and once in the drawer (only one is ever
|
|
5544
5592
|
exposed), so don't give it an `id`. A `ref` attaches to the bar's copy.
|
|
5545
5593
|
|
|
5546
5594
|
- `as`: `C`. Component or element to render. Defaults to `a`. Pass a router link (e.g. React Router or Next.js `Link`) and its props (such as `to`) are accepted and typed. It must forward `className`, `onClick`, and ARIA props to its `<a>`.
|
|
5547
5595
|
- `active`: `boolean` (default false). Marks the link as the current page: sets `aria-current="page"` and shows a filled pill with an indicator bar, so the state never relies on color alone.
|
|
5548
5596
|
- `icon`: `ReactNode`. Decorative icon before the label. Hidden from assistive technology.
|
|
5597
|
+
- `badge`: `NavbarBadgeValue`. A count (rendered with `Badge` `count`, capped at 99+, hidden at 0) or a short text such as "New", after the label. It's part of the link's name ("Messages 3"), in the bar and the mobile menu.
|
|
5598
|
+
- `badgeLabel`: `string`. Screen-reader text for the badge, e.g. "3 unread messages". Replaces the visible badge text in the accessible name.
|
|
5599
|
+
- `badgeTone`: `Tone`. Badge color. By default `accent`, except in the `solid` bar, where the badge takes the bar's own colors swapped (a `Badge` `variant="inverse"`) so it stands out from the bar in both themes. Setting it always gives a solid badge in that tone.
|
|
5549
5600
|
- `children`: `ReactNode`. The visible label.
|
|
5550
5601
|
|
|
5602
|
+
### Navbar.Group
|
|
5603
|
+
|
|
5604
|
+
Also exported as `NavbarGroup`.
|
|
5605
|
+
|
|
5606
|
+
A group of links under one button, following the WAI-ARIA disclosure
|
|
5607
|
+
navigation pattern (not a `menu`): the button has `aria-expanded`, and the
|
|
5608
|
+
links stay ordinary links in the Tab order.
|
|
5609
|
+
|
|
5610
|
+
- In the bar: the button opens a dropdown below it. Escape closes it and
|
|
5611
|
+
returns focus to the button; so do a press outside, Tab moving focus out
|
|
5612
|
+
of the group, and activating a link. Opening one group closes the others.
|
|
5613
|
+
- In the mobile menu: an expandable section with the links indented below.
|
|
5614
|
+
|
|
5615
|
+
- `label`: `ReactNode` (required). The group button's visible label, and its accessible name.
|
|
5616
|
+
- `icon`: `ReactNode`. Decorative icon before the label.
|
|
5617
|
+
- `children`: `ReactNode`. The group's `Navbar.Link`s.
|
|
5618
|
+
- `active`: `boolean` (default false). One of the group's links is the current page. The button then shows the active look (it doesn't set `aria-current`; the link does), and the group starts open in the mobile menu.
|
|
5619
|
+
- `badge`: `NavbarBadgeValue`. A count or short text on the group button, like `Navbar.Link`'s `badge`.
|
|
5620
|
+
- `badgeLabel`: `string`. Screen-reader text for the badge.
|
|
5621
|
+
- `badgeTone`: `Tone`. Badge color. Same default as `Navbar.Link`'s `badgeTone` (inverse on the solid bar).
|
|
5622
|
+
- `open`: `boolean`. Controlled open state of the dropdown in the bar.
|
|
5623
|
+
- `defaultOpen`: `boolean` (default false). Initial open state of the dropdown when uncontrolled.
|
|
5624
|
+
- `onOpenChange`: `(open: boolean) => void`. Called with the next open state of the dropdown in the bar.
|
|
5625
|
+
- `disabled`: `boolean` (default false). Disables the group button.
|
|
5626
|
+
- Plus every native `<li>` attribute.
|
|
5627
|
+
|
|
5551
5628
|
### Navbar.Actions
|
|
5552
5629
|
|
|
5553
5630
|
Also exported as `NavbarActions`.
|
|
@@ -5567,7 +5644,12 @@ The end of the bar: actions that stay visible at every width, before the menu bu
|
|
|
5567
5644
|
- Sizes: `sm` 56px, `md` 64px, `lg` 80px tall. Links and the menu button scale with it.
|
|
5568
5645
|
- With Actions: The actions area holds anything that should stay visible at every width.
|
|
5569
5646
|
- Active Link: `active` sets `aria-current="page"` and draws an accent-tinted pill with an indicator bar, so the current page is marked by shape as well as color. Links can carry a decorative `icon`.
|
|
5570
|
-
-
|
|
5647
|
+
- Link Badges: `badge` on `Navbar.Link` (and `Navbar.Group`) shows a count or short text after the label, in the bar and the mobile menu. `badgeLabel` gives screen readers the full meaning ("Messages, 3 unread messages"). On the solid bar, a badge without a `badgeTone` swaps the bar's colors (`Badge` `variant="inverse"`), so it stands out in both themes.
|
|
5648
|
+
- Link Groups: `Navbar.Group` puts links under one button (the WAI-ARIA disclosure navigation pattern, not a menu). The button opens a dropdown; Escape, a press outside, Tab moving out, or choosing a link closes it, and opening one group closes the other. `active` marks the group holding the current page.
|
|
5649
|
+
- Link group, last on the page: A group as the last focusable thing on the page: Tab past its last link leaves the page, and the dropdown still closes. A press on the panel's padding (nothing focusable) keeps it open.
|
|
5650
|
+
- Link Groups Mobile: In the mobile menu, a group is an expandable section; the one holding the current page starts open.
|
|
5651
|
+
- Link Groups Right To Left: Right-to-left: the dropdown lines up with the button's right edge.
|
|
5652
|
+
- Mobile
|
|
5571
5653
|
- Mobile Solid: The solid bar on a phone, with the menu sliding in from the start edge.
|
|
5572
5654
|
- Router Links: Pass a router link component with `as` (on `Navbar.Link` and `Navbar.Brand`); its own props, such as `to`, are typed. Track the current route yourself and set `active` on the matching link.
|
|
5573
5655
|
- Sticky on a long page: `position="sticky"` (the default) with `elevateOnScroll`: the soft shadow appears once the page scrolls. Scroll the canvas to see it.
|
|
@@ -6700,9 +6782,9 @@ import { Tooltip } from "@vjdesigns/vjdesigns-ui";
|
|
|
6700
6782
|
|
|
6701
6783
|
Category: overlays · Storybook: Overlays/Tooltip
|
|
6702
6784
|
|
|
6703
|
-
A short, non-interactive label or description that appears on hover and on
|
|
6704
|
-
keyboard focus. Follows the WAI-ARIA tooltip pattern and WCAG 1.4.13: it
|
|
6705
|
-
can be dismissed with Escape, the pointer can move onto it, and it stays
|
|
6785
|
+
A short, non-interactive label or description that appears on hover and on
|
|
6786
|
+
keyboard focus. Follows the WAI-ARIA tooltip pattern and WCAG 1.4.13: it
|
|
6787
|
+
can be dismissed with Escape, the pointer can move onto it, and it stays
|
|
6706
6788
|
open until the pointer or focus leaves. Use `Popover` for interactive content.
|
|
6707
6789
|
|
|
6708
6790
|
### Props
|
|
@@ -6745,7 +6827,7 @@ import { TooltipProvider } from "@vjdesigns/vjdesigns-ui";
|
|
|
6745
6827
|
|
|
6746
6828
|
Category: overlays · Storybook: Overlays/Tooltip
|
|
6747
6829
|
|
|
6748
|
-
Optional. Sets shared timing for the tooltips inside it. Tooltips work
|
|
6830
|
+
Optional. Sets shared timing for the tooltips inside it. Tooltips work
|
|
6749
6831
|
without a provider, using the defaults.
|
|
6750
6832
|
|
|
6751
6833
|
### Props
|
|
@@ -7908,6 +7990,16 @@ typing in that element.
|
|
|
7908
7990
|
<Textarea onKeyDown={getHotkeyHandler([["mod+enter", send]])} />
|
|
7909
7991
|
```
|
|
7910
7992
|
|
|
7993
|
+
## withExtraItems
|
|
7994
|
+
|
|
7995
|
+
```ts
|
|
7996
|
+
withExtraItems(virtualizer: Virtualizer, extra: readonly number[]): VirtualItem[]
|
|
7997
|
+
```
|
|
7998
|
+
|
|
7999
|
+
The window's items plus extra indices that must stay rendered even when
|
|
8000
|
+
scrolled out of view (a focused row, a highlighted option), in order.
|
|
8001
|
+
Render spacers between non-adjacent items from their `start` / `end`.
|
|
8002
|
+
|
|
7911
8003
|
## cx
|
|
7912
8004
|
|
|
7913
8005
|
```ts
|