@sth87/shadcn-design-system 0.0.1
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 +487 -0
- package/dist/cjs/_virtual/_commonjsHelpers.cjs +2 -0
- package/dist/cjs/_virtual/_commonjsHelpers.cjs.map +1 -0
- package/dist/cjs/_virtual/index.cjs +2 -0
- package/dist/cjs/_virtual/index.cjs.map +1 -0
- package/dist/cjs/_virtual/index2.cjs +2 -0
- package/dist/cjs/_virtual/index2.cjs.map +1 -0
- package/dist/cjs/components/Accordion/Accordion.cjs +2 -0
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -0
- package/dist/cjs/components/Avatar/Avatar.cjs +2 -0
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/cjs/components/Badge/Badge.cjs +2 -0
- package/dist/cjs/components/Badge/Badge.cjs.map +1 -0
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +2 -0
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +1 -0
- package/dist/cjs/components/Button/Button.cjs +2 -0
- package/dist/cjs/components/Button/Button.cjs.map +1 -0
- package/dist/cjs/components/Button/ButtonGroup.cjs +2 -0
- package/dist/cjs/components/Button/ButtonGroup.cjs.map +1 -0
- package/dist/cjs/components/Calendar/Calendar.cjs +2 -0
- package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -0
- package/dist/cjs/components/Carousel/Carousel.cjs +2 -0
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -0
- package/dist/cjs/components/Checkbox/Checkbox.cjs +2 -0
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/cjs/components/Collapsible/Collapsible.cjs +2 -0
- package/dist/cjs/components/Collapsible/Collapsible.cjs.map +1 -0
- package/dist/cjs/components/Command/Command.cjs +2 -0
- package/dist/cjs/components/Command/Command.cjs.map +1 -0
- package/dist/cjs/components/Command/index.cjs +2 -0
- package/dist/cjs/components/Command/index.cjs.map +1 -0
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs +2 -0
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +1 -0
- package/dist/cjs/components/ContextMenu/index.cjs +2 -0
- package/dist/cjs/components/ContextMenu/index.cjs.map +1 -0
- package/dist/cjs/components/Cropper/Cropper.cjs +2 -0
- package/dist/cjs/components/Cropper/Cropper.cjs.map +1 -0
- package/dist/cjs/components/Cropper/CropperTool.cjs +2 -0
- package/dist/cjs/components/Cropper/CropperTool.cjs.map +1 -0
- package/dist/cjs/components/Cropper/utils.cjs +2 -0
- package/dist/cjs/components/Cropper/utils.cjs.map +1 -0
- package/dist/cjs/components/DatePicker/DatePicker.cjs +2 -0
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -0
- package/dist/cjs/components/DatePicker/RangePicker.cjs +2 -0
- package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -0
- package/dist/cjs/components/DatePicker/TimePicker.cjs +2 -0
- package/dist/cjs/components/DatePicker/TimePicker.cjs.map +1 -0
- package/dist/cjs/components/Dialog/Dialog.cjs +2 -0
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -0
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +2 -0
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +1 -0
- package/dist/cjs/components/DropdownMenu/index.cjs +2 -0
- package/dist/cjs/components/DropdownMenu/index.cjs.map +1 -0
- package/dist/cjs/components/FloatLabel.cjs +2 -0
- package/dist/cjs/components/FloatLabel.cjs.map +1 -0
- package/dist/cjs/components/Glass/Glass.cjs +2 -0
- package/dist/cjs/components/Glass/Glass.cjs.map +1 -0
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs +2 -0
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -0
- package/dist/cjs/components/ImageViewer/ImageViewer.css +1 -0
- package/dist/cjs/components/Input/Input.cjs +2 -0
- package/dist/cjs/components/Input/Input.cjs.map +1 -0
- package/dist/cjs/components/InputOTP/InputOTP.cjs +2 -0
- package/dist/cjs/components/InputOTP/InputOTP.cjs.map +1 -0
- package/dist/cjs/components/Interactive/CursorFollow.cjs +2 -0
- package/dist/cjs/components/Interactive/CursorFollow.cjs.map +1 -0
- package/dist/cjs/components/Marquee/Marquee.cjs +2 -0
- package/dist/cjs/components/Marquee/Marquee.cjs.map +1 -0
- package/dist/cjs/components/Marquee/MarqueeWrapper.cjs +2 -0
- package/dist/cjs/components/Marquee/MarqueeWrapper.cjs.map +1 -0
- package/dist/cjs/components/Marquee/index.cjs +2 -0
- package/dist/cjs/components/Marquee/index.cjs.map +1 -0
- package/dist/cjs/components/Masonry/Masonry.cjs +2 -0
- package/dist/cjs/components/Masonry/Masonry.cjs.map +1 -0
- package/dist/cjs/components/Masonry/MasonryWrapper.cjs +2 -0
- package/dist/cjs/components/Masonry/MasonryWrapper.cjs.map +1 -0
- package/dist/cjs/components/Pagination/Pagination.cjs +2 -0
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -0
- package/dist/cjs/components/Pagination/index.cjs +2 -0
- package/dist/cjs/components/Pagination/index.cjs.map +1 -0
- package/dist/cjs/components/Popover/Popover.cjs +2 -0
- package/dist/cjs/components/Popover/Popover.cjs.map +1 -0
- package/dist/cjs/components/Popover/index.cjs +2 -0
- package/dist/cjs/components/Popover/index.cjs.map +1 -0
- package/dist/cjs/components/QrCode/QrCode.cjs +2 -0
- package/dist/cjs/components/QrCode/QrCode.cjs.map +1 -0
- package/dist/cjs/components/QrCode/index.cjs +2 -0
- package/dist/cjs/components/QrCode/index.cjs.map +1 -0
- package/dist/cjs/components/Radio/Radio.cjs +2 -0
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -0
- package/dist/cjs/components/Rate/Rate.cjs +2 -0
- package/dist/cjs/components/Rate/Rate.cjs.map +1 -0
- package/dist/cjs/components/Resizable/Resizable.cjs +2 -0
- package/dist/cjs/components/Resizable/Resizable.cjs.map +1 -0
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs +2 -0
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -0
- package/dist/cjs/components/Select/Select.cjs +2 -0
- package/dist/cjs/components/Select/Select.cjs.map +1 -0
- package/dist/cjs/components/Separator/Separator.cjs +2 -0
- package/dist/cjs/components/Separator/Separator.cjs.map +1 -0
- package/dist/cjs/components/Sheet/Sheet.cjs +6 -0
- package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -0
- package/dist/cjs/components/Sidebar/Sidebar.cjs +2 -0
- package/dist/cjs/components/Sidebar/Sidebar.cjs.map +1 -0
- package/dist/cjs/components/Skeleton/Skeleton.cjs +2 -0
- package/dist/cjs/components/Skeleton/Skeleton.cjs.map +1 -0
- package/dist/cjs/components/Slider/Slider.cjs +2 -0
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -0
- package/dist/cjs/components/Stepper/Stepper.cjs +2 -0
- package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -0
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +2 -0
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -0
- package/dist/cjs/components/Stepper/index.cjs +2 -0
- package/dist/cjs/components/Stepper/index.cjs.map +1 -0
- package/dist/cjs/components/Switch/Switch.cjs +2 -0
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -0
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +2 -0
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -0
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +2 -0
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -0
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +2 -0
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -0
- package/dist/cjs/components/Table/data-table-column-header.cjs +2 -0
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -0
- package/dist/cjs/components/Table/data-table-pagination.cjs +2 -0
- package/dist/cjs/components/Table/data-table-pagination.cjs.map +1 -0
- package/dist/cjs/components/Table/data-table.cjs +2 -0
- package/dist/cjs/components/Table/data-table.cjs.map +1 -0
- package/dist/cjs/components/Tabs/Tabs.cjs +2 -0
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -0
- package/dist/cjs/components/Tabs/classes.cjs +2 -0
- package/dist/cjs/components/Tabs/classes.cjs.map +1 -0
- package/dist/cjs/components/Textarea/Textarea.cjs +2 -0
- package/dist/cjs/components/Textarea/Textarea.cjs.map +1 -0
- package/dist/cjs/components/TimeGridView.cjs +2 -0
- package/dist/cjs/components/TimeGridView.cjs.map +1 -0
- package/dist/cjs/components/Toast/Toast.cjs +2 -0
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -0
- package/dist/cjs/components/Toggle/Toggle.cjs +2 -0
- package/dist/cjs/components/Toggle/Toggle.cjs.map +1 -0
- package/dist/cjs/components/Tooltip/Tooltip.cjs +2 -0
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -0
- package/dist/cjs/components/Tour/Tour.cjs +2 -0
- package/dist/cjs/components/Tour/Tour.cjs.map +1 -0
- package/dist/cjs/components/Tour/TourWrapper.cjs +2 -0
- package/dist/cjs/components/Tour/TourWrapper.cjs.map +1 -0
- package/dist/cjs/components/Tour/index.cjs +2 -0
- package/dist/cjs/components/Tour/index.cjs.map +1 -0
- package/dist/cjs/components/Upload/Upload.cjs +4 -0
- package/dist/cjs/components/Upload/Upload.cjs.map +1 -0
- package/dist/cjs/components/WheelColumn.cjs +2 -0
- package/dist/cjs/components/WheelColumn.cjs.map +1 -0
- package/dist/cjs/constants/common.cjs +2 -0
- package/dist/cjs/constants/common.cjs.map +1 -0
- package/dist/cjs/favicon.ico +0 -0
- package/dist/cjs/hooks/use-callback-ref.cjs +2 -0
- package/dist/cjs/hooks/use-callback-ref.cjs.map +1 -0
- package/dist/cjs/hooks/use-debounced-callback.cjs +2 -0
- package/dist/cjs/hooks/use-debounced-callback.cjs.map +1 -0
- package/dist/cjs/hooks/use-debounced-value.cjs +2 -0
- package/dist/cjs/hooks/use-debounced-value.cjs.map +1 -0
- package/dist/cjs/hooks/use-event-listener.cjs +2 -0
- package/dist/cjs/hooks/use-event-listener.cjs.map +1 -0
- package/dist/cjs/hooks/use-intersection-observer.cjs +2 -0
- package/dist/cjs/hooks/use-intersection-observer.cjs.map +1 -0
- package/dist/cjs/hooks/use-isomorphic-layout-effect.cjs +2 -0
- package/dist/cjs/hooks/use-isomorphic-layout-effect.cjs.map +1 -0
- package/dist/cjs/hooks/use-media-query.cjs +2 -0
- package/dist/cjs/hooks/use-media-query.cjs.map +1 -0
- package/dist/cjs/hooks/use-on-click-outside.cjs +2 -0
- package/dist/cjs/hooks/use-on-click-outside.cjs.map +1 -0
- package/dist/cjs/hooks/use-script.cjs +2 -0
- package/dist/cjs/hooks/use-script.cjs.map +1 -0
- package/dist/cjs/hooks/use-scroll-lock.cjs +2 -0
- package/dist/cjs/hooks/use-scroll-lock.cjs.map +1 -0
- package/dist/cjs/image.png +0 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/BlurText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/CircularText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/GradientText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/RollingText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/SplittingText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/SplittingText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +22 -0
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/TypingText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +1 -0
- package/dist/cjs/lib/TextAnimation/WritingText.cjs +2 -0
- package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +1 -0
- package/dist/cjs/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.cjs +253 -0
- package/dist/cjs/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.cjs.map +1 -0
- package/dist/cjs/node_modules/.pnpm/viewerjs@1.11.7/node_modules/viewerjs/dist/viewer.css +1 -0
- package/dist/cjs/styles/animation.css +1 -0
- package/dist/cjs/styles/index.css +1 -0
- package/dist/cjs/styles/theme.css +1 -0
- package/dist/cjs/utils/animations.cjs +2 -0
- package/dist/cjs/utils/animations.cjs.map +1 -0
- package/dist/cjs/utils/css.cjs +2 -0
- package/dist/cjs/utils/css.cjs.map +1 -0
- package/dist/cjs/utils/data-table.cjs +2 -0
- package/dist/cjs/utils/data-table.cjs.map +1 -0
- package/dist/cjs/utils/datetime.cjs +2 -0
- package/dist/cjs/utils/datetime.cjs.map +1 -0
- package/dist/cjs/vite.svg +1 -0
- package/dist/cjs/wave.png +0 -0
- package/dist/esm/_virtual/_commonjsHelpers.js +7 -0
- package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/esm/_virtual/index.js +8 -0
- package/dist/esm/_virtual/index.js.map +1 -0
- package/dist/esm/_virtual/index2.js +5 -0
- package/dist/esm/_virtual/index2.js.map +1 -0
- package/dist/esm/components/Accordion/Accordion.js +190 -0
- package/dist/esm/components/Accordion/Accordion.js.map +1 -0
- package/dist/esm/components/Avatar/Avatar.js +93 -0
- package/dist/esm/components/Avatar/Avatar.js.map +1 -0
- package/dist/esm/components/Badge/Badge.js +35 -0
- package/dist/esm/components/Badge/Badge.js.map +1 -0
- package/dist/esm/components/Breadcrumb/Breadcrumb.js +102 -0
- package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/esm/components/Button/Button.js +53 -0
- package/dist/esm/components/Button/Button.js.map +1 -0
- package/dist/esm/components/Button/ButtonGroup.js +53 -0
- package/dist/esm/components/Button/ButtonGroup.js.map +1 -0
- package/dist/esm/components/Calendar/Calendar.js +40 -0
- package/dist/esm/components/Calendar/Calendar.js.map +1 -0
- package/dist/esm/components/Carousel/Carousel.js +510 -0
- package/dist/esm/components/Carousel/Carousel.js.map +1 -0
- package/dist/esm/components/Checkbox/Checkbox.js +79 -0
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/esm/components/Collapsible/Collapsible.js +107 -0
- package/dist/esm/components/Collapsible/Collapsible.js.map +1 -0
- package/dist/esm/components/Command/Command.js +113 -0
- package/dist/esm/components/Command/Command.js.map +1 -0
- package/dist/esm/components/Command/index.js +16 -0
- package/dist/esm/components/Command/index.js.map +1 -0
- package/dist/esm/components/ContextMenu/ContextMenu.js +131 -0
- package/dist/esm/components/ContextMenu/ContextMenu.js.map +1 -0
- package/dist/esm/components/ContextMenu/index.js +24 -0
- package/dist/esm/components/ContextMenu/index.js.map +1 -0
- package/dist/esm/components/Cropper/Cropper.js +1014 -0
- package/dist/esm/components/Cropper/Cropper.js.map +1 -0
- package/dist/esm/components/Cropper/CropperTool.js +157 -0
- package/dist/esm/components/Cropper/CropperTool.js.map +1 -0
- package/dist/esm/components/Cropper/utils.js +108 -0
- package/dist/esm/components/Cropper/utils.js.map +1 -0
- package/dist/esm/components/DatePicker/DatePicker.js +263 -0
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/esm/components/DatePicker/RangePicker.js +456 -0
- package/dist/esm/components/DatePicker/RangePicker.js.map +1 -0
- package/dist/esm/components/DatePicker/TimePicker.js +444 -0
- package/dist/esm/components/DatePicker/TimePicker.js.map +1 -0
- package/dist/esm/components/Dialog/Dialog.js +223 -0
- package/dist/esm/components/Dialog/Dialog.js.map +1 -0
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +196 -0
- package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/esm/components/DropdownMenu/index.js +24 -0
- package/dist/esm/components/DropdownMenu/index.js.map +1 -0
- package/dist/esm/components/FloatLabel.js +59 -0
- package/dist/esm/components/FloatLabel.js.map +1 -0
- package/dist/esm/components/Glass/Glass.js +93 -0
- package/dist/esm/components/Glass/Glass.js.map +1 -0
- package/dist/esm/components/ImageViewer/ImageViewer.css +1 -0
- package/dist/esm/components/ImageViewer/ImageViewer.js +273 -0
- package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -0
- package/dist/esm/components/Input/Input.js +267 -0
- package/dist/esm/components/Input/Input.js.map +1 -0
- package/dist/esm/components/InputOTP/InputOTP.js +70 -0
- package/dist/esm/components/InputOTP/InputOTP.js.map +1 -0
- package/dist/esm/components/Interactive/CursorFollow.js +257 -0
- package/dist/esm/components/Interactive/CursorFollow.js.map +1 -0
- package/dist/esm/components/Marquee/Marquee.js +419 -0
- package/dist/esm/components/Marquee/Marquee.js.map +1 -0
- package/dist/esm/components/Marquee/MarqueeWrapper.js +25 -0
- package/dist/esm/components/Marquee/MarqueeWrapper.js.map +1 -0
- package/dist/esm/components/Marquee/index.js +15 -0
- package/dist/esm/components/Marquee/index.js.map +1 -0
- package/dist/esm/components/Masonry/Masonry.js +840 -0
- package/dist/esm/components/Masonry/Masonry.js.map +1 -0
- package/dist/esm/components/Masonry/MasonryWrapper.js +19 -0
- package/dist/esm/components/Masonry/MasonryWrapper.js.map +1 -0
- package/dist/esm/components/Pagination/Pagination.js +209 -0
- package/dist/esm/components/Pagination/Pagination.js.map +1 -0
- package/dist/esm/components/Pagination/index.js +14 -0
- package/dist/esm/components/Pagination/index.js.map +1 -0
- package/dist/esm/components/Popover/Popover.js +51 -0
- package/dist/esm/components/Popover/Popover.js.map +1 -0
- package/dist/esm/components/Popover/index.js +9 -0
- package/dist/esm/components/Popover/index.js.map +1 -0
- package/dist/esm/components/QrCode/QrCode.js +300 -0
- package/dist/esm/components/QrCode/QrCode.js.map +1 -0
- package/dist/esm/components/QrCode/index.js +16 -0
- package/dist/esm/components/QrCode/index.js.map +1 -0
- package/dist/esm/components/Radio/Radio.js +74 -0
- package/dist/esm/components/Radio/Radio.js.map +1 -0
- package/dist/esm/components/Rate/Rate.js +191 -0
- package/dist/esm/components/Rate/Rate.js.map +1 -0
- package/dist/esm/components/Resizable/Resizable.js +89 -0
- package/dist/esm/components/Resizable/Resizable.js.map +1 -0
- package/dist/esm/components/ScrollArea/ScrollArea.js +45 -0
- package/dist/esm/components/ScrollArea/ScrollArea.js.map +1 -0
- package/dist/esm/components/Select/Select.js +199 -0
- package/dist/esm/components/Select/Select.js.map +1 -0
- package/dist/esm/components/Separator/Separator.js +7 -0
- package/dist/esm/components/Separator/Separator.js.map +1 -0
- package/dist/esm/components/Sheet/Sheet.js +141 -0
- package/dist/esm/components/Sheet/Sheet.js.map +1 -0
- package/dist/esm/components/Sidebar/Sidebar.js +30 -0
- package/dist/esm/components/Sidebar/Sidebar.js.map +1 -0
- package/dist/esm/components/Skeleton/Skeleton.js +12 -0
- package/dist/esm/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/esm/components/Slider/Slider.js +420 -0
- package/dist/esm/components/Slider/Slider.js.map +1 -0
- package/dist/esm/components/Stepper/Stepper.js +886 -0
- package/dist/esm/components/Stepper/Stepper.js.map +1 -0
- package/dist/esm/components/Stepper/StepperWrapper.js +80 -0
- package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -0
- package/dist/esm/components/Stepper/index.js +21 -0
- package/dist/esm/components/Stepper/index.js.map +1 -0
- package/dist/esm/components/Switch/Switch.js +126 -0
- package/dist/esm/components/Switch/Switch.js.map +1 -0
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +126 -0
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -0
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +138 -0
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -0
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +164 -0
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -0
- package/dist/esm/components/Table/data-table-column-header.js +82 -0
- package/dist/esm/components/Table/data-table-column-header.js.map +1 -0
- package/dist/esm/components/Table/data-table-pagination.js +73 -0
- package/dist/esm/components/Table/data-table-pagination.js.map +1 -0
- package/dist/esm/components/Table/data-table.js +94 -0
- package/dist/esm/components/Table/data-table.js.map +1 -0
- package/dist/esm/components/Tabs/Tabs.js +540 -0
- package/dist/esm/components/Tabs/Tabs.js.map +1 -0
- package/dist/esm/components/Tabs/classes.js +345 -0
- package/dist/esm/components/Tabs/classes.js.map +1 -0
- package/dist/esm/components/Textarea/Textarea.js +132 -0
- package/dist/esm/components/Textarea/Textarea.js.map +1 -0
- package/dist/esm/components/TimeGridView.js +101 -0
- package/dist/esm/components/TimeGridView.js.map +1 -0
- package/dist/esm/components/Toast/Toast.js +80 -0
- package/dist/esm/components/Toast/Toast.js.map +1 -0
- package/dist/esm/components/Toggle/Toggle.js +23 -0
- package/dist/esm/components/Toggle/Toggle.js.map +1 -0
- package/dist/esm/components/Tooltip/Tooltip.js +120 -0
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/esm/components/Tour/Tour.js +948 -0
- package/dist/esm/components/Tour/Tour.js.map +1 -0
- package/dist/esm/components/Tour/TourWrapper.js +67 -0
- package/dist/esm/components/Tour/TourWrapper.js.map +1 -0
- package/dist/esm/components/Tour/index.js +38 -0
- package/dist/esm/components/Tour/index.js.map +1 -0
- package/dist/esm/components/Upload/Upload.js +948 -0
- package/dist/esm/components/Upload/Upload.js.map +1 -0
- package/dist/esm/components/WheelColumn.js +127 -0
- package/dist/esm/components/WheelColumn.js.map +1 -0
- package/dist/esm/constants/common.js +5 -0
- package/dist/esm/constants/common.js.map +1 -0
- package/dist/esm/favicon.ico +0 -0
- package/dist/esm/hooks/use-callback-ref.js +14 -0
- package/dist/esm/hooks/use-callback-ref.js.map +1 -0
- package/dist/esm/hooks/use-debounced-callback.js +21 -0
- package/dist/esm/hooks/use-debounced-callback.js.map +1 -0
- package/dist/esm/hooks/use-debounced-value.js +12 -0
- package/dist/esm/hooks/use-debounced-value.js.map +1 -0
- package/dist/esm/hooks/use-event-listener.js +21 -0
- package/dist/esm/hooks/use-event-listener.js.map +1 -0
- package/dist/esm/hooks/use-intersection-observer.js +56 -0
- package/dist/esm/hooks/use-intersection-observer.js.map +1 -0
- package/dist/esm/hooks/use-isomorphic-layout-effect.js +6 -0
- package/dist/esm/hooks/use-isomorphic-layout-effect.js.map +1 -0
- package/dist/esm/hooks/use-media-query.js +22 -0
- package/dist/esm/hooks/use-media-query.js.map +1 -0
- package/dist/esm/hooks/use-on-click-outside.js +18 -0
- package/dist/esm/hooks/use-on-click-outside.js.map +1 -0
- package/dist/esm/hooks/use-script.js +46 -0
- package/dist/esm/hooks/use-script.js.map +1 -0
- package/dist/esm/hooks/use-scroll-lock.js +27 -0
- package/dist/esm/hooks/use-scroll-lock.js.map +1 -0
- package/dist/esm/image.png +0 -0
- package/dist/esm/index.js +223 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/TextAnimation/BlurText.js +84 -0
- package/dist/esm/lib/TextAnimation/BlurText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/CircularText.js +96 -0
- package/dist/esm/lib/TextAnimation/CircularText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/FlipWords.js +103 -0
- package/dist/esm/lib/TextAnimation/FlipWords.js.map +1 -0
- package/dist/esm/lib/TextAnimation/GradientText.js +54 -0
- package/dist/esm/lib/TextAnimation/GradientText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/RollingText.js +70 -0
- package/dist/esm/lib/TextAnimation/RollingText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/RotatingText.js +38 -0
- package/dist/esm/lib/TextAnimation/RotatingText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/ShimmeringText.js +64 -0
- package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/SplittingText.js +86 -0
- package/dist/esm/lib/TextAnimation/SplittingText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +59 -0
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +1 -0
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js +128 -0
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +1 -0
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js +135 -0
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +1 -0
- package/dist/esm/lib/TextAnimation/TypingText.js +118 -0
- package/dist/esm/lib/TextAnimation/TypingText.js.map +1 -0
- package/dist/esm/lib/TextAnimation/WritingText.js +45 -0
- package/dist/esm/lib/TextAnimation/WritingText.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.js +865 -0
- package/dist/esm/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/viewerjs@1.11.7/node_modules/viewerjs/dist/viewer.css +1 -0
- package/dist/esm/styles/animation.css +1 -0
- package/dist/esm/styles/index.css +1 -0
- package/dist/esm/styles/theme.css +1 -0
- package/dist/esm/utils/animations.js +189 -0
- package/dist/esm/utils/animations.js.map +1 -0
- package/dist/esm/utils/css.js +25 -0
- package/dist/esm/utils/css.js.map +1 -0
- package/dist/esm/utils/data-table.js +20 -0
- package/dist/esm/utils/data-table.js.map +1 -0
- package/dist/esm/utils/datetime.js +17 -0
- package/dist/esm/utils/datetime.js.map +1 -0
- package/dist/esm/vite.svg +1 -0
- package/dist/esm/wave.png +0 -0
- package/dist/types/components/Accordion/Accordion.d.ts +49 -0
- package/dist/types/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/types/components/Accordion/index.d.ts +3 -0
- package/dist/types/components/Accordion/index.d.ts.map +1 -0
- package/dist/types/components/Avatar/Avatar.d.ts +18 -0
- package/dist/types/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/types/components/Avatar/index.d.ts +3 -0
- package/dist/types/components/Avatar/index.d.ts.map +1 -0
- package/dist/types/components/Badge/Badge.d.ts +10 -0
- package/dist/types/components/Badge/Badge.d.ts.map +1 -0
- package/dist/types/components/Badge/index.d.ts +2 -0
- package/dist/types/components/Badge/index.d.ts.map +1 -0
- package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +23 -0
- package/dist/types/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/types/components/Breadcrumb/index.d.ts +2 -0
- package/dist/types/components/Breadcrumb/index.d.ts.map +1 -0
- package/dist/types/components/Button/Button.d.ts +10 -0
- package/dist/types/components/Button/Button.d.ts.map +1 -0
- package/dist/types/components/Button/ButtonGroup.d.ts +16 -0
- package/dist/types/components/Button/ButtonGroup.d.ts.map +1 -0
- package/dist/types/components/Button/index.d.ts +5 -0
- package/dist/types/components/Button/index.d.ts.map +1 -0
- package/dist/types/components/Calendar/Calendar.d.ts +15 -0
- package/dist/types/components/Calendar/Calendar.d.ts.map +1 -0
- package/dist/types/components/Calendar/index.d.ts +3 -0
- package/dist/types/components/Calendar/index.d.ts.map +1 -0
- package/dist/types/components/Carousel/Carousel.d.ts +79 -0
- package/dist/types/components/Carousel/Carousel.d.ts.map +1 -0
- package/dist/types/components/Carousel/index.d.ts +4 -0
- package/dist/types/components/Carousel/index.d.ts.map +1 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +15 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/types/components/Checkbox/index.d.ts +2 -0
- package/dist/types/components/Checkbox/index.d.ts.map +1 -0
- package/dist/types/components/Collapsible/Collapsible.d.ts +17 -0
- package/dist/types/components/Collapsible/Collapsible.d.ts.map +1 -0
- package/dist/types/components/Collapsible/index.d.ts +2 -0
- package/dist/types/components/Collapsible/index.d.ts.map +1 -0
- package/dist/types/components/Command/Command.d.ts +39 -0
- package/dist/types/components/Command/Command.d.ts.map +1 -0
- package/dist/types/components/Command/index.d.ts +15 -0
- package/dist/types/components/Command/index.d.ts.map +1 -0
- package/dist/types/components/ContextMenu/ContextMenu.d.ts +64 -0
- package/dist/types/components/ContextMenu/ContextMenu.d.ts.map +1 -0
- package/dist/types/components/ContextMenu/index.d.ts +23 -0
- package/dist/types/components/ContextMenu/index.d.ts.map +1 -0
- package/dist/types/components/Cropper/Cropper.d.ts +86 -0
- package/dist/types/components/Cropper/Cropper.d.ts.map +1 -0
- package/dist/types/components/Cropper/CropperTool.d.ts +149 -0
- package/dist/types/components/Cropper/CropperTool.d.ts.map +1 -0
- package/dist/types/components/Cropper/index.d.ts +4 -0
- package/dist/types/components/Cropper/index.d.ts.map +1 -0
- package/dist/types/components/Cropper/utils.d.ts +130 -0
- package/dist/types/components/Cropper/utils.d.ts.map +1 -0
- package/dist/types/components/DatePicker/DatePicker.d.ts +56 -0
- package/dist/types/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/types/components/DatePicker/RangePicker.d.ts +42 -0
- package/dist/types/components/DatePicker/RangePicker.d.ts.map +1 -0
- package/dist/types/components/DatePicker/TimePicker.d.ts +43 -0
- package/dist/types/components/DatePicker/TimePicker.d.ts.map +1 -0
- package/dist/types/components/DatePicker/index.d.ts +7 -0
- package/dist/types/components/DatePicker/index.d.ts.map +1 -0
- package/dist/types/components/Dialog/Dialog.d.ts +45 -0
- package/dist/types/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/types/components/Dialog/index.d.ts +2 -0
- package/dist/types/components/Dialog/index.d.ts.map +1 -0
- package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +65 -0
- package/dist/types/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
- package/dist/types/components/DropdownMenu/index.d.ts +22 -0
- package/dist/types/components/DropdownMenu/index.d.ts.map +1 -0
- package/dist/types/components/FloatLabel.d.ts +8 -0
- package/dist/types/components/FloatLabel.d.ts.map +1 -0
- package/dist/types/components/Glass/Glass.d.ts +10 -0
- package/dist/types/components/Glass/Glass.d.ts.map +1 -0
- package/dist/types/components/Glass/index.d.ts +2 -0
- package/dist/types/components/Glass/index.d.ts.map +1 -0
- package/dist/types/components/ImageViewer/ImageViewer.d.ts +58 -0
- package/dist/types/components/ImageViewer/ImageViewer.d.ts.map +1 -0
- package/dist/types/components/ImageViewer/index.d.ts +4 -0
- package/dist/types/components/ImageViewer/index.d.ts.map +1 -0
- package/dist/types/components/Input/Input.d.ts +27 -0
- package/dist/types/components/Input/Input.d.ts.map +1 -0
- package/dist/types/components/Input/index.d.ts +2 -0
- package/dist/types/components/Input/index.d.ts.map +1 -0
- package/dist/types/components/InputOTP/InputOTP.d.ts +20 -0
- package/dist/types/components/InputOTP/InputOTP.d.ts.map +1 -0
- package/dist/types/components/InputOTP/index.d.ts +2 -0
- package/dist/types/components/InputOTP/index.d.ts.map +1 -0
- package/dist/types/components/Interactive/3DCard.d.ts +28 -0
- package/dist/types/components/Interactive/3DCard.d.ts.map +1 -0
- package/dist/types/components/Interactive/3DMarquee.d.ts +20 -0
- package/dist/types/components/Interactive/3DMarquee.d.ts.map +1 -0
- package/dist/types/components/Interactive/CursorFollow.d.ts +75 -0
- package/dist/types/components/Interactive/CursorFollow.d.ts.map +1 -0
- package/dist/types/components/Interactive/index.cursor.d.ts +7 -0
- package/dist/types/components/Interactive/index.cursor.d.ts.map +1 -0
- package/dist/types/components/Interactive/index.d.ts +2 -0
- package/dist/types/components/Interactive/index.d.ts.map +1 -0
- package/dist/types/components/Label/Label.d.ts +3 -0
- package/dist/types/components/Label/Label.d.ts.map +1 -0
- package/dist/types/components/Label/index.d.ts +2 -0
- package/dist/types/components/Label/index.d.ts.map +1 -0
- package/dist/types/components/Marquee/Marquee.d.ts +31 -0
- package/dist/types/components/Marquee/Marquee.d.ts.map +1 -0
- package/dist/types/components/Marquee/MarqueeWrapper.d.ts +10 -0
- package/dist/types/components/Marquee/MarqueeWrapper.d.ts.map +1 -0
- package/dist/types/components/Marquee/index.d.ts +13 -0
- package/dist/types/components/Marquee/index.d.ts.map +1 -0
- package/dist/types/components/Masonry/Masonry.d.ts +41 -0
- package/dist/types/components/Masonry/Masonry.d.ts.map +1 -0
- package/dist/types/components/Masonry/MasonryWrapper.d.ts +29 -0
- package/dist/types/components/Masonry/MasonryWrapper.d.ts.map +1 -0
- package/dist/types/components/Masonry/index.d.ts +5 -0
- package/dist/types/components/Masonry/index.d.ts.map +1 -0
- package/dist/types/components/Pagination/Pagination.d.ts +24 -0
- package/dist/types/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/types/components/Pagination/index.d.ts +11 -0
- package/dist/types/components/Pagination/index.d.ts.map +1 -0
- package/dist/types/components/Popover/Popover.d.ts +22 -0
- package/dist/types/components/Popover/Popover.d.ts.map +1 -0
- package/dist/types/components/Popover/index.d.ts +5 -0
- package/dist/types/components/Popover/index.d.ts.map +1 -0
- package/dist/types/components/QrCode/QrCode.d.ts +51 -0
- package/dist/types/components/QrCode/QrCode.d.ts.map +1 -0
- package/dist/types/components/QrCode/index.d.ts +13 -0
- package/dist/types/components/QrCode/index.d.ts.map +1 -0
- package/dist/types/components/Radio/Radio.d.ts +35 -0
- package/dist/types/components/Radio/Radio.d.ts.map +1 -0
- package/dist/types/components/Radio/index.d.ts +2 -0
- package/dist/types/components/Radio/index.d.ts.map +1 -0
- package/dist/types/components/Rate/Rate.d.ts +26 -0
- package/dist/types/components/Rate/Rate.d.ts.map +1 -0
- package/dist/types/components/Rate/index.d.ts +3 -0
- package/dist/types/components/Rate/index.d.ts.map +1 -0
- package/dist/types/components/Resizable/Resizable.d.ts +71 -0
- package/dist/types/components/Resizable/Resizable.d.ts.map +1 -0
- package/dist/types/components/Resizable/index.d.ts +4 -0
- package/dist/types/components/Resizable/index.d.ts.map +1 -0
- package/dist/types/components/ScrollArea/ScrollArea.d.ts +19 -0
- package/dist/types/components/ScrollArea/ScrollArea.d.ts.map +1 -0
- package/dist/types/components/ScrollArea/index.d.ts +2 -0
- package/dist/types/components/ScrollArea/index.d.ts.map +1 -0
- package/dist/types/components/Select/Select.d.ts +33 -0
- package/dist/types/components/Select/Select.d.ts.map +1 -0
- package/dist/types/components/Select/index.d.ts +2 -0
- package/dist/types/components/Select/index.d.ts.map +1 -0
- package/dist/types/components/Separator/Separator.d.ts +5 -0
- package/dist/types/components/Separator/Separator.d.ts.map +1 -0
- package/dist/types/components/Separator/index.d.ts +2 -0
- package/dist/types/components/Separator/index.d.ts.map +1 -0
- package/dist/types/components/Sheet/Sheet.d.ts +36 -0
- package/dist/types/components/Sheet/Sheet.d.ts.map +1 -0
- package/dist/types/components/Sheet/index.d.ts +2 -0
- package/dist/types/components/Sheet/index.d.ts.map +1 -0
- package/dist/types/components/Sidebar/Sidebar.d.ts +50 -0
- package/dist/types/components/Sidebar/Sidebar.d.ts.map +1 -0
- package/dist/types/components/Sidebar/index.d.ts +4 -0
- package/dist/types/components/Sidebar/index.d.ts.map +1 -0
- package/dist/types/components/Skeleton/Skeleton.d.ts +6 -0
- package/dist/types/components/Skeleton/Skeleton.d.ts.map +1 -0
- package/dist/types/components/Skeleton/index.d.ts +2 -0
- package/dist/types/components/Skeleton/index.d.ts.map +1 -0
- package/dist/types/components/Slider/Slider.d.ts +25 -0
- package/dist/types/components/Slider/Slider.d.ts.map +1 -0
- package/dist/types/components/Slider/index.d.ts +2 -0
- package/dist/types/components/Slider/index.d.ts.map +1 -0
- package/dist/types/components/Stepper/Stepper.d.ts +86 -0
- package/dist/types/components/Stepper/Stepper.d.ts.map +1 -0
- package/dist/types/components/Stepper/StepperWrapper.d.ts +25 -0
- package/dist/types/components/Stepper/StepperWrapper.d.ts.map +1 -0
- package/dist/types/components/Stepper/index.d.ts +18 -0
- package/dist/types/components/Stepper/index.d.ts.map +1 -0
- package/dist/types/components/Switch/Switch.d.ts +14 -0
- package/dist/types/components/Switch/Switch.d.ts.map +1 -0
- package/dist/types/components/Switch/index.d.ts +2 -0
- package/dist/types/components/Switch/index.d.ts.map +1 -0
- package/dist/types/components/Table/TableFilter/data-table-date-filter.d.ts +9 -0
- package/dist/types/components/Table/TableFilter/data-table-date-filter.d.ts.map +1 -0
- package/dist/types/components/Table/TableFilter/data-table-filter-popover.d.ts +11 -0
- package/dist/types/components/Table/TableFilter/data-table-filter-popover.d.ts.map +1 -0
- package/dist/types/components/Table/TableFilter/data-table-slider-filter.d.ts +8 -0
- package/dist/types/components/Table/TableFilter/data-table-slider-filter.d.ts.map +1 -0
- package/dist/types/components/Table/TableWrapper.d.ts +2 -0
- package/dist/types/components/Table/TableWrapper.d.ts.map +1 -0
- package/dist/types/components/Table/data-table-column-header.d.ts +9 -0
- package/dist/types/components/Table/data-table-column-header.d.ts.map +1 -0
- package/dist/types/components/Table/data-table-pagination.d.ts +12 -0
- package/dist/types/components/Table/data-table-pagination.d.ts.map +1 -0
- package/dist/types/components/Table/data-table-toolbar.d.ts +10 -0
- package/dist/types/components/Table/data-table-toolbar.d.ts.map +1 -0
- package/dist/types/components/Table/data-table-view-options.d.ts +9 -0
- package/dist/types/components/Table/data-table-view-options.d.ts.map +1 -0
- package/dist/types/components/Table/data-table.d.ts +18 -0
- package/dist/types/components/Table/data-table.d.ts.map +1 -0
- package/dist/types/components/Table/index.d.ts +2 -0
- package/dist/types/components/Table/index.d.ts.map +1 -0
- package/dist/types/components/Table/select-column.d.ts +5 -0
- package/dist/types/components/Table/select-column.d.ts.map +1 -0
- package/dist/types/components/Tabs/Tabs.d.ts +22 -0
- package/dist/types/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/types/components/Tabs/classes.d.ts +29 -0
- package/dist/types/components/Tabs/classes.d.ts.map +1 -0
- package/dist/types/components/Tabs/index.d.ts +4 -0
- package/dist/types/components/Tabs/index.d.ts.map +1 -0
- package/dist/types/components/Tabs/types.d.ts +15 -0
- package/dist/types/components/Tabs/types.d.ts.map +1 -0
- package/dist/types/components/Textarea/Textarea.d.ts +17 -0
- package/dist/types/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/types/components/Textarea/index.d.ts +2 -0
- package/dist/types/components/Textarea/index.d.ts.map +1 -0
- package/dist/types/components/Theme/ThemeShowcase.d.ts +3 -0
- package/dist/types/components/Theme/ThemeShowcase.d.ts.map +1 -0
- package/dist/types/components/TimeGridView.d.ts +15 -0
- package/dist/types/components/TimeGridView.d.ts.map +1 -0
- package/dist/types/components/Toast/Toast.d.ts +12 -0
- package/dist/types/components/Toast/Toast.d.ts.map +1 -0
- package/dist/types/components/Toast/index.d.ts +3 -0
- package/dist/types/components/Toast/index.d.ts.map +1 -0
- package/dist/types/components/Toggle/Toggle.d.ts +10 -0
- package/dist/types/components/Toggle/Toggle.d.ts.map +1 -0
- package/dist/types/components/Toggle/index.d.ts +2 -0
- package/dist/types/components/Toggle/index.d.ts.map +1 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +19 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/types/components/Tooltip/index.d.ts +3 -0
- package/dist/types/components/Tooltip/index.d.ts.map +1 -0
- package/dist/types/components/Tour/Tour.d.ts +105 -0
- package/dist/types/components/Tour/Tour.d.ts.map +1 -0
- package/dist/types/components/Tour/TourWrapper.d.ts +46 -0
- package/dist/types/components/Tour/TourWrapper.d.ts.map +1 -0
- package/dist/types/components/Tour/index.d.ts +36 -0
- package/dist/types/components/Tour/index.d.ts.map +1 -0
- package/dist/types/components/TreeSelect/TreeSelect.d.ts +2 -0
- package/dist/types/components/TreeSelect/TreeSelect.d.ts.map +1 -0
- package/dist/types/components/TreeSelect/index.d.ts +2 -0
- package/dist/types/components/TreeSelect/index.d.ts.map +1 -0
- package/dist/types/components/Upload/Upload.d.ts +69 -0
- package/dist/types/components/Upload/Upload.d.ts.map +1 -0
- package/dist/types/components/Upload/index.d.ts +2 -0
- package/dist/types/components/Upload/index.d.ts.map +1 -0
- package/dist/types/components/WheelColumn.d.ts +15 -0
- package/dist/types/components/WheelColumn.d.ts.map +1 -0
- package/dist/types/config/data-table.d.ts +125 -0
- package/dist/types/config/data-table.d.ts.map +1 -0
- package/dist/types/constants/common.d.ts +4 -0
- package/dist/types/constants/common.d.ts.map +1 -0
- package/dist/types/constants/theme.d.ts +13 -0
- package/dist/types/constants/theme.d.ts.map +1 -0
- package/dist/types/hooks/index.d.ts +10 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/types/hooks/use-callback-ref.d.ts +10 -0
- package/dist/types/hooks/use-callback-ref.d.ts.map +1 -0
- package/dist/types/hooks/use-data-table.d.ts +26 -0
- package/dist/types/hooks/use-data-table.d.ts.map +1 -0
- package/dist/types/hooks/use-debounced-callback.d.ts +2 -0
- package/dist/types/hooks/use-debounced-callback.d.ts.map +1 -0
- package/dist/types/hooks/use-debounced-value.d.ts +9 -0
- package/dist/types/hooks/use-debounced-value.d.ts.map +1 -0
- package/dist/types/hooks/use-event-listener.d.ts +7 -0
- package/dist/types/hooks/use-event-listener.d.ts.map +1 -0
- package/dist/types/hooks/use-intersection-observer.d.ts +20 -0
- package/dist/types/hooks/use-intersection-observer.d.ts.map +1 -0
- package/dist/types/hooks/use-isomorphic-layout-effect.d.ts +3 -0
- package/dist/types/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/types/hooks/use-media-query.d.ts +7 -0
- package/dist/types/hooks/use-media-query.d.ts.map +1 -0
- package/dist/types/hooks/use-mouse-position.d.ts +14 -0
- package/dist/types/hooks/use-mouse-position.d.ts.map +1 -0
- package/dist/types/hooks/use-on-click-outside.d.ts +5 -0
- package/dist/types/hooks/use-on-click-outside.d.ts.map +1 -0
- package/dist/types/hooks/use-script.d.ts +9 -0
- package/dist/types/hooks/use-script.d.ts.map +1 -0
- package/dist/types/hooks/use-scroll-lock.d.ts +13 -0
- package/dist/types/hooks/use-scroll-lock.d.ts.map +1 -0
- package/dist/types/index.d.ts +72 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/BlurText.d.ts +18 -0
- package/dist/types/lib/TextAnimation/BlurText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/CircularText.d.ts +10 -0
- package/dist/types/lib/TextAnimation/CircularText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/FlipWords.d.ts +10 -0
- package/dist/types/lib/TextAnimation/FlipWords.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/GradientText.d.ts +11 -0
- package/dist/types/lib/TextAnimation/GradientText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/RollingText.d.ts +12 -0
- package/dist/types/lib/TextAnimation/RollingText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/RotatingText.d.ts +11 -0
- package/dist/types/lib/TextAnimation/RotatingText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/ShimmeringText.d.ts +12 -0
- package/dist/types/lib/TextAnimation/ShimmeringText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/SplittingText.d.ts +26 -0
- package/dist/types/lib/TextAnimation/SplittingText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/TextGenerateEffect.d.ts +10 -0
- package/dist/types/lib/TextAnimation/TextGenerateEffect.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/TextHoverEffect.d.ts +6 -0
- package/dist/types/lib/TextAnimation/TextHoverEffect.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts +20 -0
- package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/TypingText.d.ts +27 -0
- package/dist/types/lib/TextAnimation/TypingText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/WritingText.d.ts +13 -0
- package/dist/types/lib/TextAnimation/WritingText.d.ts.map +1 -0
- package/dist/types/lib/TextAnimation/index.d.ts +16 -0
- package/dist/types/lib/TextAnimation/index.d.ts.map +1 -0
- package/dist/types/types/data-table.d.ts +44 -0
- package/dist/types/types/data-table.d.ts.map +1 -0
- package/dist/types/types/theme.d.ts +11 -0
- package/dist/types/types/theme.d.ts.map +1 -0
- package/dist/types/types/variables.d.ts +6 -0
- package/dist/types/types/variables.d.ts.map +1 -0
- package/dist/types/utils/animations.d.ts +47 -0
- package/dist/types/utils/animations.d.ts.map +1 -0
- package/dist/types/utils/css.d.ts +4 -0
- package/dist/types/utils/css.d.ts.map +1 -0
- package/dist/types/utils/data-table.d.ts +13 -0
- package/dist/types/utils/data-table.d.ts.map +1 -0
- package/dist/types/utils/datetime.d.ts +2 -0
- package/dist/types/utils/datetime.d.ts.map +1 -0
- package/dist/types/utils/parsers.d.ts +38 -0
- package/dist/types/utils/parsers.d.ts.map +1 -0
- package/package.json +968 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Masonry.js","sources":["../../../../src/components/Masonry/Masonry.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport * as React from \"react\";\n\nconst NODE_COLOR = {\n RED: 0,\n BLACK: 1,\n SENTINEL: 2,\n} as const;\n\nconst NODE_OPERATION = {\n REMOVE: 0,\n PRESERVE: 1,\n} as const;\n\ntype NodeColor = (typeof NODE_COLOR)[keyof typeof NODE_COLOR];\ntype NodeOperation = (typeof NODE_OPERATION)[keyof typeof NODE_OPERATION];\n\ninterface ListNode {\n index: number;\n high: number;\n next: ListNode | null;\n}\n\ninterface TreeNode {\n max: number;\n low: number;\n high: number;\n color: NodeColor;\n parent: TreeNode;\n right: TreeNode;\n left: TreeNode;\n list: ListNode;\n}\n\ninterface Tree {\n root: TreeNode;\n size: number;\n}\n\nfunction addInterval(treeNode: TreeNode, high: number, index: number): boolean {\n let node: ListNode | null = treeNode.list;\n let prevNode: ListNode | undefined;\n\n while (node) {\n if (node.index === index) return false;\n if (high > node.high) break;\n prevNode = node;\n node = node.next;\n }\n\n if (!prevNode) treeNode.list = { index, high, next: node };\n if (prevNode) prevNode.next = { index, high, next: prevNode.next };\n\n return true;\n}\n\nfunction removeInterval(\n treeNode: TreeNode,\n index: number,\n): NodeOperation | undefined {\n let node: ListNode | null = treeNode.list;\n if (node.index === index) {\n if (node.next === null) return NODE_OPERATION.REMOVE;\n treeNode.list = node.next;\n return NODE_OPERATION.PRESERVE;\n }\n\n let prevNode: ListNode | undefined = node;\n node = node.next;\n\n while (node !== null) {\n if (node.index === index) {\n prevNode.next = node.next;\n return NODE_OPERATION.PRESERVE;\n }\n prevNode = node;\n node = node.next;\n }\n}\n\nconst SENTINEL_NODE: TreeNode = {\n low: 0,\n max: 0,\n high: 0,\n color: NODE_COLOR.SENTINEL,\n parent: undefined as unknown as TreeNode,\n right: undefined as unknown as TreeNode,\n left: undefined as unknown as TreeNode,\n list: undefined as unknown as ListNode,\n};\n\nSENTINEL_NODE.parent = SENTINEL_NODE;\nSENTINEL_NODE.left = SENTINEL_NODE;\nSENTINEL_NODE.right = SENTINEL_NODE;\n\nfunction updateMax(node: TreeNode) {\n const max = node.high;\n if (node.left === SENTINEL_NODE && node.right === SENTINEL_NODE)\n node.max = max;\n else if (node.left === SENTINEL_NODE)\n node.max = Math.max(node.right.max, max);\n else if (node.right === SENTINEL_NODE)\n node.max = Math.max(node.left.max, max);\n else node.max = Math.max(Math.max(node.left.max, node.right.max), max);\n}\n\nfunction updateMaxUp(node: TreeNode) {\n let x = node;\n\n while (x.parent !== SENTINEL_NODE) {\n updateMax(x.parent);\n x = x.parent;\n }\n}\n\nfunction rotateLeft(tree: Tree, x: TreeNode) {\n if (x.right === SENTINEL_NODE) return;\n const y = x.right;\n x.right = y.left;\n if (y.left !== SENTINEL_NODE) y.left.parent = x;\n y.parent = x.parent;\n\n if (x.parent === SENTINEL_NODE) tree.root = y;\n else if (x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n\n y.left = x;\n x.parent = y;\n\n updateMax(x);\n updateMax(y);\n}\n\nfunction rotateRight(tree: Tree, x: TreeNode) {\n if (x.left === SENTINEL_NODE) return;\n const y = x.left;\n x.left = y.right;\n if (y.right !== SENTINEL_NODE) y.right.parent = x;\n y.parent = x.parent;\n\n if (x.parent === SENTINEL_NODE) tree.root = y;\n else if (x === x.parent.right) x.parent.right = y;\n else x.parent.left = y;\n\n y.right = x;\n x.parent = y;\n\n updateMax(x);\n updateMax(y);\n}\n\nfunction replaceNode(tree: Tree, x: TreeNode, y: TreeNode) {\n if (x.parent === SENTINEL_NODE) tree.root = y;\n else if (x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n y.parent = x.parent;\n}\n\nfunction fixRemove(tree: Tree, node: TreeNode) {\n let x = node;\n let w: TreeNode;\n\n while (x !== SENTINEL_NODE && x.color === NODE_COLOR.BLACK) {\n if (x === x.parent.left) {\n w = x.parent.right;\n\n if (w.color === NODE_COLOR.RED) {\n w.color = NODE_COLOR.BLACK;\n x.parent.color = NODE_COLOR.RED;\n rotateLeft(tree, x.parent);\n w = x.parent.right;\n }\n\n if (\n w.left.color === NODE_COLOR.BLACK &&\n w.right.color === NODE_COLOR.BLACK\n ) {\n w.color = NODE_COLOR.RED;\n x = x.parent;\n } else {\n if (w.right.color === NODE_COLOR.BLACK) {\n w.left.color = NODE_COLOR.BLACK;\n w.color = NODE_COLOR.RED;\n rotateRight(tree, w);\n w = x.parent.right;\n }\n\n w.color = x.parent.color;\n x.parent.color = NODE_COLOR.BLACK;\n w.right.color = NODE_COLOR.BLACK;\n rotateLeft(tree, x.parent);\n x = tree.root;\n }\n } else {\n w = x.parent.left;\n\n if (w.color === NODE_COLOR.RED) {\n w.color = NODE_COLOR.BLACK;\n x.parent.color = NODE_COLOR.RED;\n rotateRight(tree, x.parent);\n w = x.parent.left;\n }\n\n if (\n w.right.color === NODE_COLOR.BLACK &&\n w.left.color === NODE_COLOR.BLACK\n ) {\n w.color = NODE_COLOR.RED;\n x = x.parent;\n } else {\n if (w.left.color === NODE_COLOR.BLACK) {\n w.right.color = NODE_COLOR.BLACK;\n w.color = NODE_COLOR.RED;\n rotateLeft(tree, w);\n w = x.parent.left;\n }\n\n w.color = x.parent.color;\n x.parent.color = NODE_COLOR.BLACK;\n w.left.color = NODE_COLOR.BLACK;\n rotateRight(tree, x.parent);\n x = tree.root;\n }\n }\n }\n\n x.color = NODE_COLOR.BLACK;\n}\n\nfunction minimumTree(node: TreeNode) {\n let current = node;\n while (current.left !== SENTINEL_NODE) {\n current = current.left;\n }\n return current;\n}\n\nfunction fixInsert(tree: Tree, node: TreeNode) {\n let current = node;\n let y: TreeNode;\n\n while (current.parent.color === NODE_COLOR.RED) {\n if (current.parent === current.parent.parent.left) {\n y = current.parent.parent.right;\n\n if (y.color === NODE_COLOR.RED) {\n current.parent.color = NODE_COLOR.BLACK;\n y.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n current = current.parent.parent;\n } else {\n if (current === current.parent.right) {\n current = current.parent;\n rotateLeft(tree, current);\n }\n\n current.parent.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n rotateRight(tree, current.parent.parent);\n }\n } else {\n y = current.parent.parent.left;\n\n if (y.color === NODE_COLOR.RED) {\n current.parent.color = NODE_COLOR.BLACK;\n y.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n current = current.parent.parent;\n } else {\n if (current === current.parent.left) {\n current = current.parent;\n rotateRight(tree, current);\n }\n\n current.parent.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n rotateLeft(tree, current.parent.parent);\n }\n }\n }\n tree.root.color = NODE_COLOR.BLACK;\n}\n\ninterface IntervalTree {\n insert(low: number, high: number, index: number): void;\n remove(index: number): void;\n search(\n low: number,\n high: number,\n onCallback: (index: number, low: number) => void,\n ): void;\n size: number;\n}\n\nfunction createIntervalTree(): IntervalTree {\n const tree: Tree = {\n root: SENTINEL_NODE,\n size: 0,\n };\n\n const indexMap: Record<number, TreeNode> = {};\n\n return {\n insert(low, high, index) {\n let x: TreeNode = tree.root;\n let y: TreeNode = SENTINEL_NODE;\n\n while (x !== SENTINEL_NODE) {\n y = x;\n if (low === y.low) break;\n if (low < x.low) x = x.left;\n else x = x.right;\n }\n\n if (low === y.low && y !== SENTINEL_NODE) {\n if (!addInterval(y, high, index)) return;\n y.high = Math.max(y.high, high);\n updateMax(y);\n updateMaxUp(y);\n indexMap[index] = y;\n tree.size++;\n return;\n }\n\n const z: TreeNode = {\n low,\n high,\n max: high,\n color: NODE_COLOR.RED,\n parent: y,\n left: SENTINEL_NODE,\n right: SENTINEL_NODE,\n list: { index, high, next: null },\n };\n\n if (y === SENTINEL_NODE) {\n tree.root = z;\n } else {\n if (z.low < y.low) y.left = z;\n else y.right = z;\n updateMaxUp(z);\n }\n\n fixInsert(tree, z);\n indexMap[index] = z;\n tree.size++;\n },\n\n remove(index) {\n const z = indexMap[index];\n if (z === void 0) return;\n delete indexMap[index];\n\n const intervalResult = removeInterval(z, index);\n if (intervalResult === void 0) return;\n if (intervalResult === NODE_OPERATION.PRESERVE) {\n z.high = z.list.high;\n updateMax(z);\n updateMaxUp(z);\n tree.size--;\n return;\n }\n\n let y = z;\n let originalYColor = y.color;\n let x: TreeNode;\n\n if (z.left === SENTINEL_NODE) {\n x = z.right;\n replaceNode(tree, z, z.right);\n } else if (z.right === SENTINEL_NODE) {\n x = z.left;\n replaceNode(tree, z, z.left);\n } else {\n y = minimumTree(z.right);\n originalYColor = y.color;\n x = y.right;\n\n if (y.parent === z) {\n x.parent = y;\n } else {\n replaceNode(tree, y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n\n replaceNode(tree, z, y);\n y.left = z.left;\n y.left.parent = y;\n y.color = z.color;\n }\n\n updateMax(x);\n updateMaxUp(x);\n\n if (originalYColor === NODE_COLOR.BLACK) fixRemove(tree, x);\n tree.size--;\n },\n\n search(low, high, onCallback) {\n const stack = [tree.root];\n while (stack.length !== 0) {\n const node = stack.pop();\n if (!node) continue;\n if (node === SENTINEL_NODE || low > node.max) continue;\n if (node.left !== SENTINEL_NODE) stack.push(node.left);\n if (node.right !== SENTINEL_NODE) stack.push(node.right);\n if (node.low <= high && node.high >= low) {\n let curr: ListNode | null = node.list;\n while (curr !== null) {\n if (curr.high >= low) onCallback(curr.index, node.low);\n curr = curr.next;\n }\n }\n }\n },\n\n get size() {\n return tree.size;\n },\n };\n}\n\ntype CacheKey = string | number | symbol;\ntype CacheConstructor = (new () => Cache) | Record<CacheKey, unknown>;\n\ninterface Cache<K = CacheKey, V = unknown> {\n set: (k: K, v: V) => V;\n get: (k: K) => V | undefined;\n}\n\nfunction onDeepMemo<T extends unknown[], U>(\n constructors: CacheConstructor[],\n fn: (...args: T) => U,\n): (...args: T) => U {\n if (!constructors.length || !constructors[0]) {\n throw new Error(\"At least one constructor is required\");\n }\n\n function createCache(obj: CacheConstructor): Cache {\n let cache: Cache;\n if (typeof obj === \"function\") {\n try {\n cache = new (obj as new () => Cache)();\n } catch (_err) {\n cache = new Map<CacheKey, unknown>();\n }\n } else {\n cache = obj as unknown as Cache;\n }\n return {\n set(k: CacheKey, v: unknown): unknown {\n cache.set(k, v);\n return v;\n },\n get(k: CacheKey): unknown | undefined {\n return cache.get(k);\n },\n };\n }\n\n const depth = constructors.length;\n const baseCache = createCache(constructors[0]);\n\n let base: Cache | undefined;\n let map: Cache | undefined;\n let node: Cache;\n let i: number;\n const one = depth === 1;\n\n function get(args: unknown[]): unknown {\n if (depth < 3) {\n const key = args[0] as CacheKey;\n base = baseCache.get(key) as Cache | undefined;\n return one ? base : base?.get(args[1] as CacheKey);\n }\n\n node = baseCache;\n for (i = 0; i < depth; i++) {\n const next = node.get(args[i] as CacheKey);\n if (!next) return undefined;\n node = next as Cache;\n }\n return node;\n }\n\n function set(args: unknown[], value: unknown): unknown {\n if (depth < 3) {\n if (one) {\n baseCache.set(args[0] as CacheKey, value);\n } else {\n base = baseCache.get(args[0] as CacheKey) as Cache | undefined;\n if (!base) {\n if (!constructors[1]) {\n throw new Error(\n \"Second constructor is required for non-single depth cache\",\n );\n }\n map = createCache(constructors[1]);\n map.set(args[1] as CacheKey, value);\n baseCache.set(args[0] as CacheKey, map);\n } else {\n base.set(args[1] as CacheKey, value);\n }\n }\n return value;\n }\n\n node = baseCache;\n for (i = 0; i < depth - 1; i++) {\n map = node.get(args[i] as CacheKey) as Cache | undefined;\n if (!map) {\n const nextConstructor = constructors[i + 1];\n if (!nextConstructor) {\n throw new Error(`Constructor at index ${i + 1} is required`);\n }\n map = createCache(nextConstructor);\n node.set(args[i] as CacheKey, map);\n node = map;\n } else {\n node = map;\n }\n }\n node.set(args[depth - 1] as CacheKey, value);\n return value;\n }\n\n return (...args: T): U => {\n const cached = get(args);\n if (cached === undefined) {\n return set(args, fn(...args)) as U;\n }\n return cached as U;\n };\n}\n\nconst COLUMN_WIDTH = 200;\nconst GAP = 0;\nconst ITEM_HEIGHT = 300;\nconst OVERSCAN = 2;\nconst SCROLL_FPS = 12;\nconst DEBOUNCE_DELAY = 300;\n\ninterface Positioner {\n columnCount: number;\n columnWidth: number;\n set: (index: number, height: number) => void;\n get: (index: number) => PositionerItem | undefined;\n update: (updates: number[]) => void;\n range: (\n low: number,\n high: number,\n onItemRender: (index: number, left: number, top: number) => void,\n ) => void;\n size: () => number;\n estimateHeight: (itemCount: number, defaultItemHeight: number) => number;\n shortestColumn: () => number;\n all: () => PositionerItem[];\n}\n\ninterface PositionerItem {\n top: number;\n left: number;\n height: number;\n columnIndex: number;\n}\n\ninterface UsePositionerOptions {\n width: number;\n columnWidth?: number;\n columnGap?: number;\n rowGap?: number;\n columnCount?: number;\n maxColumnCount?: number;\n linear?: boolean;\n}\n\nfunction usePositioner(\n {\n width,\n columnWidth = COLUMN_WIDTH,\n columnGap = GAP,\n rowGap,\n columnCount,\n maxColumnCount,\n linear = false,\n }: UsePositionerOptions,\n deps: React.DependencyList = [],\n): Positioner {\n const initPositioner = React.useCallback((): Positioner => {\n function binarySearch(a: number[], y: number): number {\n let l = 0;\n let h = a.length - 1;\n\n while (l <= h) {\n const m = (l + h) >>> 1;\n const x = a[m];\n if (x === y) return m;\n if (x === undefined || x <= y) l = m + 1;\n else h = m - 1;\n }\n\n return -1;\n }\n\n const computedColumnCount =\n columnCount ||\n Math.min(\n Math.floor((width + columnGap) / (columnWidth + columnGap)),\n maxColumnCount || Number.POSITIVE_INFINITY,\n ) ||\n 1;\n const computedColumnWidth = Math.floor(\n (width - columnGap * (computedColumnCount - 1)) / computedColumnCount,\n );\n\n const intervalTree = createIntervalTree();\n const columnHeights: number[] = new Array(computedColumnCount).fill(0);\n const items: (PositionerItem | undefined)[] = [];\n const columnItems: number[][] = new Array(computedColumnCount)\n .fill(0)\n .map(() => []);\n\n for (let i = 0; i < computedColumnCount; i++) {\n columnHeights[i] = 0;\n columnItems[i] = [];\n }\n\n return {\n columnCount: computedColumnCount,\n columnWidth: computedColumnWidth,\n set: (index: number, height = 0) => {\n let columnIndex = 0;\n\n if (linear) {\n const preferredColumn = index % computedColumnCount;\n\n let shortestHeight = columnHeights[0] ?? 0;\n let tallestHeight = shortestHeight;\n let shortestIndex = 0;\n\n for (let i = 0; i < columnHeights.length; i++) {\n const currentHeight = columnHeights[i] ?? 0;\n if (currentHeight < shortestHeight) {\n shortestHeight = currentHeight;\n shortestIndex = i;\n }\n if (currentHeight > tallestHeight) {\n tallestHeight = currentHeight;\n }\n }\n\n const preferredHeight =\n (columnHeights[preferredColumn] ?? 0) + height;\n\n const maxAllowedHeight = shortestHeight + height * 2.5;\n columnIndex =\n preferredHeight <= maxAllowedHeight\n ? preferredColumn\n : shortestIndex;\n } else {\n for (let i = 1; i < columnHeights.length; i++) {\n const currentHeight = columnHeights[i];\n const shortestHeight = columnHeights[columnIndex];\n if (\n currentHeight !== undefined &&\n shortestHeight !== undefined &&\n currentHeight < shortestHeight\n ) {\n columnIndex = i;\n }\n }\n }\n\n const columnHeight = columnHeights[columnIndex];\n if (columnHeight === undefined) return;\n\n const top = columnHeight;\n columnHeights[columnIndex] = top + height + (rowGap ?? columnGap);\n\n const columnItemsList = columnItems[columnIndex];\n if (!columnItemsList) return;\n columnItemsList.push(index);\n\n items[index] = {\n left: columnIndex * (computedColumnWidth + columnGap),\n top,\n height,\n columnIndex,\n };\n intervalTree.insert(top, top + height, index);\n },\n get: (index: number) => items[index],\n update: (updates: number[]) => {\n const columns: (number | undefined)[] = new Array(computedColumnCount);\n let i = 0;\n let j = 0;\n\n for (; i < updates.length - 1; i++) {\n const currentIndex = updates[i];\n if (typeof currentIndex !== \"number\") continue;\n\n const item = items[currentIndex];\n if (!item) continue;\n\n const nextHeight = updates[++i];\n if (typeof nextHeight !== \"number\") continue;\n\n item.height = nextHeight;\n intervalTree.remove(currentIndex);\n intervalTree.insert(item.top, item.top + item.height, currentIndex);\n columns[item.columnIndex] =\n columns[item.columnIndex] === void 0\n ? currentIndex\n : Math.min(\n currentIndex,\n columns[item.columnIndex] ?? currentIndex,\n );\n }\n\n for (i = 0; i < columns.length; i++) {\n const currentColumn = columns[i];\n if (currentColumn === void 0) continue;\n\n const itemsInColumn = columnItems[i];\n if (!itemsInColumn) continue;\n\n const startIndex = binarySearch(itemsInColumn, currentColumn);\n if (startIndex === -1) continue;\n\n const currentItemIndex = itemsInColumn[startIndex];\n if (typeof currentItemIndex !== \"number\") continue;\n\n const startItem = items[currentItemIndex];\n if (!startItem) continue;\n\n const currentHeight = columnHeights[i];\n if (typeof currentHeight !== \"number\") continue;\n\n columnHeights[i] =\n startItem.top + startItem.height + (rowGap ?? columnGap);\n\n for (j = startIndex + 1; j < itemsInColumn.length; j++) {\n const currentIndex = itemsInColumn[j];\n if (typeof currentIndex !== \"number\") continue;\n\n const item = items[currentIndex];\n if (!item) continue;\n\n const columnHeight = columnHeights[i];\n if (typeof columnHeight !== \"number\") continue;\n\n item.top = columnHeight;\n columnHeights[i] = item.top + item.height + (rowGap ?? columnGap);\n intervalTree.remove(currentIndex);\n intervalTree.insert(item.top, item.top + item.height, currentIndex);\n }\n }\n },\n range: (low, high, onItemRender) =>\n intervalTree.search(low, high, (index: number, top: number) => {\n const item = items[index];\n if (!item) return;\n onItemRender(index, item.left, top);\n }),\n estimateHeight: (itemCount, defaultItemHeight): number => {\n const tallestColumn = Math.max(0, Math.max.apply(null, columnHeights));\n\n return itemCount === intervalTree.size\n ? tallestColumn\n : tallestColumn +\n Math.ceil((itemCount - intervalTree.size) / computedColumnCount) *\n defaultItemHeight;\n },\n shortestColumn: () => {\n if (columnHeights.length > 1)\n return Math.min.apply(null, columnHeights);\n return columnHeights[0] ?? 0;\n },\n size(): number {\n return intervalTree.size;\n },\n all(): PositionerItem[] {\n return items.filter(Boolean) as PositionerItem[];\n },\n };\n }, [\n width,\n columnWidth,\n columnGap,\n rowGap,\n columnCount,\n maxColumnCount,\n linear,\n ]);\n\n const positionerRef = React.useRef<Positioner | null>(null);\n if (positionerRef.current === null) positionerRef.current = initPositioner();\n\n const prevDepsRef = React.useRef(deps);\n const opts = [\n width,\n columnWidth,\n columnGap,\n rowGap,\n columnCount,\n maxColumnCount,\n linear,\n ];\n const prevOptsRef = React.useRef(opts);\n const optsChanged = !opts.every((item, i) => prevOptsRef.current[i] === item);\n\n if (\n optsChanged ||\n !deps.every((item, i) => prevDepsRef.current[i] === item)\n ) {\n const prevPositioner = positionerRef.current;\n const positioner = initPositioner();\n prevDepsRef.current = deps;\n prevOptsRef.current = opts;\n\n if (optsChanged) {\n const cacheSize = prevPositioner.size();\n for (let index = 0; index < cacheSize; index++) {\n const pos = prevPositioner.get(index);\n positioner.set(index, pos !== void 0 ? pos.height : 0);\n }\n }\n\n positionerRef.current = positioner;\n }\n\n return positionerRef.current;\n}\n\ninterface DebouncedWindowSizeOptions {\n containerRef: React.RefObject<RootElement | null>;\n defaultWidth?: number;\n defaultHeight?: number;\n delayMs?: number;\n}\n\nfunction useDebouncedWindowSize(options: DebouncedWindowSizeOptions) {\n const {\n containerRef,\n defaultWidth = 0,\n defaultHeight = 0,\n delayMs = DEBOUNCE_DELAY,\n } = options;\n\n const getDocumentSize = React.useCallback(() => {\n if (typeof document === \"undefined\") {\n return { width: defaultWidth, height: defaultHeight };\n }\n return {\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight,\n };\n }, [defaultWidth, defaultHeight]);\n\n const [size, setSize] = React.useState(getDocumentSize());\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const setDebouncedSize = React.useCallback(\n (value: { width: number; height: number }) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setSize(value);\n }, delayMs);\n },\n [delayMs],\n );\n\n React.useEffect(() => {\n function onResize() {\n if (containerRef.current) {\n setDebouncedSize({\n width: containerRef.current.offsetWidth,\n height: document.documentElement.clientHeight,\n });\n } else {\n setDebouncedSize(getDocumentSize());\n }\n }\n\n window?.addEventListener(\"resize\", onResize, { passive: true });\n window?.addEventListener(\"orientationchange\", onResize);\n window.visualViewport?.addEventListener(\"resize\", onResize);\n\n return () => {\n window?.removeEventListener(\"resize\", onResize);\n window?.removeEventListener(\"orientationchange\", onResize);\n window.visualViewport?.removeEventListener(\"resize\", onResize);\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, [setDebouncedSize, containerRef, getDocumentSize]);\n\n return size;\n}\n\ntype OnRafScheduleReturn<T extends unknown[]> = {\n (...args: T): void;\n cancel: () => void;\n};\n\nfunction onRafSchedule<T extends unknown[]>(\n callback: (...args: T) => void,\n): OnRafScheduleReturn<T> {\n let lastArgs: T = [] as unknown as T;\n let frameId: number | null = null;\n\n function onCallback(...args: T) {\n lastArgs = args;\n\n if (frameId)\n frameId = requestAnimationFrame(() => {\n frameId = null;\n callback(...lastArgs);\n });\n }\n\n onCallback.cancel = () => {\n if (!frameId) return;\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return onCallback;\n}\n\nfunction useResizeObserver(positioner: Positioner) {\n const [, setLayoutVersion] = React.useState(0);\n\n const createResizeObserver = React.useMemo(() => {\n if (typeof window === \"undefined\") {\n return () => ({\n disconnect: () => {},\n observe: () => {},\n unobserve: () => {},\n });\n }\n\n return onDeepMemo(\n [WeakMap],\n (positioner: Positioner, onUpdate: () => void) => {\n const updates: number[] = [];\n const itemMap = new WeakMap<Element, number>();\n\n const update = onRafSchedule(() => {\n if (updates.length > 0) {\n positioner.update(updates);\n onUpdate();\n }\n updates.length = 0;\n });\n\n function onItemResize(target: ItemElement) {\n const height = target.offsetHeight;\n if (height > 0) {\n const index = itemMap.get(target);\n if (index !== void 0) {\n const position = positioner.get(index);\n if (position !== void 0 && height !== position.height) {\n updates.push(index, height);\n }\n }\n }\n update();\n }\n\n const scheduledItemMap = new Map<\n number,\n OnRafScheduleReturn<[ItemElement]>\n >();\n function onResizeObserver(entries: ResizeObserverEntry[]) {\n for (const entry of entries) {\n if (!entry) continue;\n const index = itemMap.get(entry.target);\n\n if (index === void 0) continue;\n let handler = scheduledItemMap.get(index);\n if (!handler) {\n handler = onRafSchedule(onItemResize);\n scheduledItemMap.set(index, handler);\n }\n handler(entry.target as ItemElement);\n }\n }\n\n const observer = new ResizeObserver(onResizeObserver);\n const disconnect = observer.disconnect.bind(observer);\n observer.disconnect = () => {\n disconnect();\n for (const [, scheduleItem] of scheduledItemMap) {\n scheduleItem.cancel();\n }\n };\n\n return observer;\n },\n );\n }, []);\n\n const resizeObserver = createResizeObserver(positioner, () =>\n setLayoutVersion((prev) => prev + 1),\n );\n\n React.useEffect(() => () => resizeObserver.disconnect(), [resizeObserver]);\n\n return resizeObserver;\n}\n\nfunction useScroller({\n offset = 0,\n fps = SCROLL_FPS,\n}: {\n offset?: number;\n fps?: number;\n} = {}): { scrollTop: number; isScrolling: boolean } {\n const [scrollY, setScrollY] = useThrottle(\n typeof globalThis.window === \"undefined\"\n ? 0\n : (globalThis.window.scrollY ?? document.documentElement.scrollTop ?? 0),\n { fps, leading: true },\n );\n\n const onScroll = React.useCallback(() => {\n setScrollY(\n globalThis.window.scrollY ?? document.documentElement.scrollTop ?? 0,\n );\n }, [setScrollY]);\n\n React.useEffect(() => {\n if (typeof globalThis.window === \"undefined\") return;\n globalThis.window.addEventListener(\"scroll\", onScroll, { passive: true });\n\n return () => globalThis.window.removeEventListener(\"scroll\", onScroll);\n }, [onScroll]);\n\n const [isScrolling, setIsScrolling] = React.useState(false);\n const hasMountedRef = React.useRef(0);\n\n React.useEffect(() => {\n if (hasMountedRef.current === 1) setIsScrolling(true);\n let didUnsubscribe = false;\n\n function requestTimeout(fn: () => void, delay: number) {\n const start = performance.now();\n const handle = {\n id: requestAnimationFrame(function tick(timestamp) {\n if (timestamp - start >= delay) {\n fn();\n } else {\n handle.id = requestAnimationFrame(tick);\n }\n }),\n };\n return handle;\n }\n\n const timeout = requestTimeout(\n () => {\n if (didUnsubscribe) return;\n setIsScrolling(false);\n },\n 40 + 1000 / fps,\n );\n hasMountedRef.current = 1;\n return () => {\n didUnsubscribe = true;\n cancelAnimationFrame(timeout.id);\n };\n }, [fps]);\n\n return { scrollTop: Math.max(0, scrollY - offset), isScrolling };\n}\n\nfunction useThrottle<State>(\n initialState: State | (() => State),\n options: {\n fps?: number;\n leading?: boolean;\n } = {},\n): [State, React.Dispatch<React.SetStateAction<State>>] {\n const { fps = 30, leading = false } = options;\n const [state, setState] = React.useState(initialState);\n const latestSetState = React.useRef(setState);\n latestSetState.current = setState;\n\n const ms = 1000 / fps;\n const prevCountRef = React.useRef(0);\n const trailingTimeout = React.useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n\n const clearTrailing = React.useCallback(() => {\n if (trailingTimeout.current) {\n clearTimeout(trailingTimeout.current);\n }\n }, []);\n\n React.useEffect(() => {\n return () => {\n prevCountRef.current = 0;\n clearTrailing();\n };\n }, [clearTrailing]);\n\n const throttledSetState = React.useCallback(\n (action: React.SetStateAction<State>) => {\n const perf = typeof performance !== \"undefined\" ? performance : Date;\n const now = () => perf.now();\n const rightNow = now();\n const call = () => {\n prevCountRef.current = rightNow;\n clearTrailing();\n latestSetState.current(action);\n };\n const current = prevCountRef.current;\n\n if (leading && current === 0) {\n return call();\n }\n\n if (rightNow - current > ms) {\n if (current > 0) {\n return call();\n }\n prevCountRef.current = rightNow;\n }\n\n clearTrailing();\n trailingTimeout.current = setTimeout(() => {\n call();\n prevCountRef.current = 0;\n }, ms);\n },\n [leading, ms, clearTrailing],\n );\n\n return [state, throttledSetState];\n}\n\nconst ROOT_NAME = \"MasonryRoot\";\nconst VIEWPORT_NAME = \"MasonryViewport\";\nconst ITEM_NAME = \"MasonryItem\";\n\nconst MASONRY_ERROR = {\n [ROOT_NAME]: `\\`${ROOT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\n [VIEWPORT_NAME]: `\\`${VIEWPORT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\n [ITEM_NAME]: `\\`${ITEM_NAME}\\` must be within \\`${VIEWPORT_NAME}\\``,\n} as const;\n\ninterface DivProps extends React.ComponentProps<\"div\"> {}\n\ntype RootElement = React.ComponentRef<typeof MasonryRoot>;\ntype ItemElement = React.ComponentRef<typeof MasonryItem>;\n\ninterface MasonryContextValue {\n positioner: Positioner;\n resizeObserver?: ResizeObserver;\n columnWidth: number;\n onItemRegister: (index: number) => (node: ItemElement | null) => void;\n scrollTop: number;\n windowHeight: number;\n itemHeight: number;\n overscan: number;\n isScrolling?: boolean;\n fallback?: React.ReactNode;\n virtualize: boolean;\n lazyLoad: boolean;\n loadedIndices: Set<number>;\n updateLoadedIndices: (indices: number[]) => void;\n}\n\nconst MasonryContext = React.createContext<MasonryContextValue | null>(null);\n\nfunction useMasonryContext(name: keyof typeof MASONRY_ERROR) {\n const context = React.useContext(MasonryContext);\n if (!context) {\n throw new Error(MASONRY_ERROR[name]);\n }\n return context;\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\ninterface MasonryRootProps extends DivProps {\n columnWidth?: number;\n columnCount?: number;\n maxColumnCount?: number;\n gap?: number | { column: number; row: number };\n itemHeight?: number;\n defaultWidth?: number;\n defaultHeight?: number;\n overscan?: number;\n scrollFps?: number;\n fallback?: React.ReactNode;\n linear?: boolean;\n asChild?: boolean;\n /**\n * Enable/disable virtualization. When true (default), only items in viewport are rendered.\n * Set to false to render all items (useful for SEO, printing, or small lists).\n */\n virtualize?: boolean;\n /**\n * Enable lazy loading when virtualization is disabled.\n * When true, items are loaded progressively as user scrolls and remain in DOM.\n * Ignored when virtualize=true. Default: false\n */\n lazyLoad?: boolean;\n}\n\nfunction MasonryRoot(props: MasonryRootProps) {\n const {\n columnWidth = COLUMN_WIDTH,\n columnCount,\n maxColumnCount,\n gap = GAP,\n itemHeight = ITEM_HEIGHT,\n defaultWidth,\n defaultHeight,\n overscan = OVERSCAN,\n scrollFps = SCROLL_FPS,\n fallback,\n linear = false,\n virtualize = true,\n lazyLoad = false,\n asChild,\n children,\n style,\n ref,\n ...rootProps\n } = props;\n\n const gapValue = typeof gap === \"object\" ? gap : { column: gap, row: gap };\n const columnGap = gapValue.column;\n const rowGap = gapValue.row;\n\n const containerRef = React.useRef<RootElement | null>(null);\n const composedRef = useComposedRefs(ref, containerRef);\n\n const size = useDebouncedWindowSize({\n containerRef,\n defaultWidth,\n defaultHeight,\n delayMs: DEBOUNCE_DELAY,\n });\n\n const [containerPosition, setContainerPosition] = React.useState<{\n offset: number;\n width: number;\n }>({ offset: 0, width: 0 });\n\n useIsomorphicLayoutEffect(() => {\n if (!containerRef.current) return;\n\n let offset = 0;\n let container = containerRef.current;\n\n do {\n offset += container.offsetTop ?? 0;\n container = container.offsetParent as RootElement;\n } while (container);\n\n if (\n offset !== containerPosition.offset ||\n containerRef.current.offsetWidth !== containerPosition.width\n ) {\n setContainerPosition({\n offset,\n width: containerRef.current.offsetWidth,\n });\n }\n }, [containerPosition, size]);\n\n const positioner = usePositioner({\n width: containerPosition.width ?? size.width,\n columnWidth,\n columnGap,\n rowGap,\n columnCount,\n maxColumnCount,\n linear,\n });\n const resizeObserver = useResizeObserver(positioner);\n const { scrollTop, isScrolling } = useScroller({\n offset: containerPosition.offset,\n fps: scrollFps,\n });\n\n const itemMap = React.useRef(new WeakMap<ItemElement, number>()).current;\n\n // Track loaded indices for lazy loading mode\n const loadedIndicesRef = React.useRef<Set<number>>(new Set());\n const [loadedIndices, setLoadedIndices] = React.useState<Set<number>>(\n () => new Set(),\n );\n\n // Effective lazyLoad: only applies when virtualize is false\n const effectiveLazyLoad = !virtualize && lazyLoad;\n\n const onItemRegister = React.useCallback(\n (index: number) => (node: ItemElement | null) => {\n if (!node) return;\n\n itemMap.set(node, index);\n if (resizeObserver) {\n resizeObserver.observe(node);\n }\n if (positioner.get(index) === void 0) {\n positioner.set(index, node.offsetHeight);\n }\n },\n [itemMap, positioner, resizeObserver],\n );\n\n // Update loaded indices when in lazy load mode\n const updateLoadedIndices = React.useCallback((indices: number[]) => {\n let hasNew = false;\n indices.forEach((index) => {\n if (!loadedIndicesRef.current.has(index)) {\n loadedIndicesRef.current.add(index);\n hasNew = true;\n }\n });\n if (hasNew) {\n setLoadedIndices(new Set(loadedIndicesRef.current));\n }\n }, []);\n\n const contextValue = React.useMemo<MasonryContextValue>(\n () => ({\n positioner,\n resizeObserver,\n columnWidth: positioner.columnWidth,\n onItemRegister,\n scrollTop,\n windowHeight: size.height,\n itemHeight,\n overscan,\n fallback,\n isScrolling,\n virtualize,\n lazyLoad: effectiveLazyLoad,\n loadedIndices,\n updateLoadedIndices,\n }),\n [\n positioner,\n resizeObserver,\n onItemRegister,\n scrollTop,\n size.height,\n itemHeight,\n overscan,\n fallback,\n isScrolling,\n virtualize,\n effectiveLazyLoad,\n loadedIndices,\n updateLoadedIndices,\n ],\n );\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <MasonryContext.Provider value={contextValue}>\n <RootPrimitive\n {...rootProps}\n data-slot=\"masonry\"\n ref={composedRef}\n style={{\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n ...style,\n }}\n >\n <MasonryViewport>{children}</MasonryViewport>\n </RootPrimitive>\n </MasonryContext.Provider>\n );\n}\n\ninterface MasonryItemPropsWithRef extends MasonryItemProps {\n ref: React.Ref<ItemElement | null>;\n}\n\nfunction MasonryViewport(props: DivProps) {\n const { children, style, ref, ...viewportProps } = props;\n const context = useMasonryContext(VIEWPORT_NAME);\n const [layoutVersion, setLayoutVersion] = React.useState(0);\n const rafId = React.useRef<number | null>(null);\n const [mounted, setMounted] = React.useState(false);\n\n useIsomorphicLayoutEffect(() => {\n setMounted(true);\n }, []);\n\n let startIndex = 0;\n let stopIndex: number | undefined;\n\n const validChildren = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<MasonryItemPropsWithRef> =>\n React.isValidElement(child) &&\n (child.type === MasonryItem || child.type === Item),\n );\n const itemCount = validChildren.length;\n\n const shortestColumnSize = context.positioner.shortestColumn();\n const measuredCount = context.positioner.size();\n const overscanPixels = context.windowHeight * context.overscan;\n // rangeStart: scrollTop minus half overscan buffer (items above viewport)\n const rangeStart = Math.max(0, context.scrollTop - overscanPixels / 2);\n // rangeEnd: scrollTop + viewport height + half overscan buffer (items below viewport)\n const rangeEnd =\n context.scrollTop + context.windowHeight + overscanPixels / 2;\n const layoutOutdated =\n shortestColumnSize < rangeEnd && measuredCount < itemCount;\n\n const positionedChildren: React.ReactElement[] = [];\n\n // Stable style for non-virtualized mode (doesn't change on scroll)\n const stableItemStyle = React.useMemo(\n (): React.CSSProperties => ({\n position: \"absolute\",\n writingMode: \"horizontal-tb\",\n visibility: \"visible\",\n width: context.columnWidth,\n }),\n [context.columnWidth],\n );\n\n // Style with scroll optimizations for virtualized mode\n const virtualizedItemStyle = React.useMemo(\n (): React.CSSProperties => ({\n position: \"absolute\",\n writingMode: \"horizontal-tb\",\n visibility: \"visible\",\n width: context.columnWidth,\n transform: context.isScrolling ? \"translateZ(0)\" : undefined,\n willChange: context.isScrolling ? \"transform\" : undefined,\n }),\n [context.columnWidth, context.isScrolling],\n );\n\n // Use stable style when not virtualized to prevent re-renders\n const visibleItemStyle = context.virtualize\n ? virtualizedItemStyle\n : stableItemStyle;\n\n const hiddenItemStyle = React.useMemo(\n (): React.CSSProperties => ({\n position: \"absolute\",\n writingMode: \"horizontal-tb\",\n visibility: \"hidden\",\n width: context.columnWidth,\n zIndex: -1000,\n }),\n [context.columnWidth],\n );\n\n // Track indices to load for lazy load mode\n const indicesToLoadRef = React.useRef<number[]>([]);\n\n // Non-virtualized mode\n if (!context.virtualize) {\n if (context.lazyLoad) {\n // Lazy load mode: render items in viewport + previously loaded items\n // First, ensure items in viewport range are measured\n if (measuredCount < itemCount && mounted) {\n // Calculate how many items to measure based on viewport\n const batchSize = Math.min(\n itemCount - measuredCount,\n Math.ceil(\n ((context.scrollTop + overscanPixels - shortestColumnSize) /\n context.itemHeight) *\n context.positioner.columnCount,\n ) +\n context.positioner.columnCount * 2, // Extra buffer for initial load\n );\n\n for (\n let index = measuredCount;\n index < Math.max(measuredCount + batchSize, measuredCount + 1);\n index++\n ) {\n if (index >= itemCount) break;\n const child = validChildren[index];\n if (!child) continue;\n\n const itemStyle = {\n ...hiddenItemStyle,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n }),\n );\n }\n }\n\n // Collect indices of items in current viewport range\n const newIndicesToLoad: number[] = [];\n\n // Render items that are in viewport OR have been previously loaded\n context.positioner.all().forEach((item, index) => {\n const child = validChildren[index];\n if (!child || !item) return;\n\n const itemBottom = item.top + (item.height ?? context.itemHeight);\n const isInViewport = itemBottom >= rangeStart && item.top <= rangeEnd;\n const wasLoaded = context.loadedIndices.has(index);\n\n if (isInViewport && !wasLoaded) {\n newIndicesToLoad.push(index);\n }\n\n // Render if in viewport or was previously loaded\n if (isInViewport || wasLoaded) {\n const itemStyle = {\n ...visibleItemStyle,\n top: item.top,\n left: item.left,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n }),\n );\n }\n });\n\n // Store indices to load for effect\n indicesToLoadRef.current = newIndicesToLoad;\n } else {\n // Original non-virtualized mode: render all items\n // Ensure all items are measured first\n if (measuredCount < itemCount && mounted) {\n for (let index = measuredCount; index < itemCount; index++) {\n const child = validChildren[index];\n if (!child) continue;\n\n const itemStyle = {\n ...hiddenItemStyle,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n }),\n );\n }\n }\n\n // Render all measured items\n context.positioner.all().forEach((item, index) => {\n const child = validChildren[index];\n if (!child || !item) return;\n\n const itemStyle = {\n ...visibleItemStyle,\n top: item.top,\n left: item.left,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n }),\n );\n });\n }\n } else {\n // Virtualized mode: only render items in viewport\n context.positioner.range(rangeStart, rangeEnd, (index, left, top) => {\n const child = validChildren[index];\n if (!child) return;\n\n const itemStyle = {\n ...visibleItemStyle,\n top,\n left,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n }),\n );\n\n if (stopIndex === undefined) {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n });\n\n if (layoutOutdated && mounted) {\n const batchSize = Math.min(\n itemCount - measuredCount,\n Math.ceil(\n ((context.scrollTop + overscanPixels - shortestColumnSize) /\n context.itemHeight) *\n context.positioner.columnCount,\n ),\n );\n\n for (\n let index = measuredCount;\n index < measuredCount + batchSize;\n index++\n ) {\n const child = validChildren[index];\n if (!child) continue;\n\n const itemStyle = {\n ...hiddenItemStyle,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n }),\n );\n }\n }\n }\n\n // Trigger re-layout when items need to be measured\n const needsLayout = context.virtualize\n ? layoutOutdated && mounted\n : measuredCount < itemCount && mounted;\n\n React.useEffect(() => {\n if (needsLayout) {\n if (rafId.current) {\n cancelAnimationFrame(rafId.current);\n }\n rafId.current = requestAnimationFrame(() => {\n setLayoutVersion((v) => v + 1);\n });\n }\n return () => {\n if (rafId.current) {\n cancelAnimationFrame(rafId.current);\n }\n };\n }, [needsLayout]);\n\n // Update loaded indices for lazy load mode\n const {\n lazyLoad,\n updateLoadedIndices,\n scrollTop: contextScrollTop,\n } = context;\n React.useEffect(() => {\n if (lazyLoad && indicesToLoadRef.current.length > 0) {\n updateLoadedIndices(indicesToLoadRef.current);\n indicesToLoadRef.current = [];\n }\n }, [lazyLoad, updateLoadedIndices, contextScrollTop]);\n\n const estimatedHeight = React.useMemo(() => {\n const measuredHeight = context.positioner.estimateHeight(\n measuredCount,\n context.itemHeight,\n );\n if (measuredCount === itemCount) {\n return measuredHeight;\n }\n const remainingItems = itemCount - measuredCount;\n const estimatedRemainingHeight = Math.ceil(\n (remainingItems / context.positioner.columnCount) * context.itemHeight,\n );\n return measuredHeight + estimatedRemainingHeight;\n }, [context.positioner, context.itemHeight, measuredCount, itemCount]);\n\n // Stable container style for non-virtualized mode\n const stableContainerStyle = React.useMemo(\n () => ({\n position: \"relative\" as const,\n width: \"100%\",\n maxWidth: \"100%\",\n height: Math.ceil(estimatedHeight),\n maxHeight: Math.ceil(estimatedHeight),\n ...style,\n }),\n [estimatedHeight, style],\n );\n\n // Container style with scroll optimizations for virtualized mode\n const virtualizedContainerStyle = React.useMemo(\n () => ({\n position: \"relative\" as const,\n width: \"100%\",\n maxWidth: \"100%\",\n height: Math.ceil(estimatedHeight),\n maxHeight: Math.ceil(estimatedHeight),\n willChange: context.isScrolling ? \"contents\" : undefined,\n pointerEvents: context.isScrolling ? (\"none\" as const) : undefined,\n ...style,\n }),\n [context.isScrolling, estimatedHeight, style],\n );\n\n const containerStyle = context.virtualize\n ? virtualizedContainerStyle\n : stableContainerStyle;\n\n if (!mounted && context.fallback) {\n return context.fallback;\n }\n\n return (\n <div\n {...viewportProps}\n ref={ref}\n style={containerStyle}\n data-version={mounted ? layoutVersion : undefined}\n >\n {positionedChildren}\n </div>\n );\n}\n\ninterface MasonryItemProps extends DivProps {\n asChild?: boolean;\n}\n\nfunction MasonryItem(props: MasonryItemProps) {\n const { asChild, ref, ...itemProps } = props;\n\n const ItemPrimitive = asChild ? Slot : \"div\";\n\n return <ItemPrimitive data-slot=\"masonry-item\" {...itemProps} ref={ref} />;\n}\n\nconst Root = MasonryRoot;\nconst Item = MasonryItem;\n\nexport {\n MasonryRoot,\n MasonryItem,\n //\n Root,\n Item,\n};\nexport type { MasonryRootProps, MasonryItemProps };\n"],"names":["NODE_COLOR","NODE_OPERATION","addInterval","treeNode","high","index","node","prevNode","removeInterval","SENTINEL_NODE","updateMax","max","updateMaxUp","x","rotateLeft","tree","y","rotateRight","replaceNode","fixRemove","w","minimumTree","current","fixInsert","createIntervalTree","indexMap","low","z","intervalResult","originalYColor","onCallback","stack","curr","onDeepMemo","constructors","fn","createCache","obj","cache","k","v","depth","baseCache","base","map","i","one","get","args","key","next","set","value","nextConstructor","cached","COLUMN_WIDTH","GAP","ITEM_HEIGHT","OVERSCAN","SCROLL_FPS","DEBOUNCE_DELAY","usePositioner","width","columnWidth","columnGap","rowGap","columnCount","maxColumnCount","linear","deps","initPositioner","React","binarySearch","a","l","h","m","computedColumnCount","computedColumnWidth","intervalTree","columnHeights","items","columnItems","height","columnIndex","preferredColumn","shortestHeight","shortestIndex","currentHeight","preferredHeight","maxAllowedHeight","columnHeight","top","columnItemsList","updates","columns","j","currentIndex","item","nextHeight","currentColumn","itemsInColumn","startIndex","currentItemIndex","startItem","onItemRender","itemCount","defaultItemHeight","tallestColumn","positionerRef","prevDepsRef","opts","prevOptsRef","optsChanged","prevPositioner","positioner","cacheSize","pos","useDebouncedWindowSize","options","containerRef","defaultWidth","defaultHeight","delayMs","getDocumentSize","size","setSize","timeoutRef","setDebouncedSize","onResize","onRafSchedule","callback","useResizeObserver","setLayoutVersion","resizeObserver","onUpdate","itemMap","scheduledItemMap","onResizeObserver","entries","entry","handler","observer","disconnect","scheduleItem","prev","useScroller","offset","fps","scrollY","setScrollY","useThrottle","onScroll","isScrolling","setIsScrolling","hasMountedRef","didUnsubscribe","requestTimeout","delay","start","handle","tick","timestamp","timeout","initialState","leading","state","setState","latestSetState","ms","prevCountRef","trailingTimeout","clearTrailing","throttledSetState","action","perf","rightNow","call","ROOT_NAME","VIEWPORT_NAME","ITEM_NAME","MASONRY_ERROR","MasonryContext","useMasonryContext","name","context","useIsomorphicLayoutEffect","MasonryRoot","props","gap","itemHeight","overscan","scrollFps","fallback","virtualize","lazyLoad","asChild","children","style","ref","rootProps","gapValue","composedRef","useComposedRefs","containerPosition","setContainerPosition","container","scrollTop","loadedIndicesRef","loadedIndices","setLoadedIndices","effectiveLazyLoad","onItemRegister","updateLoadedIndices","indices","hasNew","contextValue","RootPrimitive","Slot","jsx","MasonryViewport","viewportProps","layoutVersion","rafId","mounted","setMounted","validChildren","child","MasonryItem","Item","shortestColumnSize","measuredCount","overscanPixels","rangeStart","rangeEnd","layoutOutdated","positionedChildren","stableItemStyle","virtualizedItemStyle","visibleItemStyle","hiddenItemStyle","indicesToLoadRef","left","itemStyle","batchSize","newIndicesToLoad","isInViewport","wasLoaded","needsLayout","contextScrollTop","estimatedHeight","measuredHeight","remainingItems","estimatedRemainingHeight","stableContainerStyle","virtualizedContainerStyle","containerStyle","itemProps","Root"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { MasonryRoot as t, MasonryItem as i } from "./Masonry.js";
|
|
4
|
+
function a(l) {
|
|
5
|
+
const { items: r, renderItem: e, children: p, ...s } = l;
|
|
6
|
+
return r && r.length > 0 ? /* @__PURE__ */ n(t, { ...s, children: r.map((o, c) => {
|
|
7
|
+
const m = typeof o == "object" && o !== null && "id" in o ? String(o.id) : c;
|
|
8
|
+
return /* @__PURE__ */ n(i, { children: e ? e(o, c) : null }, m);
|
|
9
|
+
}) }) : /* @__PURE__ */ n(t, { ...s, children: p });
|
|
10
|
+
}
|
|
11
|
+
const f = Object.assign(a, {
|
|
12
|
+
Item: i,
|
|
13
|
+
Root: t
|
|
14
|
+
});
|
|
15
|
+
export {
|
|
16
|
+
f as Masonry,
|
|
17
|
+
a as MasonryComponent
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=MasonryWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MasonryWrapper.js","sources":["../../../../src/components/Masonry/MasonryWrapper.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n MasonryRoot,\n MasonryItem,\n type MasonryRootProps,\n type MasonryItemProps,\n} from \"./Masonry\";\n\n/* -------------------------------------------------------------------------------------------------\n * Masonry - Unified wrapper component supporting both declarative and data-driven usage\n * -----------------------------------------------------------------------------------------------*/\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype MasonryItemData = any;\n\ninterface MasonryProps<T = MasonryItemData> extends Omit<\n MasonryRootProps,\n \"children\"\n> {\n /**\n * Array of items to render in the masonry grid (data-driven mode)\n * If provided, `renderItem` should also be provided\n */\n items?: T[];\n /**\n * Custom render function for each item (data-driven mode)\n * @param item - The item data\n * @param index - The index of the item\n */\n renderItem?: (_item: T, _index: number) => React.ReactNode;\n /**\n * Children elements (declarative mode)\n * Use `<Masonry.Item>` components as children\n */\n children?: React.ReactNode;\n}\n\nfunction MasonryComponent<T = MasonryItemData>(props: MasonryProps<T>) {\n const { items, renderItem, children, ...rootProps } = props;\n\n // Data-driven mode: render items using renderItem function\n if (items && items.length > 0) {\n return (\n <MasonryRoot {...rootProps}>\n {items.map((item, index) => {\n const key =\n typeof item === \"object\" && item !== null && \"id\" in item\n ? String((item as { id: unknown }).id)\n : index;\n return (\n <MasonryItem key={key}>\n {renderItem ? renderItem(item, index) : null}\n </MasonryItem>\n );\n })}\n </MasonryRoot>\n );\n }\n\n // Declarative mode: render children directly\n return <MasonryRoot {...rootProps}>{children}</MasonryRoot>;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n// Re-export MasonryItem as Item for Masonry.Item usage\nconst Masonry = Object.assign(MasonryComponent, {\n Item: MasonryItem,\n Root: MasonryRoot,\n});\n\nexport { Masonry, MasonryComponent };\nexport type { MasonryProps, MasonryItemProps };\n"],"names":["MasonryComponent","props","items","renderItem","children","rootProps","jsx","MasonryRoot","item","index","key","MasonryItem","Masonry"],"mappings":";;;AAuCA,SAASA,EAAsCC,GAAwB;AACrE,QAAM,EAAE,OAAAC,GAAO,YAAAC,GAAY,UAAAC,GAAU,GAAGC,MAAcJ;AAGtD,SAAIC,KAASA,EAAM,SAAS,IAExB,gBAAAI,EAACC,KAAa,GAAGF,GACd,YAAM,IAAI,CAACG,GAAMC,MAAU;AAC1B,UAAMC,IACJ,OAAOF,KAAS,YAAYA,MAAS,QAAQ,QAAQA,IACjD,OAAQA,EAAyB,EAAE,IACnCC;AACN,WACE,gBAAAH,EAACK,KACE,UAAAR,IAAaA,EAAWK,GAAMC,CAAK,IAAI,QADxBC,CAElB;AAAA,EAEJ,CAAC,EAAA,CACH,IAKG,gBAAAJ,EAACC,GAAA,EAAa,GAAGF,GAAY,UAAAD,EAAA,CAAS;AAC/C;AAOA,MAAMQ,IAAU,OAAO,OAAOZ,GAAkB;AAAA,EAC9C,MAAMW;AAAA,EACN,MAAMJ;AACR,CAAC;"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { jsx as e, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import * as x from "react";
|
|
3
|
+
import { Pagination as T, PaginationContent as _, PaginationItem as u, PaginationPrevious as b, PaginationEllipsis as A, PaginationLink as H, PaginationNext as D } from "@dsui/ui/components/pagination";
|
|
4
|
+
import { PaginationContent as pe, PaginationEllipsis as he, PaginationItem as me, PaginationLink as ue, PaginationNext as de, PaginationPrevious as ve } from "@dsui/ui/components/pagination";
|
|
5
|
+
import { cn as W } from "@dsui/ui/lib/utils";
|
|
6
|
+
import { animationEffect as q } from "../../utils/animations.js";
|
|
7
|
+
import { ChevronsRight as B, ChevronsLeft as F, MoreHorizontalIcon as j } from "lucide-react";
|
|
8
|
+
import { Popover as G, PopoverTrigger as K, PopoverContent as Q } from "@dsui/ui/components/popover";
|
|
9
|
+
import { Command as U, CommandInput as V, CommandList as X, CommandItem as Y } from "@dsui/ui/components/command";
|
|
10
|
+
const Z = (t, c, i) => {
|
|
11
|
+
if (t <= i)
|
|
12
|
+
return Array.from({ length: t }, (s, f) => f + 1);
|
|
13
|
+
const n = [], o = Math.floor(i / 2);
|
|
14
|
+
let a = Math.max(1, c - o);
|
|
15
|
+
const r = Math.min(t, a + i - 1);
|
|
16
|
+
r - a + 1 < i && (a = Math.max(1, r - i + 1)), a > 1 && (n.push(1), a > 2 && n.push("..."));
|
|
17
|
+
for (let s = a; s <= r; s++)
|
|
18
|
+
n.push(s);
|
|
19
|
+
return r < t && (r < t - 1 && n.push("..."), n.push(t)), n;
|
|
20
|
+
}, z = ({
|
|
21
|
+
position: t,
|
|
22
|
+
onJumpPrevious: c,
|
|
23
|
+
onJumpNext: i,
|
|
24
|
+
color: n,
|
|
25
|
+
size: o,
|
|
26
|
+
previousText: a,
|
|
27
|
+
nextText: r,
|
|
28
|
+
jumpType: s = "jump",
|
|
29
|
+
total: f,
|
|
30
|
+
onPageChange: d
|
|
31
|
+
}) => {
|
|
32
|
+
const [v, N] = x.useState(!1);
|
|
33
|
+
return s === "select" ? /* @__PURE__ */ m(G, { open: v, onOpenChange: N, children: [
|
|
34
|
+
/* @__PURE__ */ e(K, { asChild: !0, children: /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(A, { size: o, color: n }) }) }),
|
|
35
|
+
/* @__PURE__ */ e(Q, { className: "w-40 p-0", children: /* @__PURE__ */ m(U, { children: [
|
|
36
|
+
/* @__PURE__ */ e(V, { placeholder: "Search pages..." }),
|
|
37
|
+
/* @__PURE__ */ e(X, { children: f && Array.from({ length: f }, (l, g) => g + 1).map((l) => /* @__PURE__ */ m(
|
|
38
|
+
Y,
|
|
39
|
+
{
|
|
40
|
+
onSelect: () => {
|
|
41
|
+
d?.(l), N(!1);
|
|
42
|
+
},
|
|
43
|
+
children: [
|
|
44
|
+
"Page ",
|
|
45
|
+
l
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
l
|
|
49
|
+
)) })
|
|
50
|
+
] }) })
|
|
51
|
+
] }) : /* @__PURE__ */ e(u, { className: "group", children: t === "before" ? /* @__PURE__ */ m(
|
|
52
|
+
b,
|
|
53
|
+
{
|
|
54
|
+
href: "#",
|
|
55
|
+
onClick: (l) => {
|
|
56
|
+
l.preventDefault(), c?.();
|
|
57
|
+
},
|
|
58
|
+
color: n,
|
|
59
|
+
size: o,
|
|
60
|
+
hideIcon: !0,
|
|
61
|
+
className: "peer",
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ e("span", { className: "hidden group-hover:block leading-none", children: a }),
|
|
64
|
+
/* @__PURE__ */ e(j, { className: "group-hover:hidden cursor-pointer" })
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
) : /* @__PURE__ */ m(
|
|
68
|
+
D,
|
|
69
|
+
{
|
|
70
|
+
href: "#",
|
|
71
|
+
onClick: (l) => {
|
|
72
|
+
l.preventDefault(), i?.();
|
|
73
|
+
},
|
|
74
|
+
color: n,
|
|
75
|
+
size: o,
|
|
76
|
+
hideIcon: !0,
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ e("span", { className: "hidden group-hover:block leading-none", children: r }),
|
|
79
|
+
/* @__PURE__ */ e(j, { className: "group-hover:hidden cursor-pointer" })
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
) });
|
|
83
|
+
}, ee = x.forwardRef(
|
|
84
|
+
({
|
|
85
|
+
className: t,
|
|
86
|
+
animation: c,
|
|
87
|
+
total: i,
|
|
88
|
+
currentPage: n = 1,
|
|
89
|
+
onPageChange: o,
|
|
90
|
+
showPreviousNext: a = !0,
|
|
91
|
+
color: r = "muted",
|
|
92
|
+
size: s,
|
|
93
|
+
maxPages: f = 5,
|
|
94
|
+
previousText: d,
|
|
95
|
+
nextText: v,
|
|
96
|
+
jumpOnEllipsis: N = !1,
|
|
97
|
+
jumpType: l = "jump",
|
|
98
|
+
children: g,
|
|
99
|
+
...C
|
|
100
|
+
}, J) => {
|
|
101
|
+
const I = x.useMemo(() => c ? q({
|
|
102
|
+
animation: c,
|
|
103
|
+
children: g,
|
|
104
|
+
className: t,
|
|
105
|
+
rootClassName: "",
|
|
106
|
+
variantType: void 0,
|
|
107
|
+
...C
|
|
108
|
+
}) : null, [c, C, t, g]), E = () => d === !1 ? !1 : d === !0 ? "Previous" : d, L = () => v === !1 ? !1 : v === !0 ? "Next" : v, S = () => {
|
|
109
|
+
const p = Math.max(1, n - f);
|
|
110
|
+
o?.(p);
|
|
111
|
+
}, w = () => {
|
|
112
|
+
const p = Math.min(i, n + f);
|
|
113
|
+
o?.(p);
|
|
114
|
+
}, O = () => {
|
|
115
|
+
if (!i) return g;
|
|
116
|
+
const p = Z(i, n, f);
|
|
117
|
+
return /* @__PURE__ */ m(_, { children: [
|
|
118
|
+
a && /* @__PURE__ */ e(u, { className: "flex justify-center", children: /* @__PURE__ */ e(
|
|
119
|
+
b,
|
|
120
|
+
{
|
|
121
|
+
href: "#",
|
|
122
|
+
onClick: (h) => {
|
|
123
|
+
h.preventDefault(), n > 1 && o?.(n - 1);
|
|
124
|
+
},
|
|
125
|
+
color: r,
|
|
126
|
+
size: s,
|
|
127
|
+
children: E()
|
|
128
|
+
}
|
|
129
|
+
) }),
|
|
130
|
+
p.map((h, y) => {
|
|
131
|
+
if (h === "...") {
|
|
132
|
+
if (N) {
|
|
133
|
+
const k = y, R = p.findIndex(
|
|
134
|
+
(M) => typeof M == "number" && M === n
|
|
135
|
+
), $ = k < R ? "before" : "after";
|
|
136
|
+
return /* @__PURE__ */ e(
|
|
137
|
+
z,
|
|
138
|
+
{
|
|
139
|
+
position: $,
|
|
140
|
+
onJumpPrevious: S,
|
|
141
|
+
onJumpNext: w,
|
|
142
|
+
color: r,
|
|
143
|
+
size: s,
|
|
144
|
+
previousText: /* @__PURE__ */ e(F, {}),
|
|
145
|
+
nextText: /* @__PURE__ */ e(B, {}),
|
|
146
|
+
jumpType: l,
|
|
147
|
+
total: i,
|
|
148
|
+
onPageChange: o
|
|
149
|
+
},
|
|
150
|
+
`ellipsis-${y}`
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
return /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(A, { size: s, color: r }) }, `ellipsis-${y}`);
|
|
154
|
+
}
|
|
155
|
+
const P = h;
|
|
156
|
+
return /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(
|
|
157
|
+
H,
|
|
158
|
+
{
|
|
159
|
+
href: "#",
|
|
160
|
+
isActive: P === n,
|
|
161
|
+
onClick: (k) => {
|
|
162
|
+
k.preventDefault(), o?.(P);
|
|
163
|
+
},
|
|
164
|
+
color: r,
|
|
165
|
+
size: s,
|
|
166
|
+
children: P
|
|
167
|
+
}
|
|
168
|
+
) }, P);
|
|
169
|
+
}),
|
|
170
|
+
a && /* @__PURE__ */ e(u, { className: "flex justify-center", children: /* @__PURE__ */ e(
|
|
171
|
+
D,
|
|
172
|
+
{
|
|
173
|
+
href: "#",
|
|
174
|
+
onClick: (h) => {
|
|
175
|
+
h.preventDefault(), n < i && o?.(n + 1);
|
|
176
|
+
},
|
|
177
|
+
color: r,
|
|
178
|
+
size: s,
|
|
179
|
+
children: L()
|
|
180
|
+
}
|
|
181
|
+
) })
|
|
182
|
+
] });
|
|
183
|
+
};
|
|
184
|
+
return /* @__PURE__ */ e(
|
|
185
|
+
T,
|
|
186
|
+
{
|
|
187
|
+
ref: J,
|
|
188
|
+
className: W(t, I?.className),
|
|
189
|
+
style: {
|
|
190
|
+
...C.style || {},
|
|
191
|
+
...I?.style || {}
|
|
192
|
+
},
|
|
193
|
+
...C,
|
|
194
|
+
children: I?.children ?? O()
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
ee.displayName = "Pagination";
|
|
200
|
+
export {
|
|
201
|
+
ee as Pagination,
|
|
202
|
+
pe as PaginationContent,
|
|
203
|
+
he as PaginationEllipsis,
|
|
204
|
+
me as PaginationItem,
|
|
205
|
+
ue as PaginationLink,
|
|
206
|
+
de as PaginationNext,
|
|
207
|
+
ve as PaginationPrevious
|
|
208
|
+
};
|
|
209
|
+
//# sourceMappingURL=Pagination.js.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Pagination as i } from "./Pagination.js";
|
|
2
|
+
import { PaginationEllipsis as n, PaginationNext as t, PaginationPrevious as a, PaginationLink as o, PaginationItem as P, PaginationContent as e } from "@dsui/ui/components/pagination";
|
|
3
|
+
const r = Object.assign(i, {
|
|
4
|
+
Content: e,
|
|
5
|
+
Item: P,
|
|
6
|
+
Link: o,
|
|
7
|
+
Previous: a,
|
|
8
|
+
Next: t,
|
|
9
|
+
Ellipsis: n
|
|
10
|
+
});
|
|
11
|
+
export {
|
|
12
|
+
r as Pagination
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Pagination/index.ts"],"sourcesContent":["import {\n Pagination as PaginationWrapper,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n type PaginationWrapperProps,\n type PaginationItemType,\n} from \"./Pagination\";\n\nconst Pagination = Object.assign(PaginationWrapper, {\n Content: PaginationContent,\n Item: PaginationItem,\n Link: PaginationLink,\n Previous: PaginationPrevious,\n Next: PaginationNext,\n Ellipsis: PaginationEllipsis,\n});\n\nexport { Pagination, type PaginationWrapperProps, type PaginationItemType };\n"],"names":["Pagination","PaginationWrapper","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","PaginationNext","PaginationEllipsis"],"mappings":";;AAYA,MAAMA,IAAa,OAAO,OAAOC,GAAmB;AAAA,EAClD,SAASC;AAAA,EACT,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,UAAUC;AAAA,EACV,MAAMC;AAAA,EACN,UAAUC;AACZ,CAAC;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsxs as u, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import C from "react";
|
|
3
|
+
import { Popover as O, PopoverTrigger as x, PopoverContent as j } from "@dsui/ui/components/popover";
|
|
4
|
+
import { cn as r } from "@dsui/ui/lib/utils";
|
|
5
|
+
const R = C.forwardRef((t, a) => {
|
|
6
|
+
const {
|
|
7
|
+
open: s,
|
|
8
|
+
defaultOpen: n,
|
|
9
|
+
onOpenChange: l,
|
|
10
|
+
modal: i = !1,
|
|
11
|
+
children: m,
|
|
12
|
+
trigger: c,
|
|
13
|
+
content: p,
|
|
14
|
+
side: f = "bottom",
|
|
15
|
+
align: d = "center",
|
|
16
|
+
sideOffset: g = 4,
|
|
17
|
+
alignOffset: h,
|
|
18
|
+
className: v,
|
|
19
|
+
contentClassName: N,
|
|
20
|
+
triggerClassName: P
|
|
21
|
+
} = t, e = c || m;
|
|
22
|
+
return /* @__PURE__ */ u(
|
|
23
|
+
O,
|
|
24
|
+
{
|
|
25
|
+
open: s,
|
|
26
|
+
defaultOpen: n,
|
|
27
|
+
onOpenChange: l,
|
|
28
|
+
modal: i,
|
|
29
|
+
children: [
|
|
30
|
+
e && /* @__PURE__ */ o(x, { asChild: !0, className: r(P), children: e }),
|
|
31
|
+
/* @__PURE__ */ o(
|
|
32
|
+
j,
|
|
33
|
+
{
|
|
34
|
+
ref: a,
|
|
35
|
+
side: f,
|
|
36
|
+
align: d,
|
|
37
|
+
sideOffset: g,
|
|
38
|
+
alignOffset: h,
|
|
39
|
+
className: r(v, N),
|
|
40
|
+
children: p
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
});
|
|
47
|
+
R.displayName = "Popover";
|
|
48
|
+
export {
|
|
49
|
+
R as default
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=Popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover.js","sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Popover as SPopover,\n PopoverTrigger as SPopoverTrigger,\n PopoverContent as SPopoverContent,\n} from \"@dsui/ui/components/popover\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n // Core props\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n\n // Content\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n content?: React.ReactNode;\n\n // Layout\n side?: PopoverSide;\n align?: PopoverAlign;\n sideOffset?: number;\n alignOffset?: number;\n\n // Styling\n className?: string;\n contentClassName?: string;\n triggerClassName?: string;\n}\n\nconst Popover = React.forwardRef<HTMLDivElement, PopoverProps>((props, ref) => {\n const {\n open,\n defaultOpen,\n onOpenChange,\n modal = false,\n children,\n trigger,\n content,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 4,\n alignOffset,\n className,\n contentClassName,\n triggerClassName,\n } = props;\n\n // If children are provided (compound pattern), render them directly\n // if (children) {\n // return (\n // <SPopover\n // open={open}\n // defaultOpen={defaultOpen}\n // onOpenChange={onOpenChange}\n // modal={modal}\n // >\n // {children}\n // </SPopover>\n // );\n // }\n\n // Fallback to props-based pattern\n const triggerElement = trigger || children;\n\n return (\n <SPopover\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n modal={modal}\n >\n {triggerElement && (\n <SPopoverTrigger asChild className={cn(triggerClassName)}>\n {triggerElement}\n </SPopoverTrigger>\n )}\n <SPopoverContent\n ref={ref}\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n className={cn(className, contentClassName)}\n >\n {content}\n </SPopoverContent>\n </SPopover>\n );\n});\n\nPopover.displayName = \"Popover\";\n\nexport default Popover;\n"],"names":["Popover","React","props","ref","open","defaultOpen","onOpenChange","modal","children","trigger","content","side","align","sideOffset","alignOffset","className","contentClassName","triggerClassName","triggerElement","jsxs","SPopover","jsx","SPopoverTrigger","cn","SPopoverContent"],"mappings":";;;;AAmCA,MAAMA,IAAUC,EAAM,WAAyC,CAACC,GAAOC,MAAQ;AAC7E,QAAM;AAAA,IACJ,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC,IAAa;AAAA,IACb,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,IACEf,GAiBEgB,IAAiBT,KAAWD;AAElC,SACE,gBAAAW;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,MAAAhB;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,OAAAC;AAAA,MAEC,UAAA;AAAA,QAAAW,KACC,gBAAAG,EAACC,KAAgB,SAAO,IAAC,WAAWC,EAAGN,CAAgB,GACpD,UAAAC,EAAA,CACH;AAAA,QAEF,gBAAAG;AAAA,UAACG;AAAAA,UAAA;AAAA,YACC,KAAArB;AAAA,YACA,MAAAQ;AAAA,YACA,OAAAC;AAAA,YACA,YAAAC;AAAA,YACA,aAAAC;AAAA,YACA,WAAWS,EAAGR,GAAWC,CAAgB;AAAA,YAExC,UAAAN;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AAEDV,EAAQ,cAAc;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Popover/index.ts"],"sourcesContent":["import PopoverWrapper, { type PopoverProps } from \"./Popover\";\n// import { PopoverTrigger, PopoverContent } from \"@dsui/ui/components/popover\";\n\nconst Popover = Object.assign(PopoverWrapper, {\n // Trigger: PopoverTrigger,\n // Content: PopoverContent,\n});\n\nexport { Popover };\nexport type { PopoverProps };\n"],"names":["Popover","PopoverWrapper"],"mappings":";AAGA,MAAMA,IAAU,OAAO,OAAOC,GAAgB;AAAA;AAAA;AAG9C,CAAC;"}
|