@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
|
@@ -60,9 +60,9 @@ function be(o) {
|
|
|
60
60
|
const {
|
|
61
61
|
value: e,
|
|
62
62
|
size: t = 200,
|
|
63
|
-
level:
|
|
63
|
+
level: n = "M",
|
|
64
64
|
margin: i = 1,
|
|
65
|
-
quality:
|
|
65
|
+
quality: s = 0.92,
|
|
66
66
|
backgroundColor: r = "#ffffff",
|
|
67
67
|
foregroundColor: a = "#000000",
|
|
68
68
|
onError: d,
|
|
@@ -97,9 +97,9 @@ function be(o) {
|
|
|
97
97
|
}
|
|
98
98
|
}), [P, x]), S = l.useMemo(
|
|
99
99
|
() => ({
|
|
100
|
-
errorCorrectionLevel:
|
|
100
|
+
errorCorrectionLevel: n,
|
|
101
101
|
type: "image/png",
|
|
102
|
-
quality:
|
|
102
|
+
quality: s,
|
|
103
103
|
margin: i,
|
|
104
104
|
color: {
|
|
105
105
|
dark: a,
|
|
@@ -107,16 +107,16 @@ function be(o) {
|
|
|
107
107
|
},
|
|
108
108
|
width: t
|
|
109
109
|
}),
|
|
110
|
-
[
|
|
110
|
+
[n, i, a, r, t, s]
|
|
111
111
|
), q = l.useMemo(() => e ? JSON.stringify({
|
|
112
112
|
value: e,
|
|
113
113
|
size: t,
|
|
114
|
-
level:
|
|
114
|
+
level: n,
|
|
115
115
|
margin: i,
|
|
116
|
-
quality:
|
|
116
|
+
quality: s,
|
|
117
117
|
foregroundColor: a,
|
|
118
118
|
backgroundColor: r
|
|
119
|
-
}) : "", [e,
|
|
119
|
+
}) : "", [e, n, i, a, r, t, s]), z = l.useCallback(
|
|
120
120
|
async (c) => {
|
|
121
121
|
if (!e || !c) return;
|
|
122
122
|
const C = p.getState();
|
|
@@ -161,13 +161,13 @@ function be(o) {
|
|
|
161
161
|
() => ({
|
|
162
162
|
value: e,
|
|
163
163
|
size: t,
|
|
164
|
-
level:
|
|
164
|
+
level: n,
|
|
165
165
|
margin: i,
|
|
166
166
|
backgroundColor: r,
|
|
167
167
|
foregroundColor: a,
|
|
168
168
|
canvasRef: k
|
|
169
169
|
}),
|
|
170
|
-
[e, t, r, a,
|
|
170
|
+
[e, t, r, a, n, i]
|
|
171
171
|
);
|
|
172
172
|
l.useLayoutEffect(() => {
|
|
173
173
|
if (q) {
|
|
@@ -183,7 +183,7 @@ function be(o) {
|
|
|
183
183
|
{
|
|
184
184
|
"data-slot": "qr-code",
|
|
185
185
|
...b,
|
|
186
|
-
className: w(Q, "relative flex flex-col items-center gap-2"),
|
|
186
|
+
className: w(Q, "ds:relative ds:flex ds:flex-col ds:items-center ds:gap-2"),
|
|
187
187
|
style: {
|
|
188
188
|
"--qr-code-size": `${t}px`,
|
|
189
189
|
...m
|
|
@@ -193,41 +193,41 @@ function be(o) {
|
|
|
193
193
|
) }) });
|
|
194
194
|
}
|
|
195
195
|
function D(o) {
|
|
196
|
-
const { asChild: e, className: t, ref:
|
|
196
|
+
const { asChild: e, className: t, ref: n, ...i } = o, s = N(G), r = h((R) => R.generationKey), a = I(n, s.canvasRef);
|
|
197
197
|
return /* @__PURE__ */ v(
|
|
198
198
|
e ? y : "canvas",
|
|
199
199
|
{
|
|
200
200
|
"data-slot": "qr-code-canvas",
|
|
201
201
|
...i,
|
|
202
202
|
ref: a,
|
|
203
|
-
width:
|
|
204
|
-
height:
|
|
203
|
+
width: s.size,
|
|
204
|
+
height: s.size,
|
|
205
205
|
className: w(
|
|
206
|
-
"relative max-h-(--qr-code-size) max-w-(--qr-code-size)",
|
|
207
|
-
!r && "invisible",
|
|
206
|
+
"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)",
|
|
207
|
+
!r && "ds:invisible",
|
|
208
208
|
t
|
|
209
209
|
)
|
|
210
210
|
}
|
|
211
211
|
);
|
|
212
212
|
}
|
|
213
213
|
function Pe(o) {
|
|
214
|
-
const { asChild: e, className: t, style:
|
|
214
|
+
const { asChild: e, className: t, style: n, ...i } = o, s = N(K), r = h((d) => d.svgString);
|
|
215
215
|
return r ? /* @__PURE__ */ v(
|
|
216
216
|
e ? y : "div",
|
|
217
217
|
{
|
|
218
218
|
"data-slot": "qr-code-svg",
|
|
219
219
|
...i,
|
|
220
220
|
className: w(
|
|
221
|
-
"relative max-h-(--qr-code-size) max-w-(--qr-code-size)",
|
|
221
|
+
"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)",
|
|
222
222
|
t
|
|
223
223
|
),
|
|
224
|
-
style: { width:
|
|
224
|
+
style: { width: s.size, height: s.size, ...n },
|
|
225
225
|
dangerouslySetInnerHTML: { __html: r }
|
|
226
226
|
}
|
|
227
227
|
) : null;
|
|
228
228
|
}
|
|
229
229
|
function Ne(o) {
|
|
230
|
-
const { alt: e = "QR Code", asChild: t, className:
|
|
230
|
+
const { alt: e = "QR Code", asChild: t, className: n, ...i } = o, s = N(_), r = h((d) => d.dataUrl);
|
|
231
231
|
return r ? /* @__PURE__ */ v(
|
|
232
232
|
t ? y : "img",
|
|
233
233
|
{
|
|
@@ -235,11 +235,11 @@ function Ne(o) {
|
|
|
235
235
|
...i,
|
|
236
236
|
src: r,
|
|
237
237
|
alt: e,
|
|
238
|
-
width:
|
|
239
|
-
height:
|
|
238
|
+
width: s.size,
|
|
239
|
+
height: s.size,
|
|
240
240
|
className: w(
|
|
241
|
-
"relative max-h-(--qr-code-size) max-w-(--qr-code-size)",
|
|
242
|
-
|
|
241
|
+
"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)",
|
|
242
|
+
n
|
|
243
243
|
)
|
|
244
244
|
}
|
|
245
245
|
) : null;
|
|
@@ -248,9 +248,9 @@ function Qe(o) {
|
|
|
248
248
|
const {
|
|
249
249
|
filename: e = "qrcode",
|
|
250
250
|
format: t = "png",
|
|
251
|
-
asChild:
|
|
251
|
+
asChild: n,
|
|
252
252
|
className: i,
|
|
253
|
-
children:
|
|
253
|
+
children: s,
|
|
254
254
|
...r
|
|
255
255
|
} = o, a = h((m) => m.dataUrl), d = h((m) => m.svgString), R = l.useCallback(
|
|
256
256
|
(m) => {
|
|
@@ -268,46 +268,46 @@ function Qe(o) {
|
|
|
268
268
|
[a, d, e, t, r.onClick]
|
|
269
269
|
);
|
|
270
270
|
return /* @__PURE__ */ v(
|
|
271
|
-
|
|
271
|
+
n ? y : "button",
|
|
272
272
|
{
|
|
273
273
|
type: "button",
|
|
274
274
|
"data-slot": "qr-code-download",
|
|
275
275
|
...r,
|
|
276
|
-
className: w("max-w-(--qr-code-size)", i),
|
|
276
|
+
className: w("ds:max-w-(--qr-code-size)", i),
|
|
277
277
|
onClick: R,
|
|
278
|
-
children:
|
|
278
|
+
children: s ?? `Download ${t.toUpperCase()}`
|
|
279
279
|
}
|
|
280
280
|
);
|
|
281
281
|
}
|
|
282
282
|
function ke(o) {
|
|
283
|
-
const { asChild: e, className: t, ...
|
|
283
|
+
const { asChild: e, className: t, ...n } = o;
|
|
284
284
|
return /* @__PURE__ */ v(
|
|
285
285
|
e ? y : "div",
|
|
286
286
|
{
|
|
287
287
|
"data-slot": "qr-code-overlay",
|
|
288
|
-
...
|
|
288
|
+
...n,
|
|
289
289
|
className: w(
|
|
290
|
-
"
|
|
290
|
+
"ds:-translate-x-1/2 ds:-translate-y-1/2 ds:absolute ds:top-1/2 ds:left-1/2 ds:flex ds:items-center ds:justify-center ds:rounded-sm ds:bg-background",
|
|
291
291
|
t
|
|
292
292
|
)
|
|
293
293
|
}
|
|
294
294
|
);
|
|
295
295
|
}
|
|
296
296
|
function qe(o) {
|
|
297
|
-
const { asChild: e, className: t, style:
|
|
297
|
+
const { asChild: e, className: t, style: n, ...i } = o, s = N($), r = h((m) => m.dataUrl), a = h((m) => m.svgString), d = h((m) => m.generationKey);
|
|
298
298
|
return r || a || d ? null : /* @__PURE__ */ v(
|
|
299
299
|
e ? y : "div",
|
|
300
300
|
{
|
|
301
301
|
"data-slot": "qr-code-skeleton",
|
|
302
302
|
...i,
|
|
303
303
|
className: w(
|
|
304
|
-
"absolute max-h-(--qr-code-size) max-w-(--qr-code-size) animate-pulse bg-accent",
|
|
304
|
+
"ds:absolute ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size) ds:animate-pulse ds:bg-accent",
|
|
305
305
|
t
|
|
306
306
|
),
|
|
307
307
|
style: {
|
|
308
|
-
width:
|
|
309
|
-
height:
|
|
310
|
-
...
|
|
308
|
+
width: s.size,
|
|
309
|
+
height: s.size,
|
|
310
|
+
...n
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QrCode.js","sources":["../../../../src/components/QrCode/QrCode.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport * as React from \"react\";\n\nconst ROOT_NAME = \"QRCode\";\nconst CANVAS_NAME = \"QRCodeCanvas\";\nconst SVG_NAME = \"QRCodeSvg\";\nconst IMAGE_NAME = \"QRCodeImage\";\nconst SKELETON_NAME = \"QRCodeSkeleton\";\n\ntype QRCodeLevel = \"L\" | \"M\" | \"Q\" | \"H\";\n\ninterface QRCodeCanvasOpts {\n errorCorrectionLevel: QRCodeLevel;\n type?: \"image/png\" | \"image/jpeg\" | \"image/webp\";\n quality?: number;\n margin?: number;\n color?: {\n dark: string;\n light: string;\n };\n width?: number;\n rendererOpts?: {\n quality?: number;\n };\n}\n\nfunction useLazyRef<T>(fn: () => T) {\n const ref = React.useRef<T | null>(null);\n\n if (ref.current === null) {\n ref.current = fn();\n }\n\n return ref as React.RefObject<T>;\n}\n\ninterface StoreState {\n dataUrl: string | null;\n svgString: string | null;\n isGenerating: boolean;\n error: Error | null;\n generationKey: string;\n}\n\ninterface Store {\n subscribe: (callback: () => void) => () => void;\n getState: () => StoreState;\n setState: <K extends keyof StoreState>(key: K, value: StoreState[K]) => void;\n setStates: (updates: Partial<StoreState>) => void;\n notify: () => void;\n}\n\ninterface QRCodeContextValue {\n value: string;\n size: number;\n margin: number;\n level: QRCodeLevel;\n backgroundColor: string;\n foregroundColor: string;\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n}\n\nconst StoreContext = React.createContext<Store | null>(null);\n\nfunction useStore<T>(selector: (state: StoreState) => T): T {\n const store = React.useContext(StoreContext);\n if (!store) {\n throw new Error(`\\`useQRCode\\` must be used within \\`${ROOT_NAME}\\``);\n }\n\n const getSnapshot = React.useCallback(\n () => selector(store.getState()),\n [store, selector]\n );\n\n return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\nconst QRCodeContext = React.createContext<QRCodeContextValue | null>(null);\n\nfunction useQRCodeContext(consumerName: string) {\n const context = React.useContext(QRCodeContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface QRCodeRootProps extends Omit<React.ComponentProps<\"div\">, \"onError\"> {\n value: string;\n size?: number;\n level?: QRCodeLevel;\n margin?: number;\n quality?: number;\n backgroundColor?: string;\n foregroundColor?: string;\n onError?: (error: Error) => void;\n onGenerated?: () => void;\n asChild?: boolean;\n}\n\nfunction QRCodeRoot(props: QRCodeRootProps) {\n const {\n value,\n size = 200,\n level = \"M\",\n margin = 1,\n quality = 0.92,\n backgroundColor = \"#ffffff\",\n foregroundColor = \"#000000\",\n onError,\n onGenerated,\n className,\n style,\n asChild,\n ...rootProps\n } = props;\n\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n\n const listenersRef = useLazyRef(() => new Set<() => void>());\n const stateRef = useLazyRef<StoreState>(() => ({\n dataUrl: null,\n svgString: null,\n isGenerating: false,\n error: null,\n generationKey: \"\",\n }));\n\n const store = React.useMemo<Store>(() => {\n return {\n subscribe: (cb) => {\n listenersRef.current.add(cb);\n return () => listenersRef.current.delete(cb);\n },\n getState: () => stateRef.current,\n setState: (key, value) => {\n if (Object.is(stateRef.current[key], value)) return;\n stateRef.current[key] = value;\n store.notify();\n },\n setStates: (updates) => {\n let hasChanged = false;\n\n for (const key of Object.keys(updates) as Array<keyof StoreState>) {\n const value = updates[key];\n if (value !== undefined && !Object.is(stateRef.current[key], value)) {\n Object.assign(stateRef.current, { [key]: value });\n hasChanged = true;\n }\n }\n\n if (hasChanged) {\n store.notify();\n }\n },\n notify: () => {\n for (const cb of listenersRef.current) {\n cb();\n }\n },\n };\n }, [listenersRef, stateRef]);\n\n const canvasOpts = React.useMemo<QRCodeCanvasOpts>(\n () => ({\n errorCorrectionLevel: level,\n type: \"image/png\",\n quality,\n margin,\n color: {\n dark: foregroundColor,\n light: backgroundColor,\n },\n width: size,\n }),\n [level, margin, foregroundColor, backgroundColor, size, quality]\n );\n\n const generationKey = React.useMemo(() => {\n if (!value) return \"\";\n\n return JSON.stringify({\n value,\n size,\n level,\n margin,\n quality,\n foregroundColor,\n backgroundColor,\n });\n }, [value, level, margin, foregroundColor, backgroundColor, size, quality]);\n\n const onQRCodeGenerate = React.useCallback(\n async (targetGenerationKey: string) => {\n if (!value || !targetGenerationKey) return;\n\n const currentState = store.getState();\n if (\n currentState.isGenerating ||\n currentState.generationKey === targetGenerationKey\n )\n return;\n\n store.setStates({\n isGenerating: true,\n error: null,\n });\n\n try {\n const QRCode = (await import(\"qrcode\")).default;\n\n let dataUrl: string | null = null;\n\n try {\n dataUrl = await QRCode.toDataURL(value, canvasOpts);\n } catch {\n dataUrl = null;\n }\n\n if (canvasRef.current) {\n await QRCode.toCanvas(canvasRef.current, value, canvasOpts);\n }\n\n const svgString = await QRCode.toString(value, {\n errorCorrectionLevel: canvasOpts.errorCorrectionLevel,\n margin: canvasOpts.margin,\n color: canvasOpts.color,\n width: canvasOpts.width,\n type: \"svg\",\n });\n\n store.setStates({\n dataUrl,\n svgString,\n isGenerating: false,\n generationKey: targetGenerationKey,\n });\n\n onGenerated?.();\n } catch (error) {\n const parsedError =\n error instanceof Error\n ? error\n : new Error(\"Failed to generate QR code\");\n store.setStates({\n error: parsedError,\n isGenerating: false,\n });\n onError?.(parsedError);\n }\n },\n [value, canvasOpts, store, onError, onGenerated]\n );\n\n const contextValue = React.useMemo<QRCodeContextValue>(\n () => ({\n value,\n size,\n level,\n margin,\n backgroundColor,\n foregroundColor,\n canvasRef,\n }),\n [value, size, backgroundColor, foregroundColor, level, margin]\n );\n\n React.useLayoutEffect(() => {\n if (generationKey) {\n const rafId = requestAnimationFrame(() => {\n onQRCodeGenerate(generationKey);\n });\n\n return () => cancelAnimationFrame(rafId);\n }\n }, [generationKey, onQRCodeGenerate]);\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <StoreContext.Provider value={store}>\n <QRCodeContext.Provider value={contextValue}>\n <RootPrimitive\n data-slot=\"qr-code\"\n {...rootProps}\n className={cn(className, \"relative flex flex-col items-center gap-2\")}\n style={\n {\n \"--qr-code-size\": `${size}px`,\n ...style,\n } as React.CSSProperties\n }\n >\n {rootProps?.children ? rootProps.children : <QRCodeCanvas />}\n </RootPrimitive>\n </QRCodeContext.Provider>\n </StoreContext.Provider>\n );\n}\n\ninterface QRCodeCanvasProps extends React.ComponentProps<\"canvas\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeCanvas(props: QRCodeCanvasProps) {\n const { asChild, className, ref, ...canvasProps } = props;\n\n const context = useQRCodeContext(CANVAS_NAME);\n const generationKey = useStore((state) => state.generationKey);\n\n const composedRef = useComposedRefs(ref, context.canvasRef);\n\n const CanvasPrimitive = asChild ? Slot : \"canvas\";\n\n return (\n <CanvasPrimitive\n data-slot=\"qr-code-canvas\"\n {...canvasProps}\n ref={composedRef}\n width={context.size}\n height={context.size}\n className={cn(\n \"relative max-h-(--qr-code-size) max-w-(--qr-code-size)\",\n !generationKey && \"invisible\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeSvgProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeSvg(props: QRCodeSvgProps) {\n const { asChild, className, style, ...svgProps } = props;\n\n const context = useQRCodeContext(SVG_NAME);\n const svgString = useStore((state) => state.svgString);\n\n if (!svgString) return null;\n\n const SvgPrimitive = asChild ? Slot : \"div\";\n\n return (\n <SvgPrimitive\n data-slot=\"qr-code-svg\"\n {...svgProps}\n className={cn(\n \"relative max-h-(--qr-code-size) max-w-(--qr-code-size)\",\n className\n )}\n style={{ width: context.size, height: context.size, ...style }}\n dangerouslySetInnerHTML={{ __html: svgString }}\n />\n );\n}\n\ninterface QRCodeImageProps extends React.ComponentProps<\"img\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeImage(props: QRCodeImageProps) {\n const { alt = \"QR Code\", asChild, className, ...imageProps } = props;\n\n const context = useQRCodeContext(IMAGE_NAME);\n const dataUrl = useStore((state) => state.dataUrl);\n\n if (!dataUrl) return null;\n\n const ImagePrimitive = asChild ? Slot : \"img\";\n\n return (\n <ImagePrimitive\n data-slot=\"qr-code-image\"\n {...imageProps}\n src={dataUrl}\n alt={alt}\n width={context.size}\n height={context.size}\n className={cn(\n \"relative max-h-(--qr-code-size) max-w-(--qr-code-size)\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeDownloadProps extends React.ComponentProps<\"button\"> {\n filename?: string;\n format?: \"png\" | \"svg\";\n asChild?: boolean;\n}\n\nfunction QRCodeDownload(props: QRCodeDownloadProps) {\n const {\n filename = \"qrcode\",\n format = \"png\",\n asChild,\n className,\n children,\n ...buttonProps\n } = props;\n\n const dataUrl = useStore((state) => state.dataUrl);\n const svgString = useStore((state) => state.svgString);\n\n const onClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n buttonProps.onClick?.(event);\n if (event.defaultPrevented) return;\n\n const link = document.createElement(\"a\");\n\n if (format === \"png\" && dataUrl) {\n link.href = dataUrl;\n link.download = `${filename}.png`;\n } else if (format === \"svg\" && svgString) {\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\n link.href = URL.createObjectURL(blob);\n link.download = `${filename}.svg`;\n } else {\n return;\n }\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n if (format === \"svg\" && svgString) {\n URL.revokeObjectURL(link.href);\n }\n },\n [dataUrl, svgString, filename, format, buttonProps.onClick]\n );\n\n const ButtonPrimitive = asChild ? Slot : \"button\";\n\n return (\n <ButtonPrimitive\n type=\"button\"\n data-slot=\"qr-code-download\"\n {...buttonProps}\n className={cn(\"max-w-(--qr-code-size)\", className)}\n onClick={onClick}\n >\n {children ?? `Download ${format.toUpperCase()}`}\n </ButtonPrimitive>\n );\n}\n\ninterface QRCodeOverlayProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeOverlay(props: QRCodeOverlayProps) {\n const { asChild, className, ...overlayProps } = props;\n\n const OverlayPrimitive = asChild ? Slot : \"div\";\n\n return (\n <OverlayPrimitive\n data-slot=\"qr-code-overlay\"\n {...overlayProps}\n className={cn(\n \"-translate-x-1/2 -translate-y-1/2 absolute top-1/2 left-1/2 flex items-center justify-center rounded-sm bg-background\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeSkeletonProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeSkeleton(props: QRCodeSkeletonProps) {\n const { asChild, className, style, ...skeletonProps } = props;\n\n const context = useQRCodeContext(SKELETON_NAME);\n const dataUrl = useStore((state) => state.dataUrl);\n const svgString = useStore((state) => state.svgString);\n const generationKey = useStore((state) => state.generationKey);\n\n const isLoaded = dataUrl || svgString || generationKey;\n\n if (isLoaded) return null;\n\n const SkeletonPrimitive = asChild ? Slot : \"div\";\n\n return (\n <SkeletonPrimitive\n data-slot=\"qr-code-skeleton\"\n {...skeletonProps}\n className={cn(\n \"absolute max-h-(--qr-code-size) max-w-(--qr-code-size) animate-pulse bg-accent\",\n className\n )}\n style={{\n width: context.size,\n height: context.size,\n ...style,\n }}\n />\n );\n}\n\nexport {\n QRCodeRoot as Root,\n QRCodeCanvas as Canvas,\n QRCodeSvg as Svg,\n QRCodeImage as Image,\n QRCodeOverlay as Overlay,\n QRCodeSkeleton as Skeleton,\n QRCodeDownload as Download,\n //\n QRCodeRoot as QRCode,\n QRCodeCanvas,\n QRCodeSvg,\n QRCodeImage,\n QRCodeOverlay,\n QRCodeSkeleton,\n QRCodeDownload,\n //\n useStore as useQRCode,\n //\n type QRCodeRootProps as QRCodeProps,\n};\n"],"names":["ROOT_NAME","CANVAS_NAME","SVG_NAME","IMAGE_NAME","SKELETON_NAME","useLazyRef","fn","ref","React","StoreContext","useStore","selector","store","getSnapshot","QRCodeContext","useQRCodeContext","consumerName","context","QRCodeRoot","props","value","size","level","margin","quality","backgroundColor","foregroundColor","onError","onGenerated","className","style","asChild","rootProps","canvasRef","listenersRef","stateRef","cb","key","updates","hasChanged","canvasOpts","generationKey","onQRCodeGenerate","targetGenerationKey","currentState","QRCode","dataUrl","svgString","error","parsedError","contextValue","rafId","RootPrimitive","Slot","jsx","cn","QRCodeCanvas","canvasProps","state","composedRef","useComposedRefs","QRCodeSvg","svgProps","QRCodeImage","alt","imageProps","QRCodeDownload","filename","format","children","buttonProps","onClick","event","link","blob","QRCodeOverlay","overlayProps","QRCodeSkeleton","skeletonProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,IAAY,UACZC,IAAc,gBACdC,IAAW,aACXC,IAAa,eACbC,IAAgB;AAmBtB,SAASC,EAAcC,GAAa;AAClC,QAAMC,IAAMC,EAAM,OAAiB,IAAI;AAEvC,SAAID,EAAI,YAAY,SAClBA,EAAI,UAAUD,EAAA,IAGTC;AACT;AA4BA,MAAME,IAAeD,EAAM,cAA4B,IAAI;AAE3D,SAASE,EAAYC,GAAuC;AAC1D,QAAMC,IAAQJ,EAAM,WAAWC,CAAY;AAC3C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,uCAAuCZ,CAAS,IAAI;AAGtE,QAAMa,IAAcL,EAAM;AAAA,IACxB,MAAMG,EAASC,EAAM,UAAU;AAAA,IAC/B,CAACA,GAAOD,CAAQ;AAAA,EAAA;AAGlB,SAAOH,EAAM,qBAAqBI,EAAM,WAAWC,GAAaA,CAAW;AAC7E;AAEA,MAAMC,IAAgBN,EAAM,cAAyC,IAAI;AAEzE,SAASO,EAAiBC,GAAsB;AAC9C,QAAMC,IAAUT,EAAM,WAAWM,CAAa;AAC9C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,KAAKD,CAAY,4BAA4BhB,CAAS,IAAI;AAE5E,SAAOiB;AACT;AAeA,SAASC,GAAWC,GAAwB;AAC1C,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,iBAAAC,IAAkB;AAAA,IAClB,iBAAAC,IAAkB;AAAA,IAClB,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDb,GAEEc,IAAYzB,EAAM,OAA0B,IAAI,GAEhD0B,IAAe7B,EAAW,MAAM,oBAAI,KAAiB,GACrD8B,IAAW9B,EAAuB,OAAO;AAAA,IAC7C,SAAS;AAAA,IACT,WAAW;AAAA,IACX,cAAc;AAAA,IACd,OAAO;AAAA,IACP,eAAe;AAAA,EAAA,EACf,GAEIO,IAAQJ,EAAM,QAAe,OAC1B;AAAA,IACL,WAAW,CAAC4B,OACVF,EAAa,QAAQ,IAAIE,CAAE,GACpB,MAAMF,EAAa,QAAQ,OAAOE,CAAE;AAAA,IAE7C,UAAU,MAAMD,EAAS;AAAA,IACzB,UAAU,CAACE,GAAKjB,MAAU;AACxB,MAAI,OAAO,GAAGe,EAAS,QAAQE,CAAG,GAAGjB,CAAK,MAC1Ce,EAAS,QAAQE,CAAG,IAAIjB,GACxBR,EAAM,OAAA;AAAA,IACR;AAAA,IACA,WAAW,CAAC0B,MAAY;AACtB,UAAIC,IAAa;AAEjB,iBAAWF,KAAO,OAAO,KAAKC,CAAO,GAA8B;AACjE,cAAMlB,IAAQkB,EAAQD,CAAG;AACzB,QAAIjB,MAAU,UAAa,CAAC,OAAO,GAAGe,EAAS,QAAQE,CAAG,GAAGjB,CAAK,MAChE,OAAO,OAAOe,EAAS,SAAS,EAAE,CAACE,CAAG,GAAGjB,GAAO,GAChDmB,IAAa;AAAA,MAEjB;AAEA,MAAIA,KACF3B,EAAM,OAAA;AAAA,IAEV;AAAA,IACA,QAAQ,MAAM;AACZ,iBAAWwB,KAAMF,EAAa;AAC5B,QAAAE,EAAA;AAAA,IAEJ;AAAA,EAAA,IAED,CAACF,GAAcC,CAAQ,CAAC,GAErBK,IAAahC,EAAM;AAAA,IACvB,OAAO;AAAA,MACL,sBAAsBc;AAAA,MACtB,MAAM;AAAA,MACN,SAAAE;AAAA,MACA,QAAAD;AAAA,MACA,OAAO;AAAA,QACL,MAAMG;AAAA,QACN,OAAOD;AAAA,MAAA;AAAA,MAET,OAAOJ;AAAA,IAAA;AAAA,IAET,CAACC,GAAOC,GAAQG,GAAiBD,GAAiBJ,GAAMG,CAAO;AAAA,EAAA,GAG3DiB,IAAgBjC,EAAM,QAAQ,MAC7BY,IAEE,KAAK,UAAU;AAAA,IACpB,OAAAA;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,iBAAAE;AAAA,IACA,iBAAAD;AAAA,EAAA,CACD,IAVkB,IAWlB,CAACL,GAAOE,GAAOC,GAAQG,GAAiBD,GAAiBJ,GAAMG,CAAO,CAAC,GAEpEkB,IAAmBlC,EAAM;AAAA,IAC7B,OAAOmC,MAAgC;AACrC,UAAI,CAACvB,KAAS,CAACuB,EAAqB;AAEpC,YAAMC,IAAehC,EAAM,SAAA;AAC3B,UACE,EAAAgC,EAAa,gBACbA,EAAa,kBAAkBD,IAIjC;AAAA,QAAA/B,EAAM,UAAU;AAAA,UACd,cAAc;AAAA,UACd,OAAO;AAAA,QAAA,CACR;AAED,YAAI;AACF,gBAAMiC,KAAU,MAAM,OAAO,QAAQ,GAAG;AAExC,cAAIC,IAAyB;AAE7B,cAAI;AACF,YAAAA,IAAU,MAAMD,EAAO,UAAUzB,GAAOoB,CAAU;AAAA,UACpD,QAAQ;AACN,YAAAM,IAAU;AAAA,UACZ;AAEA,UAAIb,EAAU,WACZ,MAAMY,EAAO,SAASZ,EAAU,SAASb,GAAOoB,CAAU;AAG5D,gBAAMO,IAAY,MAAMF,EAAO,SAASzB,GAAO;AAAA,YAC7C,sBAAsBoB,EAAW;AAAA,YACjC,QAAQA,EAAW;AAAA,YACnB,OAAOA,EAAW;AAAA,YAClB,OAAOA,EAAW;AAAA,YAClB,MAAM;AAAA,UAAA,CACP;AAED,UAAA5B,EAAM,UAAU;AAAA,YACd,SAAAkC;AAAA,YACA,WAAAC;AAAA,YACA,cAAc;AAAA,YACd,eAAeJ;AAAA,UAAA,CAChB,GAEDf,IAAA;AAAA,QACF,SAASoB,GAAO;AACd,gBAAMC,IACJD,aAAiB,QACbA,IACA,IAAI,MAAM,4BAA4B;AAC5C,UAAApC,EAAM,UAAU;AAAA,YACd,OAAOqC;AAAA,YACP,cAAc;AAAA,UAAA,CACf,GACDtB,IAAUsB,CAAW;AAAA,QACvB;AAAA;AAAA,IACF;AAAA,IACA,CAAC7B,GAAOoB,GAAY5B,GAAOe,GAASC,CAAW;AAAA,EAAA,GAG3CsB,IAAe1C,EAAM;AAAA,IACzB,OAAO;AAAA,MACL,OAAAY;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,MACA,QAAAC;AAAA,MACA,iBAAAE;AAAA,MACA,iBAAAC;AAAA,MACA,WAAAO;AAAA,IAAA;AAAA,IAEF,CAACb,GAAOC,GAAMI,GAAiBC,GAAiBJ,GAAOC,CAAM;AAAA,EAAA;AAG/D,EAAAf,EAAM,gBAAgB,MAAM;AAC1B,QAAIiC,GAAe;AACjB,YAAMU,IAAQ,sBAAsB,MAAM;AACxC,QAAAT,EAAiBD,CAAa;AAAA,MAChC,CAAC;AAED,aAAO,MAAM,qBAAqBU,CAAK;AAAA,IACzC;AAAA,EACF,GAAG,CAACV,GAAeC,CAAgB,CAAC;AAEpC,QAAMU,IAAgBrB,IAAUsB,IAAO;AAEvC,SACE,gBAAAC,EAAC7C,EAAa,UAAb,EAAsB,OAAOG,GAC5B,UAAA,gBAAA0C,EAACxC,EAAc,UAAd,EAAuB,OAAOoC,GAC7B,UAAA,gBAAAI;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACT,GAAGpB;AAAA,MACJ,WAAWuB,EAAG1B,GAAW,2CAA2C;AAAA,MACpE,OACE;AAAA,QACE,kBAAkB,GAAGR,CAAI;AAAA,QACzB,GAAGS;AAAA,MAAA;AAAA,MAIN,UAAAE,GAAW,WAAWA,EAAU,6BAAYwB,GAAA,CAAA,CAAa;AAAA,IAAA;AAAA,EAAA,GAE9D,EAAA,CACF;AAEJ;AAMA,SAASA,EAAarC,GAA0B;AAC9C,QAAM,EAAE,SAAAY,GAAS,WAAAF,GAAW,KAAAtB,GAAK,GAAGkD,MAAgBtC,GAE9CF,IAAUF,EAAiBd,CAAW,GACtCwC,IAAgB/B,EAAS,CAACgD,MAAUA,EAAM,aAAa,GAEvDC,IAAcC,EAAgBrD,GAAKU,EAAQ,SAAS;AAI1D,SACE,gBAAAqC;AAAA,IAHsBvB,IAAUsB,IAAO;AAAA,IAGtC;AAAA,MACC,aAAU;AAAA,MACT,GAAGI;AAAA,MACJ,KAAKE;AAAA,MACL,OAAO1C,EAAQ;AAAA,MACf,QAAQA,EAAQ;AAAA,MAChB,WAAWsC;AAAA,QACT;AAAA,QACA,CAACd,KAAiB;AAAA,QAClBZ;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AAMA,SAASgC,GAAU1C,GAAuB;AACxC,QAAM,EAAE,SAAAY,GAAS,WAAAF,GAAW,OAAAC,GAAO,GAAGgC,MAAa3C,GAE7CF,IAAUF,EAAiBb,CAAQ,GACnC6C,IAAYrC,EAAS,CAACgD,MAAUA,EAAM,SAAS;AAErD,SAAKX,IAKH,gBAAAO;AAAA,IAHmBvB,IAAUsB,IAAO;AAAA,IAGnC;AAAA,MACC,aAAU;AAAA,MACT,GAAGS;AAAA,MACJ,WAAWP;AAAA,QACT;AAAA,QACA1B;AAAA,MAAA;AAAA,MAEF,OAAO,EAAE,OAAOZ,EAAQ,MAAM,QAAQA,EAAQ,MAAM,GAAGa,EAAA;AAAA,MACvD,yBAAyB,EAAE,QAAQiB,EAAA;AAAA,IAAU;AAAA,EAAA,IAb1B;AAgBzB;AAMA,SAASgB,GAAY5C,GAAyB;AAC5C,QAAM,EAAE,KAAA6C,IAAM,WAAW,SAAAjC,GAAS,WAAAF,GAAW,GAAGoC,MAAe9C,GAEzDF,IAAUF,EAAiBZ,CAAU,GACrC2C,IAAUpC,EAAS,CAACgD,MAAUA,EAAM,OAAO;AAEjD,SAAKZ,IAKH,gBAAAQ;AAAA,IAHqBvB,IAAUsB,IAAO;AAAA,IAGrC;AAAA,MACC,aAAU;AAAA,MACT,GAAGY;AAAA,MACJ,KAAKnB;AAAA,MACL,KAAAkB;AAAA,MACA,OAAO/C,EAAQ;AAAA,MACf,QAAQA,EAAQ;AAAA,MAChB,WAAWsC;AAAA,QACT;AAAA,QACA1B;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,IAfiB;AAkBvB;AAQA,SAASqC,GAAe/C,GAA4B;AAClD,QAAM;AAAA,IACJ,UAAAgD,IAAW;AAAA,IACX,QAAAC,IAAS;AAAA,IACT,SAAArC;AAAA,IACA,WAAAF;AAAA,IACA,UAAAwC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDnD,GAEE2B,IAAUpC,EAAS,CAACgD,MAAUA,EAAM,OAAO,GAC3CX,IAAYrC,EAAS,CAACgD,MAAUA,EAAM,SAAS,GAE/Ca,IAAU/D,EAAM;AAAA,IACpB,CAACgE,MAA+C;AAE9C,UADAF,EAAY,UAAUE,CAAK,GACvBA,EAAM,iBAAkB;AAE5B,YAAMC,IAAO,SAAS,cAAc,GAAG;AAEvC,UAAIL,MAAW,SAAStB;AACtB,QAAA2B,EAAK,OAAO3B,GACZ2B,EAAK,WAAW,GAAGN,CAAQ;AAAA,eAClBC,MAAW,SAASrB,GAAW;AACxC,cAAM2B,IAAO,IAAI,KAAK,CAAC3B,CAAS,GAAG,EAAE,MAAM,iBAAiB;AAC5D,QAAA0B,EAAK,OAAO,IAAI,gBAAgBC,CAAI,GACpCD,EAAK,WAAW,GAAGN,CAAQ;AAAA,MAC7B;AACE;AAGF,eAAS,KAAK,YAAYM,CAAI,GAC9BA,EAAK,MAAA,GACL,SAAS,KAAK,YAAYA,CAAI,GAE1BL,MAAW,SAASrB,KACtB,IAAI,gBAAgB0B,EAAK,IAAI;AAAA,IAEjC;AAAA,IACA,CAAC3B,GAASC,GAAWoB,GAAUC,GAAQE,EAAY,OAAO;AAAA,EAAA;AAK5D,SACE,gBAAAhB;AAAA,IAHsBvB,IAAUsB,IAAO;AAAA,IAGtC;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACT,GAAGiB;AAAA,MACJ,WAAWf,EAAG,0BAA0B1B,CAAS;AAAA,MACjD,SAAA0C;AAAA,MAEC,UAAAF,KAAY,YAAYD,EAAO,YAAA,CAAa;AAAA,IAAA;AAAA,EAAA;AAGnD;AAMA,SAASO,GAAcxD,GAA2B;AAChD,QAAM,EAAE,SAAAY,GAAS,WAAAF,GAAW,GAAG+C,MAAiBzD;AAIhD,SACE,gBAAAmC;AAAA,IAHuBvB,IAAUsB,IAAO;AAAA,IAGvC;AAAA,MACC,aAAU;AAAA,MACT,GAAGuB;AAAA,MACJ,WAAWrB;AAAA,QACT;AAAA,QACA1B;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AAMA,SAASgD,GAAe1D,GAA4B;AAClD,QAAM,EAAE,SAAAY,GAAS,WAAAF,GAAW,OAAAC,GAAO,GAAGgD,MAAkB3D,GAElDF,IAAUF,EAAiBX,CAAa,GACxC0C,IAAUpC,EAAS,CAACgD,MAAUA,EAAM,OAAO,GAC3CX,IAAYrC,EAAS,CAACgD,MAAUA,EAAM,SAAS,GAC/CjB,IAAgB/B,EAAS,CAACgD,MAAUA,EAAM,aAAa;AAI7D,SAFiBZ,KAAWC,KAAaN,IAEpB,OAKnB,gBAAAa;AAAA,IAHwBvB,IAAUsB,IAAO;AAAA,IAGxC;AAAA,MACC,aAAU;AAAA,MACT,GAAGyB;AAAA,MACJ,WAAWvB;AAAA,QACT;AAAA,QACA1B;AAAA,MAAA;AAAA,MAEF,OAAO;AAAA,QACL,OAAOZ,EAAQ;AAAA,QACf,QAAQA,EAAQ;AAAA,QAChB,GAAGa;AAAA,MAAA;AAAA,IACL;AAAA,EAAA;AAGN;"}
|
|
1
|
+
{"version":3,"file":"QrCode.js","sources":["../../../../src/components/QrCode/QrCode.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport * as React from \"react\";\n\nconst ROOT_NAME = \"QRCode\";\nconst CANVAS_NAME = \"QRCodeCanvas\";\nconst SVG_NAME = \"QRCodeSvg\";\nconst IMAGE_NAME = \"QRCodeImage\";\nconst SKELETON_NAME = \"QRCodeSkeleton\";\n\ntype QRCodeLevel = \"L\" | \"M\" | \"Q\" | \"H\";\n\ninterface QRCodeCanvasOpts {\n errorCorrectionLevel: QRCodeLevel;\n type?: \"image/png\" | \"image/jpeg\" | \"image/webp\";\n quality?: number;\n margin?: number;\n color?: {\n dark: string;\n light: string;\n };\n width?: number;\n rendererOpts?: {\n quality?: number;\n };\n}\n\nfunction useLazyRef<T>(fn: () => T) {\n const ref = React.useRef<T | null>(null);\n\n if (ref.current === null) {\n ref.current = fn();\n }\n\n return ref as React.RefObject<T>;\n}\n\ninterface StoreState {\n dataUrl: string | null;\n svgString: string | null;\n isGenerating: boolean;\n error: Error | null;\n generationKey: string;\n}\n\ninterface Store {\n subscribe: (callback: () => void) => () => void;\n getState: () => StoreState;\n setState: <K extends keyof StoreState>(key: K, value: StoreState[K]) => void;\n setStates: (updates: Partial<StoreState>) => void;\n notify: () => void;\n}\n\ninterface QRCodeContextValue {\n value: string;\n size: number;\n margin: number;\n level: QRCodeLevel;\n backgroundColor: string;\n foregroundColor: string;\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n}\n\nconst StoreContext = React.createContext<Store | null>(null);\n\nfunction useStore<T>(selector: (state: StoreState) => T): T {\n const store = React.useContext(StoreContext);\n if (!store) {\n throw new Error(`\\`useQRCode\\` must be used within \\`${ROOT_NAME}\\``);\n }\n\n const getSnapshot = React.useCallback(\n () => selector(store.getState()),\n [store, selector]\n );\n\n return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\nconst QRCodeContext = React.createContext<QRCodeContextValue | null>(null);\n\nfunction useQRCodeContext(consumerName: string) {\n const context = React.useContext(QRCodeContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface QRCodeRootProps extends Omit<React.ComponentProps<\"div\">, \"onError\"> {\n value: string;\n size?: number;\n level?: QRCodeLevel;\n margin?: number;\n quality?: number;\n backgroundColor?: string;\n foregroundColor?: string;\n onError?: (error: Error) => void;\n onGenerated?: () => void;\n asChild?: boolean;\n}\n\nfunction QRCodeRoot(props: QRCodeRootProps) {\n const {\n value,\n size = 200,\n level = \"M\",\n margin = 1,\n quality = 0.92,\n backgroundColor = \"#ffffff\",\n foregroundColor = \"#000000\",\n onError,\n onGenerated,\n className,\n style,\n asChild,\n ...rootProps\n } = props;\n\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n\n const listenersRef = useLazyRef(() => new Set<() => void>());\n const stateRef = useLazyRef<StoreState>(() => ({\n dataUrl: null,\n svgString: null,\n isGenerating: false,\n error: null,\n generationKey: \"\",\n }));\n\n const store = React.useMemo<Store>(() => {\n return {\n subscribe: (cb) => {\n listenersRef.current.add(cb);\n return () => listenersRef.current.delete(cb);\n },\n getState: () => stateRef.current,\n setState: (key, value) => {\n if (Object.is(stateRef.current[key], value)) return;\n stateRef.current[key] = value;\n store.notify();\n },\n setStates: (updates) => {\n let hasChanged = false;\n\n for (const key of Object.keys(updates) as Array<keyof StoreState>) {\n const value = updates[key];\n if (value !== undefined && !Object.is(stateRef.current[key], value)) {\n Object.assign(stateRef.current, { [key]: value });\n hasChanged = true;\n }\n }\n\n if (hasChanged) {\n store.notify();\n }\n },\n notify: () => {\n for (const cb of listenersRef.current) {\n cb();\n }\n },\n };\n }, [listenersRef, stateRef]);\n\n const canvasOpts = React.useMemo<QRCodeCanvasOpts>(\n () => ({\n errorCorrectionLevel: level,\n type: \"image/png\",\n quality,\n margin,\n color: {\n dark: foregroundColor,\n light: backgroundColor,\n },\n width: size,\n }),\n [level, margin, foregroundColor, backgroundColor, size, quality]\n );\n\n const generationKey = React.useMemo(() => {\n if (!value) return \"\";\n\n return JSON.stringify({\n value,\n size,\n level,\n margin,\n quality,\n foregroundColor,\n backgroundColor,\n });\n }, [value, level, margin, foregroundColor, backgroundColor, size, quality]);\n\n const onQRCodeGenerate = React.useCallback(\n async (targetGenerationKey: string) => {\n if (!value || !targetGenerationKey) return;\n\n const currentState = store.getState();\n if (\n currentState.isGenerating ||\n currentState.generationKey === targetGenerationKey\n )\n return;\n\n store.setStates({\n isGenerating: true,\n error: null,\n });\n\n try {\n const QRCode = (await import(\"qrcode\")).default;\n\n let dataUrl: string | null = null;\n\n try {\n dataUrl = await QRCode.toDataURL(value, canvasOpts);\n } catch {\n dataUrl = null;\n }\n\n if (canvasRef.current) {\n await QRCode.toCanvas(canvasRef.current, value, canvasOpts);\n }\n\n const svgString = await QRCode.toString(value, {\n errorCorrectionLevel: canvasOpts.errorCorrectionLevel,\n margin: canvasOpts.margin,\n color: canvasOpts.color,\n width: canvasOpts.width,\n type: \"svg\",\n });\n\n store.setStates({\n dataUrl,\n svgString,\n isGenerating: false,\n generationKey: targetGenerationKey,\n });\n\n onGenerated?.();\n } catch (error) {\n const parsedError =\n error instanceof Error\n ? error\n : new Error(\"Failed to generate QR code\");\n store.setStates({\n error: parsedError,\n isGenerating: false,\n });\n onError?.(parsedError);\n }\n },\n [value, canvasOpts, store, onError, onGenerated]\n );\n\n const contextValue = React.useMemo<QRCodeContextValue>(\n () => ({\n value,\n size,\n level,\n margin,\n backgroundColor,\n foregroundColor,\n canvasRef,\n }),\n [value, size, backgroundColor, foregroundColor, level, margin]\n );\n\n React.useLayoutEffect(() => {\n if (generationKey) {\n const rafId = requestAnimationFrame(() => {\n onQRCodeGenerate(generationKey);\n });\n\n return () => cancelAnimationFrame(rafId);\n }\n }, [generationKey, onQRCodeGenerate]);\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <StoreContext.Provider value={store}>\n <QRCodeContext.Provider value={contextValue}>\n <RootPrimitive\n data-slot=\"qr-code\"\n {...rootProps}\n className={cn(className, \"ds:relative ds:flex ds:flex-col ds:items-center ds:gap-2\")}\n style={\n {\n \"--qr-code-size\": `${size}px`,\n ...style,\n } as React.CSSProperties\n }\n >\n {rootProps?.children ? rootProps.children : <QRCodeCanvas />}\n </RootPrimitive>\n </QRCodeContext.Provider>\n </StoreContext.Provider>\n );\n}\n\ninterface QRCodeCanvasProps extends React.ComponentProps<\"canvas\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeCanvas(props: QRCodeCanvasProps) {\n const { asChild, className, ref, ...canvasProps } = props;\n\n const context = useQRCodeContext(CANVAS_NAME);\n const generationKey = useStore((state) => state.generationKey);\n\n const composedRef = useComposedRefs(ref, context.canvasRef);\n\n const CanvasPrimitive = asChild ? Slot : \"canvas\";\n\n return (\n <CanvasPrimitive\n data-slot=\"qr-code-canvas\"\n {...canvasProps}\n ref={composedRef}\n width={context.size}\n height={context.size}\n className={cn(\n \"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)\",\n !generationKey && \"ds:invisible\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeSvgProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeSvg(props: QRCodeSvgProps) {\n const { asChild, className, style, ...svgProps } = props;\n\n const context = useQRCodeContext(SVG_NAME);\n const svgString = useStore((state) => state.svgString);\n\n if (!svgString) return null;\n\n const SvgPrimitive = asChild ? Slot : \"div\";\n\n return (\n <SvgPrimitive\n data-slot=\"qr-code-svg\"\n {...svgProps}\n className={cn(\n \"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)\",\n className\n )}\n style={{ width: context.size, height: context.size, ...style }}\n dangerouslySetInnerHTML={{ __html: svgString }}\n />\n );\n}\n\ninterface QRCodeImageProps extends React.ComponentProps<\"img\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeImage(props: QRCodeImageProps) {\n const { alt = \"QR Code\", asChild, className, ...imageProps } = props;\n\n const context = useQRCodeContext(IMAGE_NAME);\n const dataUrl = useStore((state) => state.dataUrl);\n\n if (!dataUrl) return null;\n\n const ImagePrimitive = asChild ? Slot : \"img\";\n\n return (\n <ImagePrimitive\n data-slot=\"qr-code-image\"\n {...imageProps}\n src={dataUrl}\n alt={alt}\n width={context.size}\n height={context.size}\n className={cn(\n \"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeDownloadProps extends React.ComponentProps<\"button\"> {\n filename?: string;\n format?: \"png\" | \"svg\";\n asChild?: boolean;\n}\n\nfunction QRCodeDownload(props: QRCodeDownloadProps) {\n const {\n filename = \"qrcode\",\n format = \"png\",\n asChild,\n className,\n children,\n ...buttonProps\n } = props;\n\n const dataUrl = useStore((state) => state.dataUrl);\n const svgString = useStore((state) => state.svgString);\n\n const onClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n buttonProps.onClick?.(event);\n if (event.defaultPrevented) return;\n\n const link = document.createElement(\"a\");\n\n if (format === \"png\" && dataUrl) {\n link.href = dataUrl;\n link.download = `${filename}.png`;\n } else if (format === \"svg\" && svgString) {\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\n link.href = URL.createObjectURL(blob);\n link.download = `${filename}.svg`;\n } else {\n return;\n }\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n if (format === \"svg\" && svgString) {\n URL.revokeObjectURL(link.href);\n }\n },\n [dataUrl, svgString, filename, format, buttonProps.onClick]\n );\n\n const ButtonPrimitive = asChild ? Slot : \"button\";\n\n return (\n <ButtonPrimitive\n type=\"button\"\n data-slot=\"qr-code-download\"\n {...buttonProps}\n className={cn(\"ds:max-w-(--qr-code-size)\", className)}\n onClick={onClick}\n >\n {children ?? `Download ${format.toUpperCase()}`}\n </ButtonPrimitive>\n );\n}\n\ninterface QRCodeOverlayProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeOverlay(props: QRCodeOverlayProps) {\n const { asChild, className, ...overlayProps } = props;\n\n const OverlayPrimitive = asChild ? Slot : \"div\";\n\n return (\n <OverlayPrimitive\n data-slot=\"qr-code-overlay\"\n {...overlayProps}\n className={cn(\n \"ds:-translate-x-1/2 ds:-translate-y-1/2 ds:absolute ds:top-1/2 ds:left-1/2 ds:flex ds:items-center ds:justify-center ds:rounded-sm ds:bg-background\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeSkeletonProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeSkeleton(props: QRCodeSkeletonProps) {\n const { asChild, className, style, ...skeletonProps } = props;\n\n const context = useQRCodeContext(SKELETON_NAME);\n const dataUrl = useStore((state) => state.dataUrl);\n const svgString = useStore((state) => state.svgString);\n const generationKey = useStore((state) => state.generationKey);\n\n const isLoaded = dataUrl || svgString || generationKey;\n\n if (isLoaded) return null;\n\n const SkeletonPrimitive = asChild ? Slot : \"div\";\n\n return (\n <SkeletonPrimitive\n data-slot=\"qr-code-skeleton\"\n {...skeletonProps}\n className={cn(\n \"ds:absolute ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size) ds:animate-pulse ds:bg-accent\",\n className\n )}\n style={{\n width: context.size,\n height: context.size,\n ...style,\n }}\n />\n );\n}\n\nexport {\n QRCodeRoot as Root,\n QRCodeCanvas as Canvas,\n QRCodeSvg as Svg,\n QRCodeImage as Image,\n QRCodeOverlay as Overlay,\n QRCodeSkeleton as Skeleton,\n QRCodeDownload as Download,\n //\n QRCodeRoot as QRCode,\n QRCodeCanvas,\n QRCodeSvg,\n QRCodeImage,\n QRCodeOverlay,\n QRCodeSkeleton,\n QRCodeDownload,\n //\n useStore as useQRCode,\n //\n type QRCodeRootProps as QRCodeProps,\n};\n"],"names":["ROOT_NAME","CANVAS_NAME","SVG_NAME","IMAGE_NAME","SKELETON_NAME","useLazyRef","fn","ref","React","StoreContext","useStore","selector","store","getSnapshot","QRCodeContext","useQRCodeContext","consumerName","context","QRCodeRoot","props","value","size","level","margin","quality","backgroundColor","foregroundColor","onError","onGenerated","className","style","asChild","rootProps","canvasRef","listenersRef","stateRef","cb","key","updates","hasChanged","canvasOpts","generationKey","onQRCodeGenerate","targetGenerationKey","currentState","QRCode","dataUrl","svgString","error","parsedError","contextValue","rafId","RootPrimitive","Slot","jsx","cn","QRCodeCanvas","canvasProps","state","composedRef","useComposedRefs","QRCodeSvg","svgProps","QRCodeImage","alt","imageProps","QRCodeDownload","filename","format","children","buttonProps","onClick","event","link","blob","QRCodeOverlay","overlayProps","QRCodeSkeleton","skeletonProps"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
1
|
+
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import p from "react";
|
|
3
3
|
import { RadioGroup as f, RadioGroupItem as I } from "../../packages/ui/src/components/radio-group.js";
|
|
4
4
|
import "@radix-ui/react-slot";
|
|
5
5
|
import "../../packages/ui/src/components/button.js";
|
|
@@ -32,25 +32,25 @@ import "../../packages/ui/src/components/sidebar.js";
|
|
|
32
32
|
import "@radix-ui/react-slider";
|
|
33
33
|
import "../../packages/ui/src/components/tabs.js";
|
|
34
34
|
import "../../packages/ui/src/components/toggle.js";
|
|
35
|
-
const c =
|
|
36
|
-
(
|
|
37
|
-
const { label: o, variant: r = "option", rootClassName: t, ...i } =
|
|
38
|
-
return /* @__PURE__ */
|
|
39
|
-
/* @__PURE__ */ e(I, { ref:
|
|
35
|
+
const c = p.forwardRef(
|
|
36
|
+
(s, d) => {
|
|
37
|
+
const { label: o, variant: r = "option", rootClassName: t, ...i } = s, a = p.useId();
|
|
38
|
+
return /* @__PURE__ */ l("div", { className: n("ds:flex ds:items-center ds:space-x-2", t), children: [
|
|
39
|
+
/* @__PURE__ */ e(I, { ref: d, id: a, ...i }),
|
|
40
40
|
r === "option" && o && /* @__PURE__ */ e(
|
|
41
41
|
"label",
|
|
42
42
|
{
|
|
43
43
|
htmlFor: a,
|
|
44
|
-
className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
44
|
+
className: "ds:text-sm ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70",
|
|
45
45
|
children: o
|
|
46
46
|
}
|
|
47
47
|
),
|
|
48
|
-
r === "button-group" && o && /* @__PURE__ */ e("span", { className: "sr-only", children: o })
|
|
48
|
+
r === "button-group" && o && /* @__PURE__ */ e("span", { className: "ds:sr-only", children: o })
|
|
49
49
|
] });
|
|
50
50
|
}
|
|
51
51
|
);
|
|
52
52
|
c.displayName = "RadioItem";
|
|
53
|
-
const u =
|
|
53
|
+
const u = p.forwardRef((s, d) => {
|
|
54
54
|
const {
|
|
55
55
|
options: o,
|
|
56
56
|
label: r,
|
|
@@ -64,13 +64,13 @@ const u = d.forwardRef((l, p) => {
|
|
|
64
64
|
className: R,
|
|
65
65
|
rootClassName: v,
|
|
66
66
|
disabled: g
|
|
67
|
-
} =
|
|
68
|
-
return /* @__PURE__ */
|
|
69
|
-
r && /* @__PURE__ */ e("label", { className: "text-sm font-medium", children: r }),
|
|
70
|
-
/* @__PURE__ */
|
|
67
|
+
} = s;
|
|
68
|
+
return /* @__PURE__ */ l("div", { className: n("ds:flex ds:flex-col ds:gap-1.5", v), children: [
|
|
69
|
+
r && /* @__PURE__ */ e("label", { className: "ds:text-sm ds:font-medium", children: r }),
|
|
70
|
+
/* @__PURE__ */ l(
|
|
71
71
|
f,
|
|
72
72
|
{
|
|
73
|
-
ref:
|
|
73
|
+
ref: d,
|
|
74
74
|
value: b,
|
|
75
75
|
onValueChange: N,
|
|
76
76
|
variant: i,
|
|
@@ -92,7 +92,7 @@ const u = d.forwardRef((l, p) => {
|
|
|
92
92
|
]
|
|
93
93
|
}
|
|
94
94
|
),
|
|
95
|
-
t && /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: t })
|
|
95
|
+
t && /* @__PURE__ */ e("p", { className: "ds:text-xs ds:text-muted-foreground", children: t })
|
|
96
96
|
] });
|
|
97
97
|
});
|
|
98
98
|
u.displayName = "Radio";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","sources":["../../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n RadioGroupItem as SRadioGroupItem,\n RadioGroup as SRadioGroup,\n type RadioGroupProps,\n type RadioGroupItemProps,\n} from \"@dsui/ui/components/radio-group\";\nimport { cn } from \"@dsui/ui/index\";\n\nexport type RadioItemProps = RadioGroupItemProps & {\n label?: React.ReactNode;\n variant?: \"option\" | \"button-group\";\n size?: \"default\" | \"sm\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n rootClassName?: string;\n};\n\nconst RadioItem = React.forwardRef<HTMLButtonElement, RadioItemProps>(\n (props, ref) => {\n const { label, variant = \"option\", rootClassName, ...itemProps } = props;\n const id = React.useId();\n\n return (\n <div className={cn(\"flex items-center space-x-2\", rootClassName)}>\n <SRadioGroupItem ref={ref} id={id} {...itemProps} />\n {variant === \"option\" && label && (\n <label\n htmlFor={id}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {variant === \"button-group\" && label && (\n <span className=\"sr-only\">{label}</span>\n )}\n </div>\n );\n }\n);\n\nRadioItem.displayName = \"RadioItem\";\n\nexport type RadioProps = {\n options?: Array<{\n label: React.ReactNode;\n value: string;\n disabled?: boolean;\n }>;\n label?: React.ReactNode;\n helperText?: React.ReactNode;\n variant?: \"option\" | \"button-group\";\n size?: \"default\" | \"sm\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n value?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n className?: string;\n rootClassName?: string;\n disabled?: boolean;\n} & RadioGroupProps;\n\nconst Radio = React.forwardRef<HTMLDivElement, RadioProps>((props, ref) => {\n const {\n options,\n label,\n helperText,\n variant = \"option\",\n size = \"default\",\n color,\n value,\n onValueChange,\n children,\n className,\n rootClassName,\n disabled,\n } = props;\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", rootClassName)}>\n {label && <label className=\"text-sm font-medium\">{label}</label>}\n\n <SRadioGroup\n ref={ref}\n value={value}\n onValueChange={onValueChange}\n variant={variant}\n className={cn(className)}\n >\n {options &&\n options.map((option) => (\n <RadioItem\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={disabled || option.disabled}\n variant={variant}\n size={size}\n color={color}\n />\n ))}\n {children}\n </SRadioGroup>\n\n {helperText && (\n <p className=\"text-xs text-muted-foreground\">{helperText}</p>\n )}\n </div>\n );\n}) as React.ForwardRefExoticComponent<\n RadioProps & React.RefAttributes<HTMLDivElement>\n> & {\n Group: typeof SRadioGroup;\n Item: typeof RadioItem;\n};\n\nRadio.displayName = \"Radio\";\n\nRadio.Group = SRadioGroup;\nRadio.Item = RadioItem;\n\nexport default Radio;\nexport { type RadioGroupProps, type RadioGroupItemProps };\n"],"names":["RadioItem","React","props","ref","label","variant","rootClassName","itemProps","id","cn","jsx","SRadioGroupItem","Radio","options","helperText","size","color","value","onValueChange","children","className","disabled","jsxs","SRadioGroup","option"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAMA,IAAYC,EAAM;AAAA,EACtB,CAACC,GAAOC,MAAQ;AACd,UAAM,EAAE,OAAAC,GAAO,SAAAC,IAAU,UAAU,eAAAC,GAAe,GAAGC,MAAcL,GAC7DM,IAAKP,EAAM,MAAA;AAEjB,6BACG,OAAA,EAAI,WAAWQ,EAAG
|
|
1
|
+
{"version":3,"file":"Radio.js","sources":["../../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n RadioGroupItem as SRadioGroupItem,\n RadioGroup as SRadioGroup,\n type RadioGroupProps,\n type RadioGroupItemProps,\n} from \"@dsui/ui/components/radio-group\";\nimport { cn } from \"@dsui/ui/index\";\n\nexport type RadioItemProps = RadioGroupItemProps & {\n label?: React.ReactNode;\n variant?: \"option\" | \"button-group\";\n size?: \"default\" | \"sm\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n rootClassName?: string;\n};\n\nconst RadioItem = React.forwardRef<HTMLButtonElement, RadioItemProps>(\n (props, ref) => {\n const { label, variant = \"option\", rootClassName, ...itemProps } = props;\n const id = React.useId();\n\n return (\n <div className={cn(\"ds:flex ds:items-center ds:space-x-2\", rootClassName)}>\n <SRadioGroupItem ref={ref} id={id} {...itemProps} />\n {variant === \"option\" && label && (\n <label\n htmlFor={id}\n className=\"ds:text-sm ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {variant === \"button-group\" && label && (\n <span className=\"ds:sr-only\">{label}</span>\n )}\n </div>\n );\n }\n);\n\nRadioItem.displayName = \"RadioItem\";\n\nexport type RadioProps = {\n options?: Array<{\n label: React.ReactNode;\n value: string;\n disabled?: boolean;\n }>;\n label?: React.ReactNode;\n helperText?: React.ReactNode;\n variant?: \"option\" | \"button-group\";\n size?: \"default\" | \"sm\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n value?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n className?: string;\n rootClassName?: string;\n disabled?: boolean;\n} & RadioGroupProps;\n\nconst Radio = React.forwardRef<HTMLDivElement, RadioProps>((props, ref) => {\n const {\n options,\n label,\n helperText,\n variant = \"option\",\n size = \"default\",\n color,\n value,\n onValueChange,\n children,\n className,\n rootClassName,\n disabled,\n } = props;\n\n return (\n <div className={cn(\"ds:flex ds:flex-col ds:gap-1.5\", rootClassName)}>\n {label && <label className=\"ds:text-sm ds:font-medium\">{label}</label>}\n\n <SRadioGroup\n ref={ref}\n value={value}\n onValueChange={onValueChange}\n variant={variant}\n className={cn(className)}\n >\n {options &&\n options.map((option) => (\n <RadioItem\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={disabled || option.disabled}\n variant={variant}\n size={size}\n color={color}\n />\n ))}\n {children}\n </SRadioGroup>\n\n {helperText && (\n <p className=\"ds:text-xs ds:text-muted-foreground\">{helperText}</p>\n )}\n </div>\n );\n}) as React.ForwardRefExoticComponent<\n RadioProps & React.RefAttributes<HTMLDivElement>\n> & {\n Group: typeof SRadioGroup;\n Item: typeof RadioItem;\n};\n\nRadio.displayName = \"Radio\";\n\nRadio.Group = SRadioGroup;\nRadio.Item = RadioItem;\n\nexport default Radio;\nexport { type RadioGroupProps, type RadioGroupItemProps };\n"],"names":["RadioItem","React","props","ref","label","variant","rootClassName","itemProps","id","cn","jsx","SRadioGroupItem","Radio","options","helperText","size","color","value","onValueChange","children","className","disabled","jsxs","SRadioGroup","option"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAMA,IAAYC,EAAM;AAAA,EACtB,CAACC,GAAOC,MAAQ;AACd,UAAM,EAAE,OAAAC,GAAO,SAAAC,IAAU,UAAU,eAAAC,GAAe,GAAGC,MAAcL,GAC7DM,IAAKP,EAAM,MAAA;AAEjB,6BACG,OAAA,EAAI,WAAWQ,EAAG,wCAAwCH,CAAa,GACtE,UAAA;AAAA,MAAA,gBAAAI,EAACC,GAAA,EAAgB,KAAAR,GAAU,IAAAK,GAAS,GAAGD,EAAA,CAAW;AAAA,MACjDF,MAAY,YAAYD,KACvB,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASF;AAAA,UACT,WAAU;AAAA,UAET,UAAAJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJC,MAAY,kBAAkBD,uBAC5B,QAAA,EAAK,WAAU,cAAc,UAAAA,EAAA,CAAM;AAAA,IAAA,GAExC;AAAA,EAEJ;AACF;AAEAJ,EAAU,cAAc;AA6BxB,MAAMY,IAAQX,EAAM,WAAuC,CAACC,GAAOC,MAAQ;AACzE,QAAM;AAAA,IACJ,SAAAU;AAAA,IACA,OAAAT;AAAA,IACA,YAAAU;AAAA,IACA,SAAAT,IAAU;AAAA,IACV,MAAAU,IAAO;AAAA,IACP,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,eAAAd;AAAA,IACA,UAAAe;AAAA,EAAA,IACEnB;AAEJ,2BACG,OAAA,EAAI,WAAWO,EAAG,kCAAkCH,CAAa,GAC/D,UAAA;AAAA,IAAAF,KAAS,gBAAAM,EAAC,SAAA,EAAM,WAAU,6BAA6B,UAAAN,GAAM;AAAA,IAE9D,gBAAAkB;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAApB;AAAA,QACA,OAAAc;AAAA,QACA,eAAAC;AAAA,QACA,SAAAb;AAAA,QACA,WAAWI,EAAGW,CAAS;AAAA,QAEtB,UAAA;AAAA,UAAAP,KACCA,EAAQ,IAAI,CAACW,MACX,gBAAAd;AAAA,YAACV;AAAA,YAAA;AAAA,cAEC,OAAOwB,EAAO;AAAA,cACd,OAAOA,EAAO;AAAA,cACd,UAAUH,KAAYG,EAAO;AAAA,cAC7B,SAAAnB;AAAA,cACA,MAAAU;AAAA,cACA,OAAAC;AAAA,YAAA;AAAA,YANKQ,EAAO;AAAA,UAAA,CAQf;AAAA,UACFL;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFL,KACC,gBAAAJ,EAAC,KAAA,EAAE,WAAU,uCAAuC,UAAAI,EAAA,CAAW;AAAA,EAAA,GAEnE;AAEJ,CAAC;AAODF,EAAM,cAAc;AAEpBA,EAAM,QAAQW;AACdX,EAAM,OAAOZ;"}
|