@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/accordion.css
CHANGED
|
@@ -20,9 +20,14 @@
|
|
|
20
20
|
/* 作者塞进正文里的图标与皮肤画的兜底字形同一把尺:md 档,标题栏上另按家族档取值 */
|
|
21
21
|
--xh-icon-size: var(--xh-accordion-icon-size, var(--xh-glyph-size-md));
|
|
22
22
|
|
|
23
|
-
/*
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
/* 尺寸档只换这几个私有槽,标题栏与正文从 root 继承它们。
|
|
24
|
+
标题栏比家族 disclosure-trigger 档收一截:md 上下 10px + 一行正文行高 21px = 41px 高,横向 12px;
|
|
25
|
+
正文与标题栏同一条起点,上下各留 8px */
|
|
26
|
+
--xh-_accordion-trigger-py: var(--xh-space-2_5);
|
|
27
|
+
--xh-_accordion-trigger-px: var(--xh-space-3);
|
|
28
|
+
--xh-_accordion-content-px: var(--xh-space-3);
|
|
29
|
+
--xh-_accordion-content-pt: var(--xh-space-2);
|
|
30
|
+
--xh-_accordion-content-pb: var(--xh-space-2);
|
|
26
31
|
|
|
27
32
|
/* 语气落在展开着的标题上,指示器写在标题里、跟着继承这个色,不另立规则。
|
|
28
33
|
没写 data-tone 时 --xh-_tone-fg 没被声明,退回原来的前景色。
|
|
@@ -42,13 +47,19 @@
|
|
|
42
47
|
/* —— 尺寸 —— */
|
|
43
48
|
/* 缺省档写在上面的基础规则里 */
|
|
44
49
|
[data-scope='accordion'][data-part='root'][data-size='sm'] {
|
|
45
|
-
--xh-_accordion-
|
|
46
|
-
--xh-_accordion-
|
|
50
|
+
--xh-_accordion-trigger-py: var(--xh-space-1_5);
|
|
51
|
+
--xh-_accordion-trigger-px: var(--xh-space-2_5);
|
|
52
|
+
--xh-_accordion-content-px: var(--xh-space-2_5);
|
|
53
|
+
--xh-_accordion-content-pt: var(--xh-space-1_5);
|
|
54
|
+
--xh-_accordion-content-pb: var(--xh-space-1_5);
|
|
47
55
|
}
|
|
48
56
|
|
|
49
57
|
[data-scope='accordion'][data-part='root'][data-size='lg'] {
|
|
50
|
-
--xh-_accordion-
|
|
51
|
-
--xh-_accordion-
|
|
58
|
+
--xh-_accordion-trigger-py: var(--xh-space-3);
|
|
59
|
+
--xh-_accordion-trigger-px: var(--xh-space-4);
|
|
60
|
+
--xh-_accordion-content-px: var(--xh-space-4);
|
|
61
|
+
--xh-_accordion-content-pt: var(--xh-space-3);
|
|
62
|
+
--xh-_accordion-content-pb: var(--xh-space-3);
|
|
52
63
|
}
|
|
53
64
|
|
|
54
65
|
[data-scope='accordion'][data-part='item'] {
|
|
@@ -62,14 +73,14 @@
|
|
|
62
73
|
[data-scope='accordion'][data-part='root']
|
|
63
74
|
> [data-scope='accordion'][data-part='item']
|
|
64
75
|
+ [data-scope='accordion'][data-part='item'] {
|
|
65
|
-
border-block-start: var(--xh-stroke-thin) solid var(--xh-accordion-item-border, var(--xh-border-
|
|
76
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-accordion-item-border, var(--xh-border-default));
|
|
66
77
|
}
|
|
67
78
|
|
|
68
79
|
[data-scope='accordion'][data-part='root'][data-orientation='horizontal']
|
|
69
80
|
> [data-scope='accordion'][data-part='item']
|
|
70
81
|
+ [data-scope='accordion'][data-part='item'] {
|
|
71
82
|
border-block-start: 0;
|
|
72
|
-
border-inline-start: var(--xh-stroke-thin) solid var(--xh-accordion-item-border, var(--xh-border-
|
|
83
|
+
border-inline-start: var(--xh-stroke-thin) solid var(--xh-accordion-item-border, var(--xh-border-default));
|
|
73
84
|
}
|
|
74
85
|
|
|
75
86
|
/* 作者显式渲染的分隔线。渲染了它,上面那条 item + item 的相邻规则就不再命中,
|
|
@@ -79,7 +90,7 @@
|
|
|
79
90
|
block-size: var(--xh-stroke-thin);
|
|
80
91
|
border: 0;
|
|
81
92
|
margin: 0;
|
|
82
|
-
background: var(--xh-accordion-item-border, var(--xh-border-
|
|
93
|
+
background: var(--xh-accordion-item-border, var(--xh-border-default));
|
|
83
94
|
}
|
|
84
95
|
|
|
85
96
|
[data-scope='accordion'][data-part='item-separator'][hidden] {
|
|
@@ -129,10 +140,10 @@
|
|
|
129
140
|
> [data-scope='accordion'][data-part='item']:not(:last-child)::after {
|
|
130
141
|
content: '';
|
|
131
142
|
position: absolute;
|
|
132
|
-
inset-inline:
|
|
143
|
+
inset-inline: 0;
|
|
133
144
|
inset-block-end: 0;
|
|
134
145
|
block-size: var(--xh-stroke-thin);
|
|
135
|
-
background: var(--xh-accordion-item-border, var(--xh-border-
|
|
146
|
+
background: var(--xh-accordion-item-border, var(--xh-border-default));
|
|
136
147
|
pointer-events: none;
|
|
137
148
|
}
|
|
138
149
|
|
|
@@ -148,8 +159,8 @@
|
|
|
148
159
|
[data-scope='accordion'][data-part='trigger'] {
|
|
149
160
|
--xh-action-gap: var(--xh-accordion-trigger-gap, var(--xh-_action-profile-gap));
|
|
150
161
|
--xh-action-visual-size: var(--xh-accordion-trigger-h, var(--xh-_action-profile-visual-size));
|
|
151
|
-
--xh-action-padding-block: var(--xh-accordion-trigger-py, var(--xh-
|
|
152
|
-
--xh-action-padding-inline: var(--xh-accordion-trigger-px, var(--xh-
|
|
162
|
+
--xh-action-padding-block: var(--xh-accordion-trigger-py, var(--xh-_accordion-trigger-py));
|
|
163
|
+
--xh-action-padding-inline: var(--xh-accordion-trigger-px, var(--xh-_accordion-trigger-px));
|
|
153
164
|
--xh-action-radius: var(--xh-accordion-trigger-radius, var(--xh-_action-profile-radius));
|
|
154
165
|
--xh-action-bg-rest: var(--xh-accordion-trigger-bg, var(--xh-_action-variant-bg-rest));
|
|
155
166
|
--xh-action-bg-hover: var(--xh-accordion-trigger-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
@@ -157,10 +168,11 @@
|
|
|
157
168
|
--xh-action-fg-hover: var(--xh-accordion-trigger-fg, var(--xh-_action-variant-fg-hover));
|
|
158
169
|
--xh-action-fg-pressed: var(--xh-accordion-trigger-fg, var(--xh-_action-variant-fg-pressed));
|
|
159
170
|
--xh-action-font-size: var(--xh-accordion-trigger-font-size, var(--xh-_action-profile-font-size));
|
|
160
|
-
--xh-icon-size: var(--xh-accordion-icon-size, var(--xh-
|
|
171
|
+
--xh-icon-size: var(--xh-accordion-icon-size, var(--xh-glyph-size-sm));
|
|
161
172
|
|
|
162
173
|
border-width: 0;
|
|
163
174
|
font-weight: var(--xh-accordion-trigger-font-weight, var(--xh-text-label-weight));
|
|
175
|
+
line-height: var(--xh-leading-normal);
|
|
164
176
|
}
|
|
165
177
|
|
|
166
178
|
/* 展开态自带一个槽:与常态共用一个的话,作者一改常态字色,
|
|
@@ -169,6 +181,8 @@
|
|
|
169
181
|
--xh-action-fg-rest: var(--xh-accordion-trigger-fg-open, var(--xh-_accordion-open-fg));
|
|
170
182
|
--xh-action-fg-hover: var(--xh-accordion-trigger-fg-open, var(--xh-_accordion-open-fg));
|
|
171
183
|
--xh-action-fg-pressed: var(--xh-accordion-trigger-fg-open, var(--xh-_accordion-open-fg));
|
|
184
|
+
|
|
185
|
+
font-weight: var(--xh-accordion-trigger-font-weight-open, var(--xh-font-weight-medium));
|
|
172
186
|
}
|
|
173
187
|
|
|
174
188
|
/* 禁用条目走 aria-disabled,仍留在 Tab 序里,只是不可操作;前景换成禁用色,不靠 opacity 压暗
|
|
@@ -182,7 +196,7 @@
|
|
|
182
196
|
align-items: center;
|
|
183
197
|
justify-content: center;
|
|
184
198
|
flex: none;
|
|
185
|
-
color: var(--xh-accordion-indicator-fg, var(--xh-fg-
|
|
199
|
+
color: var(--xh-accordion-indicator-fg, var(--xh-fg-subtle));
|
|
186
200
|
line-height: var(--xh-leading-none);
|
|
187
201
|
}
|
|
188
202
|
|
|
@@ -215,20 +229,33 @@
|
|
|
215
229
|
/* 这里刻意没有 [data-part='content'][hidden] { display: none }:补了动画一帧都播不出来。
|
|
216
230
|
收起由适配器在退场结束后写内联 display 落成,退场窗口内靠 connect 发的 inert 挡住焦点 */
|
|
217
231
|
[data-scope='accordion'][data-part='content'] {
|
|
218
|
-
/*
|
|
232
|
+
/* 行高与内缩同帧动的共享关键帧读这两条槽,两端内缩一起收放 */
|
|
233
|
+
--xh-_disclosure-pt: var(--xh-accordion-content-pt, var(--xh-_accordion-content-pt));
|
|
219
234
|
--xh-_disclosure-pb: var(--xh-accordion-content-pb, var(--xh-_accordion-content-pb));
|
|
220
235
|
|
|
221
236
|
display: grid;
|
|
222
237
|
grid-template-rows: 1fr;
|
|
223
238
|
overflow: clip;
|
|
224
|
-
padding-block-start:
|
|
239
|
+
padding-block-start: var(--xh-accordion-content-pt, var(--xh-_accordion-content-pt));
|
|
225
240
|
padding-block-end: var(--xh-accordion-content-pb, var(--xh-_accordion-content-pb));
|
|
226
241
|
padding-inline: var(--xh-accordion-content-px, var(--xh-_accordion-content-px));
|
|
227
|
-
|
|
228
|
-
|
|
242
|
+
/* 正文是标题栏下面一块淡底,与白底标题栏分出层次;淡底容器(subtle)本身已是这层底,正文不再叠一层 */
|
|
243
|
+
background: var(--xh-accordion-content-bg, var(--xh-bg-muted));
|
|
244
|
+
color: var(--xh-accordion-content-fg, var(--xh-fg-default));
|
|
245
|
+
font-size: var(--xh-accordion-content-font-size, var(--xh-text-body-size));
|
|
229
246
|
line-height: var(--xh-leading-normal);
|
|
230
247
|
}
|
|
231
248
|
|
|
249
|
+
[data-scope='accordion'][data-part='root'][data-variant='subtle'] [data-scope='accordion'][data-part='content'] {
|
|
250
|
+
background: var(--xh-accordion-content-bg, transparent);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* 展开着的标题栏与正文之间一条分隔线,与条与条之间的线同色 */
|
|
254
|
+
[data-scope='accordion'][data-part='content'][data-state='open'] {
|
|
255
|
+
border-block-start: var(--xh-stroke-thin) solid
|
|
256
|
+
var(--xh-accordion-content-border, var(--xh-accordion-item-border, var(--xh-border-default)));
|
|
257
|
+
}
|
|
258
|
+
|
|
232
259
|
/* 展开与收起只在开合时播:首帧就在的展开 / 收起直接呈现(data-instant) */
|
|
233
260
|
[data-scope='accordion'][data-part='content'][data-state='open']:not([data-instant]) {
|
|
234
261
|
animation: xh-disclosure-expand var(--xh-motion-duration-expand) var(--xh-motion-ease-enter-strong);
|
package/css/alert.css
CHANGED
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
--xh-alert-skin: 1;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
/*
|
|
35
|
-
|
|
34
|
+
/* 提示本体是一块语气淡底面(淡底形态:透明边位 + 语气 12% 淡底、无影),语气由底色与图标表达;
|
|
35
|
+
标题与正文仍取正文色,彩色只落在底与图标上,不让整段文字变色抢走层级。 */
|
|
36
36
|
[data-scope='alert'][data-part='root'] {
|
|
37
37
|
/* 作者塞进指示符槽的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md 档 */
|
|
38
38
|
--xh-icon-size: var(--xh-alert-icon-size, var(--xh-glyph-size-md));
|
|
@@ -41,19 +41,18 @@
|
|
|
41
41
|
align-items: flex-start;
|
|
42
42
|
/* 指示符盒自带 --xh-space-1 内衬:与间距合起来,字形到正文 12px,与 Notification 同一个距离 */
|
|
43
43
|
gap: var(--xh-alert-gap, var(--xh-space-2));
|
|
44
|
-
padding-block: var(--xh-alert-py, var(--xh-
|
|
44
|
+
padding-block: var(--xh-alert-py, var(--xh-space-2));
|
|
45
45
|
padding-inline: var(--xh-alert-px, var(--xh-surface-px-sm));
|
|
46
|
-
border: var(--xh-stroke-thin) solid var(--xh-alert-border,
|
|
47
|
-
border-radius: var(--xh-alert-radius, var(--xh-shape-
|
|
48
|
-
background: var(--xh-alert-bg, var(--xh-bg-
|
|
46
|
+
border: var(--xh-stroke-thin) solid var(--xh-alert-border, transparent);
|
|
47
|
+
border-radius: var(--xh-alert-radius, var(--xh-shape-control));
|
|
48
|
+
background: var(--xh-alert-bg, var(--xh-_tone-subtle, var(--xh-bg-subtle)));
|
|
49
49
|
box-shadow: var(--xh-alert-shadow, none);
|
|
50
50
|
color: var(--xh-alert-fg, var(--xh-fg-default));
|
|
51
51
|
font-size: var(--xh-alert-font-size, var(--xh-text-body-size));
|
|
52
52
|
line-height: var(--xh-alert-leading, var(--xh-leading-normal));
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
/*
|
|
56
|
-
边界只留朝向页面内容的块尾一道,与页面内容同一层、同一种描边。贴边铺满的栏不取圆角:
|
|
55
|
+
/* 横幅:页面顶部的通栏,贴着页面或容器的边铺满整行。面本身就是语气淡底,不另画边;贴边铺满的栏不取圆角:
|
|
57
56
|
圆了会在两个角露出底下的页面。面与语气规则与页内提示相同,横幅不换底色 */
|
|
58
57
|
[data-scope='alert'][data-part='root'][data-banner] {
|
|
59
58
|
inline-size: 100%;
|
|
@@ -125,9 +124,9 @@
|
|
|
125
124
|
|
|
126
125
|
[data-scope='alert'][data-part='title'] {
|
|
127
126
|
flex: none;
|
|
128
|
-
color: var(--xh-alert-title-fg, var(--xh-
|
|
129
|
-
font-size: var(--xh-alert-title-font-size, var(--xh-text-
|
|
130
|
-
font-weight: var(--xh-alert-title-font-weight, var(--xh-
|
|
127
|
+
color: var(--xh-alert-title-fg, var(--xh-fg-default));
|
|
128
|
+
font-size: var(--xh-alert-title-font-size, var(--xh-text-heading-3-size));
|
|
129
|
+
font-weight: var(--xh-alert-title-font-weight, var(--xh-text-heading-3-weight));
|
|
131
130
|
line-height: var(--xh-alert-title-leading, var(--xh-leading-tight));
|
|
132
131
|
}
|
|
133
132
|
|
|
@@ -142,16 +141,16 @@
|
|
|
142
141
|
display: none;
|
|
143
142
|
}
|
|
144
143
|
|
|
145
|
-
/* 关闭钮是只有字形的离散动作钮:盒几何、悬停 /
|
|
144
|
+
/* 关闭钮是只有字形的离散动作钮:盒几何、悬停 / 按下与按压、粗指针热区、焦点环、禁用面全由
|
|
146
145
|
Action Control 的 icon ghost 档给(连接层投 sm:与此前 --xh-control-h-sm 同尺寸),组件只映射既有使用者槽。
|
|
147
|
-
|
|
146
|
+
静息透明;提示本体是语气淡底(12%),叉的悬停 / 按下沿语气淡底再升一档、两档(20% / 28%)。
|
|
148
147
|
closable=false 时连接层同时给 hidden 与 disabled / data-disabled,家族按后者收掉反馈 */
|
|
149
148
|
[data-scope='alert'][data-part='close-trigger'] {
|
|
150
149
|
--xh-action-visual-size: var(--xh-alert-close-size, var(--xh-_action-profile-visual-size));
|
|
151
150
|
--xh-action-min-inline-size: var(--xh-alert-close-size, var(--xh-_action-profile-visual-size));
|
|
152
151
|
--xh-action-radius: var(--xh-alert-close-radius, var(--xh-shape-control));
|
|
153
|
-
--xh-action-bg-hover: var(--xh-alert-close-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
154
|
-
--xh-action-bg-pressed: var(--xh-alert-close-bg-active, var(--xh-_action-variant-bg-pressed));
|
|
152
|
+
--xh-action-bg-hover: var(--xh-alert-close-bg-hover, var(--xh-_tone-subtle-hover, var(--xh-_action-variant-bg-hover)));
|
|
153
|
+
--xh-action-bg-pressed: var(--xh-alert-close-bg-active, var(--xh-_tone-subtle-active, var(--xh-_action-variant-bg-pressed)));
|
|
155
154
|
--xh-action-fg-rest: var(--xh-alert-close-fg, var(--xh-fg-muted));
|
|
156
155
|
--xh-action-fg-hover: var(--xh-alert-close-fg-hover, var(--xh-fg-default));
|
|
157
156
|
--xh-action-fg-pressed: var(--xh-alert-close-fg-hover, var(--xh-fg-default));
|
package/css/anchor.css
CHANGED
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
--xh-_anchor-link-px: var(--xh-control-px-md);
|
|
25
25
|
/* 当前那一节的指示条与文字随语气走。没写 data-tone 时这两个槽都没被声明,退回品牌色。
|
|
26
26
|
指示条是装饰性的色条,取柔和档;文字要压在普通背景上读,取语气的文字档——
|
|
27
|
-
导航当前页缺省是 --xh-fg-brand
|
|
27
|
+
导航当前页缺省是 --xh-fg-brand,与指示条同一档主色。
|
|
28
28
|
聚焦环不在其列,它恒是 --xh-ring-focus */
|
|
29
29
|
--xh-_anchor-accent: var(--xh-_tone-soft, var(--xh-fg-brand));
|
|
30
|
-
--xh-_anchor-accent-text: var(--xh-_tone-fg, var(--xh-fg-brand
|
|
30
|
+
--xh-_anchor-accent-text: var(--xh-_tone-fg, var(--xh-fg-brand));
|
|
31
31
|
|
|
32
32
|
color: var(--xh-anchor-fg, var(--xh-fg-muted));
|
|
33
33
|
font-size: var(--xh-anchor-font-size, var(--xh-_anchor-font-size));
|
package/css/approval.css
CHANGED
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
margin: 0;
|
|
137
137
|
color: var(--xh-approval-title-fg, var(--xh-fg-default));
|
|
138
138
|
font-size: var(--xh-approval-title-font-size, var(--xh-text-label-size));
|
|
139
|
-
font-weight: var(--xh-approval-title-font-weight, var(--xh-font-weight-
|
|
139
|
+
font-weight: var(--xh-approval-title-font-weight, var(--xh-font-weight-medium));
|
|
140
140
|
line-height: var(--xh-leading-tight);
|
|
141
141
|
}
|
|
142
142
|
|
|
@@ -265,7 +265,7 @@
|
|
|
265
265
|
display: none;
|
|
266
266
|
}
|
|
267
267
|
|
|
268
|
-
/*
|
|
268
|
+
/* 备注:附在判定上的一句自由文本,占满整行。框照字段外壳:字段淡底 + 控件描边,悬停描边升一档 */
|
|
269
269
|
[data-scope='approval'][data-part='note'] {
|
|
270
270
|
display: block;
|
|
271
271
|
inline-size: 100%;
|
|
@@ -273,26 +273,43 @@
|
|
|
273
273
|
padding-block: var(--xh-approval-note-py, var(--xh-space-1_5));
|
|
274
274
|
border: var(--xh-stroke-thin) solid var(--xh-approval-note-border, var(--xh-border-control));
|
|
275
275
|
border-radius: var(--xh-approval-note-radius, var(--xh-shape-control));
|
|
276
|
-
background: var(--xh-approval-note-bg, var(--xh-bg-
|
|
276
|
+
background: var(--xh-approval-note-bg, var(--xh-bg-field));
|
|
277
277
|
color: var(--xh-approval-note-fg, var(--xh-fg-default));
|
|
278
278
|
font-family: inherit;
|
|
279
279
|
font-size: var(--xh-approval-note-font-size, var(--xh-_approval-note-font-size));
|
|
280
|
-
transition:
|
|
280
|
+
transition:
|
|
281
|
+
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
282
|
+
border-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
281
283
|
}
|
|
282
284
|
|
|
283
285
|
[data-scope='approval'][data-part='note'][hidden] {
|
|
284
286
|
display: none;
|
|
285
287
|
}
|
|
286
288
|
|
|
287
|
-
[data-scope='approval'][data-part='note']:disabled {
|
|
288
|
-
color: var(--xh-
|
|
289
|
+
[data-scope='approval'][data-part='note']:hover:not(:disabled, :focus, [data-invalid]) {
|
|
290
|
+
border-color: var(--xh-approval-note-border-hover, var(--xh-border-strong));
|
|
289
291
|
}
|
|
290
292
|
|
|
291
|
-
/*
|
|
292
|
-
[data-scope='approval'][data-part='note']
|
|
293
|
-
|
|
293
|
+
/* 聚焦换承载面底 + 品牌描边,不画环:焦点由描边换色与底色差标出,强制色档补一圈 Highlight 环 */
|
|
294
|
+
[data-scope='approval'][data-part='note']:focus-within {
|
|
295
|
+
border-color: var(--xh-approval-note-border-focus, var(--xh-border-control-focus));
|
|
296
|
+
background: var(--xh-approval-note-bg-focus, var(--xh-bg-surface));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
[data-scope='approval'][data-part='note']:focus-visible {
|
|
300
|
+
outline: none;
|
|
301
|
+
}
|
|
294
302
|
|
|
303
|
+
/* 要求写理由而空着就按了拒绝:换无效淡底 + 无效描边;焦点也已带到这里,聚焦时同样不画环 */
|
|
304
|
+
[data-scope='approval'][data-part='note'][data-invalid] {
|
|
295
305
|
border-color: var(--xh-approval-note-border-invalid, var(--xh-border-invalid));
|
|
306
|
+
background: var(--xh-approval-note-bg-invalid, var(--xh-bg-field-invalid));
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
[data-scope='approval'][data-part='note']:disabled {
|
|
310
|
+
border-color: var(--xh-approval-note-border-disabled, var(--xh-border-default));
|
|
311
|
+
background: var(--xh-approval-note-bg-disabled, var(--xh-bg-subtle));
|
|
312
|
+
color: var(--xh-fg-disabled);
|
|
296
313
|
}
|
|
297
314
|
|
|
298
315
|
/* 剩余时间:等宽数字,逐秒跳字时不左右晃 */
|
|
@@ -307,16 +324,18 @@
|
|
|
307
324
|
display: none;
|
|
308
325
|
}
|
|
309
326
|
|
|
310
|
-
/*
|
|
327
|
+
/* 判定结果条:判过了才露出,语气随判定走。与 Tag 的 sm 档同一副方签——control 圆角、块尺寸取 chip 档、竖向内衬为 0 */
|
|
311
328
|
[data-scope='approval'][data-part='result'] {
|
|
312
329
|
display: inline-flex;
|
|
313
330
|
align-self: flex-start;
|
|
314
331
|
align-items: center;
|
|
332
|
+
box-sizing: border-box;
|
|
315
333
|
gap: var(--xh-approval-result-gap, var(--xh-space-1));
|
|
334
|
+
min-block-size: var(--xh-approval-result-h, var(--xh-chip-h-sm));
|
|
316
335
|
padding-inline: var(--xh-approval-result-px, var(--xh-space-1_5));
|
|
317
|
-
padding-block: var(--xh-approval-result-py,
|
|
336
|
+
padding-block: var(--xh-approval-result-py, 0);
|
|
318
337
|
border: var(--xh-stroke-thin) solid transparent;
|
|
319
|
-
border-radius: var(--xh-approval-result-radius, var(--xh-shape-
|
|
338
|
+
border-radius: var(--xh-approval-result-radius, var(--xh-shape-control));
|
|
320
339
|
background: var(--xh-approval-result-bg, var(--xh-_tone-subtle));
|
|
321
340
|
color: var(--xh-approval-result-fg, var(--xh-_tone-fg));
|
|
322
341
|
font-size: var(--xh-approval-result-font-size, var(--xh-text-caption-size));
|
|
@@ -470,11 +489,16 @@
|
|
|
470
489
|
--xh-_approval-note-font-size: var(--xh-control-font-lg);
|
|
471
490
|
}
|
|
472
491
|
|
|
473
|
-
/*
|
|
492
|
+
/* 强制色:底色会被系统背景吃掉,呼吸点改用系统前景色;备注框聚焦不画环、描边又被换成系统色,补一圈 Highlight 环 */
|
|
474
493
|
@media (forced-colors: active) {
|
|
475
494
|
[data-scope='approval'][data-part='pending-indicator'] {
|
|
476
495
|
background: CanvasText;
|
|
477
496
|
}
|
|
497
|
+
|
|
498
|
+
[data-scope='approval'][data-part='note']:focus {
|
|
499
|
+
outline: var(--xh-ring-width) solid Highlight;
|
|
500
|
+
outline-offset: var(--xh-ring-offset);
|
|
501
|
+
}
|
|
478
502
|
}
|
|
479
503
|
|
|
480
504
|
@media print {
|
package/css/avatar-group.css
CHANGED
|
@@ -19,10 +19,12 @@
|
|
|
19
19
|
既不让页面上的层号插进来,也不让它们漏出去压住别人 */
|
|
20
20
|
isolation: isolate;
|
|
21
21
|
|
|
22
|
-
/*
|
|
22
|
+
/* 私有槽位:整组共用的直径、字号与叠放量。直径随档换;字号取直径一半(与单枚头像同一条规则);
|
|
23
|
+
叠放量三档同为 8px,大头像压住的那段不跟着变宽 */
|
|
23
24
|
--xh-_avatar-group-size: var(--xh-avatar-group-size, var(--xh-control-h-md));
|
|
24
|
-
--xh-_avatar-group-
|
|
25
|
-
--xh-_avatar-group-
|
|
25
|
+
--xh-_avatar-group-half-size: calc(var(--xh-_avatar-group-size) / 2);
|
|
26
|
+
--xh-_avatar-group-font-size: var(--xh-avatar-group-font-size, var(--xh-_avatar-group-half-size));
|
|
27
|
+
--xh-_avatar-group-overlap: var(--xh-avatar-group-overlap, var(--xh-space-2));
|
|
26
28
|
|
|
27
29
|
/* 流给组内每一枚 */
|
|
28
30
|
--xh-avatar-size: var(--xh-_avatar-group-size);
|
|
@@ -39,18 +41,13 @@
|
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
/* —— 尺寸 —— */
|
|
42
|
-
/*
|
|
43
|
-
字号与叠放量跟着直径一起缩放,小头像里回退字放得下、大头像里压住的那段也按比例长 */
|
|
44
|
+
/* 三档对齐控件档位,缺省档写在上面的基础规则里;字号由直径算出,只换直径 */
|
|
44
45
|
[data-scope='avatar-group'][data-part='root'][data-size='sm'] {
|
|
45
46
|
--xh-_avatar-group-size: var(--xh-avatar-group-size, var(--xh-control-h-sm));
|
|
46
|
-
--xh-_avatar-group-font-size: var(--xh-avatar-group-font-size, var(--xh-control-caption-sm));
|
|
47
|
-
--xh-_avatar-group-overlap: var(--xh-avatar-group-overlap, var(--xh-space-2));
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
[data-scope='avatar-group'][data-part='root'][data-size='lg'] {
|
|
51
50
|
--xh-_avatar-group-size: var(--xh-avatar-group-size, var(--xh-control-h-lg));
|
|
52
|
-
--xh-_avatar-group-font-size: var(--xh-avatar-group-font-size, var(--xh-control-caption-lg));
|
|
53
|
-
--xh-_avatar-group-overlap: var(--xh-avatar-group-overlap, var(--xh-space-3));
|
|
54
51
|
}
|
|
55
52
|
|
|
56
53
|
/* —— 叠放 —— */
|
|
@@ -76,7 +73,7 @@
|
|
|
76
73
|
}
|
|
77
74
|
|
|
78
75
|
/* —— 溢出计数 —— */
|
|
79
|
-
/* 「+N
|
|
76
|
+
/* 「+N」是这一排里的又一枚:直径、形状、字号与面跟着组里的头像走,里面写什么由作者定 */
|
|
80
77
|
[data-scope='avatar-group'][data-part='overflow-item'] {
|
|
81
78
|
display: inline-flex;
|
|
82
79
|
flex: none;
|
|
@@ -85,8 +82,8 @@
|
|
|
85
82
|
inline-size: var(--xh-_avatar-group-size);
|
|
86
83
|
block-size: var(--xh-_avatar-group-size);
|
|
87
84
|
border-radius: var(--xh-avatar-group-radius, var(--xh-shape-circle));
|
|
88
|
-
background: var(--xh-avatar-group-overflow-item-bg, var(--xh-bg-
|
|
89
|
-
color: var(--xh-avatar-group-overflow-item-fg, var(--xh-fg-
|
|
85
|
+
background: var(--xh-avatar-group-overflow-item-bg, var(--xh-bg-subtle-active-opaque));
|
|
86
|
+
color: var(--xh-avatar-group-overflow-item-fg, var(--xh-fg-default));
|
|
90
87
|
font-size: var(--xh-_avatar-group-font-size);
|
|
91
88
|
font-weight: var(--xh-avatar-group-font-weight, var(--xh-font-weight-medium));
|
|
92
89
|
line-height: var(--xh-leading-none);
|
package/css/avatar.css
CHANGED
|
@@ -15,38 +15,40 @@
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
[data-scope='avatar'][data-part='root'] {
|
|
18
|
+
/* 直径:外层槽在前(头像组整排齐平走它),各档的档值在后 */
|
|
19
|
+
--xh-_avatar-size: var(--xh-avatar-size, var(--xh-control-h-md));
|
|
20
|
+
/* 回退字号取直径的一半:一两个字的缩写在圆里占得住,随直径一起缩放 */
|
|
21
|
+
--xh-_avatar-font-size: calc(var(--xh-_avatar-size) / 2);
|
|
22
|
+
|
|
18
23
|
position: relative;
|
|
19
24
|
display: inline-flex;
|
|
20
25
|
flex: none;
|
|
21
26
|
align-items: center;
|
|
22
27
|
justify-content: center;
|
|
23
28
|
overflow: hidden;
|
|
24
|
-
inline-size: var(--xh-
|
|
25
|
-
block-size: var(--xh-
|
|
29
|
+
inline-size: var(--xh-_avatar-size);
|
|
30
|
+
block-size: var(--xh-_avatar-size);
|
|
26
31
|
border-radius: var(--xh-avatar-radius, var(--xh-shape-circle));
|
|
27
|
-
/*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
/* 头像在头像组里层叠:底取淡底的不透明档,半透明会透出压在下面的那一枚。
|
|
33
|
+
取加深一档的不透明淡底、字取正文色:白字压在这层灰上只有 1.6:1,次要字色在暗色的加深底上
|
|
34
|
+
也到不了 4.5:1 */
|
|
35
|
+
background: var(--xh-avatar-bg, var(--xh-bg-subtle-active-opaque));
|
|
36
|
+
color: var(--xh-avatar-fg, var(--xh-fg-default));
|
|
37
|
+
font-size: var(--xh-avatar-font-size, var(--xh-_avatar-font-size));
|
|
31
38
|
font-weight: var(--xh-avatar-font-weight, var(--xh-font-weight-medium));
|
|
32
39
|
line-height: var(--xh-leading-none);
|
|
33
40
|
user-select: none;
|
|
34
41
|
}
|
|
35
42
|
|
|
36
|
-
/*
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
外层统一整排头像的通道,档值直接写终值的话,写了 data-size 的那一枚就脱离外层控制 */
|
|
43
|
+
/* 三档尺寸对齐控件档位,缺省档写在上面的基础规则里;字号随直径取一半,跟着一起缩放。
|
|
44
|
+
每一档都把 --xh-avatar-size 排在自己的档值前面:这个槽是外层统一整排头像的通道,
|
|
45
|
+
档值直接写终值的话,写了 data-size 的那一枚就脱离外层控制 */
|
|
40
46
|
[data-scope='avatar'][data-part='root'][data-size='sm'] {
|
|
41
|
-
|
|
42
|
-
block-size: var(--xh-avatar-size, var(--xh-control-h-sm));
|
|
43
|
-
font-size: var(--xh-avatar-font-size, var(--xh-control-caption-sm));
|
|
47
|
+
--xh-_avatar-size: var(--xh-avatar-size, var(--xh-control-h-sm));
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
[data-scope='avatar'][data-part='root'][data-size='lg'] {
|
|
47
|
-
|
|
48
|
-
block-size: var(--xh-avatar-size, var(--xh-control-h-lg));
|
|
49
|
-
font-size: var(--xh-avatar-font-size, var(--xh-control-caption-lg));
|
|
51
|
+
--xh-_avatar-size: var(--xh-avatar-size, var(--xh-control-h-lg));
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
/* —— 语气 ——
|
|
@@ -54,8 +56,8 @@
|
|
|
54
56
|
两条声明都把 --xh-avatar-bg / --xh-avatar-fg 排在语气值前面:使用者槽仍是最外那一层,
|
|
55
57
|
写了 tone 的那一枚照样受外层统一控制。整块带 [data-tone] 限定,没写语气的头像逐值不变 */
|
|
56
58
|
[data-scope='avatar'][data-part='root'][data-tone] {
|
|
57
|
-
background: var(--xh-avatar-bg, var(--xh-_tone-subtle, var(--xh-bg-subtle-opaque)));
|
|
58
|
-
color: var(--xh-avatar-fg, var(--xh-_tone-fg, var(--xh-fg-
|
|
59
|
+
background: var(--xh-avatar-bg, var(--xh-_tone-subtle, var(--xh-bg-subtle-active-opaque)));
|
|
60
|
+
color: var(--xh-avatar-fg, var(--xh-_tone-fg, var(--xh-fg-default)));
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
/* 不声明 display,加载完成前的 hidden 直接交给浏览器的 [hidden] 规则收起。
|
package/css/back-top.css
CHANGED
|
@@ -18,22 +18,35 @@
|
|
|
18
18
|
/* 定位壳:钉在视口的尾下角,用逻辑属性,RTL 下自动换到另一侧。
|
|
19
19
|
不声明 display —— 收起态由连接层写 hidden,UA 的 [hidden]{display:none} 得压得住 */
|
|
20
20
|
[data-scope='back-top'][data-part='root'] {
|
|
21
|
+
/* 钮的尺:md 取独立浮钮的直径(40px),sm / lg 取方格档;字形比控件内图标低一档(sm / md 16px、lg 20px) */
|
|
22
|
+
--xh-_back-top-size: var(--xh-control-float-md);
|
|
23
|
+
--xh-_back-top-glyph-size: var(--xh-glyph-size-sm);
|
|
24
|
+
|
|
21
25
|
position: fixed;
|
|
22
26
|
/* 贴边与安全区取大的一头:底部横条与圆角压住的那一段由系统给出,贴边比它窄时钮会被切掉一角。
|
|
23
27
|
桌面上 env() 恒为 0,取值与贴边槽完全一致。安全区只有物理方向的名字,
|
|
24
28
|
行内轴上两侧同取较宽的那一段,RTL 下不会翻错边。 */
|
|
25
|
-
inset-block-end: max(var(--xh-back-top-inset-block, var(--xh-space-
|
|
29
|
+
inset-block-end: max(var(--xh-back-top-inset-block, var(--xh-space-6)), env(safe-area-inset-bottom));
|
|
26
30
|
inset-inline-end: max(
|
|
27
|
-
var(--xh-back-top-inset-inline, var(--xh-space-
|
|
31
|
+
var(--xh-back-top-inset-inline, var(--xh-space-6)),
|
|
28
32
|
env(safe-area-inset-left),
|
|
29
33
|
env(safe-area-inset-right)
|
|
30
34
|
);
|
|
31
35
|
z-index: var(--xh-back-top-layer, var(--xh-layer-sticky));
|
|
32
36
|
}
|
|
33
37
|
|
|
38
|
+
[data-scope='back-top'][data-part='root'][data-size='sm'] {
|
|
39
|
+
--xh-_back-top-size: var(--xh-control-box-sm);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[data-scope='back-top'][data-part='root'][data-size='lg'] {
|
|
43
|
+
--xh-_back-top-size: var(--xh-control-box-lg);
|
|
44
|
+
--xh-_back-top-glyph-size: var(--xh-glyph-size-md);
|
|
45
|
+
}
|
|
46
|
+
|
|
34
47
|
/* —— 触发器 ——
|
|
35
|
-
浮在内容之上的单图标圆钮,接 Action Control floating
|
|
36
|
-
|
|
48
|
+
浮在内容之上的单图标圆钮,接 Action Control floating 档:圆形、四态面、按压与 44px 命中区
|
|
49
|
+
由家族配方按 data-xh-action-variant / -size 给出;视觉盒与字形取根上按档给的尺。
|
|
37
50
|
这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射。
|
|
38
51
|
整件只有这一颗按钮,槽名与其余一样不带部件段(照 float-button 的 --xh-float-button-size) */
|
|
39
52
|
[data-scope='back-top'][data-part='trigger'] {
|
|
@@ -58,9 +71,10 @@
|
|
|
58
71
|
--xh-action-shadow-focus-visible: var(--xh-back-top-shadow, none);
|
|
59
72
|
--xh-action-shadow-disabled: var(--xh-back-top-shadow, none);
|
|
60
73
|
--xh-action-radius: var(--xh-back-top-radius, var(--xh-_action-profile-radius));
|
|
61
|
-
--xh-action-visual-size: var(--xh-back-top-size, var(--xh-
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
--xh-action-visual-size: var(--xh-back-top-size, var(--xh-_back-top-size));
|
|
75
|
+
--xh-action-min-inline-size: var(--xh-back-top-size, var(--xh-_back-top-size));
|
|
76
|
+
/* 作者塞进来的图标与皮肤画的兜底字形同一把尺 */
|
|
77
|
+
--xh-icon-size: var(--xh-back-top-icon-size, var(--xh-_back-top-glyph-size));
|
|
64
78
|
}
|
|
65
79
|
|
|
66
80
|
/* 缺省 outline 是 frosted 材质面:连接层只在这一档投影 data-xh-material,面由材质家族配方给——
|
package/css/badge.css
CHANGED
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
[data-scope='badge'][data-part='indicator'] {
|
|
35
35
|
/* 每一档的盒都要大于字号:两位数在等高的盒里会被撑破。
|
|
36
36
|
字号刻度最小就是 12px,所以往上抬盒子而不是往下压字。
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
--xh-_badge-dot: var(--xh-space-
|
|
37
|
+
盒比字高一档半:20px 扣掉两道 1px 描边还剩 18px 内高,13px 的两位数与「99+」立得住,
|
|
38
|
+
角标又不会大过它贴着的宿主文字;圆点 6px,只标存在、不抢宿主 */
|
|
39
|
+
--xh-_badge-dot: var(--xh-space-1_5);
|
|
40
40
|
--xh-_badge-min: var(--xh-space-5);
|
|
41
41
|
--xh-_badge-px: var(--xh-space-1);
|
|
42
42
|
--xh-_badge-font: var(--xh-text-secondary-size);
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
/* 小号是贴在 16px 图标角上的角标:盒取 12 + 2 的半阶补偿 = 14px,字仍是刻度最小的 12px——
|
|
176
176
|
数字的字面只占字号的六成,扣掉两道 1px 描边后的 12px 内高装得下两位数,再小就得压字 */
|
|
177
177
|
[data-scope='badge'][data-part='indicator'][data-size='sm'] {
|
|
178
|
-
--xh-_badge-dot: var(--xh-space-
|
|
178
|
+
--xh-_badge-dot: var(--xh-space-1);
|
|
179
179
|
--xh-_badge-min: calc(var(--xh-space-3) + var(--xh-space-0_5));
|
|
180
180
|
--xh-_badge-px: var(--xh-space-0_5);
|
|
181
181
|
--xh-_badge-font: var(--xh-text-caption-size);
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
|
|
184
184
|
/* 大号只往上抬一级:盒 24px、字 14px,仍是角标,不长成与宿主同级的一枚按钮 */
|
|
185
185
|
[data-scope='badge'][data-part='indicator'][data-size='lg'] {
|
|
186
|
-
--xh-_badge-dot: var(--xh-space-
|
|
186
|
+
--xh-_badge-dot: var(--xh-space-2);
|
|
187
187
|
--xh-_badge-min: var(--xh-space-6);
|
|
188
188
|
--xh-_badge-px: var(--xh-space-1_5);
|
|
189
189
|
--xh-_badge-font: var(--xh-text-body-size);
|