@sth87/shadcn-design-system 0.1.9 → 0.2.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/AI_README.md +114 -51
- package/README.md +83 -27
- package/dist/AI_CONTEXT.md +51 -52
- package/dist/cjs/_virtual/_commonjsHelpers.cjs +0 -1
- package/dist/cjs/_virtual/index.cjs +0 -1
- package/dist/cjs/_virtual/index2.cjs +0 -1
- package/dist/cjs/components/Accordion/Accordion.cjs +0 -1
- package/dist/cjs/components/Accordion/index.cjs +1 -0
- package/dist/cjs/components/Avatar/Avatar.cjs +1 -2
- package/dist/cjs/components/Avatar/index.cjs +1 -0
- package/dist/cjs/components/Badge/Badge.cjs +0 -1
- package/dist/cjs/components/Badge/index.cjs +1 -0
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +0 -1
- package/dist/cjs/components/Breadcrumb/index.cjs +1 -0
- package/dist/cjs/components/Button/Button.cjs +0 -1
- package/dist/cjs/components/Button/ButtonGroup.cjs +0 -1
- package/dist/cjs/components/Button/index.cjs +1 -0
- package/dist/cjs/components/Calendar/Calendar.cjs +1 -2
- package/dist/cjs/components/Calendar/index.cjs +1 -0
- package/dist/cjs/components/Carousel/Carousel.cjs +0 -1
- package/dist/cjs/components/Carousel/index.cjs +1 -0
- package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -2
- package/dist/cjs/components/Checkbox/index.cjs +1 -0
- package/dist/cjs/components/Collapsible/Collapsible.cjs +0 -1
- package/dist/cjs/components/Collapsible/index.cjs +1 -0
- package/dist/cjs/components/Command/Command.cjs +0 -1
- package/dist/cjs/components/Command/index.cjs +0 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs +0 -1
- package/dist/cjs/components/ContextMenu/index.cjs +0 -1
- package/dist/cjs/components/Cropper/Cropper.cjs +1 -2
- package/dist/cjs/components/Cropper/CropperTool.cjs +0 -1
- package/dist/cjs/components/Cropper/index.cjs +1 -0
- package/dist/cjs/components/Cropper/utils.cjs +0 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -2
- package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -2
- package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -2
- package/dist/cjs/components/DatePicker/index.cjs +1 -0
- package/dist/cjs/components/Dialog/Dialog.cjs +0 -1
- package/dist/cjs/components/Dialog/index.cjs +1 -0
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +0 -1
- package/dist/cjs/components/DropdownMenu/index.cjs +0 -1
- package/dist/cjs/components/FloatLabel.cjs +0 -1
- package/dist/cjs/components/Glass/Glass.cjs +1 -2
- package/dist/cjs/components/Glass/index.cjs +1 -0
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -2
- package/dist/cjs/components/ImageViewer/index.cjs +1 -0
- package/dist/cjs/components/Input/Input.cjs +1 -2
- package/dist/cjs/components/Input/index.cjs +1 -0
- package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -2
- package/dist/cjs/components/InputOTP/index.cjs +1 -0
- package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -2
- package/dist/cjs/components/Interactive/index.cjs +1 -0
- package/dist/cjs/components/Label/index.cjs +1 -0
- package/dist/cjs/components/Marquee/Marquee.cjs +1 -2
- package/dist/cjs/components/Marquee/MarqueeWrapper.cjs +0 -1
- package/dist/cjs/components/Marquee/index.cjs +0 -1
- package/dist/cjs/components/Masonry/Masonry.cjs +1 -2
- package/dist/cjs/components/Masonry/MasonryWrapper.cjs +0 -1
- package/dist/cjs/components/Masonry/index.cjs +1 -0
- package/dist/cjs/components/Pagination/Pagination.cjs +0 -1
- package/dist/cjs/components/Pagination/index.cjs +0 -1
- package/dist/cjs/components/Popover/Popover.cjs +0 -1
- package/dist/cjs/components/Popover/index.cjs +1 -2
- package/dist/cjs/components/QrCode/QrCode.cjs +1 -2
- package/dist/cjs/components/QrCode/index.cjs +0 -1
- package/dist/cjs/components/Radio/Radio.cjs +1 -2
- package/dist/cjs/components/Radio/index.cjs +1 -0
- package/dist/cjs/components/Rate/Rate.cjs +0 -1
- package/dist/cjs/components/Rate/index.cjs +1 -0
- package/dist/cjs/components/Resizable/Resizable.cjs +0 -1
- package/dist/cjs/components/Resizable/index.cjs +1 -0
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs +0 -1
- package/dist/cjs/components/ScrollArea/index.cjs +1 -0
- package/dist/cjs/components/Select/Select.cjs +1 -2
- package/dist/cjs/components/Select/index.cjs +1 -0
- package/dist/cjs/components/Separator/Separator.cjs +0 -1
- package/dist/cjs/components/Separator/index.cjs +1 -0
- package/dist/cjs/components/Sheet/Sheet.cjs +0 -1
- package/dist/cjs/components/Sheet/index.cjs +1 -0
- package/dist/cjs/components/Sidebar/Sidebar.cjs +0 -1
- package/dist/cjs/components/Sidebar/index.cjs +1 -0
- package/dist/cjs/components/Skeleton/Skeleton.cjs +0 -1
- package/dist/cjs/components/Skeleton/index.cjs +1 -0
- package/dist/cjs/components/Slider/Slider.cjs +0 -1
- package/dist/cjs/components/Slider/index.cjs +1 -0
- package/dist/cjs/components/Stepper/Stepper.cjs +1 -2
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -2
- package/dist/cjs/components/Stepper/index.cjs +0 -1
- package/dist/cjs/components/Switch/Switch.cjs +0 -1
- package/dist/cjs/components/Switch/index.cjs +1 -0
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -2
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -2
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -2
- package/dist/cjs/components/Table/data-table-column-header.cjs +1 -2
- package/dist/cjs/components/Table/data-table-pagination.cjs +1 -2
- package/dist/cjs/components/Table/data-table-toolbar.cjs +1 -2
- package/dist/cjs/components/Table/data-table-view-options.cjs +1 -2
- package/dist/cjs/components/Table/data-table.cjs +1 -2
- package/dist/cjs/components/Table/index.cjs +1 -0
- package/dist/cjs/components/Table/select-column.cjs +0 -1
- package/dist/cjs/components/Tabs/Tabs.cjs +1 -2
- package/dist/cjs/components/Tabs/classes.cjs +1 -2
- package/dist/cjs/components/Tabs/index.cjs +1 -0
- package/dist/cjs/components/Textarea/Textarea.cjs +1 -2
- package/dist/cjs/components/Textarea/index.cjs +1 -0
- package/dist/cjs/components/TimeGridView.cjs +1 -2
- package/dist/cjs/components/Toast/Toast.cjs +1 -2
- package/dist/cjs/components/Toast/index.cjs +1 -0
- package/dist/cjs/components/Toggle/Toggle.cjs +0 -1
- package/dist/cjs/components/Toggle/index.cjs +1 -0
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -2
- package/dist/cjs/components/Tooltip/index.cjs +1 -0
- package/dist/cjs/components/Tour/Tour.cjs +1 -2
- package/dist/cjs/components/Tour/TourWrapper.cjs +0 -1
- package/dist/cjs/components/Tour/index.cjs +0 -1
- package/dist/cjs/components/TreeSelect/TreeSelect.cjs +0 -1
- package/dist/cjs/components/TreeSelect/index.cjs +1 -0
- package/dist/cjs/components/Upload/Upload.cjs +0 -1
- package/dist/cjs/components/Upload/index.cjs +1 -0
- package/dist/cjs/components/WheelColumn.cjs +1 -2
- package/dist/cjs/config/data-table.cjs +0 -1
- package/dist/cjs/constants/common.cjs +0 -1
- package/dist/cjs/hooks/index.cjs +1 -0
- package/dist/cjs/hooks/use-callback-ref.cjs +0 -1
- package/dist/cjs/hooks/use-data-table.cjs +1 -2
- package/dist/cjs/hooks/use-debounced-callback.cjs +1 -2
- package/dist/cjs/hooks/use-debounced-value.cjs +1 -2
- package/dist/cjs/hooks/use-event-listener.cjs +1 -2
- package/dist/cjs/hooks/use-intersection-observer.cjs +0 -1
- package/dist/cjs/hooks/use-isomorphic-layout-effect.cjs +0 -1
- package/dist/cjs/hooks/use-media-query.cjs +1 -2
- package/dist/cjs/hooks/use-mouse-position.cjs +1 -0
- package/dist/cjs/hooks/use-on-click-outside.cjs +1 -2
- package/dist/cjs/hooks/use-script.cjs +0 -1
- package/dist/cjs/hooks/use-scroll-lock.cjs +1 -2
- package/dist/cjs/index.cjs +1 -2
- package/dist/cjs/lib/TextAnimation/BlurText.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -2
- package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -2
- package/dist/cjs/lib/TextAnimation/RollingText.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -2
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -2
- package/dist/cjs/lib/TextAnimation/SplittingText.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -2
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs +0 -1
- package/dist/cjs/lib/TextAnimation/index.cjs +1 -0
- package/dist/cjs/lib/utils.cjs +1 -0
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs +0 -1
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs +0 -1
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs +0 -1
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs +0 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs +0 -1
- package/dist/cjs/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/accordion.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/button.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/collapsible.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -2
- package/dist/cjs/packages/ui/src/components/command.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/input.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/label.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/select.cjs +1 -2
- package/dist/cjs/packages/ui/src/components/separator.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/table.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs +0 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs +0 -1
- package/dist/cjs/packages/ui/src/hooks/use-mobile.cjs +0 -1
- package/dist/cjs/packages/ui/src/lib/compose-refs.cjs +0 -1
- package/dist/cjs/packages/ui/src/lib/utils.cjs +0 -1
- package/dist/cjs/utils/animations.cjs +1 -2
- package/dist/cjs/utils/css.cjs +0 -1
- package/dist/cjs/utils/data-table.cjs +0 -1
- package/dist/cjs/utils/datetime.cjs +0 -1
- package/dist/cjs/utils/parsers.cjs +0 -1
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -1
- package/dist/esm/_virtual/index.js +0 -1
- package/dist/esm/_virtual/index2.js +0 -1
- package/dist/esm/components/Accordion/Accordion.js +0 -1
- package/dist/esm/components/Accordion/index.js +9 -0
- package/dist/esm/components/Avatar/Avatar.js +32 -63
- package/dist/esm/components/Avatar/index.js +4 -0
- package/dist/esm/components/Badge/Badge.js +0 -1
- package/dist/esm/components/Badge/index.js +5 -0
- package/dist/esm/components/Breadcrumb/Breadcrumb.js +0 -1
- package/dist/esm/components/Breadcrumb/index.js +5 -0
- package/dist/esm/components/Button/Button.js +0 -1
- package/dist/esm/components/Button/ButtonGroup.js +0 -1
- package/dist/esm/components/Button/index.js +10 -0
- package/dist/esm/components/Calendar/Calendar.js +25 -57
- package/dist/esm/components/Calendar/index.js +5 -0
- package/dist/esm/components/Carousel/Carousel.js +0 -1
- package/dist/esm/components/Carousel/index.js +6 -0
- package/dist/esm/components/Checkbox/Checkbox.js +29 -58
- package/dist/esm/components/Checkbox/index.js +5 -0
- package/dist/esm/components/Collapsible/Collapsible.js +0 -1
- package/dist/esm/components/Collapsible/index.js +5 -0
- package/dist/esm/components/Command/Command.js +0 -1
- package/dist/esm/components/Command/index.js +0 -1
- package/dist/esm/components/ContextMenu/ContextMenu.js +0 -1
- package/dist/esm/components/ContextMenu/index.js +0 -1
- package/dist/esm/components/Cropper/Cropper.js +261 -292
- package/dist/esm/components/Cropper/CropperTool.js +0 -1
- package/dist/esm/components/Cropper/index.js +17 -0
- package/dist/esm/components/Cropper/utils.js +0 -1
- package/dist/esm/components/DatePicker/DatePicker.js +94 -122
- package/dist/esm/components/DatePicker/RangePicker.js +202 -230
- package/dist/esm/components/DatePicker/TimePicker.js +63 -92
- package/dist/esm/components/DatePicker/index.js +8 -0
- package/dist/esm/components/Dialog/Dialog.js +0 -1
- package/dist/esm/components/Dialog/index.js +5 -0
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +0 -1
- package/dist/esm/components/DropdownMenu/index.js +0 -1
- package/dist/esm/components/FloatLabel.js +0 -1
- package/dist/esm/components/Glass/Glass.js +7 -39
- package/dist/esm/components/Glass/index.js +5 -0
- package/dist/esm/components/ImageViewer/ImageViewer.js +95 -126
- package/dist/esm/components/ImageViewer/index.js +7 -0
- package/dist/esm/components/Input/Input.js +0 -1
- package/dist/esm/components/Input/index.js +5 -0
- package/dist/esm/components/InputOTP/InputOTP.js +28 -58
- package/dist/esm/components/InputOTP/index.js +5 -0
- package/dist/esm/components/Interactive/CursorFollow.js +90 -122
- package/dist/esm/components/Interactive/index.js +9 -0
- package/dist/esm/components/Label/index.js +4 -0
- package/dist/esm/components/Marquee/Marquee.js +78 -109
- package/dist/esm/components/Marquee/MarqueeWrapper.js +0 -1
- package/dist/esm/components/Marquee/index.js +0 -1
- package/dist/esm/components/Masonry/Masonry.js +67 -100
- package/dist/esm/components/Masonry/MasonryWrapper.js +0 -1
- package/dist/esm/components/Masonry/index.js +10 -0
- package/dist/esm/components/Pagination/Pagination.js +0 -1
- package/dist/esm/components/Pagination/index.js +0 -1
- package/dist/esm/components/Popover/Popover.js +0 -1
- package/dist/esm/components/Popover/index.js +3 -3
- package/dist/esm/components/QrCode/QrCode.js +126 -157
- package/dist/esm/components/QrCode/index.js +0 -1
- package/dist/esm/components/Radio/Radio.js +36 -67
- package/dist/esm/components/Radio/index.js +5 -0
- package/dist/esm/components/Rate/Rate.js +0 -1
- package/dist/esm/components/Rate/index.js +5 -0
- package/dist/esm/components/Resizable/Resizable.js +0 -1
- package/dist/esm/components/Resizable/index.js +13 -0
- package/dist/esm/components/ScrollArea/ScrollArea.js +0 -1
- package/dist/esm/components/ScrollArea/index.js +5 -0
- package/dist/esm/components/Select/Select.js +0 -1
- package/dist/esm/components/Select/index.js +5 -0
- package/dist/esm/components/Separator/Separator.js +0 -1
- package/dist/esm/components/Separator/index.js +5 -0
- package/dist/esm/components/Sheet/Sheet.js +0 -1
- package/dist/esm/components/Sheet/index.js +5 -0
- package/dist/esm/components/Sidebar/Sidebar.js +0 -1
- package/dist/esm/components/Sidebar/index.js +29 -0
- package/dist/esm/components/Skeleton/Skeleton.js +0 -1
- package/dist/esm/components/Skeleton/index.js +5 -0
- package/dist/esm/components/Slider/Slider.js +0 -1
- package/dist/esm/components/Slider/index.js +5 -0
- package/dist/esm/components/Stepper/Stepper.js +72 -102
- package/dist/esm/components/Stepper/StepperWrapper.js +42 -74
- package/dist/esm/components/Stepper/index.js +0 -1
- package/dist/esm/components/Switch/Switch.js +0 -1
- package/dist/esm/components/Switch/index.js +5 -0
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +2 -3
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +12 -13
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +66 -97
- package/dist/esm/components/Table/data-table-column-header.js +41 -73
- package/dist/esm/components/Table/data-table-pagination.js +30 -63
- package/dist/esm/components/Table/data-table-toolbar.js +43 -74
- package/dist/esm/components/Table/data-table-view-options.js +85 -116
- package/dist/esm/components/Table/data-table.js +52 -85
- package/dist/esm/components/Table/index.js +20 -0
- package/dist/esm/components/Table/select-column.js +0 -1
- package/dist/esm/components/Tabs/Tabs.js +0 -1
- package/dist/esm/components/Tabs/classes.js +23 -57
- package/dist/esm/components/Tabs/index.js +5 -0
- package/dist/esm/components/Textarea/Textarea.js +0 -1
- package/dist/esm/components/Textarea/index.js +5 -0
- package/dist/esm/components/TimeGridView.js +33 -65
- package/dist/esm/components/Toast/Toast.js +39 -71
- package/dist/esm/components/Toast/index.js +6 -0
- package/dist/esm/components/Toggle/Toggle.js +0 -1
- package/dist/esm/components/Toggle/index.js +5 -0
- package/dist/esm/components/Tooltip/Tooltip.js +34 -65
- package/dist/esm/components/Tooltip/index.js +4 -0
- package/dist/esm/components/Tour/Tour.js +331 -361
- package/dist/esm/components/Tour/TourWrapper.js +0 -1
- package/dist/esm/components/Tour/index.js +0 -1
- package/dist/esm/components/TreeSelect/TreeSelect.js +0 -1
- package/dist/esm/components/TreeSelect/index.js +5 -0
- package/dist/esm/components/Upload/Upload.js +0 -1
- package/dist/esm/components/Upload/index.js +4 -0
- package/dist/esm/components/WheelColumn.js +37 -69
- package/dist/esm/config/data-table.js +0 -1
- package/dist/esm/constants/common.js +0 -1
- package/dist/esm/hooks/index.js +26 -0
- package/dist/esm/hooks/use-callback-ref.js +0 -1
- package/dist/esm/hooks/use-data-table.js +0 -1
- package/dist/esm/hooks/use-debounced-callback.js +0 -1
- package/dist/esm/hooks/use-debounced-value.js +0 -1
- package/dist/esm/hooks/use-event-listener.js +0 -1
- package/dist/esm/hooks/use-intersection-observer.js +0 -1
- package/dist/esm/hooks/use-isomorphic-layout-effect.js +0 -1
- package/dist/esm/hooks/use-media-query.js +0 -1
- package/dist/esm/hooks/use-mouse-position.js +27 -0
- package/dist/esm/hooks/use-on-click-outside.js +0 -1
- package/dist/esm/hooks/use-script.js +0 -1
- package/dist/esm/hooks/use-scroll-lock.js +0 -1
- package/dist/esm/index.js +241 -268
- package/dist/esm/lib/TextAnimation/BlurText.js +0 -1
- package/dist/esm/lib/TextAnimation/CircularText.js +0 -1
- package/dist/esm/lib/TextAnimation/FlipWords.js +28 -60
- package/dist/esm/lib/TextAnimation/GradientText.js +26 -58
- package/dist/esm/lib/TextAnimation/RollingText.js +0 -1
- package/dist/esm/lib/TextAnimation/RotatingText.js +27 -59
- package/dist/esm/lib/TextAnimation/ShimmeringText.js +26 -58
- package/dist/esm/lib/TextAnimation/SplittingText.js +0 -1
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +29 -61
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js +0 -1
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js +0 -1
- package/dist/esm/lib/TextAnimation/TypingText.js +0 -1
- package/dist/esm/lib/TextAnimation/WritingText.js +0 -1
- package/dist/esm/lib/TextAnimation/index.js +28 -0
- package/dist/esm/lib/utils.js +12 -0
- package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +0 -1
- package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js +0 -1
- package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +0 -1
- package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +0 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js +0 -1
- package/dist/esm/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.js +0 -1
- package/dist/esm/packages/ui/src/components/accordion.js +0 -1
- package/dist/esm/packages/ui/src/components/alert-dialog.js +0 -1
- package/dist/esm/packages/ui/src/components/avatar.js +0 -1
- package/dist/esm/packages/ui/src/components/badge.js +0 -1
- package/dist/esm/packages/ui/src/components/breadcrumb.js +0 -1
- package/dist/esm/packages/ui/src/components/button-group.js +0 -1
- package/dist/esm/packages/ui/src/components/button.js +0 -1
- package/dist/esm/packages/ui/src/components/calendar.js +0 -1
- package/dist/esm/packages/ui/src/components/checkbox.js +0 -1
- package/dist/esm/packages/ui/src/components/collapsible.js +0 -1
- package/dist/esm/packages/ui/src/components/combobox.js +96 -81
- package/dist/esm/packages/ui/src/components/command.js +0 -1
- package/dist/esm/packages/ui/src/components/context-menu.js +0 -1
- package/dist/esm/packages/ui/src/components/dialog.js +0 -1
- package/dist/esm/packages/ui/src/components/drawer.js +0 -1
- package/dist/esm/packages/ui/src/components/dropdown-menu.js +0 -1
- package/dist/esm/packages/ui/src/components/input-otp.js +0 -1
- package/dist/esm/packages/ui/src/components/input.js +0 -1
- package/dist/esm/packages/ui/src/components/label.js +0 -1
- package/dist/esm/packages/ui/src/components/pagination.js +0 -1
- package/dist/esm/packages/ui/src/components/popover.js +0 -1
- package/dist/esm/packages/ui/src/components/radio-group.js +0 -1
- package/dist/esm/packages/ui/src/components/resizable.js +0 -1
- package/dist/esm/packages/ui/src/components/scroll-area.js +0 -1
- package/dist/esm/packages/ui/src/components/select.js +89 -83
- package/dist/esm/packages/ui/src/components/separator.js +0 -1
- package/dist/esm/packages/ui/src/components/sheet.js +0 -1
- package/dist/esm/packages/ui/src/components/sidebar.js +0 -1
- package/dist/esm/packages/ui/src/components/skeleton.js +0 -1
- package/dist/esm/packages/ui/src/components/switch.js +0 -1
- package/dist/esm/packages/ui/src/components/table.js +0 -1
- package/dist/esm/packages/ui/src/components/tabs.js +0 -1
- package/dist/esm/packages/ui/src/components/textarea.js +0 -1
- package/dist/esm/packages/ui/src/components/toggle.js +0 -1
- package/dist/esm/packages/ui/src/components/tooltip.js +0 -1
- package/dist/esm/packages/ui/src/components/tree-view.js +1 -2
- package/dist/esm/packages/ui/src/hooks/use-mobile.js +0 -1
- package/dist/esm/packages/ui/src/lib/compose-refs.js +0 -1
- package/dist/esm/packages/ui/src/lib/utils.js +0 -1
- package/dist/esm/utils/animations.js +40 -73
- package/dist/esm/utils/css.js +0 -1
- package/dist/esm/utils/data-table.js +0 -1
- package/dist/esm/utils/datetime.js +0 -1
- package/dist/esm/utils/parsers.js +0 -1
- package/dist/types/components/Accordion/index.d.ts +1 -1
- package/dist/types/components/Accordion/index.d.ts.map +1 -1
- package/dist/types/components/Badge/index.d.ts +1 -1
- package/dist/types/components/Badge/index.d.ts.map +1 -1
- package/dist/types/components/Breadcrumb/index.d.ts +1 -1
- package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
- package/dist/types/components/Button/index.d.ts +1 -1
- package/dist/types/components/Button/index.d.ts.map +1 -1
- package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/types/components/Checkbox/index.d.ts +1 -1
- package/dist/types/components/Checkbox/index.d.ts.map +1 -1
- package/dist/types/components/Collapsible/index.d.ts +1 -1
- package/dist/types/components/Collapsible/index.d.ts.map +1 -1
- package/dist/types/components/Cropper/Cropper.d.ts.map +1 -1
- package/dist/types/components/Dialog/index.d.ts +1 -1
- package/dist/types/components/Dialog/index.d.ts.map +1 -1
- package/dist/types/components/Glass/index.d.ts +1 -1
- package/dist/types/components/Glass/index.d.ts.map +1 -1
- package/dist/types/components/Input/index.d.ts +1 -1
- package/dist/types/components/Input/index.d.ts.map +1 -1
- package/dist/types/components/InputOTP/index.d.ts +1 -1
- package/dist/types/components/InputOTP/index.d.ts.map +1 -1
- package/dist/types/components/Label/Label.d.ts +1 -1
- package/dist/types/components/Label/Label.d.ts.map +1 -1
- package/dist/types/components/Marquee/Marquee.d.ts +1 -1
- package/dist/types/components/Marquee/Marquee.d.ts.map +1 -1
- package/dist/types/components/Masonry/Masonry.d.ts.map +1 -1
- package/dist/types/components/Popover/index.d.ts +1 -0
- package/dist/types/components/Popover/index.d.ts.map +1 -1
- package/dist/types/components/QrCode/QrCode.d.ts.map +1 -1
- package/dist/types/components/Radio/index.d.ts +1 -1
- package/dist/types/components/Radio/index.d.ts.map +1 -1
- package/dist/types/components/ScrollArea/index.d.ts +1 -1
- package/dist/types/components/ScrollArea/index.d.ts.map +1 -1
- package/dist/types/components/Select/index.d.ts +1 -1
- package/dist/types/components/Select/index.d.ts.map +1 -1
- package/dist/types/components/Sheet/index.d.ts +1 -1
- package/dist/types/components/Sheet/index.d.ts.map +1 -1
- package/dist/types/components/Skeleton/index.d.ts +1 -1
- package/dist/types/components/Skeleton/index.d.ts.map +1 -1
- package/dist/types/components/Slider/Slider.d.ts +1 -1
- package/dist/types/components/Slider/index.d.ts +1 -1
- package/dist/types/components/Slider/index.d.ts.map +1 -1
- package/dist/types/components/Stepper/Stepper.d.ts.map +1 -1
- package/dist/types/components/Switch/Switch.d.ts +1 -1
- package/dist/types/components/Switch/index.d.ts +1 -1
- package/dist/types/components/Switch/index.d.ts.map +1 -1
- package/dist/types/components/Tabs/index.d.ts +1 -1
- package/dist/types/components/Tabs/index.d.ts.map +1 -1
- package/dist/types/components/Textarea/index.d.ts +1 -1
- package/dist/types/components/Textarea/index.d.ts.map +1 -1
- package/dist/types/components/Toggle/Toggle.d.ts +1 -1
- package/dist/types/components/Toggle/index.d.ts +1 -1
- package/dist/types/components/Toggle/index.d.ts.map +1 -1
- package/dist/types/components/Tour/Tour.d.ts.map +1 -1
- package/dist/types/hooks/index.d.ts +3 -0
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +23 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/utils.d.ts +1 -1
- package/dist/types/lib/utils.d.ts.map +1 -1
- package/dist/types/packages/ui/src/components/badge.d.ts +3 -3
- package/dist/types/packages/ui/src/components/button.d.ts +2 -2
- package/dist/types/packages/ui/src/components/checkbox.d.ts +1 -1
- package/dist/types/packages/ui/src/components/combobox.d.ts +2 -2
- package/dist/types/packages/ui/src/components/combobox.d.ts.map +1 -1
- package/dist/types/packages/ui/src/components/input-otp.d.ts +1 -1
- package/dist/types/packages/ui/src/components/input.d.ts +1 -1
- package/dist/types/packages/ui/src/components/radio-group.d.ts +1 -1
- package/dist/types/packages/ui/src/components/select.d.ts +2 -2
- package/dist/types/packages/ui/src/components/select.d.ts.map +1 -1
- package/dist/types/packages/ui/src/components/switch.d.ts +1 -1
- package/dist/types/packages/ui/src/components/textarea.d.ts +1 -1
- package/dist/types/packages/ui/src/components/toggle.d.ts +1 -1
- package/dist/types/utils/parsers.d.ts +1 -1
- package/package.json +258 -258
- package/dist/cjs/_virtual/_commonjsHelpers.cjs.map +0 -1
- package/dist/cjs/_virtual/index.cjs.map +0 -1
- package/dist/cjs/_virtual/index2.cjs.map +0 -1
- package/dist/cjs/components/Accordion/Accordion.cjs.map +0 -1
- package/dist/cjs/components/Avatar/Avatar.cjs.map +0 -1
- package/dist/cjs/components/Badge/Badge.cjs.map +0 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +0 -1
- package/dist/cjs/components/Button/Button.cjs.map +0 -1
- package/dist/cjs/components/Button/ButtonGroup.cjs.map +0 -1
- package/dist/cjs/components/Calendar/Calendar.cjs.map +0 -1
- package/dist/cjs/components/Carousel/Carousel.cjs.map +0 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +0 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs.map +0 -1
- package/dist/cjs/components/Command/Command.cjs.map +0 -1
- package/dist/cjs/components/Command/index.cjs.map +0 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +0 -1
- package/dist/cjs/components/ContextMenu/index.cjs.map +0 -1
- package/dist/cjs/components/Cropper/Cropper.cjs.map +0 -1
- package/dist/cjs/components/Cropper/CropperTool.cjs.map +0 -1
- package/dist/cjs/components/Cropper/utils.cjs.map +0 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +0 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs.map +0 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs.map +0 -1
- package/dist/cjs/components/Dialog/Dialog.cjs.map +0 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +0 -1
- package/dist/cjs/components/DropdownMenu/index.cjs.map +0 -1
- package/dist/cjs/components/FloatLabel.cjs.map +0 -1
- package/dist/cjs/components/Glass/Glass.cjs.map +0 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +0 -1
- package/dist/cjs/components/Input/Input.cjs.map +0 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs.map +0 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs.map +0 -1
- package/dist/cjs/components/Marquee/Marquee.cjs.map +0 -1
- package/dist/cjs/components/Marquee/MarqueeWrapper.cjs.map +0 -1
- package/dist/cjs/components/Marquee/index.cjs.map +0 -1
- package/dist/cjs/components/Masonry/Masonry.cjs.map +0 -1
- package/dist/cjs/components/Masonry/MasonryWrapper.cjs.map +0 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +0 -1
- package/dist/cjs/components/Pagination/index.cjs.map +0 -1
- package/dist/cjs/components/Popover/Popover.cjs.map +0 -1
- package/dist/cjs/components/Popover/index.cjs.map +0 -1
- package/dist/cjs/components/QrCode/QrCode.cjs.map +0 -1
- package/dist/cjs/components/QrCode/index.cjs.map +0 -1
- package/dist/cjs/components/Radio/Radio.cjs.map +0 -1
- package/dist/cjs/components/Rate/Rate.cjs.map +0 -1
- package/dist/cjs/components/Resizable/Resizable.cjs.map +0 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +0 -1
- package/dist/cjs/components/Select/Select.cjs.map +0 -1
- package/dist/cjs/components/Separator/Separator.cjs.map +0 -1
- package/dist/cjs/components/Sheet/Sheet.cjs.map +0 -1
- package/dist/cjs/components/Sidebar/Sidebar.cjs.map +0 -1
- package/dist/cjs/components/Skeleton/Skeleton.cjs.map +0 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +0 -1
- package/dist/cjs/components/Stepper/Stepper.cjs.map +0 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +0 -1
- package/dist/cjs/components/Stepper/index.cjs.map +0 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +0 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +0 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +0 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +0 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +0 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs.map +0 -1
- package/dist/cjs/components/Table/data-table-toolbar.cjs.map +0 -1
- package/dist/cjs/components/Table/data-table-view-options.cjs.map +0 -1
- package/dist/cjs/components/Table/data-table.cjs.map +0 -1
- package/dist/cjs/components/Table/select-column.cjs.map +0 -1
- package/dist/cjs/components/Tabs/Tabs.cjs.map +0 -1
- package/dist/cjs/components/Tabs/classes.cjs.map +0 -1
- package/dist/cjs/components/Textarea/Textarea.cjs.map +0 -1
- package/dist/cjs/components/TimeGridView.cjs.map +0 -1
- package/dist/cjs/components/Toast/Toast.cjs.map +0 -1
- package/dist/cjs/components/Toggle/Toggle.cjs.map +0 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +0 -1
- package/dist/cjs/components/Tour/Tour.cjs.map +0 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs.map +0 -1
- package/dist/cjs/components/Tour/index.cjs.map +0 -1
- package/dist/cjs/components/TreeSelect/TreeSelect.cjs.map +0 -1
- package/dist/cjs/components/Upload/Upload.cjs.map +0 -1
- package/dist/cjs/components/WheelColumn.cjs.map +0 -1
- package/dist/cjs/config/data-table.cjs.map +0 -1
- package/dist/cjs/constants/common.cjs.map +0 -1
- package/dist/cjs/hooks/use-callback-ref.cjs.map +0 -1
- package/dist/cjs/hooks/use-data-table.cjs.map +0 -1
- package/dist/cjs/hooks/use-debounced-callback.cjs.map +0 -1
- package/dist/cjs/hooks/use-debounced-value.cjs.map +0 -1
- package/dist/cjs/hooks/use-event-listener.cjs.map +0 -1
- package/dist/cjs/hooks/use-intersection-observer.cjs.map +0 -1
- package/dist/cjs/hooks/use-isomorphic-layout-effect.cjs.map +0 -1
- package/dist/cjs/hooks/use-media-query.cjs.map +0 -1
- package/dist/cjs/hooks/use-on-click-outside.cjs.map +0 -1
- package/dist/cjs/hooks/use-script.cjs.map +0 -1
- package/dist/cjs/hooks/use-scroll-lock.cjs.map +0 -1
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/SplittingText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +0 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/accordion.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/button.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/collapsible.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/command.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/input.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/label.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/select.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/table.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/hooks/use-mobile.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/lib/compose-refs.cjs.map +0 -1
- package/dist/cjs/packages/ui/src/lib/utils.cjs.map +0 -1
- package/dist/cjs/utils/animations.cjs.map +0 -1
- package/dist/cjs/utils/css.cjs.map +0 -1
- package/dist/cjs/utils/data-table.cjs.map +0 -1
- package/dist/cjs/utils/datetime.cjs.map +0 -1
- package/dist/cjs/utils/parsers.cjs.map +0 -1
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/index.js.map +0 -1
- package/dist/esm/_virtual/index2.js.map +0 -1
- package/dist/esm/components/Accordion/Accordion.js.map +0 -1
- package/dist/esm/components/Avatar/Avatar.js.map +0 -1
- package/dist/esm/components/Badge/Badge.js.map +0 -1
- package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +0 -1
- package/dist/esm/components/Button/Button.js.map +0 -1
- package/dist/esm/components/Button/ButtonGroup.js.map +0 -1
- package/dist/esm/components/Calendar/Calendar.js.map +0 -1
- package/dist/esm/components/Carousel/Carousel.js.map +0 -1
- package/dist/esm/components/Checkbox/Checkbox.js.map +0 -1
- package/dist/esm/components/Collapsible/Collapsible.js.map +0 -1
- package/dist/esm/components/Command/Command.js.map +0 -1
- package/dist/esm/components/Command/index.js.map +0 -1
- package/dist/esm/components/ContextMenu/ContextMenu.js.map +0 -1
- package/dist/esm/components/ContextMenu/index.js.map +0 -1
- package/dist/esm/components/Cropper/Cropper.js.map +0 -1
- package/dist/esm/components/Cropper/CropperTool.js.map +0 -1
- package/dist/esm/components/Cropper/utils.js.map +0 -1
- package/dist/esm/components/DatePicker/DatePicker.js.map +0 -1
- package/dist/esm/components/DatePicker/RangePicker.js.map +0 -1
- package/dist/esm/components/DatePicker/TimePicker.js.map +0 -1
- package/dist/esm/components/Dialog/Dialog.js.map +0 -1
- package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +0 -1
- package/dist/esm/components/DropdownMenu/index.js.map +0 -1
- package/dist/esm/components/FloatLabel.js.map +0 -1
- package/dist/esm/components/Glass/Glass.js.map +0 -1
- package/dist/esm/components/ImageViewer/ImageViewer.js.map +0 -1
- package/dist/esm/components/Input/Input.js.map +0 -1
- package/dist/esm/components/InputOTP/InputOTP.js.map +0 -1
- package/dist/esm/components/Interactive/CursorFollow.js.map +0 -1
- package/dist/esm/components/Marquee/Marquee.js.map +0 -1
- package/dist/esm/components/Marquee/MarqueeWrapper.js.map +0 -1
- package/dist/esm/components/Marquee/index.js.map +0 -1
- package/dist/esm/components/Masonry/Masonry.js.map +0 -1
- package/dist/esm/components/Masonry/MasonryWrapper.js.map +0 -1
- package/dist/esm/components/Pagination/Pagination.js.map +0 -1
- package/dist/esm/components/Pagination/index.js.map +0 -1
- package/dist/esm/components/Popover/Popover.js.map +0 -1
- package/dist/esm/components/Popover/index.js.map +0 -1
- package/dist/esm/components/QrCode/QrCode.js.map +0 -1
- package/dist/esm/components/QrCode/index.js.map +0 -1
- package/dist/esm/components/Radio/Radio.js.map +0 -1
- package/dist/esm/components/Rate/Rate.js.map +0 -1
- package/dist/esm/components/Resizable/Resizable.js.map +0 -1
- package/dist/esm/components/ScrollArea/ScrollArea.js.map +0 -1
- package/dist/esm/components/Select/Select.js.map +0 -1
- package/dist/esm/components/Separator/Separator.js.map +0 -1
- package/dist/esm/components/Sheet/Sheet.js.map +0 -1
- package/dist/esm/components/Sidebar/Sidebar.js.map +0 -1
- package/dist/esm/components/Skeleton/Skeleton.js.map +0 -1
- package/dist/esm/components/Slider/Slider.js.map +0 -1
- package/dist/esm/components/Stepper/Stepper.js.map +0 -1
- package/dist/esm/components/Stepper/StepperWrapper.js.map +0 -1
- package/dist/esm/components/Stepper/index.js.map +0 -1
- package/dist/esm/components/Switch/Switch.js.map +0 -1
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +0 -1
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +0 -1
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +0 -1
- package/dist/esm/components/Table/data-table-column-header.js.map +0 -1
- package/dist/esm/components/Table/data-table-pagination.js.map +0 -1
- package/dist/esm/components/Table/data-table-toolbar.js.map +0 -1
- package/dist/esm/components/Table/data-table-view-options.js.map +0 -1
- package/dist/esm/components/Table/data-table.js.map +0 -1
- package/dist/esm/components/Table/select-column.js.map +0 -1
- package/dist/esm/components/Tabs/Tabs.js.map +0 -1
- package/dist/esm/components/Tabs/classes.js.map +0 -1
- package/dist/esm/components/Textarea/Textarea.js.map +0 -1
- package/dist/esm/components/TimeGridView.js.map +0 -1
- package/dist/esm/components/Toast/Toast.js.map +0 -1
- package/dist/esm/components/Toggle/Toggle.js.map +0 -1
- package/dist/esm/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/esm/components/Tour/Tour.js.map +0 -1
- package/dist/esm/components/Tour/TourWrapper.js.map +0 -1
- package/dist/esm/components/Tour/index.js.map +0 -1
- package/dist/esm/components/TreeSelect/TreeSelect.js.map +0 -1
- package/dist/esm/components/Upload/Upload.js.map +0 -1
- package/dist/esm/components/WheelColumn.js.map +0 -1
- package/dist/esm/config/data-table.js.map +0 -1
- package/dist/esm/constants/common.js.map +0 -1
- package/dist/esm/hooks/use-callback-ref.js.map +0 -1
- package/dist/esm/hooks/use-data-table.js.map +0 -1
- package/dist/esm/hooks/use-debounced-callback.js.map +0 -1
- package/dist/esm/hooks/use-debounced-value.js.map +0 -1
- package/dist/esm/hooks/use-event-listener.js.map +0 -1
- package/dist/esm/hooks/use-intersection-observer.js.map +0 -1
- package/dist/esm/hooks/use-isomorphic-layout-effect.js.map +0 -1
- package/dist/esm/hooks/use-media-query.js.map +0 -1
- package/dist/esm/hooks/use-on-click-outside.js.map +0 -1
- package/dist/esm/hooks/use-script.js.map +0 -1
- package/dist/esm/hooks/use-scroll-lock.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/TextAnimation/BlurText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/CircularText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/FlipWords.js.map +0 -1
- package/dist/esm/lib/TextAnimation/GradientText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/RollingText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/RotatingText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/SplittingText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +0 -1
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +0 -1
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +0 -1
- package/dist/esm/lib/TextAnimation/TypingText.js.map +0 -1
- package/dist/esm/lib/TextAnimation/WritingText.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.js.map +0 -1
- package/dist/esm/packages/ui/src/components/accordion.js.map +0 -1
- package/dist/esm/packages/ui/src/components/alert-dialog.js.map +0 -1
- package/dist/esm/packages/ui/src/components/avatar.js.map +0 -1
- package/dist/esm/packages/ui/src/components/badge.js.map +0 -1
- package/dist/esm/packages/ui/src/components/breadcrumb.js.map +0 -1
- package/dist/esm/packages/ui/src/components/button-group.js.map +0 -1
- package/dist/esm/packages/ui/src/components/button.js.map +0 -1
- package/dist/esm/packages/ui/src/components/calendar.js.map +0 -1
- package/dist/esm/packages/ui/src/components/checkbox.js.map +0 -1
- package/dist/esm/packages/ui/src/components/collapsible.js.map +0 -1
- package/dist/esm/packages/ui/src/components/combobox.js.map +0 -1
- package/dist/esm/packages/ui/src/components/command.js.map +0 -1
- package/dist/esm/packages/ui/src/components/context-menu.js.map +0 -1
- package/dist/esm/packages/ui/src/components/dialog.js.map +0 -1
- package/dist/esm/packages/ui/src/components/drawer.js.map +0 -1
- package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +0 -1
- package/dist/esm/packages/ui/src/components/input-otp.js.map +0 -1
- package/dist/esm/packages/ui/src/components/input.js.map +0 -1
- package/dist/esm/packages/ui/src/components/label.js.map +0 -1
- package/dist/esm/packages/ui/src/components/pagination.js.map +0 -1
- package/dist/esm/packages/ui/src/components/popover.js.map +0 -1
- package/dist/esm/packages/ui/src/components/radio-group.js.map +0 -1
- package/dist/esm/packages/ui/src/components/resizable.js.map +0 -1
- package/dist/esm/packages/ui/src/components/scroll-area.js.map +0 -1
- package/dist/esm/packages/ui/src/components/select.js.map +0 -1
- package/dist/esm/packages/ui/src/components/separator.js.map +0 -1
- package/dist/esm/packages/ui/src/components/sheet.js.map +0 -1
- package/dist/esm/packages/ui/src/components/sidebar.js.map +0 -1
- package/dist/esm/packages/ui/src/components/skeleton.js.map +0 -1
- package/dist/esm/packages/ui/src/components/switch.js.map +0 -1
- package/dist/esm/packages/ui/src/components/table.js.map +0 -1
- package/dist/esm/packages/ui/src/components/tabs.js.map +0 -1
- package/dist/esm/packages/ui/src/components/textarea.js.map +0 -1
- package/dist/esm/packages/ui/src/components/toggle.js.map +0 -1
- package/dist/esm/packages/ui/src/components/tooltip.js.map +0 -1
- package/dist/esm/packages/ui/src/components/tree-view.js.map +0 -1
- package/dist/esm/packages/ui/src/hooks/use-mobile.js.map +0 -1
- package/dist/esm/packages/ui/src/lib/compose-refs.js.map +0 -1
- package/dist/esm/packages/ui/src/lib/utils.js.map +0 -1
- package/dist/esm/utils/animations.js.map +0 -1
- package/dist/esm/utils/css.js.map +0 -1
- package/dist/esm/utils/data-table.js.map +0 -1
- package/dist/esm/utils/datetime.js.map +0 -1
- package/dist/esm/utils/parsers.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","sources":["../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { motion, useMotionValue, useSpring, useTransform } from \"motion/react\";\nimport NumberFlow from \"@number-flow/react\";\nimport type { BasicColor } from \"@/types/variables\";\nimport { Badge } from \"../Badge\";\n\ntype LabelAnimation = \"number-flow\" | \"spec\" | \"none\";\ntype LabelDisplay = false | \"hover\" | \"always\";\ntype SliderColor = BasicColor | \"muted\" | \"accent\";\ntype SliderSize = \"sm\" | \"md\" | \"lg\";\ntype LabelPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport type SliderProps = Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"color\" | \"defaultValue\" | \"value\" | \"min\" | \"max\"\n> & {\n color?: SliderColor;\n size?: SliderSize;\n showLabel?: LabelDisplay;\n labelArrow?: boolean;\n labelAnimation?: LabelAnimation;\n labelFormatter?: (value: number) => string;\n labelPosition?: LabelPosition;\n labelColor?: string;\n labelTextColor?: string;\n labelArrowColor?: string;\n sliderColor?: string;\n thumbBorderColor?: string;\n defaultValue?: number[];\n value?: number[];\n min?: number;\n max?: number;\n};\n\n// Color mapping configuration\nconst COLOR_CONFIG: Record<\n SliderColor,\n {\n range: string;\n thumb: string;\n labelBg: string;\n labelText: string;\n }\n> = {\n primary: {\n range: \"ds:bg-primary\",\n thumb: \"ds:border-primary/50\",\n labelBg: \"ds:bg-primary\",\n labelText: \"ds:text-primary-foreground\",\n },\n secondary: {\n range: \"ds:bg-secondary\",\n thumb: \"ds:border-secondary/50\",\n labelBg: \"ds:bg-secondary\",\n labelText: \"ds:text-secondary-foreground\",\n },\n success: {\n range: \"ds:bg-success\",\n thumb: \"ds:border-success/50\",\n labelBg: \"ds:bg-success\",\n labelText: \"ds:text-success-foreground\",\n },\n warning: {\n range: \"ds:bg-warning\",\n thumb: \"ds:border-warning/50\",\n labelBg: \"ds:bg-warning\",\n labelText: \"ds:text-warning-foreground\",\n },\n error: {\n range: \"ds:bg-error\",\n thumb: \"ds:border-error/50\",\n labelBg: \"ds:bg-error\",\n labelText: \"ds:text-error-foreground\",\n },\n glass: {\n range: \"ds:bg-white/30 backdrop-blur-sm\",\n thumb: \"ds:border-white/30 backdrop-blur-sm\",\n labelBg: \"ds:bg-white/15\",\n labelText: \"ds:text-foreground\",\n },\n muted: {\n range: \"ds:bg-muted-foreground\",\n thumb: \"ds:border-muted-foreground/50\",\n labelBg: \"ds:bg-muted\",\n labelText: \"ds:text-muted-foreground\",\n },\n accent: {\n range: \"ds:bg-accent\",\n thumb: \"ds:border-accent/50\",\n labelBg: \"ds:bg-accent\",\n labelText: \"ds:text-accent-foreground\",\n },\n};\n\n// Size configuration\nconst SIZE_CONFIG: Record<\n SliderSize,\n {\n track: string;\n thumb: string;\n }\n> = {\n sm: {\n track: \"ds:data-[orientation=horizontal]:h-1 ds:data-[orientation=vertical]:w-1\",\n thumb: \"ds:size-3\",\n },\n md: {\n track:\n \"ds:data-[orientation=horizontal]:h-1.5 ds:data-[orientation=vertical]:w-1.5\",\n thumb: \"ds:size-4\",\n },\n lg: {\n track: \"ds:data-[orientation=horizontal]:h-2 ds:data-[orientation=vertical]:w-2\",\n thumb: \"ds:size-5\",\n },\n};\n\n// Helper to get arrow direction based on orientation and position\nconst getArrowDirection = (\n orientation: \"horizontal\" | \"vertical\",\n position: LabelPosition\n): \"top\" | \"bottom\" | \"left\" | \"right\" => {\n if (orientation === \"horizontal\") {\n if (position === \"bottom\") return \"bottom\";\n if (position === \"left\") return \"left\";\n if (position === \"right\") return \"right\";\n return \"top\";\n }\n // vertical\n if (position === \"right\") return \"right\";\n if (position === \"top\") return \"top\";\n if (position === \"bottom\") return \"bottom\";\n return \"left\";\n};\n\n// Helper to get arrow color class\nconst getArrowColorClass = (\n color: SliderColor,\n direction: \"top\" | \"bottom\" | \"left\" | \"right\"\n): string => {\n // Generate full border class (e.g., \"border-t-primary\")\n const prefix =\n direction === \"top\"\n ? \"t\"\n : direction === \"bottom\"\n ? \"b\"\n : direction === \"left\"\n ? \"l\"\n : \"r\";\n const colorMap: Record<SliderColor, string> = {\n primary: `ds:border-${prefix}-primary`,\n secondary: `ds:border-${prefix}-secondary`,\n success: `ds:border-${prefix}-success`,\n warning: `ds:border-${prefix}-warning`,\n error: `ds:border-${prefix}-error`,\n glass: `ds:border-${prefix}-white/15`,\n muted: `ds:border-${prefix}-muted`,\n accent: `ds:border-${prefix}-accent`,\n };\n\n return colorMap[color];\n};\n\n// Helper to get label position classes\nconst getLabelPositionClasses = (\n orientation: \"horizontal\" | \"vertical\",\n position: LabelPosition\n): { badge: string; arrow: string } => {\n const positions: Record<string, { badge: string; arrow: string }> = {\n \"horizontal-top\": {\n badge: \"ds:left-1/2 ds:-translate-x-1/2 ds:bottom-full ds:-translate-y-1/2\",\n arrow:\n \"ds:top-full left-1/2 ds:-translate-x-1/2 ds:border-t-[6px] ds:border-l-[6px] ds:border-r-[6px] ds:border-b-0 ds:border-l-transparent ds:border-r-transparent\",\n },\n \"horizontal-bottom\": {\n badge: \"ds:left-1/2 ds:-translate-x-1/2 ds:top-full ds:translate-y-1/2\",\n arrow:\n \"ds:bottom-full left-1/2 ds:-translate-x-1/2 ds:border-b-[6px] ds:border-l-[6px] ds:border-r-[6px] ds:border-t-0 ds:border-l-transparent ds:border-r-transparent\",\n },\n \"horizontal-left\": {\n badge: \"ds:top-1/2 ds:-translate-y-1/2 ds:right-full ds:-translate-x-1/2\",\n arrow:\n \"ds:left-full ds:top-1/2 ds:-translate-y-1/2 ds:border-l-[6px] ds:border-t-[6px] ds:border-b-[6px] ds:border-r-0 ds:border-t-transparent ds:border-b-transparent\",\n },\n \"horizontal-right\": {\n badge: \"ds:top-1/2 ds:-translate-y-1/2 ds:left-full ds:translate-x-1/2\",\n arrow:\n \"ds:right-full ds:top-1/2 ds:-translate-y-1/2 ds:border-r-[6px] ds:border-t-[6px] ds:border-b-[6px] ds:border-l-0 ds:border-t-transparent ds:border-b-transparent\",\n },\n \"vertical-left\": {\n badge: \"ds:top-1/2 ds:-translate-y-1/2 ds:right-full ds:-translate-x-1/2\",\n arrow:\n \"ds:left-full ds:top-1/2 ds:-translate-y-1/2 ds:border-l-[6px] ds:border-t-[6px] ds:border-b-[6px] ds:border-r-0 ds:border-t-transparent ds:border-b-transparent\",\n },\n \"vertical-right\": {\n badge: \"ds:top-1/2 ds:-translate-y-1/2 ds:left-full ds:translate-x-1/2\",\n arrow:\n \"ds:right-full ds:top-1/2 ds:-translate-y-1/2 ds:border-r-[6px] ds:border-t-[6px] ds:border-b-[6px] ds:border-l-0 ds:border-t-transparent ds:border-b-transparent\",\n },\n \"vertical-top\": {\n badge: \"ds:left-1/2 ds:-translate-x-1/2 ds:bottom-full ds:-translate-y-1/2\",\n arrow:\n \"ds:top-full ds:left-1/2 ds:-translate-x-1/2 ds:border-t-[6px] ds:border-l-[6px] ds:border-r-[6px] ds:border-b-0 ds:border-l-transparent ds:border-r-transparent\",\n },\n \"vertical-bottom\": {\n badge: \"ds:left-1/2 ds:-translate-x-1/2 ds:top-full ds:translate-y-1/2\",\n arrow:\n \"ds:bottom-full ds:left-1/2 ds:-translate-x-1/2 ds:border-b-[6px] ds:border-l-[6px] ds:border-r-[6px] ds:border-t-0 ds:border-l-transparent ds:border-r-transparent\",\n },\n };\n\n return positions[`${orientation}-${position}`];\n};\n\n// Helper to get spec label position classes\nconst getSpecLabelPositionClass = (\n orientation: \"horizontal\" | \"vertical\",\n position: LabelPosition\n): string => {\n const positions: Record<string, string> = {\n \"horizontal-top\":\n \"ds:data-[orientation=horizontal]:bottom-full ds:data-[orientation=horizontal]:left-1/2 ds:data-[orientation=horizontal]:-translate-x-1/2 ds:data-[orientation=horizontal]:-translate-y-1/2\",\n \"horizontal-bottom\":\n \"ds:data-[orientation=horizontal]:top-full ds:data-[orientation=horizontal]:left-1/2 ds:data-[orientation=horizontal]:-translate-x-1/2 ds:data-[orientation=horizontal]:translate-y-1/2\",\n \"horizontal-left\":\n \"ds:data-[orientation=horizontal]:top-1/2 ds:data-[orientation=horizontal]:right-full ds:data-[orientation=horizontal]:-translate-y-1/2 ds:data-[orientation=horizontal]:-translate-x-1/2\",\n \"horizontal-right\":\n \"ds:data-[orientation=horizontal]:top-1/2 ds:data-[orientation=horizontal]:left-full ds:data-[orientation=horizontal]:-translate-y-1/2 ds:data-[orientation=horizontal]:translate-x-1/2\",\n \"vertical-left\":\n \"ds:data-[orientation=vertical]:right-full ds:data-[orientation=vertical]:top-1/2 ds:data-[orientation=vertical]:-translate-x-1/2 ds:data-[orientation=vertical]:-translate-y-1/2\",\n \"vertical-right\":\n \"ds:data-[orientation=vertical]:left-full ds:data-[orientation=vertical]:top-1/2 ds:data-[orientation=vertical]:translate-x-1/2 ds:data-[orientation=vertical]:-translate-y-1/2\",\n \"vertical-top\":\n \"ds:data-[orientation=vertical]:bottom-full ds:data-[orientation=vertical]:left-1/2 ds:data-[orientation=vertical]:-translate-x-1/2 ds:data-[orientation=vertical]:-translate-y-1/2\",\n \"vertical-bottom\":\n \"ds:data-[orientation=vertical]:top-full ds:data-[orientation=vertical]:left-1/2 ds:data-[orientation=vertical]:-translate-x-1/2 ds:data-[orientation=vertical]:translate-y-1/2\",\n };\n\n return positions[`${orientation}-${position}`];\n};\n\nconst Slider = React.forwardRef<HTMLSpanElement, SliderProps>(\n (\n {\n className,\n color = \"primary\",\n size = \"md\",\n showLabel = false,\n labelArrow = false,\n labelAnimation = \"none\",\n labelFormatter = (value) => `${value}`,\n labelPosition = \"top\",\n labelColor,\n labelTextColor,\n labelArrowColor,\n sliderColor,\n thumbBorderColor,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n },\n ref\n ) => {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n );\n\n // State for hover detection\n const [isHovered, setIsHovered] = React.useState(false);\n React.useEffect(() => {\n if (value !== undefined && !Array.isArray(value)) {\n console.error(\n \"[Slider] value prop must be an array of numbers, e.g., [50] or [25, 75]\"\n );\n }\n if (defaultValue !== undefined && !Array.isArray(defaultValue)) {\n console.error(\n \"[Slider] defaultValue prop must be an array of numbers, e.g., [50] or [25, 75]\"\n );\n }\n }, [value, defaultValue]);\n\n const orientation = props.orientation || \"horizontal\";\n\n // For spec animation - track thumb position and velocity\n const thumbPosition = useMotionValue(0);\n const thumbVelocity = useMotionValue(0);\n const prevThumbPosition = React.useRef(0);\n\n // Spring physics for label following effect - more dramatic\n const springConfig = { stiffness: 150, damping: 15, mass: 1 };\n const labelOffset = useSpring(0, springConfig);\n const labelRotate = useSpring(0, springConfig);\n\n // Track value changes to calculate velocity\n React.useEffect(() => {\n if (labelAnimation === \"spec\" && _values.length > 0) {\n const currentPos = _values[0];\n const velocity = currentPos - prevThumbPosition.current;\n\n // Cap velocity to prevent large jumps (e.g., on click or initial load)\n const maxVelocity = 5; // Maximum velocity threshold\n const cappedVelocity = Math.max(\n -maxVelocity,\n Math.min(maxVelocity, velocity)\n );\n\n // Update velocity and position\n thumbVelocity.set(cappedVelocity);\n thumbPosition.set(currentPos);\n\n // Calculate offset and rotation based on capped velocity\n // Negative velocity (moving left) -> positive offset (label lags behind to the right)\n const offsetAmount = -cappedVelocity * 12;\n const rotateAmount = -cappedVelocity * 20;\n\n labelOffset.set(offsetAmount);\n labelRotate.set(rotateAmount);\n\n // Reset to center when stopped\n setTimeout(() => {\n labelOffset.set(0);\n labelRotate.set(0);\n }, 100);\n\n prevThumbPosition.current = currentPos;\n }\n }, [\n _values,\n labelAnimation,\n thumbVelocity,\n thumbPosition,\n labelOffset,\n labelRotate,\n ]);\n\n // Memoized computed values\n const sliderColorClass = useMemo(() => {\n if (sliderColor || thumbBorderColor) {\n return {\n range: sliderColor || \"ds:bg-primary\",\n thumb: thumbBorderColor || \"ds:border-primary/50\",\n };\n }\n const config = COLOR_CONFIG[color];\n return {\n range: config.range,\n thumb: config.thumb,\n };\n }, [color, sliderColor, thumbBorderColor]);\n\n const sliderSizeClass = useMemo(() => SIZE_CONFIG[size], [size]);\n\n const labelColorClass = useMemo(() => {\n if (labelColor || labelTextColor) {\n return cn(labelColor, labelTextColor);\n }\n\n const config = COLOR_CONFIG[color];\n const direction = getArrowDirection(orientation, labelPosition);\n const arrowColor = getArrowColorClass(color, direction);\n\n if (color === \"glass\") {\n return `${config.labelBg} ${config.labelText} ds:backdrop-blur-sm ds:shadow-lg ds:[&>div.arrow]:${arrowColor}`;\n }\n\n return `${config.labelBg} ${config.labelText} ds:[&>div.arrow]:${arrowColor}`;\n }, [color, labelPosition, orientation, labelColor, labelTextColor]);\n\n const arrowColorClass = useMemo(() => {\n if (labelArrowColor) return labelArrowColor;\n const direction = getArrowDirection(orientation, labelPosition);\n return getArrowColorClass(color, direction);\n }, [color, labelPosition, orientation, labelArrowColor]);\n\n const labelVisibilityClass = useMemo(() => {\n if (showLabel === \"hover\") return \"ds:scale-0 ds:group-hover:scale-100\";\n if (showLabel === \"always\") return \"ds:scale-100\";\n return \"ds:hidden\";\n }, [showLabel]);\n\n const labelPositionClass = useMemo(\n () => getLabelPositionClasses(orientation, labelPosition),\n [labelPosition, orientation]\n );\n\n const labelPositionClassSpec = useMemo(\n () => getSpecLabelPositionClass(orientation, labelPosition),\n [labelPosition, orientation]\n );\n\n // Render label based on animation type\n const renderLabel = React.useCallback(\n (index: number) => {\n if (labelAnimation === \"spec\") {\n return (\n <motion.div\n className={cn(\n \"ds:pointer-events-none ds:absolute ds:z-50 ds:flex ds:flex-col ds:items-center ds:justify-center ds:rounded-md ds:px-3 ds:py-1.5 ds:text-xs ds:shadow-xl\",\n labelPositionClassSpec,\n labelColor && labelColor,\n labelTextColor && labelTextColor,\n !labelColor && !labelTextColor && labelColorClass\n )}\n data-orientation={orientation}\n initial={\n showLabel === \"always\"\n ? { opacity: 1, y: -5, scale: 1 }\n : { opacity: 0, y: 20, scale: 0 }\n }\n animate={\n (isHovered && showLabel === \"hover\") || showLabel === \"always\"\n ? {\n opacity: 1,\n y: -5,\n scale: 1,\n }\n : {\n opacity: 0,\n y: 20,\n scale: 0,\n }\n }\n transition={{\n type: \"tween\",\n duration: 0.2,\n ease: \"easeOut\",\n }}\n style={{\n x: labelOffset,\n rotate: labelRotate,\n whiteSpace: \"nowrap\",\n }}\n >\n <div className=\"ds:relative ds:z-1\">\n <NumberFlow\n value={_values[index]}\n format={{ notation: \"standard\" }}\n isolate\n />\n </div>\n {labelArrow && (\n <div\n className={cn(\n \"ds:arrow ds:absolute ds:border-transparent\",\n labelPositionClass.arrow,\n arrowColorClass\n )}\n />\n )}\n </motion.div>\n );\n }\n\n // Standard or number-flow animation\n return (\n <Badge\n size=\"lg\"\n color={\n labelColor || labelTextColor\n ? \"custom\"\n : color === \"glass\"\n ? \"custom\"\n : color === \"muted\"\n ? \"muted\"\n : color === \"accent\"\n ? \"accent\"\n : color\n }\n variant=\"solid\"\n className={cn(\n \"ds:transition-transform ds:absolute ds:px-3 ds:rounded-md\",\n labelPositionClass.badge,\n labelVisibilityClass,\n labelColor && labelColor,\n labelTextColor && labelTextColor,\n !labelColor &&\n !labelTextColor &&\n color === \"glass\" &&\n \"ds:bg-white/15 ds:text-foreground ds:backdrop-blur-sm ds:shadow-lg ds:[&>div.arrow]:border-t-white/15\"\n )}\n >\n {labelAnimation === \"number-flow\" ? (\n <NumberFlow\n value={_values[index]}\n format={{ notation: \"standard\" }}\n isolate\n />\n ) : (\n <span>{labelFormatter(_values[index])}</span>\n )}\n {labelArrow && (\n <div\n className={cn(\n \"ds:arrow ds:absolute ds:border-transparent\",\n labelPositionClass.arrow,\n arrowColorClass\n )}\n />\n )}\n </Badge>\n );\n },\n [\n labelAnimation,\n labelPositionClassSpec,\n labelColor,\n labelTextColor,\n labelColorClass,\n orientation,\n showLabel,\n labelOffset,\n labelRotate,\n labelFormatter,\n _values,\n color,\n labelPositionClass,\n labelVisibilityClass,\n labelArrow,\n arrowColorClass,\n isHovered,\n ]\n );\n\n // Render without label - use custom slider with color\n if (!showLabel) {\n return (\n <SliderPrimitive.Root\n ref={ref}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"ds:relative ds:flex ds:w-full ds:touch-none ds:items-center ds:select-none ds:data-disabled:opacity-50 ds:data-[orientation=vertical]:h-full ds:data-[orientation=vertical]:min-h-44 ds:data-[orientation=vertical]:w-auto ds:data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"ds:bg-muted ds:relative ds:grow ds:overflow-hidden ds:rounded-full ds:data-[orientation=horizontal]:w-full ds:data-[orientation=vertical]:h-full\",\n sliderSizeClass.track\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"ds:absolute ds:data-[orientation=horizontal]:h-full ds:data-[orientation=vertical]:w-full\",\n sliderColorClass.range\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n key={index}\n data-slot=\"slider-thumb\"\n className={cn(\n \"ds:block ds:shrink-0 ds:rounded-full ds:border ds:bg-white ds:shadow-sm ds:transition-[color,box-shadow] ds:hover:ring-4 ds:focus-visible:ring-4 ds:focus-visible:outline-hidden ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:ring-ring/50\",\n sliderColorClass.thumb,\n sliderSizeClass.thumb\n )}\n />\n ))}\n </SliderPrimitive.Root>\n );\n }\n\n // Render with label (standard, number-flow, or spec animation)\n return (\n <SliderPrimitive.Root\n ref={ref}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"ds:relative ds:flex ds:w-full ds:touch-none ds:items-center ds:select-none ds:data-disabled:opacity-50 ds:data-[orientation=vertical]:h-full ds:data-[orientation=vertical]:min-h-44 ds:data-[orientation=vertical]:w-auto ds:data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"ds:bg-muted ds:relative ds:grow ds:overflow-hidden ds:rounded-full ds:data-[orientation=horizontal]:w-full ds:data-[orientation=vertical]:h-full\",\n sliderSizeClass.track\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"ds:absolute ds:data-[orientation=horizontal]:h-full ds:data-[orientation=vertical]:w-full\",\n sliderColorClass.range\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n key={index}\n data-slot=\"slider-thumb\"\n className={cn(\n \"ds:group ds:block ds:shrink-0 ds:rounded-full ds:border ds:bg-white ds:shadow-sm ds:transition-[color,box-shadow] ds:hover:ring-4 ds:focus-visible:ring-4 ds:focus-visible:outline-hidden ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:ring-ring/50\",\n sliderColorClass.thumb,\n sliderSizeClass.thumb\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {renderLabel(index)}\n </SliderPrimitive.Thumb>\n ))}\n </SliderPrimitive.Root>\n );\n }\n);\n\nSlider.displayName = \"Slider\";\n\nexport default Slider;\n"],"names":["COLOR_CONFIG","SIZE_CONFIG","getArrowDirection","orientation","position","getArrowColorClass","color","direction","prefix","getLabelPositionClasses","getSpecLabelPositionClass","Slider","React","className","size","showLabel","labelArrow","labelAnimation","labelFormatter","value","labelPosition","labelColor","labelTextColor","labelArrowColor","sliderColor","thumbBorderColor","defaultValue","min","max","props","ref","_values","isHovered","setIsHovered","thumbPosition","useMotionValue","thumbVelocity","prevThumbPosition","springConfig","labelOffset","useSpring","labelRotate","currentPos","velocity","maxVelocity","cappedVelocity","offsetAmount","rotateAmount","sliderColorClass","useMemo","config","sliderSizeClass","labelColorClass","cn","arrowColor","arrowColorClass","labelVisibilityClass","labelPositionClass","labelPositionClassSpec","renderLabel","index","jsxs","motion","jsx","NumberFlow","Badge","SliderPrimitive","_"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper.js","sources":["../../../../src/components/Stepper/Stepper.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nconst ROOT_NAME = \"Stepper\";\nconst LIST_NAME = \"StepperList\";\nconst ITEM_NAME = \"StepperItem\";\nconst TRIGGER_NAME = \"StepperTrigger\";\nconst INDICATOR_NAME = \"StepperIndicator\";\nconst SEPARATOR_NAME = \"StepperSeparator\";\nconst TITLE_NAME = \"StepperTitle\";\nconst DESCRIPTION_NAME = \"StepperDescription\";\nconst CONTENT_NAME = \"StepperContent\";\nconst PREV_NAME = \"StepperPrev\";\nconst NEXT_NAME = \"StepperNext\";\n\nconst ENTRY_FOCUS = \"stepperFocusGroup.onEntryFocus\";\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\nconst ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\n\nconst stepperColorClasses: Record<\n StepperColor,\n {\n indicator: {\n active: string;\n completed: string;\n inactive: string;\n };\n separator: {\n active: string;\n completed: string;\n inactive: string;\n };\n }\n> = {\n primary: {\n indicator: {\n active:\n \"ds:border-primary ds:bg-primary ds:text-primary-foreground ds:data-[variant=dot]:bg-primary/30 ds:data-[variant=dot]:border-primary/0\",\n completed:\n \"ds:border-primary ds:bg-primary ds:text-primary-foreground ds:data-[variant=dot]:bg-primary/30 ds:data-[variant=dot]:border-primary/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-primary\",\n completed: \"ds:bg-primary\",\n inactive: \"ds:bg-border\",\n },\n },\n secondary: {\n indicator: {\n active:\n \"ds:border-secondary ds:bg-secondary ds:text-secondary-foreground ds:data-[variant=dot]:bg-secondary/30 ds:data-[variant=dot]:border-secondary/0\",\n completed:\n \"ds:border-secondary ds:bg-secondary ds:text-secondary-foreground ds:data-[variant=dot]:bg-secondary/30 ds:data-[variant=dot]:border-secondary/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-secondary\",\n completed: \"ds:bg-secondary\",\n inactive: \"ds:bg-border\",\n },\n },\n accent: {\n indicator: {\n active:\n \"ds:border-accent ds:bg-accent ds:text-accent-foreground ds:data-[variant=dot]:bg-accent/30 ds:data-[variant=dot]:border-accent/0\",\n completed:\n \"ds:border-accent ds:bg-accent ds:text-accent-foreground ds:data-[variant=dot]:bg-accent/30 ds:data-[variant=dot]:border-accent/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-accent\",\n completed: \"ds:bg-accent\",\n inactive: \"ds:bg-border\",\n },\n },\n destructive: {\n indicator: {\n active:\n \"ds:border-destructive ds:bg-destructive ds:text-destructive-foreground ds:data-[variant=dot]:bg-destructive/30 ds:data-[variant=dot]:border-destructive/0\",\n completed:\n \"ds:border-destructive ds:bg-destructive ds:text-destructive-foreground ds:data-[variant=dot]:bg-destructive/30 ds:data-[variant=dot]:border-destructive/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-destructive\",\n completed: \"ds:bg-destructive\",\n inactive: \"ds:bg-border\",\n },\n },\n muted: {\n indicator: {\n active:\n \"ds:border-muted ds:bg-muted ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n completed:\n \"ds:border-muted ds:bg-muted ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-muted\",\n completed: \"ds:bg-muted\",\n inactive: \"ds:bg-border\",\n },\n },\n success: {\n indicator: {\n active:\n \"ds:border-success ds:bg-success ds:text-success-foreground ds:data-[variant=dot]:bg-success/30 ds:data-[variant=dot]:border-success/0\",\n completed:\n \"ds:border-success ds:bg-success ds:text-success-foreground ds:data-[variant=dot]:bg-success/30 ds:data-[variant=dot]:border-success/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-success\",\n completed: \"ds:bg-success\",\n inactive: \"ds:bg-border\",\n },\n },\n error: {\n indicator: {\n active:\n \"ds:border-error ds:bg-error ds:text-error-foreground ds:data-[variant=dot]:bg-error/30 ds:data-[variant=dot]:border-error/0\",\n completed:\n \"ds:border-error ds:bg-error ds:text-error-foreground ds:data-[variant=dot]:bg-error/30 ds:data-[variant=dot]:border-error/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-error\",\n completed: \"ds:bg-error\",\n inactive: \"ds:bg-border\",\n },\n },\n warning: {\n indicator: {\n active:\n \"ds:border-warning ds:bg-warning ds:text-warning-foreground ds:data-[variant=dot]:bg-warning/30 ds:data-[variant=dot]:border-warning/0\",\n completed:\n \"ds:border-warning ds:bg-warning ds:text-warning-foreground ds:data-[variant=dot]:bg-warning/30 ds:data-[variant=dot]:border-warning/0\",\n inactive:\n \"ds:border-muted ds:bg-background ds:text-muted-foreground ds:data-[variant=dot]:bg-muted/30 ds:data-[variant=dot]:border-muted/0\",\n },\n separator: {\n active: \"ds:bg-warning\",\n completed: \"ds:bg-warning\",\n inactive: \"ds:bg-border\",\n },\n },\n};\n\nfunction getIndicatorColorClass(\n color: StepperColor | undefined,\n customColor: string | undefined,\n dataState: DataState\n): string {\n if (customColor) {\n return \"\";\n }\n\n if (!color) {\n // Default primary color\n return stepperColorClasses.primary.indicator[dataState];\n }\n\n return stepperColorClasses[color].indicator[dataState];\n}\n\nfunction getSeparatorColorClass(\n color: StepperColor | undefined,\n customColor: string | undefined,\n dataState: DataState\n): string {\n if (customColor) {\n return \"\";\n }\n\n if (!color) {\n // Default primary color\n return stepperColorClasses.primary.separator[dataState];\n }\n\n return stepperColorClasses[color].separator[dataState];\n}\n\nfunction getCustomColorStyle(\n customColor: string | undefined,\n dataState: DataState,\n isIndicator: boolean\n): React.CSSProperties | undefined {\n if (!customColor) return undefined;\n\n if (isIndicator) {\n if (dataState === \"active\" || dataState === \"completed\") {\n return {\n borderColor: customColor,\n backgroundColor: customColor,\n color: \"white\",\n };\n }\n return {\n borderColor: \"hsl(var(--muted))\",\n backgroundColor: \"hsl(var(--background))\",\n color: \"hsl(var(--muted-foreground))\",\n };\n } else {\n // separator\n if (dataState === \"active\" || dataState === \"completed\") {\n return {\n backgroundColor: customColor,\n };\n }\n return {\n backgroundColor: \"hsl(var(--border))\",\n };\n }\n}\n\ntype Direction = \"ltr\" | \"rtl\";\ntype Orientation = \"horizontal\" | \"vertical\";\ntype NavigationDirection = \"next\" | \"prev\";\ntype ActivationMode = \"automatic\" | \"manual\";\ntype DataState = \"inactive\" | \"active\" | \"completed\";\ntype StepperColor =\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\ntype StepperVariant = \"normal\" | \"dot\";\ntype LabelPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\ninterface DivProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\ninterface ButtonProps extends React.ComponentProps<\"button\"> {\n asChild?: boolean;\n}\n\ntype ListElement = React.ComponentRef<typeof StepperList>;\ntype TriggerElement = React.ComponentRef<typeof StepperTrigger>;\n\nfunction getId(\n id: string,\n variant: \"trigger\" | \"content\" | \"title\" | \"description\",\n value: string\n) {\n return `${id}-${variant}-${value}`;\n}\n\ntype FocusIntent = \"first\" | \"last\" | \"prev\" | \"next\";\n\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\",\n};\n\nfunction getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\"\n ? \"ArrowRight\"\n : key === \"ArrowRight\"\n ? \"ArrowLeft\"\n : key;\n}\n\nfunction getFocusIntent(\n event: React.KeyboardEvent<TriggerElement>,\n dir?: Direction,\n orientation?: Orientation\n) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key))\n return undefined;\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key))\n return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nfunction focusFirst(\n candidates: React.RefObject<TriggerElement | null>[],\n preventScroll = false\n) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidateRef of candidates) {\n const candidate = candidateRef.current;\n if (!candidate) continue;\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map<T>(\n (_, index) => array[(startIndex + index) % array.length] as T\n );\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window === \"undefined\" ? React.useEffect : React.useLayoutEffect;\n\nfunction useAsRef<T>(props: T) {\n const ref = React.useRef<T>(props);\n\n useIsomorphicLayoutEffect(() => {\n ref.current = props;\n });\n\n return ref;\n}\n\nfunction useLazyRef<T>(fn: () => T) {\n const ref = React.useRef<T | null>(null);\n\n if (ref.current === null) {\n ref.current = fn();\n }\n\n return ref as React.RefObject<T>;\n}\n\nfunction getDataState(\n value: string | undefined,\n itemValue: string,\n stepState: StepState | undefined,\n steps: Map<string, StepState>,\n variant: \"item\" | \"separator\" = \"item\"\n): DataState {\n const stepKeys = Array.from(steps.keys());\n const currentIndex = stepKeys.indexOf(itemValue);\n\n if (stepState?.completed) return \"completed\";\n\n if (value === itemValue) {\n return variant === \"separator\" ? \"inactive\" : \"active\";\n }\n\n if (value) {\n const activeIndex = stepKeys.indexOf(value);\n\n if (activeIndex > currentIndex) return \"completed\";\n }\n\n return \"inactive\";\n}\n\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\nfunction useDirection(dirProp?: Direction): Direction {\n const contextDir = React.useContext(DirectionContext);\n return dirProp ?? contextDir ?? \"ltr\";\n}\n\ninterface StepState {\n value: string;\n completed: boolean;\n disabled: boolean;\n}\n\ninterface StoreState {\n steps: Map<string, StepState>;\n value: string;\n}\n\ninterface Store {\n subscribe: (callback: () => void) => () => void;\n getState: () => StoreState;\n setState: <K extends keyof StoreState>(key: K, value: StoreState[K]) => void;\n setStateWithValidation: (\n value: string,\n direction: NavigationDirection\n ) => Promise<boolean>;\n hasValidation: () => boolean;\n notify: () => void;\n addStep: (value: string, completed: boolean, disabled: boolean) => void;\n removeStep: (value: string) => void;\n setStep: (value: string, completed: boolean, disabled: boolean) => void;\n}\n\nconst StoreContext = React.createContext<Store | null>(null);\n\nfunction useStoreContext(consumerName: string) {\n const context = React.useContext(StoreContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\nfunction useStore<T>(selector: (state: StoreState) => T): T {\n const store = useStoreContext(\"useStore\");\n\n const getSnapshot = React.useCallback(\n () => selector(store.getState()),\n [store, selector]\n );\n\n return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\ninterface ItemData {\n id: string;\n ref: React.RefObject<TriggerElement | null>;\n value: string;\n active: boolean;\n disabled: boolean;\n}\n\ninterface StepperContextValue {\n id: string;\n dir: Direction;\n orientation: Orientation;\n activationMode: ActivationMode;\n disabled: boolean;\n nonInteractive: boolean;\n loop: boolean;\n color?: StepperColor;\n customColor?: string;\n variant?: StepperVariant;\n labelPosition?: LabelPosition;\n}\n\nconst StepperContext = React.createContext<StepperContextValue | null>(null);\n\nfunction useStepperContext(consumerName: string) {\n const context = React.useContext(StepperContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface StepperRootProps extends DivProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n onValueComplete?: (value: string, completed: boolean) => void;\n onValueAdd?: (value: string) => void;\n onValueRemove?: (value: string) => void;\n onValidate?: (\n value: string,\n direction: NavigationDirection\n ) => boolean | Promise<boolean>;\n activationMode?: ActivationMode;\n dir?: Direction;\n orientation?: Orientation;\n disabled?: boolean;\n loop?: boolean;\n nonInteractive?: boolean;\n color?: StepperColor;\n customColor?: string;\n variant?: StepperVariant;\n labelPosition?: LabelPosition;\n}\n\nfunction StepperRoot(props: StepperRootProps) {\n const {\n value,\n defaultValue,\n onValueChange,\n onValueComplete,\n onValueAdd,\n onValueRemove,\n onValidate,\n id: idProp,\n dir: dirProp,\n orientation = \"horizontal\",\n activationMode = \"automatic\",\n asChild,\n disabled = false,\n nonInteractive = false,\n loop = false,\n color,\n customColor,\n variant = \"normal\",\n labelPosition = \"right\",\n className,\n ...rootProps\n } = props;\n\n const listenersRef = useLazyRef(() => new Set<() => void>());\n const stateRef = useLazyRef<StoreState>(() => ({\n steps: new Map(),\n value: value ?? defaultValue ?? \"\",\n }));\n const propsRef = useAsRef({\n onValueChange,\n onValueComplete,\n onValueAdd,\n onValueRemove,\n onValidate,\n });\n\n const store: Store = React.useMemo(() => {\n return {\n subscribe: (cb) => {\n listenersRef.current.add(cb);\n return () => listenersRef.current.delete(cb);\n },\n getState: () => stateRef.current,\n setState: (key, value) => {\n if (Object.is(stateRef.current[key], value)) return;\n\n if (key === \"value\" && typeof value === \"string\") {\n stateRef.current.value = value;\n propsRef.current.onValueChange?.(value);\n } else {\n stateRef.current[key] = value;\n }\n\n store.notify();\n },\n setStateWithValidation: async (value, direction) => {\n if (!propsRef.current.onValidate) {\n store.setState(\"value\", value);\n return true;\n }\n\n try {\n const isValid = await propsRef.current.onValidate(value, direction);\n if (isValid) {\n store.setState(\"value\", value);\n }\n return isValid;\n } catch {\n return false;\n }\n },\n hasValidation: () => !!propsRef.current.onValidate,\n addStep: (value, completed, disabled) => {\n const newStep: StepState = { value, completed, disabled };\n stateRef.current.steps.set(value, newStep);\n propsRef.current.onValueAdd?.(value);\n store.notify();\n },\n removeStep: (value) => {\n stateRef.current.steps.delete(value);\n propsRef.current.onValueRemove?.(value);\n store.notify();\n },\n setStep: (value, completed, disabled) => {\n const step = stateRef.current.steps.get(value);\n if (step) {\n const updatedStep: StepState = { ...step, completed, disabled };\n stateRef.current.steps.set(value, updatedStep);\n\n if (completed !== step.completed) {\n propsRef.current.onValueComplete?.(value, completed);\n }\n\n store.notify();\n }\n },\n notify: () => {\n for (const cb of listenersRef.current) {\n cb();\n }\n },\n };\n }, [listenersRef, stateRef, propsRef]);\n\n useIsomorphicLayoutEffect(() => {\n if (value !== undefined) {\n store.setState(\"value\", value);\n }\n }, [value, store]);\n\n const dir = useDirection(dirProp);\n\n const id = React.useId();\n\n const rootId = idProp ?? id;\n\n const contextValue = React.useMemo<StepperContextValue>(\n () => ({\n id: rootId,\n dir,\n orientation,\n activationMode,\n disabled,\n nonInteractive,\n loop,\n color,\n customColor,\n variant,\n labelPosition,\n }),\n [\n rootId,\n dir,\n orientation,\n activationMode,\n disabled,\n nonInteractive,\n loop,\n color,\n customColor,\n variant,\n labelPosition,\n ]\n );\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <StoreContext.Provider value={store}>\n <StepperContext.Provider value={contextValue}>\n <RootPrimitive\n id={rootId}\n data-disabled={disabled ? \"\" : undefined}\n data-orientation={orientation}\n data-slot=\"stepper\"\n dir={dir}\n {...rootProps}\n className={cn(\n \"ds:flex ds:gap-6\",\n orientation === \"horizontal\" ? \"ds:w-full ds:flex-col\" : \"ds:flex-row\",\n className\n )}\n />\n </StepperContext.Provider>\n </StoreContext.Provider>\n );\n}\n\ninterface FocusContextValue {\n tabStopId: string | null;\n onItemFocus: (tabStopId: string) => void;\n onItemShiftTab: () => void;\n onFocusableItemAdd: () => void;\n onFocusableItemRemove: () => void;\n onItemRegister: (item: ItemData) => void;\n onItemUnregister: (id: string) => void;\n getItems: () => ItemData[];\n}\n\nconst FocusContext = React.createContext<FocusContextValue | null>(null);\n\nfunction useFocusContext(consumerName: string) {\n const context = React.useContext(FocusContext);\n if (!context) {\n throw new Error(\n `\\`${consumerName}\\` must be used within \\`FocusProvider\\``\n );\n }\n return context;\n}\n\ninterface StepperListProps extends DivProps {\n asChild?: boolean;\n}\n\nfunction StepperList(props: StepperListProps) {\n const { className, children, asChild, ref, ...listProps } = props;\n\n const context = useStepperContext(LIST_NAME);\n const orientation = context.orientation;\n const currentValue = useStore((state) => state.value);\n\n const [tabStopId, setTabStopId] = React.useState<string | null>(null);\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const [focusableItemCount, setFocusableItemCount] = React.useState(0);\n const isClickFocusRef = React.useRef(false);\n const itemsRef = React.useRef<Map<string, ItemData>>(new Map());\n const listRef = React.useRef<ListElement>(null);\n const composedRef = useComposedRefs(ref, listRef);\n\n const onItemFocus = React.useCallback((tabStopId: string) => {\n setTabStopId(tabStopId);\n }, []);\n\n const onItemShiftTab = React.useCallback(() => {\n setIsTabbingBackOut(true);\n }, []);\n\n const onFocusableItemAdd = React.useCallback(() => {\n setFocusableItemCount((prevCount) => prevCount + 1);\n }, []);\n\n const onFocusableItemRemove = React.useCallback(() => {\n setFocusableItemCount((prevCount) => prevCount - 1);\n }, []);\n\n const onItemRegister = React.useCallback((item: ItemData) => {\n itemsRef.current.set(item.id, item);\n }, []);\n\n const onItemUnregister = React.useCallback((id: string) => {\n itemsRef.current.delete(id);\n }, []);\n\n const getItems = React.useCallback(() => {\n return Array.from(itemsRef.current.values())\n .filter((item) => item.ref.current)\n .sort((a, b) => {\n const elementA = a.ref.current;\n const elementB = b.ref.current;\n if (!elementA || !elementB) return 0;\n const position = elementA.compareDocumentPosition(elementB);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n return 0;\n });\n }, []);\n\n const onBlur = React.useCallback(\n (event: React.FocusEvent<ListElement>) => {\n listProps.onBlur?.(event);\n if (event.defaultPrevented) return;\n\n setIsTabbingBackOut(false);\n },\n [listProps.onBlur]\n );\n\n const onFocus = React.useCallback(\n (event: React.FocusEvent<ListElement>) => {\n listProps.onFocus?.(event);\n if (event.defaultPrevented) return;\n\n const isKeyboardFocus = !isClickFocusRef.current;\n if (\n event.target === event.currentTarget &&\n isKeyboardFocus &&\n !isTabbingBackOut\n ) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = Array.from(itemsRef.current.values()).filter(\n (item) => !item.disabled\n );\n const selectedItem = currentValue\n ? items.find((item) => item.value === currentValue)\n : undefined;\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === tabStopId);\n\n const candidateItems = [\n selectedItem,\n activeItem,\n currentItem,\n ...items,\n ].filter(Boolean) as ItemData[];\n const candidateRefs = candidateItems.map((item) => item.ref);\n focusFirst(candidateRefs, false);\n }\n }\n isClickFocusRef.current = false;\n },\n [listProps.onFocus, isTabbingBackOut, currentValue, tabStopId]\n );\n\n const onMouseDown = React.useCallback(\n (event: React.MouseEvent<ListElement>) => {\n listProps.onMouseDown?.(event);\n\n if (event.defaultPrevented) return;\n\n isClickFocusRef.current = true;\n },\n [listProps.onMouseDown]\n );\n\n const focusContextValue = React.useMemo<FocusContextValue>(\n () => ({\n tabStopId,\n onItemFocus,\n onItemShiftTab,\n onFocusableItemAdd,\n onFocusableItemRemove,\n onItemRegister,\n onItemUnregister,\n getItems,\n }),\n [\n tabStopId,\n onItemFocus,\n onItemShiftTab,\n onFocusableItemAdd,\n onFocusableItemRemove,\n onItemRegister,\n onItemUnregister,\n getItems,\n ]\n );\n\n const ListPrimitive = asChild ? Slot : \"div\";\n\n return (\n <FocusContext.Provider value={focusContextValue}>\n <ListPrimitive\n role=\"tablist\"\n aria-orientation={orientation}\n data-orientation={orientation}\n data-slot=\"stepper-list\"\n dir={context.dir}\n tabIndex={isTabbingBackOut || focusableItemCount === 0 ? -1 : 0}\n {...listProps}\n ref={composedRef}\n className={cn(\n \"ds:flex ds:outline-none\",\n orientation === \"horizontal\"\n ? \"ds:flex-row ds:items-center\"\n : \"ds:flex-col ds:items-start\",\n className\n )}\n onBlur={onBlur}\n onFocus={onFocus}\n onMouseDown={onMouseDown}\n >\n {children}\n </ListPrimitive>\n </FocusContext.Provider>\n );\n}\n\ninterface StepperItemContextValue {\n value: string;\n stepState: StepState | undefined;\n}\n\nconst StepperItemContext = React.createContext<StepperItemContextValue | null>(\n null\n);\n\nfunction useStepperItemContext(consumerName: string) {\n const context = React.useContext(StepperItemContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ITEM_NAME}\\``);\n }\n return context;\n}\n\ninterface StepperItemProps extends DivProps {\n value: string;\n completed?: boolean;\n disabled?: boolean;\n}\n\nfunction StepperItem(props: StepperItemProps) {\n const {\n value: itemValue,\n completed = false,\n disabled = false,\n asChild,\n className,\n children,\n ref,\n ...itemProps\n } = props;\n\n const context = useStepperContext(ITEM_NAME);\n const store = useStoreContext(ITEM_NAME);\n const orientation = context.orientation;\n const labelPosition = context.labelPosition ?? \"right\";\n const value = useStore((state) => state.value);\n\n useIsomorphicLayoutEffect(() => {\n store.addStep(itemValue, completed, disabled);\n\n return () => {\n store.removeStep(itemValue);\n };\n }, [itemValue, completed, disabled]);\n\n useIsomorphicLayoutEffect(() => {\n store.setStep(itemValue, completed, disabled);\n }, [itemValue, completed, disabled]);\n\n const stepState = useStore((state) => state.steps.get(itemValue));\n const steps = useStore((state) => state.steps);\n const dataState = getDataState(value, itemValue, stepState, steps);\n\n const stepKeys = Array.from(steps.keys());\n const stepIndex = stepKeys.indexOf(itemValue);\n const isFirstStep = stepIndex === 0;\n const isLastStep = stepIndex === stepKeys.length - 1;\n\n const itemContextValue = React.useMemo<StepperItemContextValue>(\n () => ({\n value: itemValue,\n stepState,\n }),\n [itemValue, stepState]\n );\n\n // Determine item layout based on orientation and labelPosition\n const getItemClasses = () => {\n const baseClasses = \"ds:relative ds:flex\";\n\n if (orientation === \"horizontal\") {\n // Horizontal stepper\n if (labelPosition === \"top\" || labelPosition === \"bottom\") {\n // When labels are above/below, use flex-col to stack indicator row and label\n // Each item takes equal space\n return `${baseClasses} ds:flex-col ds:items-center ds:flex-1 ds:gap-2`;\n }\n // Default: labels left/right - flex-row\n return `${baseClasses} ds:flex-row ds:items-center ds:not-last:flex-1`;\n } else {\n // Vertical stepper - always flex-col for vertical orientation\n return `${baseClasses} ds:flex-col`;\n }\n };\n\n // Reorganize children for top/bottom label positions\n const processedChildren = React.useMemo(() => {\n if (\n orientation === \"horizontal\" &&\n (labelPosition === \"top\" || labelPosition === \"bottom\")\n ) {\n const childArray = React.Children.toArray(children);\n let trigger: React.ReactNode = null;\n let indicator: React.ReactNode = null;\n let separator: React.ReactNode = null;\n const others: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (React.isValidElement(child)) {\n const slot = (child.props as { \"data-slot\"?: string })[\"data-slot\"];\n if (slot === \"stepper-trigger\" || child.type === StepperTrigger) {\n trigger = child;\n // Extract indicator from trigger's children if it exists\n const triggerChildren = React.Children.toArray(\n (child as React.ReactElement<{ children?: React.ReactNode }>)\n .props.children\n );\n triggerChildren.forEach((triggerChild) => {\n if (React.isValidElement(triggerChild)) {\n const triggerChildSlot = (\n triggerChild.props as { \"data-slot\"?: string }\n )[\"data-slot\"];\n if (\n triggerChildSlot === \"stepper-indicator\" ||\n triggerChild.type === StepperIndicator\n ) {\n indicator = triggerChild;\n }\n }\n });\n } else if (\n slot === \"stepper-separator\" ||\n child.type === StepperSeparator\n ) {\n separator = child;\n } else {\n others.push(child);\n }\n } else {\n others.push(child);\n }\n });\n\n // New structure: indicator row (with indicator + separator) then trigger\n // For proper centering, we need separators on both sides\n\n // Get the state for left separator (connects to previous step)\n // Left separator should be active if current step or any previous step is active\n const prevStepIndex = stepIndex - 1;\n const prevStepValue = prevStepIndex >= 0 ? stepKeys[prevStepIndex] : null;\n const leftSeparatorState = prevStepValue\n ? getDataState(\n value,\n prevStepValue,\n steps.get(prevStepValue),\n steps,\n \"separator\"\n )\n : \"inactive\";\n\n // Create left separator (even if separator element doesn't exist)\n let leftSeparator: React.ReactNode = null;\n if (!isFirstStep) {\n const color = context.color;\n const customColor = context.customColor;\n\n leftSeparator = (\n <div\n key=\"left-separator\"\n className={cn(\n \"ds:h-px ds:flex-1 ds:transition-colors\",\n getSeparatorColorClass(color, customColor, leftSeparatorState)\n )}\n style={getCustomColorStyle(customColor, leftSeparatorState, false)}\n aria-hidden=\"true\"\n />\n );\n }\n\n const indicatorRow = (\n <div\n className=\"ds:flex ds:w-full ds:items-center ds:justify-center\"\n key=\"indicator-row\"\n >\n {/* Left separator - connects to previous step */}\n {leftSeparator}\n {/* Spacer if first step */}\n {isFirstStep && (\n <div className=\"ds:h-px ds:flex-1 ds:bg-transparent\" aria-hidden=\"true\" />\n )}\n {indicator}\n {/* Right separator - connects to next step */}\n {!isLastStep && separator}\n {/* Spacer for last step to maintain centering */}\n {isLastStep && (\n <div className=\"ds:h-px ds:flex-1 ds:bg-transparent\" aria-hidden=\"true\" />\n )}\n </div>\n );\n\n if (labelPosition === \"top\") {\n return [trigger, indicatorRow, ...others];\n } else {\n return [indicatorRow, trigger, ...others];\n }\n }\n\n return children;\n }, [\n children,\n orientation,\n labelPosition,\n isFirstStep,\n isLastStep,\n stepIndex,\n stepKeys,\n steps,\n value,\n context.color,\n context.customColor,\n ]);\n\n const ItemPrimitive = asChild ? Slot : \"div\";\n\n return (\n <StepperItemContext.Provider value={itemContextValue}>\n <ItemPrimitive\n data-disabled={stepState?.disabled ? \"\" : undefined}\n data-orientation={orientation}\n data-state={dataState}\n data-slot=\"stepper-item\"\n data-label-position={labelPosition}\n dir={context.dir}\n {...itemProps}\n ref={ref}\n className={cn(getItemClasses(), className)}\n >\n {processedChildren}\n </ItemPrimitive>\n </StepperItemContext.Provider>\n );\n}\n\nfunction StepperTrigger(props: ButtonProps) {\n const { asChild, disabled, className, ref, ...triggerProps } = props;\n\n const context = useStepperContext(TRIGGER_NAME);\n const itemContext = useStepperItemContext(TRIGGER_NAME);\n const store = useStoreContext(TRIGGER_NAME);\n const focusContext = useFocusContext(TRIGGER_NAME);\n const value = useStore((state) => state.value);\n const itemValue = itemContext.value;\n const stepState = useStore((state) => state.steps.get(itemValue));\n const activationMode = context.activationMode;\n const orientation = context.orientation;\n const loop = context.loop;\n const labelPosition = context.labelPosition ?? \"right\";\n\n const steps = useStore((state) => state.steps);\n const stepIndex = Array.from(steps.keys()).indexOf(itemValue);\n\n const stepPosition = stepIndex + 1;\n const stepCount = steps.size;\n\n const triggerId = getId(context.id, \"trigger\", itemValue);\n const contentId = getId(context.id, \"content\", itemValue);\n const titleId = getId(context.id, \"title\", itemValue);\n const descriptionId = getId(context.id, \"description\", itemValue);\n\n const isDisabled = context.disabled || stepState?.disabled || disabled;\n const isActive = value === itemValue;\n const isTabStop = focusContext.tabStopId === triggerId;\n const dataState = getDataState(value, itemValue, stepState, steps);\n\n const triggerRef = React.useRef<TriggerElement>(null);\n const composedRef = useComposedRefs(ref, triggerRef);\n const isArrowKeyPressedRef = React.useRef(false);\n const isMouseClickRef = React.useRef(false);\n\n React.useEffect(() => {\n function onKeyDown(event: KeyboardEvent) {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n }\n function onKeyUp() {\n isArrowKeyPressedRef.current = false;\n }\n document.addEventListener(\"keydown\", onKeyDown);\n document.addEventListener(\"keyup\", onKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n document.removeEventListener(\"keyup\", onKeyUp);\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n focusContext.onItemRegister({\n id: triggerId,\n ref: triggerRef,\n value: itemValue,\n active: isTabStop,\n disabled: !!isDisabled,\n });\n\n if (!isDisabled) {\n focusContext.onFocusableItemAdd();\n }\n\n return () => {\n focusContext.onItemUnregister(triggerId);\n if (!isDisabled) {\n focusContext.onFocusableItemRemove();\n }\n };\n }, [focusContext, triggerId, itemValue, isTabStop, isDisabled]);\n\n const onClick = React.useCallback(\n async (event: React.MouseEvent<TriggerElement>) => {\n triggerProps.onClick?.(event);\n if (event.defaultPrevented) return;\n\n if (!isDisabled && !context.nonInteractive) {\n const currentStepIndex = Array.from(steps.keys()).indexOf(value ?? \"\");\n const targetStepIndex = Array.from(steps.keys()).indexOf(itemValue);\n const direction = targetStepIndex > currentStepIndex ? \"next\" : \"prev\";\n\n await store.setStateWithValidation(itemValue, direction);\n }\n },\n [\n isDisabled,\n context.nonInteractive,\n store,\n itemValue,\n value,\n steps,\n triggerProps.onClick,\n ]\n );\n\n const onFocus = React.useCallback(\n async (event: React.FocusEvent<TriggerElement>) => {\n triggerProps.onFocus?.(event);\n if (event.defaultPrevented) return;\n\n focusContext.onItemFocus(triggerId);\n\n const isKeyboardFocus = !isMouseClickRef.current;\n\n if (\n !isActive &&\n !isDisabled &&\n activationMode !== \"manual\" &&\n !context.nonInteractive &&\n isKeyboardFocus\n ) {\n const currentStepIndex = Array.from(steps.keys()).indexOf(value || \"\");\n const targetStepIndex = Array.from(steps.keys()).indexOf(itemValue);\n const direction = targetStepIndex > currentStepIndex ? \"next\" : \"prev\";\n\n await store.setStateWithValidation(itemValue, direction);\n }\n\n isMouseClickRef.current = false;\n },\n [\n focusContext,\n triggerId,\n activationMode,\n isActive,\n isDisabled,\n context.nonInteractive,\n store,\n itemValue,\n value,\n steps,\n triggerProps.onFocus,\n ]\n );\n\n const onKeyDown = React.useCallback(\n async (event: React.KeyboardEvent<TriggerElement>) => {\n triggerProps.onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (event.key === \"Enter\" && context.nonInteractive) {\n event.preventDefault();\n return;\n }\n\n if (\n (event.key === \"Enter\" || event.key === \" \") &&\n activationMode === \"manual\" &&\n !context.nonInteractive\n ) {\n event.preventDefault();\n if (!isDisabled && triggerRef.current) {\n triggerRef.current.click();\n }\n return;\n }\n\n if (event.key === \"Tab\" && event.shiftKey) {\n focusContext.onItemShiftTab();\n return;\n }\n\n if (event.target !== event.currentTarget) return;\n\n const focusIntent = getFocusIntent(event, context.dir, orientation);\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey)\n return;\n event.preventDefault();\n\n const items = focusContext.getItems().filter((item) => !item.disabled);\n let candidateRefs = items.map((item) => item.ref);\n\n if (focusIntent === \"last\") {\n candidateRefs.reverse();\n } else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateRefs.reverse();\n const currentIndex = candidateRefs.findIndex(\n (ref) => ref.current === event.currentTarget\n );\n candidateRefs = loop\n ? wrapArray(candidateRefs, currentIndex + 1)\n : candidateRefs.slice(currentIndex + 1);\n }\n\n if (store.hasValidation() && candidateRefs.length > 0) {\n const nextRef = candidateRefs[0];\n const nextElement = nextRef?.current;\n const nextItem = items.find(\n (item) => item.ref.current === nextElement\n );\n\n if (nextItem && nextItem.value !== itemValue) {\n const currentStepIndex = Array.from(steps.keys()).indexOf(\n value || \"\"\n );\n const targetStepIndex = Array.from(steps.keys()).indexOf(\n nextItem.value\n );\n const direction: NavigationDirection =\n targetStepIndex > currentStepIndex ? \"next\" : \"prev\";\n\n if (direction === \"next\") {\n const isValid = await store.setStateWithValidation(\n nextItem.value,\n direction\n );\n if (!isValid) return;\n } else {\n store.setState(\"value\", nextItem.value);\n }\n\n queueMicrotask(() => nextElement?.focus());\n return;\n }\n }\n\n queueMicrotask(() => focusFirst(candidateRefs));\n }\n },\n [\n focusContext,\n context.nonInteractive,\n context.dir,\n activationMode,\n orientation,\n loop,\n isDisabled,\n triggerProps.onKeyDown,\n store,\n itemValue,\n value,\n steps,\n ]\n );\n\n const onMouseDown = React.useCallback(\n (event: React.MouseEvent<TriggerElement>) => {\n triggerProps.onMouseDown?.(event);\n if (event.defaultPrevented) return;\n\n isMouseClickRef.current = true;\n\n if (isDisabled) {\n event.preventDefault();\n } else {\n focusContext.onItemFocus(triggerId);\n }\n },\n [focusContext, triggerId, isDisabled, triggerProps.onMouseDown]\n );\n\n // Determine flex direction based on labelPosition\n const getFlexDirection = () => {\n if (\n orientation === \"horizontal\" &&\n (labelPosition === \"top\" || labelPosition === \"bottom\")\n ) {\n // For horizontal with top/bottom labels, trigger only contains text\n // Indicator and separator will be siblings at item level\n return labelPosition === \"top\" ? \"ds:flex-col-reverse\" : \"ds:flex-col\";\n }\n\n if (labelPosition === \"top\") return \"ds:flex-col-reverse\";\n if (labelPosition === \"bottom\") return \"ds:flex-col\";\n if (labelPosition === \"left\") return \"ds:flex-row-reverse\";\n return \"ds:flex-row\"; // default is right\n };\n\n const shouldWrapIndicator =\n orientation === \"horizontal\" &&\n (labelPosition === \"top\" || labelPosition === \"bottom\");\n\n // Filter out Indicator from children when shouldWrapIndicator is true\n const processedChildren = React.useMemo(() => {\n if (!shouldWrapIndicator) return triggerProps.children;\n\n const childArray = React.Children.toArray(triggerProps.children);\n return childArray.filter((child) => {\n if (React.isValidElement(child)) {\n const slot = (child.props as { \"data-slot\"?: string })[\"data-slot\"];\n return !(\n slot === \"stepper-indicator\" || child.type === StepperIndicator\n );\n }\n return true;\n });\n }, [shouldWrapIndicator, triggerProps.children]);\n\n const TriggerPrimitive = asChild ? Slot : \"button\";\n\n return (\n <TriggerPrimitive\n id={triggerId}\n role=\"tab\"\n type=\"button\"\n aria-controls={contentId}\n aria-current={isActive ? \"step\" : undefined}\n aria-describedby={`${titleId} ${descriptionId}`}\n aria-posinset={stepPosition}\n aria-selected={isActive}\n aria-setsize={stepCount}\n data-disabled={isDisabled ? \"\" : undefined}\n data-state={dataState}\n data-slot=\"stepper-trigger\"\n data-wrap-indicator={shouldWrapIndicator ? \"\" : undefined}\n disabled={isDisabled}\n tabIndex={isTabStop ? 0 : -1}\n {...triggerProps}\n ref={composedRef}\n className={cn(\n \"ds:inline-flex ds:items-center ds:justify-center ds:gap-3 ds:rounded-md ds:text-left ds:outline-none ds:transition-all ds:focus-visible:border-ring ds:focus-visible:ring-[3px] ds:focus-visible:ring-ring/50 ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:aria-invalid:border-destructive ds:aria-invalid:ring-destructive/20 ds:dark:aria-invalid:ring-destructive/40 ds:[&_svg:not([class*='size-'])]:size-4 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0\",\n \"ds:not-has-data-[slot=description]:rounded-full ds:not-has-data-[slot=title]:rounded-full\",\n shouldWrapIndicator ? \"\" : getFlexDirection(),\n className\n )}\n onClick={onClick}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onMouseDown={onMouseDown}\n >\n {processedChildren}\n </TriggerPrimitive>\n );\n}\n\ninterface StepperIndicatorProps extends Omit<DivProps, \"children\"> {\n children?: React.ReactNode | ((dataState: DataState) => React.ReactNode);\n color?: StepperColor;\n customColor?: string;\n variant?: StepperVariant;\n}\n\nfunction StepperIndicator(props: StepperIndicatorProps) {\n const {\n className,\n children,\n asChild,\n ref,\n color: colorProp,\n customColor: customColorProp,\n variant: variantProp,\n ...indicatorProps\n } = props;\n const context = useStepperContext(INDICATOR_NAME);\n const itemContext = useStepperItemContext(INDICATOR_NAME);\n const value = useStore((state) => state.value);\n const itemValue = itemContext.value;\n const stepState = useStore((state) => state.steps.get(itemValue));\n const steps = useStore((state) => state.steps);\n\n const stepPosition = Array.from(steps.keys()).indexOf(itemValue) + 1;\n\n const dataState = getDataState(value, itemValue, stepState, steps);\n\n const color = colorProp ?? context.color;\n const customColor = customColorProp ?? context.customColor;\n const variant = variantProp ?? context.variant ?? \"normal\";\n\n const colorClass = getIndicatorColorClass(color, customColor, dataState);\n const customStyle = getCustomColorStyle(customColor, dataState, true);\n\n const IndicatorPrimitive = asChild ? Slot : \"div\";\n\n const isDot = variant === \"dot\";\n\n return (\n <IndicatorPrimitive\n data-state={dataState}\n data-variant={variant}\n data-slot=\"stepper-indicator\"\n dir={context.dir}\n {...indicatorProps}\n ref={ref}\n style={{ ...indicatorProps.style, ...customStyle }}\n className={cn(\n \"ds:flex ds:shrink-0 ds:items-center ds:justify-center ds:rounded-full ds:border-2 ds:font-medium ds:text-sm ds:transition-colors\",\n isDot ? \"ds:size-7 ds:data-[variant=dot]:size-2\" : \"ds:size-7\",\n colorClass,\n className\n )}\n >\n {!isDot &&\n (typeof children === \"function\" ? (\n children(dataState)\n ) : children ? (\n children\n ) : dataState === \"completed\" ? (\n <Check className=\"ds:size-4\" />\n ) : (\n stepPosition\n ))}\n </IndicatorPrimitive>\n );\n}\n\ninterface StepperSeparatorProps extends DivProps {\n forceMount?: boolean;\n color?: StepperColor;\n customColor?: string;\n}\n\nfunction StepperSeparator(props: StepperSeparatorProps) {\n const {\n className,\n asChild,\n forceMount = false,\n ref,\n color: colorProp,\n customColor: customColorProp,\n ...separatorProps\n } = props;\n\n const context = useStepperContext(SEPARATOR_NAME);\n const itemContext = useStepperItemContext(SEPARATOR_NAME);\n const value = useStore((state) => state.value);\n const orientation = context.orientation;\n const labelPosition = context.labelPosition ?? \"right\";\n\n const steps = useStore((state) => state.steps);\n const stepIndex = Array.from(steps.keys()).indexOf(itemContext.value);\n\n const isLastStep = stepIndex === steps.size - 1;\n\n if (isLastStep && !forceMount) {\n return null;\n }\n\n const dataState = getDataState(\n value,\n itemContext.value,\n itemContext.stepState,\n steps,\n \"separator\"\n );\n\n const color = colorProp ?? context.color;\n const customColor = customColorProp ?? context.customColor;\n\n const colorClass = getSeparatorColorClass(color, customColor, dataState);\n const customStyle = getCustomColorStyle(customColor, dataState, false);\n\n const SeparatorPrimitive = asChild ? Slot : \"div\";\n\n // Determine separator positioning based on orientation and labelPosition\n const getSeparatorClasses = () => {\n if (orientation === \"horizontal\") {\n // Horizontal stepper\n if (labelPosition === \"top\" || labelPosition === \"bottom\") {\n // When labels are above/below, separator is at item level alongside indicator\n // It should be a horizontal line that takes remaining space\n return \"ds:h-px ds:flex-1\";\n }\n // Default: labels left/right - normal flex behavior\n return \"ds:h-px ds:flex-1\";\n } else {\n // Vertical stepper\n if (labelPosition === \"top\" || labelPosition === \"bottom\") {\n // When labels are above/below in vertical mode, separator connects vertically\n return \"ds:w-px ds:absolute ds:left-1/2 ds:-translate-x-1/2 ds:top-full ds:h-full ds:-z-10\";\n } else if (labelPosition === \"left\") {\n // Label on left, separator on the right side\n return \"ds:w-px ds:absolute ds:right-0 ds:top-full ds:h-full ds:-z-10 ds:translate-x-1/2\";\n } else {\n // Label on right (default), separator on the left side\n return \"ds:w-px ds:absolute ds:left-0 ds:top-full ds:h-full ds:-z-10 ds:-translate-x-1/2\";\n }\n }\n };\n\n return (\n <SeparatorPrimitive\n role=\"separator\"\n aria-hidden=\"true\"\n aria-orientation={orientation}\n data-orientation={orientation}\n data-state={dataState}\n data-slot=\"stepper-separator\"\n dir={context.dir}\n {...separatorProps}\n ref={ref}\n style={{ ...separatorProps.style, ...customStyle }}\n className={cn(\n \"ds:transition-colors\",\n getSeparatorClasses(),\n colorClass,\n className\n )}\n />\n );\n}\n\ninterface StepperTitleProps extends React.ComponentProps<\"span\"> {\n asChild?: boolean;\n}\n\nfunction StepperTitle(props: StepperTitleProps) {\n const { className, asChild, ref, ...titleProps } = props;\n\n const context = useStepperContext(TITLE_NAME);\n const itemContext = useStepperItemContext(TITLE_NAME);\n\n const titleId = getId(context.id, \"title\", itemContext.value);\n\n const TitlePrimitive = asChild ? Slot : \"span\";\n\n return (\n <TitlePrimitive\n id={titleId}\n data-slot=\"title\"\n dir={context.dir}\n {...titleProps}\n ref={ref}\n className={cn(\"ds:font-medium ds:text-sm\", className)}\n />\n );\n}\n\ninterface StepperDescriptionProps extends React.ComponentProps<\"span\"> {\n asChild?: boolean;\n}\n\nfunction StepperDescription(props: StepperDescriptionProps) {\n const { className, asChild, ref, ...descriptionProps } = props;\n const context = useStepperContext(DESCRIPTION_NAME);\n const itemContext = useStepperItemContext(DESCRIPTION_NAME);\n\n const descriptionId = getId(context.id, \"description\", itemContext.value);\n\n const DescriptionPrimitive = asChild ? Slot : \"span\";\n\n return (\n <DescriptionPrimitive\n id={descriptionId}\n data-slot=\"description\"\n dir={context.dir}\n {...descriptionProps}\n ref={ref}\n className={cn(\"ds:text-muted-foreground ds:text-xs\", className)}\n />\n );\n}\n\ninterface StepperContentProps extends DivProps {\n value: string;\n forceMount?: boolean;\n}\n\nfunction StepperContent(props: StepperContentProps) {\n const {\n value: valueProp,\n asChild,\n forceMount = false,\n ref,\n className,\n ...contentProps\n } = props;\n\n const context = useStepperContext(CONTENT_NAME);\n const value = useStore((state) => state.value);\n\n const contentId = getId(context.id, \"content\", valueProp);\n const triggerId = getId(context.id, \"trigger\", valueProp);\n\n if (valueProp !== value && !forceMount) return null;\n\n const ContentPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ContentPrimitive\n id={contentId}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n data-slot=\"stepper-content\"\n dir={context.dir}\n {...contentProps}\n ref={ref}\n className={cn(\"ds:flex-1 ds:outline-none\", className)}\n />\n );\n}\n\nfunction StepperPrev(props: ButtonProps) {\n const { asChild, disabled, ...prevProps } = props;\n\n const store = useStoreContext(PREV_NAME);\n const value = useStore((state) => state.value);\n const steps = useStore((state) => state.steps);\n\n const stepKeys = Array.from(steps.keys());\n const currentIndex = value ? stepKeys.indexOf(value) : -1;\n const isDisabled = disabled || currentIndex <= 0;\n\n const onClick = React.useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n prevProps.onClick?.(event);\n if (event.defaultPrevented || isDisabled) return;\n\n const prevIndex = Math.max(currentIndex - 1, 0);\n const prevStepValue = stepKeys[prevIndex];\n\n if (prevStepValue) {\n store.setState(\"value\", prevStepValue);\n }\n },\n [prevProps.onClick, isDisabled, currentIndex, stepKeys, store]\n );\n\n const PrevPrimitive = asChild ? Slot : \"button\";\n\n return (\n <PrevPrimitive\n type=\"button\"\n data-slot=\"stepper-prev\"\n disabled={isDisabled}\n {...prevProps}\n onClick={onClick}\n />\n );\n}\n\nfunction StepperNext(props: ButtonProps) {\n const { asChild, disabled, ...nextProps } = props;\n\n const store = useStoreContext(NEXT_NAME);\n const value = useStore((state) => state.value);\n const steps = useStore((state) => state.steps);\n\n const stepKeys = Array.from(steps.keys());\n const currentIndex = value ? stepKeys.indexOf(value) : -1;\n const isDisabled = disabled || currentIndex >= stepKeys.length - 1;\n\n const onClick = React.useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n nextProps.onClick?.(event);\n if (event.defaultPrevented || isDisabled) return;\n\n const nextIndex = Math.min(currentIndex + 1, stepKeys.length - 1);\n const nextStepValue = stepKeys[nextIndex];\n\n if (nextStepValue) {\n await store.setStateWithValidation(nextStepValue, \"next\");\n }\n },\n [nextProps.onClick, isDisabled, currentIndex, stepKeys, store]\n );\n\n const NextPrimitive = asChild ? Slot : \"button\";\n\n return (\n <NextPrimitive\n type=\"button\"\n data-slot=\"stepper-next\"\n disabled={isDisabled}\n {...nextProps}\n onClick={onClick}\n />\n );\n}\n\nexport {\n StepperRoot,\n StepperList,\n StepperItem,\n StepperTrigger,\n StepperIndicator,\n StepperSeparator,\n StepperTitle,\n StepperDescription,\n StepperContent,\n StepperPrev,\n StepperNext,\n //\n useStore as useStepper,\n //\n type StepperRootProps as StepperProps,\n};\n"],"names":["ROOT_NAME","LIST_NAME","ITEM_NAME","TRIGGER_NAME","INDICATOR_NAME","SEPARATOR_NAME","TITLE_NAME","DESCRIPTION_NAME","CONTENT_NAME","PREV_NAME","NEXT_NAME","ENTRY_FOCUS","EVENT_OPTIONS","ARROW_KEYS","stepperColorClasses","getIndicatorColorClass","color","customColor","dataState","getSeparatorColorClass","getCustomColorStyle","isIndicator","getId","id","variant","value","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","dir","getFocusIntent","event","orientation","focusFirst","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidateRef","candidate","wrapArray","array","startIndex","_","index","useIsomorphicLayoutEffect","React","useAsRef","props","ref","useLazyRef","fn","getDataState","itemValue","stepState","steps","stepKeys","currentIndex","DirectionContext","useDirection","dirProp","contextDir","StoreContext","useStoreContext","consumerName","context","useStore","selector","store","getSnapshot","StepperContext","useStepperContext","StepperRoot","defaultValue","onValueChange","onValueComplete","onValueAdd","onValueRemove","onValidate","idProp","activationMode","asChild","disabled","nonInteractive","loop","labelPosition","className","rootProps","listenersRef","stateRef","propsRef","cb","direction","isValid","completed","newStep","step","updatedStep","rootId","contextValue","RootPrimitive","Slot","jsx","cn","FocusContext","useFocusContext","StepperList","children","listProps","currentValue","state","tabStopId","setTabStopId","isTabbingBackOut","setIsTabbingBackOut","focusableItemCount","setFocusableItemCount","isClickFocusRef","itemsRef","listRef","composedRef","useComposedRefs","onItemFocus","onItemShiftTab","onFocusableItemAdd","prevCount","onFocusableItemRemove","onItemRegister","item","onItemUnregister","getItems","a","b","elementA","elementB","position","onBlur","onFocus","isKeyboardFocus","entryFocusEvent","items","selectedItem","activeItem","currentItem","candidateRefs","onMouseDown","focusContextValue","ListPrimitive","StepperItemContext","useStepperItemContext","StepperItem","itemProps","stepIndex","isFirstStep","isLastStep","itemContextValue","getItemClasses","baseClasses","processedChildren","childArray","trigger","indicator","separator","others","child","slot","StepperTrigger","triggerChild","StepperIndicator","StepperSeparator","prevStepIndex","prevStepValue","leftSeparatorState","leftSeparator","indicatorRow","jsxs","ItemPrimitive","triggerProps","itemContext","focusContext","stepPosition","stepCount","triggerId","contentId","titleId","descriptionId","isDisabled","isActive","isTabStop","triggerRef","isArrowKeyPressedRef","isMouseClickRef","onKeyDown","onKeyUp","onClick","currentStepIndex","focusIntent","nextElement","nextItem","getFlexDirection","shouldWrapIndicator","colorProp","customColorProp","variantProp","indicatorProps","colorClass","customStyle","IndicatorPrimitive","isDot","Check","forceMount","separatorProps","SeparatorPrimitive","getSeparatorClasses","StepperTitle","titleProps","StepperDescription","descriptionProps","StepperContent","valueProp","contentProps","StepperPrev","prevProps","prevIndex","StepperNext","nextProps","nextIndex","nextStepValue"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StepperWrapper.js","sources":["../../../../src/components/Stepper/StepperWrapper.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n StepperContent,\n StepperDescription,\n StepperIndicator,\n StepperItem,\n StepperList,\n StepperRoot,\n StepperSeparator,\n StepperTitle,\n StepperTrigger,\n type StepperProps,\n} from \"./Stepper\";\nimport { cn } from \"@dsui/ui/index\";\n\ntype StepperColor =\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\ntype StepperVariant = \"normal\" | \"dot\";\ntype LabelPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\ninterface Step {\n value: string;\n title: string;\n description?: string;\n completed?: boolean;\n disabled?: boolean;\n content?: React.ReactNode;\n}\n\ninterface StepperWrapperProps extends StepperProps {\n steps?: Step[];\n children?: React.ReactNode;\n color?: StepperColor;\n customColor?: string;\n variant?: StepperVariant;\n labelPosition?: LabelPosition;\n}\n\nfunction StepperWrapper({\n steps,\n children,\n color,\n customColor,\n variant = \"normal\",\n labelPosition = \"right\",\n ...props\n}: StepperWrapperProps) {\n const hasStepContent = steps && steps.some((step) => step.content);\n\n // Determine separator classes based on orientation and labelPosition\n const getSeparatorClasses = (index: number, totalSteps: number) => {\n if (index >= totalSteps - 1) return \"\";\n\n const { orientation = \"horizontal\" } = props;\n\n if (orientation === \"vertical\") {\n // Vertical stepper - separator positioning\n if (labelPosition === \"top\" || labelPosition === \"bottom\") {\n return \"ds:-order-1 ds:-z-10 ds:absolute ds:inset-y-0 ds:top-7 ds:left-1/2 ds:-translate-x-1/2 ds:h-full\";\n } else if (labelPosition === \"left\") {\n return \"ds:-order-1 ds:-z-10 ds:absolute ds:inset-y-0 ds:top-7 ds:right-0 ds:translate-x-1/2 ds:h-full\";\n } else {\n // right (default)\n return \"ds:-order-1 ds:-z-10 ds:absolute ds:inset-y-0 ds:top-7 ds:left-3.5 ds:-translate-x-1/2 ds:h-full\";\n }\n }\n\n // Horizontal stepper - separator is handled by the Separator component itself\n return \"\";\n };\n\n return (\n <StepperRoot\n {...props}\n color={color}\n customColor={customColor}\n variant={variant}\n labelPosition={labelPosition}\n >\n {steps && steps.length > 0 && (\n <StepperList>\n {steps.map((step, index) => (\n <StepperItem\n key={step.value}\n value={step.value}\n completed={step.completed}\n disabled={step.disabled}\n >\n <StepperTrigger\n className={cn({\n \"ds:not-last:pb-6\":\n index < steps.length - 1 &&\n props.orientation === \"vertical\",\n })}\n >\n <StepperIndicator />\n <div\n className={cn(\"ds:flex ds:flex-col ds:gap-1\", {\n \"ds:text-center\":\n labelPosition === \"top\" || labelPosition === \"bottom\",\n \"ds:text-left\": labelPosition === \"right\",\n \"ds:text-right\": labelPosition === \"left\",\n })}\n >\n <StepperTitle>{step.title}</StepperTitle>\n {step.description && (\n <StepperDescription>{step.description}</StepperDescription>\n )}\n </div>\n </StepperTrigger>\n {index < steps.length - 1 && (\n <StepperSeparator\n className={getSeparatorClasses(index, steps.length)}\n />\n )}\n </StepperItem>\n ))}\n </StepperList>\n )}\n {hasStepContent\n ? steps?.map(\n (step) =>\n step.content && (\n <StepperContent key={step.value} value={step.value}>\n {step.content}\n </StepperContent>\n )\n )\n : children}\n </StepperRoot>\n );\n}\n\nexport { StepperWrapper };\nexport type { StepperWrapperProps, Step };\n"],"names":["StepperWrapper","steps","children","color","customColor","variant","labelPosition","props","hasStepContent","step","getSeparatorClasses","index","totalSteps","orientation","jsxs","StepperRoot","jsx","StepperList","StepperItem","StepperTrigger","cn","StepperIndicator","StepperTitle","StepperDescription","StepperSeparator","StepperContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,SAASA,GAAe;AAAA,EACtB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,eAAAC,IAAgB;AAAA,EAChB,GAAGC;AACL,GAAwB;AACtB,QAAMC,IAAiBP,KAASA,EAAM,KAAK,CAACQ,MAASA,EAAK,OAAO,GAG3DC,IAAsB,CAACC,GAAeC,MAAuB;AACjE,QAAID,KAASC,IAAa,EAAG,QAAO;AAEpC,UAAM,EAAE,aAAAC,IAAc,aAAA,IAAiBN;AAEvC,WAAIM,MAAgB,aAEdP,MAAkB,SAASA,MAAkB,WACxC,qGACEA,MAAkB,SACpB,mGAGA,qGAKJ;AAAA,EACT;AAEA,SACE,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,OAAAJ;AAAA,MACA,aAAAC;AAAA,MACA,SAAAC;AAAA,MACA,eAAAC;AAAA,MAEC,UAAA;AAAA,QAAAL,KAASA,EAAM,SAAS,KACvB,gBAAAe,EAACC,KACE,UAAAhB,EAAM,IAAI,CAACQ,GAAME,MAChB,gBAAAG;AAAA,UAACI;AAAA,UAAA;AAAA,YAEC,OAAOT,EAAK;AAAA,YACZ,WAAWA,EAAK;AAAA,YAChB,UAAUA,EAAK;AAAA,YAEf,UAAA;AAAA,cAAA,gBAAAK;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,WAAWC,EAAG;AAAA,oBACZ,oBACET,IAAQV,EAAM,SAAS,KACvBM,EAAM,gBAAgB;AAAA,kBAAA,CACzB;AAAA,kBAED,UAAA;AAAA,oBAAA,gBAAAS,EAACK,GAAA,EAAiB;AAAA,oBAClB,gBAAAP;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWM,EAAG,gCAAgC;AAAA,0BAC5C,kBACEd,MAAkB,SAASA,MAAkB;AAAA,0BAC/C,gBAAgBA,MAAkB;AAAA,0BAClC,iBAAiBA,MAAkB;AAAA,wBAAA,CACpC;AAAA,wBAED,UAAA;AAAA,0BAAA,gBAAAU,EAACM,GAAA,EAAc,YAAK,MAAA,CAAM;AAAA,0BACzBb,EAAK,eACJ,gBAAAO,EAACO,GAAA,EAAoB,YAAK,YAAA,CAAY;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAE1C;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEDZ,IAAQV,EAAM,SAAS,KACtB,gBAAAe;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBACC,WAAWd,EAAoBC,GAAOV,EAAM,MAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,YACpD;AAAA,UAAA;AAAA,UA9BGQ,EAAK;AAAA,QAAA,CAiCb,GACH;AAAA,QAEDD,IACGP,GAAO;AAAA,UACL,CAACQ,MACCA,EAAK,WACH,gBAAAO,EAACS,GAAA,EAAgC,OAAOhB,EAAK,OAC1C,UAAAA,EAAK,QAAA,GADaA,EAAK,KAE1B;AAAA,QAAA,IAGNP;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Stepper/index.ts"],"sourcesContent":["import {\n StepperRoot,\n StepperList,\n StepperItem,\n StepperTrigger,\n StepperIndicator,\n StepperSeparator,\n StepperTitle,\n StepperDescription,\n StepperContent,\n StepperPrev,\n StepperNext,\n //\n useStepper,\n //\n type StepperProps,\n} from \"./Stepper\";\nimport { StepperWrapper } from \"./StepperWrapper\";\n\nconst Stepper = Object.assign(StepperWrapper, {\n Root: StepperRoot,\n List: StepperList,\n Item: StepperItem,\n Trigger: StepperTrigger,\n Indicator: StepperIndicator,\n Separator: StepperSeparator,\n Title: StepperTitle,\n Description: StepperDescription,\n Content: StepperContent,\n Prev: StepperPrev,\n Next: StepperNext,\n});\n\nexport { Stepper, useStepper };\nexport type { StepperProps };\n"],"names":["Stepper","StepperWrapper","StepperRoot","StepperList","StepperItem","StepperTrigger","StepperIndicator","StepperSeparator","StepperTitle","StepperDescription","StepperContent","StepperPrev","StepperNext"],"mappings":";;;AAmBA,MAAMA,IAAU,OAAO,OAAOC,GAAgB;AAAA,EAC5C,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,SAASC;AAAA,EACT,WAAWC;AAAA,EACX,WAAWC;AAAA,EACX,OAAOC;AAAA,EACP,aAAaC;AAAA,EACb,SAASC;AAAA,EACT,MAAMC;AAAA,EACN,MAAMC;AACR,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","sources":["../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n Switch as SSwitch,\n switchVariants,\n type SwitchVariant,\n} from \"@dsui/ui/components/switch\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { SwitchAnimation } from \"@/types/variables\";\nimport { animationEffect } from \"@/utils/animations\";\nimport { Glass } from \"../Glass\";\n\nexport type SwitchProps = Omit<\n React.ComponentPropsWithoutRef<typeof SSwitch>,\n \"onCheckedChange\" | \"variant\" | \"size\" | \"color\"\n> & {\n onCheckedChange?: (checked: boolean) => void;\n variant?: \"default\" | \"square1\" | \"square2\" | \"mini\";\n size?: \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n animation?: SwitchAnimation;\n label?: React.ReactNode;\n labelPosition?: \"left\" | \"right\" | \"top\" | \"bottom\";\n offLabel?: React.ReactNode;\n onLabel?: React.ReactNode;\n showLabels?: \"outside\" | \"inside\" | \"none\";\n};\n\ntype AnimResult = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n variant?: SwitchVariant[\"variant\"];\n isGlass?: boolean; // Flag for glass effect\n};\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (props, ref) => {\n const {\n animation,\n label,\n labelPosition = \"right\",\n offLabel,\n onLabel,\n showLabels = \"none\",\n checked = false,\n onCheckedChange,\n className,\n variant = \"default\",\n size = \"normal\",\n color,\n ...rest\n } = props;\n const id = React.useId();\n\n const [isChecked, setIsChecked] = React.useState(checked);\n\n React.useEffect(() => {\n setIsChecked(checked as boolean);\n }, [checked]);\n\n const handleCheckedChange = (newChecked: boolean) => {\n setIsChecked(newChecked);\n onCheckedChange?.(newChecked);\n };\n\n const switchAnimation = useMemo<AnimResult | null>(() => {\n if (!animation) return null;\n\n // Handle glass animation separately for Switch (don't affect other components)\n if (animation === \"glass\") {\n return {\n className: \"ds:!bg-transparent ds:!shadow-none ds:!border-none\",\n isGlass: true, // Custom flag for glass effect\n variant: \"default\",\n };\n }\n\n return animationEffect<SwitchAnimation, SwitchVariant[\"variant\"]>({\n animation,\n children: null,\n className,\n rootClassName: switchVariants({\n variant: variant,\n size: size,\n color: color,\n }),\n variantType: variant,\n });\n }, [animation, className, variant, size, color]);\n\n const switchElement = (switchClassName?: string) => {\n const baseSwitchElement = (\n <SSwitch\n ref={ref}\n id={id}\n checked={isChecked}\n onCheckedChange={handleCheckedChange}\n className={cn(className, switchClassName, switchAnimation?.className)}\n variant={variant}\n size={size}\n color={color}\n style={{ ...(rest.style || {}), ...(switchAnimation?.style || {}) }}\n {...rest}\n />\n );\n\n // If animation is glass effect, wrap the switch in Glass component\n if (animation === \"glass\" && switchAnimation?.isGlass) {\n const roundedMatches = switchVariants({\n variant: variant,\n size: size,\n color: color,\n })?.match(/((?:!)?rounded-\\S+)/g);\n const roundedClass = roundedMatches\n ? roundedMatches[roundedMatches.length - 1]\n : \"ds:rounded-full\";\n\n return (\n <Glass\n className={cn(\"ds:hover:scale-110 ds:[&_span]:opacity-80\", roundedClass)}\n >\n {baseSwitchElement}\n </Glass>\n );\n }\n\n // If animation returns children wrapper, use it\n if (\n switchAnimation?.children &&\n React.isValidElement(switchAnimation.children)\n ) {\n return React.cloneElement(switchAnimation.children, baseSwitchElement);\n }\n\n return baseSwitchElement;\n };\n\n // Render with inside labels (icons inside thumb position)\n if (showLabels === \"inside\" && (offLabel || onLabel)) {\n return (\n <div className=\"ds:relative ds:inline-grid ds:h-7 ds:w-fit ds:grid-cols-[1fr_1fr] ds:items-center ds:text-sm ds:font-medium\">\n {switchElement(\n \"ds:peer ds:data-[state=unchecked]:bg-input/50 ds:absolute ds:inset-0 ds:h-[inherit] ds:w-14 ds:[&_span]:z-10 ds:[&_span]:size-6.5 ds:[&_span]:transition-transform ds:[&_span]:duration-300 ds:[&_span]:ease-[cubic-bezier(0.16,1,0.3,1)] ds:[&_span]:data-[state=checked]:translate-x-7 ds:[&_span]:data-[state=checked]:rtl:-translate-x-7\"\n )}\n <span className=\"ds:pointer-events-none ds:relative ds:ml-0.5 ds:flex ds:min-w-8 ds:items-center ds:justify-center ds:text-center ds:transition-transform ds:duration-300 ds:ease-[cubic-bezier(0.16,1,0.3,1)] ds:peer-data-[state=checked]:invisible ds:peer-data-[state=unchecked]:translate-x-6 ds:peer-data-[state=unchecked]:rtl:-translate-x-6\">\n {offLabel}\n </span>\n <span className=\"ds:peer-data-[state=checked]:text-background ds:pointer-events-none ds:relative ds:flex ds:min-w-8 ds:items-center ds:justify-center ds:text-center ds:transition-transform ds:duration-300 ds:ease-[cubic-bezier(0.16,1,0.3,1)]\tds:peer-data-[state=checked]:-translate-x-full\tds:peer-data-[state=unchecked]:invisible\tds:peer-data-[state=checked]:rtl:translate-x-full\">\n {onLabel}\n </span>\n </div>\n );\n }\n\n // Render with outside labels\n if (showLabels === \"outside\" && (offLabel || onLabel)) {\n return (\n <div\n className=\"ds:group ds:inline-flex ds:items-center ds:gap-2\"\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n >\n {offLabel && (\n <span\n className=\"ds:flex-1 ds:cursor-pointer ds:text-sm ds:font-medium ds:group-data-[state=checked]:text-muted-foreground/70\"\n onClick={() => handleCheckedChange(false)}\n >\n {offLabel}\n </span>\n )}\n {switchElement()}\n {onLabel && (\n <span\n className=\"ds:flex-1 ds:cursor-pointer ds:text-sm ds:font-medium ds:group-data-[state=unchecked]:text-muted-foreground/70\"\n onClick={() => handleCheckedChange(true)}\n >\n {onLabel}\n </span>\n )}\n </div>\n );\n }\n\n // Render with label (outside wrap)\n if (label) {\n const isVertical = labelPosition === \"top\" || labelPosition === \"bottom\";\n const flexDirection = isVertical ? \"ds:flex-col\" : \"ds:flex-row\";\n const alignItems = isVertical ? \"ds:items-start\" : \"ds:items-center\";\n const labelFirst = labelPosition === \"left\" || labelPosition === \"top\";\n\n return (\n <div className={cn(\"ds:flex ds:gap-2\", flexDirection, alignItems)}>\n {labelFirst && <label htmlFor={id}>{label}</label>}\n {switchElement()}\n {!labelFirst && <label htmlFor={id}>{label}</label>}\n </div>\n );\n }\n\n // Default render\n return switchElement();\n }\n);\n\nSwitch.displayName = \"Switch\";\nexport default Switch;\n"],"names":["Switch","React","props","ref","animation","label","labelPosition","offLabel","onLabel","showLabels","checked","onCheckedChange","className","variant","size","color","rest","id","isChecked","setIsChecked","handleCheckedChange","newChecked","switchAnimation","useMemo","animationEffect","switchVariants","switchElement","switchClassName","baseSwitchElement","jsx","SSwitch","cn","roundedMatches","roundedClass","Glass","jsxs","isVertical","flexDirection","alignItems","labelFirst"],"mappings":";;;;;;AA2CA,MAAMA,IAASC,EAAM;AAAA,EACnB,CAACC,GAAOC,MAAQ;AACd,UAAM;AAAA,MACJ,WAAAC;AAAA,MACA,OAAAC;AAAA,MACA,eAAAC,IAAgB;AAAA,MAChB,UAAAC;AAAA,MACA,SAAAC;AAAA,MACA,YAAAC,IAAa;AAAA,MACb,SAAAC,IAAU;AAAA,MACV,iBAAAC;AAAA,MACA,WAAAC;AAAA,MACA,SAAAC,IAAU;AAAA,MACV,MAAAC,IAAO;AAAA,MACP,OAAAC;AAAA,MACA,GAAGC;AAAA,IAAA,IACDd,GACEe,IAAKhB,EAAM,MAAA,GAEX,CAACiB,GAAWC,CAAY,IAAIlB,EAAM,SAASS,CAAO;AAExDT,IAAAA,EAAM,UAAU,MAAM;AACpB,MAAAkB,EAAaT,CAAkB;AAAA,IACjC,GAAG,CAACA,CAAO,CAAC;AAEZ,UAAMU,IAAsB,CAACC,MAAwB;AACnD,MAAAF,EAAaE,CAAU,GACvBV,IAAkBU,CAAU;AAAA,IAC9B,GAEMC,IAAkBC,EAA2B,MAC5CnB,IAGDA,MAAc,UACT;AAAA,MACL,WAAW;AAAA,MACX,SAAS;AAAA;AAAA,MACT,SAAS;AAAA,IAAA,IAINoB,EAA2D;AAAA,MAChE,WAAApB;AAAA,MACA,UAAU;AAAA,MACV,WAAAQ;AAAA,MACA,eAAea,EAAe;AAAA,QAC5B,SAAAZ;AAAA,QACA,MAAAC;AAAA,QACA,OAAAC;AAAA,MAAA,CACD;AAAA,MACD,aAAaF;AAAA,IAAA,CACd,IArBsB,MAsBtB,CAACT,GAAWQ,GAAWC,GAASC,GAAMC,CAAK,CAAC,GAEzCW,IAAgB,CAACC,MAA6B;AAClD,YAAMC,IACJ,gBAAAC;AAAA,QAACC;AAAAA,QAAA;AAAA,UACC,KAAA3B;AAAA,UACA,IAAAc;AAAA,UACA,SAASC;AAAA,UACT,iBAAiBE;AAAA,UACjB,WAAWW,EAAGnB,GAAWe,GAAiBL,GAAiB,SAAS;AAAA,UACpE,SAAAT;AAAA,UACA,MAAAC;AAAA,UACA,OAAAC;AAAA,UACA,OAAO,EAAE,GAAIC,EAAK,SAAS,CAAA,GAAK,GAAIM,GAAiB,SAAS,GAAC;AAAA,UAC9D,GAAGN;AAAA,QAAA;AAAA,MAAA;AAKR,UAAIZ,MAAc,WAAWkB,GAAiB,SAAS;AACrD,cAAMU,IAAiBP,EAAe;AAAA,UACpC,SAAAZ;AAAA,UACA,MAAAC;AAAA,UACA,OAAAC;AAAA,QAAA,CACD,GAAG,MAAM,sBAAsB,GAC1BkB,IAAeD,IACjBA,EAAeA,EAAe,SAAS,CAAC,IACxC;AAEJ,eACE,gBAAAH;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,WAAWH,EAAG,6CAA6CE,CAAY;AAAA,YAEtE,UAAAL;AAAA,UAAA;AAAA,QAAA;AAAA,MAGP;AAGA,aACEN,GAAiB,YACjBrB,EAAM,eAAeqB,EAAgB,QAAQ,IAEtCrB,EAAM,aAAaqB,EAAgB,UAAUM,CAAiB,IAGhEA;AAAA,IACT;AAGA,QAAInB,MAAe,aAAaF,KAAYC;AAC1C,aACE,gBAAA2B,EAAC,OAAA,EAAI,WAAU,+GACZ,UAAA;AAAA,QAAAT;AAAA,UACC;AAAA,QAAA;AAAA,QAEF,gBAAAG,EAAC,QAAA,EAAK,WAAU,uUACb,UAAAtB,GACH;AAAA,QACA,gBAAAsB,EAAC,QAAA,EAAK,WAAU,8WACb,UAAArB,EAAA,CACH;AAAA,MAAA,GACF;AAKJ,QAAIC,MAAe,cAAcF,KAAYC;AAC3C,aACE,gBAAA2B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,cAAYjB,IAAY,YAAY;AAAA,UAEnC,UAAA;AAAA,YAAAX,KACC,gBAAAsB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS,MAAMT,EAAoB,EAAK;AAAA,gBAEvC,UAAAb;AAAA,cAAA;AAAA,YAAA;AAAA,YAGJmB,EAAA;AAAA,YACAlB,KACC,gBAAAqB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS,MAAMT,EAAoB,EAAI;AAAA,gBAEtC,UAAAZ;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAOR,QAAIH,GAAO;AACT,YAAM+B,IAAa9B,MAAkB,SAASA,MAAkB,UAC1D+B,IAAgBD,IAAa,gBAAgB,eAC7CE,IAAaF,IAAa,mBAAmB,mBAC7CG,IAAajC,MAAkB,UAAUA,MAAkB;AAEjE,+BACG,OAAA,EAAI,WAAWyB,EAAG,oBAAoBM,GAAeC,CAAU,GAC7D,UAAA;AAAA,QAAAC,KAAc,gBAAAV,EAAC,SAAA,EAAM,SAASZ,GAAK,UAAAZ,GAAM;AAAA,QACzCqB,EAAA;AAAA,QACA,CAACa,KAAc,gBAAAV,EAAC,SAAA,EAAM,SAASZ,GAAK,UAAAZ,EAAA,CAAM;AAAA,MAAA,GAC7C;AAAA,IAEJ;AAGA,WAAOqB,EAAA;AAAA,EACT;AACF;AAEA1B,EAAO,cAAc;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-date-filter.js","sources":["../../../../../src/components/Table/TableFilter/data-table-date-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport { formatDate } from \"@/utils/datetime\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { CalendarIcon, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport { Separator } from \"../../Separator\";\nimport { Popover } from \"../../Popover\";\nimport { Button } from \"../../Button\";\nimport { Calendar } from \"../../Calendar\";\n\ntype DateSelection = Date[] | DateRange;\n\nfunction getIsDateRange(value: DateSelection): value is DateRange {\n return value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction parseAsDate(timestamp: number | string | undefined): Date | undefined {\n if (!timestamp) return undefined;\n const numericTimestamp =\n typeof timestamp === \"string\" ? Number(timestamp) : timestamp;\n const date = new Date(numericTimestamp);\n return !Number.isNaN(date.getTime()) ? date : undefined;\n}\n\nfunction parseColumnFilterValue(value: unknown) {\n if (value === null || value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n if (typeof item === \"number\" || typeof item === \"string\") {\n return item;\n }\n return undefined;\n });\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return [value];\n }\n\n return [];\n}\n\nexport interface DataTableDateFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n multiple?: boolean;\n}\n\nexport function DataTableDateFilter<TData>({\n column,\n title,\n multiple,\n}: DataTableDateFilterProps<TData>) {\n const columnFilterValue = column.getFilterValue();\n\n const selectedDates = React.useMemo<DateSelection>(() => {\n if (!columnFilterValue) {\n return multiple ? { from: undefined, to: undefined } : [];\n }\n\n if (multiple) {\n const timestamps = parseColumnFilterValue(columnFilterValue);\n return {\n from: parseAsDate(timestamps[0]),\n to: parseAsDate(timestamps[1]),\n };\n }\n\n const timestamps = parseColumnFilterValue(columnFilterValue);\n const date = parseAsDate(timestamps[0]);\n return date ? [date] : [];\n }, [columnFilterValue, multiple]);\n\n const onSelect = React.useCallback(\n (date: Date | DateRange | undefined) => {\n if (!date) {\n column.setFilterValue(undefined);\n return;\n }\n\n if (multiple && !(\"getTime\" in date)) {\n const from = date.from?.getTime();\n const to = date.to?.getTime();\n column.setFilterValue(from || to ? [from, to] : undefined);\n } else if (!multiple && \"getTime\" in date) {\n column.setFilterValue(date.getTime());\n }\n },\n [column, multiple]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const hasValue = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return false;\n return selectedDates.from || selectedDates.to;\n }\n if (!Array.isArray(selectedDates)) return false;\n return selectedDates.length > 0;\n }, [multiple, selectedDates]);\n\n const formatDateRange = React.useCallback((range: DateRange) => {\n if (!range.from && !range.to) return \"\";\n if (range.from && range.to) {\n return `${formatDate(range.from)} - ${formatDate(range.to)}`;\n }\n return formatDate(range.from ?? range.to);\n }, []);\n\n const label = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDates = selectedDates.from || selectedDates.to;\n const dateText = hasSelectedDates\n ? formatDateRange(selectedDates)\n : \"Select date range\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDates && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }\n\n if (getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDate = selectedDates.length > 0;\n const dateText = hasSelectedDate\n ? formatDate(selectedDates[0])\n : \"Select date\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDate && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }, [selectedDates, multiple, formatDateRange, title]);\n\n const PopContent = (\n <div className=\"ds:w-auto ds:p-0\">\n {multiple ? (\n <Calendar\n autoFocus\n captionLayout=\"dropdown\"\n mode=\"range\"\n selected={\n getIsDateRange(selectedDates)\n ? selectedDates\n : { from: undefined, to: undefined }\n }\n onSelect={onSelect}\n />\n ) : (\n <Calendar\n captionLayout=\"dropdown\"\n mode=\"single\"\n selected={\n !getIsDateRange(selectedDates) ? selectedDates[0] : undefined\n }\n onSelect={onSelect}\n />\n )}\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed ds:font-normal\">\n {hasValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n onClick={onReset}\n className=\"ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring\"\n >\n <XCircle />\n </div>\n ) : (\n <CalendarIcon />\n )}\n {label}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsDateRange","value","parseAsDate","timestamp","numericTimestamp","date","parseColumnFilterValue","item","DataTableDateFilter","column","title","multiple","columnFilterValue","selectedDates","React","timestamps","onSelect","from","to","onReset","event","hasValue","formatDateRange","range","formatDate","label","hasSelectedDates","dateText","jsxs","jsx","Fragment","Separator","hasSelectedDate","PopContent","Calendar","Popover","Button","XCircle","CalendarIcon"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-filter-popover.js","sources":["../../../../../src/components/Table/TableFilter/data-table-filter-popover.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Popover } from \"../../Popover\";\nimport { Input } from \"../../Input\";\nimport { Checkbox } from \"../../Checkbox\";\nimport { Radio } from \"../../Radio\";\nimport { DataTableSliderFilter } from \"./data-table-slider-filter\";\nimport { DataTableDateFilter } from \"./data-table-date-filter\";\nimport { Separator } from \"@/components/Separator\";\nimport { Button } from \"@/components/Button\";\n\nexport interface DataTableFilterPopoverProps<TData> {\n column: Column<TData>;\n trigger: React.ReactNode;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DataTableFilterPopover<TData>({\n column,\n trigger,\n open,\n onOpenChange,\n}: DataTableFilterPopoverProps<TData>) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n\n const isOpen = open !== undefined ? open : internalOpen;\n const setIsOpen = onOpenChange || setInternalOpen;\n\n const columnMeta = column.columnDef.meta;\n\n const renderFilterContent = () => {\n if (!columnMeta?.variant) return <div>No filter available</div>;\n\n switch (columnMeta.variant) {\n case \"text\":\n return (\n <Input\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"number\":\n return (\n <Input\n type=\"number\"\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"date\":\n case \"dateRange\":\n return (\n <DataTableDateFilter\n column={column}\n title={columnMeta.label ?? column.id}\n multiple={columnMeta.variant === \"dateRange\"}\n />\n );\n\n case \"range\":\n return (\n <DataTableSliderFilter\n column={column}\n title={columnMeta.label ?? column.id}\n />\n );\n\n case \"select\":\n case \"multiSelect\": {\n const options = columnMeta.options || [];\n const multiple = columnMeta.variant === \"multiSelect\";\n\n if (multiple) {\n const currentValues = (column.getFilterValue() as string[]) || [];\n return (\n <>\n <div className=\"ds:space-y-2 ds:max-h-48 ds:overflow-y-auto ds:text-sm\">\n {options.map((option) => (\n <div\n key={option.value}\n className=\"ds:flex ds:items-center ds:space-x-2\"\n >\n <Checkbox\n checked={currentValues.includes(option.value)}\n onCheckedChange={(checked) => {\n if (checked) {\n column.setFilterValue([\n ...currentValues,\n option.value,\n ]);\n } else {\n column.setFilterValue(\n currentValues.filter((v) => v !== option.value)\n );\n }\n }}\n label={option.label}\n />\n </div>\n ))}\n </div>\n {/* <Separator className=\"my-2\" /> */}\n {/* <div className=\"flex justify-center gap-0 mt-2\">\n <Button\n variant=\"ghost\"\n onClick={() =>\n column.setFilterValue(options.map((o) => o.value))\n }\n >\n Check All\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"size-3\" />\n Clear Filter\n </Button>\n </div> */}\n </>\n );\n } else {\n const currentValue = column.getFilterValue() as string;\n return (\n <Radio\n value={currentValue}\n onValueChange={(value) => column.setFilterValue(value)}\n options={options.map((option) => ({\n label: option.label,\n value: option.value,\n }))}\n className=\"ds:p-1\"\n />\n );\n }\n }\n\n default:\n return <div>No filter available</div>;\n }\n };\n\n const hasFilterValue = column.getFilterValue() != null;\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={trigger}\n content={\n <div className=\"ds:p-2 ds:min-w-32\">\n {renderFilterContent()}\n {hasFilterValue && (\n <>\n <Separator className=\"ds:mt-3 ds:mb-1\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"ds:size-3\" />\n Clear Filter\n </Button>\n </>\n )}\n </div>\n }\n contentClassName=\"ds:p-0\"\n />\n );\n}\n"],"names":["DataTableFilterPopover","column","trigger","open","onOpenChange","internalOpen","setInternalOpen","React","isOpen","setIsOpen","columnMeta","renderFilterContent","jsx","Input","event","DataTableDateFilter","DataTableSliderFilter","options","currentValues","Fragment","option","Checkbox","checked","v","currentValue","Radio","value","hasFilterValue","Popover","jsxs","Separator","Button","X"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-slider-filter.js","sources":["../../../../../src/components/Table/TableFilter/data-table-slider-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { PlusCircle, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"../../Button\";\nimport { Input } from \"../../Input\";\nimport { Popover } from \"../../Popover\";\nimport { Separator } from \"../../Separator\";\nimport { Slider } from \"../../Slider\";\nimport { cn } from \"@dsui/ui/index\";\n\ninterface Range {\n min: number;\n max: number;\n}\n\ntype RangeValue = [number, number];\n\nfunction getIsValidRange(value: unknown): value is RangeValue {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === \"number\" &&\n typeof value[1] === \"number\"\n );\n}\n\nfunction parseValuesAsNumbers(value: unknown): RangeValue | undefined {\n if (\n Array.isArray(value) &&\n value.length === 2 &&\n value.every(\n (v) =>\n (typeof v === \"string\" || typeof v === \"number\") && !Number.isNaN(v)\n )\n ) {\n return [Number(value[0]), Number(value[1])];\n }\n\n return undefined;\n}\n\nexport interface DataTableSliderFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n}\n\nexport function DataTableSliderFilter<TData>({\n column,\n title,\n}: DataTableSliderFilterProps<TData>) {\n const id = React.useId();\n\n const columnFilterValue = parseValuesAsNumbers(column.getFilterValue());\n\n const defaultRange = column.columnDef.meta?.range;\n const unit = column.columnDef.meta?.unit;\n\n const { min, max, step } = React.useMemo<Range & { step: number }>(() => {\n let minValue = 0;\n let maxValue = 100;\n\n if (defaultRange && getIsValidRange(defaultRange)) {\n [minValue, maxValue] = defaultRange;\n } else {\n const values = column.getFacetedMinMaxValues();\n if (values && Array.isArray(values) && values.length === 2) {\n const [facetMinValue, facetMaxValue] = values;\n if (\n typeof facetMinValue === \"number\" &&\n typeof facetMaxValue === \"number\"\n ) {\n minValue = facetMinValue;\n maxValue = facetMaxValue;\n }\n }\n }\n\n const rangeSize = maxValue - minValue;\n const step =\n rangeSize <= 20\n ? 1\n : rangeSize <= 100\n ? Math.ceil(rangeSize / 20)\n : Math.ceil(rangeSize / 50);\n\n return { min: minValue, max: maxValue, step };\n }, [column, defaultRange]);\n\n const range = React.useMemo((): RangeValue => {\n return columnFilterValue ?? [min, max];\n }, [columnFilterValue, min, max]);\n\n const formatValue = React.useCallback((value: number) => {\n return value.toLocaleString(undefined, { maximumFractionDigits: 0 });\n }, []);\n\n const onFromInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const numValue = Number(event.target.value);\n if (!Number.isNaN(numValue) && numValue >= min && numValue <= range[1]) {\n column.setFilterValue([numValue, range[1]]);\n }\n },\n [column, min, range]\n );\n\n const onToInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const numValue = Number(event.target.value);\n if (!Number.isNaN(numValue) && numValue <= max && numValue >= range[0]) {\n column.setFilterValue([range[0], numValue]);\n }\n },\n [column, max, range]\n );\n\n const onSliderValueChange = React.useCallback(\n (value: RangeValue) => {\n if (Array.isArray(value) && value.length === 2) {\n column.setFilterValue(value);\n }\n },\n [column]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n if (event.target instanceof HTMLDivElement) {\n event.stopPropagation();\n }\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const PopContent = (\n <div className=\"ds:flex ds:w-auto ds:flex-col ds:gap-4\">\n <div className=\"ds:flex ds:flex-col ds:gap-3\">\n <p className=\"ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\">\n {title}\n </p>\n <div className=\"ds:flex ds:items-center ds:gap-4\">\n <label htmlFor={`${id}-from`} className=\"ds:sr-only\">\n From\n </label>\n <div className=\"ds:relative\">\n <Input\n id={`${id}-from`}\n type=\"number\"\n aria-valuemin={min}\n aria-valuemax={max}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={min.toString()}\n min={min}\n max={max}\n value={range[0]?.toString()}\n onChange={onFromInputChange}\n className={cn(\"ds:h-8 ds:w-24\", unit && \"ds:pr-8\")}\n />\n {unit && (\n <span className=\"ds:absolute ds:top-0 ds:right-0 ds:bottom-0 ds:flex ds:items-center ds:rounded-r-md ds:bg-accent ds:px-2 ds:text-muted-foreground ds:text-sm\">\n {unit}\n </span>\n )}\n </div>\n <label htmlFor={`${id}-to`} className=\"ds:sr-only\">\n to\n </label>\n <div className=\"ds:relative\">\n <Input\n id={`${id}-to`}\n type=\"number\"\n aria-valuemin={min}\n aria-valuemax={max}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={max.toString()}\n min={min}\n max={max}\n value={range[1]?.toString()}\n onChange={onToInputChange}\n className={cn(\"ds:h-8 ds:w-24\", unit && \"ds:pr-8\")}\n />\n {unit && (\n <span className=\"ds:absolute ds:top-0 ds:right-0 ds:bottom-0 ds:flex ds:items-center ds:rounded-r-md ds:bg-accent ds:px-2 ds:text-muted-foreground ds:text-sm\">\n {unit}\n </span>\n )}\n </div>\n </div>\n <label htmlFor={`${id}-slider`} className=\"ds:sr-only\">\n {title} slider\n </label>\n <Slider\n id={`${id}-slider`}\n min={min}\n max={max}\n step={step}\n value={range}\n onValueChange={onSliderValueChange}\n />\n </div>\n <Button\n aria-label={`Clear ${title} filter`}\n variant=\"outline\"\n size=\"sm\"\n onClick={onReset}\n >\n Clear\n </Button>\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed ds:font-normal\">\n {columnFilterValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n className=\"ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring\"\n onClick={onReset}\n >\n <XCircle />\n </div>\n ) : (\n <PlusCircle />\n )}\n <span>{title}</span>\n {columnFilterValue ? (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n {formatValue(columnFilterValue[0])} -{\" \"}\n {formatValue(columnFilterValue[1])}\n {unit ? ` ${unit}` : \"\"}\n </>\n ) : null}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsValidRange","value","parseValuesAsNumbers","v","DataTableSliderFilter","column","title","id","React","columnFilterValue","defaultRange","unit","min","max","step","minValue","maxValue","values","facetMinValue","facetMaxValue","rangeSize","range","formatValue","onFromInputChange","event","numValue","onToInputChange","onSliderValueChange","onReset","PopContent","jsxs","jsx","Input","cn","Slider","Button","Popover","XCircle","PlusCircle","Fragment","Separator"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-column-header.js","sources":["../../../../src/components/Table/data-table-column-header.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport {\n ChevronDown,\n ChevronsUpDown,\n ChevronUp,\n EyeOff,\n Filter,\n X,\n} from \"lucide-react\";\n\nimport { cn } from \"@dsui/ui\";\nimport DropdownMenu, {\n type DropdownMenuItem,\n} from \"../DropdownMenu/DropdownMenu\";\nimport { DataTableFilterPopover } from \"./TableFilter/data-table-filter-popover\";\nimport { Button } from \"../Button\";\n\nexport interface DataTableColumnHeaderProps<TData, TValue> {\n column: Column<TData, TValue>;\n label?: string;\n className?: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n label,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n const displayLabel =\n label ||\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : null);\n\n const hasActions =\n column.getCanSort() || column.getCanHide() || column.getCanFilter();\n\n if (!hasActions) {\n return <div className={cn(className)}>{displayLabel}</div>;\n }\n\n const sortTrigger = (\n <button className=\"ds:-ml-1.5 ds:flex ds:h-8 ds:items-center ds:gap-1.5 ds:rounded-md ds:px-2 ds:py-1.5 ds:hover:bg-accent ds:focus:outline-none ds:focus:ring-1 ds:focus:ring-ring ds:data-[state=open]:bg-accent ds:[&_svg]:size-4 ds:[&_svg]:shrink-0 ds:[&_svg]:text-muted-foreground\">\n {displayLabel}\n {column.getCanSort() &&\n (column.getIsSorted() === \"desc\" ? (\n <ChevronDown />\n ) : column.getIsSorted() === \"asc\" ? (\n <ChevronUp />\n ) : (\n <ChevronsUpDown />\n ))}\n </button>\n );\n\n const filterButton =\n column.getCanFilter() && column.columnDef.meta?.variant ? (\n <DataTableFilterPopover\n column={column}\n trigger={\n <Button\n variant=\"ghost\"\n className={cn(\n \"ds:hover:bg-accent ds:rounded ds:p-1\",\n column.getFilterValue() ? \"ds:text-primary\" : \"\"\n )}\n >\n <Filter className=\"ds:size-4\" />\n </Button>\n }\n />\n ) : null;\n\n const items: DropdownMenuItem[] = [];\n\n if (column.getCanSort()) {\n items.push({\n key: \"asc\",\n type: \"checkbox\",\n label: \"Asc\",\n icon: <ChevronUp />,\n checked: column.getIsSorted() === \"asc\",\n onClick: () => column.toggleSorting(false),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n items.push({\n key: \"desc\",\n type: \"checkbox\",\n label: \"Desc\",\n icon: <ChevronDown />,\n checked: column.getIsSorted() === \"desc\",\n onClick: () => column.toggleSorting(true),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n if (column.getIsSorted()) {\n items.push({\n key: \"reset\",\n type: \"item\",\n label: \"Reset\",\n icon: <X />,\n onClick: () => column.clearSorting(),\n className: \"ds:pl-2 ds:[&_svg]:text-muted-foreground\",\n });\n }\n }\n\n if (column.getCanHide()) {\n items.push({\n key: \"hide\",\n type: \"checkbox\",\n label: \"Hide\",\n icon: <EyeOff />,\n checked: !column.getIsVisible(),\n onClick: () => column.toggleVisibility(false),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n }\n\n return (\n <div className={cn(\"ds:flex ds:items-center ds:gap-1.5\", className)}>\n <DropdownMenu\n trigger={sortTrigger}\n items={items}\n align=\"start\"\n contentClassName=\"ds:w-28\"\n />\n {filterButton}\n </div>\n );\n}\n"],"names":["DataTableColumnHeader","column","label","className","displayLabel","cn","sortTrigger","jsxs","jsx","ChevronDown","ChevronUp","ChevronsUpDown","filterButton","DataTableFilterPopover","Button","Filter","items","X","EyeOff","DropdownMenu"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,SAASA,GAAqC;AAAA,EACnD,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,GAA8C;AAC5C,QAAMC,IACJF,MACC,OAAOD,EAAO,UAAU,UAAW,WAChCA,EAAO,UAAU,SACjB;AAKN,MAAI,EAFFA,EAAO,WAAA,KAAgBA,EAAO,WAAA,KAAgBA,EAAO,aAAA;AAGrD,6BAAQ,OAAA,EAAI,WAAWI,EAAGF,CAAS,GAAI,UAAAC,GAAa;AAGtD,QAAME,IACJ,gBAAAC,EAAC,UAAA,EAAO,WAAU,0QACf,UAAA;AAAA,IAAAH;AAAA,IACAH,EAAO,WAAA,MACLA,EAAO,YAAA,MAAkB,SACxB,gBAAAO,EAACC,GAAA,EAAY,IACXR,EAAO,kBAAkB,0BAC1BS,GAAA,CAAA,CAAU,sBAEVC,GAAA,EAAe;AAAA,EAAA,GAEtB,GAGIC,IACJX,EAAO,aAAA,KAAkBA,EAAO,UAAU,MAAM,UAC9C,gBAAAO;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,QAAAZ;AAAA,MACA,SACE,gBAAAO;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAWT;AAAA,YACT;AAAA,YACAJ,EAAO,eAAA,IAAmB,oBAAoB;AAAA,UAAA;AAAA,UAGhD,UAAA,gBAAAO,EAACO,GAAA,EAAO,WAAU,YAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAChC;AAAA,EAAA,IAGF,MAEAC,IAA4B,CAAA;AAElC,SAAIf,EAAO,iBACTe,EAAM,KAAK;AAAA,IACT,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,wBAAON,GAAA,EAAU;AAAA,IACjB,SAAST,EAAO,YAAA,MAAkB;AAAA,IAClC,SAAS,MAAMA,EAAO,cAAc,EAAK;AAAA,IACzC,WACE;AAAA,EAAA,CACH,GACDe,EAAM,KAAK;AAAA,IACT,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,wBAAOP,GAAA,EAAY;AAAA,IACnB,SAASR,EAAO,YAAA,MAAkB;AAAA,IAClC,SAAS,MAAMA,EAAO,cAAc,EAAI;AAAA,IACxC,WACE;AAAA,EAAA,CACH,GACGA,EAAO,iBACTe,EAAM,KAAK;AAAA,IACT,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,wBAAOC,GAAA,EAAE;AAAA,IACT,SAAS,MAAMhB,EAAO,aAAA;AAAA,IACtB,WAAW;AAAA,EAAA,CACZ,IAIDA,EAAO,gBACTe,EAAM,KAAK;AAAA,IACT,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,wBAAOE,GAAA,EAAO;AAAA,IACd,SAAS,CAACjB,EAAO,aAAA;AAAA,IACjB,SAAS,MAAMA,EAAO,iBAAiB,EAAK;AAAA,IAC5C,WACE;AAAA,EAAA,CACH,qBAIA,OAAA,EAAI,WAAWI,EAAG,sCAAsCF,CAAS,GAChE,UAAA;AAAA,IAAA,gBAAAK;AAAA,MAACW;AAAA,MAAA;AAAA,QACC,SAASb;AAAA,QACT,OAAAU;AAAA,QACA,OAAM;AAAA,QACN,kBAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,IAElBJ;AAAA,EAAA,GACH;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-pagination.js","sources":["../../../../src/components/Table/data-table-pagination.tsx"],"sourcesContent":["import type { Table } from \"@tanstack/react-table\";\n\nimport { Select } from \"../Select\";\nimport { Pagination } from \"../Pagination\";\nimport { cn } from \"@dsui/ui/index\";\n\nexport interface DataTablePaginationProps<TData> extends React.ComponentProps<\"div\"> {\n table: Table<TData>;\n pageSizeOptions?: number[];\n showPagination?: boolean;\n showPageSizeOptions?: boolean;\n showRowSelectionCount?: boolean;\n showPageInfo?: boolean;\n}\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [5, 10, 20, 30, 40, 50, 100],\n className,\n showPageInfo = false,\n showPageSizeOptions = false,\n showRowSelectionCount = false,\n showPagination = true,\n ...props\n}: DataTablePaginationProps<TData>) {\n return (\n <div\n className={cn(\n \"ds:flex ds:w-full ds:flex-col-reverse ds:items-center ds:justify-between ds:gap-4 ds:overflow-auto ds:p-1 ds:sm:flex-row ds:sm:gap-8\",\n className\n )}\n {...props}\n >\n <div className=\"ds:flex-1 ds:whitespace-nowrap ds:text-muted-foreground ds:text-sm\">\n {showRowSelectionCount && (\n <>\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </>\n )}\n </div>\n <div className=\"ds:flex ds:flex-col-reverse ds:items-center ds:gap-2 ds:sm:flex-row ds:sm:gap-2 ds:lg:gap-4\">\n {showPageInfo && (\n <div className=\"ds:flex ds:items-center ds:justify-center ds:font-medium ds:text-sm\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </div>\n )}\n\n {showPagination && (\n <Pagination\n total={table.getPageCount()}\n currentPage={table.getState().pagination.pageIndex + 1}\n onPageChange={(page) => table.setPageIndex(page - 1)}\n maxPages={3}\n previousText={false}\n nextText={false}\n jumpOnEllipsis\n showPreviousNext={true}\n />\n )}\n\n {showPageSizeOptions && (\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n options={pageSizeOptions.map((pageSize) => ({\n value: `${pageSize}`,\n label: `${pageSize} / page`,\n }))}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["DataTablePagination","table","pageSizeOptions","className","showPageInfo","showPageSizeOptions","showRowSelectionCount","showPagination","props","jsxs","cn","jsx","Fragment","Pagination","page","Select","value","pageSize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,SAASA,EAA2B;AAAA,EACzC,OAAAC;AAAA,EACA,iBAAAC,IAAkB,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAAA,EAC7C,WAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,qBAAAC,IAAsB;AAAA,EACtB,uBAAAC,IAAwB;AAAA,EACxB,gBAAAC,IAAiB;AAAA,EACjB,GAAGC;AACL,GAAoC;AAClC,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAP;AAAA,MAAA;AAAA,MAED,GAAGK;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,sEACZ,UAAAL,KACC,gBAAAG,EAAAG,GAAA,EACG,UAAA;AAAA,UAAAX,EAAM,8BAA8B,KAAK;AAAA,UAAO;AAAA,UAAI;AAAA,UACpDA,EAAM,sBAAsB,KAAK;AAAA,UAAO;AAAA,QAAA,EAAA,CAC3C,EAAA,CAEJ;AAAA,QACA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,+FACZ,UAAA;AAAA,UAAAL,KACC,gBAAAK,EAAC,OAAA,EAAI,WAAU,uEAAsE,UAAA;AAAA,YAAA;AAAA,YAC7ER,EAAM,SAAA,EAAW,WAAW,YAAY;AAAA,YAAE;AAAA,YAAI;AAAA,YACnDA,EAAM,aAAA;AAAA,UAAa,GACtB;AAAA,UAGDM,KACC,gBAAAI;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,OAAOZ,EAAM,aAAA;AAAA,cACb,aAAaA,EAAM,SAAA,EAAW,WAAW,YAAY;AAAA,cACrD,cAAc,CAACa,MAASb,EAAM,aAAaa,IAAO,CAAC;AAAA,cACnD,UAAU;AAAA,cACV,cAAc;AAAA,cACd,UAAU;AAAA,cACV,gBAAc;AAAA,cACd,kBAAkB;AAAA,YAAA;AAAA,UAAA;AAAA,UAIrBT,KACC,gBAAAM;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,OAAO,GAAGd,EAAM,SAAA,EAAW,WAAW,QAAQ;AAAA,cAC9C,eAAe,CAACe,MAAU;AACxB,gBAAAf,EAAM,YAAY,OAAOe,CAAK,CAAC;AAAA,cACjC;AAAA,cACA,SAASd,EAAgB,IAAI,CAACe,OAAc;AAAA,gBAC1C,OAAO,GAAGA,CAAQ;AAAA,gBAClB,OAAO,GAAGA,CAAQ;AAAA,cAAA,EAClB;AAAA,YAAA;AAAA,UAAA;AAAA,QACJ,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-toolbar.js","sources":["../../../../src/components/Table/data-table-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column, Table } from \"@tanstack/react-table\";\nimport { PlusCircle, X, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { DataTableFilterPopover } from \"./TableFilter/data-table-filter-popover\";\nimport {\n DataTableViewOptions,\n type DataTableViewOptionsProps,\n} from \"./data-table-view-options\";\nimport { Button } from \"../Button\";\nimport { cn } from \"@dsui/ui\";\n\nexport interface DataTableToolbarProps<TData>\n extends React.ComponentProps<\"div\"> {\n table: Table<TData>;\n showColumnFilters?: boolean;\n showColumnVisibilityToggle?: boolean;\n columnVisibilityOptions?: Omit<\n DataTableViewOptionsProps<TData>,\n \"table\" | \"align\"\n >;\n}\n\nexport function DataTableToolbar<TData>({\n table,\n children,\n className,\n showColumnFilters = false,\n showColumnVisibilityToggle = false,\n columnVisibilityOptions,\n ...props\n}: DataTableToolbarProps<TData>) {\n const isFiltered = table.getState().columnFilters.length > 0;\n\n const columns = React.useMemo(\n () => table.getAllColumns().filter((column) => column.getCanFilter()),\n [table]\n );\n\n const onReset = React.useCallback(() => {\n table.resetColumnFilters();\n }, [table]);\n\n return (\n <div\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n className={cn(\n \"ds:flex ds:w-full ds:items-start ds:justify-between ds:gap-2 ds:p-1\",\n className\n )}\n {...props}\n >\n {showColumnFilters ? (\n <div className=\"ds:flex ds:flex-1 ds:flex-wrap ds:items-center ds:justify-start ds:gap-2\">\n {columns.map((column) => (\n <DataTableToolbarFilter key={column.id} column={column} />\n ))}\n {isFiltered && (\n <Button\n aria-label=\"Reset filters\"\n variant=\"outline\"\n size=\"sm\"\n className=\"ds:border-dashed\"\n onClick={onReset}\n >\n <X />\n Reset\n </Button>\n )}\n </div>\n ) : (\n <div />\n )}\n <div className=\"ds:flex ds:items-center ds:gap-2\">\n {children}\n {showColumnVisibilityToggle && (\n <DataTableViewOptions\n table={table}\n align=\"end\"\n {...columnVisibilityOptions}\n />\n )}\n </div>\n </div>\n );\n}\ninterface DataTableToolbarFilterProps<TData> {\n column: Column<TData>;\n}\n\nfunction DataTableToolbarFilter<TData>({\n column,\n}: DataTableToolbarFilterProps<TData>) {\n const columnMeta = column.columnDef.meta;\n\n if (!columnMeta?.variant) return null;\n\n const hasFilterValue = column.getFilterValue() != null;\n const icon = hasFilterValue ? <XCircle /> : <PlusCircle />;\n\n const getTriggerLabel = () => {\n return columnMeta.label ?? column.id;\n };\n\n return (\n <DataTableFilterPopover\n column={column}\n trigger={\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed\">\n {icon}\n {getTriggerLabel()}\n </Button>\n }\n />\n );\n}\n"],"names":["DataTableToolbar","table","children","className","showColumnFilters","showColumnVisibilityToggle","columnVisibilityOptions","props","isFiltered","columns","React","column","onReset","jsxs","cn","jsx","DataTableToolbarFilter","Button","X","DataTableViewOptions","columnMeta","icon","XCircle","PlusCircle","DataTableFilterPopover"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,SAASA,GAAwB;AAAA,EACtC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,4BAAAC,IAA6B;AAAA,EAC7B,yBAAAC;AAAA,EACA,GAAGC;AACL,GAAiC;AAC/B,QAAMC,IAAaP,EAAM,SAAA,EAAW,cAAc,SAAS,GAErDQ,IAAUC,EAAM;AAAA,IACpB,MAAMT,EAAM,gBAAgB,OAAO,CAACU,MAAWA,EAAO,cAAc;AAAA,IACpE,CAACV,CAAK;AAAA,EAAA,GAGFW,IAAUF,EAAM,YAAY,MAAM;AACtC,IAAAT,EAAM,mBAAA;AAAA,EACR,GAAG,CAACA,CAAK,CAAC;AAEV,SACE,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,oBAAiB;AAAA,MACjB,WAAWC;AAAA,QACT;AAAA,QACAX;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,MAEH,UAAA;AAAA,QAAAH,IACC,gBAAAS,EAAC,OAAA,EAAI,WAAU,4EACZ,UAAA;AAAA,UAAAJ,EAAQ,IAAI,CAACE,MACZ,gBAAAI,EAACC,KAAuC,QAAAL,EAAA,GAAXA,EAAO,EAAoB,CACzD;AAAA,UACAH,KACC,gBAAAK;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,cAAW;AAAA,cACX,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAASL;AAAA,cAET,UAAA;AAAA,gBAAA,gBAAAG,EAACG,GAAA,EAAE;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAEP,EAAA,CAEJ,sBAEC,OAAA,EAAI;AAAA,QAEP,gBAAAL,EAAC,OAAA,EAAI,WAAU,oCACZ,UAAA;AAAA,UAAAX;AAAA,UACAG,KACC,gBAAAU;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,OAAAlB;AAAA,cACA,OAAM;AAAA,cACL,GAAGK;AAAA,YAAA;AAAA,UAAA;AAAA,QACN,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAKA,SAASU,EAA8B;AAAA,EACrC,QAAAL;AACF,GAAuC;AACrC,QAAMS,IAAaT,EAAO,UAAU;AAEpC,MAAI,CAACS,GAAY,QAAS,QAAO;AAGjC,QAAMC,IADiBV,EAAO,eAAA,KAAoB,OACpB,gBAAAI,EAACO,GAAA,CAAA,CAAQ,sBAAMC,GAAA,EAAW;AAMxD,SACE,gBAAAR;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,QAAAb;AAAA,MACA,2BACGM,GAAA,EAAO,SAAQ,WAAU,MAAK,MAAK,WAAU,oBAC3C,UAAA;AAAA,QAAAI;AAAA,QARAD,EAAW,SAAST,EAAO;AAAA,MASX,EAAA,CACnB;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-view-options.js","sources":["../../../../src/components/Table/data-table-view-options.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport type {\n Column,\n ColumnOrderState,\n ColumnPinningState,\n Table,\n} from \"@tanstack/react-table\";\nimport { Check, GripVertical, Settings2 } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"../Button\";\nimport { Checkbox } from \"../Checkbox\";\nimport Command, { type CommandItemType } from \"../Command/Command\";\nimport { Popover } from \"../Popover\";\nimport { cn } from \"@dsui/ui\";\n\nexport type DataTableViewOptionsVariant = \"command\" | \"draggable\";\n\nexport interface DataTableViewOptionsLabels {\n trigger?: React.ReactNode;\n searchPlaceholder?: string;\n selectAll?: React.ReactNode;\n reset?: React.ReactNode;\n}\n\nexport interface DataTableViewOptionsProps<TData> extends React.ComponentProps<\n typeof Popover\n> {\n table: Table<TData>;\n variant?: DataTableViewOptionsVariant;\n labels?: DataTableViewOptionsLabels;\n triggerIcon?: React.ReactNode;\n}\n\nexport function DataTableViewOptions<TData>({\n table,\n variant = \"command\",\n labels,\n triggerIcon = <Settings2 className=\"ds:text-muted-foreground\" />,\n trigger,\n content,\n contentClassName,\n ...props\n}: DataTableViewOptionsProps<TData>) {\n const columnOrder = table.getState().columnOrder;\n const columnPinning = table.getState().columnPinning;\n\n const columns = React.useMemo(\n () =>\n getOrderedTableColumns(table, columnOrder, columnPinning).filter(\n (column) =>\n typeof column.accessorFn !== \"undefined\" && column.getCanHide()\n ),\n [table, columnOrder, columnPinning]\n );\n\n const getColumnLabel = React.useCallback(\n (column: (typeof columns)[number]) =>\n column.columnDef.meta?.label ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id),\n []\n );\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const columnIds = React.useMemo(\n () => columns.map((column) => column.id),\n [columns]\n );\n\n const allColumnsVisible = columns.every((column) => column.getIsVisible());\n const someColumnsVisible = columns.some((column) => column.getIsVisible());\n\n const onToggleAll = React.useCallback(\n (checked: boolean) => {\n columns.forEach((column) => column.toggleVisibility(checked));\n },\n [columns]\n );\n\n const onDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (!over || active.id === over.id) return;\n\n const oldIndex = columnIds.indexOf(String(active.id));\n const newIndex = columnIds.indexOf(String(over.id));\n\n if (oldIndex === -1 || newIndex === -1) return;\n\n const orderedOptionIds = arrayMove(columnIds, oldIndex, newIndex);\n const optionIdSet = new Set(columnIds);\n const pendingOptionIds = [...orderedOptionIds];\n const nextColumnOrder = getOrderedTableColumns(table).map((column) =>\n optionIdSet.has(column.id)\n ? (pendingOptionIds.shift() ?? column.id)\n : column.id\n );\n const currentColumnPinning = table.getState().columnPinning;\n const nextColumnPinning = {\n ...currentColumnPinning,\n left: currentColumnPinning?.left?.filter((id) => !optionIdSet.has(id)),\n right: currentColumnPinning?.right?.filter(\n (id) => !optionIdSet.has(id)\n ),\n };\n\n table.setColumnOrder(nextColumnOrder);\n table.setColumnPinning(nextColumnPinning);\n },\n [columnIds, table]\n );\n\n const items: CommandItemType[] = [\n {\n type: \"group\",\n heading: \"\",\n items: columns.map((column) => ({\n type: \"item\" as const,\n onClick: () => column.toggleVisibility(!column.getIsVisible()),\n children: (\n <>\n <span className=\"ds:truncate\">{getColumnLabel(column)}</span>\n <Check\n className={cn(\n \"ds:ml-auto ds:size-4 ds:shrink-0\",\n column.getIsVisible() ? \"ds:opacity-100\" : \"ds:opacity-0\"\n )}\n />\n </>\n ),\n })),\n },\n ];\n\n const resolvedLabels = {\n trigger: labels?.trigger ?? \"View\",\n searchPlaceholder: labels?.searchPlaceholder ?? \"Search columns...\",\n selectAll: labels?.selectAll ?? \"Chọn tất cả\",\n reset: labels?.reset ?? \"Đặt lại\",\n };\n\n const defaultDraggableContent = (\n <div className=\"ds:flex ds:w-full ds:flex-col\">\n <div className=\"ds:flex ds:items-center ds:gap-3 ds:px-3 ds:py-3\">\n <Checkbox\n aria-label=\"Toggle all columns\"\n checked={\n allColumnsVisible\n ? true\n : someColumnsVisible\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => onToggleAll(checked === true)}\n />\n <span className=\"ds:text-sm ds:font-medium ds:text-foreground\">\n {resolvedLabels.selectAll}\n </span>\n </div>\n <div className=\"ds:mx-3 ds:h-px ds:bg-border\" />\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={onDragEnd}\n >\n <SortableContext\n items={columnIds}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"ds:flex ds:max-h-80 ds:flex-col ds:overflow-y-auto ds:py-2\">\n {columns.map((column) => (\n <DataTableDraggableColumnOption\n key={column.id}\n id={column.id}\n label={getColumnLabel(column)}\n checked={column.getIsVisible()}\n onCheckedChange={(checked) =>\n column.toggleVisibility(checked === true)\n }\n />\n ))}\n </div>\n </SortableContext>\n </DndContext>\n <div className=\"ds:mx-3 ds:h-px ds:bg-border\" />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"ds:mx-3 ds:my-2 ds:text-primary hover:ds:text-primary\"\n onClick={() => {\n table.resetColumnVisibility();\n table.resetColumnOrder();\n table.resetColumnPinning();\n }}\n >\n {resolvedLabels.reset}\n </Button>\n </div>\n );\n\n return (\n <Popover\n trigger={\n trigger ?? (\n <Button\n aria-label=\"Toggle columns\"\n role=\"combobox\"\n variant=\"outline\"\n size=\"sm\"\n className=\"ds:ml-auto ds:h-8 ds:font-normal ds:lg:flex\"\n >\n {triggerIcon}\n {resolvedLabels.trigger}\n </Button>\n )\n }\n content={\n content ??\n (variant === \"draggable\" ? (\n defaultDraggableContent\n ) : (\n <Command items={items} search={resolvedLabels.searchPlaceholder} />\n ))\n }\n contentClassName={cn(\n \"ds:p-0\",\n variant === \"draggable\" ? \"ds:w-72\" : \"ds:w-44\",\n contentClassName\n )}\n {...props}\n />\n );\n}\n\nfunction getOrderedTableColumns<TData>(\n table: Table<TData>,\n columnOrder: ColumnOrderState = table.getState().columnOrder,\n columnPinning: ColumnPinningState = table.getState().columnPinning\n) {\n const allColumns = table.getAllLeafColumns();\n const columnById = new Map(allColumns.map((column) => [column.id, column]));\n const columnIds = allColumns.map((column) => column.id);\n const order = columnOrder ?? [];\n const orderedIds = [\n ...order.filter((id) => columnById.has(id)),\n ...columnIds.filter((id) => !order.includes(id)),\n ];\n const pinning = columnPinning ?? {};\n const leftIds = (pinning.left ?? []).filter((id) => columnById.has(id));\n const rightIds = (pinning.right ?? []).filter((id) => columnById.has(id));\n const pinnedIds = new Set([...leftIds, ...rightIds]);\n const centerIds = orderedIds.filter((id) => !pinnedIds.has(id));\n\n return [...leftIds, ...centerIds, ...rightIds]\n .map((id) => columnById.get(id))\n .filter((column): column is Column<TData, unknown> => Boolean(column));\n}\n\ninterface DataTableDraggableColumnOptionProps {\n id: string;\n label: React.ReactNode;\n checked: boolean;\n onCheckedChange: React.ComponentProps<typeof Checkbox>[\"onCheckedChange\"];\n}\n\nfunction DataTableDraggableColumnOption({\n id,\n label,\n checked,\n onCheckedChange,\n}: DataTableDraggableColumnOptionProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id });\n\n return (\n <div\n ref={setNodeRef}\n className={cn(\n \"ds:flex ds:min-h-11 ds:items-center ds:gap-3 ds:px-3 ds:text-sm ds:text-foreground\",\n isDragging && \"ds:bg-accent\"\n )}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n >\n <button\n type=\"button\"\n className=\"ds:flex ds:size-5 ds:shrink-0 ds:cursor-grab ds:items-center ds:justify-center ds:text-muted-foreground active:ds:cursor-grabbing\"\n aria-label={`Reorder ${label}`}\n {...attributes}\n {...listeners}\n >\n <GripVertical className=\"ds:size-4\" />\n </button>\n <Checkbox\n aria-label={`Toggle ${label}`}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <span className=\"ds:min-w-0 ds:flex-1 ds:truncate ds:font-medium\">\n {label}\n </span>\n </div>\n );\n}\n"],"names":["DataTableViewOptions","table","variant","labels","triggerIcon","jsx","Settings2","trigger","content","contentClassName","props","columnOrder","columnPinning","columns","React","getOrderedTableColumns","column","getColumnLabel","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","columnIds","allColumnsVisible","someColumnsVisible","onToggleAll","checked","onDragEnd","event","active","over","oldIndex","newIndex","orderedOptionIds","arrayMove","optionIdSet","pendingOptionIds","nextColumnOrder","currentColumnPinning","nextColumnPinning","id","items","jsxs","Fragment","Check","cn","resolvedLabels","defaultDraggableContent","Checkbox","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","DataTableDraggableColumnOption","Button","Popover","Command","allColumns","columnById","order","orderedIds","pinning","leftIds","rightIds","pinnedIds","centerIds","label","onCheckedChange","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","GripVertical"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":["../../../../src/components/Table/data-table.tsx"],"sourcesContent":["import { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\nimport type * as React from \"react\";\n\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport {\n cn,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@dsui/ui\";\nimport { getCommonPinningStyles } from \"@/utils/data-table\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\n\nexport interface DataTableProps<TData> extends React.ComponentProps<\"div\"> {\n table: TanstackTable<TData>;\n actionBar?: React.ReactNode;\n pagination?:\n | boolean\n | Omit<React.ComponentProps<typeof DataTablePagination<TData>>, \"table\">;\n sticky?: boolean | { offsetHeader?: number; offsetScroll?: number };\n bordered?: boolean;\n loading?: boolean;\n footer?: (currentPageData: TData[]) => React.ReactNode;\n}\n\nexport function DataTable<TData>({\n table,\n actionBar,\n children,\n className,\n pagination = true,\n sticky,\n bordered,\n loading,\n footer,\n ...props\n}: DataTableProps<TData>) {\n return (\n <div\n className={cn(\n \"ds:flex ds:w-full ds:flex-col ds:gap-2.5 ds:relative\",\n className\n )}\n {...props}\n >\n {children}\n {loading && (\n <div className=\"ds:absolute ds:inset-0 ds:bg-background/50 ds:flex ds:items-center ds:justify-center ds:z-20\">\n Loading...\n </div>\n )}\n <div\n className={cn(\n \"ds:overflow-auto ds:rounded-md ds:border ds:border-border\",\n loading && \"ds:blur-sm\"\n )}\n >\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{\n ...getCommonPinningStyles({ column: header.column }),\n }}\n >\n {header.isPlaceholder ? null : header.column.columnDef\n .header ? (\n typeof header.column.columnDef.header === \"function\" ? (\n flexRender(\n header.column.columnDef.header,\n header.getContext()\n )\n ) : (\n <DataTableColumnHeader column={header.column} />\n )\n ) : null}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n style={{\n ...getCommonPinningStyles({ column: cell.column }),\n }}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={table.getAllColumns().length}\n className=\"ds:h-24 ds:text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n {footer && (\n <tfoot>\n <TableRow>\n <TableCell colSpan={table.getAllColumns().length}>\n {footer(table.getRowModel().rows.map((row) => row.original))}\n </TableCell>\n </TableRow>\n </tfoot>\n )}\n </Table>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-2.5\">\n {pagination && (\n <DataTablePagination\n table={table}\n {...(pagination === true ? {} : pagination)}\n />\n )}\n {actionBar &&\n table.getFilteredSelectedRowModel().rows.length > 0 &&\n actionBar}\n </div>\n </div>\n );\n}\n"],"names":["DataTable","table","actionBar","children","className","pagination","sticky","bordered","loading","footer","props","jsxs","cn","jsx","Table","TableHeader","headerGroup","TableRow","header","TableHead","getCommonPinningStyles","flexRender","DataTableColumnHeader","TableBody","row","cell","TableCell","DataTablePagination"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,SAASA,GAAiB;AAAA,EAC/B,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,GAA0B;AACxB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAR;AAAA,MAAA;AAAA,MAED,GAAGM;AAAA,MAEH,UAAA;AAAA,QAAAP;AAAA,QACAK,KACC,gBAAAK,EAAC,OAAA,EAAI,WAAU,gGAA+F,UAAA,cAE9G;AAAA,QAEF,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACAJ,KAAW;AAAA,YAAA;AAAA,YAGb,4BAACM,GAAA,EACC,UAAA;AAAA,cAAA,gBAAAD,EAACE,GAAA,EACE,UAAAd,EAAM,gBAAA,EAAkB,IAAI,CAACe,MAC5B,gBAAAH,EAACI,GAAA,EACE,UAAAD,EAAY,QAAQ,IAAI,CAACE,MACxB,gBAAAL;AAAA,gBAACM;AAAA,gBAAA;AAAA,kBAEC,SAASD,EAAO;AAAA,kBAChB,OAAO;AAAA,oBACL,GAAGE,EAAuB,EAAE,QAAQF,EAAO,QAAQ;AAAA,kBAAA;AAAA,kBAGpD,UAAAA,EAAO,gBAAgB,OAAOA,EAAO,OAAO,UACxC,SACH,OAAOA,EAAO,OAAO,UAAU,UAAW,aACxCG;AAAA,oBACEH,EAAO,OAAO,UAAU;AAAA,oBACxBA,EAAO,WAAA;AAAA,kBAAW,IAGpB,gBAAAL,EAACS,GAAA,EAAsB,QAAQJ,EAAO,QAAQ,IAE9C;AAAA,gBAAA;AAAA,gBAhBCA,EAAO;AAAA,cAAA,CAkBf,KArBYF,EAAY,EAsB3B,CACD,EAAA,CACH;AAAA,cACA,gBAAAH,EAACU,GAAA,EACE,UAAAtB,EAAM,YAAA,EAAc,MAAM,SACzBA,EAAM,YAAA,EAAc,KAAK,IAAI,CAACuB,MAC5B,gBAAAX;AAAA,gBAACI;AAAA,gBAAA;AAAA,kBAEC,cAAYO,EAAI,cAAA,KAAmB;AAAA,kBAElC,UAAAA,EAAI,gBAAA,EAAkB,IAAI,CAACC,MAC1B,gBAAAZ;AAAA,oBAACa;AAAA,oBAAA;AAAA,sBAEC,OAAO;AAAA,wBACL,GAAGN,EAAuB,EAAE,QAAQK,EAAK,QAAQ;AAAA,sBAAA;AAAA,sBAGlD,UAAAJ;AAAA,wBACCI,EAAK,OAAO,UAAU;AAAA,wBACtBA,EAAK,WAAA;AAAA,sBAAW;AAAA,oBAClB;AAAA,oBARKA,EAAK;AAAA,kBAAA,CAUb;AAAA,gBAAA;AAAA,gBAfID,EAAI;AAAA,cAAA,CAiBZ,IAED,gBAAAX,EAACI,GAAA,EACC,UAAA,gBAAAJ;AAAA,gBAACa;AAAA,gBAAA;AAAA,kBACC,SAASzB,EAAM,cAAA,EAAgB;AAAA,kBAC/B,WAAU;AAAA,kBACX,UAAA;AAAA,gBAAA;AAAA,cAAA,GAGH,EAAA,CAEJ;AAAA,cACCQ,KACC,gBAAAI,EAAC,SAAA,EACC,UAAA,gBAAAA,EAACI,GAAA,EACC,4BAACS,GAAA,EAAU,SAASzB,EAAM,cAAA,EAAgB,QACvC,YAAOA,EAAM,YAAA,EAAc,KAAK,IAAI,CAACuB,MAAQA,EAAI,QAAQ,CAAC,EAAA,CAC7D,EAAA,CACF,EAAA,CACF;AAAA,YAAA,EAAA,CAEJ;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,gBAAAb,EAAC,OAAA,EAAI,WAAU,kCACZ,UAAA;AAAA,UAAAN,KACC,gBAAAQ;AAAA,YAACc;AAAA,YAAA;AAAA,cACC,OAAA1B;AAAA,cACC,GAAII,MAAe,KAAO,KAAKA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnCH,KACCD,EAAM,4BAAA,EAA8B,KAAK,SAAS,KAClDC;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-column.js","sources":["../../../../src/components/Table/select-column.tsx"],"sourcesContent":["import type {\n CellContext,\n ColumnDef,\n HeaderContext,\n} from \"@tanstack/react-table\";\nimport { Checkbox } from \"@/components/Checkbox\";\n\nfunction createSelectColumn<TData>(\n props?: Partial<ColumnDef<TData>>\n): ColumnDef<TData> {\n return {\n id: \"select\",\n header: ({ table }: HeaderContext<TData, unknown>) => (\n <div className=\"ds:flex ds:items-center ds:justify-center\">\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all\"\n />\n </div>\n ),\n cell: ({ row }: CellContext<TData, unknown>) => (\n <div className=\"ds:flex ds:items-center ds:justify-center\">\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Select row\"\n />\n </div>\n ),\n size: 36,\n enableSorting: false,\n enableHiding: false,\n enableColumnFilter: false,\n ...props,\n };\n}\n\nexport const selectColumn = createSelectColumn;\n"],"names":["createSelectColumn","props","table","jsx","Checkbox","value","row","selectColumn"],"mappings":";;AAOA,SAASA,EACPC,GACkB;AAClB,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ,CAAC,EAAE,OAAAC,EAAA,MACT,gBAAAC,EAAC,OAAA,EAAI,WAAU,6CACb,UAAA,gBAAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SACEF,EAAM,yBAAA,KACLA,EAAM,+BAA+B;AAAA,QAExC,iBAAiB,CAACG,MAAUH,EAAM,0BAA0B,CAAC,CAACG,CAAK;AAAA,QACnE,cAAW;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IAEF,MAAM,CAAC,EAAE,KAAAC,EAAA,MACP,gBAAAH,EAAC,OAAA,EAAI,WAAU,6CACb,UAAA,gBAAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAASE,EAAI,cAAA;AAAA,QACb,iBAAiB,CAACD,MAAUC,EAAI,eAAe,CAAC,CAACD,CAAK;AAAA,QACtD,cAAW;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IAEF,MAAM;AAAA,IACN,eAAe;AAAA,IACf,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,GAAGJ;AAAA,EAAA;AAEP;AAEO,MAAMM,IAAeP;"}
|