@thewrong/ui 0.2.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/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 +26 -21
- package/dist/components/action-toast/ActionToast.cjs +1 -0
- package/dist/{src/components → components}/action-toast/ActionToast.d.ts +12 -3
- package/dist/components/action-toast/ActionToast.esm.js +133 -123
- 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 +14 -14
- 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 +19 -23
- 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 +15 -15
- package/dist/components/button/Button.cjs +1 -0
- package/dist/{src/components → components}/button/Button.d.ts +2 -1
- package/dist/components/button/Button.esm.js +38 -45
- 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 +21 -21
- 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 +36 -35
- 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 +11 -11
- package/dist/components/collapsible/Collapsible.cjs +1 -0
- package/dist/components/collapsible/Collapsible.esm.js +12 -11
- 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 +24 -23
- 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 +99 -147
- 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 +117 -166
- 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 +68 -112
- package/dist/components/drawer/Drawer.cjs +1 -0
- package/dist/components/drawer/Drawer.d.ts +45 -0
- package/dist/components/drawer/Drawer.esm.js +127 -97
- 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/components/info-tooltip/InfoTooltip.esm.js +13 -12
- 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 +47 -53
- 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 +1 -1
- 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 +16 -5
- 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 +19 -18
- package/dist/components/loading-spinner/LoadingSpinner.cjs +1 -0
- package/dist/components/loading-spinner/LoadingSpinner.esm.js +19 -18
- 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 +28 -2
- package/dist/components/modal/Modal.esm.js +148 -118
- 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 +65 -45
- 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 +18 -15
- 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 +11 -10
- package/dist/components/page-title/index.d.ts +1 -0
- package/dist/components/popover/Popover.cjs +1 -0
- package/dist/components/popover/Popover.esm.js +2 -2
- 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 +14 -13
- 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 +94 -93
- package/dist/components/search-box/SearchBoxChips.cjs +1 -0
- package/dist/components/search-box/SearchBoxChips.esm.js +3 -3
- 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 +39 -36
- 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 +29 -27
- 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/SearchBoxFloatingInput.cjs +1 -0
- package/dist/components/search-box/SearchBoxFloatingInput.esm.js +29 -24
- 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 +56 -51
- package/dist/components/search-box/SearchBoxMonth.cjs +1 -0
- package/dist/components/search-box/SearchBoxMonth.esm.js +21 -20
- 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 +60 -55
- package/dist/components/search-box/dateRangePresets.cjs +1 -0
- package/dist/{src/components → components}/search-box/dateRangePresets.d.ts +1 -1
- package/dist/{src/components → components}/search-box/index.d.ts +5 -5
- package/dist/components/search-box/parseSearchValues.cjs +1 -0
- package/dist/{src/components → components}/search-box/parseSearchValues.d.ts +2 -2
- 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/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 +179 -177
- 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 +176 -164
- 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 +8 -7
- 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 +21 -20
- 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 +9 -8
- 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 +204 -204
- package/dist/{src/components → components}/table/column-group-utils.d.ts +1 -1
- 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 +60 -59
- 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 +94 -96
- package/dist/components/table/components/KeyboardNavButton.cjs +1 -0
- package/dist/components/table/components/KeyboardNavButton.esm.js +1 -1
- package/dist/components/table/components/PageJumpInput.cjs +1 -0
- package/dist/components/table/components/PageJumpInput.esm.js +33 -32
- package/dist/components/table/components/Pagination.cjs +1 -0
- package/dist/components/table/components/Pagination.esm.js +80 -79
- package/dist/components/table/components/PaginationFooter.cjs +1 -0
- package/dist/components/table/components/PaginationFooter.esm.js +2 -2
- 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/useColumnResize.cjs +1 -0
- package/dist/{src/components → components}/table/hooks/useColumnResize.d.ts +12 -0
- package/dist/components/table/hooks/useColumnResize.esm.js +66 -54
- 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/useTableDragSelection.d.ts +2 -0
- package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +1 -1
- package/dist/components/table/hooks/useVirtualTable.cjs +1 -0
- package/dist/components/table/hooks/useVirtualTable.esm.js +8 -8
- 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 +87 -86
- 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-table.cjs +1 -0
- package/dist/{src/components → components}/table/paginated-table.d.ts +1 -1
- 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 +190 -189
- 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 +2 -2
- package/dist/components/table-checkbox/TableCheckbox.cjs +1 -0
- package/dist/components/table-checkbox/TableCheckbox.esm.js +27 -26
- 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 +3 -3
- 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 +49 -47
- 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 +47 -43
- package/dist/components/toast/index.d.ts +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 +99 -98
- package/dist/components/toolbar/index.d.ts +2 -0
- package/dist/components/tooltip/{Tooltip.cjs.js → Tooltip.cjs} +1 -1
- package/dist/components/tooltip/Tooltip.esm.js +1 -1
- 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/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/useTableDragSelection.cjs +1 -0
- package/dist/{src/components/table/hooks → hooks}/useTableDragSelection.d.ts +3 -4
- package/dist/{components/table/hooks → hooks}/useTableDragSelection.esm.js +9 -6
- 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 -5
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.esm.js +81 -58
- package/dist/lib/index.d.ts +6 -0
- package/dist/lib/utils.cjs +1 -0
- package/dist/{src/lib → lib}/utils.d.ts +2 -1
- package/dist/lib/utils.esm.js +108 -5
- package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -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-left.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -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-right.cjs +1 -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-x.cjs +1 -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.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +559 -550
- package/dist/tokens.css +1085 -0
- package/dist/ui.css +1 -1
- package/llms.txt +39 -13
- package/package.json +11 -8
- package/dist/components/_shared/form-size-tokens.cjs.js +0 -1
- package/dist/components/action-toast/ActionToast.cjs.js +0 -1
- package/dist/components/animated-height/AnimatedHeight.cjs.js +0 -1
- package/dist/components/badge/Badge.cjs.js +0 -1
- package/dist/components/badge/utils.cjs.js +0 -1
- package/dist/components/button/Button.cjs.js +0 -1
- package/dist/components/button/utils.cjs.js +0 -1
- package/dist/components/checkbox/Checkbox.cjs.js +0 -1
- package/dist/components/checkbox/utils.cjs.js +0 -1
- package/dist/components/collapsible/Collapsible.cjs.js +0 -1
- package/dist/components/date-input/DateInput.cjs.js +0 -1
- package/dist/components/date-picker/date-picker.cjs.js +0 -1
- package/dist/components/date-picker/date-range-picker.cjs.js +0 -1
- package/dist/components/date-picker/month-picker.cjs.js +0 -1
- package/dist/components/drawer/Drawer.cjs.js +0 -1
- package/dist/components/info-tooltip/InfoTooltip.cjs.js +0 -1
- package/dist/components/input/Input.cjs.js +0 -1
- package/dist/components/input/PasswordInput.cjs.js +0 -1
- package/dist/components/input/format.cjs.js +0 -1
- package/dist/components/input/utils.cjs.js +0 -1
- package/dist/components/loading-spinner/LoadingSpinner.cjs.js +0 -1
- package/dist/components/modal/Modal.cjs.js +0 -1
- package/dist/components/modal/ModalSubView.cjs.js +0 -1
- package/dist/components/modal/StandardModal.cjs.js +0 -1
- package/dist/components/page-title/PageTitle.cjs.js +0 -1
- package/dist/components/popover/Popover.cjs.js +0 -1
- package/dist/components/search-box/ExactMatchToggle.cjs.js +0 -1
- package/dist/components/search-box/SearchBox.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxChips.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxDateRange.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxDateSingle.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxField.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxFloatingInput.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxFloatingSelect.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxMonth.cjs.js +0 -1
- package/dist/components/search-box/SearchBoxMultiSelect.cjs.js +0 -1
- package/dist/components/search-box/dateRangePresets.cjs.js +0 -1
- package/dist/components/search-box/parseSearchValues.cjs.js +0 -1
- package/dist/components/search-box/useSearchBoxState.cjs.js +0 -1
- package/dist/components/select/MultiSelect.cjs.js +0 -1
- package/dist/components/select/Select.cjs.js +0 -1
- package/dist/components/select/loading-dots.cjs.js +0 -1
- package/dist/components/switch/Switch.cjs.js +0 -1
- package/dist/components/switch/utils.cjs.js +0 -1
- package/dist/components/table/accordion-table.cjs.js +0 -1
- package/dist/components/table/components/ColumnPresetSelector.cjs.js +0 -1
- package/dist/components/table/components/ColumnSettingsTable.cjs.js +0 -4
- package/dist/components/table/components/KeyboardNavButton.cjs.js +0 -1
- package/dist/components/table/components/PageJumpInput.cjs.js +0 -1
- package/dist/components/table/components/Pagination.cjs.js +0 -1
- package/dist/components/table/components/PaginationFooter.cjs.js +0 -1
- package/dist/components/table/hooks/useColumnPresets.cjs.js +0 -1
- package/dist/components/table/hooks/useColumnResize.cjs.js +0 -1
- package/dist/components/table/hooks/useFillEmptyRows.cjs.js +0 -1
- package/dist/components/table/hooks/useFillEmptyRows.esm.js +0 -49
- package/dist/components/table/hooks/useInfiniteScroll.cjs.js +0 -1
- package/dist/components/table/hooks/useInfiniteScroll.esm.js +0 -32
- package/dist/components/table/hooks/useTableColumnState.cjs.js +0 -1
- package/dist/components/table/hooks/useTableDragSelection.cjs.js +0 -1
- package/dist/components/table/hooks/useVirtualTable.cjs.js +0 -1
- package/dist/components/table/mini-table.cjs.js +0 -1
- package/dist/components/table/paginated-mini-table.cjs.js +0 -1
- package/dist/components/table/paginated-table.cjs.js +0 -1
- package/dist/components/table/table.cjs.js +0 -1
- package/dist/components/table/utils.cjs.js +0 -37
- package/dist/components/table-checkbox/TableCheckbox.cjs.js +0 -1
- package/dist/components/table-page-layout/TablePageLayout.cjs.js +0 -1
- package/dist/components/textarea/Textarea.cjs.js +0 -1
- package/dist/components/toast/ToastProvider.cjs.js +0 -1
- package/dist/components/toolbar/Toolbar.cjs.js +0 -1
- package/dist/hooks.cjs.js +0 -1
- package/dist/index.cjs.js +0 -1
- package/dist/lib/utils.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs.js +0 -1
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs.js +0 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.js +0 -1
- 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/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 -23
- 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/_virtual/_rolldown/{runtime.cjs.js → runtime.cjs} +0 -0
- /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}/info-tooltip/InfoTooltip.d.ts +0 -0
- /package/dist/{src/components → components}/loading-spinner/LoadingSpinner.d.ts +0 -0
- /package/dist/{src/components → components}/page-title/PageTitle.d.ts +0 -0
- /package/dist/{src/components → components}/popover/Popover.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/components/search-box/{SearchBoxSheetContext.cjs.js → SearchBoxSheetContext.cjs} +0 -0
- /package/dist/{src/components → components}/search-box/SearchBoxSheetContext.d.ts +0 -0
- /package/dist/components/search-box/{parseDateRange.cjs.js → parseDateRange.cjs} +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/components/table/{column-group-utils.cjs.js → column-group-utils.cjs} +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/components/table/components/{SortableHeaderCell.cjs.js → SortableHeaderCell.cjs} +0 -0
- /package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +0 -0
- /package/dist/components/table/hooks/{useTableSort.cjs.js → useTableSort.cjs} +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/components → components}/tooltip/Tooltip.d.ts +0 -0
- /package/dist/hooks/{useBottomSheetDrag.cjs.js → useBottomSheetDrag.cjs} +0 -0
- /package/dist/{src/hooks → hooks}/useBottomSheetDrag.d.ts +0 -0
- /package/dist/hooks/{useClickOutside.cjs.js → useClickOutside.cjs} +0 -0
- /package/dist/{src/hooks → hooks}/useClickOutside.d.ts +0 -0
- /package/dist/hooks/{useMediaQuery.cjs.js → useMediaQuery.cjs} +0 -0
- /package/dist/{src/hooks → hooks}/useMediaQuery.d.ts +0 -0
- /package/dist/hooks/{useScrollLock.cjs.js → useScrollLock.cjs} +0 -0
- /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
- /package/dist/lib/{Portal.cjs.js → Portal.cjs} +0 -0
- /package/dist/{src/lib → lib}/Portal.d.ts +0 -0
- /package/dist/lib/{column-preset-storage.cjs.js → column-preset-storage.cjs} +0 -0
- /package/dist/{src/lib → lib}/column-preset-storage.d.ts +0 -0
- /package/dist/lib/{overlay-stack.cjs.js → overlay-stack.cjs} +0 -0
- /package/dist/{src/lib → lib}/overlay-stack.d.ts +0 -0
- /package/dist/node_modules/clsx/dist/{clsx.cjs.js → clsx.cjs} +0 -0
- /package/dist/node_modules/lucide-react/dist/esm/{context.cjs.js → context.cjs} +0 -0
- /package/dist/node_modules/lucide-react/dist/esm/{defaultAttributes.cjs.js → defaultAttributes.cjs} +0 -0
- /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{hasA11yProp.cjs.js → hasA11yProp.cjs} +0 -0
- /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{mergeClasses.cjs.js → mergeClasses.cjs} +0 -0
- /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toCamelCase.cjs.js → toCamelCase.cjs} +0 -0
- /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toKebabCase.cjs.js → toKebabCase.cjs} +0 -0
- /package/dist/node_modules/use-debounce/dist/{index.module.cjs.js → index.module.cjs} +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/** 저장·보고·새로고침을 소비자가 제공하는 청크 복구 포트. */
|
|
2
|
+
export interface ChunkReloadPort {
|
|
3
|
+
get(): number | null;
|
|
4
|
+
set(reloadedAt: number): void;
|
|
5
|
+
remove(): void;
|
|
6
|
+
report(error: Error, trigger: "navigation" | "preload"): void;
|
|
7
|
+
/** 새로고침 전 필요한 대기를 마친 뒤 reload한다. */
|
|
8
|
+
reload(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const CHUNK_RELOAD_TTL_MS = 30000;
|
|
11
|
+
/** 브라우저와 번들러마다 다른 dynamic import 실패 형태를 판별한다. */
|
|
12
|
+
export declare function isChunkLoadError(error: unknown): boolean;
|
|
13
|
+
interface ReloadOnceOptions {
|
|
14
|
+
now?: () => number;
|
|
15
|
+
ttlMs?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* TTL 가드를 판정하고 통과하면 가드 상태를 영속한다. 이 함수는 보고나 reload를
|
|
19
|
+
* 실행하지 않는다. `reloadOnceForChunkError`는 가드 통과 뒤 reload까지 잇는 래퍼다.
|
|
20
|
+
*/
|
|
21
|
+
export declare function tryAcquireChunkReloadGuard(port: ChunkReloadPort, options?: ReloadOnceOptions): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 청크 실패를 한 번만 자동 새로고침한다.
|
|
24
|
+
*
|
|
25
|
+
* hard reload 뒤에도 가드가 남는다는 것을 쓰기 후 재조회로 확인한 경우에만
|
|
26
|
+
* reload한다. 스토리지가 차단되거나 가득 찬 환경에서는 자동 복구를 포기하고
|
|
27
|
+
* 앱 fallback에 머문다. 메모리 가드는 영속에 성공한 같은 페이지 생명주기의
|
|
28
|
+
* 중복 호출만 보조한다. TTL 뒤에는 다음 배포의 복구를 허용한다.
|
|
29
|
+
*
|
|
30
|
+
* `port.reload()`를 즉시 호출한다. 가드 통과 여부만 알고 reload는 직접 제어하려는
|
|
31
|
+
* 호출자는 `tryAcquireChunkReloadGuard`를 쓴다.
|
|
32
|
+
*/
|
|
33
|
+
export declare function reloadOnceForChunkError(port: ChunkReloadPort, options?: ReloadOnceOptions): boolean;
|
|
34
|
+
/** 사용자가 명시적으로 reload를 선택했을 때 다음 복구 사이클을 연다. */
|
|
35
|
+
export declare function clearChunkReloadGuard(port: ChunkReloadPort): void;
|
|
36
|
+
export declare function reloadAfterClearingChunkGuard(port: ChunkReloadPort): void;
|
|
37
|
+
/**
|
|
38
|
+
* Vite의 `vite:preloadError` payload를 보고한 뒤, 허용된 경우 1회 reload한다.
|
|
39
|
+
* 기본 보고는 동기이며, import catch의 식별이 필요하면 기존 다음 task에서 보고한다.
|
|
40
|
+
* `preventDefault()`를 호출하지 않아 Vite가 원래 실패를 다시 throw하게 둔다.
|
|
41
|
+
*
|
|
42
|
+
* 동적 import 실패에서 `preventDefault()`로 Vite의 throw를 막으면 import promise가
|
|
43
|
+
* `undefined`로 완료된다. TanStack `lazyRouteComponent`가 그 값을 `res[exportName]`에서
|
|
44
|
+
* 읽다가 원래 오류 대신 TypeError를 만들기 때문에, 원래 오류가 그대로 전파되도록 둔다.
|
|
45
|
+
*
|
|
46
|
+
* TanStack `lazyRouteComponent`는 세션의 `tanstack_router_reload:<message>` 표식이 없는
|
|
47
|
+
* 첫 인식 실패를 컴포넌트 렌더 중 reload한다. 이때 pending promise를 던져 route boundary를
|
|
48
|
+
* 건너뛸 수 있다. 실패한 import를 캐시해 후속 클릭에서 다시 import하거나 Vite 이벤트를
|
|
49
|
+
* 내지 않고, 캐시된 실패를 렌더에서 처리한다: 표식이 없으면 TanStack이 자체 reload하고,
|
|
50
|
+
* 표식이 있으면 같은 Error를 던진다. 앱의 `reportError`는 같은 Error 객체를 중복 제거한다.
|
|
51
|
+
*
|
|
52
|
+
* Vite 이벤트는 TanStack의 동작보다 먼저 발생한다. `shouldReload`는 이벤트 시점에
|
|
53
|
+
* 한 번 평가해 네비게이션 상태와 보고용 trigger를 보존한다. 결과가 false인 intent
|
|
54
|
+
* preload 실패도 보고하되 TTL 가드를 소모하거나 자체 reload를 예약하지 않는다.
|
|
55
|
+
* 다음 task에서 평가하는 `shouldIgnoreAfterImport`와 평가 시점이 다르다.
|
|
56
|
+
*
|
|
57
|
+
* 이동 보존: 네비게이션 발 이벤트 시점에는 주소창이 이미 목표 URL이다.
|
|
58
|
+
* 같은 URL을 reload하면 목표 화면에 착지하므로 별도 경로 저장은 필요 없다.
|
|
59
|
+
* 실측: Vite 8.1.3 + @tanstack/react-router 1.170.17의 코드 분할 라우트 이동.
|
|
60
|
+
*
|
|
61
|
+
* 무한 루프 가드: TTL 30초(`CHUNK_RELOAD_TTL_MS`) 안에서는 reload를 다시 예약하지 않는다.
|
|
62
|
+
* 가드에 걸리면 원래 오류가 전파되고, 경계가 수동 새로고침 화면을 보여준다.
|
|
63
|
+
*
|
|
64
|
+
* @param port 앱이 조립한 스토리지·보고·reload 경계. 다른 청크 복구 층과 같은 포트를 써야
|
|
65
|
+
* TTL 가드가 공유된다.
|
|
66
|
+
* @param target 리스너를 붙일 대상. 기본값은 `window`이며 테스트에서 교체한다.
|
|
67
|
+
* @param shouldReload 네비게이션 발 이벤트에 reload를 허용할지 판별한다. 원본 이벤트도
|
|
68
|
+
* 전달하므로 선택 기능 청크를 구분해 제외할 수 있다. 기본값은 true.
|
|
69
|
+
* @param shouldIgnoreAfterImport 선택 기능 import의 catch가 오류 객체를 식별할 시간을
|
|
70
|
+
* 주도록 다음 task에서 평가하는 reload 제외 조건. 보고는 이 판정과 무관하게 먼저 한다.
|
|
71
|
+
* 제외된 오류는 TTL 가드를 소모하지 않는다.
|
|
72
|
+
* @param shouldReport 보고 허용 조건. 함수를 반환하면 import catch 뒤 기존 다음 task에서
|
|
73
|
+
* 평가한다. 이 경우에도 이벤트 시점 trigger를 쓰고 reload 전에 보고한다.
|
|
74
|
+
* @returns 리스너를 해제하는 함수.
|
|
75
|
+
*/
|
|
76
|
+
export declare function listenForChunkPreloadError(port: ChunkReloadPort, target?: Pick<Window, "addEventListener" | "removeEventListener">, shouldReload?: (event: Event) => boolean, shouldIgnoreAfterImport?: (event: Event) => boolean, shouldReport?: (event: Event) => boolean | (() => boolean)): () => void;
|
|
77
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
//#region src/components/error-boundary/chunk-reload.ts
|
|
2
|
+
var e = 3e4, t = null;
|
|
3
|
+
function n(e, t) {
|
|
4
|
+
if (typeof e != "object" || !e || !(t in e)) return;
|
|
5
|
+
let n = e[t];
|
|
6
|
+
return typeof n == "string" ? n : void 0;
|
|
7
|
+
}
|
|
8
|
+
function r(e) {
|
|
9
|
+
if (n(e, "name") === "ChunkLoadError") return !0;
|
|
10
|
+
let t = n(e, "message");
|
|
11
|
+
return t ? /Loading chunk [\w-]+ failed/i.test(t) || /Failed to fetch dynamically imported module/i.test(t) || /error loading dynamically imported module/i.test(t) || /Importing a module script failed/i.test(t) || /Unable to preload CSS for/i.test(t) : !1;
|
|
12
|
+
}
|
|
13
|
+
function i(e, t, n) {
|
|
14
|
+
return e === null || !Number.isFinite(e) ? !1 : t - e < n;
|
|
15
|
+
}
|
|
16
|
+
function a(e, n = {}) {
|
|
17
|
+
let r = (n.now ?? Date.now)(), a = n.ttlMs ?? 3e4, o;
|
|
18
|
+
try {
|
|
19
|
+
o = e.get();
|
|
20
|
+
} catch {
|
|
21
|
+
return !1;
|
|
22
|
+
}
|
|
23
|
+
if (i(o, r, a) || i(t, r, a)) return !1;
|
|
24
|
+
try {
|
|
25
|
+
if (e.set(r), e.get() !== r) return !1;
|
|
26
|
+
} catch {
|
|
27
|
+
return !1;
|
|
28
|
+
}
|
|
29
|
+
return t = r, !0;
|
|
30
|
+
}
|
|
31
|
+
function o(e, t = {}) {
|
|
32
|
+
let n = a(e, t);
|
|
33
|
+
return n && e.reload(), n;
|
|
34
|
+
}
|
|
35
|
+
function s(e) {
|
|
36
|
+
t = null;
|
|
37
|
+
try {
|
|
38
|
+
e.remove();
|
|
39
|
+
} catch {}
|
|
40
|
+
}
|
|
41
|
+
function c(e) {
|
|
42
|
+
s(e), e.reload();
|
|
43
|
+
}
|
|
44
|
+
function l(e, t = window, r = () => !0, i, o) {
|
|
45
|
+
let s = /* @__PURE__ */ new Set(), c = (t) => {
|
|
46
|
+
let c = t.payload, l = c instanceof Error ? c : Error(typeof c == "string" ? c : n(c, "message") ?? "Vite preload failed"), u = r(t), d = !0;
|
|
47
|
+
try {
|
|
48
|
+
d = o?.(t) ?? !0;
|
|
49
|
+
} catch {}
|
|
50
|
+
let f = () => {
|
|
51
|
+
try {
|
|
52
|
+
(typeof d == "function" ? d() : d) && e.report(l, u ? "navigation" : "preload");
|
|
53
|
+
} catch {}
|
|
54
|
+
}, p = typeof d == "function";
|
|
55
|
+
if (p || f(), !u && !p) return;
|
|
56
|
+
let m = () => {
|
|
57
|
+
a(e) && e.reload();
|
|
58
|
+
};
|
|
59
|
+
if (i || p) {
|
|
60
|
+
let e = setTimeout(() => {
|
|
61
|
+
s.delete(e), p && f(), u && !i?.(t) && m();
|
|
62
|
+
}, 0);
|
|
63
|
+
s.add(e);
|
|
64
|
+
} else m();
|
|
65
|
+
};
|
|
66
|
+
return t.addEventListener("vite:preloadError", c), () => {
|
|
67
|
+
t.removeEventListener("vite:preloadError", c);
|
|
68
|
+
for (let e of s) clearTimeout(e);
|
|
69
|
+
s.clear();
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { e as CHUNK_RELOAD_TTL_MS, s as clearChunkReloadGuard, r as isChunkLoadError, l as listenForChunkPreloadError, c as reloadAfterClearingChunkGuard, o as reloadOnceForChunkError, a as tryAcquireChunkReloadGuard };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ErrorBoundary } from './ErrorBoundary.js';
|
|
2
|
+
export type { ErrorBoundaryProps, ErrorBoundaryFallbackProps } from './types.js';
|
|
3
|
+
export { CHUNK_RELOAD_TTL_MS, isChunkLoadError, tryAcquireChunkReloadGuard, reloadOnceForChunkError, clearChunkReloadGuard, reloadAfterClearingChunkGuard, listenForChunkPreloadError, } from './chunk-reload.js';
|
|
4
|
+
export type { ChunkReloadPort } from './chunk-reload.js';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ErrorInfo, ReactNode } from 'react';
|
|
2
|
+
import { ChunkReloadPort } from './chunk-reload.js';
|
|
3
|
+
export interface ErrorBoundaryFallbackProps {
|
|
4
|
+
error: Error;
|
|
5
|
+
isChunkError: boolean;
|
|
6
|
+
reset: () => void;
|
|
7
|
+
reload: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface ErrorBoundaryProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** 영속 가드와 보고·새로고침 구현. 없으면 청크 자동 새로고침을 시도하지 않는다. */
|
|
12
|
+
chunkReloadPort?: ChunkReloadPort;
|
|
13
|
+
/** 기본 안내 대신 표시할 폴백. reset과 reload를 직접 연결할 수 있다. */
|
|
14
|
+
fallbackRender?: (props: ErrorBoundaryFallbackProps) => ReactNode;
|
|
15
|
+
/** 기본 폴백의 안내 문구. */
|
|
16
|
+
message?: string;
|
|
17
|
+
/** 일반 오류에서 다시 렌더할 버튼의 문구. */
|
|
18
|
+
retryLabel?: string;
|
|
19
|
+
/** 청크 오류에서 페이지를 새로고침할 버튼의 문구. */
|
|
20
|
+
reloadLabel?: string;
|
|
21
|
+
/** 청크 오류를 포함한 렌더 오류마다 호출된다. */
|
|
22
|
+
onError?: (error: Error, errorInfo: ErrorInfo, isChunkError: boolean) => void;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs");let t=require("react/jsx-runtime");function n({label:n,htmlFor:r,rightLabel:i,className:a,required:o,optional:s,children:c}){let l=i!=null&&typeof i!=`string`;return(0,t.jsxs)(`div`,{className:e.cn(`space-y-1.5`,a),children:[(0,t.jsxs)(`div`,{className:e.cn(`flex items-center justify-between`,!l&&`h-4`),children:[(0,t.jsxs)(`label`,{htmlFor:r,className:`block text-xs leading-4 font-medium text-fg-muted`,children:[n,o&&(0,t.jsx)(`span`,{"aria-hidden":`true`,className:`ml-1 text-fg-danger`,children:`*`}),!o&&s&&(0,t.jsx)(`span`,{className:`ml-1 text-fg-subtle`,children:`(선택)`})]}),typeof i==`string`?(0,t.jsx)(`span`,{style:{lineHeight:`16px`},className:`text-[11px] text-fg-subtle`,children:i}):i]}),c]})}exports.Field=n;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FieldProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 라벨 + 우측 보조 텍스트 + 컨트롤을 묶는 폼 필드 래퍼.
|
|
4
|
+
* 모달 폼 및 일반 폼에서 공통 사용.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <Field label="이름" required>
|
|
8
|
+
* <Input variant="box" placeholder="이름을 입력하세요" />
|
|
9
|
+
* </Field>
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <Field label="금액" rightLabel="최대 100만원">
|
|
13
|
+
* <Input variant="box" suffix="원" />
|
|
14
|
+
* </Field>
|
|
15
|
+
*/
|
|
16
|
+
export declare function Field({ label, htmlFor, rightLabel, className, required, optional, children, }: FieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/field/Field.tsx
|
|
4
|
+
function r({ label: r, htmlFor: i, rightLabel: a, className: o, required: s, optional: c, children: l }) {
|
|
5
|
+
let u = a != null && typeof a != "string";
|
|
6
|
+
return /* @__PURE__ */ n("div", {
|
|
7
|
+
className: e("space-y-1.5", o),
|
|
8
|
+
children: [/* @__PURE__ */ n("div", {
|
|
9
|
+
className: e("flex items-center justify-between", !u && "h-4"),
|
|
10
|
+
children: [/* @__PURE__ */ n("label", {
|
|
11
|
+
htmlFor: i,
|
|
12
|
+
className: "block text-xs leading-4 font-medium text-fg-muted",
|
|
13
|
+
children: [
|
|
14
|
+
r,
|
|
15
|
+
s && /* @__PURE__ */ t("span", {
|
|
16
|
+
"aria-hidden": "true",
|
|
17
|
+
className: "ml-1 text-fg-danger",
|
|
18
|
+
children: "*"
|
|
19
|
+
}),
|
|
20
|
+
!s && c && /* @__PURE__ */ t("span", {
|
|
21
|
+
className: "ml-1 text-fg-subtle",
|
|
22
|
+
children: "(선택)"
|
|
23
|
+
})
|
|
24
|
+
]
|
|
25
|
+
}), typeof a == "string" ? /* @__PURE__ */ t("span", {
|
|
26
|
+
style: { lineHeight: "16px" },
|
|
27
|
+
className: "text-[11px] text-fg-subtle",
|
|
28
|
+
children: a
|
|
29
|
+
}) : a]
|
|
30
|
+
}), l]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { r as Field };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../animated-height/AnimatedHeight.cjs");let t=require("react/jsx-runtime");function n({children:n,animated:r=!1,...i}){let a=n?(0,t.jsx)(`div`,{...i,children:n}):null;return r?(0,t.jsx)(e.AnimatedHeight,{children:a}):a}exports.FieldMessage=n;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface FieldMessageProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
/** 메시지가 나타나고 사라질 때 높이를 부드럽게 전환한다. */
|
|
5
|
+
animated?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 폼 컨트롤 아래의 도움말·검증 메시지 영역.
|
|
9
|
+
*
|
|
10
|
+
* 조건부 메시지를 애니메이션하려면 컴포넌트 자체는 유지하고 children만 바꾼다.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <FieldMessage animated className="mt-1 text-xs text-fg-danger">
|
|
15
|
+
* {errorMessage}
|
|
16
|
+
* </FieldMessage>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function FieldMessage({ children, animated, ...messageProps }: FieldMessageProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AnimatedHeight as e } from "../animated-height/AnimatedHeight.esm.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/field/FieldMessage.tsx
|
|
4
|
+
function n({ children: n, animated: r = !1, ...i }) {
|
|
5
|
+
let a = n ? /* @__PURE__ */ t("div", {
|
|
6
|
+
...i,
|
|
7
|
+
children: n
|
|
8
|
+
}) : null;
|
|
9
|
+
return r ? /* @__PURE__ */ t(e, { children: a }) : a;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as FieldMessage };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface FieldProps {
|
|
2
|
+
/** 라벨 텍스트. */
|
|
3
|
+
label: string;
|
|
4
|
+
/** 연결할 폼 컨트롤 id. 제공하면 label의 htmlFor로 전달된다. */
|
|
5
|
+
htmlFor?: string;
|
|
6
|
+
/**
|
|
7
|
+
* 라벨 우측 보조 텍스트 또는 노드(버튼·뱃지 등).
|
|
8
|
+
* string이면 자동으로 옅은 보조 스타일(fg-subtle) 적용.
|
|
9
|
+
*/
|
|
10
|
+
rightLabel?: React.ReactNode;
|
|
11
|
+
/** 외부 그리드에서 필드 셀의 배치를 조정할 때 사용하는 추가 className. */
|
|
12
|
+
className?: string;
|
|
13
|
+
/**
|
|
14
|
+
* 필수 표시를 라벨 뒤에 추가한다. 접근성을 위해 실제 입력에도 required를 지정한다.
|
|
15
|
+
* `optional`과 동시 사용 시 `required`가 우선한다.
|
|
16
|
+
*/
|
|
17
|
+
required?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* 선택 필드 — 라벨 뒤에 `(선택)` 표시.
|
|
20
|
+
* `required`와 동시 사용 시 `required` 우선.
|
|
21
|
+
*/
|
|
22
|
+
optional?: boolean;
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs");let t=require("react/jsx-runtime");function n({content:n,position:r=`top`}){return(0,t.jsxs)(`div`,{className:`relative inline-flex items-center group`,children:[(0,t.jsx)(`div`,{className:`w-3.5 h-3.5 rounded-full bg-primary flex items-center justify-center cursor-help hover:bg-primary-hover transition-colors`,children:(0,t.jsx)(`span`,{className:`text-[9px] font-bold text-fg-inverse`,children:`?`})}),(0,t.jsxs)(`div`,{className:e.cn(`absolute z-floating px-3 py-2 bg-bg-tooltip text-fg-tooltip text-xs rounded-tooltip shadow-overlay opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 pointer-events-none w-64 whitespace-normal`,{top:`bottom-full left-1/2 -translate-x-1/2 mb-2`,bottom:`top-full left-1/2 -translate-x-1/2 mt-2`,left:`right-full top-1/2 -translate-y-1/2 mr-2`,right:`left-full top-1/2 -translate-y-1/2 ml-2`}[r]),children:[n,(0,t.jsx)(`div`,{className:e.cn(`absolute w-2 h-2 bg-bg-tooltip transform rotate-45`,r===`top`?`bottom-[-4px] left-1/2 -translate-x-1/2`:r===`bottom`?`top-[-4px] left-1/2 -translate-x-1/2`:r===`left`?`right-[-4px] top-1/2 -translate-y-1/2`:`left-[-4px] top-1/2 -translate-y-1/2`)})]})]})}exports.InfoTooltip=n;
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
3
|
//#region src/components/info-tooltip/InfoTooltip.tsx
|
|
3
|
-
function
|
|
4
|
-
return /* @__PURE__ */
|
|
4
|
+
function r({ content: r, position: i = "top" }) {
|
|
5
|
+
return /* @__PURE__ */ n("div", {
|
|
5
6
|
className: "relative inline-flex items-center group",
|
|
6
|
-
children: [/* @__PURE__ */
|
|
7
|
-
className: "w-3.5 h-3.5 rounded-full bg-primary
|
|
8
|
-
children: /* @__PURE__ */
|
|
9
|
-
className: "text-[9px] font-bold text-
|
|
7
|
+
children: [/* @__PURE__ */ t("div", {
|
|
8
|
+
className: "w-3.5 h-3.5 rounded-full bg-primary flex items-center justify-center cursor-help hover:bg-primary-hover transition-colors",
|
|
9
|
+
children: /* @__PURE__ */ t("span", {
|
|
10
|
+
className: "text-[9px] font-bold text-fg-inverse",
|
|
10
11
|
children: "?"
|
|
11
12
|
})
|
|
12
|
-
}), /* @__PURE__ */
|
|
13
|
-
className:
|
|
13
|
+
}), /* @__PURE__ */ n("div", {
|
|
14
|
+
className: e("absolute z-floating px-3 py-2 bg-bg-tooltip text-fg-tooltip text-xs rounded-tooltip shadow-overlay opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 pointer-events-none w-64 whitespace-normal", {
|
|
14
15
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
15
16
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
16
17
|
left: "right-full top-1/2 -translate-y-1/2 mr-2",
|
|
17
18
|
right: "left-full top-1/2 -translate-y-1/2 ml-2"
|
|
18
|
-
}[
|
|
19
|
-
children: [
|
|
19
|
+
}[i]),
|
|
20
|
+
children: [r, /* @__PURE__ */ t("div", { className: e("absolute w-2 h-2 bg-bg-tooltip transform rotate-45", i === "top" ? "bottom-[-4px] left-1/2 -translate-x-1/2" : i === "bottom" ? "top-[-4px] left-1/2 -translate-x-1/2" : i === "left" ? "right-[-4px] top-1/2 -translate-y-1/2" : "left-[-4px] top-1/2 -translate-y-1/2") })]
|
|
20
21
|
})]
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
//#endregion
|
|
24
|
-
export {
|
|
25
|
+
export { r as InfoTooltip };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./Input.cjs"),t=require("./decimal-validation.cjs");let n=require("react"),r=require("react/jsx-runtime");function i(e){return e==null?``:String(e)}var a=(0,n.forwardRef)(({value:a,defaultValue:o,onChange:s,decimalPlaces:c=2,allowNegative:l=!1,emitEmpty:u=!1,min:d,max:f,onBlur:p,...m},h)=>{let g=a!==void 0,[_,v]=(0,n.useState)(()=>i(a??o)),[y,b]=(0,n.useState)(()=>i(a??o));(0,n.useEffect)(()=>{if(g){let e=i(a);v(e),b(e)}},[g,a]);let x=e=>{let n=t.validateDecimalDraft(e,{decimalPlaces:c,allowNegative:l,min:d,max:f});n!==`reject`&&(v(e),n===`empty`?u&&s?.(e):n===`value`&&(b(e),s?.(e)))};return(0,r.jsx)(e.Input,{...m,ref:h,type:`text`,inputMode:`decimal`,value:_,onChange:e=>x(e.target.value),onBlur:e=>{_!==y&&v(y),p?.(e)}})});a.displayName=`DecimalInput`,exports.DecimalInput=a;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { InputProps } from './types.js';
|
|
2
|
+
export interface DecimalInputProps extends Omit<InputProps, "value" | "defaultValue" | "onChange" | "type"> {
|
|
3
|
+
value?: string | number | null;
|
|
4
|
+
defaultValue?: string | number | null;
|
|
5
|
+
onChange?: (value: string) => void;
|
|
6
|
+
/** 허용할 소수 자릿수. 0 이상의 유한한 정수로 지정한다. 기본 2. */
|
|
7
|
+
decimalPlaces?: number;
|
|
8
|
+
/** 음수 입력 허용. 기본 false. */
|
|
9
|
+
allowNegative?: boolean;
|
|
10
|
+
/** 빈 값을 onChange로 전달할지 여부. 기본 false. */
|
|
11
|
+
emitEmpty?: boolean;
|
|
12
|
+
min?: number;
|
|
13
|
+
max?: number;
|
|
14
|
+
}
|
|
15
|
+
/** 소수 입력을 문자열로 전달한다. 범위 밖이지만 완성 가능한 접두사는 임시로 유지하고
|
|
16
|
+
* 포커스를 잃으면 마지막 유효 값으로 복원한다. 빈 값도 전달하려면 emitEmpty를 켠다.
|
|
17
|
+
* Input의 variant는 필수이며 소수점 자릿수와 범위는 호출부에서 지정한다. */
|
|
18
|
+
export declare const DecimalInput: import('react').ForwardRefExoticComponent<DecimalInputProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Input as e } from "./Input.esm.js";
|
|
2
|
+
import { validateDecimalDraft as t } from "./decimal-validation.esm.js";
|
|
3
|
+
import { forwardRef as n, useEffect as r, useState as i } from "react";
|
|
4
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/input/DecimalInput.tsx
|
|
6
|
+
function o(e) {
|
|
7
|
+
return e == null ? "" : String(e);
|
|
8
|
+
}
|
|
9
|
+
var s = n(({ value: n, defaultValue: s, onChange: c, decimalPlaces: l = 2, allowNegative: u = !1, emitEmpty: d = !1, min: f, max: p, onBlur: m, ...h }, g) => {
|
|
10
|
+
let _ = n !== void 0, [v, y] = i(() => o(n ?? s)), [b, x] = i(() => o(n ?? s));
|
|
11
|
+
r(() => {
|
|
12
|
+
if (_) {
|
|
13
|
+
let e = o(n);
|
|
14
|
+
y(e), x(e);
|
|
15
|
+
}
|
|
16
|
+
}, [_, n]);
|
|
17
|
+
let S = (e) => {
|
|
18
|
+
let n = t(e, {
|
|
19
|
+
decimalPlaces: l,
|
|
20
|
+
allowNegative: u,
|
|
21
|
+
min: f,
|
|
22
|
+
max: p
|
|
23
|
+
});
|
|
24
|
+
n !== "reject" && (y(e), n === "empty" ? d && c?.(e) : n === "value" && (x(e), c?.(e)));
|
|
25
|
+
};
|
|
26
|
+
return /* @__PURE__ */ a(e, {
|
|
27
|
+
...h,
|
|
28
|
+
ref: g,
|
|
29
|
+
type: "text",
|
|
30
|
+
inputMode: "decimal",
|
|
31
|
+
value: v,
|
|
32
|
+
onChange: (e) => S(e.target.value),
|
|
33
|
+
onBlur: (e) => {
|
|
34
|
+
v !== b && y(b), m?.(e);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
s.displayName = "DecimalInput";
|
|
39
|
+
//#endregion
|
|
40
|
+
export { s as DecimalInput };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/circle-x.cjs"),n=require("../_shared/form-size-tokens.cjs"),r=require("./use-input-format.cjs"),i=require("./utils.cjs");let a=require("react"),o=require("react/jsx-runtime");var s=(0,a.forwardRef)(({variant:s,inputSize:c=`medium`,label:l,labelOption:u=`appear`,help:d,hasError:f=!1,disabled:p=!1,prefix:m,suffix:h,trailingIcon:g,clearable:_=!1,badge:v,placeholder:y,format:b,containerProps:x,containerRef:S,value:C,defaultValue:w,onChange:T,onFocus:E,onBlur:D,className:O=``,...k},A)=>{let[j,M]=(0,a.useState)(!1),{displayValue:N,handleChange:P,handleCompositionStart:F,handleCompositionEnd:I,setMergedInputRef:L,handleClear:R}=r.useInputFormat({value:C,defaultValue:w,format:b,onChange:T,readOnly:k.readOnly}),z=e=>{M(!0),E?.(e)},B=e=>{M(!1),D?.(e)},V=k.ref,H=N.length>0,U=i.getInputContainerClasses(),W=i.getInputVariantClasses(s,f,p,c),G=i.getInputClasses(s,f,p,H,c),K=i.getInputTrailingIconColor(f,p,H||j),q=u===`sustain`||u===`appear`&&!!N,J=s===`box`,Y=n.SLOT_GAP_CLASS[c],X=n.SLOT_CHILD_ICON_CLASS[c],Z=n.SLOT_BADGE_TEXT_CLASS[c],Q=n.SLOT_ICON_SIZE_CLASS[c],$=(0,o.jsxs)(`div`,{className:J?e.cn(W,`flex items-center`,Y,O):`relative flex items-center text-sm`,children:[m&&(0,o.jsx)(`span`,{className:e.cn(`whitespace-nowrap text-sm`,K),children:m}),(0,o.jsx)(`input`,{...k,ref:L(A,V),className:J?G:e.cn(G,W,f&&`border-border-danger focus:border-border-danger focus:ring-focus-danger`,p&&`opacity-50`,O),value:N,onChange:P,onCompositionStart:e=>{F(e),k.onCompositionStart?.(e)},onCompositionEnd:e=>{I(e),k.onCompositionEnd?.(e)},onFocus:z,onBlur:B,disabled:p,placeholder:y}),h&&(0,o.jsx)(`span`,{className:e.cn(`whitespace-nowrap text-sm`,K),children:h}),g&&(0,o.jsx)(`span`,{className:e.cn(`flex shrink-0 items-center`,K,X),children:g}),_&&!p&&!k.readOnly&&H&&(0,o.jsx)(`button`,{type:`button`,onClick:R,"aria-label":`입력 지우기`,className:e.cn(`flex shrink-0 cursor-pointer items-center rounded`,K,`hover:text-fg-default focus:outline-hidden focus-visible:ring-input-clear focus-visible:ring-input-clear-ring`),children:(0,o.jsx)(t.CircleX,{className:Q,strokeWidth:1.5,"aria-hidden":`true`})}),v&&(0,o.jsx)(`span`,{className:e.cn(`flex shrink-0 items-center`,X,Z),children:v})]});return(0,o.jsxs)(`div`,{ref:S,className:U,...x,children:[q&&l&&(0,o.jsx)(`label`,{className:i.getInputLabelClasses(s,f),htmlFor:k.id,children:l}),$,d&&(0,o.jsx)(`div`,{className:i.getInputHelpClasses(f),children:d})]})});s.displayName=`Input`,exports.Input=s;
|
|
@@ -1,90 +1,84 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { cn as e } from "../../lib/utils.esm.js";
|
|
2
|
+
import { CircleX as t } from "../../node_modules/lucide-react/dist/esm/icons/circle-x.esm.js";
|
|
3
|
+
import { SLOT_BADGE_TEXT_CLASS as ee, SLOT_CHILD_ICON_CLASS as n, SLOT_GAP_CLASS as r, SLOT_ICON_SIZE_CLASS as te } from "../_shared/form-size-tokens.esm.js";
|
|
4
|
+
import { useInputFormat as i } from "./use-input-format.esm.js";
|
|
5
|
+
import { getInputClasses as a, getInputContainerClasses as o, getInputHelpClasses as s, getInputLabelClasses as c, getInputTrailingIconColor as ne, getInputVariantClasses as re } from "./utils.esm.js";
|
|
6
|
+
import { forwardRef as l, useState as u } from "react";
|
|
5
7
|
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
6
8
|
//#region src/components/input/Input.tsx
|
|
7
|
-
var p = l(({ variant: l, inputSize: p = "medium", label: m, labelOption: h = "appear", help: g, hasError: _ = !1, disabled: v = !1, prefix: y, suffix: b, trailingIcon: x, clearable: S = !1, badge: C, placeholder: w, format: T, containerProps: E, containerRef: D, value: O, defaultValue: k, onChange: A, onFocus:
|
|
8
|
-
let [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
} else z || L(t), A?.(e);
|
|
23
|
-
}, U = (e) => {
|
|
24
|
-
F(!0), re?.(e);
|
|
25
|
-
}, W = (e) => {
|
|
26
|
-
F(!1), ie?.(e);
|
|
27
|
-
}, G = M.ref, K = (e) => {
|
|
28
|
-
R.current = e, typeof N == "function" ? N(e) : N && (N.current = e), typeof G == "function" ? G(e) : G && "current" in G && (G.current = e);
|
|
29
|
-
}, q = () => {
|
|
30
|
-
let e = R.current;
|
|
31
|
-
e && ((Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set)?.call(e, ""), e.dispatchEvent(new Event("input", { bubbles: !0 })), e.focus());
|
|
32
|
-
}, J = V.length > 0, ae = te(), Y = c(l, _, v, p), X = ee(l, _, v, J, p), Z = s(_, v, J || P), oe = h === "sustain" || h === "appear" && !!V, Q = l === "box", se = r[p], $ = n[p], ce = t[p], le = i[p], ue = /* @__PURE__ */ f("div", {
|
|
33
|
-
className: Q ? `${Y} flex items-center ${se} ${j}`.trim().replace(/\s+/g, " ") : "relative flex items-center text-sm",
|
|
9
|
+
var p = l(({ variant: l, inputSize: p = "medium", label: m, labelOption: h = "appear", help: g, hasError: _ = !1, disabled: v = !1, prefix: y, suffix: b, trailingIcon: x, clearable: S = !1, badge: C, placeholder: w, format: T, containerProps: E, containerRef: D, value: O, defaultValue: k, onChange: A, onFocus: j, onBlur: M, className: N = "", ...P }, F) => {
|
|
10
|
+
let [I, L] = u(!1), { displayValue: R, handleChange: z, handleCompositionStart: B, handleCompositionEnd: V, setMergedInputRef: H, handleClear: U } = i({
|
|
11
|
+
value: O,
|
|
12
|
+
defaultValue: k,
|
|
13
|
+
format: T,
|
|
14
|
+
onChange: A,
|
|
15
|
+
readOnly: P.readOnly
|
|
16
|
+
}), W = (e) => {
|
|
17
|
+
L(!0), j?.(e);
|
|
18
|
+
}, G = (e) => {
|
|
19
|
+
L(!1), M?.(e);
|
|
20
|
+
}, K = P.ref, q = R.length > 0, J = o(), Y = re(l, _, v, p), X = a(l, _, v, q, p), Z = ne(_, v, q || I), ie = h === "sustain" || h === "appear" && !!R, Q = l === "box", ae = r[p], $ = n[p], oe = ee[p], se = te[p], ce = /* @__PURE__ */ f("div", {
|
|
21
|
+
className: Q ? e(Y, "flex items-center", ae, N) : "relative flex items-center text-sm",
|
|
34
22
|
children: [
|
|
35
23
|
y && /* @__PURE__ */ d("span", {
|
|
36
|
-
className:
|
|
24
|
+
className: e("whitespace-nowrap text-sm", Z),
|
|
37
25
|
children: y
|
|
38
26
|
}),
|
|
39
27
|
/* @__PURE__ */ d("input", {
|
|
40
|
-
...
|
|
41
|
-
ref: K,
|
|
42
|
-
className: Q ? X :
|
|
43
|
-
value:
|
|
44
|
-
onChange:
|
|
45
|
-
|
|
46
|
-
|
|
28
|
+
...P,
|
|
29
|
+
ref: H(F, K),
|
|
30
|
+
className: Q ? X : e(X, Y, _ && "border-border-danger focus:border-border-danger focus:ring-focus-danger", v && "opacity-50", N),
|
|
31
|
+
value: R,
|
|
32
|
+
onChange: z,
|
|
33
|
+
onCompositionStart: (e) => {
|
|
34
|
+
B(e), P.onCompositionStart?.(e);
|
|
35
|
+
},
|
|
36
|
+
onCompositionEnd: (e) => {
|
|
37
|
+
V(e), P.onCompositionEnd?.(e);
|
|
38
|
+
},
|
|
39
|
+
onFocus: W,
|
|
40
|
+
onBlur: G,
|
|
47
41
|
disabled: v,
|
|
48
42
|
placeholder: w
|
|
49
43
|
}),
|
|
50
44
|
b && /* @__PURE__ */ d("span", {
|
|
51
|
-
className:
|
|
45
|
+
className: e("whitespace-nowrap text-sm", Z),
|
|
52
46
|
children: b
|
|
53
47
|
}),
|
|
54
48
|
x && /* @__PURE__ */ d("span", {
|
|
55
|
-
className:
|
|
49
|
+
className: e("flex shrink-0 items-center", Z, $),
|
|
56
50
|
children: x
|
|
57
51
|
}),
|
|
58
|
-
S && !v &&
|
|
52
|
+
S && !v && !P.readOnly && q && /* @__PURE__ */ d("button", {
|
|
59
53
|
type: "button",
|
|
60
|
-
onClick:
|
|
54
|
+
onClick: U,
|
|
61
55
|
"aria-label": "입력 지우기",
|
|
62
|
-
className:
|
|
63
|
-
children: /* @__PURE__ */ d(
|
|
64
|
-
className:
|
|
56
|
+
className: e("flex shrink-0 cursor-pointer items-center rounded", Z, "hover:text-fg-default focus:outline-hidden focus-visible:ring-input-clear focus-visible:ring-input-clear-ring"),
|
|
57
|
+
children: /* @__PURE__ */ d(t, {
|
|
58
|
+
className: se,
|
|
65
59
|
strokeWidth: 1.5,
|
|
66
60
|
"aria-hidden": "true"
|
|
67
61
|
})
|
|
68
62
|
}),
|
|
69
63
|
C && /* @__PURE__ */ d("span", {
|
|
70
|
-
className:
|
|
64
|
+
className: e("flex shrink-0 items-center", $, oe),
|
|
71
65
|
children: C
|
|
72
66
|
})
|
|
73
67
|
]
|
|
74
68
|
});
|
|
75
69
|
return /* @__PURE__ */ f("div", {
|
|
76
70
|
ref: D,
|
|
77
|
-
className:
|
|
71
|
+
className: J,
|
|
78
72
|
...E,
|
|
79
73
|
children: [
|
|
80
|
-
|
|
81
|
-
className:
|
|
82
|
-
htmlFor:
|
|
74
|
+
ie && m && /* @__PURE__ */ d("label", {
|
|
75
|
+
className: c(l, _),
|
|
76
|
+
htmlFor: P.id,
|
|
83
77
|
children: m
|
|
84
78
|
}),
|
|
85
|
-
|
|
79
|
+
ce,
|
|
86
80
|
g && /* @__PURE__ */ d("div", {
|
|
87
|
-
className:
|
|
81
|
+
className: s(_),
|
|
88
82
|
children: g
|
|
89
83
|
})
|
|
90
84
|
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../node_modules/lucide-react/dist/esm/icons/eye-off.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/eye.cjs"),n=require("./Input.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=(0,r.forwardRef)(({disabled:a,...o},s)=>{let[c,l]=(0,r.useState)(!1);return(0,i.jsx)(n.Input,{...o,ref:s,disabled:a,type:c?`text`:`password`,trailingIcon:(0,i.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),disabled:a,"aria-label":c?`비밀번호 숨기기`:`비밀번호 표시`,className:`flex items-center justify-center text-fg-subtle transition-colors hover:text-fg-default disabled:cursor-not-allowed disabled:opacity-50`,children:c?(0,i.jsx)(e.EyeOff,{className:`h-4 w-4`,strokeWidth:1.5}):(0,i.jsx)(t.Eye,{className:`h-4 w-4`,strokeWidth:1.5})})})});a.displayName=`PasswordInput`,exports.PasswordInput=a;
|
|
@@ -16,7 +16,7 @@ var o = r(({ disabled: r, ...o }, s) => {
|
|
|
16
16
|
onClick: () => l((e) => !e),
|
|
17
17
|
disabled: r,
|
|
18
18
|
"aria-label": c ? "비밀번호 숨기기" : "비밀번호 표시",
|
|
19
|
-
className: "flex items-center justify-center text-
|
|
19
|
+
className: "flex items-center justify-center text-fg-subtle transition-colors hover:text-fg-default disabled:cursor-not-allowed disabled:opacity-50",
|
|
20
20
|
children: a(c ? e : t, {
|
|
21
21
|
className: "h-4 w-4",
|
|
22
22
|
strokeWidth: 1.5
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){let t=e.startsWith(`-`),[n=``,r=``]=(t?e.slice(1):e).split(`.`);return{negative:t,integer:n||`0`,fraction:r}}function t(e){let[t=``,n]=e.toLowerCase().split(`e`);if(n===void 0)return e;let r=Number(n),i=t.startsWith(`-`),[a=``,o=``]=(i?t.slice(1):t).split(`.`),s=`${a}${o}`.replace(/^0+(?=\d)/,``),c=a.length+r,l=c<=0?`0.${`0`.repeat(-c)}${s}`:c>=s.length?`${s}${`0`.repeat(c-s.length)}`:`${s.slice(0,c)}.${s.slice(c)}`;return i?`-${l}`:l}function n(e){return 10n**BigInt(e)}function r(t,r){let{negative:i,integer:a,fraction:o}=e(t),s=n(r),c=BigInt(o.slice(0,r).padEnd(r,`0`)||`0`),l=BigInt(a)*s+c;return i?-l:l}function i(r,i,a){if(r===void 0||!Number.isFinite(r))return;let{negative:o,integer:s,fraction:c}=e(t(String(r))),l=n(i),u=BigInt(c.slice(0,i).padEnd(i,`0`)||`0`),d=BigInt(s)*l+u,f=/[1-9]/.test(c.slice(i));return o?a===`max`&&f?-(d+1n):-d:a===`min`&&f?d+1n:d}function a(e,t,n){return(t===void 0||e.max>=t)&&(n===void 0||e.min<=n)}function o(t,o,s,c){let{negative:l,integer:u,fraction:d}=e(t),f=t.includes(`.`)?d:void 0,p=o-d.length,m=r(t,o),h=n(Math.max(0,p))-1n,g=l?{min:m-h,max:m}:{min:m,max:m+h},_=i(s,o,`min`),v=i(c,o,`max`);if(a(g,_,v))return!0;if(f!==void 0||u===`0`)return!1;if(!l&&v===void 0||l&&_===void 0)return!0;let y=BigInt(u),b=n(o);for(let e=1;e<309;e+=1){let t=n(e),r=y*t,i=(y+1n)*t-1n;if(a(l?{min:-(i*b+(b-1n)),max:-(r*b)}:{min:r*b,max:i*b+(b-1n)},_,v))return!0;if(!l&&v!==void 0&&r*b>v||l&&_!==void 0&&-(r*b)<_)return!1}return!1}function s(e,{decimalPlaces:t,allowNegative:n,min:a,max:s}){let c=n?`-?`:``,l=Math.max(0,Math.floor(t)),u=l>0?`(?:\\.\\d{0,${l}})?`:``,d=l>0?`|\\.\\d{0,${l}}`:``,f=RegExp(`^${c}(?:(?:0|[1-9]\\d*)${u}${d})?$`);if(e!==``&&e!==`-`&&!f.test(e)||e===`-`&&!n)return`reject`;if(e===``)return`empty`;if(e===`-`)return`draft`;if(!Number.isFinite(Number(e))||!o(e,l,a,s))return`reject`;let p=r(e,l),m=i(a,l,`min`),h=i(s,l,`max`),g=(m===void 0||p>=m)&&(h===void 0||p<=h);return!e.endsWith(`.`)&&g?`value`:`draft`}exports.validateDecimalDraft=s;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** 입력 가능한 초안과 부모에 전달 가능한 숫자를 구분한다. */
|
|
2
|
+
export declare function validateDecimalDraft(next: string, { decimalPlaces, allowNegative, min, max, }: {
|
|
3
|
+
decimalPlaces: number;
|
|
4
|
+
allowNegative: boolean;
|
|
5
|
+
min?: number;
|
|
6
|
+
max?: number;
|
|
7
|
+
}): "reject" | "draft" | "empty" | "value";
|