@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,77 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { getButtonBaseClasses as t, getButtonColorClasses as n, getButtonDisplayClasses as r, getButtonFocusRing as i, getButtonSizeClasses as a } from "./utils.esm.js";
|
|
3
|
+
import { forwardRef as o, useEffect as s, useRef as c, useState as l } from "react";
|
|
4
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/button/Button.tsx
|
|
6
|
+
var f = () => /* @__PURE__ */ d("svg", {
|
|
7
|
+
className: "animate-button-spinner size-button-spinner-small",
|
|
8
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
9
|
+
fill: "none",
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
children: [/* @__PURE__ */ u("circle", {
|
|
12
|
+
className: "opacity-button-spinner-track",
|
|
13
|
+
cx: "12",
|
|
14
|
+
cy: "12",
|
|
15
|
+
r: "10",
|
|
16
|
+
stroke: "currentColor",
|
|
17
|
+
strokeWidth: "4"
|
|
18
|
+
}), /* @__PURE__ */ u("path", {
|
|
19
|
+
className: "opacity-button-spinner-head",
|
|
20
|
+
fill: "currentColor",
|
|
21
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
22
|
+
})]
|
|
23
|
+
}), p = o((o, p) => {
|
|
24
|
+
let { variant: m = "primary", appearance: h = "filled", size: g = "medium", display: _ = "inline", loading: v = !1, clickThrottleMs: y = 0, leadingIcon: b, trailingIcon: x, className: S = "", children: C, ...w } = o, [T, E] = l(!1), D = c(null), O = () => {
|
|
25
|
+
y && (E(!0), D.current && clearTimeout(D.current), D.current = setTimeout(() => {
|
|
26
|
+
E(!1), D.current = null;
|
|
27
|
+
}, y));
|
|
28
|
+
};
|
|
29
|
+
s(() => () => {
|
|
30
|
+
D.current && clearTimeout(D.current);
|
|
31
|
+
}, []);
|
|
32
|
+
let k = "as" in o && o.as === "a", A = ("disabled" in o ? o.disabled : !1) || v || T, j = e(t(), n(m, h), a(g), r(_), i(m), v && "opacity-70 cursor-wait", k && A && "pointer-events-none", k && A && !v && "opacity-button-disabled", S);
|
|
33
|
+
if (k) {
|
|
34
|
+
let e = w, t = (t) => {
|
|
35
|
+
if (A) {
|
|
36
|
+
t.preventDefault();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
O(), e.onClick?.(t);
|
|
40
|
+
};
|
|
41
|
+
return /* @__PURE__ */ d("a", {
|
|
42
|
+
ref: p,
|
|
43
|
+
className: j,
|
|
44
|
+
"aria-disabled": A,
|
|
45
|
+
tabIndex: A ? -1 : e.tabIndex,
|
|
46
|
+
...e,
|
|
47
|
+
onClick: t,
|
|
48
|
+
children: [
|
|
49
|
+
v ? /* @__PURE__ */ u(f, {}) : b,
|
|
50
|
+
C,
|
|
51
|
+
!v && x
|
|
52
|
+
]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
let M = w, N = (e) => {
|
|
56
|
+
if (A) {
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
O(), M.onClick?.(e);
|
|
61
|
+
};
|
|
62
|
+
return /* @__PURE__ */ d("button", {
|
|
63
|
+
ref: p,
|
|
64
|
+
className: j,
|
|
65
|
+
disabled: A,
|
|
66
|
+
...M,
|
|
67
|
+
onClick: N,
|
|
68
|
+
children: [
|
|
69
|
+
v ? /* @__PURE__ */ u(f, {}) : b,
|
|
70
|
+
C,
|
|
71
|
+
!v && x
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
p.displayName = "Button";
|
|
76
|
+
//#endregion
|
|
77
|
+
export { p as Button };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Button } from './Button';
|
|
2
|
-
export type { ButtonProps, ButtonBaseProps, ButtonLinkProps, ButtonVariant, ButtonAppearance, ButtonSize, ButtonDisplay, } from './types';
|
|
1
|
+
export { Button } from './Button.js';
|
|
2
|
+
export type { ButtonProps, ButtonBaseProps, ButtonLinkProps, ButtonVariant, ButtonAppearance, ButtonSize, ButtonDisplay, } from './types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=(e=`primary`,t=`filled`)=>({primary:{filled:`border-transparent bg-primary text-fg-inverse hover:bg-primary-hover active:bg-primary-active disabled:bg-bg-disabled disabled:text-fg-disabled`,outlined:`bg-bg-surface text-fg-default border-border-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-subtle disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-fg-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled`},secondary:{filled:`border-transparent bg-primary-subtle text-primary-fg hover:bg-button-secondary-hover active:bg-button-secondary-active disabled:bg-bg-disabled disabled:text-fg-disabled`,outlined:`bg-bg-surface text-fg-muted border-border-subtle hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-fg-muted hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled`},tertiary:{filled:`border-transparent bg-bg-subtle text-fg-muted hover:bg-bg-muted active:bg-bg-disabled disabled:bg-bg-page disabled:text-fg-disabled`,outlined:`bg-bg-surface text-fg-subtle border-border-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-fg-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled`},danger:{filled:`border-transparent bg-error text-fg-inverse hover:bg-error-hover active:bg-error-active disabled:bg-bg-disabled disabled:text-fg-disabled`,outlined:`bg-bg-surface text-error-fg border-border-danger hover:bg-error-subtle active:bg-error-muted disabled:text-error-border disabled:border-error-border disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-error-fg hover:bg-error-subtle active:bg-error-muted disabled:text-error-border`}})[e][t],t=(e=`medium`)=>({mini:`h-control-mini px-control-pad-mini text-control-mini gap-button-mini rounded-control-mini`,small:`h-control-small px-control-pad-small text-control-small gap-button-small rounded-control-small`,medium:`h-control-medium px-control-pad-medium text-control-medium gap-button-medium rounded-control-medium`,large:`h-control-large px-control-pad-large text-control-large gap-button-large rounded-control-large`})[e],n=(e=`inline`)=>({inline:`inline-flex`,block:`flex w-full`})[e],r=()=>`items-center justify-center font-control-action border-button transition-colors duration-button ease-button outline-none focus-visible:ring-button focus-visible:ring-inset disabled:cursor-not-allowed disabled:pointer-events-none`,i=(e=`primary`)=>({primary:`focus-visible:ring-focus-primary`,secondary:`focus-visible:ring-focus-primary`,tertiary:`focus-visible:ring-border-default`,danger:`focus-visible:ring-focus-danger`})[e];exports.getButtonBaseClasses=r,exports.getButtonColorClasses=e,exports.getButtonDisplayClasses=n,exports.getButtonFocusRing=i,exports.getButtonSizeClasses=t;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ButtonAppearance, ButtonDisplay, ButtonSize, ButtonVariant } from './types';
|
|
1
|
+
import { ButtonAppearance, ButtonDisplay, ButtonSize, ButtonVariant } from './types.js';
|
|
2
2
|
export declare const getButtonColorClasses: (variant?: ButtonVariant, appearance?: ButtonAppearance) => string;
|
|
3
3
|
export declare const getButtonSizeClasses: (size?: ButtonSize) => string;
|
|
4
4
|
export declare const getButtonDisplayClasses: (display?: ButtonDisplay) => string;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/components/button/utils.ts
|
|
2
|
+
var e = (e = "primary", t = "filled") => ({
|
|
3
|
+
primary: {
|
|
4
|
+
filled: "border-transparent bg-primary text-fg-inverse hover:bg-primary-hover active:bg-primary-active disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
5
|
+
outlined: "bg-bg-surface text-fg-default border-border-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-subtle disabled:bg-transparent",
|
|
6
|
+
transparent: "border-transparent bg-transparent text-fg-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled"
|
|
7
|
+
},
|
|
8
|
+
secondary: {
|
|
9
|
+
filled: "border-transparent bg-primary-subtle text-primary-fg hover:bg-button-secondary-hover active:bg-button-secondary-active disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
10
|
+
outlined: "bg-bg-surface text-fg-muted border-border-subtle hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent",
|
|
11
|
+
transparent: "border-transparent bg-transparent text-fg-muted hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled"
|
|
12
|
+
},
|
|
13
|
+
tertiary: {
|
|
14
|
+
filled: "border-transparent bg-bg-subtle text-fg-muted hover:bg-bg-muted active:bg-bg-disabled disabled:bg-bg-page disabled:text-fg-disabled",
|
|
15
|
+
outlined: "bg-bg-surface text-fg-subtle border-border-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent",
|
|
16
|
+
transparent: "border-transparent bg-transparent text-fg-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled"
|
|
17
|
+
},
|
|
18
|
+
danger: {
|
|
19
|
+
filled: "border-transparent bg-error text-fg-inverse hover:bg-error-hover active:bg-error-active disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
20
|
+
outlined: "bg-bg-surface text-error-fg border-border-danger hover:bg-error-subtle active:bg-error-muted disabled:text-error-border disabled:border-error-border disabled:bg-transparent",
|
|
21
|
+
transparent: "border-transparent bg-transparent text-error-fg hover:bg-error-subtle active:bg-error-muted disabled:text-error-border"
|
|
22
|
+
}
|
|
23
|
+
})[e][t], t = (e = "medium") => ({
|
|
24
|
+
mini: "h-control-mini px-control-pad-mini text-control-mini gap-button-mini rounded-control-mini",
|
|
25
|
+
small: "h-control-small px-control-pad-small text-control-small gap-button-small rounded-control-small",
|
|
26
|
+
medium: "h-control-medium px-control-pad-medium text-control-medium gap-button-medium rounded-control-medium",
|
|
27
|
+
large: "h-control-large px-control-pad-large text-control-large gap-button-large rounded-control-large"
|
|
28
|
+
})[e], n = (e = "inline") => ({
|
|
29
|
+
inline: "inline-flex",
|
|
30
|
+
block: "flex w-full"
|
|
31
|
+
})[e], r = () => "items-center justify-center font-control-action border-button transition-colors duration-button ease-button outline-none focus-visible:ring-button focus-visible:ring-inset disabled:cursor-not-allowed disabled:pointer-events-none", i = (e = "primary") => ({
|
|
32
|
+
primary: "focus-visible:ring-focus-primary",
|
|
33
|
+
secondary: "focus-visible:ring-focus-primary",
|
|
34
|
+
tertiary: "focus-visible:ring-border-default",
|
|
35
|
+
danger: "focus-visible:ring-focus-danger"
|
|
36
|
+
})[e];
|
|
37
|
+
//#endregion
|
|
38
|
+
export { r as getButtonBaseClasses, e as getButtonColorClasses, n as getButtonDisplayClasses, i as getButtonFocusRing, t as getButtonSizeClasses };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs"),t=require("./utils.cjs");let n=require("react"),r=require("react/jsx-runtime");var i=(0,n.forwardRef)(({variant:n,inputType:i=`checkbox`,size:a=24,baseColor:o=`primary`,label:s,onCheckedChange:c,onChange:l,className:u=``,...d},f)=>{let p=e=>{l?.(e),c?.(e.target.checked)},m=t.getCheckboxVariantClasses(n,o),h=t.getCheckboxSizeStyle(a),g=(0,r.jsxs)(`div`,{className:`inline-flex items-center relative`,children:[(0,r.jsx)(`input`,{ref:f,type:i,className:`sr-only peer`,onChange:p,...d}),(0,r.jsx)(`div`,{className:e.cn(m,`peer-checked:[&_path]:scale-100`,u),style:h,children:(0,r.jsx)(`svg`,{className:`absolute inset-0 w-full h-full pointer-events-none`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,r.jsx)(`path`,{d:`M5 12l5 5L20 7`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`origin-center scale-0 transition-transform duration-200 ease-out`})})})]});return s?(0,r.jsxs)(`label`,{className:t.getLabelClasses(),children:[g,(0,r.jsx)(`span`,{className:`text-base text-fg-default`,children:s})]}):g});i.displayName=`CheckboxInternal`;var a=(0,n.forwardRef)((e,t)=>(0,r.jsx)(i,{ref:t,variant:`circle`,...e}));a.displayName=`Checkbox.Circle`;var o=(0,n.forwardRef)((e,t)=>(0,r.jsx)(i,{ref:t,variant:`line`,...e}));o.displayName=`Checkbox.Line`;var s=(0,n.forwardRef)((e,t)=>(0,r.jsx)(i,{ref:t,variant:`lineTransparent`,...e}));s.displayName=`Checkbox.LineTransparent`;var c={Circle:a,Line:o,LineTransparent:s};exports.Checkbox=c,exports.CheckboxCircle=a,exports.CheckboxLine=o,exports.CheckboxLineTransparent=s;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { getCheckboxSizeStyle as t, getCheckboxVariantClasses as n, getLabelClasses as r } from "./utils.esm.js";
|
|
3
|
+
import { forwardRef as i } from "react";
|
|
4
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/checkbox/Checkbox.tsx
|
|
6
|
+
var s = i(({ variant: i, inputType: s = "checkbox", size: c = 24, baseColor: l = "primary", label: u, onCheckedChange: d, onChange: f, className: p = "", ...m }, h) => {
|
|
7
|
+
let g = (e) => {
|
|
8
|
+
f?.(e), d?.(e.target.checked);
|
|
9
|
+
}, _ = n(i, l), v = t(c), y = /* @__PURE__ */ o("div", {
|
|
10
|
+
className: "inline-flex items-center relative",
|
|
11
|
+
children: [/* @__PURE__ */ a("input", {
|
|
12
|
+
ref: h,
|
|
13
|
+
type: s,
|
|
14
|
+
className: "sr-only peer",
|
|
15
|
+
onChange: g,
|
|
16
|
+
...m
|
|
17
|
+
}), /* @__PURE__ */ a("div", {
|
|
18
|
+
className: e(_, "peer-checked:[&_path]:scale-100", p),
|
|
19
|
+
style: v,
|
|
20
|
+
children: /* @__PURE__ */ a("svg", {
|
|
21
|
+
className: "absolute inset-0 w-full h-full pointer-events-none",
|
|
22
|
+
viewBox: "0 0 24 24",
|
|
23
|
+
fill: "none",
|
|
24
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
25
|
+
children: /* @__PURE__ */ a("path", {
|
|
26
|
+
d: "M5 12l5 5L20 7",
|
|
27
|
+
stroke: "currentColor",
|
|
28
|
+
strokeWidth: "2.5",
|
|
29
|
+
strokeLinecap: "round",
|
|
30
|
+
strokeLinejoin: "round",
|
|
31
|
+
className: "origin-center scale-0 transition-transform duration-200 ease-out"
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
})]
|
|
35
|
+
});
|
|
36
|
+
return u ? /* @__PURE__ */ o("label", {
|
|
37
|
+
className: r(),
|
|
38
|
+
children: [y, /* @__PURE__ */ a("span", {
|
|
39
|
+
className: "text-base text-fg-default",
|
|
40
|
+
children: u
|
|
41
|
+
})]
|
|
42
|
+
}) : y;
|
|
43
|
+
});
|
|
44
|
+
s.displayName = "CheckboxInternal";
|
|
45
|
+
var c = i((e, t) => /* @__PURE__ */ a(s, {
|
|
46
|
+
ref: t,
|
|
47
|
+
variant: "circle",
|
|
48
|
+
...e
|
|
49
|
+
}));
|
|
50
|
+
c.displayName = "Checkbox.Circle";
|
|
51
|
+
var l = i((e, t) => /* @__PURE__ */ a(s, {
|
|
52
|
+
ref: t,
|
|
53
|
+
variant: "line",
|
|
54
|
+
...e
|
|
55
|
+
}));
|
|
56
|
+
l.displayName = "Checkbox.Line";
|
|
57
|
+
var u = i((e, t) => /* @__PURE__ */ a(s, {
|
|
58
|
+
ref: t,
|
|
59
|
+
variant: "lineTransparent",
|
|
60
|
+
...e
|
|
61
|
+
}));
|
|
62
|
+
u.displayName = "Checkbox.LineTransparent";
|
|
63
|
+
var d = {
|
|
64
|
+
Circle: c,
|
|
65
|
+
Line: l,
|
|
66
|
+
LineTransparent: u
|
|
67
|
+
};
|
|
68
|
+
//#endregion
|
|
69
|
+
export { d as Checkbox, c as CheckboxCircle, l as CheckboxLine, u as CheckboxLineTransparent };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(){return`appearance-none cursor-pointer transition-all duration-200 focus:outline-hidden`}function t(t=`primary`){return`${e()} rounded-full border-2 ${{primary:`border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse`,secondary:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`,neutral:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`}[t]} relative flex items-center justify-center transition-all duration-200`}function n(t=`primary`){return`${e()} rounded-checkbox border-2 ${{primary:`border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse`,secondary:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`,neutral:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`}[t]} relative flex items-center justify-center transition-all duration-200`}function r(t=`primary`){return`${e()} rounded-checkbox border-2 bg-transparent ${{primary:`border-border-subtle peer-checked:border-primary text-primary-fg`,secondary:`border-border-subtle peer-checked:border-neutral-fill text-neutral-fg`,neutral:`border-border-subtle peer-checked:border-neutral-fill text-neutral-fg`}[t]} relative flex items-center justify-center transition-all duration-200`}function i(e,i=`primary`){switch(e){case`circle`:return t(i);case`line`:return n(i);case`lineTransparent`:return r(i);default:return n(i)}}function a(e=24){return{width:`${e}px`,height:`${e}px`}}function o(){return`inline-flex items-center gap-2 cursor-pointer select-none`}exports.getCheckboxSizeStyle=a,exports.getCheckboxVariantClasses=i,exports.getLabelClasses=o;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//#region src/components/checkbox/utils.ts
|
|
2
|
+
function e() {
|
|
3
|
+
return "appearance-none cursor-pointer transition-all duration-200 focus:outline-hidden";
|
|
4
|
+
}
|
|
5
|
+
function t(t = "primary") {
|
|
6
|
+
return `${e()} rounded-full border-2 ${{
|
|
7
|
+
primary: "border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse",
|
|
8
|
+
secondary: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse",
|
|
9
|
+
neutral: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse"
|
|
10
|
+
}[t]} relative flex items-center justify-center transition-all duration-200`;
|
|
11
|
+
}
|
|
12
|
+
function n(t = "primary") {
|
|
13
|
+
return `${e()} rounded-checkbox border-2 ${{
|
|
14
|
+
primary: "border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse",
|
|
15
|
+
secondary: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse",
|
|
16
|
+
neutral: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse"
|
|
17
|
+
}[t]} relative flex items-center justify-center transition-all duration-200`;
|
|
18
|
+
}
|
|
19
|
+
function r(t = "primary") {
|
|
20
|
+
return `${e()} rounded-checkbox border-2 bg-transparent ${{
|
|
21
|
+
primary: "border-border-subtle peer-checked:border-primary text-primary-fg",
|
|
22
|
+
secondary: "border-border-subtle peer-checked:border-neutral-fill text-neutral-fg",
|
|
23
|
+
neutral: "border-border-subtle peer-checked:border-neutral-fill text-neutral-fg"
|
|
24
|
+
}[t]} relative flex items-center justify-center transition-all duration-200`;
|
|
25
|
+
}
|
|
26
|
+
function i(e, i = "primary") {
|
|
27
|
+
switch (e) {
|
|
28
|
+
case "circle": return t(i);
|
|
29
|
+
case "line": return n(i);
|
|
30
|
+
case "lineTransparent": return r(i);
|
|
31
|
+
default: return n(i);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function a(e = 24) {
|
|
35
|
+
return {
|
|
36
|
+
width: `${e}px`,
|
|
37
|
+
height: `${e}px`
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function o() {
|
|
41
|
+
return "inline-flex items-center gap-2 cursor-pointer select-none";
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { a as getCheckboxSizeStyle, i as getCheckboxVariantClasses, o as getLabelClasses };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs");let t=require("react/jsx-runtime");function n({open:n,durationMs:r=200,ease:i=`cubic-bezier(0.16, 1, 0.3, 1)`,unmountWhenClosed:a=!1,fade:o=!0,className:s=``,children:c}){return a&&!n?null:(0,t.jsx)(`div`,{className:e.cn(`grid`,s),style:{gridTemplateRows:n?`1fr`:`0fr`,opacity:o?+!!n:void 0,transition:[`grid-template-rows ${r}ms ${i}`,o?`opacity ${r}ms ${i}`:null].filter(Boolean).join(`, `)},"aria-hidden":!n,children:(0,t.jsx)(`div`,{className:`overflow-hidden`,children:c})})}exports.Collapsible=n;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/collapsible/Collapsible.tsx
|
|
4
|
+
function n({ open: n, durationMs: r = 200, ease: i = "cubic-bezier(0.16, 1, 0.3, 1)", unmountWhenClosed: a = !1, fade: o = !0, className: s = "", children: c }) {
|
|
5
|
+
return a && !n ? null : /* @__PURE__ */ t("div", {
|
|
6
|
+
className: e("grid", s),
|
|
7
|
+
style: {
|
|
8
|
+
gridTemplateRows: n ? "1fr" : "0fr",
|
|
9
|
+
opacity: o ? +!!n : void 0,
|
|
10
|
+
transition: [`grid-template-rows ${r}ms ${i}`, o ? `opacity ${r}ms ${i}` : null].filter(Boolean).join(", ")
|
|
11
|
+
},
|
|
12
|
+
"aria-hidden": !n,
|
|
13
|
+
children: /* @__PURE__ */ t("div", {
|
|
14
|
+
className: "overflow-hidden",
|
|
15
|
+
children: c
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { n as Collapsible };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");const e=require("../../lib/utils.cjs"),t=require("../button/Button.cjs"),n=require("../../node_modules/lucide-react/dist/esm/icons/check.cjs"),r=require("../../node_modules/lucide-react/dist/esm/icons/copy.cjs");let i=require("react"),a=require("react/jsx-runtime"),o=require("react-hot-toast");var s=1500;function c({value:c,children:l,label:u,className:d,iconOnly:f=!1,feedbackDurationMs:p=s}){let[m,h]=(0,i.useState)(!1),g=(0,i.useRef)(null);(0,i.useEffect)(()=>()=>{g.current!==null&&window.clearTimeout(g.current)},[]);let _=async()=>{try{await navigator.clipboard.writeText(c),h(!0),o.default.success(u?`${u}을(를) 복사했습니다.`:`복사했습니다.`),g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{h(!1),g.current=null},p)}catch{o.default.error(u?`${u} 복사에 실패했습니다.`:`복사에 실패했습니다.`)}},v=m?(0,a.jsx)(n.Check,{"aria-hidden":`true`,className:f?`size-4`:`size-3.5 shrink-0`}):(0,a.jsx)(r.Copy,{"aria-hidden":`true`,className:f?`size-4`:`size-3.5 shrink-0 opacity-60`});return f?(0,a.jsx)(t.Button,{type:`button`,variant:`secondary`,appearance:`transparent`,"aria-label":u?`${u} 복사`:`복사`,title:u?`클릭하여 ${u} 복사`:`클릭하여 복사`,size:`mini`,className:e.cn(`w-control-mini px-0`,m&&`text-success-fg`,d),onClick:()=>void _(),children:v}):(0,a.jsxs)(`button`,{type:`button`,onClick:()=>void _(),"aria-label":u?`${u} 복사`:`복사`,title:u?`클릭하여 ${u} 복사`:`클릭하여 복사`,className:e.cn(`inline-flex items-center gap-1 rounded-control-mini text-fg-accent underline decoration-transparent underline-offset-2 transition-colors hover:decoration-current focus-visible:outline-none focus-visible:ring-control focus-visible:ring-focus-primary-soft`,m&&`text-success-fg`,d),children:[(0,a.jsx)(`span`,{children:l??c}),v]})}exports.CopyableText=c;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface CopyableTextProps {
|
|
2
|
+
/** 클립보드에 복사할 실제 값. */
|
|
3
|
+
value: string;
|
|
4
|
+
/**
|
|
5
|
+
* 화면에 렌더할 내용. 생략하면 `value`를 그대로 보여준다.
|
|
6
|
+
* 값과 표시 텍스트가 다른 소비처(예: 코드 + 부가 라벨)를 위한 옵션.
|
|
7
|
+
*/
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* 토스트·aria-label에 쓰는 항목 이름(예: "코드"). 생략하면 일반 문구를 쓴다.
|
|
11
|
+
* packages는 도메인 단어를 소유하지 않으므로 호출부가 넘긴 문자열을 그대로 쓴다.
|
|
12
|
+
*/
|
|
13
|
+
label?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
/** 값 옆이 아닌 폼 컨트롤의 trailing slot에 놓을 때 아이콘만 표시한다. */
|
|
16
|
+
iconOnly?: boolean;
|
|
17
|
+
/** 복사 성공 상태(아이콘 전환)를 유지하는 시간(ms). 기본 1500. */
|
|
18
|
+
feedbackDurationMs?: number;
|
|
19
|
+
}
|
|
20
|
+
/** 클립보드 복사 결과를 아이콘과 토스트로 알린다. 보안 컨텍스트와 clipboard 권한이 필요하며,
|
|
21
|
+
* 앱 루트에 ToastProvider를 둔다. 표시 텍스트가 복사 값과 다르면 children을 지정한다. */
|
|
22
|
+
export declare function CopyableText({ value, children, label, className, iconOnly, feedbackDurationMs, }: CopyableTextProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { Button as t } from "../button/Button.esm.js";
|
|
3
|
+
import { Check as n } from "../../node_modules/lucide-react/dist/esm/icons/check.esm.js";
|
|
4
|
+
import { Copy as r } from "../../node_modules/lucide-react/dist/esm/icons/copy.esm.js";
|
|
5
|
+
import { toast as i } from "../toast/index.esm.js";
|
|
6
|
+
import { useEffect as a, useRef as o, useState as s } from "react";
|
|
7
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/copyable-text/CopyableText.tsx
|
|
9
|
+
var u = 1500;
|
|
10
|
+
function d({ value: d, children: f, label: p, className: m, iconOnly: h = !1, feedbackDurationMs: g = u }) {
|
|
11
|
+
let [_, v] = s(!1), y = o(null);
|
|
12
|
+
a(() => () => {
|
|
13
|
+
y.current !== null && window.clearTimeout(y.current);
|
|
14
|
+
}, []);
|
|
15
|
+
let b = async () => {
|
|
16
|
+
try {
|
|
17
|
+
await navigator.clipboard.writeText(d), v(!0), i.success(p ? `${p}을(를) 복사했습니다.` : "복사했습니다."), y.current !== null && window.clearTimeout(y.current), y.current = window.setTimeout(() => {
|
|
18
|
+
v(!1), y.current = null;
|
|
19
|
+
}, g);
|
|
20
|
+
} catch {
|
|
21
|
+
i.error(p ? `${p} 복사에 실패했습니다.` : "복사에 실패했습니다.");
|
|
22
|
+
}
|
|
23
|
+
}, x = _ ? /* @__PURE__ */ c(n, {
|
|
24
|
+
"aria-hidden": "true",
|
|
25
|
+
className: h ? "size-4" : "size-3.5 shrink-0"
|
|
26
|
+
}) : /* @__PURE__ */ c(r, {
|
|
27
|
+
"aria-hidden": "true",
|
|
28
|
+
className: h ? "size-4" : "size-3.5 shrink-0 opacity-60"
|
|
29
|
+
});
|
|
30
|
+
return h ? /* @__PURE__ */ c(t, {
|
|
31
|
+
type: "button",
|
|
32
|
+
variant: "secondary",
|
|
33
|
+
appearance: "transparent",
|
|
34
|
+
"aria-label": p ? `${p} 복사` : "복사",
|
|
35
|
+
title: p ? `클릭하여 ${p} 복사` : "클릭하여 복사",
|
|
36
|
+
size: "mini",
|
|
37
|
+
className: e("w-control-mini px-0", _ && "text-success-fg", m),
|
|
38
|
+
onClick: () => void b(),
|
|
39
|
+
children: x
|
|
40
|
+
}) : /* @__PURE__ */ l("button", {
|
|
41
|
+
type: "button",
|
|
42
|
+
onClick: () => void b(),
|
|
43
|
+
"aria-label": p ? `${p} 복사` : "복사",
|
|
44
|
+
title: p ? `클릭하여 ${p} 복사` : "클릭하여 복사",
|
|
45
|
+
className: e("inline-flex items-center gap-1 rounded-control-mini text-fg-accent underline decoration-transparent underline-offset-2 transition-colors hover:decoration-current focus-visible:outline-none focus-visible:ring-control focus-visible:ring-focus-primary-soft", _ && "text-success-fg", m),
|
|
46
|
+
children: [/* @__PURE__ */ c("span", { children: f ?? d }), x]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { d as CopyableText };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/calendar.cjs"),n=require("../date-picker/date-picker.cjs");let r=require("react/jsx-runtime");function i({value:i,onChange:a,size:o=`small`,ariaLabel:s,label:c,className:l=``,disableMobileSheet:u}){let d=o===`mini`,f=d?`h-control-small`:`h-control-medium`,p=d?`w-30`:`w-36`,m=d?`pl-control-pad-mini pr-0.5`:`pl-control-pad-small pr-1`,h=d?`text-control-mini`:`text-control-small`,g=d?`h-5 w-5`:`h-6 w-6`,_=d?`h-3 w-3`:`h-3.5 w-3.5`,v=e.cn(`group relative flex items-center gap-1 rounded-lg border border-border-subtle bg-bg-surface transition-colors focus-within:border-primary`,f,p,m,l),y=i?`text-fg-default`:`text-fg-subtle`,b=!!c;return(0,r.jsxs)(`div`,{className:v,children:[(0,r.jsx)(`input`,{type:`date`,value:i,onChange:e=>a(e.target.value),min:`1900-01-01`,max:`9999-12-31`,"aria-label":s??c,className:e.cn(`search-box-date-input flex-1 bg-transparent outline-none`,h,y)}),(0,r.jsx)(n.DatePicker,{value:i||null,onApply:e=>a(e),disableMobileSheet:u,children:(0,r.jsx)(`button`,{type:`button`,"aria-label":`달력에서 날짜 선택`,className:e.cn(`flex items-center justify-center rounded text-fg-subtle transition-colors hover:bg-bg-subtle hover:text-fg-default`,g),children:(0,r.jsx)(t.Calendar,{className:_})})}),b&&(0,r.jsx)(`span`,{"aria-hidden":`true`,className:e.cn(`pointer-events-none absolute -top-2 left-2 bg-bg-surface px-1 text-fg-muted group-focus-within:text-primary-fg`,d?`text-[10px]`:`text-xs`),children:c})]})}exports.DateInput=i;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { Calendar as t } from "../../node_modules/lucide-react/dist/esm/icons/calendar.esm.js";
|
|
3
|
+
import { DatePicker as n } from "../date-picker/date-picker.esm.js";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/date-input/DateInput.tsx
|
|
6
|
+
function a({ value: a, onChange: o, size: s = "small", ariaLabel: c, label: l, className: u = "", disableMobileSheet: d }) {
|
|
7
|
+
let f = s === "mini", p = f ? "h-control-small" : "h-control-medium", m = f ? "w-30" : "w-36", h = f ? "pl-control-pad-mini pr-0.5" : "pl-control-pad-small pr-1", g = f ? "text-control-mini" : "text-control-small", _ = f ? "h-5 w-5" : "h-6 w-6", v = f ? "h-3 w-3" : "h-3.5 w-3.5", y = e("group relative flex items-center gap-1 rounded-lg border border-border-subtle bg-bg-surface transition-colors focus-within:border-primary", p, m, h, u), b = a ? "text-fg-default" : "text-fg-subtle", x = !!l;
|
|
8
|
+
return /* @__PURE__ */ i("div", {
|
|
9
|
+
className: y,
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ r("input", {
|
|
12
|
+
type: "date",
|
|
13
|
+
value: a,
|
|
14
|
+
onChange: (e) => o(e.target.value),
|
|
15
|
+
min: "1900-01-01",
|
|
16
|
+
max: "9999-12-31",
|
|
17
|
+
"aria-label": c ?? l,
|
|
18
|
+
className: e("search-box-date-input flex-1 bg-transparent outline-none", g, b)
|
|
19
|
+
}),
|
|
20
|
+
/* @__PURE__ */ r(n, {
|
|
21
|
+
value: a || null,
|
|
22
|
+
onApply: (e) => o(e),
|
|
23
|
+
disableMobileSheet: d,
|
|
24
|
+
children: /* @__PURE__ */ r("button", {
|
|
25
|
+
type: "button",
|
|
26
|
+
"aria-label": "달력에서 날짜 선택",
|
|
27
|
+
className: e("flex items-center justify-center rounded text-fg-subtle transition-colors hover:bg-bg-subtle hover:text-fg-default", _),
|
|
28
|
+
children: /* @__PURE__ */ r(t, { className: v })
|
|
29
|
+
})
|
|
30
|
+
}),
|
|
31
|
+
x && /* @__PURE__ */ r("span", {
|
|
32
|
+
"aria-hidden": "true",
|
|
33
|
+
className: e("pointer-events-none absolute -top-2 left-2 bg-bg-surface px-1 text-fg-muted group-focus-within:text-primary-fg", f ? "text-[10px]" : "text-xs"),
|
|
34
|
+
children: l
|
|
35
|
+
})
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { a as DateInput };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DateInput } from './DateInput.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../hooks/useMediaQuery.cjs"),t=require("../../hooks/useBottomSheetDrag.cjs"),n=require("../../hooks/useScrollLock.cjs"),r=require("../modal/ModalFocusTrapContext.cjs");let i=require("react"),a=require("react/jsx-runtime"),o=require("motion/react"),s=require("@floating-ui/react");function c(t){let n=e.useIsMobile(),a=(0,i.useContext)(r.ModalFocusTrapContext);return{isMobile:n,useSheet:n&&!(t??a!==r.defaultModalFocusTrapContext)}}function l({isOpen:e,onClose:r,useSheet:i,context:c,setFloating:l,floatingStyles:u,getFloatingProps:d,desktopClassName:f,initialFocus:p=-1,children:m}){let h=(0,o.useReducedMotion)(),{dragControls:g,handleDragEnd:_,startDrag:v}=t.useBottomSheetDrag({onDismiss:r});return n.useScrollLock(e&&i),(0,a.jsx)(s.FloatingPortal,{children:i?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.AnimatePresence,{children:e&&(0,a.jsx)(o.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:h?0:.2},className:`fixed inset-0 z-overlay bg-bg-overlay`,onClick:r},`picker-dimmer`)}),(0,a.jsx)(o.AnimatePresence,{children:e&&(0,a.jsxs)(o.motion.div,{ref:l,...d(),initial:{y:`100%`},animate:{y:0},exit:{y:`100%`,transition:{duration:h?0:.2,ease:[.4,0,1,1]}},transition:h?{duration:0}:{type:`spring`,damping:30,stiffness:320},drag:`y`,dragListener:!1,dragControls:g,dragConstraints:{top:0},dragElastic:{top:0,bottom:.4},onDragEnd:_,className:`fixed inset-x-0 bottom-0 z-overlay flex flex-col gap-5 rounded-t-2xl bg-bg-surface text-fg-default p-5 pb-[max(20px,env(safe-area-inset-bottom))] shadow-overlay`,children:[(0,a.jsx)(`div`,{className:`self-center h-1 w-10 rounded-full bg-bg-handle cursor-grab touch-none active:cursor-grabbing`,onPointerDown:v}),m]},`picker-sheet`)})]}):e&&(0,a.jsx)(s.FloatingFocusManager,{context:c,modal:!1,initialFocus:p,children:(0,a.jsx)(`div`,{ref:l,style:u,...d(),"data-picker-panel":``,className:f,children:m})})})}exports.PickerSheet=l,exports.usePickerMobile=c;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FloatingContext, useInteractions } from '@floating-ui/react';
|
|
2
|
+
import { CSSProperties, ReactNode, RefObject } from 'react';
|
|
3
|
+
/** 명시된 설정이 없으면 Modal 안에서 popover로 표시한다. */
|
|
4
|
+
export declare function usePickerMobile(disableMobileSheet?: boolean): {
|
|
5
|
+
isMobile: boolean;
|
|
6
|
+
useSheet: boolean;
|
|
7
|
+
};
|
|
8
|
+
interface PickerSheetProps {
|
|
9
|
+
isOpen: boolean;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
useSheet: boolean;
|
|
12
|
+
context: FloatingContext;
|
|
13
|
+
setFloating: (node: HTMLElement | null) => void;
|
|
14
|
+
floatingStyles: CSSProperties;
|
|
15
|
+
getFloatingProps: ReturnType<typeof useInteractions>["getFloatingProps"];
|
|
16
|
+
desktopClassName: string;
|
|
17
|
+
initialFocus?: number | RefObject<HTMLElement | null>;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/** 피커의 floating 패널과 모바일 시트 표면. 내용과 선택 상태는 호출부가 소유한다. */
|
|
21
|
+
export declare function PickerSheet({ isOpen, onClose, useSheet, context, setFloating, floatingStyles, getFloatingProps, desktopClassName, initialFocus, children, }: PickerSheetProps): import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { useIsMobile as e } from "../../hooks/useMediaQuery.esm.js";
|
|
2
|
+
import { useBottomSheetDrag as t } from "../../hooks/useBottomSheetDrag.esm.js";
|
|
3
|
+
import { useScrollLock as n } from "../../hooks/useScrollLock.esm.js";
|
|
4
|
+
import { ModalFocusTrapContext as r, defaultModalFocusTrapContext as i } from "../modal/ModalFocusTrapContext.esm.js";
|
|
5
|
+
import { useContext as a } from "react";
|
|
6
|
+
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
7
|
+
import { AnimatePresence as l, motion as u, useReducedMotion as d } from "motion/react";
|
|
8
|
+
import { FloatingFocusManager as f, FloatingPortal as p } from "@floating-ui/react";
|
|
9
|
+
//#region src/components/date-picker/PickerSheet.tsx
|
|
10
|
+
function m(t) {
|
|
11
|
+
let n = e(), o = a(r);
|
|
12
|
+
return {
|
|
13
|
+
isMobile: n,
|
|
14
|
+
useSheet: n && !(t ?? o !== i)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function h({ isOpen: e, onClose: r, useSheet: i, context: a, setFloating: m, floatingStyles: h, getFloatingProps: g, desktopClassName: _, initialFocus: v = -1, children: y }) {
|
|
18
|
+
let b = d(), { dragControls: x, handleDragEnd: S, startDrag: C } = t({ onDismiss: r });
|
|
19
|
+
return n(e && i), /* @__PURE__ */ s(p, { children: i ? /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s(l, { children: e && /* @__PURE__ */ s(u.div, {
|
|
20
|
+
initial: { opacity: 0 },
|
|
21
|
+
animate: { opacity: 1 },
|
|
22
|
+
exit: { opacity: 0 },
|
|
23
|
+
transition: { duration: b ? 0 : .2 },
|
|
24
|
+
className: "fixed inset-0 z-overlay bg-bg-overlay",
|
|
25
|
+
onClick: r
|
|
26
|
+
}, "picker-dimmer") }), /* @__PURE__ */ s(l, { children: e && /* @__PURE__ */ c(u.div, {
|
|
27
|
+
ref: m,
|
|
28
|
+
...g(),
|
|
29
|
+
initial: { y: "100%" },
|
|
30
|
+
animate: { y: 0 },
|
|
31
|
+
exit: {
|
|
32
|
+
y: "100%",
|
|
33
|
+
transition: {
|
|
34
|
+
duration: b ? 0 : .2,
|
|
35
|
+
ease: [
|
|
36
|
+
.4,
|
|
37
|
+
0,
|
|
38
|
+
1,
|
|
39
|
+
1
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
transition: b ? { duration: 0 } : {
|
|
44
|
+
type: "spring",
|
|
45
|
+
damping: 30,
|
|
46
|
+
stiffness: 320
|
|
47
|
+
},
|
|
48
|
+
drag: "y",
|
|
49
|
+
dragListener: !1,
|
|
50
|
+
dragControls: x,
|
|
51
|
+
dragConstraints: { top: 0 },
|
|
52
|
+
dragElastic: {
|
|
53
|
+
top: 0,
|
|
54
|
+
bottom: .4
|
|
55
|
+
},
|
|
56
|
+
onDragEnd: S,
|
|
57
|
+
className: "fixed inset-x-0 bottom-0 z-overlay flex flex-col gap-5 rounded-t-2xl bg-bg-surface text-fg-default p-5 pb-[max(20px,env(safe-area-inset-bottom))] shadow-overlay",
|
|
58
|
+
children: [/* @__PURE__ */ s("div", {
|
|
59
|
+
className: "self-center h-1 w-10 rounded-full bg-bg-handle cursor-grab touch-none active:cursor-grabbing",
|
|
60
|
+
onPointerDown: C
|
|
61
|
+
}), y]
|
|
62
|
+
}, "picker-sheet") })] }) : e && /* @__PURE__ */ s(f, {
|
|
63
|
+
context: a,
|
|
64
|
+
modal: !1,
|
|
65
|
+
initialFocus: v,
|
|
66
|
+
children: /* @__PURE__ */ s("div", {
|
|
67
|
+
ref: m,
|
|
68
|
+
style: h,
|
|
69
|
+
...g(),
|
|
70
|
+
"data-picker-panel": "",
|
|
71
|
+
className: _,
|
|
72
|
+
children: y
|
|
73
|
+
})
|
|
74
|
+
}) });
|
|
75
|
+
}
|
|
76
|
+
//#endregion
|
|
77
|
+
export { h as PickerSheet, m as usePickerMobile };
|
|
@@ -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("../animated-height/AnimatedHeight.cjs"),a=require("./PickerSheet.cjs");let o=require("react"),s=require("react/jsx-runtime"),c=require("@floating-ui/react"),l=require("date-fns"),u=require("date-fns/locale");var d=24;function f({children:e,value:t,onApply:n,disabled:r,disableMobileSheet:i}){let[l,u]=(0,o.useState)(!1),{useSheet:d}=a.usePickerMobile(i),{refs:f,floatingStyles:m,context:h}=(0,c.useFloating)({open:l,onOpenChange:e=>{r||u(e)},placement:`bottom-start`,whileElementsMounted:c.autoUpdate,middleware:[(0,c.offset)(8),(0,c.flip)({fallbackAxisSideDirection:`start`}),(0,c.shift)({padding:8})]}),{getReferenceProps:g,getFloatingProps:_}=(0,c.useInteractions)([(0,c.useClick)(h,{enabled:!r}),(0,c.useDismiss)(h),(0,c.useRole)(h,{role:`dialog`})]),v=e=>{n(e),u(!1)};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{ref:f.setReference,...g(),className:`inline-flex`,children:e}),(0,s.jsx)(a.PickerSheet,{isOpen:l,onClose:()=>u(!1),useSheet:d,context:h,setFloating:f.setFloating,floatingStyles:m,getFloatingProps:_,desktopClassName:`z-floating w-80 rounded-2xl border border-border-subtle bg-bg-surface text-fg-default p-6 shadow-tooltip`,children:(0,s.jsx)(p,{initialValue:t,onApply:v,onClose:()=>u(!1)})})]})}function p({initialValue:e,onApply:t,onClose:n}){let r=g(e),[i,a]=(0,o.useState)(r),[c,u]=(0,o.useState)(r??new Date);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(m,{month:c,onMonthChange:u,onPrev:()=>u((0,l.subMonths)(c,1)),onNext:()=>u((0,l.addMonths)(c,1)),selected:i,onDayClick:e=>a(e)}),(0,s.jsxs)(`div`,{className:`mt-6 flex items-center justify-end gap-2`,children:[(0,s.jsx)(`button`,{type:`button`,onClick:n,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,s.jsx)(`button`,{type:`button`,onClick:()=>{if(!i){n();return}t((0,l.format)(i,`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:`적용`})]})]})}function m({month:n,onMonthChange:r,onPrev:a,onNext:c,selected:f,onDayClick:p}){let[m,g]=(0,o.useState)(!1),_=(0,o.useMemo)(()=>(0,l.eachDayOfInterval)({start:(0,l.startOfWeek)((0,l.startOfMonth)(n),{weekStartsOn:0}),end:(0,l.endOfWeek)((0,l.endOfMonth)(n),{weekStartsOn:0})}),[n]),v=(0,o.useMemo)(()=>{let e=[];for(let t=-24;t<=d;t++)e.push((0,l.addMonths)((0,l.startOfMonth)(new Date),t));return e},[]);return(0,s.jsxs)(`div`,{className:`mx-auto flex w-full max-w-75 flex-col sm:w-65`,children:[(0,s.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,s.jsx)(h,{direction:`left`,onClick:a}),(0,s.jsxs)(`div`,{className:`relative flex flex-1 justify-center`,children:[(0,s.jsxs)(`button`,{type:`button`,onClick:()=>g(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,l.format)(n,`yyyy. MM.`),(0,s.jsx)(t.ChevronDown,{className:`h-3.5 w-3.5 text-fg-subtle`})]}),m&&(0,s.jsx)(`div`,{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`,children:v.map(t=>(0,s.jsx)(`button`,{type:`button`,onClick:()=>{r(t),g(!1)},className:e.cn(`w-full cursor-pointer bg-bg-surface px-4 py-2 text-left text-sm transition-colors`,(0,l.isSameMonth)(t,n)?`bg-bg-muted font-semibold text-fg-default`:`text-fg-muted hover:bg-bg-subtle`),children:(0,l.format)(t,`yyyy. MM.`)},t.toISOString()))})]}),(0,s.jsx)(h,{direction:`right`,onClick:c})]}),(0,s.jsx)(`div`,{className:`mb-2 grid grid-cols-7`,children:[`일`,`월`,`화`,`수`,`목`,`금`,`토`].map(e=>(0,s.jsx)(`div`,{className:`py-1 text-center text-xs font-medium text-fg-subtle`,children:e},e))}),(0,s.jsx)(i.AnimatedHeight,{children:(0,s.jsx)(`div`,{className:`grid grid-cols-7 gap-y-1`,children:_.map(t=>{let i=(0,l.isSameMonth)(t,n),a=!!(f&&(0,l.isSameDay)(t,f));return(0,s.jsxs)(`button`,{type:`button`,onClick:()=>{i||r(t),p(t)},className:`group relative flex h-9 cursor-pointer items-center justify-center text-sm`,"aria-label":(0,l.format)(t,`yyyy년 M월 d일`,{locale:u.ko}),children:[a&&(0,s.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,s.jsx)(`span`,{className:e.cn(`relative z-10`,!i&&`text-fg-disabled`,i&&!a&&`text-fg-default`,a&&`font-bold text-fg-inverse`),children:(0,l.format)(t,`d`)})]},t.toISOString())})})})]})}function h({direction:e,onClick:t}){return(0,s.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,s.jsx)(e===`left`?n.ChevronLeft:r.ChevronRight,{className:`h-4 w-4`})})}function g(e){if(!e)return null;let t=(0,l.parseISO)(e);return(0,l.isValid)(t)?t:null}exports.DatePicker=f,exports.DatePickerBody=p;
|