@sth87/shadcn-design-system 0.0.35 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -2
- package/dist/AI_CONTEXT.md +212 -214
- package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/cjs/components/Badge/Badge.cjs +1 -1
- package/dist/cjs/components/Badge/Badge.cjs.map +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +1 -1
- package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/cjs/components/Command/Command.cjs +1 -1
- package/dist/cjs/components/Command/Command.cjs.map +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs +1 -1
- package/dist/cjs/components/Cropper/Cropper.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/TimePicker.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/cjs/components/FloatLabel.cjs +1 -1
- package/dist/cjs/components/FloatLabel.cjs.map +1 -1
- package/dist/cjs/components/Glass/Glass.cjs +1 -1
- package/dist/cjs/components/Glass/Glass.cjs.map +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -1
- package/dist/cjs/components/InputOTP/InputOTP.cjs.map +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -1
- package/dist/cjs/components/Interactive/CursorFollow.cjs.map +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs +1 -1
- package/dist/cjs/components/Marquee/Marquee.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs +1 -1
- package/dist/cjs/components/QrCode/QrCode.cjs.map +1 -1
- package/dist/cjs/components/Radio/Radio.cjs +1 -1
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
- package/dist/cjs/components/Rate/Rate.cjs +1 -1
- package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs +1 -1
- package/dist/cjs/components/Resizable/Resizable.cjs.map +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs +1 -1
- package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/cjs/components/Select/Select.cjs +1 -1
- package/dist/cjs/components/Select/Select.cjs.map +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs +2 -2
- package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -1
- package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs +1 -1
- package/dist/cjs/components/Table/data-table-pagination.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table.cjs +1 -1
- package/dist/cjs/components/Table/data-table.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Tabs/classes.cjs +1 -1
- package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs +1 -1
- package/dist/cjs/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/cjs/components/TimeGridView.cjs +1 -1
- package/dist/cjs/components/TimeGridView.cjs.map +1 -1
- package/dist/cjs/components/Toast/Toast.cjs +1 -1
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/Tour/Tour.cjs +1 -1
- package/dist/cjs/components/Tour/Tour.cjs.map +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs +1 -1
- package/dist/cjs/components/Tour/TourWrapper.cjs.map +1 -1
- package/dist/cjs/components/Upload/Upload.cjs +3 -3
- package/dist/cjs/components/Upload/Upload.cjs.map +1 -1
- package/dist/cjs/components/WheelColumn.cjs +1 -1
- package/dist/cjs/components/WheelColumn.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +2 -2
- package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs +1 -1
- package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +1 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +1 -0
- package/dist/cjs/packages/ui/src/components/accordion.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/accordion.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/avatar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/badge.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/button.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/command.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/drawer.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/input.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/label.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/pagination.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/resizable.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/select.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/separator.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sheet.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/switch.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tabs.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/textarea.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/toggle.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +1 -1
- package/dist/cjs/styles/index.css +1 -1
- package/dist/cjs/utils/animations.cjs +1 -1
- package/dist/cjs/utils/animations.cjs.map +1 -1
- package/dist/cjs/utils/css.cjs +1 -1
- package/dist/cjs/utils/css.cjs.map +1 -1
- package/dist/cjs/utils/parsers.cjs +1 -1
- package/dist/cjs/utils/parsers.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +60 -60
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.js +40 -40
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Badge/Badge.js +1 -1
- package/dist/esm/components/Badge/Badge.js.map +1 -1
- package/dist/esm/components/Breadcrumb/Breadcrumb.js +36 -36
- package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/esm/components/Button/Button.js +9 -9
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +4 -4
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Carousel/Carousel.js +165 -165
- package/dist/esm/components/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +26 -26
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Collapsible/Collapsible.js +43 -43
- package/dist/esm/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/Command/Command.js +28 -28
- package/dist/esm/components/Command/Command.js.map +1 -1
- package/dist/esm/components/ContextMenu/ContextMenu.js +11 -11
- package/dist/esm/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/esm/components/Cropper/Cropper.js +132 -132
- package/dist/esm/components/Cropper/Cropper.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +75 -75
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/RangePicker.js +136 -136
- package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/TimePicker.js +150 -150
- package/dist/esm/components/DatePicker/TimePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +114 -114
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +13 -13
- package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/esm/components/FloatLabel.js +44 -44
- package/dist/esm/components/FloatLabel.js.map +1 -1
- package/dist/esm/components/Glass/Glass.js +15 -15
- package/dist/esm/components/Glass/Glass.js.map +1 -1
- package/dist/esm/components/ImageViewer/ImageViewer.js +53 -53
- package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
- package/dist/esm/components/Input/Input.js +104 -104
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/InputOTP/InputOTP.js +16 -16
- package/dist/esm/components/InputOTP/InputOTP.js.map +1 -1
- package/dist/esm/components/Interactive/CursorFollow.js +49 -49
- package/dist/esm/components/Interactive/CursorFollow.js.map +1 -1
- package/dist/esm/components/Marquee/Marquee.js +130 -130
- package/dist/esm/components/Marquee/Marquee.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +68 -68
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/QrCode/QrCode.js +37 -37
- package/dist/esm/components/QrCode/QrCode.js.map +1 -1
- package/dist/esm/components/Radio/Radio.js +16 -16
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Rate/Rate.js +62 -62
- package/dist/esm/components/Rate/Rate.js.map +1 -1
- package/dist/esm/components/Resizable/Resizable.js +6 -6
- package/dist/esm/components/Resizable/Resizable.js.map +1 -1
- package/dist/esm/components/ScrollArea/ScrollArea.js +10 -10
- package/dist/esm/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/esm/components/Select/Select.js +64 -64
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Sheet/Sheet.js +21 -21
- package/dist/esm/components/Sheet/Sheet.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +54 -54
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Stepper/Stepper.js +198 -198
- package/dist/esm/components/Stepper/Stepper.js.map +1 -1
- package/dist/esm/components/Stepper/StepperWrapper.js +15 -15
- package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +38 -38
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +37 -37
- package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +25 -25
- package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +64 -64
- package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
- package/dist/esm/components/Table/data-table-column-header.js +18 -18
- package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
- package/dist/esm/components/Table/data-table-pagination.js +21 -21
- package/dist/esm/components/Table/data-table-pagination.js.map +1 -1
- package/dist/esm/components/Table/data-table.js +18 -18
- package/dist/esm/components/Table/data-table.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +242 -242
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/classes.js +51 -51
- package/dist/esm/components/Tabs/classes.js.map +1 -1
- package/dist/esm/components/Textarea/Textarea.js +49 -49
- package/dist/esm/components/Textarea/Textarea.js.map +1 -1
- package/dist/esm/components/TimeGridView.js +12 -12
- package/dist/esm/components/TimeGridView.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +45 -45
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +19 -19
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tour/Tour.js +11 -11
- package/dist/esm/components/Tour/Tour.js.map +1 -1
- package/dist/esm/components/Tour/TourWrapper.js +15 -15
- package/dist/esm/components/Tour/TourWrapper.js.map +1 -1
- package/dist/esm/components/Upload/Upload.js +405 -405
- package/dist/esm/components/Upload/Upload.js.map +1 -1
- package/dist/esm/components/WheelColumn.js +47 -47
- package/dist/esm/components/WheelColumn.js.map +1 -1
- package/dist/esm/lib/TextAnimation/BlurText.js +18 -18
- package/dist/esm/lib/TextAnimation/BlurText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/CircularText.js +7 -7
- package/dist/esm/lib/TextAnimation/CircularText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/FlipWords.js +21 -21
- package/dist/esm/lib/TextAnimation/FlipWords.js.map +1 -1
- package/dist/esm/lib/TextAnimation/GradientText.js +4 -4
- package/dist/esm/lib/TextAnimation/GradientText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RollingText.js +24 -24
- package/dist/esm/lib/TextAnimation/RollingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/RotatingText.js +6 -6
- package/dist/esm/lib/TextAnimation/RotatingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/ShimmeringText.js +9 -9
- package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +14 -14
- package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js +9 -9
- package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js +3 -3
- package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +1 -1
- package/dist/esm/lib/TextAnimation/TypingText.js +17 -17
- package/dist/esm/lib/TextAnimation/TypingText.js.map +1 -1
- package/dist/esm/lib/TextAnimation/WritingText.js +10 -10
- package/dist/esm/lib/TextAnimation/WritingText.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +1 -0
- package/dist/esm/packages/ui/src/components/accordion.js +31 -31
- package/dist/esm/packages/ui/src/components/accordion.js.map +1 -1
- package/dist/esm/packages/ui/src/components/alert-dialog.js +33 -33
- package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/avatar.js +20 -20
- package/dist/esm/packages/ui/src/components/avatar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/badge.js +53 -53
- package/dist/esm/packages/ui/src/components/badge.js.map +1 -1
- package/dist/esm/packages/ui/src/components/breadcrumb.js +20 -20
- package/dist/esm/packages/ui/src/components/breadcrumb.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button-group.js +31 -31
- package/dist/esm/packages/ui/src/components/button-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/button.js +90 -90
- package/dist/esm/packages/ui/src/components/button.js.map +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js +94 -94
- package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/checkbox.js +47 -47
- package/dist/esm/packages/ui/src/components/checkbox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/combobox.js +64 -64
- package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/command.js +77 -77
- package/dist/esm/packages/ui/src/components/command.js.map +1 -1
- package/dist/esm/packages/ui/src/components/context-menu.js +76 -76
- package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dialog.js +54 -54
- package/dist/esm/packages/ui/src/components/dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/drawer.js +39 -39
- package/dist/esm/packages/ui/src/components/drawer.js.map +1 -1
- package/dist/esm/packages/ui/src/components/dropdown-menu.js +109 -109
- package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input-otp.js +30 -30
- package/dist/esm/packages/ui/src/components/input-otp.js.map +1 -1
- package/dist/esm/packages/ui/src/components/input.js +19 -19
- package/dist/esm/packages/ui/src/components/input.js.map +1 -1
- package/dist/esm/packages/ui/src/components/label.js +9 -9
- package/dist/esm/packages/ui/src/components/label.js.map +1 -1
- package/dist/esm/packages/ui/src/components/pagination.js +26 -26
- package/dist/esm/packages/ui/src/components/pagination.js.map +1 -1
- package/dist/esm/packages/ui/src/components/popover.js +13 -13
- package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
- package/dist/esm/packages/ui/src/components/radio-group.js +45 -45
- package/dist/esm/packages/ui/src/components/radio-group.js.map +1 -1
- package/dist/esm/packages/ui/src/components/resizable.js +18 -18
- package/dist/esm/packages/ui/src/components/resizable.js.map +1 -1
- package/dist/esm/packages/ui/src/components/scroll-area.js +31 -31
- package/dist/esm/packages/ui/src/components/scroll-area.js.map +1 -1
- package/dist/esm/packages/ui/src/components/select.js +119 -119
- package/dist/esm/packages/ui/src/components/select.js.map +1 -1
- package/dist/esm/packages/ui/src/components/separator.js +86 -86
- package/dist/esm/packages/ui/src/components/separator.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sheet.js +50 -50
- package/dist/esm/packages/ui/src/components/sheet.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sidebar.js +198 -198
- package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/skeleton.js +3 -3
- package/dist/esm/packages/ui/src/components/skeleton.js.map +1 -1
- package/dist/esm/packages/ui/src/components/switch.js +57 -57
- package/dist/esm/packages/ui/src/components/switch.js.map +1 -1
- package/dist/esm/packages/ui/src/components/table.js +17 -17
- package/dist/esm/packages/ui/src/components/table.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tabs.js +33 -33
- package/dist/esm/packages/ui/src/components/tabs.js.map +1 -1
- package/dist/esm/packages/ui/src/components/textarea.js +17 -17
- package/dist/esm/packages/ui/src/components/textarea.js.map +1 -1
- package/dist/esm/packages/ui/src/components/toggle.js +36 -36
- package/dist/esm/packages/ui/src/components/toggle.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tooltip.js +20 -20
- package/dist/esm/packages/ui/src/components/tooltip.js.map +1 -1
- package/dist/esm/packages/ui/src/components/tree-view.js +218 -218
- package/dist/esm/packages/ui/src/components/tree-view.js.map +1 -1
- package/dist/esm/styles/index.css +1 -1
- package/dist/esm/utils/animations.js +55 -55
- package/dist/esm/utils/animations.js.map +1 -1
- package/dist/esm/utils/css.js +7 -7
- package/dist/esm/utils/css.js.map +1 -1
- package/dist/esm/utils/parsers.js +1 -1
- package/dist/types/components/DatePicker/RangePicker.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts.map +1 -1
- package/dist/types/lib/TextAnimation/TypingText.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +0 -1
- /package/dist/cjs/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.cjs +0 -0
- /package/dist/esm/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs as h, jsx as
|
|
1
|
+
import { jsxs as h, jsx as n } from "react/jsx-runtime";
|
|
2
2
|
import * as f from "react";
|
|
3
3
|
import { Calendar as ge } from "../../packages/ui/src/components/calendar.js";
|
|
4
4
|
import { Popover as ve, PopoverTrigger as we, PopoverContent as he } from "../../packages/ui/src/components/popover.js";
|
|
@@ -39,39 +39,39 @@ import { enUS as ke, vi as Se } from "date-fns/locale";
|
|
|
39
39
|
import { DATE_FORMAT as _ } from "../../constants/common.js";
|
|
40
40
|
import Re from "../Button/Button.js";
|
|
41
41
|
import Oe from "../Input/Input.js";
|
|
42
|
-
function Fe(t,
|
|
43
|
-
return t ? B(t,
|
|
42
|
+
function Fe(t, s = _, o) {
|
|
43
|
+
return t ? B(t, s, o ? { locale: o } : void 0) : "";
|
|
44
44
|
}
|
|
45
|
-
const z = (t,
|
|
46
|
-
const o = Ne(t,
|
|
45
|
+
const z = (t, s = _) => {
|
|
46
|
+
const o = Ne(t, s, /* @__PURE__ */ new Date());
|
|
47
47
|
return Pe(o) ? o : void 0;
|
|
48
48
|
};
|
|
49
49
|
function Ie(t) {
|
|
50
|
-
return t.replace(/dd|MM|yyyy/g, (
|
|
51
|
-
switch (
|
|
50
|
+
return t.replace(/dd|MM|yyyy/g, (s) => {
|
|
51
|
+
switch (s) {
|
|
52
52
|
case "dd":
|
|
53
53
|
case "MM":
|
|
54
54
|
return "99";
|
|
55
55
|
case "yyyy":
|
|
56
56
|
return "9999";
|
|
57
57
|
default:
|
|
58
|
-
return
|
|
58
|
+
return s;
|
|
59
59
|
}
|
|
60
|
-
}).replace(/d|M|y/g, (
|
|
61
|
-
switch (
|
|
60
|
+
}).replace(/d|M|y/g, (s) => {
|
|
61
|
+
switch (s) {
|
|
62
62
|
case "d":
|
|
63
63
|
case "M":
|
|
64
64
|
return "9";
|
|
65
65
|
case "y":
|
|
66
66
|
return "9";
|
|
67
67
|
default:
|
|
68
|
-
return
|
|
68
|
+
return s;
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
function Dr({
|
|
73
73
|
value: t,
|
|
74
|
-
onChange:
|
|
74
|
+
onChange: s,
|
|
75
75
|
onSelect: o,
|
|
76
76
|
calendarClassName: q,
|
|
77
77
|
side: G = "bottom",
|
|
@@ -96,93 +96,93 @@ function Dr({
|
|
|
96
96
|
hourInterval: re = 1,
|
|
97
97
|
minuteInterval: te = 1,
|
|
98
98
|
secondInterval: oe = 1,
|
|
99
|
-
disabledTimes:
|
|
100
|
-
disabledTimeRanges:
|
|
101
|
-
showNowButton:
|
|
102
|
-
nowButtonLabel:
|
|
103
|
-
timePickerLabel:
|
|
104
|
-
openOnFocus:
|
|
105
|
-
...
|
|
99
|
+
disabledTimes: se,
|
|
100
|
+
disabledTimeRanges: ie,
|
|
101
|
+
showNowButton: ne = !1,
|
|
102
|
+
nowButtonLabel: ae = "Now",
|
|
103
|
+
timePickerLabel: de,
|
|
104
|
+
openOnFocus: le = !0,
|
|
105
|
+
...i
|
|
106
106
|
}) {
|
|
107
107
|
let m, O;
|
|
108
108
|
typeof y == "string" ? (m = y, O = y) : (m = y.input, O = y.output);
|
|
109
109
|
let C;
|
|
110
110
|
N === !0 ? C = Ie(m) : typeof N == "string" && (C = N);
|
|
111
|
-
const F = R && c ? g : c ? `${m} ${g}` : m, T = t ? z(t, F) : void 0, [b, D] = f.useState(!1), [
|
|
111
|
+
const F = R && c ? g : c ? `${m} ${g}` : m, T = t ? z(t, F) : void 0, [b, D] = f.useState(!1), [a, d] = f.useState(T), [ce, v] = f.useState(T), [w, u] = f.useState(t || ""), me = f.useRef(null), I = f.useRef(!1), V = P?.locale ? P?.locale : Q === "en" ? ke : Se, A = x ? X : k;
|
|
112
112
|
f.useEffect(() => {
|
|
113
113
|
if (t !== w && !I.current) {
|
|
114
114
|
u(t || "");
|
|
115
115
|
const e = t ? z(t, F) : void 0;
|
|
116
|
-
e ? (
|
|
116
|
+
e ? (d(e), v(e)) : t || (d(void 0), v(void 0));
|
|
117
117
|
}
|
|
118
118
|
}, [t, w, F]);
|
|
119
|
-
const
|
|
119
|
+
const l = (e) => {
|
|
120
120
|
if (!e) return "";
|
|
121
121
|
let r = Fe(e, O, V);
|
|
122
122
|
return c && (r += ` ${B(e, g)}`), r;
|
|
123
123
|
}, ue = (e) => {
|
|
124
|
-
|
|
124
|
+
d(e), u(l(e)), o?.(e, l(e));
|
|
125
125
|
}, pe = (e) => {
|
|
126
126
|
if (!e) {
|
|
127
|
-
u(""),
|
|
127
|
+
u(""), d(void 0), o?.(void 0, void 0);
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
130
|
u(e);
|
|
131
131
|
const r = z(e, m);
|
|
132
|
-
r ? (
|
|
132
|
+
r ? (d(r), v(r), o?.(r, l(r))) : (d(void 0), o?.(void 0, void 0));
|
|
133
133
|
}, fe = (e, r, H) => {
|
|
134
134
|
if (!H) {
|
|
135
|
-
|
|
135
|
+
s?.(e, r, void 0);
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
|
-
const p = new Date(
|
|
138
|
+
const p = new Date(a || /* @__PURE__ */ new Date());
|
|
139
139
|
p.setHours(
|
|
140
140
|
H.getHours(),
|
|
141
141
|
H.getMinutes(),
|
|
142
142
|
H.getSeconds(),
|
|
143
143
|
0
|
|
144
|
-
),
|
|
144
|
+
), d(p), u(l(p)), o?.(p, l(p)), s?.(e, l(p), p);
|
|
145
145
|
}, U = S ? S({
|
|
146
146
|
value: w,
|
|
147
|
-
date:
|
|
147
|
+
date: a,
|
|
148
148
|
onSelect: ue,
|
|
149
149
|
onChange: pe
|
|
150
150
|
}) : /* @__PURE__ */ h(
|
|
151
151
|
Re,
|
|
152
152
|
{
|
|
153
153
|
variant: "ghost",
|
|
154
|
-
className: "
|
|
155
|
-
size:
|
|
154
|
+
className: "ds:!p-1 ds:!leading-0 ds:h-auto ds:rounded ds:hover:bg-accent ds:transition-colors",
|
|
155
|
+
size: i.size,
|
|
156
156
|
children: [
|
|
157
|
-
/* @__PURE__ */
|
|
157
|
+
/* @__PURE__ */ n(
|
|
158
158
|
Ce,
|
|
159
159
|
{
|
|
160
160
|
className: M({
|
|
161
|
-
"size-3":
|
|
162
|
-
"size-3.5": !
|
|
163
|
-
"size-4":
|
|
161
|
+
"ds:size-3": i.size === "xs" || i.size === "sm",
|
|
162
|
+
"ds:size-3.5": !i.size || i.size === "normal",
|
|
163
|
+
"ds:size-4": i.size === "lg" || i.size === "xl"
|
|
164
164
|
})
|
|
165
165
|
}
|
|
166
166
|
),
|
|
167
|
-
/* @__PURE__ */
|
|
167
|
+
/* @__PURE__ */ n("span", { className: "ds:sr-only", children: "Select date" })
|
|
168
168
|
]
|
|
169
169
|
}
|
|
170
170
|
), j = /* @__PURE__ */ h(
|
|
171
171
|
"div",
|
|
172
172
|
{
|
|
173
173
|
className: M(
|
|
174
|
-
"flex items-stretch mx-auto w-full",
|
|
175
|
-
c && !R ? "gap-0 md:max-w-lg" : "",
|
|
174
|
+
"ds:flex ds:items-stretch ds:mx-auto ds:w-full",
|
|
175
|
+
c && !R ? "ds:gap-0 ds:md:max-w-lg" : "",
|
|
176
176
|
// mode === "drawer" ? "mb-6" : "",
|
|
177
|
-
x ? "max-w-md md:max-w-md lg:max-w-lg" : ""
|
|
177
|
+
x ? "ds:max-w-md ds:md:max-w-md ds:lg:max-w-lg" : ""
|
|
178
178
|
),
|
|
179
179
|
children: [
|
|
180
|
-
!R && /* @__PURE__ */
|
|
180
|
+
!R && /* @__PURE__ */ n(
|
|
181
181
|
ge,
|
|
182
182
|
{
|
|
183
183
|
...P,
|
|
184
184
|
mode: "single",
|
|
185
|
-
selected:
|
|
185
|
+
selected: a,
|
|
186
186
|
captionLayout: "dropdown",
|
|
187
187
|
month: ce,
|
|
188
188
|
onMonthChange: v,
|
|
@@ -191,12 +191,12 @@ function Dr({
|
|
|
191
191
|
color: L,
|
|
192
192
|
onSelect: (e) => {
|
|
193
193
|
let r = e;
|
|
194
|
-
e &&
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
)),
|
|
194
|
+
e && a && c && (r = new Date(e), r.setHours(
|
|
195
|
+
a.getHours(),
|
|
196
|
+
a.getMinutes(),
|
|
197
|
+
a.getSeconds(),
|
|
198
|
+
a.getMilliseconds()
|
|
199
|
+
)), d(r), u(l(r)), o?.(r, l(r)), W && !c && D(!1);
|
|
200
200
|
},
|
|
201
201
|
locale: V,
|
|
202
202
|
formatters: {
|
|
@@ -204,20 +204,20 @@ function Dr({
|
|
|
204
204
|
},
|
|
205
205
|
showOutsideDays: Y,
|
|
206
206
|
className: M(
|
|
207
|
-
"my-auto bg-transparent mx-auto",
|
|
207
|
+
"ds:my-auto ds:bg-transparent ds:mx-auto",
|
|
208
208
|
{
|
|
209
|
-
"[--cell-size:clamp(0px,calc(100vw/7.5),52px)] mb-8 bg-transparent": x && !c || k === "drawer",
|
|
210
|
-
"[--cell-size:clamp(0px,calc(100vw/7.5),34px)]": !x && k !== "drawer",
|
|
211
|
-
"w-full": A === "drawer" && c
|
|
209
|
+
"ds:[--cell-size:clamp(0px,calc(100vw/7.5),52px)] ds:mb-8 ds:bg-transparent": x && !c || k === "drawer",
|
|
210
|
+
"ds:[--cell-size:clamp(0px,calc(100vw/7.5),34px)]": !x && k !== "drawer",
|
|
211
|
+
"ds:w-full": A === "drawer" && c
|
|
212
212
|
},
|
|
213
213
|
q
|
|
214
214
|
)
|
|
215
215
|
}
|
|
216
216
|
),
|
|
217
|
-
c && /* @__PURE__ */
|
|
217
|
+
c && /* @__PURE__ */ n("div", { className: "ds:border-l ds:border-border", children: /* @__PURE__ */ n(
|
|
218
218
|
He,
|
|
219
219
|
{
|
|
220
|
-
value:
|
|
220
|
+
value: a ? B(a, g) : void 0,
|
|
221
221
|
format: g,
|
|
222
222
|
onChange: fe,
|
|
223
223
|
showHours: !0,
|
|
@@ -227,11 +227,11 @@ function Dr({
|
|
|
227
227
|
hourInterval: re,
|
|
228
228
|
minuteInterval: te,
|
|
229
229
|
secondInterval: oe,
|
|
230
|
-
disabledTimes:
|
|
231
|
-
disabledTimeRanges:
|
|
232
|
-
showNowButton:
|
|
233
|
-
nowButtonLabel:
|
|
234
|
-
timeLabel:
|
|
230
|
+
disabledTimes: se,
|
|
231
|
+
disabledTimeRanges: ie,
|
|
232
|
+
showNowButton: ne,
|
|
233
|
+
nowButtonLabel: ae,
|
|
234
|
+
timeLabel: de,
|
|
235
235
|
standalone: !1,
|
|
236
236
|
color: L,
|
|
237
237
|
isOpen: b
|
|
@@ -240,13 +240,13 @@ function Dr({
|
|
|
240
240
|
]
|
|
241
241
|
}
|
|
242
242
|
), E = /* @__PURE__ */ h(ve, { open: b, onOpenChange: D, children: [
|
|
243
|
-
/* @__PURE__ */
|
|
244
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ n(we, { asChild: !0, disabled: i.disabled, children: U }),
|
|
244
|
+
/* @__PURE__ */ n(
|
|
245
245
|
he,
|
|
246
246
|
{
|
|
247
247
|
className: M(
|
|
248
|
-
"w-auto overflow-hidden p-0",
|
|
249
|
-
"backdrop-blur bg-background/50"
|
|
248
|
+
"ds:w-auto ds:overflow-hidden ds:p-0",
|
|
249
|
+
"ds:backdrop-blur ds:bg-background/50"
|
|
250
250
|
),
|
|
251
251
|
side: G,
|
|
252
252
|
align: J,
|
|
@@ -254,28 +254,28 @@ function Dr({
|
|
|
254
254
|
}
|
|
255
255
|
)
|
|
256
256
|
] }), K = /* @__PURE__ */ h(ye, { open: b, onOpenChange: D, children: [
|
|
257
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ n(be, { asChild: !0, children: U }),
|
|
258
258
|
/* @__PURE__ */ h(
|
|
259
259
|
De,
|
|
260
260
|
{
|
|
261
261
|
className: M(
|
|
262
|
-
"w-auto overflow-hidden p-0",
|
|
263
|
-
"backdrop-blur bg-background"
|
|
262
|
+
"ds:w-auto ds:overflow-hidden ds:p-0",
|
|
263
|
+
"ds:backdrop-blur ds:bg-background"
|
|
264
264
|
),
|
|
265
265
|
children: [
|
|
266
|
-
/* @__PURE__ */ h(Me, { className: "sr-only", children: [
|
|
267
|
-
/* @__PURE__ */
|
|
268
|
-
/* @__PURE__ */
|
|
266
|
+
/* @__PURE__ */ h(Me, { className: "ds:sr-only", children: [
|
|
267
|
+
/* @__PURE__ */ n(xe, { children: "Select date" }),
|
|
268
|
+
/* @__PURE__ */ n(ze, { children: "Set date" })
|
|
269
269
|
] }),
|
|
270
270
|
j
|
|
271
271
|
]
|
|
272
272
|
}
|
|
273
273
|
)
|
|
274
274
|
] });
|
|
275
|
-
return S ? A === "drawer" ? K : E : /* @__PURE__ */
|
|
275
|
+
return S ? A === "drawer" ? K : E : /* @__PURE__ */ n(
|
|
276
276
|
Oe,
|
|
277
277
|
{
|
|
278
|
-
...
|
|
278
|
+
...i,
|
|
279
279
|
ref: me,
|
|
280
280
|
type: "text",
|
|
281
281
|
clearable: !0,
|
|
@@ -284,18 +284,18 @@ function Dr({
|
|
|
284
284
|
onChange: (e) => {
|
|
285
285
|
I.current = !0, u(e.target.value);
|
|
286
286
|
const r = z(e.target.value, m);
|
|
287
|
-
r ? (
|
|
287
|
+
r ? (d(r), v(r), o?.(r, l(r)), s?.(e, l(r), r)) : (o?.(void 0, void 0), s?.(e, void 0, void 0));
|
|
288
288
|
},
|
|
289
289
|
onFocus: (e) => {
|
|
290
|
-
|
|
290
|
+
le && !b && !C && D(!0), i.onFocus?.(e);
|
|
291
291
|
},
|
|
292
292
|
onBlur: (e) => {
|
|
293
293
|
setTimeout(() => {
|
|
294
|
-
I.current = !1, b || !z(w, m) && w && (u(""),
|
|
295
|
-
}, 150),
|
|
294
|
+
I.current = !1, b || !z(w, m) && w && (u(""), d(void 0), v(void 0), o?.(void 0, void 0));
|
|
295
|
+
}, 150), i.onBlur?.(e);
|
|
296
296
|
},
|
|
297
297
|
onKeyDown: (e) => {
|
|
298
|
-
e.key === "ArrowDown" && (e.preventDefault(), D(!0)),
|
|
298
|
+
e.key === "ArrowDown" && (e.preventDefault(), D(!0)), i.onKeyDown?.(e);
|
|
299
299
|
},
|
|
300
300
|
suffixIcon: A === "drawer" ? K : E
|
|
301
301
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n CalendarDayButton as SCalendarDayButton,\n type CalendarDayButtonProps as SCalendarDayButtonProps,\n Calendar,\n type CalendarProps,\n type CalendarColor,\n} from \"@dsui/ui/components/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@dsui/ui/components/popover\";\nimport {\n Drawer,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"@dsui/ui/components/drawer\";\nimport { cn } from \"@dsui/ui/index\";\nimport { Input, type InputProps } from \"../Input\";\nimport { Button } from \"../Button\";\nimport {\n TimePicker,\n type TimePickerMode,\n type DisabledTimeRange,\n} from \"./TimePicker\";\nimport { CalendarIcon } from \"lucide-react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { isMobile } from \"react-device-detect\";\nimport { format as dfFormat, parse, isValid, type Locale } from \"date-fns\";\nimport { vi, enUS } from \"date-fns/locale\";\nimport { DATE_FORMAT } from \"@/constants/common\";\n\nfunction formatDate(\n date: Date | undefined,\n outputFormat: string = DATE_FORMAT,\n locale?: Locale\n) {\n if (!date) return \"\";\n\n return dfFormat(date, outputFormat, locale ? { locale } : undefined);\n}\n\nconst parseDate = (\n str: string,\n inputFormat: string = DATE_FORMAT\n): Date | undefined => {\n const date = parse(str, inputFormat, new Date());\n return isValid(date) ? date : undefined;\n};\n\nfunction generateMaskFromFormat(format: string): string {\n return format\n .replace(/dd|MM|yyyy/g, (match) => {\n switch (match) {\n case \"dd\":\n case \"MM\":\n return \"99\";\n case \"yyyy\":\n return \"9999\";\n default:\n return match;\n }\n })\n .replace(/d|M|y/g, (match) => {\n switch (match) {\n case \"d\":\n case \"M\":\n return \"9\";\n case \"y\":\n return \"9\";\n default:\n return match;\n }\n });\n}\n\nexport type FormatType = string | { input: string; output: string };\n\nexport type DatePickerRenderProps = {\n value: string;\n date?: Date;\n onSelect: (date?: Date) => void;\n onChange: (text?: string) => void;\n};\n\nexport type DatePickerProps = Omit<\n InputProps,\n \"value\" | \"onChange\" | \"onSelect\" | \"mask\" | \"children\"\n> & {\n value?: string;\n onChange?: (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n date?: Date\n ) => void;\n onSelect?: (date?: Date, value?: string) => void;\n calendarClassName?: string;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n size?: VariantProps<typeof Input>[\"size\"];\n format?: FormatType;\n language?: \"vi\" | \"en\";\n mask?: boolean | string;\n closeOnSelect?: boolean;\n calendarConfig?: CalendarProps;\n desktopMode?: \"popover\" | \"drawer\";\n mobileMode?: \"popover\" | \"drawer\";\n showOutsideDays?: boolean;\n children?: (props: DatePickerRenderProps) => React.ReactNode;\n showTime?: boolean;\n timeFormat?: \"HH:mm\" | \"HH:mm:ss\";\n hideDate?: boolean;\n numberOfMonths?: number;\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n\n // TimePicker configuration options\n timePickerMode?: TimePickerMode; // Display mode: 'wheel' (default), 'select', 'compact'\n hourInterval?: number; // Hour interval (e.g., 1, 2, 3) - defaults to 1\n minuteInterval?: number; // Minute interval (e.g., 5, 10, 15, 30) - defaults to 1\n secondInterval?: number; // Second interval (e.g., 5, 10, 15, 30) - defaults to 1\n disabledTimes?: string[]; // Array of disabled times in \"HH:mm\" or \"HH:mm:ss\" format\n disabledTimeRanges?: DisabledTimeRange[]; // Array of disabled time ranges\n showNowButton?: boolean; // Show \"Now\" button to select current time\n nowButtonLabel?: string; // Label for \"Now\" button (defaults to \"Now\")\n timePickerLabel?:\n | boolean\n | { hours?: string; minutes?: string; seconds?: string };\n openOnFocus?: boolean; // Auto open datepicker when input is focused (default: true)\n};\n\nexport function DatePicker({\n value,\n onChange,\n onSelect,\n calendarClassName,\n side = \"bottom\",\n align = \"end\",\n format = \"dd/MM/yyyy\",\n language = \"vi\",\n mask,\n closeOnSelect = false,\n calendarConfig,\n desktopMode = \"popover\",\n mobileMode = \"drawer\",\n showOutsideDays = true,\n children,\n showTime = false,\n timeFormat = \"HH:mm\",\n hideDate = false,\n numberOfMonths = 1,\n variant = \"default\",\n color = \"primary\",\n // TimePicker props\n timePickerMode = \"wheel\",\n hourInterval = 1,\n minuteInterval = 1,\n secondInterval = 1,\n disabledTimes,\n disabledTimeRanges,\n showNowButton = false,\n nowButtonLabel = \"Now\",\n timePickerLabel,\n openOnFocus = true,\n ...props\n}: DatePickerProps) {\n let inputFormat: string;\n let outputFormat: string;\n if (typeof format === \"string\") {\n inputFormat = format;\n outputFormat = format;\n } else {\n inputFormat = format.input;\n outputFormat = format.output;\n }\n\n // Determine the mask to use\n let maskToUse: string | undefined;\n if (mask === true) {\n maskToUse = generateMaskFromFormat(inputFormat);\n } else if (typeof mask === \"string\") {\n maskToUse = mask;\n }\n // If mask is false or undefined, maskToUse remains undefined\n\n // Parse initial value with correct format\n // - hideDate + showTime: time only (e.g., \"HH:mm\")\n // - showTime: date + time (e.g., \"dd/MM/yyyy HH:mm\")\n // - default: date only (e.g., \"dd/MM/yyyy\")\n const fullFormat =\n hideDate && showTime\n ? timeFormat\n : showTime\n ? `${inputFormat} ${timeFormat}`\n : inputFormat;\n\n const initialDate = value ? parseDate(value, fullFormat) : undefined;\n\n const [open, setOpen] = React.useState(false);\n const [date, setDate] = React.useState<Date | undefined>(initialDate);\n const [month, setMonth] = React.useState<Date | undefined>(initialDate);\n const [inputValue, setInputValue] = React.useState(value || \"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isUserTyping = React.useRef(false);\n\n const _locale: Locale = calendarConfig?.locale\n ? (calendarConfig?.locale as Locale)\n : language === \"en\"\n ? enUS\n : vi;\n\n const mode = isMobile ? mobileMode : desktopMode;\n\n // Sync inputValue when value prop changes from outside\n React.useEffect(() => {\n if (value !== inputValue && !isUserTyping.current) {\n setInputValue(value || \"\");\n const parsedDate = value ? parseDate(value, fullFormat) : undefined;\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n } else if (!value) {\n // Clear states if value is empty\n setDate(undefined);\n setMonth(undefined);\n }\n }\n }, [value, inputValue, fullFormat]);\n\n // Helper to format date-time based on showTime and timeFormat\n const formatDateTimeValue = (d: Date | undefined): string => {\n if (!d) return \"\";\n let result = formatDate(d, outputFormat, _locale);\n if (showTime) {\n result += ` ${dfFormat(d, timeFormat)}`;\n }\n return result;\n };\n\n // Helper functions for render props\n const handleSelectForRenderProp = (date?: Date) => {\n setDate(date);\n setInputValue(formatDateTimeValue(date));\n onSelect?.(date, formatDateTimeValue(date));\n };\n\n const handleChangeForRenderProp = (text?: string) => {\n if (!text) {\n setInputValue(\"\");\n setDate(undefined);\n onSelect?.(undefined, undefined);\n return;\n }\n setInputValue(text);\n const parsedDate = parseDate(text, inputFormat);\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n onSelect?.(parsedDate, formatDateTimeValue(parsedDate));\n } else {\n setDate(undefined);\n onSelect?.(undefined, undefined);\n }\n };\n\n const handleTimeChange = (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n newDate?: Date\n ) => {\n if (!newDate) {\n // Handle clear/invalid time\n onChange?.(event, value, undefined);\n return;\n }\n\n // Merge: keep date (year, month, day) from Calendar, take time (hours, minutes, seconds) from TimePicker\n const mergedDate = new Date(date || new Date());\n mergedDate.setHours(\n newDate.getHours(),\n newDate.getMinutes(),\n newDate.getSeconds(),\n 0\n );\n\n setDate(mergedDate);\n setInputValue(formatDateTimeValue(mergedDate));\n onSelect?.(mergedDate, formatDateTimeValue(mergedDate));\n onChange?.(event, formatDateTimeValue(mergedDate), mergedDate);\n };\n\n // Determine trigger component\n const triggerComponent = children ? (\n children({\n value: inputValue,\n date,\n onSelect: handleSelectForRenderProp,\n onChange: handleChangeForRenderProp,\n })\n ) : (\n <Button\n variant=\"ghost\"\n className=\"!p-1 !leading-0 h-auto rounded hover:bg-accent transition-colors\"\n size={props.size}\n >\n <CalendarIcon\n className={cn({\n \"size-3\": props.size === \"xs\" || props.size === \"sm\",\n \"size-3.5\": !props.size || props.size === \"normal\",\n \"size-4\": props.size === \"lg\" || props.size === \"xl\",\n })}\n />\n <span className=\"sr-only\">Select date</span>\n </Button>\n );\n\n const calendarSelection = (\n <div\n className={cn(\n \"flex items-stretch mx-auto w-full\",\n showTime && !hideDate ? \"gap-0 md:max-w-lg\" : \"\",\n // mode === \"drawer\" ? \"mb-6\" : \"\",\n isMobile ? \"max-w-md md:max-w-md lg:max-w-lg\" : \"\"\n )}\n >\n {!hideDate && (\n <Calendar\n {...calendarConfig}\n mode=\"single\"\n selected={date}\n captionLayout=\"dropdown\"\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={isMobile ? 1 : numberOfMonths || 1}\n variant={variant}\n color={color}\n onSelect={(selectedDate) => {\n // Preserve time from current date when selecting new date\n let newDate = selectedDate;\n if (selectedDate && date && showTime) {\n newDate = new Date(selectedDate);\n newDate.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n setDate(newDate);\n setInputValue(formatDateTimeValue(newDate));\n onSelect?.(newDate, formatDateTimeValue(newDate));\n if (closeOnSelect && !showTime) setOpen(false);\n }}\n locale={_locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(_locale.code, { month: \"short\" }),\n }}\n showOutsideDays={showOutsideDays}\n className={cn(\n \"my-auto bg-transparent mx-auto\",\n {\n \"[--cell-size:clamp(0px,calc(100vw/7.5),52px)] mb-8 bg-transparent\":\n (isMobile && !showTime) || desktopMode === \"drawer\",\n \"[--cell-size:clamp(0px,calc(100vw/7.5),34px)]\":\n !isMobile && desktopMode !== \"drawer\",\n \"w-full\": mode === \"drawer\" && showTime,\n },\n calendarClassName\n )}\n />\n )}\n {showTime && (\n <div className=\"border-l border-border\">\n <TimePicker\n value={date ? dfFormat(date, timeFormat) : undefined}\n format={timeFormat}\n onChange={handleTimeChange}\n showHours\n showMinutes\n showSeconds={timeFormat === \"HH:mm:ss\"}\n mode={timePickerMode}\n hourInterval={hourInterval}\n minuteInterval={minuteInterval}\n secondInterval={secondInterval}\n disabledTimes={disabledTimes}\n disabledTimeRanges={disabledTimeRanges}\n showNowButton={showNowButton}\n nowButtonLabel={nowButtonLabel}\n timeLabel={timePickerLabel}\n standalone={false}\n color={color}\n isOpen={open}\n />\n </div>\n )}\n </div>\n );\n\n const popPicker = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={props.disabled}>\n {triggerComponent}\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n \"w-auto overflow-hidden p-0\",\n \"backdrop-blur bg-background/50\"\n )}\n side={side}\n align={align}\n >\n {calendarSelection}\n </PopoverContent>\n </Popover>\n );\n\n const drawPicker = (\n <Drawer open={open} onOpenChange={setOpen}>\n <DrawerTrigger asChild>{triggerComponent}</DrawerTrigger>\n <DrawerContent\n className={cn(\n \"w-auto overflow-hidden p-0\",\n \"backdrop-blur bg-background\"\n )}\n >\n <DrawerHeader className=\"sr-only\">\n <DrawerTitle>Select date</DrawerTitle>\n <DrawerDescription>Set date</DrawerDescription>\n </DrawerHeader>\n {calendarSelection}\n </DrawerContent>\n </Drawer>\n );\n\n // If children is provided, use render prop pattern with picker\n if (children) {\n return mode === \"drawer\" ? drawPicker : popPicker;\n }\n\n // Default input rendering\n return (\n <Input\n {...props}\n ref={inputRef}\n type=\"text\"\n clearable\n value={inputValue}\n mask={maskToUse}\n onChange={(e) => {\n isUserTyping.current = true;\n setInputValue(e.target.value);\n const date = parseDate(e.target.value, inputFormat);\n if (date) {\n setDate(date);\n setMonth(date);\n onSelect?.(date, formatDateTimeValue(date));\n onChange?.(e, formatDateTimeValue(date), date);\n } else {\n onSelect?.(undefined, undefined);\n onChange?.(e, undefined, undefined);\n }\n }}\n onFocus={(e) => {\n // Don't auto-open if mask is enabled - user wants to type directly\n if (openOnFocus && !open && !maskToUse) {\n setOpen(true);\n }\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n // Don't clear value when picker is open - user might be interacting with it\n // The onBlur fires when focus moves to the picker\n setTimeout(() => {\n isUserTyping.current = false;\n // Only validate and clear if picker is closed\n if (!open) {\n const parsedDate = parseDate(inputValue, inputFormat);\n if (!parsedDate && inputValue) {\n setInputValue(\"\");\n setDate(undefined);\n setMonth(undefined);\n onSelect?.(undefined, undefined);\n }\n }\n }, 150);\n props.onBlur?.(e);\n }}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setOpen(true);\n }\n props.onKeyDown?.(e);\n }}\n suffixIcon={mode === \"drawer\" ? drawPicker : popPicker}\n />\n );\n}\n"],"names":["formatDate","date","outputFormat","DATE_FORMAT","locale","dfFormat","parseDate","str","inputFormat","parse","isValid","generateMaskFromFormat","format","match","DatePicker","value","onChange","onSelect","calendarClassName","side","align","language","mask","closeOnSelect","calendarConfig","desktopMode","mobileMode","showOutsideDays","children","showTime","timeFormat","hideDate","numberOfMonths","variant","color","timePickerMode","hourInterval","minuteInterval","secondInterval","disabledTimes","disabledTimeRanges","showNowButton","nowButtonLabel","timePickerLabel","openOnFocus","props","maskToUse","fullFormat","initialDate","open","setOpen","React","setDate","month","setMonth","inputValue","setInputValue","inputRef","isUserTyping","_locale","enUS","vi","mode","isMobile","parsedDate","formatDateTimeValue","d","result","handleSelectForRenderProp","handleChangeForRenderProp","text","handleTimeChange","event","newDate","mergedDate","triggerComponent","jsxs","Button","jsx","CalendarIcon","cn","calendarSelection","Calendar","selectedDate","TimePicker","popPicker","Popover","PopoverTrigger","PopoverContent","drawPicker","Drawer","DrawerTrigger","DrawerContent","DrawerHeader","DrawerTitle","DrawerDescription","Input"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAASA,GACPC,GACAC,IAAuBC,GACvBC,GACA;AACA,SAAKH,IAEEI,EAASJ,GAAMC,GAAcE,IAAS,EAAE,QAAAA,EAAA,IAAW,MAAS,IAFjD;AAGpB;AAEA,MAAME,IAAY,CAChBC,GACAC,IAAsBL,MACD;AACrB,QAAMF,IAAOQ,GAAMF,GAAKC,GAAa,oBAAI,MAAM;AAC/C,SAAOE,GAAQT,CAAI,IAAIA,IAAO;AAChC;AAEA,SAASU,GAAuBC,GAAwB;AACtD,SAAOA,EACJ,QAAQ,eAAe,CAACC,MAAU;AACjC,YAAQA,GAAA;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAOA;AAAA,IAAA;AAAA,EAEb,CAAC,EACA,QAAQ,UAAU,CAACA,MAAU;AAC5B,YAAQA,GAAA;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAOA;AAAA,IAAA;AAAA,EAEb,CAAC;AACL;AAyDO,SAASC,GAAW;AAAA,EACzB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EAAA,QACRR,IAAS;AAAA,EACT,UAAAS,IAAW;AAAA,EACX,MAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,gBAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,iBAAAC,IAAkB;AAAA,EAClB,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAa;AAAA,EACb,UAAAC,IAAW;AAAA,EACX,gBAAAC,IAAiB;AAAA,EACjB,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA;AAAA,EAER,gBAAAC,KAAiB;AAAA,EACjB,cAAAC,KAAe;AAAA,EACf,gBAAAC,KAAiB;AAAA,EACjB,gBAAAC,KAAiB;AAAA,EACjB,eAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,eAAAC,KAAgB;AAAA,EAChB,gBAAAC,KAAiB;AAAA,EACjB,iBAAAC;AAAA,EACA,aAAAC,KAAc;AAAA,EACd,GAAGC;AACL,GAAoB;AAClB,MAAIrC,GACAN;AACJ,EAAI,OAAOU,KAAW,YACpBJ,IAAcI,GACdV,IAAeU,MAEfJ,IAAcI,EAAO,OACrBV,IAAeU,EAAO;AAIxB,MAAIkC;AACJ,EAAIxB,MAAS,KACXwB,IAAYnC,GAAuBH,CAAW,IACrC,OAAOc,KAAS,aACzBwB,IAAYxB;AAQd,QAAMyB,IACJhB,KAAYF,IACRC,IACAD,IACE,GAAGrB,CAAW,IAAIsB,CAAU,KAC5BtB,GAEFwC,IAAcjC,IAAQT,EAAUS,GAAOgC,CAAU,IAAI,QAErD,CAACE,GAAMC,CAAO,IAAIC,EAAM,SAAS,EAAK,GACtC,CAAClD,GAAMmD,CAAO,IAAID,EAAM,SAA2BH,CAAW,GAC9D,CAACK,IAAOC,CAAQ,IAAIH,EAAM,SAA2BH,CAAW,GAChE,CAACO,GAAYC,CAAa,IAAIL,EAAM,SAASpC,KAAS,EAAE,GACxD0C,KAAWN,EAAM,OAAyB,IAAI,GAC9CO,IAAeP,EAAM,OAAO,EAAK,GAEjCQ,IAAkBnC,GAAgB,SACnCA,GAAgB,SACjBH,MAAa,OACXuC,KACAC,IAEAC,IAAOC,IAAWrC,IAAaD;AAGrC,EAAA0B,EAAM,UAAU,MAAM;AACpB,QAAIpC,MAAUwC,KAAc,CAACG,EAAa,SAAS;AACjD,MAAAF,EAAczC,KAAS,EAAE;AACzB,YAAMiD,IAAajD,IAAQT,EAAUS,GAAOgC,CAAU,IAAI;AAC1D,MAAIiB,KACFZ,EAAQY,CAAU,GAClBV,EAASU,CAAU,KACTjD,MAEVqC,EAAQ,MAAS,GACjBE,EAAS,MAAS;AAAA,IAEtB;AAAA,EACF,GAAG,CAACvC,GAAOwC,GAAYR,CAAU,CAAC;AAGlC,QAAMkB,IAAsB,CAACC,MAAgC;AAC3D,QAAI,CAACA,EAAG,QAAO;AACf,QAAIC,IAASnE,GAAWkE,GAAGhE,GAAcyD,CAAO;AAChD,WAAI9B,MACFsC,KAAU,IAAI9D,EAAS6D,GAAGpC,CAAU,CAAC,KAEhCqC;AAAA,EACT,GAGMC,KAA4B,CAACnE,MAAgB;AACjD,IAAAmD,EAAQnD,CAAI,GACZuD,EAAcS,EAAoBhE,CAAI,CAAC,GACvCgB,IAAWhB,GAAMgE,EAAoBhE,CAAI,CAAC;AAAA,EAC5C,GAEMoE,KAA4B,CAACC,MAAkB;AACnD,QAAI,CAACA,GAAM;AACT,MAAAd,EAAc,EAAE,GAChBJ,EAAQ,MAAS,GACjBnC,IAAW,QAAW,MAAS;AAC/B;AAAA,IACF;AACA,IAAAuC,EAAcc,CAAI;AAClB,UAAMN,IAAa1D,EAAUgE,GAAM9D,CAAW;AAC9C,IAAIwD,KACFZ,EAAQY,CAAU,GAClBV,EAASU,CAAU,GACnB/C,IAAW+C,GAAYC,EAAoBD,CAAU,CAAC,MAEtDZ,EAAQ,MAAS,GACjBnC,IAAW,QAAW,MAAS;AAAA,EAEnC,GAEMsD,KAAmB,CACvBC,GACAzD,GACA0D,MACG;AACH,QAAI,CAACA,GAAS;AAEZ,MAAAzD,IAAWwD,GAAOzD,GAAO,MAAS;AAClC;AAAA,IACF;AAGA,UAAM2D,IAAa,IAAI,KAAKzE,KAAQ,oBAAI,MAAM;AAC9C,IAAAyE,EAAW;AAAA,MACTD,EAAQ,SAAA;AAAA,MACRA,EAAQ,WAAA;AAAA,MACRA,EAAQ,WAAA;AAAA,MACR;AAAA,IAAA,GAGFrB,EAAQsB,CAAU,GAClBlB,EAAcS,EAAoBS,CAAU,CAAC,GAC7CzD,IAAWyD,GAAYT,EAAoBS,CAAU,CAAC,GACtD1D,IAAWwD,GAAOP,EAAoBS,CAAU,GAAGA,CAAU;AAAA,EAC/D,GAGMC,IAAmB/C,IACvBA,EAAS;AAAA,IACP,OAAO2B;AAAA,IACP,MAAAtD;AAAA,IACA,UAAUmE;AAAA,IACV,UAAUC;AAAA,EAAA,CACX,IAED,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,MAAMhC,EAAM;AAAA,MAEZ,UAAA;AAAA,QAAA,gBAAAiC;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,WAAWC,EAAG;AAAA,cACZ,UAAUnC,EAAM,SAAS,QAAQA,EAAM,SAAS;AAAA,cAChD,YAAY,CAACA,EAAM,QAAQA,EAAM,SAAS;AAAA,cAC1C,UAAUA,EAAM,SAAS,QAAQA,EAAM,SAAS;AAAA,YAAA,CACjD;AAAA,UAAA;AAAA,QAAA;AAAA,QAEH,gBAAAiC,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,cAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAInCG,IACJ,gBAAAL;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWI;AAAA,QACT;AAAA,QACAnD,KAAY,CAACE,IAAW,sBAAsB;AAAA;AAAA,QAE9CgC,IAAW,qCAAqC;AAAA,MAAA;AAAA,MAGjD,UAAA;AAAA,QAAA,CAAChC,KACA,gBAAA+C;AAAA,UAACI;AAAA,UAAA;AAAA,YACE,GAAG1D;AAAA,YACJ,MAAK;AAAA,YACL,UAAUvB;AAAA,YACV,eAAc;AAAA,YACd,OAAAoD;AAAA,YACA,eAAeC;AAAA,YACf,gBAAgBS,IAAW,IAAI/B,KAAkB;AAAA,YACjD,SAAAC;AAAA,YACA,OAAAC;AAAA,YACA,UAAU,CAACiD,MAAiB;AAE1B,kBAAIV,IAAUU;AACd,cAAIA,KAAgBlF,KAAQ4B,MAC1B4C,IAAU,IAAI,KAAKU,CAAY,GAC/BV,EAAQ;AAAA,gBACNxE,EAAK,SAAA;AAAA,gBACLA,EAAK,WAAA;AAAA,gBACLA,EAAK,WAAA;AAAA,gBACLA,EAAK,gBAAA;AAAA,cAAgB,IAGzBmD,EAAQqB,CAAO,GACfjB,EAAcS,EAAoBQ,CAAO,CAAC,GAC1CxD,IAAWwD,GAASR,EAAoBQ,CAAO,CAAC,GAC5ClD,KAAiB,CAACM,KAAUqB,EAAQ,EAAK;AAAA,YAC/C;AAAA,YACA,QAAQS;AAAA,YACR,YAAY;AAAA,cACV,qBAAqB,CAAC1D,MACpBA,EAAK,eAAe0D,EAAQ,MAAM,EAAE,OAAO,QAAA,CAAS;AAAA,YAAA;AAAA,YAExD,iBAAAhC;AAAA,YACA,WAAWqD;AAAA,cACT;AAAA,cACA;AAAA,gBACE,qEACGjB,KAAY,CAAClC,KAAaJ,MAAgB;AAAA,gBAC7C,iDACE,CAACsC,KAAYtC,MAAgB;AAAA,gBAC/B,UAAUqC,MAAS,YAAYjC;AAAA,cAAA;AAAA,cAEjCX;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAGHW,KACC,gBAAAiD,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA,gBAAAA;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,OAAOnF,IAAOI,EAASJ,GAAM6B,CAAU,IAAI;AAAA,YAC3C,QAAQA;AAAA,YACR,UAAUyC;AAAA,YACV,WAAS;AAAA,YACT,aAAW;AAAA,YACX,aAAazC,MAAe;AAAA,YAC5B,MAAMK;AAAA,YACN,cAAAC;AAAA,YACA,gBAAAC;AAAA,YACA,gBAAAC;AAAA,YACA,eAAAC;AAAA,YACA,oBAAAC;AAAA,YACA,eAAAC;AAAA,YACA,gBAAAC;AAAA,YACA,WAAWC;AAAA,YACX,YAAY;AAAA,YACZ,OAAAT;AAAA,YACA,QAAQe;AAAA,UAAA;AAAA,QAAA,EACV,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAKAoC,IACJ,gBAAAT,EAACU,IAAA,EAAQ,MAAArC,GAAY,cAAcC,GACjC,UAAA;AAAA,IAAA,gBAAA4B,EAACS,MAAe,SAAO,IAAC,UAAU1C,EAAM,UACrC,UAAA8B,GACH;AAAA,IACA,gBAAAG;AAAA,MAACU;AAAA,MAAA;AAAA,QACC,WAAWR;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,MAAA7D;AAAA,QACA,OAAAC;AAAA,QAEC,UAAA6D;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF,GAGIQ,IACJ,gBAAAb,EAACc,IAAA,EAAO,MAAAzC,GAAY,cAAcC,GAChC,UAAA;AAAA,IAAA,gBAAA4B,EAACa,IAAA,EAAc,SAAO,IAAE,UAAAhB,GAAiB;AAAA,IACzC,gBAAAC;AAAA,MAACgB;AAAA,MAAA;AAAA,QACC,WAAWZ;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAJ,EAACiB,IAAA,EAAa,WAAU,WACtB,UAAA;AAAA,YAAA,gBAAAf,EAACgB,MAAY,UAAA,cAAA,CAAW;AAAA,YACxB,gBAAAhB,EAACiB,MAAkB,UAAA,WAAA,CAAQ;AAAA,UAAA,GAC7B;AAAA,UACCd;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAIF,SAAIrD,IACKkC,MAAS,WAAW2B,IAAaJ,IAKxC,gBAAAP;AAAA,IAACkB;AAAA,IAAA;AAAA,MACE,GAAGnD;AAAA,MACJ,KAAKY;AAAA,MACL,MAAK;AAAA,MACL,WAAS;AAAA,MACT,OAAOF;AAAA,MACP,MAAMT;AAAA,MACN,UAAU,CAAC,MAAM;AACf,QAAAY,EAAa,UAAU,IACvBF,EAAc,EAAE,OAAO,KAAK;AAC5B,cAAMvD,IAAOK,EAAU,EAAE,OAAO,OAAOE,CAAW;AAClD,QAAIP,KACFmD,EAAQnD,CAAI,GACZqD,EAASrD,CAAI,GACbgB,IAAWhB,GAAMgE,EAAoBhE,CAAI,CAAC,GAC1Ce,IAAW,GAAGiD,EAAoBhE,CAAI,GAAGA,CAAI,MAE7CgB,IAAW,QAAW,MAAS,GAC/BD,IAAW,GAAG,QAAW,MAAS;AAAA,MAEtC;AAAA,MACA,SAAS,CAAC,MAAM;AAEd,QAAI4B,MAAe,CAACK,KAAQ,CAACH,KAC3BI,EAAQ,EAAI,GAEdL,EAAM,UAAU,CAAC;AAAA,MACnB;AAAA,MACA,QAAQ,CAAC,MAAM;AAGb,mBAAW,MAAM;AACf,UAAAa,EAAa,UAAU,IAElBT,KAEC,CADe3C,EAAUiD,GAAY/C,CAAW,KACjC+C,MACjBC,EAAc,EAAE,GAChBJ,EAAQ,MAAS,GACjBE,EAAS,MAAS,GAClBrC,IAAW,QAAW,MAAS;AAAA,QAGrC,GAAG,GAAG,GACN4B,EAAM,SAAS,CAAC;AAAA,MAClB;AAAA,MACA,WAAW,CAAC,MAAM;AAChB,QAAI,EAAE,QAAQ,gBACZ,EAAE,eAAA,GACFK,EAAQ,EAAI,IAEdL,EAAM,YAAY,CAAC;AAAA,MACrB;AAAA,MACA,YAAYiB,MAAS,WAAW2B,IAAaJ;AAAA,IAAA;AAAA,EAAA;AAGnD;"}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n CalendarDayButton as SCalendarDayButton,\n type CalendarDayButtonProps as SCalendarDayButtonProps,\n Calendar,\n type CalendarProps,\n type CalendarColor,\n} from \"@dsui/ui/components/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@dsui/ui/components/popover\";\nimport {\n Drawer,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"@dsui/ui/components/drawer\";\nimport { cn } from \"@dsui/ui/index\";\nimport { Input, type InputProps } from \"../Input\";\nimport { Button } from \"../Button\";\nimport {\n TimePicker,\n type TimePickerMode,\n type DisabledTimeRange,\n} from \"./TimePicker\";\nimport { CalendarIcon } from \"lucide-react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { isMobile } from \"react-device-detect\";\nimport { format as dfFormat, parse, isValid, type Locale } from \"date-fns\";\nimport { vi, enUS } from \"date-fns/locale\";\nimport { DATE_FORMAT } from \"@/constants/common\";\n\nfunction formatDate(\n date: Date | undefined,\n outputFormat: string = DATE_FORMAT,\n locale?: Locale\n) {\n if (!date) return \"\";\n\n return dfFormat(date, outputFormat, locale ? { locale } : undefined);\n}\n\nconst parseDate = (\n str: string,\n inputFormat: string = DATE_FORMAT\n): Date | undefined => {\n const date = parse(str, inputFormat, new Date());\n return isValid(date) ? date : undefined;\n};\n\nfunction generateMaskFromFormat(format: string): string {\n return format\n .replace(/dd|MM|yyyy/g, (match) => {\n switch (match) {\n case \"dd\":\n case \"MM\":\n return \"99\";\n case \"yyyy\":\n return \"9999\";\n default:\n return match;\n }\n })\n .replace(/d|M|y/g, (match) => {\n switch (match) {\n case \"d\":\n case \"M\":\n return \"9\";\n case \"y\":\n return \"9\";\n default:\n return match;\n }\n });\n}\n\nexport type FormatType = string | { input: string; output: string };\n\nexport type DatePickerRenderProps = {\n value: string;\n date?: Date;\n onSelect: (date?: Date) => void;\n onChange: (text?: string) => void;\n};\n\nexport type DatePickerProps = Omit<\n InputProps,\n \"value\" | \"onChange\" | \"onSelect\" | \"mask\" | \"children\"\n> & {\n value?: string;\n onChange?: (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n date?: Date\n ) => void;\n onSelect?: (date?: Date, value?: string) => void;\n calendarClassName?: string;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n size?: VariantProps<typeof Input>[\"size\"];\n format?: FormatType;\n language?: \"vi\" | \"en\";\n mask?: boolean | string;\n closeOnSelect?: boolean;\n calendarConfig?: CalendarProps;\n desktopMode?: \"popover\" | \"drawer\";\n mobileMode?: \"popover\" | \"drawer\";\n showOutsideDays?: boolean;\n children?: (props: DatePickerRenderProps) => React.ReactNode;\n showTime?: boolean;\n timeFormat?: \"HH:mm\" | \"HH:mm:ss\";\n hideDate?: boolean;\n numberOfMonths?: number;\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n\n // TimePicker configuration options\n timePickerMode?: TimePickerMode; // Display mode: 'wheel' (default), 'select', 'compact'\n hourInterval?: number; // Hour interval (e.g., 1, 2, 3) - defaults to 1\n minuteInterval?: number; // Minute interval (e.g., 5, 10, 15, 30) - defaults to 1\n secondInterval?: number; // Second interval (e.g., 5, 10, 15, 30) - defaults to 1\n disabledTimes?: string[]; // Array of disabled times in \"HH:mm\" or \"HH:mm:ss\" format\n disabledTimeRanges?: DisabledTimeRange[]; // Array of disabled time ranges\n showNowButton?: boolean; // Show \"Now\" button to select current time\n nowButtonLabel?: string; // Label for \"Now\" button (defaults to \"Now\")\n timePickerLabel?:\n | boolean\n | { hours?: string; minutes?: string; seconds?: string };\n openOnFocus?: boolean; // Auto open datepicker when input is focused (default: true)\n};\n\nexport function DatePicker({\n value,\n onChange,\n onSelect,\n calendarClassName,\n side = \"bottom\",\n align = \"end\",\n format = \"dd/MM/yyyy\",\n language = \"vi\",\n mask,\n closeOnSelect = false,\n calendarConfig,\n desktopMode = \"popover\",\n mobileMode = \"drawer\",\n showOutsideDays = true,\n children,\n showTime = false,\n timeFormat = \"HH:mm\",\n hideDate = false,\n numberOfMonths = 1,\n variant = \"default\",\n color = \"primary\",\n // TimePicker props\n timePickerMode = \"wheel\",\n hourInterval = 1,\n minuteInterval = 1,\n secondInterval = 1,\n disabledTimes,\n disabledTimeRanges,\n showNowButton = false,\n nowButtonLabel = \"Now\",\n timePickerLabel,\n openOnFocus = true,\n ...props\n}: DatePickerProps) {\n let inputFormat: string;\n let outputFormat: string;\n if (typeof format === \"string\") {\n inputFormat = format;\n outputFormat = format;\n } else {\n inputFormat = format.input;\n outputFormat = format.output;\n }\n\n // Determine the mask to use\n let maskToUse: string | undefined;\n if (mask === true) {\n maskToUse = generateMaskFromFormat(inputFormat);\n } else if (typeof mask === \"string\") {\n maskToUse = mask;\n }\n // If mask is false or undefined, maskToUse remains undefined\n\n // Parse initial value with correct format\n // - hideDate + showTime: time only (e.g., \"HH:mm\")\n // - showTime: date + time (e.g., \"dd/MM/yyyy HH:mm\")\n // - default: date only (e.g., \"dd/MM/yyyy\")\n const fullFormat =\n hideDate && showTime\n ? timeFormat\n : showTime\n ? `${inputFormat} ${timeFormat}`\n : inputFormat;\n\n const initialDate = value ? parseDate(value, fullFormat) : undefined;\n\n const [open, setOpen] = React.useState(false);\n const [date, setDate] = React.useState<Date | undefined>(initialDate);\n const [month, setMonth] = React.useState<Date | undefined>(initialDate);\n const [inputValue, setInputValue] = React.useState(value || \"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isUserTyping = React.useRef(false);\n\n const _locale: Locale = calendarConfig?.locale\n ? (calendarConfig?.locale as Locale)\n : language === \"en\"\n ? enUS\n : vi;\n\n const mode = isMobile ? mobileMode : desktopMode;\n\n // Sync inputValue when value prop changes from outside\n React.useEffect(() => {\n if (value !== inputValue && !isUserTyping.current) {\n setInputValue(value || \"\");\n const parsedDate = value ? parseDate(value, fullFormat) : undefined;\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n } else if (!value) {\n // Clear states if value is empty\n setDate(undefined);\n setMonth(undefined);\n }\n }\n }, [value, inputValue, fullFormat]);\n\n // Helper to format date-time based on showTime and timeFormat\n const formatDateTimeValue = (d: Date | undefined): string => {\n if (!d) return \"\";\n let result = formatDate(d, outputFormat, _locale);\n if (showTime) {\n result += ` ${dfFormat(d, timeFormat)}`;\n }\n return result;\n };\n\n // Helper functions for render props\n const handleSelectForRenderProp = (date?: Date) => {\n setDate(date);\n setInputValue(formatDateTimeValue(date));\n onSelect?.(date, formatDateTimeValue(date));\n };\n\n const handleChangeForRenderProp = (text?: string) => {\n if (!text) {\n setInputValue(\"\");\n setDate(undefined);\n onSelect?.(undefined, undefined);\n return;\n }\n setInputValue(text);\n const parsedDate = parseDate(text, inputFormat);\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n onSelect?.(parsedDate, formatDateTimeValue(parsedDate));\n } else {\n setDate(undefined);\n onSelect?.(undefined, undefined);\n }\n };\n\n const handleTimeChange = (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n newDate?: Date\n ) => {\n if (!newDate) {\n // Handle clear/invalid time\n onChange?.(event, value, undefined);\n return;\n }\n\n // Merge: keep date (year, month, day) from Calendar, take time (hours, minutes, seconds) from TimePicker\n const mergedDate = new Date(date || new Date());\n mergedDate.setHours(\n newDate.getHours(),\n newDate.getMinutes(),\n newDate.getSeconds(),\n 0\n );\n\n setDate(mergedDate);\n setInputValue(formatDateTimeValue(mergedDate));\n onSelect?.(mergedDate, formatDateTimeValue(mergedDate));\n onChange?.(event, formatDateTimeValue(mergedDate), mergedDate);\n };\n\n // Determine trigger component\n const triggerComponent = children ? (\n children({\n value: inputValue,\n date,\n onSelect: handleSelectForRenderProp,\n onChange: handleChangeForRenderProp,\n })\n ) : (\n <Button\n variant=\"ghost\"\n className=\"ds:!p-1 ds:!leading-0 ds:h-auto ds:rounded ds:hover:bg-accent ds:transition-colors\"\n size={props.size}\n >\n <CalendarIcon\n className={cn({\n \"ds:size-3\": props.size === \"xs\" || props.size === \"sm\",\n \"ds:size-3.5\": !props.size || props.size === \"normal\",\n \"ds:size-4\": props.size === \"lg\" || props.size === \"xl\",\n })}\n />\n <span className=\"ds:sr-only\">Select date</span>\n </Button>\n );\n\n const calendarSelection = (\n <div\n className={cn(\n \"ds:flex ds:items-stretch ds:mx-auto ds:w-full\",\n showTime && !hideDate ? \"ds:gap-0 ds:md:max-w-lg\" : \"\",\n // mode === \"drawer\" ? \"mb-6\" : \"\",\n isMobile ? \"ds:max-w-md ds:md:max-w-md ds:lg:max-w-lg\" : \"\"\n )}\n >\n {!hideDate && (\n <Calendar\n {...calendarConfig}\n mode=\"single\"\n selected={date}\n captionLayout=\"dropdown\"\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={isMobile ? 1 : numberOfMonths || 1}\n variant={variant}\n color={color}\n onSelect={(selectedDate) => {\n // Preserve time from current date when selecting new date\n let newDate = selectedDate;\n if (selectedDate && date && showTime) {\n newDate = new Date(selectedDate);\n newDate.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n setDate(newDate);\n setInputValue(formatDateTimeValue(newDate));\n onSelect?.(newDate, formatDateTimeValue(newDate));\n if (closeOnSelect && !showTime) setOpen(false);\n }}\n locale={_locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(_locale.code, { month: \"short\" }),\n }}\n showOutsideDays={showOutsideDays}\n className={cn(\n \"ds:my-auto ds:bg-transparent ds:mx-auto\",\n {\n \"ds:[--cell-size:clamp(0px,calc(100vw/7.5),52px)] ds:mb-8 ds:bg-transparent\":\n (isMobile && !showTime) || desktopMode === \"drawer\",\n \"ds:[--cell-size:clamp(0px,calc(100vw/7.5),34px)]\":\n !isMobile && desktopMode !== \"drawer\",\n \"ds:w-full\": mode === \"drawer\" && showTime,\n },\n calendarClassName\n )}\n />\n )}\n {showTime && (\n <div className=\"ds:border-l ds:border-border\">\n <TimePicker\n value={date ? dfFormat(date, timeFormat) : undefined}\n format={timeFormat}\n onChange={handleTimeChange}\n showHours\n showMinutes\n showSeconds={timeFormat === \"HH:mm:ss\"}\n mode={timePickerMode}\n hourInterval={hourInterval}\n minuteInterval={minuteInterval}\n secondInterval={secondInterval}\n disabledTimes={disabledTimes}\n disabledTimeRanges={disabledTimeRanges}\n showNowButton={showNowButton}\n nowButtonLabel={nowButtonLabel}\n timeLabel={timePickerLabel}\n standalone={false}\n color={color}\n isOpen={open}\n />\n </div>\n )}\n </div>\n );\n\n const popPicker = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={props.disabled}>\n {triggerComponent}\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n \"ds:w-auto ds:overflow-hidden ds:p-0\",\n \"ds:backdrop-blur ds:bg-background/50\"\n )}\n side={side}\n align={align}\n >\n {calendarSelection}\n </PopoverContent>\n </Popover>\n );\n\n const drawPicker = (\n <Drawer open={open} onOpenChange={setOpen}>\n <DrawerTrigger asChild>{triggerComponent}</DrawerTrigger>\n <DrawerContent\n className={cn(\n \"ds:w-auto ds:overflow-hidden ds:p-0\",\n \"ds:backdrop-blur ds:bg-background\"\n )}\n >\n <DrawerHeader className=\"ds:sr-only\">\n <DrawerTitle>Select date</DrawerTitle>\n <DrawerDescription>Set date</DrawerDescription>\n </DrawerHeader>\n {calendarSelection}\n </DrawerContent>\n </Drawer>\n );\n\n // If children is provided, use render prop pattern with picker\n if (children) {\n return mode === \"drawer\" ? drawPicker : popPicker;\n }\n\n // Default input rendering\n return (\n <Input\n {...props}\n ref={inputRef}\n type=\"text\"\n clearable\n value={inputValue}\n mask={maskToUse}\n onChange={(e) => {\n isUserTyping.current = true;\n setInputValue(e.target.value);\n const date = parseDate(e.target.value, inputFormat);\n if (date) {\n setDate(date);\n setMonth(date);\n onSelect?.(date, formatDateTimeValue(date));\n onChange?.(e, formatDateTimeValue(date), date);\n } else {\n onSelect?.(undefined, undefined);\n onChange?.(e, undefined, undefined);\n }\n }}\n onFocus={(e) => {\n // Don't auto-open if mask is enabled - user wants to type directly\n if (openOnFocus && !open && !maskToUse) {\n setOpen(true);\n }\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n // Don't clear value when picker is open - user might be interacting with it\n // The onBlur fires when focus moves to the picker\n setTimeout(() => {\n isUserTyping.current = false;\n // Only validate and clear if picker is closed\n if (!open) {\n const parsedDate = parseDate(inputValue, inputFormat);\n if (!parsedDate && inputValue) {\n setInputValue(\"\");\n setDate(undefined);\n setMonth(undefined);\n onSelect?.(undefined, undefined);\n }\n }\n }, 150);\n props.onBlur?.(e);\n }}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setOpen(true);\n }\n props.onKeyDown?.(e);\n }}\n suffixIcon={mode === \"drawer\" ? drawPicker : popPicker}\n />\n );\n}\n"],"names":["formatDate","date","outputFormat","DATE_FORMAT","locale","dfFormat","parseDate","str","inputFormat","parse","isValid","generateMaskFromFormat","format","match","DatePicker","value","onChange","onSelect","calendarClassName","side","align","language","mask","closeOnSelect","calendarConfig","desktopMode","mobileMode","showOutsideDays","children","showTime","timeFormat","hideDate","numberOfMonths","variant","color","timePickerMode","hourInterval","minuteInterval","secondInterval","disabledTimes","disabledTimeRanges","showNowButton","nowButtonLabel","timePickerLabel","openOnFocus","props","maskToUse","fullFormat","initialDate","open","setOpen","React","setDate","month","setMonth","inputValue","setInputValue","inputRef","isUserTyping","_locale","enUS","vi","mode","isMobile","parsedDate","formatDateTimeValue","d","result","handleSelectForRenderProp","handleChangeForRenderProp","text","handleTimeChange","event","newDate","mergedDate","triggerComponent","jsxs","Button","jsx","CalendarIcon","cn","calendarSelection","Calendar","selectedDate","TimePicker","popPicker","Popover","PopoverTrigger","PopoverContent","drawPicker","Drawer","DrawerTrigger","DrawerContent","DrawerHeader","DrawerTitle","DrawerDescription","Input"],"mappings":"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"}
|