@sth87/shadcn-design-system 0.0.35 → 0.1.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/README.md +20 -2
- package/dist/AI_CONTEXT.md +212 -214
- package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/cjs/components/Badge/Badge.cjs +1 -1
- package/dist/cjs/components/Badge/Badge.cjs.map +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/cjs/components/Command/Command.cjs +1 -1
- package/dist/cjs/components/Command/Command.cjs.map +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/cjs/components/FloatLabel.cjs +1 -1
- package/dist/cjs/components/FloatLabel.cjs.map +1 -1
- package/dist/cjs/components/Glass/Glass.cjs +1 -1
- package/dist/cjs/components/Glass/Glass.cjs.map +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs.map +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs.map +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs.map +1 -1
- package/dist/cjs/components/Radio/Radio.cjs +1 -1
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
- package/dist/cjs/components/Rate/Rate.cjs +1 -1
- package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs.map +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/cjs/components/Select/Select.cjs +1 -1
- package/dist/cjs/components/Select/Select.cjs.map +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs +2 -2
- package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table.cjs +1 -1
- package/dist/cjs/components/Table/data-table.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Tabs/classes.cjs +1 -1
- package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/cjs/components/TimeGridView.cjs +1 -1
- package/dist/cjs/components/TimeGridView.cjs.map +1 -1
- package/dist/cjs/components/Toast/Toast.cjs +1 -1
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/Tour/Tour.cjs +1 -1
- package/dist/cjs/components/Tour/Tour.cjs.map +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs.map +1 -1
- package/dist/cjs/components/Upload/Upload.cjs +3 -3
- package/dist/cjs/components/Upload/Upload.cjs.map +1 -1
- package/dist/cjs/components/WheelColumn.cjs +1 -1
- package/dist/cjs/components/WheelColumn.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +2 -2
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +1 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +1 -0
- package/dist/cjs/packages/ui/src/components/accordion.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/accordion.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +1 -1
- package/dist/cjs/styles/index.css +1 -1
- package/dist/cjs/utils/animations.cjs +1 -1
- package/dist/cjs/utils/animations.cjs.map +1 -1
- package/dist/cjs/utils/css.cjs +1 -1
- package/dist/cjs/utils/css.cjs.map +1 -1
- package/dist/cjs/utils/parsers.cjs +1 -1
- package/dist/cjs/utils/parsers.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +60 -60
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.js +40 -40
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Badge/Badge.js +1 -1
- package/dist/esm/components/Badge/Badge.js.map +1 -1
- package/dist/esm/components/Breadcrumb/Breadcrumb.js +36 -36
- package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/esm/components/Button/Button.js +9 -9
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +4 -4
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Carousel/Carousel.js +165 -165
- package/dist/esm/components/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +26 -26
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Collapsible/Collapsible.js +43 -43
- package/dist/esm/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/Command/Command.js +28 -28
- package/dist/esm/components/Command/Command.js.map +1 -1
- package/dist/esm/components/ContextMenu/ContextMenu.js +11 -11
- package/dist/esm/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/esm/components/Cropper/Cropper.js +132 -132
- package/dist/esm/components/Cropper/Cropper.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +75 -75
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/RangePicker.js +136 -136
- package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/TimePicker.js +150 -150
- package/dist/esm/components/DatePicker/TimePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +114 -114
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +13 -13
- package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/esm/components/FloatLabel.js +44 -44
- package/dist/esm/components/FloatLabel.js.map +1 -1
- package/dist/esm/components/Glass/Glass.js +15 -15
- package/dist/esm/components/Glass/Glass.js.map +1 -1
- package/dist/esm/components/ImageViewer/ImageViewer.js +53 -53
- package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
- package/dist/esm/components/Input/Input.js +104 -104
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/InputOTP/InputOTP.js +16 -16
- package/dist/esm/components/InputOTP/InputOTP.js.map +1 -1
- package/dist/esm/components/Interactive/CursorFollow.js +49 -49
- package/dist/esm/components/Interactive/CursorFollow.js.map +1 -1
- package/dist/esm/components/Marquee/Marquee.js +130 -130
- package/dist/esm/components/Marquee/Marquee.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +68 -68
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/QrCode/QrCode.js +37 -37
- package/dist/esm/components/QrCode/QrCode.js.map +1 -1
- package/dist/esm/components/Radio/Radio.js +16 -16
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Rate/Rate.js +62 -62
- package/dist/esm/components/Rate/Rate.js.map +1 -1
- package/dist/esm/components/Resizable/Resizable.js +6 -6
- package/dist/esm/components/Resizable/Resizable.js.map +1 -1
- package/dist/esm/components/ScrollArea/ScrollArea.js +10 -10
- package/dist/esm/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/esm/components/Select/Select.js +64 -64
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Sheet/Sheet.js +21 -21
- package/dist/esm/components/Sheet/Sheet.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +54 -54
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Stepper/Stepper.js +198 -198
- package/dist/esm/components/Stepper/Stepper.js.map +1 -1
- package/dist/esm/components/Stepper/StepperWrapper.js +15 -15
- package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +38 -38
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +37 -37
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +25 -25
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +64 -64
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
- package/dist/esm/components/Table/data-table-column-header.js +18 -18
- package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
- package/dist/esm/components/Table/data-table-pagination.js +21 -21
- package/dist/esm/components/Table/data-table-pagination.js.map +1 -1
- package/dist/esm/components/Table/data-table.js +18 -18
- package/dist/esm/components/Table/data-table.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +242 -242
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/classes.js +51 -51
- package/dist/esm/components/Tabs/classes.js.map +1 -1
- package/dist/esm/components/Textarea/Textarea.js +49 -49
- package/dist/esm/components/Textarea/Textarea.js.map +1 -1
- package/dist/esm/components/TimeGridView.js +12 -12
- package/dist/esm/components/TimeGridView.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +45 -45
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +19 -19
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tour/Tour.js +11 -11
- package/dist/esm/components/Tour/Tour.js.map +1 -1
- package/dist/esm/components/Tour/TourWrapper.js +15 -15
- package/dist/esm/components/Tour/TourWrapper.js.map +1 -1
- package/dist/esm/components/Upload/Upload.js +405 -405
- package/dist/esm/components/Upload/Upload.js.map +1 -1
- package/dist/esm/components/WheelColumn.js +47 -47
- package/dist/esm/components/WheelColumn.js.map +1 -1
- package/dist/esm/lib/TextAnimation/BlurText.js +18 -18
- package/dist/esm/lib/TextAnimation/BlurText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/CircularText.js +7 -7
- package/dist/esm/lib/TextAnimation/CircularText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/FlipWords.js +21 -21
- package/dist/esm/lib/TextAnimation/FlipWords.js.map +1 -1
- package/dist/esm/lib/TextAnimation/GradientText.js +4 -4
- package/dist/esm/lib/TextAnimation/GradientText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RollingText.js +24 -24
- package/dist/esm/lib/TextAnimation/RollingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RotatingText.js +6 -6
- package/dist/esm/lib/TextAnimation/RotatingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/ShimmeringText.js +9 -9
- package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +14 -14
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js +9 -9
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js +3 -3
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TypingText.js +17 -17
- package/dist/esm/lib/TextAnimation/TypingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/WritingText.js +10 -10
- package/dist/esm/lib/TextAnimation/WritingText.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +1 -0
- package/dist/esm/packages/ui/src/components/accordion.js +31 -31
- package/dist/esm/packages/ui/src/components/accordion.js.map +1 -1
- package/dist/esm/packages/ui/src/components/alert-dialog.js +33 -33
- package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/avatar.js +20 -20
- package/dist/esm/packages/ui/src/components/avatar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/badge.js +53 -53
- package/dist/esm/packages/ui/src/components/badge.js.map +1 -1
- package/dist/esm/packages/ui/src/components/breadcrumb.js +20 -20
- package/dist/esm/packages/ui/src/components/breadcrumb.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button-group.js +31 -31
- package/dist/esm/packages/ui/src/components/button-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button.js +90 -90
- package/dist/esm/packages/ui/src/components/button.js.map +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js +94 -94
- package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/checkbox.js +47 -47
- package/dist/esm/packages/ui/src/components/checkbox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/combobox.js +64 -64
- package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/command.js +77 -77
- package/dist/esm/packages/ui/src/components/command.js.map +1 -1
- package/dist/esm/packages/ui/src/components/context-menu.js +76 -76
- package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dialog.js +54 -54
- package/dist/esm/packages/ui/src/components/dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/drawer.js +39 -39
- package/dist/esm/packages/ui/src/components/drawer.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dropdown-menu.js +109 -109
- package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input-otp.js +30 -30
- package/dist/esm/packages/ui/src/components/input-otp.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input.js +19 -19
- package/dist/esm/packages/ui/src/components/input.js.map +1 -1
- package/dist/esm/packages/ui/src/components/label.js +9 -9
- package/dist/esm/packages/ui/src/components/label.js.map +1 -1
- package/dist/esm/packages/ui/src/components/pagination.js +26 -26
- package/dist/esm/packages/ui/src/components/pagination.js.map +1 -1
- package/dist/esm/packages/ui/src/components/popover.js +13 -13
- package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
- package/dist/esm/packages/ui/src/components/radio-group.js +45 -45
- package/dist/esm/packages/ui/src/components/radio-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/resizable.js +18 -18
- package/dist/esm/packages/ui/src/components/resizable.js.map +1 -1
- package/dist/esm/packages/ui/src/components/scroll-area.js +31 -31
- package/dist/esm/packages/ui/src/components/scroll-area.js.map +1 -1
- package/dist/esm/packages/ui/src/components/select.js +119 -119
- package/dist/esm/packages/ui/src/components/select.js.map +1 -1
- package/dist/esm/packages/ui/src/components/separator.js +86 -86
- package/dist/esm/packages/ui/src/components/separator.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sheet.js +50 -50
- package/dist/esm/packages/ui/src/components/sheet.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sidebar.js +198 -198
- package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/skeleton.js +3 -3
- package/dist/esm/packages/ui/src/components/skeleton.js.map +1 -1
- package/dist/esm/packages/ui/src/components/switch.js +57 -57
- package/dist/esm/packages/ui/src/components/switch.js.map +1 -1
- package/dist/esm/packages/ui/src/components/table.js +17 -17
- package/dist/esm/packages/ui/src/components/table.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tabs.js +33 -33
- package/dist/esm/packages/ui/src/components/tabs.js.map +1 -1
- package/dist/esm/packages/ui/src/components/textarea.js +17 -17
- package/dist/esm/packages/ui/src/components/textarea.js.map +1 -1
- package/dist/esm/packages/ui/src/components/toggle.js +36 -36
- package/dist/esm/packages/ui/src/components/toggle.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tooltip.js +20 -20
- package/dist/esm/packages/ui/src/components/tooltip.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tree-view.js +218 -218
- package/dist/esm/packages/ui/src/components/tree-view.js.map +1 -1
- package/dist/esm/styles/index.css +1 -1
- package/dist/esm/utils/animations.js +55 -55
- package/dist/esm/utils/animations.js.map +1 -1
- package/dist/esm/utils/css.js +7 -7
- package/dist/esm/utils/css.js.map +1 -1
- package/dist/esm/utils/parsers.js +1 -1
- package/dist/types/components/DatePicker/RangePicker.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TypingText.d.ts.map +1 -1
- package/package.json +1 -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/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/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 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.cjs +0 -0
- /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 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as t, jsxs as y, Fragment as V } from "react/jsx-runtime";
|
|
2
2
|
import Q, { useState as x, useRef as W } from "react";
|
|
3
3
|
import { StarHalf as X, Star as Y } from "lucide-react";
|
|
4
4
|
import { cn as D } from "../../packages/ui/src/lib/utils.js";
|
|
@@ -11,20 +11,20 @@ const Z = Q.forwardRef(
|
|
|
11
11
|
allowClear: k = !0,
|
|
12
12
|
size: i = "middle",
|
|
13
13
|
color: b = "warning",
|
|
14
|
-
character:
|
|
14
|
+
character: d,
|
|
15
15
|
className: A,
|
|
16
16
|
style: E,
|
|
17
|
-
disabled:
|
|
17
|
+
disabled: l = !1,
|
|
18
18
|
autoFocus: F = !1,
|
|
19
19
|
keyboard: L = !0,
|
|
20
|
-
tooltips:
|
|
21
|
-
onChange:
|
|
20
|
+
tooltips: f,
|
|
21
|
+
onChange: m,
|
|
22
22
|
onHoverChange: M,
|
|
23
23
|
onFocus: $,
|
|
24
24
|
onBlur: j,
|
|
25
25
|
onKeyDown: B
|
|
26
26
|
}, u) => {
|
|
27
|
-
const [K,
|
|
27
|
+
const [K, v] = x(_), [o, R] = x(null), C = W(null), n = N !== void 0 ? N : K, S = {
|
|
28
28
|
small: 20,
|
|
29
29
|
middle: 24,
|
|
30
30
|
large: 32
|
|
@@ -37,73 +37,73 @@ const Z = Q.forwardRef(
|
|
|
37
37
|
success: "text-success [&_svg]:fill-success",
|
|
38
38
|
error: "text-error [&_svg]:fill-error",
|
|
39
39
|
warning: "text-yellow-400 [&_svg]:fill-yellow-400"
|
|
40
|
-
},
|
|
41
|
-
if (
|
|
42
|
-
const
|
|
43
|
-
k &&
|
|
44
|
-
}, h = (e,
|
|
45
|
-
if (
|
|
46
|
-
const
|
|
47
|
-
R(
|
|
40
|
+
}, p = (e, s) => {
|
|
41
|
+
if (l) return;
|
|
42
|
+
const r = s ? e + 0.5 : e + 1;
|
|
43
|
+
k && r === n ? (v(0), m?.(0)) : (v(r), m?.(r));
|
|
44
|
+
}, h = (e, s) => {
|
|
45
|
+
if (l) return;
|
|
46
|
+
const r = s ? e + 0.5 : e + 1;
|
|
47
|
+
R(r), M?.(r);
|
|
48
48
|
}, P = () => {
|
|
49
49
|
R(null), M?.(0);
|
|
50
50
|
}, T = (e) => {
|
|
51
|
-
if (!L ||
|
|
51
|
+
if (!L || l) return;
|
|
52
52
|
B?.(e);
|
|
53
|
-
const
|
|
54
|
-
let
|
|
53
|
+
const s = a ? 0.5 : 1;
|
|
54
|
+
let r = n;
|
|
55
55
|
switch (e.key) {
|
|
56
56
|
case "ArrowRight":
|
|
57
57
|
case "ArrowUp":
|
|
58
|
-
e.preventDefault(),
|
|
58
|
+
e.preventDefault(), r = Math.min(n + s, c);
|
|
59
59
|
break;
|
|
60
60
|
case "ArrowLeft":
|
|
61
61
|
case "ArrowDown":
|
|
62
|
-
e.preventDefault(),
|
|
62
|
+
e.preventDefault(), r = Math.max(n - s, 0);
|
|
63
63
|
break;
|
|
64
64
|
case "Home":
|
|
65
|
-
e.preventDefault(),
|
|
65
|
+
e.preventDefault(), r = a ? 0.5 : 1;
|
|
66
66
|
break;
|
|
67
67
|
case "End":
|
|
68
|
-
e.preventDefault(),
|
|
68
|
+
e.preventDefault(), r = c;
|
|
69
69
|
break;
|
|
70
70
|
default:
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
v(r), m?.(r);
|
|
74
74
|
}, U = () => {
|
|
75
75
|
$?.();
|
|
76
76
|
}, q = () => {
|
|
77
77
|
j?.();
|
|
78
78
|
}, z = (e) => {
|
|
79
|
-
const
|
|
80
|
-
return
|
|
79
|
+
const s = o !== null ? o : n;
|
|
80
|
+
return s >= e + 1 ? 100 : s > e && s < e + 1 ? (s - e) * 100 : 0;
|
|
81
81
|
}, G = (e) => {
|
|
82
82
|
if (!a) return !1;
|
|
83
|
-
const
|
|
84
|
-
return
|
|
85
|
-
}, g = (e = !1) => typeof
|
|
83
|
+
const r = (o !== null ? o : n) - e;
|
|
84
|
+
return r > 0 && r <= 0.5;
|
|
85
|
+
}, g = (e = !1) => typeof d == "function" ? d({
|
|
86
86
|
count: c,
|
|
87
87
|
value: n,
|
|
88
88
|
defaultValue: _,
|
|
89
89
|
allowHalf: a,
|
|
90
90
|
allowClear: k,
|
|
91
91
|
size: i,
|
|
92
|
-
disabled:
|
|
93
|
-
}) : e ? /* @__PURE__ */
|
|
94
|
-
if (!(!
|
|
95
|
-
return
|
|
92
|
+
disabled: l
|
|
93
|
+
}) : e ? /* @__PURE__ */ t(X, { className: "ds:w-full ds:h-full" }) : d || /* @__PURE__ */ t(Y, { className: "ds:w-full ds:h-full" }), J = (e) => {
|
|
94
|
+
if (!(!f || !f[e]))
|
|
95
|
+
return f[e];
|
|
96
96
|
};
|
|
97
|
-
return /* @__PURE__ */
|
|
97
|
+
return /* @__PURE__ */ t(
|
|
98
98
|
"div",
|
|
99
99
|
{
|
|
100
100
|
ref: (e) => {
|
|
101
101
|
C.current = e, typeof u == "function" ? u(e) : u && (u.current = e);
|
|
102
102
|
},
|
|
103
103
|
className: D(
|
|
104
|
-
"inline-flex items-center gap-1",
|
|
105
|
-
|
|
106
|
-
!
|
|
104
|
+
"ds:inline-flex ds:items-center ds:gap-1",
|
|
105
|
+
l && "ds:opacity-50 ds:cursor-not-allowed",
|
|
106
|
+
!l && "ds:cursor-pointer",
|
|
107
107
|
A
|
|
108
108
|
),
|
|
109
109
|
style: E,
|
|
@@ -111,74 +111,74 @@ const Z = Q.forwardRef(
|
|
|
111
111
|
onKeyDown: T,
|
|
112
112
|
onFocus: U,
|
|
113
113
|
onBlur: q,
|
|
114
|
-
tabIndex:
|
|
114
|
+
tabIndex: l ? -1 : 0,
|
|
115
115
|
role: "slider",
|
|
116
116
|
"aria-label": "Rate",
|
|
117
117
|
"aria-valuemin": 0,
|
|
118
118
|
"aria-valuemax": c,
|
|
119
119
|
"aria-valuenow": n,
|
|
120
|
-
"aria-disabled":
|
|
120
|
+
"aria-disabled": l,
|
|
121
121
|
autoFocus: F,
|
|
122
|
-
children: Array.from({ length: c }, (e,
|
|
123
|
-
const
|
|
124
|
-
return /* @__PURE__ */ y("div", { className: "relative group", title: w, children: [
|
|
122
|
+
children: Array.from({ length: c }, (e, s) => {
|
|
123
|
+
const r = z(s), w = J(s), O = G(s);
|
|
124
|
+
return /* @__PURE__ */ y("div", { className: "ds:relative ds:group", title: w, children: [
|
|
125
125
|
/* @__PURE__ */ y(
|
|
126
126
|
"div",
|
|
127
127
|
{
|
|
128
|
-
className: "relative inline-flex",
|
|
128
|
+
className: "ds:relative ds:inline-flex",
|
|
129
129
|
style: {
|
|
130
130
|
width: `${S[i]}px`,
|
|
131
131
|
height: `${S[i]}px`
|
|
132
132
|
},
|
|
133
133
|
children: [
|
|
134
|
-
/* @__PURE__ */
|
|
135
|
-
|
|
134
|
+
/* @__PURE__ */ t("div", { className: "ds:text-muted-foreground/30 ds:pointer-events-none", children: g(!1) }),
|
|
135
|
+
r > 0 && /* @__PURE__ */ t(
|
|
136
136
|
"div",
|
|
137
137
|
{
|
|
138
138
|
className: D(
|
|
139
|
-
"absolute inset-0 pointer-events-none",
|
|
139
|
+
"ds:absolute ds:inset-0 ds:pointer-events-none",
|
|
140
140
|
H[b]
|
|
141
141
|
),
|
|
142
|
-
children: O ? g(!0) : /* @__PURE__ */
|
|
142
|
+
children: O ? g(!0) : /* @__PURE__ */ t(
|
|
143
143
|
"div",
|
|
144
144
|
{
|
|
145
|
-
className: "overflow-hidden",
|
|
146
|
-
style: { width: `${
|
|
145
|
+
className: "ds:overflow-hidden",
|
|
146
|
+
style: { width: `${r}%` },
|
|
147
147
|
children: g(!1)
|
|
148
148
|
}
|
|
149
149
|
)
|
|
150
150
|
}
|
|
151
151
|
),
|
|
152
|
-
!
|
|
153
|
-
/* @__PURE__ */
|
|
152
|
+
!l && /* @__PURE__ */ t(V, { children: a ? /* @__PURE__ */ y(V, { children: [
|
|
153
|
+
/* @__PURE__ */ t(
|
|
154
154
|
"div",
|
|
155
155
|
{
|
|
156
|
-
className: "absolute inset-0 w-1/2 cursor-pointer",
|
|
157
|
-
onClick: () =>
|
|
158
|
-
onMouseEnter: () => h(
|
|
156
|
+
className: "ds:absolute ds:inset-0 ds:w-1/2 ds:cursor-pointer",
|
|
157
|
+
onClick: () => p(s, !0),
|
|
158
|
+
onMouseEnter: () => h(s, !0)
|
|
159
159
|
}
|
|
160
160
|
),
|
|
161
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ t(
|
|
162
162
|
"div",
|
|
163
163
|
{
|
|
164
|
-
className: "absolute inset-0 left-1/2 w-1/2 cursor-pointer",
|
|
165
|
-
onClick: () =>
|
|
166
|
-
onMouseEnter: () => h(
|
|
164
|
+
className: "ds:absolute ds:inset-0 ds:left-1/2 ds:w-1/2 ds:cursor-pointer",
|
|
165
|
+
onClick: () => p(s, !1),
|
|
166
|
+
onMouseEnter: () => h(s, !1)
|
|
167
167
|
}
|
|
168
168
|
)
|
|
169
|
-
] }) : /* @__PURE__ */
|
|
169
|
+
] }) : /* @__PURE__ */ t(
|
|
170
170
|
"div",
|
|
171
171
|
{
|
|
172
|
-
className: "absolute inset-0 cursor-pointer",
|
|
173
|
-
onClick: () =>
|
|
174
|
-
onMouseEnter: () => h(
|
|
172
|
+
className: "ds:absolute ds:inset-0 ds:cursor-pointer",
|
|
173
|
+
onClick: () => p(s, !1),
|
|
174
|
+
onMouseEnter: () => h(s, !1)
|
|
175
175
|
}
|
|
176
176
|
) })
|
|
177
177
|
]
|
|
178
178
|
}
|
|
179
179
|
),
|
|
180
|
-
w && (o ===
|
|
181
|
-
] },
|
|
180
|
+
w && (o === s + 1 || a && o === s + 0.5) && /* @__PURE__ */ t("div", { className: "ds:absolute ds:top-full ds:left-1/2 ds:-translate-x-1/2 ds:mt-1 ds:px-2 ds:py-1 ds:text-xs ds:bg-foreground ds:text-background ds:rounded ds:whitespace-nowrap ds:z-10", children: w })
|
|
181
|
+
] }, s);
|
|
182
182
|
})
|
|
183
183
|
}
|
|
184
184
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rate.js","sources":["../../../../src/components/Rate/Rate.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useRef } from \"react\";\nimport type { KeyboardEvent } from \"react\";\nimport { Star, StarHalf } from \"lucide-react\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport interface RateProps {\n // Display\n count?: number;\n value?: number;\n defaultValue?: number;\n allowHalf?: boolean;\n allowClear?: boolean;\n\n // Appearance\n size?: \"small\" | \"middle\" | \"large\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n character?: React.ReactNode | ((rateProps: RateProps) => React.ReactNode);\n className?: string;\n style?: React.CSSProperties;\n\n // Interaction\n disabled?: boolean;\n autoFocus?: boolean;\n keyboard?: boolean;\n\n // Tooltips\n tooltips?: string[];\n\n // Callbacks\n onChange?: (value: number) => void;\n onHoverChange?: (value: number) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void;\n}\n\nconst Rate = React.forwardRef<HTMLDivElement, RateProps>(\n (\n {\n count = 5,\n value: controlledValue,\n defaultValue = 0,\n allowHalf = false,\n allowClear = true,\n size = \"middle\",\n color = \"warning\",\n character,\n className,\n style,\n disabled = false,\n autoFocus = false,\n keyboard = true,\n tooltips,\n onChange,\n onHoverChange,\n onFocus,\n onBlur,\n onKeyDown,\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Use controlled or uncontrolled value\n const value =\n controlledValue !== undefined ? controlledValue : internalValue;\n\n // Size in pixels\n const sizeMap = {\n small: 20,\n middle: 24,\n large: 32,\n };\n\n // Color mapping for filled stars\n const colorMap = {\n primary: \"text-primary [&_svg]:fill-primary\",\n secondary: \"text-secondary [&_svg]:fill-secondary\",\n accent: \"text-accent [&_svg]:fill-accent\",\n destructive: \"text-destructive [&_svg]:fill-destructive\",\n muted: \"text-muted-foreground [&_svg]:fill-muted-foreground\",\n success: \"text-success [&_svg]:fill-success\",\n error: \"text-error [&_svg]:fill-error\",\n warning: \"text-yellow-400 [&_svg]:fill-yellow-400\",\n };\n\n // Handle star click\n const handleStarClick = (starIndex: number, isHalf: boolean) => {\n if (disabled) return;\n\n const newValue = isHalf ? starIndex + 0.5 : starIndex + 1;\n\n // If clicking the same value and allowClear is true, clear the rating\n if (allowClear && newValue === value) {\n setInternalValue(0);\n onChange?.(0);\n } else {\n setInternalValue(newValue);\n onChange?.(newValue);\n }\n };\n\n // Handle star hover\n const handleStarHover = (starIndex: number, isHalf: boolean) => {\n if (disabled) return;\n\n const newHoverValue = isHalf ? starIndex + 0.5 : starIndex + 1;\n setHoverValue(newHoverValue);\n onHoverChange?.(newHoverValue);\n };\n\n // Handle mouse leave\n const handleMouseLeave = () => {\n setHoverValue(null);\n onHoverChange?.(0);\n };\n\n // Handle keyboard navigation\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (!keyboard || disabled) return;\n\n onKeyDown?.(event);\n\n const step = allowHalf ? 0.5 : 1;\n let newValue = value;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n event.preventDefault();\n newValue = Math.min(value + step, count);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n event.preventDefault();\n newValue = Math.max(value - step, 0);\n break;\n case \"Home\":\n event.preventDefault();\n newValue = allowHalf ? 0.5 : 1;\n break;\n case \"End\":\n event.preventDefault();\n newValue = count;\n break;\n default:\n return;\n }\n\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n // Handle focus\n const handleFocus = () => {\n onFocus?.();\n };\n\n // Handle blur\n const handleBlur = () => {\n onBlur?.();\n };\n\n // Get star fill percentage\n const getStarFill = (starIndex: number) => {\n const currentValue = hoverValue !== null ? hoverValue : value;\n\n if (currentValue >= starIndex + 1) {\n return 100; // Full star\n } else if (currentValue > starIndex && currentValue < starIndex + 1) {\n return (currentValue - starIndex) * 100; // Partial star\n }\n return 0; // Empty star\n };\n\n // Check if star should show as half\n const isHalfStar = (starIndex: number) => {\n if (!allowHalf) return false;\n const currentValue = hoverValue !== null ? hoverValue : value;\n const fill = currentValue - starIndex;\n return fill > 0 && fill <= 0.5;\n };\n\n // Render character\n const renderCharacter = (isHalf: boolean = false) => {\n if (typeof character === \"function\") {\n return character({\n count,\n value,\n defaultValue,\n allowHalf,\n allowClear,\n size,\n disabled,\n });\n }\n if (isHalf) {\n return <StarHalf className=\"w-full h-full\" />;\n }\n return character || <Star className=\"w-full h-full\" />;\n };\n\n // Get tooltip for star\n const getTooltip = (starIndex: number) => {\n if (!tooltips || !tooltips[starIndex]) return undefined;\n return tooltips[starIndex];\n };\n\n return (\n <div\n ref={(node) => {\n containerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"inline-flex items-center gap-1\",\n disabled && \"opacity-50 cursor-not-allowed\",\n !disabled && \"cursor-pointer\",\n className\n )}\n style={style}\n onMouseLeave={handleMouseLeave}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-label=\"Rate\"\n aria-valuemin={0}\n aria-valuemax={count}\n aria-valuenow={value}\n aria-disabled={disabled}\n autoFocus={autoFocus}\n >\n {Array.from({ length: count }, (_, index) => {\n const fillPercentage = getStarFill(index);\n const tooltip = getTooltip(index);\n const showHalfStar = isHalfStar(index);\n\n return (\n <div key={index} className=\"relative group\" title={tooltip}>\n {/* Container for half stars */}\n <div\n className=\"relative inline-flex\"\n style={{\n width: `${sizeMap[size]}px`,\n height: `${sizeMap[size]}px`,\n }}\n >\n {/* Empty star background */}\n <div className=\"text-muted-foreground/30 pointer-events-none\">\n {renderCharacter(false)}\n </div>\n\n {/* Filled star overlay */}\n {fillPercentage > 0 && (\n <div\n className={cn(\n \"absolute inset-0 pointer-events-none\",\n colorMap[color]\n )}\n >\n {showHalfStar ? (\n renderCharacter(true)\n ) : (\n <div\n className=\"overflow-hidden\"\n style={{ width: `${fillPercentage}%` }}\n >\n {renderCharacter(false)}\n </div>\n )}\n </div>\n )}\n\n {/* Interactive overlay for clicking and hovering */}\n {!disabled && (\n <>\n {allowHalf ? (\n <>\n {/* Left half */}\n <div\n className=\"absolute inset-0 w-1/2 cursor-pointer\"\n onClick={() => handleStarClick(index, true)}\n onMouseEnter={() => handleStarHover(index, true)}\n />\n {/* Right half */}\n <div\n className=\"absolute inset-0 left-1/2 w-1/2 cursor-pointer\"\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n </>\n ) : (\n <div\n className=\"absolute inset-0 cursor-pointer\"\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n )}\n </>\n )}\n </div>\n\n {/* Show tooltip text below star on hover */}\n {tooltip &&\n (hoverValue === index + 1 ||\n (allowHalf && hoverValue === index + 0.5)) && (\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 mt-1 px-2 py-1 text-xs bg-foreground text-background rounded whitespace-nowrap z-10\">\n {tooltip}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n);\n\nRate.displayName = \"Rate\";\n\nexport default Rate;\n"],"names":["Rate","React","count","controlledValue","defaultValue","allowHalf","allowClear","size","color","character","className","style","disabled","autoFocus","keyboard","tooltips","onChange","onHoverChange","onFocus","onBlur","onKeyDown","ref","internalValue","setInternalValue","useState","hoverValue","setHoverValue","containerRef","useRef","value","sizeMap","colorMap","handleStarClick","starIndex","isHalf","newValue","handleStarHover","newHoverValue","handleMouseLeave","handleKeyDown","event","step","handleFocus","handleBlur","getStarFill","currentValue","isHalfStar","fill","renderCharacter","jsx","StarHalf","Star","getTooltip","node","cn","_","index","fillPercentage","tooltip","showHalfStar","jsxs","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Rate.js","sources":["../../../../src/components/Rate/Rate.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useRef } from \"react\";\nimport type { KeyboardEvent } from \"react\";\nimport { Star, StarHalf } from \"lucide-react\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport interface RateProps {\n // Display\n count?: number;\n value?: number;\n defaultValue?: number;\n allowHalf?: boolean;\n allowClear?: boolean;\n\n // Appearance\n size?: \"small\" | \"middle\" | \"large\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n character?: React.ReactNode | ((rateProps: RateProps) => React.ReactNode);\n className?: string;\n style?: React.CSSProperties;\n\n // Interaction\n disabled?: boolean;\n autoFocus?: boolean;\n keyboard?: boolean;\n\n // Tooltips\n tooltips?: string[];\n\n // Callbacks\n onChange?: (value: number) => void;\n onHoverChange?: (value: number) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void;\n}\n\nconst Rate = React.forwardRef<HTMLDivElement, RateProps>(\n (\n {\n count = 5,\n value: controlledValue,\n defaultValue = 0,\n allowHalf = false,\n allowClear = true,\n size = \"middle\",\n color = \"warning\",\n character,\n className,\n style,\n disabled = false,\n autoFocus = false,\n keyboard = true,\n tooltips,\n onChange,\n onHoverChange,\n onFocus,\n onBlur,\n onKeyDown,\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Use controlled or uncontrolled value\n const value =\n controlledValue !== undefined ? controlledValue : internalValue;\n\n // Size in pixels\n const sizeMap = {\n small: 20,\n middle: 24,\n large: 32,\n };\n\n // Color mapping for filled stars\n const colorMap = {\n primary: \"text-primary [&_svg]:fill-primary\",\n secondary: \"text-secondary [&_svg]:fill-secondary\",\n accent: \"text-accent [&_svg]:fill-accent\",\n destructive: \"text-destructive [&_svg]:fill-destructive\",\n muted: \"text-muted-foreground [&_svg]:fill-muted-foreground\",\n success: \"text-success [&_svg]:fill-success\",\n error: \"text-error [&_svg]:fill-error\",\n warning: \"text-yellow-400 [&_svg]:fill-yellow-400\",\n };\n\n // Handle star click\n const handleStarClick = (starIndex: number, isHalf: boolean) => {\n if (disabled) return;\n\n const newValue = isHalf ? starIndex + 0.5 : starIndex + 1;\n\n // If clicking the same value and allowClear is true, clear the rating\n if (allowClear && newValue === value) {\n setInternalValue(0);\n onChange?.(0);\n } else {\n setInternalValue(newValue);\n onChange?.(newValue);\n }\n };\n\n // Handle star hover\n const handleStarHover = (starIndex: number, isHalf: boolean) => {\n if (disabled) return;\n\n const newHoverValue = isHalf ? starIndex + 0.5 : starIndex + 1;\n setHoverValue(newHoverValue);\n onHoverChange?.(newHoverValue);\n };\n\n // Handle mouse leave\n const handleMouseLeave = () => {\n setHoverValue(null);\n onHoverChange?.(0);\n };\n\n // Handle keyboard navigation\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (!keyboard || disabled) return;\n\n onKeyDown?.(event);\n\n const step = allowHalf ? 0.5 : 1;\n let newValue = value;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n event.preventDefault();\n newValue = Math.min(value + step, count);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n event.preventDefault();\n newValue = Math.max(value - step, 0);\n break;\n case \"Home\":\n event.preventDefault();\n newValue = allowHalf ? 0.5 : 1;\n break;\n case \"End\":\n event.preventDefault();\n newValue = count;\n break;\n default:\n return;\n }\n\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n // Handle focus\n const handleFocus = () => {\n onFocus?.();\n };\n\n // Handle blur\n const handleBlur = () => {\n onBlur?.();\n };\n\n // Get star fill percentage\n const getStarFill = (starIndex: number) => {\n const currentValue = hoverValue !== null ? hoverValue : value;\n\n if (currentValue >= starIndex + 1) {\n return 100; // Full star\n } else if (currentValue > starIndex && currentValue < starIndex + 1) {\n return (currentValue - starIndex) * 100; // Partial star\n }\n return 0; // Empty star\n };\n\n // Check if star should show as half\n const isHalfStar = (starIndex: number) => {\n if (!allowHalf) return false;\n const currentValue = hoverValue !== null ? hoverValue : value;\n const fill = currentValue - starIndex;\n return fill > 0 && fill <= 0.5;\n };\n\n // Render character\n const renderCharacter = (isHalf: boolean = false) => {\n if (typeof character === \"function\") {\n return character({\n count,\n value,\n defaultValue,\n allowHalf,\n allowClear,\n size,\n disabled,\n });\n }\n if (isHalf) {\n return <StarHalf className=\"ds:w-full ds:h-full\" />;\n }\n return character || <Star className=\"ds:w-full ds:h-full\" />;\n };\n\n // Get tooltip for star\n const getTooltip = (starIndex: number) => {\n if (!tooltips || !tooltips[starIndex]) return undefined;\n return tooltips[starIndex];\n };\n\n return (\n <div\n ref={(node) => {\n containerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"ds:inline-flex ds:items-center ds:gap-1\",\n disabled && \"ds:opacity-50 ds:cursor-not-allowed\",\n !disabled && \"ds:cursor-pointer\",\n className\n )}\n style={style}\n onMouseLeave={handleMouseLeave}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-label=\"Rate\"\n aria-valuemin={0}\n aria-valuemax={count}\n aria-valuenow={value}\n aria-disabled={disabled}\n autoFocus={autoFocus}\n >\n {Array.from({ length: count }, (_, index) => {\n const fillPercentage = getStarFill(index);\n const tooltip = getTooltip(index);\n const showHalfStar = isHalfStar(index);\n\n return (\n <div key={index} className=\"ds:relative ds:group\" title={tooltip}>\n {/* Container for half stars */}\n <div\n className=\"ds:relative ds:inline-flex\"\n style={{\n width: `${sizeMap[size]}px`,\n height: `${sizeMap[size]}px`,\n }}\n >\n {/* Empty star background */}\n <div className=\"ds:text-muted-foreground/30 ds:pointer-events-none\">\n {renderCharacter(false)}\n </div>\n\n {/* Filled star overlay */}\n {fillPercentage > 0 && (\n <div\n className={cn(\n \"ds:absolute ds:inset-0 ds:pointer-events-none\",\n colorMap[color]\n )}\n >\n {showHalfStar ? (\n renderCharacter(true)\n ) : (\n <div\n className=\"ds:overflow-hidden\"\n style={{ width: `${fillPercentage}%` }}\n >\n {renderCharacter(false)}\n </div>\n )}\n </div>\n )}\n\n {/* Interactive overlay for clicking and hovering */}\n {!disabled && (\n <>\n {allowHalf ? (\n <>\n {/* Left half */}\n <div\n className=\"ds:absolute ds:inset-0 ds:w-1/2 ds:cursor-pointer\"\n onClick={() => handleStarClick(index, true)}\n onMouseEnter={() => handleStarHover(index, true)}\n />\n {/* Right half */}\n <div\n className=\"ds:absolute ds:inset-0 ds:left-1/2 ds:w-1/2 ds:cursor-pointer\"\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n </>\n ) : (\n <div\n className=\"ds:absolute ds:inset-0 ds:cursor-pointer\"\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n )}\n </>\n )}\n </div>\n\n {/* Show tooltip text below star on hover */}\n {tooltip &&\n (hoverValue === index + 1 ||\n (allowHalf && hoverValue === index + 0.5)) && (\n <div className=\"ds:absolute ds:top-full ds:left-1/2 ds:-translate-x-1/2 ds:mt-1 ds:px-2 ds:py-1 ds:text-xs ds:bg-foreground ds:text-background ds:rounded ds:whitespace-nowrap ds:z-10\">\n {tooltip}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n);\n\nRate.displayName = \"Rate\";\n\nexport default Rate;\n"],"names":["Rate","React","count","controlledValue","defaultValue","allowHalf","allowClear","size","color","character","className","style","disabled","autoFocus","keyboard","tooltips","onChange","onHoverChange","onFocus","onBlur","onKeyDown","ref","internalValue","setInternalValue","useState","hoverValue","setHoverValue","containerRef","useRef","value","sizeMap","colorMap","handleStarClick","starIndex","isHalf","newValue","handleStarHover","newHoverValue","handleMouseLeave","handleKeyDown","event","step","handleFocus","handleBlur","getStarFill","currentValue","isHalfStar","fill","renderCharacter","jsx","StarHalf","Star","getTooltip","node","cn","_","index","fillPercentage","tooltip","showHalfStar","jsxs","Fragment"],"mappings":"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"}
|
|
@@ -11,23 +11,23 @@ const h = (b) => {
|
|
|
11
11
|
handleIcon: N,
|
|
12
12
|
autoSaveId: n,
|
|
13
13
|
onLayout: r,
|
|
14
|
-
className:
|
|
14
|
+
className: d,
|
|
15
15
|
panelClassName: S,
|
|
16
16
|
handleClassName: x,
|
|
17
|
-
children:
|
|
17
|
+
children: t,
|
|
18
18
|
keyboardResizeBy: c,
|
|
19
19
|
storage: m
|
|
20
20
|
} = b;
|
|
21
|
-
return
|
|
21
|
+
return t && !a ? /* @__PURE__ */ l(
|
|
22
22
|
i,
|
|
23
23
|
{
|
|
24
24
|
direction: o,
|
|
25
25
|
autoSaveId: n,
|
|
26
26
|
onLayout: r,
|
|
27
|
-
className: s("h-full w-full",
|
|
27
|
+
className: s("ds:h-full ds:w-full", d),
|
|
28
28
|
keyboardResizeBy: c,
|
|
29
29
|
storage: m,
|
|
30
|
-
children:
|
|
30
|
+
children: t
|
|
31
31
|
}
|
|
32
32
|
) : !a || a.length === 0 ? null : /* @__PURE__ */ l(
|
|
33
33
|
i,
|
|
@@ -35,7 +35,7 @@ const h = (b) => {
|
|
|
35
35
|
direction: o,
|
|
36
36
|
autoSaveId: n,
|
|
37
37
|
onLayout: r,
|
|
38
|
-
className: s("h-full w-full",
|
|
38
|
+
className: s("ds:h-full ds:w-full", d),
|
|
39
39
|
keyboardResizeBy: c,
|
|
40
40
|
storage: m,
|
|
41
41
|
children: a.map((e, z) => /* @__PURE__ */ g(y.Fragment, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resizable.js","sources":["../../../../src/components/Resizable/Resizable.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n resizableHandleVariants,\n} from \"@dsui/ui/components/resizable\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { VariantProps } from \"class-variance-authority\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type ResizableDirection = \"horizontal\" | \"vertical\";\n\nexport type ResizableHandleVariant = VariantProps<\n typeof resizableHandleVariants\n>[\"variant\"];\n\nexport interface ResizablePanelConfig {\n id?: string;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n collapsible?: boolean;\n collapsedSize?: number;\n onCollapse?: () => void;\n onExpand?: () => void;\n onResize?: (size: number) => void;\n className?: string;\n children?: React.ReactNode;\n order?: number;\n}\n\ntype PanelGroupOnLayout = (sizes: number[]) => void;\n\nexport interface ResizableProps {\n /** Direction of the resizable panels */\n direction?: ResizableDirection;\n /** Configuration for panels when using wrapper mode */\n panels?: ResizablePanelConfig[];\n /** Show handle with grip icon */\n withHandle?: boolean;\n /** Handle variant: 'default' shows icon, 'line' highlights on hover */\n handleVariant?: ResizableHandleVariant;\n /** Custom icon for the handle (only works with default variant) */\n handleIcon?: React.ReactNode;\n /** Auto save layout to localStorage with this id */\n autoSaveId?: string;\n /** Callback when layout changes */\n onLayout?: PanelGroupOnLayout;\n /** Additional class for the panel group */\n className?: string;\n /** Additional class for each panel */\n panelClassName?: string;\n /** Additional class for handles */\n handleClassName?: string;\n /** Children for primitive usage */\n children?: React.ReactNode;\n /** Keyboard resize by delta percentage (default: 10) */\n keyboardResizeBy?: number;\n /** Storage object for saving layout (default: localStorage) */\n storage?: {\n getItem: (name: string) => string | null;\n setItem: (name: string, value: string) => void;\n };\n}\n\n// ============================================================================\n// Wrapper Component\n// ============================================================================\n\nconst ResizableWrapper = (props: ResizableProps) => {\n const {\n direction = \"horizontal\",\n panels,\n withHandle = true,\n handleVariant,\n handleIcon,\n autoSaveId,\n onLayout,\n className,\n panelClassName,\n handleClassName,\n children,\n keyboardResizeBy,\n storage,\n } = props;\n\n // If children are provided, use primitive mode\n if (children && !panels) {\n return (\n <ResizablePanelGroup\n direction={direction}\n autoSaveId={autoSaveId}\n onLayout={onLayout}\n className={cn(\"h-full w-full\", className)}\n keyboardResizeBy={keyboardResizeBy}\n storage={storage}\n >\n {children}\n </ResizablePanelGroup>\n );\n }\n\n // Wrapper mode with panels config\n if (!panels || panels.length === 0) {\n return null;\n }\n\n return (\n <ResizablePanelGroup\n direction={direction}\n autoSaveId={autoSaveId}\n onLayout={onLayout}\n className={cn(\"h-full w-full\", className)}\n keyboardResizeBy={keyboardResizeBy}\n storage={storage}\n >\n {panels.map((panel, index) => (\n <React.Fragment key={panel.id || `panel-${index}`}>\n <ResizablePanel\n id={panel.id}\n defaultSize={panel.defaultSize}\n minSize={panel.minSize}\n maxSize={panel.maxSize}\n collapsible={panel.collapsible}\n collapsedSize={panel.collapsedSize}\n onCollapse={panel.onCollapse}\n onExpand={panel.onExpand}\n onResize={panel.onResize}\n order={panel.order}\n className={cn(panelClassName, panel.className)}\n >\n {panel.children}\n </ResizablePanel>\n {index < panels.length - 1 && (\n <ResizableHandle\n withHandle={withHandle}\n variant={handleVariant}\n icon={handleIcon}\n className={handleClassName}\n />\n )}\n </React.Fragment>\n ))}\n </ResizablePanelGroup>\n );\n};\n\nResizableWrapper.displayName = \"Resizable\";\n\n// ============================================================================\n// Sub-components for primitive usage\n// ============================================================================\n\nexport type ResizablePanelProps = React.ComponentProps<typeof ResizablePanel>;\nexport type ResizableHandleProps = React.ComponentProps<typeof ResizableHandle>;\nexport type ResizablePanelGroupProps = React.ComponentProps<\n typeof ResizablePanelGroup\n>;\n\n// Re-export Panel and Handle from shadcn for primitive usage\nconst Panel = ResizablePanel;\nconst Handle = ResizableHandle;\n\n// ============================================================================\n// Export with Object.assign pattern\n// ============================================================================\n\nconst Resizable = Object.assign(ResizableWrapper, {\n Panel,\n Handle,\n PanelGroup: ResizablePanelGroup,\n});\n\nexport default Resizable;\nexport {\n Resizable,\n ResizableWrapper,\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n Panel,\n Handle,\n};\n"],"names":["ResizableWrapper","props","direction","panels","withHandle","handleVariant","handleIcon","autoSaveId","onLayout","className","panelClassName","handleClassName","children","keyboardResizeBy","storage","jsx","ResizablePanelGroup","cn","panel","index","jsxs","React","ResizablePanel","ResizableHandle","Panel","Handle","Resizable"],"mappings":";;;;AAyEA,MAAMA,IAAmB,CAACC,MAA0B;AAClD,QAAM;AAAA,IACJ,WAAAC,IAAY;AAAA,IACZ,QAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEb;AAGJ,SAAIW,KAAY,CAACT,IAEb,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAAd;AAAA,MACA,YAAAK;AAAA,MACA,UAAAC;AAAA,MACA,WAAWS,EAAG,
|
|
1
|
+
{"version":3,"file":"Resizable.js","sources":["../../../../src/components/Resizable/Resizable.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n resizableHandleVariants,\n} from \"@dsui/ui/components/resizable\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { VariantProps } from \"class-variance-authority\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type ResizableDirection = \"horizontal\" | \"vertical\";\n\nexport type ResizableHandleVariant = VariantProps<\n typeof resizableHandleVariants\n>[\"variant\"];\n\nexport interface ResizablePanelConfig {\n id?: string;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n collapsible?: boolean;\n collapsedSize?: number;\n onCollapse?: () => void;\n onExpand?: () => void;\n onResize?: (size: number) => void;\n className?: string;\n children?: React.ReactNode;\n order?: number;\n}\n\ntype PanelGroupOnLayout = (sizes: number[]) => void;\n\nexport interface ResizableProps {\n /** Direction of the resizable panels */\n direction?: ResizableDirection;\n /** Configuration for panels when using wrapper mode */\n panels?: ResizablePanelConfig[];\n /** Show handle with grip icon */\n withHandle?: boolean;\n /** Handle variant: 'default' shows icon, 'line' highlights on hover */\n handleVariant?: ResizableHandleVariant;\n /** Custom icon for the handle (only works with default variant) */\n handleIcon?: React.ReactNode;\n /** Auto save layout to localStorage with this id */\n autoSaveId?: string;\n /** Callback when layout changes */\n onLayout?: PanelGroupOnLayout;\n /** Additional class for the panel group */\n className?: string;\n /** Additional class for each panel */\n panelClassName?: string;\n /** Additional class for handles */\n handleClassName?: string;\n /** Children for primitive usage */\n children?: React.ReactNode;\n /** Keyboard resize by delta percentage (default: 10) */\n keyboardResizeBy?: number;\n /** Storage object for saving layout (default: localStorage) */\n storage?: {\n getItem: (name: string) => string | null;\n setItem: (name: string, value: string) => void;\n };\n}\n\n// ============================================================================\n// Wrapper Component\n// ============================================================================\n\nconst ResizableWrapper = (props: ResizableProps) => {\n const {\n direction = \"horizontal\",\n panels,\n withHandle = true,\n handleVariant,\n handleIcon,\n autoSaveId,\n onLayout,\n className,\n panelClassName,\n handleClassName,\n children,\n keyboardResizeBy,\n storage,\n } = props;\n\n // If children are provided, use primitive mode\n if (children && !panels) {\n return (\n <ResizablePanelGroup\n direction={direction}\n autoSaveId={autoSaveId}\n onLayout={onLayout}\n className={cn(\"ds:h-full ds:w-full\", className)}\n keyboardResizeBy={keyboardResizeBy}\n storage={storage}\n >\n {children}\n </ResizablePanelGroup>\n );\n }\n\n // Wrapper mode with panels config\n if (!panels || panels.length === 0) {\n return null;\n }\n\n return (\n <ResizablePanelGroup\n direction={direction}\n autoSaveId={autoSaveId}\n onLayout={onLayout}\n className={cn(\"ds:h-full ds:w-full\", className)}\n keyboardResizeBy={keyboardResizeBy}\n storage={storage}\n >\n {panels.map((panel, index) => (\n <React.Fragment key={panel.id || `panel-${index}`}>\n <ResizablePanel\n id={panel.id}\n defaultSize={panel.defaultSize}\n minSize={panel.minSize}\n maxSize={panel.maxSize}\n collapsible={panel.collapsible}\n collapsedSize={panel.collapsedSize}\n onCollapse={panel.onCollapse}\n onExpand={panel.onExpand}\n onResize={panel.onResize}\n order={panel.order}\n className={cn(panelClassName, panel.className)}\n >\n {panel.children}\n </ResizablePanel>\n {index < panels.length - 1 && (\n <ResizableHandle\n withHandle={withHandle}\n variant={handleVariant}\n icon={handleIcon}\n className={handleClassName}\n />\n )}\n </React.Fragment>\n ))}\n </ResizablePanelGroup>\n );\n};\n\nResizableWrapper.displayName = \"Resizable\";\n\n// ============================================================================\n// Sub-components for primitive usage\n// ============================================================================\n\nexport type ResizablePanelProps = React.ComponentProps<typeof ResizablePanel>;\nexport type ResizableHandleProps = React.ComponentProps<typeof ResizableHandle>;\nexport type ResizablePanelGroupProps = React.ComponentProps<\n typeof ResizablePanelGroup\n>;\n\n// Re-export Panel and Handle from shadcn for primitive usage\nconst Panel = ResizablePanel;\nconst Handle = ResizableHandle;\n\n// ============================================================================\n// Export with Object.assign pattern\n// ============================================================================\n\nconst Resizable = Object.assign(ResizableWrapper, {\n Panel,\n Handle,\n PanelGroup: ResizablePanelGroup,\n});\n\nexport default Resizable;\nexport {\n Resizable,\n ResizableWrapper,\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n Panel,\n Handle,\n};\n"],"names":["ResizableWrapper","props","direction","panels","withHandle","handleVariant","handleIcon","autoSaveId","onLayout","className","panelClassName","handleClassName","children","keyboardResizeBy","storage","jsx","ResizablePanelGroup","cn","panel","index","jsxs","React","ResizablePanel","ResizableHandle","Panel","Handle","Resizable"],"mappings":";;;;AAyEA,MAAMA,IAAmB,CAACC,MAA0B;AAClD,QAAM;AAAA,IACJ,WAAAC,IAAY;AAAA,IACZ,QAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEb;AAGJ,SAAIW,KAAY,CAACT,IAEb,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAAd;AAAA,MACA,YAAAK;AAAA,MACA,UAAAC;AAAA,MACA,WAAWS,EAAG,uBAAuBR,CAAS;AAAA,MAC9C,kBAAAI;AAAA,MACA,SAAAC;AAAA,MAEC,UAAAF;AAAA,IAAA;AAAA,EAAA,IAMH,CAACT,KAAUA,EAAO,WAAW,IACxB,OAIP,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAAd;AAAA,MACA,YAAAK;AAAA,MACA,UAAAC;AAAA,MACA,WAAWS,EAAG,uBAAuBR,CAAS;AAAA,MAC9C,kBAAAI;AAAA,MACA,SAAAC;AAAA,MAEC,UAAAX,EAAO,IAAI,CAACe,GAAOC,MAClB,gBAAAC,EAACC,EAAM,UAAN,EACC,UAAA;AAAA,QAAA,gBAAAN;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,IAAIJ,EAAM;AAAA,YACV,aAAaA,EAAM;AAAA,YACnB,SAASA,EAAM;AAAA,YACf,SAASA,EAAM;AAAA,YACf,aAAaA,EAAM;AAAA,YACnB,eAAeA,EAAM;AAAA,YACrB,YAAYA,EAAM;AAAA,YAClB,UAAUA,EAAM;AAAA,YAChB,UAAUA,EAAM;AAAA,YAChB,OAAOA,EAAM;AAAA,YACb,WAAWD,EAAGP,GAAgBQ,EAAM,SAAS;AAAA,YAE5C,UAAAA,EAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QAERC,IAAQhB,EAAO,SAAS,KACvB,gBAAAY;AAAA,UAACQ;AAAA,UAAA;AAAA,YACC,YAAAnB;AAAA,YACA,SAASC;AAAA,YACT,MAAMC;AAAA,YACN,WAAWK;AAAA,UAAA;AAAA,QAAA;AAAA,MACb,EAAA,GAtBiBO,EAAM,MAAM,SAASC,CAAK,EAwB/C,CACD;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAnB,EAAiB,cAAc;AAa/B,MAAMwB,IAAQF,GACRG,IAASF,GAMTG,IAAY,OAAO,OAAO1B,GAAkB;AAAA,EAChD,OAAAwB;AAAA,EACA,QAAAC;AAAA,EACA,YAAYT;AACd,CAAC;"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { jsx as u } from "react/jsx-runtime";
|
|
2
|
-
import i, { useRef as S, useEffect as
|
|
3
|
-
import { ScrollArea as
|
|
2
|
+
import i, { useRef as S, useEffect as d } from "react";
|
|
3
|
+
import { ScrollArea as p, ScrollBar as A } from "../../packages/ui/src/components/scroll-area.js";
|
|
4
4
|
import { cn as l } from "../../packages/ui/src/lib/utils.js";
|
|
5
5
|
const R = i.forwardRef(
|
|
6
|
-
({ className:
|
|
6
|
+
({ className: o, children: c, snapType: a, viewportClassName: t, ...m }, s) => {
|
|
7
7
|
const n = S(null), f = i.useMemo(() => {
|
|
8
8
|
if (!a || a === "none") return "snap-none";
|
|
9
9
|
const [r, e] = a.split(" ");
|
|
10
|
-
return l(`snap-${r}`, e && `snap-${e}`);
|
|
10
|
+
return l(`ds:snap-${r}`, e && `ds:snap-${e}`);
|
|
11
11
|
}, [a]);
|
|
12
|
-
return
|
|
12
|
+
return d(() => {
|
|
13
13
|
if (n.current && (f || t)) {
|
|
14
14
|
const r = n.current.querySelector(
|
|
15
15
|
"[data-radix-scroll-area-viewport]"
|
|
@@ -20,21 +20,21 @@ const R = i.forwardRef(
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}, [f, t]), /* @__PURE__ */ u(
|
|
23
|
-
|
|
23
|
+
p,
|
|
24
24
|
{
|
|
25
25
|
ref: (r) => {
|
|
26
|
-
n.current = r, typeof
|
|
26
|
+
n.current = r, typeof s == "function" ? s(r) : s && (s.current = r);
|
|
27
27
|
},
|
|
28
|
-
className: l(
|
|
28
|
+
className: l(o),
|
|
29
29
|
...m,
|
|
30
|
-
children:
|
|
30
|
+
children: c
|
|
31
31
|
}
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
34
|
);
|
|
35
35
|
R.displayName = "ScrollArea";
|
|
36
36
|
const x = i.forwardRef(
|
|
37
|
-
({ className:
|
|
37
|
+
({ className: o, ...c }, a) => /* @__PURE__ */ u(A, { ref: a, className: l(o), ...c })
|
|
38
38
|
);
|
|
39
39
|
x.displayName = "ScrollBar";
|
|
40
40
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollArea.js","sources":["../../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport {\n ScrollArea as SScrollArea,\n ScrollBar as SScrollBar,\n} from \"@dsui/ui/components/scroll-area\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport interface ScrollAreaProps\n extends React.ComponentProps<typeof SScrollArea> {\n /**\n * Type of scroll snap behavior\n * @default undefined\n */\n snapType?:\n | \"none\"\n | \"x\"\n | \"y\"\n | \"both\"\n | \"x mandatory\"\n | \"y mandatory\"\n | \"both mandatory\"\n | \"x proximity\"\n | \"y proximity\"\n | \"both proximity\";\n /**\n * Additional className for the viewport (where scroll happens)\n */\n viewportClassName?: string;\n}\n\nexport type ScrollBarProps = React.ComponentProps<typeof SScrollBar>;\n\nconst ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n ({ className, children, snapType, viewportClassName, ...props }, ref) => {\n const scrollAreaRef = useRef<HTMLDivElement>(null);\n\n const snapClass = React.useMemo(() => {\n if (!snapType || snapType === \"none\") return \"snap-none\";\n\n const [axis, alignment] = snapType.split(\" \");\n return cn(`snap-${axis}`, alignment && `snap-${alignment}`);\n }, [snapType]);\n\n // const snapClass = snapType\n // ? snapType === \"none\"\n // ? \"snap-none\"\n // : snapType === \"x\"\n // ? \"snap-x\"\n // : snapType === \"y\"\n // ? \"snap-y\"\n // : snapType === \"both\"\n // ? \"snap-both\"\n // : snapType === \"x mandatory\"\n // ? \"snap-x snap-mandatory\"\n // : snapType === \"y mandatory\"\n // ? \"snap-y snap-mandatory\"\n // : snapType === \"both mandatory\"\n // ? \"snap-both snap-mandatory\"\n // : snapType === \"x proximity\"\n // ? \"snap-x snap-proximity\"\n // : snapType === \"y proximity\"\n // ? \"snap-y snap-proximity\"\n // : snapType === \"both proximity\"\n // ? \"snap-both snap-proximity\"\n // : \"\"\n // : \"\";\n\n useEffect(() => {\n if (scrollAreaRef.current && (snapClass || viewportClassName)) {\n const viewport = scrollAreaRef.current.querySelector(\n \"[data-radix-scroll-area-viewport]\"\n );\n if (viewport) {\n const classes = cn(snapClass, viewportClassName);\n if (classes) {\n viewport.className = cn(viewport.className, classes);\n }\n }\n }\n }, [snapClass, viewportClassName]);\n\n return (\n <SScrollArea\n ref={(node) => {\n scrollAreaRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(className)}\n {...props}\n >\n {children}\n </SScrollArea>\n );\n }\n);\nScrollArea.displayName = \"ScrollArea\";\n\nconst ScrollBar = React.forwardRef<HTMLDivElement, ScrollBarProps>(\n ({ className, ...props }, ref) => {\n return <SScrollBar ref={ref} className={cn(className)} {...props} />;\n }\n);\nScrollBar.displayName = \"ScrollBar\";\n\nexport { ScrollArea, ScrollBar };\nexport default ScrollArea;\n"],"names":["ScrollArea","React","className","children","snapType","viewportClassName","props","ref","scrollAreaRef","useRef","snapClass","axis","alignment","cn","useEffect","viewport","classes","jsx","SScrollArea","node","ScrollBar","SScrollBar"],"mappings":";;;;AAgCA,MAAMA,IAAaC,EAAM;AAAA,EACvB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,UAAAC,GAAU,mBAAAC,GAAmB,GAAGC,EAAA,GAASC,MAAQ;AACvE,UAAMC,IAAgBC,EAAuB,IAAI,GAE3CC,IAAYT,EAAM,QAAQ,MAAM;AACpC,UAAI,CAACG,KAAYA,MAAa,OAAQ,QAAO;AAE7C,YAAM,CAACO,GAAMC,CAAS,IAAIR,EAAS,MAAM,GAAG;AAC5C,aAAOS,EAAG,
|
|
1
|
+
{"version":3,"file":"ScrollArea.js","sources":["../../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport {\n ScrollArea as SScrollArea,\n ScrollBar as SScrollBar,\n} from \"@dsui/ui/components/scroll-area\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport interface ScrollAreaProps\n extends React.ComponentProps<typeof SScrollArea> {\n /**\n * Type of scroll snap behavior\n * @default undefined\n */\n snapType?:\n | \"none\"\n | \"x\"\n | \"y\"\n | \"both\"\n | \"x mandatory\"\n | \"y mandatory\"\n | \"both mandatory\"\n | \"x proximity\"\n | \"y proximity\"\n | \"both proximity\";\n /**\n * Additional className for the viewport (where scroll happens)\n */\n viewportClassName?: string;\n}\n\nexport type ScrollBarProps = React.ComponentProps<typeof SScrollBar>;\n\nconst ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n ({ className, children, snapType, viewportClassName, ...props }, ref) => {\n const scrollAreaRef = useRef<HTMLDivElement>(null);\n\n const snapClass = React.useMemo(() => {\n if (!snapType || snapType === \"none\") return \"snap-none\";\n\n const [axis, alignment] = snapType.split(\" \");\n return cn(`ds:snap-${axis}`, alignment && `ds:snap-${alignment}`);\n }, [snapType]);\n\n // const snapClass = snapType\n // ? snapType === \"none\"\n // ? \"snap-none\"\n // : snapType === \"x\"\n // ? \"snap-x\"\n // : snapType === \"y\"\n // ? \"snap-y\"\n // : snapType === \"both\"\n // ? \"snap-both\"\n // : snapType === \"x mandatory\"\n // ? \"snap-x snap-mandatory\"\n // : snapType === \"y mandatory\"\n // ? \"snap-y snap-mandatory\"\n // : snapType === \"both mandatory\"\n // ? \"snap-both snap-mandatory\"\n // : snapType === \"x proximity\"\n // ? \"snap-x snap-proximity\"\n // : snapType === \"y proximity\"\n // ? \"snap-y snap-proximity\"\n // : snapType === \"both proximity\"\n // ? \"snap-both snap-proximity\"\n // : \"\"\n // : \"\";\n\n useEffect(() => {\n if (scrollAreaRef.current && (snapClass || viewportClassName)) {\n const viewport = scrollAreaRef.current.querySelector(\n \"[data-radix-scroll-area-viewport]\"\n );\n if (viewport) {\n const classes = cn(snapClass, viewportClassName);\n if (classes) {\n viewport.className = cn(viewport.className, classes);\n }\n }\n }\n }, [snapClass, viewportClassName]);\n\n return (\n <SScrollArea\n ref={(node) => {\n scrollAreaRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(className)}\n {...props}\n >\n {children}\n </SScrollArea>\n );\n }\n);\nScrollArea.displayName = \"ScrollArea\";\n\nconst ScrollBar = React.forwardRef<HTMLDivElement, ScrollBarProps>(\n ({ className, ...props }, ref) => {\n return <SScrollBar ref={ref} className={cn(className)} {...props} />;\n }\n);\nScrollBar.displayName = \"ScrollBar\";\n\nexport { ScrollArea, ScrollBar };\nexport default ScrollArea;\n"],"names":["ScrollArea","React","className","children","snapType","viewportClassName","props","ref","scrollAreaRef","useRef","snapClass","axis","alignment","cn","useEffect","viewport","classes","jsx","SScrollArea","node","ScrollBar","SScrollBar"],"mappings":";;;;AAgCA,MAAMA,IAAaC,EAAM;AAAA,EACvB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,UAAAC,GAAU,mBAAAC,GAAmB,GAAGC,EAAA,GAASC,MAAQ;AACvE,UAAMC,IAAgBC,EAAuB,IAAI,GAE3CC,IAAYT,EAAM,QAAQ,MAAM;AACpC,UAAI,CAACG,KAAYA,MAAa,OAAQ,QAAO;AAE7C,YAAM,CAACO,GAAMC,CAAS,IAAIR,EAAS,MAAM,GAAG;AAC5C,aAAOS,EAAG,WAAWF,CAAI,IAAIC,KAAa,WAAWA,CAAS,EAAE;AAAA,IAClE,GAAG,CAACR,CAAQ,CAAC;AA0Bb,WAAAU,EAAU,MAAM;AACd,UAAIN,EAAc,YAAYE,KAAaL,IAAoB;AAC7D,cAAMU,IAAWP,EAAc,QAAQ;AAAA,UACrC;AAAA,QAAA;AAEF,YAAIO,GAAU;AACZ,gBAAMC,IAAUH,EAAGH,GAAWL,CAAiB;AAC/C,UAAIW,MACFD,EAAS,YAAYF,EAAGE,EAAS,WAAWC,CAAO;AAAA,QAEvD;AAAA,MACF;AAAA,IACF,GAAG,CAACN,GAAWL,CAAiB,CAAC,GAG/B,gBAAAY;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAK,CAACC,MAAS;AACb,UAAAX,EAAc,UAAUW,GACpB,OAAOZ,KAAQ,aACjBA,EAAIY,CAAI,IACCZ,MACTA,EAAI,UAAUY;AAAA,QAElB;AAAA,QACA,WAAWN,EAAGX,CAAS;AAAA,QACtB,GAAGI;AAAA,QAEH,UAAAH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AACAH,EAAW,cAAc;AAEzB,MAAMoB,IAAYnB,EAAM;AAAA,EACtB,CAAC,EAAE,WAAAC,GAAW,GAAGI,EAAA,GAASC,MACjB,gBAAAU,EAACI,KAAW,KAAAd,GAAU,WAAWM,EAAGX,CAAS,GAAI,GAAGI,GAAO;AAEtE;AACAc,EAAU,cAAc;"}
|