@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/navigation-menu.css
CHANGED
|
@@ -144,7 +144,9 @@
|
|
|
144
144
|
flex: 1;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
/* 面板贴着自己那一项落位:横排从 trigger
|
|
147
|
+
/* 面板贴着自己那一项落位:横排从 trigger 底下长出来。面板型浮层按内容的自然宽度排开:
|
|
148
|
+
它绝对定位在入口那一项(一个窄 li)里,收缩适配的可用宽就是那一项的宽,不给宽度只剩最小宽、
|
|
149
|
+
一行放得下的文字也折行;超过浮层最大宽才折 */
|
|
148
150
|
[data-scope='navigation-menu'][data-part='content'] {
|
|
149
151
|
position: absolute;
|
|
150
152
|
z-index: var(--xh-navigation-menu-layer, var(--xh-_layer, var(--xh-layer-popover)));
|
|
@@ -153,7 +155,9 @@
|
|
|
153
155
|
display: flex;
|
|
154
156
|
flex-direction: column;
|
|
155
157
|
gap: var(--xh-navigation-menu-content-gap, var(--xh-space-1));
|
|
158
|
+
inline-size: max-content;
|
|
156
159
|
min-inline-size: var(--xh-navigation-menu-content-min-w, var(--xh-overlay-menu-min-w));
|
|
160
|
+
max-inline-size: var(--xh-navigation-menu-content-max-w, var(--xh-overlay-max-w-xl));
|
|
157
161
|
padding: var(--xh-navigation-menu-content-p, var(--xh-surface-pad-xs));
|
|
158
162
|
border: var(--xh-stroke-thin) solid var(--xh-navigation-menu-content-border, var(--xh-border-default));
|
|
159
163
|
border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-overlay));
|
|
@@ -172,12 +176,14 @@
|
|
|
172
176
|
inset-inline-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
173
177
|
}
|
|
174
178
|
|
|
175
|
-
|
|
179
|
+
/* 首开弹出、末收收回;在两张之间换张时两侧都带 data-instant,瞬时换张——与菜单栏同一条成规,
|
|
180
|
+
交叉的进退场读起来就是闪烁。挂载时就展开着的那一项同样带它,直接呈现 */
|
|
181
|
+
[data-scope='navigation-menu'][data-part='content'][data-state='open']:not([data-instant]) {
|
|
176
182
|
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
177
183
|
}
|
|
178
184
|
|
|
179
185
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来 */
|
|
180
|
-
[data-scope='navigation-menu'][data-part='content'][data-state='closed'] {
|
|
186
|
+
[data-scope='navigation-menu'][data-part='content'][data-state='closed']:not([data-instant]) {
|
|
181
187
|
animation: xh-pop-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
182
188
|
}
|
|
183
189
|
|
|
@@ -191,6 +197,16 @@
|
|
|
191
197
|
box-shadow: none;
|
|
192
198
|
}
|
|
193
199
|
|
|
200
|
+
/* 外壳里的面板不自己弹出:弹出与收回归外壳,面板只随之淡入淡出,时长与外壳同档——
|
|
201
|
+
末收时面板的淡出与外壳的收回同时播完,外壳等它播完才藏起 */
|
|
202
|
+
[data-scope='navigation-menu'][data-part='viewport'] [data-scope='navigation-menu'][data-part='content'][data-state='open']:not([data-instant]) {
|
|
203
|
+
animation: xh-fade-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
[data-scope='navigation-menu'][data-part='viewport'] [data-scope='navigation-menu'][data-part='content'][data-state='closed']:not([data-instant]) {
|
|
207
|
+
animation: xh-fade-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
208
|
+
}
|
|
209
|
+
|
|
194
210
|
/* 面板里的链接归 Collection Item 导航当前(nav 语境):悬停 / 键盘高亮(白底承载 100)与按下(200)面由家族
|
|
195
211
|
按 :hover / :focus-visible / :active 给出,指向当前页面的那一条(data-current)取 strong 档品牌字色 +
|
|
196
212
|
medium 字重,字色不随语气、不加下划线(下划线是"可点"的信号,它已经在这儿了);这里只把公开槽
|
|
@@ -221,6 +237,68 @@
|
|
|
221
237
|
display: none;
|
|
222
238
|
}
|
|
223
239
|
|
|
240
|
+
/* 面板里一枝子级的开关与链接同一种行,读链接那一组槽,两种行才等高、左缘才齐。
|
|
241
|
+
展开不换面、不算打开中:由转向的箭头与露出的子级说明;按下只换面不缩放 */
|
|
242
|
+
[data-scope='navigation-menu'][data-part='branch-trigger'] {
|
|
243
|
+
--xh-collection-block-padding: var(--xh-navigation-menu-link-py, var(--xh-_navigation-menu-link-py));
|
|
244
|
+
--xh-collection-inline-padding: var(--xh-navigation-menu-link-px, var(--xh-_navigation-menu-link-px));
|
|
245
|
+
--xh-collection-radius: var(--xh-navigation-menu-link-radius, var(--xh-shape-control));
|
|
246
|
+
--xh-collection-font-size: var(--xh-navigation-menu-link-font-size, var(--xh-_navigation-menu-link-font-size));
|
|
247
|
+
--xh-collection-fg-rest: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
248
|
+
--xh-collection-fg-hover: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
249
|
+
--xh-collection-fg-keyboard-highlight: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
250
|
+
--xh-collection-fg-pressed: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
251
|
+
--xh-collection-bg-hover: var(--xh-navigation-menu-link-bg-hover, var(--xh-_navigation-menu-highlight-bg));
|
|
252
|
+
--xh-collection-bg-keyboard-highlight: var(--xh-navigation-menu-link-bg-hover, var(--xh-_navigation-menu-highlight-bg));
|
|
253
|
+
--xh-collection-bg-pressed: var(--xh-navigation-menu-link-bg-pressed, var(--xh-bg-subtle-hover));
|
|
254
|
+
|
|
255
|
+
display: flex;
|
|
256
|
+
align-items: center;
|
|
257
|
+
gap: var(--xh-navigation-menu-branch-trigger-gap, var(--xh-_navigation-menu-trigger-gap));
|
|
258
|
+
border: 0;
|
|
259
|
+
text-align: start;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* 行尾的展开方向标记,与 SideNav / Tree 的分支箭头同一种:盒按指示符档定尺,兜底字形与作者的图标读盒的尺。
|
|
263
|
+
收着时指向行尾(旋转角乘书写方向的符号,rtl 转半圈),展开时转向下方 */
|
|
264
|
+
[data-scope='navigation-menu'][data-part='branch-indicator'] {
|
|
265
|
+
--xh-icon-size: var(--xh-navigation-menu-branch-indicator-size, var(--xh-control-indicator-size));
|
|
266
|
+
|
|
267
|
+
margin-inline-start: auto;
|
|
268
|
+
display: inline-flex;
|
|
269
|
+
flex: none;
|
|
270
|
+
align-items: center;
|
|
271
|
+
justify-content: center;
|
|
272
|
+
inline-size: var(--xh-navigation-menu-branch-indicator-size, var(--xh-control-indicator-size));
|
|
273
|
+
block-size: var(--xh-navigation-menu-branch-indicator-size, var(--xh-control-indicator-size));
|
|
274
|
+
rotate: calc(90deg - 90deg * var(--xh-direction-sign));
|
|
275
|
+
transition: rotate var(--xh-motion-duration-nudge) var(--xh-motion-ease-enter-strong);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
[data-scope='navigation-menu'][data-part='branch-indicator'][data-state='open'] {
|
|
279
|
+
rotate: 90deg;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这条规则即不命中 */
|
|
283
|
+
[data-scope='navigation-menu'][data-part='branch-indicator']:empty::before {
|
|
284
|
+
content: '';
|
|
285
|
+
display: inline-block;
|
|
286
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
287
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
288
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
289
|
+
background-color: currentColor;
|
|
290
|
+
-webkit-mask: var(--xh-glyph-mark-chevron-right) center / contain no-repeat;
|
|
291
|
+
mask: var(--xh-glyph-mark-chevron-right) center / contain no-repeat;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/* 子级紧跟在开关之后,靠缩进表出层级、行距同面板;密集披露,不动高度、刻意瞬时 */
|
|
295
|
+
[data-scope='navigation-menu'][data-part='branch-content'] {
|
|
296
|
+
display: flex;
|
|
297
|
+
flex-direction: column;
|
|
298
|
+
gap: var(--xh-navigation-menu-content-gap, var(--xh-space-1));
|
|
299
|
+
padding-inline-start: var(--xh-navigation-menu-branch-content-indent, var(--xh-space-4));
|
|
300
|
+
}
|
|
301
|
+
|
|
224
302
|
/* 入口里表示"底下还有一张面板"的标记,排在入口文字之后,展开时转向 */
|
|
225
303
|
[data-scope='navigation-menu'][data-part='trigger-indicator'] {
|
|
226
304
|
display: inline-flex;
|
|
@@ -228,7 +306,7 @@
|
|
|
228
306
|
align-items: center;
|
|
229
307
|
justify-content: center;
|
|
230
308
|
line-height: var(--xh-leading-none);
|
|
231
|
-
transition: rotate var(--xh-motion-duration-
|
|
309
|
+
transition: rotate var(--xh-motion-duration-nudge) var(--xh-motion-ease-enter-strong);
|
|
232
310
|
}
|
|
233
311
|
|
|
234
312
|
[data-scope='navigation-menu'][data-part='trigger-indicator'][hidden] {
|
|
@@ -283,21 +361,37 @@
|
|
|
283
361
|
block-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
|
|
284
362
|
}
|
|
285
363
|
|
|
286
|
-
/*
|
|
287
|
-
|
|
364
|
+
/* 展开入口的四个几何量由机器量好、连接层写成私有槽 --xh-_navigation-menu-indicator-x / -y / -w / -h
|
|
365
|
+
(它量得到,样式表量不到);这里按排布取主轴那两支,落点交给 translate(只走合成),
|
|
366
|
+
另管交叉轴的贴边与粗细,以及长什么样。它指的是开着的面板:无面板开着时隐藏,
|
|
288
367
|
当前页由上面链接自画的静态线表达 */
|
|
289
368
|
[data-scope='navigation-menu'][data-part='indicator'] {
|
|
369
|
+
/* 还没量到时的落点,量到即被机器写的私有槽盖过 */
|
|
370
|
+
--xh-_navigation-menu-indicator-x: 0;
|
|
371
|
+
--xh-_navigation-menu-indicator-y: 0;
|
|
372
|
+
--xh-_navigation-menu-indicator-w: 0;
|
|
373
|
+
--xh-_navigation-menu-indicator-h: 0;
|
|
374
|
+
--xh-_navigation-menu-indicator-stretch: 0;
|
|
375
|
+
|
|
290
376
|
position: absolute;
|
|
291
377
|
display: block;
|
|
292
378
|
/* 指示条也是列表项,宿主给 li 的外边距会把绝对定位的它推离入口 */
|
|
293
379
|
margin: 0;
|
|
380
|
+
inset-inline-start: 0;
|
|
294
381
|
inset-block-end: calc(var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick)) * -1);
|
|
382
|
+
inline-size: var(--xh-_navigation-menu-indicator-w);
|
|
295
383
|
block-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
|
|
296
384
|
border-radius: var(--xh-navigation-menu-indicator-radius, var(--xh-shape-pill));
|
|
297
385
|
background: var(--xh-navigation-menu-indicator-color, var(--xh-_navigation-menu-accent));
|
|
386
|
+
translate: var(--xh-_navigation-menu-indicator-x) 0;
|
|
298
387
|
transition:
|
|
299
|
-
|
|
300
|
-
inline-size var(--xh-motion-duration-
|
|
388
|
+
translate var(--xh-motion-duration-move) var(--xh-motion-ease-continuous),
|
|
389
|
+
inline-size var(--xh-motion-duration-move) var(--xh-motion-ease-continuous);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/* translate 只认物理方向:RTL 下行首在右边,起始缘量出的距离往左推 */
|
|
393
|
+
[data-scope='navigation-menu'][data-part='indicator']:dir(rtl) {
|
|
394
|
+
translate: calc(-1 * var(--xh-_navigation-menu-indicator-x)) 0;
|
|
301
395
|
}
|
|
302
396
|
|
|
303
397
|
[data-scope='navigation-menu'][data-part='indicator'][hidden] {
|
|
@@ -306,13 +400,35 @@
|
|
|
306
400
|
|
|
307
401
|
/* 竖排:指示条改贴在起始缘,交叉轴换成内联轴 */
|
|
308
402
|
[data-scope='navigation-menu'][data-part='indicator'][data-orientation='vertical'] {
|
|
403
|
+
inset-block-start: 0;
|
|
309
404
|
inset-block-end: auto;
|
|
310
405
|
inset-inline-start: 0;
|
|
311
406
|
inline-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
|
|
312
|
-
block-size:
|
|
407
|
+
block-size: var(--xh-_navigation-menu-indicator-h);
|
|
408
|
+
translate: 0 var(--xh-_navigation-menu-indicator-y);
|
|
313
409
|
transition:
|
|
314
|
-
|
|
315
|
-
block-size var(--xh-motion-duration-
|
|
410
|
+
translate var(--xh-motion-duration-move) var(--xh-motion-ease-continuous),
|
|
411
|
+
block-size var(--xh-motion-duration-move) var(--xh-motion-ease-continuous);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/* 首次落位与同一项的重量(窗口缩放、换上正式字体)直接到位,只有换项才滑:连接层在这一落点投影
|
|
415
|
+
data-instant。写在排布那几条之后,同一特异性按先后压过它们单写的过渡 */
|
|
416
|
+
[data-scope='navigation-menu'][data-part='indicator'][data-instant] {
|
|
417
|
+
transition: none;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/* 液态档:两沿由弹簧逐帧推着走(连接层每一帧写好盒子),几何量不再补过渡;
|
|
421
|
+
被拉长时在另一个方向上压扁(横排缺省压块向,竖排压行向),表达体积守恒,拉长到目标的两倍时压到 --xh-motion-scale-squash */
|
|
422
|
+
:where([data-material='liquid']) [data-scope='navigation-menu'][data-part='indicator'] {
|
|
423
|
+
--xh-_navigation-menu-indicator-squash: max(var(--xh-motion-scale-squash), calc(1 - var(--xh-_navigation-menu-indicator-stretch) * (1 - var(--xh-motion-scale-squash))));
|
|
424
|
+
|
|
425
|
+
scale: 1 var(--xh-_navigation-menu-indicator-squash);
|
|
426
|
+
transition: none;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
:where([data-material='liquid']) [data-scope='navigation-menu'][data-part='indicator'][data-orientation='vertical'] {
|
|
430
|
+
scale: var(--xh-_navigation-menu-indicator-squash) 1;
|
|
431
|
+
transition: none;
|
|
316
432
|
}
|
|
317
433
|
|
|
318
434
|
/* 共享面板外壳:只管落位与统一的面板外观,里面装哪一份内容归 content。
|
|
@@ -324,6 +440,9 @@
|
|
|
324
440
|
inset-block-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
325
441
|
inset-inline-start: 0;
|
|
326
442
|
display: block;
|
|
443
|
+
/* 外壳同样按装进来的那一张的自然宽度排开,道理同 content */
|
|
444
|
+
inline-size: max-content;
|
|
445
|
+
max-inline-size: var(--xh-navigation-menu-content-max-w, var(--xh-overlay-max-w-xl));
|
|
327
446
|
padding: var(--xh-navigation-menu-viewport-p, var(--xh-space-2));
|
|
328
447
|
border: var(--xh-stroke-thin) solid var(--xh-navigation-menu-content-border, var(--xh-border-default));
|
|
329
448
|
border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-overlay));
|
|
@@ -335,12 +454,29 @@
|
|
|
335
454
|
display: none;
|
|
336
455
|
}
|
|
337
456
|
|
|
457
|
+
/* 共享外壳是面板那一面:首开弹出、末收收回,换张时外壳留在原处、高度即刻换成新的一张。
|
|
458
|
+
挂载时就展开着的那一段(data-instant)属于首帧,直接呈现 */
|
|
459
|
+
[data-scope='navigation-menu'][data-part='viewport'][data-state='open']:not([data-instant]) {
|
|
460
|
+
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
[data-scope='navigation-menu'][data-part='viewport'][data-state='closed'] {
|
|
464
|
+
animation: xh-pop-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
465
|
+
}
|
|
466
|
+
|
|
338
467
|
/* 竖排导航:共享外壳跟着面板改从侧边长出来 */
|
|
339
468
|
[data-scope='navigation-menu'][data-part='viewport'][data-orientation='vertical'] {
|
|
340
469
|
inset-block-start: 0;
|
|
341
470
|
inset-inline-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
342
471
|
}
|
|
343
472
|
|
|
473
|
+
/* 声明过 display 就盖掉了 UA 的 [hidden]{display:none},兜底排在这几个部件所有 display 声明之后 */
|
|
474
|
+
[data-scope='navigation-menu'][data-part='branch-trigger'][hidden],
|
|
475
|
+
[data-scope='navigation-menu'][data-part='branch-indicator'][hidden],
|
|
476
|
+
[data-scope='navigation-menu'][data-part='branch-content'][hidden] {
|
|
477
|
+
display: none;
|
|
478
|
+
}
|
|
479
|
+
|
|
344
480
|
@media (forced-colors: active) {
|
|
345
481
|
/* 两条指示线画的都是一块纯底色,这一档里底色被统一换成 Canvas,线整根消失:
|
|
346
482
|
开着的入口只剩转向的箭头、当前页只剩字重。换成系统高亮色画回来 */
|
|
@@ -348,5 +484,30 @@
|
|
|
348
484
|
[data-scope='navigation-menu'][data-part='link'][data-current]::after {
|
|
349
485
|
background: Highlight;
|
|
350
486
|
}
|
|
487
|
+
|
|
488
|
+
/* 顶层入口与子级开关的箭头都是 mask 挖出来的一块底色,这一档里底色换成 Canvas、箭头跟着消失,
|
|
489
|
+
开合只剩读屏听得到。直接写系统前景(不能取 currentColor:退出强制色的伪元素读到的是被系统换掉之前的作者色):
|
|
490
|
+
子级开关取按钮前景 ButtonText,顶层入口落在条目面上取 CanvasText;
|
|
491
|
+
两者都是集合条目,按下与没被高亮时的悬停,家族把条目涂成 Highlight,箭头跟着换 HighlightText;
|
|
492
|
+
禁用的取 GrayText,与公共补救层给禁用行的字色一致 */
|
|
493
|
+
[data-scope='navigation-menu'][data-part='branch-indicator']:empty::before {
|
|
494
|
+
background-color: ButtonText;
|
|
495
|
+
forced-color-adjust: none;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
[data-scope='navigation-menu'][data-part='trigger-indicator']:empty::before {
|
|
499
|
+
background-color: CanvasText;
|
|
500
|
+
forced-color-adjust: none;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
[data-scope='navigation-menu'][data-part='branch-trigger']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed], :hover:not(:focus-visible, [data-highlighted])) [data-scope='navigation-menu'][data-part='branch-indicator']:empty::before,
|
|
504
|
+
[data-scope='navigation-menu'][data-part='trigger']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed], :hover:not(:focus-visible, [data-highlighted])) [data-scope='navigation-menu'][data-part='trigger-indicator']:empty::before {
|
|
505
|
+
background-color: HighlightText;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
[data-scope='navigation-menu'][data-part='branch-trigger'][data-disabled] [data-scope='navigation-menu'][data-part='branch-indicator']:empty::before,
|
|
509
|
+
[data-scope='navigation-menu'][data-part='trigger']:is([aria-disabled='true'], [data-disabled]) [data-scope='navigation-menu'][data-part='trigger-indicator']:empty::before {
|
|
510
|
+
background-color: GrayText;
|
|
511
|
+
}
|
|
351
512
|
}
|
|
352
513
|
}
|