@tendaui/components 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +176 -0
- package/alert/Alert.tsx +147 -0
- package/alert/defaultProps.ts +3 -0
- package/alert/index.ts +9 -0
- package/alert/style/css.js +1 -0
- package/alert/style/index.js +1 -0
- package/alert/type.ts +44 -0
- package/badge/Badge.tsx +85 -0
- package/badge/defaultProps.ts +10 -0
- package/badge/index.ts +9 -0
- package/badge/style/css.js +1 -0
- package/badge/style/index.js +1 -0
- package/badge/type.ts +51 -0
- package/button/Button.tsx +95 -0
- package/button/defaultProps.ts +13 -0
- package/button/index.ts +7 -0
- package/button/style/css.js +1 -0
- package/button/style/index.js +1 -0
- package/button/type.ts +82 -0
- package/checkbox/Checkbox.tsx +19 -0
- package/checkbox/CheckboxGroup.tsx +207 -0
- package/checkbox/defaultProps.ts +14 -0
- package/checkbox/index.ts +10 -0
- package/checkbox/style/css.js +1 -0
- package/checkbox/style/index.js +1 -0
- package/checkbox/type.ts +117 -0
- package/common/Check.tsx +131 -0
- package/common/FakeArrow.tsx +36 -0
- package/common/PluginContainer.tsx +21 -0
- package/common/Portal.tsx +67 -0
- package/common.ts +76 -0
- package/config-provider/ConfigContext.tsx +21 -0
- package/config-provider/ConfigProvider.tsx +53 -0
- package/config-provider/index.ts +9 -0
- package/config-provider/type.ts +1062 -0
- package/dialog/Dialog.tsx +254 -0
- package/dialog/DialogCard.tsx +152 -0
- package/dialog/defaultProps.ts +25 -0
- package/dialog/hooks/useDialogDrag.ts +50 -0
- package/dialog/hooks/useDialogEsc.ts +31 -0
- package/dialog/hooks/useDialogPosition.ts +36 -0
- package/dialog/hooks/useLockStyle.ts +54 -0
- package/dialog/index.ts +13 -0
- package/dialog/plugin.tsx +78 -0
- package/dialog/style/css.js +1 -0
- package/dialog/style/index.js +1 -0
- package/dialog/type.ts +241 -0
- package/dialog/utils.ts +4 -0
- package/form/Form.tsx +136 -0
- package/form/FormContext.tsx +64 -0
- package/form/FormItem.tsx +554 -0
- package/form/FormList.tsx +303 -0
- package/form/const.ts +6 -0
- package/form/defaultProps.ts +26 -0
- package/form/formModel.ts +117 -0
- package/form/hooks/interface.ts +20 -0
- package/form/hooks/useForm.ts +122 -0
- package/form/hooks/useFormItemInitialData.ts +95 -0
- package/form/hooks/useFormItemStyle.tsx +122 -0
- package/form/hooks/useInstance.tsx +275 -0
- package/form/hooks/useWatch.ts +42 -0
- package/form/index.ts +11 -0
- package/form/style/css.js +1 -0
- package/form/style/index.js +1 -0
- package/form/type.ts +519 -0
- package/form/utils/index.ts +69 -0
- package/hooks/useAttach.ts +24 -0
- package/hooks/useCommonClassName.ts +45 -0
- package/hooks/useConfig.ts +3 -0
- package/hooks/useControlled.ts +39 -0
- package/hooks/useDefaultProps.ts +16 -0
- package/hooks/useDomCallback.ts +13 -0
- package/hooks/useDomRefCallback.ts +12 -0
- package/hooks/useDragSorter.tsx +151 -0
- package/hooks/useEventCallback.ts +47 -0
- package/hooks/useGlobalConfig.ts +14 -0
- package/hooks/useGlobalIcon.ts +14 -0
- package/hooks/useLastest.ts +13 -0
- package/hooks/useLayoutEffect.ts +7 -0
- package/hooks/useMouseEvent.ts +142 -0
- package/hooks/useMutationObserver.ts +56 -0
- package/hooks/usePopper.ts +189 -0
- package/hooks/useRipple.ts +0 -0
- package/hooks/useSetState.ts +25 -0
- package/hooks/useVirtualScroll.ts +246 -0
- package/hooks/useWindowSize.ts +31 -0
- package/index.ts +70 -0
- package/input/Input.tsx +383 -0
- package/input/InputGroup.tsx +29 -0
- package/input/defaultProps.ts +22 -0
- package/input/index.ts +11 -0
- package/input/style/css.js +1 -0
- package/input/style/index.js +1 -0
- package/input/type.ts +219 -0
- package/loading/Gradient.tsx +36 -0
- package/loading/Loading.tsx +169 -0
- package/loading/circleAdapter.ts +44 -0
- package/loading/defaultProps.ts +12 -0
- package/loading/index.ts +13 -0
- package/loading/style/css.js +1 -0
- package/loading/style/index.js +1 -0
- package/loading/type.ts +71 -0
- package/loading/utils/setStyle.ts +13 -0
- package/myform/index.ts +0 -0
- package/notification/Notify.ts +24 -0
- package/notification/NotifyContainer.tsx +90 -0
- package/notification/NotifyContext.tsx +173 -0
- package/notification/NotifyItem.tsx +121 -0
- package/notification/index.ts +3 -0
- package/notification/style/css.js +1 -0
- package/notification/style/index.js +1 -0
- package/notification/type.ts +23 -0
- package/package.json +52 -0
- package/popup/Popup.tsx +264 -0
- package/popup/defaultProps.ts +13 -0
- package/popup/hooks/useTrigger.ts +276 -0
- package/popup/index.ts +6 -0
- package/popup/style/css.js +1 -0
- package/popup/style/index.js +1 -0
- package/popup/type.ts +130 -0
- package/portal/Portal.tsx +63 -0
- package/portal/index.ts +1 -0
- package/select/Option.tsx +162 -0
- package/select/OptionGroup.tsx +30 -0
- package/select/PopupContent.tsx +271 -0
- package/select/Select.tsx +586 -0
- package/select/defaultProps.ts +27 -0
- package/select/hooks/useOptions.ts +120 -0
- package/select/hooks/usePanelVirtualScroll.ts +111 -0
- package/select/index.ts +9 -0
- package/select/style/css.js +1 -0
- package/select/style/index.js +2 -0
- package/select/type.ts +382 -0
- package/select/utils/helper.ts +256 -0
- package/select-input/SelectInput.tsx +98 -0
- package/select-input/defaultProps.ts +15 -0
- package/select-input/hook/useMultiple.tsx +100 -0
- package/select-input/hook/useOverlayInnerStyle.ts +84 -0
- package/select-input/hook/useSingle.tsx +112 -0
- package/select-input/index.ts +6 -0
- package/select-input/interface.ts +18 -0
- package/select-input/style/css.js +1 -0
- package/select-input/style/index.js +1 -0
- package/select-input/type.ts +280 -0
- package/space/defaultProps.ts +0 -0
- package/space/index.ts +0 -0
- package/space/type.ts +0 -0
- package/style/index.js +2 -0
- package/styles/_global.scss +39 -0
- package/styles/_vars.scss +386 -0
- package/styles/components/alert/_index.scss +175 -0
- package/styles/components/alert/_vars.scss +39 -0
- package/styles/components/badge/_index.scss +70 -0
- package/styles/components/badge/_vars.scss +25 -0
- package/styles/components/button/_index.scss +511 -0
- package/styles/components/button/_mixins.scss +39 -0
- package/styles/components/button/_vars.scss +122 -0
- package/styles/components/checkbox/_index.scss +158 -0
- package/styles/components/checkbox/_mixin.scss +0 -0
- package/styles/components/checkbox/_var.scss +60 -0
- package/styles/components/dialog/_animate.scss +135 -0
- package/styles/components/dialog/_index.scss +311 -0
- package/styles/components/dialog/_mixins.scss +0 -0
- package/styles/components/dialog/_vars.scss +59 -0
- package/styles/components/form/_index.scss +174 -0
- package/styles/components/form/_mixins.scss +76 -0
- package/styles/components/form/_vars.scss +100 -0
- package/styles/components/input/_index.scss +349 -0
- package/styles/components/input/_map.scss +0 -0
- package/styles/components/input/_mixins.scss +116 -0
- package/styles/components/input/_vars.scss +134 -0
- package/styles/components/loading/_index.scss +112 -0
- package/styles/components/loading/_vars.scss +39 -0
- package/styles/components/notification/_index.scss +160 -0
- package/styles/components/notification/_mixins.scss +12 -0
- package/styles/components/notification/_vars.scss +59 -0
- package/styles/components/popup/_index.scss +82 -0
- package/styles/components/popup/_mixin.scss +149 -0
- package/styles/components/popup/_var.scss +31 -0
- package/styles/components/select/_index.scss +290 -0
- package/styles/components/select/_var.scss +65 -0
- package/styles/components/select-input/_index.scss +5 -0
- package/styles/components/select-input/_var.scss +3 -0
- package/styles/components/switch/_index.scss +279 -0
- package/styles/components/switch/_mixins.scss +0 -0
- package/styles/components/switch/_vars.scss +61 -0
- package/styles/components/tag/_index.scss +316 -0
- package/styles/components/tag/_var.scss +85 -0
- package/styles/components/tag-input/_index.scss +163 -0
- package/styles/components/tag-input/_vars.scss +16 -0
- package/styles/globals.css +250 -0
- package/styles/mixins/_focus.scss +7 -0
- package/styles/mixins/_layout.scss +32 -0
- package/styles/mixins/_reset.scss +10 -0
- package/styles/mixins/_scrollbar.scss +31 -0
- package/styles/mixins/_text.scss +48 -0
- package/styles/rillple.css +16 -0
- package/styles/scrollbar.css +42 -0
- package/styles/themes/_dark.scss +191 -0
- package/styles/themes/_font.scss +79 -0
- package/styles/themes/_index.scss +5 -0
- package/styles/themes/_light.scss +190 -0
- package/styles/themes/_radius.scss +9 -0
- package/styles/themes/_size.scss +68 -0
- package/styles/themes.css +66 -0
- package/styles/utilities/_animation.scss +57 -0
- package/styles/utilities/_tips.scss +9 -0
- package/switch/Switch.tsx +120 -0
- package/switch/defaultProps.ts +3 -0
- package/switch/index.ts +7 -0
- package/switch/style/css.js +1 -0
- package/switch/style/index.js +1 -0
- package/switch/type.ts +46 -0
- package/tag/Tag.tsx +149 -0
- package/tag/defaultProps.ts +19 -0
- package/tag/index.ts +8 -0
- package/tag/style/css.js +1 -0
- package/tag/style/index.js +1 -0
- package/tag/type.ts +170 -0
- package/tag-input/TagInput.tsx +215 -0
- package/tag-input/defaultProps.ts +15 -0
- package/tag-input/hooks/useHover.ts +28 -0
- package/tag-input/hooks/useTagList.tsx +131 -0
- package/tag-input/hooks/useTagScroll.ts +105 -0
- package/tag-input/index.ts +9 -0
- package/tag-input/style/css.js +1 -0
- package/tag-input/style/index.js +1 -0
- package/tag-input/type.ts +224 -0
- package/tag-input/useTagList.tsx +131 -0
- package/utils/composeRefs.ts +14 -0
- package/utils/dom.ts +29 -0
- package/utils/forwardRefWithStatics.ts +12 -0
- package/utils/getScrollbarWidth.ts +11 -0
- package/utils/helper.ts +161 -0
- package/utils/isFragment.ts +22 -0
- package/utils/listener.ts +37 -0
- package/utils/noop.ts +3 -0
- package/utils/parentTNode.ts +38 -0
- package/utils/parseTNode.ts +38 -0
- package/utils/react-render.ts +108 -0
- package/utils/ref.ts +6 -0
- package/utils/refs.ts +81 -0
- package/utils/style.ts +60 -0
- package/utils/transition.ts +28 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
@import 'tailwindcss';
|
|
2
|
+
@import './themes.css';
|
|
3
|
+
@import './rillple.css';
|
|
4
|
+
@import './scrollbar.css';
|
|
5
|
+
@import 'tw-animate-css';
|
|
6
|
+
|
|
7
|
+
@theme inline {
|
|
8
|
+
--color-background: var(--background);
|
|
9
|
+
--color-foreground: var(--foreground);
|
|
10
|
+
--color-primary: var(--primary);
|
|
11
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
12
|
+
--color-default: var(--default);
|
|
13
|
+
--color-default-foreground: var(--default-foreground);
|
|
14
|
+
--color-success: var(--success);
|
|
15
|
+
--color-success-foreground: var(--success-foreground);
|
|
16
|
+
--color-warning: var(--warning);
|
|
17
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
18
|
+
--color-danger: var(--danger);
|
|
19
|
+
--color-danger-foreground: var(--danger-foreground);
|
|
20
|
+
--color-border: var(--border);
|
|
21
|
+
--color-input: var(--input);
|
|
22
|
+
--color-accent: var(--accent);
|
|
23
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
24
|
+
--color-muted: var(--muted);
|
|
25
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
26
|
+
--color-secondary: var(--secondary);
|
|
27
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
28
|
+
--color-success-foreground: var(--success-foreground);
|
|
29
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
30
|
+
--color-danger-foreground: var(--danger-foreground);
|
|
31
|
+
--color-ring: var(--ring);
|
|
32
|
+
--color-radius: var(--radius);
|
|
33
|
+
--color-chart-1: var(--chart-1);
|
|
34
|
+
--color-chart-2: var(--chart-2);
|
|
35
|
+
--color-chart-3: var(--chart-3);
|
|
36
|
+
--color-chart-4: var(--chart-4);
|
|
37
|
+
--color-chart-5: var(--chart-5);
|
|
38
|
+
--color-sidebar-background: var(--sidebar-background);
|
|
39
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
40
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
41
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
42
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
43
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
44
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
45
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
46
|
+
--color-info: var(--info);
|
|
47
|
+
--color-info-foreground: var(--info-foreground);
|
|
48
|
+
--color-success-background: var(--success-background);
|
|
49
|
+
--color-info-background: var(--info-background);
|
|
50
|
+
--color-warning-background: var(--warning-background);
|
|
51
|
+
--color-danger-background: var(--danger-background);
|
|
52
|
+
--color-success-border: var(--success-border);
|
|
53
|
+
--color-info-border: var(--info-border);
|
|
54
|
+
--color-warning-border: var(--warning-border);
|
|
55
|
+
--color-danger-border: var(--danger-border);
|
|
56
|
+
--color-shadow: var(--shadow);
|
|
57
|
+
|
|
58
|
+
--color-popover: var(--popover);
|
|
59
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
60
|
+
|
|
61
|
+
--animate-slide-in: slide-in 300ms ease-in-out;
|
|
62
|
+
|
|
63
|
+
@keyframes slide-in {
|
|
64
|
+
from {
|
|
65
|
+
transform: translateY(-100%);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
to {
|
|
69
|
+
transform: translateY(0);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
--animate-fade-in: fade-in 300ms ease-in-out;
|
|
74
|
+
|
|
75
|
+
@keyframes fade-in {
|
|
76
|
+
from {
|
|
77
|
+
opacity: 0;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
to {
|
|
81
|
+
opacity: 1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
--animate-fade-out: fade-out 300ms ease-in-out;
|
|
86
|
+
|
|
87
|
+
@keyframes fade-out {
|
|
88
|
+
form {
|
|
89
|
+
opacity: 1;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
to {
|
|
93
|
+
opacity: 0;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
--animate-scale-in-center: scale-in-center 0.2s
|
|
98
|
+
cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
|
99
|
+
|
|
100
|
+
@keyframes scale-in-center {
|
|
101
|
+
0% {
|
|
102
|
+
transform: scale(0);
|
|
103
|
+
opacity: 0;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
100% {
|
|
107
|
+
transform: scale(1);
|
|
108
|
+
opacity: 1;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
--animate-scale-out-center: scale-out-center 0.2s
|
|
113
|
+
cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
|
114
|
+
|
|
115
|
+
@keyframes scale-out-center {
|
|
116
|
+
0% {
|
|
117
|
+
transform: scale(1);
|
|
118
|
+
opacity: 1;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
100% {
|
|
122
|
+
transform: scale(0);
|
|
123
|
+
opacity: 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
:root {
|
|
129
|
+
--background: oklch(100% 0 0);
|
|
130
|
+
--foreground: oklch(25% 0.01 262);
|
|
131
|
+
--card: oklch(100% 0 0);
|
|
132
|
+
--card-foreground: oklch(25% 0.01 262);
|
|
133
|
+
--popover: rgb(255, 255, 255);
|
|
134
|
+
--popover-foreground: oklch(25% 0.01 262);
|
|
135
|
+
--primary: oklch(27% 0.01 262);
|
|
136
|
+
--primary-foreground: oklch(98% 0.005 262);
|
|
137
|
+
--secondary: oklch(96% 0.01 262);
|
|
138
|
+
--secondary-foreground: oklch(27% 0.01 262);
|
|
139
|
+
--muted: oklch(96% 0.01 262);
|
|
140
|
+
--muted-foreground: oklch(46% 0.01 262);
|
|
141
|
+
--accent: oklch(97% 0 0);
|
|
142
|
+
--accent-foreground: oklch(20.5% 0 0);
|
|
143
|
+
--destructive: oklch(65% 0.25 29);
|
|
144
|
+
--destructive-foreground: oklch(98% 0.005 262);
|
|
145
|
+
--border: oklch(92.2% 0 0);
|
|
146
|
+
--input: oklch(92.2% 0 0);
|
|
147
|
+
--ring: oklch(65% 0.01 262);
|
|
148
|
+
--radius: 0.5rem;
|
|
149
|
+
--chart-1: oklch(70% 0.15 30);
|
|
150
|
+
--chart-2: oklch(55% 0.15 180);
|
|
151
|
+
--chart-3: oklch(35% 0.1 220);
|
|
152
|
+
--chart-4: oklch(75% 0.15 85);
|
|
153
|
+
--chart-5: oklch(72% 0.18 45);
|
|
154
|
+
--sidebar-background: oklch(98% 0.005 262);
|
|
155
|
+
--sidebar-foreground: oklch(35% 0.01 262);
|
|
156
|
+
--sidebar-primary: oklch(27% 0.01 262);
|
|
157
|
+
--sidebar-primary-foreground: oklch(98% 0.005 262);
|
|
158
|
+
--sidebar-accent: oklch(96% 0.01 262);
|
|
159
|
+
--sidebar-accent-foreground: oklch(27% 0.01 262);
|
|
160
|
+
--sidebar-border: oklch(88% 0.02 262);
|
|
161
|
+
--sidebar-ring: oklch(65% 0.01 262);
|
|
162
|
+
--info: oklch(70% 0.3 250);
|
|
163
|
+
/* 蓝色淡色背景 */
|
|
164
|
+
--info-foreground: oklch(98% 0.005 262);
|
|
165
|
+
|
|
166
|
+
--success: oklch(70% 0.3 142);
|
|
167
|
+
/* 绿色淡色背景 */
|
|
168
|
+
--success-foreground: oklch(98% 0.005 262);
|
|
169
|
+
|
|
170
|
+
--warning: oklch(70% 0.3 80);
|
|
171
|
+
/* 黄色更亮一些 */
|
|
172
|
+
--warning-foreground: oklch(98% 0.005 262);
|
|
173
|
+
|
|
174
|
+
--danger: oklch(65% 0.25 29);
|
|
175
|
+
/* 红色偏橘 */
|
|
176
|
+
--danger-foreground: oklch(98% 0.005 262);
|
|
177
|
+
|
|
178
|
+
--success-background: oklch(0.971 0.024 142.57);
|
|
179
|
+
--info-background: oklch(0.945 0.051 248.85);
|
|
180
|
+
--warning-background: oklch(0.964 0.046 103.25);
|
|
181
|
+
--danger-background: oklch(0.949 0.049 28.18);
|
|
182
|
+
|
|
183
|
+
--success-border: oklch(0.835 0.141 139.67);
|
|
184
|
+
--info-border: oklch(0.792 0.139 250.42);
|
|
185
|
+
--warning-border: oklch(0.886 0.118 94.72);
|
|
186
|
+
--danger-border: oklch(0.841 0.104 29.18);
|
|
187
|
+
|
|
188
|
+
--shadow:
|
|
189
|
+
0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12),
|
|
190
|
+
0 9px 28px 8px rgba(0, 0, 0, 0.05);
|
|
191
|
+
--shadow-2:
|
|
192
|
+
0 3px 14px 2px rgba(0, 0, 0, 0.05), 0 8px 10px 1px rgba(0, 0, 0, 0.06),
|
|
193
|
+
0 5px 5px -3px rgba(0, 0, 0, 0.1);
|
|
194
|
+
--shadow-insert-left: inset -0.5px 0 0 #e7eaef;
|
|
195
|
+
--shadow-insert-right: inset 0.5px 0 0 #e7eaef;
|
|
196
|
+
--shadow-insert-top: inset 0 0.5px 0 #e7eaef;
|
|
197
|
+
--shadow-insert-bottom: inset 0 -0.5px 0 #e7eaef;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* 公共的dark变量 */
|
|
201
|
+
.dark {
|
|
202
|
+
--background: oklch(0.2393 0 0);
|
|
203
|
+
/* #1f1f1f */
|
|
204
|
+
--foreground: oklch(1 0 0);
|
|
205
|
+
/* 纯白,已是 OKLCH */
|
|
206
|
+
--success-background: oklch(0.173 0.032 147.99);
|
|
207
|
+
/* #162312 */
|
|
208
|
+
--info-background: oklch(0.166 0.03 261.94);
|
|
209
|
+
/* #111a2c */
|
|
210
|
+
--warning-background: oklch(0.224 0.044 78.87);
|
|
211
|
+
/* #2b2111 */
|
|
212
|
+
--danger-background: oklch(0.216 0.038 24.55);
|
|
213
|
+
/* #2c1618 */
|
|
214
|
+
|
|
215
|
+
--success-border: oklch(0.274 0.06 142.26);
|
|
216
|
+
/* #274916 */
|
|
217
|
+
--info-border: oklch(0.272 0.071 259.41);
|
|
218
|
+
/* #15325b */
|
|
219
|
+
--warning-border: oklch(0.394 0.088 81.45);
|
|
220
|
+
/* #594214 */
|
|
221
|
+
--danger-border: oklch(0.368 0.068 27.47);
|
|
222
|
+
/* #5b2526 */
|
|
223
|
+
--input: oklch(100% 0 0/0.15);
|
|
224
|
+
--shadow:
|
|
225
|
+
0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12),
|
|
226
|
+
0 9px 28px 8px rgba(0, 0, 0, 0.05);
|
|
227
|
+
--popover: oklch(0.2393 0 0);
|
|
228
|
+
--popover-foreground: oklch(1 0 0);
|
|
229
|
+
--accent: oklch(37.1% 0 0);
|
|
230
|
+
--accent-foreground: oklch(98.5% 0 0);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* 滚动条 */
|
|
234
|
+
::-webkit-scrollbar {
|
|
235
|
+
width: 5px;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
::-webkit-scrollbar-track {
|
|
239
|
+
background: transparent;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
::-webkit-scrollbar-thumb {
|
|
243
|
+
background: hsl(var(--border));
|
|
244
|
+
border-radius: 5px;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
* {
|
|
248
|
+
scrollbar-width: thin;
|
|
249
|
+
scrollbar-color: hsl(var(--border)) transparent;
|
|
250
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
@mixin horizontal-vertical-center-with-flex() {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@mixin fill-with-position-absolute() {
|
|
8
|
+
position: absolute;
|
|
9
|
+
left: 0;
|
|
10
|
+
right: 0;
|
|
11
|
+
top: 0;
|
|
12
|
+
bottom: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@mixin list-style-none() {
|
|
16
|
+
list-style: none;
|
|
17
|
+
padding: 0;
|
|
18
|
+
margin: 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@mixin input-visually-hidden() {
|
|
22
|
+
border: 0;
|
|
23
|
+
clip: rect(0 0 0 0);
|
|
24
|
+
height: 1px;
|
|
25
|
+
margin: -1px;
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
padding: 0;
|
|
28
|
+
position: absolute;
|
|
29
|
+
width: 1px;
|
|
30
|
+
outline: 0;
|
|
31
|
+
appearance: none;
|
|
32
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
@import '../vars.scss';
|
|
2
|
+
|
|
3
|
+
// 滚动条样式 mixin
|
|
4
|
+
@mixin scrollbar($size: 6px, $borderSize: 0px) {
|
|
5
|
+
// Safari/Chrome 中滚动条样式设置
|
|
6
|
+
&::-webkit-scrollbar {
|
|
7
|
+
width: $size;
|
|
8
|
+
height: $size;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
&::-webkit-scrollbar-thumb {
|
|
12
|
+
border: $borderSize solid transparent;
|
|
13
|
+
background-clip: content-box;
|
|
14
|
+
background-color: $scrollbar-color;
|
|
15
|
+
border-radius: calc(#{$size} * 2 - 1px);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&::-webkit-scrollbar-thumb:vertical:hover,
|
|
19
|
+
&::-webkit-scrollbar-thumb:horizontal:hover {
|
|
20
|
+
background-color: $scrollbar-hover-color;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// 隐藏滚动条 mixin
|
|
25
|
+
@mixin hideScrollbar {
|
|
26
|
+
/* Chrome / Safari */
|
|
27
|
+
&::-webkit-scrollbar {
|
|
28
|
+
display: none;
|
|
29
|
+
width: 0 !important;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// 变量定义
|
|
2
|
+
$tips-text-default: $text-color-placeholder;
|
|
3
|
+
$tips-text-error: $error-color;
|
|
4
|
+
$tips-text-warning: $warning-color;
|
|
5
|
+
$tips-text-success: $success-color;
|
|
6
|
+
|
|
7
|
+
// 建议维护一个 map,方便按状态取值
|
|
8
|
+
$tips-text-colors: (
|
|
9
|
+
default: $tips-text-default,
|
|
10
|
+
error: $tips-text-error,
|
|
11
|
+
warning: $tips-text-warning,
|
|
12
|
+
success: $tips-text-success,
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
// 单行省略
|
|
16
|
+
@mixin text-ellipsis() {
|
|
17
|
+
white-space: nowrap;
|
|
18
|
+
word-wrap: normal;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
text-overflow: ellipsis;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// 多行省略
|
|
24
|
+
@mixin text-ellipsis-multi-line($line: 2) {
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
|
|
27
|
+
/* stylelint-disable-next-line */
|
|
28
|
+
display: -webkit-box;
|
|
29
|
+
-webkit-line-clamp: $line;
|
|
30
|
+
|
|
31
|
+
/* stylelint-disable-next-line */
|
|
32
|
+
-webkit-box-orient: vertical;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// 提示文本状态
|
|
36
|
+
@mixin tips-text-status($status) {
|
|
37
|
+
.#{$prefix}-tips.#{$prefix}-is-#{$status} {
|
|
38
|
+
// color: map-get($tips-text-colors, $status);
|
|
39
|
+
color: #000;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
$tips-text-colors: (
|
|
44
|
+
default: $tips-text-default,
|
|
45
|
+
success: $tips-text-success,
|
|
46
|
+
warning: $tips-text-warning,
|
|
47
|
+
error: $tips-text-error,
|
|
48
|
+
);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
.ripple {
|
|
2
|
+
position: absolute;
|
|
3
|
+
border-radius: 50%;
|
|
4
|
+
background: rgba(255, 255, 255, 0.4);
|
|
5
|
+
transform: scale(0);
|
|
6
|
+
animation: ripple-animation 600ms linear;
|
|
7
|
+
pointer-events: none;
|
|
8
|
+
z-index: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@keyframes ripple-animation {
|
|
12
|
+
to {
|
|
13
|
+
transform: scale(4);
|
|
14
|
+
opacity: 0;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* 自定义滚动条样式 */
|
|
2
|
+
.scrollbar-thin {
|
|
3
|
+
scrollbar-width: auto;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.scrollbar-thin::-webkit-scrollbar {
|
|
7
|
+
width: 6px;
|
|
8
|
+
height: 6px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.scrollbar-thin::-webkit-scrollbar-track {
|
|
12
|
+
background: transparent;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
16
|
+
background-color: #d1d5db;
|
|
17
|
+
border-radius: 3px;
|
|
18
|
+
transition: background-color 0.2s ease;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.scrollbar-thin::-webkit-scrollbar-thumb:hover {
|
|
22
|
+
background-color: #9ca3af;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* 暗色模式 */
|
|
26
|
+
.dark .scrollbar-thin::-webkit-scrollbar-thumb {
|
|
27
|
+
background-color: #4b5563;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.dark .scrollbar-thin::-webkit-scrollbar-thumb:hover {
|
|
31
|
+
background-color: #6b7280;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* 隐藏滚动条但保持功能 */
|
|
35
|
+
.scrollbar-hide {
|
|
36
|
+
-ms-overflow-style: none;
|
|
37
|
+
scrollbar-width: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.scrollbar-hide::-webkit-scrollbar {
|
|
41
|
+
display: none;
|
|
42
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
:root[theme-mode='dark'] {
|
|
2
|
+
--td-brand-color-1: #1b2f51;
|
|
3
|
+
--td-brand-color-2: #173463;
|
|
4
|
+
--td-brand-color-3: #143975;
|
|
5
|
+
--td-brand-color-4: #103d88;
|
|
6
|
+
--td-brand-color-5: #0d429a;
|
|
7
|
+
--td-brand-color-6: #054bbe;
|
|
8
|
+
--td-brand-color-7: #2667d4;
|
|
9
|
+
--td-brand-color-8: #4582e6;
|
|
10
|
+
--td-brand-color-9: #699ef5;
|
|
11
|
+
--td-brand-color-10: #96bbf8;
|
|
12
|
+
--td-warning-color-1: #4f2a1d;
|
|
13
|
+
--td-warning-color-2: #582f21;
|
|
14
|
+
--td-warning-color-3: #733c23;
|
|
15
|
+
--td-warning-color-4: #a75d2b;
|
|
16
|
+
--td-warning-color-5: #cf6e2d;
|
|
17
|
+
--td-warning-color-6: #dc7633;
|
|
18
|
+
--td-warning-color-7: #e8935c;
|
|
19
|
+
--td-warning-color-8: #ecbf91;
|
|
20
|
+
--td-warning-color-9: #eed7bf;
|
|
21
|
+
--td-warning-color-10: #f3e9dc;
|
|
22
|
+
--td-error-color-1: #472324;
|
|
23
|
+
--td-error-color-2: #5e2a2d;
|
|
24
|
+
--td-error-color-3: #703439;
|
|
25
|
+
--td-error-color-4: #83383e;
|
|
26
|
+
--td-error-color-5: #a03f46;
|
|
27
|
+
--td-error-color-6: #c64751;
|
|
28
|
+
--td-error-color-7: #de6670;
|
|
29
|
+
--td-error-color-8: #ec888e;
|
|
30
|
+
--td-error-color-9: #edb1b6;
|
|
31
|
+
--td-error-color-10: #eeced0;
|
|
32
|
+
--td-success-color-1: #193a2a;
|
|
33
|
+
--td-success-color-2: #1a4230;
|
|
34
|
+
--td-success-color-3: #17533d;
|
|
35
|
+
--td-success-color-4: #0d7a55;
|
|
36
|
+
--td-success-color-5: #059465;
|
|
37
|
+
--td-success-color-6: #43af8a;
|
|
38
|
+
--td-success-color-7: #46bf96;
|
|
39
|
+
--td-success-color-8: #80d2b6;
|
|
40
|
+
--td-success-color-9: #b4e1d3;
|
|
41
|
+
--td-success-color-10: #deede8;
|
|
42
|
+
--td-gray-color-1: #f3f3f3;
|
|
43
|
+
--td-gray-color-2: #eee;
|
|
44
|
+
--td-gray-color-3: #e8e8e8;
|
|
45
|
+
--td-gray-color-4: #ddd;
|
|
46
|
+
--td-gray-color-5: #c6c6c6;
|
|
47
|
+
--td-gray-color-6: #a6a6a6;
|
|
48
|
+
--td-gray-color-7: #8b8b8b;
|
|
49
|
+
--td-gray-color-8: #777;
|
|
50
|
+
--td-gray-color-9: #5e5e5e;
|
|
51
|
+
--td-gray-color-10: #4b4b4b;
|
|
52
|
+
--td-gray-color-11: #393939;
|
|
53
|
+
--td-gray-color-12: #2c2c2c;
|
|
54
|
+
--td-gray-color-13: #242424;
|
|
55
|
+
--td-gray-color-14: #181818;
|
|
56
|
+
|
|
57
|
+
// 文字 & 图标 颜色
|
|
58
|
+
--td-font-white-1: rgba(255, 255, 255, 90%);
|
|
59
|
+
--td-font-white-2: rgba(255, 255, 255, 55%);
|
|
60
|
+
--td-font-white-3: rgba(255, 255, 255, 35%);
|
|
61
|
+
--td-font-white-4: rgba(255, 255, 255, 22%);
|
|
62
|
+
--td-font-gray-1: rgba(0, 0, 0, 90%);
|
|
63
|
+
--td-font-gray-2: rgba(0, 0, 0, 60%);
|
|
64
|
+
--td-font-gray-3: rgba(0, 0, 0, 40%);
|
|
65
|
+
--td-font-gray-4: rgba(0, 0, 0, 26%);
|
|
66
|
+
|
|
67
|
+
// 基础颜色
|
|
68
|
+
--td-brand-color: var(--td-brand-color-8); // 色彩-品牌-可操作
|
|
69
|
+
--td-warning-color: var(--td-warning-color-5); // 色彩-功能-警告
|
|
70
|
+
--td-error-color: var(--td-error-color-6); // 色彩-功能-失败
|
|
71
|
+
--td-success-color: var(--td-success-color-5); // 色彩-功能-成功
|
|
72
|
+
|
|
73
|
+
// 基础颜色的扩展 用于 hover / 聚焦 / 禁用 / 点击 等状态
|
|
74
|
+
--td-brand-color-hover: var(--td-brand-color-7); // hover态
|
|
75
|
+
--td-brand-color-focus: var(--td-brand-color-2); // focus态,包括鼠标和键盘
|
|
76
|
+
--td-brand-color-active: var(--td-brand-color-9); // 点击态
|
|
77
|
+
--td-brand-color-disabled: var(--td-brand-color-3); // 禁用态
|
|
78
|
+
--td-brand-color-light: var(--td-brand-color-1); // 浅色的选中态
|
|
79
|
+
--td-brand-color-light-hover: var(--td-brand-color-2);
|
|
80
|
+
|
|
81
|
+
// 警告色扩展
|
|
82
|
+
--td-warning-color-hover: var(--td-warning-color-4);
|
|
83
|
+
--td-warning-color-focus: var(--td-warning-color-2);
|
|
84
|
+
--td-warning-color-active: var(--td-warning-color-6);
|
|
85
|
+
--td-warning-color-disabled: var(--td-warning-color-3);
|
|
86
|
+
--td-warning-color-light: var(--td-warning-color-1);
|
|
87
|
+
--td-warning-color-light-hover: var(--td-warning-color-2);
|
|
88
|
+
|
|
89
|
+
// 失败/错误色扩展
|
|
90
|
+
--td-error-color-hover: var(--td-error-color-5);
|
|
91
|
+
--td-error-color-focus: var(--td-error-color-2);
|
|
92
|
+
--td-error-color-active: var(--td-error-color-7);
|
|
93
|
+
--td-error-color-disabled: var(--td-error-color-3);
|
|
94
|
+
--td-error-color-light: var(--td-error-color-1);
|
|
95
|
+
--td-error-color-light-hover: var(--td-error-color-2);
|
|
96
|
+
|
|
97
|
+
// 成功色扩展
|
|
98
|
+
--td-success-color-hover: var(--td-success-color-4);
|
|
99
|
+
--td-success-color-focus: var(--td-success-color-2);
|
|
100
|
+
--td-success-color-active: var(--td-success-color-6);
|
|
101
|
+
--td-success-color-disabled: var(--td-success-color-3);
|
|
102
|
+
--td-success-color-light: var(--td-success-color-1);
|
|
103
|
+
--td-success-color-light-hover: var(--td-success-color-2);
|
|
104
|
+
|
|
105
|
+
// 遮罩
|
|
106
|
+
--td-mask-active: rgba(0, 0, 0, 40%); // 遮罩-弹出
|
|
107
|
+
--td-mask-disabled: rgba(0, 0, 0, 60%); // 遮罩-禁用
|
|
108
|
+
--td-mask-background: rgba(36, 36, 36, 96%); // 二维码遮罩
|
|
109
|
+
|
|
110
|
+
// 背景色
|
|
111
|
+
--td-bg-color-page: var(--td-gray-color-14); // 色彩 - page
|
|
112
|
+
--td-bg-color-container: var(--td-gray-color-13); // 色彩 - 容器
|
|
113
|
+
--td-bg-color-container-hover: var(--td-gray-color-12); // 色彩 - 容器 - hover
|
|
114
|
+
--td-bg-color-container-active: var(
|
|
115
|
+
--td-gray-color-10
|
|
116
|
+
); // 色彩 - 容器 - active
|
|
117
|
+
--td-bg-color-container-select: var(
|
|
118
|
+
--td-gray-color-9
|
|
119
|
+
); // 色彩 - 容器 - select
|
|
120
|
+
--td-bg-color-secondarycontainer: var(--td-gray-color-12); // 色彩 - 次级容器
|
|
121
|
+
--td-bg-color-secondarycontainer-hover: var(
|
|
122
|
+
--td-gray-color-11
|
|
123
|
+
); // 色彩 - 次级容器 - hover
|
|
124
|
+
--td-bg-color-secondarycontainer-active: var(
|
|
125
|
+
--td-gray-color-9
|
|
126
|
+
); // 色彩 - 次级容器 - active
|
|
127
|
+
--td-bg-color-component: var(--td-gray-color-11); // 色彩 - 组件
|
|
128
|
+
--td-bg-color-component-hover: var(--td-gray-color-10); // 色彩 - 组件 - hover
|
|
129
|
+
--td-bg-color-component-active: var(
|
|
130
|
+
--td-gray-color-9
|
|
131
|
+
); // 色彩 - 组件 - active
|
|
132
|
+
--td-bg-color-secondarycomponent: var(--td-gray-color-10); // 色彩 - 次级组件
|
|
133
|
+
--td-bg-color-secondarycomponent-hover: var(
|
|
134
|
+
--td-gray-color-9
|
|
135
|
+
); // 色彩 - 次级组件 - hover
|
|
136
|
+
--td-bg-color-secondarycomponent-active: var(
|
|
137
|
+
--td-gray-color-8
|
|
138
|
+
); // 色彩 - 次级组件 - active
|
|
139
|
+
--td-bg-color-component-disabled: var(
|
|
140
|
+
--td-gray-color-12
|
|
141
|
+
); // 色彩 - 组件 - disabled
|
|
142
|
+
|
|
143
|
+
// 特殊组件背景色,目前只用于 button、input 组件多主题场景,浅色主题下固定为白色,深色主题下为 transparent 适配背景颜色
|
|
144
|
+
--td-bg-color-specialcomponent: transparent;
|
|
145
|
+
|
|
146
|
+
// 文本颜色
|
|
147
|
+
--td-text-color-primary: var(--td-font-white-1); // 色彩-文字-主要
|
|
148
|
+
--td-text-color-secondary: var(--td-font-white-2); // 色彩-文字-次要
|
|
149
|
+
--td-text-color-placeholder: var(--td-font-white-3); // 色彩-文字-占位符/说明
|
|
150
|
+
--td-text-color-disabled: var(--td-font-white-4); // 色彩-文字-禁用
|
|
151
|
+
--td-text-color-anti: #fff; // 色彩-文字-反色
|
|
152
|
+
--td-text-color-brand: var(--td-brand-color-8); // 色彩-文字-品牌
|
|
153
|
+
--td-text-color-link: var(--td-brand-color-8); // 色彩-文字-链接
|
|
154
|
+
--td-text-color-watermark: rgba(255, 255, 255, 10%); // 色彩-文字-水印颜色
|
|
155
|
+
|
|
156
|
+
// 分割线
|
|
157
|
+
--td-border-level-1-color: var(--td-gray-color-11);
|
|
158
|
+
--td-component-stroke: var(--td-gray-color-11);
|
|
159
|
+
// 边框
|
|
160
|
+
--td-border-level-2-color: var(--td-gray-color-9);
|
|
161
|
+
--td-component-border: var(--td-gray-color-9);
|
|
162
|
+
|
|
163
|
+
// 基础/下层 投影 hover 使用的组件包括:表格 /
|
|
164
|
+
--td-shadow-1:
|
|
165
|
+
0 4px 6px rgba(0, 0, 0, 6%), 0 1px 10px rgba(0, 0, 0, 8%),
|
|
166
|
+
0 2px 4px rgba(0, 0, 0, 12%);
|
|
167
|
+
// 中层投影 下拉 使用的组件包括:下拉菜单 / 气泡确认框 / 选择器 /
|
|
168
|
+
--td-shadow-2:
|
|
169
|
+
0 8px 10px rgba(0, 0, 0, 12%), 0 3px 14px rgba(0, 0, 0, 10%),
|
|
170
|
+
0 5px 5px rgba(0, 0, 0, 16%);
|
|
171
|
+
// 上层投影(警示/弹窗)使用的组件包括:全局提示 / 消息通知
|
|
172
|
+
--td-shadow-3:
|
|
173
|
+
0 16px 24px rgba(0, 0, 0, 14%), 0 6px 30px rgba(0, 0, 0, 12%),
|
|
174
|
+
0 8px 10px rgba(0, 0, 0, 20%);
|
|
175
|
+
// 内投影 用于弹窗类组件(气泡确认框 / 全局提示 / 消息通知)的内描边
|
|
176
|
+
|
|
177
|
+
--td-shadow-inset-top: inset 0 0.5px 0 #5e5e5e;
|
|
178
|
+
--td-shadow-inset-right: inset 0.5px 0 0 #5e5e5e;
|
|
179
|
+
--td-shadow-inset-bottom: inset 0 -0.5px 0 #5e5e5e;
|
|
180
|
+
--td-shadow-inset-left: inset -0.5px 0 0 #5e5e5e;
|
|
181
|
+
|
|
182
|
+
// table 特定阴影
|
|
183
|
+
--td-table-shadow-color: rgba(0, 0, 0, 55%);
|
|
184
|
+
|
|
185
|
+
// 滚动条颜色
|
|
186
|
+
--td-scrollbar-color: rgba(255, 255, 255, 10%);
|
|
187
|
+
// 滚动条悬浮颜色( hover )
|
|
188
|
+
--td-scrollbar-hover-color: rgba(255, 255, 255, 30%);
|
|
189
|
+
// 滚动条轨道颜色,不能是带透明度,否则纵向滚动时,横向滚动条会穿透
|
|
190
|
+
--td-scroll-track-color: #333;
|
|
191
|
+
}
|