@xihan-ui/styles 2.1.0 → 3.1.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 +1261 -0
- package/README.md +6 -1
- package/component-tokens.d.ts +533 -96
- package/components.tokens.json +35461 -26045
- package/css/accordion.css +34 -8
- package/css/alert.css +59 -1
- package/css/anchor.css +46 -8
- package/css/approval.css +116 -76
- package/css/avatar-group.css +1 -1
- package/css/avatar.css +13 -5
- package/css/back-top.css +61 -42
- package/css/badge.css +62 -12
- package/css/bar-code.css +1 -1
- package/css/breadcrumb.css +62 -3
- package/css/button-group.css +4 -4
- package/css/button.css +67 -19
- package/css/calendar-picker.css +19 -0
- package/css/calendar-range-picker.css +39 -2
- package/css/card.css +115 -1
- package/css/carousel.css +148 -43
- package/css/cartesian-chart.css +830 -0
- package/css/cascader.css +181 -65
- package/css/checkbox-group.css +59 -89
- package/css/checkbox.css +16 -49
- package/css/citation.css +470 -0
- package/css/clipboard.css +20 -63
- package/css/code-view.css +101 -6
- package/css/collapsible.css +34 -8
- package/css/color-field.css +18 -0
- package/css/color-picker.css +128 -50
- package/css/color-slider.css +22 -15
- package/css/color-swatch-picker.css +3 -1
- package/css/combobox.css +80 -33
- package/css/command.css +45 -43
- package/css/context-menu.css +39 -22
- package/css/date-field.css +56 -0
- package/css/date-picker.css +132 -26
- package/css/date-range-picker.css +337 -14
- package/css/description.css +17 -1
- package/css/descriptions.css +42 -0
- package/css/dialog.css +94 -36
- package/css/diff-view.css +97 -12
- package/css/download-trigger.css +44 -78
- package/css/drawer.css +160 -119
- package/css/editable.css +19 -0
- package/css/empty-state.css +7 -6
- package/css/field-array.css +36 -0
- package/css/field.css +20 -18
- package/css/file-upload.css +125 -135
- package/css/flex.css +324 -8
- package/css/float-button.css +263 -38
- package/css/floating-panel.css +53 -19
- package/css/form.css +31 -17
- package/css/funnel-chart.css +106 -0
- package/css/graph-chart.css +205 -0
- package/css/grid-list.css +235 -0
- package/css/grid.css +252 -1
- package/css/heatmap.css +119 -36
- package/css/hierarchy-chart.css +298 -0
- package/css/hover-card.css +31 -14
- package/css/icon.css +100 -0
- package/css/image-cropper.css +33 -7
- package/css/image-viewer.css +167 -22
- package/css/image.css +23 -4
- package/css/input-group.css +11 -13
- package/css/json-viewer.css +50 -2
- package/css/layout.css +68 -18
- package/css/liquid.css +106 -0
- package/css/list.css +1 -1
- package/css/listbox.css +46 -6
- package/css/loading-bar.css +27 -13
- package/css/log.css +129 -33
- package/css/markdown-stream.css +1 -1
- package/css/marquee.css +163 -7
- package/css/matrix-code.css +1 -1
- package/css/mention.css +35 -19
- package/css/menu.css +35 -21
- package/css/menubar.css +36 -20
- package/css/message-feed.css +172 -51
- package/css/navigation-menu.css +172 -11
- package/css/notification.css +435 -108
- package/css/number-field.css +22 -0
- package/css/page-header.css +3 -1
- package/css/pagination.css +126 -24
- package/css/password-input.css +40 -8
- package/css/pie-chart.css +247 -0
- package/css/popconfirm.css +44 -50
- package/css/popover.css +50 -14
- package/css/progress.css +308 -10
- package/css/prompt-input.css +36 -0
- package/css/question-flow.css +97 -57
- package/css/radar-chart.css +233 -0
- package/css/radio-group.css +363 -5
- package/css/rating.css +21 -23
- package/css/reasoning.css +61 -54
- package/css/resizable.css +6 -1
- package/css/sankey-chart.css +174 -0
- package/css/scroll-area.css +32 -0
- package/css/scrollbar.css +1 -1
- package/css/select.css +74 -55
- package/css/side-nav.css +173 -24
- package/css/signature-pad.css +16 -1
- package/css/skeleton.css +13 -14
- package/css/slider.css +35 -13
- package/css/sortable.css +37 -7
- package/css/sparkline.css +164 -0
- package/css/spinner.css +50 -22
- package/css/splitter.css +7 -1
- package/css/statistic.css +10 -0
- package/css/steps.css +248 -29
- package/css/switch.css +23 -48
- package/css/table.css +175 -118
- package/css/tabs.css +231 -19
- package/css/tag-group.css +27 -3
- package/css/tag.css +53 -12
- package/css/tags-input.css +40 -3
- package/css/text-field.css +19 -0
- package/css/time-field.css +20 -1
- package/css/time-picker.css +103 -17
- package/css/time-range-picker.css +45 -16
- package/css/timeline.css +1 -1
- package/css/toggle-group.css +4 -4
- package/css/toggle.css +4 -3
- package/css/tool-call.css +59 -51
- package/css/toolbar.css +101 -3
- package/css/tooltip.css +15 -2
- package/css/tour.css +42 -12
- package/css/transfer.css +98 -75
- package/css/tree-select.css +232 -53
- package/css/tree.css +271 -55
- package/css/truncate.css +55 -12
- package/css/typography.css +93 -0
- package/css/virtualizer.css +56 -0
- package/css/watermark.css +23 -0
- package/family/action-control.css +14 -5
- package/family/chart.css +480 -0
- package/family/check-mark.css +94 -0
- package/family/choice-card.css +97 -0
- package/family/collection-item.css +9 -15
- package/family/field-chrome.css +1 -12
- package/family/loading-ring.css +95 -0
- package/family/material.css +72 -0
- package/family/menu-choice.css +56 -0
- package/family/motion.css +207 -10
- package/family/tag-list.css +59 -0
- package/index.css +13824 -4030
- package/index.unlayered.css +13403 -3605
- package/package.json +20 -8
- package/css/gradient-text.css +0 -91
- package/css/icon-wrapper.css +0 -81
- package/css/segmented.css +0 -280
- package/css/toast.css +0 -499
package/css/number-field.css
CHANGED
|
@@ -227,4 +227,26 @@
|
|
|
227
227
|
[data-scope='number-field'][data-part='control'][hidden] {
|
|
228
228
|
display: none;
|
|
229
229
|
}
|
|
230
|
+
|
|
231
|
+
@media (forced-colors: active) {
|
|
232
|
+
/* 兜底字形是 mask 挖出来的一块底色,这一档里底色被系统换成 Canvas,字形跟着消失。
|
|
233
|
+
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
234
|
+
按钮面上取 ButtonText,悬停与按下时家族把按钮涂成 Highlight、字形换 HighlightText;
|
|
235
|
+
禁用取 GrayText */
|
|
236
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:empty::before,
|
|
237
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:empty::before {
|
|
238
|
+
forced-color-adjust: none;
|
|
239
|
+
background-color: ButtonText;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before,
|
|
243
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
244
|
+
background-color: HighlightText;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger'][data-disabled]:empty::before,
|
|
248
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger'][data-disabled]:empty::before {
|
|
249
|
+
background-color: GrayText;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
230
252
|
}
|
package/css/page-header.css
CHANGED
|
@@ -153,7 +153,9 @@
|
|
|
153
153
|
grid-row: span 2;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
/* 窄于 sm 断点时标题区占满第二列、操作区换到下一行。写成 min-width 的补集:640px 本身归宽档,
|
|
157
|
+
与其余皮肤在同一宽度切换 */
|
|
158
|
+
@media not all and (min-width: 640px) {
|
|
157
159
|
[data-scope='page-header'][data-part='root'] {
|
|
158
160
|
grid-template-columns: auto minmax(0, 1fr);
|
|
159
161
|
}
|
package/css/pagination.css
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
/* 共享关键帧由 family/motion.css 提供,本皮肤 @import 它,单独引入仍成立;四类格子接 Action Control 配方,同理 */
|
|
9
9
|
@import '../family/motion.css';
|
|
10
10
|
@import '../family/action-control.css';
|
|
11
|
+
@import '../family/field-chrome.css';
|
|
11
12
|
|
|
12
13
|
@layer xihan.components {
|
|
13
14
|
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
@@ -69,12 +70,14 @@
|
|
|
69
70
|
display: none;
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
/*
|
|
73
|
+
/* 各类格子接 Action Control 的 text 档,缺省中性的 ghost 形态(只有 Button 品牌实心):盒型、三档几何、
|
|
73
74
|
透明描边(省略号也占一条,两者内容盒等高,一行里对得齐)、悬停 100 → 按下 200(画布承载)、禁用面、按压缩放与
|
|
74
75
|
过渡都由家族给;这里只把使用者槽映射到桥接槽并保留分页自己的排版。
|
|
75
76
|
等宽的关键:1 与 10 的内容宽度不同,靠最小宽度把它们撑到同一格,行宽才不会随当前页左右抖动 */
|
|
77
|
+
[data-scope='pagination'][data-part='first-trigger'],
|
|
76
78
|
[data-scope='pagination'][data-part='prev-trigger'],
|
|
77
79
|
[data-scope='pagination'][data-part='next-trigger'],
|
|
80
|
+
[data-scope='pagination'][data-part='last-trigger'],
|
|
78
81
|
[data-scope='pagination'][data-part='item'],
|
|
79
82
|
[data-scope='pagination'][data-part='ellipsis-trigger'] {
|
|
80
83
|
--xh-action-min-inline-size: var(--xh-pagination-item-min-size, var(--xh-_pagination-item-size));
|
|
@@ -88,7 +91,7 @@
|
|
|
88
91
|
--xh-action-fg-rest: var(--xh-pagination-item-fg, var(--xh-_action-variant-fg-rest));
|
|
89
92
|
--xh-action-fg-hover: var(--xh-pagination-item-fg, var(--xh-_action-variant-fg-hover));
|
|
90
93
|
--xh-action-fg-pressed: var(--xh-pagination-item-fg, var(--xh-_action-variant-fg-pressed));
|
|
91
|
-
/*
|
|
94
|
+
/* 作者塞进翻页钮的图标按档取字形尺,与皮肤画的兜底字形同一把尺 */
|
|
92
95
|
--xh-icon-size: var(--xh-pagination-icon-size, var(--xh-_action-profile-glyph-size));
|
|
93
96
|
|
|
94
97
|
flex: none;
|
|
@@ -97,15 +100,17 @@
|
|
|
97
100
|
font-variant-numeric: tabular-nums;
|
|
98
101
|
}
|
|
99
102
|
|
|
103
|
+
[data-scope='pagination'][data-part='first-trigger'][hidden],
|
|
100
104
|
[data-scope='pagination'][data-part='prev-trigger'][hidden],
|
|
101
105
|
[data-scope='pagination'][data-part='next-trigger'][hidden],
|
|
106
|
+
[data-scope='pagination'][data-part='last-trigger'][hidden],
|
|
102
107
|
[data-scope='pagination'][data-part='item'][hidden],
|
|
103
108
|
[data-scope='pagination'][data-part='ellipsis-trigger'][hidden] {
|
|
104
109
|
display: none;
|
|
105
110
|
}
|
|
106
111
|
|
|
107
|
-
/*
|
|
108
|
-
家族按 data-disabled 画禁用面(透明底 + --xh-fg-disabled
|
|
112
|
+
/* 到头那一侧的翻页钮是原生 disabled(不可聚焦、进不了 Tab 序列),连接层同时给 data-disabled,
|
|
113
|
+
家族按 data-disabled 画禁用面(透明底 + --xh-fg-disabled);整组 disabled 时页码与省略位同样如此 */
|
|
109
114
|
|
|
110
115
|
/* 当前页(格状当前):data-current 与 aria-current='page' 由连接层成对给出,样式挂在 data 钩子上,
|
|
111
116
|
无障碍语义留给 aria。实心品牌面 + 配对前景、不加粗——字重一变字形就变宽,页码格子会跟着长一点,
|
|
@@ -135,6 +140,12 @@
|
|
|
135
140
|
--xh-action-ring-color-focus-visible: currentColor;
|
|
136
141
|
}
|
|
137
142
|
|
|
143
|
+
/* 整组禁用时当前页不跟着透明:实心品牌面退成淡底、字取禁用色,格子仍标得出位置,又一眼看得出按不动 */
|
|
144
|
+
[data-scope='pagination'][data-part='item'][data-current][data-disabled] {
|
|
145
|
+
--xh-action-bg-disabled: var(--xh-bg-subtle);
|
|
146
|
+
--xh-action-border-disabled: var(--xh-bg-subtle);
|
|
147
|
+
}
|
|
148
|
+
|
|
138
149
|
/* 省略位是可展开的按钮:折进去的那几页只有它一个入口,指针与键盘都得点得到,
|
|
139
150
|
所以它与页码同一副骨架、同一条阶梯。这里只把字色压淡一档与页码区分开,三态都压——
|
|
140
151
|
家族的悬停 / 按下规则比基础块特定,只映射静息那一支会在悬停时被换回缺省字色 */
|
|
@@ -144,8 +155,13 @@
|
|
|
144
155
|
--xh-action-fg-pressed: var(--xh-pagination-ellipsis-trigger-fg, var(--xh-fg-subtle));
|
|
145
156
|
}
|
|
146
157
|
/* 每页条数控制器的挂载点:里头装的是库里的 select,控件本身的描边、底色、聚焦环与
|
|
147
|
-
浮层都归 select
|
|
158
|
+
浮层都归 select 那份皮肤,这一格只把它摆进分页行。
|
|
159
|
+
在分页行里按内容定宽:选项是「10 条 / 页」一类短串,字段缺省宽在这一行里过宽;
|
|
160
|
+
地板一并放开,盒子刚好装下回显与箭头 */
|
|
148
161
|
[data-scope='pagination'][data-part='page-size-select'] {
|
|
162
|
+
--xh-select-control-w: var(--xh-pagination-page-size-select-w, max-content);
|
|
163
|
+
--xh-select-control-min-w: 0px;
|
|
164
|
+
|
|
149
165
|
display: inline-flex;
|
|
150
166
|
flex: none;
|
|
151
167
|
align-items: center;
|
|
@@ -171,35 +187,47 @@
|
|
|
171
187
|
display: none;
|
|
172
188
|
}
|
|
173
189
|
|
|
174
|
-
/*
|
|
190
|
+
/* 跳页输入框自身就是字段外壳(连接层投影 data-xh-field-chrome):静息描边、悬停升控件悬停边、
|
|
191
|
+
聚焦换聚焦边加环、禁用面都由字段家族给,这里只把使用者槽映到家族桥接槽,
|
|
192
|
+
高度、内衬与圆角跟页码格子同一把尺,宽度按页码位数留够 */
|
|
175
193
|
[data-scope='pagination'][data-part='jumper'] {
|
|
194
|
+
--xh-field-control-height: var(--xh-pagination-item-h, var(--xh-_pagination-item-size));
|
|
195
|
+
--xh-field-control-padding-inline: var(--xh-pagination-item-px, var(--xh-_pagination-item-px));
|
|
196
|
+
--xh-field-control-min-inline-size: 0;
|
|
197
|
+
--xh-field-control-radius: var(--xh-pagination-item-radius, var(--xh-shape-control));
|
|
198
|
+
--xh-field-bg-rest: var(--xh-pagination-jumper-bg, var(--xh-_field-variant-bg-rest));
|
|
199
|
+
--xh-field-bg-hover: var(--xh-pagination-jumper-bg-hover, var(--xh-_field-variant-bg-hover));
|
|
200
|
+
--xh-field-bg-disabled: var(--xh-pagination-jumper-bg-disabled, var(--xh-_field-variant-bg-disabled));
|
|
201
|
+
--xh-field-fg-rest: var(--xh-pagination-item-fg, var(--xh-fg-default));
|
|
202
|
+
--xh-field-border-rest: var(--xh-pagination-jumper-border, var(--xh-_field-variant-border-rest));
|
|
203
|
+
--xh-field-border-hover: var(--xh-pagination-jumper-border-hover, var(--xh-_field-variant-border-hover));
|
|
204
|
+
--xh-field-border-focus: var(--xh-pagination-jumper-border-focus, var(--xh-_field-variant-border-focus));
|
|
205
|
+
--xh-field-border-invalid: var(--xh-pagination-jumper-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
206
|
+
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
207
|
+
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
208
|
+
--xh-field-shadow-rest: none;
|
|
209
|
+
|
|
176
210
|
flex: none;
|
|
177
211
|
inline-size: var(--xh-pagination-jumper-w, calc(var(--xh-space-8) * 2));
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
border: var(--xh-stroke-thin) solid var(--xh-pagination-jumper-border, var(--xh-border-default));
|
|
181
|
-
border-radius: var(--xh-pagination-item-radius, var(--xh-shape-control));
|
|
182
|
-
background: var(--xh-pagination-jumper-bg, var(--xh-bg-surface));
|
|
183
|
-
color: var(--xh-pagination-item-fg, var(--xh-fg-default));
|
|
212
|
+
/* 表单控件不继承页面字体,只给字号会让框里用 UA 默认字族 */
|
|
213
|
+
font-family: inherit;
|
|
184
214
|
font-size: var(--xh-pagination-font-size, var(--xh-_pagination-font-size));
|
|
185
215
|
line-height: var(--xh-leading-none);
|
|
186
216
|
appearance: none;
|
|
187
|
-
transition:
|
|
188
|
-
background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
189
|
-
border-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
190
217
|
}
|
|
191
218
|
|
|
192
219
|
[data-scope='pagination'][data-part='jumper'][hidden] {
|
|
193
220
|
display: none;
|
|
194
221
|
}
|
|
195
222
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
223
|
+
/* 越界的页码(超出 1 到总页数):浏览器的约束校验在用户动过之后判失败,与字段家族的校验失败同一副边与环。
|
|
224
|
+
家族的失败档认 data-invalid,跳页框的取值不进状态机,失败由原生约束给出 */
|
|
225
|
+
[data-scope='pagination'][data-part='jumper']:user-invalid {
|
|
226
|
+
border-color: var(--xh-field-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
199
227
|
}
|
|
200
228
|
|
|
201
|
-
[data-scope='pagination'][data-part='jumper']:
|
|
202
|
-
color: var(--xh-
|
|
229
|
+
[data-scope='pagination'][data-part='jumper']:user-invalid:focus-within {
|
|
230
|
+
outline-color: var(--xh-field-ring-invalid, var(--xh-ring-invalid));
|
|
203
231
|
}
|
|
204
232
|
|
|
205
233
|
/* 摊开省略位的定位层。三处坐标系必须同为 fixed:机器交给引擎的 strategy、
|
|
@@ -215,12 +243,35 @@
|
|
|
215
243
|
/* 页码面板的自绘条浮在内容之上:轨道不上底色,实色轨道会在面板右缘糊一条竖灰带 */
|
|
216
244
|
--xh-scrollbar-track-bg: transparent;
|
|
217
245
|
|
|
246
|
+
/* 面板从锚点一侧短移入,方向按实际落位只激活一支 */
|
|
247
|
+
--xh-_overlay-enter-up: 0;
|
|
248
|
+
--xh-_overlay-enter-down: 0;
|
|
249
|
+
--xh-_overlay-enter-left: 0;
|
|
250
|
+
--xh-_overlay-enter-right: 0;
|
|
251
|
+
|
|
218
252
|
position: fixed;
|
|
219
253
|
z-index: var(--xh-pagination-layer, var(--xh-_layer, var(--xh-layer-popover)));
|
|
220
254
|
/* 空壳不吃指针:省略位与面板之间那段间隙要能点得穿 */
|
|
221
255
|
pointer-events: none;
|
|
222
256
|
}
|
|
223
257
|
|
|
258
|
+
/* 物理 placement 与定位引擎同一套,不随书写方向翻 */
|
|
259
|
+
[data-scope='pagination'][data-part='positioner'][data-placement^='top'] {
|
|
260
|
+
--xh-_overlay-enter-down: 1;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
[data-scope='pagination'][data-part='positioner'][data-placement^='bottom'] {
|
|
264
|
+
--xh-_overlay-enter-up: 1;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
[data-scope='pagination'][data-part='positioner'][data-placement^='left'] {
|
|
268
|
+
--xh-_overlay-enter-right: 1;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
[data-scope='pagination'][data-part='positioner'][data-placement^='right'] {
|
|
272
|
+
--xh-_overlay-enter-left: 1;
|
|
273
|
+
}
|
|
274
|
+
|
|
224
275
|
/* 锚点被滚出可视区:整个浮层随之收起 */
|
|
225
276
|
[data-scope='pagination'][data-part='positioner'][data-hidden] {
|
|
226
277
|
visibility: hidden;
|
|
@@ -250,21 +301,39 @@
|
|
|
250
301
|
pointer-events: auto;
|
|
251
302
|
}
|
|
252
303
|
|
|
304
|
+
/* 摊开的页码面板锚定在省略位上、从中挑一页,与菜单同属锚定列表:从锚点一侧短移淡入,不缩放 */
|
|
253
305
|
[data-scope='pagination'][data-part='content'][data-state='open'] {
|
|
254
|
-
animation: xh-
|
|
306
|
+
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
255
307
|
}
|
|
256
308
|
|
|
257
309
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
258
310
|
免得动画结束到真收起之间闪一下原样 */
|
|
259
311
|
[data-scope='pagination'][data-part='content'][data-state='closed'] {
|
|
260
|
-
animation: xh-
|
|
312
|
+
animation: xh-overlay-slide-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
261
313
|
}
|
|
262
314
|
|
|
263
315
|
/* 这里刻意没有 [data-part='content'][hidden] { display: none }:
|
|
264
316
|
补了退场就一帧都播不出来,真正的收起由适配器落成内联 display */
|
|
265
317
|
|
|
266
|
-
/*
|
|
267
|
-
|
|
318
|
+
/* 没写内容就由皮肤画兜底字形:上一页 / 下一页默认就是两枚箭头,首页 / 末页是两枚双箭头,
|
|
319
|
+
作者往部件里塞了自己的图形或文字,这几条即不命中 */
|
|
320
|
+
[data-scope='pagination'][data-part='first-trigger']:empty::before,
|
|
321
|
+
[data-scope='pagination'][data-part='last-trigger']:empty::before {
|
|
322
|
+
content: '';
|
|
323
|
+
display: inline-block;
|
|
324
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
325
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
326
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
327
|
+
background-color: currentColor;
|
|
328
|
+
-webkit-mask: var(--xh-glyph-mark-chevrons-left) center / contain no-repeat;
|
|
329
|
+
mask: var(--xh-glyph-mark-chevrons-left) center / contain no-repeat;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
[data-scope='pagination'][data-part='last-trigger']:empty::before {
|
|
333
|
+
-webkit-mask-image: var(--xh-glyph-mark-chevrons-right);
|
|
334
|
+
mask-image: var(--xh-glyph-mark-chevrons-right);
|
|
335
|
+
}
|
|
336
|
+
|
|
268
337
|
[data-scope='pagination'][data-part='prev-trigger']:empty::before {
|
|
269
338
|
content: '';
|
|
270
339
|
display: inline-block;
|
|
@@ -310,20 +379,34 @@
|
|
|
310
379
|
mask-image: var(--xh-glyph-mark-chevron-left);
|
|
311
380
|
}
|
|
312
381
|
|
|
382
|
+
[dir='rtl'] [data-scope='pagination'][data-part='first-trigger']:empty::before {
|
|
383
|
+
-webkit-mask-image: var(--xh-glyph-mark-chevrons-right);
|
|
384
|
+
mask-image: var(--xh-glyph-mark-chevrons-right);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
[dir='rtl'] [data-scope='pagination'][data-part='last-trigger']:empty::before {
|
|
388
|
+
-webkit-mask-image: var(--xh-glyph-mark-chevrons-left);
|
|
389
|
+
mask-image: var(--xh-glyph-mark-chevrons-left);
|
|
390
|
+
}
|
|
391
|
+
|
|
313
392
|
/* 手指落点:命中区由绝对定位的伪元素向块轴两侧外扩,格子的盒一点不动——
|
|
314
393
|
加高格子会把整条 nav 撑高,行宽也会跟着当前页抖。
|
|
315
394
|
只扩块轴:格与格在行内轴上只隔一格间距,往两侧扩会与相邻格的命中区叠上。
|
|
316
395
|
取 8px 是按最矮的 sm 档算的(28 + 8 × 2 = 44),md 与 lg 档更宽裕。
|
|
317
396
|
用 ::after:::before 已经被两枚箭头的兜底字形占着 */
|
|
318
397
|
@media (pointer: coarse) {
|
|
398
|
+
[data-scope='pagination'][data-part='first-trigger'],
|
|
319
399
|
[data-scope='pagination'][data-part='prev-trigger'],
|
|
320
400
|
[data-scope='pagination'][data-part='next-trigger'],
|
|
401
|
+
[data-scope='pagination'][data-part='last-trigger'],
|
|
321
402
|
[data-scope='pagination'][data-part='item'] {
|
|
322
403
|
position: relative;
|
|
323
404
|
}
|
|
324
405
|
|
|
406
|
+
[data-scope='pagination'][data-part='first-trigger']::after,
|
|
325
407
|
[data-scope='pagination'][data-part='prev-trigger']::after,
|
|
326
408
|
[data-scope='pagination'][data-part='next-trigger']::after,
|
|
409
|
+
[data-scope='pagination'][data-part='last-trigger']::after,
|
|
327
410
|
[data-scope='pagination'][data-part='item']::after {
|
|
328
411
|
content: '';
|
|
329
412
|
position: absolute;
|
|
@@ -345,4 +428,23 @@
|
|
|
345
428
|
font-weight: var(--xh-font-weight-semibold);
|
|
346
429
|
}
|
|
347
430
|
}
|
|
431
|
+
|
|
432
|
+
@media (forced-colors: active) {
|
|
433
|
+
/* 兜底字形是 mask 挖出来的一块底色,这一档里底色被系统换成 Canvas,字形跟着消失。
|
|
434
|
+
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
435
|
+
按钮面上取 ButtonText,悬停与按下时家族把按钮涂成 Highlight、字形换 HighlightText;
|
|
436
|
+
禁用取 GrayText */
|
|
437
|
+
[data-scope='pagination']:is([data-part='first-trigger'], [data-part='last-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='ellipsis-trigger']):empty::before {
|
|
438
|
+
forced-color-adjust: none;
|
|
439
|
+
background-color: ButtonText;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
[data-scope='pagination']:is([data-part='first-trigger'], [data-part='last-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='ellipsis-trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
443
|
+
background-color: HighlightText;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
[data-scope='pagination']:is([data-part='first-trigger'], [data-part='last-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='ellipsis-trigger'])[data-disabled]:empty::before {
|
|
447
|
+
background-color: GrayText;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
348
450
|
}
|
package/css/password-input.css
CHANGED
|
@@ -279,9 +279,10 @@
|
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
/* 强度条:一条底槽,填充按档位加长。档位由调用方打分后经 strength 传进来,
|
|
282
|
-
0 与 1 判弱、2 判中、3 与 4
|
|
282
|
+
0 与 1 判弱、2 判中、3 与 4 判强,三段各取一族语义色。
|
|
283
|
+
私有槽记的是填到轨道的比例(0–1):填充铺满轨道、按比例往行首平移藏起未完成的那一截,由轨道裁掉 */
|
|
283
284
|
[data-scope='password-input'][data-part='strength-meter'] {
|
|
284
|
-
--xh-_password-input-strength-fill: 0
|
|
285
|
+
--xh-_password-input-strength-fill: 0;
|
|
285
286
|
--xh-_password-input-strength-fg: var(--xh-fg-muted);
|
|
286
287
|
|
|
287
288
|
display: block;
|
|
@@ -297,33 +298,39 @@
|
|
|
297
298
|
display: none;
|
|
298
299
|
}
|
|
299
300
|
|
|
300
|
-
/*
|
|
301
|
+
/* 没写内容就由皮肤画填充;作者往部件里塞了自己的分段,这几条即不命中。
|
|
302
|
+
填充不动 inline-size:铺满轨道、按比例平移,只走合成(数值角色 move / continuous);前端圆角保留,
|
|
303
|
+
行首由轨道圆角裁出。平移乘书写方向的符号,rtl 下从行首(右侧)长出。换档时底色走 micro 淡变 */
|
|
301
304
|
[data-scope='password-input'][data-part='strength-meter']:empty::before {
|
|
302
305
|
content: '';
|
|
303
306
|
display: block;
|
|
304
|
-
inline-size:
|
|
307
|
+
inline-size: 100%;
|
|
305
308
|
block-size: 100%;
|
|
306
309
|
border-radius: inherit;
|
|
307
310
|
background: var(--xh-password-input-strength-fg, var(--xh-_password-input-strength-fg));
|
|
311
|
+
translate: calc((var(--xh-_password-input-strength-fill) - 1) * 100% * var(--xh-direction-sign)) 0;
|
|
312
|
+
transition:
|
|
313
|
+
translate var(--xh-motion-duration-move) var(--xh-motion-ease-continuous),
|
|
314
|
+
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
308
315
|
}
|
|
309
316
|
|
|
310
317
|
[data-scope='password-input'][data-part='strength-meter'][data-level='1'] {
|
|
311
|
-
--xh-_password-input-strength-fill: 25
|
|
318
|
+
--xh-_password-input-strength-fill: 0.25;
|
|
312
319
|
--xh-_password-input-strength-fg: var(--xh-fg-danger);
|
|
313
320
|
}
|
|
314
321
|
|
|
315
322
|
[data-scope='password-input'][data-part='strength-meter'][data-level='2'] {
|
|
316
|
-
--xh-_password-input-strength-fill:
|
|
323
|
+
--xh-_password-input-strength-fill: 0.5;
|
|
317
324
|
--xh-_password-input-strength-fg: var(--xh-fg-warning);
|
|
318
325
|
}
|
|
319
326
|
|
|
320
327
|
[data-scope='password-input'][data-part='strength-meter'][data-level='3'] {
|
|
321
|
-
--xh-_password-input-strength-fill: 75
|
|
328
|
+
--xh-_password-input-strength-fill: 0.75;
|
|
322
329
|
--xh-_password-input-strength-fg: var(--xh-fg-success);
|
|
323
330
|
}
|
|
324
331
|
|
|
325
332
|
[data-scope='password-input'][data-part='strength-meter'][data-level='4'] {
|
|
326
|
-
--xh-_password-input-strength-fill:
|
|
333
|
+
--xh-_password-input-strength-fill: 1;
|
|
327
334
|
--xh-_password-input-strength-fg: var(--xh-fg-success);
|
|
328
335
|
}
|
|
329
336
|
|
|
@@ -356,4 +363,29 @@
|
|
|
356
363
|
color: ButtonText;
|
|
357
364
|
}
|
|
358
365
|
}
|
|
366
|
+
|
|
367
|
+
@media (forced-colors: active) {
|
|
368
|
+
/* 兜底字形是 mask 挖出来的一块底色,这一档里底色被系统换成 Canvas,字形跟着消失。
|
|
369
|
+
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
370
|
+
按钮面上取 ButtonText,悬停与按下时家族把按钮涂成 Highlight、字形换 HighlightText;
|
|
371
|
+
落在 Canvas 面上的取 CanvasText;
|
|
372
|
+
禁用取 GrayText */
|
|
373
|
+
[data-scope='password-input'][data-part='visibility-trigger']:empty::before {
|
|
374
|
+
forced-color-adjust: none;
|
|
375
|
+
background-color: ButtonText;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
[data-scope='password-input'][data-part='caps-lock-indicator'][data-state='visible']::before {
|
|
379
|
+
forced-color-adjust: none;
|
|
380
|
+
background-color: CanvasText;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
[data-scope='password-input'][data-part='visibility-trigger']:not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
384
|
+
background-color: HighlightText;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
[data-scope='password-input'][data-part='visibility-trigger'][data-disabled]:empty::before {
|
|
388
|
+
background-color: GrayText;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
359
391
|
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2021-Present XiHanFun and contributors.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* 定义 pie chart 样式。 */
|
|
7
|
+
|
|
8
|
+
/* 淡入关键帧由 family/motion.css 提供;标题、视口、图例、提示框、空态、焦点环与引导线走 Chart 家族配方。
|
|
9
|
+
本皮肤 @import 它们,单独引入仍成立。 */
|
|
10
|
+
@import '../family/motion.css';
|
|
11
|
+
@import '../family/chart.css';
|
|
12
|
+
@import '../family/loading-ring.css';
|
|
13
|
+
|
|
14
|
+
@layer xihan.components {
|
|
15
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
16
|
+
[data-scope='pie-chart'] {
|
|
17
|
+
--xh-pie-chart-skin: 1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* 几何要用的像素值以这里的私有槽为真源:机器挂载后从计算样式读它们,作者覆盖组件槽即改变几何 */
|
|
21
|
+
[data-scope='pie-chart'][data-part='root'] {
|
|
22
|
+
--xh-_chart-metric-bar-max: var(--xh-chart-bar-max);
|
|
23
|
+
--xh-_chart-metric-gap: var(--xh-pie-chart-slice-gap, var(--xh-chart-gap));
|
|
24
|
+
--xh-_chart-metric-line-width: var(--xh-chart-line-width);
|
|
25
|
+
--xh-_chart-metric-point-size: var(--xh-chart-point-size);
|
|
26
|
+
--xh-_chart-metric-hit-min: var(--xh-chart-hit-min);
|
|
27
|
+
--xh-_chart-metric-tick-length: var(--xh-chart-tick-length);
|
|
28
|
+
--xh-_chart-metric-label-gap: var(--xh-chart-label-gap);
|
|
29
|
+
--xh-_chart-metric-radius: var(--xh-pie-chart-slice-radius, var(--xh-shape-inset));
|
|
30
|
+
--xh-_chart-metric-font-size: var(--xh-text-caption-size);
|
|
31
|
+
--xh-_chart-metric-leading: var(--xh-leading-tight);
|
|
32
|
+
--xh-_chart-gap: var(--xh-pie-chart-gap, var(--xh-space-3));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* —— 家族配方的组件槽:标题、视口、图例、提示框与空态由 family/chart.css 画,本图表的覆盖槽写在
|
|
36
|
+
对应部件上接进配方的私有槽,作者在部件或它的祖先上覆盖都生效 —— */
|
|
37
|
+
[data-scope='pie-chart'][data-part='viewport'] {
|
|
38
|
+
--xh-_chart-height: var(--xh-pie-chart-height, var(--xh-chart-height));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
[data-scope='pie-chart'][data-part='legend'] {
|
|
42
|
+
--xh-_chart-legend-gap: var(--xh-pie-chart-legend-gap, var(--xh-space-1));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
[data-scope='pie-chart'][data-part='legend-swatch'] {
|
|
46
|
+
--xh-_chart-legend-swatch-radius: var(--xh-pie-chart-legend-swatch-radius, var(--xh-shape-inset));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
[data-scope='pie-chart'][data-part='tooltip'] {
|
|
50
|
+
--xh-_chart-tooltip-gap: var(--xh-pie-chart-tooltip-gap, var(--xh-space-1));
|
|
51
|
+
--xh-_chart-tooltip-py: var(--xh-pie-chart-tooltip-py, var(--xh-surface-pad-sm));
|
|
52
|
+
--xh-_chart-tooltip-px: var(--xh-pie-chart-tooltip-px, var(--xh-surface-pad-sm));
|
|
53
|
+
--xh-_chart-tooltip-radius: var(--xh-pie-chart-tooltip-radius, var(--xh-shape-overlay));
|
|
54
|
+
--xh-_chart-tooltip-shadow: var(--xh-pie-chart-tooltip-shadow, var(--xh-material-frosted-shadow));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
[data-scope='pie-chart'][data-part='tooltip-row'] {
|
|
58
|
+
--xh-_chart-tooltip-row-gap: var(--xh-pie-chart-tooltip-row-gap, var(--xh-space-2));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
[data-scope='pie-chart'][data-part='tooltip-swatch'] {
|
|
62
|
+
--xh-_chart-tooltip-swatch-radius: var(--xh-pie-chart-tooltip-swatch-radius, var(--xh-shape-inset));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
[data-scope='pie-chart'][data-part='empty'][data-state='loading'] {
|
|
66
|
+
--xh-_chart-empty-gap: var(--xh-pie-chart-empty-gap, var(--xh-space-2));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* —— 色槽:身份由色槽承担,作者可以在扇区上覆盖 --xh-pie-chart-series-color ——
|
|
70
|
+
扇区、内侧标签、图例项与提示框的行都带着色槽,各自从这里取系列色与配对的前景色 */
|
|
71
|
+
[data-scope='pie-chart'][data-xh-chart-slot='1'] {
|
|
72
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-1));
|
|
73
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
[data-scope='pie-chart'][data-xh-chart-slot='2'] {
|
|
77
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-2));
|
|
78
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-2);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
[data-scope='pie-chart'][data-xh-chart-slot='3'] {
|
|
82
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-3));
|
|
83
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-3);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
[data-scope='pie-chart'][data-xh-chart-slot='4'] {
|
|
87
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-4));
|
|
88
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-4);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
[data-scope='pie-chart'][data-xh-chart-slot='5'] {
|
|
92
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-5));
|
|
93
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-5);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
[data-scope='pie-chart'][data-xh-chart-slot='6'] {
|
|
97
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-6));
|
|
98
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-6);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
[data-scope='pie-chart'][data-xh-chart-slot='7'] {
|
|
102
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-7));
|
|
103
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-7);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
[data-scope='pie-chart'][data-xh-chart-slot='8'] {
|
|
107
|
+
--xh-_chart-series: var(--xh-pie-chart-series-color, var(--xh-chart-categorical-8));
|
|
108
|
+
--xh-_chart-on-series: var(--xh-chart-on-categorical-8);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* 合并出来的「其他」取中性色:它不是一个类目,不占分类色 */
|
|
112
|
+
[data-scope='pie-chart'][data-xh-chart-slot='other'] {
|
|
113
|
+
--xh-_chart-series: var(--xh-chart-categorical-other);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* —— 扇区:相邻扇区之间的间隙由几何留出,不画描边;悬停时其余扇区淡出,被指着的不位移 —— */
|
|
117
|
+
[data-scope='pie-chart'][data-part='slice'] {
|
|
118
|
+
fill: var(--xh-_chart-series);
|
|
119
|
+
stroke: none;
|
|
120
|
+
transition: opacity var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
[data-scope='pie-chart'][data-part='slice'][data-dimmed],
|
|
124
|
+
[data-scope='pie-chart'][data-part='slice-label'][data-dimmed] {
|
|
125
|
+
opacity: var(--xh-chart-dim-alpha);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* 外侧标签是标注:标注字色,不取扇区色;引导线的画法在配方里 */
|
|
129
|
+
[data-scope='pie-chart'][data-part='slice-label'] {
|
|
130
|
+
fill: var(--xh-chart-label);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* 内侧标签压在扇区色上:取与色槽配对的前景色 */
|
|
134
|
+
[data-scope='pie-chart'][data-part='slice-label'][data-xh-chart-slot] {
|
|
135
|
+
fill: var(--xh-_chart-on-series);
|
|
136
|
+
font-weight: var(--xh-font-weight-medium);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* —— 环形中心:叠在视口上,圆心与内径由几何给出;文字不超出内圈 —— */
|
|
140
|
+
/* 首次出现:外侧标签等扫开的边缘到了才淡入,连接层写入它占入场时长的比例,乘上入场时长就是延迟;
|
|
141
|
+
环形中心等整圈扫完再淡入 */
|
|
142
|
+
[data-scope='pie-chart'][data-part='slice-label'][data-drawing] {
|
|
143
|
+
animation: xh-fade-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter) both;
|
|
144
|
+
animation-delay: calc(var(--xh-motion-duration-reveal) * var(--xh-_chart-reveal-at));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
[data-scope='pie-chart'][data-part='center'][data-drawing] {
|
|
148
|
+
animation: xh-fade-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter) both;
|
|
149
|
+
animation-delay: var(--xh-motion-duration-reveal);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
[data-scope='pie-chart'][data-part='center'] {
|
|
153
|
+
position: absolute;
|
|
154
|
+
inset-block-start: var(--xh-_chart-center-y, 50%);
|
|
155
|
+
/* stylelint-disable-next-line property-disallowed-list -- 绘图区不随 RTL 镜像,圆心横坐标由连接层按物理左缘写入 */
|
|
156
|
+
left: var(--xh-_chart-center-x, 50%);
|
|
157
|
+
display: flex;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
align-items: center;
|
|
160
|
+
gap: var(--xh-pie-chart-center-gap, var(--xh-space-0_5));
|
|
161
|
+
max-inline-size: calc(var(--xh-_chart-center-size, 0px) * 0.8);
|
|
162
|
+
text-align: center;
|
|
163
|
+
/* 中心不接指针:它压在内圈的空洞上,不挡扇区的命中 */
|
|
164
|
+
pointer-events: none;
|
|
165
|
+
translate: -50% -50%;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
[data-scope='pie-chart'][data-part='center'][data-placement='top'] {
|
|
169
|
+
translate: -50% -100%;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
[data-scope='pie-chart'][data-part='center'][hidden] {
|
|
173
|
+
display: none;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
[data-scope='pie-chart'][data-part='center-value'] {
|
|
177
|
+
color: var(--xh-fg-default);
|
|
178
|
+
font-size: var(--xh-pie-chart-center-value-font-size, var(--xh-text-heading-3-size));
|
|
179
|
+
font-weight: var(--xh-font-weight-semibold);
|
|
180
|
+
line-height: var(--xh-leading-tight);
|
|
181
|
+
font-variant-numeric: tabular-nums;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
[data-scope='pie-chart'][data-part='center-label'] {
|
|
185
|
+
color: var(--xh-fg-muted);
|
|
186
|
+
font-size: var(--xh-text-secondary-size);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* —— 纹理:颜色不可用或不可靠时(强制色、打印、祖先写了 data-xh-chart-patterns),扇区改用本色槽在 defs 里的
|
|
190
|
+
纹理填充、描出轮廓(「其他」不带纹理);压在扇区上的标签改用标签色、描一圈承载面色。色标的纹理在配方里 —— */
|
|
191
|
+
:where([data-xh-chart-patterns]) [data-scope='pie-chart'][data-part='slice'][data-xh-chart-pattern] {
|
|
192
|
+
fill: var(--xh-_chart-pattern);
|
|
193
|
+
stroke: var(--xh-_chart-series);
|
|
194
|
+
stroke-width: var(--xh-stroke-thin);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
:where([data-xh-chart-patterns]) [data-scope='pie-chart'][data-part='slice-label'][data-xh-chart-slot] {
|
|
198
|
+
fill: var(--xh-chart-label);
|
|
199
|
+
stroke: var(--xh-chart-surface);
|
|
200
|
+
stroke-width: var(--xh-stroke-thick);
|
|
201
|
+
paint-order: stroke;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* 强制色:扇区改成系统色的面与描边;纹理总是开启;焦点环、引导线与色标在配方里 */
|
|
205
|
+
@media (forced-colors: active) {
|
|
206
|
+
[data-scope='pie-chart'][data-part='slice'] {
|
|
207
|
+
fill: Canvas;
|
|
208
|
+
stroke: CanvasText;
|
|
209
|
+
stroke-width: var(--xh-stroke-thin);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
[data-scope='pie-chart'][data-part='slice-label'],
|
|
213
|
+
[data-scope='pie-chart'][data-part='slice-label'][data-xh-chart-slot] {
|
|
214
|
+
fill: CanvasText;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
[data-scope='pie-chart'][data-part='slice'][data-xh-chart-pattern] {
|
|
218
|
+
forced-color-adjust: none;
|
|
219
|
+
fill: var(--xh-_chart-pattern);
|
|
220
|
+
stroke: CanvasText;
|
|
221
|
+
stroke-width: var(--xh-stroke-thin);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
[data-scope='pie-chart'][data-part='slice-label'][data-xh-chart-slot] {
|
|
225
|
+
fill: CanvasText;
|
|
226
|
+
stroke: Canvas;
|
|
227
|
+
stroke-width: var(--xh-stroke-thick);
|
|
228
|
+
paint-order: stroke;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* 打印:纹理开启;提示框与焦点环在配方里 */
|
|
233
|
+
@media print {
|
|
234
|
+
[data-scope='pie-chart'][data-part='slice'][data-xh-chart-pattern] {
|
|
235
|
+
fill: var(--xh-_chart-pattern);
|
|
236
|
+
stroke: var(--xh-_chart-series);
|
|
237
|
+
stroke-width: var(--xh-stroke-thin);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
[data-scope='pie-chart'][data-part='slice-label'][data-xh-chart-slot] {
|
|
241
|
+
fill: var(--xh-chart-label);
|
|
242
|
+
stroke: var(--xh-chart-surface);
|
|
243
|
+
stroke-width: var(--xh-stroke-thick);
|
|
244
|
+
paint-order: stroke;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|