@xihan-ui/styles 3.2.0 → 4.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 +441 -0
- package/component-tokens.d.ts +229 -60
- package/components.tokens.json +5124 -1555
- package/css/accordion.css +47 -20
- package/css/alert.css +14 -15
- package/css/anchor.css +2 -2
- package/css/approval.css +37 -13
- package/css/avatar-group.css +9 -12
- package/css/avatar.css +20 -18
- package/css/back-top.css +21 -7
- package/css/badge.css +5 -5
- package/css/breadcrumb.css +18 -16
- package/css/button-group.css +4 -6
- package/css/button.css +4 -7
- package/css/calendar-picker.css +177 -94
- package/css/calendar-range-picker.css +206 -121
- package/css/card.css +34 -6
- package/css/carousel.css +65 -49
- package/css/cascader.css +41 -29
- package/css/checkbox-group.css +9 -6
- package/css/checkbox.css +5 -4
- package/css/citation.css +7 -2
- package/css/clipboard.css +20 -4
- package/css/collapsible.css +29 -14
- package/css/color-field.css +4 -4
- package/css/color-picker.css +77 -23
- package/css/color-slider.css +10 -8
- package/css/color-swatch-picker.css +5 -5
- package/css/combobox.css +14 -10
- package/css/command.css +13 -8
- package/css/context-menu.css +10 -5
- package/css/date-field.css +4 -4
- package/css/date-picker.css +165 -102
- package/css/date-range-picker.css +186 -123
- package/css/description.css +10 -6
- package/css/descriptions.css +47 -19
- package/css/dialog.css +50 -35
- package/css/drawer.css +75 -21
- package/css/editable.css +15 -41
- package/css/empty-state.css +21 -3
- package/css/field-array.css +4 -1
- package/css/field.css +17 -18
- package/css/fieldset.css +33 -13
- package/css/file-upload.css +65 -32
- package/css/float-button.css +25 -15
- package/css/floating-panel.css +1 -1
- package/css/form.css +24 -10
- package/css/grid-list.css +1 -1
- package/css/highlight.css +4 -4
- package/css/hover-card.css +19 -12
- package/css/image-viewer.css +77 -27
- package/css/image.css +12 -4
- package/css/infinite-scroll.css +8 -4
- package/css/input-group.css +74 -26
- package/css/kbd.css +1 -1
- package/css/label.css +27 -11
- package/css/layout.css +17 -10
- package/css/list.css +13 -9
- package/css/listbox.css +12 -7
- package/css/loading-bar.css +3 -0
- package/css/mention.css +10 -8
- package/css/menu.css +10 -5
- package/css/menubar.css +13 -8
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +114 -31
- package/css/number-animation.css +2 -2
- package/css/number-field.css +60 -37
- package/css/page-header.css +63 -26
- package/css/pagination.css +35 -38
- package/css/password-input.css +10 -66
- package/css/pin-input.css +18 -26
- package/css/popconfirm.css +20 -11
- package/css/popover.css +18 -12
- package/css/progress.css +14 -13
- package/css/prompt-input.css +3 -3
- package/css/question-flow.css +33 -7
- package/css/radio-group.css +120 -55
- package/css/rating.css +31 -14
- package/css/select.css +14 -10
- package/css/separator.css +22 -4
- package/css/side-nav.css +16 -11
- package/css/signature-pad.css +23 -9
- package/css/skeleton.css +7 -7
- package/css/slider.css +71 -42
- package/css/sparkline.css +8 -2
- package/css/spinner.css +40 -20
- package/css/statistic.css +14 -14
- package/css/steps.css +115 -84
- package/css/switch.css +9 -7
- package/css/table.css +27 -10
- package/css/tabs.css +35 -12
- package/css/tag-group.css +17 -6
- package/css/tag.css +54 -29
- package/css/tags-input.css +38 -19
- package/css/text-field.css +5 -5
- package/css/time-field.css +4 -4
- package/css/time-picker.css +150 -64
- package/css/time-range-picker.css +91 -62
- package/css/timeline.css +37 -20
- package/css/timer.css +3 -3
- package/css/toggle-group.css +4 -4
- package/css/tool-call.css +6 -4
- package/css/toolbar.css +6 -5
- package/css/tooltip.css +15 -16
- package/css/tour.css +14 -7
- package/css/transfer.css +22 -16
- package/css/tree-select.css +10 -10
- package/css/tree.css +26 -25
- package/css/typography.css +28 -25
- package/dist/css/accordion.css +47 -20
- package/dist/css/alert.css +14 -15
- package/dist/css/anchor.css +2 -2
- package/dist/css/approval.css +37 -13
- package/dist/css/avatar-group.css +9 -12
- package/dist/css/avatar.css +20 -18
- package/dist/css/back-top.css +21 -7
- package/dist/css/badge.css +5 -5
- package/dist/css/breadcrumb.css +18 -16
- package/dist/css/button-group.css +4 -6
- package/dist/css/button.css +4 -7
- package/dist/css/calendar-picker.css +177 -94
- package/dist/css/calendar-range-picker.css +206 -121
- package/dist/css/card.css +34 -6
- package/dist/css/carousel.css +65 -49
- package/dist/css/cascader.css +41 -29
- package/dist/css/checkbox-group.css +9 -6
- package/dist/css/checkbox.css +5 -4
- package/dist/css/citation.css +7 -2
- package/dist/css/clipboard.css +20 -4
- package/dist/css/collapsible.css +29 -14
- package/dist/css/color-field.css +4 -4
- package/dist/css/color-picker.css +77 -23
- package/dist/css/color-slider.css +10 -8
- package/dist/css/color-swatch-picker.css +5 -5
- package/dist/css/combobox.css +14 -10
- package/dist/css/command.css +13 -8
- package/dist/css/context-menu.css +10 -5
- package/dist/css/date-field.css +4 -4
- package/dist/css/date-picker.css +165 -102
- package/dist/css/date-range-picker.css +186 -123
- package/dist/css/description.css +10 -6
- package/dist/css/descriptions.css +47 -19
- package/dist/css/dialog.css +50 -35
- package/dist/css/drawer.css +75 -21
- package/dist/css/editable.css +15 -41
- package/dist/css/empty-state.css +21 -3
- package/dist/css/field-array.css +4 -1
- package/dist/css/field.css +17 -18
- package/dist/css/fieldset.css +33 -13
- package/dist/css/file-upload.css +65 -32
- package/dist/css/float-button.css +25 -15
- package/dist/css/floating-panel.css +1 -1
- package/dist/css/form.css +24 -10
- package/dist/css/grid-list.css +1 -1
- package/dist/css/highlight.css +4 -4
- package/dist/css/hover-card.css +19 -12
- package/dist/css/image-viewer.css +77 -27
- package/dist/css/image.css +12 -4
- package/dist/css/infinite-scroll.css +8 -4
- package/dist/css/input-group.css +74 -26
- package/dist/css/kbd.css +1 -1
- package/dist/css/label.css +27 -11
- package/dist/css/layout.css +17 -10
- package/dist/css/list.css +13 -9
- package/dist/css/listbox.css +12 -7
- package/dist/css/loading-bar.css +3 -0
- package/dist/css/mention.css +10 -8
- package/dist/css/menu.css +10 -5
- package/dist/css/menubar.css +13 -8
- package/dist/css/navigation-menu.css +2 -2
- package/dist/css/notification.css +114 -31
- package/dist/css/number-animation.css +2 -2
- package/dist/css/number-field.css +60 -37
- package/dist/css/page-header.css +63 -26
- package/dist/css/pagination.css +35 -38
- package/dist/css/password-input.css +10 -66
- package/dist/css/pin-input.css +18 -26
- package/dist/css/popconfirm.css +20 -11
- package/dist/css/popover.css +18 -12
- package/dist/css/progress.css +14 -13
- package/dist/css/prompt-input.css +3 -3
- package/dist/css/question-flow.css +33 -7
- package/dist/css/radio-group.css +120 -55
- package/dist/css/rating.css +31 -14
- package/dist/css/select.css +14 -10
- package/dist/css/separator.css +22 -4
- package/dist/css/side-nav.css +16 -11
- package/dist/css/signature-pad.css +23 -9
- package/dist/css/skeleton.css +7 -7
- package/dist/css/slider.css +71 -42
- package/dist/css/sparkline.css +8 -2
- package/dist/css/spinner.css +40 -20
- package/dist/css/statistic.css +14 -14
- package/dist/css/steps.css +115 -84
- package/dist/css/switch.css +9 -7
- package/dist/css/table.css +27 -10
- package/dist/css/tabs.css +35 -12
- package/dist/css/tag-group.css +17 -6
- package/dist/css/tag.css +54 -29
- package/dist/css/tags-input.css +38 -19
- package/dist/css/text-field.css +5 -5
- package/dist/css/time-field.css +4 -4
- package/dist/css/time-picker.css +150 -64
- package/dist/css/time-range-picker.css +91 -62
- package/dist/css/timeline.css +37 -20
- package/dist/css/timer.css +3 -3
- package/dist/css/toggle-group.css +4 -4
- package/dist/css/tool-call.css +6 -4
- package/dist/css/toolbar.css +6 -5
- package/dist/css/tooltip.css +15 -16
- package/dist/css/tour.css +14 -7
- package/dist/css/transfer.css +22 -16
- package/dist/css/tree-select.css +10 -10
- package/dist/css/tree.css +26 -25
- package/dist/css/typography.css +28 -25
- package/dist/family/action-control.css +30 -24
- package/dist/family/chart.css +57 -0
- package/dist/family/collection-item.css +12 -8
- package/dist/family/field-chrome.css +28 -19
- package/dist/family/loading-ring.css +20 -13
- package/dist/family/swatch.css +4 -4
- package/dist/family/tag-list.css +6 -0
- package/family/action-control.css +30 -24
- package/family/chart.css +57 -0
- package/family/collection-item.css +12 -8
- package/family/field-chrome.css +28 -19
- package/family/loading-ring.css +20 -13
- package/family/swatch.css +4 -4
- package/family/tag-list.css +6 -0
- package/index.css +3580 -2060
- package/index.unlayered.css +3579 -2060
- package/package.json +2 -2
package/css/steps.css
CHANGED
|
@@ -32,36 +32,35 @@
|
|
|
32
32
|
--xh-icon-size: var(--xh-steps-icon-size, var(--xh-glyph-size-md));
|
|
33
33
|
|
|
34
34
|
/* 尺寸档只换这三个私有槽,序号圆点、标题与圆点里的序号都从 root 继承它们,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
--xh-_steps-
|
|
39
|
-
--xh-_steps-
|
|
35
|
+
换档不必给每个部件各写一条选择器;说明走次级标注(12px),不随档。
|
|
36
|
+
圆点取状态圆那把尺:marker-size 的 sm / md / lg(24 / 28 / 32),比同档控件矮一档,随密度换档;
|
|
37
|
+
圆里的序号比同档控件字大一档(sm 14、md / lg 16);标题取区块标题档 heading-3(sm 收回正文字号) */
|
|
38
|
+
--xh-_steps-indicator-size: var(--xh-marker-size-md);
|
|
39
|
+
--xh-_steps-title-font-size: var(--xh-text-heading-3-size);
|
|
40
|
+
--xh-_steps-indicator-font-size: var(--xh-control-font-lg);
|
|
40
41
|
/* 圆点一圈边的宽:序号圆点是细边(多数状态透明占位),点状形态的空心圈要粗一档才读得出是个圈 */
|
|
41
42
|
--xh-_steps-indicator-border-width: var(--xh-stroke-thin);
|
|
42
|
-
/*
|
|
43
|
+
/* 圆点四周的留位:序号圆点不留;点状形态按当前步放大后的直径给每个点留位,换步不挪版面 */
|
|
43
44
|
--xh-_steps-indicator-margin: var(--xh-space-0);
|
|
44
|
-
/*
|
|
45
|
+
/* 当前步的进度环:离圆点边一道缝,环本身一道粗描边宽 */
|
|
45
46
|
--xh-_steps-ring-gap: var(--xh-space-0_5);
|
|
46
47
|
--xh-_steps-ring-thickness: var(--xh-stroke-thick);
|
|
47
48
|
|
|
48
|
-
/*
|
|
49
|
-
accent-
|
|
50
|
-
没写 data-tone 时 --xh-_tone
|
|
51
|
-
走过的步不再用品牌淡底(brand-subtle 退出 completed 语义),淡底那两支私有槽随之撤掉 */
|
|
49
|
+
/* 语气落在当前步的标记、走过那几步的淡底与对号、连接线上:强调色画描边与填充,
|
|
50
|
+
accent-subtle 一族是走过那几步的淡底三档(静息 / 悬停 / 按下),on-accent 是实心底上的前景。
|
|
51
|
+
没写 data-tone 时 --xh-_tone 一族没被声明,这几个槽都退回品牌配色 */
|
|
52
52
|
--xh-_steps-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
53
|
-
--xh-_steps-accent-
|
|
54
|
-
|
|
53
|
+
--xh-_steps-accent-subtle: var(--xh-_tone-subtle, var(--xh-bg-brand-subtle));
|
|
54
|
+
--xh-_steps-accent-subtle-hover: var(--xh-_tone-subtle-hover, var(--xh-bg-brand-subtle-hover));
|
|
55
|
+
--xh-_steps-accent-subtle-active: var(--xh-_tone-subtle-active, var(--xh-bg-brand-subtle-active));
|
|
56
|
+
/* 走过的步里那枚对号:淡底上的强调色标记 */
|
|
55
57
|
--xh-_steps-accent-mark: var(--xh-_tone-fg, var(--xh-fg-brand));
|
|
56
58
|
--xh-_steps-on-accent: var(--xh-_tone-on, var(--xh-fg-on-brand));
|
|
57
|
-
/*
|
|
59
|
+
/* 触发器是序号圆点的承载面:没走到的圆点静息就坐在 --xh-bg-subtle(100)的淡底上,阶梯按淡底容器走
|
|
58
60
|
(hover 200 → pressed 300)。两支私有槽是这一档的唯一来源——触发器拿它们给
|
|
59
61
|
--xh-action-host-bg-* 赋值(桥接槽只写不读),圆点悬停 / 按下读同一支私有槽,即与宿主的 host 槽同源 */
|
|
60
62
|
--xh-_steps-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
61
63
|
--xh-_steps-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
62
|
-
/* 走过的那几步是实心圆,顶边画一条极浅的内高光把它衬出厚度 */
|
|
63
|
-
--xh-_steps-highlight: inset 0 var(--xh-stroke-thin) 0 0
|
|
64
|
-
color-mix(in oklab, var(--xh-_steps-on-accent) 14%, transparent);
|
|
65
64
|
|
|
66
65
|
display: flex;
|
|
67
66
|
flex-direction: column;
|
|
@@ -87,33 +86,36 @@
|
|
|
87
86
|
/* 缺省档写在上面的基础规则里 */
|
|
88
87
|
[data-scope='steps'][data-part='root'][data-size='sm'] {
|
|
89
88
|
--xh-icon-size: var(--xh-steps-icon-size, var(--xh-glyph-size-sm));
|
|
90
|
-
--xh-_steps-indicator-size: var(--xh-
|
|
91
|
-
--xh-_steps-title-font-size: var(--xh-
|
|
92
|
-
|
|
89
|
+
--xh-_steps-indicator-size: var(--xh-marker-size-sm);
|
|
90
|
+
--xh-_steps-title-font-size: var(--xh-text-body-size);
|
|
91
|
+
--xh-_steps-indicator-font-size: var(--xh-control-font-md);
|
|
93
92
|
}
|
|
94
93
|
|
|
94
|
+
/* 大档的序号与标题都与中档同档:圆只大一档,字再放大就顶到圆边;标题已是区块标题档 */
|
|
95
95
|
[data-scope='steps'][data-part='root'][data-size='lg'] {
|
|
96
96
|
--xh-icon-size: var(--xh-steps-icon-size, var(--xh-glyph-size-lg));
|
|
97
|
-
--xh-_steps-indicator-size: var(--xh-
|
|
98
|
-
--xh-_steps-title-font-size: var(--xh-control-font-lg);
|
|
99
|
-
--xh-_steps-caption-font-size: var(--xh-text-secondary-size);
|
|
97
|
+
--xh-_steps-indicator-size: var(--xh-marker-size-lg);
|
|
100
98
|
}
|
|
101
99
|
|
|
102
100
|
/* —— 点状形态 —— */
|
|
103
|
-
/*
|
|
104
|
-
|
|
101
|
+
/* 圆点不盛内容,是纯位置标记:直径不在控件高度那把尺上,走空间尺,不随密度换档;描边粗一档。
|
|
102
|
+
走过与没走到的点 8px,当前步放大一档到 10px(sm 6 / 8、lg 10 / 12):大小是当前步与走过的步之间的形状通道。
|
|
103
|
+
每个点都按当前步的直径占位,小一档的点四周补半档留位,换步时版面不挪、点心仍在同一条线上 */
|
|
105
104
|
[data-scope='steps'][data-part='root'][data-variant='dot'] {
|
|
106
|
-
--xh-_steps-indicator-size: var(--xh-space-
|
|
105
|
+
--xh-_steps-indicator-size: var(--xh-space-2);
|
|
106
|
+
--xh-_steps-indicator-current-size: var(--xh-space-2_5);
|
|
107
107
|
--xh-_steps-indicator-border-width: var(--xh-stroke-thick);
|
|
108
|
-
--xh-_steps-indicator-margin: calc(var(--xh-_steps-
|
|
108
|
+
--xh-_steps-indicator-margin: calc((var(--xh-_steps-indicator-current-size) - var(--xh-_steps-indicator-size)) * 0.5);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
[data-scope='steps'][data-part='root'][data-variant='dot'][data-size='sm'] {
|
|
112
|
-
--xh-_steps-indicator-size: var(--xh-space-
|
|
112
|
+
--xh-_steps-indicator-size: var(--xh-space-1_5);
|
|
113
|
+
--xh-_steps-indicator-current-size: var(--xh-space-2);
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
[data-scope='steps'][data-part='root'][data-variant='dot'][data-size='lg'] {
|
|
116
|
-
--xh-_steps-indicator-size: var(--xh-space-
|
|
117
|
+
--xh-_steps-indicator-size: var(--xh-space-2_5);
|
|
118
|
+
--xh-_steps-indicator-current-size: var(--xh-space-3);
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
/* 步骤与连接线必须保持在同一条流程轴上,空间不足时由标题省略而不是拆成两行。 */
|
|
@@ -199,19 +201,22 @@
|
|
|
199
201
|
--xh-action-host-bg-hover: var(--xh-_steps-host-bg-hover);
|
|
200
202
|
--xh-action-host-bg-pressed: var(--xh-_steps-host-bg-pressed);
|
|
201
203
|
|
|
202
|
-
/* 皮肤规则排在 @import 之后,同特指度盖过 row 档的 display: flex */
|
|
203
|
-
display: grid;
|
|
204
204
|
grid-template-columns: auto minmax(0, 1fr);
|
|
205
205
|
align-items: center;
|
|
206
206
|
column-gap: var(--xh-steps-trigger-gap, var(--xh-control-gap-md));
|
|
207
|
-
/* row 档铺满容器(inline-size: 100%)会把横排的连接线压到最小长度 */
|
|
208
|
-
inline-size: auto;
|
|
209
207
|
/* 纵向连接线的 margin-inline-start 按圆点半径 + trigger-p 对齐圆心,ghost 的 1px 透明边位会让它错 1px */
|
|
210
208
|
border-width: 0;
|
|
211
209
|
font: inherit;
|
|
212
210
|
text-align: start;
|
|
213
211
|
}
|
|
214
212
|
|
|
213
|
+
/* 两列排版、按内容收宽,盖掉 row 档的 display: flex 与 inline-size: 100%(横排的连接线会被压到最小长度)。
|
|
214
|
+
从条目往下写,特指度高过 row 档,有层与无层两份产物里都生效;收起的触发器留给下面 [hidden] 那条 */
|
|
215
|
+
[data-scope='steps'][data-part='item'] [data-scope='steps'][data-part='trigger']:not([hidden]) {
|
|
216
|
+
display: grid;
|
|
217
|
+
inline-size: auto;
|
|
218
|
+
}
|
|
219
|
+
|
|
215
220
|
/* 只读展示:trigger 不投影 Action Control,只是「序号 + 标题 + 说明」的排版容器——内距与可操作时同一把尺,
|
|
216
221
|
在两种形态间切换版面不跳;没有悬停、按压与焦点环,标题与说明不置灰 */
|
|
217
222
|
[data-scope='steps'][data-part='trigger'][data-readonly] {
|
|
@@ -228,14 +233,14 @@
|
|
|
228
233
|
color: var(--xh-fg-disabled);
|
|
229
234
|
}
|
|
230
235
|
|
|
231
|
-
/*
|
|
236
|
+
/* 序号圆点:没走到的中性淡底配次级字色,当前步品牌实心配反白字,走过的步品牌淡底配品牌对号;三态都无边无影 */
|
|
232
237
|
[data-scope='steps'][data-part='indicator'] {
|
|
233
238
|
/* 圆点里的字形是指示符:对号按指示符档取尺、随密度换档(comfortable 16 / compact 14),
|
|
234
239
|
不读 root 上只管作者标题 / 说明图标的 --xh-steps-icon-size;作者塞进圆点的 XhIcon 与兜底对号同一把尺。
|
|
235
|
-
圆点自己走
|
|
240
|
+
圆点自己走 marker-size 的尺(最小 compact sm 的 20px),两档字形在三档圆点里都留得出边距 */
|
|
236
241
|
--xh-icon-size: var(--xh-steps-indicator-mark-size, var(--xh-control-indicator-size));
|
|
237
242
|
|
|
238
|
-
/*
|
|
243
|
+
/* 当前步的进度环(::after)以圆点为准绳定位 */
|
|
239
244
|
position: relative;
|
|
240
245
|
display: inline-flex;
|
|
241
246
|
grid-row: 1 / span 2;
|
|
@@ -248,7 +253,7 @@
|
|
|
248
253
|
border-radius: var(--xh-steps-indicator-radius, var(--xh-shape-circle));
|
|
249
254
|
background: var(--xh-steps-indicator-bg, var(--xh-bg-subtle));
|
|
250
255
|
color: var(--xh-steps-indicator-fg, var(--xh-fg-muted));
|
|
251
|
-
font-size: var(--xh-steps-indicator-font-size, var(--xh-_steps-
|
|
256
|
+
font-size: var(--xh-steps-indicator-font-size, var(--xh-_steps-indicator-font-size));
|
|
252
257
|
font-weight: var(--xh-font-weight-medium);
|
|
253
258
|
/* 等宽数字:1 与 7 的字形宽度在比例字体里并不相同,不定住会让序号左右抖一格 */
|
|
254
259
|
font-variant-numeric: tabular-nums;
|
|
@@ -266,27 +271,34 @@
|
|
|
266
271
|
|
|
267
272
|
/* 圆点是格状当前的标记,但不是激活宿主:宿主是投影了 row 档的触发器;圆点在宿主的
|
|
268
273
|
:hover / :is(:active, [data-pressed]) 下读宿主 host 槽的同一来源换面,同一时间线,不缩放——
|
|
269
|
-
|
|
270
|
-
|
|
274
|
+
没走到的圆点自己是 100 的淡底,坐在触发器的 hover 面(100)上,再上一档到 200 才与承载面分得开,按下到 300;
|
|
275
|
+
走过的圆点走品牌淡底的阶梯(12% → 悬停 20% → 按下 28%);当前步的实心面按下换语气 active 档 */
|
|
271
276
|
[data-scope='steps'][data-part='trigger']:hover:not([data-disabled], [data-readonly])
|
|
272
277
|
[data-scope='steps'][data-part='indicator'][data-state='incomplete'] {
|
|
273
278
|
background: var(--xh-steps-indicator-bg-hover, var(--xh-_steps-host-bg-hover));
|
|
274
279
|
color: var(--xh-steps-indicator-fg-hover, var(--xh-fg-default));
|
|
275
280
|
}
|
|
276
281
|
|
|
277
|
-
/*
|
|
282
|
+
/* 点状形态里走过的点是实心标记色,悬停不换面:承载它的行换面即是悬停反馈 */
|
|
278
283
|
[data-scope='steps'][data-part='trigger']:hover:not([data-disabled], [data-readonly])
|
|
279
284
|
[data-scope='steps'][data-part='indicator'][data-state='completed']:not([data-variant='dot']) {
|
|
280
|
-
background: var(--xh-steps-indicator-bg-completed-hover, var(--xh-_steps-
|
|
285
|
+
background: var(--xh-steps-indicator-bg-completed-hover, var(--xh-_steps-accent-subtle-hover));
|
|
281
286
|
}
|
|
282
287
|
|
|
283
288
|
[data-scope='steps'][data-part='trigger']:not([data-disabled], [data-readonly]):is(:active, [data-pressed])
|
|
284
|
-
[data-scope='steps'][data-part='indicator']
|
|
289
|
+
[data-scope='steps'][data-part='indicator'][data-state='incomplete'] {
|
|
285
290
|
background: var(--xh-steps-indicator-bg-pressed, var(--xh-_steps-host-bg-pressed));
|
|
286
291
|
transition-duration: var(--xh-motion-duration-press);
|
|
287
292
|
transition-timing-function: var(--xh-motion-ease-press);
|
|
288
293
|
}
|
|
289
294
|
|
|
295
|
+
[data-scope='steps'][data-part='trigger']:not([data-disabled], [data-readonly]):is(:active, [data-pressed])
|
|
296
|
+
[data-scope='steps'][data-part='indicator'][data-state='completed']:not([data-variant='dot']) {
|
|
297
|
+
background: var(--xh-steps-indicator-bg-completed-pressed, var(--xh-_steps-accent-subtle-active));
|
|
298
|
+
transition-duration: var(--xh-motion-duration-press);
|
|
299
|
+
transition-timing-function: var(--xh-motion-ease-press);
|
|
300
|
+
}
|
|
301
|
+
|
|
290
302
|
[data-scope='steps'][data-part='trigger']:not([data-disabled], [data-readonly]):is(:active, [data-pressed])
|
|
291
303
|
[data-scope='steps'][data-part='indicator'][data-state='current']:not([data-variant='dot']) {
|
|
292
304
|
background: var(--xh-steps-indicator-bg-current-pressed, var(--xh-_tone-active, var(--xh-bg-brand-active)));
|
|
@@ -298,19 +310,19 @@
|
|
|
298
310
|
border-color: var(--xh-steps-indicator-border-current, var(--xh-_steps-accent));
|
|
299
311
|
background: var(--xh-steps-indicator-bg-current, var(--xh-_steps-accent));
|
|
300
312
|
color: var(--xh-steps-indicator-fg-current, var(--xh-_steps-on-accent));
|
|
301
|
-
box-shadow: var(--xh-steps-indicator-shadow,
|
|
313
|
+
box-shadow: var(--xh-steps-indicator-shadow, none);
|
|
302
314
|
}
|
|
303
315
|
|
|
304
|
-
/*
|
|
316
|
+
/* 走过的步:品牌淡底(透明边位)承一枚品牌色对号;标了语气的步淡底与对号跟语气走 */
|
|
305
317
|
[data-scope='steps'][data-part='indicator'][data-state='completed'] {
|
|
306
318
|
border-color: var(--xh-steps-indicator-border-completed, transparent);
|
|
307
|
-
background: var(--xh-steps-indicator-bg-completed, var(--xh-
|
|
319
|
+
background: var(--xh-steps-indicator-bg-completed, var(--xh-_steps-accent-subtle));
|
|
308
320
|
color: var(--xh-steps-indicator-fg-completed, var(--xh-_steps-accent-mark));
|
|
309
321
|
}
|
|
310
322
|
|
|
311
323
|
/* 点状形态的三态:没走到的空心粗圈(墨色与序号形态的序号同一支),走过的实心标记色(序号形态里那枚对号的颜色),
|
|
312
|
-
|
|
313
|
-
|
|
324
|
+
当前步实心品牌(格状当前)并放大一档。空心 / 实心 / 放大是形状通道,不只靠颜色分三态;
|
|
325
|
+
每个点都按当前步的直径占位,换步时版面不挪 */
|
|
314
326
|
[data-scope='steps'][data-part='indicator'][data-variant='dot'] {
|
|
315
327
|
margin: var(--xh-_steps-indicator-margin);
|
|
316
328
|
border-color: var(--xh-steps-indicator-border, var(--xh-fg-muted));
|
|
@@ -318,15 +330,16 @@
|
|
|
318
330
|
}
|
|
319
331
|
|
|
320
332
|
/* 实心的点底与圈同一色,取自 --xh-_steps-dot:走过的标记色、当前步品牌,按下换语气 active 档
|
|
321
|
-
|
|
333
|
+
(与序号圆点当前步按下同一档),动不了的禁用墨色 */
|
|
322
334
|
[data-scope='steps'][data-part='indicator'][data-variant='dot'][data-state='completed'] {
|
|
323
335
|
--xh-_steps-dot: var(--xh-steps-indicator-bg-completed, var(--xh-_steps-accent-mark));
|
|
324
336
|
}
|
|
325
337
|
|
|
338
|
+
/* 当前步的点放大一档、收掉补位:占的位置与别的点一样大 */
|
|
326
339
|
[data-scope='steps'][data-part='indicator'][data-variant='dot'][data-state='current'] {
|
|
327
340
|
--xh-_steps-dot: var(--xh-steps-indicator-bg-current, var(--xh-_steps-accent));
|
|
328
|
-
|
|
329
|
-
|
|
341
|
+
--xh-_steps-indicator-size: var(--xh-_steps-indicator-current-size);
|
|
342
|
+
--xh-_steps-indicator-margin: var(--xh-space-0);
|
|
330
343
|
}
|
|
331
344
|
|
|
332
345
|
[data-scope='steps'][data-part='trigger']:not([data-disabled], [data-readonly]):is(:active, [data-pressed])
|
|
@@ -352,11 +365,10 @@
|
|
|
352
365
|
background: var(--xh-_steps-dot);
|
|
353
366
|
}
|
|
354
367
|
|
|
355
|
-
/*
|
|
356
|
-
弧(arc)从 12 点顺时针走到完成比例,其余是轨道(track
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
比例变化时弧按数值角色走(move / continuous),首帧直接落位 */
|
|
368
|
+
/* 当前步的进度环:离圆点边一道缝、一道粗描边宽,叠在圆点外面、不接指针;环面由一圈角向渐变经环形遮罩挖空中心得来。
|
|
369
|
+
弧(arc)从 12 点顺时针走到完成比例,其余是轨道(track),取连接线的底色:弧就是这一步走了多少。
|
|
370
|
+
时钟式的走向是稳定身份,不随书写方向镜像。静息收着,序号圆点带了比例(data-progress)的当前步才亮出来,
|
|
371
|
+
走到 / 离开这一步时按状态角色淡入淡出;比例变化时弧按数值角色走(move / continuous),首帧直接落位 */
|
|
360
372
|
[data-scope='steps'][data-part='indicator']::after {
|
|
361
373
|
--xh-_steps-ring-arc: var(--xh-steps-indicator-ring-bg, var(--xh-_steps-accent));
|
|
362
374
|
--xh-_steps-ring-track: var(--xh-_steps-ring-arc);
|
|
@@ -378,7 +390,7 @@
|
|
|
378
390
|
--xh-_steps-progress var(--xh-motion-duration-move) var(--xh-motion-ease-continuous);
|
|
379
391
|
}
|
|
380
392
|
|
|
381
|
-
[data-scope='steps'][data-part='indicator'][data-state='current']
|
|
393
|
+
[data-scope='steps'][data-part='indicator'][data-state='current'][data-progress]::after {
|
|
382
394
|
opacity: 1;
|
|
383
395
|
}
|
|
384
396
|
|
|
@@ -390,28 +402,46 @@
|
|
|
390
402
|
--xh-_steps-ring-arc: var(--xh-steps-indicator-ring-bg-disabled, var(--xh-fg-disabled));
|
|
391
403
|
}
|
|
392
404
|
|
|
393
|
-
/* 单步语气:tones / collection 给某一步标了 data-tone
|
|
394
|
-
|
|
405
|
+
/* 单步语气:tones / collection 给某一步标了 data-tone,强调槽在这一步重新从语气层取值,
|
|
406
|
+
它的标记与连接线照旧从祖先继承——只有这一步换色,状态那一档照算 */
|
|
395
407
|
[data-scope='steps'][data-part='item'][data-tone] {
|
|
396
408
|
--xh-_steps-accent: var(--xh-_tone);
|
|
397
|
-
--xh-_steps-accent-
|
|
409
|
+
--xh-_steps-accent-subtle: var(--xh-_tone-subtle);
|
|
410
|
+
--xh-_steps-accent-subtle-hover: var(--xh-_tone-subtle-hover);
|
|
411
|
+
--xh-_steps-accent-subtle-active: var(--xh-_tone-subtle-active);
|
|
398
412
|
--xh-_steps-accent-mark: var(--xh-_tone-fg);
|
|
399
413
|
--xh-_steps-on-accent: var(--xh-_tone-on);
|
|
400
414
|
}
|
|
401
415
|
|
|
402
|
-
/*
|
|
416
|
+
/* 标了语气的那一步还没走到也得被看见:与当前步同一副语气实心面配反白字(出错的那一步是危险色实心)。
|
|
417
|
+
带上触发器这一层祖先,特指度才压得过没走到的圆点的悬停与按下面:悬停不换中性面,按下换语气 active 档 */
|
|
418
|
+
[data-scope='steps'][data-part='item'][data-tone] [data-scope='steps'][data-part='trigger']
|
|
419
|
+
[data-scope='steps'][data-part='indicator'][data-state='incomplete']:not([data-variant='dot']) {
|
|
420
|
+
border-color: var(--xh-steps-indicator-border-toned, var(--xh-_steps-accent));
|
|
421
|
+
background: var(--xh-steps-indicator-bg-toned, var(--xh-_steps-accent));
|
|
422
|
+
color: var(--xh-steps-indicator-fg-toned, var(--xh-_steps-on-accent));
|
|
423
|
+
}
|
|
424
|
+
|
|
403
425
|
[data-scope='steps'][data-part='item'][data-tone]
|
|
404
|
-
[data-scope='steps'][data-part='
|
|
426
|
+
[data-scope='steps'][data-part='trigger']:not([data-disabled], [data-readonly]):is(:active, [data-pressed])
|
|
427
|
+
[data-scope='steps'][data-part='indicator'][data-state='incomplete']:not([data-variant='dot']) {
|
|
428
|
+
background: var(--xh-steps-indicator-bg-current-pressed, var(--xh-_tone-active));
|
|
429
|
+
transition-duration: var(--xh-motion-duration-press);
|
|
430
|
+
transition-timing-function: var(--xh-motion-ease-press);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/* 点状形态里放不下实心面上的字,标了语气又没走到的点仍是空心圈:圈换语气色、心里只铺语气淡底 */
|
|
434
|
+
[data-scope='steps'][data-part='item'][data-tone]
|
|
435
|
+
[data-scope='steps'][data-part='indicator'][data-state='incomplete'][data-variant='dot'] {
|
|
405
436
|
border-color: var(--xh-steps-indicator-border-toned, var(--xh-_steps-accent));
|
|
406
437
|
background: var(--xh-steps-indicator-bg-toned, var(--xh-_tone-subtle));
|
|
407
|
-
color: var(--xh-steps-indicator-fg-toned, var(--xh-_steps-accent-text));
|
|
408
438
|
}
|
|
409
439
|
|
|
410
440
|
[data-scope='steps'][data-part='item'][data-disabled] [data-scope='steps'][data-part='indicator'] {
|
|
411
441
|
border-color: var(--xh-steps-indicator-border-disabled, var(--xh-border-default));
|
|
412
442
|
background: var(--xh-steps-indicator-bg-disabled, var(--xh-bg-muted));
|
|
413
443
|
color: var(--xh-steps-indicator-fg-disabled, var(--xh-fg-disabled));
|
|
414
|
-
/*
|
|
444
|
+
/* 这一步动不了,作者给圆点加的影跟着收掉 */
|
|
415
445
|
box-shadow: none;
|
|
416
446
|
}
|
|
417
447
|
|
|
@@ -430,20 +460,25 @@
|
|
|
430
460
|
transition: color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
431
461
|
}
|
|
432
462
|
|
|
463
|
+
/* 走到与走过的步标题取正文色,没走到的留在次级色;当前步再取区块标题的字重 */
|
|
433
464
|
[data-scope='steps'][data-part='title']:is([data-state='current'], [data-state='completed']) {
|
|
434
|
-
color: var(--xh-steps-title-fg-active, var(--xh-
|
|
465
|
+
color: var(--xh-steps-title-fg-active, var(--xh-fg-default));
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
[data-scope='steps'][data-part='title'][data-state='current'] {
|
|
469
|
+
font-weight: var(--xh-steps-title-font-weight-current, var(--xh-text-heading-3-weight));
|
|
435
470
|
}
|
|
436
471
|
|
|
437
|
-
/*
|
|
472
|
+
/* 标了语气的那一步标题取正文色,不论走到没走到:语气由圆点的语气面表达,标题不染色 */
|
|
438
473
|
[data-scope='steps'][data-part='item'][data-tone] [data-scope='steps'][data-part='title'] {
|
|
439
|
-
color: var(--xh-steps-title-fg-toned, var(--xh-
|
|
474
|
+
color: var(--xh-steps-title-fg-toned, var(--xh-fg-default));
|
|
440
475
|
}
|
|
441
476
|
|
|
442
|
-
/*
|
|
477
|
+
/* 说明走次级标注:12 / fg-subtle / leading-normal,不随 size 档 */
|
|
443
478
|
[data-scope='steps'][data-part='description'] {
|
|
444
479
|
grid-column: 2;
|
|
445
|
-
color: var(--xh-steps-description-fg, var(--xh-fg-
|
|
446
|
-
font-size: var(--xh-steps-description-font-size, var(--xh-text-
|
|
480
|
+
color: var(--xh-steps-description-fg, var(--xh-fg-subtle));
|
|
481
|
+
font-size: var(--xh-steps-description-font-size, var(--xh-text-caption-size));
|
|
447
482
|
line-height: var(--xh-leading-normal);
|
|
448
483
|
overflow: hidden;
|
|
449
484
|
white-space: nowrap;
|
|
@@ -456,7 +491,7 @@
|
|
|
456
491
|
position: relative;
|
|
457
492
|
flex: 1;
|
|
458
493
|
min-inline-size: var(--xh-steps-separator-min-length, var(--xh-space-4));
|
|
459
|
-
block-size: var(--xh-steps-separator-thickness, var(--xh-stroke-
|
|
494
|
+
block-size: var(--xh-steps-separator-thickness, var(--xh-stroke-thin));
|
|
460
495
|
border-radius: var(--xh-steps-separator-radius, var(--xh-shape-pill));
|
|
461
496
|
background: var(--xh-steps-separator-bg, var(--xh-border-default));
|
|
462
497
|
}
|
|
@@ -483,15 +518,15 @@
|
|
|
483
518
|
/* 纵向时连接线转成竖的一条,缩进到与序号圆点同一条竖线上 */
|
|
484
519
|
[data-scope='steps'][data-part='separator'][data-orientation='vertical'] {
|
|
485
520
|
flex: none;
|
|
486
|
-
inline-size: var(--xh-steps-separator-thickness, var(--xh-stroke-
|
|
487
|
-
min-inline-size: var(--xh-steps-separator-thickness, var(--xh-stroke-
|
|
521
|
+
inline-size: var(--xh-steps-separator-thickness, var(--xh-stroke-thin));
|
|
522
|
+
min-inline-size: var(--xh-steps-separator-thickness, var(--xh-stroke-thin));
|
|
488
523
|
block-size: var(--xh-steps-separator-min-length, var(--xh-space-7));
|
|
489
524
|
/* 圆点半径加上它四周留给环的位置,减去线宽的一半:calc 里的除法要写成乘 0.5,除号在这儿是无效语法 */
|
|
490
525
|
margin-inline-start: calc(
|
|
491
526
|
var(--xh-steps-indicator-size, var(--xh-_steps-indicator-size)) * 0.5
|
|
492
527
|
+ var(--xh-_steps-indicator-margin)
|
|
493
528
|
+ var(--xh-steps-trigger-p, var(--xh-control-px-sm))
|
|
494
|
-
- var(--xh-steps-separator-thickness, var(--xh-stroke-
|
|
529
|
+
- var(--xh-steps-separator-thickness, var(--xh-stroke-thin)) * 0.5
|
|
495
530
|
);
|
|
496
531
|
}
|
|
497
532
|
|
|
@@ -554,7 +589,7 @@
|
|
|
554
589
|
}
|
|
555
590
|
|
|
556
591
|
/* 点状形态的点靠底色画实心,这一档里底色被换成 Canvas,走过与当前步的点会与空心的圈混成一样。
|
|
557
|
-
|
|
592
|
+
实心的点换成 CanvasText:整行悬停涂成 Highlight 时照样看得见,走过与当前步靠当前步放大的那一档分开;
|
|
558
593
|
动不了的取 GrayText */
|
|
559
594
|
[data-scope='steps'][data-part='trigger'] [data-scope='steps'][data-part='indicator'][data-variant='dot']:not([data-state='incomplete']) {
|
|
560
595
|
border-color: CanvasText;
|
|
@@ -593,21 +628,17 @@
|
|
|
593
628
|
}
|
|
594
629
|
|
|
595
630
|
@media print {
|
|
596
|
-
/*
|
|
597
|
-
|
|
598
|
-
[data-scope='steps'][data-part='indicator']
|
|
599
|
-
|
|
631
|
+
/* 打印默认丢背景:当前步的实心底、走过那几步的淡底与里面那枚勾(mask 挖出的一块底色)都印不出来,
|
|
632
|
+
走过的步还是透明边位,连圈都不剩。圆点、兜底对号与进度环照原色印,当前步标题再加粗一档 */
|
|
633
|
+
[data-scope='steps'][data-part='indicator'],
|
|
634
|
+
[data-scope='steps'][data-part='indicator']::before,
|
|
635
|
+
[data-scope='steps'][data-part='indicator']::after {
|
|
636
|
+
print-color-adjust: exact;
|
|
600
637
|
}
|
|
601
638
|
|
|
602
639
|
[data-scope='steps'][data-part='title'][data-state='current'] {
|
|
603
640
|
font-weight: var(--xh-font-weight-semibold);
|
|
604
641
|
}
|
|
605
|
-
|
|
606
|
-
/* 点状形态的点与当前步那圈环都是底色画的,丢了底色走过与当前步就只剩空心圈:这两样照原色印 */
|
|
607
|
-
[data-scope='steps'][data-part='indicator'][data-variant='dot'],
|
|
608
|
-
[data-scope='steps'][data-part='indicator']::after {
|
|
609
|
-
print-color-adjust: exact;
|
|
610
|
-
}
|
|
611
642
|
}
|
|
612
643
|
|
|
613
644
|
@media (forced-colors: active) {
|
package/css/switch.css
CHANGED
|
@@ -17,17 +17,18 @@
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
[data-scope='switch'][data-part='root'] {
|
|
20
|
-
/*
|
|
21
|
-
滑块边长 = 轨道高 − 两条留白,轨道宽 = 两倍轨道高 −
|
|
20
|
+
/* 尺寸档只换轨道高度与留白两个私有槽,其余几何都从它们算出来:
|
|
21
|
+
滑块边长 = 轨道高 − 两条留白,轨道宽 = 两倍轨道高 − 两条留白,滑块行程因此正好等于自身边长。
|
|
22
|
+
md 留白 4px:24px 轨道配 16px 滑块、40px 宽;sm 留白收到 2px,滑块不至于小到点不准 */
|
|
22
23
|
--xh-_switch-track-h: var(--xh-switch-track-h-md);
|
|
23
|
-
--xh-_switch-pad: var(--xh-space-
|
|
24
|
+
--xh-_switch-pad: var(--xh-space-1);
|
|
24
25
|
--xh-_switch-thumb-size: calc(var(--xh-_switch-track-h) - var(--xh-_switch-pad) * 2);
|
|
25
26
|
--xh-_switch-thumb-press-stretch: var(--xh-switch-thumb-press-stretch, var(--xh-motion-distance-sm));
|
|
26
27
|
|
|
27
28
|
/* 选中态轨道色随语气走。没写 data-tone 时 --xh-_tone 没被声明,退回原来的品牌色 */
|
|
28
29
|
--xh-_switch-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
29
|
-
/*
|
|
30
|
-
--xh-_switch-track-border: var(--xh-switch-border,
|
|
30
|
+
/* 轨道的面就是边界:静息内描边透明;readonly / invalid 才换成有色的一圈,不吃掉滑块行程 */
|
|
31
|
+
--xh-_switch-track-border: var(--xh-switch-border, transparent);
|
|
31
32
|
/* 轨道的面:未选中是 --xh-bg-subtle-active(300)的实体字段控件面;checked / readonly / disabled 换这一支。
|
|
32
33
|
静息已是 300,中性阶梯再无更深一档可换:按下的底缺省仍是轨道静息面(使用者可经 --xh-switch-bg-pressed
|
|
33
34
|
另给),换面的通道由下面滑块的橡皮带拉伸与压平投影承担;选中轨道按下换到语气的 active 档 */
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
--xh-_switch-track-bg-pressed: var(--xh-switch-bg-pressed, var(--xh-_switch-track-bg));
|
|
36
37
|
--xh-_switch-fg: var(--xh-switch-fg, var(--xh-fg-default));
|
|
37
38
|
|
|
38
|
-
/* 轨道接 Action Control text 档(定尺轨道):悬停 / 按下 /
|
|
39
|
+
/* 轨道接 Action Control text 档(定尺轨道):悬停 / 按下 / 禁用面、按压与换底、粗指针热区、
|
|
39
40
|
焦点环与过渡由家族配方给,这里只把轨道的私有槽映射到桥接槽。轨道没有实描边(边界以内描边画,不吃行程),
|
|
40
41
|
边位映射 transparent 并把 border 宽度归零;内描边经 shadow 通道各态同一支。悬停不换面(阶梯只给按下) */
|
|
41
42
|
--xh-action-visual-size: var(--xh-_switch-track-h);
|
|
@@ -132,6 +133,7 @@
|
|
|
132
133
|
/* 缺省档写在上面的基础规则里 */
|
|
133
134
|
[data-scope='switch'][data-part='root'][data-size='sm'] {
|
|
134
135
|
--xh-_switch-track-h: var(--xh-switch-track-h-sm);
|
|
136
|
+
--xh-_switch-pad: var(--xh-space-0_5);
|
|
135
137
|
}
|
|
136
138
|
|
|
137
139
|
[data-scope='switch'][data-part='root'][data-size='lg'] {
|
|
@@ -158,7 +160,7 @@
|
|
|
158
160
|
}
|
|
159
161
|
|
|
160
162
|
/* 滑块是 raised 抬起面(可拖起部件,逐部件登记):--xh-bg-surface-raised 底 + --xh-border-default 描边 +
|
|
161
|
-
--xh-elevation-raised
|
|
163
|
+
--xh-elevation-raised 影(缺省 none),无顶光;描边必须在,影只是加成 */
|
|
162
164
|
[data-scope='switch'][data-part='thumb'] {
|
|
163
165
|
position: relative;
|
|
164
166
|
display: grid;
|
package/css/table.css
CHANGED
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
--xh-control-indicator-* 一族——五颗把手在自己身上把 --xh-icon-size 改接到方盒的尺,排序钮那支叫 --xh-table-sort-size */
|
|
29
29
|
--xh-icon-size: var(--xh-table-icon-size, var(--xh-glyph-size-md));
|
|
30
30
|
|
|
31
|
+
/* 表头底比行悬停的淡底浅一档:淡底在表体里是悬停与斑马纹的面,表头再取同一档就压得比数据还重。
|
|
32
|
+
取淡底的 55% 兑进承载面,与字段静息底同一档深浅;两端都是实色,吸顶时滚过去的行不会从它底下透出来 */
|
|
33
|
+
--xh-_table-header-bg: color-mix(in srgb, var(--xh-bg-subtle-opaque) 55%, var(--xh-bg-surface));
|
|
34
|
+
|
|
31
35
|
/* 密度档只换这两个私有槽:单元格与列标题从 root 继承前者,字号靠 font-size 本身继承下去,
|
|
32
36
|
换档不必给每个部件各写一条选择器,列宽那套算法也一点不碰 */
|
|
33
37
|
--xh-_table-cell-py: var(--xh-table-cell-py-md);
|
|
@@ -186,7 +190,7 @@
|
|
|
186
190
|
|
|
187
191
|
/* 表头与表体之间是内部分隔,与行间横线同一支:外边才取 default */
|
|
188
192
|
border-block-end: var(--xh-stroke-thin) solid var(--xh-table-header-border, var(--xh-border-subtle));
|
|
189
|
-
background: var(--xh-table-header-bg, var(--xh-
|
|
193
|
+
background: var(--xh-table-header-bg, var(--xh-_table-header-bg));
|
|
190
194
|
}
|
|
191
195
|
|
|
192
196
|
/* 吸顶:滚动容器是 root,表头钉在它的上沿。背景必须是实色——
|
|
@@ -289,7 +293,7 @@
|
|
|
289
293
|
gap: var(--xh-table-cell-gap, var(--xh-control-gap-md));
|
|
290
294
|
min-inline-size: var(--xh-table-cell-min-w, 3rem);
|
|
291
295
|
padding-block: var(--xh-table-cell-py, var(--xh-_table-cell-py));
|
|
292
|
-
padding-inline: var(--xh-table-cell-px, var(--xh-
|
|
296
|
+
padding-inline: var(--xh-table-cell-px, var(--xh-space-4));
|
|
293
297
|
overflow: hidden;
|
|
294
298
|
text-overflow: ellipsis;
|
|
295
299
|
white-space: nowrap;
|
|
@@ -300,9 +304,15 @@
|
|
|
300
304
|
display: none;
|
|
301
305
|
}
|
|
302
306
|
|
|
307
|
+
/* 格子里放的字段族控件(就地编辑的单元格)铺满这一格,与放进 Field 时一样;并排几个就平分,各自的压缩底线照旧 */
|
|
308
|
+
[data-scope='table'][data-part='cell'] {
|
|
309
|
+
--xh-control-w: 100%;
|
|
310
|
+
}
|
|
311
|
+
|
|
303
312
|
[data-scope='table'][data-part='column-header'] {
|
|
304
|
-
|
|
305
|
-
|
|
313
|
+
/* 列头与正文同色、加一档字重:表头靠淡底与字重和表体分开,不再靠淡字 */
|
|
314
|
+
color: var(--xh-table-column-fg, var(--xh-fg-default));
|
|
315
|
+
font-weight: var(--xh-table-column-font-weight, var(--xh-font-weight-medium));
|
|
306
316
|
text-align: start;
|
|
307
317
|
user-select: none;
|
|
308
318
|
}
|
|
@@ -393,7 +403,7 @@
|
|
|
393
403
|
/* 表头行本身透明(露出表头底),吸附的列头继承到的就是透明——得自己带表头底,
|
|
394
404
|
否则横向滚动时其它列头从它下面穿过去 */
|
|
395
405
|
[data-scope='table'][data-part='column-header'][data-frozen] {
|
|
396
|
-
background: var(--xh-table-header-bg, var(--xh-
|
|
406
|
+
background: var(--xh-table-header-bg, var(--xh-_table-header-bg));
|
|
397
407
|
}
|
|
398
408
|
|
|
399
409
|
/* 冻结列的边界:紧挨滚动区的那一列在朝向滚动区的一侧画一道描边,只在确有内容被压住时出现——
|
|
@@ -457,9 +467,11 @@
|
|
|
457
467
|
background: var(--xh-table-bg, var(--xh-bg-subtle));
|
|
458
468
|
}
|
|
459
469
|
|
|
460
|
-
/*
|
|
470
|
+
/* 竖分隔线:列与列之间一道细线,末列不画。线占的那一截从末端内衬里让出来,格子里放字的宽度与不开竖线时一样:
|
|
471
|
+
否则 60px 的序号列开了竖线只剩 27.33px,「序号」两个字差不到一个像素就出省略号,关掉竖线又放得下 */
|
|
461
472
|
[data-scope='table'][data-part='root'][data-split] [data-scope='table'][data-part='column-header']:not(:last-child),
|
|
462
473
|
[data-scope='table'][data-part='root'][data-split] [data-scope='table'][data-part='cell']:not(:last-child) {
|
|
474
|
+
padding-inline-end: calc(var(--xh-table-cell-px, var(--xh-space-4)) - var(--xh-stroke-thin));
|
|
463
475
|
border-inline-end: var(--xh-stroke-thin) solid var(--xh-table-row-border, var(--xh-border-subtle));
|
|
464
476
|
}
|
|
465
477
|
|
|
@@ -562,7 +574,7 @@
|
|
|
562
574
|
[data-scope='table'][data-part='row-select-trigger'],
|
|
563
575
|
[data-scope='table'][data-part='column-visibility-trigger'] {
|
|
564
576
|
--xh-_table-trigger-bg: transparent;
|
|
565
|
-
--xh-_table-trigger-border: var(--xh-table-trigger-border, var(--xh-border-
|
|
577
|
+
--xh-_table-trigger-border: var(--xh-table-trigger-border, var(--xh-border-strong));
|
|
566
578
|
--xh-_table-trigger-fg: var(--xh-table-trigger-fg, var(--xh-fg-on-brand));
|
|
567
579
|
--xh-action-fg-rest: var(--xh-_table-trigger-fg);
|
|
568
580
|
--xh-action-fg-hover: var(--xh-_table-trigger-fg);
|
|
@@ -1063,7 +1075,7 @@
|
|
|
1063
1075
|
/* 取下一页的按钮:铺满一行摆在表尾——铺满一行的独立动作条目,接 Action Control 的 row 档、
|
|
1064
1076
|
ghost 形态:宽度由容器给、高度随内容、按下只换面不缩放;盒几何、悬停 / 按下 / 禁用面、
|
|
1065
1077
|
焦点环与粗指针热区全由家族给,白底承载 hover 100 → pressed 200。
|
|
1066
|
-
|
|
1078
|
+
这里只把使用者槽映射到桥接槽,文案居中写在下一条 */
|
|
1067
1079
|
[data-scope='table'][data-part='load-more-trigger'] {
|
|
1068
1080
|
--xh-action-gap: var(--xh-table-load-more-trigger-gap, var(--xh-space-2));
|
|
1069
1081
|
--xh-action-padding-block: var(--xh-table-load-more-trigger-py, var(--xh-space-3));
|
|
@@ -1075,12 +1087,17 @@
|
|
|
1075
1087
|
--xh-action-fg-pressed: var(--xh-table-load-more-trigger-fg, var(--xh-fg-brand-strong));
|
|
1076
1088
|
--xh-action-font-size: var(--xh-table-load-more-trigger-font-size, var(--xh-_table-font-size));
|
|
1077
1089
|
|
|
1078
|
-
justify-content: center;
|
|
1079
|
-
text-align: center;
|
|
1080
1090
|
/* row 档允许换行、高度随内容,折行的文案走正文行高 */
|
|
1081
1091
|
line-height: var(--xh-leading-normal);
|
|
1082
1092
|
}
|
|
1083
1093
|
|
|
1094
|
+
/* 文案居中(单行整段居中,折行逐行居中),盖掉 row 档的靠起始缘排布:它是一行里唯一的东西,
|
|
1095
|
+
靠起始缘会像一条没对齐的行。选择器点名 row 档,有层与无层两份产物里都压得住它 */
|
|
1096
|
+
[data-scope='table'][data-part='load-more-trigger'][data-xh-action-profile='row'] {
|
|
1097
|
+
justify-content: center;
|
|
1098
|
+
text-align: center;
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1084
1101
|
[data-scope='table'][data-part='load-more-trigger'][hidden] {
|
|
1085
1102
|
display: none;
|
|
1086
1103
|
}
|