@thewrong/ui 0.2.0 → 0.4.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 +27 -6
- 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 +5 -1
- package/dist/components/button/Button.esm.js +50 -45
- package/dist/{src/components → components}/button/index.d.ts +2 -2
- package/dist/{src/components → components}/button/types.d.ts +3 -1
- package/dist/components/button/utils.cjs +1 -0
- package/dist/{src/components → components}/button/utils.d.ts +3 -3
- package/dist/components/button/utils.esm.js +26 -22
- 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 +12 -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 +180 -176
- 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 +215 -195
- 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/types.d.ts +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/slider/Slider.cjs +1 -0
- package/dist/components/slider/Slider.d.ts +6 -0
- package/dist/components/slider/Slider.esm.js +36 -0
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/types.d.ts +15 -0
- package/dist/components/slider/utils.cjs +1 -0
- package/dist/components/slider/utils.d.ts +3 -0
- package/dist/components/slider/utils.esm.js +15 -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 +261 -247
- 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/components/SortHeader.cjs +1 -0
- package/dist/components/table/components/SortHeader.d.ts +10 -0
- package/dist/components/table/components/SortHeader.esm.js +27 -0
- package/dist/components/table/components/SortableHeaderCell.cjs +1 -0
- package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +10 -2
- package/dist/components/table/components/SortableHeaderCell.esm.js +54 -26
- package/dist/components/table/hooks/sort-state.cjs +1 -0
- package/dist/components/table/hooks/sort-state.d.ts +5 -0
- package/dist/components/table/hooks/sort-state.esm.js +21 -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/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/components/table/hooks/useTableSort.cjs +1 -0
- package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +7 -4
- package/dist/components/table/hooks/useTableSort.esm.js +18 -19
- 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 +3 -1
- package/dist/components/table/table.cjs +1 -0
- package/dist/components/table/table.d.ts +13 -0
- package/dist/components/table/table.esm.js +189 -173
- package/dist/{src/components → components}/table/types.d.ts +11 -4
- 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/tabs/Tabs.cjs +1 -0
- package/dist/components/tabs/Tabs.d.ts +8 -0
- package/dist/components/tabs/Tabs.esm.js +53 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/navigation.cjs +1 -0
- package/dist/components/tabs/navigation.d.ts +2 -0
- package/dist/components/tabs/navigation.esm.js +18 -0
- package/dist/components/tabs/types.d.ts +20 -0
- 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 +42 -0
- package/dist/index.esm.js +83 -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-down.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down.esm.js +10 -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-up-down.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up-down.esm.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up.cjs +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up.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/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 +1158 -0
- package/dist/ui.css +1 -1
- package/llms.txt +46 -17
- 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/components/SortableHeaderCell.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/useTableSort.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/table.d.ts +0 -10
- 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}/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}/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/{src/components → components}/table/hooks/useVirtualTable.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
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,1158 @@
|
|
|
1
|
+
/* @thewrong/ui 토큰 소스 — Tailwind v4 빌드에서 @import한다. 생성물: 수정 금지 */
|
|
2
|
+
/* ── primitives.css ── */
|
|
3
|
+
/*
|
|
4
|
+
1계층 — 프리미티브 토큰 (원료)
|
|
5
|
+
================================
|
|
6
|
+
• 네이밍: --p-<카테고리>-<스케일> ("p-" = private, 외부 직참조 금지)
|
|
7
|
+
• 컴포넌트 코드는 이 변수를 직접 참조하지 않는다. 시맨틱 토큰(semantic.css)을 경유한다.
|
|
8
|
+
직참조 금지는 scripts/check-tokens.mjs가 검사한다.
|
|
9
|
+
• --p-* 네임스페이스는 Tailwind 유틸리티를 만들지 않는다(bg-p-* 같은 클래스는 생기지 않음).
|
|
10
|
+
• 취향(색·반경·크기)을 바꿀 때는 이 파일의 값을 바꾼다. 역할 배정은 semantic.css가 맡는다.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
@theme {
|
|
14
|
+
/* ── 색 팔레트 ─────────────────────────────────────────────────────────── */
|
|
15
|
+
|
|
16
|
+
/* violet — 기본 accent 스케일 (채도를 Tailwind violet의 90%로 낮춘 값) */
|
|
17
|
+
--p-color-violet-50: #f5f4fe;
|
|
18
|
+
--p-color-violet-100: #eeeafd;
|
|
19
|
+
--p-color-violet-200: #ded8fc;
|
|
20
|
+
--p-color-violet-300: #c6b9f9;
|
|
21
|
+
--p-color-violet-400: #aa91f4;
|
|
22
|
+
--p-color-violet-500: #8e64ee;
|
|
23
|
+
--p-color-violet-600: #7e43e4;
|
|
24
|
+
--p-color-violet-700: #6f31d0;
|
|
25
|
+
--p-color-violet-800: #5d28af;
|
|
26
|
+
--p-color-violet-900: #4d238f;
|
|
27
|
+
--p-color-violet-950: #2f1461;
|
|
28
|
+
|
|
29
|
+
/* gray (neutral) — 색조 없는 Tailwind gray 팔레트 */
|
|
30
|
+
--p-color-gray-50: #f9fafb;
|
|
31
|
+
--p-color-gray-100: #f3f4f6;
|
|
32
|
+
--p-color-gray-200: #e5e7eb;
|
|
33
|
+
--p-color-gray-300: #d1d5db;
|
|
34
|
+
--p-color-gray-400: #9ca3af;
|
|
35
|
+
--p-color-gray-500: #6b7280;
|
|
36
|
+
--p-color-gray-600: #4b5563;
|
|
37
|
+
--p-color-gray-700: #374151;
|
|
38
|
+
--p-color-gray-800: #1f2937;
|
|
39
|
+
--p-color-gray-900: #111827;
|
|
40
|
+
--p-color-gray-950: #030712;
|
|
41
|
+
|
|
42
|
+
/* success (green) */
|
|
43
|
+
--p-color-green-50: #f0fdf4;
|
|
44
|
+
--p-color-green-100: #dcfce7;
|
|
45
|
+
--p-color-green-300: #86efac;
|
|
46
|
+
--p-color-green-400: #4ade80;
|
|
47
|
+
--p-color-green-500: #22c55e;
|
|
48
|
+
--p-color-green-600: #16a34a;
|
|
49
|
+
--p-color-green-700: #15803d;
|
|
50
|
+
--p-color-green-800: #166534;
|
|
51
|
+
--p-color-green-900: #14532d;
|
|
52
|
+
|
|
53
|
+
/* error (red 쪽 rose) — 채도를 90%로 낮춘 값 */
|
|
54
|
+
--p-color-rose-50: #fdf3f3;
|
|
55
|
+
--p-color-rose-100: #fde3e3;
|
|
56
|
+
--p-color-rose-300: #f8a9a9;
|
|
57
|
+
--p-color-rose-400: #f17878;
|
|
58
|
+
--p-color-rose-500: #e64d4d;
|
|
59
|
+
--p-color-rose-600: #b12424; /* hover + 약한 텍스트 — white 대비 6.25:1 */
|
|
60
|
+
--p-color-rose-700: #932121; /* active — white 대비 8.03:1 */
|
|
61
|
+
--p-color-rose-950: #4c0519; /* 다크 오류 블록 배경 */
|
|
62
|
+
--p-color-rose-danger: #d32f2f; /* danger 기준값 — white 대비 4.98:1 */
|
|
63
|
+
|
|
64
|
+
/* warning (amber/yellow) */
|
|
65
|
+
--p-color-yellow-50: #fffbeb;
|
|
66
|
+
--p-color-yellow-100: #fef3c7;
|
|
67
|
+
--p-color-yellow-300: #fcd34d;
|
|
68
|
+
--p-color-yellow-400: #fbbf24;
|
|
69
|
+
--p-color-yellow-500: #f59e0b;
|
|
70
|
+
--p-color-yellow-600: #d97706;
|
|
71
|
+
--p-color-yellow-700: #b45309;
|
|
72
|
+
--p-color-yellow-primary: #f0b100;
|
|
73
|
+
--p-color-yellow-secondary: #ffdf20;
|
|
74
|
+
--p-color-yellow-tertiary: #fef9c2;
|
|
75
|
+
|
|
76
|
+
/* 레이블·상태 강조색 */
|
|
77
|
+
--p-color-cyan-500: #00b8db;
|
|
78
|
+
--p-color-violet-label: #8e51ff;
|
|
79
|
+
--p-color-fuchsia-500: #e12afb;
|
|
80
|
+
--p-color-green-label: #00c950;
|
|
81
|
+
--p-color-rose-label: #ff2056;
|
|
82
|
+
|
|
83
|
+
/* white / black */
|
|
84
|
+
--p-color-white: #ffffff;
|
|
85
|
+
--p-color-black: #000000;
|
|
86
|
+
|
|
87
|
+
/* ── 반경 스케일 ────────────────────────────────────────────────────────── */
|
|
88
|
+
|
|
89
|
+
--p-radius-none: 0;
|
|
90
|
+
--p-radius-1: 3px;
|
|
91
|
+
--p-radius-2: 5px;
|
|
92
|
+
--p-radius-3: 7px;
|
|
93
|
+
--p-radius-4: 10px;
|
|
94
|
+
--p-radius-5: 14px;
|
|
95
|
+
--p-radius-6: 18px;
|
|
96
|
+
--p-radius-7: 24px;
|
|
97
|
+
--p-radius-full: 9999px;
|
|
98
|
+
|
|
99
|
+
/* ── 타이포그래피 스케일 (px, 루트 16px 기준) ───────────────────────────── */
|
|
100
|
+
|
|
101
|
+
--p-text-xs: 12px;
|
|
102
|
+
--p-text-xs--line-height: 16px;
|
|
103
|
+
--p-text-sm: 14px;
|
|
104
|
+
--p-text-sm--line-height: 20px;
|
|
105
|
+
--p-text-base: 16px;
|
|
106
|
+
--p-text-base--line-height: 24px;
|
|
107
|
+
--p-text-lg: 18px;
|
|
108
|
+
--p-text-lg--line-height: 28px;
|
|
109
|
+
--p-text-xl: 20px;
|
|
110
|
+
--p-text-xl--line-height: 28px;
|
|
111
|
+
--p-text-2xl: 24px;
|
|
112
|
+
--p-text-2xl--line-height: 32px;
|
|
113
|
+
--p-text-3xl: 30px;
|
|
114
|
+
--p-text-3xl--line-height: 36px;
|
|
115
|
+
--p-text-4xl: 36px;
|
|
116
|
+
--p-text-4xl--line-height: 40px;
|
|
117
|
+
--p-text-5xl: 48px;
|
|
118
|
+
--p-text-5xl--line-height: 1;
|
|
119
|
+
|
|
120
|
+
/* ── 폰트 원료 ──────────────────────────────────────────────────────────── */
|
|
121
|
+
|
|
122
|
+
/* 시스템 스택 — 웹폰트를 번들하지 않는다. Tailwind 기본 sans와 같은 값이다. */
|
|
123
|
+
--p-font-family-sans:
|
|
124
|
+
ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
|
125
|
+
"Segoe UI Symbol", "Noto Color Emoji";
|
|
126
|
+
--p-font-weight-regular: 400;
|
|
127
|
+
--p-font-weight-medium: 500;
|
|
128
|
+
--p-font-weight-semibold: 600;
|
|
129
|
+
--p-font-weight-bold: 700;
|
|
130
|
+
|
|
131
|
+
/* ── 컨트롤 측정 원료 ───────────────────────────────────────────────────── */
|
|
132
|
+
|
|
133
|
+
--p-border-width-thin: 1px;
|
|
134
|
+
--p-border-width-strong: 1.5px;
|
|
135
|
+
--p-ring-width-control: 2px;
|
|
136
|
+
--p-space-4: 4px;
|
|
137
|
+
--p-space-6: 6px;
|
|
138
|
+
--p-space-8: 8px;
|
|
139
|
+
--p-size-14: 14px;
|
|
140
|
+
--p-size-16: 16px;
|
|
141
|
+
--p-size-20: 20px;
|
|
142
|
+
--p-alpha-20: 20%;
|
|
143
|
+
--p-alpha-30: 30%;
|
|
144
|
+
--p-alpha-40: 40%;
|
|
145
|
+
--p-alpha-70: 70%;
|
|
146
|
+
--p-opacity-0: 0;
|
|
147
|
+
--p-opacity-25: 0.25;
|
|
148
|
+
--p-opacity-40: 0.4;
|
|
149
|
+
--p-opacity-50: 0.5;
|
|
150
|
+
--p-opacity-60: 0.6;
|
|
151
|
+
--p-opacity-70: 0.7;
|
|
152
|
+
--p-opacity-75: 0.75;
|
|
153
|
+
|
|
154
|
+
/* ── 그림자 스케일 ──────────────────────────────────────────────────────── */
|
|
155
|
+
|
|
156
|
+
--p-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
157
|
+
--p-shadow-md:
|
|
158
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
|
|
159
|
+
--p-shadow-lg:
|
|
160
|
+
0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
|
|
161
|
+
--p-shadow-xl:
|
|
162
|
+
0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
|
163
|
+
--p-shadow-e1: 0 1px 2px rgba(0, 0, 0, 0.08);
|
|
164
|
+
--p-shadow-e2: 0 2px 4px rgba(0, 0, 0, 0.08);
|
|
165
|
+
--p-shadow-e3: 0 4px 8px rgba(0, 0, 0, 0.08);
|
|
166
|
+
--p-shadow-e4: 0 8px 16px rgba(0, 0, 0, 0.08);
|
|
167
|
+
|
|
168
|
+
/* ── 트랜지션 타이밍 ────────────────────────────────────────────────────── */
|
|
169
|
+
|
|
170
|
+
--p-duration-fast: 150ms;
|
|
171
|
+
--p-duration-default: 200ms;
|
|
172
|
+
--p-duration-slow: 300ms;
|
|
173
|
+
--p-duration-spinner: 1s;
|
|
174
|
+
|
|
175
|
+
--p-ease-in: cubic-bezier(0.4, 0, 1, 1);
|
|
176
|
+
--p-ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
177
|
+
--p-ease-inout: cubic-bezier(0.4, 0, 0.2, 1);
|
|
178
|
+
--p-ease-linear: linear;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* ── semantic.css ── */
|
|
182
|
+
/*
|
|
183
|
+
2계층 — 시맨틱 토큰 (역할)
|
|
184
|
+
============================
|
|
185
|
+
• 컴포넌트가 참조하는 유일한 토큰 계층. 프리미티브(--p-*)만 참조하고 hex를 직접 쓰지 않는다
|
|
186
|
+
(반투명 rgba처럼 프리미티브로 표현하지 않는 값은 예외).
|
|
187
|
+
• Tailwind v4 @theme — 변수명이 곧 유틸리티 이름이다.
|
|
188
|
+
--color-bg-surface → bg-bg-surface, --color-fg-default → text-fg-default,
|
|
189
|
+
--radius-control-medium → rounded-control-medium, --spacing-control-medium → h-control-medium.
|
|
190
|
+
• 테마 오버라이드: 소비자 CSS에서 이 변수들을 재선언한다. 프리미티브는 건드리지 않는다.
|
|
191
|
+
• 다크: 아래 `.dark` 블록이 시맨틱만 재정의한다. `.dark`는 임의 조상 요소에 붙여도 동작한다.
|
|
192
|
+
|
|
193
|
+
네이밍:
|
|
194
|
+
--color-{역할} → 단독 역할 (예: --color-primary)
|
|
195
|
+
--color-{대분류}-{역할} → 그룹 (예: --color-fg-default, --color-bg-surface)
|
|
196
|
+
--radius-{용도} / --shadow-{용도} / --text-{scale}
|
|
197
|
+
|
|
198
|
+
⚠️ cn() 연동 — src/lib/utils.ts:
|
|
199
|
+
커스텀 유틸리티(rounded-control-*, h-control-*, z-* 등)를 tailwind-merge가 인식하려면
|
|
200
|
+
utils.ts의 extendTailwindMerge 그룹에 등록해야 한다. 여기에 유틸리티를 추가하면
|
|
201
|
+
utils.ts도 같이 고친다.
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
@theme {
|
|
205
|
+
/* ── 브랜드 ─────────────────────────────────────────────────────────────── */
|
|
206
|
+
|
|
207
|
+
--color-primary: var(--p-color-violet-600); /* 버튼·링크 메인 색 */
|
|
208
|
+
--color-primary-hover: var(--p-color-violet-700);
|
|
209
|
+
--color-primary-active: var(--p-color-violet-800);
|
|
210
|
+
/* 틴트 위 텍스트와 Slider 채움·thumb, Progress 채움, Tabs 선택 표시줄,
|
|
211
|
+
링크 포커스 링에 기존 값을 함께 사용해 인접 배경과 3:1 대비를 확보한다. */
|
|
212
|
+
--color-primary-fg: var(--p-color-violet-600);
|
|
213
|
+
--color-primary-subtle: var(
|
|
214
|
+
--p-color-violet-50
|
|
215
|
+
); /* 배경 틴트 (선택 상태 등) */
|
|
216
|
+
--color-primary-border: var(--p-color-violet-300);
|
|
217
|
+
/* 키보드 포커스 링 — 기본 라이트는 primary·surface와의 대비가 3:1 미달(대비 테스트의 existingFailures 참조). */
|
|
218
|
+
--color-focus-primary: var(--p-color-violet-400);
|
|
219
|
+
/* 약한 포커스 역할. 기본값은 full 링과 같다. */
|
|
220
|
+
--color-focus-primary-soft: var(--color-focus-primary);
|
|
221
|
+
--color-button-secondary-hover: color-mix(
|
|
222
|
+
in srgb,
|
|
223
|
+
var(--p-color-violet-300) var(--p-alpha-20),
|
|
224
|
+
transparent
|
|
225
|
+
);
|
|
226
|
+
--color-button-secondary-active: color-mix(
|
|
227
|
+
in srgb,
|
|
228
|
+
var(--p-color-violet-300) var(--p-alpha-30),
|
|
229
|
+
transparent
|
|
230
|
+
);
|
|
231
|
+
--color-icon-button-primary-active: color-mix(
|
|
232
|
+
in srgb,
|
|
233
|
+
var(--p-color-violet-50) var(--p-alpha-70),
|
|
234
|
+
transparent
|
|
235
|
+
);
|
|
236
|
+
--color-input-clear-ring: color-mix(
|
|
237
|
+
in srgb,
|
|
238
|
+
var(--p-color-violet-300) var(--p-alpha-40),
|
|
239
|
+
transparent
|
|
240
|
+
);
|
|
241
|
+
|
|
242
|
+
/* ── 전경(텍스트) ───────────────────────────────────────────────────────── */
|
|
243
|
+
|
|
244
|
+
--color-fg-default: var(--p-color-gray-800); /* 본문 */
|
|
245
|
+
/* 무채색 선택 배경(bg-muted) 위 강조 텍스트. [대비쌍] bg-subtle ↔ fg-accent */
|
|
246
|
+
--color-fg-accent: var(--p-color-violet-800);
|
|
247
|
+
--color-fg-muted: var(--p-color-gray-600); /* 보조 */
|
|
248
|
+
--color-fg-subtle: var(--p-color-gray-500); /* 힌트·플레이스홀더 */
|
|
249
|
+
--color-fg-disabled: var(--p-color-gray-500);
|
|
250
|
+
--color-fg-inverse: var(--p-color-white); /* 진한 배경 위 텍스트 */
|
|
251
|
+
--color-fg-danger: var(--p-color-rose-danger);
|
|
252
|
+
--color-fg-danger-placeholder: var(
|
|
253
|
+
--p-color-rose-600
|
|
254
|
+
); /* white 위 AA 6.47:1 */
|
|
255
|
+
|
|
256
|
+
/* ── 배경(surface) ──────────────────────────────────────────────────────── */
|
|
257
|
+
|
|
258
|
+
--color-bg-page: var(--p-color-white); /* 페이지 최상위 */
|
|
259
|
+
--color-bg-surface: var(--p-color-white); /* 카드·모달·패널 */
|
|
260
|
+
--color-bg-subtle: var(--p-color-gray-100); /* 입력 배경·호버 트랙 */
|
|
261
|
+
/* surface와 subtle 사이의 가장 옅은 면 — 보더 없이 배경만으로 영역을 나눌 때. */
|
|
262
|
+
--color-bg-faint: var(--p-color-gray-50);
|
|
263
|
+
--color-bg-muted: var(--p-color-gray-200); /* 비활성·구분 배경 */
|
|
264
|
+
--color-bg-disabled: var(--p-color-gray-200);
|
|
265
|
+
--color-bg-radio-disabled-indicator: var(--p-color-gray-300);
|
|
266
|
+
--color-bg-overlay: rgba(0, 0, 0, 0.4); /* 모달 백드롭 */
|
|
267
|
+
/* 바텀시트·드로어·date-picker 공용 핸들 바. */
|
|
268
|
+
--color-bg-handle: var(--p-color-gray-300);
|
|
269
|
+
|
|
270
|
+
/* ── 경계선 ─────────────────────────────────────────────────────────────── */
|
|
271
|
+
|
|
272
|
+
--color-border-default: var(--p-color-gray-400);
|
|
273
|
+
--color-border-subtle: var(--p-color-gray-200);
|
|
274
|
+
--color-border-faint: var(--p-color-gray-100);
|
|
275
|
+
--color-border-disabled: var(
|
|
276
|
+
--p-color-black
|
|
277
|
+
); /* 디자이너 의도 유지 — 의도된 값이다 */
|
|
278
|
+
--color-border-danger: var(--p-color-rose-danger);
|
|
279
|
+
/* danger 재시도·포커스 링. 오류 보더와 분리된 역할이며 값은 error-border를 따른다. */
|
|
280
|
+
--color-focus-danger: var(--color-error-border);
|
|
281
|
+
--color-border-primary: var(--p-color-violet-300); /* 선택·강조 보더 */
|
|
282
|
+
|
|
283
|
+
/* ── 아이콘 ─────────────────────────────────────────────────────────────── */
|
|
284
|
+
/* 아이콘은 텍스트보다 채도가 낮아도 읽히므로 fg-default보다 한 스텝 낮게. */
|
|
285
|
+
--color-icon-primary: var(--p-color-gray-700);
|
|
286
|
+
--color-icon-secondary: var(--p-color-gray-500);
|
|
287
|
+
--color-icon-tertiary: var(--p-color-gray-400);
|
|
288
|
+
--color-icon-disabled: var(--p-color-gray-300);
|
|
289
|
+
--color-icon-inverse: var(--p-color-white);
|
|
290
|
+
|
|
291
|
+
/* ── 상태 색 ────────────────────────────────────────────────────────────── */
|
|
292
|
+
|
|
293
|
+
--color-success: var(--p-color-green-label);
|
|
294
|
+
--color-error: var(--p-color-rose-danger);
|
|
295
|
+
--color-warning: var(--p-color-yellow-primary);
|
|
296
|
+
--color-info: var(--p-color-violet-600);
|
|
297
|
+
|
|
298
|
+
/* error 스케일 (danger 버튼 등) */
|
|
299
|
+
--color-error-hover: var(--p-color-rose-600);
|
|
300
|
+
--color-error-active: var(--p-color-rose-700);
|
|
301
|
+
--color-error-subtle: var(--p-color-rose-50); /* hover 배경 */
|
|
302
|
+
--color-error-surface: var(--p-color-rose-50); /* 정적 경고·오류 블록 배경 */
|
|
303
|
+
--color-error-muted: var(--p-color-rose-100);
|
|
304
|
+
--color-error-border: var(--p-color-rose-300);
|
|
305
|
+
--color-error-fg: var(--p-color-rose-600); /* Badge weak 텍스트 */
|
|
306
|
+
|
|
307
|
+
/* success 스케일 */
|
|
308
|
+
--color-success-subtle: var(--p-color-green-50);
|
|
309
|
+
--color-success-fg: var(--p-color-green-600);
|
|
310
|
+
--color-success-border: var(--p-color-green-300);
|
|
311
|
+
|
|
312
|
+
/* warning 스케일 */
|
|
313
|
+
--color-warning-subtle: var(--p-color-yellow-50);
|
|
314
|
+
--color-warning-fg: var(--p-color-yellow-600);
|
|
315
|
+
--color-warning-border: var(--p-color-yellow-300);
|
|
316
|
+
|
|
317
|
+
/* info 스케일 */
|
|
318
|
+
--color-info-subtle: var(--p-color-violet-50);
|
|
319
|
+
--color-info-fg: var(--p-color-violet-600);
|
|
320
|
+
--color-info-border: var(--p-color-violet-300);
|
|
321
|
+
|
|
322
|
+
/* neutral 스케일 (Badge secondary/neutral) */
|
|
323
|
+
--color-neutral-fill: var(--p-color-gray-500);
|
|
324
|
+
/* gray-50은 bg-page(white)에 묻혀 한 스텝 올린 gray-100을 쓴다. */
|
|
325
|
+
--color-neutral-subtle: var(--p-color-gray-100);
|
|
326
|
+
--color-neutral-fg: var(--p-color-gray-600);
|
|
327
|
+
--color-neutral-border: var(--p-color-gray-300);
|
|
328
|
+
|
|
329
|
+
/* ── 반경 (역할별) ──────────────────────────────────────────────────────── */
|
|
330
|
+
/* 컴포넌트는 raw rounded-md/lg/xl 대신 아래 역할 유틸리티를 쓴다. */
|
|
331
|
+
|
|
332
|
+
--radius-control-mini: var(--p-radius-1); /* 3px */
|
|
333
|
+
--radius-control-small: var(--p-radius-2); /* 5px */
|
|
334
|
+
--radius-control-medium: var(--p-radius-3); /* 7px */
|
|
335
|
+
--radius-control-large: var(--p-radius-3); /* 7px */
|
|
336
|
+
|
|
337
|
+
--radius-surface: var(--p-radius-2); /* 카드·모달·팝오버 (5px) */
|
|
338
|
+
--radius-badge: var(--p-radius-1); /* 뱃지·태그 (3px) */
|
|
339
|
+
--radius-chip: var(--p-radius-full);
|
|
340
|
+
--radius-circle: var(--p-radius-full); /* 원형 아이콘 버튼·상태 점 */
|
|
341
|
+
/* 체크박스 박스 (3px). 뱃지 정책 변경이 체크박스를 끌고 가지 않도록 역할을 분리한다. */
|
|
342
|
+
--radius-checkbox: var(--p-radius-1);
|
|
343
|
+
--radius-toast: var(--p-radius-3); /* 토스트 시트 (7px) */
|
|
344
|
+
--radius-sheet: var(--p-radius-3); /* 바텀시트 상단 (7px) */
|
|
345
|
+
--radius-tooltip: var(--p-radius-1); /* 툴팁 표면 (3px) */
|
|
346
|
+
|
|
347
|
+
/* ── 그림자 (역할별) ────────────────────────────────────────────────────── */
|
|
348
|
+
/*
|
|
349
|
+
* ⚠️ Tailwind v4 @theme flatten 우회 — 중간층 변수 패턴
|
|
350
|
+
*
|
|
351
|
+
* @theme 안에서 `--shadow-control: var(--p-shadow-sm)`처럼 쓰면 Tailwind가 빌드 때
|
|
352
|
+
* var()를 풀어 `.shadow-control { --tw-shadow: <값> }`으로 굳힌다. 그러면 .dark에서
|
|
353
|
+
* --shadow-control을 재정의해도 효과가 없다.
|
|
354
|
+
* 그래서 @theme 밖(:root)의 --shadow-*-src를 참조하게 한다. Tailwind는 @theme 밖 변수를
|
|
355
|
+
* 풀지 못하므로 var() 체인이 런타임까지 남고, .dark에서 -src만 바꾸면 다크 그림자가 된다.
|
|
356
|
+
*/
|
|
357
|
+
--shadow-control: var(--shadow-control-src); /* 버튼·인풋 */
|
|
358
|
+
--shadow-surface: var(--shadow-surface-src); /* 카드 */
|
|
359
|
+
--shadow-overlay: var(--shadow-overlay-src); /* 모달·드롭다운 */
|
|
360
|
+
--shadow-tooltip: var(--shadow-tooltip-src);
|
|
361
|
+
|
|
362
|
+
/* ── 타이포그래피 — text-* 유틸리티를 px로 재정의 ───────────────────────── */
|
|
363
|
+
|
|
364
|
+
--text-xs: var(--p-text-xs);
|
|
365
|
+
--text-xs--line-height: var(--p-text-xs--line-height);
|
|
366
|
+
--text-sm: var(--p-text-sm);
|
|
367
|
+
--text-sm--line-height: var(--p-text-sm--line-height);
|
|
368
|
+
--text-base: var(--p-text-base);
|
|
369
|
+
--text-base--line-height: var(--p-text-base--line-height);
|
|
370
|
+
--text-lg: var(--p-text-lg);
|
|
371
|
+
--text-lg--line-height: var(--p-text-lg--line-height);
|
|
372
|
+
--text-xl: var(--p-text-xl);
|
|
373
|
+
--text-xl--line-height: var(--p-text-xl--line-height);
|
|
374
|
+
--text-2xl: var(--p-text-2xl);
|
|
375
|
+
--text-2xl--line-height: var(--p-text-2xl--line-height);
|
|
376
|
+
--text-3xl: var(--p-text-3xl);
|
|
377
|
+
--text-3xl--line-height: var(--p-text-3xl--line-height);
|
|
378
|
+
--text-4xl: var(--p-text-4xl);
|
|
379
|
+
--text-4xl--line-height: var(--p-text-4xl--line-height);
|
|
380
|
+
--text-5xl: var(--p-text-5xl);
|
|
381
|
+
--text-5xl--line-height: var(--p-text-5xl--line-height);
|
|
382
|
+
|
|
383
|
+
/* ── 폰트 역할 — 소비자는 family·weight 역할만 교체 ──────────────────── */
|
|
384
|
+
|
|
385
|
+
--font-body: var(--p-font-family-sans);
|
|
386
|
+
--font-display: var(--p-font-family-sans);
|
|
387
|
+
--font-control: var(--p-font-family-sans);
|
|
388
|
+
--font-weight-body-default: var(--p-font-weight-regular);
|
|
389
|
+
--font-weight-button: var(--p-font-weight-medium);
|
|
390
|
+
--font-weight-control-field: var(--p-font-weight-regular);
|
|
391
|
+
/* 테이블 "굵게" — bold(700)는 촘촘한 표에서 뭉개져 semibold를 쓴다. */
|
|
392
|
+
--font-weight-table-emphasis: var(--p-font-weight-semibold);
|
|
393
|
+
|
|
394
|
+
/* ── 토스트 (모드 불변 — 라이트/다크 모두 진한 회색 시트) ──────────────── */
|
|
395
|
+
/* 의도적으로 .dark 재정의가 없다. */
|
|
396
|
+
|
|
397
|
+
--color-bg-toast: var(--p-color-gray-700);
|
|
398
|
+
--color-fg-toast: var(--p-color-white);
|
|
399
|
+
--color-fg-toast-muted: rgba(255, 255, 255, 0.7); /* 닫기 버튼 기본 */
|
|
400
|
+
--color-fg-toast-hover: var(--p-color-white);
|
|
401
|
+
--color-bg-toast-backdrop: rgba(0, 0, 0, 0.15);
|
|
402
|
+
--color-border-toast: rgba(255, 255, 255, 0.12); /* 시트 내부 구분선 */
|
|
403
|
+
/* 어두운 시트 위 tone 아이콘 — 밝은 채도. */
|
|
404
|
+
--color-toast-tone-warning: var(--p-color-yellow-400);
|
|
405
|
+
--color-toast-tone-info: var(--p-color-violet-400);
|
|
406
|
+
--color-toast-tone-danger: var(--p-color-rose-300);
|
|
407
|
+
--color-toast-tone-success: var(--p-color-green-400);
|
|
408
|
+
/* 시트 안 tertiary filled 버튼 — 시트와 같은 색이 되는 문제 해소 */
|
|
409
|
+
--color-bg-toast-tertiary: rgba(255, 255, 255, 0.1);
|
|
410
|
+
--color-bg-toast-tertiary-hover: rgba(255, 255, 255, 0.15);
|
|
411
|
+
--color-bg-toast-tertiary-active: rgba(255, 255, 255, 0.2);
|
|
412
|
+
|
|
413
|
+
/* ── 툴팁 표면 ──────────────────────────────────────────────────────────── */
|
|
414
|
+
/* 라이트 gray-800 / 다크 gray-700. 텍스트는 모드 불변 white. */
|
|
415
|
+
|
|
416
|
+
--color-bg-tooltip: var(--p-color-gray-800);
|
|
417
|
+
--color-fg-tooltip: var(--p-color-white);
|
|
418
|
+
--color-bg-tooltip-badge: rgba(255, 255, 255, 0.14); /* 툴팁 위 뱃지 */
|
|
419
|
+
|
|
420
|
+
/* ── 테이블 표면 ────────────────────────────────────────────────────────── */
|
|
421
|
+
|
|
422
|
+
--color-bg-table-header: var(--p-color-gray-100);
|
|
423
|
+
--color-bg-table-row-even: var(--p-color-white);
|
|
424
|
+
--color-bg-table-row-odd: var(--p-color-gray-50);
|
|
425
|
+
--color-bg-table-row-hover: var(--p-color-gray-100);
|
|
426
|
+
--color-bg-table-row-selected: var(--p-color-violet-50);
|
|
427
|
+
--color-bg-table-row-selected-hover: var(--p-color-violet-100);
|
|
428
|
+
--color-border-table-cell: var(--p-color-gray-100);
|
|
429
|
+
--color-border-table-header: var(--p-color-gray-200);
|
|
430
|
+
--color-bg-table-row-plain: var(--p-color-white); /* 스트라이프 없는 행 */
|
|
431
|
+
--color-border-table-row-dashed: var(
|
|
432
|
+
--p-color-gray-200
|
|
433
|
+
); /* plain 행 점선 구분 */
|
|
434
|
+
|
|
435
|
+
/* 테이블 비색상 — 세로 padding·폰트·굵기. 스코프 클래스(component-utils.css)가 재정의한다. */
|
|
436
|
+
--table-cell-pad-y: 4px;
|
|
437
|
+
--table-header-pad-y: 8px;
|
|
438
|
+
--table-cell-font: var(--p-text-sm);
|
|
439
|
+
--table-header-font: var(--table-cell-font);
|
|
440
|
+
--table-cell-font-weight: var(--font-weight-body-default);
|
|
441
|
+
|
|
442
|
+
/* ── 트랜지션 ───────────────────────────────────────────────────────────── */
|
|
443
|
+
|
|
444
|
+
--default-transition-duration: var(--p-duration-default);
|
|
445
|
+
--duration-fast: var(--p-duration-fast);
|
|
446
|
+
--duration-slow: var(--p-duration-slow);
|
|
447
|
+
|
|
448
|
+
/* ── 컨트롤 상태 역할 ───────────────────────────────────────────────────── */
|
|
449
|
+
|
|
450
|
+
--border-width-control: var(--p-border-width-thin);
|
|
451
|
+
--border-width-button: var(--p-border-width-strong);
|
|
452
|
+
--ring-width-control: var(--p-ring-width-control);
|
|
453
|
+
--ring-width-button: var(--p-ring-width-control);
|
|
454
|
+
--ring-width-input-clear: var(--p-ring-width-control);
|
|
455
|
+
--transition-duration-control: var(--p-duration-default);
|
|
456
|
+
--transition-duration-button: var(--p-duration-default);
|
|
457
|
+
/* 포커스가 오버레이에서 트리거로 돌아오는 사이 focus-within이 잠깐 끊겨 깜빡이는 것을 막는 지연. */
|
|
458
|
+
--transition-delay-focus-return: var(--p-duration-default);
|
|
459
|
+
--ease-control: var(--p-ease-out);
|
|
460
|
+
--ease-button: var(--p-ease-out);
|
|
461
|
+
|
|
462
|
+
--spacing-button-mini: var(--p-space-4);
|
|
463
|
+
--spacing-button-small: var(--p-space-6);
|
|
464
|
+
--spacing-button-medium: var(--p-space-8);
|
|
465
|
+
--spacing-button-large: var(--p-space-8);
|
|
466
|
+
--spacing-button-icon-mini: var(--p-size-14);
|
|
467
|
+
--spacing-button-icon-small: var(--p-size-16);
|
|
468
|
+
--spacing-button-icon-medium: var(--p-size-20);
|
|
469
|
+
--spacing-button-icon-large: var(--p-size-20);
|
|
470
|
+
/* 로딩 스피너 — 사이즈별로 아이콘 크기와 맞춘다. */
|
|
471
|
+
--spacing-button-spinner-mini: var(--p-size-14);
|
|
472
|
+
--spacing-button-spinner-small: var(--p-size-16);
|
|
473
|
+
--spacing-button-spinner-medium: var(--p-size-20);
|
|
474
|
+
--spacing-button-spinner-large: var(--p-size-20);
|
|
475
|
+
|
|
476
|
+
--opacity-button-spinner-track: var(--p-opacity-25);
|
|
477
|
+
--opacity-button-spinner-head: var(--p-opacity-75);
|
|
478
|
+
/* 로딩 중 라벨은 폭 예약용으로만 남기고 완전히 숨긴다(짧은 라벨이 스피너와 겹쳐 보임). */
|
|
479
|
+
--opacity-button-loading-label: var(--p-opacity-0);
|
|
480
|
+
--opacity-button-disabled: var(--p-opacity-60);
|
|
481
|
+
--opacity-icon-button-disabled: var(--p-opacity-40);
|
|
482
|
+
--animate-button-spinner: button-spinner var(--p-duration-spinner)
|
|
483
|
+
var(--p-ease-linear) infinite;
|
|
484
|
+
|
|
485
|
+
/*
|
|
486
|
+
* ── 폼 컨트롤 사이즈 ────────────────────────────────────────────────────
|
|
487
|
+
* 값은 직접 px — 전역 --spacing과 무관하게 컨트롤 크기만 따로 바꿀 수 있다.
|
|
488
|
+
* --spacing-control-medium → h-control-medium
|
|
489
|
+
* --spacing-control-pad-medium → px-control-pad-medium
|
|
490
|
+
* --spacing-slot-icon-medium → h-slot-icon-medium / w-slot-icon-medium
|
|
491
|
+
* --spacing-slot-medium → gap-slot-medium
|
|
492
|
+
* --text-control-medium → text-control-medium
|
|
493
|
+
* --text-slot-badge-medium → text-slot-badge-medium
|
|
494
|
+
*
|
|
495
|
+
* | size | height | px | font | 슬롯 아이콘 | 슬롯 gap | 배지 텍스트 |
|
|
496
|
+
* | mini | 28px | 8px | 12px(xs) | 14px | 6px | 10px |
|
|
497
|
+
* | small | 36px | 12px | 14px(sm) | 16px | 8px | 12px(xs) |
|
|
498
|
+
* | medium | 44px | 14px | 14px(sm) | 18px | 12px | 12px(xs) |
|
|
499
|
+
* | large | 48px | 20px | 16px(base) | 20px | 14px | 14px(sm) |
|
|
500
|
+
*/
|
|
501
|
+
|
|
502
|
+
--spacing-control-mini: 28px;
|
|
503
|
+
--spacing-control-small: 36px;
|
|
504
|
+
--spacing-control-medium: 44px;
|
|
505
|
+
--spacing-control-large: 48px;
|
|
506
|
+
|
|
507
|
+
--spacing-control-pad-mini: 8px;
|
|
508
|
+
--spacing-control-pad-small: 12px;
|
|
509
|
+
--spacing-control-pad-medium: 14px;
|
|
510
|
+
--spacing-control-pad-large: 20px;
|
|
511
|
+
|
|
512
|
+
--spacing-slot-icon-mini: 14px;
|
|
513
|
+
--spacing-slot-icon-small: 16px;
|
|
514
|
+
--spacing-slot-icon-medium: 18px;
|
|
515
|
+
--spacing-slot-icon-large: 20px;
|
|
516
|
+
|
|
517
|
+
--spacing-slot-mini: 6px;
|
|
518
|
+
--spacing-slot-small: 8px;
|
|
519
|
+
--spacing-slot-medium: 12px;
|
|
520
|
+
--spacing-slot-large: 14px;
|
|
521
|
+
|
|
522
|
+
--text-control-mini: var(--p-text-xs);
|
|
523
|
+
--text-control-mini--line-height: var(--p-text-xs--line-height);
|
|
524
|
+
--text-control-small: var(--p-text-sm);
|
|
525
|
+
--text-control-small--line-height: var(--p-text-sm--line-height);
|
|
526
|
+
--text-control-medium: var(--p-text-sm);
|
|
527
|
+
--text-control-medium--line-height: var(--p-text-sm--line-height);
|
|
528
|
+
--text-control-large: var(--p-text-base);
|
|
529
|
+
--text-control-large--line-height: var(--p-text-base--line-height);
|
|
530
|
+
|
|
531
|
+
/* 배지 텍스트 (mini만 10px — 스케일 밖 값이라 직접 선언) */
|
|
532
|
+
--text-slot-badge-mini: 10px;
|
|
533
|
+
--text-slot-badge-mini--line-height: 14px;
|
|
534
|
+
--text-slot-badge-small: var(--p-text-xs);
|
|
535
|
+
--text-slot-badge-small--line-height: var(--p-text-xs--line-height);
|
|
536
|
+
--text-slot-badge-medium: var(--p-text-xs);
|
|
537
|
+
--text-slot-badge-medium--line-height: var(--p-text-xs--line-height);
|
|
538
|
+
--text-slot-badge-large: var(--p-text-sm);
|
|
539
|
+
--text-slot-badge-large--line-height: var(--p-text-sm--line-height);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
@utility font-body-default {
|
|
543
|
+
font-family: var(--font-body);
|
|
544
|
+
font-weight: var(--font-weight-body-default);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
@utility font-control-action {
|
|
548
|
+
font-family: var(--font-control);
|
|
549
|
+
font-weight: var(--font-weight-button);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
@utility font-control-field {
|
|
553
|
+
font-family: var(--font-control);
|
|
554
|
+
font-weight: var(--font-weight-control-field);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
@keyframes button-spinner {
|
|
558
|
+
to {
|
|
559
|
+
transform: rotate(360deg);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
@media (prefers-reduced-motion: reduce) {
|
|
564
|
+
:root {
|
|
565
|
+
--animate-button-spinner: none;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
/* 그림자 중간층 — 위 @theme 그림자 주석 참조. .dark는 이 -src만 재정의한다. */
|
|
570
|
+
:root {
|
|
571
|
+
--shadow-control-src: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* = --p-shadow-sm */
|
|
572
|
+
--shadow-surface-src: 0 2px 4px rgba(0, 0, 0, 0.08); /* = --p-shadow-e2 */
|
|
573
|
+
--shadow-overlay-src:
|
|
574
|
+
0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); /* = --p-shadow-lg */
|
|
575
|
+
--shadow-tooltip-src:
|
|
576
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); /* = --p-shadow-md */
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/*
|
|
580
|
+
── z-index 계층 ────────────────────────────────────────────────────────────
|
|
581
|
+
overlay(모달·드로어·바텀시트) < toast-backdrop(액션 토스트 백드롭) < floating(select·popover·
|
|
582
|
+
tooltip·date-picker — 모달 위에서도 떠야 함) < toast(최상위).
|
|
583
|
+
toast > floating 순서를 DOM 순서가 아니라 값으로 보장한다. 같은 계층 안의 겹침은 DOM 순서.
|
|
584
|
+
컴포넌트 내부의 z-10/20 같은 로컬 스택은 이 정책과 무관하다.
|
|
585
|
+
Tailwind v4에 z-index 테마 네임스페이스가 없어 @utility로 만든다. 다크와 무관하다.
|
|
586
|
+
*/
|
|
587
|
+
:root {
|
|
588
|
+
--z-overlay: 50;
|
|
589
|
+
--z-toast-backdrop: 60;
|
|
590
|
+
--z-floating: 100;
|
|
591
|
+
--z-toast: 150;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
@utility z-overlay {
|
|
595
|
+
z-index: var(--z-overlay);
|
|
596
|
+
}
|
|
597
|
+
@utility z-toast-backdrop {
|
|
598
|
+
z-index: var(--z-toast-backdrop);
|
|
599
|
+
}
|
|
600
|
+
@utility z-floating {
|
|
601
|
+
z-index: var(--z-floating);
|
|
602
|
+
}
|
|
603
|
+
@utility z-toast {
|
|
604
|
+
z-index: var(--z-toast);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/*
|
|
608
|
+
── 다크 — 시맨틱 재매핑 ──────────────────────────────────────────────────
|
|
609
|
+
• 프리미티브는 그대로 두고 시맨틱만 다른 프리미티브로 다시 가리킨다.
|
|
610
|
+
• `.dark`는 임의 조상에 붙여도 동작한다. 여기서 재정의하는 변수는 그 요소에서 다시 계산되기
|
|
611
|
+
때문이다. 다른 시맨틱을 var()로 참조하는 시맨틱(focus-primary-soft, focus-danger,
|
|
612
|
+
bg-faint)은 :root에서 계산된 값이 상속되므로 여기서 같이 다시 선언한다.
|
|
613
|
+
• 컴포넌트에 dark: variant를 쓰지 않는다 — 토큰이 다크를 흡수한다.
|
|
614
|
+
• 범위: 색·그림자. 반경·크기·타이포·z는 다크와 무관하다.
|
|
615
|
+
|
|
616
|
+
대비쌍 (함께 뒤집혀야 한다):
|
|
617
|
+
bg-page(gray-900) ↔ fg-default(gray-100)
|
|
618
|
+
bg-surface(gray-800) ↔ fg-muted(gray-400)
|
|
619
|
+
bg-subtle(gray-700) ↔ fg-subtle(gray-300)
|
|
620
|
+
primary(violet-600) ↔ fg-inverse(white)
|
|
621
|
+
error-subtle(gray-700) ↔ error-fg(rose-300)
|
|
622
|
+
success/warning/neutral-subtle(gray-700) ↔ *-fg(400/400/300), info-subtle(violet-950) ↔ info-fg(violet-400)
|
|
623
|
+
border-default(gray-600) ↔ bg-page, border-subtle(gray-700) ↔ bg-surface, border-faint(gray-800) ↔ bg-subtle
|
|
624
|
+
bg-tooltip(gray-700) ↔ fg-tooltip(white)
|
|
625
|
+
*/
|
|
626
|
+
.dark {
|
|
627
|
+
/* 브라우저 기본 UI(스크롤바·autofill·date picker)도 다크 톤으로. */
|
|
628
|
+
color-scheme: dark;
|
|
629
|
+
|
|
630
|
+
/* 브랜드 — violet은 600부터 white 대비 AA라 라이트와 같은 상태 순서를 유지한다. */
|
|
631
|
+
--color-primary: var(--p-color-violet-600);
|
|
632
|
+
--color-primary-hover: var(--p-color-violet-700);
|
|
633
|
+
--color-primary-active: var(--p-color-violet-800);
|
|
634
|
+
--color-primary-fg: var(--p-color-violet-300);
|
|
635
|
+
--color-primary-subtle: var(--p-color-violet-950);
|
|
636
|
+
--color-primary-border: var(--p-color-violet-300);
|
|
637
|
+
--color-focus-primary: var(--p-color-gray-100);
|
|
638
|
+
--color-focus-primary-soft: var(--color-focus-primary);
|
|
639
|
+
--color-icon-button-primary-active: color-mix(
|
|
640
|
+
in srgb,
|
|
641
|
+
var(--p-color-violet-950) var(--p-alpha-70),
|
|
642
|
+
transparent
|
|
643
|
+
);
|
|
644
|
+
|
|
645
|
+
/* 전경 */
|
|
646
|
+
--color-fg-default: var(--p-color-gray-100);
|
|
647
|
+
--color-fg-accent: var(--p-color-violet-300);
|
|
648
|
+
--color-fg-muted: var(--p-color-gray-400);
|
|
649
|
+
--color-fg-subtle: var(--p-color-gray-300);
|
|
650
|
+
--color-fg-disabled: var(--p-color-gray-400);
|
|
651
|
+
--color-fg-inverse: var(--p-color-white);
|
|
652
|
+
--color-fg-danger: var(--p-color-rose-300);
|
|
653
|
+
--color-fg-danger-placeholder: var(--p-color-rose-300);
|
|
654
|
+
|
|
655
|
+
/* 배경 */
|
|
656
|
+
--color-bg-page: var(--p-color-gray-900);
|
|
657
|
+
--color-bg-surface: var(--p-color-gray-800);
|
|
658
|
+
--color-bg-subtle: var(--p-color-gray-700);
|
|
659
|
+
/* 다크 팔레트에는 surface와 subtle 사이 값이 없어 subtle을 그대로 가리킨다(역할은 다름). */
|
|
660
|
+
--color-bg-faint: var(--color-bg-subtle);
|
|
661
|
+
--color-bg-muted: var(--p-color-gray-600);
|
|
662
|
+
--color-bg-disabled: var(--p-color-gray-700);
|
|
663
|
+
--color-bg-radio-disabled-indicator: var(--p-color-gray-600);
|
|
664
|
+
--color-bg-overlay: rgba(0, 0, 0, 0.6);
|
|
665
|
+
--color-bg-handle: var(--p-color-gray-600);
|
|
666
|
+
|
|
667
|
+
/* 경계선 */
|
|
668
|
+
--color-border-default: var(--p-color-gray-600);
|
|
669
|
+
--color-border-subtle: var(--p-color-gray-700);
|
|
670
|
+
--color-border-faint: var(--p-color-gray-800);
|
|
671
|
+
--color-border-disabled: var(--p-color-white); /* 디자이너 의도 유지 */
|
|
672
|
+
--color-border-danger: var(--p-color-rose-danger);
|
|
673
|
+
--color-focus-danger: var(--color-error-border);
|
|
674
|
+
--color-border-primary: var(--p-color-violet-300);
|
|
675
|
+
|
|
676
|
+
/* 아이콘 */
|
|
677
|
+
--color-icon-primary: var(--p-color-gray-300);
|
|
678
|
+
--color-icon-secondary: var(--p-color-gray-400);
|
|
679
|
+
--color-icon-tertiary: var(--p-color-gray-300);
|
|
680
|
+
--color-icon-disabled: var(--p-color-gray-600);
|
|
681
|
+
--color-icon-inverse: var(--p-color-white);
|
|
682
|
+
|
|
683
|
+
/* 상태 색 */
|
|
684
|
+
--color-success: var(--p-color-green-label);
|
|
685
|
+
--color-error: var(--p-color-rose-danger);
|
|
686
|
+
--color-warning: var(--p-color-yellow-primary);
|
|
687
|
+
--color-info: var(--p-color-violet-500);
|
|
688
|
+
|
|
689
|
+
--color-error-hover: var(--p-color-rose-600);
|
|
690
|
+
--color-error-active: var(--p-color-rose-700);
|
|
691
|
+
--color-error-subtle: var(
|
|
692
|
+
--p-color-gray-700
|
|
693
|
+
); /* rose-50은 다크에서 흰색처럼 보인다 */
|
|
694
|
+
--color-error-surface: var(--p-color-rose-950);
|
|
695
|
+
--color-error-muted: var(--p-color-gray-600);
|
|
696
|
+
--color-error-border: var(--p-color-rose-700);
|
|
697
|
+
--color-error-fg: var(--p-color-rose-300);
|
|
698
|
+
|
|
699
|
+
--color-success-subtle: var(--p-color-gray-700);
|
|
700
|
+
--color-success-fg: var(--p-color-green-400);
|
|
701
|
+
--color-success-border: var(--p-color-green-700);
|
|
702
|
+
|
|
703
|
+
--color-warning-subtle: var(--p-color-gray-700);
|
|
704
|
+
--color-warning-fg: var(--p-color-yellow-400);
|
|
705
|
+
--color-warning-border: var(--p-color-yellow-600);
|
|
706
|
+
|
|
707
|
+
--color-info-subtle: var(--p-color-violet-950);
|
|
708
|
+
--color-info-fg: var(--p-color-violet-400);
|
|
709
|
+
--color-info-border: var(--p-color-violet-700);
|
|
710
|
+
|
|
711
|
+
--color-neutral-fill: var(--p-color-gray-600);
|
|
712
|
+
--color-neutral-subtle: var(--p-color-gray-700);
|
|
713
|
+
--color-neutral-fg: var(--p-color-gray-300);
|
|
714
|
+
--color-neutral-border: var(--p-color-gray-600);
|
|
715
|
+
|
|
716
|
+
/* 툴팁 */
|
|
717
|
+
--color-bg-tooltip: var(--p-color-gray-700);
|
|
718
|
+
|
|
719
|
+
/* 테이블 */
|
|
720
|
+
--color-bg-table-header: var(--p-color-gray-800);
|
|
721
|
+
--color-bg-table-row-even: var(--p-color-gray-900);
|
|
722
|
+
--color-bg-table-row-odd: var(--p-color-gray-950);
|
|
723
|
+
--color-bg-table-row-hover: var(--p-color-gray-700);
|
|
724
|
+
--color-bg-table-row-selected: var(--p-color-violet-950);
|
|
725
|
+
--color-bg-table-row-selected-hover: var(--p-color-violet-900);
|
|
726
|
+
--color-border-table-cell: var(--p-color-gray-700);
|
|
727
|
+
--color-border-table-header: var(--p-color-gray-700);
|
|
728
|
+
--color-bg-table-row-plain: var(--p-color-gray-900);
|
|
729
|
+
--color-border-table-row-dashed: var(--p-color-gray-700);
|
|
730
|
+
|
|
731
|
+
/* 그림자 — 어두운 배경에서 보이도록 불투명도를 올린다. -src만 재정의한다. */
|
|
732
|
+
--shadow-control-src: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
|
733
|
+
--shadow-surface-src: 0 2px 4px rgba(0, 0, 0, 0.4);
|
|
734
|
+
--shadow-overlay-src:
|
|
735
|
+
0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -4px rgba(0, 0, 0, 0.4);
|
|
736
|
+
--shadow-tooltip-src:
|
|
737
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/* ── component-utils.css ── */
|
|
741
|
+
/*
|
|
742
|
+
컴포넌트 전용 네이티브 CSS — pseudo-element처럼 Tailwind 유틸·인라인 스타일로
|
|
743
|
+
표현할 수 없는 규칙만 둔다. 색은 시맨틱 토큰만 참조한다(다크는 토큰이 따라간다).
|
|
744
|
+
*/
|
|
745
|
+
|
|
746
|
+
/*
|
|
747
|
+
── 날짜 입력 — 네이티브 캘린더 indicator 숨김 ───────────────────────────────
|
|
748
|
+
<input type="date">의 브라우저 기본 캘린더 아이콘을 숨긴다. 옆의 커스텀 트리거(DatePicker)가
|
|
749
|
+
그 역할을 하므로 중복 indicator를 없앤다.
|
|
750
|
+
`.search-box-date-input`은 현재 DateInput이 쓰는 이름이다. `.date-input-native`와 같은 규칙.
|
|
751
|
+
*/
|
|
752
|
+
.date-input-native::-webkit-calendar-picker-indicator,
|
|
753
|
+
.search-box-date-input::-webkit-calendar-picker-indicator {
|
|
754
|
+
display: none;
|
|
755
|
+
-webkit-appearance: none;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
.date-input-native::-webkit-inner-spin-button,
|
|
759
|
+
.search-box-date-input::-webkit-inner-spin-button {
|
|
760
|
+
display: none;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/*
|
|
764
|
+
── 스크롤바 chrome 숨김 (opt-in) ─────────────────────────────────────────────
|
|
765
|
+
overflow는 유지해 터치·휠·키보드 스크롤은 그대로 동작하고 thumb만 감춘다.
|
|
766
|
+
마우스로 쓰는 화면에서는 thumb가 "더 있다"는 유일한 신호라 일괄 적용하지 않는다.
|
|
767
|
+
*/
|
|
768
|
+
.scroll-body-chrome-hidden {
|
|
769
|
+
-ms-overflow-style: none;
|
|
770
|
+
scrollbar-width: none;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
.scroll-body-chrome-hidden::-webkit-scrollbar {
|
|
774
|
+
display: none;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
/*
|
|
778
|
+
── 테이블 스크롤바 — 가운데 얇은 레일 + pill thumb ──────────────────────────
|
|
779
|
+
track: 6px 폭 중 가운데 2px 레일만 그린다. corner는 투명(다크에서 흰 코너가 튀지 않게).
|
|
780
|
+
*/
|
|
781
|
+
.scrollbar-table::-webkit-scrollbar {
|
|
782
|
+
width: 6px;
|
|
783
|
+
height: 6px;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
.scrollbar-table::-webkit-scrollbar-track {
|
|
787
|
+
background: linear-gradient(
|
|
788
|
+
to right,
|
|
789
|
+
transparent calc(50% - 1px),
|
|
790
|
+
var(--color-bg-disabled) calc(50% - 1px),
|
|
791
|
+
var(--color-bg-disabled) calc(50% + 1px),
|
|
792
|
+
transparent calc(50% + 1px)
|
|
793
|
+
);
|
|
794
|
+
border-radius: 9999px;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
.scrollbar-table::-webkit-scrollbar-track:horizontal {
|
|
798
|
+
background: linear-gradient(
|
|
799
|
+
to bottom,
|
|
800
|
+
transparent calc(50% - 1px),
|
|
801
|
+
var(--color-bg-disabled) calc(50% - 1px),
|
|
802
|
+
var(--color-bg-disabled) calc(50% + 1px),
|
|
803
|
+
transparent calc(50% + 1px)
|
|
804
|
+
);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
.scrollbar-table::-webkit-scrollbar-thumb {
|
|
808
|
+
background: var(--color-border-default);
|
|
809
|
+
border-radius: 9999px;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
.scrollbar-table::-webkit-scrollbar-thumb:hover {
|
|
813
|
+
background: var(--color-fg-subtle);
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
.scrollbar-table::-webkit-scrollbar-corner {
|
|
817
|
+
background: transparent;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
/*
|
|
821
|
+
── 브랜드 스크롤바 — 드롭다운 목록용 (date-picker 연·월 목록) ────────────────
|
|
822
|
+
테이블 스크롤바와 같은 레일 구조에 5px 폭, thumb는 브랜드 보더 색.
|
|
823
|
+
*/
|
|
824
|
+
.scrollbar-brand::-webkit-scrollbar {
|
|
825
|
+
width: 5px;
|
|
826
|
+
height: 5px;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
.scrollbar-brand::-webkit-scrollbar-track {
|
|
830
|
+
background: linear-gradient(
|
|
831
|
+
to right,
|
|
832
|
+
transparent calc(50% - 1px),
|
|
833
|
+
var(--color-bg-disabled) calc(50% - 1px),
|
|
834
|
+
var(--color-bg-disabled) calc(50% + 1px),
|
|
835
|
+
transparent calc(50% + 1px)
|
|
836
|
+
);
|
|
837
|
+
border-radius: 9999px;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
.scrollbar-brand::-webkit-scrollbar-track:horizontal {
|
|
841
|
+
background: linear-gradient(
|
|
842
|
+
to bottom,
|
|
843
|
+
transparent calc(50% - 1px),
|
|
844
|
+
var(--color-bg-disabled) calc(50% - 1px),
|
|
845
|
+
var(--color-bg-disabled) calc(50% + 1px),
|
|
846
|
+
transparent calc(50% + 1px)
|
|
847
|
+
);
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
.scrollbar-brand::-webkit-scrollbar-thumb {
|
|
851
|
+
background: var(--color-primary-border);
|
|
852
|
+
border-radius: 9999px;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
/*
|
|
856
|
+
── 테이블 density(2단) — 셀·헤더 세로 padding ───────────────────────────────
|
|
857
|
+
스코프 클래스가 커스텀 프로퍼티를 재정의한다. 셀의 `paddingBlock: var(--table-cell-pad-y)`는
|
|
858
|
+
가장 가까운 조상의 값을 받으므로 compact가 이긴다. default는 클래스 없음.
|
|
859
|
+
*/
|
|
860
|
+
.table-density-compact {
|
|
861
|
+
--table-cell-pad-y: 2px;
|
|
862
|
+
--table-header-pad-y: 4px;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
/*
|
|
866
|
+
── 테이블 size(3단) — 셀·헤더 폰트 크기 ─────────────────────────────────────
|
|
867
|
+
density와 직교하는 축. medium(기본)은 클래스 없음.
|
|
868
|
+
*/
|
|
869
|
+
.table-size-small {
|
|
870
|
+
--table-cell-font: var(--text-xs);
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
.table-size-large {
|
|
874
|
+
--table-cell-font: var(--text-base);
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
/*
|
|
878
|
+
── 테이블 fontWeight(2단) — 본문 셀 굵기 ────────────────────────────────────
|
|
879
|
+
normal(기본)은 클래스 없음.
|
|
880
|
+
*/
|
|
881
|
+
.table-weight-bold {
|
|
882
|
+
--table-cell-font-weight: var(--font-weight-table-emphasis);
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
/*
|
|
886
|
+
── 셀 단위 강조 굵기 ─────────────────────────────────────────────────────────
|
|
887
|
+
셀 굵기는 인라인 `fontWeight: var(--table-cell-font-weight)`로 들어가 font-semibold 같은
|
|
888
|
+
클래스로는 덮이지 않는다. 그래서 커스텀 프로퍼티 자체를 재정의한다.
|
|
889
|
+
*/
|
|
890
|
+
.table-cell-weight-emphasis {
|
|
891
|
+
--table-cell-font-weight: var(--font-weight-table-emphasis);
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
/* 불확정 진행률은 움직임 감소 설정에서 전체 트랙의 정적인 줄무늬로 표시한다. */
|
|
895
|
+
.progress-indeterminate {
|
|
896
|
+
width: 40%;
|
|
897
|
+
animation: progress-indeterminate 1.4s ease-in-out infinite;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
@keyframes progress-indeterminate {
|
|
901
|
+
from { transform: translateX(-100%); }
|
|
902
|
+
to { transform: translateX(250%); }
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
@media (prefers-reduced-motion: reduce) {
|
|
906
|
+
.progress-indeterminate {
|
|
907
|
+
animation: none;
|
|
908
|
+
width: 100%;
|
|
909
|
+
background-image: repeating-linear-gradient(135deg, var(--color-primary-fg) 0 6px, var(--color-bg-subtle) 6px 12px);
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
/* 네이티브 range 입력. 채움과 나머지 트랙은 색상 차이로 구분하며 값 위치는 배경 대비 3:1 이상인 thumb가 전달한다. */
|
|
914
|
+
.ui-slider {
|
|
915
|
+
-webkit-appearance: none;
|
|
916
|
+
appearance: none;
|
|
917
|
+
display: block;
|
|
918
|
+
width: 100%;
|
|
919
|
+
height: 24px;
|
|
920
|
+
background: transparent;
|
|
921
|
+
cursor: pointer;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
.ui-slider::-webkit-slider-runnable-track {
|
|
925
|
+
height: 4px;
|
|
926
|
+
border-radius: 9999px;
|
|
927
|
+
background: linear-gradient(to right, var(--color-primary-fg) var(--slider-fill), var(--color-icon-secondary) var(--slider-fill));
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
.ui-slider::-moz-range-track {
|
|
931
|
+
height: 4px;
|
|
932
|
+
border-radius: 9999px;
|
|
933
|
+
background: linear-gradient(to right, var(--color-primary-fg) var(--slider-fill), var(--color-icon-secondary) var(--slider-fill));
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
.ui-slider::-webkit-slider-thumb {
|
|
937
|
+
-webkit-appearance: none;
|
|
938
|
+
width: 16px;
|
|
939
|
+
height: 16px;
|
|
940
|
+
margin-top: -6px;
|
|
941
|
+
border: 2px solid var(--color-primary-fg);
|
|
942
|
+
border-radius: 50%;
|
|
943
|
+
background: var(--color-bg-surface);
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
.ui-slider::-moz-range-thumb {
|
|
947
|
+
width: 12px;
|
|
948
|
+
height: 12px;
|
|
949
|
+
border: 2px solid var(--color-primary-fg);
|
|
950
|
+
border-radius: 50%;
|
|
951
|
+
background: var(--color-bg-surface);
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
.ui-slider:focus-visible { outline: none; }
|
|
955
|
+
.ui-slider:focus-visible::-webkit-slider-thumb {
|
|
956
|
+
box-shadow: 0 0 0 2px var(--color-bg-surface), 0 0 0 4px var(--color-focus-primary);
|
|
957
|
+
}
|
|
958
|
+
.ui-slider:focus-visible::-moz-range-thumb {
|
|
959
|
+
box-shadow: 0 0 0 2px var(--color-bg-surface), 0 0 0 4px var(--color-focus-primary);
|
|
960
|
+
}
|
|
961
|
+
.ui-slider:disabled { cursor: not-allowed; }
|
|
962
|
+
.ui-slider:disabled::-webkit-slider-runnable-track { background: var(--color-bg-disabled); }
|
|
963
|
+
.ui-slider:disabled::-moz-range-track { background: var(--color-bg-disabled); }
|
|
964
|
+
.ui-slider:disabled::-webkit-slider-thumb { border-color: var(--color-fg-disabled); background: var(--color-bg-disabled); }
|
|
965
|
+
.ui-slider:disabled::-moz-range-thumb { border-color: var(--color-fg-disabled); background: var(--color-bg-disabled); }
|
|
966
|
+
|
|
967
|
+
/* ── themes/quiet.css ── */
|
|
968
|
+
/* 차분한 중립 테마 — 시맨틱 역할만 바꾼다. */
|
|
969
|
+
[data-theme="quiet"] {
|
|
970
|
+
--color-primary: #64748b;
|
|
971
|
+
--color-primary-hover: #334155;
|
|
972
|
+
--color-primary-active: #1e293b;
|
|
973
|
+
--color-primary-fg: #475569;
|
|
974
|
+
--color-primary-subtle: #f1f5f9;
|
|
975
|
+
--color-primary-border: #94a3b8;
|
|
976
|
+
--color-focus-primary: #030712;
|
|
977
|
+
/* 상속된 별칭은 조상에서 계산되므로 테마 스코프에서 다시 연결한다. */
|
|
978
|
+
--color-focus-primary-soft: var(--color-focus-primary);
|
|
979
|
+
--color-info: #64748b;
|
|
980
|
+
--color-border-primary: #94a3b8;
|
|
981
|
+
--color-fg-subtle: #475569;
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
.dark[data-theme="quiet"],
|
|
985
|
+
.dark [data-theme="quiet"],
|
|
986
|
+
[data-theme="quiet"] .dark {
|
|
987
|
+
--color-primary: #475569;
|
|
988
|
+
--color-primary-hover: #334155;
|
|
989
|
+
--color-primary-active: #1e293b;
|
|
990
|
+
--color-primary-fg: #e2e8f0;
|
|
991
|
+
--color-primary-subtle: #1e293b;
|
|
992
|
+
--color-primary-border: #94a3b8;
|
|
993
|
+
--color-focus-primary: #f3f4f6;
|
|
994
|
+
--color-focus-primary-soft: var(--color-focus-primary);
|
|
995
|
+
--color-info: #cbd5e1;
|
|
996
|
+
--color-border-primary: #94a3b8;
|
|
997
|
+
--color-fg-subtle: #cbd5e1;
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
/* ── themes/high-contrast.css ── */
|
|
1001
|
+
/*
|
|
1002
|
+
avocado 고대비 팔레트가 바꾸는 시맨틱 결과를 직접 선언한다.
|
|
1003
|
+
프리미티브를 교체하지 않아 하위 data-theme 스코프에서도 같은 결과가 난다.
|
|
1004
|
+
라이트와 다크 모두에 역할을 선언해 조상 .dark와 조합해도 유지한다.
|
|
1005
|
+
*/
|
|
1006
|
+
[data-theme="high-contrast"] {
|
|
1007
|
+
--color-bg-disabled: #e5e7eb;
|
|
1008
|
+
--color-bg-faint: #f9fafb;
|
|
1009
|
+
--color-bg-handle: #d1d5db;
|
|
1010
|
+
--color-bg-muted: #e5e7eb;
|
|
1011
|
+
--color-bg-page: #ffffff;
|
|
1012
|
+
--color-bg-radio-disabled-indicator: #d1d5db;
|
|
1013
|
+
--color-bg-subtle: #f3f4f6;
|
|
1014
|
+
--color-bg-surface: #ffffff;
|
|
1015
|
+
--color-bg-table-header: #f3f4f6;
|
|
1016
|
+
--color-bg-table-row-even: #ffffff;
|
|
1017
|
+
--color-bg-table-row-hover: #f3f4f6;
|
|
1018
|
+
--color-bg-table-row-plain: #ffffff;
|
|
1019
|
+
--color-bg-table-row-selected: #eff6ff;
|
|
1020
|
+
--color-bg-table-row-selected-hover: #dbeafe;
|
|
1021
|
+
--color-bg-toast: #1e293b;
|
|
1022
|
+
--color-bg-tooltip: #0f172a;
|
|
1023
|
+
--color-border-default: #64748b;
|
|
1024
|
+
--color-border-faint: #f3f4f6;
|
|
1025
|
+
--color-border-primary: #93c5fd;
|
|
1026
|
+
--color-border-subtle: #e5e7eb;
|
|
1027
|
+
--color-border-table-cell: #f3f4f6;
|
|
1028
|
+
--color-border-table-header: #e5e7eb;
|
|
1029
|
+
--color-border-table-row-dashed: #e5e7eb;
|
|
1030
|
+
--color-button-secondary-active: color-mix(
|
|
1031
|
+
in srgb,
|
|
1032
|
+
var(--color-primary-border) 30%,
|
|
1033
|
+
transparent
|
|
1034
|
+
);
|
|
1035
|
+
--color-button-secondary-hover: color-mix(
|
|
1036
|
+
in srgb,
|
|
1037
|
+
var(--color-primary-border) 20%,
|
|
1038
|
+
transparent
|
|
1039
|
+
);
|
|
1040
|
+
--color-error-muted: #fde3e3;
|
|
1041
|
+
--color-error-subtle: #fdf3f3;
|
|
1042
|
+
--color-fg-accent: #1e3a8a;
|
|
1043
|
+
--color-fg-default: #0f172a;
|
|
1044
|
+
--color-fg-disabled: #475569;
|
|
1045
|
+
--color-fg-muted: #1e293b;
|
|
1046
|
+
--color-fg-subtle: #334155;
|
|
1047
|
+
--color-focus-primary: #000000;
|
|
1048
|
+
--color-focus-primary-soft: var(--color-focus-primary);
|
|
1049
|
+
--color-icon-button-primary-active: color-mix(
|
|
1050
|
+
in srgb,
|
|
1051
|
+
var(--color-primary-subtle) 70%,
|
|
1052
|
+
transparent
|
|
1053
|
+
);
|
|
1054
|
+
--color-icon-disabled: #d1d5db;
|
|
1055
|
+
--color-icon-primary: #1e293b;
|
|
1056
|
+
--color-icon-secondary: #475569;
|
|
1057
|
+
--color-icon-tertiary: #64748b;
|
|
1058
|
+
--color-info: #1d4ed8;
|
|
1059
|
+
--color-info-border: #93c5fd;
|
|
1060
|
+
--color-info-fg: #1d4ed8;
|
|
1061
|
+
--color-info-subtle: #eff6ff;
|
|
1062
|
+
--color-input-clear-ring: color-mix(
|
|
1063
|
+
in srgb,
|
|
1064
|
+
var(--color-primary-border) 40%,
|
|
1065
|
+
transparent
|
|
1066
|
+
);
|
|
1067
|
+
--color-neutral-border: #d1d5db;
|
|
1068
|
+
--color-neutral-fg: #334155;
|
|
1069
|
+
--color-neutral-fill: #475569;
|
|
1070
|
+
--color-neutral-subtle: #f3f4f6;
|
|
1071
|
+
--color-primary: #1d4ed8;
|
|
1072
|
+
--color-primary-active: #1e3a8a;
|
|
1073
|
+
--color-primary-border: #93c5fd;
|
|
1074
|
+
--color-primary-fg: #1d4ed8;
|
|
1075
|
+
--color-primary-hover: #1e40af;
|
|
1076
|
+
--color-primary-subtle: #eff6ff;
|
|
1077
|
+
--color-success-subtle: #f0fdf4;
|
|
1078
|
+
--color-toast-tone-info: #60a5fa;
|
|
1079
|
+
--color-warning-subtle: #fffbeb;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
.dark[data-theme="high-contrast"],
|
|
1083
|
+
.dark [data-theme="high-contrast"],
|
|
1084
|
+
[data-theme="high-contrast"] .dark {
|
|
1085
|
+
--color-bg-disabled: #1e293b;
|
|
1086
|
+
--color-bg-faint: var(--color-bg-subtle);
|
|
1087
|
+
--color-bg-handle: #334155;
|
|
1088
|
+
--color-bg-muted: #334155;
|
|
1089
|
+
--color-bg-page: #020617;
|
|
1090
|
+
--color-bg-radio-disabled-indicator: #334155;
|
|
1091
|
+
--color-bg-subtle: #1e293b;
|
|
1092
|
+
--color-bg-surface: #0f172a;
|
|
1093
|
+
--color-bg-table-header: #0f172a;
|
|
1094
|
+
--color-bg-table-row-even: #020617;
|
|
1095
|
+
--color-bg-table-row-hover: #1e293b;
|
|
1096
|
+
--color-bg-table-row-plain: #020617;
|
|
1097
|
+
--color-bg-table-row-selected: #0c1b44;
|
|
1098
|
+
--color-bg-table-row-selected-hover: #172554;
|
|
1099
|
+
--color-bg-toast: #1e293b;
|
|
1100
|
+
--color-bg-tooltip: #1e293b;
|
|
1101
|
+
--color-border-default: #334155;
|
|
1102
|
+
--color-border-faint: #0f172a;
|
|
1103
|
+
--color-border-primary: #93c5fd;
|
|
1104
|
+
--color-border-subtle: #1e293b;
|
|
1105
|
+
--color-border-table-cell: #1e293b;
|
|
1106
|
+
--color-border-table-header: #1e293b;
|
|
1107
|
+
--color-border-table-row-dashed: #1e293b;
|
|
1108
|
+
--color-button-secondary-active: color-mix(
|
|
1109
|
+
in srgb,
|
|
1110
|
+
var(--color-primary-border) 30%,
|
|
1111
|
+
transparent
|
|
1112
|
+
);
|
|
1113
|
+
--color-button-secondary-hover: color-mix(
|
|
1114
|
+
in srgb,
|
|
1115
|
+
var(--color-primary-border) 20%,
|
|
1116
|
+
transparent
|
|
1117
|
+
);
|
|
1118
|
+
--color-error-muted: #334155;
|
|
1119
|
+
--color-error-subtle: #1e293b;
|
|
1120
|
+
--color-fg-accent: #93c5fd;
|
|
1121
|
+
--color-fg-default: #f3f4f6;
|
|
1122
|
+
--color-fg-disabled: #64748b;
|
|
1123
|
+
--color-fg-muted: #e5e7eb;
|
|
1124
|
+
--color-fg-subtle: #d1d5db;
|
|
1125
|
+
--color-focus-primary: #ffffff;
|
|
1126
|
+
--color-focus-primary-soft: var(--color-focus-primary);
|
|
1127
|
+
--color-icon-button-primary-active: color-mix(
|
|
1128
|
+
in srgb,
|
|
1129
|
+
var(--color-primary-subtle) 70%,
|
|
1130
|
+
transparent
|
|
1131
|
+
);
|
|
1132
|
+
--color-icon-disabled: #334155;
|
|
1133
|
+
--color-icon-primary: #d1d5db;
|
|
1134
|
+
--color-icon-secondary: #64748b;
|
|
1135
|
+
--color-icon-tertiary: #d1d5db;
|
|
1136
|
+
--color-info: #2563eb;
|
|
1137
|
+
--color-info-border: #1e40af;
|
|
1138
|
+
--color-info-fg: #60a5fa;
|
|
1139
|
+
--color-info-subtle: #0c1b44;
|
|
1140
|
+
--color-input-clear-ring: color-mix(
|
|
1141
|
+
in srgb,
|
|
1142
|
+
var(--color-primary-border) 40%,
|
|
1143
|
+
transparent
|
|
1144
|
+
);
|
|
1145
|
+
--color-neutral-border: #334155;
|
|
1146
|
+
--color-neutral-fg: #d1d5db;
|
|
1147
|
+
--color-neutral-fill: #334155;
|
|
1148
|
+
--color-neutral-subtle: #1e293b;
|
|
1149
|
+
--color-primary: #1d4ed8;
|
|
1150
|
+
--color-primary-active: #1e3a8a;
|
|
1151
|
+
--color-primary-border: #93c5fd;
|
|
1152
|
+
--color-primary-fg: #93c5fd;
|
|
1153
|
+
--color-primary-hover: #1e40af;
|
|
1154
|
+
--color-primary-subtle: #0c1b44;
|
|
1155
|
+
--color-success-subtle: #1e293b;
|
|
1156
|
+
--color-toast-tone-info: #60a5fa;
|
|
1157
|
+
--color-warning-subtle: #1e293b;
|
|
1158
|
+
}
|