@sth87/shadcn-design-system 0.0.36 → 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/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Marquee.js","sources":["../../../../src/components/Marquee/Marquee.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nconst ROOT_NAME = \"Marquee\";\nconst CONTENT_NAME = \"MarqueeContent\";\n\ntype Side = \"left\" | \"right\" | \"top\" | \"bottom\";\ntype Orientation = \"horizontal\" | \"vertical\";\ntype Direction = \"ltr\" | \"rtl\";\n\ntype RootElement = React.ComponentRef<typeof MarqueeRoot>;\ntype ContentElement = React.ComponentRef<typeof MarqueeContent>;\n\ninterface Dimensions {\n width: number;\n height: number;\n}\n\ninterface ElementDimensions {\n rootSize: number;\n contentSize: number;\n}\n\nfunction createResizeObserverStore() {\n const listeners = new Set<() => void>();\n let observer: ResizeObserver | null = null;\n const elements = new Map<Element, Dimensions>();\n const refCounts = new Map<Element, number>();\n const isSupported = typeof ResizeObserver !== \"undefined\";\n let notificationScheduled = false;\n\n const snapshotCache = new WeakMap<\n Element,\n WeakMap<\n Element,\n { horizontal: ElementDimensions; vertical: ElementDimensions }\n >\n >();\n\n function notify() {\n if (notificationScheduled) return;\n notificationScheduled = true;\n queueMicrotask(() => {\n notificationScheduled = false;\n for (const callback of listeners) {\n callback();\n }\n });\n }\n\n function cleanup() {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n elements.clear();\n refCounts.clear();\n }\n\n function subscribe(callback: () => void) {\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) {\n cleanup();\n }\n };\n }\n\n function getSnapshot(\n rootElement: RootElement | null,\n contentElement: ContentElement | null,\n orientation: Orientation\n ): ElementDimensions | null {\n if (!rootElement || !contentElement) return null;\n\n const rootDims = elements.get(rootElement);\n const contentDims = elements.get(contentElement);\n\n if (!rootDims || !contentDims) return null;\n\n const rootSize =\n orientation === \"vertical\" ? rootDims.height : rootDims.width;\n const contentSize =\n orientation === \"vertical\" ? contentDims.height : contentDims.width;\n\n let rootCache = snapshotCache.get(rootElement);\n if (!rootCache) {\n rootCache = new WeakMap();\n snapshotCache.set(rootElement, rootCache);\n }\n\n let contentCache = rootCache.get(contentElement);\n if (!contentCache) {\n contentCache = {\n horizontal: { rootSize: -1, contentSize: -1 },\n vertical: { rootSize: -1, contentSize: -1 },\n };\n rootCache.set(contentElement, contentCache);\n }\n\n const cached = contentCache[orientation];\n if (cached.rootSize === rootSize && cached.contentSize === contentSize) {\n return cached;\n }\n\n const snapshot = { rootSize, contentSize };\n contentCache[orientation] = snapshot;\n return snapshot;\n }\n\n function observe(\n rootElement: RootElement | null,\n contentElement: Element | null\n ) {\n if (!isSupported || !rootElement || !contentElement) return;\n\n if (!observer) {\n observer = new ResizeObserver((entries) => {\n let hasChanged = false;\n\n for (const entry of entries) {\n const element = entry.target;\n const { width, height } = entry.contentRect;\n\n const currentData = elements.get(element);\n\n if (\n !currentData ||\n currentData.width !== width ||\n currentData.height !== height\n ) {\n elements.set(element, { width, height });\n hasChanged = true;\n }\n }\n\n if (hasChanged) {\n notify();\n }\n });\n }\n\n refCounts.set(rootElement, (refCounts.get(rootElement) ?? 0) + 1);\n refCounts.set(contentElement, (refCounts.get(contentElement) ?? 0) + 1);\n\n observer.observe(rootElement);\n observer.observe(contentElement);\n\n const rootRect = rootElement.getBoundingClientRect();\n const contentRect = contentElement.getBoundingClientRect();\n\n const rootData = { width: rootRect.width, height: rootRect.height };\n const contentData = {\n width: contentRect.width,\n height: contentRect.height,\n };\n\n elements.set(rootElement, rootData);\n elements.set(contentElement, contentData);\n\n if (\n rootData.width > 0 &&\n rootData.height > 0 &&\n contentData.width > 0 &&\n contentData.height > 0\n ) {\n notify();\n }\n }\n\n function unobserve(\n rootElement: RootElement | null,\n contentElement: Element | null\n ) {\n if (!observer || !rootElement || !contentElement) return;\n\n const rootCount = (refCounts.get(rootElement) ?? 1) - 1;\n const contentCount = (refCounts.get(contentElement) ?? 1) - 1;\n\n if (rootCount <= 0) {\n observer.unobserve(rootElement);\n elements.delete(rootElement);\n refCounts.delete(rootElement);\n } else {\n refCounts.set(rootElement, rootCount);\n }\n\n if (contentCount <= 0) {\n observer.unobserve(contentElement);\n elements.delete(contentElement);\n refCounts.delete(contentElement);\n } else {\n refCounts.set(contentElement, contentCount);\n }\n }\n\n return {\n subscribe,\n getSnapshot,\n observe,\n unobserve,\n };\n}\n\nconst resizeObserverStore = createResizeObserverStore();\n\nfunction useResizeObserverStore(\n rootRef: React.RefObject<RootElement | null>,\n contentRef: React.RefObject<ContentElement | null>,\n orientation: Orientation\n) {\n const onSubscribe = React.useCallback(\n (callback: () => void) => resizeObserverStore.subscribe(callback),\n []\n );\n\n const getSnapshot = React.useCallback(\n () =>\n resizeObserverStore.getSnapshot(\n rootRef.current,\n contentRef.current,\n orientation\n ),\n [rootRef, contentRef, orientation]\n );\n\n return React.useSyncExternalStore(onSubscribe, getSnapshot, getSnapshot);\n}\n\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\nfunction useDirection(dir?: Direction): Direction {\n const contextDir = React.useContext(DirectionContext);\n return dir ?? contextDir ?? \"ltr\";\n}\n\ninterface DivProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\ninterface MarqueeContextValue {\n side: Side;\n orientation: Orientation;\n dir: Direction;\n speed: number;\n loopCount: number;\n contentRef: React.RefObject<ContentElement | null>;\n rootRef: React.RefObject<RootElement | null>;\n autoFill: boolean;\n pauseOnHover: boolean;\n pauseOnKeyboard: boolean;\n reverse: boolean;\n paused: boolean;\n}\n\nconst MarqueeContext = React.createContext<MarqueeContextValue | null>(null);\n\nfunction useMarqueeContext(consumerName: string) {\n const context = React.useContext(MarqueeContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface MarqueeRootProps extends DivProps {\n side?: Side;\n dir?: Direction;\n speed?: number;\n delay?: number;\n loopCount?: number;\n gap?: string | number;\n autoFill?: boolean;\n pauseOnHover?: boolean;\n pauseOnKeyboard?: boolean;\n reverse?: boolean;\n}\n\nfunction MarqueeRoot(props: MarqueeRootProps) {\n const {\n side = \"left\",\n dir: dirProp,\n speed = 50,\n delay = 0,\n loopCount = 0,\n gap = \"1rem\",\n asChild,\n autoFill = false,\n pauseOnHover = false,\n pauseOnKeyboard = false,\n reverse = false,\n className,\n style: styleProp,\n ref,\n ...marqueeProps\n } = props;\n\n const orientation: Orientation =\n side === \"top\" || side === \"bottom\" ? \"vertical\" : \"horizontal\";\n\n const dir = useDirection(dirProp);\n\n const rootRef = React.useRef<RootElement>(null);\n const contentRef = React.useRef<ContentElement>(null);\n const composedRef = useComposedRefs(ref, rootRef);\n\n const [paused, setPaused] = React.useState(false);\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (pauseOnKeyboard && event.key === \" \") {\n event.preventDefault();\n setPaused((prev) => !prev);\n }\n },\n [pauseOnKeyboard]\n );\n\n const dimensions = useResizeObserverStore(rootRef, contentRef, orientation);\n\n const duration = React.useMemo(() => {\n const safeSpeed = Math.max(0.001, speed);\n\n if (!dimensions) {\n const defaultDistance = autoFill ? 1000 : 2000;\n return defaultDistance / safeSpeed;\n }\n\n const { rootSize, contentSize } = dimensions;\n\n if (autoFill) {\n const multiplier =\n contentSize < rootSize ? Math.ceil(rootSize / contentSize) : 1;\n return (contentSize * multiplier) / safeSpeed;\n } else {\n return contentSize < rootSize\n ? rootSize / safeSpeed\n : contentSize / safeSpeed;\n }\n }, [dimensions, speed, autoFill]);\n\n const style = React.useMemo<React.CSSProperties>(\n () => ({\n \"--marquee-duration\": `${duration}s`,\n \"--marquee-gap\": gap,\n \"--marquee-delay\": `${delay}s`,\n \"--marquee-loop-count\":\n loopCount === 0 || loopCount === Infinity\n ? \"infinite\"\n : loopCount.toString(),\n ...styleProp,\n }),\n [duration, gap, delay, loopCount, styleProp]\n );\n\n const contextValue = React.useMemo<MarqueeContextValue>(\n () => ({\n side,\n orientation,\n dir,\n speed,\n loopCount,\n contentRef,\n rootRef,\n autoFill,\n paused,\n pauseOnHover,\n pauseOnKeyboard,\n reverse,\n }),\n [\n side,\n orientation,\n dir,\n speed,\n loopCount,\n autoFill,\n paused,\n pauseOnHover,\n pauseOnKeyboard,\n reverse,\n ]\n );\n\n const MarqueePrimitive = asChild ? Slot : \"div\";\n\n return (\n <MarqueeContext.Provider value={contextValue}>\n <div data-slot=\"marquee-wrapper\" className=\"grid\">\n <MarqueePrimitive\n role=\"marquee\"\n aria-live=\"off\"\n data-orientation={orientation}\n data-slot=\"marquee\"\n dir={dir}\n tabIndex={pauseOnKeyboard ? 0 : undefined}\n {...marqueeProps}\n ref={composedRef}\n className={cn(\n \"relative flex overflow-hidden motion-reduce:animate-none\",\n orientation === \"vertical\" && \"h-full flex-col\",\n orientation === \"horizontal\" && \"w-full\",\n paused && \"[&_*]:[animation-play-state:paused]\",\n pauseOnHover && \"group\",\n pauseOnKeyboard &&\n \"rounded-md focus-visible:border-ring focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n className\n )}\n style={style}\n onKeyDown={pauseOnKeyboard ? onKeyDown : undefined}\n />\n </div>\n </MarqueeContext.Provider>\n );\n}\n\nconst marqueeContentVariants = cva(\n \"flex min-w-full shrink-0 gap-(--marquee-gap)\",\n {\n variants: {\n side: {\n left: \"animate-marquee-left\",\n right: \"animate-marquee-right\",\n top: \"min-h-full min-w-auto animate-marquee-up flex-col\",\n bottom: \"min-h-full min-w-auto animate-marquee-down flex-col\",\n },\n dir: {\n ltr: \"\",\n rtl: \"\",\n },\n pauseOnHover: {\n true: \"group-hover:[animation-play-state:paused]\",\n false: \"\",\n },\n reverse: {\n true: \"[animation-direction:reverse]\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n side: \"left\",\n dir: \"rtl\",\n className: \"animate-marquee-left-rtl\",\n },\n {\n side: \"right\",\n dir: \"rtl\",\n className: \"animate-marquee-right-rtl\",\n },\n ],\n defaultVariants: {\n side: \"left\",\n dir: \"ltr\",\n pauseOnHover: false,\n reverse: false,\n },\n }\n);\n\nfunction MarqueeContent(props: DivProps) {\n const {\n className,\n asChild,\n ref,\n children,\n style: styleProp,\n ...contentProps\n } = props;\n\n const context = useMarqueeContext(CONTENT_NAME);\n const composedRef = useComposedRefs(ref, context.contentRef);\n\n const isVertical = context.orientation === \"vertical\";\n const isRtl = context.dir === \"rtl\";\n\n const dimensions = useResizeObserverStore(\n context.rootRef,\n context.contentRef,\n context.orientation\n );\n\n React.useEffect(() => {\n if (context.rootRef.current && context.contentRef.current) {\n resizeObserverStore.observe(\n context.rootRef.current,\n context.contentRef.current\n );\n\n return () => {\n resizeObserverStore.unobserve(\n context.rootRef.current,\n context.contentRef.current\n );\n };\n }\n }, [context.rootRef, context.contentRef]);\n\n const multiplier = React.useMemo(() => {\n if (!context.autoFill || !dimensions) return 1;\n\n const { rootSize, contentSize } = dimensions;\n if (contentSize === 0) return 1;\n\n return contentSize < rootSize ? Math.ceil(rootSize / contentSize) : 1;\n }, [context.autoFill, dimensions]);\n\n const onMultipliedChildrenRender = React.useCallback(\n (count: number) => {\n return Array.from({ length: Math.max(0, count) }).map((_, i) => (\n <React.Fragment key={i}>{children}</React.Fragment>\n ));\n },\n [children]\n );\n\n const style = React.useMemo(\n () => ({\n ...styleProp,\n animationDuration: \"var(--marquee-duration)\",\n animationDelay: \"var(--marquee-delay)\",\n animationIterationCount: \"var(--marquee-loop-count)\",\n animationDirection: context.reverse ? \"reverse\" : \"normal\",\n }),\n [styleProp, context.reverse]\n );\n\n const ContentPrimitive = asChild ? Slot : \"div\";\n\n return (\n <>\n <ContentPrimitive\n data-orientation={context.orientation}\n data-slot=\"marquee-content\"\n {...contentProps}\n style={style}\n className={cn(\n marqueeContentVariants({\n side: context.side,\n dir: context.dir,\n pauseOnHover: context.pauseOnHover,\n reverse: context.reverse,\n className,\n }),\n isVertical && \"flex-col\",\n isVertical\n ? \"mb-(--marquee-gap)\"\n : isRtl\n ? \"ml-(--marquee-gap)\"\n : \"mr-(--marquee-gap)\"\n )}\n >\n <div\n ref={composedRef}\n className={cn(\n \"flex shrink-0 gap-(--marquee-gap)\",\n isVertical && \"flex-col\"\n )}\n >\n {children}\n </div>\n {onMultipliedChildrenRender(multiplier - 1)}\n </ContentPrimitive>\n <ContentPrimitive\n role=\"presentation\"\n aria-hidden=\"true\"\n {...contentProps}\n style={style}\n className={cn(\n marqueeContentVariants({\n side: context.side,\n dir: context.dir,\n pauseOnHover: context.pauseOnHover,\n reverse: context.reverse,\n className,\n }),\n isVertical && \"flex-col\"\n )}\n >\n {onMultipliedChildrenRender(multiplier)}\n </ContentPrimitive>\n </>\n );\n}\n\nfunction MarqueeItem(props: DivProps) {\n const { className, asChild, ...itemProps } = props;\n\n const ItemPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ItemPrimitive\n data-slot=\"marquee-item\"\n {...itemProps}\n className={cn(\"shrink-0\", className)}\n />\n );\n}\n\nconst marqueeEdgeVariants = cva(\"pointer-events-none absolute z-10\", {\n variants: {\n side: {\n left: \"top-0 left-0 h-full bg-gradient-to-r from-background to-transparent\",\n right:\n \"top-0 right-0 h-full bg-gradient-to-l from-background to-transparent\",\n top: \"top-0 left-0 w-full bg-gradient-to-b from-background to-transparent\",\n bottom:\n \"bottom-0 left-0 w-full bg-gradient-to-t from-background to-transparent\",\n },\n size: {\n default: \"\",\n sm: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n side: [\"left\", \"right\"],\n size: \"default\",\n className: \"w-1/4\",\n },\n {\n side: [\"left\", \"right\"],\n size: \"sm\",\n className: \"w-1/6\",\n },\n {\n side: [\"left\", \"right\"],\n size: \"lg\",\n className: \"w-1/3\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"default\",\n className: \"h-1/4\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"sm\",\n className: \"h-1/6\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"lg\",\n className: \"h-1/3\",\n },\n ],\n defaultVariants: {\n size: \"default\",\n },\n});\n\ninterface MarqueeEdgeProps\n extends VariantProps<typeof marqueeEdgeVariants>,\n DivProps {}\n\nfunction MarqueeEdge(props: MarqueeEdgeProps) {\n const { side, size, className, asChild, ...edgeProps } = props;\n\n const EdgePrimitive = asChild ? Slot : \"div\";\n\n return (\n <EdgePrimitive\n data-size={size}\n data-slot=\"marquee-edge\"\n {...edgeProps}\n className={cn(marqueeEdgeVariants({ side, size, className }))}\n />\n );\n}\n\nexport {\n MarqueeRoot as Root,\n MarqueeContent as Content,\n MarqueeItem as Item,\n MarqueeEdge as Edge,\n //\n MarqueeRoot as Marquee,\n MarqueeContent,\n MarqueeItem,\n MarqueeEdge,\n // types\n type MarqueeRootProps,\n type MarqueeEdgeProps,\n};\n"],"names":["ROOT_NAME","CONTENT_NAME","createResizeObserverStore","listeners","observer","elements","refCounts","isSupported","notificationScheduled","snapshotCache","notify","callback","cleanup","subscribe","getSnapshot","rootElement","contentElement","orientation","rootDims","contentDims","rootSize","contentSize","rootCache","contentCache","cached","snapshot","observe","entries","hasChanged","entry","element","width","height","currentData","rootRect","contentRect","rootData","contentData","unobserve","rootCount","contentCount","resizeObserverStore","useResizeObserverStore","rootRef","contentRef","onSubscribe","React","DirectionContext","useDirection","dir","contextDir","MarqueeContext","useMarqueeContext","consumerName","context","MarqueeRoot","props","side","dirProp","speed","delay","loopCount","gap","asChild","autoFill","pauseOnHover","pauseOnKeyboard","reverse","className","styleProp","ref","marqueeProps","composedRef","useComposedRefs","paused","setPaused","onKeyDown","event","prev","dimensions","duration","safeSpeed","multiplier","style","contextValue","MarqueePrimitive","Slot","jsx","cn","marqueeContentVariants","cva","MarqueeContent","children","contentProps","isVertical","isRtl","onMultipliedChildrenRender","count","_","i","ContentPrimitive","jsxs","Fragment","MarqueeItem","itemProps","marqueeEdgeVariants","MarqueeEdge","size","edgeProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Marquee.js","sources":["../../../../src/components/Marquee/Marquee.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nconst ROOT_NAME = \"Marquee\";\nconst CONTENT_NAME = \"MarqueeContent\";\n\ntype Side = \"left\" | \"right\" | \"top\" | \"bottom\";\ntype Orientation = \"horizontal\" | \"vertical\";\ntype Direction = \"ltr\" | \"rtl\";\n\ntype RootElement = React.ComponentRef<typeof MarqueeRoot>;\ntype ContentElement = React.ComponentRef<typeof MarqueeContent>;\n\ninterface Dimensions {\n width: number;\n height: number;\n}\n\ninterface ElementDimensions {\n rootSize: number;\n contentSize: number;\n}\n\nfunction createResizeObserverStore() {\n const listeners = new Set<() => void>();\n let observer: ResizeObserver | null = null;\n const elements = new Map<Element, Dimensions>();\n const refCounts = new Map<Element, number>();\n const isSupported = typeof ResizeObserver !== \"undefined\";\n let notificationScheduled = false;\n\n const snapshotCache = new WeakMap<\n Element,\n WeakMap<\n Element,\n { horizontal: ElementDimensions; vertical: ElementDimensions }\n >\n >();\n\n function notify() {\n if (notificationScheduled) return;\n notificationScheduled = true;\n queueMicrotask(() => {\n notificationScheduled = false;\n for (const callback of listeners) {\n callback();\n }\n });\n }\n\n function cleanup() {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n elements.clear();\n refCounts.clear();\n }\n\n function subscribe(callback: () => void) {\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) {\n cleanup();\n }\n };\n }\n\n function getSnapshot(\n rootElement: RootElement | null,\n contentElement: ContentElement | null,\n orientation: Orientation\n ): ElementDimensions | null {\n if (!rootElement || !contentElement) return null;\n\n const rootDims = elements.get(rootElement);\n const contentDims = elements.get(contentElement);\n\n if (!rootDims || !contentDims) return null;\n\n const rootSize =\n orientation === \"vertical\" ? rootDims.height : rootDims.width;\n const contentSize =\n orientation === \"vertical\" ? contentDims.height : contentDims.width;\n\n let rootCache = snapshotCache.get(rootElement);\n if (!rootCache) {\n rootCache = new WeakMap();\n snapshotCache.set(rootElement, rootCache);\n }\n\n let contentCache = rootCache.get(contentElement);\n if (!contentCache) {\n contentCache = {\n horizontal: { rootSize: -1, contentSize: -1 },\n vertical: { rootSize: -1, contentSize: -1 },\n };\n rootCache.set(contentElement, contentCache);\n }\n\n const cached = contentCache[orientation];\n if (cached.rootSize === rootSize && cached.contentSize === contentSize) {\n return cached;\n }\n\n const snapshot = { rootSize, contentSize };\n contentCache[orientation] = snapshot;\n return snapshot;\n }\n\n function observe(\n rootElement: RootElement | null,\n contentElement: Element | null\n ) {\n if (!isSupported || !rootElement || !contentElement) return;\n\n if (!observer) {\n observer = new ResizeObserver((entries) => {\n let hasChanged = false;\n\n for (const entry of entries) {\n const element = entry.target;\n const { width, height } = entry.contentRect;\n\n const currentData = elements.get(element);\n\n if (\n !currentData ||\n currentData.width !== width ||\n currentData.height !== height\n ) {\n elements.set(element, { width, height });\n hasChanged = true;\n }\n }\n\n if (hasChanged) {\n notify();\n }\n });\n }\n\n refCounts.set(rootElement, (refCounts.get(rootElement) ?? 0) + 1);\n refCounts.set(contentElement, (refCounts.get(contentElement) ?? 0) + 1);\n\n observer.observe(rootElement);\n observer.observe(contentElement);\n\n const rootRect = rootElement.getBoundingClientRect();\n const contentRect = contentElement.getBoundingClientRect();\n\n const rootData = { width: rootRect.width, height: rootRect.height };\n const contentData = {\n width: contentRect.width,\n height: contentRect.height,\n };\n\n elements.set(rootElement, rootData);\n elements.set(contentElement, contentData);\n\n if (\n rootData.width > 0 &&\n rootData.height > 0 &&\n contentData.width > 0 &&\n contentData.height > 0\n ) {\n notify();\n }\n }\n\n function unobserve(\n rootElement: RootElement | null,\n contentElement: Element | null\n ) {\n if (!observer || !rootElement || !contentElement) return;\n\n const rootCount = (refCounts.get(rootElement) ?? 1) - 1;\n const contentCount = (refCounts.get(contentElement) ?? 1) - 1;\n\n if (rootCount <= 0) {\n observer.unobserve(rootElement);\n elements.delete(rootElement);\n refCounts.delete(rootElement);\n } else {\n refCounts.set(rootElement, rootCount);\n }\n\n if (contentCount <= 0) {\n observer.unobserve(contentElement);\n elements.delete(contentElement);\n refCounts.delete(contentElement);\n } else {\n refCounts.set(contentElement, contentCount);\n }\n }\n\n return {\n subscribe,\n getSnapshot,\n observe,\n unobserve,\n };\n}\n\nconst resizeObserverStore = createResizeObserverStore();\n\nfunction useResizeObserverStore(\n rootRef: React.RefObject<RootElement | null>,\n contentRef: React.RefObject<ContentElement | null>,\n orientation: Orientation\n) {\n const onSubscribe = React.useCallback(\n (callback: () => void) => resizeObserverStore.subscribe(callback),\n []\n );\n\n const getSnapshot = React.useCallback(\n () =>\n resizeObserverStore.getSnapshot(\n rootRef.current,\n contentRef.current,\n orientation\n ),\n [rootRef, contentRef, orientation]\n );\n\n return React.useSyncExternalStore(onSubscribe, getSnapshot, getSnapshot);\n}\n\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\nfunction useDirection(dir?: Direction): Direction {\n const contextDir = React.useContext(DirectionContext);\n return dir ?? contextDir ?? \"ltr\";\n}\n\ninterface DivProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\ninterface MarqueeContextValue {\n side: Side;\n orientation: Orientation;\n dir: Direction;\n speed: number;\n loopCount: number;\n contentRef: React.RefObject<ContentElement | null>;\n rootRef: React.RefObject<RootElement | null>;\n autoFill: boolean;\n pauseOnHover: boolean;\n pauseOnKeyboard: boolean;\n reverse: boolean;\n paused: boolean;\n}\n\nconst MarqueeContext = React.createContext<MarqueeContextValue | null>(null);\n\nfunction useMarqueeContext(consumerName: string) {\n const context = React.useContext(MarqueeContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface MarqueeRootProps extends DivProps {\n side?: Side;\n dir?: Direction;\n speed?: number;\n delay?: number;\n loopCount?: number;\n gap?: string | number;\n autoFill?: boolean;\n pauseOnHover?: boolean;\n pauseOnKeyboard?: boolean;\n reverse?: boolean;\n}\n\nfunction MarqueeRoot(props: MarqueeRootProps) {\n const {\n side = \"left\",\n dir: dirProp,\n speed = 50,\n delay = 0,\n loopCount = 0,\n gap = \"1rem\",\n asChild,\n autoFill = false,\n pauseOnHover = false,\n pauseOnKeyboard = false,\n reverse = false,\n className,\n style: styleProp,\n ref,\n ...marqueeProps\n } = props;\n\n const orientation: Orientation =\n side === \"top\" || side === \"bottom\" ? \"vertical\" : \"horizontal\";\n\n const dir = useDirection(dirProp);\n\n const rootRef = React.useRef<RootElement>(null);\n const contentRef = React.useRef<ContentElement>(null);\n const composedRef = useComposedRefs(ref, rootRef);\n\n const [paused, setPaused] = React.useState(false);\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (pauseOnKeyboard && event.key === \" \") {\n event.preventDefault();\n setPaused((prev) => !prev);\n }\n },\n [pauseOnKeyboard]\n );\n\n const dimensions = useResizeObserverStore(rootRef, contentRef, orientation);\n\n const duration = React.useMemo(() => {\n const safeSpeed = Math.max(0.001, speed);\n\n if (!dimensions) {\n const defaultDistance = autoFill ? 1000 : 2000;\n return defaultDistance / safeSpeed;\n }\n\n const { rootSize, contentSize } = dimensions;\n\n if (autoFill) {\n const multiplier =\n contentSize < rootSize ? Math.ceil(rootSize / contentSize) : 1;\n return (contentSize * multiplier) / safeSpeed;\n } else {\n return contentSize < rootSize\n ? rootSize / safeSpeed\n : contentSize / safeSpeed;\n }\n }, [dimensions, speed, autoFill]);\n\n const style = React.useMemo<React.CSSProperties>(\n () => ({\n \"--marquee-duration\": `${duration}s`,\n \"--marquee-gap\": gap,\n \"--marquee-delay\": `${delay}s`,\n \"--marquee-loop-count\":\n loopCount === 0 || loopCount === Infinity\n ? \"infinite\"\n : loopCount.toString(),\n ...styleProp,\n }),\n [duration, gap, delay, loopCount, styleProp]\n );\n\n const contextValue = React.useMemo<MarqueeContextValue>(\n () => ({\n side,\n orientation,\n dir,\n speed,\n loopCount,\n contentRef,\n rootRef,\n autoFill,\n paused,\n pauseOnHover,\n pauseOnKeyboard,\n reverse,\n }),\n [\n side,\n orientation,\n dir,\n speed,\n loopCount,\n autoFill,\n paused,\n pauseOnHover,\n pauseOnKeyboard,\n reverse,\n ]\n );\n\n const MarqueePrimitive = asChild ? Slot : \"div\";\n\n return (\n <MarqueeContext.Provider value={contextValue}>\n <div data-slot=\"marquee-wrapper\" className=\"ds:grid\">\n <MarqueePrimitive\n role=\"marquee\"\n aria-live=\"off\"\n data-orientation={orientation}\n data-slot=\"marquee\"\n dir={dir}\n tabIndex={pauseOnKeyboard ? 0 : undefined}\n {...marqueeProps}\n ref={composedRef}\n className={cn(\n \"ds:relative ds:flex ds:overflow-hidden ds:motion-reduce:animate-none\",\n orientation === \"vertical\" && \"ds:h-full ds:flex-col\",\n orientation === \"horizontal\" && \"ds:w-full\",\n paused && \"ds:[&_*]:[animation-play-state:paused]\",\n pauseOnHover && \"ds:group\",\n pauseOnKeyboard &&\n \"ds:rounded-md ds:focus-visible:border-ring ds:focus-visible:outline-none ds:focus-visible:ring-[3px] ds:focus-visible:ring-ring/50\",\n className\n )}\n style={style}\n onKeyDown={pauseOnKeyboard ? onKeyDown : undefined}\n />\n </div>\n </MarqueeContext.Provider>\n );\n}\n\nconst marqueeContentVariants = cva(\n \"ds:flex ds:min-w-full ds:shrink-0 ds:gap-(--marquee-gap)\",\n {\n variants: {\n side: {\n left: \"ds:animate-marquee-left\",\n right: \"ds:animate-marquee-right\",\n top: \"ds:min-h-full ds:min-w-auto ds:animate-marquee-up ds:flex-col\",\n bottom: \"ds:min-h-full ds:min-w-auto ds:animate-marquee-down ds:flex-col\",\n },\n dir: {\n ltr: \"\",\n rtl: \"\",\n },\n pauseOnHover: {\n true: \"ds:group-hover:[animation-play-state:paused]\",\n false: \"\",\n },\n reverse: {\n true: \"ds:[animation-direction:reverse]\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n side: \"left\",\n dir: \"rtl\",\n className: \"ds:animate-marquee-left-rtl\",\n },\n {\n side: \"right\",\n dir: \"rtl\",\n className: \"ds:animate-marquee-right-rtl\",\n },\n ],\n defaultVariants: {\n side: \"left\",\n dir: \"ltr\",\n pauseOnHover: false,\n reverse: false,\n },\n }\n);\n\nfunction MarqueeContent(props: DivProps) {\n const {\n className,\n asChild,\n ref,\n children,\n style: styleProp,\n ...contentProps\n } = props;\n\n const context = useMarqueeContext(CONTENT_NAME);\n const composedRef = useComposedRefs(ref, context.contentRef);\n\n const isVertical = context.orientation === \"vertical\";\n const isRtl = context.dir === \"rtl\";\n\n const dimensions = useResizeObserverStore(\n context.rootRef,\n context.contentRef,\n context.orientation\n );\n\n React.useEffect(() => {\n if (context.rootRef.current && context.contentRef.current) {\n resizeObserverStore.observe(\n context.rootRef.current,\n context.contentRef.current\n );\n\n return () => {\n resizeObserverStore.unobserve(\n context.rootRef.current,\n context.contentRef.current\n );\n };\n }\n }, [context.rootRef, context.contentRef]);\n\n const multiplier = React.useMemo(() => {\n if (!context.autoFill || !dimensions) return 1;\n\n const { rootSize, contentSize } = dimensions;\n if (contentSize === 0) return 1;\n\n return contentSize < rootSize ? Math.ceil(rootSize / contentSize) : 1;\n }, [context.autoFill, dimensions]);\n\n const onMultipliedChildrenRender = React.useCallback(\n (count: number) => {\n return Array.from({ length: Math.max(0, count) }).map((_, i) => (\n <React.Fragment key={i}>{children}</React.Fragment>\n ));\n },\n [children]\n );\n\n const style = React.useMemo(\n () => ({\n ...styleProp,\n animationDuration: \"var(--marquee-duration)\",\n animationDelay: \"var(--marquee-delay)\",\n animationIterationCount: \"var(--marquee-loop-count)\",\n animationDirection: context.reverse ? \"reverse\" : \"normal\",\n }),\n [styleProp, context.reverse]\n );\n\n const ContentPrimitive = asChild ? Slot : \"div\";\n\n return (\n <>\n <ContentPrimitive\n data-orientation={context.orientation}\n data-slot=\"marquee-content\"\n {...contentProps}\n style={style}\n className={cn(\n marqueeContentVariants({\n side: context.side,\n dir: context.dir,\n pauseOnHover: context.pauseOnHover,\n reverse: context.reverse,\n className,\n }),\n isVertical && \"ds:flex-col\",\n isVertical\n ? \"ds:mb-(--marquee-gap)\"\n : isRtl\n ? \"ds:ml-(--marquee-gap)\"\n : \"ds:mr-(--marquee-gap)\"\n )}\n >\n <div\n ref={composedRef}\n className={cn(\n \"ds:flex ds:shrink-0 ds:gap-(--marquee-gap)\",\n isVertical && \"ds:flex-col\"\n )}\n >\n {children}\n </div>\n {onMultipliedChildrenRender(multiplier - 1)}\n </ContentPrimitive>\n <ContentPrimitive\n role=\"presentation\"\n aria-hidden=\"true\"\n {...contentProps}\n style={style}\n className={cn(\n marqueeContentVariants({\n side: context.side,\n dir: context.dir,\n pauseOnHover: context.pauseOnHover,\n reverse: context.reverse,\n className,\n }),\n isVertical && \"ds:flex-col\"\n )}\n >\n {onMultipliedChildrenRender(multiplier)}\n </ContentPrimitive>\n </>\n );\n}\n\nfunction MarqueeItem(props: DivProps) {\n const { className, asChild, ...itemProps } = props;\n\n const ItemPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ItemPrimitive\n data-slot=\"marquee-item\"\n {...itemProps}\n className={cn(\"ds:shrink-0\", className)}\n />\n );\n}\n\nconst marqueeEdgeVariants = cva(\"ds:pointer-events-none ds:absolute ds:z-10\", {\n variants: {\n side: {\n left: \"ds:top-0 ds:left-0 ds:h-full ds:bg-gradient-to-r ds:from-background ds:to-transparent\",\n right:\n \"ds:top-0 ds:right-0 ds:h-full ds:bg-gradient-to-l ds:from-background ds:to-transparent\",\n top: \"ds:top-0 ds:left-0 ds:w-full ds:bg-gradient-to-b ds:from-background ds:to-transparent\",\n bottom:\n \"ds:bottom-0 ds:left-0 ds:w-full ds:bg-gradient-to-t ds:from-background ds:to-transparent\",\n },\n size: {\n default: \"\",\n sm: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n side: [\"left\", \"right\"],\n size: \"default\",\n className: \"ds:w-1/4\",\n },\n {\n side: [\"left\", \"right\"],\n size: \"sm\",\n className: \"ds:w-1/6\",\n },\n {\n side: [\"left\", \"right\"],\n size: \"lg\",\n className: \"ds:w-1/3\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"default\",\n className: \"ds:h-1/4\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"sm\",\n className: \"ds:h-1/6\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"lg\",\n className: \"ds:h-1/3\",\n },\n ],\n defaultVariants: {\n size: \"default\",\n },\n});\n\ninterface MarqueeEdgeProps\n extends VariantProps<typeof marqueeEdgeVariants>,\n DivProps {}\n\nfunction MarqueeEdge(props: MarqueeEdgeProps) {\n const { side, size, className, asChild, ...edgeProps } = props;\n\n const EdgePrimitive = asChild ? Slot : \"div\";\n\n return (\n <EdgePrimitive\n data-size={size}\n data-slot=\"marquee-edge\"\n {...edgeProps}\n className={cn(marqueeEdgeVariants({ side, size, className }))}\n />\n );\n}\n\nexport {\n MarqueeRoot as Root,\n MarqueeContent as Content,\n MarqueeItem as Item,\n MarqueeEdge as Edge,\n //\n MarqueeRoot as Marquee,\n MarqueeContent,\n MarqueeItem,\n MarqueeEdge,\n // types\n type MarqueeRootProps,\n type MarqueeEdgeProps,\n};\n"],"names":["ROOT_NAME","CONTENT_NAME","createResizeObserverStore","listeners","observer","elements","refCounts","isSupported","notificationScheduled","snapshotCache","notify","callback","cleanup","subscribe","getSnapshot","rootElement","contentElement","orientation","rootDims","contentDims","rootSize","contentSize","rootCache","contentCache","cached","snapshot","observe","entries","hasChanged","entry","element","width","height","currentData","rootRect","contentRect","rootData","contentData","unobserve","rootCount","contentCount","resizeObserverStore","useResizeObserverStore","rootRef","contentRef","onSubscribe","React","DirectionContext","useDirection","dir","contextDir","MarqueeContext","useMarqueeContext","consumerName","context","MarqueeRoot","props","side","dirProp","speed","delay","loopCount","gap","asChild","autoFill","pauseOnHover","pauseOnKeyboard","reverse","className","styleProp","ref","marqueeProps","composedRef","useComposedRefs","paused","setPaused","onKeyDown","event","prev","dimensions","duration","safeSpeed","multiplier","style","contextValue","MarqueePrimitive","Slot","jsx","cn","marqueeContentVariants","cva","MarqueeContent","children","contentProps","isVertical","isRtl","onMultipliedChildrenRender","count","_","i","ContentPrimitive","jsxs","Fragment","MarqueeItem","itemProps","marqueeEdgeVariants","MarqueeEdge","size","edgeProps"],"mappings":"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"}
|
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
1
|
+
import { jsx as e, jsxs as h } from "react/jsx-runtime";
|
|
2
2
|
import * as j from "react";
|
|
3
|
-
import { Pagination as T, PaginationContent as _, PaginationItem as
|
|
3
|
+
import { Pagination as T, PaginationContent as _, PaginationItem as u, PaginationPrevious as A, PaginationEllipsis as D, PaginationLink as H, PaginationNext as J } from "../../packages/ui/src/components/pagination.js";
|
|
4
4
|
import { cn as W } from "../../packages/ui/src/lib/utils.js";
|
|
5
5
|
import { animationEffect as q } from "../../utils/animations.js";
|
|
6
6
|
import { ChevronsRight as B, ChevronsLeft as F, MoreHorizontalIcon as b } from "lucide-react";
|
|
7
7
|
import { Popover as G, PopoverTrigger as K, PopoverContent as Q } from "../../packages/ui/src/components/popover.js";
|
|
8
8
|
import { Command as U, CommandInput as V, CommandList as X, CommandItem as Y } from "../../packages/ui/src/components/command.js";
|
|
9
|
-
const Z = (t,
|
|
9
|
+
const Z = (t, f, r) => {
|
|
10
10
|
if (t <= r)
|
|
11
|
-
return Array.from({ length: t }, (
|
|
12
|
-
const n = [],
|
|
13
|
-
let l = Math.max(1,
|
|
11
|
+
return Array.from({ length: t }, (o, a) => a + 1);
|
|
12
|
+
const n = [], s = Math.floor(r / 2);
|
|
13
|
+
let l = Math.max(1, f - s);
|
|
14
14
|
const i = Math.min(t, l + r - 1);
|
|
15
15
|
i - l + 1 < r && (l = Math.max(1, i - r + 1)), l > 1 && (n.push(1), l > 2 && n.push("..."));
|
|
16
|
-
for (let
|
|
17
|
-
n.push(
|
|
16
|
+
for (let o = l; o <= i; o++)
|
|
17
|
+
n.push(o);
|
|
18
18
|
return i < t && (i < t - 1 && n.push("..."), n.push(t)), n;
|
|
19
19
|
}, z = ({
|
|
20
20
|
position: t,
|
|
21
|
-
onJumpPrevious:
|
|
21
|
+
onJumpPrevious: f,
|
|
22
22
|
onJumpNext: r,
|
|
23
23
|
color: n,
|
|
24
|
-
size:
|
|
24
|
+
size: s,
|
|
25
25
|
previousText: l,
|
|
26
26
|
nextText: i,
|
|
27
|
-
jumpType:
|
|
28
|
-
total:
|
|
29
|
-
onPageChange:
|
|
27
|
+
jumpType: o = "jump",
|
|
28
|
+
total: a,
|
|
29
|
+
onPageChange: m
|
|
30
30
|
}) => {
|
|
31
31
|
const [v, C] = j.useState(!1);
|
|
32
|
-
return
|
|
33
|
-
/* @__PURE__ */ e(K, { asChild: !0, children: /* @__PURE__ */ e(
|
|
34
|
-
/* @__PURE__ */ e(Q, { className: "w-40 p-0", children: /* @__PURE__ */
|
|
32
|
+
return o === "select" ? /* @__PURE__ */ h(G, { open: v, onOpenChange: C, children: [
|
|
33
|
+
/* @__PURE__ */ e(K, { asChild: !0, children: /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(D, { size: s, color: n }) }) }),
|
|
34
|
+
/* @__PURE__ */ e(Q, { className: "ds:w-40 ds:p-0", children: /* @__PURE__ */ h(U, { children: [
|
|
35
35
|
/* @__PURE__ */ e(V, { placeholder: "Search pages..." }),
|
|
36
|
-
/* @__PURE__ */ e(X, { children:
|
|
36
|
+
/* @__PURE__ */ e(X, { children: a && Array.from({ length: a }, (d, N) => N + 1).map((d) => /* @__PURE__ */ h(
|
|
37
37
|
Y,
|
|
38
38
|
{
|
|
39
39
|
onSelect: () => {
|
|
40
|
-
|
|
40
|
+
m?.(d), C(!1);
|
|
41
41
|
},
|
|
42
42
|
children: [
|
|
43
43
|
"Page ",
|
|
44
|
-
|
|
44
|
+
d
|
|
45
45
|
]
|
|
46
46
|
},
|
|
47
|
-
|
|
47
|
+
d
|
|
48
48
|
)) })
|
|
49
49
|
] }) })
|
|
50
|
-
] }) : /* @__PURE__ */ e(
|
|
50
|
+
] }) : /* @__PURE__ */ e(u, { className: "ds:group", children: t === "before" ? /* @__PURE__ */ h(
|
|
51
51
|
A,
|
|
52
52
|
{
|
|
53
53
|
href: "#",
|
|
54
|
-
onClick: (
|
|
55
|
-
|
|
54
|
+
onClick: (d) => {
|
|
55
|
+
d.preventDefault(), f?.();
|
|
56
56
|
},
|
|
57
57
|
color: n,
|
|
58
|
-
size:
|
|
58
|
+
size: s,
|
|
59
59
|
hideIcon: !0,
|
|
60
|
-
className: "peer",
|
|
60
|
+
className: "ds:peer",
|
|
61
61
|
children: [
|
|
62
|
-
/* @__PURE__ */ e("span", { className: "hidden group-hover:block leading-none", children: l }),
|
|
63
|
-
/* @__PURE__ */ e(b, { className: "group-hover:hidden cursor-pointer" })
|
|
62
|
+
/* @__PURE__ */ e("span", { className: "ds:hidden ds:group-hover:block ds:leading-none", children: l }),
|
|
63
|
+
/* @__PURE__ */ e(b, { className: "ds:group-hover:hidden ds:cursor-pointer" })
|
|
64
64
|
]
|
|
65
65
|
}
|
|
66
|
-
) : /* @__PURE__ */
|
|
66
|
+
) : /* @__PURE__ */ h(
|
|
67
67
|
J,
|
|
68
68
|
{
|
|
69
69
|
href: "#",
|
|
70
|
-
onClick: (
|
|
71
|
-
|
|
70
|
+
onClick: (d) => {
|
|
71
|
+
d.preventDefault(), r?.();
|
|
72
72
|
},
|
|
73
73
|
color: n,
|
|
74
|
-
size:
|
|
74
|
+
size: s,
|
|
75
75
|
hideIcon: !0,
|
|
76
76
|
children: [
|
|
77
|
-
/* @__PURE__ */ e("span", { className: "hidden group-hover:block leading-none", children: i }),
|
|
78
|
-
/* @__PURE__ */ e(b, { className: "group-hover:hidden cursor-pointer" })
|
|
77
|
+
/* @__PURE__ */ e("span", { className: "ds:hidden ds:group-hover:block ds:leading-none", children: i }),
|
|
78
|
+
/* @__PURE__ */ e(b, { className: "ds:group-hover:hidden ds:cursor-pointer" })
|
|
79
79
|
]
|
|
80
80
|
}
|
|
81
81
|
) });
|
|
82
82
|
}, ee = j.forwardRef(
|
|
83
83
|
({
|
|
84
84
|
className: t,
|
|
85
|
-
animation:
|
|
85
|
+
animation: f,
|
|
86
86
|
total: r,
|
|
87
87
|
currentPage: n = 1,
|
|
88
|
-
onPageChange:
|
|
88
|
+
onPageChange: s,
|
|
89
89
|
showPreviousNext: l = !0,
|
|
90
90
|
color: i = "muted",
|
|
91
|
-
size:
|
|
92
|
-
maxPages:
|
|
93
|
-
previousText:
|
|
91
|
+
size: o,
|
|
92
|
+
maxPages: a = 5,
|
|
93
|
+
previousText: m,
|
|
94
94
|
nextText: v,
|
|
95
95
|
jumpOnEllipsis: C = !1,
|
|
96
|
-
jumpType:
|
|
96
|
+
jumpType: d = "jump",
|
|
97
97
|
children: N,
|
|
98
98
|
...g
|
|
99
99
|
}, P) => {
|
|
100
|
-
const I = j.useMemo(() =>
|
|
101
|
-
animation:
|
|
100
|
+
const I = j.useMemo(() => f ? q({
|
|
101
|
+
animation: f,
|
|
102
102
|
children: N,
|
|
103
103
|
className: t,
|
|
104
104
|
rootClassName: "",
|
|
105
105
|
variantType: void 0,
|
|
106
106
|
...g
|
|
107
|
-
}) : null, [
|
|
108
|
-
const
|
|
109
|
-
|
|
107
|
+
}) : null, [f, g, t, N]), S = () => m === !1 ? !1 : m === !0 ? "Previous" : m, w = () => v === !1 ? !1 : v === !0 ? "Next" : v, E = () => {
|
|
108
|
+
const c = Math.max(1, n - a);
|
|
109
|
+
s?.(c);
|
|
110
110
|
}, L = () => {
|
|
111
|
-
const
|
|
112
|
-
|
|
111
|
+
const c = Math.min(r, n + a);
|
|
112
|
+
s?.(c);
|
|
113
113
|
}, O = () => {
|
|
114
114
|
if (!r) return N;
|
|
115
|
-
const
|
|
116
|
-
return /* @__PURE__ */
|
|
117
|
-
l && /* @__PURE__ */ e(
|
|
115
|
+
const c = Z(r, n, a);
|
|
116
|
+
return /* @__PURE__ */ h(_, { children: [
|
|
117
|
+
l && /* @__PURE__ */ e(u, { className: "ds:flex ds:justify-center", children: /* @__PURE__ */ e(
|
|
118
118
|
A,
|
|
119
119
|
{
|
|
120
120
|
href: "#",
|
|
121
|
-
onClick: (
|
|
122
|
-
|
|
121
|
+
onClick: (p) => {
|
|
122
|
+
p.preventDefault(), n > 1 && s?.(n - 1);
|
|
123
123
|
},
|
|
124
124
|
color: i,
|
|
125
|
-
size:
|
|
125
|
+
size: o,
|
|
126
126
|
children: S()
|
|
127
127
|
}
|
|
128
128
|
) }),
|
|
129
|
-
|
|
130
|
-
if (
|
|
129
|
+
c.map((p, k) => {
|
|
130
|
+
if (p === "...") {
|
|
131
131
|
if (C) {
|
|
132
|
-
const M = k, R =
|
|
132
|
+
const M = k, R = c.findIndex(
|
|
133
133
|
(x) => typeof x == "number" && x === n
|
|
134
134
|
), $ = M < R ? "before" : "after";
|
|
135
135
|
return /* @__PURE__ */ e(
|
|
@@ -139,42 +139,42 @@ const Z = (t, c, r) => {
|
|
|
139
139
|
onJumpPrevious: E,
|
|
140
140
|
onJumpNext: L,
|
|
141
141
|
color: i,
|
|
142
|
-
size:
|
|
142
|
+
size: o,
|
|
143
143
|
previousText: /* @__PURE__ */ e(F, {}),
|
|
144
144
|
nextText: /* @__PURE__ */ e(B, {}),
|
|
145
|
-
jumpType:
|
|
145
|
+
jumpType: d,
|
|
146
146
|
total: r,
|
|
147
|
-
onPageChange:
|
|
147
|
+
onPageChange: s
|
|
148
148
|
},
|
|
149
149
|
`ellipsis-${k}`
|
|
150
150
|
);
|
|
151
151
|
}
|
|
152
|
-
return /* @__PURE__ */ e(
|
|
152
|
+
return /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(D, { size: o, color: i }) }, `ellipsis-${k}`);
|
|
153
153
|
}
|
|
154
|
-
const y =
|
|
155
|
-
return /* @__PURE__ */ e(
|
|
154
|
+
const y = p;
|
|
155
|
+
return /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(
|
|
156
156
|
H,
|
|
157
157
|
{
|
|
158
158
|
href: "#",
|
|
159
159
|
isActive: y === n,
|
|
160
160
|
onClick: (M) => {
|
|
161
|
-
M.preventDefault(),
|
|
161
|
+
M.preventDefault(), s?.(y);
|
|
162
162
|
},
|
|
163
163
|
color: i,
|
|
164
|
-
size:
|
|
164
|
+
size: o,
|
|
165
165
|
children: y
|
|
166
166
|
}
|
|
167
167
|
) }, y);
|
|
168
168
|
}),
|
|
169
|
-
l && /* @__PURE__ */ e(
|
|
169
|
+
l && /* @__PURE__ */ e(u, { className: "ds:flex ds:justify-center", children: /* @__PURE__ */ e(
|
|
170
170
|
J,
|
|
171
171
|
{
|
|
172
172
|
href: "#",
|
|
173
|
-
onClick: (
|
|
174
|
-
|
|
173
|
+
onClick: (p) => {
|
|
174
|
+
p.preventDefault(), n < r && s?.(n + 1);
|
|
175
175
|
},
|
|
176
176
|
color: i,
|
|
177
|
-
size:
|
|
177
|
+
size: o,
|
|
178
178
|
children: w()
|
|
179
179
|
}
|
|
180
180
|
) })
|
|
@@ -200,7 +200,7 @@ export {
|
|
|
200
200
|
ee as Pagination,
|
|
201
201
|
_ as PaginationContent,
|
|
202
202
|
D as PaginationEllipsis,
|
|
203
|
-
|
|
203
|
+
u as PaginationItem,
|
|
204
204
|
H as PaginationLink,
|
|
205
205
|
J as PaginationNext,
|
|
206
206
|
A as PaginationPrevious
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n Pagination as SPagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n} from \"@dsui/ui/components/pagination\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { ButtonAnimation } from \"@/types/variables\";\nimport { animationEffect } from \"@/utils/animations\";\nimport { ChevronsLeft, ChevronsRight, MoreHorizontalIcon } from \"lucide-react\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@dsui/ui/components/popover\";\nimport {\n Command,\n CommandInput,\n CommandList,\n CommandItem,\n} from \"@dsui/ui/components/command\";\nimport type { Button } from \"../Button\";\n\ntype PaginationItemType =\n | number\n | \"...\"\n | { page: number; isActive?: boolean; disabled?: boolean };\n\ntype PaginationWrapperProps = React.ComponentProps<typeof SPagination> & {\n animation?: ButtonAnimation;\n total?: number;\n currentPage?: number;\n onPageChange?: (page: number) => void;\n showPreviousNext?: boolean;\n maxPages?: number; // số pages hiển thị\n previousText?: string | boolean;\n nextText?: string | boolean;\n jumpOnEllipsis?: boolean; // khi hover vào ellipsis thì hiện thành nút next/previous\n jumpType?: \"jump\" | \"select\"; // jump type for ellipsis interaction\n} & Pick<React.ComponentProps<typeof Button>, \"size\" | \"color\">;\n\ntype AnimResult = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst generatePages = (\n total: number,\n currentPage: number,\n maxPages: number\n): PaginationItemType[] => {\n if (total <= maxPages) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const pages: PaginationItemType[] = [];\n const halfSize = Math.floor(maxPages / 2);\n let start = Math.max(1, currentPage - halfSize);\n const end = Math.min(total, start + maxPages - 1);\n\n if (end - start + 1 < maxPages) {\n start = Math.max(1, end - maxPages + 1);\n }\n\n // Add first page and ellipsis if needed\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"...\");\n }\n }\n\n // Add middle pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis and last page if needed\n if (end < total) {\n if (end < total - 1) {\n pages.push(\"...\");\n }\n pages.push(total);\n }\n\n return pages;\n};\n\nconst PaginationEllipsisWithJump = ({\n position,\n onJumpPrevious,\n onJumpNext,\n color,\n size,\n previousText,\n nextText,\n jumpType = \"jump\",\n total,\n onPageChange,\n}: {\n position: \"before\" | \"after\";\n onJumpPrevious?: () => void;\n onJumpNext?: () => void;\n color?: PaginationWrapperProps[\"color\"];\n size?: PaginationWrapperProps[\"size\"];\n previousText?: React.ReactNode;\n nextText?: React.ReactNode;\n jumpType?: \"jump\" | \"select\";\n total?: number;\n onPageChange?: (page: number) => void;\n}) => {\n const [popoverOpen, setPopoverOpen] = React.useState(false);\n\n if (jumpType === \"select\") {\n return (\n <Popover open={popoverOpen} onOpenChange={setPopoverOpen}>\n <PopoverTrigger asChild>\n <PaginationItem>\n <PaginationEllipsis size={size} color={color} />\n </PaginationItem>\n </PopoverTrigger>\n <PopoverContent className=\"w-40 p-0\">\n <Command>\n <CommandInput placeholder=\"Search pages...\" />\n <CommandList>\n {total &&\n Array.from({ length: total }, (_, i) => i + 1).map((page) => (\n <CommandItem\n key={page}\n onSelect={() => {\n onPageChange?.(page);\n setPopoverOpen(false);\n }}\n >\n Page {page}\n </CommandItem>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <PaginationItem className=\"group\">\n {position === \"before\" ? (\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onJumpPrevious?.();\n }}\n color={color}\n size={size}\n hideIcon\n className=\"peer\"\n >\n <span className=\"hidden group-hover:block leading-none\">\n {previousText}\n </span>\n <MoreHorizontalIcon className=\"group-hover:hidden cursor-pointer\" />\n </PaginationPrevious>\n ) : (\n <PaginationNext\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onJumpNext?.();\n }}\n color={color}\n size={size}\n hideIcon\n >\n <span className=\"hidden group-hover:block leading-none\">\n {nextText}\n </span>\n <MoreHorizontalIcon className=\"group-hover:hidden cursor-pointer\" />\n </PaginationNext>\n )}\n </PaginationItem>\n );\n};\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationWrapperProps>(\n (\n {\n className,\n animation,\n total,\n currentPage = 1,\n onPageChange,\n showPreviousNext = true,\n color = \"muted\",\n size,\n maxPages = 5,\n previousText,\n nextText,\n jumpOnEllipsis = false,\n jumpType = \"jump\",\n children,\n ...props\n },\n ref\n ) => {\n const paginationAnimation = React.useMemo<AnimResult | null>(() => {\n if (!animation) return null;\n return animationEffect<ButtonAnimation, string | undefined>({\n animation,\n children,\n className,\n rootClassName: \"\",\n variantType: undefined,\n ...props,\n });\n }, [animation, props, className, children]);\n\n const getPreviousText = () => {\n if (previousText === false) return false;\n if (previousText === true) return \"Previous\";\n return previousText;\n };\n\n const getNextText = () => {\n if (nextText === false) return false;\n if (nextText === true) return \"Next\";\n return nextText;\n };\n\n const handleJumpPrevious = () => {\n const newPage = Math.max(1, currentPage - maxPages);\n onPageChange?.(newPage);\n };\n\n const handleJumpNext = () => {\n const newPage = Math.min(total!, currentPage + maxPages);\n onPageChange?.(newPage);\n };\n\n const renderItems = () => {\n if (!total) return children;\n\n const pages = generatePages(total, currentPage, maxPages);\n\n return (\n <PaginationContent>\n {showPreviousNext && (\n <PaginationItem className=\"flex justify-center\">\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n if (currentPage > 1) onPageChange?.(currentPage - 1);\n }}\n color={color}\n size={size}\n >\n {getPreviousText()}\n </PaginationPrevious>\n </PaginationItem>\n )}\n {pages.map((item, index) => {\n if (item === \"...\") {\n if (jumpOnEllipsis) {\n // Determine if this ellipsis is before or after the active page\n const ellipsisIndex = index;\n const activePageIndex = pages.findIndex(\n (page) => typeof page === \"number\" && page === currentPage\n );\n const position =\n ellipsisIndex < activePageIndex ? \"before\" : \"after\";\n\n return (\n <PaginationEllipsisWithJump\n key={`ellipsis-${index}`}\n position={position}\n onJumpPrevious={handleJumpPrevious}\n onJumpNext={handleJumpNext}\n color={color}\n size={size}\n previousText={<ChevronsLeft />}\n nextText={<ChevronsRight />}\n jumpType={jumpType}\n total={total}\n onPageChange={onPageChange}\n />\n );\n }\n return (\n <PaginationItem key={`ellipsis-${index}`}>\n <PaginationEllipsis size={size} color={color} />\n </PaginationItem>\n );\n }\n\n const page = item as number;\n const isActive = page === currentPage;\n\n return (\n <PaginationItem key={page}>\n <PaginationLink\n href=\"#\"\n isActive={isActive}\n onClick={(e) => {\n e.preventDefault();\n onPageChange?.(page);\n }}\n color={color}\n size={size}\n >\n {page}\n </PaginationLink>\n </PaginationItem>\n );\n })}\n {showPreviousNext && (\n <PaginationItem className=\"flex justify-center\">\n <PaginationNext\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n if (currentPage < total) onPageChange?.(currentPage + 1);\n }}\n color={color}\n size={size}\n >\n {getNextText()}\n </PaginationNext>\n </PaginationItem>\n )}\n </PaginationContent>\n );\n };\n\n return (\n <SPagination\n ref={ref}\n className={cn(className, paginationAnimation?.className)}\n style={{\n ...(props.style || {}),\n ...(paginationAnimation?.style || {}),\n }}\n {...props}\n >\n {paginationAnimation?.children ?? renderItems()}\n </SPagination>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n type PaginationWrapperProps,\n type PaginationItemType,\n};\n"],"names":["generatePages","total","currentPage","maxPages","_","i","pages","halfSize","start","end","PaginationEllipsisWithJump","position","onJumpPrevious","onJumpNext","color","size","previousText","nextText","jumpType","onPageChange","popoverOpen","setPopoverOpen","React","jsxs","Popover","jsx","PopoverTrigger","PaginationItem","PaginationEllipsis","PopoverContent","Command","CommandInput","CommandList","page","CommandItem","PaginationPrevious","e","MoreHorizontalIcon","PaginationNext","Pagination","className","animation","showPreviousNext","jumpOnEllipsis","children","props","ref","paginationAnimation","animationEffect","getPreviousText","getNextText","handleJumpPrevious","newPage","handleJumpNext","renderItems","PaginationContent","item","index","ellipsisIndex","activePageIndex","ChevronsLeft","ChevronsRight","PaginationLink","SPagination","cn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n Pagination as SPagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n} from \"@dsui/ui/components/pagination\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { ButtonAnimation } from \"@/types/variables\";\nimport { animationEffect } from \"@/utils/animations\";\nimport { ChevronsLeft, ChevronsRight, MoreHorizontalIcon } from \"lucide-react\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@dsui/ui/components/popover\";\nimport {\n Command,\n CommandInput,\n CommandList,\n CommandItem,\n} from \"@dsui/ui/components/command\";\nimport type { Button } from \"../Button\";\n\ntype PaginationItemType =\n | number\n | \"...\"\n | { page: number; isActive?: boolean; disabled?: boolean };\n\ntype PaginationWrapperProps = React.ComponentProps<typeof SPagination> & {\n animation?: ButtonAnimation;\n total?: number;\n currentPage?: number;\n onPageChange?: (page: number) => void;\n showPreviousNext?: boolean;\n maxPages?: number; // số pages hiển thị\n previousText?: string | boolean;\n nextText?: string | boolean;\n jumpOnEllipsis?: boolean; // khi hover vào ellipsis thì hiện thành nút next/previous\n jumpType?: \"jump\" | \"select\"; // jump type for ellipsis interaction\n} & Pick<React.ComponentProps<typeof Button>, \"size\" | \"color\">;\n\ntype AnimResult = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst generatePages = (\n total: number,\n currentPage: number,\n maxPages: number\n): PaginationItemType[] => {\n if (total <= maxPages) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const pages: PaginationItemType[] = [];\n const halfSize = Math.floor(maxPages / 2);\n let start = Math.max(1, currentPage - halfSize);\n const end = Math.min(total, start + maxPages - 1);\n\n if (end - start + 1 < maxPages) {\n start = Math.max(1, end - maxPages + 1);\n }\n\n // Add first page and ellipsis if needed\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"...\");\n }\n }\n\n // Add middle pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis and last page if needed\n if (end < total) {\n if (end < total - 1) {\n pages.push(\"...\");\n }\n pages.push(total);\n }\n\n return pages;\n};\n\nconst PaginationEllipsisWithJump = ({\n position,\n onJumpPrevious,\n onJumpNext,\n color,\n size,\n previousText,\n nextText,\n jumpType = \"jump\",\n total,\n onPageChange,\n}: {\n position: \"before\" | \"after\";\n onJumpPrevious?: () => void;\n onJumpNext?: () => void;\n color?: PaginationWrapperProps[\"color\"];\n size?: PaginationWrapperProps[\"size\"];\n previousText?: React.ReactNode;\n nextText?: React.ReactNode;\n jumpType?: \"jump\" | \"select\";\n total?: number;\n onPageChange?: (page: number) => void;\n}) => {\n const [popoverOpen, setPopoverOpen] = React.useState(false);\n\n if (jumpType === \"select\") {\n return (\n <Popover open={popoverOpen} onOpenChange={setPopoverOpen}>\n <PopoverTrigger asChild>\n <PaginationItem>\n <PaginationEllipsis size={size} color={color} />\n </PaginationItem>\n </PopoverTrigger>\n <PopoverContent className=\"ds:w-40 ds:p-0\">\n <Command>\n <CommandInput placeholder=\"Search pages...\" />\n <CommandList>\n {total &&\n Array.from({ length: total }, (_, i) => i + 1).map((page) => (\n <CommandItem\n key={page}\n onSelect={() => {\n onPageChange?.(page);\n setPopoverOpen(false);\n }}\n >\n Page {page}\n </CommandItem>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <PaginationItem className=\"ds:group\">\n {position === \"before\" ? (\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onJumpPrevious?.();\n }}\n color={color}\n size={size}\n hideIcon\n className=\"ds:peer\"\n >\n <span className=\"ds:hidden ds:group-hover:block ds:leading-none\">\n {previousText}\n </span>\n <MoreHorizontalIcon className=\"ds:group-hover:hidden ds:cursor-pointer\" />\n </PaginationPrevious>\n ) : (\n <PaginationNext\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onJumpNext?.();\n }}\n color={color}\n size={size}\n hideIcon\n >\n <span className=\"ds:hidden ds:group-hover:block ds:leading-none\">\n {nextText}\n </span>\n <MoreHorizontalIcon className=\"ds:group-hover:hidden ds:cursor-pointer\" />\n </PaginationNext>\n )}\n </PaginationItem>\n );\n};\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationWrapperProps>(\n (\n {\n className,\n animation,\n total,\n currentPage = 1,\n onPageChange,\n showPreviousNext = true,\n color = \"muted\",\n size,\n maxPages = 5,\n previousText,\n nextText,\n jumpOnEllipsis = false,\n jumpType = \"jump\",\n children,\n ...props\n },\n ref\n ) => {\n const paginationAnimation = React.useMemo<AnimResult | null>(() => {\n if (!animation) return null;\n return animationEffect<ButtonAnimation, string | undefined>({\n animation,\n children,\n className,\n rootClassName: \"\",\n variantType: undefined,\n ...props,\n });\n }, [animation, props, className, children]);\n\n const getPreviousText = () => {\n if (previousText === false) return false;\n if (previousText === true) return \"Previous\";\n return previousText;\n };\n\n const getNextText = () => {\n if (nextText === false) return false;\n if (nextText === true) return \"Next\";\n return nextText;\n };\n\n const handleJumpPrevious = () => {\n const newPage = Math.max(1, currentPage - maxPages);\n onPageChange?.(newPage);\n };\n\n const handleJumpNext = () => {\n const newPage = Math.min(total!, currentPage + maxPages);\n onPageChange?.(newPage);\n };\n\n const renderItems = () => {\n if (!total) return children;\n\n const pages = generatePages(total, currentPage, maxPages);\n\n return (\n <PaginationContent>\n {showPreviousNext && (\n <PaginationItem className=\"ds:flex ds:justify-center\">\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n if (currentPage > 1) onPageChange?.(currentPage - 1);\n }}\n color={color}\n size={size}\n >\n {getPreviousText()}\n </PaginationPrevious>\n </PaginationItem>\n )}\n {pages.map((item, index) => {\n if (item === \"...\") {\n if (jumpOnEllipsis) {\n // Determine if this ellipsis is before or after the active page\n const ellipsisIndex = index;\n const activePageIndex = pages.findIndex(\n (page) => typeof page === \"number\" && page === currentPage\n );\n const position =\n ellipsisIndex < activePageIndex ? \"before\" : \"after\";\n\n return (\n <PaginationEllipsisWithJump\n key={`ellipsis-${index}`}\n position={position}\n onJumpPrevious={handleJumpPrevious}\n onJumpNext={handleJumpNext}\n color={color}\n size={size}\n previousText={<ChevronsLeft />}\n nextText={<ChevronsRight />}\n jumpType={jumpType}\n total={total}\n onPageChange={onPageChange}\n />\n );\n }\n return (\n <PaginationItem key={`ellipsis-${index}`}>\n <PaginationEllipsis size={size} color={color} />\n </PaginationItem>\n );\n }\n\n const page = item as number;\n const isActive = page === currentPage;\n\n return (\n <PaginationItem key={page}>\n <PaginationLink\n href=\"#\"\n isActive={isActive}\n onClick={(e) => {\n e.preventDefault();\n onPageChange?.(page);\n }}\n color={color}\n size={size}\n >\n {page}\n </PaginationLink>\n </PaginationItem>\n );\n })}\n {showPreviousNext && (\n <PaginationItem className=\"ds:flex ds:justify-center\">\n <PaginationNext\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n if (currentPage < total) onPageChange?.(currentPage + 1);\n }}\n color={color}\n size={size}\n >\n {getNextText()}\n </PaginationNext>\n </PaginationItem>\n )}\n </PaginationContent>\n );\n };\n\n return (\n <SPagination\n ref={ref}\n className={cn(className, paginationAnimation?.className)}\n style={{\n ...(props.style || {}),\n ...(paginationAnimation?.style || {}),\n }}\n {...props}\n >\n {paginationAnimation?.children ?? renderItems()}\n </SPagination>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n type PaginationWrapperProps,\n type PaginationItemType,\n};\n"],"names":["generatePages","total","currentPage","maxPages","_","i","pages","halfSize","start","end","PaginationEllipsisWithJump","position","onJumpPrevious","onJumpNext","color","size","previousText","nextText","jumpType","onPageChange","popoverOpen","setPopoverOpen","React","jsxs","Popover","jsx","PopoverTrigger","PaginationItem","PaginationEllipsis","PopoverContent","Command","CommandInput","CommandList","page","CommandItem","PaginationPrevious","e","MoreHorizontalIcon","PaginationNext","Pagination","className","animation","showPreviousNext","jumpOnEllipsis","children","props","ref","paginationAnimation","animationEffect","getPreviousText","getNextText","handleJumpPrevious","newPage","handleJumpNext","renderItems","PaginationContent","item","index","ellipsisIndex","activePageIndex","ChevronsLeft","ChevronsRight","PaginationLink","SPagination","cn"],"mappings":"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"}
|