@xihan-ui/styles 1.0.0 → 2.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 +5146 -6
- package/README.md +22 -2
- package/component-tokens.d.ts +4212 -0
- package/component-tokens.js +2 -0
- package/components.tokens.json +80116 -0
- package/css/accordion.css +131 -75
- package/css/affix.css +16 -1
- package/css/alert.css +114 -67
- package/css/anchor.css +99 -27
- package/css/approval.css +461 -0
- package/css/avatar-group.css +14 -6
- package/css/avatar.css +33 -9
- package/css/back-top.css +103 -48
- package/css/badge.css +42 -14
- package/css/bar-code.css +62 -0
- package/css/breadcrumb.css +40 -21
- package/css/button-group.css +146 -24
- package/css/button.css +116 -99
- package/css/calendar-picker.css +448 -0
- package/css/calendar-range-picker.css +517 -0
- package/css/card.css +54 -77
- package/css/carousel.css +412 -68
- package/css/cascader.css +429 -246
- package/css/checkbox-group.css +225 -77
- package/css/checkbox.css +174 -37
- package/css/clipboard.css +266 -47
- package/css/code-view.css +279 -0
- package/css/collapsible.css +108 -63
- package/css/color-field.css +158 -0
- package/css/color-picker.css +172 -184
- package/css/color-slider.css +274 -0
- package/css/color-swatch-picker.css +243 -0
- package/css/color-swatch.css +35 -0
- package/css/combobox.css +267 -273
- package/css/command.css +399 -0
- package/css/context-menu.css +183 -108
- package/css/date-field.css +94 -121
- package/css/date-picker.css +486 -249
- package/css/date-range-picker.css +559 -0
- package/css/description.css +51 -0
- package/css/descriptions.css +133 -87
- package/css/dialog.css +247 -68
- package/css/diff-view.css +428 -0
- package/css/download-trigger.css +155 -46
- package/css/drawer.css +194 -111
- package/css/editable.css +172 -152
- package/css/empty-state.css +80 -11
- package/css/field-array.css +190 -0
- package/css/field.css +84 -31
- package/css/fieldset.css +51 -18
- package/css/file-upload.css +134 -36
- package/css/flex.css +20 -1
- package/css/float-button.css +238 -57
- package/css/floating-panel.css +173 -92
- package/css/focus.css +46 -0
- package/css/forced-colors.css +93 -0
- package/css/form.css +254 -77
- package/css/gradient-text.css +34 -10
- package/css/grid.css +516 -5
- package/css/heatmap.css +87 -29
- package/css/highlight.css +20 -5
- package/css/hover-card.css +97 -47
- package/css/icon-wrapper.css +15 -3
- package/css/icon.css +74 -8
- package/css/image-cropper.css +143 -29
- package/css/image-viewer.css +150 -89
- package/css/image.css +30 -1
- package/css/infinite-scroll.css +51 -1
- package/css/input-group.css +277 -0
- package/css/json-viewer.css +102 -45
- package/css/kbd.css +72 -0
- package/css/label.css +78 -0
- package/css/layers.css +5 -0
- package/css/layout.css +175 -31
- package/css/list.css +24 -3
- package/css/listbox.css +208 -67
- package/css/loading-bar.css +52 -3
- package/css/log.css +144 -9
- package/css/markdown-stream.css +149 -0
- package/css/marquee.css +27 -1
- package/css/masonry.css +7 -0
- package/css/matrix-code.css +67 -0
- package/css/mention.css +234 -152
- package/css/menu.css +180 -83
- package/css/menubar.css +204 -136
- package/css/message-feed.css +197 -0
- package/css/navigation-menu.css +144 -90
- package/css/notification.css +178 -100
- package/css/number-animation.css +7 -0
- package/css/number-field.css +120 -277
- package/css/overlay-arrow.css +12 -7
- package/css/page-header.css +99 -14
- package/css/pagination.css +175 -135
- package/css/password-input.css +222 -219
- package/css/pin-input.css +101 -67
- package/css/pointer.css +36 -0
- package/css/popconfirm.css +185 -94
- package/css/popover.css +121 -77
- package/css/progress.css +60 -12
- package/css/prompt-input.css +224 -0
- package/css/question-flow.css +513 -0
- package/css/radio-group.css +147 -30
- package/css/rating.css +193 -43
- package/css/reasoning.css +336 -0
- package/css/reset.css +84 -6
- package/css/resizable.css +237 -0
- package/css/scroll-area.css +68 -7
- package/css/scrollbar.css +47 -13
- package/css/segmented.css +94 -29
- package/css/select.css +288 -274
- package/css/separator.css +101 -1
- package/css/side-nav.css +133 -75
- package/css/signature-pad.css +74 -54
- package/css/skeleton.css +84 -11
- package/css/slider.css +132 -39
- package/css/sortable.css +198 -0
- package/css/spinner.css +126 -12
- package/css/splitter.css +29 -8
- package/css/statistic.css +55 -0
- package/css/steps.css +206 -72
- package/css/switch.css +268 -36
- package/css/table.css +695 -118
- package/css/tabs.css +604 -42
- package/css/tag-group.css +219 -0
- package/css/tag.css +118 -28
- package/css/tags-input.css +156 -274
- package/css/text-field.css +101 -249
- package/css/time-field.css +100 -128
- package/css/time-picker.css +323 -252
- package/css/time-range-picker.css +719 -0
- package/css/timeline.css +202 -68
- package/css/timer.css +56 -52
- package/css/timestamp.css +34 -0
- package/css/toast.css +373 -144
- package/css/toggle-group.css +309 -76
- package/css/toggle.css +116 -85
- package/css/tone.css +47 -0
- package/css/tool-call.css +421 -0
- package/css/toolbar.css +181 -33
- package/css/tooltip.css +107 -36
- package/css/tour.css +183 -152
- package/css/transfer.css +351 -138
- package/css/tree-select.css +323 -216
- package/css/tree.css +294 -62
- package/css/truncate.css +65 -0
- package/css/typography.css +228 -5
- package/css/undefined.css +10 -1
- package/css/virtualizer.css +9 -10
- package/css/visually-hidden.css +7 -0
- package/css/watermark.css +7 -0
- package/family/action-control.css +487 -0
- package/family/collection-item.css +721 -0
- package/family/field-chrome.css +298 -0
- package/family/motion.css +166 -0
- package/family/swatch.css +59 -0
- package/index.css +41705 -126
- package/index.unlayered.css +33692 -17339
- package/package.json +51 -17
- package/css/calendar.css +0 -367
- package/css/code-block.css +0 -91
- package/css/composer.css +0 -134
- package/css/countdown.css +0 -26
- package/css/dynamic-input.css +0 -220
- package/css/ellipsis.css +0 -52
- package/css/hotkeys.css +0 -90
- package/css/popselect.css +0 -391
- package/css/qr-code.css +0 -55
- package/css/result.css +0 -119
- package/css/space.css +0 -117
- package/css/thread.css +0 -120
- package/css/time.css +0 -25
|
@@ -0,0 +1,197 @@
|
|
|
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
|
+
/* 定义 message feed 样式。 */
|
|
7
|
+
|
|
8
|
+
/* 独立皮肤同时传递引入回底钮的动作控件配方,full bundle 递归去重。 */
|
|
9
|
+
@import '../family/action-control.css';
|
|
10
|
+
|
|
11
|
+
@layer xihan.motion {
|
|
12
|
+
/* 关键帧写在本文件里:动画名的查找只认「文档里有没有这个名字」,
|
|
13
|
+
引用别处文件里的名字时那份文件不一定在场,动画会静默地整个不跑。
|
|
14
|
+
幅度与缩放走令牌,减弱动效时由令牌层归零 */
|
|
15
|
+
@keyframes xh-message-feed-item-in {
|
|
16
|
+
from {
|
|
17
|
+
opacity: 0;
|
|
18
|
+
translate: 0 var(--xh-motion-distance-md);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
to {
|
|
22
|
+
opacity: 1;
|
|
23
|
+
translate: 0 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@keyframes xh-message-feed-button-in {
|
|
28
|
+
from {
|
|
29
|
+
opacity: 0;
|
|
30
|
+
scale: var(--xh-motion-scale-enter);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
to {
|
|
34
|
+
opacity: 1;
|
|
35
|
+
scale: 1;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@layer xihan.components {
|
|
41
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
42
|
+
[data-scope='message-feed'] {
|
|
43
|
+
--xh-message-feed-skin: 1;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* 根是定位基准:回到底部按钮贴在它的右下角。高度由使用者的版面给,这里不定高 */
|
|
47
|
+
[data-scope='message-feed'][data-part='root'] {
|
|
48
|
+
/* 尺寸缺省档:不写 data-size 时的取值。三档都只写这两个私有槽,
|
|
49
|
+
公开槽留在读处当首选,作者在祖先上设的覆盖才赢得过档位声明 */
|
|
50
|
+
--xh-_message-feed-gap: var(--xh-space-4);
|
|
51
|
+
--xh-_message-feed-p: var(--xh-space-4);
|
|
52
|
+
|
|
53
|
+
position: relative;
|
|
54
|
+
display: flex;
|
|
55
|
+
min-block-size: 0;
|
|
56
|
+
flex-direction: column;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
[data-scope='message-feed'][data-part='root'][hidden] {
|
|
60
|
+
display: none;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* 滚动容器:粘底视口,走 reset 层的原生细条。overscroll-behavior 挡住滚到头之后把整页一起带走 */
|
|
64
|
+
[data-scope='message-feed'][data-part='viewport'] {
|
|
65
|
+
overflow-y: auto;
|
|
66
|
+
flex: 1 1 auto;
|
|
67
|
+
min-block-size: 0;
|
|
68
|
+
overscroll-behavior: contain;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* 流式视口的内容高度一直在变,还在用原生滚动条的视口留一条空道,滚动条出现与消失时不推动文字(§6.6)。
|
|
72
|
+
带 data-xh-scrollbar 的容器已经把原生条藏成零宽,这条空道对它没有布局作用,排除掉 */
|
|
73
|
+
[data-scope='message-feed'][data-part='viewport']:not([data-xh-scrollbar]) {
|
|
74
|
+
scrollbar-gutter: stable;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
[data-scope='message-feed'][data-part='list'] {
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
gap: var(--xh-message-feed-gap, var(--xh-_message-feed-gap));
|
|
81
|
+
padding: var(--xh-message-feed-p, var(--xh-_message-feed-p));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
[data-scope='message-feed'][data-part='list'][hidden] {
|
|
85
|
+
display: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* 一条消息。默认整行铺开,左右分侧由使用者按 data-role 自己写。
|
|
89
|
+
进场只动 opacity 与 translate:改高度会扰动粘底补偿量到的 scrollHeight */
|
|
90
|
+
[data-scope='message-feed'][data-part='item'] {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex-direction: column;
|
|
93
|
+
gap: var(--xh-message-feed-item-gap, var(--xh-space-1));
|
|
94
|
+
border-radius: var(--xh-message-feed-item-radius, var(--xh-shape-surface));
|
|
95
|
+
animation: xh-message-feed-item-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
[data-scope='message-feed'][data-part='item'][hidden] {
|
|
99
|
+
display: none;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
[data-scope='message-feed'][data-part='item-label'] {
|
|
103
|
+
display: block;
|
|
104
|
+
color: var(--xh-message-feed-label-fg, var(--xh-fg-muted));
|
|
105
|
+
font-size: var(--xh-message-feed-label-font-size, var(--xh-text-caption-size));
|
|
106
|
+
line-height: var(--xh-leading-tight);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
[data-scope='message-feed'][data-part='item-label'][hidden] {
|
|
110
|
+
display: none;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* 回到底部:浮在滚动区右下角,收起时不卸载只隐藏。盒型、悬停 / 按下面与缩放由 Action Control 的
|
|
114
|
+
floating 档给(circle 正方盒、ghost 形态:白底承载 hover 100 → pressed 200);材质随角落浮钮族走
|
|
115
|
+
frosted 四件套(底 + 边 + 影 + 磨砂,§8),这里只把使用者槽映射到桥接槽:
|
|
116
|
+
字形按 xs 档取 --xh-_action-profile-glyph-size(16px),与 log / back-top 同一把尺 */
|
|
117
|
+
[data-scope='message-feed'][data-part='scroll-to-end-trigger'] {
|
|
118
|
+
--xh-_message-feed-scroll-to-end-trigger-shadow: var(--xh-message-feed-scroll-to-end-trigger-shadow, var(--xh-material-frosted-shadow));
|
|
119
|
+
--xh-action-visual-size: var(--xh-message-feed-scroll-to-end-trigger-size, var(--xh-_action-profile-visual-size));
|
|
120
|
+
--xh-action-radius: var(--xh-message-feed-scroll-to-end-trigger-radius, var(--xh-shape-circle));
|
|
121
|
+
--xh-action-bg-rest: var(--xh-message-feed-scroll-to-end-trigger-bg, var(--xh-material-frosted-bg));
|
|
122
|
+
--xh-action-bg-hover: var(--xh-message-feed-scroll-to-end-trigger-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
123
|
+
--xh-action-border-rest: var(--xh-message-feed-scroll-to-end-trigger-border, var(--xh-material-frosted-border));
|
|
124
|
+
--xh-action-border-hover: var(--xh-message-feed-scroll-to-end-trigger-border, var(--xh-material-frosted-border));
|
|
125
|
+
--xh-action-border-pressed: var(--xh-message-feed-scroll-to-end-trigger-border, var(--xh-material-frosted-border));
|
|
126
|
+
--xh-action-border-focus-visible: var(--xh-message-feed-scroll-to-end-trigger-border, var(--xh-material-frosted-border));
|
|
127
|
+
--xh-action-shadow-rest: var(--xh-_message-feed-scroll-to-end-trigger-shadow);
|
|
128
|
+
--xh-action-shadow-hover: var(--xh-_message-feed-scroll-to-end-trigger-shadow);
|
|
129
|
+
--xh-action-shadow-pressed: var(--xh-_message-feed-scroll-to-end-trigger-shadow);
|
|
130
|
+
--xh-action-fg-rest: var(--xh-message-feed-scroll-to-end-trigger-fg, var(--xh-material-frosted-fg));
|
|
131
|
+
--xh-icon-size: var(--xh-message-feed-icon-size, var(--xh-_action-profile-glyph-size));
|
|
132
|
+
|
|
133
|
+
position: absolute;
|
|
134
|
+
inset-block-end: var(--xh-message-feed-scroll-to-end-trigger-inset, var(--xh-space-4));
|
|
135
|
+
inset-inline-end: var(--xh-message-feed-scroll-to-end-trigger-inset, var(--xh-space-4));
|
|
136
|
+
-webkit-backdrop-filter: var(--xh-material-frosted-backdrop);
|
|
137
|
+
backdrop-filter: var(--xh-material-frosted-backdrop);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* 连接层收起按钮时写 hidden 属性,家族那条 display 会盖掉 UA 规则,这里补回 */
|
|
141
|
+
[data-scope='message-feed'][data-part='scroll-to-end-trigger'][hidden] {
|
|
142
|
+
display: none;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* 收起不卸载,冒出来时靠这条进场动画;不写 display,可见性归上面那条 [hidden] 管 */
|
|
146
|
+
[data-scope='message-feed'][data-part='scroll-to-end-trigger'][data-state='visible'] {
|
|
147
|
+
animation: xh-message-feed-button-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* 没写内容就由皮肤画一枚向下的字形;作者往按钮里塞了自己的图形,这条规则即不命中 */
|
|
151
|
+
[data-scope='message-feed'][data-part='scroll-to-end-trigger']:empty::before {
|
|
152
|
+
content: '';
|
|
153
|
+
display: inline-block;
|
|
154
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-sm));
|
|
155
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-sm));
|
|
156
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
157
|
+
background-color: currentColor;
|
|
158
|
+
-webkit-mask: var(--xh-glyph-mark-chevron-down) center / contain no-repeat;
|
|
159
|
+
mask: var(--xh-glyph-mark-chevron-down) center / contain no-repeat;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* 尺寸档只改消息之间的距离与内边距;宽松档把消息之间再放开一级,内边距不跟 */
|
|
163
|
+
[data-scope='message-feed'][data-part='root'][data-size='sm'] {
|
|
164
|
+
--xh-_message-feed-gap: var(--xh-space-2);
|
|
165
|
+
--xh-_message-feed-p: var(--xh-space-2);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
[data-scope='message-feed'][data-part='root'][data-size='md'] {
|
|
169
|
+
--xh-_message-feed-gap: var(--xh-space-4);
|
|
170
|
+
--xh-_message-feed-p: var(--xh-space-4);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
[data-scope='message-feed'][data-part='root'][data-size='lg'] {
|
|
174
|
+
--xh-_message-feed-gap: var(--xh-space-8);
|
|
175
|
+
--xh-_message-feed-p: var(--xh-space-6);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* 视觉隐藏的原子播报区:不能 display:none,那样读屏就取不到它了 */
|
|
179
|
+
[data-scope='message-feed'][data-part='live-region'] {
|
|
180
|
+
position: absolute;
|
|
181
|
+
inline-size: 1px;
|
|
182
|
+
block-size: 1px;
|
|
183
|
+
padding: 0;
|
|
184
|
+
margin: -1px;
|
|
185
|
+
border: 0;
|
|
186
|
+
overflow: hidden;
|
|
187
|
+
clip-path: inset(50%);
|
|
188
|
+
white-space: nowrap;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
@media print {
|
|
192
|
+
/* 打印:回到底部这颗钮只有在能滚的地方才成立,落到纸上是一颗按不动的按钮。 */
|
|
193
|
+
[data-scope='message-feed'][data-part='scroll-to-end-trigger'] {
|
|
194
|
+
display: none;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
package/css/navigation-menu.css
CHANGED
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
opacity: 0;
|
|
6
|
-
scale: var(--xh-motion-scale-enter);
|
|
7
|
-
}
|
|
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
|
+
*/
|
|
8
5
|
|
|
9
|
-
|
|
10
|
-
opacity: 1;
|
|
11
|
-
scale: 1;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
6
|
+
/* 定义 navigation menu 样式。 */
|
|
14
7
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
to {
|
|
22
|
-
opacity: 0;
|
|
23
|
-
scale: var(--xh-motion-scale-enter);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
8
|
+
/* 共享关键帧由 family/motion.css 提供,入口与面板里的链接都走 Collection Item 家族的 nav 语境;本皮肤 @import 它们,单独引入仍成立。
|
|
9
|
+
2px 指示线由本皮肤画两种:list 上的滑动 indicator 部件指的是「哪张面板开着」,指向当前页面的链接自画一条静态线 */
|
|
10
|
+
@import '../family/collection-item.css';
|
|
11
|
+
@import '../family/motion.css';
|
|
27
12
|
|
|
28
13
|
@layer xihan.components {
|
|
29
14
|
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
@@ -36,7 +21,11 @@
|
|
|
36
21
|
[data-scope='navigation-menu'][data-part='root'] {
|
|
37
22
|
/* 尺寸档只换这五个私有槽,trigger 与面板里的链接都从 root 继承它们,
|
|
38
23
|
换档不必给每个部件各写一条选择器。面板与共享外壳都是 root 的后代,一并继承。
|
|
39
|
-
trigger
|
|
24
|
+
trigger 的字号经家族桥接槽接回 root 这一档,不另立私有槽 */
|
|
25
|
+
/* 入口里的方向标记按档取尺,缺省 md,随 data-size 换档;面板里链接内的字形由家族随
|
|
26
|
+
data-xh-collection-size 下发(§6.5) */
|
|
27
|
+
--xh-icon-size: var(--xh-navigation-menu-icon-size, var(--xh-glyph-size-md));
|
|
28
|
+
|
|
40
29
|
--xh-_navigation-menu-font-size: var(--xh-control-font-md);
|
|
41
30
|
--xh-_navigation-menu-trigger-h: var(--xh-control-h-md);
|
|
42
31
|
--xh-_navigation-menu-trigger-px: var(--xh-control-px-md);
|
|
@@ -45,14 +34,11 @@
|
|
|
45
34
|
--xh-_navigation-menu-link-px: var(--xh-control-px-md);
|
|
46
35
|
--xh-_navigation-menu-link-font-size: var(--xh-control-font-md);
|
|
47
36
|
|
|
48
|
-
/*
|
|
37
|
+
/* 悬停、键盘锚点与展开着的入口同走中性灰轻档、不接语气槽:打开中不是选中,不用品牌色(§7.3) */
|
|
49
38
|
--xh-_navigation-menu-highlight-bg: var(--xh-bg-subtle);
|
|
50
39
|
|
|
51
|
-
/*
|
|
52
|
-
|
|
53
|
-
聚焦环不在其列,它恒是 --xh-ring-focus */
|
|
54
|
-
--xh-_navigation-menu-active-bg: var(--xh-_tone-subtle, var(--xh-bg-brand-subtle));
|
|
55
|
-
--xh-_navigation-menu-current-fg: var(--xh-_tone-fg, var(--xh-fg-brand));
|
|
40
|
+
/* 语气只落在指示条上;没写 data-tone 时 --xh-_tone 没被声明,退回品牌色。
|
|
41
|
+
当前链接的字色不随语气:导航当前页恒取 --xh-fg-brand-strong。聚焦环恒是 --xh-ring-focus */
|
|
56
42
|
--xh-_navigation-menu-accent: var(--xh-_tone, var(--xh-fg-brand));
|
|
57
43
|
|
|
58
44
|
position: relative;
|
|
@@ -64,6 +50,7 @@
|
|
|
64
50
|
/* 缺省档写在上面的基础规则里。链接的内边距不在控件内边距那把尺上(它比控件矮一档),
|
|
65
51
|
三档一律取空间尺,缺省档的取值原样保留 */
|
|
66
52
|
[data-scope='navigation-menu'][data-part='root'][data-size='sm'] {
|
|
53
|
+
--xh-icon-size: var(--xh-navigation-menu-icon-size, var(--xh-glyph-size-sm));
|
|
67
54
|
--xh-_navigation-menu-font-size: var(--xh-control-font-sm);
|
|
68
55
|
--xh-_navigation-menu-trigger-h: var(--xh-control-h-sm);
|
|
69
56
|
--xh-_navigation-menu-trigger-px: var(--xh-control-px-sm);
|
|
@@ -74,6 +61,7 @@
|
|
|
74
61
|
}
|
|
75
62
|
|
|
76
63
|
[data-scope='navigation-menu'][data-part='root'][data-size='lg'] {
|
|
64
|
+
--xh-icon-size: var(--xh-navigation-menu-icon-size, var(--xh-glyph-size-lg));
|
|
77
65
|
--xh-_navigation-menu-font-size: var(--xh-control-font-lg);
|
|
78
66
|
--xh-_navigation-menu-trigger-h: var(--xh-control-h-lg);
|
|
79
67
|
--xh-_navigation-menu-trigger-px: var(--xh-control-px-lg);
|
|
@@ -84,10 +72,13 @@
|
|
|
84
72
|
}
|
|
85
73
|
|
|
86
74
|
/* 指示条的定位参照系(它是 absolute,量出来的偏移就是相对这里的)。
|
|
87
|
-
ul 的项目符号与内外边距是 UA 给的,库里没有全局 preflight
|
|
75
|
+
ul 的项目符号与内外边距是 UA 给的,库里没有全局 preflight,只能在这儿自己抹平。
|
|
76
|
+
一行排不下就折行:入口宽度由文字决定,硬撑一行会把整条导航顶出容器;
|
|
77
|
+
这里不改成横向滚动——面板是绝对定位在各自那一项里的,列表一旦成为滚动容器就把面板裁掉了 */
|
|
88
78
|
[data-scope='navigation-menu'][data-part='list'] {
|
|
89
79
|
position: relative;
|
|
90
80
|
display: flex;
|
|
81
|
+
flex-wrap: wrap;
|
|
91
82
|
align-items: center;
|
|
92
83
|
gap: var(--xh-navigation-menu-gap, var(--xh-space-1));
|
|
93
84
|
margin: 0;
|
|
@@ -102,6 +93,7 @@
|
|
|
102
93
|
[data-scope='navigation-menu'][data-part='list'][data-orientation='vertical'] {
|
|
103
94
|
flex-direction: column;
|
|
104
95
|
align-items: stretch;
|
|
96
|
+
flex-wrap: nowrap;
|
|
105
97
|
}
|
|
106
98
|
|
|
107
99
|
/* 一项一个 li,面板就住在里面:给 relative 让面板贴着自己这一项落位 */
|
|
@@ -116,51 +108,37 @@
|
|
|
116
108
|
display: none;
|
|
117
109
|
}
|
|
118
110
|
|
|
111
|
+
/* 入口归 Collection Item 展开路径 / 打开中(nav 语境):几何、字号、面与字重全经家族桥接槽。静息 muted /
|
|
112
|
+
regular,悬停走白底承载 hover 100 + default 字;展开着的那一张由连接层投影 data-in-path,家族给与悬停同档的
|
|
113
|
+
中性面——打开中不是选中,不用品牌色、不加粗(横排的栏加粗会推挤相邻触发器),哪一张开着由指示条与转向的
|
|
114
|
+
箭头说明;按下 pressed 200 只换面不缩放(§9.2);禁用走 aria-disabled,家族给禁用字色与 not-allowed。
|
|
115
|
+
高度由 block-size 定,块向内边距归零。本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 background / color /
|
|
116
|
+
font-weight / cursor;也不写 font: inherit(reset.css 已抹平按钮 UA 字体,再写会把家族给的字号字重一并盖掉) */
|
|
119
117
|
[data-scope='navigation-menu'][data-part='trigger'] {
|
|
118
|
+
--xh-collection-block-padding: var(--xh-space-0);
|
|
119
|
+
--xh-collection-inline-padding: var(--xh-navigation-menu-trigger-px, var(--xh-_navigation-menu-trigger-px));
|
|
120
|
+
--xh-collection-radius: var(--xh-navigation-menu-trigger-radius, var(--xh-shape-control));
|
|
121
|
+
--xh-collection-font-size: var(--xh-navigation-menu-font-size, var(--xh-_navigation-menu-font-size));
|
|
122
|
+
--xh-collection-fg-rest: var(--xh-navigation-menu-trigger-fg, var(--xh-fg-muted));
|
|
123
|
+
--xh-collection-font-weight-rest: var(--xh-navigation-menu-trigger-font-weight, var(--xh-font-weight-regular));
|
|
124
|
+
--xh-collection-bg-hover: var(--xh-navigation-menu-trigger-bg-hover, var(--xh-_navigation-menu-highlight-bg));
|
|
125
|
+
--xh-collection-bg-open-path: var(--xh-navigation-menu-trigger-bg-active, var(--xh-_navigation-menu-highlight-bg));
|
|
126
|
+
--xh-collection-bg-pressed: var(--xh-navigation-menu-trigger-bg-pressed, var(--xh-bg-subtle-hover));
|
|
127
|
+
|
|
120
128
|
display: inline-flex;
|
|
121
129
|
align-items: center;
|
|
122
130
|
gap: var(--xh-navigation-menu-trigger-gap, var(--xh-_navigation-menu-trigger-gap));
|
|
123
131
|
block-size: var(--xh-navigation-menu-trigger-h, var(--xh-_navigation-menu-trigger-h));
|
|
124
|
-
padding-inline: var(--xh-navigation-menu-trigger-px, var(--xh-_navigation-menu-trigger-px));
|
|
125
132
|
border: 0;
|
|
126
|
-
|
|
127
|
-
background: transparent;
|
|
128
|
-
color: var(--xh-navigation-menu-trigger-fg, var(--xh-fg-muted));
|
|
129
|
-
font: inherit;
|
|
130
|
-
font-weight: var(--xh-navigation-menu-trigger-font-weight, var(--xh-text-label-weight));
|
|
133
|
+
/* 行高压回 none:家族基础块给条目写了 leading-normal,入口的高度只由 block-size 定 */
|
|
131
134
|
line-height: var(--xh-leading-none);
|
|
132
135
|
white-space: nowrap;
|
|
133
|
-
cursor: pointer;
|
|
134
|
-
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
[data-scope='navigation-menu'][data-part='trigger'][hidden] {
|
|
138
139
|
display: none;
|
|
139
140
|
}
|
|
140
141
|
|
|
141
|
-
[data-scope='navigation-menu'][data-part='trigger']:hover {
|
|
142
|
-
background: var(--xh-navigation-menu-trigger-bg-hover, var(--xh-_navigation-menu-highlight-bg));
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
[data-scope='navigation-menu'][data-part='trigger']:focus-visible {
|
|
146
|
-
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
147
|
-
outline-offset: var(--xh-ring-offset);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/* 展开着的那一张是打开路径,走品牌淡底强档:哪一张开着必须一眼看得出来。
|
|
151
|
-
不加粗:横排的栏加粗会推挤相邻触发器。
|
|
152
|
-
必须排在轻档之后:指针回到它身上时同特指度靠书写顺序压过轻档 */
|
|
153
|
-
[data-scope='navigation-menu'][data-part='trigger'][data-state='open'] {
|
|
154
|
-
background: var(--xh-navigation-menu-trigger-bg-active, var(--xh-_navigation-menu-active-bg));
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/* 集合条目用 data-disabled,不用 :disabled:它带的是 aria-disabled,
|
|
158
|
-
仍可聚焦、仍是方向键的起点 */
|
|
159
|
-
[data-scope='navigation-menu'][data-part='trigger'][data-disabled] {
|
|
160
|
-
color: var(--xh-fg-disabled);
|
|
161
|
-
cursor: not-allowed;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
142
|
/* 竖排:入口占满整项的宽度,面板才从入口右缘长出来 */
|
|
165
143
|
[data-scope='navigation-menu'][data-part='trigger'][data-orientation='vertical'] {
|
|
166
144
|
flex: 1;
|
|
@@ -169,16 +147,16 @@
|
|
|
169
147
|
/* 面板贴着自己那一项落位:横排从 trigger 底下长出来 */
|
|
170
148
|
[data-scope='navigation-menu'][data-part='content'] {
|
|
171
149
|
position: absolute;
|
|
172
|
-
z-index: var(--xh-navigation-menu-layer, var(--xh-layer-popover));
|
|
150
|
+
z-index: var(--xh-navigation-menu-layer, var(--xh-_layer, var(--xh-layer-popover)));
|
|
173
151
|
inset-block-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
174
152
|
inset-inline-start: 0;
|
|
175
153
|
display: flex;
|
|
176
154
|
flex-direction: column;
|
|
177
155
|
gap: var(--xh-navigation-menu-content-gap, var(--xh-space-1));
|
|
178
156
|
min-inline-size: var(--xh-navigation-menu-content-min-w, var(--xh-overlay-menu-min-w));
|
|
179
|
-
padding: var(--xh-navigation-menu-content-p, var(--xh-
|
|
157
|
+
padding: var(--xh-navigation-menu-content-p, var(--xh-surface-pad-xs));
|
|
180
158
|
border: var(--xh-stroke-thin) solid var(--xh-navigation-menu-content-border, var(--xh-border-default));
|
|
181
|
-
border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-
|
|
159
|
+
border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-overlay));
|
|
182
160
|
background: var(--xh-navigation-menu-content-bg, var(--xh-bg-surface));
|
|
183
161
|
box-shadow: var(--xh-navigation-menu-content-shadow, var(--xh-elevation-floating));
|
|
184
162
|
}
|
|
@@ -194,8 +172,10 @@
|
|
|
194
172
|
inset-inline-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
195
173
|
}
|
|
196
174
|
|
|
175
|
+
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
197
176
|
[data-scope='navigation-menu'][data-part='content'][data-state='open'] {
|
|
198
|
-
|
|
177
|
+
will-change: opacity, scale;
|
|
178
|
+
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
199
179
|
}
|
|
200
180
|
|
|
201
181
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来 */
|
|
@@ -213,14 +193,29 @@
|
|
|
213
193
|
box-shadow: none;
|
|
214
194
|
}
|
|
215
195
|
|
|
196
|
+
/* 面板里的链接归 Collection Item 导航当前(nav 语境):悬停 / 键盘高亮(白底承载 100)与按下(200)面由家族
|
|
197
|
+
按 :hover / :focus-visible / :active 给出,指向当前页面的那一条(data-current)取 strong 档品牌字色 +
|
|
198
|
+
medium 字重(§7.3),字色不随语气、不加下划线(下划线是"可点"的信号,它已经在这儿了);这里只把公开槽
|
|
199
|
+
映射到桥接槽。面板是实色 floating 面,常态字色取 --xh-fg-default 而非 nav 缺省的 muted。
|
|
200
|
+
布局保持 flex:链接是一行文字,不用家族网格。position: relative 是当前链接静态线的定位参照 */
|
|
216
201
|
[data-scope='navigation-menu'][data-part='link'] {
|
|
202
|
+
--xh-collection-block-padding: var(--xh-navigation-menu-link-py, var(--xh-_navigation-menu-link-py));
|
|
203
|
+
--xh-collection-inline-padding: var(--xh-navigation-menu-link-px, var(--xh-_navigation-menu-link-px));
|
|
204
|
+
--xh-collection-radius: var(--xh-navigation-menu-link-radius, var(--xh-shape-control));
|
|
205
|
+
--xh-collection-font-size: var(--xh-navigation-menu-link-font-size, var(--xh-_navigation-menu-link-font-size));
|
|
206
|
+
--xh-collection-fg-rest: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
207
|
+
--xh-collection-fg-hover: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
208
|
+
--xh-collection-fg-keyboard-highlight: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
209
|
+
--xh-collection-fg-pressed: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
210
|
+
--xh-collection-bg-hover: var(--xh-navigation-menu-link-bg-hover, var(--xh-_navigation-menu-highlight-bg));
|
|
211
|
+
--xh-collection-bg-keyboard-highlight: var(--xh-navigation-menu-link-bg-hover, var(--xh-_navigation-menu-highlight-bg));
|
|
212
|
+
--xh-collection-bg-pressed: var(--xh-navigation-menu-link-bg-pressed, var(--xh-bg-subtle-hover));
|
|
213
|
+
--xh-collection-fg-current: var(--xh-navigation-menu-link-fg-current, var(--xh-fg-brand-strong));
|
|
214
|
+
--xh-collection-font-weight-current: var(--xh-navigation-menu-link-font-weight-current, var(--xh-font-weight-medium));
|
|
215
|
+
|
|
216
|
+
position: relative;
|
|
217
217
|
display: flex;
|
|
218
218
|
align-items: center;
|
|
219
|
-
padding-block: var(--xh-navigation-menu-link-py, var(--xh-_navigation-menu-link-py));
|
|
220
|
-
padding-inline: var(--xh-navigation-menu-link-px, var(--xh-_navigation-menu-link-px));
|
|
221
|
-
border-radius: var(--xh-navigation-menu-link-radius, var(--xh-shape-control));
|
|
222
|
-
color: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
|
|
223
|
-
font-size: var(--xh-navigation-menu-link-font-size, var(--xh-_navigation-menu-link-font-size));
|
|
224
219
|
text-decoration: none;
|
|
225
220
|
}
|
|
226
221
|
|
|
@@ -228,23 +223,71 @@
|
|
|
228
223
|
display: none;
|
|
229
224
|
}
|
|
230
225
|
|
|
231
|
-
|
|
232
|
-
|
|
226
|
+
/* 入口里表示"底下还有一张面板"的标记,排在入口文字之后,展开时转向 */
|
|
227
|
+
[data-scope='navigation-menu'][data-part='trigger-indicator'] {
|
|
228
|
+
display: inline-flex;
|
|
229
|
+
flex: none;
|
|
230
|
+
align-items: center;
|
|
231
|
+
justify-content: center;
|
|
232
|
+
line-height: var(--xh-leading-none);
|
|
233
|
+
transition: rotate var(--xh-motion-duration-micro) var(--xh-motion-ease-enter-strong);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
[data-scope='navigation-menu'][data-part='trigger-indicator'][hidden] {
|
|
237
|
+
display: none;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这条规则即不命中 */
|
|
241
|
+
[data-scope='navigation-menu'][data-part='trigger-indicator']:empty::before {
|
|
242
|
+
content: '';
|
|
243
|
+
display: inline-block;
|
|
244
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
245
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
246
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
247
|
+
background-color: currentColor;
|
|
248
|
+
-webkit-mask: var(--xh-glyph-mark-chevron-down) center / contain no-repeat;
|
|
249
|
+
mask: var(--xh-glyph-mark-chevron-down) center / contain no-repeat;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
[data-scope='navigation-menu'][data-part='trigger-indicator'][data-state='open'] {
|
|
253
|
+
rotate: 180deg;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
[data-scope='navigation-menu'][data-part='trigger-indicator'][data-disabled] {
|
|
257
|
+
color: var(--xh-fg-disabled);
|
|
233
258
|
}
|
|
234
259
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
260
|
+
/* 指向当前页面的链接自画一条静态指示线(§7.3 导航当前页):与 Tabs line / Anchor 同一取法,作者不必为了
|
|
261
|
+
这条线多放一个部件。下面的 indicator 部件表达的是「哪张面板开着」而不是当前页,所以这条线不随部件收起,
|
|
262
|
+
两者各说各的:部件亮着时开着的入口下有一条、当前页链接上另有一条。
|
|
263
|
+
线画在当前链接的 ::after 上,以链接盒为定位参照(上面已给 position: relative),
|
|
264
|
+
厚度 / 颜色 / 圆角与 indicator 部件读同一组槽与缺省——作者改一处,部件与静态线一起改。不做动画。
|
|
265
|
+
缺省贴链接的行向起始缘(竖排的直达链接、面板里的链接都是一列,rtl 随逻辑属性镜像),主轴两端各退一格
|
|
266
|
+
--xh-space-1 避开链接的圆角,与家族 page 语境的起始侧指示条同一取法;横排 list 里的直达链接改贴底边 */
|
|
267
|
+
[data-scope='navigation-menu'][data-part='link'][data-current]::after {
|
|
268
|
+
content: '';
|
|
269
|
+
position: absolute;
|
|
270
|
+
inset-inline-start: 0;
|
|
271
|
+
inset-block: var(--xh-space-1);
|
|
272
|
+
inline-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
|
|
273
|
+
border-radius: var(--xh-navigation-menu-indicator-radius, var(--xh-shape-pill));
|
|
274
|
+
background: var(--xh-navigation-menu-indicator-color, var(--xh-_navigation-menu-accent));
|
|
275
|
+
pointer-events: none;
|
|
238
276
|
}
|
|
239
277
|
|
|
240
|
-
/*
|
|
241
|
-
[data-scope='navigation-menu'][data-part='
|
|
242
|
-
|
|
243
|
-
|
|
278
|
+
/* 横排 list 里的直达链接:贴链接的块向末端(底边),与部件同一侧 */
|
|
279
|
+
[data-scope='navigation-menu'][data-part='list'][data-orientation='horizontal']
|
|
280
|
+
> [data-scope='navigation-menu'][data-part='item']
|
|
281
|
+
> [data-scope='navigation-menu'][data-part='link'][data-current]::after {
|
|
282
|
+
inset-inline: var(--xh-space-1);
|
|
283
|
+
inset-block: auto 0;
|
|
284
|
+
inline-size: auto;
|
|
285
|
+
block-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
|
|
244
286
|
}
|
|
245
287
|
|
|
246
288
|
/* 主轴上的位置与长度由连接层写成内联样式(它量得到,样式表量不到);
|
|
247
|
-
|
|
289
|
+
这里只管交叉轴的贴边与粗细,以及长什么样。它指的是开着的面板:无面板开着时隐藏,
|
|
290
|
+
当前页由上面链接自画的静态线表达 */
|
|
248
291
|
[data-scope='navigation-menu'][data-part='indicator'] {
|
|
249
292
|
position: absolute;
|
|
250
293
|
display: block;
|
|
@@ -255,8 +298,8 @@
|
|
|
255
298
|
border-radius: var(--xh-navigation-menu-indicator-radius, var(--xh-shape-pill));
|
|
256
299
|
background: var(--xh-navigation-menu-indicator-color, var(--xh-_navigation-menu-accent));
|
|
257
300
|
transition:
|
|
258
|
-
inset-inline-start var(--xh-motion-duration-enter) var(--xh-motion-ease-
|
|
259
|
-
inline-size var(--xh-motion-duration-enter) var(--xh-motion-ease-
|
|
301
|
+
inset-inline-start var(--xh-motion-duration-enter) var(--xh-motion-ease-continuous),
|
|
302
|
+
inline-size var(--xh-motion-duration-enter) var(--xh-motion-ease-continuous);
|
|
260
303
|
}
|
|
261
304
|
|
|
262
305
|
[data-scope='navigation-menu'][data-part='indicator'][hidden] {
|
|
@@ -270,20 +313,22 @@
|
|
|
270
313
|
inline-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
|
|
271
314
|
block-size: auto;
|
|
272
315
|
transition:
|
|
273
|
-
inset-block-start var(--xh-motion-duration-enter) var(--xh-motion-ease-
|
|
274
|
-
block-size var(--xh-motion-duration-enter) var(--xh-motion-ease-
|
|
316
|
+
inset-block-start var(--xh-motion-duration-enter) var(--xh-motion-ease-continuous),
|
|
317
|
+
block-size var(--xh-motion-duration-enter) var(--xh-motion-ease-continuous);
|
|
275
318
|
}
|
|
276
319
|
|
|
277
|
-
/* 共享面板外壳:只管落位与统一的面板外观,里面装哪一份内容归 content
|
|
320
|
+
/* 共享面板外壳:只管落位与统一的面板外观,里面装哪一份内容归 content。
|
|
321
|
+
内衬自成一个槽:外壳装的是整份面板,缺省比 content 宽一档,
|
|
322
|
+
两处共用一个槽的话调了一处另一处跟着走,差值就再也调不开 */
|
|
278
323
|
[data-scope='navigation-menu'][data-part='viewport'] {
|
|
279
324
|
position: absolute;
|
|
280
|
-
z-index: var(--xh-navigation-menu-layer, var(--xh-layer-popover));
|
|
325
|
+
z-index: var(--xh-navigation-menu-layer, var(--xh-_layer, var(--xh-layer-popover)));
|
|
281
326
|
inset-block-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
282
327
|
inset-inline-start: 0;
|
|
283
328
|
display: block;
|
|
284
|
-
padding: var(--xh-navigation-menu-
|
|
329
|
+
padding: var(--xh-navigation-menu-viewport-p, var(--xh-space-2));
|
|
285
330
|
border: var(--xh-stroke-thin) solid var(--xh-navigation-menu-content-border, var(--xh-border-default));
|
|
286
|
-
border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-
|
|
331
|
+
border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-overlay));
|
|
287
332
|
background: var(--xh-navigation-menu-content-bg, var(--xh-bg-surface));
|
|
288
333
|
box-shadow: var(--xh-navigation-menu-content-shadow, var(--xh-elevation-floating));
|
|
289
334
|
}
|
|
@@ -297,4 +342,13 @@
|
|
|
297
342
|
inset-block-start: 0;
|
|
298
343
|
inset-inline-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
299
344
|
}
|
|
345
|
+
|
|
346
|
+
@media (forced-colors: active) {
|
|
347
|
+
/* 两条指示线画的都是一块纯底色,这一档里底色被统一换成 Canvas,线整根消失:
|
|
348
|
+
开着的入口只剩转向的箭头、当前页只剩字重。换成系统高亮色画回来 */
|
|
349
|
+
[data-scope='navigation-menu'][data-part='indicator'],
|
|
350
|
+
[data-scope='navigation-menu'][data-part='link'][data-current]::after {
|
|
351
|
+
background: Highlight;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
300
354
|
}
|