@xihan-ui/styles 1.0.0-alpha.2 → 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/CHANGELOG.md +2177 -0
- package/README.md +1 -1
- package/css/accordion.css +80 -6
- package/css/alert.css +43 -14
- package/css/anchor.css +8 -8
- package/css/avatar-group.css +7 -3
- package/css/avatar.css +9 -3
- package/css/back-top.css +22 -1
- package/css/badge.css +104 -32
- package/css/breadcrumb.css +25 -5
- package/css/button-group.css +18 -13
- package/css/button.css +48 -11
- package/css/calendar.css +150 -7
- package/css/card.css +20 -11
- package/css/carousel.css +36 -5
- package/css/cascader.css +211 -124
- package/css/checkbox-group.css +72 -22
- package/css/checkbox.css +70 -13
- package/css/clipboard.css +2 -1
- package/css/code-block.css +12 -7
- package/css/collapsible.css +49 -3
- package/css/color-picker.css +132 -46
- package/css/combobox.css +132 -60
- package/css/composer.css +5 -3
- package/css/context-menu.css +113 -74
- package/css/date-field.css +93 -16
- package/css/date-picker.css +293 -72
- package/css/descriptions.css +11 -5
- package/css/dialog.css +47 -14
- package/css/download-trigger.css +76 -0
- package/css/drawer.css +57 -16
- package/css/dynamic-input.css +75 -17
- package/css/editable.css +12 -10
- package/css/ellipsis.css +7 -1
- package/css/empty-state.css +22 -12
- package/css/field.css +16 -6
- package/css/fieldset.css +69 -0
- package/css/file-upload.css +46 -8
- package/css/flex.css +13 -7
- package/css/float-button.css +23 -1
- package/css/floating-panel.css +316 -0
- package/css/form.css +4 -4
- package/css/grid.css +11 -5
- package/css/heatmap.css +411 -0
- package/css/highlight.css +2 -2
- package/css/hotkeys.css +90 -0
- package/css/hover-card.css +43 -45
- package/css/image-cropper.css +233 -0
- package/css/image-viewer.css +155 -17
- package/css/image.css +2 -2
- package/css/infinite-scroll.css +1 -1
- package/css/json-viewer.css +274 -0
- package/css/layout.css +19 -15
- package/css/list.css +22 -13
- package/css/listbox.css +24 -6
- package/css/loading-bar.css +12 -5
- package/css/log.css +7 -3
- package/css/marquee.css +9 -0
- package/css/masonry.css +63 -0
- package/css/mention.css +100 -36
- package/css/menu.css +127 -50
- package/css/menubar.css +155 -61
- package/css/navigation-menu.css +56 -31
- package/css/notification.css +377 -0
- package/css/number-animation.css +3 -3
- package/css/number-field.css +182 -19
- package/css/overlay-arrow.css +51 -0
- package/css/page-header.css +12 -5
- package/css/pagination.css +171 -14
- package/css/password-input.css +356 -0
- package/css/pin-input.css +15 -12
- package/css/popconfirm.css +55 -12
- package/css/popover.css +73 -45
- package/css/popselect.css +207 -57
- package/css/progress.css +54 -8
- package/css/qr-code.css +1 -1
- package/css/radio-group.css +27 -10
- package/css/rating.css +4 -4
- package/css/reset.css +17 -0
- package/css/result.css +21 -11
- package/css/scroll-area.css +61 -89
- package/css/scrollbar.css +170 -0
- package/css/segmented.css +215 -0
- package/css/select.css +298 -131
- package/css/separator.css +2 -2
- package/css/side-nav.css +127 -24
- package/css/signature-pad.css +144 -0
- package/css/skeleton.css +7 -1
- package/css/slider.css +14 -12
- package/css/space.css +117 -0
- package/css/spinner.css +22 -10
- package/css/statistic.css +9 -9
- package/css/steps.css +29 -12
- package/css/switch.css +57 -8
- package/css/table.css +146 -44
- package/css/tabs.css +13 -5
- package/css/tag.css +179 -0
- package/css/tags-input.css +80 -42
- package/css/text-field.css +151 -38
- package/css/thread.css +11 -3
- package/css/time-field.css +99 -18
- package/css/time-picker.css +261 -71
- package/css/timeline.css +15 -15
- package/css/timer.css +119 -0
- package/css/toast.css +129 -55
- package/css/toggle-group.css +30 -4
- package/css/toggle.css +12 -6
- package/css/tone.css +57 -22
- package/css/toolbar.css +1 -1
- package/css/tooltip.css +40 -31
- package/css/tour.css +112 -61
- package/css/transfer.css +98 -21
- package/css/tree-select.css +215 -89
- package/css/tree.css +131 -5
- package/css/typography.css +5 -5
- package/css/undefined.css +12 -1
- package/css/virtualizer.css +3 -1
- package/css/watermark.css +1 -2
- package/index.css +18 -1
- package/index.unlayered.css +10356 -3255
- package/package.json +20 -4
- package/css/toaster.css +0 -74
package/css/statistic.css
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
/* 三个尺寸档只换这几个私有槽,各段从 root 继承它们,换档不必给每个部件各写一条选择器 */
|
|
8
8
|
[data-scope='statistic'][data-part='root'] {
|
|
9
|
-
--xh-_statistic-label-size: var(--xh-
|
|
10
|
-
--xh-_statistic-value-size: var(--xh-
|
|
11
|
-
--xh-_statistic-affix-size: var(--xh-font-
|
|
9
|
+
--xh-_statistic-label-size: var(--xh-control-caption-md);
|
|
10
|
+
--xh-_statistic-value-size: var(--xh-text-heading-2-size);
|
|
11
|
+
--xh-_statistic-affix-size: var(--xh-control-font-md);
|
|
12
12
|
--xh-_statistic-row-gap: var(--xh-space-1);
|
|
13
13
|
|
|
14
14
|
/* 折行排布:标签独占一行,前缀、数值、后缀在下一行按基线对齐排在一起 */
|
|
@@ -28,16 +28,16 @@
|
|
|
28
28
|
|
|
29
29
|
/* —— 尺寸 —— */
|
|
30
30
|
[data-scope='statistic'][data-part='root'][data-size='sm'] {
|
|
31
|
-
--xh-_statistic-label-size: var(--xh-
|
|
32
|
-
--xh-_statistic-value-size: var(--xh-
|
|
33
|
-
--xh-_statistic-affix-size: var(--xh-font-
|
|
31
|
+
--xh-_statistic-label-size: var(--xh-control-caption-sm);
|
|
32
|
+
--xh-_statistic-value-size: var(--xh-text-heading-3-size);
|
|
33
|
+
--xh-_statistic-affix-size: var(--xh-control-font-sm);
|
|
34
34
|
--xh-_statistic-row-gap: var(--xh-space-0_5);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
[data-scope='statistic'][data-part='root'][data-size='lg'] {
|
|
38
|
-
--xh-_statistic-label-size: var(--xh-
|
|
39
|
-
--xh-_statistic-value-size: var(--xh-
|
|
40
|
-
--xh-_statistic-affix-size: var(--xh-font-
|
|
38
|
+
--xh-_statistic-label-size: var(--xh-control-caption-lg);
|
|
39
|
+
--xh-_statistic-value-size: var(--xh-text-heading-1-size);
|
|
40
|
+
--xh-_statistic-affix-size: var(--xh-control-font-lg);
|
|
41
41
|
--xh-_statistic-row-gap: var(--xh-space-1_5);
|
|
42
42
|
}
|
|
43
43
|
|
package/css/steps.css
CHANGED
|
@@ -5,11 +5,14 @@
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
[data-scope='steps'][data-part='root'] {
|
|
8
|
+
/* 作者塞进指示符槽的图标跟着字号走,与皮肤画的兜底字形同一把尺 */
|
|
9
|
+
--xh-icon-size: var(--xh-steps-icon-size, var(--xh-glyph-size-text));
|
|
10
|
+
|
|
8
11
|
/* 尺寸档只换这三个私有槽,序号圆点、标题与说明都从 root 继承它们,
|
|
9
12
|
换档不必给每个部件各写一条选择器 */
|
|
10
|
-
--xh-_steps-indicator-size: var(--xh-
|
|
11
|
-
--xh-_steps-title-font-size: var(--xh-
|
|
12
|
-
--xh-_steps-caption-font-size: var(--xh-
|
|
13
|
+
--xh-_steps-indicator-size: var(--xh-space-7);
|
|
14
|
+
--xh-_steps-title-font-size: var(--xh-control-font-md);
|
|
15
|
+
--xh-_steps-caption-font-size: var(--xh-text-caption-size);
|
|
13
16
|
|
|
14
17
|
/* 语气落在走过与当前这两步的标记和连接线上:强调色画描边与填充,
|
|
15
18
|
accent-text 是普通底上的强调文字(当前步的序号),on-accent 是实心底上的前景。
|
|
@@ -37,14 +40,14 @@
|
|
|
37
40
|
两侧改从 space 档取,缺省档才留得住 */
|
|
38
41
|
[data-scope='steps'][data-part='root'][data-size='sm'] {
|
|
39
42
|
--xh-_steps-indicator-size: var(--xh-space-6);
|
|
40
|
-
--xh-_steps-title-font-size: var(--xh-font-
|
|
43
|
+
--xh-_steps-title-font-size: var(--xh-control-font-sm);
|
|
41
44
|
/* 字号档最小就是 xs,序号与说明不再往下走,故不重声明 caption */
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
[data-scope='steps'][data-part='root'][data-size='lg'] {
|
|
45
48
|
--xh-_steps-indicator-size: var(--xh-space-8);
|
|
46
|
-
--xh-_steps-title-font-size: var(--xh-font-
|
|
47
|
-
--xh-_steps-caption-font-size: var(--xh-
|
|
49
|
+
--xh-_steps-title-font-size: var(--xh-control-font-lg);
|
|
50
|
+
--xh-_steps-caption-font-size: var(--xh-text-secondary-size);
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
[data-scope='steps'][data-part='list'] {
|
|
@@ -105,7 +108,9 @@
|
|
|
105
108
|
grid-template-columns: auto minmax(0, 1fr);
|
|
106
109
|
align-items: center;
|
|
107
110
|
column-gap: var(--xh-steps-trigger-gap, var(--xh-control-gap-md));
|
|
108
|
-
|
|
111
|
+
/* 纵向留一圈给悬停底色与焦点环,横向走控件内边距尺的小档;一个槽同时盖住两轴 */
|
|
112
|
+
padding-block: var(--xh-steps-trigger-p, var(--xh-space-1));
|
|
113
|
+
padding-inline: var(--xh-steps-trigger-p, var(--xh-control-px-sm));
|
|
109
114
|
border: 0;
|
|
110
115
|
border-radius: var(--xh-steps-trigger-radius, var(--xh-shape-control));
|
|
111
116
|
background: transparent;
|
|
@@ -148,8 +153,8 @@
|
|
|
148
153
|
justify-content: center;
|
|
149
154
|
inline-size: var(--xh-steps-indicator-size, var(--xh-_steps-indicator-size));
|
|
150
155
|
block-size: var(--xh-steps-indicator-size, var(--xh-_steps-indicator-size));
|
|
151
|
-
border: var(--xh-stroke-thin) solid var(--xh-steps-indicator-border, var(--xh-border-
|
|
152
|
-
border-radius: var(--xh-radius-
|
|
156
|
+
border: var(--xh-stroke-thin) solid var(--xh-steps-indicator-border, var(--xh-border-control));
|
|
157
|
+
border-radius: var(--xh-steps-indicator-radius, var(--xh-shape-pill));
|
|
153
158
|
background: var(--xh-steps-indicator-bg, transparent);
|
|
154
159
|
color: var(--xh-steps-indicator-fg, var(--xh-fg-muted));
|
|
155
160
|
font-size: var(--xh-steps-indicator-font-size, var(--xh-_steps-caption-font-size));
|
|
@@ -181,7 +186,7 @@
|
|
|
181
186
|
}
|
|
182
187
|
|
|
183
188
|
[data-scope='steps'][data-part='item'][data-disabled] [data-scope='steps'][data-part='indicator'] {
|
|
184
|
-
border-color: var(--xh-steps-indicator-border-disabled, var(--xh-
|
|
189
|
+
border-color: var(--xh-steps-indicator-border-disabled, var(--xh-border-subtle));
|
|
185
190
|
color: var(--xh-steps-indicator-fg-disabled, var(--xh-fg-disabled));
|
|
186
191
|
}
|
|
187
192
|
|
|
@@ -217,7 +222,7 @@
|
|
|
217
222
|
flex: 1;
|
|
218
223
|
min-inline-size: var(--xh-steps-separator-min-length, var(--xh-space-4));
|
|
219
224
|
block-size: var(--xh-steps-separator-thickness, var(--xh-stroke-thick));
|
|
220
|
-
border-radius: var(--xh-radius-
|
|
225
|
+
border-radius: var(--xh-steps-separator-radius, var(--xh-shape-pill));
|
|
221
226
|
background: var(--xh-steps-separator-bg, var(--xh-border-default));
|
|
222
227
|
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
223
228
|
}
|
|
@@ -238,7 +243,7 @@
|
|
|
238
243
|
/* 圆点半径减去线宽的一半:calc 里的除法要写成乘 0.5,除号在这儿是无效语法 */
|
|
239
244
|
margin-inline-start: calc(
|
|
240
245
|
var(--xh-steps-indicator-size, var(--xh-_steps-indicator-size)) * 0.5
|
|
241
|
-
+ var(--xh-steps-trigger-p, var(--xh-
|
|
246
|
+
+ var(--xh-steps-trigger-p, var(--xh-control-px-sm))
|
|
242
247
|
- var(--xh-steps-separator-thickness, var(--xh-stroke-thick)) * 0.5
|
|
243
248
|
);
|
|
244
249
|
}
|
|
@@ -254,4 +259,16 @@
|
|
|
254
259
|
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
255
260
|
outline-offset: var(--xh-ring-offset);
|
|
256
261
|
}
|
|
262
|
+
|
|
263
|
+
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这几条即不命中 */
|
|
264
|
+
[data-scope='steps'][data-part='indicator'][data-state='completed']:empty::before {
|
|
265
|
+
content: '';
|
|
266
|
+
display: inline-block;
|
|
267
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
268
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
269
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
270
|
+
background-color: currentColor;
|
|
271
|
+
-webkit-mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
272
|
+
mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
273
|
+
}
|
|
257
274
|
}
|
package/css/switch.css
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
[data-scope='switch'][data-part='root'] {
|
|
17
17
|
/* 尺寸档只换轨道高度这一个私有槽,其余几何都从它算出来:
|
|
18
18
|
滑块边长 = 轨道高 − 两条留白,轨道宽 = 两倍轨道高 − 两条留白,滑块行程因此正好等于自身边长 */
|
|
19
|
-
--xh-_switch-track-h: var(--xh-
|
|
20
|
-
--xh-_switch-pad:
|
|
19
|
+
--xh-_switch-track-h: var(--xh-switch-track-h-md);
|
|
20
|
+
--xh-_switch-pad: var(--xh-space-0_5);
|
|
21
21
|
--xh-_switch-thumb-size: calc(var(--xh-_switch-track-h) - var(--xh-_switch-pad) * 2);
|
|
22
22
|
|
|
23
23
|
/* 选中态轨道色随语气走。没写 data-tone 时 --xh-_tone 没被声明,退回原来的品牌色 */
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
block-size: var(--xh-_switch-track-h);
|
|
31
31
|
padding: var(--xh-_switch-pad);
|
|
32
32
|
border: 0;
|
|
33
|
-
border-radius: var(--xh-shape-pill);
|
|
33
|
+
border-radius: var(--xh-switch-radius, var(--xh-shape-pill));
|
|
34
34
|
background: var(--xh-switch-bg, var(--xh-bg-subtle-active));
|
|
35
35
|
cursor: pointer;
|
|
36
36
|
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
background: var(--xh-switch-bg-checked, var(--xh-_switch-accent));
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/* 校验失败:轨道描一圈警示色。轨道本身没有边框,这里补出来 */
|
|
44
|
+
[data-scope='switch'][data-part='root'][data-invalid] {
|
|
45
|
+
box-shadow: inset 0 0 0 var(--xh-stroke-thin) var(--xh-switch-border-invalid, var(--xh-border-invalid));
|
|
46
|
+
}
|
|
47
|
+
|
|
43
48
|
[data-scope='switch'][data-part='root'][data-disabled] {
|
|
44
49
|
cursor: not-allowed;
|
|
45
50
|
opacity: var(--xh-state-disabled-opacity);
|
|
@@ -53,19 +58,19 @@
|
|
|
53
58
|
/* —— 尺寸 —— */
|
|
54
59
|
/* 缺省档写在上面的基础规则里 */
|
|
55
60
|
[data-scope='switch'][data-part='root'][data-size='sm'] {
|
|
56
|
-
--xh-_switch-track-h: var(--xh-
|
|
61
|
+
--xh-_switch-track-h: var(--xh-switch-track-h-sm);
|
|
57
62
|
}
|
|
58
63
|
|
|
59
64
|
[data-scope='switch'][data-part='root'][data-size='lg'] {
|
|
60
|
-
--xh-_switch-track-h: var(--xh-
|
|
65
|
+
--xh-_switch-track-h: var(--xh-switch-track-h-lg);
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
[data-scope='switch'][data-part='thumb'] {
|
|
64
69
|
inline-size: var(--xh-_switch-thumb-size);
|
|
65
70
|
block-size: var(--xh-_switch-thumb-size);
|
|
66
|
-
border-radius: var(--xh-shape-pill);
|
|
71
|
+
border-radius: var(--xh-switch-thumb-radius, var(--xh-shape-pill));
|
|
67
72
|
background: var(--xh-switch-thumb, var(--xh-bg-canvas));
|
|
68
|
-
box-shadow: var(--xh-elevation-
|
|
73
|
+
box-shadow: var(--xh-switch-thumb-shadow, var(--xh-elevation-raised));
|
|
69
74
|
transition: translate var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
70
75
|
}
|
|
71
76
|
|
|
@@ -90,6 +95,50 @@
|
|
|
90
95
|
border: var(--xh-stroke-thin) solid transparent;
|
|
91
96
|
border-block-start-color: var(--xh-switch-loading-fg, var(--xh-bg-brand));
|
|
92
97
|
border-radius: var(--xh-shape-pill);
|
|
93
|
-
animation: xh-switch-rotate var(--xh-switch-loading-duration,
|
|
98
|
+
animation: xh-switch-rotate var(--xh-switch-loading-duration, var(--xh-spin-duration)) linear infinite;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* —— 带文字的整行:<label> 包住控件与文字,与 checkbox-group 的条目同一副样子 —— */
|
|
102
|
+
[data-scope='switch'][data-part='label'] {
|
|
103
|
+
display: inline-flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
gap: var(--xh-switch-label-gap, var(--xh-control-gap-md));
|
|
106
|
+
color: var(--xh-switch-label-fg, var(--xh-fg-default));
|
|
107
|
+
font-size: var(--xh-switch-label-font-size, var(--xh-text-label-size));
|
|
108
|
+
line-height: var(--xh-leading-none);
|
|
109
|
+
cursor: pointer;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
[data-scope='switch'][data-part='label'][data-disabled] {
|
|
113
|
+
color: var(--xh-switch-label-fg-disabled, var(--xh-fg-disabled));
|
|
114
|
+
cursor: not-allowed;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
[data-scope='switch'][data-part='text'] {
|
|
118
|
+
color: inherit;
|
|
119
|
+
user-select: none;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* 减少动效:圆环停下并整圈换成虚线,静止的形状仍然读得出"还没好"。
|
|
123
|
+
两条规则是同一件事的两个触发条件:系统偏好与作者打的 data-motion */
|
|
124
|
+
@media (prefers-reduced-motion: reduce) {
|
|
125
|
+
[data-scope='switch'][data-part='thumb'][data-loading]::after {
|
|
126
|
+
border-style: dotted;
|
|
127
|
+
border-color: var(--xh-switch-loading-fg, var(--xh-bg-brand));
|
|
128
|
+
animation: none;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
:where([data-motion='reduce']) [data-scope='switch'][data-part='thumb'][data-loading]::after {
|
|
133
|
+
border-style: dotted;
|
|
134
|
+
border-color: var(--xh-switch-loading-fg, var(--xh-bg-brand));
|
|
135
|
+
animation: none;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
139
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
140
|
+
[data-scope='switch'][data-part='root'][hidden],
|
|
141
|
+
[data-scope='switch'][data-part='label'][hidden] {
|
|
142
|
+
display: none;
|
|
94
143
|
}
|
|
95
144
|
}
|
package/css/table.css
CHANGED
|
@@ -9,12 +9,6 @@
|
|
|
9
9
|
opacity: 1;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
@media (prefers-reduced-motion: reduce) {
|
|
14
|
-
[data-scope='table'][data-part='loading-state'] {
|
|
15
|
-
animation-duration: 0.01ms !important;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
12
|
}
|
|
19
13
|
|
|
20
14
|
@layer xihan.components {
|
|
@@ -25,15 +19,22 @@
|
|
|
25
19
|
|
|
26
20
|
/* 表格自己滚动:吸顶表头与横向吸附列都要一个确定的滚动容器才钉得住 */
|
|
27
21
|
[data-scope='table'][data-part='root'] {
|
|
22
|
+
/* 组件内那几档层号只在自己人之间排序:建一个层叠上下文把它们关起来,
|
|
23
|
+
既不让页面上的层号插进来,也不让它们漏出去压住别人 */
|
|
24
|
+
isolation: isolate;
|
|
25
|
+
|
|
26
|
+
/* 作者塞进指示符槽的图标跟着字号走,与皮肤画的兜底字形同一把尺 */
|
|
27
|
+
--xh-icon-size: var(--xh-table-icon-size, var(--xh-glyph-size-text));
|
|
28
|
+
|
|
28
29
|
/* 密度档只换这两个私有槽:单元格与列标题从 root 继承前者,字号靠 font-size 本身继承下去,
|
|
29
30
|
换档不必给每个部件各写一条选择器,列宽那套算法也一点不碰 */
|
|
30
|
-
--xh-_table-cell-py: var(--xh-
|
|
31
|
-
--xh-_table-font-size: var(--xh-
|
|
31
|
+
--xh-_table-cell-py: var(--xh-table-cell-py-md);
|
|
32
|
+
--xh-_table-font-size: var(--xh-control-font-md);
|
|
32
33
|
|
|
33
34
|
display: flex;
|
|
34
35
|
position: relative;
|
|
35
36
|
flex-direction: column;
|
|
36
|
-
max-block-size: var(--xh-table-max-h,
|
|
37
|
+
max-block-size: var(--xh-table-max-h, var(--xh-viewport-h-lg));
|
|
37
38
|
border: var(--xh-stroke-thin) solid var(--xh-table-border, var(--xh-border-default));
|
|
38
39
|
border-radius: var(--xh-table-radius, var(--xh-shape-surface));
|
|
39
40
|
background: var(--xh-table-bg, var(--xh-bg-surface));
|
|
@@ -47,6 +48,15 @@
|
|
|
47
48
|
display: none;
|
|
48
49
|
}
|
|
49
50
|
|
|
51
|
+
/* 放进滚动区的表格:滚动交给滚动区的视口,表格自己不再定高、不再滚;
|
|
52
|
+
吸顶表头与吸附列钉的是最近的滚动容器,于是也就钉在视口上。
|
|
53
|
+
自定义元素那条路上 <xh-table> 宿主夹在内容层与表格根之间,两种嵌法都认 */
|
|
54
|
+
[data-scope='scroll-area'][data-part='content'] > [data-scope='table'][data-part='root'],
|
|
55
|
+
[data-scope='scroll-area'][data-part='content'] > xh-table > [data-scope='table'][data-part='root'] {
|
|
56
|
+
max-block-size: none;
|
|
57
|
+
overflow: visible;
|
|
58
|
+
}
|
|
59
|
+
|
|
50
60
|
/* 纯容器:焦点落它身上不画环,高亮永远长在行上 */
|
|
51
61
|
[data-scope='table'][data-part='root']:focus-visible {
|
|
52
62
|
outline: none;
|
|
@@ -55,13 +65,13 @@
|
|
|
55
65
|
/* —— 密度 —— */
|
|
56
66
|
/* 中间档不写规则,缺省即中档 */
|
|
57
67
|
[data-scope='table'][data-part='root'][data-size='sm'] {
|
|
58
|
-
--xh-_table-cell-py: var(--xh-
|
|
59
|
-
--xh-_table-font-size: var(--xh-font-
|
|
68
|
+
--xh-_table-cell-py: var(--xh-table-cell-py-sm);
|
|
69
|
+
--xh-_table-font-size: var(--xh-control-font-sm);
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
[data-scope='table'][data-part='root'][data-size='lg'] {
|
|
63
|
-
--xh-_table-cell-py: var(--xh-
|
|
64
|
-
--xh-_table-font-size: var(--xh-font-
|
|
73
|
+
--xh-_table-cell-py: var(--xh-table-cell-py-lg);
|
|
74
|
+
--xh-_table-font-size: var(--xh-control-font-lg);
|
|
65
75
|
}
|
|
66
76
|
|
|
67
77
|
[data-scope='table'][data-part='caption'] {
|
|
@@ -108,7 +118,7 @@
|
|
|
108
118
|
透明的表头会让底下滚过的行透出来 */
|
|
109
119
|
[data-scope='table'][data-part='header'][data-sticky] {
|
|
110
120
|
position: sticky;
|
|
111
|
-
z-index: var(--xh-table-sticky-header-
|
|
121
|
+
z-index: var(--xh-table-sticky-header-layer, var(--xh-layer-sticky));
|
|
112
122
|
inset-block-start: 0;
|
|
113
123
|
}
|
|
114
124
|
|
|
@@ -121,7 +131,6 @@
|
|
|
121
131
|
[data-scope='table'][data-part='row'] {
|
|
122
132
|
display: flex;
|
|
123
133
|
align-items: stretch;
|
|
124
|
-
border-block-end: var(--xh-stroke-thin) solid var(--xh-table-row-border, var(--xh-border-subtle));
|
|
125
134
|
/* 背景要实色:横向吸附的单元格靠 inherit 取它,透明会让滚过的内容透出来 */
|
|
126
135
|
background: var(--xh-table-row-bg, var(--xh-bg-surface));
|
|
127
136
|
}
|
|
@@ -135,9 +144,9 @@
|
|
|
135
144
|
background: transparent;
|
|
136
145
|
}
|
|
137
146
|
|
|
138
|
-
/*
|
|
139
|
-
[data-scope='table'][data-part='body'] > [data-scope='table'][data-part='row']
|
|
140
|
-
border-block-
|
|
147
|
+
/* 行间线画在后一行的上沿,区段里第一个可见行不画:行只负责行与行之间,外边界归 root 与区段容器 */
|
|
148
|
+
[data-scope='table']:is([data-part='header'], [data-part='body'], [data-part='footer']) > :not([hidden]) ~ [data-scope='table']:is([data-part='row'], [data-part='expanded-row']) {
|
|
149
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-table-row-border, var(--xh-border-subtle));
|
|
141
150
|
}
|
|
142
151
|
|
|
143
152
|
/* 悬停与键盘锚点共用中性灰轻档。data-highlighted 跟的是连接层记的焦点行,
|
|
@@ -190,16 +199,50 @@
|
|
|
190
199
|
user-select: none;
|
|
191
200
|
}
|
|
192
201
|
|
|
193
|
-
/*
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
[data-scope='table'][data-part='
|
|
202
|
+
/* 横向吸附:钉在滚动容器的一侧。背景继承自行,跟着选中/高亮一起变,
|
|
203
|
+
滚过去时不会露出一块与所在行不同色的补丁。
|
|
204
|
+
同侧多列时的偏移由连接层按前面各列的宽度累加好写进 --xh-table-sticky-inset */
|
|
205
|
+
[data-scope='table'][data-part='column-header'][data-frozen],
|
|
206
|
+
[data-scope='table'][data-part='cell'][data-frozen] {
|
|
197
207
|
position: sticky;
|
|
198
|
-
z-index: var(--xh-table-sticky-column-
|
|
199
|
-
inset-inline-start: 0;
|
|
208
|
+
z-index: var(--xh-table-sticky-column-layer, 1);
|
|
200
209
|
background: inherit;
|
|
201
210
|
}
|
|
202
211
|
|
|
212
|
+
[data-scope='table'][data-part='column-header'][data-frozen='start'],
|
|
213
|
+
[data-scope='table'][data-part='cell'][data-frozen='start'] {
|
|
214
|
+
inset-inline-start: var(--xh-table-sticky-inset, 0);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
[data-scope='table'][data-part='column-header'][data-frozen='end'],
|
|
218
|
+
[data-scope='table'][data-part='cell'][data-frozen='end'] {
|
|
219
|
+
inset-inline-end: var(--xh-table-sticky-inset, 0);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* 表头行本身透明(露出表头底),吸附的列头继承到的就是透明——得自己带表头底,
|
|
223
|
+
否则横向滚动时其它列头从它下面穿过去 */
|
|
224
|
+
[data-scope='table'][data-part='column-header'][data-frozen] {
|
|
225
|
+
background: var(--xh-table-header-bg, var(--xh-bg-subtle));
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* —— 三个可叠加的外观开关 —— */
|
|
229
|
+
/* 斑马纹:表体偶数行换一层浅底;悬停与选中的底色仍按原规则盖过它 */
|
|
230
|
+
[data-scope='table'][data-part='root'][data-striped] [data-scope='table'][data-part='body'] > [data-scope='table'][data-part='row']:nth-of-type(even) {
|
|
231
|
+
background: var(--xh-table-row-bg-striped, var(--xh-bg-subtle));
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* 无外框:只留行间横线,圆角也随之无意义 */
|
|
235
|
+
[data-scope='table'][data-part='root'][data-borderless] {
|
|
236
|
+
border: 0;
|
|
237
|
+
border-radius: 0;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* 竖分隔线:列与列之间一道细线,末列不画 */
|
|
241
|
+
[data-scope='table'][data-part='root'][data-ruled] [data-scope='table'][data-part='column-header']:not(:last-child),
|
|
242
|
+
[data-scope='table'][data-part='root'][data-ruled] [data-scope='table'][data-part='cell']:not(:last-child) {
|
|
243
|
+
border-inline-end: var(--xh-stroke-thin) solid var(--xh-table-row-border, var(--xh-border-subtle));
|
|
244
|
+
}
|
|
245
|
+
|
|
203
246
|
[data-scope='table'][data-part='cell'][data-disabled] {
|
|
204
247
|
color: var(--xh-fg-disabled);
|
|
205
248
|
}
|
|
@@ -212,8 +255,8 @@
|
|
|
212
255
|
flex: none;
|
|
213
256
|
align-items: center;
|
|
214
257
|
justify-content: center;
|
|
215
|
-
inline-size: var(--xh-table-trigger-size,
|
|
216
|
-
block-size: var(--xh-table-trigger-size,
|
|
258
|
+
inline-size: var(--xh-table-trigger-size, var(--xh-control-indicator-size));
|
|
259
|
+
block-size: var(--xh-table-trigger-size, var(--xh-control-indicator-size));
|
|
217
260
|
border-radius: var(--xh-table-trigger-radius, var(--xh-shape-control));
|
|
218
261
|
cursor: pointer;
|
|
219
262
|
}
|
|
@@ -233,31 +276,33 @@
|
|
|
233
276
|
visibility: visible;
|
|
234
277
|
}
|
|
235
278
|
|
|
236
|
-
[data-scope='table'][data-part='select-all-trigger']:is([data-state='
|
|
279
|
+
[data-scope='table'][data-part='select-all-trigger']:is([data-state='checked'], [data-state='indeterminate']),
|
|
237
280
|
[data-scope='table'][data-part='row-select-trigger'][data-selected] {
|
|
238
281
|
border-color: var(--xh-table-trigger-border-checked, var(--xh-table-trigger-bg-checked, var(--xh-bg-brand)));
|
|
239
282
|
background: var(--xh-table-trigger-bg-checked, var(--xh-bg-brand));
|
|
240
283
|
}
|
|
241
284
|
|
|
242
285
|
/* 未选中时勾不出现,但盒子还在:它是边框画出来的空框 */
|
|
243
|
-
[data-scope='table'][data-part='select-all-trigger'][data-state='
|
|
286
|
+
[data-scope='table'][data-part='select-all-trigger'][data-state='unchecked'],
|
|
244
287
|
[data-scope='table'][data-part='row-select-trigger']:not([data-selected]) {
|
|
245
288
|
color: transparent;
|
|
246
289
|
}
|
|
247
290
|
|
|
248
|
-
/*
|
|
249
|
-
|
|
291
|
+
/* 半选换一枚横杠字形盖住勾:aria-checked=mixed 在视觉上也得与"全选"分得开。
|
|
292
|
+
横杠与勾同走字形令牌,作者换掉标记时两态一起换 */
|
|
293
|
+
[data-scope='table'][data-part='select-all-trigger'][data-state='indeterminate'] {
|
|
250
294
|
position: relative;
|
|
251
295
|
color: transparent;
|
|
252
296
|
}
|
|
253
297
|
|
|
254
|
-
[data-scope='table'][data-part='select-all-trigger'][data-state='
|
|
298
|
+
[data-scope='table'][data-part='select-all-trigger'][data-state='indeterminate']::after {
|
|
255
299
|
position: absolute;
|
|
256
|
-
inline-size:
|
|
257
|
-
block-size: var(--xh-
|
|
258
|
-
|
|
259
|
-
background: var(--xh-table-trigger-fg, var(--xh-fg-on-brand));
|
|
300
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
301
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
302
|
+
background-color: var(--xh-table-trigger-fg, var(--xh-fg-on-brand));
|
|
260
303
|
content: '';
|
|
304
|
+
-webkit-mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
305
|
+
mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
261
306
|
}
|
|
262
307
|
|
|
263
308
|
[data-scope='table'][data-part='select-all-trigger'][data-disabled],
|
|
@@ -268,10 +313,12 @@
|
|
|
268
313
|
cursor: not-allowed;
|
|
269
314
|
}
|
|
270
315
|
|
|
271
|
-
/* 全选把手是表头里独立的 Tab
|
|
316
|
+
/* 全选把手是表头里独立的 Tab 停靠点,环得画在它自己身上。
|
|
317
|
+
往内收,与行、排序把手同一口径:把手长在列头里,列头与根都收 overflow,
|
|
318
|
+
环画在外沿会被裁掉 */
|
|
272
319
|
[data-scope='table'][data-part='select-all-trigger']:focus-visible {
|
|
273
320
|
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
274
|
-
outline-offset: var(--xh-ring-
|
|
321
|
+
outline-offset: calc(-1 * var(--xh-ring-width));
|
|
275
322
|
}
|
|
276
323
|
|
|
277
324
|
/* 行选择把手不占 Tab 位(键盘那一路走 Space),只服务指针 */
|
|
@@ -328,24 +375,45 @@
|
|
|
328
375
|
/* 排序方向用箭头字形表出来:aria-sort 只报给读屏,视觉侧也得有对应的东西 */
|
|
329
376
|
[data-scope='table'][data-part='sort-trigger']::after {
|
|
330
377
|
color: var(--xh-table-sort-fg, var(--xh-fg-subtle));
|
|
331
|
-
content: '
|
|
378
|
+
content: '';
|
|
379
|
+
display: inline-block;
|
|
380
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
381
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
382
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
383
|
+
background-color: currentColor;
|
|
384
|
+
-webkit-mask: var(--xh-glyph-mark-sort) center / contain no-repeat;
|
|
385
|
+
mask: var(--xh-glyph-mark-sort) center / contain no-repeat;
|
|
332
386
|
}
|
|
333
387
|
|
|
334
388
|
[data-scope='table'][data-part='sort-trigger'][data-sort='asc']::after {
|
|
335
389
|
color: var(--xh-table-sort-fg-active, var(--xh-fg-default));
|
|
336
|
-
content: '
|
|
390
|
+
content: '';
|
|
391
|
+
display: inline-block;
|
|
392
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
393
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
394
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
395
|
+
background-color: currentColor;
|
|
396
|
+
-webkit-mask: var(--xh-glyph-mark-sort-asc) center / contain no-repeat;
|
|
397
|
+
mask: var(--xh-glyph-mark-sort-asc) center / contain no-repeat;
|
|
337
398
|
}
|
|
338
399
|
|
|
339
400
|
[data-scope='table'][data-part='sort-trigger'][data-sort='desc']::after {
|
|
340
401
|
color: var(--xh-table-sort-fg-active, var(--xh-fg-default));
|
|
341
|
-
content: '
|
|
402
|
+
content: '';
|
|
403
|
+
display: inline-block;
|
|
404
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
405
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
406
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
407
|
+
background-color: currentColor;
|
|
408
|
+
-webkit-mask: var(--xh-glyph-mark-sort-desc) center / contain no-repeat;
|
|
409
|
+
mask: var(--xh-glyph-mark-sort-desc) center / contain no-repeat;
|
|
342
410
|
}
|
|
343
411
|
|
|
344
412
|
/* 多字段排序的优先级角标:链里第几环就显几,只在参与排序时才有 data-sort-index */
|
|
345
413
|
[data-scope='table'][data-part='sort-trigger'][data-sort-index]::before {
|
|
346
414
|
order: 1;
|
|
347
415
|
color: var(--xh-table-sort-fg-active, var(--xh-fg-default));
|
|
348
|
-
font-size: var(--xh-
|
|
416
|
+
font-size: var(--xh-text-caption-size);
|
|
349
417
|
content: attr(data-sort-index);
|
|
350
418
|
}
|
|
351
419
|
|
|
@@ -362,11 +430,10 @@
|
|
|
362
430
|
outline-offset: calc(-1 * var(--xh-ring-width));
|
|
363
431
|
}
|
|
364
432
|
|
|
365
|
-
/* 详情行:靠 hidden
|
|
433
|
+
/* 详情行:靠 hidden 收起,不卸载作者节点。内容长在它的单元格里,行本身只画底色 */
|
|
366
434
|
[data-scope='table'][data-part='expanded-row'] {
|
|
367
435
|
display: flex;
|
|
368
436
|
align-items: stretch;
|
|
369
|
-
border-block-end: var(--xh-stroke-thin) solid var(--xh-table-row-border, var(--xh-border-subtle));
|
|
370
437
|
background: var(--xh-table-detail-bg, var(--xh-bg-subtle));
|
|
371
438
|
}
|
|
372
439
|
|
|
@@ -404,6 +471,41 @@
|
|
|
404
471
|
}
|
|
405
472
|
|
|
406
473
|
[data-scope='table'][data-part='loading-state'] {
|
|
407
|
-
animation: xh-table-loading-pulse var(--xh-duration
|
|
474
|
+
animation: xh-table-loading-pulse calc(var(--xh-spin-duration) / 2) var(--xh-ease-standard) infinite alternate;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/* 减少动效:呼吸停下,加载态只留静止的文案。两条规则是同一件事的两个触发条件:系统偏好与作者打的 data-motion */
|
|
478
|
+
@media (prefers-reduced-motion: reduce) {
|
|
479
|
+
[data-scope='table'][data-part='loading-state'] {
|
|
480
|
+
animation: none;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
:where([data-motion='reduce']) [data-scope='table'][data-part='loading-state'] {
|
|
485
|
+
animation: none;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这几条即不命中 */
|
|
489
|
+
[data-scope='table'][data-part='select-all-trigger']:empty::before,
|
|
490
|
+
[data-scope='table'][data-part='row-select-trigger']:empty::before {
|
|
491
|
+
content: '';
|
|
492
|
+
display: inline-block;
|
|
493
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
494
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
495
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
496
|
+
background-color: currentColor;
|
|
497
|
+
-webkit-mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
498
|
+
mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
[data-scope='table'][data-part='expand-trigger']:empty::before {
|
|
502
|
+
content: '';
|
|
503
|
+
display: inline-block;
|
|
504
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
505
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
506
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
507
|
+
background-color: currentColor;
|
|
508
|
+
-webkit-mask: var(--xh-glyph-mark-chevron-right) center / contain no-repeat;
|
|
509
|
+
mask: var(--xh-glyph-mark-chevron-right) center / contain no-repeat;
|
|
408
510
|
}
|
|
409
511
|
}
|
package/css/tabs.css
CHANGED
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
/* 尺寸档只换这三个私有槽,标签从 root 继承它们,换档不必给每个部件各写一条选择器 */
|
|
9
9
|
--xh-_tabs-trigger-h: var(--xh-control-h-md);
|
|
10
10
|
--xh-_tabs-trigger-px: var(--xh-control-px-md);
|
|
11
|
-
--xh-_tabs-trigger-font-size: var(--xh-
|
|
11
|
+
--xh-_tabs-trigger-font-size: var(--xh-control-font-md);
|
|
12
12
|
|
|
13
13
|
/* 形态档只换这几个私有槽:列表的底、内边距、基线,与标签的描边、选中底、选中态那道指示。
|
|
14
14
|
缺省档(line)是一条基线加一行标签,选中只换文字色——这里的取值即现状 */
|
|
15
15
|
--xh-_tabs-list-gap: var(--xh-control-gap-md);
|
|
16
16
|
--xh-_tabs-list-bg: transparent;
|
|
17
17
|
--xh-_tabs-list-p: var(--xh-space-0);
|
|
18
|
-
--xh-_tabs-list-radius:
|
|
18
|
+
--xh-_tabs-list-radius: 0;
|
|
19
19
|
--xh-_tabs-list-border-width: var(--xh-stroke-thin);
|
|
20
20
|
--xh-_tabs-trigger-border-width: 0;
|
|
21
21
|
--xh-_tabs-trigger-border: transparent;
|
|
@@ -44,13 +44,13 @@
|
|
|
44
44
|
[data-scope='tabs'][data-part='root'][data-size='sm'] {
|
|
45
45
|
--xh-_tabs-trigger-h: var(--xh-control-h-sm);
|
|
46
46
|
--xh-_tabs-trigger-px: var(--xh-control-px-sm);
|
|
47
|
-
--xh-_tabs-trigger-font-size: var(--xh-font-
|
|
47
|
+
--xh-_tabs-trigger-font-size: var(--xh-control-font-sm);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
[data-scope='tabs'][data-part='root'][data-size='lg'] {
|
|
51
51
|
--xh-_tabs-trigger-h: var(--xh-control-h-lg);
|
|
52
52
|
--xh-_tabs-trigger-px: var(--xh-control-px-lg);
|
|
53
|
-
--xh-_tabs-trigger-font-size: var(--xh-font-
|
|
53
|
+
--xh-_tabs-trigger-font-size: var(--xh-control-font-lg);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/* —— 形态 —— */
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
--xh-_tabs-list-border-width: 0;
|
|
77
77
|
--xh-_tabs-trigger-bg-active: var(--xh-_tone-subtle, var(--xh-bg-surface));
|
|
78
78
|
--xh-_tabs-trigger-bg-active-hover: var(--xh-_tone-subtle-hover, var(--xh-bg-surface));
|
|
79
|
-
--xh-_tabs-trigger-shadow-active: var(--xh-elevation-
|
|
79
|
+
--xh-_tabs-trigger-shadow-active: var(--xh-elevation-raised);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
[data-scope='tabs'][data-part='list'] {
|
|
@@ -159,4 +159,12 @@
|
|
|
159
159
|
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
160
160
|
outline-offset: var(--xh-ring-offset);
|
|
161
161
|
}
|
|
162
|
+
|
|
163
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
164
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
165
|
+
[data-scope='tabs'][data-part='root'][hidden],
|
|
166
|
+
[data-scope='tabs'][data-part='list'][hidden],
|
|
167
|
+
[data-scope='tabs'][data-part='trigger'][hidden] {
|
|
168
|
+
display: none;
|
|
169
|
+
}
|
|
162
170
|
}
|