@xihan-ui/styles 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/CHANGELOG.md +470 -0
  2. package/component-tokens.d.ts +230 -60
  3. package/components.tokens.json +5156 -1557
  4. package/css/accordion.css +47 -20
  5. package/css/alert.css +16 -17
  6. package/css/anchor.css +2 -2
  7. package/css/approval.css +41 -17
  8. package/css/avatar-group.css +9 -12
  9. package/css/avatar.css +20 -18
  10. package/css/back-top.css +21 -7
  11. package/css/badge.css +5 -5
  12. package/css/breadcrumb.css +18 -16
  13. package/css/button-group.css +4 -6
  14. package/css/button.css +13 -12
  15. package/css/calendar-picker.css +178 -95
  16. package/css/calendar-range-picker.css +207 -122
  17. package/css/card.css +34 -6
  18. package/css/carousel.css +94 -46
  19. package/css/cartesian-chart.css +11 -11
  20. package/css/cascader.css +51 -39
  21. package/css/checkbox-group.css +9 -6
  22. package/css/checkbox.css +5 -4
  23. package/css/citation.css +9 -4
  24. package/css/clipboard.css +20 -4
  25. package/css/code-view.css +6 -6
  26. package/css/collapsible.css +29 -14
  27. package/css/color-field.css +4 -4
  28. package/css/color-picker.css +77 -23
  29. package/css/color-slider.css +10 -8
  30. package/css/color-swatch-picker.css +14 -9
  31. package/css/combobox.css +26 -14
  32. package/css/command.css +14 -9
  33. package/css/context-menu.css +10 -5
  34. package/css/date-field.css +12 -6
  35. package/css/date-picker.css +178 -109
  36. package/css/date-range-picker.css +199 -130
  37. package/css/description.css +10 -6
  38. package/css/descriptions.css +47 -19
  39. package/css/dialog.css +50 -35
  40. package/css/diff-view.css +8 -8
  41. package/css/drawer.css +75 -21
  42. package/css/editable.css +15 -41
  43. package/css/empty-state.css +21 -3
  44. package/css/field-array.css +5 -2
  45. package/css/field.css +17 -18
  46. package/css/fieldset.css +33 -13
  47. package/css/file-upload.css +66 -33
  48. package/css/float-button.css +60 -35
  49. package/css/floating-panel.css +1 -1
  50. package/css/form.css +30 -16
  51. package/css/graph-chart.css +2 -2
  52. package/css/grid-list.css +1 -1
  53. package/css/highlight.css +5 -5
  54. package/css/hover-card.css +19 -12
  55. package/css/image-viewer.css +77 -27
  56. package/css/image.css +13 -5
  57. package/css/infinite-scroll.css +8 -4
  58. package/css/input-group.css +74 -26
  59. package/css/kbd.css +1 -1
  60. package/css/label.css +27 -11
  61. package/css/layout.css +17 -10
  62. package/css/list.css +13 -9
  63. package/css/listbox.css +12 -7
  64. package/css/loading-bar.css +3 -0
  65. package/css/mention.css +11 -9
  66. package/css/menu.css +10 -5
  67. package/css/menubar.css +13 -8
  68. package/css/message-feed.css +1 -1
  69. package/css/navigation-menu.css +2 -2
  70. package/css/notification.css +132 -49
  71. package/css/number-animation.css +2 -2
  72. package/css/number-field.css +75 -52
  73. package/css/page-header.css +64 -27
  74. package/css/pagination.css +35 -38
  75. package/css/password-input.css +12 -68
  76. package/css/pin-input.css +18 -26
  77. package/css/popconfirm.css +23 -14
  78. package/css/popover.css +18 -12
  79. package/css/progress.css +14 -13
  80. package/css/prompt-input.css +3 -3
  81. package/css/question-flow.css +41 -15
  82. package/css/radar-chart.css +6 -6
  83. package/css/radio-group.css +120 -55
  84. package/css/rating.css +32 -15
  85. package/css/select.css +16 -12
  86. package/css/separator.css +24 -6
  87. package/css/side-nav.css +29 -24
  88. package/css/signature-pad.css +23 -9
  89. package/css/skeleton.css +12 -12
  90. package/css/slider.css +77 -48
  91. package/css/sortable.css +2 -2
  92. package/css/sparkline.css +8 -2
  93. package/css/spinner.css +40 -20
  94. package/css/statistic.css +14 -14
  95. package/css/steps.css +115 -84
  96. package/css/switch.css +9 -7
  97. package/css/table.css +29 -12
  98. package/css/tabs.css +35 -12
  99. package/css/tag-group.css +17 -6
  100. package/css/tag.css +54 -29
  101. package/css/tags-input.css +39 -20
  102. package/css/text-field.css +5 -5
  103. package/css/time-field.css +4 -4
  104. package/css/time-picker.css +150 -64
  105. package/css/time-range-picker.css +91 -62
  106. package/css/timeline.css +37 -20
  107. package/css/timer.css +3 -3
  108. package/css/toggle-group.css +4 -4
  109. package/css/tool-call.css +13 -11
  110. package/css/toolbar.css +6 -5
  111. package/css/tooltip.css +16 -17
  112. package/css/tour.css +14 -7
  113. package/css/transfer.css +22 -16
  114. package/css/tree-select.css +12 -12
  115. package/css/tree.css +26 -25
  116. package/css/typography.css +28 -25
  117. package/dist/css/accordion.css +296 -0
  118. package/dist/css/affix.css +47 -0
  119. package/dist/css/alert.css +246 -0
  120. package/dist/css/anchor.css +252 -0
  121. package/dist/css/approval.css +525 -0
  122. package/dist/css/avatar-group.css +96 -0
  123. package/dist/css/avatar.css +100 -0
  124. package/dist/css/back-top.css +175 -0
  125. package/dist/css/badge.css +205 -0
  126. package/dist/css/bar-code.css +62 -0
  127. package/dist/css/breadcrumb.css +232 -0
  128. package/dist/css/button-group.css +261 -0
  129. package/dist/css/button.css +216 -0
  130. package/dist/css/calendar-picker.css +550 -0
  131. package/dist/css/calendar-range-picker.css +639 -0
  132. package/dist/css/card.css +249 -0
  133. package/dist/css/carousel.css +726 -0
  134. package/dist/css/cartesian-chart.css +830 -0
  135. package/dist/css/cascader.css +973 -0
  136. package/dist/css/checkbox-group.css +361 -0
  137. package/dist/css/checkbox.css +258 -0
  138. package/dist/css/citation.css +475 -0
  139. package/dist/css/clipboard.css +331 -0
  140. package/dist/css/code-view.css +374 -0
  141. package/dist/css/collapsible.css +200 -0
  142. package/dist/css/color-field.css +176 -0
  143. package/dist/css/color-picker.css +649 -0
  144. package/dist/css/color-slider.css +283 -0
  145. package/dist/css/color-swatch-picker.css +250 -0
  146. package/dist/css/color-swatch.css +35 -0
  147. package/dist/css/combobox.css +578 -0
  148. package/dist/css/command.css +404 -0
  149. package/dist/css/context-menu.css +425 -0
  150. package/dist/css/date-field.css +317 -0
  151. package/dist/css/date-picker.css +931 -0
  152. package/dist/css/date-range-picker.css +949 -0
  153. package/dist/css/description.css +71 -0
  154. package/dist/css/descriptions.css +327 -0
  155. package/dist/css/dialog.css +470 -0
  156. package/dist/css/diff-view.css +513 -0
  157. package/dist/css/download-trigger.css +151 -0
  158. package/dist/css/drawer.css +606 -0
  159. package/dist/css/editable.css +269 -0
  160. package/dist/css/empty-state.css +181 -0
  161. package/dist/css/field-array.css +229 -0
  162. package/dist/css/field.css +165 -0
  163. package/dist/css/fieldset.css +122 -0
  164. package/dist/css/file-upload.css +462 -0
  165. package/dist/css/flex.css +441 -0
  166. package/dist/css/float-button.css +579 -0
  167. package/dist/css/floating-panel.css +429 -0
  168. package/dist/css/focus.css +46 -0
  169. package/dist/css/forced-colors.css +93 -0
  170. package/dist/css/form.css +407 -0
  171. package/dist/css/funnel-chart.css +106 -0
  172. package/dist/css/graph-chart.css +205 -0
  173. package/dist/css/grid-list.css +235 -0
  174. package/dist/css/grid.css +1201 -0
  175. package/dist/css/heatmap.css +552 -0
  176. package/dist/css/hierarchy-chart.css +298 -0
  177. package/dist/css/highlight.css +41 -0
  178. package/dist/css/hover-card.css +233 -0
  179. package/dist/css/icon.css +225 -0
  180. package/dist/css/image-cropper.css +373 -0
  181. package/dist/css/image-viewer.css +588 -0
  182. package/dist/css/image.css +106 -0
  183. package/dist/css/infinite-scroll.css +81 -0
  184. package/dist/css/input-group.css +323 -0
  185. package/dist/css/json-viewer.css +379 -0
  186. package/dist/css/kbd.css +72 -0
  187. package/dist/css/label.css +94 -0
  188. package/dist/css/layers.css +7 -0
  189. package/dist/css/layout.css +379 -0
  190. package/dist/css/liquid.css +106 -0
  191. package/dist/css/list.css +156 -0
  192. package/dist/css/listbox.css +395 -0
  193. package/dist/css/loading-bar.css +144 -0
  194. package/dist/css/log.css +306 -0
  195. package/dist/css/markdown-stream.css +149 -0
  196. package/dist/css/marquee.css +378 -0
  197. package/dist/css/masonry.css +70 -0
  198. package/dist/css/matrix-code.css +67 -0
  199. package/dist/css/mention.css +395 -0
  200. package/dist/css/menu.css +369 -0
  201. package/dist/css/menubar.css +461 -0
  202. package/dist/css/message-feed.css +318 -0
  203. package/dist/css/navigation-menu.css +513 -0
  204. package/dist/css/notification.css +865 -0
  205. package/dist/css/number-animation.css +44 -0
  206. package/dist/css/number-field.css +275 -0
  207. package/dist/css/overlay-arrow.css +56 -0
  208. package/dist/css/page-header.css +221 -0
  209. package/dist/css/pagination.css +447 -0
  210. package/dist/css/password-input.css +335 -0
  211. package/dist/css/pie-chart.css +247 -0
  212. package/dist/css/pin-input.css +191 -0
  213. package/dist/css/pointer.css +36 -0
  214. package/dist/css/popconfirm.css +329 -0
  215. package/dist/css/popover.css +285 -0
  216. package/dist/css/progress.css +502 -0
  217. package/dist/css/prompt-input.css +260 -0
  218. package/dist/css/question-flow.css +579 -0
  219. package/dist/css/radar-chart.css +233 -0
  220. package/dist/css/radio-group.css +663 -0
  221. package/dist/css/rating.css +311 -0
  222. package/dist/css/reasoning.css +343 -0
  223. package/dist/css/reset.css +117 -0
  224. package/dist/css/resizable.css +242 -0
  225. package/dist/css/sankey-chart.css +174 -0
  226. package/dist/css/scroll-area.css +240 -0
  227. package/dist/css/scrollbar.css +204 -0
  228. package/dist/css/select.css +616 -0
  229. package/dist/css/separator.css +140 -0
  230. package/dist/css/side-nav.css +481 -0
  231. package/dist/css/signature-pad.css +193 -0
  232. package/dist/css/skeleton.css +161 -0
  233. package/dist/css/slider.css +403 -0
  234. package/dist/css/sortable.css +228 -0
  235. package/dist/css/sparkline.css +170 -0
  236. package/dist/css/spinner.css +256 -0
  237. package/dist/css/splitter.css +159 -0
  238. package/dist/css/statistic.css +137 -0
  239. package/dist/css/steps.css +658 -0
  240. package/dist/css/switch.css +353 -0
  241. package/dist/css/table.css +1162 -0
  242. package/dist/css/tabs.css +967 -0
  243. package/dist/css/tag-group.css +258 -0
  244. package/dist/css/tag.css +335 -0
  245. package/dist/css/tags-input.css +341 -0
  246. package/dist/css/text-field.css +197 -0
  247. package/dist/css/time-field.css +277 -0
  248. package/dist/css/time-picker.css +793 -0
  249. package/dist/css/time-range-picker.css +775 -0
  250. package/dist/css/timeline.css +440 -0
  251. package/dist/css/timer.css +123 -0
  252. package/dist/css/timestamp.css +34 -0
  253. package/dist/css/toggle-group.css +424 -0
  254. package/dist/css/toggle.css +146 -0
  255. package/dist/css/tone.css +189 -0
  256. package/dist/css/tool-call.css +431 -0
  257. package/dist/css/toolbar.css +366 -0
  258. package/dist/css/tooltip.css +217 -0
  259. package/dist/css/tour.css +446 -0
  260. package/dist/css/transfer.css +644 -0
  261. package/dist/css/tree-select.css +878 -0
  262. package/dist/css/tree.css +734 -0
  263. package/dist/css/truncate.css +108 -0
  264. package/dist/css/typography.css +475 -0
  265. package/dist/css/undefined.css +58 -0
  266. package/dist/css/virtualizer.css +166 -0
  267. package/dist/css/visually-hidden.css +20 -0
  268. package/dist/css/watermark.css +82 -0
  269. package/dist/family/action-control.css +493 -0
  270. package/dist/family/chart.css +537 -0
  271. package/dist/family/check-mark.css +94 -0
  272. package/dist/family/choice-card.css +97 -0
  273. package/dist/family/collection-item.css +768 -0
  274. package/dist/family/field-chrome.css +296 -0
  275. package/dist/family/loading-ring.css +102 -0
  276. package/dist/family/material.css +72 -0
  277. package/dist/family/menu-choice.css +56 -0
  278. package/dist/family/motion.css +363 -0
  279. package/dist/family/swatch.css +59 -0
  280. package/dist/family/tag-list.css +65 -0
  281. package/family/action-control.css +33 -36
  282. package/family/chart.css +57 -0
  283. package/family/collection-item.css +12 -8
  284. package/family/field-chrome.css +28 -19
  285. package/family/loading-ring.css +20 -13
  286. package/family/swatch.css +4 -4
  287. package/family/tag-list.css +6 -0
  288. package/index.css +10349 -8756
  289. package/index.unlayered.css +10350 -8758
  290. package/package.json +165 -164
@@ -0,0 +1,513 @@
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
+ /* 定义 navigation menu 样式。 */
7
+
8
+ /* 共享关键帧由 family/motion.css 提供,入口与面板里的链接都走 Collection Item 家族的 nav 语境;本皮肤 @import 它们,单独引入仍成立。
9
+ 2px 指示线由本皮肤画两种:list 上的滑动 indicator 部件指的是「哪张面板开着」,指向当前页面的链接自画一条静态线 */
10
+ @import '../family/collection-item.css';
11
+ @import '../family/motion.css';
12
+
13
+ @layer xihan.components {
14
+ /* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
15
+ .xh-scope-navigation-menu {
16
+ --xh-navigation-menu-skin: 1;
17
+ }
18
+
19
+ /* 根节点是 nav 地标,不参与排版;给 relative 是为了让共享外壳(viewport)有个定位参照系。
20
+ 这里不给 display,UA 的 [hidden]{display:none} 就仍然压得住 */
21
+ .xh-scope-navigation-menu[data-part='root'] {
22
+ /* 尺寸档只换这五个私有槽,trigger 与面板里的链接都从 root 继承它们,
23
+ 换档不必给每个部件各写一条选择器。面板与共享外壳都是 root 的后代,一并继承。
24
+ trigger 的字号经家族桥接槽接回 root 这一档,不另立私有槽 */
25
+ /* 入口里的方向标记按档取尺,缺省 md,随 data-size 换档;面板里链接内的字形由家族随
26
+ data-xh-collection-size 下发 */
27
+ --xh-icon-size: var(--xh-navigation-menu-icon-size, var(--xh-glyph-size-md));
28
+
29
+ --xh-_navigation-menu-font-size: var(--xh-control-font-md);
30
+ --xh-_navigation-menu-trigger-h: var(--xh-control-h-md);
31
+ --xh-_navigation-menu-trigger-px: var(--xh-control-px-md);
32
+ --xh-_navigation-menu-trigger-gap: var(--xh-control-gap-md);
33
+ --xh-_navigation-menu-link-py: var(--xh-space-1_5);
34
+ --xh-_navigation-menu-link-px: var(--xh-control-px-md);
35
+ --xh-_navigation-menu-link-font-size: var(--xh-control-font-md);
36
+
37
+ /* 悬停、键盘锚点与展开着的入口同走中性灰轻档、不接语气槽:打开中不是选中,不用品牌色 */
38
+ --xh-_navigation-menu-highlight-bg: var(--xh-bg-subtle);
39
+
40
+ /* 语气只落在指示条上;没写 data-tone 时 --xh-_tone 没被声明,退回品牌色。
41
+ 当前链接的字色不随语气:导航当前页恒取 --xh-fg-brand。聚焦环恒是 --xh-ring-focus */
42
+ --xh-_navigation-menu-accent: var(--xh-_tone, var(--xh-fg-brand));
43
+
44
+ position: relative;
45
+ color: var(--xh-navigation-menu-fg, var(--xh-fg-default));
46
+ font-size: var(--xh-navigation-menu-font-size, var(--xh-_navigation-menu-font-size));
47
+ }
48
+
49
+ /* —— 尺寸 —— */
50
+ /* 缺省档写在上面的基础规则里。链接的内边距不在控件内边距那把尺上(它比控件矮一档),
51
+ 三档一律取空间尺,缺省档的取值原样保留 */
52
+ .xh-scope-navigation-menu[data-part='root'][data-size='sm'] {
53
+ --xh-icon-size: var(--xh-navigation-menu-icon-size, var(--xh-glyph-size-sm));
54
+ --xh-_navigation-menu-font-size: var(--xh-control-font-sm);
55
+ --xh-_navigation-menu-trigger-h: var(--xh-control-h-sm);
56
+ --xh-_navigation-menu-trigger-px: var(--xh-control-px-sm);
57
+ --xh-_navigation-menu-trigger-gap: var(--xh-control-gap-sm);
58
+ --xh-_navigation-menu-link-py: var(--xh-space-1);
59
+ --xh-_navigation-menu-link-px: var(--xh-control-px-sm);
60
+ --xh-_navigation-menu-link-font-size: var(--xh-control-font-sm);
61
+ }
62
+
63
+ .xh-scope-navigation-menu[data-part='root'][data-size='lg'] {
64
+ --xh-icon-size: var(--xh-navigation-menu-icon-size, var(--xh-glyph-size-lg));
65
+ --xh-_navigation-menu-font-size: var(--xh-control-font-lg);
66
+ --xh-_navigation-menu-trigger-h: var(--xh-control-h-lg);
67
+ --xh-_navigation-menu-trigger-px: var(--xh-control-px-lg);
68
+ --xh-_navigation-menu-trigger-gap: var(--xh-control-gap-lg);
69
+ --xh-_navigation-menu-link-py: var(--xh-space-2);
70
+ --xh-_navigation-menu-link-px: var(--xh-control-px-lg);
71
+ --xh-_navigation-menu-link-font-size: var(--xh-control-font-lg);
72
+ }
73
+
74
+ /* 指示条的定位参照系(它是 absolute,量出来的偏移就是相对这里的)。
75
+ ul 的项目符号与内外边距是 UA 给的,库里没有全局 preflight,只能在这儿自己抹平。
76
+ 一行排不下就折行:入口宽度由文字决定,硬撑一行会把整条导航顶出容器;
77
+ 这里不改成横向滚动——面板是绝对定位在各自那一项里的,列表一旦成为滚动容器就把面板裁掉了 */
78
+ .xh-scope-navigation-menu[data-part='list'] {
79
+ position: relative;
80
+ display: flex;
81
+ flex-wrap: wrap;
82
+ align-items: center;
83
+ gap: var(--xh-navigation-menu-gap, var(--xh-space-1));
84
+ margin: 0;
85
+ padding: 0;
86
+ list-style: none;
87
+ }
88
+
89
+ .xh-scope-navigation-menu[data-part='list'][hidden] {
90
+ display: none;
91
+ }
92
+
93
+ .xh-scope-navigation-menu[data-part='list'][data-orientation='vertical'] {
94
+ flex-direction: column;
95
+ align-items: stretch;
96
+ flex-wrap: nowrap;
97
+ }
98
+
99
+ /* 一项一个 li,面板就住在里面:给 relative 让面板贴着自己这一项落位 */
100
+ .xh-scope-navigation-menu[data-part='item'] {
101
+ position: relative;
102
+ display: flex;
103
+ /* 库里没有全局 preflight,列表项的外边距在这里自己抹平 */
104
+ margin: 0;
105
+ }
106
+
107
+ .xh-scope-navigation-menu[data-part='item'][hidden] {
108
+ display: none;
109
+ }
110
+
111
+ /* 入口归 Collection Item 展开路径 / 打开中(nav 语境):几何、字号、面与字重全经家族桥接槽。静息 muted /
112
+ regular,悬停走白底承载 hover 100 + default 字;展开着的那一张由连接层投影 data-in-path,家族给与悬停同档的
113
+ 中性面——打开中不是选中,不用品牌色、不加粗(横排的栏加粗会推挤相邻触发器),哪一张开着由指示条与转向的
114
+ 箭头说明;按下 pressed 200 只换面不缩放;禁用走 aria-disabled,家族给禁用字色与 not-allowed。
115
+ 高度由 block-size 定,块向内边距归零。本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 background / color /
116
+ font-weight / cursor;也不写 font: inherit(reset.css 已抹平按钮 UA 字体,再写会把家族给的字号字重一并盖掉) */
117
+ .xh-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
+
128
+ display: inline-flex;
129
+ align-items: center;
130
+ gap: var(--xh-navigation-menu-trigger-gap, var(--xh-_navigation-menu-trigger-gap));
131
+ block-size: var(--xh-navigation-menu-trigger-h, var(--xh-_navigation-menu-trigger-h));
132
+ border: 0;
133
+ /* 行高压回 none:家族基础块给条目写了 leading-normal,入口的高度只由 block-size 定 */
134
+ line-height: var(--xh-leading-none);
135
+ white-space: nowrap;
136
+ }
137
+
138
+ .xh-scope-navigation-menu[data-part='trigger'][hidden] {
139
+ display: none;
140
+ }
141
+
142
+ /* 竖排:入口占满整项的宽度,面板才从入口右缘长出来 */
143
+ .xh-scope-navigation-menu[data-part='trigger'][data-orientation='vertical'] {
144
+ flex: 1;
145
+ }
146
+
147
+ /* 面板贴着自己那一项落位:横排从 trigger 底下长出来。面板型浮层按内容的自然宽度排开:
148
+ 它绝对定位在入口那一项(一个窄 li)里,收缩适配的可用宽就是那一项的宽,不给宽度只剩最小宽、
149
+ 一行放得下的文字也折行;超过浮层最大宽才折 */
150
+ .xh-scope-navigation-menu[data-part='content'] {
151
+ position: absolute;
152
+ z-index: var(--xh-navigation-menu-layer, var(--xh-_layer, var(--xh-layer-popover)));
153
+ inset-block-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
154
+ inset-inline-start: 0;
155
+ display: flex;
156
+ flex-direction: column;
157
+ gap: var(--xh-navigation-menu-content-gap, var(--xh-space-1));
158
+ inline-size: max-content;
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));
161
+ padding: var(--xh-navigation-menu-content-p, var(--xh-surface-pad-xs));
162
+ border: var(--xh-stroke-thin) solid var(--xh-navigation-menu-content-border, var(--xh-border-default));
163
+ border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-overlay));
164
+ background: var(--xh-navigation-menu-content-bg, var(--xh-bg-surface));
165
+ box-shadow: var(--xh-navigation-menu-content-shadow, var(--xh-elevation-floating));
166
+ }
167
+
168
+ /* display 会盖掉 hidden 属性的 UA 规则,收起态显式让位 */
169
+ /* 这里刻意没有 [data-part='content'][hidden] { display: none },与 dialog 一致:
170
+ 收起态连接层会给 content 打 hidden,而上面那条 display 正是要盖掉 UA 的
171
+ [hidden]{display:none}——退场动画得先能播。真正的收起由宿主在退场结束后落成内联 display。 */
172
+
173
+ /* 竖排导航:面板改从侧边长出来 */
174
+ .xh-scope-navigation-menu[data-part='content'][data-orientation='vertical'] {
175
+ inset-block-start: 0;
176
+ inset-inline-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
177
+ }
178
+
179
+ /* 首开弹出、末收收回;在两张之间换张时两侧都带 data-instant,瞬时换张——与菜单栏同一条成规,
180
+ 交叉的进退场读起来就是闪烁。挂载时就展开着的那一项同样带它,直接呈现 */
181
+ .xh-scope-navigation-menu[data-part='content'][data-state='open']:not([data-instant]) {
182
+ animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
183
+ }
184
+
185
+ /* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来 */
186
+ .xh-scope-navigation-menu[data-part='content'][data-state='closed']:not([data-instant]) {
187
+ animation: xh-pop-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
188
+ }
189
+
190
+ /* 面板整批塞进共享外壳时,落位归外壳管,面板自己回到静态流里——
191
+ 不还原的话它会以外壳为参照再往下掉一整个身位 */
192
+ .xh-scope-navigation-menu[data-part='viewport'] .xh-scope-navigation-menu[data-part='content'] {
193
+ position: static;
194
+ border: 0;
195
+ border-radius: 0;
196
+ background: transparent;
197
+ box-shadow: none;
198
+ }
199
+
200
+ /* 外壳里的面板不自己弹出:弹出与收回归外壳,面板只随之淡入淡出,时长与外壳同档——
201
+ 末收时面板的淡出与外壳的收回同时播完,外壳等它播完才藏起 */
202
+ .xh-scope-navigation-menu[data-part='viewport'] .xh-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
+ .xh-scope-navigation-menu[data-part='viewport'] .xh-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
+
210
+ /* 面板里的链接归 Collection Item 导航当前(nav 语境):悬停 / 键盘高亮(白底承载 100)与按下(200)面由家族
211
+ 按 :hover / :focus-visible / :active 给出,指向当前页面的那一条(data-current)取 strong 档品牌字色 +
212
+ medium 字重,字色不随语气、不加下划线(下划线是"可点"的信号,它已经在这儿了);这里只把公开槽
213
+ 映射到桥接槽。面板是实色 floating 面,常态字色取 --xh-fg-default 而非 nav 缺省的 muted。
214
+ 布局保持 flex:链接是一行文字,不用家族网格。position: relative 是当前链接静态线的定位参照 */
215
+ .xh-scope-navigation-menu[data-part='link'] {
216
+ --xh-collection-block-padding: var(--xh-navigation-menu-link-py, var(--xh-_navigation-menu-link-py));
217
+ --xh-collection-inline-padding: var(--xh-navigation-menu-link-px, var(--xh-_navigation-menu-link-px));
218
+ --xh-collection-radius: var(--xh-navigation-menu-link-radius, var(--xh-shape-control));
219
+ --xh-collection-font-size: var(--xh-navigation-menu-link-font-size, var(--xh-_navigation-menu-link-font-size));
220
+ --xh-collection-fg-rest: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
221
+ --xh-collection-fg-hover: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
222
+ --xh-collection-fg-keyboard-highlight: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
223
+ --xh-collection-fg-pressed: var(--xh-navigation-menu-link-fg, var(--xh-fg-default));
224
+ --xh-collection-bg-hover: var(--xh-navigation-menu-link-bg-hover, var(--xh-_navigation-menu-highlight-bg));
225
+ --xh-collection-bg-keyboard-highlight: var(--xh-navigation-menu-link-bg-hover, var(--xh-_navigation-menu-highlight-bg));
226
+ --xh-collection-bg-pressed: var(--xh-navigation-menu-link-bg-pressed, var(--xh-bg-subtle-hover));
227
+ --xh-collection-fg-current: var(--xh-navigation-menu-link-fg-current, var(--xh-fg-brand));
228
+ --xh-collection-font-weight-current: var(--xh-navigation-menu-link-font-weight-current, var(--xh-font-weight-medium));
229
+
230
+ position: relative;
231
+ display: flex;
232
+ align-items: center;
233
+ text-decoration: none;
234
+ }
235
+
236
+ .xh-scope-navigation-menu[data-part='link'][hidden] {
237
+ display: none;
238
+ }
239
+
240
+ /* 面板里一枝子级的开关与链接同一种行,读链接那一组槽,两种行才等高、左缘才齐。
241
+ 展开不换面、不算打开中:由转向的箭头与露出的子级说明;按下只换面不缩放 */
242
+ .xh-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
+ .xh-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
+ .xh-scope-navigation-menu[data-part='branch-indicator'][data-state='open'] {
279
+ rotate: 90deg;
280
+ }
281
+
282
+ /* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这条规则即不命中 */
283
+ .xh-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
+ .xh-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
+
302
+ /* 入口里表示"底下还有一张面板"的标记,排在入口文字之后,展开时转向 */
303
+ .xh-scope-navigation-menu[data-part='trigger-indicator'] {
304
+ display: inline-flex;
305
+ flex: none;
306
+ align-items: center;
307
+ justify-content: center;
308
+ line-height: var(--xh-leading-none);
309
+ transition: rotate var(--xh-motion-duration-nudge) var(--xh-motion-ease-enter-strong);
310
+ }
311
+
312
+ .xh-scope-navigation-menu[data-part='trigger-indicator'][hidden] {
313
+ display: none;
314
+ }
315
+
316
+ /* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这条规则即不命中 */
317
+ .xh-scope-navigation-menu[data-part='trigger-indicator']:empty::before {
318
+ content: '';
319
+ display: inline-block;
320
+ inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
321
+ block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
322
+ vertical-align: var(--xh-glyph-baseline-shift);
323
+ background-color: currentColor;
324
+ -webkit-mask: var(--xh-glyph-mark-chevron-down) center / contain no-repeat;
325
+ mask: var(--xh-glyph-mark-chevron-down) center / contain no-repeat;
326
+ }
327
+
328
+ .xh-scope-navigation-menu[data-part='trigger-indicator'][data-state='open'] {
329
+ rotate: 180deg;
330
+ }
331
+
332
+ .xh-scope-navigation-menu[data-part='trigger-indicator'][data-disabled] {
333
+ color: var(--xh-fg-disabled);
334
+ }
335
+
336
+ /* 指向当前页面的链接自画一条静态指示线(导航当前页):与 Tabs line / Anchor 同一取法,作者不必为了
337
+ 这条线多放一个部件。下面的 indicator 部件表达的是「哪张面板开着」而不是当前页,所以这条线不随部件收起,
338
+ 两者各说各的:部件亮着时开着的入口下有一条、当前页链接上另有一条。
339
+ 线画在当前链接的 ::after 上,以链接盒为定位参照(上面已给 position: relative),
340
+ 厚度 / 颜色 / 圆角与 indicator 部件读同一组槽与缺省——作者改一处,部件与静态线一起改。不做动画。
341
+ 缺省贴链接的行向起始缘(竖排的直达链接、面板里的链接都是一列,rtl 随逻辑属性镜像),主轴两端各退一格
342
+ --xh-space-1 避开链接的圆角,与家族 page 语境的起始侧指示条同一取法;横排 list 里的直达链接改贴底边 */
343
+ .xh-scope-navigation-menu[data-part='link'][data-current]::after {
344
+ content: '';
345
+ position: absolute;
346
+ inset-inline-start: 0;
347
+ inset-block: var(--xh-space-1);
348
+ inline-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
349
+ border-radius: var(--xh-navigation-menu-indicator-radius, var(--xh-shape-pill));
350
+ background: var(--xh-navigation-menu-indicator-color, var(--xh-_navigation-menu-accent));
351
+ pointer-events: none;
352
+ }
353
+
354
+ /* 横排 list 里的直达链接:贴链接的块向末端(底边),与部件同一侧 */
355
+ .xh-scope-navigation-menu[data-part='list'][data-orientation='horizontal']
356
+ > .xh-scope-navigation-menu[data-part='item']
357
+ > .xh-scope-navigation-menu[data-part='link'][data-current]::after {
358
+ inset-inline: var(--xh-space-1);
359
+ inset-block: auto 0;
360
+ inline-size: auto;
361
+ block-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
362
+ }
363
+
364
+ /* 展开入口的四个几何量由机器量好、连接层写成私有槽 --xh-_navigation-menu-indicator-x / -y / -w / -h
365
+ (它量得到,样式表量不到);这里按排布取主轴那两支,落点交给 translate(只走合成),
366
+ 另管交叉轴的贴边与粗细,以及长什么样。它指的是开着的面板:无面板开着时隐藏,
367
+ 当前页由上面链接自画的静态线表达 */
368
+ .xh-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
+
376
+ position: absolute;
377
+ display: block;
378
+ /* 指示条也是列表项,宿主给 li 的外边距会把绝对定位的它推离入口 */
379
+ margin: 0;
380
+ inset-inline-start: 0;
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);
383
+ block-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
384
+ border-radius: var(--xh-navigation-menu-indicator-radius, var(--xh-shape-pill));
385
+ background: var(--xh-navigation-menu-indicator-color, var(--xh-_navigation-menu-accent));
386
+ translate: var(--xh-_navigation-menu-indicator-x) 0;
387
+ transition:
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
+ .xh-scope-navigation-menu[data-part='indicator']:dir(rtl) {
394
+ translate: calc(-1 * var(--xh-_navigation-menu-indicator-x)) 0;
395
+ }
396
+
397
+ .xh-scope-navigation-menu[data-part='indicator'][hidden] {
398
+ display: none;
399
+ }
400
+
401
+ /* 竖排:指示条改贴在起始缘,交叉轴换成内联轴 */
402
+ .xh-scope-navigation-menu[data-part='indicator'][data-orientation='vertical'] {
403
+ inset-block-start: 0;
404
+ inset-block-end: auto;
405
+ inset-inline-start: 0;
406
+ inline-size: var(--xh-navigation-menu-indicator-thickness, var(--xh-stroke-thick));
407
+ block-size: var(--xh-_navigation-menu-indicator-h);
408
+ translate: 0 var(--xh-_navigation-menu-indicator-y);
409
+ transition:
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
+ .xh-scope-navigation-menu[data-part='indicator'][data-instant] {
417
+ transition: none;
418
+ }
419
+
420
+ /* 液态档:两沿由弹簧逐帧推着走(连接层每一帧写好盒子),几何量不再补过渡;
421
+ 被拉长时在另一个方向上压扁(横排缺省压块向,竖排压行向),表达体积守恒,拉长到目标的两倍时压到 --xh-motion-scale-squash */
422
+ :where([data-material='liquid']) .xh-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']) .xh-scope-navigation-menu[data-part='indicator'][data-orientation='vertical'] {
430
+ scale: var(--xh-_navigation-menu-indicator-squash) 1;
431
+ transition: none;
432
+ }
433
+
434
+ /* 共享面板外壳:只管落位与统一的面板外观,里面装哪一份内容归 content。
435
+ 内衬自成一个槽:外壳装的是整份面板,缺省比 content 宽一档,
436
+ 两处共用一个槽的话调了一处另一处跟着走,差值就再也调不开 */
437
+ .xh-scope-navigation-menu[data-part='viewport'] {
438
+ position: absolute;
439
+ z-index: var(--xh-navigation-menu-layer, var(--xh-_layer, var(--xh-layer-popover)));
440
+ inset-block-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
441
+ inset-inline-start: 0;
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));
446
+ padding: var(--xh-navigation-menu-viewport-p, var(--xh-space-2));
447
+ border: var(--xh-stroke-thin) solid var(--xh-navigation-menu-content-border, var(--xh-border-default));
448
+ border-radius: var(--xh-navigation-menu-content-radius, var(--xh-shape-overlay));
449
+ background: var(--xh-navigation-menu-content-bg, var(--xh-bg-surface));
450
+ box-shadow: var(--xh-navigation-menu-content-shadow, var(--xh-elevation-floating));
451
+ }
452
+
453
+ .xh-scope-navigation-menu[data-part='viewport'][hidden] {
454
+ display: none;
455
+ }
456
+
457
+ /* 共享外壳是面板那一面:首开弹出、末收收回,换张时外壳留在原处、高度即刻换成新的一张。
458
+ 挂载时就展开着的那一段(data-instant)属于首帧,直接呈现 */
459
+ .xh-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
+ .xh-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
+
467
+ /* 竖排导航:共享外壳跟着面板改从侧边长出来 */
468
+ .xh-scope-navigation-menu[data-part='viewport'][data-orientation='vertical'] {
469
+ inset-block-start: 0;
470
+ inset-inline-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
471
+ }
472
+
473
+ /* 声明过 display 就盖掉了 UA 的 [hidden]{display:none},兜底排在这几个部件所有 display 声明之后 */
474
+ .xh-scope-navigation-menu[data-part='branch-trigger'][hidden],
475
+ .xh-scope-navigation-menu[data-part='branch-indicator'][hidden],
476
+ .xh-scope-navigation-menu[data-part='branch-content'][hidden] {
477
+ display: none;
478
+ }
479
+
480
+ @media (forced-colors: active) {
481
+ /* 两条指示线画的都是一块纯底色,这一档里底色被统一换成 Canvas,线整根消失:
482
+ 开着的入口只剩转向的箭头、当前页只剩字重。换成系统高亮色画回来 */
483
+ .xh-scope-navigation-menu[data-part='indicator'],
484
+ .xh-scope-navigation-menu[data-part='link'][data-current]::after {
485
+ background: Highlight;
486
+ }
487
+
488
+ /* 顶层入口与子级开关的箭头都是 mask 挖出来的一块底色,这一档里底色换成 Canvas、箭头跟着消失,
489
+ 开合只剩读屏听得到。直接写系统前景(不能取 currentColor:退出强制色的伪元素读到的是被系统换掉之前的作者色):
490
+ 子级开关取按钮前景 ButtonText,顶层入口落在条目面上取 CanvasText;
491
+ 两者都是集合条目,按下与没被高亮时的悬停,家族把条目涂成 Highlight,箭头跟着换 HighlightText;
492
+ 禁用的取 GrayText,与公共补救层给禁用行的字色一致 */
493
+ .xh-scope-navigation-menu[data-part='branch-indicator']:empty::before {
494
+ background-color: ButtonText;
495
+ forced-color-adjust: none;
496
+ }
497
+
498
+ .xh-scope-navigation-menu[data-part='trigger-indicator']:empty::before {
499
+ background-color: CanvasText;
500
+ forced-color-adjust: none;
501
+ }
502
+
503
+ .xh-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])) .xh-scope-navigation-menu[data-part='branch-indicator']:empty::before,
504
+ .xh-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])) .xh-scope-navigation-menu[data-part='trigger-indicator']:empty::before {
505
+ background-color: HighlightText;
506
+ }
507
+
508
+ .xh-scope-navigation-menu[data-part='branch-trigger'][data-disabled] .xh-scope-navigation-menu[data-part='branch-indicator']:empty::before,
509
+ .xh-scope-navigation-menu[data-part='trigger']:is([aria-disabled='true'], [data-disabled]) .xh-scope-navigation-menu[data-part='trigger-indicator']:empty::before {
510
+ background-color: GrayText;
511
+ }
512
+ }
513
+ }