react-restyle-components 0.4.47 → 0.4.48
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/lib/index.js +3 -1
- package/lib/src/core-components/index.js +1 -1
- package/lib/src/core-components/src/components/Accordion/AccordionSection/Accordion.js +15 -1
- package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionContext.js +6 -1
- package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionSection.js +39 -1
- package/lib/src/core-components/src/components/Accordion/AccordionSection/Header.js +39 -1
- package/lib/src/core-components/src/components/Accordion/AccordionSection/elements.js +94 -57
- package/lib/src/core-components/src/components/Accordion/AccordionSection/hooks/useCurrentAccordionIndex.js +13 -1
- package/lib/src/core-components/src/components/Accordion/AccordionSection/index.js +3 -1
- package/lib/src/core-components/src/components/Accordion/AccordionSection/types.js +9 -1
- package/lib/src/core-components/src/components/Accordion/Collapsible/Collapsible2.component.js +249 -1
- package/lib/src/core-components/src/components/Action/types.js +8 -1
- package/lib/src/core-components/src/components/AlertBanner/AlertBanner.js +45 -1
- package/lib/src/core-components/src/components/AlertBanner/elements.js +120 -45
- package/lib/src/core-components/src/components/AlertBanner/index.js +2 -1
- package/lib/src/core-components/src/components/AlertBanner/types.js +10 -1
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-group-by-multiple-select-multiple-fields-display/auto-complete-filter-group-by-multiple-select-multiple-fields-display.component.d.ts +3 -1
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-group-by-multiple-select-multiple-fields-display/auto-complete-filter-group-by-multiple-select-multiple-fields-display.component.js +466 -1
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-multi-fields-display-drag-drop/auto-complete-filter-multi-select-multi-fields-display-drag-drop.component.js +229 -1
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-selected-top-display/auto-complete-filter-multi-select-selected-top-display.component.js +174 -1
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +129 -2
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select/auto-complete-filter-single-select.component.js +55 -1
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +308 -2
- package/lib/src/core-components/src/components/AutoComplete/auto-complete-group-by/auto-complete-group-by.component.js +115 -1
- package/lib/src/core-components/src/components/AutoComplete/autocomplete/autocomplete.js +442 -2
- package/lib/src/core-components/src/components/AutoComplete/index.js +8 -1
- package/lib/src/core-components/src/components/Avatar/Avatar.js +148 -14
- package/lib/src/core-components/src/components/Badge/Badge.js +25 -2
- package/lib/src/core-components/src/components/Badge/InnerBadge/Inline.js +25 -1
- package/lib/src/core-components/src/components/Badge/InnerBadge/InnerBadge.js +25 -1
- package/lib/src/core-components/src/components/Badge/InnerBadge/elements.js +78 -32
- package/lib/src/core-components/src/components/Badge/InnerBadge/index.js +1 -1
- package/lib/src/core-components/src/components/Badge/index.js +1 -1
- package/lib/src/core-components/src/components/Badge/types.js +5 -1
- package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.js +83 -1
- package/lib/src/core-components/src/components/Breadcrumb/elements.js +166 -94
- package/lib/src/core-components/src/components/Breadcrumb/index.js +3 -1
- package/lib/src/core-components/src/components/Breadcrumb/types.js +3 -1
- package/lib/src/core-components/src/components/Button/button.component.js +18 -1
- package/lib/src/core-components/src/components/Button/buttonGroup/buttonGroup.component.js +4 -1
- package/lib/src/core-components/src/components/Button/index.js +2 -1
- package/lib/src/core-components/src/components/Button/types.js +1 -1
- package/lib/src/core-components/src/components/Chip/Chip.js +64 -1
- package/lib/src/core-components/src/components/Chip/elements.js +148 -48
- package/lib/src/core-components/src/components/Chip/index.js +2 -1
- package/lib/src/core-components/src/components/Chip/types.js +4 -1
- package/lib/src/core-components/src/components/Divider/Divider.js +25 -1
- package/lib/src/core-components/src/components/Divider/elements.js +68 -31
- package/lib/src/core-components/src/components/Divider/index.js +2 -1
- package/lib/src/core-components/src/components/Divider/types.js +4 -1
- package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.js +147 -1
- package/lib/src/core-components/src/components/DynamicGrid/GridContainer.js +24 -17
- package/lib/src/core-components/src/components/DynamicGrid/elements.js +162 -100
- package/lib/src/core-components/src/components/DynamicGrid/index.js +3 -1
- package/lib/src/core-components/src/components/DynamicGrid/types.js +28 -1
- package/lib/src/core-components/src/components/DynamicGrid/utils.js +193 -1
- package/lib/src/core-components/src/components/FormField/FormField.js +103 -1
- package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.js +37 -1
- package/lib/src/core-components/src/components/FormField/components/CheckboxInput.js +8 -1
- package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.js +192 -1
- package/lib/src/core-components/src/components/FormField/components/DatePickerInput.js +99 -1
- package/lib/src/core-components/src/components/FormField/components/DropdownInput.js +70 -1
- package/lib/src/core-components/src/components/FormField/components/OtpInput.js +81 -1
- package/lib/src/core-components/src/components/FormField/components/PasswordInput.js +40 -1
- package/lib/src/core-components/src/components/FormField/components/PinInput.js +75 -1
- package/lib/src/core-components/src/components/FormField/components/RadioInput.js +54 -1
- package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.js +94 -1
- package/lib/src/core-components/src/components/FormField/components/ToggleInput.js +36 -1
- package/lib/src/core-components/src/components/FormField/components/index.js +11 -1
- package/lib/src/core-components/src/components/FormField/css-properties.js +161 -1
- package/lib/src/core-components/src/components/FormField/index.js +2 -1
- package/lib/src/core-components/src/components/Icon/Icon.js +159 -1
- package/lib/src/core-components/src/components/Icon/index.js +2 -1
- package/lib/src/core-components/src/components/Icon/types.js +9 -1
- package/lib/src/core-components/src/components/Loader/loader.component.js +215 -2
- package/lib/src/core-components/src/components/Masonry/Masonry.js +73 -1
- package/lib/src/core-components/src/components/Masonry/elements.js +46 -29
- package/lib/src/core-components/src/components/Masonry/hooks.js +100 -1
- package/lib/src/core-components/src/components/Masonry/index.js +3 -1
- package/lib/src/core-components/src/components/Masonry/types.js +1 -1
- package/lib/src/core-components/src/components/Modal/BasicModal/modal.component.js +116 -1
- package/lib/src/core-components/src/components/Modal/index.js +2 -1
- package/lib/src/core-components/src/components/Modal/modal-confirm/modal-confirm.component.js +147 -1
- package/lib/src/core-components/src/components/Picker/color-picker/color-picker.component.js +12 -1
- package/lib/src/core-components/src/components/Picker/color-picker-modal/color-picker-modal.component.js +40 -1
- package/lib/src/core-components/src/components/Picker/index.js +2 -1
- package/lib/src/core-components/src/components/Selection/index.js +4 -1
- package/lib/src/core-components/src/components/Selection/multi-select/multi-select.component.js +49 -1
- package/lib/src/core-components/src/components/Selection/multi-select-with-field/multi-select-with-field.component.js +58 -1
- package/lib/src/core-components/src/components/Selection/multi-selection-dropdown/multi-selection-dropdown.component.js +43 -1
- package/lib/src/core-components/src/components/Selection/single-select/single-select.component.js +87 -1
- package/lib/src/core-components/src/components/Skeleton/Skeleton.js +51 -1
- package/lib/src/core-components/src/components/Skeleton/elements.js +143 -54
- package/lib/src/core-components/src/components/Skeleton/index.js +2 -1
- package/lib/src/core-components/src/components/Skeleton/types.js +4 -1
- package/lib/src/core-components/src/components/SpeedDial/SpeedDial.js +128 -1
- package/lib/src/core-components/src/components/SpeedDial/elements.js +132 -62
- package/lib/src/core-components/src/components/SpeedDial/index.js +2 -1
- package/lib/src/core-components/src/components/SpeedDial/types.js +3 -1
- package/lib/src/core-components/src/components/Stepper2/stepper.component.js +139 -1
- package/lib/src/core-components/src/components/Switch/Switch.js +26 -1
- package/lib/src/core-components/src/components/Switch/elements.js +103 -34
- package/lib/src/core-components/src/components/Switch/index.js +2 -1
- package/lib/src/core-components/src/components/Switch/types.js +3 -1
- package/lib/src/core-components/src/components/Table/Table.js +1489 -1
- package/lib/src/core-components/src/components/Table/columnReorder.js +332 -36
- package/lib/src/core-components/src/components/Table/columnResize.js +284 -21
- package/lib/src/core-components/src/components/Table/elements.js +277 -173
- package/lib/src/core-components/src/components/Table/filters.js +555 -30
- package/lib/src/core-components/src/components/Table/hooks.js +536 -2
- package/lib/src/core-components/src/components/Table/index.js +6 -1
- package/lib/src/core-components/src/components/Table/types.js +1 -1
- package/lib/src/core-components/src/components/Tabs/tabs.component.js +22 -1
- package/lib/src/core-components/src/components/Tags1/Tags.component.js +118 -1
- package/lib/src/core-components/src/components/Tags1/types.js +20 -1
- package/lib/src/core-components/src/components/Timer1/timer.component.js +76 -1
- package/lib/src/core-components/src/components/Toast/Toast.js +50 -1
- package/lib/src/core-components/src/components/Toast/elements.js +122 -41
- package/lib/src/core-components/src/components/Toast/index.js +2 -1
- package/lib/src/core-components/src/components/Toast/types.js +9 -1
- package/lib/src/core-components/src/components/Tooltip/Tooltip.js +200 -1
- package/lib/src/core-components/src/components/Tooltip/elements.js +117 -55
- package/lib/src/core-components/src/components/Tooltip/index.js +2 -1
- package/lib/src/core-components/src/components/Tooltip/types.js +17 -1
- package/lib/src/core-components/src/components/Tooltip/utils.js +140 -1
- package/lib/src/core-components/src/components/TreeSelect/TreeSelect.js +303 -1
- package/lib/src/core-components/src/components/TreeSelect/elements.js +216 -117
- package/lib/src/core-components/src/components/TreeSelect/hooks.js +252 -1
- package/lib/src/core-components/src/components/TreeSelect/index.js +3 -1
- package/lib/src/core-components/src/components/TreeSelect/types.js +1 -1
- package/lib/src/core-components/src/components/ag-grid/AgGrid.js +1057 -1
- package/lib/src/core-components/src/components/ag-grid/elements.js +790 -396
- package/lib/src/core-components/src/components/ag-grid/hooks.js +1220 -4
- package/lib/src/core-components/src/components/ag-grid/index.js +15 -1
- package/lib/src/core-components/src/components/ag-grid/types.js +6 -1
- package/lib/src/core-components/src/components/index.js +31 -1
- package/lib/src/core-components/src/components/pdf/pdf-images.components.js +7 -1
- package/lib/src/core-components/src/components/pdf/pdf-table.components.js +48 -5
- package/lib/src/core-components/src/components/pdf/pdf-typography.components.js +70 -1
- package/lib/src/core-components/src/components/pdf/pdf-wrapped-view.components.js +50 -1
- package/lib/src/core-components/src/core-components/Avatar.js +33 -4
- package/lib/src/core-components/src/core-components/CoreButton/CoreButton.js +10 -1
- package/lib/src/core-components/src/core-components/CoreButton/elements.js +176 -67
- package/lib/src/core-components/src/core-components/CoreButton/index.js +3 -1
- package/lib/src/core-components/src/core-components/CoreButton/types.js +6 -1
- package/lib/src/core-components/src/core-components/CoreButton/utils.js +12 -1
- package/lib/src/core-components/src/core-components/Divider/Divider.js +19 -4
- package/lib/src/core-components/src/core-components/Divider/index.js +1 -1
- package/lib/src/core-components/src/core-components/SelectionCardStrip/index.js +1 -1
- package/lib/src/core-components/src/core-components/SelectionCardStrip/selectionCardStrip.js +33 -10
- package/lib/src/core-components/src/core-components/StateLayer.js +5 -3
- package/lib/src/core-components/src/core-components/ToggleCore/elements.js +50 -25
- package/lib/src/core-components/src/core-components/ToggleCore/index.js +2 -1
- package/lib/src/core-components/src/core-components/ToggleCore/toggleCore.js +14 -1
- package/lib/src/core-components/src/core-components/atoms/Input/Input.js +22 -1
- package/lib/src/core-components/src/core-components/atoms/Label/Label.js +21 -1
- package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.js +19 -1
- package/lib/src/core-components/src/core-components/index.js +3 -1
- package/lib/src/core-components/src/helpers/constants.js +11 -1
- package/lib/src/core-components/src/hooks/index.js +1 -1
- package/lib/src/core-components/src/hooks/outside.hook.js +28 -1
- package/lib/src/core-components/src/index.js +12 -1
- package/lib/src/core-components/src/tc.global.css +1 -0
- package/lib/src/core-components/src/tc.module.css +1 -1
- package/lib/src/core-components/src/utils/abstracts/breakpoints/index.js +28 -1
- package/lib/src/core-components/src/utils/abstracts/colors/index.js +49 -1
- package/lib/src/core-components/src/utils/abstracts/index.js +5 -1
- package/lib/src/core-components/src/utils/abstracts/space/index.js +26 -1
- package/lib/src/core-components/src/utils/abstracts/theme/ThemeBoundary.js +8 -1
- package/lib/src/core-components/src/utils/abstracts/theme/default-themes.js +30 -1
- package/lib/src/core-components/src/utils/abstracts/theme/index.js +3 -1
- package/lib/src/core-components/src/utils/abstracts/theme/theme.js +30 -1
- package/lib/src/core-components/src/utils/abstracts/theme/types.js +1 -1
- package/lib/src/core-components/src/utils/abstracts/theme/useTheme.js +17 -1
- package/lib/src/core-components/src/utils/abstracts/typography/index.js +25 -1
- package/lib/src/core-components/src/utils/context/DefaultsProvider.js +8 -1
- package/lib/src/core-components/src/utils/context/InternalProvider.js +24 -1
- package/lib/src/core-components/src/utils/context/index.js +2 -1
- package/lib/src/core-components/src/utils/designTokens.js +128 -1
- package/lib/src/core-components/src/utils/helpers/attachSubComponents.js +23 -1
- package/lib/src/core-components/src/utils/helpers/flattenChildren.js +11 -1
- package/lib/src/core-components/src/utils/helpers/getChildByType.js +3 -1
- package/lib/src/core-components/src/utils/helpers/index.js +5 -1
- package/lib/src/core-components/src/utils/helpers/isComponentType.js +16 -1
- package/lib/src/core-components/src/utils/helpers/separateChildrenByType.js +12 -1
- package/lib/src/core-components/src/utils/hooks/index.js +18 -1
- package/lib/src/core-components/src/utils/hooks/useClickOutside.js +18 -1
- package/lib/src/core-components/src/utils/hooks/useCombinedRefs.js +17 -1
- package/lib/src/core-components/src/utils/hooks/useDebouncedCallback.js +12 -1
- package/lib/src/core-components/src/utils/hooks/useDebouncedValue.js +20 -1
- package/lib/src/core-components/src/utils/hooks/useDeprecation.js +40 -1
- package/lib/src/core-components/src/utils/hooks/useDeviceDetect.js +10 -1
- package/lib/src/core-components/src/utils/hooks/useDeviceForm.js +24 -1
- package/lib/src/core-components/src/utils/hooks/useDisableBodyScroll.js +16 -1
- package/lib/src/core-components/src/utils/hooks/useHoverState.js +36 -1
- package/lib/src/core-components/src/utils/hooks/useId.js +7 -1
- package/lib/src/core-components/src/utils/hooks/useIsBrowser.js +11 -1
- package/lib/src/core-components/src/utils/hooks/useMediaQuery.js +16 -1
- package/lib/src/core-components/src/utils/hooks/useOverflow.js +22 -1
- package/lib/src/core-components/src/utils/hooks/useSafeLayoutEffect.js +5 -1
- package/lib/src/core-components/src/utils/hooks/useScrollingUp.js +18 -1
- package/lib/src/core-components/src/utils/hooks/useTrapFocus.js +30 -1
- package/lib/src/core-components/src/utils/hooks/useWindowDimensions.js +23 -1
- package/lib/src/core-components/src/utils/index.js +9 -1
- package/lib/src/core-components/src/utils/stories/Wrappers.js +23 -8
- package/lib/src/core-components/src/utils/stories/cleanProps.js +5 -1
- package/lib/src/core-components/src/utils/stories/index.js +4 -1
- package/lib/src/core-components/src/utils/stories/sleep.js +4 -1
- package/lib/src/core-components/src/utils/stories/view-ports.js +50 -1
- package/lib/src/core-components/src/utils/styling/calcWidthOfColumns.js +5 -1
- package/lib/src/core-components/src/utils/styling/createGridContainer.js +12 -6
- package/lib/src/core-components/src/utils/styling/createTransition.js +7 -2
- package/lib/src/core-components/src/utils/styling/forwardProps.js +10 -1
- package/lib/src/core-components/src/utils/styling/index.js +5 -1
- package/lib/src/core-components/src/utils/styling/pxToRem.js +6 -1
- package/lib/src/core-components/src/utils/testing/getComputedStyle.js +3 -1
- package/lib/src/core-components/src/utils/testing/index.js +1 -1
- package/lib/src/core-components/src/utils/utility.util.js +14 -1
- package/lib/src/core-components/tailwind.config.js +233 -1
- package/lib/src/core-hooks/index.js +3 -1
- package/lib/src/core-hooks/src/useClickOutside/useClickOutside.hook.js +46 -1
- package/lib/src/core-hooks/src/useDebounce/useDebounce.hook.js +30 -1
- package/lib/src/core-hooks/src/usePreventEKey/usePreventEKey.hook.js +8 -1
- package/lib/src/core-utils/index.js +7 -1
- package/lib/src/core-utils/src/calculation/calculation.util.js +89 -1
- package/lib/src/core-utils/src/colors/color.util.js +15 -1
- package/lib/src/core-utils/src/convert/numberToWords/numToWords.util.js +145 -1
- package/lib/src/core-utils/src/convert/typography/camelCaseToTitleCase.util.js +5 -1
- package/lib/src/core-utils/src/form-helper/form-helper.util.js +82 -1
- package/lib/src/core-utils/src/index.js +7 -1
- package/lib/src/core-utils/src/utility/utility.util.js +12 -1
- package/lib/src/core-utils/src/uuid/uuid.util.js +8 -1
- package/package.json +1 -1
|
@@ -1,19 +1,174 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* AG Grid Styled Components
|
|
3
|
+
* Beautiful, responsive styled components for the AG Grid-like table
|
|
4
|
+
*/
|
|
5
|
+
import { styled, css, keyframes } from 'styled-components';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Theme Definitions
|
|
8
|
+
// ============================================================================
|
|
9
|
+
const themes = {
|
|
10
|
+
alpine: {
|
|
11
|
+
backgroundColor: '#ffffff',
|
|
12
|
+
headerBackgroundColor: '#f8f8f8',
|
|
13
|
+
oddRowBackgroundColor: '#fcfcfc',
|
|
14
|
+
borderColor: '#dde2eb',
|
|
15
|
+
selectedRowBackgroundColor: '#b7e4ff',
|
|
16
|
+
hoverRowBackgroundColor: '#ecf0f1',
|
|
17
|
+
textColor: '#181d1f',
|
|
18
|
+
headerTextColor: '#181d1f',
|
|
19
|
+
accentColor: '#2196f3',
|
|
20
|
+
cellPadding: '0 12px',
|
|
21
|
+
headerPadding: '0 12px',
|
|
22
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
23
|
+
fontSize: '13px',
|
|
24
|
+
headerFontSize: '13px',
|
|
25
|
+
headerFontWeight: '600',
|
|
26
|
+
borderRadius: '0',
|
|
27
|
+
cellBorderWidth: '1px',
|
|
28
|
+
},
|
|
29
|
+
'alpine-dark': {
|
|
30
|
+
backgroundColor: '#181d1f',
|
|
31
|
+
headerBackgroundColor: '#222628',
|
|
32
|
+
oddRowBackgroundColor: '#1f2426',
|
|
33
|
+
borderColor: '#3d4749',
|
|
34
|
+
selectedRowBackgroundColor: '#005880',
|
|
35
|
+
hoverRowBackgroundColor: '#2d3436',
|
|
36
|
+
textColor: '#f0f0f0',
|
|
37
|
+
headerTextColor: '#f0f0f0',
|
|
38
|
+
accentColor: '#2196f3',
|
|
39
|
+
cellPadding: '0 12px',
|
|
40
|
+
headerPadding: '0 12px',
|
|
41
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
42
|
+
fontSize: '13px',
|
|
43
|
+
headerFontSize: '13px',
|
|
44
|
+
headerFontWeight: '600',
|
|
45
|
+
borderRadius: '0',
|
|
46
|
+
cellBorderWidth: '1px',
|
|
47
|
+
},
|
|
48
|
+
balham: {
|
|
49
|
+
backgroundColor: '#ffffff',
|
|
50
|
+
headerBackgroundColor: '#f5f7f7',
|
|
51
|
+
oddRowBackgroundColor: '#fcfdfd',
|
|
52
|
+
borderColor: '#bdc3c7',
|
|
53
|
+
selectedRowBackgroundColor: '#b7e4ff',
|
|
54
|
+
hoverRowBackgroundColor: '#ecf0f1',
|
|
55
|
+
textColor: '#000000',
|
|
56
|
+
headerTextColor: '#000000',
|
|
57
|
+
accentColor: '#0091ea',
|
|
58
|
+
cellPadding: '0 4px',
|
|
59
|
+
headerPadding: '0 4px',
|
|
60
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
61
|
+
fontSize: '12px',
|
|
62
|
+
headerFontSize: '12px',
|
|
63
|
+
headerFontWeight: '600',
|
|
64
|
+
borderRadius: '0',
|
|
65
|
+
cellBorderWidth: '1px',
|
|
66
|
+
},
|
|
67
|
+
'balham-dark': {
|
|
68
|
+
backgroundColor: '#2d3436',
|
|
69
|
+
headerBackgroundColor: '#1e272c',
|
|
70
|
+
oddRowBackgroundColor: '#32393c',
|
|
71
|
+
borderColor: '#424a4d',
|
|
72
|
+
selectedRowBackgroundColor: '#005880',
|
|
73
|
+
hoverRowBackgroundColor: '#3d4749',
|
|
74
|
+
textColor: '#f0f0f0',
|
|
75
|
+
headerTextColor: '#f0f0f0',
|
|
76
|
+
accentColor: '#0091ea',
|
|
77
|
+
cellPadding: '0 4px',
|
|
78
|
+
headerPadding: '0 4px',
|
|
79
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
80
|
+
fontSize: '12px',
|
|
81
|
+
headerFontSize: '12px',
|
|
82
|
+
headerFontWeight: '600',
|
|
83
|
+
borderRadius: '0',
|
|
84
|
+
cellBorderWidth: '1px',
|
|
85
|
+
},
|
|
86
|
+
material: {
|
|
87
|
+
backgroundColor: '#ffffff',
|
|
88
|
+
headerBackgroundColor: '#fafafa',
|
|
89
|
+
oddRowBackgroundColor: '#ffffff',
|
|
90
|
+
borderColor: '#e0e0e0',
|
|
91
|
+
selectedRowBackgroundColor: '#e3f2fd',
|
|
92
|
+
hoverRowBackgroundColor: '#f5f5f5',
|
|
93
|
+
textColor: 'rgba(0, 0, 0, 0.87)',
|
|
94
|
+
headerTextColor: 'rgba(0, 0, 0, 0.54)',
|
|
95
|
+
accentColor: '#3f51b5',
|
|
96
|
+
cellPadding: '0 24px 0 24px',
|
|
97
|
+
headerPadding: '0 24px 0 24px',
|
|
98
|
+
fontFamily: 'Roboto, "Helvetica Neue", sans-serif',
|
|
99
|
+
fontSize: '14px',
|
|
100
|
+
headerFontSize: '12px',
|
|
101
|
+
headerFontWeight: '500',
|
|
102
|
+
borderRadius: '0',
|
|
103
|
+
cellBorderWidth: '1px',
|
|
104
|
+
},
|
|
105
|
+
quartz: {
|
|
106
|
+
backgroundColor: '#ffffff',
|
|
107
|
+
headerBackgroundColor: '#ffffff',
|
|
108
|
+
oddRowBackgroundColor: '#fafafa',
|
|
109
|
+
borderColor: '#e2e8f0',
|
|
110
|
+
selectedRowBackgroundColor: '#dbeafe',
|
|
111
|
+
hoverRowBackgroundColor: '#f1f5f9',
|
|
112
|
+
textColor: '#1e293b',
|
|
113
|
+
headerTextColor: '#475569',
|
|
114
|
+
accentColor: '#3b82f6',
|
|
115
|
+
cellPadding: '0 16px',
|
|
116
|
+
headerPadding: '0 16px',
|
|
117
|
+
fontFamily: 'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
118
|
+
fontSize: '14px',
|
|
119
|
+
headerFontSize: '12px',
|
|
120
|
+
headerFontWeight: '600',
|
|
121
|
+
borderRadius: '8px',
|
|
122
|
+
cellBorderWidth: '1px',
|
|
123
|
+
},
|
|
124
|
+
'quartz-dark': {
|
|
125
|
+
backgroundColor: '#0f172a',
|
|
126
|
+
headerBackgroundColor: '#1e293b',
|
|
127
|
+
oddRowBackgroundColor: '#1e293b',
|
|
128
|
+
borderColor: '#334155',
|
|
129
|
+
selectedRowBackgroundColor: '#1e3a5f',
|
|
130
|
+
hoverRowBackgroundColor: '#334155',
|
|
131
|
+
textColor: '#e2e8f0',
|
|
132
|
+
headerTextColor: '#94a3b8',
|
|
133
|
+
accentColor: '#3b82f6',
|
|
134
|
+
cellPadding: '0 16px',
|
|
135
|
+
headerPadding: '0 16px',
|
|
136
|
+
fontFamily: 'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
137
|
+
fontSize: '14px',
|
|
138
|
+
headerFontSize: '12px',
|
|
139
|
+
headerFontWeight: '600',
|
|
140
|
+
borderRadius: '8px',
|
|
141
|
+
cellBorderWidth: '1px',
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
export const getTheme = (variant, custom) => ({
|
|
145
|
+
...themes[variant],
|
|
146
|
+
...custom,
|
|
147
|
+
});
|
|
148
|
+
// ============================================================================
|
|
149
|
+
// Animations
|
|
150
|
+
// ============================================================================
|
|
151
|
+
const fadeIn = keyframes `
|
|
2
152
|
from { opacity: 0; }
|
|
3
153
|
to { opacity: 1; }
|
|
4
|
-
|
|
154
|
+
`;
|
|
155
|
+
const slideInRight = keyframes `
|
|
5
156
|
from { transform: translateX(10px); opacity: 0; }
|
|
6
157
|
to { transform: translateX(0); opacity: 1; }
|
|
7
|
-
|
|
158
|
+
`;
|
|
159
|
+
const pulse = keyframes `
|
|
8
160
|
0%, 100% { opacity: 1; }
|
|
9
161
|
50% { opacity: 0.5; }
|
|
10
|
-
|
|
162
|
+
`;
|
|
163
|
+
const shimmer = keyframes `
|
|
11
164
|
0% { background-position: -200% 0; }
|
|
12
165
|
100% { background-position: 200% 0; }
|
|
13
|
-
|
|
166
|
+
`;
|
|
167
|
+
const spin = keyframes `
|
|
14
168
|
from { transform: rotate(0deg); }
|
|
15
169
|
to { transform: rotate(360deg); }
|
|
16
|
-
|
|
170
|
+
`;
|
|
171
|
+
const rowEnter = keyframes `
|
|
17
172
|
from {
|
|
18
173
|
opacity: 0;
|
|
19
174
|
transform: translateY(-4px);
|
|
@@ -22,20 +177,25 @@
|
|
|
22
177
|
opacity: 1;
|
|
23
178
|
transform: translateY(0);
|
|
24
179
|
}
|
|
25
|
-
|
|
180
|
+
`;
|
|
181
|
+
const cellFlash = keyframes `
|
|
26
182
|
0% { background-color: rgba(76, 175, 80, 0.4); }
|
|
27
183
|
100% { background-color: transparent; }
|
|
28
|
-
`;
|
|
184
|
+
`;
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// Grid Container
|
|
187
|
+
// ============================================================================
|
|
188
|
+
export const GridRoot = styled.div `
|
|
29
189
|
display: flex;
|
|
30
190
|
flex-direction: column;
|
|
31
191
|
width: 100%;
|
|
32
192
|
height: 100%;
|
|
33
|
-
background-color: ${({$theme
|
|
34
|
-
font-family: ${({$theme
|
|
35
|
-
font-size: ${({$theme
|
|
36
|
-
color: ${({$theme
|
|
37
|
-
border: 1px solid ${({$theme
|
|
38
|
-
border-radius: ${({$theme
|
|
193
|
+
background-color: ${({ $theme }) => $theme.backgroundColor};
|
|
194
|
+
font-family: ${({ $theme }) => $theme.fontFamily};
|
|
195
|
+
font-size: ${({ $theme }) => $theme.fontSize};
|
|
196
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
197
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
198
|
+
border-radius: ${({ $theme }) => $theme.borderRadius};
|
|
39
199
|
overflow: hidden;
|
|
40
200
|
position: relative;
|
|
41
201
|
|
|
@@ -44,27 +204,33 @@
|
|
|
44
204
|
}
|
|
45
205
|
|
|
46
206
|
/* Responsive styles */
|
|
47
|
-
${({$responsive
|
|
207
|
+
${({ $responsive }) => $responsive &&
|
|
208
|
+
css `
|
|
48
209
|
@media (max-width: 768px) {
|
|
49
210
|
border-radius: 0;
|
|
50
211
|
border-left: none;
|
|
51
212
|
border-right: none;
|
|
52
213
|
}
|
|
53
214
|
`}
|
|
54
|
-
|
|
215
|
+
`;
|
|
216
|
+
export const GridWrapper = styled.div `
|
|
55
217
|
display: flex;
|
|
56
218
|
flex-direction: column;
|
|
57
219
|
flex: 1;
|
|
58
220
|
min-height: 0;
|
|
59
221
|
overflow: hidden;
|
|
60
|
-
|
|
222
|
+
`;
|
|
223
|
+
// ============================================================================
|
|
224
|
+
// Toolbar / Header Area
|
|
225
|
+
// ============================================================================
|
|
226
|
+
export const GridToolbar = styled.div `
|
|
61
227
|
display: flex;
|
|
62
228
|
align-items: center;
|
|
63
229
|
justify-content: space-between;
|
|
64
230
|
gap: 12px;
|
|
65
231
|
padding: 8px 12px;
|
|
66
|
-
background: ${({$theme
|
|
67
|
-
border-bottom: 1px solid ${({$theme
|
|
232
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
233
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
68
234
|
flex-wrap: wrap;
|
|
69
235
|
|
|
70
236
|
@media (max-width: 640px) {
|
|
@@ -72,12 +238,14 @@
|
|
|
72
238
|
align-items: stretch;
|
|
73
239
|
gap: 8px;
|
|
74
240
|
}
|
|
75
|
-
|
|
241
|
+
`;
|
|
242
|
+
export const ToolbarGroup = styled.div `
|
|
76
243
|
display: flex;
|
|
77
244
|
align-items: center;
|
|
78
245
|
gap: 8px;
|
|
79
246
|
flex-wrap: wrap;
|
|
80
|
-
|
|
247
|
+
`;
|
|
248
|
+
export const ToolbarButton = styled.button `
|
|
81
249
|
display: inline-flex;
|
|
82
250
|
align-items: center;
|
|
83
251
|
justify-content: center;
|
|
@@ -86,16 +254,17 @@
|
|
|
86
254
|
font-size: 13px;
|
|
87
255
|
font-weight: 500;
|
|
88
256
|
border-radius: 4px;
|
|
89
|
-
border: 1px solid ${({$theme
|
|
90
|
-
background: ${({$theme
|
|
91
|
-
color: ${({$theme
|
|
257
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
258
|
+
background: ${({ $theme, $active }) => ($active ? $theme.accentColor : $theme.backgroundColor)};
|
|
259
|
+
color: ${({ $theme, $active }) => ($active ? '#ffffff' : $theme.textColor)};
|
|
92
260
|
cursor: pointer;
|
|
93
261
|
transition: all 0.15s ease;
|
|
94
262
|
white-space: nowrap;
|
|
95
263
|
|
|
96
|
-
${({$variant
|
|
97
|
-
|
|
98
|
-
|
|
264
|
+
${({ $variant, $theme }) => $variant === 'primary' &&
|
|
265
|
+
css `
|
|
266
|
+
background: ${$theme.accentColor};
|
|
267
|
+
border-color: ${$theme.accentColor};
|
|
99
268
|
color: #ffffff;
|
|
100
269
|
|
|
101
270
|
&:hover {
|
|
@@ -103,7 +272,8 @@
|
|
|
103
272
|
}
|
|
104
273
|
`}
|
|
105
274
|
|
|
106
|
-
${({$variant
|
|
275
|
+
${({ $variant }) => $variant === 'danger' &&
|
|
276
|
+
css `
|
|
107
277
|
background: #ef4444;
|
|
108
278
|
border-color: #ef4444;
|
|
109
279
|
color: #ffffff;
|
|
@@ -115,7 +285,7 @@
|
|
|
115
285
|
`}
|
|
116
286
|
|
|
117
287
|
&:hover:not(:disabled) {
|
|
118
|
-
background: ${({$theme
|
|
288
|
+
background: ${({ $theme, $active }) => ($active ? $theme.accentColor : $theme.hoverRowBackgroundColor)};
|
|
119
289
|
}
|
|
120
290
|
|
|
121
291
|
&:disabled {
|
|
@@ -127,7 +297,8 @@
|
|
|
127
297
|
width: 16px;
|
|
128
298
|
height: 16px;
|
|
129
299
|
}
|
|
130
|
-
|
|
300
|
+
`;
|
|
301
|
+
export const QuickFilter = styled.div `
|
|
131
302
|
position: relative;
|
|
132
303
|
display: flex;
|
|
133
304
|
align-items: center;
|
|
@@ -136,21 +307,21 @@
|
|
|
136
307
|
width: 220px;
|
|
137
308
|
padding: 6px 12px 6px 32px;
|
|
138
309
|
font-size: 13px;
|
|
139
|
-
border: 1px solid ${({$theme
|
|
310
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
140
311
|
border-radius: 4px;
|
|
141
|
-
background: ${({$theme
|
|
142
|
-
color: ${({$theme
|
|
312
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
313
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
143
314
|
outline: none;
|
|
144
315
|
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
145
316
|
|
|
146
317
|
&::placeholder {
|
|
147
|
-
color: ${({$theme
|
|
318
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
148
319
|
opacity: 0.6;
|
|
149
320
|
}
|
|
150
321
|
|
|
151
322
|
&:focus {
|
|
152
|
-
border-color: ${({$theme
|
|
153
|
-
box-shadow: 0 0 0 3px ${({$theme
|
|
323
|
+
border-color: ${({ $theme }) => $theme.accentColor};
|
|
324
|
+
box-shadow: 0 0 0 3px ${({ $theme }) => $theme.accentColor}20;
|
|
154
325
|
}
|
|
155
326
|
|
|
156
327
|
@media (max-width: 640px) {
|
|
@@ -163,41 +334,54 @@
|
|
|
163
334
|
left: 10px;
|
|
164
335
|
width: 14px;
|
|
165
336
|
height: 14px;
|
|
166
|
-
color: ${({$theme
|
|
337
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
167
338
|
opacity: 0.6;
|
|
168
339
|
}
|
|
169
|
-
|
|
340
|
+
`;
|
|
341
|
+
// ============================================================================
|
|
342
|
+
// Table Container
|
|
343
|
+
// ============================================================================
|
|
344
|
+
export const TableContainer = styled.div `
|
|
170
345
|
flex: 1;
|
|
171
346
|
overflow: auto;
|
|
172
347
|
position: relative;
|
|
173
348
|
min-height: 0;
|
|
174
349
|
|
|
175
|
-
${({$maxHeight
|
|
176
|
-
|
|
350
|
+
${({ $maxHeight }) => $maxHeight &&
|
|
351
|
+
css `
|
|
352
|
+
max-height: ${typeof $maxHeight === 'number' ? `${$maxHeight}px` : $maxHeight};
|
|
177
353
|
`}
|
|
178
|
-
|
|
354
|
+
`;
|
|
355
|
+
export const StyledTable = styled.table `
|
|
179
356
|
width: 100%;
|
|
180
357
|
border-collapse: collapse;
|
|
181
|
-
table-layout: ${({$fixedLayout
|
|
182
|
-
color: ${({$theme
|
|
183
|
-
|
|
184
|
-
|
|
358
|
+
table-layout: ${({ $fixedLayout }) => ($fixedLayout ? 'fixed' : 'auto')};
|
|
359
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
360
|
+
`;
|
|
361
|
+
// ============================================================================
|
|
362
|
+
// Header
|
|
363
|
+
// ============================================================================
|
|
364
|
+
export const TableHead = styled.thead `
|
|
365
|
+
${({ $sticky, $theme }) => $sticky &&
|
|
366
|
+
css `
|
|
185
367
|
position: sticky;
|
|
186
368
|
top: 0;
|
|
187
369
|
z-index: 10;
|
|
188
|
-
background: ${
|
|
370
|
+
background: ${$theme.headerBackgroundColor};
|
|
189
371
|
`}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
372
|
+
`;
|
|
373
|
+
export const HeaderRow = styled.tr `
|
|
374
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
375
|
+
height: ${({ $height }) => ($height ? `${$height}px` : '42px')};
|
|
376
|
+
`;
|
|
377
|
+
export const HeaderCell = styled.th `
|
|
378
|
+
padding: ${({ $theme }) => $theme.headerPadding};
|
|
379
|
+
text-align: ${({ $align }) => $align || 'left'};
|
|
380
|
+
font-size: ${({ $theme }) => $theme.headerFontSize};
|
|
381
|
+
font-weight: ${({ $theme }) => $theme.headerFontWeight};
|
|
382
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
383
|
+
border-bottom: 2px solid ${({ $theme }) => $theme.borderColor};
|
|
384
|
+
border-right: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
201
385
|
white-space: nowrap;
|
|
202
386
|
overflow: hidden;
|
|
203
387
|
text-overflow: ellipsis;
|
|
@@ -207,78 +391,86 @@
|
|
|
207
391
|
text-transform: uppercase;
|
|
208
392
|
letter-spacing: 0.5px;
|
|
209
393
|
|
|
210
|
-
${({$width
|
|
211
|
-
${({$minWidth
|
|
212
|
-
${({$maxWidth
|
|
394
|
+
${({ $width }) => $width && css `width: ${$width}px;`}
|
|
395
|
+
${({ $minWidth }) => $minWidth && css `min-width: ${$minWidth}px;`}
|
|
396
|
+
${({ $maxWidth }) => $maxWidth && css `max-width: ${$maxWidth}px;`}
|
|
213
397
|
|
|
214
|
-
${({$sortable
|
|
398
|
+
${({ $sortable, $theme }) => $sortable &&
|
|
399
|
+
css `
|
|
215
400
|
cursor: pointer;
|
|
216
401
|
|
|
217
402
|
&:hover {
|
|
218
|
-
background: ${
|
|
403
|
+
background: ${$theme.hoverRowBackgroundColor};
|
|
219
404
|
}
|
|
220
405
|
`}
|
|
221
406
|
|
|
222
|
-
${({$sorted
|
|
223
|
-
|
|
407
|
+
${({ $sorted, $theme }) => $sorted &&
|
|
408
|
+
css `
|
|
409
|
+
background: ${$theme.selectedRowBackgroundColor}40;
|
|
224
410
|
`}
|
|
225
411
|
|
|
226
|
-
${({$pinned
|
|
412
|
+
${({ $pinned, $theme }) => $pinned &&
|
|
413
|
+
css `
|
|
227
414
|
position: sticky;
|
|
228
|
-
${
|
|
415
|
+
${$pinned === 'left' ? 'left: 0;' : 'right: 0;'}
|
|
229
416
|
z-index: 11;
|
|
230
|
-
background: ${
|
|
231
|
-
box-shadow: ${
|
|
417
|
+
background: ${$theme.headerBackgroundColor};
|
|
418
|
+
box-shadow: ${$pinned === 'left' ? '2px 0 4px rgba(0,0,0,0.1)' : '-2px 0 4px rgba(0,0,0,0.1)'};
|
|
232
419
|
`}
|
|
233
420
|
|
|
234
421
|
&:last-child {
|
|
235
422
|
border-right: none;
|
|
236
423
|
}
|
|
237
|
-
|
|
424
|
+
`;
|
|
425
|
+
export const HeaderCellContent = styled.div `
|
|
238
426
|
display: flex;
|
|
239
427
|
align-items: center;
|
|
240
428
|
gap: 6px;
|
|
241
429
|
min-height: 24px;
|
|
242
|
-
|
|
430
|
+
`;
|
|
431
|
+
export const HeaderText = styled.span `
|
|
243
432
|
flex: 1;
|
|
244
433
|
overflow: hidden;
|
|
245
434
|
text-overflow: ellipsis;
|
|
246
|
-
|
|
435
|
+
`;
|
|
436
|
+
export const SortIndicator = styled.span `
|
|
247
437
|
display: flex;
|
|
248
438
|
align-items: center;
|
|
249
439
|
justify-content: center;
|
|
250
440
|
width: 18px;
|
|
251
441
|
height: 18px;
|
|
252
|
-
opacity: ${({$active
|
|
442
|
+
opacity: ${({ $active }) => ($active ? 1 : 0.3)};
|
|
253
443
|
transition: opacity 0.15s ease, transform 0.2s ease;
|
|
254
444
|
|
|
255
445
|
svg {
|
|
256
446
|
width: 14px;
|
|
257
447
|
height: 14px;
|
|
258
448
|
transition: transform 0.2s ease;
|
|
259
|
-
transform: ${({$direction
|
|
449
|
+
transform: ${({ $direction }) => ($direction === 'desc' ? 'rotate(180deg)' : 'rotate(0deg)')};
|
|
260
450
|
}
|
|
261
|
-
|
|
451
|
+
`;
|
|
452
|
+
export const FilterIndicator = styled.span `
|
|
262
453
|
display: flex;
|
|
263
454
|
align-items: center;
|
|
264
455
|
justify-content: center;
|
|
265
456
|
width: 18px;
|
|
266
457
|
height: 18px;
|
|
267
458
|
border-radius: 3px;
|
|
268
|
-
color: ${({$active
|
|
269
|
-
opacity: ${({$active
|
|
459
|
+
color: ${({ $active, $theme }) => ($active ? $theme.accentColor : $theme.headerTextColor)};
|
|
460
|
+
opacity: ${({ $active }) => ($active ? 1 : 0.4)};
|
|
270
461
|
transition: all 0.15s ease;
|
|
271
462
|
|
|
272
463
|
&:hover {
|
|
273
464
|
opacity: 1;
|
|
274
|
-
background: ${({$theme
|
|
465
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
275
466
|
}
|
|
276
467
|
|
|
277
468
|
svg {
|
|
278
469
|
width: 12px;
|
|
279
470
|
height: 12px;
|
|
280
471
|
}
|
|
281
|
-
|
|
472
|
+
`;
|
|
473
|
+
export const ResizeHandle = styled.div `
|
|
282
474
|
position: absolute;
|
|
283
475
|
right: 0;
|
|
284
476
|
top: 0;
|
|
@@ -288,12 +480,13 @@
|
|
|
288
480
|
z-index: 1;
|
|
289
481
|
transition: background-color 0.15s ease;
|
|
290
482
|
|
|
291
|
-
${({$resizing
|
|
292
|
-
|
|
483
|
+
${({ $resizing, $theme }) => $resizing &&
|
|
484
|
+
css `
|
|
485
|
+
background: ${$theme.accentColor};
|
|
293
486
|
`}
|
|
294
487
|
|
|
295
488
|
&:hover {
|
|
296
|
-
background: ${({$theme
|
|
489
|
+
background: ${({ $theme }) => $theme.accentColor}60;
|
|
297
490
|
}
|
|
298
491
|
|
|
299
492
|
&::after {
|
|
@@ -303,33 +496,43 @@
|
|
|
303
496
|
top: 25%;
|
|
304
497
|
height: 50%;
|
|
305
498
|
width: 2px;
|
|
306
|
-
background: ${({$theme
|
|
499
|
+
background: ${({ $theme }) => $theme.borderColor};
|
|
307
500
|
border-radius: 1px;
|
|
308
501
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
502
|
+
`;
|
|
503
|
+
// ============================================================================
|
|
504
|
+
// Column Group Header
|
|
505
|
+
// ============================================================================
|
|
506
|
+
export const GroupHeaderRow = styled.tr `
|
|
507
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
508
|
+
`;
|
|
509
|
+
export const GroupHeaderCell = styled.th `
|
|
510
|
+
padding: ${({ $theme }) => $theme.headerPadding};
|
|
313
511
|
text-align: center;
|
|
314
|
-
font-size: ${({$theme
|
|
315
|
-
font-weight: ${({$theme
|
|
316
|
-
color: ${({$theme
|
|
317
|
-
border-bottom: 1px solid ${({$theme
|
|
318
|
-
border-right: 1px solid ${({$theme
|
|
319
|
-
background: ${({$theme
|
|
512
|
+
font-size: ${({ $theme }) => $theme.headerFontSize};
|
|
513
|
+
font-weight: ${({ $theme }) => $theme.headerFontWeight};
|
|
514
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
515
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
516
|
+
border-right: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
517
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
320
518
|
text-transform: uppercase;
|
|
321
519
|
letter-spacing: 0.5px;
|
|
322
520
|
|
|
323
521
|
&:last-child {
|
|
324
522
|
border-right: none;
|
|
325
523
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
524
|
+
`;
|
|
525
|
+
// ============================================================================
|
|
526
|
+
// Floating Filter Row
|
|
527
|
+
// ============================================================================
|
|
528
|
+
export const FloatingFilterRow = styled.tr `
|
|
529
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
530
|
+
height: ${({ $height }) => ($height ? `${$height}px` : '32px')};
|
|
531
|
+
`;
|
|
532
|
+
export const FloatingFilterCell = styled.td `
|
|
330
533
|
padding: 4px 8px;
|
|
331
|
-
border-bottom: 1px solid ${({$theme
|
|
332
|
-
border-right: 1px solid ${({$theme
|
|
534
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
535
|
+
border-right: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
333
536
|
vertical-align: middle;
|
|
334
537
|
|
|
335
538
|
&:last-child {
|
|
@@ -341,115 +544,149 @@
|
|
|
341
544
|
width: 100%;
|
|
342
545
|
padding: 4px 8px;
|
|
343
546
|
font-size: 12px;
|
|
344
|
-
border: 1px solid ${({$theme
|
|
547
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
345
548
|
border-radius: 3px;
|
|
346
|
-
background: ${({$theme
|
|
347
|
-
color: ${({$theme
|
|
549
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
550
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
348
551
|
outline: none;
|
|
349
552
|
|
|
350
553
|
&:focus {
|
|
351
|
-
border-color: ${({$theme
|
|
554
|
+
border-color: ${({ $theme }) => $theme.accentColor};
|
|
352
555
|
}
|
|
353
556
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
557
|
+
`;
|
|
558
|
+
// ============================================================================
|
|
559
|
+
// Body
|
|
560
|
+
// ============================================================================
|
|
561
|
+
export const TableBody = styled.tbody `
|
|
562
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
563
|
+
`;
|
|
564
|
+
export const TableRow = styled.tr `
|
|
565
|
+
height: ${({ $height }) => ($height ? `${$height}px` : '42px')};
|
|
566
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
567
|
+
background: ${({ $theme, $selected, $highlighted, $striped, $even, $group }) => {
|
|
568
|
+
if ($selected)
|
|
569
|
+
return $theme.selectedRowBackgroundColor;
|
|
570
|
+
if ($highlighted)
|
|
571
|
+
return `${$theme.accentColor}20`;
|
|
572
|
+
if ($group)
|
|
573
|
+
return $theme.headerBackgroundColor;
|
|
574
|
+
if ($striped && $even)
|
|
575
|
+
return $theme.oddRowBackgroundColor;
|
|
576
|
+
return $theme.backgroundColor;
|
|
577
|
+
}};
|
|
360
578
|
transition: background-color 0.15s ease;
|
|
361
579
|
|
|
362
|
-
${({$animate
|
|
363
|
-
|
|
580
|
+
${({ $animate }) => $animate &&
|
|
581
|
+
css `
|
|
582
|
+
animation: ${rowEnter} 0.2s ease;
|
|
364
583
|
`}
|
|
365
584
|
|
|
366
|
-
${({$dragging
|
|
585
|
+
${({ $dragging }) => $dragging &&
|
|
586
|
+
css `
|
|
367
587
|
opacity: 0.5;
|
|
368
588
|
`}
|
|
369
589
|
|
|
370
|
-
${({$dragOver
|
|
371
|
-
|
|
372
|
-
|
|
590
|
+
${({ $dragOver, $theme }) => $dragOver &&
|
|
591
|
+
css `
|
|
592
|
+
background: ${$theme.selectedRowBackgroundColor}60;
|
|
593
|
+
box-shadow: inset 0 -2px 0 ${$theme.accentColor};
|
|
373
594
|
`}
|
|
374
595
|
|
|
375
596
|
&:hover {
|
|
376
|
-
background: ${({$theme
|
|
597
|
+
background: ${({ $theme, $selected }) => $selected ? $theme.selectedRowBackgroundColor : $theme.hoverRowBackgroundColor};
|
|
377
598
|
}
|
|
378
599
|
|
|
379
|
-
${({$group
|
|
600
|
+
${({ $group }) => $group &&
|
|
601
|
+
css `
|
|
380
602
|
cursor: pointer;
|
|
381
603
|
font-weight: 600;
|
|
382
604
|
`}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
border-
|
|
605
|
+
`;
|
|
606
|
+
export const TableCell = styled.td `
|
|
607
|
+
padding: ${({ $theme }) => $theme.cellPadding};
|
|
608
|
+
text-align: ${({ $align }) => $align || 'left'};
|
|
609
|
+
border-bottom: ${({ $theme }) => $theme.cellBorderWidth} solid ${({ $theme }) => $theme.borderColor};
|
|
610
|
+
border-right: ${({ $theme }) => $theme.cellBorderWidth} solid ${({ $theme }) => $theme.borderColor};
|
|
388
611
|
vertical-align: middle;
|
|
389
612
|
overflow: hidden;
|
|
390
613
|
text-overflow: ellipsis;
|
|
391
614
|
white-space: nowrap;
|
|
392
|
-
color: ${({$theme
|
|
615
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
393
616
|
|
|
394
|
-
${({$width
|
|
617
|
+
${({ $width }) => $width && css `width: ${$width}px;`}
|
|
395
618
|
|
|
396
|
-
${({$pinned
|
|
619
|
+
${({ $pinned, $theme }) => $pinned &&
|
|
620
|
+
css `
|
|
397
621
|
position: sticky;
|
|
398
|
-
${
|
|
622
|
+
${$pinned === 'left' ? 'left: 0;' : 'right: 0;'}
|
|
399
623
|
z-index: 5;
|
|
400
624
|
background: inherit;
|
|
401
|
-
box-shadow: ${
|
|
625
|
+
box-shadow: ${$pinned === 'left' ? '2px 0 4px rgba(0,0,0,0.1)' : '-2px 0 4px rgba(0,0,0,0.1)'};
|
|
402
626
|
`}
|
|
403
627
|
|
|
404
|
-
${({$editing
|
|
628
|
+
${({ $editing, $theme }) => $editing &&
|
|
629
|
+
css `
|
|
405
630
|
padding: 0;
|
|
406
|
-
background: ${
|
|
407
|
-
box-shadow: inset 0 0 0 2px ${
|
|
631
|
+
background: ${$theme.backgroundColor};
|
|
632
|
+
box-shadow: inset 0 0 0 2px ${$theme.accentColor};
|
|
408
633
|
`}
|
|
409
634
|
|
|
410
|
-
${({$flashing
|
|
411
|
-
|
|
635
|
+
${({ $flashing }) => $flashing &&
|
|
636
|
+
css `
|
|
637
|
+
animation: ${cellFlash} 0.5s ease;
|
|
412
638
|
`}
|
|
413
639
|
|
|
414
640
|
&:last-child {
|
|
415
641
|
border-right: none;
|
|
416
642
|
}
|
|
417
|
-
|
|
643
|
+
`;
|
|
644
|
+
export const CellContent = styled.div `
|
|
418
645
|
display: flex;
|
|
419
646
|
align-items: center;
|
|
420
647
|
gap: 8px;
|
|
421
648
|
min-height: 20px;
|
|
422
649
|
color: inherit;
|
|
423
650
|
|
|
424
|
-
${({$wrapText
|
|
651
|
+
${({ $wrapText }) => $wrapText &&
|
|
652
|
+
css `
|
|
425
653
|
white-space: normal;
|
|
426
654
|
word-break: break-word;
|
|
427
655
|
`}
|
|
428
|
-
|
|
656
|
+
`;
|
|
657
|
+
// ============================================================================
|
|
658
|
+
// Checkbox
|
|
659
|
+
// ============================================================================
|
|
660
|
+
export const Checkbox = styled.input `
|
|
429
661
|
width: 16px;
|
|
430
662
|
height: 16px;
|
|
431
663
|
margin: 0;
|
|
432
664
|
cursor: pointer;
|
|
433
|
-
accent-color: ${({$theme
|
|
665
|
+
accent-color: ${({ $theme }) => $theme.accentColor};
|
|
434
666
|
flex-shrink: 0;
|
|
435
667
|
|
|
436
668
|
&:disabled {
|
|
437
669
|
opacity: 0.5;
|
|
438
670
|
cursor: not-allowed;
|
|
439
671
|
}
|
|
440
|
-
|
|
672
|
+
`;
|
|
673
|
+
export const CheckboxCell = styled.div `
|
|
441
674
|
display: flex;
|
|
442
675
|
align-items: center;
|
|
443
676
|
justify-content: center;
|
|
444
677
|
width: 100%;
|
|
445
|
-
|
|
678
|
+
`;
|
|
679
|
+
// ============================================================================
|
|
680
|
+
// Expand / Group
|
|
681
|
+
// ============================================================================
|
|
682
|
+
export const ExpandButton = styled.button `
|
|
446
683
|
display: flex;
|
|
447
684
|
align-items: center;
|
|
448
685
|
justify-content: center;
|
|
449
686
|
width: 20px;
|
|
450
687
|
height: 20px;
|
|
451
688
|
padding: 0;
|
|
452
|
-
margin-left: ${({$level
|
|
689
|
+
margin-left: ${({ $level }) => ($level ? `${$level * 16}px` : '0')};
|
|
453
690
|
margin-right: 8px;
|
|
454
691
|
border: none;
|
|
455
692
|
border-radius: 3px;
|
|
@@ -459,20 +696,25 @@
|
|
|
459
696
|
flex-shrink: 0;
|
|
460
697
|
|
|
461
698
|
&:hover {
|
|
462
|
-
background: ${({$theme
|
|
699
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
463
700
|
}
|
|
464
701
|
|
|
465
702
|
svg {
|
|
466
703
|
width: 14px;
|
|
467
704
|
height: 14px;
|
|
468
705
|
transition: transform 0.2s ease;
|
|
469
|
-
transform: ${({$expanded
|
|
706
|
+
transform: ${({ $expanded }) => ($expanded ? 'rotate(90deg)' : 'rotate(0deg)')};
|
|
470
707
|
}
|
|
471
|
-
|
|
708
|
+
`;
|
|
709
|
+
export const GroupCell = styled.div `
|
|
472
710
|
display: flex;
|
|
473
711
|
align-items: center;
|
|
474
|
-
padding-left: ${({$level
|
|
475
|
-
|
|
712
|
+
padding-left: ${({ $level }) => ($level ? `${$level * 20}px` : '0')};
|
|
713
|
+
`;
|
|
714
|
+
// ============================================================================
|
|
715
|
+
// Row Drag Handle
|
|
716
|
+
// ============================================================================
|
|
717
|
+
export const DragHandle = styled.div `
|
|
476
718
|
display: flex;
|
|
477
719
|
align-items: center;
|
|
478
720
|
justify-content: center;
|
|
@@ -487,7 +729,8 @@
|
|
|
487
729
|
opacity: 1;
|
|
488
730
|
}
|
|
489
731
|
|
|
490
|
-
${({$dragging
|
|
732
|
+
${({ $dragging }) => $dragging &&
|
|
733
|
+
css `
|
|
491
734
|
cursor: grabbing;
|
|
492
735
|
opacity: 1;
|
|
493
736
|
`}
|
|
@@ -496,7 +739,11 @@
|
|
|
496
739
|
width: 14px;
|
|
497
740
|
height: 14px;
|
|
498
741
|
}
|
|
499
|
-
|
|
742
|
+
`;
|
|
743
|
+
// ============================================================================
|
|
744
|
+
// Cell Editor
|
|
745
|
+
// ============================================================================
|
|
746
|
+
export const CellEditor = styled.div `
|
|
500
747
|
width: 100%;
|
|
501
748
|
height: 100%;
|
|
502
749
|
display: flex;
|
|
@@ -511,8 +758,8 @@
|
|
|
511
758
|
font-size: inherit;
|
|
512
759
|
font-family: inherit;
|
|
513
760
|
border: none;
|
|
514
|
-
background: ${({$theme
|
|
515
|
-
color: ${({$theme
|
|
761
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
762
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
516
763
|
outline: none;
|
|
517
764
|
}
|
|
518
765
|
|
|
@@ -520,23 +767,33 @@
|
|
|
520
767
|
resize: vertical;
|
|
521
768
|
min-height: 80px;
|
|
522
769
|
}
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
770
|
+
`;
|
|
771
|
+
// ============================================================================
|
|
772
|
+
// Footer
|
|
773
|
+
// ============================================================================
|
|
774
|
+
export const TableFooter = styled.tfoot `
|
|
775
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
776
|
+
`;
|
|
777
|
+
export const FooterRow = styled.tr `
|
|
526
778
|
height: 42px;
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
779
|
+
`;
|
|
780
|
+
export const FooterCell = styled.td `
|
|
781
|
+
padding: ${({ $theme }) => $theme.cellPadding};
|
|
782
|
+
text-align: ${({ $align }) => $align || 'left'};
|
|
530
783
|
font-weight: 600;
|
|
531
|
-
border-top: 2px solid ${({$theme
|
|
532
|
-
color: ${({$theme
|
|
533
|
-
|
|
784
|
+
border-top: 2px solid ${({ $theme }) => $theme.borderColor};
|
|
785
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
786
|
+
`;
|
|
787
|
+
// ============================================================================
|
|
788
|
+
// Pagination
|
|
789
|
+
// ============================================================================
|
|
790
|
+
export const PaginationBar = styled.div `
|
|
534
791
|
display: flex;
|
|
535
792
|
align-items: center;
|
|
536
793
|
justify-content: space-between;
|
|
537
794
|
padding: 8px 16px;
|
|
538
|
-
background: ${({$theme
|
|
539
|
-
border-top: 1px solid ${({$theme
|
|
795
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
796
|
+
border-top: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
540
797
|
gap: 16px;
|
|
541
798
|
flex-wrap: wrap;
|
|
542
799
|
|
|
@@ -544,14 +801,17 @@
|
|
|
544
801
|
flex-direction: column;
|
|
545
802
|
gap: 12px;
|
|
546
803
|
}
|
|
547
|
-
|
|
804
|
+
`;
|
|
805
|
+
export const PaginationInfo = styled.div `
|
|
548
806
|
font-size: 13px;
|
|
549
|
-
color: ${({$theme
|
|
550
|
-
|
|
807
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
808
|
+
`;
|
|
809
|
+
export const PaginationControls = styled.div `
|
|
551
810
|
display: flex;
|
|
552
811
|
align-items: center;
|
|
553
812
|
gap: 4px;
|
|
554
|
-
|
|
813
|
+
`;
|
|
814
|
+
export const PageButton = styled.button `
|
|
555
815
|
display: flex;
|
|
556
816
|
align-items: center;
|
|
557
817
|
justify-content: center;
|
|
@@ -560,15 +820,15 @@
|
|
|
560
820
|
padding: 0 8px;
|
|
561
821
|
font-size: 13px;
|
|
562
822
|
font-weight: 500;
|
|
563
|
-
border: 1px solid ${({$theme
|
|
823
|
+
border: 1px solid ${({ $theme, $active }) => ($active ? $theme.accentColor : $theme.borderColor)};
|
|
564
824
|
border-radius: 4px;
|
|
565
|
-
background: ${({$theme
|
|
566
|
-
color: ${({$theme
|
|
825
|
+
background: ${({ $theme, $active }) => ($active ? $theme.accentColor : $theme.backgroundColor)};
|
|
826
|
+
color: ${({ $theme, $active }) => ($active ? '#ffffff' : $theme.textColor)};
|
|
567
827
|
cursor: pointer;
|
|
568
828
|
transition: all 0.15s ease;
|
|
569
829
|
|
|
570
830
|
&:hover:not(:disabled) {
|
|
571
|
-
background: ${({$theme
|
|
831
|
+
background: ${({ $theme, $active }) => ($active ? $theme.accentColor : $theme.hoverRowBackgroundColor)};
|
|
572
832
|
}
|
|
573
833
|
|
|
574
834
|
&:disabled {
|
|
@@ -580,30 +840,36 @@
|
|
|
580
840
|
width: 16px;
|
|
581
841
|
height: 16px;
|
|
582
842
|
}
|
|
583
|
-
|
|
843
|
+
`;
|
|
844
|
+
export const PageSizeSelect = styled.select `
|
|
584
845
|
padding: 6px 8px;
|
|
585
846
|
font-size: 13px;
|
|
586
|
-
border: 1px solid ${({$theme
|
|
847
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
587
848
|
border-radius: 4px;
|
|
588
|
-
background: ${({$theme
|
|
589
|
-
color: ${({$theme
|
|
849
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
850
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
590
851
|
cursor: pointer;
|
|
591
852
|
outline: none;
|
|
592
853
|
|
|
593
854
|
&:focus {
|
|
594
|
-
border-color: ${({$theme
|
|
855
|
+
border-color: ${({ $theme }) => $theme.accentColor};
|
|
595
856
|
}
|
|
596
|
-
|
|
857
|
+
`;
|
|
858
|
+
// ============================================================================
|
|
859
|
+
// Status Bar
|
|
860
|
+
// ============================================================================
|
|
861
|
+
export const StatusBar = styled.div `
|
|
597
862
|
display: flex;
|
|
598
863
|
align-items: center;
|
|
599
864
|
justify-content: space-between;
|
|
600
865
|
padding: 6px 16px;
|
|
601
|
-
background: ${({$theme
|
|
602
|
-
border-top: 1px solid ${({$theme
|
|
866
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
867
|
+
border-top: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
603
868
|
font-size: 12px;
|
|
604
|
-
color: ${({$theme
|
|
869
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
605
870
|
gap: 16px;
|
|
606
|
-
|
|
871
|
+
`;
|
|
872
|
+
export const StatusItem = styled.div `
|
|
607
873
|
display: flex;
|
|
608
874
|
align-items: center;
|
|
609
875
|
gap: 6px;
|
|
@@ -611,91 +877,110 @@
|
|
|
611
877
|
strong {
|
|
612
878
|
color: inherit;
|
|
613
879
|
}
|
|
614
|
-
|
|
615
|
-
|
|
880
|
+
`;
|
|
881
|
+
// ============================================================================
|
|
882
|
+
// Side Bar / Tool Panels
|
|
883
|
+
// ============================================================================
|
|
884
|
+
export const SideBar = styled.div `
|
|
885
|
+
width: ${({ $width }) => ($width ? `${$width}px` : '250px')};
|
|
616
886
|
min-width: 200px;
|
|
617
887
|
max-width: 400px;
|
|
618
|
-
background: ${({$theme
|
|
619
|
-
border-${({$position
|
|
888
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
889
|
+
border-${({ $position }) => ($position === 'left' ? 'right' : 'left')}: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
620
890
|
display: flex;
|
|
621
891
|
flex-direction: column;
|
|
622
892
|
overflow: hidden;
|
|
623
|
-
|
|
893
|
+
`;
|
|
894
|
+
export const SideBarTabs = styled.div `
|
|
624
895
|
display: flex;
|
|
625
|
-
border-bottom: 1px solid ${({$theme
|
|
626
|
-
|
|
896
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
897
|
+
`;
|
|
898
|
+
export const SideBarTab = styled.button `
|
|
627
899
|
flex: 1;
|
|
628
900
|
padding: 10px 12px;
|
|
629
901
|
font-size: 12px;
|
|
630
902
|
font-weight: 500;
|
|
631
903
|
border: none;
|
|
632
|
-
background: ${({$theme
|
|
633
|
-
color: ${({$theme
|
|
904
|
+
background: ${({ $theme, $active }) => ($active ? $theme.backgroundColor : $theme.headerBackgroundColor)};
|
|
905
|
+
color: ${({ $theme, $active }) => ($active ? $theme.accentColor : $theme.headerTextColor)};
|
|
634
906
|
cursor: pointer;
|
|
635
907
|
transition: all 0.15s ease;
|
|
636
|
-
border-bottom: 2px solid ${({$theme
|
|
908
|
+
border-bottom: 2px solid ${({ $theme, $active }) => ($active ? $theme.accentColor : 'transparent')};
|
|
637
909
|
|
|
638
910
|
&:hover {
|
|
639
|
-
background: ${({$theme
|
|
911
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
640
912
|
}
|
|
641
|
-
|
|
913
|
+
`;
|
|
914
|
+
export const SideBarContent = styled.div `
|
|
642
915
|
flex: 1;
|
|
643
916
|
overflow: auto;
|
|
644
917
|
padding: 12px;
|
|
645
|
-
|
|
918
|
+
`;
|
|
919
|
+
// ============================================================================
|
|
920
|
+
// Overlays
|
|
921
|
+
// ============================================================================
|
|
922
|
+
export const Overlay = styled.div `
|
|
646
923
|
position: absolute;
|
|
647
924
|
inset: 0;
|
|
648
925
|
display: flex;
|
|
649
926
|
align-items: center;
|
|
650
927
|
justify-content: center;
|
|
651
|
-
background: ${({$theme
|
|
928
|
+
background: ${({ $theme }) => $theme.backgroundColor}e6;
|
|
652
929
|
z-index: 100;
|
|
653
|
-
animation: ${
|
|
654
|
-
|
|
930
|
+
animation: ${fadeIn} 0.2s ease;
|
|
931
|
+
`;
|
|
932
|
+
export const LoadingOverlay = styled(Overlay) `
|
|
655
933
|
flex-direction: column;
|
|
656
934
|
gap: 16px;
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
border
|
|
935
|
+
`;
|
|
936
|
+
export const Spinner = styled.div `
|
|
937
|
+
width: ${({ $size }) => ($size ? `${$size}px` : '40px')};
|
|
938
|
+
height: ${({ $size }) => ($size ? `${$size}px` : '40px')};
|
|
939
|
+
border: 3px solid ${({ $theme }) => $theme.borderColor};
|
|
940
|
+
border-top-color: ${({ $theme }) => $theme.accentColor};
|
|
662
941
|
border-radius: 50%;
|
|
663
|
-
animation: ${
|
|
664
|
-
|
|
942
|
+
animation: ${spin} 0.8s linear infinite;
|
|
943
|
+
`;
|
|
944
|
+
export const NoRowsOverlay = styled(Overlay) `
|
|
665
945
|
flex-direction: column;
|
|
666
946
|
gap: 12px;
|
|
667
|
-
color: ${({$theme
|
|
947
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
668
948
|
|
|
669
949
|
svg {
|
|
670
950
|
width: 48px;
|
|
671
951
|
height: 48px;
|
|
672
952
|
opacity: 0.5;
|
|
673
953
|
}
|
|
674
|
-
|
|
954
|
+
`;
|
|
955
|
+
// ============================================================================
|
|
956
|
+
// Context Menu
|
|
957
|
+
// ============================================================================
|
|
958
|
+
export const ContextMenu = styled.div `
|
|
675
959
|
position: fixed;
|
|
676
|
-
top: ${({$y
|
|
677
|
-
left: ${({$x
|
|
960
|
+
top: ${({ $y }) => $y}px;
|
|
961
|
+
left: ${({ $x }) => $x}px;
|
|
678
962
|
min-width: 180px;
|
|
679
|
-
background: ${({$theme
|
|
680
|
-
border: 1px solid ${({$theme
|
|
963
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
964
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
681
965
|
border-radius: 6px;
|
|
682
966
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
683
967
|
z-index: 1000;
|
|
684
968
|
overflow: hidden;
|
|
685
|
-
animation: ${
|
|
686
|
-
|
|
969
|
+
animation: ${slideInRight} 0.15s ease;
|
|
970
|
+
`;
|
|
971
|
+
export const ContextMenuItem = styled.div `
|
|
687
972
|
display: flex;
|
|
688
973
|
align-items: center;
|
|
689
974
|
gap: 10px;
|
|
690
975
|
padding: 8px 14px;
|
|
691
976
|
font-size: 13px;
|
|
692
|
-
cursor: ${({$disabled
|
|
693
|
-
opacity: ${({$disabled
|
|
694
|
-
color: ${({$danger
|
|
977
|
+
cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};
|
|
978
|
+
opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};
|
|
979
|
+
color: ${({ $danger, $theme }) => ($danger ? '#ef4444' : $theme.textColor)};
|
|
695
980
|
transition: background-color 0.1s ease;
|
|
696
981
|
|
|
697
982
|
&:hover {
|
|
698
|
-
background: ${({$disabled
|
|
983
|
+
background: ${({ $disabled, $theme }) => ($disabled ? 'transparent' : $theme.hoverRowBackgroundColor)};
|
|
699
984
|
}
|
|
700
985
|
|
|
701
986
|
svg {
|
|
@@ -709,161 +994,201 @@
|
|
|
709
994
|
font-size: 11px;
|
|
710
995
|
opacity: 0.5;
|
|
711
996
|
}
|
|
712
|
-
|
|
997
|
+
`;
|
|
998
|
+
export const ContextMenuDivider = styled.div `
|
|
713
999
|
height: 1px;
|
|
714
|
-
background: ${({$theme
|
|
1000
|
+
background: ${({ $theme }) => $theme.borderColor};
|
|
715
1001
|
margin: 4px 0;
|
|
716
|
-
|
|
1002
|
+
`;
|
|
1003
|
+
// ============================================================================
|
|
1004
|
+
// Column Menu
|
|
1005
|
+
// ============================================================================
|
|
1006
|
+
export const ColumnMenu = styled.div `
|
|
717
1007
|
position: absolute;
|
|
718
1008
|
top: 100%;
|
|
719
1009
|
right: 0;
|
|
720
1010
|
min-width: 200px;
|
|
721
|
-
background: ${({$theme
|
|
722
|
-
border: 1px solid ${({$theme
|
|
1011
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1012
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
723
1013
|
border-radius: 6px;
|
|
724
1014
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
725
1015
|
z-index: 100;
|
|
726
1016
|
overflow: hidden;
|
|
727
|
-
animation: ${
|
|
728
|
-
|
|
1017
|
+
animation: ${fadeIn} 0.15s ease;
|
|
1018
|
+
`;
|
|
1019
|
+
// ============================================================================
|
|
1020
|
+
// Mobile Card View
|
|
1021
|
+
// ============================================================================
|
|
1022
|
+
export const MobileCardContainer = styled.div `
|
|
729
1023
|
display: flex;
|
|
730
1024
|
flex-direction: column;
|
|
731
1025
|
gap: 12px;
|
|
732
1026
|
padding: 12px;
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
1027
|
+
`;
|
|
1028
|
+
export const MobileCard = styled.div `
|
|
1029
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1030
|
+
border: 1px solid ${({ $theme, $selected }) => ($selected ? $theme.accentColor : $theme.borderColor)};
|
|
736
1031
|
border-radius: 8px;
|
|
737
1032
|
padding: 16px;
|
|
738
1033
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
739
1034
|
transition: all 0.15s ease;
|
|
740
1035
|
|
|
741
|
-
${({$selected
|
|
742
|
-
|
|
1036
|
+
${({ $selected, $theme }) => $selected &&
|
|
1037
|
+
css `
|
|
1038
|
+
background: ${$theme.selectedRowBackgroundColor};
|
|
743
1039
|
`}
|
|
744
|
-
|
|
1040
|
+
`;
|
|
1041
|
+
export const MobileCardHeader = styled.div `
|
|
745
1042
|
display: flex;
|
|
746
1043
|
align-items: center;
|
|
747
1044
|
justify-content: space-between;
|
|
748
1045
|
margin-bottom: 12px;
|
|
749
1046
|
padding-bottom: 12px;
|
|
750
|
-
border-bottom: 1px solid ${({$theme
|
|
751
|
-
|
|
1047
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1048
|
+
`;
|
|
1049
|
+
export const MobileCardRow = styled.div `
|
|
752
1050
|
display: flex;
|
|
753
1051
|
justify-content: space-between;
|
|
754
1052
|
padding: 6px 0;
|
|
755
1053
|
font-size: 13px;
|
|
756
1054
|
|
|
757
1055
|
&:not(:last-child) {
|
|
758
|
-
border-bottom: 1px solid ${({$theme
|
|
1056
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor}50;
|
|
759
1057
|
}
|
|
760
|
-
|
|
761
|
-
|
|
1058
|
+
`;
|
|
1059
|
+
export const MobileCardLabel = styled.span `
|
|
1060
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
762
1061
|
font-weight: 500;
|
|
763
|
-
|
|
764
|
-
|
|
1062
|
+
`;
|
|
1063
|
+
export const MobileCardValue = styled.span `
|
|
1064
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
765
1065
|
text-align: right;
|
|
766
|
-
|
|
1066
|
+
`;
|
|
1067
|
+
// ============================================================================
|
|
1068
|
+
// Skeleton Loading
|
|
1069
|
+
// ============================================================================
|
|
1070
|
+
export const SkeletonRow = styled.tr `
|
|
767
1071
|
height: 42px;
|
|
768
|
-
|
|
1072
|
+
`;
|
|
1073
|
+
export const SkeletonCell = styled.td `
|
|
769
1074
|
padding: 8px 12px;
|
|
770
|
-
border-bottom: 1px solid ${({$theme
|
|
771
|
-
border-right: 1px solid ${({$theme
|
|
1075
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1076
|
+
border-right: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
772
1077
|
|
|
773
1078
|
&:last-child {
|
|
774
1079
|
border-right: none;
|
|
775
1080
|
}
|
|
776
|
-
|
|
1081
|
+
`;
|
|
1082
|
+
export const SkeletonBlock = styled.div `
|
|
777
1083
|
height: 16px;
|
|
778
|
-
width: ${({$width
|
|
1084
|
+
width: ${({ $width }) => $width || '80%'};
|
|
779
1085
|
background: linear-gradient(
|
|
780
1086
|
90deg,
|
|
781
|
-
${({$theme
|
|
782
|
-
${({$theme
|
|
783
|
-
${({$theme
|
|
1087
|
+
${({ $theme }) => $theme.borderColor}40 25%,
|
|
1088
|
+
${({ $theme }) => $theme.borderColor}80 50%,
|
|
1089
|
+
${({ $theme }) => $theme.borderColor}40 75%
|
|
784
1090
|
);
|
|
785
1091
|
background-size: 200% 100%;
|
|
786
|
-
animation: ${
|
|
1092
|
+
animation: ${shimmer} 1.5s ease-in-out infinite;
|
|
787
1093
|
border-radius: 4px;
|
|
788
|
-
|
|
1094
|
+
`;
|
|
1095
|
+
// ============================================================================
|
|
1096
|
+
// Tooltip
|
|
1097
|
+
// ============================================================================
|
|
1098
|
+
export const TooltipContainer = styled.div `
|
|
789
1099
|
position: fixed;
|
|
790
|
-
top: ${({$y
|
|
791
|
-
left: ${({$x
|
|
1100
|
+
top: ${({ $y }) => $y}px;
|
|
1101
|
+
left: ${({ $x }) => $x}px;
|
|
792
1102
|
max-width: 300px;
|
|
793
1103
|
padding: 8px 12px;
|
|
794
1104
|
font-size: 12px;
|
|
795
|
-
background: ${({$theme
|
|
796
|
-
color: ${({$theme
|
|
1105
|
+
background: ${({ $theme }) => ($theme.textColor.includes('f0') ? '#333' : '#fff')};
|
|
1106
|
+
color: ${({ $theme }) => ($theme.textColor.includes('f0') ? '#fff' : '#333')};
|
|
797
1107
|
border-radius: 4px;
|
|
798
1108
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
799
1109
|
z-index: 1001;
|
|
800
1110
|
pointer-events: none;
|
|
801
|
-
animation: ${
|
|
802
|
-
|
|
1111
|
+
animation: ${fadeIn} 0.1s ease;
|
|
1112
|
+
`;
|
|
1113
|
+
// ============================================================================
|
|
1114
|
+
// Drag Ghost
|
|
1115
|
+
// ============================================================================
|
|
1116
|
+
export const DragGhost = styled.div `
|
|
803
1117
|
position: fixed;
|
|
804
1118
|
pointer-events: none;
|
|
805
1119
|
z-index: 10000;
|
|
806
1120
|
padding: 8px 16px;
|
|
807
|
-
background: ${({$theme
|
|
1121
|
+
background: ${({ $theme }) => $theme.accentColor};
|
|
808
1122
|
color: #ffffff;
|
|
809
1123
|
font-size: 13px;
|
|
810
1124
|
font-weight: 500;
|
|
811
1125
|
border-radius: 6px;
|
|
812
1126
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
|
|
813
|
-
opacity: ${({$visible
|
|
1127
|
+
opacity: ${({ $visible }) => ($visible ? 0.9 : 0)};
|
|
814
1128
|
transform: translate(-50%, -50%);
|
|
815
1129
|
transition: opacity 0.15s ease;
|
|
816
|
-
|
|
1130
|
+
`;
|
|
1131
|
+
// ============================================================================
|
|
1132
|
+
// Selection Info Bar
|
|
1133
|
+
// ============================================================================
|
|
1134
|
+
export const SelectionBar = styled.div `
|
|
817
1135
|
display: flex;
|
|
818
1136
|
align-items: center;
|
|
819
1137
|
justify-content: space-between;
|
|
820
1138
|
padding: 8px 16px;
|
|
821
|
-
background: ${({$theme
|
|
1139
|
+
background: ${({ $theme }) => $theme.accentColor};
|
|
822
1140
|
color: #ffffff;
|
|
823
1141
|
font-size: 13px;
|
|
824
1142
|
font-weight: 500;
|
|
825
|
-
transform: translateY(${({$visible
|
|
826
|
-
opacity: ${({$visible
|
|
1143
|
+
transform: translateY(${({ $visible }) => ($visible ? '0' : '-100%')});
|
|
1144
|
+
opacity: ${({ $visible }) => ($visible ? 1 : 0)};
|
|
827
1145
|
transition: all 0.2s ease;
|
|
828
1146
|
position: absolute;
|
|
829
1147
|
top: 0;
|
|
830
1148
|
left: 0;
|
|
831
1149
|
right: 0;
|
|
832
1150
|
z-index: 50;
|
|
833
|
-
|
|
1151
|
+
`;
|
|
1152
|
+
export const SelectionActions = styled.div `
|
|
834
1153
|
display: flex;
|
|
835
1154
|
align-items: center;
|
|
836
1155
|
gap: 8px;
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
1156
|
+
`;
|
|
1157
|
+
// ============================================================================
|
|
1158
|
+
// Side Panel (Right Panel with Columns & Filters tabs)
|
|
1159
|
+
// ============================================================================
|
|
1160
|
+
export const SidePanel = styled.div `
|
|
1161
|
+
width: ${({ $open, $width }) => ($open ? ($width ? `${$width}px` : '280px') : '40px')};
|
|
1162
|
+
min-width: ${({ $open }) => ($open ? '200px' : '40px')};
|
|
1163
|
+
max-width: ${({ $open }) => ($open ? '400px' : '40px')};
|
|
1164
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1165
|
+
border-left: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
843
1166
|
display: flex;
|
|
844
1167
|
flex-direction: column;
|
|
845
1168
|
overflow: hidden;
|
|
846
1169
|
transition: width 0.2s ease;
|
|
847
1170
|
flex-shrink: 0;
|
|
848
|
-
|
|
1171
|
+
`;
|
|
1172
|
+
export const SidePanelTabs = styled.div `
|
|
849
1173
|
display: flex;
|
|
850
|
-
flex-direction: ${({$collapsed
|
|
851
|
-
border-bottom: ${({$collapsed
|
|
852
|
-
border-color: ${({$theme
|
|
853
|
-
background: ${({$theme
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
1174
|
+
flex-direction: ${({ $collapsed }) => ($collapsed ? 'column' : 'row')};
|
|
1175
|
+
border-bottom: ${({ $collapsed }) => ($collapsed ? 'none' : '1px solid')};
|
|
1176
|
+
border-color: ${({ $theme }) => $theme.borderColor};
|
|
1177
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
1178
|
+
`;
|
|
1179
|
+
export const SidePanelTab = styled.button `
|
|
1180
|
+
flex: ${({ $collapsed }) => ($collapsed ? 'none' : '1')};
|
|
1181
|
+
padding: ${({ $collapsed }) => ($collapsed ? '12px 10px' : '10px 12px')};
|
|
857
1182
|
font-size: 11px;
|
|
858
1183
|
font-weight: 600;
|
|
859
1184
|
text-transform: uppercase;
|
|
860
1185
|
letter-spacing: 0.5px;
|
|
861
1186
|
border: none;
|
|
862
|
-
background: ${({$theme
|
|
863
|
-
color: ${({$theme
|
|
1187
|
+
background: ${({ $theme, $active }) => ($active ? $theme.backgroundColor : 'transparent')};
|
|
1188
|
+
color: ${({ $theme, $active }) => ($active ? $theme.accentColor : $theme.headerTextColor)};
|
|
864
1189
|
cursor: pointer;
|
|
865
1190
|
transition: all 0.15s ease;
|
|
866
|
-
border-bottom: 2px solid ${({$theme
|
|
1191
|
+
border-bottom: 2px solid ${({ $theme, $active }) => ($active ? $theme.accentColor : 'transparent')};
|
|
867
1192
|
display: flex;
|
|
868
1193
|
align-items: center;
|
|
869
1194
|
justify-content: center;
|
|
@@ -871,44 +1196,48 @@
|
|
|
871
1196
|
white-space: nowrap;
|
|
872
1197
|
|
|
873
1198
|
&:hover {
|
|
874
|
-
background: ${({$theme
|
|
875
|
-
color: ${({$theme
|
|
1199
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
1200
|
+
color: ${({ $theme }) => $theme.accentColor};
|
|
876
1201
|
}
|
|
877
1202
|
|
|
878
1203
|
svg {
|
|
879
1204
|
width: 14px;
|
|
880
1205
|
height: 14px;
|
|
881
1206
|
}
|
|
882
|
-
|
|
1207
|
+
`;
|
|
1208
|
+
export const SidePanelContent = styled.div `
|
|
883
1209
|
flex: 1;
|
|
884
1210
|
overflow-y: auto;
|
|
885
1211
|
overflow-x: hidden;
|
|
886
|
-
|
|
1212
|
+
`;
|
|
1213
|
+
export const SidePanelSearch = styled.div `
|
|
887
1214
|
padding: 10px 12px;
|
|
888
|
-
border-bottom: 1px solid ${({$theme
|
|
1215
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
889
1216
|
|
|
890
1217
|
input {
|
|
891
1218
|
width: 100%;
|
|
892
1219
|
padding: 8px 10px;
|
|
893
1220
|
font-size: 12px;
|
|
894
|
-
border: 1px solid ${({$theme
|
|
1221
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
895
1222
|
border-radius: 4px;
|
|
896
|
-
background: ${({$theme
|
|
897
|
-
color: ${({$theme
|
|
1223
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1224
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
898
1225
|
outline: none;
|
|
899
1226
|
|
|
900
1227
|
&::placeholder {
|
|
901
|
-
color: ${({$theme
|
|
1228
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
902
1229
|
opacity: 0.6;
|
|
903
1230
|
}
|
|
904
1231
|
|
|
905
1232
|
&:focus {
|
|
906
|
-
border-color: ${({$theme
|
|
1233
|
+
border-color: ${({ $theme }) => $theme.accentColor};
|
|
907
1234
|
}
|
|
908
1235
|
}
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
1236
|
+
`;
|
|
1237
|
+
export const SidePanelSection = styled.div `
|
|
1238
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1239
|
+
`;
|
|
1240
|
+
export const SidePanelSectionHeader = styled.div `
|
|
912
1241
|
display: flex;
|
|
913
1242
|
align-items: center;
|
|
914
1243
|
gap: 8px;
|
|
@@ -917,13 +1246,13 @@
|
|
|
917
1246
|
font-weight: 600;
|
|
918
1247
|
text-transform: uppercase;
|
|
919
1248
|
letter-spacing: 0.5px;
|
|
920
|
-
color: ${({$theme
|
|
921
|
-
background: ${({$theme
|
|
922
|
-
cursor: ${({$collapsible
|
|
1249
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
1250
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
1251
|
+
cursor: ${({ $collapsible }) => ($collapsible ? 'pointer' : 'default')};
|
|
923
1252
|
user-select: none;
|
|
924
1253
|
|
|
925
1254
|
&:hover {
|
|
926
|
-
background: ${({$collapsible
|
|
1255
|
+
background: ${({ $collapsible, $theme }) => ($collapsible ? $theme.hoverRowBackgroundColor : $theme.headerBackgroundColor)};
|
|
927
1256
|
}
|
|
928
1257
|
|
|
929
1258
|
svg {
|
|
@@ -931,33 +1260,37 @@
|
|
|
931
1260
|
height: 12px;
|
|
932
1261
|
transition: transform 0.2s ease;
|
|
933
1262
|
}
|
|
934
|
-
|
|
1263
|
+
`;
|
|
1264
|
+
export const SidePanelColumnItem = styled.div `
|
|
935
1265
|
display: flex;
|
|
936
1266
|
align-items: center;
|
|
937
1267
|
gap: 8px;
|
|
938
1268
|
padding: 6px 12px;
|
|
939
|
-
padding-left: ${({$indent
|
|
1269
|
+
padding-left: ${({ $indent }) => ($indent ? `${12 + $indent * 16}px` : '12px')};
|
|
940
1270
|
font-size: 13px;
|
|
941
|
-
color: ${({$theme
|
|
1271
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
942
1272
|
cursor: pointer;
|
|
943
1273
|
user-select: none;
|
|
944
1274
|
transition: background-color 0.1s ease;
|
|
945
1275
|
border-left: 2px solid transparent;
|
|
946
1276
|
|
|
947
|
-
${({$selected
|
|
948
|
-
|
|
949
|
-
|
|
1277
|
+
${({ $selected, $theme }) => $selected &&
|
|
1278
|
+
css `
|
|
1279
|
+
background: ${$theme.selectedRowBackgroundColor}40;
|
|
1280
|
+
border-left-color: ${$theme.accentColor};
|
|
950
1281
|
`}
|
|
951
1282
|
|
|
952
|
-
${({$dragging
|
|
1283
|
+
${({ $dragging, $theme }) => $dragging &&
|
|
1284
|
+
css `
|
|
953
1285
|
opacity: 0.5;
|
|
954
|
-
background: ${
|
|
1286
|
+
background: ${$theme.accentColor}20;
|
|
955
1287
|
`}
|
|
956
1288
|
|
|
957
1289
|
&:hover {
|
|
958
|
-
background: ${({$theme
|
|
1290
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
959
1291
|
}
|
|
960
|
-
|
|
1292
|
+
`;
|
|
1293
|
+
export const SidePanelDragHandle = styled.span `
|
|
961
1294
|
display: flex;
|
|
962
1295
|
align-items: center;
|
|
963
1296
|
justify-content: center;
|
|
@@ -979,32 +1312,39 @@
|
|
|
979
1312
|
width: 12px;
|
|
980
1313
|
height: 12px;
|
|
981
1314
|
}
|
|
982
|
-
|
|
1315
|
+
`;
|
|
1316
|
+
export const SidePanelGroupLabel = styled.span `
|
|
983
1317
|
flex: 1;
|
|
984
1318
|
overflow: hidden;
|
|
985
1319
|
text-overflow: ellipsis;
|
|
986
1320
|
white-space: nowrap;
|
|
987
|
-
|
|
1321
|
+
`;
|
|
1322
|
+
// ============================================================================
|
|
1323
|
+
// Row Groups Drop Zone
|
|
1324
|
+
// ============================================================================
|
|
1325
|
+
export const RowGroupsZone = styled.div `
|
|
988
1326
|
display: flex;
|
|
989
1327
|
align-items: center;
|
|
990
1328
|
gap: 8px;
|
|
991
1329
|
padding: 8px 12px;
|
|
992
1330
|
min-height: 36px;
|
|
993
|
-
background: ${({$theme
|
|
994
|
-
border-bottom: 1px solid ${({$theme
|
|
995
|
-
border: ${({$dragOver
|
|
1331
|
+
background: ${({ $theme, $dragOver }) => ($dragOver ? `${$theme.accentColor}15` : $theme.headerBackgroundColor)};
|
|
1332
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1333
|
+
border: ${({ $dragOver, $theme }) => ($dragOver ? `2px dashed ${$theme.accentColor}` : '1px solid transparent')};
|
|
996
1334
|
transition: all 0.15s ease;
|
|
997
1335
|
flex-wrap: wrap;
|
|
998
1336
|
|
|
999
|
-
${({$hasItems
|
|
1337
|
+
${({ $hasItems }) => !$hasItems &&
|
|
1338
|
+
css `
|
|
1000
1339
|
justify-content: center;
|
|
1001
1340
|
`}
|
|
1002
|
-
|
|
1341
|
+
`;
|
|
1342
|
+
export const RowGroupsLabel = styled.span `
|
|
1003
1343
|
display: flex;
|
|
1004
1344
|
align-items: center;
|
|
1005
1345
|
gap: 6px;
|
|
1006
1346
|
font-size: 12px;
|
|
1007
|
-
color: ${({$theme
|
|
1347
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
1008
1348
|
white-space: nowrap;
|
|
1009
1349
|
|
|
1010
1350
|
svg {
|
|
@@ -1012,15 +1352,16 @@
|
|
|
1012
1352
|
height: 14px;
|
|
1013
1353
|
opacity: 0.6;
|
|
1014
1354
|
}
|
|
1015
|
-
|
|
1355
|
+
`;
|
|
1356
|
+
export const RowGroupChip = styled.div `
|
|
1016
1357
|
display: inline-flex;
|
|
1017
1358
|
align-items: center;
|
|
1018
1359
|
gap: 6px;
|
|
1019
1360
|
padding: 4px 10px;
|
|
1020
1361
|
font-size: 12px;
|
|
1021
1362
|
font-weight: 500;
|
|
1022
|
-
background: ${({$theme
|
|
1023
|
-
color: ${({$theme
|
|
1363
|
+
background: ${({ $theme }) => $theme.accentColor}15;
|
|
1364
|
+
color: ${({ $theme }) => $theme.accentColor};
|
|
1024
1365
|
border-radius: 16px;
|
|
1025
1366
|
cursor: default;
|
|
1026
1367
|
|
|
@@ -1040,7 +1381,7 @@
|
|
|
1040
1381
|
|
|
1041
1382
|
&:hover {
|
|
1042
1383
|
opacity: 1;
|
|
1043
|
-
background: ${({$theme
|
|
1384
|
+
background: ${({ $theme }) => $theme.accentColor}30;
|
|
1044
1385
|
}
|
|
1045
1386
|
|
|
1046
1387
|
svg {
|
|
@@ -1048,22 +1389,28 @@
|
|
|
1048
1389
|
height: 10px;
|
|
1049
1390
|
}
|
|
1050
1391
|
}
|
|
1051
|
-
|
|
1392
|
+
`;
|
|
1393
|
+
// ============================================================================
|
|
1394
|
+
// Values/Aggregation Panel
|
|
1395
|
+
// ============================================================================
|
|
1396
|
+
export const ValuesPanel = styled.div `
|
|
1052
1397
|
min-height: 60px;
|
|
1053
|
-
|
|
1398
|
+
`;
|
|
1399
|
+
export const ValueItem = styled.div `
|
|
1054
1400
|
display: flex;
|
|
1055
1401
|
align-items: center;
|
|
1056
1402
|
justify-content: space-between;
|
|
1057
1403
|
gap: 8px;
|
|
1058
1404
|
padding: 6px 12px;
|
|
1059
1405
|
font-size: 13px;
|
|
1060
|
-
color: ${({$theme
|
|
1406
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
1061
1407
|
cursor: pointer;
|
|
1062
1408
|
|
|
1063
1409
|
&:hover {
|
|
1064
|
-
background: ${({$theme
|
|
1410
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
1065
1411
|
}
|
|
1066
|
-
|
|
1412
|
+
`;
|
|
1413
|
+
export const ValueItemLabel = styled.span `
|
|
1067
1414
|
display: flex;
|
|
1068
1415
|
align-items: center;
|
|
1069
1416
|
gap: 6px;
|
|
@@ -1075,7 +1422,8 @@
|
|
|
1075
1422
|
height: 12px;
|
|
1076
1423
|
opacity: 0.5;
|
|
1077
1424
|
}
|
|
1078
|
-
|
|
1425
|
+
`;
|
|
1426
|
+
export const ValueItemRemove = styled.button `
|
|
1079
1427
|
display: flex;
|
|
1080
1428
|
align-items: center;
|
|
1081
1429
|
justify-content: center;
|
|
@@ -1090,24 +1438,30 @@
|
|
|
1090
1438
|
|
|
1091
1439
|
&:hover {
|
|
1092
1440
|
opacity: 1;
|
|
1093
|
-
background: ${({$theme
|
|
1441
|
+
background: ${({ $theme }) => $theme.borderColor};
|
|
1094
1442
|
}
|
|
1095
1443
|
|
|
1096
1444
|
svg {
|
|
1097
1445
|
width: 12px;
|
|
1098
1446
|
height: 12px;
|
|
1099
1447
|
}
|
|
1100
|
-
|
|
1448
|
+
`;
|
|
1449
|
+
// ============================================================================
|
|
1450
|
+
// Pivot Mode Toggle
|
|
1451
|
+
// ============================================================================
|
|
1452
|
+
export const PivotModeToggle = styled.div `
|
|
1101
1453
|
display: flex;
|
|
1102
1454
|
align-items: center;
|
|
1103
1455
|
justify-content: space-between;
|
|
1104
1456
|
padding: 10px 12px;
|
|
1105
|
-
border-bottom: 1px solid ${({$theme
|
|
1106
|
-
|
|
1457
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1458
|
+
`;
|
|
1459
|
+
export const PivotModeLabel = styled.span `
|
|
1107
1460
|
font-size: 12px;
|
|
1108
1461
|
font-weight: 500;
|
|
1109
|
-
color: ${({$theme
|
|
1110
|
-
|
|
1462
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
1463
|
+
`;
|
|
1464
|
+
export const ToggleSwitch = styled.label `
|
|
1111
1465
|
position: relative;
|
|
1112
1466
|
display: inline-block;
|
|
1113
1467
|
width: 36px;
|
|
@@ -1123,7 +1477,7 @@
|
|
|
1123
1477
|
span {
|
|
1124
1478
|
position: absolute;
|
|
1125
1479
|
inset: 0;
|
|
1126
|
-
background: ${({$theme
|
|
1480
|
+
background: ${({ $theme }) => $theme.borderColor};
|
|
1127
1481
|
border-radius: 20px;
|
|
1128
1482
|
transition: all 0.2s ease;
|
|
1129
1483
|
|
|
@@ -1141,13 +1495,17 @@
|
|
|
1141
1495
|
}
|
|
1142
1496
|
|
|
1143
1497
|
input:checked + span {
|
|
1144
|
-
background: ${({$theme
|
|
1498
|
+
background: ${({ $theme }) => $theme.accentColor};
|
|
1145
1499
|
}
|
|
1146
1500
|
|
|
1147
1501
|
input:checked + span::before {
|
|
1148
1502
|
transform: translateX(16px);
|
|
1149
1503
|
}
|
|
1150
|
-
|
|
1504
|
+
`;
|
|
1505
|
+
// ============================================================================
|
|
1506
|
+
// Column Header Menu (Three Dot Menu)
|
|
1507
|
+
// ============================================================================
|
|
1508
|
+
export const HeaderMenuButton = styled.button `
|
|
1151
1509
|
display: flex;
|
|
1152
1510
|
align-items: center;
|
|
1153
1511
|
justify-content: center;
|
|
@@ -1155,56 +1513,59 @@
|
|
|
1155
1513
|
height: 20px;
|
|
1156
1514
|
padding: 0;
|
|
1157
1515
|
border: none;
|
|
1158
|
-
background: ${({$active
|
|
1516
|
+
background: ${({ $active, $theme }) => ($active ? $theme.hoverRowBackgroundColor : 'transparent')};
|
|
1159
1517
|
border-radius: 3px;
|
|
1160
1518
|
cursor: pointer;
|
|
1161
|
-
opacity: ${({$active
|
|
1519
|
+
opacity: ${({ $active }) => ($active ? 1 : 0)};
|
|
1162
1520
|
transition: all 0.15s ease;
|
|
1163
1521
|
flex-shrink: 0;
|
|
1164
1522
|
|
|
1165
1523
|
&:hover {
|
|
1166
1524
|
opacity: 1;
|
|
1167
|
-
background: ${({$theme
|
|
1525
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
1168
1526
|
}
|
|
1169
1527
|
|
|
1170
1528
|
svg {
|
|
1171
1529
|
width: 14px;
|
|
1172
1530
|
height: 14px;
|
|
1173
|
-
color: ${({$theme
|
|
1531
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
1174
1532
|
}
|
|
1175
|
-
|
|
1533
|
+
`;
|
|
1534
|
+
export const ColumnMenuPopup = styled.div `
|
|
1176
1535
|
position: fixed;
|
|
1177
|
-
top: ${({$y
|
|
1178
|
-
left: ${({$x
|
|
1536
|
+
top: ${({ $y }) => $y}px;
|
|
1537
|
+
left: ${({ $x }) => $x}px;
|
|
1179
1538
|
min-width: 200px;
|
|
1180
1539
|
max-width: 280px;
|
|
1181
|
-
background: ${({$theme
|
|
1182
|
-
border: 1px solid ${({$theme
|
|
1540
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1541
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1183
1542
|
border-radius: 6px;
|
|
1184
1543
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
|
1185
1544
|
z-index: 1000;
|
|
1186
1545
|
overflow: hidden;
|
|
1187
|
-
animation: ${
|
|
1188
|
-
|
|
1546
|
+
animation: ${fadeIn} 0.15s ease;
|
|
1547
|
+
`;
|
|
1548
|
+
export const ColumnMenuSection = styled.div `
|
|
1189
1549
|
padding: 4px 0;
|
|
1190
|
-
border-bottom: 1px solid ${({$theme
|
|
1550
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1191
1551
|
|
|
1192
1552
|
&:last-child {
|
|
1193
1553
|
border-bottom: none;
|
|
1194
1554
|
}
|
|
1195
|
-
|
|
1555
|
+
`;
|
|
1556
|
+
export const ColumnMenuItem = styled.div `
|
|
1196
1557
|
display: flex;
|
|
1197
1558
|
align-items: center;
|
|
1198
1559
|
gap: 10px;
|
|
1199
1560
|
padding: 8px 12px;
|
|
1200
1561
|
font-size: 13px;
|
|
1201
|
-
color: ${({$theme
|
|
1202
|
-
cursor: ${({$disabled
|
|
1203
|
-
opacity: ${({$disabled
|
|
1562
|
+
color: ${({ $theme, $disabled }) => ($disabled ? $theme.headerTextColor : $theme.textColor)};
|
|
1563
|
+
cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};
|
|
1564
|
+
opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};
|
|
1204
1565
|
transition: background-color 0.1s ease;
|
|
1205
1566
|
|
|
1206
1567
|
&:hover {
|
|
1207
|
-
background: ${({$disabled
|
|
1568
|
+
background: ${({ $disabled, $theme }) => ($disabled ? 'transparent' : $theme.hoverRowBackgroundColor)};
|
|
1208
1569
|
}
|
|
1209
1570
|
|
|
1210
1571
|
svg {
|
|
@@ -1218,7 +1579,8 @@
|
|
|
1218
1579
|
flex: 1;
|
|
1219
1580
|
}
|
|
1220
1581
|
|
|
1221
|
-
${({$hasSubmenu
|
|
1582
|
+
${({ $hasSubmenu }) => $hasSubmenu &&
|
|
1583
|
+
css `
|
|
1222
1584
|
&::after {
|
|
1223
1585
|
content: '›';
|
|
1224
1586
|
margin-left: auto;
|
|
@@ -1226,175 +1588,207 @@
|
|
|
1226
1588
|
opacity: 0.5;
|
|
1227
1589
|
}
|
|
1228
1590
|
`}
|
|
1229
|
-
|
|
1591
|
+
`;
|
|
1592
|
+
export const ColumnMenuSubmenu = styled.div `
|
|
1230
1593
|
position: absolute;
|
|
1231
1594
|
top: 0;
|
|
1232
1595
|
left: 100%;
|
|
1233
1596
|
min-width: 150px;
|
|
1234
|
-
background: ${({$theme
|
|
1235
|
-
border: 1px solid ${({$theme
|
|
1597
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1598
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1236
1599
|
border-radius: 6px;
|
|
1237
1600
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
|
1238
1601
|
overflow: hidden;
|
|
1239
|
-
|
|
1602
|
+
`;
|
|
1603
|
+
// ============================================================================
|
|
1604
|
+
// Set Filter (Filter by unique values)
|
|
1605
|
+
// ============================================================================
|
|
1606
|
+
export const SetFilterContainer = styled.div `
|
|
1240
1607
|
min-width: 200px;
|
|
1241
1608
|
max-width: 300px;
|
|
1242
1609
|
max-height: 400px;
|
|
1243
|
-
background: ${({$theme
|
|
1244
|
-
border: 1px solid ${({$theme
|
|
1610
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1611
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1245
1612
|
border-radius: 6px;
|
|
1246
1613
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
|
1247
1614
|
overflow: hidden;
|
|
1248
1615
|
display: flex;
|
|
1249
1616
|
flex-direction: column;
|
|
1250
|
-
|
|
1617
|
+
`;
|
|
1618
|
+
export const SetFilterHeader = styled.div `
|
|
1251
1619
|
padding: 8px 12px;
|
|
1252
|
-
border-bottom: 1px solid ${({$theme
|
|
1620
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1253
1621
|
font-size: 12px;
|
|
1254
1622
|
font-weight: 600;
|
|
1255
|
-
color: ${({$theme
|
|
1256
|
-
background: ${({$theme
|
|
1257
|
-
|
|
1623
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
1624
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
1625
|
+
`;
|
|
1626
|
+
export const SetFilterSearch = styled.div `
|
|
1258
1627
|
padding: 8px 10px;
|
|
1259
|
-
border-bottom: 1px solid ${({$theme
|
|
1628
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1260
1629
|
|
|
1261
1630
|
input {
|
|
1262
1631
|
width: 100%;
|
|
1263
1632
|
padding: 6px 10px;
|
|
1264
1633
|
font-size: 12px;
|
|
1265
|
-
border: 1px solid ${({$theme
|
|
1634
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1266
1635
|
border-radius: 4px;
|
|
1267
|
-
background: ${({$theme
|
|
1268
|
-
color: ${({$theme
|
|
1636
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1637
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
1269
1638
|
outline: none;
|
|
1270
1639
|
|
|
1271
1640
|
&:focus {
|
|
1272
|
-
border-color: ${({$theme
|
|
1641
|
+
border-color: ${({ $theme }) => $theme.accentColor};
|
|
1273
1642
|
}
|
|
1274
1643
|
|
|
1275
1644
|
&::placeholder {
|
|
1276
|
-
color: ${({$theme
|
|
1645
|
+
color: ${({ $theme }) => $theme.headerTextColor};
|
|
1277
1646
|
opacity: 0.6;
|
|
1278
1647
|
}
|
|
1279
1648
|
}
|
|
1280
|
-
|
|
1649
|
+
`;
|
|
1650
|
+
export const SetFilterList = styled.div `
|
|
1281
1651
|
flex: 1;
|
|
1282
1652
|
overflow-y: auto;
|
|
1283
1653
|
max-height: 280px;
|
|
1284
|
-
|
|
1654
|
+
`;
|
|
1655
|
+
export const SetFilterItem = styled.label `
|
|
1285
1656
|
display: flex;
|
|
1286
1657
|
align-items: center;
|
|
1287
1658
|
gap: 8px;
|
|
1288
1659
|
padding: 6px 12px;
|
|
1289
1660
|
font-size: 13px;
|
|
1290
|
-
color: ${({$theme
|
|
1661
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
1291
1662
|
cursor: pointer;
|
|
1292
1663
|
transition: background-color 0.1s ease;
|
|
1293
|
-
border-bottom: ${({$selectAll
|
|
1294
|
-
font-weight: ${({$selectAll
|
|
1664
|
+
border-bottom: ${({ $selectAll, $theme }) => ($selectAll ? `1px solid ${$theme.borderColor}` : 'none')};
|
|
1665
|
+
font-weight: ${({ $selectAll }) => ($selectAll ? '500' : 'normal')};
|
|
1295
1666
|
|
|
1296
1667
|
&:hover {
|
|
1297
|
-
background: ${({$theme
|
|
1668
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
1298
1669
|
}
|
|
1299
1670
|
|
|
1300
1671
|
input {
|
|
1301
1672
|
margin: 0;
|
|
1302
|
-
accent-color: ${({$theme
|
|
1673
|
+
accent-color: ${({ $theme }) => $theme.accentColor};
|
|
1303
1674
|
}
|
|
1304
|
-
|
|
1675
|
+
`;
|
|
1676
|
+
export const SetFilterActions = styled.div `
|
|
1305
1677
|
display: flex;
|
|
1306
1678
|
gap: 8px;
|
|
1307
1679
|
padding: 8px 10px;
|
|
1308
|
-
border-top: 1px solid ${({$theme
|
|
1309
|
-
background: ${({$theme
|
|
1310
|
-
|
|
1680
|
+
border-top: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1681
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor};
|
|
1682
|
+
`;
|
|
1683
|
+
export const SetFilterButton = styled.button `
|
|
1311
1684
|
flex: 1;
|
|
1312
1685
|
padding: 6px 12px;
|
|
1313
1686
|
font-size: 12px;
|
|
1314
1687
|
font-weight: 500;
|
|
1315
|
-
border: 1px solid ${({$theme
|
|
1688
|
+
border: 1px solid ${({ $theme, $primary }) => ($primary ? $theme.accentColor : $theme.borderColor)};
|
|
1316
1689
|
border-radius: 4px;
|
|
1317
|
-
background: ${({$theme
|
|
1318
|
-
color: ${({$primary
|
|
1690
|
+
background: ${({ $theme, $primary }) => ($primary ? $theme.accentColor : $theme.backgroundColor)};
|
|
1691
|
+
color: ${({ $primary, $theme }) => ($primary ? '#ffffff' : $theme.textColor)};
|
|
1319
1692
|
cursor: pointer;
|
|
1320
1693
|
transition: all 0.15s ease;
|
|
1321
1694
|
|
|
1322
1695
|
&:hover {
|
|
1323
1696
|
filter: brightness(0.95);
|
|
1324
1697
|
}
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1698
|
+
`;
|
|
1699
|
+
// ============================================================================
|
|
1700
|
+
// Filter Panel in Side Bar
|
|
1701
|
+
// ============================================================================
|
|
1702
|
+
export const FilterPanelColumn = styled.div `
|
|
1703
|
+
border-bottom: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1704
|
+
`;
|
|
1705
|
+
export const FilterPanelHeader = styled.div `
|
|
1328
1706
|
display: flex;
|
|
1329
1707
|
align-items: center;
|
|
1330
1708
|
gap: 8px;
|
|
1331
1709
|
padding: 8px 12px;
|
|
1332
1710
|
font-size: 13px;
|
|
1333
1711
|
font-weight: 500;
|
|
1334
|
-
color: ${({$theme
|
|
1712
|
+
color: ${({ $theme, $hasFilter }) => ($hasFilter ? $theme.accentColor : $theme.textColor)};
|
|
1335
1713
|
cursor: pointer;
|
|
1336
1714
|
transition: background-color 0.1s ease;
|
|
1337
1715
|
|
|
1338
1716
|
&:hover {
|
|
1339
|
-
background: ${({$theme
|
|
1717
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
1340
1718
|
}
|
|
1341
1719
|
|
|
1342
1720
|
svg {
|
|
1343
1721
|
width: 12px;
|
|
1344
1722
|
height: 12px;
|
|
1345
1723
|
transition: transform 0.2s ease;
|
|
1346
|
-
transform: ${({$expanded
|
|
1724
|
+
transform: ${({ $expanded }) => ($expanded ? 'rotate(90deg)' : 'rotate(0deg)')};
|
|
1347
1725
|
opacity: 0.5;
|
|
1348
1726
|
}
|
|
1349
|
-
|
|
1350
|
-
|
|
1727
|
+
`;
|
|
1728
|
+
export const FilterPanelContent = styled.div `
|
|
1729
|
+
display: ${({ $expanded }) => ($expanded ? 'block' : 'none')};
|
|
1351
1730
|
padding: 8px 12px;
|
|
1352
|
-
background: ${({$theme
|
|
1353
|
-
|
|
1731
|
+
background: ${({ $theme }) => $theme.headerBackgroundColor}50;
|
|
1732
|
+
`;
|
|
1733
|
+
// ============================================================================
|
|
1734
|
+
// Grid Container with Side Panel Layout
|
|
1735
|
+
// ============================================================================
|
|
1736
|
+
export const GridLayout = styled.div `
|
|
1354
1737
|
display: flex;
|
|
1355
1738
|
width: 100%;
|
|
1356
1739
|
height: 100%;
|
|
1357
1740
|
overflow: hidden;
|
|
1358
|
-
|
|
1741
|
+
`;
|
|
1742
|
+
export const GridMainArea = styled.div `
|
|
1359
1743
|
flex: 1;
|
|
1360
1744
|
display: flex;
|
|
1361
1745
|
flex-direction: column;
|
|
1362
1746
|
min-width: 0;
|
|
1363
1747
|
overflow: hidden;
|
|
1364
|
-
|
|
1748
|
+
`;
|
|
1749
|
+
// ============================================================================
|
|
1750
|
+
// Column Visibility Dropdown
|
|
1751
|
+
// ============================================================================
|
|
1752
|
+
export const ColumnVisibilityDropdown = styled.div `
|
|
1365
1753
|
position: absolute;
|
|
1366
1754
|
top: 100%;
|
|
1367
1755
|
right: 0;
|
|
1368
1756
|
min-width: 220px;
|
|
1369
1757
|
max-height: 400px;
|
|
1370
|
-
background: ${({$theme
|
|
1371
|
-
border: 1px solid ${({$theme
|
|
1758
|
+
background: ${({ $theme }) => $theme.backgroundColor};
|
|
1759
|
+
border: 1px solid ${({ $theme }) => $theme.borderColor};
|
|
1372
1760
|
border-radius: 6px;
|
|
1373
1761
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
|
1374
1762
|
z-index: 100;
|
|
1375
1763
|
overflow: hidden;
|
|
1376
1764
|
display: flex;
|
|
1377
1765
|
flex-direction: column;
|
|
1378
|
-
animation: ${
|
|
1379
|
-
|
|
1766
|
+
animation: ${fadeIn} 0.15s ease;
|
|
1767
|
+
`;
|
|
1768
|
+
export const ColumnVisibilityList = styled.div `
|
|
1380
1769
|
flex: 1;
|
|
1381
1770
|
overflow-y: auto;
|
|
1382
|
-
|
|
1771
|
+
`;
|
|
1772
|
+
export const ColumnVisibilityItem = styled.label `
|
|
1383
1773
|
display: flex;
|
|
1384
1774
|
align-items: center;
|
|
1385
1775
|
gap: 8px;
|
|
1386
1776
|
padding: 8px 12px;
|
|
1387
1777
|
font-size: 13px;
|
|
1388
|
-
color: ${({$theme
|
|
1778
|
+
color: ${({ $theme }) => $theme.textColor};
|
|
1389
1779
|
cursor: pointer;
|
|
1390
1780
|
transition: background-color 0.1s ease;
|
|
1391
1781
|
|
|
1392
1782
|
&:hover {
|
|
1393
|
-
background: ${({$theme
|
|
1783
|
+
background: ${({ $theme }) => $theme.hoverRowBackgroundColor};
|
|
1394
1784
|
}
|
|
1395
1785
|
|
|
1396
1786
|
input {
|
|
1397
1787
|
margin: 0;
|
|
1398
|
-
accent-color: ${({$theme
|
|
1788
|
+
accent-color: ${({ $theme }) => $theme.accentColor};
|
|
1399
1789
|
}
|
|
1400
|
-
`;
|
|
1790
|
+
`;
|
|
1791
|
+
// ============================================================================
|
|
1792
|
+
// Export all themes
|
|
1793
|
+
// ============================================================================
|
|
1794
|
+
export { themes };
|