@sth87/shadcn-design-system 0.0.36 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI_CONTEXT.md +212 -214
- package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/cjs/components/Badge/Badge.cjs +1 -1
- package/dist/cjs/components/Badge/Badge.cjs.map +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/cjs/components/Command/Command.cjs +1 -1
- package/dist/cjs/components/Command/Command.cjs.map +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/cjs/components/FloatLabel.cjs +1 -1
- package/dist/cjs/components/FloatLabel.cjs.map +1 -1
- package/dist/cjs/components/Glass/Glass.cjs +1 -1
- package/dist/cjs/components/Glass/Glass.cjs.map +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs.map +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs.map +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs.map +1 -1
- package/dist/cjs/components/Radio/Radio.cjs +1 -1
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
- package/dist/cjs/components/Rate/Rate.cjs +1 -1
- package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs.map +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/cjs/components/Select/Select.cjs +1 -1
- package/dist/cjs/components/Select/Select.cjs.map +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs +2 -2
- package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table.cjs +1 -1
- package/dist/cjs/components/Table/data-table.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Tabs/classes.cjs +1 -1
- package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/cjs/components/TimeGridView.cjs +1 -1
- package/dist/cjs/components/TimeGridView.cjs.map +1 -1
- package/dist/cjs/components/Toast/Toast.cjs +1 -1
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/Tour/Tour.cjs +1 -1
- package/dist/cjs/components/Tour/Tour.cjs.map +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs.map +1 -1
- package/dist/cjs/components/Upload/Upload.cjs +3 -3
- package/dist/cjs/components/Upload/Upload.cjs.map +1 -1
- package/dist/cjs/components/WheelColumn.cjs +1 -1
- package/dist/cjs/components/WheelColumn.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +2 -2
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +1 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +1 -0
- package/dist/cjs/packages/ui/src/components/accordion.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/accordion.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +1 -1
- package/dist/cjs/styles/index.css +1 -1
- package/dist/cjs/utils/animations.cjs +1 -1
- package/dist/cjs/utils/animations.cjs.map +1 -1
- package/dist/cjs/utils/css.cjs +1 -1
- package/dist/cjs/utils/css.cjs.map +1 -1
- package/dist/cjs/utils/parsers.cjs +1 -1
- package/dist/cjs/utils/parsers.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +60 -60
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.js +40 -40
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Badge/Badge.js +1 -1
- package/dist/esm/components/Badge/Badge.js.map +1 -1
- package/dist/esm/components/Breadcrumb/Breadcrumb.js +36 -36
- package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/esm/components/Button/Button.js +9 -9
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +4 -4
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Carousel/Carousel.js +165 -165
- package/dist/esm/components/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +26 -26
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Collapsible/Collapsible.js +43 -43
- package/dist/esm/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/Command/Command.js +28 -28
- package/dist/esm/components/Command/Command.js.map +1 -1
- package/dist/esm/components/ContextMenu/ContextMenu.js +11 -11
- package/dist/esm/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/esm/components/Cropper/Cropper.js +132 -132
- package/dist/esm/components/Cropper/Cropper.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +75 -75
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/RangePicker.js +136 -136
- package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/TimePicker.js +150 -150
- package/dist/esm/components/DatePicker/TimePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +114 -114
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +13 -13
- package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/esm/components/FloatLabel.js +44 -44
- package/dist/esm/components/FloatLabel.js.map +1 -1
- package/dist/esm/components/Glass/Glass.js +15 -15
- package/dist/esm/components/Glass/Glass.js.map +1 -1
- package/dist/esm/components/ImageViewer/ImageViewer.js +53 -53
- package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
- package/dist/esm/components/Input/Input.js +104 -104
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/InputOTP/InputOTP.js +16 -16
- package/dist/esm/components/InputOTP/InputOTP.js.map +1 -1
- package/dist/esm/components/Interactive/CursorFollow.js +49 -49
- package/dist/esm/components/Interactive/CursorFollow.js.map +1 -1
- package/dist/esm/components/Marquee/Marquee.js +130 -130
- package/dist/esm/components/Marquee/Marquee.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +68 -68
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/QrCode/QrCode.js +37 -37
- package/dist/esm/components/QrCode/QrCode.js.map +1 -1
- package/dist/esm/components/Radio/Radio.js +16 -16
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Rate/Rate.js +62 -62
- package/dist/esm/components/Rate/Rate.js.map +1 -1
- package/dist/esm/components/Resizable/Resizable.js +6 -6
- package/dist/esm/components/Resizable/Resizable.js.map +1 -1
- package/dist/esm/components/ScrollArea/ScrollArea.js +10 -10
- package/dist/esm/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/esm/components/Select/Select.js +64 -64
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Sheet/Sheet.js +21 -21
- package/dist/esm/components/Sheet/Sheet.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +54 -54
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Stepper/Stepper.js +198 -198
- package/dist/esm/components/Stepper/Stepper.js.map +1 -1
- package/dist/esm/components/Stepper/StepperWrapper.js +15 -15
- package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +38 -38
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +37 -37
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +25 -25
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +64 -64
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
- package/dist/esm/components/Table/data-table-column-header.js +18 -18
- package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
- package/dist/esm/components/Table/data-table-pagination.js +21 -21
- package/dist/esm/components/Table/data-table-pagination.js.map +1 -1
- package/dist/esm/components/Table/data-table.js +18 -18
- package/dist/esm/components/Table/data-table.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +242 -242
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/classes.js +51 -51
- package/dist/esm/components/Tabs/classes.js.map +1 -1
- package/dist/esm/components/Textarea/Textarea.js +49 -49
- package/dist/esm/components/Textarea/Textarea.js.map +1 -1
- package/dist/esm/components/TimeGridView.js +12 -12
- package/dist/esm/components/TimeGridView.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +45 -45
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +19 -19
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tour/Tour.js +11 -11
- package/dist/esm/components/Tour/Tour.js.map +1 -1
- package/dist/esm/components/Tour/TourWrapper.js +15 -15
- package/dist/esm/components/Tour/TourWrapper.js.map +1 -1
- package/dist/esm/components/Upload/Upload.js +405 -405
- package/dist/esm/components/Upload/Upload.js.map +1 -1
- package/dist/esm/components/WheelColumn.js +47 -47
- package/dist/esm/components/WheelColumn.js.map +1 -1
- package/dist/esm/lib/TextAnimation/BlurText.js +18 -18
- package/dist/esm/lib/TextAnimation/BlurText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/CircularText.js +7 -7
- package/dist/esm/lib/TextAnimation/CircularText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/FlipWords.js +21 -21
- package/dist/esm/lib/TextAnimation/FlipWords.js.map +1 -1
- package/dist/esm/lib/TextAnimation/GradientText.js +4 -4
- package/dist/esm/lib/TextAnimation/GradientText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RollingText.js +24 -24
- package/dist/esm/lib/TextAnimation/RollingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RotatingText.js +6 -6
- package/dist/esm/lib/TextAnimation/RotatingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/ShimmeringText.js +9 -9
- package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +14 -14
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js +9 -9
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js +3 -3
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TypingText.js +17 -17
- package/dist/esm/lib/TextAnimation/TypingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/WritingText.js +10 -10
- package/dist/esm/lib/TextAnimation/WritingText.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +1 -0
- package/dist/esm/packages/ui/src/components/accordion.js +31 -31
- package/dist/esm/packages/ui/src/components/accordion.js.map +1 -1
- package/dist/esm/packages/ui/src/components/alert-dialog.js +33 -33
- package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/avatar.js +20 -20
- package/dist/esm/packages/ui/src/components/avatar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/badge.js +53 -53
- package/dist/esm/packages/ui/src/components/badge.js.map +1 -1
- package/dist/esm/packages/ui/src/components/breadcrumb.js +20 -20
- package/dist/esm/packages/ui/src/components/breadcrumb.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button-group.js +31 -31
- package/dist/esm/packages/ui/src/components/button-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button.js +90 -90
- package/dist/esm/packages/ui/src/components/button.js.map +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js +94 -94
- package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/checkbox.js +47 -47
- package/dist/esm/packages/ui/src/components/checkbox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/combobox.js +64 -64
- package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/command.js +77 -77
- package/dist/esm/packages/ui/src/components/command.js.map +1 -1
- package/dist/esm/packages/ui/src/components/context-menu.js +76 -76
- package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dialog.js +54 -54
- package/dist/esm/packages/ui/src/components/dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/drawer.js +39 -39
- package/dist/esm/packages/ui/src/components/drawer.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dropdown-menu.js +109 -109
- package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input-otp.js +30 -30
- package/dist/esm/packages/ui/src/components/input-otp.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input.js +19 -19
- package/dist/esm/packages/ui/src/components/input.js.map +1 -1
- package/dist/esm/packages/ui/src/components/label.js +9 -9
- package/dist/esm/packages/ui/src/components/label.js.map +1 -1
- package/dist/esm/packages/ui/src/components/pagination.js +26 -26
- package/dist/esm/packages/ui/src/components/pagination.js.map +1 -1
- package/dist/esm/packages/ui/src/components/popover.js +13 -13
- package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
- package/dist/esm/packages/ui/src/components/radio-group.js +45 -45
- package/dist/esm/packages/ui/src/components/radio-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/resizable.js +18 -18
- package/dist/esm/packages/ui/src/components/resizable.js.map +1 -1
- package/dist/esm/packages/ui/src/components/scroll-area.js +31 -31
- package/dist/esm/packages/ui/src/components/scroll-area.js.map +1 -1
- package/dist/esm/packages/ui/src/components/select.js +119 -119
- package/dist/esm/packages/ui/src/components/select.js.map +1 -1
- package/dist/esm/packages/ui/src/components/separator.js +86 -86
- package/dist/esm/packages/ui/src/components/separator.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sheet.js +50 -50
- package/dist/esm/packages/ui/src/components/sheet.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sidebar.js +198 -198
- package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/skeleton.js +3 -3
- package/dist/esm/packages/ui/src/components/skeleton.js.map +1 -1
- package/dist/esm/packages/ui/src/components/switch.js +57 -57
- package/dist/esm/packages/ui/src/components/switch.js.map +1 -1
- package/dist/esm/packages/ui/src/components/table.js +17 -17
- package/dist/esm/packages/ui/src/components/table.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tabs.js +33 -33
- package/dist/esm/packages/ui/src/components/tabs.js.map +1 -1
- package/dist/esm/packages/ui/src/components/textarea.js +17 -17
- package/dist/esm/packages/ui/src/components/textarea.js.map +1 -1
- package/dist/esm/packages/ui/src/components/toggle.js +36 -36
- package/dist/esm/packages/ui/src/components/toggle.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tooltip.js +20 -20
- package/dist/esm/packages/ui/src/components/tooltip.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tree-view.js +218 -218
- package/dist/esm/packages/ui/src/components/tree-view.js.map +1 -1
- package/dist/esm/styles/index.css +1 -1
- package/dist/esm/utils/animations.js +55 -55
- package/dist/esm/utils/animations.js.map +1 -1
- package/dist/esm/utils/css.js +7 -7
- package/dist/esm/utils/css.js.map +1 -1
- package/dist/esm/utils/parsers.js +1 -1
- package/dist/types/components/DatePicker/RangePicker.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TypingText.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +0 -1
- /package/dist/cjs/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.cjs +0 -0
- /package/dist/esm/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-view.cjs","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":"olBAeMA,EAAeC,EAAAA,IACnB,qKACF,EAEMC,EAAuBD,EAAAA,IAC3B,+DACF,EAEME,EAAiC,CAAA,EAmCjCC,EAAWC,EAAM,WACrB,CACE,CACE,KAAAC,EACA,sBAAAC,EACA,eAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,UAAAC,EACA,YAAAC,EAAc,GACd,YAAAC,EAAcX,EACd,oBAAAY,EACA,SAAAC,EAAW,GACX,aAAAC,EAAe,GACf,SAAAC,EAAW,GACX,mBAAAC,EAAqB,GACrB,iBAAAC,EAAmB,QACnB,iBAAAC,EACA,mBAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACC,EAAgBC,CAAiB,EAAIrB,EAAM,SAEhDE,CAAqB,EAEjB,CAACoB,EAAYC,CAAa,EAAIvB,EAAM,SAAmBS,CAAW,EAExET,EAAM,UAAU,IAAM,CACpBuB,EAAcd,CAAW,CAC3B,EAAG,CAACA,CAAW,CAAC,EAEhB,MAAMe,EAAqBxB,EAAM,YAC9ByB,GAAmC,CAClCJ,EAAkBI,GAAM,EAAE,EACtBtB,GACFA,EAAesB,CAAI,CAEvB,EACA,CAACtB,CAAc,CAAA,EAGXuB,EAAoB1B,EAAM,YAC9B,CAACyB,EAAoBE,IAAqB,CACxC,MAAMC,EAAkBC,GAAiC,CACvD,MAAMC,EAAM,CAACD,EAAK,EAAE,EACpB,OAAIA,EAAK,UACPA,EAAK,SAAS,QAASE,GAAU,CAC/BD,EAAI,KAAK,GAAGF,EAAeG,CAAK,CAAC,CACnC,CAAC,EAEID,CACT,EAEME,EAAgBL,EAClB,CAAC,GAAGL,EAAY,GAAGM,EAAeH,CAAI,CAAC,EACvCH,EAAW,OAAQW,GAAO,CAACL,EAAeH,CAAI,EAAE,SAASQ,CAAE,CAAC,EAE1DC,EAAY,MAAM,KAAK,IAAI,IAAIF,CAAa,CAAC,EACnDT,EAAcW,CAAS,EACnBxB,GACFA,EAAoBwB,CAAS,CAEjC,EACA,CAACZ,EAAYZ,CAAmB,CAAA,EAG5ByB,EAAkBnC,EAAM,QAAQ,IAAM,CAC1C,MAAM8B,EAAgB,CAAA,EAEtB,GAAI1B,EAAW,CACb,MAAMgC,EAAiBC,GAAyC,EAChD,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,GAC7C,QAASR,GAAS,CAClBA,EAAK,UAAYA,EAAK,SAAS,OAAS,IAC1CC,EAAI,KAAKD,EAAK,EAAE,EAChBO,EAAcP,EAAK,QAAQ,EAE/B,CAAC,CACH,EACAO,EAAcnC,CAAI,CACpB,SAAWC,EAAuB,CAChC,MAAMoC,EAAW,CACfD,EACAE,IACY,CACZ,MAAMC,EAAQ,MAAM,QAAQH,CAAK,EAAIA,EAAQ,CAACA,CAAK,EACnD,UAAWR,KAAQW,EAAO,CACxB,GAAIX,EAAK,KAAOU,EAAU,MAAO,GACjC,GAAIV,EAAK,UACHS,EAAST,EAAK,SAAUU,CAAQ,EAClC,OAAAT,EAAI,KAAKD,EAAK,EAAE,EACT,EAGb,CACA,MAAO,EACT,EACAS,EAASrC,EAAMC,CAAqB,CACtC,CAEA,OAAO4B,CACT,EAAG,CAAC7B,EAAMG,EAAWF,CAAqB,CAAC,EAE3C,aACG,MAAA,CAAI,UAAWuC,EAAAA,GAAG,+BAAgClC,CAAS,EAC1D,SAAAmC,EAAAA,IAACC,EAAA,CACC,KAAA1C,EACA,IAAAkB,EACA,eAAAC,EACA,mBAAAI,EACA,gBAAAW,EACA,gBAAA9B,EACA,gBAAAC,EACA,YAAAE,EACA,WAAAc,EACA,kBAAAI,EACA,SAAAf,EACA,aAAAC,EACA,SAAAC,EACA,mBAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,OAAM,GACL,GAAGC,CAAA,CAAA,EAER,CAEJ,CACF,EACAnB,EAAS,YAAc,WAoBvB,MAAM4C,EAAW3C,EAAM,WACrB,CACE,CACE,UAAAO,EACA,KAAAN,EACA,eAAAmB,EACA,mBAAAI,EACA,gBAAAW,EACA,gBAAA7B,EACA,gBAAAD,EACA,YAAAG,EACA,WAAAc,EACA,kBAAAI,EACA,SAAAf,EACA,aAAAC,EACA,SAAAC,EACA,mBAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,OAAA2B,EACA,GAAG1B,CAAA,EAELC,KAEMlB,aAAgB,QACpBA,EAAO,CAACA,CAAI,GAGZyC,MAAC,OAAI,IAAAvB,EAAU,KAAK,OAAO,UAAAZ,EAAuB,GAAGW,EACnD,SAAAwB,EAAAA,IAAC,KAAA,CACE,WAAK,IAAI,CAACjB,EAAMoB,IACfH,EAAAA,IAAC,MAAiB,UAAU,WACzB,WAAK,SACJA,EAAAA,IAACI,EAAA,CACC,KAAArB,EACA,eAAAL,EACA,gBAAAe,EACA,mBAAAX,EACA,gBAAAlB,EACA,gBAAAD,EACA,YAAAG,EACA,WAAAc,EACA,kBAAAI,EACA,SAAAf,EACA,SAAAE,EACA,mBAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,YAAa4B,IAAW5C,EAAwB,OAAS,EACzD,OAAA2C,CAAA,CAAA,EAGFF,EAAAA,IAACK,EAAA,CACC,KAAAtB,EACA,eAAAL,EACA,mBAAAI,EACA,gBAAAnB,EACA,YAAAG,EACA,WAAAc,EACA,kBAAAI,EACA,aAAAd,EACA,SAAAC,EACA,YAAagC,IAAW5C,EAAwB,OAAS,EACzD,OAAA2C,CAAA,CAAA,CACF,EAlCKnB,EAAK,EAoCd,CACD,EACH,CAAA,CACF,EAGN,EACAkB,EAAS,YAAc,WAEvB,MAAMG,EAAW,CAAC,CAChB,KAAArB,EACA,mBAAAD,EACA,gBAAAW,EACA,eAAAf,EACA,gBAAAd,EACA,gBAAAD,EACA,YAAAG,EACA,WAAAc,EAAa,CAAA,EACb,kBAAAI,EACA,SAAAf,EAAW,GACX,SAAAE,EAAW,GACX,mBAAAC,EAAqB,GACrB,iBAAAC,EAAmB,QACnB,iBAAAC,EACA,mBAAAC,EACA,YAAA+B,EACA,OAAAJ,CACF,IAkBM,CACJ,KAAM,CAACK,EAAOC,CAAQ,EAAIlD,EAAM,SAC9BmC,EAAgB,SAASV,EAAK,EAAE,EAAI,CAACA,EAAK,EAAE,EAAI,CAAA,CAAC,EAGnDzB,EAAM,UAAU,IAAM,CAChBmC,EAAgB,SAASV,EAAK,EAAE,EAClCyB,EAAUC,GAAUA,EAAK,SAAS1B,EAAK,EAAE,EAAI0B,EAAO,CAAC,GAAGA,EAAM1B,EAAK,EAAE,CAAE,EAEvEyB,EAAUC,GAASA,EAAK,OAAQlB,GAAOA,IAAOR,EAAK,EAAE,CAAC,CAE1D,EAAG,CAACU,EAAiBV,EAAK,EAAE,CAAC,EAG7B,MAAM2B,EAAmBpD,EAAM,QAAQ,IAAM,CAC3C,MAAMqD,EAAuBxB,GAAiC,CAC5D,MAAMC,EAAgB,CAAA,EACtB,OAAID,EAAK,UACPA,EAAK,SAAS,QAASE,GAAU,CAC/BD,EAAI,KAAKC,EAAM,EAAE,EACjBD,EAAI,KAAK,GAAGuB,EAAoBtB,CAAK,CAAC,CACxC,CAAC,EAEID,CACT,EACA,OAAOL,EAAK,SAAW4B,EAAoB5B,CAAI,EAAI,CAAA,CAGrD,EAAG,CAACA,EAAK,EAAE,CAAC,EAGN6B,EAAYtD,EAAM,QAAQ,IACzBsB,EAGDA,EAAW,SAASG,EAAK,EAAE,EAAU,GAGrC,CAACA,EAAK,UAAYA,EAAK,SAAS,SAAW,GAC3C2B,EAAiB,SAAW,EAAU,GAGnCA,EAAiB,MAAOnB,GAAOX,EAAW,SAASW,CAAE,CAAC,EAVrC,GAavB,CAACX,EAAYG,EAAK,GAAI2B,CAAgB,CAAC,EAEpCG,EAAkBvD,EAAM,QAAQ,IAAM,CAE1C,GADI,CAACQ,GAAe,CAACiB,EAAK,UAAY,CAACH,GACnCgC,EAAW,MAAO,GAEtB,MAAME,EAAqBJ,EAAiB,OAAQnB,GAClDX,EAAW,SAASW,CAAE,CAAA,EAIxB,OACEuB,EAAmB,OAAS,GAC5BA,EAAmB,OAASJ,EAAiB,MAIjD,EAAG,CAAC5C,EAAac,EAAYgC,EAAWF,CAAgB,CAAC,EAEzD,OACEV,EAAAA,IAACe,EAAmB,KAAnB,CACC,KAAK,WACL,MAAAR,EACA,cAAgBS,GAAgBR,EAASQ,CAAC,EAE1C,SAAAC,EAAAA,KAACF,EAAmB,KAAnB,CAAwB,MAAOhC,EAAK,GAAI,UAAU,WAChD,SAAA,CAAAZ,IAAa,QACZ6B,EAAAA,IAAC,MAAA,CACC,UAAWD,EAAAA,GACT,0CACAO,EAAc,MAAQ,SACtBJ,GAAU,QAAA,EAGZ,SAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,0CAAA,CAA2C,CAAA,CAAA,EAG9DA,EAAAA,IAAC,MAAA,CACC,UAAWD,EAAAA,GACT,6BACA,CAAC3B,GAAsBnB,EAAA,EACvB,CAACmB,GACCM,IAAmBK,EAAK,IACxB5B,EAAA,CAAqB,EAGzB,SAAA8D,EAAAA,KAACF,EAAmB,OAAnB,CAA0B,UAAU,2BACnC,SAAA,CAAAf,EAAAA,IAACe,EAAmB,QAAnB,CACC,QAAO,GACP,QAAUG,GAAM,CACV9C,GACF8C,EAAE,gBAAA,CAEN,EAEA,SAAAD,EAAAA,KAAC,MAAA,CACC,UAAWlB,EAAAA,GACT,6CACA1B,IAAqB,SACnB,CAACC,GACD,CAACC,GACD,mDACFH,EACI,+CACA,uBAAA,EAGN,SAAA,CAAA4B,EAAAA,IAACmB,GAAA,CACC,QAAS9C,EACT,OAAQkC,EAAM,SAASxB,EAAK,EAAE,EAC9B,aAAcT,EACd,eAAgBC,CAAA,CAAA,EAEjB,CAACH,GACA6C,EAAAA,KAAAG,EAAAA,SAAA,CACG,SAAA,CAAAtD,GACCkC,EAAAA,IAACqB,EAAkB,KAAlB,CACC,QACET,EACI,GACAC,EACE,gBACA,GAER,gBAAkB5B,GAAY,CAC5BD,IAAoBD,EAAME,IAAY,EAAI,CAC5C,EACA,QAAUiC,GAAMA,EAAE,gBAAA,EAClB,UAAU,+NAEV,eAACG,EAAkB,UAAlB,CAA4B,UAAU,gDACpC,SAAAR,EACCb,EAAAA,IAACsB,EAAAA,MAAA,CAAM,UAAU,UAAU,EAE3BtB,EAAAA,IAACuB,EAAAA,MAAA,CAAM,UAAU,UAAU,CAAA,CAE/B,CAAA,CAAA,EAGHtD,GACC+B,EAAAA,IAACwB,EAAA,CACC,KAAAzC,EACA,WAAYL,IAAmBK,EAAK,GACpC,OAAQwB,EAAM,SAASxB,EAAK,EAAE,EAC9B,QAASnB,CAAA,CAAA,EAGboC,EAAAA,IAAC,OAAA,CAAK,UAAU,mBAAoB,WAAK,IAAA,CAAK,CAAA,CAAA,CAChD,CAAA,CAAA,CAAA,CAEJ,CAAA,EAED5B,GACC6C,EAAAA,KAAC,MAAA,CACC,UAAWlB,EAAAA,GACT,+CACA9C,EAAA,EACAyB,IAAmBK,EAAK,IAAM5B,EAAA,CAAqB,EAErD,QAAS,IAAM,CACRW,IACHgB,EAAmBC,CAAI,EACvBA,EAAK,UAAA,EAET,EAEC,SAAA,CAAAjB,GACCkC,EAAAA,IAACqB,EAAkB,KAAlB,CACC,QACET,EACI,GACAC,EACE,gBACA,GAER,gBAAkB5B,GAAY,CAC5BD,IAAoBD,EAAME,IAAY,EAAI,CAC5C,EACA,QAAUiC,GAAMA,EAAE,gBAAA,EAClB,UAAU,+NAEV,eAACG,EAAkB,UAAlB,CAA4B,UAAU,gDACpC,SAAAR,EACCb,EAAAA,IAACsB,EAAAA,MAAA,CAAM,UAAU,UAAU,EAE3BtB,EAAAA,IAACuB,EAAAA,MAAA,CAAM,UAAU,UAAU,CAAA,CAE/B,CAAA,CAAA,EAGHtD,GACC+B,EAAAA,IAACwB,EAAA,CACC,KAAAzC,EACA,WAAYL,IAAmBK,EAAK,GACpC,OAAQwB,EAAM,SAASxB,EAAK,EAAE,EAC9B,QAASnB,CAAA,CAAA,EAGboC,EAAAA,IAAC,OAAA,CAAK,UAAU,mBAAoB,WAAK,IAAA,CAAK,CAAA,CAAA,CAAA,EAGlDA,EAAAA,IAACyB,EAAA,CACC,WAAY/C,IAAmBK,EAAK,GACpC,UAAWgB,EAAAA,GAAG3B,GAAsB,SAAS,EAE5C,SAAAW,EAAK,OAAA,CAAA,CACR,CAAA,CACF,CAAA,CAAA,EAEFiB,EAAAA,IAAC0B,EAAA,CACC,UAAW3B,EAAAA,GACT,YACA5B,IAAa,IAAQ,WACrBA,IAAa,QAAU,oBAAA,EAGzB,SAAA6B,EAAAA,IAACC,EAAA,CACC,KAAMlB,EAAK,SAAWA,EAAK,SAAWA,EACtC,eAAAL,EACA,mBAAAI,EACA,gBAAAW,EACA,gBAAA9B,EACA,gBAAAC,EACA,YAAAE,EACA,WAAAc,EACA,kBAAAI,EACA,SAAAf,EACA,aAAcA,EACd,SAAAE,EACA,mBAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,mBAAAC,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAGN,EAEM8B,EAAW/C,EAAM,WAgBrB,CACE,CACE,UAAAO,EACA,KAAAkB,EACA,eAAAL,EACA,mBAAAI,EACA,gBAAAnB,EACA,YAAAG,EACA,WAAAc,EACA,kBAAAI,EACA,aAAAd,EAAe,GACf,SAAAC,EAAW,GACX,YAAAmC,EACA,OAAAJ,EACA,GAAG1B,CAAA,EAELC,IACG,CACH,MAAMmC,EAAYhC,GAAY,SAASG,EAAK,EAAE,EAE9C,OACEkC,EAAAA,KAAC,MAAA,CACC,IAAAxC,EACA,UAAWsB,EAAAA,GACT,sEACA5B,IAAa,QAAU,eACvBlB,EAAA,EACAY,EACAa,IAAmBK,EAAK,IAAM5B,EAAA,EAC9B4B,EAAK,UAAY,mDAAA,EAEnB,QAAS,IAAM,CACTA,EAAK,UACJjB,IACHgB,EAAmBC,CAAI,EACvBA,EAAK,UAAA,EAET,EACC,GAAGP,EAEH,SAAA,CAAAL,IAAa,QACZ6B,EAAAA,IAAC,MAAA,CACC,UAAWD,EAAAA,GACT,0CACAO,EAAc,QAAU,SACxBJ,GAAU,QAAA,EAGZ,SAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,4CAAA,CAA6C,CAAA,CAAA,EAG/DlC,GACCkC,EAAAA,IAACqB,EAAkB,KAAlB,CACC,QAAST,EACT,gBAAkB3B,GAAY,CAC5BD,IAAoBD,EAAME,IAAY,EAAI,CAC5C,EACA,SAAUF,EAAK,SACf,QAAUmC,GAAMA,EAAE,gBAAA,EAClB,UAAU,sIAEV,SAAAlB,EAAAA,IAACqB,EAAkB,UAAlB,CAA4B,UAAU,gDACrC,SAAArB,EAAAA,IAACuB,EAAAA,MAAA,CAAM,UAAU,SAAA,CAAU,CAAA,CAC7B,CAAA,CAAA,EAGHrD,GACC8B,EAAAA,IAACwB,EAAA,CACC,KAAAzC,EACA,WAAYL,IAAmBK,EAAK,GACpC,QAASpB,CAAA,CAAA,EAGbqC,EAAAA,IAAC,OAAA,CAAK,UAAU,wBAAyB,WAAK,KAAK,EACnDA,EAAAA,IAACyB,EAAA,CAAY,WAAY/C,IAAmBK,EAAK,IAAM,CAACA,EAAK,SAC1D,SAAAA,EAAK,OAAA,CACR,CAAA,CAAA,CAAA,CAGN,CACF,EACAsB,EAAS,YAAc,WAEvB,MAAMsB,GAAmBrE,EAAM,WAG7B,CAAC,CAAE,UAAAO,EAAW,SAAA+D,EAAU,GAAGpD,CAAA,EAASC,UACnCsC,EAAmB,OAAnB,CACC,SAAAf,MAACe,EAAmB,QAAnB,CAA2B,QAAO,GAAE,GAAGvC,EACtC,SAAAyC,EAAAA,KAAC,MAAA,CACC,IAAAxC,EACA,UAAWsB,EAAAA,GACT,6GACAlC,CAAA,EAGF,SAAA,CAAAmC,EAAAA,IAAC6B,EAAAA,aAAA,CAAa,UAAU,8EAAA,CAA+E,EACtGD,CAAA,CAAA,CACH,CAAA,CACF,EACF,CACD,EACDD,GAAiB,YAAcZ,EAAmB,QAAQ,YAE1D,MAAMW,EAAmBpE,EAAM,WAG7B,CAAC,CAAE,UAAAO,EAAW,SAAA+D,EAAU,GAAGpD,GAASC,IACpCuB,EAAAA,IAACe,EAAmB,QAAnB,CACC,IAAAtC,EACA,UAAWsB,EAAAA,GACT,2HACAlC,CAAA,EAED,GAAGW,EAEJ,SAAAwB,EAAAA,IAAC,MAAA,CAAI,UAAU,YAAa,SAAA4B,CAAA,CAAS,CAAA,CACvC,CACD,EACDF,EAAiB,YAAcX,EAAmB,QAAQ,YAE1D,MAAMS,EAAW,CAAC,CAChB,KAAAzC,EACA,OAAA+C,EACA,WAAAC,EACA,QAASC,CACX,IAKM,CACJ,IAAIC,EAAOD,EACX,OAAID,GAAchD,EAAK,aACrBkD,EAAOlD,EAAK,aACH+C,GAAU/C,EAAK,SACxBkD,EAAOlD,EAAK,SACHA,EAAK,OACdkD,EAAOlD,EAAK,MAEPkD,EAAOjC,MAACiC,EAAA,CAAK,UAAU,uBAAA,CAAwB,EAAKjC,EAAAA,IAAAoB,EAAAA,SAAA,EAAE,CAC/D,EAEMK,EAAc,CAAC,CACnB,SAAAG,EACA,WAAAG,EACA,UAAAlE,CACF,IAMImC,EAAAA,IAAC,MAAA,CACC,UAAWD,EAAAA,GACTgC,EAAa,QAAU,SACvB,qCACAlE,CAAA,EAGD,SAAA+D,CAAA,CAAA,EAKDT,GAAgB,CAAC,CACrB,QAAAe,EACA,OAAAJ,EACA,aAAcK,EACd,eAAgBC,CAClB,IAMMD,GAAgB,CAACL,EAEjB9B,EAAAA,IAACmC,EAAA,CAAa,UAAU,8EAAA,CAA+E,EAGvGC,GAAkBN,EAElB9B,EAAAA,IAACoC,EAAA,CAAe,UAAU,8EAAA,CAA+E,EAIzGF,IAAY,aACPJ,QACJO,EAAAA,YAAA,CAAY,UAAU,+EAA+E,EAEtGrC,EAAAA,IAACsC,EAAAA,WAAA,CAAW,UAAU,8EAAA,CAA+E,EAKvGtC,EAAAA,IAAC6B,EAAAA,aAAA,CAAa,UAAU,8EAAA,CAA+E"}
|
|
1
|
+
{"version":3,"file":"tree-view.cjs","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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"}
|