@thewrong/ui 0.1.0 → 0.3.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 +25 -4
- package/dist/_virtual/_rolldown/runtime.cjs +1 -0
- package/dist/components/_shared/form-size-tokens.cjs +1 -0
- package/dist/{src/components → components}/_shared/form-size-tokens.d.ts +3 -1
- package/dist/components/_shared/form-size-tokens.esm.js +34 -0
- package/dist/components/action-toast/ActionToast.cjs +1 -0
- package/dist/{src/components → components}/action-toast/ActionToast.d.ts +17 -3
- package/dist/components/action-toast/ActionToast.esm.js +238 -0
- package/dist/{src/components → components}/action-toast/index.d.ts +2 -2
- package/dist/components/animated-height/AnimatedHeight.cjs +1 -0
- package/dist/components/animated-height/AnimatedHeight.esm.js +36 -0
- package/dist/components/animated-height/index.d.ts +2 -0
- package/dist/components/badge/Badge.cjs +1 -0
- package/dist/{src/components → components}/badge/Badge.d.ts +1 -1
- package/dist/components/badge/Badge.esm.js +26 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/utils.cjs +1 -0
- package/dist/{src/components → components}/badge/utils.d.ts +1 -1
- package/dist/components/badge/utils.esm.js +38 -0
- package/dist/components/button/Button.cjs +1 -0
- package/dist/components/button/Button.d.ts +19 -0
- package/dist/components/button/Button.esm.js +77 -0
- package/dist/{src/components → components}/button/index.d.ts +2 -2
- package/dist/components/button/utils.cjs +1 -0
- package/dist/{src/components → components}/button/utils.d.ts +1 -1
- package/dist/components/button/utils.esm.js +38 -0
- package/dist/components/checkbox/Checkbox.cjs +1 -0
- package/dist/{src/components → components}/checkbox/Checkbox.d.ts +1 -1
- package/dist/components/checkbox/Checkbox.esm.js +69 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/checkbox/utils.cjs +1 -0
- package/dist/{src/components → components}/checkbox/utils.d.ts +1 -1
- package/dist/components/checkbox/utils.esm.js +44 -0
- package/dist/components/collapsible/Collapsible.cjs +1 -0
- package/dist/components/collapsible/Collapsible.esm.js +20 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/copyable-text/CopyableText.cjs +1 -0
- package/dist/components/copyable-text/CopyableText.d.ts +22 -0
- package/dist/components/copyable-text/CopyableText.esm.js +50 -0
- package/dist/components/copyable-text/index.d.ts +2 -0
- package/dist/components/date-input/DateInput.cjs +1 -0
- package/dist/{src/components → components}/date-input/DateInput.d.ts +1 -0
- package/dist/components/date-input/DateInput.esm.js +40 -0
- package/dist/components/date-input/index.d.ts +1 -0
- package/dist/components/date-picker/PickerSheet.cjs +1 -0
- package/dist/components/date-picker/PickerSheet.d.ts +22 -0
- package/dist/components/date-picker/PickerSheet.esm.js +77 -0
- package/dist/components/date-picker/date-picker.cjs +1 -0
- package/dist/{src/components → components}/date-picker/date-picker.d.ts +1 -0
- package/dist/components/date-picker/date-picker.esm.js +183 -0
- package/dist/components/date-picker/date-range-picker.cjs +1 -0
- package/dist/{src/components → components}/date-picker/date-range-picker.d.ts +3 -1
- package/dist/components/date-picker/date-range-picker.esm.js +238 -0
- package/dist/components/date-picker/index.d.ts +5 -0
- package/dist/components/date-picker/month-picker.cjs +1 -0
- package/dist/{src/components → components}/date-picker/month-picker.d.ts +1 -0
- package/dist/components/date-picker/month-picker.esm.js +103 -0
- package/dist/components/drawer/Drawer.cjs +1 -0
- package/dist/components/drawer/Drawer.d.ts +45 -0
- package/dist/components/drawer/Drawer.esm.js +143 -0
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/error-boundary/ErrorBoundary.cjs +1 -0
- package/dist/components/error-boundary/ErrorBoundary.d.ts +23 -0
- package/dist/components/error-boundary/ErrorBoundary.esm.js +46 -0
- package/dist/components/error-boundary/chunk-reload.cjs +1 -0
- package/dist/components/error-boundary/chunk-reload.d.ts +77 -0
- package/dist/components/error-boundary/chunk-reload.esm.js +73 -0
- package/dist/components/error-boundary/index.d.ts +4 -0
- package/dist/components/error-boundary/types.d.ts +23 -0
- package/dist/components/field/Field.cjs +1 -0
- package/dist/components/field/Field.d.ts +16 -0
- package/dist/components/field/Field.esm.js +34 -0
- package/dist/components/field/FieldMessage.cjs +1 -0
- package/dist/components/field/FieldMessage.d.ts +19 -0
- package/dist/components/field/FieldMessage.esm.js +12 -0
- package/dist/components/field/index.d.ts +3 -0
- package/dist/components/field/types.d.ts +24 -0
- package/dist/components/info-tooltip/InfoTooltip.cjs +1 -0
- package/dist/{src/components → components}/info-tooltip/InfoTooltip.d.ts +7 -0
- package/dist/components/info-tooltip/InfoTooltip.esm.js +25 -0
- package/dist/components/info-tooltip/index.d.ts +2 -0
- package/dist/components/input/DecimalInput.cjs +1 -0
- package/dist/components/input/DecimalInput.d.ts +18 -0
- package/dist/components/input/DecimalInput.esm.js +40 -0
- package/dist/components/input/Input.cjs +1 -0
- package/dist/{src/components → components}/input/Input.d.ts +1 -1
- package/dist/components/input/Input.esm.js +89 -0
- package/dist/components/input/PasswordInput.cjs +1 -0
- package/dist/{src/components → components}/input/PasswordInput.d.ts +1 -1
- package/dist/components/input/PasswordInput.esm.js +29 -0
- package/dist/components/input/decimal-validation.cjs +1 -0
- package/dist/components/input/decimal-validation.d.ts +7 -0
- package/dist/components/input/decimal-validation.esm.js +66 -0
- package/dist/components/input/format.cjs +1 -0
- package/dist/{src/components → components}/input/format.d.ts +17 -1
- package/dist/components/input/format.esm.js +44 -0
- package/dist/components/input/index.d.ts +7 -0
- package/dist/{src/components → components}/input/types.d.ts +2 -2
- package/dist/components/input/use-input-format.cjs +1 -0
- package/dist/components/input/use-input-format.d.ts +43 -0
- package/dist/components/input/use-input-format.esm.js +75 -0
- package/dist/components/input/utils.cjs +1 -0
- package/dist/{src/components → components}/input/utils.d.ts +1 -1
- package/dist/components/input/utils.esm.js +24 -0
- package/dist/components/loading-spinner/LoadingSpinner.cjs +1 -0
- package/dist/{src/components → components}/loading-spinner/LoadingSpinner.d.ts +7 -0
- package/dist/components/loading-spinner/LoadingSpinner.esm.js +48 -0
- package/dist/components/loading-spinner/index.d.ts +2 -0
- package/dist/components/modal/Modal.cjs +1 -0
- package/dist/{src/components → components}/modal/Modal.d.ts +34 -2
- package/dist/components/modal/Modal.esm.js +167 -0
- package/dist/components/modal/ModalFocusTrapContext.cjs +1 -0
- package/dist/components/modal/ModalFocusTrapContext.d.ts +18 -0
- package/dist/components/modal/ModalFocusTrapContext.esm.js +36 -0
- package/dist/components/modal/ModalSubView.cjs +1 -0
- package/dist/{src/components → components}/modal/ModalSubView.d.ts +6 -1
- package/dist/components/modal/ModalSubView.esm.js +111 -0
- package/dist/components/modal/StandardModal.cjs +1 -0
- package/dist/{src/components → components}/modal/StandardModal.d.ts +8 -2
- package/dist/components/modal/StandardModal.esm.js +57 -0
- package/dist/components/modal/index.d.ts +6 -0
- package/dist/components/month-range-picker/index.d.ts +2 -0
- package/dist/components/month-range-picker/month-range-picker.cjs +1 -0
- package/dist/components/month-range-picker/month-range-picker.d.ts +16 -0
- package/dist/components/month-range-picker/month-range-picker.esm.js +227 -0
- package/dist/components/month-range-picker/month-range-utils.cjs +1 -0
- package/dist/components/month-range-picker/month-range-utils.d.ts +9 -0
- package/dist/components/month-range-picker/month-range-utils.esm.js +28 -0
- package/dist/components/page-title/PageTitle.cjs +1 -0
- package/dist/components/page-title/PageTitle.esm.js +17 -0
- package/dist/components/page-title/index.d.ts +1 -0
- package/dist/components/popover/Popover.cjs +1 -0
- package/dist/{src/components → components}/popover/Popover.d.ts +19 -1
- package/dist/components/popover/Popover.esm.js +57 -0
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/progress/Progress.cjs +1 -0
- package/dist/components/progress/Progress.d.ts +13 -0
- package/dist/components/progress/Progress.esm.js +24 -0
- package/dist/components/progress/index.d.ts +2 -0
- package/dist/components/progress/types.d.ts +13 -0
- package/dist/components/radio/Radio.cjs +1 -0
- package/dist/components/radio/Radio.d.ts +31 -0
- package/dist/components/radio/Radio.esm.js +118 -0
- package/dist/components/radio/index.d.ts +2 -0
- package/dist/components/radio/types.d.ts +24 -0
- package/dist/components/search-box/ExactMatchToggle.cjs +1 -0
- package/dist/components/search-box/ExactMatchToggle.esm.js +28 -0
- package/dist/components/search-box/SearchBox.cjs +1 -0
- package/dist/{src/components → components}/search-box/SearchBox.d.ts +1 -1
- package/dist/components/search-box/SearchBox.esm.js +155 -0
- package/dist/components/search-box/SearchBoxChips.cjs +1 -0
- package/dist/components/search-box/SearchBoxChips.esm.js +36 -0
- package/dist/components/search-box/SearchBoxDateRange.cjs +1 -0
- package/dist/{src/components → components}/search-box/SearchBoxDateRange.d.ts +1 -1
- package/dist/components/search-box/SearchBoxDateRange.esm.js +60 -0
- package/dist/components/search-box/SearchBoxDateSingle.cjs +1 -0
- package/dist/{src/components → components}/search-box/SearchBoxDateSingle.d.ts +1 -1
- package/dist/components/search-box/SearchBoxDateSingle.esm.js +39 -0
- package/dist/components/search-box/SearchBoxField.cjs +1 -0
- package/dist/{src/components → components}/search-box/SearchBoxField.d.ts +1 -1
- package/dist/components/search-box/SearchBoxField.esm.js +48 -0
- package/dist/components/search-box/SearchBoxFloatingInput.cjs +1 -0
- package/dist/components/search-box/SearchBoxFloatingInput.esm.js +43 -0
- package/dist/components/search-box/SearchBoxFloatingSelect.cjs +1 -0
- package/dist/{src/components → components}/search-box/SearchBoxFloatingSelect.d.ts +1 -1
- package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +79 -0
- package/dist/components/search-box/SearchBoxMonth.cjs +1 -0
- package/dist/components/search-box/SearchBoxMonth.esm.js +36 -0
- package/dist/components/search-box/SearchBoxMultiSelect.cjs +1 -0
- package/dist/{src/components → components}/search-box/SearchBoxMultiSelect.d.ts +2 -2
- package/dist/components/search-box/SearchBoxMultiSelect.esm.js +83 -0
- package/dist/components/search-box/SearchBoxSheetContext.cjs +1 -0
- package/dist/components/search-box/SearchBoxSheetContext.esm.js +5 -0
- package/dist/components/search-box/dateRangePresets.cjs +1 -0
- package/dist/{src/components → components}/search-box/dateRangePresets.d.ts +1 -1
- package/dist/components/search-box/dateRangePresets.esm.js +59 -0
- package/dist/{src/components → components}/search-box/index.d.ts +5 -5
- package/dist/components/search-box/parseDateRange.cjs +1 -0
- package/dist/components/search-box/parseDateRange.esm.js +21 -0
- package/dist/components/search-box/parseSearchValues.cjs +1 -0
- package/dist/{src/components → components}/search-box/parseSearchValues.d.ts +2 -2
- package/dist/components/search-box/parseSearchValues.esm.js +15 -0
- package/dist/{src/components → components}/search-box/types.d.ts +1 -1
- package/dist/components/search-box/useSearchBoxState.cjs +1 -0
- package/dist/{src/components → components}/search-box/useSearchBoxState.d.ts +1 -1
- package/dist/components/search-box/useSearchBoxState.esm.js +87 -0
- package/dist/components/segmented-code-input/SegmentedCodeInput.cjs +1 -0
- package/dist/components/segmented-code-input/SegmentedCodeInput.d.ts +49 -0
- package/dist/components/segmented-code-input/SegmentedCodeInput.esm.js +87 -0
- package/dist/components/segmented-code-input/code-utils.cjs +1 -0
- package/dist/components/segmented-code-input/code-utils.d.ts +4 -0
- package/dist/components/segmented-code-input/code-utils.esm.js +9 -0
- package/dist/components/segmented-code-input/index.d.ts +2 -0
- package/dist/components/segmented-control/SegmentedControl.cjs +1 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts +27 -0
- package/dist/components/segmented-control/SegmentedControl.esm.js +84 -0
- package/dist/components/segmented-control/index.d.ts +2 -0
- package/dist/components/segmented-control/types.d.ts +30 -0
- package/dist/components/select/MultiSelect.cjs +1 -0
- package/dist/{src/components → components}/select/MultiSelect.d.ts +11 -3
- package/dist/components/select/MultiSelect.esm.js +279 -0
- package/dist/components/select/Select.cjs +1 -0
- package/dist/{src/components → components}/select/Select.d.ts +16 -2
- package/dist/components/select/Select.esm.js +320 -0
- package/dist/components/select/index.d.ts +4 -0
- package/dist/components/select/loading-dots.cjs +1 -0
- package/dist/components/select/loading-dots.d.ts +3 -0
- package/dist/components/select/loading-dots.esm.js +24 -0
- package/dist/components/select/panel-width.cjs +1 -0
- package/dist/components/select/panel-width.d.ts +2 -0
- package/dist/components/select/panel-width.esm.js +7 -0
- package/dist/{src/components → components}/select/utils.d.ts +1 -1
- package/dist/components/skeleton/Skeleton.cjs +1 -0
- package/dist/components/skeleton/Skeleton.d.ts +6 -0
- package/dist/components/skeleton/Skeleton.esm.js +12 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/types.d.ts +2 -0
- package/dist/components/stepper/Stepper.cjs +1 -0
- package/dist/components/stepper/Stepper.d.ts +51 -0
- package/dist/components/stepper/Stepper.esm.js +142 -0
- package/dist/components/stepper/index.d.ts +4 -0
- package/dist/components/stepper/use-stepper.cjs +1 -0
- package/dist/components/stepper/use-stepper.d.ts +43 -0
- package/dist/components/stepper/use-stepper.esm.js +57 -0
- package/dist/components/switch/Switch.cjs +1 -0
- package/dist/{src/components → components}/switch/Switch.d.ts +1 -1
- package/dist/components/switch/Switch.esm.js +37 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/utils.cjs +1 -0
- package/dist/{src/components → components}/switch/utils.d.ts +2 -2
- package/dist/components/switch/utils.esm.js +40 -0
- package/dist/components/table/accordion-table.cjs +1 -0
- package/dist/{src/components → components}/table/accordion-table.d.ts +1 -1
- package/dist/components/table/accordion-table.esm.js +418 -0
- package/dist/components/table/column-group-utils.cjs +1 -0
- package/dist/{src/components → components}/table/column-group-utils.d.ts +1 -1
- package/dist/components/table/column-group-utils.esm.js +53 -0
- package/dist/components/table/components/ColumnPresetSelector.cjs +1 -0
- package/dist/{src/components → components}/table/components/ColumnPresetSelector.d.ts +2 -2
- package/dist/components/table/components/ColumnPresetSelector.esm.js +166 -0
- package/dist/components/table/components/ColumnSettingsTable.cjs +1 -0
- package/dist/{src/components → components}/table/components/ColumnSettingsTable.d.ts +1 -1
- package/dist/components/table/components/ColumnSettingsTable.esm.js +194 -0
- package/dist/components/table/components/KeyboardNavButton.cjs +1 -0
- package/dist/components/table/components/KeyboardNavButton.esm.js +24 -0
- package/dist/components/table/components/PageJumpInput.cjs +1 -0
- package/dist/components/table/components/PageJumpInput.esm.js +54 -0
- package/dist/components/table/components/Pagination.cjs +1 -0
- package/dist/components/table/components/Pagination.esm.js +163 -0
- package/dist/components/table/components/PaginationFooter.cjs +1 -0
- package/dist/components/table/components/PaginationFooter.esm.js +80 -0
- package/dist/components/table/components/SortableHeaderCell.cjs +1 -0
- package/dist/components/table/components/SortableHeaderCell.esm.js +30 -0
- package/dist/components/table/hooks/useColumnPresets.cjs +1 -0
- package/dist/{src/components → components}/table/hooks/useColumnPresets.d.ts +2 -2
- package/dist/components/table/hooks/useColumnPresets.esm.js +165 -0
- package/dist/components/table/hooks/useColumnResize.cjs +1 -0
- package/dist/{src/components → components}/table/hooks/useColumnResize.d.ts +12 -0
- package/dist/components/table/hooks/useColumnResize.esm.js +118 -0
- package/dist/components/table/hooks/useFillEmptyRows.d.ts +2 -0
- package/dist/components/table/hooks/useInfiniteScroll.d.ts +2 -0
- package/dist/components/table/hooks/useTableColumnState.cjs +1 -0
- package/dist/{src/components → components}/table/hooks/useTableColumnState.d.ts +1 -1
- package/dist/components/table/hooks/useTableColumnState.esm.js +46 -0
- package/dist/components/table/hooks/useTableDragSelection.d.ts +2 -0
- package/dist/components/table/hooks/useTableSort.cjs +1 -0
- package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +1 -1
- package/dist/components/table/hooks/useTableSort.esm.js +30 -0
- package/dist/components/table/hooks/useVirtualTable.cjs +1 -0
- package/dist/components/table/hooks/useVirtualTable.esm.js +18 -0
- package/dist/components/table/index.d.ts +27 -0
- package/dist/components/table/mini-table.cjs +1 -0
- package/dist/{src/components → components}/table/mini-table.d.ts +1 -1
- package/dist/components/table/mini-table.esm.js +127 -0
- package/dist/components/table/paginated-mini-table.cjs +1 -0
- package/dist/{src/components → components}/table/paginated-mini-table.d.ts +1 -1
- package/dist/components/table/paginated-mini-table.esm.js +31 -0
- package/dist/components/table/paginated-table.cjs +1 -0
- package/dist/{src/components → components}/table/paginated-table.d.ts +1 -1
- package/dist/components/table/paginated-table.esm.js +31 -0
- package/dist/components/table/table.cjs +1 -0
- package/dist/{src/components → components}/table/table.d.ts +2 -1
- package/dist/components/table/table.esm.js +343 -0
- package/dist/components/table/utils.cjs +35 -0
- package/dist/{src/components → components}/table/utils.d.ts +2 -2
- package/dist/components/table/utils.esm.js +16 -0
- package/dist/components/table-checkbox/TableCheckbox.cjs +1 -0
- package/dist/components/table-checkbox/TableCheckbox.esm.js +40 -0
- package/dist/components/table-checkbox/index.d.ts +1 -0
- package/dist/components/table-page-layout/TablePageLayout.cjs +1 -0
- package/dist/components/table-page-layout/TablePageLayout.esm.js +37 -0
- package/dist/{src/components → components}/table-page-layout/index.d.ts +1 -1
- package/dist/components/textarea/Textarea.cjs +1 -0
- package/dist/{src/components → components}/textarea/Textarea.d.ts +1 -1
- package/dist/components/textarea/Textarea.esm.js +64 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/time-picker/index.d.ts +2 -0
- package/dist/components/time-picker/time-picker.cjs +1 -0
- package/dist/components/time-picker/time-picker.d.ts +35 -0
- package/dist/components/time-picker/time-picker.esm.js +193 -0
- package/dist/components/time-picker/time-utils.cjs +1 -0
- package/dist/components/time-picker/time-utils.d.ts +12 -0
- package/dist/components/time-picker/time-utils.esm.js +56 -0
- package/dist/components/toast/ToastProvider.cjs +1 -0
- package/dist/{src/components → components}/toast/ToastProvider.d.ts +3 -0
- package/dist/components/toast/ToastProvider.esm.js +86 -0
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.esm.js +3 -0
- package/dist/components/toolbar/Toolbar.cjs +1 -0
- package/dist/{src/components → components}/toolbar/Toolbar.d.ts +1 -1
- package/dist/components/toolbar/Toolbar.esm.js +149 -0
- package/dist/components/toolbar/index.d.ts +2 -0
- package/dist/components/tooltip/Tooltip.cjs +1 -0
- package/dist/{src/components → components}/tooltip/Tooltip.d.ts +10 -0
- package/dist/components/tooltip/Tooltip.esm.js +39 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/typewriter-text/TypewriterText.cjs +1 -0
- package/dist/components/typewriter-text/TypewriterText.d.ts +7 -0
- package/dist/components/typewriter-text/TypewriterText.esm.js +58 -0
- package/dist/components/typewriter-text/index.d.ts +2 -0
- package/dist/components/typewriter-text/types.d.ts +12 -0
- package/dist/components/typing-dots/TypingDots.cjs +1 -0
- package/dist/components/typing-dots/TypingDots.d.ts +10 -0
- package/dist/components/typing-dots/TypingDots.esm.js +37 -0
- package/dist/components/typing-dots/index.d.ts +2 -0
- package/dist/components/typing-dots/types.d.ts +4 -0
- package/dist/hooks/awaitableOverlayController.cjs +1 -0
- package/dist/hooks/awaitableOverlayController.d.ts +6 -0
- package/dist/hooks/awaitableOverlayController.esm.js +18 -0
- package/dist/hooks/index.d.ts +17 -0
- package/dist/hooks/useAwaitableOverlay.cjs +1 -0
- package/dist/hooks/useAwaitableOverlay.d.ts +16 -0
- package/dist/hooks/useAwaitableOverlay.esm.js +22 -0
- package/dist/hooks/useBottomSheetDrag.cjs +1 -0
- package/dist/hooks/useBottomSheetDrag.esm.js +17 -0
- package/dist/hooks/useClickOutside.cjs +1 -0
- package/dist/hooks/useClickOutside.esm.js +20 -0
- package/dist/hooks/useFillEmptyRows.cjs +1 -0
- package/dist/{src/components/table/hooks → hooks}/useFillEmptyRows.d.ts +10 -1
- package/dist/hooks/useFillEmptyRows.esm.js +60 -0
- package/dist/hooks/useFocusTrap.cjs +1 -0
- package/dist/hooks/useFocusTrap.d.ts +47 -0
- package/dist/hooks/useFocusTrap.esm.js +210 -0
- package/dist/hooks/useInfiniteScroll.cjs +1 -0
- package/dist/hooks/useInfiniteScroll.d.ts +36 -0
- package/dist/hooks/useInfiniteScroll.esm.js +31 -0
- package/dist/hooks/useMediaQuery.cjs +1 -0
- package/dist/hooks/useMediaQuery.esm.js +15 -0
- package/dist/hooks/useScrollLock.cjs +1 -0
- package/dist/hooks/useScrollLock.esm.js +16 -0
- package/dist/hooks/useTableDragSelection.cjs +1 -0
- package/dist/{src/components/table/hooks → hooks}/useTableDragSelection.d.ts +3 -4
- package/dist/hooks/useTableDragSelection.esm.js +79 -0
- package/dist/hooks/useVirtualRows.cjs +1 -0
- package/dist/hooks/useVirtualRows.d.ts +56 -0
- package/dist/hooks/useVirtualRows.esm.js +20 -0
- package/dist/hooks.cjs +1 -0
- package/dist/hooks.esm.js +12 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.esm.js +81 -0
- package/dist/lib/Portal.cjs +1 -0
- package/dist/lib/Portal.esm.js +11 -0
- package/dist/lib/column-preset-storage.cjs +1 -0
- package/dist/lib/column-preset-storage.esm.js +123 -0
- package/dist/lib/index.d.ts +6 -0
- package/dist/lib/overlay-stack.cjs +1 -0
- package/dist/lib/overlay-stack.esm.js +28 -0
- package/dist/lib/utils.cjs +1 -0
- package/dist/{src/lib → lib}/utils.d.ts +2 -1
- package/dist/lib/utils.esm.js +114 -0
- package/dist/node_modules/clsx/dist/clsx.cjs +1 -0
- package/dist/node_modules/clsx/dist/clsx.esm.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/Icon.esm.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/context.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/context.esm.js +6 -0
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.esm.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.esm.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.esm.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.esm.js +25 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.esm.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.esm.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.esm.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.esm.js +19 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/clock.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/clock.esm.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/copy.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/copy.esm.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.esm.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.esm.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.esm.js +41 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/info.esm.js +19 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.esm.js +45 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.esm.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.esm.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/save.esm.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/search.esm.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/settings.esm.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.esm.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/wrench.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/x.esm.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.esm.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.esm.js +4 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.esm.js +4 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.esm.js +4 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.esm.js +8 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +1723 -0
- package/dist/node_modules/use-debounce/dist/index.module.cjs +1 -0
- package/dist/node_modules/use-debounce/dist/index.module.esm.js +70 -0
- package/dist/tokens.css +1085 -0
- package/dist/ui.css +1 -1
- package/llms.txt +117 -0
- package/package.json +18 -9
- package/dist/index.cjs.js +0 -40
- package/dist/index.es.js +0 -8066
- package/dist/src/components/animated-height/index.d.ts +0 -2
- package/dist/src/components/badge/index.d.ts +0 -2
- package/dist/src/components/button/Button.d.ts +0 -2
- package/dist/src/components/checkbox/index.d.ts +0 -2
- package/dist/src/components/collapsible/index.d.ts +0 -2
- package/dist/src/components/date-input/index.d.ts +0 -1
- package/dist/src/components/date-picker/index.d.ts +0 -5
- package/dist/src/components/drawer/Drawer.d.ts +0 -18
- package/dist/src/components/drawer/index.d.ts +0 -2
- package/dist/src/components/info-tooltip/index.d.ts +0 -2
- package/dist/src/components/input/index.d.ts +0 -4
- package/dist/src/components/loading-spinner/index.d.ts +0 -2
- package/dist/src/components/modal/index.d.ts +0 -6
- package/dist/src/components/page-title/index.d.ts +0 -1
- package/dist/src/components/popover/index.d.ts +0 -2
- package/dist/src/components/select/index.d.ts +0 -4
- package/dist/src/components/select/loading-dots.d.ts +0 -9
- package/dist/src/components/switch/index.d.ts +0 -2
- package/dist/src/components/table/hooks/useInfiniteScroll.d.ts +0 -58
- package/dist/src/components/table/index.d.ts +0 -27
- package/dist/src/components/table-checkbox/index.d.ts +0 -1
- package/dist/src/components/textarea/index.d.ts +0 -2
- package/dist/src/components/toast/index.d.ts +0 -3
- package/dist/src/components/toolbar/index.d.ts +0 -2
- package/dist/src/components/tooltip/index.d.ts +0 -2
- package/dist/src/hooks/index.d.ts +0 -4
- package/dist/src/index.d.ts +0 -27
- package/dist/src/lib/index.d.ts +0 -6
- /package/dist/{src/components → components}/animated-height/AnimatedHeight.d.ts +0 -0
- /package/dist/{src/components → components}/badge/types.d.ts +0 -0
- /package/dist/{src/components → components}/button/types.d.ts +0 -0
- /package/dist/{src/components → components}/checkbox/types.d.ts +0 -0
- /package/dist/{src/components → components}/collapsible/Collapsible.d.ts +0 -0
- /package/dist/{src/components → components}/page-title/PageTitle.d.ts +0 -0
- /package/dist/{src/components → components}/search-box/ExactMatchToggle.d.ts +0 -0
- /package/dist/{src/components → components}/search-box/SearchBoxChips.d.ts +0 -0
- /package/dist/{src/components → components}/search-box/SearchBoxFloatingInput.d.ts +0 -0
- /package/dist/{src/components → components}/search-box/SearchBoxMonth.d.ts +0 -0
- /package/dist/{src/components → components}/search-box/SearchBoxSheetContext.d.ts +0 -0
- /package/dist/{src/components → components}/search-box/parseDateRange.d.ts +0 -0
- /package/dist/{src/components → components}/select/types.d.ts +0 -0
- /package/dist/{src/components → components}/switch/types.d.ts +0 -0
- /package/dist/{src/components → components}/table/components/KeyboardNavButton.d.ts +0 -0
- /package/dist/{src/components → components}/table/components/PageJumpInput.d.ts +0 -0
- /package/dist/{src/components → components}/table/components/Pagination.d.ts +0 -0
- /package/dist/{src/components → components}/table/components/PaginationFooter.d.ts +0 -0
- /package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +0 -0
- /package/dist/{src/components → components}/table/hooks/useVirtualTable.d.ts +0 -0
- /package/dist/{src/components → components}/table/types.d.ts +0 -0
- /package/dist/{src/components → components}/table-checkbox/TableCheckbox.d.ts +0 -0
- /package/dist/{src/components → components}/table-page-layout/TablePageLayout.d.ts +0 -0
- /package/dist/{src/components → components}/textarea/types.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useBottomSheetDrag.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useClickOutside.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useMediaQuery.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
- /package/dist/{src/lib → lib}/Portal.d.ts +0 -0
- /package/dist/{src/lib → lib}/column-preset-storage.d.ts +0 -0
- /package/dist/{src/lib → lib}/overlay-stack.d.ts +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { ChevronDown as t } from "../../node_modules/lucide-react/dist/esm/icons/chevron-down.esm.js";
|
|
3
|
+
import { ChevronLeft as n } from "../../node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js";
|
|
4
|
+
import { ChevronRight as r } from "../../node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js";
|
|
5
|
+
import { AnimatedHeight as i } from "../animated-height/AnimatedHeight.esm.js";
|
|
6
|
+
import { PickerSheet as a, usePickerMobile as o } from "./PickerSheet.esm.js";
|
|
7
|
+
import { useMemo as s, useState as c } from "react";
|
|
8
|
+
import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
|
+
import { autoUpdate as f, flip as p, offset as m, shift as h, useClick as g, useDismiss as _, useFloating as v, useInteractions as y, useRole as b } from "@floating-ui/react";
|
|
10
|
+
import { addMonths as x, eachDayOfInterval as S, endOfMonth as C, endOfWeek as w, format as T, isSameDay as E, isSameMonth as D, isValid as O, parseISO as k, startOfMonth as A, startOfWeek as j, subMonths as M } from "date-fns";
|
|
11
|
+
import { ko as N } from "date-fns/locale";
|
|
12
|
+
//#region src/components/date-picker/date-picker.tsx
|
|
13
|
+
var P = 24;
|
|
14
|
+
function F({ children: e, value: t, onApply: n, disabled: r, disableMobileSheet: i }) {
|
|
15
|
+
let [s, x] = c(!1), { useSheet: S } = o(i), { refs: C, floatingStyles: w, context: T } = v({
|
|
16
|
+
open: s,
|
|
17
|
+
onOpenChange: (e) => {
|
|
18
|
+
r || x(e);
|
|
19
|
+
},
|
|
20
|
+
placement: "bottom-start",
|
|
21
|
+
whileElementsMounted: f,
|
|
22
|
+
middleware: [
|
|
23
|
+
m(8),
|
|
24
|
+
p({ fallbackAxisSideDirection: "start" }),
|
|
25
|
+
h({ padding: 8 })
|
|
26
|
+
]
|
|
27
|
+
}), { getReferenceProps: E, getFloatingProps: D } = y([
|
|
28
|
+
g(T, { enabled: !r }),
|
|
29
|
+
_(T),
|
|
30
|
+
b(T, { role: "dialog" })
|
|
31
|
+
]), O = (e) => {
|
|
32
|
+
n(e), x(!1);
|
|
33
|
+
};
|
|
34
|
+
return /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u("span", {
|
|
35
|
+
ref: C.setReference,
|
|
36
|
+
...E(),
|
|
37
|
+
className: "inline-flex",
|
|
38
|
+
children: e
|
|
39
|
+
}), /* @__PURE__ */ u(a, {
|
|
40
|
+
isOpen: s,
|
|
41
|
+
onClose: () => x(!1),
|
|
42
|
+
useSheet: S,
|
|
43
|
+
context: T,
|
|
44
|
+
setFloating: C.setFloating,
|
|
45
|
+
floatingStyles: w,
|
|
46
|
+
getFloatingProps: D,
|
|
47
|
+
desktopClassName: "z-floating w-80 rounded-2xl border border-border-subtle bg-bg-surface text-fg-default p-6 shadow-tooltip",
|
|
48
|
+
children: /* @__PURE__ */ u(I, {
|
|
49
|
+
initialValue: t,
|
|
50
|
+
onApply: O,
|
|
51
|
+
onClose: () => x(!1)
|
|
52
|
+
})
|
|
53
|
+
})] });
|
|
54
|
+
}
|
|
55
|
+
function I({ initialValue: e, onApply: t, onClose: n }) {
|
|
56
|
+
let r = z(e), [i, a] = c(r), [o, s] = c(r ?? /* @__PURE__ */ new Date());
|
|
57
|
+
return /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u(L, {
|
|
58
|
+
month: o,
|
|
59
|
+
onMonthChange: s,
|
|
60
|
+
onPrev: () => s(M(o, 1)),
|
|
61
|
+
onNext: () => s(x(o, 1)),
|
|
62
|
+
selected: i,
|
|
63
|
+
onDayClick: (e) => a(e)
|
|
64
|
+
}), /* @__PURE__ */ d("div", {
|
|
65
|
+
className: "mt-6 flex items-center justify-end gap-2",
|
|
66
|
+
children: [/* @__PURE__ */ u("button", {
|
|
67
|
+
type: "button",
|
|
68
|
+
onClick: n,
|
|
69
|
+
className: "cursor-pointer rounded-full bg-bg-subtle px-5 py-2 text-sm font-semibold text-fg-muted transition-colors hover:bg-bg-muted",
|
|
70
|
+
children: "닫기"
|
|
71
|
+
}), /* @__PURE__ */ u("button", {
|
|
72
|
+
type: "button",
|
|
73
|
+
onClick: () => {
|
|
74
|
+
if (!i) {
|
|
75
|
+
n();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
t(T(i, "yyyy-MM-dd"));
|
|
79
|
+
},
|
|
80
|
+
className: "cursor-pointer rounded-full bg-primary px-5 py-2 text-sm font-semibold text-fg-inverse transition-opacity hover:opacity-90",
|
|
81
|
+
children: "적용"
|
|
82
|
+
})]
|
|
83
|
+
})] });
|
|
84
|
+
}
|
|
85
|
+
function L({ month: n, onMonthChange: r, onPrev: a, onNext: o, selected: l, onDayClick: f }) {
|
|
86
|
+
let [p, m] = c(!1), h = s(() => S({
|
|
87
|
+
start: j(A(n), { weekStartsOn: 0 }),
|
|
88
|
+
end: w(C(n), { weekStartsOn: 0 })
|
|
89
|
+
}), [n]), g = s(() => {
|
|
90
|
+
let e = [];
|
|
91
|
+
for (let t = -24; t <= P; t++) e.push(x(A(/* @__PURE__ */ new Date()), t));
|
|
92
|
+
return e;
|
|
93
|
+
}, []);
|
|
94
|
+
return /* @__PURE__ */ d("div", {
|
|
95
|
+
className: "mx-auto flex w-full max-w-75 flex-col sm:w-65",
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ d("div", {
|
|
98
|
+
className: "mb-4 flex items-center justify-between",
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ u(R, {
|
|
101
|
+
direction: "left",
|
|
102
|
+
onClick: a
|
|
103
|
+
}),
|
|
104
|
+
/* @__PURE__ */ d("div", {
|
|
105
|
+
className: "relative flex flex-1 justify-center",
|
|
106
|
+
children: [/* @__PURE__ */ d("button", {
|
|
107
|
+
type: "button",
|
|
108
|
+
onClick: () => m((e) => !e),
|
|
109
|
+
className: "flex cursor-pointer items-center gap-1 rounded px-3 py-1.5 text-sm font-semibold text-fg-default transition-colors hover:bg-bg-subtle",
|
|
110
|
+
children: [T(n, "yyyy. MM."), /* @__PURE__ */ u(t, { className: "h-3.5 w-3.5 text-fg-subtle" })]
|
|
111
|
+
}), p && /* @__PURE__ */ u("div", {
|
|
112
|
+
className: "scrollbar-brand absolute top-full z-20 mt-1 max-h-60 w-35 overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface py-1 shadow-overlay",
|
|
113
|
+
children: g.map((t) => /* @__PURE__ */ u("button", {
|
|
114
|
+
type: "button",
|
|
115
|
+
onClick: () => {
|
|
116
|
+
r(t), m(!1);
|
|
117
|
+
},
|
|
118
|
+
className: e("w-full cursor-pointer bg-bg-surface px-4 py-2 text-left text-sm transition-colors", D(t, n) ? "bg-bg-muted font-semibold text-fg-default" : "text-fg-muted hover:bg-bg-subtle"),
|
|
119
|
+
children: T(t, "yyyy. MM.")
|
|
120
|
+
}, t.toISOString()))
|
|
121
|
+
})]
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ u(R, {
|
|
124
|
+
direction: "right",
|
|
125
|
+
onClick: o
|
|
126
|
+
})
|
|
127
|
+
]
|
|
128
|
+
}),
|
|
129
|
+
/* @__PURE__ */ u("div", {
|
|
130
|
+
className: "mb-2 grid grid-cols-7",
|
|
131
|
+
children: [
|
|
132
|
+
"일",
|
|
133
|
+
"월",
|
|
134
|
+
"화",
|
|
135
|
+
"수",
|
|
136
|
+
"목",
|
|
137
|
+
"금",
|
|
138
|
+
"토"
|
|
139
|
+
].map((e) => /* @__PURE__ */ u("div", {
|
|
140
|
+
className: "py-1 text-center text-xs font-medium text-fg-subtle",
|
|
141
|
+
children: e
|
|
142
|
+
}, e))
|
|
143
|
+
}),
|
|
144
|
+
/* @__PURE__ */ u(i, { children: /* @__PURE__ */ u("div", {
|
|
145
|
+
className: "grid grid-cols-7 gap-y-1",
|
|
146
|
+
children: h.map((t) => {
|
|
147
|
+
let i = D(t, n), a = !!(l && E(t, l));
|
|
148
|
+
return /* @__PURE__ */ d("button", {
|
|
149
|
+
type: "button",
|
|
150
|
+
onClick: () => {
|
|
151
|
+
i || r(t), f(t);
|
|
152
|
+
},
|
|
153
|
+
className: "group relative flex h-9 cursor-pointer items-center justify-center text-sm",
|
|
154
|
+
"aria-label": T(t, "yyyy년 M월 d일", { locale: N }),
|
|
155
|
+
children: [a && /* @__PURE__ */ u("span", {
|
|
156
|
+
className: "absolute left-1/2 top-1/2 h-9 w-9 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary",
|
|
157
|
+
"aria-hidden": !0
|
|
158
|
+
}), /* @__PURE__ */ u("span", {
|
|
159
|
+
className: e("relative z-10", !i && "text-fg-disabled", i && !a && "text-fg-default", a && "font-bold text-fg-inverse"),
|
|
160
|
+
children: T(t, "d")
|
|
161
|
+
})]
|
|
162
|
+
}, t.toISOString());
|
|
163
|
+
})
|
|
164
|
+
}) })
|
|
165
|
+
]
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function R({ direction: e, onClick: t }) {
|
|
169
|
+
return /* @__PURE__ */ u("button", {
|
|
170
|
+
type: "button",
|
|
171
|
+
onClick: t,
|
|
172
|
+
className: "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border-subtle text-fg-muted transition-colors hover:bg-bg-subtle",
|
|
173
|
+
"aria-label": e === "left" ? "이전 달" : "다음 달",
|
|
174
|
+
children: /* @__PURE__ */ u(e === "left" ? n : r, { className: "h-4 w-4" })
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
function z(e) {
|
|
178
|
+
if (!e) return null;
|
|
179
|
+
let t = k(e);
|
|
180
|
+
return O(t) ? t : null;
|
|
181
|
+
}
|
|
182
|
+
//#endregion
|
|
183
|
+
export { F as DatePicker, I as DatePickerBody };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/chevron-down.cjs"),n=require("../../node_modules/lucide-react/dist/esm/icons/chevron-left.cjs"),r=require("../../node_modules/lucide-react/dist/esm/icons/chevron-right.cjs"),i=require("./PickerSheet.cjs");let a=require("react"),o=require("react/jsx-runtime"),s=require("@floating-ui/react"),c=require("date-fns"),l=require("date-fns/locale");var u=24;function d({children:e,value:t,onApply:n,disabled:r,disableMobileSheet:c}){let[l,u]=(0,a.useState)(!1),{isMobile:d,useSheet:p}=i.usePickerMobile(c),{refs:m,floatingStyles:h,context:g}=(0,s.useFloating)({open:l,onOpenChange:e=>{r||u(e)},placement:`bottom-start`,whileElementsMounted:s.autoUpdate,middleware:[(0,s.offset)(8),(0,s.flip)({fallbackAxisSideDirection:`start`}),(0,s.shift)({padding:8})]}),{getReferenceProps:_,getFloatingProps:v}=(0,s.useInteractions)([(0,s.useClick)(g,{enabled:!r}),(0,s.useDismiss)(g),(0,s.useRole)(g,{role:`dialog`})]),y=e=>{n(e),u(!1)};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{ref:m.setReference,..._(),className:`inline-flex`,children:e}),(0,o.jsx)(i.PickerSheet,{isOpen:l,onClose:()=>u(!1),useSheet:p,context:g,setFloating:m.setFloating,floatingStyles:h,getFloatingProps:v,desktopClassName:`z-floating rounded-2xl border border-border-subtle bg-bg-surface text-fg-default p-6 shadow-tooltip`,children:(0,o.jsx)(f,{value:t,isMobile:d,onApply:y,onClose:()=>u(!1)})})]})}function f({value:e,isMobile:t,onApply:n,onClose:r}){let i=h(e?.from),s=h(e?.to),[l,u]=(0,a.useState)(i),[d,f]=(0,a.useState)(s),[m,g]=(0,a.useState)(i??new Date),_=(0,c.addMonths)(m,1),v=e=>{if(!l||l&&d){u(e),f(null);return}if((0,c.isBefore)(e,l)){u(e),f(null);return}f(e)},y=(0,o.jsxs)(`div`,{className:`mt-6 flex items-center justify-end gap-2`,children:[(0,o.jsx)(`button`,{type:`button`,onClick:r,className:`cursor-pointer rounded-full bg-bg-subtle px-5 py-2 text-sm font-semibold text-fg-muted transition-colors hover:bg-bg-muted`,children:`닫기`}),(0,o.jsx)(`button`,{type:`button`,onClick:()=>{if(!l){r();return}n({from:(0,c.format)(l,`yyyy-MM-dd`),to:(0,c.format)(d??l,`yyyy-MM-dd`)})},className:`cursor-pointer rounded-full bg-primary px-5 py-2 text-sm font-semibold text-fg-inverse transition-opacity hover:opacity-90`,children:`적용`})]});return t?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`div`,{className:`flex justify-center`,children:(0,o.jsx)(p,{month:m,onMonthChange:g,onPrev:()=>g((0,c.subMonths)(m,1)),onNext:()=>g((0,c.addMonths)(m,1)),showPrev:!0,showNext:!0,rangeFrom:l,rangeTo:d,onDayClick:v})}),y]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(`div`,{className:`flex items-stretch gap-8`,children:[(0,o.jsx)(p,{month:m,onMonthChange:g,onPrev:()=>g((0,c.subMonths)(m,1)),showPrev:!0,rangeFrom:l,rangeTo:d,onDayClick:v}),(0,o.jsx)(`div`,{className:`w-px bg-border-subtle`}),(0,o.jsx)(p,{month:_,onMonthChange:e=>g((0,c.subMonths)(e,1)),onNext:()=>g((0,c.addMonths)(m,1)),showNext:!0,rangeFrom:l,rangeTo:d,onDayClick:v})]}),y]})}function p({month:n,onMonthChange:r,onPrev:i,onNext:s,showPrev:d,showNext:f,rangeFrom:p,rangeTo:h,onDayClick:g}){let[_,v]=(0,a.useState)(!1),y=(0,a.useMemo)(()=>(0,c.eachDayOfInterval)({start:(0,c.startOfWeek)((0,c.startOfMonth)(n),{weekStartsOn:0}),end:(0,c.endOfWeek)((0,c.endOfMonth)(n),{weekStartsOn:0})}),[n]),b=(0,a.useMemo)(()=>{let e=[];for(let t=-24;t<=u;t++)e.push((0,c.addMonths)((0,c.startOfMonth)(new Date),t));return e},[]);return(0,o.jsxs)(`div`,{className:`flex w-full max-w-[300px] flex-col sm:w-[260px]`,children:[(0,o.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,o.jsx)(m,{direction:`left`,onClick:i,visible:!!d}),(0,o.jsxs)(`div`,{className:`relative flex flex-1 justify-center`,children:[(0,o.jsxs)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`flex cursor-pointer items-center gap-1 rounded px-3 py-1.5 text-sm font-semibold text-fg-default transition-colors hover:bg-bg-subtle`,children:[(0,c.format)(n,`yyyy. MM.`),(0,o.jsx)(t.ChevronDown,{className:`h-3.5 w-3.5 text-fg-subtle`})]}),_&&(0,o.jsx)(`div`,{className:`scrollbar-brand absolute top-full z-20 mt-1 max-h-[240px] w-[140px] overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface py-1 shadow-overlay`,children:b.map(t=>(0,o.jsx)(`button`,{type:`button`,onClick:()=>{r(t),v(!1)},className:e.cn(`w-full cursor-pointer bg-bg-surface px-4 py-2 text-left text-sm transition-colors`,(0,c.isSameMonth)(t,n)?`bg-bg-muted font-semibold text-fg-default`:`text-fg-muted hover:bg-bg-subtle`),children:(0,c.format)(t,`yyyy. MM.`)},t.toISOString()))})]}),(0,o.jsx)(m,{direction:`right`,onClick:s,visible:!!f})]}),(0,o.jsx)(`div`,{className:`mb-2 grid grid-cols-7`,children:[`일`,`월`,`화`,`수`,`목`,`금`,`토`].map(e=>(0,o.jsx)(`div`,{className:`py-1 text-center text-xs font-medium text-fg-subtle`,children:e},e))}),(0,o.jsx)(`div`,{className:`grid grid-cols-7 gap-y-1`,children:y.map(t=>{let i=(0,c.isSameMonth)(t,n),a=!!(p&&(0,c.isSameDay)(t,p)),s=!!(h&&(0,c.isSameDay)(t,h)),u=!!p&&!!h&&(0,c.isAfter)(t,p)&&(0,c.isBefore)(t,h),d=a||s,f=u||s&&!!p,m=u||a&&!!h;return(0,o.jsxs)(`button`,{type:`button`,onClick:()=>{i||r(t),g(t)},className:`group relative flex h-9 cursor-pointer items-center justify-center text-sm`,"aria-label":(0,c.format)(t,`yyyy년 M월 d일`,{locale:l.ko}),children:[f&&(0,o.jsx)(`span`,{className:`absolute inset-y-0 left-0 right-1/2 bg-bg-muted`,"aria-hidden":!0}),m&&(0,o.jsx)(`span`,{className:`absolute inset-y-0 left-1/2 right-0 bg-bg-muted`,"aria-hidden":!0}),d&&(0,o.jsx)(`span`,{className:`absolute left-1/2 top-1/2 h-9 w-9 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary`,"aria-hidden":!0}),(0,o.jsx)(`span`,{className:e.cn(`relative z-10`,!i&&`text-fg-disabled`,i&&!d&&`text-fg-default`,d&&`font-bold text-fg-inverse`),children:(0,c.format)(t,`d`)})]},t.toISOString())})})]})}function m({direction:e,onClick:t,visible:i}){let a=e===`left`?n.ChevronLeft:r.ChevronRight;return i?(0,o.jsx)(`button`,{type:`button`,onClick:t,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border-subtle text-fg-muted transition-colors hover:bg-bg-subtle`,"aria-label":e===`left`?`이전 달`:`다음 달`,children:(0,o.jsx)(a,{className:`h-4 w-4`})}):(0,o.jsx)(`div`,{className:`w-8`})}function h(e){if(!e)return null;let t=(0,c.parseISO)(e);return(0,c.isValid)(t)?t:null}exports.DateRangePicker=d;
|
|
@@ -9,6 +9,8 @@ interface DateRangePickerProps {
|
|
|
9
9
|
value?: DateRange;
|
|
10
10
|
onApply: (range: DateRange) => void;
|
|
11
11
|
disabled?: boolean;
|
|
12
|
+
/** 이미 바텀시트 안에 있으면 모바일에서도 popover로 표시한다. Modal에서는 생략 시 자동 적용되며, false를 명시하면 시트를 유지한다. */
|
|
13
|
+
disableMobileSheet?: boolean;
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* 날짜 범위 선택 popover.
|
|
@@ -17,5 +19,5 @@ interface DateRangePickerProps {
|
|
|
17
19
|
* 모바일에선 바텀시트로 풀스크린 전환(트리거 위치 계산 무시) + 단일 캘린더.
|
|
18
20
|
* 데스크탑은 두 달 가로 배치.
|
|
19
21
|
*/
|
|
20
|
-
export declare function DateRangePicker({ children, value, onApply, disabled, }: DateRangePickerProps): import("react").JSX.Element;
|
|
22
|
+
export declare function DateRangePicker({ children, value, onApply, disabled, disableMobileSheet, }: DateRangePickerProps): import("react").JSX.Element;
|
|
21
23
|
export {};
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { ChevronDown as t } from "../../node_modules/lucide-react/dist/esm/icons/chevron-down.esm.js";
|
|
3
|
+
import { ChevronLeft as n } from "../../node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js";
|
|
4
|
+
import { ChevronRight as r } from "../../node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js";
|
|
5
|
+
import { PickerSheet as i, usePickerMobile as a } from "./PickerSheet.esm.js";
|
|
6
|
+
import { useMemo as o, useState as s } from "react";
|
|
7
|
+
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
8
|
+
import { autoUpdate as d, flip as f, offset as p, shift as m, useClick as h, useDismiss as g, useFloating as _, useInteractions as v, useRole as y } from "@floating-ui/react";
|
|
9
|
+
import { addMonths as b, eachDayOfInterval as x, endOfMonth as S, endOfWeek as C, format as w, isAfter as T, isBefore as E, isSameDay as D, isSameMonth as O, isValid as k, parseISO as A, startOfMonth as j, startOfWeek as M, subMonths as N } from "date-fns";
|
|
10
|
+
import { ko as P } from "date-fns/locale";
|
|
11
|
+
//#region src/components/date-picker/date-range-picker.tsx
|
|
12
|
+
var F = 24;
|
|
13
|
+
function I({ children: e, value: t, onApply: n, disabled: r, disableMobileSheet: o }) {
|
|
14
|
+
let [b, x] = s(!1), { isMobile: S, useSheet: C } = a(o), { refs: w, floatingStyles: T, context: E } = _({
|
|
15
|
+
open: b,
|
|
16
|
+
onOpenChange: (e) => {
|
|
17
|
+
r || x(e);
|
|
18
|
+
},
|
|
19
|
+
placement: "bottom-start",
|
|
20
|
+
whileElementsMounted: d,
|
|
21
|
+
middleware: [
|
|
22
|
+
p(8),
|
|
23
|
+
f({ fallbackAxisSideDirection: "start" }),
|
|
24
|
+
m({ padding: 8 })
|
|
25
|
+
]
|
|
26
|
+
}), { getReferenceProps: D, getFloatingProps: O } = v([
|
|
27
|
+
h(E, { enabled: !r }),
|
|
28
|
+
g(E),
|
|
29
|
+
y(E, { role: "dialog" })
|
|
30
|
+
]), k = (e) => {
|
|
31
|
+
n(e), x(!1);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("span", {
|
|
34
|
+
ref: w.setReference,
|
|
35
|
+
...D(),
|
|
36
|
+
className: "inline-flex",
|
|
37
|
+
children: e
|
|
38
|
+
}), /* @__PURE__ */ l(i, {
|
|
39
|
+
isOpen: b,
|
|
40
|
+
onClose: () => x(!1),
|
|
41
|
+
useSheet: C,
|
|
42
|
+
context: E,
|
|
43
|
+
setFloating: w.setFloating,
|
|
44
|
+
floatingStyles: T,
|
|
45
|
+
getFloatingProps: O,
|
|
46
|
+
desktopClassName: "z-floating rounded-2xl border border-border-subtle bg-bg-surface text-fg-default p-6 shadow-tooltip",
|
|
47
|
+
children: /* @__PURE__ */ l(L, {
|
|
48
|
+
value: t,
|
|
49
|
+
isMobile: S,
|
|
50
|
+
onApply: k,
|
|
51
|
+
onClose: () => x(!1)
|
|
52
|
+
})
|
|
53
|
+
})] });
|
|
54
|
+
}
|
|
55
|
+
function L({ value: e, isMobile: t, onApply: n, onClose: r }) {
|
|
56
|
+
let i = B(e?.from), a = B(e?.to), [o, d] = s(i), [f, p] = s(a), [m, h] = s(i ?? /* @__PURE__ */ new Date()), g = b(m, 1), _ = (e) => {
|
|
57
|
+
if (!o || o && f) {
|
|
58
|
+
d(e), p(null);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (E(e, o)) {
|
|
62
|
+
d(e), p(null);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
p(e);
|
|
66
|
+
}, v = /* @__PURE__ */ u("div", {
|
|
67
|
+
className: "mt-6 flex items-center justify-end gap-2",
|
|
68
|
+
children: [/* @__PURE__ */ l("button", {
|
|
69
|
+
type: "button",
|
|
70
|
+
onClick: r,
|
|
71
|
+
className: "cursor-pointer rounded-full bg-bg-subtle px-5 py-2 text-sm font-semibold text-fg-muted transition-colors hover:bg-bg-muted",
|
|
72
|
+
children: "닫기"
|
|
73
|
+
}), /* @__PURE__ */ l("button", {
|
|
74
|
+
type: "button",
|
|
75
|
+
onClick: () => {
|
|
76
|
+
if (!o) {
|
|
77
|
+
r();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
n({
|
|
81
|
+
from: w(o, "yyyy-MM-dd"),
|
|
82
|
+
to: w(f ?? o, "yyyy-MM-dd")
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
className: "cursor-pointer rounded-full bg-primary px-5 py-2 text-sm font-semibold text-fg-inverse transition-opacity hover:opacity-90",
|
|
86
|
+
children: "적용"
|
|
87
|
+
})]
|
|
88
|
+
});
|
|
89
|
+
return t ? /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("div", {
|
|
90
|
+
className: "flex justify-center",
|
|
91
|
+
children: /* @__PURE__ */ l(R, {
|
|
92
|
+
month: m,
|
|
93
|
+
onMonthChange: h,
|
|
94
|
+
onPrev: () => h(N(m, 1)),
|
|
95
|
+
onNext: () => h(b(m, 1)),
|
|
96
|
+
showPrev: !0,
|
|
97
|
+
showNext: !0,
|
|
98
|
+
rangeFrom: o,
|
|
99
|
+
rangeTo: f,
|
|
100
|
+
onDayClick: _
|
|
101
|
+
})
|
|
102
|
+
}), v] }) : /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ u("div", {
|
|
103
|
+
className: "flex items-stretch gap-8",
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ l(R, {
|
|
106
|
+
month: m,
|
|
107
|
+
onMonthChange: h,
|
|
108
|
+
onPrev: () => h(N(m, 1)),
|
|
109
|
+
showPrev: !0,
|
|
110
|
+
rangeFrom: o,
|
|
111
|
+
rangeTo: f,
|
|
112
|
+
onDayClick: _
|
|
113
|
+
}),
|
|
114
|
+
/* @__PURE__ */ l("div", { className: "w-px bg-border-subtle" }),
|
|
115
|
+
/* @__PURE__ */ l(R, {
|
|
116
|
+
month: g,
|
|
117
|
+
onMonthChange: (e) => h(N(e, 1)),
|
|
118
|
+
onNext: () => h(b(m, 1)),
|
|
119
|
+
showNext: !0,
|
|
120
|
+
rangeFrom: o,
|
|
121
|
+
rangeTo: f,
|
|
122
|
+
onDayClick: _
|
|
123
|
+
})
|
|
124
|
+
]
|
|
125
|
+
}), v] });
|
|
126
|
+
}
|
|
127
|
+
function R({ month: n, onMonthChange: r, onPrev: i, onNext: a, showPrev: c, showNext: d, rangeFrom: f, rangeTo: p, onDayClick: m }) {
|
|
128
|
+
let [h, g] = s(!1), _ = o(() => x({
|
|
129
|
+
start: M(j(n), { weekStartsOn: 0 }),
|
|
130
|
+
end: C(S(n), { weekStartsOn: 0 })
|
|
131
|
+
}), [n]), v = o(() => {
|
|
132
|
+
let e = [];
|
|
133
|
+
for (let t = -24; t <= F; t++) e.push(b(j(/* @__PURE__ */ new Date()), t));
|
|
134
|
+
return e;
|
|
135
|
+
}, []);
|
|
136
|
+
return /* @__PURE__ */ u("div", {
|
|
137
|
+
className: "flex w-full max-w-[300px] flex-col sm:w-[260px]",
|
|
138
|
+
children: [
|
|
139
|
+
/* @__PURE__ */ u("div", {
|
|
140
|
+
className: "mb-4 flex items-center justify-between",
|
|
141
|
+
children: [
|
|
142
|
+
/* @__PURE__ */ l(z, {
|
|
143
|
+
direction: "left",
|
|
144
|
+
onClick: i,
|
|
145
|
+
visible: !!c
|
|
146
|
+
}),
|
|
147
|
+
/* @__PURE__ */ u("div", {
|
|
148
|
+
className: "relative flex flex-1 justify-center",
|
|
149
|
+
children: [/* @__PURE__ */ u("button", {
|
|
150
|
+
type: "button",
|
|
151
|
+
onClick: () => g((e) => !e),
|
|
152
|
+
className: "flex cursor-pointer items-center gap-1 rounded px-3 py-1.5 text-sm font-semibold text-fg-default transition-colors hover:bg-bg-subtle",
|
|
153
|
+
children: [w(n, "yyyy. MM."), /* @__PURE__ */ l(t, { className: "h-3.5 w-3.5 text-fg-subtle" })]
|
|
154
|
+
}), h && /* @__PURE__ */ l("div", {
|
|
155
|
+
className: "scrollbar-brand absolute top-full z-20 mt-1 max-h-[240px] w-[140px] overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface py-1 shadow-overlay",
|
|
156
|
+
children: v.map((t) => /* @__PURE__ */ l("button", {
|
|
157
|
+
type: "button",
|
|
158
|
+
onClick: () => {
|
|
159
|
+
r(t), g(!1);
|
|
160
|
+
},
|
|
161
|
+
className: e("w-full cursor-pointer bg-bg-surface px-4 py-2 text-left text-sm transition-colors", O(t, n) ? "bg-bg-muted font-semibold text-fg-default" : "text-fg-muted hover:bg-bg-subtle"),
|
|
162
|
+
children: w(t, "yyyy. MM.")
|
|
163
|
+
}, t.toISOString()))
|
|
164
|
+
})]
|
|
165
|
+
}),
|
|
166
|
+
/* @__PURE__ */ l(z, {
|
|
167
|
+
direction: "right",
|
|
168
|
+
onClick: a,
|
|
169
|
+
visible: !!d
|
|
170
|
+
})
|
|
171
|
+
]
|
|
172
|
+
}),
|
|
173
|
+
/* @__PURE__ */ l("div", {
|
|
174
|
+
className: "mb-2 grid grid-cols-7",
|
|
175
|
+
children: [
|
|
176
|
+
"일",
|
|
177
|
+
"월",
|
|
178
|
+
"화",
|
|
179
|
+
"수",
|
|
180
|
+
"목",
|
|
181
|
+
"금",
|
|
182
|
+
"토"
|
|
183
|
+
].map((e) => /* @__PURE__ */ l("div", {
|
|
184
|
+
className: "py-1 text-center text-xs font-medium text-fg-subtle",
|
|
185
|
+
children: e
|
|
186
|
+
}, e))
|
|
187
|
+
}),
|
|
188
|
+
/* @__PURE__ */ l("div", {
|
|
189
|
+
className: "grid grid-cols-7 gap-y-1",
|
|
190
|
+
children: _.map((t) => {
|
|
191
|
+
let i = O(t, n), a = !!(f && D(t, f)), o = !!(p && D(t, p)), s = !!f && !!p && T(t, f) && E(t, p), c = a || o, d = s || o && !!f, h = s || a && !!p;
|
|
192
|
+
return /* @__PURE__ */ u("button", {
|
|
193
|
+
type: "button",
|
|
194
|
+
onClick: () => {
|
|
195
|
+
i || r(t), m(t);
|
|
196
|
+
},
|
|
197
|
+
className: "group relative flex h-9 cursor-pointer items-center justify-center text-sm",
|
|
198
|
+
"aria-label": w(t, "yyyy년 M월 d일", { locale: P }),
|
|
199
|
+
children: [
|
|
200
|
+
d && /* @__PURE__ */ l("span", {
|
|
201
|
+
className: "absolute inset-y-0 left-0 right-1/2 bg-bg-muted",
|
|
202
|
+
"aria-hidden": !0
|
|
203
|
+
}),
|
|
204
|
+
h && /* @__PURE__ */ l("span", {
|
|
205
|
+
className: "absolute inset-y-0 left-1/2 right-0 bg-bg-muted",
|
|
206
|
+
"aria-hidden": !0
|
|
207
|
+
}),
|
|
208
|
+
c && /* @__PURE__ */ l("span", {
|
|
209
|
+
className: "absolute left-1/2 top-1/2 h-9 w-9 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary",
|
|
210
|
+
"aria-hidden": !0
|
|
211
|
+
}),
|
|
212
|
+
/* @__PURE__ */ l("span", {
|
|
213
|
+
className: e("relative z-10", !i && "text-fg-disabled", i && !c && "text-fg-default", c && "font-bold text-fg-inverse"),
|
|
214
|
+
children: w(t, "d")
|
|
215
|
+
})
|
|
216
|
+
]
|
|
217
|
+
}, t.toISOString());
|
|
218
|
+
})
|
|
219
|
+
})
|
|
220
|
+
]
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
function z({ direction: e, onClick: t, visible: i }) {
|
|
224
|
+
return i ? /* @__PURE__ */ l("button", {
|
|
225
|
+
type: "button",
|
|
226
|
+
onClick: t,
|
|
227
|
+
className: "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border-subtle text-fg-muted transition-colors hover:bg-bg-subtle",
|
|
228
|
+
"aria-label": e === "left" ? "이전 달" : "다음 달",
|
|
229
|
+
children: /* @__PURE__ */ l(e === "left" ? n : r, { className: "h-4 w-4" })
|
|
230
|
+
}) : /* @__PURE__ */ l("div", { className: "w-8" });
|
|
231
|
+
}
|
|
232
|
+
function B(e) {
|
|
233
|
+
if (!e) return null;
|
|
234
|
+
let t = A(e);
|
|
235
|
+
return k(t) ? t : null;
|
|
236
|
+
}
|
|
237
|
+
//#endregion
|
|
238
|
+
export { I as DateRangePicker };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DateRangePicker } from './date-range-picker.js';
|
|
2
|
+
export type { DateRange } from './date-range-picker.js';
|
|
3
|
+
export { DatePicker, DatePickerBody } from './date-picker.js';
|
|
4
|
+
export { MonthPicker } from './month-picker.js';
|
|
5
|
+
export type { MonthValue } from './month-picker.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/chevron-left.cjs"),n=require("../../node_modules/lucide-react/dist/esm/icons/chevron-right.cjs"),r=require("./PickerSheet.cjs");let i=require("react"),a=require("react/jsx-runtime"),o=require("@floating-ui/react");function s({children:e,value:t,onChange:n,disabled:s,disableMobileSheet:l}){let[u,d]=(0,i.useState)(!1),{useSheet:f}=r.usePickerMobile(l),{refs:p,floatingStyles:m,context:h}=(0,o.useFloating)({open:u,onOpenChange:e=>{s||d(e)},placement:`bottom-start`,whileElementsMounted:o.autoUpdate,middleware:[(0,o.offset)(8),(0,o.flip)({fallbackAxisSideDirection:`start`}),(0,o.shift)({padding:8})]}),{getReferenceProps:g,getFloatingProps:_}=(0,o.useInteractions)([(0,o.useClick)(h,{enabled:!s}),(0,o.useDismiss)(h),(0,o.useRole)(h,{role:`dialog`})]),v=e=>{n(e),d(!1)},y=new Date,[b,x]=(0,i.useState)(t?.year??y.getFullYear()),S=(0,a.jsx)(c,{year:b,onYearChange:x,selectedYear:t?.year,selectedMonth:t?.month,currentYear:y.getFullYear(),currentMonth:y.getMonth()+1,onSelect:e=>v({year:b,month:e})});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`span`,{ref:p.setReference,...g(),className:`inline-flex`,children:e}),(0,a.jsx)(r.PickerSheet,{isOpen:u,onClose:()=>d(!1),useSheet:f,context:h,setFloating:p.setFloating,floatingStyles:m,getFloatingProps:_,desktopClassName:`z-floating w-70 rounded-2xl border border-border-subtle bg-bg-surface text-fg-default p-5 shadow-tooltip`,children:S})]})}function c({year:t,onYearChange:n,selectedYear:r,selectedMonth:i,currentYear:o,currentMonth:s,onSelect:c}){let u=Array.from({length:12},(e,t)=>t+1);return(0,a.jsxs)(`div`,{className:`flex flex-col`,children:[(0,a.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,a.jsx)(l,{direction:`left`,onClick:()=>n(t-1)}),(0,a.jsxs)(`div`,{className:`flex-1 text-center text-sm font-semibold text-fg-default`,children:[t,`년`]}),(0,a.jsx)(l,{direction:`right`,onClick:()=>n(t+1)})]}),(0,a.jsx)(`div`,{className:`grid grid-cols-4 gap-2`,children:u.map(n=>{let l=r===t&&i===n;return(0,a.jsxs)(`button`,{type:`button`,onClick:()=>c(n),className:e.cn(`h-10 cursor-pointer rounded-lg text-sm transition-colors`,l?`bg-primary font-bold text-fg-inverse`:t===o&&n===s?`bg-bg-muted font-semibold text-fg-default`:`text-fg-default hover:bg-bg-subtle`),"aria-label":`${t}년 ${n}월`,"aria-pressed":l,children:[n,`월`]},n)})})]})}function l({direction:e,onClick:r}){return(0,a.jsx)(`button`,{type:`button`,onClick:r,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border-subtle text-fg-muted transition-colors hover:bg-bg-subtle`,"aria-label":e===`left`?`이전 해`:`다음 해`,children:(0,a.jsx)(e===`left`?t.ChevronLeft:n.ChevronRight,{className:`h-4 w-4`})})}exports.MonthPicker=s;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { ChevronLeft as t } from "../../node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js";
|
|
3
|
+
import { ChevronRight as n } from "../../node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js";
|
|
4
|
+
import { PickerSheet as r, usePickerMobile as i } from "./PickerSheet.esm.js";
|
|
5
|
+
import { useState as a } from "react";
|
|
6
|
+
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
7
|
+
import { autoUpdate as l, flip as u, offset as d, shift as f, useClick as p, useDismiss as m, useFloating as h, useInteractions as g, useRole as _ } from "@floating-ui/react";
|
|
8
|
+
//#region src/components/date-picker/month-picker.tsx
|
|
9
|
+
function v({ children: e, value: t, onChange: n, disabled: v, disableMobileSheet: b }) {
|
|
10
|
+
let [x, S] = a(!1), { useSheet: C } = i(b), { refs: w, floatingStyles: T, context: E } = h({
|
|
11
|
+
open: x,
|
|
12
|
+
onOpenChange: (e) => {
|
|
13
|
+
v || S(e);
|
|
14
|
+
},
|
|
15
|
+
placement: "bottom-start",
|
|
16
|
+
whileElementsMounted: l,
|
|
17
|
+
middleware: [
|
|
18
|
+
d(8),
|
|
19
|
+
u({ fallbackAxisSideDirection: "start" }),
|
|
20
|
+
f({ padding: 8 })
|
|
21
|
+
]
|
|
22
|
+
}), { getReferenceProps: D, getFloatingProps: O } = g([
|
|
23
|
+
p(E, { enabled: !v }),
|
|
24
|
+
m(E),
|
|
25
|
+
_(E, { role: "dialog" })
|
|
26
|
+
]), k = (e) => {
|
|
27
|
+
n(e), S(!1);
|
|
28
|
+
}, A = /* @__PURE__ */ new Date(), [j, M] = a(t?.year ?? A.getFullYear()), N = /* @__PURE__ */ s(y, {
|
|
29
|
+
year: j,
|
|
30
|
+
onYearChange: M,
|
|
31
|
+
selectedYear: t?.year,
|
|
32
|
+
selectedMonth: t?.month,
|
|
33
|
+
currentYear: A.getFullYear(),
|
|
34
|
+
currentMonth: A.getMonth() + 1,
|
|
35
|
+
onSelect: (e) => k({
|
|
36
|
+
year: j,
|
|
37
|
+
month: e
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
return /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("span", {
|
|
41
|
+
ref: w.setReference,
|
|
42
|
+
...D(),
|
|
43
|
+
className: "inline-flex",
|
|
44
|
+
children: e
|
|
45
|
+
}), /* @__PURE__ */ s(r, {
|
|
46
|
+
isOpen: x,
|
|
47
|
+
onClose: () => S(!1),
|
|
48
|
+
useSheet: C,
|
|
49
|
+
context: E,
|
|
50
|
+
setFloating: w.setFloating,
|
|
51
|
+
floatingStyles: T,
|
|
52
|
+
getFloatingProps: O,
|
|
53
|
+
desktopClassName: "z-floating w-70 rounded-2xl border border-border-subtle bg-bg-surface text-fg-default p-5 shadow-tooltip",
|
|
54
|
+
children: N
|
|
55
|
+
})] });
|
|
56
|
+
}
|
|
57
|
+
function y({ year: t, onYearChange: n, selectedYear: r, selectedMonth: i, currentYear: a, currentMonth: o, onSelect: l }) {
|
|
58
|
+
let u = Array.from({ length: 12 }, (e, t) => t + 1);
|
|
59
|
+
return /* @__PURE__ */ c("div", {
|
|
60
|
+
className: "flex flex-col",
|
|
61
|
+
children: [/* @__PURE__ */ c("div", {
|
|
62
|
+
className: "mb-4 flex items-center justify-between",
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ s(b, {
|
|
65
|
+
direction: "left",
|
|
66
|
+
onClick: () => n(t - 1)
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ c("div", {
|
|
69
|
+
className: "flex-1 text-center text-sm font-semibold text-fg-default",
|
|
70
|
+
children: [t, "년"]
|
|
71
|
+
}),
|
|
72
|
+
/* @__PURE__ */ s(b, {
|
|
73
|
+
direction: "right",
|
|
74
|
+
onClick: () => n(t + 1)
|
|
75
|
+
})
|
|
76
|
+
]
|
|
77
|
+
}), /* @__PURE__ */ s("div", {
|
|
78
|
+
className: "grid grid-cols-4 gap-2",
|
|
79
|
+
children: u.map((n) => {
|
|
80
|
+
let s = r === t && i === n;
|
|
81
|
+
return /* @__PURE__ */ c("button", {
|
|
82
|
+
type: "button",
|
|
83
|
+
onClick: () => l(n),
|
|
84
|
+
className: e("h-10 cursor-pointer rounded-lg text-sm transition-colors", s ? "bg-primary font-bold text-fg-inverse" : t === a && n === o ? "bg-bg-muted font-semibold text-fg-default" : "text-fg-default hover:bg-bg-subtle"),
|
|
85
|
+
"aria-label": `${t}년 ${n}월`,
|
|
86
|
+
"aria-pressed": s,
|
|
87
|
+
children: [n, "월"]
|
|
88
|
+
}, n);
|
|
89
|
+
})
|
|
90
|
+
})]
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function b({ direction: e, onClick: r }) {
|
|
94
|
+
return /* @__PURE__ */ s("button", {
|
|
95
|
+
type: "button",
|
|
96
|
+
onClick: r,
|
|
97
|
+
className: "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border-subtle text-fg-muted transition-colors hover:bg-bg-subtle",
|
|
98
|
+
"aria-label": e === "left" ? "이전 해" : "다음 해",
|
|
99
|
+
children: /* @__PURE__ */ s(e === "left" ? t : n, { className: "h-4 w-4" })
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
export { v as MonthPicker };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs"),t=require("../../hooks/useMediaQuery.cjs"),n=require("../../hooks/useScrollLock.cjs"),r=require("../../hooks/useFocusTrap.cjs"),i=require("../../lib/overlay-stack.cjs"),a=require("../../lib/Portal.cjs"),o=require("../modal/ModalFocusTrapContext.cjs");let s=require("react"),c=require("react/jsx-runtime"),l=require("motion/react");function u({open:u,onClose:d,title:f,dismissible:p=!0,trapFocus:m=!0,onExitComplete:h,widthPx:g=480,className:_,children:v}){let y=t.useIsMobile(),b={width:g,maxWidth:`100vw`},x=(0,s.useId)(),S=(0,s.useId)(),C=(0,l.useDragControls)(),w=(0,l.useReducedMotion)(),[T,E]=(0,s.useState)(null),{context:D,isTop:O}=o.useModalSubViews(u,m,x);(0,s.useLayoutEffect)(()=>{T&&(T.inert=!u)},[T,u]);let k=(e,t)=>{p&&(t.offset.y>100||t.velocity.y>500)&&d()};(0,s.useEffect)(()=>{if(u)return i.overlayStack.push(x),()=>{i.overlayStack.pop(x)}},[u,x]),n.useScrollLock(u),r.useFocusTrap(T,{enabled:u,trapFocus:m,canTrap:O}),(0,s.useEffect)(()=>{let e=e=>{e.key!==`Escape`||!p||O()&&d()};return u&&window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u,d,p,O]);let A=(0,c.jsxs)(a.Portal,{children:[(0,c.jsx)(l.AnimatePresence,{children:u&&(0,c.jsx)(l.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:w?0:.2},onClick:()=>{!p||!O()||d()},className:`fixed inset-0 z-overlay bg-bg-overlay`},`drawer-backdrop`)}),(0,c.jsx)(l.AnimatePresence,{onExitComplete:h,children:u&&(0,c.jsxs)(l.motion.div,{ref:E,role:`dialog`,"aria-modal":`true`,"aria-labelledby":f?S:void 0,tabIndex:-1,initial:y?{y:`100%`}:{x:`100%`},animate:y?{y:0}:{x:0},exit:y?{y:`100%`,transition:{duration:w?0:.2,ease:[.4,0,1,1]}}:{x:`100%`},transition:w?{duration:0}:y?{type:`spring`,damping:38,stiffness:320}:{type:`spring`,damping:30,stiffness:280},drag:y&&p?`y`:!1,dragListener:!1,dragControls:C,dragConstraints:{top:0,bottom:0},dragElastic:{top:0,bottom:.4},onDragEnd:k,className:e.cn(`fixed z-overlay flex flex-col overflow-x-hidden bg-bg-surface text-fg-default outline-none -bottom-8 left-0 right-0 max-h-[88vh] w-full rounded-t-sheet pb-8 sm:bottom-0 sm:left-auto sm:right-0 sm:top-0 sm:max-h-none sm:h-full sm:w-auto sm:rounded-none sm:pb-0`,_),style:y?void 0:b,children:[(0,c.jsx)(`div`,{className:e.cn(`flex justify-center pt-2 pb-1 cursor-grab touch-none active:cursor-grabbing sm:hidden`,!p&&`pointer-events-none opacity-0`),onPointerDown:e=>{p&&C.start(e)},children:(0,c.jsx)(`div`,{className:`h-1 w-10 rounded-full bg-bg-handle`})}),f&&(0,c.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border-subtle px-4 py-3`,children:[(0,c.jsx)(`h3`,{id:S,className:`text-base font-semibold text-fg-default sm:text-lg`,children:f}),(0,c.jsx)(`button`,{type:`button`,onClick:d,disabled:!p,className:e.cn(`rounded-control-medium p-1 text-fg-muted hover:text-fg-default`,!p&&`pointer-events-none opacity-0`),"aria-label":`닫기`,children:(0,c.jsx)(`svg`,{className:`h-5 w-5`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,c.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M6 18L18 6M6 6l12 12`})})})]}),(0,c.jsx)(`div`,{className:`flex-1 overflow-auto`,children:v})]},`drawer-sheet`)})]});return(0,c.jsx)(o.ModalFocusTrapContext.Provider,{value:D,children:A})}exports.Drawer=u;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface DrawerProps {
|
|
2
|
+
open: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
title?: string;
|
|
5
|
+
/** false면 ESC, 백드롭, 닫기 버튼과 바텀시트 드래그로 닫히지 않는다. @default true */
|
|
6
|
+
dismissible?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* false면 Tab 가두기, 배경 포커스 복귀와 레이어·토스트 제거로 body에 유실된 포커스 복구를 끈다.
|
|
9
|
+
* 초기 포커스와 닫힐 때의 복원 규칙은 유지한다 —
|
|
10
|
+
* 닫는 시점에 포커스가 시트·부유 레이어 안이거나 body이면 열기 직전 요소로 복원하고,
|
|
11
|
+
* 소비자가 배경의 다른 요소로 옮겨 둔 포커스는 그대로 둔다.
|
|
12
|
+
* 안에 둔 ModalSubView에도 같은 설정이 적용된다. @default true
|
|
13
|
+
*/
|
|
14
|
+
trapFocus?: boolean;
|
|
15
|
+
/** 닫힘 모션이 끝난 뒤 호출한다. open을 false로 바꾸지 않고 컴포넌트를 언마운트하면 호출되지 않는다. */
|
|
16
|
+
onExitComplete?: () => void;
|
|
17
|
+
/** 데스크탑(sm+) 드로어 폭(px). 기본 480. 모바일은 무관 (바텀시트). */
|
|
18
|
+
widthPx?: number;
|
|
19
|
+
/**
|
|
20
|
+
* 시트(패널) 루트에 병합되는 클래스. 인스턴스별로 배경·여백 등을 덮을 때 쓴다.
|
|
21
|
+
* `cn`(tailwind-merge)으로 병합되어 같은 속성은 이 값이 이긴다. 백드롭에는 적용되지 않는다.
|
|
22
|
+
*/
|
|
23
|
+
className?: string;
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 데스크탑(`sm`+)에서는 화면 우측에서 슬라이드 인 하는 사이드 드로어,
|
|
28
|
+
* 모바일에서는 화면 하단에서 올라오는 bottom-sheet으로 동작.
|
|
29
|
+
* 열리면 첫 tabbable(제목과 활성 닫기 버튼이 있으면 닫기 버튼)에 포커스하며, 다른 필드는 `autoFocus`를 준다.
|
|
30
|
+
*
|
|
31
|
+
* 모바일 분기·드래그-다운 닫기·바텀시트 하단 틈 방지 패턴은 Modal과 동일.
|
|
32
|
+
*
|
|
33
|
+
* **레이어드 오버레이**: ESC/백드롭은 `overlayStack`에서 자신이 top일 때만 반응한다.
|
|
34
|
+
* ActionToast나 열린 ModalSubView가 위에 떠 있으면 자동으로 양보된다.
|
|
35
|
+
*
|
|
36
|
+
* **포커스 트랩**: `aria-controls`로 연결된 Floating UI 포털 또는 `data-focus-trap-layer`가
|
|
37
|
+
* 붙은 포털만 부유 레이어로 인정한다. 연결을 알 수 없는 포털의 Tab은 드로어로 돌아오므로
|
|
38
|
+
* 해당 포털에 표식을 붙이거나 `trapFocus={false}`를 사용한다. 표식은 문서 전체에서 찾으므로
|
|
39
|
+
* 현재 트랩에 편입할 포털에만 붙인다. `role="dialog"` + `aria-modal="true"`인 포털(서드파티
|
|
40
|
+
* 다이얼로그 등)은 표식이 있어도 편입하지 않으므로 `trapFocus={false}`를 사용한다.
|
|
41
|
+
* 액션 토스트가 top이면 트랩은 양보하며, 그동안에는 Tab이 드로어 밖으로 나갈 수 있다
|
|
42
|
+
* (`backdrop: false` 알림성 토스트 포함). Tab으로 드로어 밖에 떨어진 포커스는 고리로 되돌리고,
|
|
43
|
+
* 마우스로 옮긴 포커스는 건드리지 않는다.
|
|
44
|
+
*/
|
|
45
|
+
export declare function Drawer({ open, onClose, title, dismissible, trapFocus, onExitComplete, widthPx, className, children, }: DrawerProps): import("react").JSX.Element;
|