@sth87/shadcn-design-system 0.0.35 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -2
- package/dist/AI_CONTEXT.md +212 -214
- package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/cjs/components/Badge/Badge.cjs +1 -1
- package/dist/cjs/components/Badge/Badge.cjs.map +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/cjs/components/Command/Command.cjs +1 -1
- package/dist/cjs/components/Command/Command.cjs.map +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/cjs/components/FloatLabel.cjs +1 -1
- package/dist/cjs/components/FloatLabel.cjs.map +1 -1
- package/dist/cjs/components/Glass/Glass.cjs +1 -1
- package/dist/cjs/components/Glass/Glass.cjs.map +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs.map +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs.map +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs.map +1 -1
- package/dist/cjs/components/Radio/Radio.cjs +1 -1
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
- package/dist/cjs/components/Rate/Rate.cjs +1 -1
- package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs.map +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/cjs/components/Select/Select.cjs +1 -1
- package/dist/cjs/components/Select/Select.cjs.map +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs +2 -2
- package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table.cjs +1 -1
- package/dist/cjs/components/Table/data-table.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Tabs/classes.cjs +1 -1
- package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/cjs/components/TimeGridView.cjs +1 -1
- package/dist/cjs/components/TimeGridView.cjs.map +1 -1
- package/dist/cjs/components/Toast/Toast.cjs +1 -1
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/Tour/Tour.cjs +1 -1
- package/dist/cjs/components/Tour/Tour.cjs.map +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs.map +1 -1
- package/dist/cjs/components/Upload/Upload.cjs +3 -3
- package/dist/cjs/components/Upload/Upload.cjs.map +1 -1
- package/dist/cjs/components/WheelColumn.cjs +1 -1
- package/dist/cjs/components/WheelColumn.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +2 -2
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +1 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +1 -0
- package/dist/cjs/packages/ui/src/components/accordion.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/accordion.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +1 -1
- package/dist/cjs/styles/index.css +1 -1
- package/dist/cjs/utils/animations.cjs +1 -1
- package/dist/cjs/utils/animations.cjs.map +1 -1
- package/dist/cjs/utils/css.cjs +1 -1
- package/dist/cjs/utils/css.cjs.map +1 -1
- package/dist/cjs/utils/parsers.cjs +1 -1
- package/dist/cjs/utils/parsers.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +60 -60
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.js +40 -40
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Badge/Badge.js +1 -1
- package/dist/esm/components/Badge/Badge.js.map +1 -1
- package/dist/esm/components/Breadcrumb/Breadcrumb.js +36 -36
- package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/esm/components/Button/Button.js +9 -9
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +4 -4
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Carousel/Carousel.js +165 -165
- package/dist/esm/components/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +26 -26
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Collapsible/Collapsible.js +43 -43
- package/dist/esm/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/Command/Command.js +28 -28
- package/dist/esm/components/Command/Command.js.map +1 -1
- package/dist/esm/components/ContextMenu/ContextMenu.js +11 -11
- package/dist/esm/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/esm/components/Cropper/Cropper.js +132 -132
- package/dist/esm/components/Cropper/Cropper.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +75 -75
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/RangePicker.js +136 -136
- package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/TimePicker.js +150 -150
- package/dist/esm/components/DatePicker/TimePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +114 -114
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +13 -13
- package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/esm/components/FloatLabel.js +44 -44
- package/dist/esm/components/FloatLabel.js.map +1 -1
- package/dist/esm/components/Glass/Glass.js +15 -15
- package/dist/esm/components/Glass/Glass.js.map +1 -1
- package/dist/esm/components/ImageViewer/ImageViewer.js +53 -53
- package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
- package/dist/esm/components/Input/Input.js +104 -104
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/InputOTP/InputOTP.js +16 -16
- package/dist/esm/components/InputOTP/InputOTP.js.map +1 -1
- package/dist/esm/components/Interactive/CursorFollow.js +49 -49
- package/dist/esm/components/Interactive/CursorFollow.js.map +1 -1
- package/dist/esm/components/Marquee/Marquee.js +130 -130
- package/dist/esm/components/Marquee/Marquee.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +68 -68
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/QrCode/QrCode.js +37 -37
- package/dist/esm/components/QrCode/QrCode.js.map +1 -1
- package/dist/esm/components/Radio/Radio.js +16 -16
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Rate/Rate.js +62 -62
- package/dist/esm/components/Rate/Rate.js.map +1 -1
- package/dist/esm/components/Resizable/Resizable.js +6 -6
- package/dist/esm/components/Resizable/Resizable.js.map +1 -1
- package/dist/esm/components/ScrollArea/ScrollArea.js +10 -10
- package/dist/esm/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/esm/components/Select/Select.js +64 -64
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Sheet/Sheet.js +21 -21
- package/dist/esm/components/Sheet/Sheet.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +54 -54
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Stepper/Stepper.js +198 -198
- package/dist/esm/components/Stepper/Stepper.js.map +1 -1
- package/dist/esm/components/Stepper/StepperWrapper.js +15 -15
- package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +38 -38
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +37 -37
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +25 -25
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +64 -64
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
- package/dist/esm/components/Table/data-table-column-header.js +18 -18
- package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
- package/dist/esm/components/Table/data-table-pagination.js +21 -21
- package/dist/esm/components/Table/data-table-pagination.js.map +1 -1
- package/dist/esm/components/Table/data-table.js +18 -18
- package/dist/esm/components/Table/data-table.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +242 -242
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/classes.js +51 -51
- package/dist/esm/components/Tabs/classes.js.map +1 -1
- package/dist/esm/components/Textarea/Textarea.js +49 -49
- package/dist/esm/components/Textarea/Textarea.js.map +1 -1
- package/dist/esm/components/TimeGridView.js +12 -12
- package/dist/esm/components/TimeGridView.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +45 -45
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +19 -19
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tour/Tour.js +11 -11
- package/dist/esm/components/Tour/Tour.js.map +1 -1
- package/dist/esm/components/Tour/TourWrapper.js +15 -15
- package/dist/esm/components/Tour/TourWrapper.js.map +1 -1
- package/dist/esm/components/Upload/Upload.js +405 -405
- package/dist/esm/components/Upload/Upload.js.map +1 -1
- package/dist/esm/components/WheelColumn.js +47 -47
- package/dist/esm/components/WheelColumn.js.map +1 -1
- package/dist/esm/lib/TextAnimation/BlurText.js +18 -18
- package/dist/esm/lib/TextAnimation/BlurText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/CircularText.js +7 -7
- package/dist/esm/lib/TextAnimation/CircularText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/FlipWords.js +21 -21
- package/dist/esm/lib/TextAnimation/FlipWords.js.map +1 -1
- package/dist/esm/lib/TextAnimation/GradientText.js +4 -4
- package/dist/esm/lib/TextAnimation/GradientText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RollingText.js +24 -24
- package/dist/esm/lib/TextAnimation/RollingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RotatingText.js +6 -6
- package/dist/esm/lib/TextAnimation/RotatingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/ShimmeringText.js +9 -9
- package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +14 -14
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js +9 -9
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js +3 -3
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TypingText.js +17 -17
- package/dist/esm/lib/TextAnimation/TypingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/WritingText.js +10 -10
- package/dist/esm/lib/TextAnimation/WritingText.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +1 -0
- package/dist/esm/packages/ui/src/components/accordion.js +31 -31
- package/dist/esm/packages/ui/src/components/accordion.js.map +1 -1
- package/dist/esm/packages/ui/src/components/alert-dialog.js +33 -33
- package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/avatar.js +20 -20
- package/dist/esm/packages/ui/src/components/avatar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/badge.js +53 -53
- package/dist/esm/packages/ui/src/components/badge.js.map +1 -1
- package/dist/esm/packages/ui/src/components/breadcrumb.js +20 -20
- package/dist/esm/packages/ui/src/components/breadcrumb.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button-group.js +31 -31
- package/dist/esm/packages/ui/src/components/button-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button.js +90 -90
- package/dist/esm/packages/ui/src/components/button.js.map +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js +94 -94
- package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/checkbox.js +47 -47
- package/dist/esm/packages/ui/src/components/checkbox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/combobox.js +64 -64
- package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/command.js +77 -77
- package/dist/esm/packages/ui/src/components/command.js.map +1 -1
- package/dist/esm/packages/ui/src/components/context-menu.js +76 -76
- package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dialog.js +54 -54
- package/dist/esm/packages/ui/src/components/dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/drawer.js +39 -39
- package/dist/esm/packages/ui/src/components/drawer.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dropdown-menu.js +109 -109
- package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input-otp.js +30 -30
- package/dist/esm/packages/ui/src/components/input-otp.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input.js +19 -19
- package/dist/esm/packages/ui/src/components/input.js.map +1 -1
- package/dist/esm/packages/ui/src/components/label.js +9 -9
- package/dist/esm/packages/ui/src/components/label.js.map +1 -1
- package/dist/esm/packages/ui/src/components/pagination.js +26 -26
- package/dist/esm/packages/ui/src/components/pagination.js.map +1 -1
- package/dist/esm/packages/ui/src/components/popover.js +13 -13
- package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
- package/dist/esm/packages/ui/src/components/radio-group.js +45 -45
- package/dist/esm/packages/ui/src/components/radio-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/resizable.js +18 -18
- package/dist/esm/packages/ui/src/components/resizable.js.map +1 -1
- package/dist/esm/packages/ui/src/components/scroll-area.js +31 -31
- package/dist/esm/packages/ui/src/components/scroll-area.js.map +1 -1
- package/dist/esm/packages/ui/src/components/select.js +119 -119
- package/dist/esm/packages/ui/src/components/select.js.map +1 -1
- package/dist/esm/packages/ui/src/components/separator.js +86 -86
- package/dist/esm/packages/ui/src/components/separator.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sheet.js +50 -50
- package/dist/esm/packages/ui/src/components/sheet.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sidebar.js +198 -198
- package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/skeleton.js +3 -3
- package/dist/esm/packages/ui/src/components/skeleton.js.map +1 -1
- package/dist/esm/packages/ui/src/components/switch.js +57 -57
- package/dist/esm/packages/ui/src/components/switch.js.map +1 -1
- package/dist/esm/packages/ui/src/components/table.js +17 -17
- package/dist/esm/packages/ui/src/components/table.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tabs.js +33 -33
- package/dist/esm/packages/ui/src/components/tabs.js.map +1 -1
- package/dist/esm/packages/ui/src/components/textarea.js +17 -17
- package/dist/esm/packages/ui/src/components/textarea.js.map +1 -1
- package/dist/esm/packages/ui/src/components/toggle.js +36 -36
- package/dist/esm/packages/ui/src/components/toggle.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tooltip.js +20 -20
- package/dist/esm/packages/ui/src/components/tooltip.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tree-view.js +218 -218
- package/dist/esm/packages/ui/src/components/tree-view.js.map +1 -1
- package/dist/esm/styles/index.css +1 -1
- package/dist/esm/utils/animations.js +55 -55
- package/dist/esm/utils/animations.js.map +1 -1
- package/dist/esm/utils/css.js +7 -7
- package/dist/esm/utils/css.js.map +1 -1
- package/dist/esm/utils/parsers.js +1 -1
- package/dist/types/components/DatePicker/RangePicker.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TypingText.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +0 -1
- /package/dist/cjs/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.cjs +0 -0
- /package/dist/esm/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-view.js","sources":["../../../../../../../../packages/ui/src/components/tree-view.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport {\n ChevronRight,\n Check,\n Minus,\n SquarePlus,\n SquareMinus,\n} from \"lucide-react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst treeVariants = cva(\n \"group hover:before:opacity-100 before:absolute before:rounded-lg before:left-0 pr-2 before:w-full before:opacity-0 before:bg-accent/70 before:h-[2rem] before:-z-10\"\n);\n\nconst selectedTreeVariants = cva(\n \"before:opacity-100 before:bg-accent/70 text-accent-foreground\"\n);\n\nconst DEFAULT_SELECTED_IDS: string[] = [];\n\ninterface TreeDataItem {\n id: string;\n name: string;\n icon?: any;\n selectedIcon?: any;\n openIcon?: any;\n children?: TreeDataItem[];\n actions?: React.ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n checked?: boolean;\n indeterminate?: boolean;\n}\n\ninterface TreeViewProps extends React.HTMLAttributes<HTMLDivElement> {\n data: TreeDataItem[] | TreeDataItem;\n initialSelectedItemId?: string;\n onSelectChange?: (item: TreeDataItem | undefined) => void;\n expandAll?: boolean;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n selectedIds?: string[];\n onMultiSelectChange?: (selectedIds: string[]) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n}\n\nconst TreeView = React.forwardRef<HTMLDivElement, TreeViewProps>(\n (\n {\n data,\n initialSelectedItemId,\n onSelectChange,\n expandAll,\n defaultLeafIcon,\n defaultNodeIcon,\n className,\n multiSelect = false,\n selectedIds = DEFAULT_SELECTED_IDS,\n onMultiSelectChange,\n showIcon = true,\n showLeafIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n ...props\n },\n ref\n ) => {\n const [selectedItemId, setSelectedItemId] = React.useState<\n string | undefined\n >(initialSelectedItemId);\n\n const [checkedIds, setCheckedIds] = React.useState<string[]>(selectedIds);\n\n React.useEffect(() => {\n setCheckedIds(selectedIds);\n }, [selectedIds]);\n\n const handleSelectChange = React.useCallback(\n (item: TreeDataItem | undefined) => {\n setSelectedItemId(item?.id);\n if (onSelectChange) {\n onSelectChange(item);\n }\n },\n [onSelectChange]\n );\n\n const handleCheckChange = React.useCallback(\n (item: TreeDataItem, checked: boolean) => {\n const getAllChildIds = (node: TreeDataItem): string[] => {\n const ids = [node.id];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(...getAllChildIds(child));\n });\n }\n return ids;\n };\n\n const newCheckedIds = checked\n ? [...checkedIds, ...getAllChildIds(item)]\n : checkedIds.filter((id) => !getAllChildIds(item).includes(id));\n\n const uniqueIds = Array.from(new Set(newCheckedIds));\n setCheckedIds(uniqueIds);\n if (onMultiSelectChange) {\n onMultiSelectChange(uniqueIds);\n }\n },\n [checkedIds, onMultiSelectChange]\n );\n\n const expandedItemIds = React.useMemo(() => {\n const ids: string[] = [];\n\n if (expandAll) {\n const collectAllIds = (nodes: TreeDataItem[] | TreeDataItem) => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n items.forEach((node) => {\n if (node.children && node.children.length > 0) {\n ids.push(node.id);\n collectAllIds(node.children);\n }\n });\n };\n collectAllIds(data);\n } else if (initialSelectedItemId) {\n const findPath = (\n nodes: TreeDataItem[] | TreeDataItem,\n targetId: string\n ): boolean => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n for (const node of items) {\n if (node.id === targetId) return true;\n if (node.children) {\n if (findPath(node.children, targetId)) {\n ids.push(node.id);\n return true;\n }\n }\n }\n return false;\n };\n findPath(data, initialSelectedItemId);\n }\n\n return ids;\n }, [data, expandAll, initialSelectedItemId]);\n\n return (\n <div className={cn(\"overflow-hidden relative p-2\", className)}>\n <TreeItem\n data={data}\n ref={ref}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isRoot\n {...props}\n />\n </div>\n );\n }\n);\nTreeView.displayName = \"TreeView\";\n\ntype TreeItemProps = TreeViewProps & {\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isRoot?: boolean;\n};\n\nconst TreeItem = React.forwardRef<HTMLDivElement, TreeItemProps>(\n (\n {\n className,\n data,\n selectedItemId,\n handleSelectChange,\n expandedItemIds,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showIcon,\n showLeafIcon,\n treeLine,\n expandOnArrowClick,\n indicatorVariant,\n customExpandIcon,\n customCollapseIcon,\n isRoot,\n ...props\n },\n ref\n ) => {\n if (!(data instanceof Array)) {\n data = [data];\n }\n return (\n <div ref={ref} role=\"tree\" className={className} {...props}>\n <ul>\n {data.map((item, index) => (\n <li key={item.id} className=\"relative\">\n {item.children ? (\n <TreeNode\n item={item}\n selectedItemId={selectedItemId}\n expandedItemIds={expandedItemIds}\n handleSelectChange={handleSelectChange}\n defaultNodeIcon={defaultNodeIcon}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n ) : (\n <TreeLeaf\n item={item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n);\nTreeItem.displayName = \"TreeItem\";\n\nconst TreeNode = ({\n item,\n handleSelectChange,\n expandedItemIds,\n selectedItemId,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds = [],\n handleCheckChange,\n showIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n isLastChild,\n isRoot,\n}: {\n item: TreeDataItem;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n selectedItemId?: string;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isLastChild?: boolean;\n isRoot?: boolean;\n}) => {\n const [value, setValue] = React.useState<string[]>(\n expandedItemIds.includes(item.id) ? [item.id] : []\n );\n\n React.useEffect(() => {\n if (expandedItemIds.includes(item.id)) {\n setValue((prev) => (prev.includes(item.id) ? prev : [...prev, item.id]));\n } else {\n setValue((prev) => prev.filter((id) => id !== item.id));\n }\n }, [expandedItemIds, item.id]);\n\n // Get all descendant IDs - memoized separately to avoid recalculation\n const allDescendantIds = React.useMemo(() => {\n const getAllDescendantIds = (node: TreeDataItem): string[] => {\n const ids: string[] = [];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(child.id);\n ids.push(...getAllDescendantIds(child));\n });\n }\n return ids;\n };\n return item.children ? getAllDescendantIds(item) : [];\n // We only want to recalculate when item structure changes, not on every render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.id]);\n\n // Check if this node is checked\n const isChecked = React.useMemo(() => {\n if (!checkedIds) return false;\n\n // If the node itself is in checkedIds\n if (checkedIds.includes(item.id)) return true;\n\n // If all descendants are checked, consider this node as checked\n if (!item.children || item.children.length === 0) return false;\n if (allDescendantIds.length === 0) return false;\n\n // All descendants must be checked\n return allDescendantIds.every((id) => checkedIds.includes(id));\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkedIds, item.id, allDescendantIds]);\n\n const isIndeterminate = React.useMemo(() => {\n if (!multiSelect || !item.children || !checkedIds) return false;\n if (isChecked) return false; // If node is fully checked, not indeterminate\n\n const checkedDescendants = allDescendantIds.filter((id) =>\n checkedIds.includes(id)\n );\n\n // Indeterminate if some (but not all) descendants are checked\n return (\n checkedDescendants.length > 0 &&\n checkedDescendants.length < allDescendantIds.length\n );\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [multiSelect, checkedIds, isChecked, allDescendantIds]);\n\n return (\n <AccordionPrimitive.Root\n type=\"multiple\"\n value={value}\n onValueChange={(s: string[]) => setValue(s)}\n >\n <AccordionPrimitive.Item value={item.id} className=\"relative\">\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"absolute left-[-1.05rem] w-px bg-border\",\n isLastChild ? \"h-5\" : \"h-full\",\n isRoot && \"hidden\"\n )}\n >\n <div className=\"absolute left-0 top-5 w-4 h-px bg-border\" />\n </div>\n )}\n <div\n className={cn(\n \"flex items-center relative\",\n !expandOnArrowClick && treeVariants(),\n !expandOnArrowClick &&\n selectedItemId === item.id &&\n selectedTreeVariants()\n )}\n >\n <AccordionPrimitive.Header className=\"flex items-center w-full\">\n <AccordionPrimitive.Trigger\n asChild\n onClick={(e) => {\n if (expandOnArrowClick) {\n e.stopPropagation();\n }\n }}\n >\n <div\n className={cn(\n \"flex items-center p-2 transition-all gap-1\",\n indicatorVariant === \"arrow\" &&\n !customExpandIcon &&\n !customCollapseIcon &&\n \"[&[data-state=open]>svg:first-of-type]:rotate-90\",\n expandOnArrowClick\n ? \"hover:bg-accent/50 rounded-sm cursor-pointer\"\n : \"flex-1 cursor-pointer\"\n )}\n >\n <IndicatorIcon\n variant={indicatorVariant}\n isOpen={value.includes(item.id)}\n customExpand={customExpandIcon}\n customCollapse={customCollapseIcon}\n />\n {!expandOnArrowClick && (\n <>\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"mr-2 h-4 w-4 shrink-0 rounded-sm border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {isIndeterminate ? (\n <Minus className=\"h-3 w-3\" />\n ) : (\n <Check className=\"h-3 w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"text-sm truncate\">{item.name}</span>\n </>\n )}\n </div>\n </AccordionPrimitive.Trigger>\n {expandOnArrowClick && (\n <div\n className={cn(\n \"flex items-center flex-1 py-2 cursor-pointer\",\n treeVariants(),\n selectedItemId === item.id && selectedTreeVariants()\n )}\n onClick={() => {\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n >\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"mr-2 h-4 w-4 shrink-0 rounded-sm border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {isIndeterminate ? (\n <Minus className=\"h-3 w-3\" />\n ) : (\n <Check className=\"h-3 w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"text-sm truncate\">{item.name}</span>\n </div>\n )}\n <TreeActions\n isSelected={selectedItemId === item.id}\n className={cn(expandOnArrowClick && \"right-1\")}\n >\n {item.actions}\n </TreeActions>\n </AccordionPrimitive.Header>\n </div>\n <AccordionContent\n className={cn(\n \"ml-4 pl-1\",\n treeLine === true && \"border-l\",\n treeLine === \"full\" && \"pl-2 border-l ml-4\"\n )}\n >\n <TreeItem\n data={item.children ? item.children : item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n />\n </AccordionContent>\n </AccordionPrimitive.Item>\n </AccordionPrimitive.Root>\n );\n};\n\nconst TreeLeaf = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n item: TreeDataItem;\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n isLastChild?: boolean;\n isRoot?: boolean;\n }\n>(\n (\n {\n className,\n item,\n selectedItemId,\n handleSelectChange,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showLeafIcon = true,\n treeLine = false,\n isLastChild,\n isRoot,\n ...props\n },\n ref\n ) => {\n const isChecked = checkedIds?.includes(item.id);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"ml-5 flex text-left items-center py-2 cursor-pointer before:right-1\",\n treeLine === \"full\" && \"ml-[1.25rem]\",\n treeVariants(),\n className,\n selectedItemId === item.id && selectedTreeVariants(),\n item.disabled && \"opacity-50 cursor-not-allowed pointer-events-none\"\n )}\n onClick={() => {\n if (item.disabled) return;\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n {...props}\n >\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"absolute left-[-1.05rem] w-px bg-border\",\n isLastChild ? \"h-1/2\" : \"h-full\",\n isRoot && \"hidden\"\n )}\n >\n <div className=\"absolute left-0 top-1/2 w-4 h-px bg-border\" />\n </div>\n )}\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={isChecked}\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n disabled={item.disabled}\n onClick={(e) => e.stopPropagation()}\n className=\"mr-2 h-4 w-4 shrink-0 rounded-sm border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showLeafIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n default={defaultLeafIcon}\n />\n )}\n <span className=\"grow text-sm truncate\">{item.name}</span>\n <TreeActions isSelected={selectedItemId === item.id && !item.disabled}>\n {item.actions}\n </TreeActions>\n </div>\n );\n }\n);\nTreeLeaf.displayName = \"TreeLeaf\";\n\nconst AccordionTrigger = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header>\n <AccordionPrimitive.Trigger asChild {...props}>\n <div\n ref={ref}\n className={cn(\n \"flex flex-1 w-full items-center py-2 transition-all first:[&[data-state=open]>svg]:first-of-type:rotate-90\",\n className\n )}\n >\n <ChevronRight className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n {children}\n </div>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"pb-1 pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nconst TreeIcon = ({\n item,\n isOpen,\n isSelected,\n default: defaultIcon,\n}: {\n item: TreeDataItem;\n isOpen?: boolean;\n isSelected?: boolean;\n default?: any;\n}) => {\n let Icon = defaultIcon;\n if (isSelected && item.selectedIcon) {\n Icon = item.selectedIcon;\n } else if (isOpen && item.openIcon) {\n Icon = item.openIcon;\n } else if (item.icon) {\n Icon = item.icon;\n }\n return Icon ? <Icon className=\"h-4 w-4 shrink-0 mr-2\" /> : <></>;\n};\n\nconst TreeActions = ({\n children,\n isSelected,\n className,\n}: {\n children: React.ReactNode;\n isSelected: boolean;\n className?: string;\n}) => {\n return (\n <div\n className={cn(\n isSelected ? \"block\" : \"hidden\",\n \"absolute right-3 group-hover:block\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst IndicatorIcon = ({\n variant,\n isOpen,\n customExpand: CustomExpand,\n customCollapse: CustomCollapse,\n}: {\n variant: \"arrow\" | \"plus-minus\";\n isOpen: boolean;\n customExpand?: React.ElementType;\n customCollapse?: React.ElementType;\n}) => {\n if (CustomExpand && !isOpen) {\n return (\n <CustomExpand className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n }\n if (CustomCollapse && isOpen) {\n return (\n <CustomCollapse className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n }\n\n if (variant === \"plus-minus\") {\n return isOpen ? (\n <SquareMinus className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n ) : (\n <SquarePlus className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n }\n\n return (\n <ChevronRight className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n};\n\nexport { TreeView, type TreeDataItem, type TreeViewProps };\n"],"names":["treeVariants","cva","selectedTreeVariants","DEFAULT_SELECTED_IDS","TreeView","React","data","initialSelectedItemId","onSelectChange","expandAll","defaultLeafIcon","defaultNodeIcon","className","multiSelect","selectedIds","onMultiSelectChange","showIcon","showLeafIcon","treeLine","expandOnArrowClick","indicatorVariant","customExpandIcon","customCollapseIcon","props","ref","selectedItemId","setSelectedItemId","checkedIds","setCheckedIds","handleSelectChange","item","handleCheckChange","checked","getAllChildIds","node","ids","child","newCheckedIds","id","uniqueIds","expandedItemIds","collectAllIds","nodes","findPath","targetId","items","cn","jsx","TreeItem","isRoot","index","TreeNode","TreeLeaf","isLastChild","value","setValue","prev","allDescendantIds","getAllDescendantIds","isChecked","isIndeterminate","checkedDescendants","AccordionPrimitive","s","jsxs","e","IndicatorIcon","Fragment","CheckboxPrimitive","Minus","Check","TreeIcon","TreeActions","AccordionContent","AccordionTrigger","children","ChevronRight","isOpen","isSelected","defaultIcon","Icon","variant","CustomExpand","CustomCollapse","SquareMinus","SquarePlus"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree-view.js","sources":["../../../../../../../../packages/ui/src/components/tree-view.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport {\n ChevronRight,\n Check,\n Minus,\n SquarePlus,\n SquareMinus,\n} from \"lucide-react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst treeVariants = cva(\n \"ds:group ds:hover:before:opacity-100 ds:before:absolute ds:before:rounded-lg ds:before:left-0 ds:pr-2 ds:before:w-full ds:before:opacity-0 ds:before:bg-accent/70 ds:before:h-[2rem] ds:before:-z-10\"\n);\n\nconst selectedTreeVariants = cva(\n \"ds:before:opacity-100 ds:before:bg-accent/70 ds:text-accent-foreground\"\n);\n\nconst DEFAULT_SELECTED_IDS: string[] = [];\n\ninterface TreeDataItem {\n id: string;\n name: string;\n icon?: any;\n selectedIcon?: any;\n openIcon?: any;\n children?: TreeDataItem[];\n actions?: React.ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n checked?: boolean;\n indeterminate?: boolean;\n}\n\ninterface TreeViewProps extends React.HTMLAttributes<HTMLDivElement> {\n data: TreeDataItem[] | TreeDataItem;\n initialSelectedItemId?: string;\n onSelectChange?: (item: TreeDataItem | undefined) => void;\n expandAll?: boolean;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n selectedIds?: string[];\n onMultiSelectChange?: (selectedIds: string[]) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n}\n\nconst TreeView = React.forwardRef<HTMLDivElement, TreeViewProps>(\n (\n {\n data,\n initialSelectedItemId,\n onSelectChange,\n expandAll,\n defaultLeafIcon,\n defaultNodeIcon,\n className,\n multiSelect = false,\n selectedIds = DEFAULT_SELECTED_IDS,\n onMultiSelectChange,\n showIcon = true,\n showLeafIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n ...props\n },\n ref\n ) => {\n const [selectedItemId, setSelectedItemId] = React.useState<\n string | undefined\n >(initialSelectedItemId);\n\n const [checkedIds, setCheckedIds] = React.useState<string[]>(selectedIds);\n\n React.useEffect(() => {\n setCheckedIds(selectedIds);\n }, [selectedIds]);\n\n const handleSelectChange = React.useCallback(\n (item: TreeDataItem | undefined) => {\n setSelectedItemId(item?.id);\n if (onSelectChange) {\n onSelectChange(item);\n }\n },\n [onSelectChange]\n );\n\n const handleCheckChange = React.useCallback(\n (item: TreeDataItem, checked: boolean) => {\n const getAllChildIds = (node: TreeDataItem): string[] => {\n const ids = [node.id];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(...getAllChildIds(child));\n });\n }\n return ids;\n };\n\n const newCheckedIds = checked\n ? [...checkedIds, ...getAllChildIds(item)]\n : checkedIds.filter((id) => !getAllChildIds(item).includes(id));\n\n const uniqueIds = Array.from(new Set(newCheckedIds));\n setCheckedIds(uniqueIds);\n if (onMultiSelectChange) {\n onMultiSelectChange(uniqueIds);\n }\n },\n [checkedIds, onMultiSelectChange]\n );\n\n const expandedItemIds = React.useMemo(() => {\n const ids: string[] = [];\n\n if (expandAll) {\n const collectAllIds = (nodes: TreeDataItem[] | TreeDataItem) => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n items.forEach((node) => {\n if (node.children && node.children.length > 0) {\n ids.push(node.id);\n collectAllIds(node.children);\n }\n });\n };\n collectAllIds(data);\n } else if (initialSelectedItemId) {\n const findPath = (\n nodes: TreeDataItem[] | TreeDataItem,\n targetId: string\n ): boolean => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n for (const node of items) {\n if (node.id === targetId) return true;\n if (node.children) {\n if (findPath(node.children, targetId)) {\n ids.push(node.id);\n return true;\n }\n }\n }\n return false;\n };\n findPath(data, initialSelectedItemId);\n }\n\n return ids;\n }, [data, expandAll, initialSelectedItemId]);\n\n return (\n <div className={cn(\"ds:overflow-hidden ds:relative ds:p-2\", className)}>\n <TreeItem\n data={data}\n ref={ref}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isRoot\n {...props}\n />\n </div>\n );\n }\n);\nTreeView.displayName = \"TreeView\";\n\ntype TreeItemProps = TreeViewProps & {\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isRoot?: boolean;\n};\n\nconst TreeItem = React.forwardRef<HTMLDivElement, TreeItemProps>(\n (\n {\n className,\n data,\n selectedItemId,\n handleSelectChange,\n expandedItemIds,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showIcon,\n showLeafIcon,\n treeLine,\n expandOnArrowClick,\n indicatorVariant,\n customExpandIcon,\n customCollapseIcon,\n isRoot,\n ...props\n },\n ref\n ) => {\n if (!(data instanceof Array)) {\n data = [data];\n }\n return (\n <div ref={ref} role=\"tree\" className={className} {...props}>\n <ul>\n {data.map((item, index) => (\n <li key={item.id} className=\"ds:relative\">\n {item.children ? (\n <TreeNode\n item={item}\n selectedItemId={selectedItemId}\n expandedItemIds={expandedItemIds}\n handleSelectChange={handleSelectChange}\n defaultNodeIcon={defaultNodeIcon}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n ) : (\n <TreeLeaf\n item={item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n);\nTreeItem.displayName = \"TreeItem\";\n\nconst TreeNode = ({\n item,\n handleSelectChange,\n expandedItemIds,\n selectedItemId,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds = [],\n handleCheckChange,\n showIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n isLastChild,\n isRoot,\n}: {\n item: TreeDataItem;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n selectedItemId?: string;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isLastChild?: boolean;\n isRoot?: boolean;\n}) => {\n const [value, setValue] = React.useState<string[]>(\n expandedItemIds.includes(item.id) ? [item.id] : []\n );\n\n React.useEffect(() => {\n if (expandedItemIds.includes(item.id)) {\n setValue((prev) => (prev.includes(item.id) ? prev : [...prev, item.id]));\n } else {\n setValue((prev) => prev.filter((id) => id !== item.id));\n }\n }, [expandedItemIds, item.id]);\n\n // Get all descendant IDs - memoized separately to avoid recalculation\n const allDescendantIds = React.useMemo(() => {\n const getAllDescendantIds = (node: TreeDataItem): string[] => {\n const ids: string[] = [];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(child.id);\n ids.push(...getAllDescendantIds(child));\n });\n }\n return ids;\n };\n return item.children ? getAllDescendantIds(item) : [];\n // We only want to recalculate when item structure changes, not on every render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.id]);\n\n // Check if this node is checked\n const isChecked = React.useMemo(() => {\n if (!checkedIds) return false;\n\n // If the node itself is in checkedIds\n if (checkedIds.includes(item.id)) return true;\n\n // If all descendants are checked, consider this node as checked\n if (!item.children || item.children.length === 0) return false;\n if (allDescendantIds.length === 0) return false;\n\n // All descendants must be checked\n return allDescendantIds.every((id) => checkedIds.includes(id));\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkedIds, item.id, allDescendantIds]);\n\n const isIndeterminate = React.useMemo(() => {\n if (!multiSelect || !item.children || !checkedIds) return false;\n if (isChecked) return false; // If node is fully checked, not indeterminate\n\n const checkedDescendants = allDescendantIds.filter((id) =>\n checkedIds.includes(id)\n );\n\n // Indeterminate if some (but not all) descendants are checked\n return (\n checkedDescendants.length > 0 &&\n checkedDescendants.length < allDescendantIds.length\n );\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [multiSelect, checkedIds, isChecked, allDescendantIds]);\n\n return (\n <AccordionPrimitive.Root\n type=\"multiple\"\n value={value}\n onValueChange={(s: string[]) => setValue(s)}\n >\n <AccordionPrimitive.Item value={item.id} className=\"ds:relative\">\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"ds:absolute ds:left-[-1.05rem] ds:w-px ds:bg-border\",\n isLastChild ? \"ds:h-5\" : \"ds:h-full\",\n isRoot && \"ds:hidden\"\n )}\n >\n <div className=\"ds:absolute ds:left-0 ds:top-5 ds:w-4 ds:h-px ds:bg-border\" />\n </div>\n )}\n <div\n className={cn(\n \"ds:flex ds:items-center ds:relative\",\n !expandOnArrowClick && treeVariants(),\n !expandOnArrowClick &&\n selectedItemId === item.id &&\n selectedTreeVariants()\n )}\n >\n <AccordionPrimitive.Header className=\"ds:flex ds:items-center ds:w-full\">\n <AccordionPrimitive.Trigger\n asChild\n onClick={(e) => {\n if (expandOnArrowClick) {\n e.stopPropagation();\n }\n }}\n >\n <div\n className={cn(\n \"ds:flex ds:items-center ds:p-2 ds:transition-all ds:gap-1\",\n indicatorVariant === \"arrow\" &&\n !customExpandIcon &&\n !customCollapseIcon &&\n \"ds:[&[data-state=open]>svg:first-of-type]:rotate-90\",\n expandOnArrowClick\n ? \"ds:hover:bg-accent/50 ds:rounded-sm ds:cursor-pointer\"\n : \"ds:flex-1 ds:cursor-pointer\"\n )}\n >\n <IndicatorIcon\n variant={indicatorVariant}\n isOpen={value.includes(item.id)}\n customExpand={customExpandIcon}\n customCollapse={customCollapseIcon}\n />\n {!expandOnArrowClick && (\n <>\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"ds:mr-2 ds:h-4 ds:w-4 ds:shrink-0 ds:rounded-sm ds:border ds:border-primary ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground ds:data-[state=indeterminate]:bg-primary ds:data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"ds:flex ds:items-center ds:justify-center ds:text-current\">\n {isIndeterminate ? (\n <Minus className=\"ds:h-3 ds:w-3\" />\n ) : (\n <Check className=\"ds:h-3 ds:w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"ds:text-sm ds:truncate\">{item.name}</span>\n </>\n )}\n </div>\n </AccordionPrimitive.Trigger>\n {expandOnArrowClick && (\n <div\n className={cn(\n \"ds:flex ds:items-center ds:flex-1 ds:py-2 ds:cursor-pointer\",\n treeVariants(),\n selectedItemId === item.id && selectedTreeVariants()\n )}\n onClick={() => {\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n >\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"ds:mr-2 ds:h-4 ds:w-4 ds:shrink-0 ds:rounded-sm ds:border ds:border-primary ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground ds:data-[state=indeterminate]:bg-primary ds:data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"ds:flex ds:items-center ds:justify-center ds:text-current\">\n {isIndeterminate ? (\n <Minus className=\"ds:h-3 ds:w-3\" />\n ) : (\n <Check className=\"ds:h-3 ds:w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"ds:text-sm ds:truncate\">{item.name}</span>\n </div>\n )}\n <TreeActions\n isSelected={selectedItemId === item.id}\n className={cn(expandOnArrowClick && \"ds:right-1\")}\n >\n {item.actions}\n </TreeActions>\n </AccordionPrimitive.Header>\n </div>\n <AccordionContent\n className={cn(\n \"ds:ml-4 ds:pl-1\",\n treeLine === true && \"ds:border-l\",\n treeLine === \"full\" && \"ds:pl-2 ds:border-l ds:ml-4\"\n )}\n >\n <TreeItem\n data={item.children ? item.children : item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n />\n </AccordionContent>\n </AccordionPrimitive.Item>\n </AccordionPrimitive.Root>\n );\n};\n\nconst TreeLeaf = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n item: TreeDataItem;\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n isLastChild?: boolean;\n isRoot?: boolean;\n }\n>(\n (\n {\n className,\n item,\n selectedItemId,\n handleSelectChange,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showLeafIcon = true,\n treeLine = false,\n isLastChild,\n isRoot,\n ...props\n },\n ref\n ) => {\n const isChecked = checkedIds?.includes(item.id);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"ds:ml-5 ds:flex ds:text-left ds:items-center ds:py-2 ds:cursor-pointer ds:before:right-1\",\n treeLine === \"full\" && \"ds:ml-[1.25rem]\",\n treeVariants(),\n className,\n selectedItemId === item.id && selectedTreeVariants(),\n item.disabled && \"ds:opacity-50 ds:cursor-not-allowed ds:pointer-events-none\"\n )}\n onClick={() => {\n if (item.disabled) return;\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n {...props}\n >\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"ds:absolute ds:left-[-1.05rem] ds:w-px ds:bg-border\",\n isLastChild ? \"ds:h-1/2\" : \"ds:h-full\",\n isRoot && \"ds:hidden\"\n )}\n >\n <div className=\"ds:absolute ds:left-0 ds:top-1/2 ds:w-4 ds:h-px ds:bg-border\" />\n </div>\n )}\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={isChecked}\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n disabled={item.disabled}\n onClick={(e) => e.stopPropagation()}\n className=\"ds:mr-2 ds:h-4 ds:w-4 ds:shrink-0 ds:rounded-sm ds:border ds:border-primary ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"ds:flex ds:items-center ds:justify-center ds:text-current\">\n <Check className=\"ds:h-3 ds:w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showLeafIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n default={defaultLeafIcon}\n />\n )}\n <span className=\"ds:grow ds:text-sm ds:truncate\">{item.name}</span>\n <TreeActions isSelected={selectedItemId === item.id && !item.disabled}>\n {item.actions}\n </TreeActions>\n </div>\n );\n }\n);\nTreeLeaf.displayName = \"TreeLeaf\";\n\nconst AccordionTrigger = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header>\n <AccordionPrimitive.Trigger asChild {...props}>\n <div\n ref={ref}\n className={cn(\n \"ds:flex ds:flex-1 ds:w-full ds:items-center ds:py-2 ds:transition-all ds:first:[&[data-state=open]>svg]:first-of-type:rotate-90\",\n className\n )}\n >\n <ChevronRight className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n {children}\n </div>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"ds:overflow-hidden ds:text-sm ds:transition-all ds:data-[state=closed]:animate-accordion-up ds:data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"ds:pb-1 ds:pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nconst TreeIcon = ({\n item,\n isOpen,\n isSelected,\n default: defaultIcon,\n}: {\n item: TreeDataItem;\n isOpen?: boolean;\n isSelected?: boolean;\n default?: any;\n}) => {\n let Icon = defaultIcon;\n if (isSelected && item.selectedIcon) {\n Icon = item.selectedIcon;\n } else if (isOpen && item.openIcon) {\n Icon = item.openIcon;\n } else if (item.icon) {\n Icon = item.icon;\n }\n return Icon ? <Icon className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:mr-2\" /> : <></>;\n};\n\nconst TreeActions = ({\n children,\n isSelected,\n className,\n}: {\n children: React.ReactNode;\n isSelected: boolean;\n className?: string;\n}) => {\n return (\n <div\n className={cn(\n isSelected ? \"ds:block\" : \"ds:hidden\",\n \"ds:absolute ds:right-3 ds:group-hover:block\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst IndicatorIcon = ({\n variant,\n isOpen,\n customExpand: CustomExpand,\n customCollapse: CustomCollapse,\n}: {\n variant: \"arrow\" | \"plus-minus\";\n isOpen: boolean;\n customExpand?: React.ElementType;\n customCollapse?: React.ElementType;\n}) => {\n if (CustomExpand && !isOpen) {\n return (\n <CustomExpand className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n }\n if (CustomCollapse && isOpen) {\n return (\n <CustomCollapse className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n }\n\n if (variant === \"plus-minus\") {\n return isOpen ? (\n <SquareMinus className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n ) : (\n <SquarePlus className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n }\n\n return (\n <ChevronRight className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n};\n\nexport { TreeView, type TreeDataItem, type TreeViewProps };\n"],"names":["treeVariants","cva","selectedTreeVariants","DEFAULT_SELECTED_IDS","TreeView","React","data","initialSelectedItemId","onSelectChange","expandAll","defaultLeafIcon","defaultNodeIcon","className","multiSelect","selectedIds","onMultiSelectChange","showIcon","showLeafIcon","treeLine","expandOnArrowClick","indicatorVariant","customExpandIcon","customCollapseIcon","props","ref","selectedItemId","setSelectedItemId","checkedIds","setCheckedIds","handleSelectChange","item","handleCheckChange","checked","getAllChildIds","node","ids","child","newCheckedIds","id","uniqueIds","expandedItemIds","collectAllIds","nodes","findPath","targetId","items","cn","jsx","TreeItem","isRoot","index","TreeNode","TreeLeaf","isLastChild","value","setValue","prev","allDescendantIds","getAllDescendantIds","isChecked","isIndeterminate","checkedDescendants","AccordionPrimitive","s","jsxs","e","IndicatorIcon","Fragment","CheckboxPrimitive","Minus","Check","TreeIcon","TreeActions","AccordionContent","AccordionTrigger","children","ChevronRight","isOpen","isSelected","defaultIcon","Icon","variant","CustomExpand","CustomCollapse","SquareMinus","SquarePlus"],"mappings":"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"}
|