@xihan-ui/styles 1.1.0 → 2.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.
Files changed (171) hide show
  1. package/CHANGELOG.md +5055 -6
  2. package/README.md +22 -2
  3. package/component-tokens.d.ts +4197 -0
  4. package/component-tokens.js +2 -0
  5. package/components.tokens.json +79785 -0
  6. package/css/accordion.css +131 -75
  7. package/css/affix.css +16 -1
  8. package/css/alert.css +114 -67
  9. package/css/anchor.css +99 -27
  10. package/css/approval.css +461 -0
  11. package/css/avatar-group.css +14 -6
  12. package/css/avatar.css +33 -9
  13. package/css/back-top.css +103 -48
  14. package/css/badge.css +42 -14
  15. package/css/bar-code.css +62 -0
  16. package/css/breadcrumb.css +40 -21
  17. package/css/button-group.css +146 -24
  18. package/css/button.css +116 -99
  19. package/css/calendar-picker.css +448 -0
  20. package/css/calendar-range-picker.css +517 -0
  21. package/css/card.css +54 -77
  22. package/css/carousel.css +412 -68
  23. package/css/cascader.css +427 -246
  24. package/css/checkbox-group.css +225 -77
  25. package/css/checkbox.css +174 -37
  26. package/css/clipboard.css +266 -47
  27. package/css/code-view.css +279 -0
  28. package/css/collapsible.css +108 -63
  29. package/css/color-field.css +158 -0
  30. package/css/color-picker.css +170 -184
  31. package/css/color-slider.css +274 -0
  32. package/css/color-swatch-picker.css +243 -0
  33. package/css/color-swatch.css +35 -0
  34. package/css/combobox.css +265 -273
  35. package/css/command.css +397 -0
  36. package/css/context-menu.css +181 -108
  37. package/css/date-field.css +94 -121
  38. package/css/date-picker.css +484 -249
  39. package/css/date-range-picker.css +557 -0
  40. package/css/description.css +51 -0
  41. package/css/descriptions.css +133 -87
  42. package/css/dialog.css +245 -68
  43. package/css/diff-view.css +428 -0
  44. package/css/download-trigger.css +155 -46
  45. package/css/drawer.css +188 -111
  46. package/css/editable.css +172 -152
  47. package/css/empty-state.css +80 -11
  48. package/css/field-array.css +190 -0
  49. package/css/field.css +84 -31
  50. package/css/fieldset.css +51 -18
  51. package/css/file-upload.css +134 -36
  52. package/css/flex.css +20 -1
  53. package/css/float-button.css +238 -57
  54. package/css/floating-panel.css +171 -92
  55. package/css/focus.css +46 -0
  56. package/css/forced-colors.css +93 -0
  57. package/css/form.css +254 -77
  58. package/css/gradient-text.css +34 -10
  59. package/css/grid.css +516 -5
  60. package/css/heatmap.css +87 -29
  61. package/css/highlight.css +20 -5
  62. package/css/hover-card.css +95 -47
  63. package/css/icon-wrapper.css +15 -3
  64. package/css/icon.css +74 -8
  65. package/css/image-cropper.css +143 -29
  66. package/css/image-viewer.css +148 -89
  67. package/css/image.css +30 -1
  68. package/css/infinite-scroll.css +51 -1
  69. package/css/input-group.css +277 -0
  70. package/css/json-viewer.css +102 -45
  71. package/css/kbd.css +72 -0
  72. package/css/label.css +78 -0
  73. package/css/layers.css +5 -0
  74. package/css/layout.css +175 -31
  75. package/css/list.css +24 -3
  76. package/css/listbox.css +215 -65
  77. package/css/loading-bar.css +52 -3
  78. package/css/log.css +144 -9
  79. package/css/markdown-stream.css +149 -0
  80. package/css/marquee.css +27 -1
  81. package/css/masonry.css +7 -0
  82. package/css/matrix-code.css +67 -0
  83. package/css/mention.css +232 -152
  84. package/css/menu.css +178 -83
  85. package/css/menubar.css +202 -136
  86. package/css/message-feed.css +197 -0
  87. package/css/navigation-menu.css +142 -90
  88. package/css/notification.css +178 -100
  89. package/css/number-animation.css +7 -0
  90. package/css/number-field.css +120 -277
  91. package/css/overlay-arrow.css +12 -7
  92. package/css/page-header.css +99 -14
  93. package/css/pagination.css +173 -135
  94. package/css/password-input.css +222 -219
  95. package/css/pin-input.css +101 -67
  96. package/css/pointer.css +36 -0
  97. package/css/popconfirm.css +182 -93
  98. package/css/popover.css +119 -77
  99. package/css/progress.css +60 -12
  100. package/css/prompt-input.css +224 -0
  101. package/css/question-flow.css +513 -0
  102. package/css/radio-group.css +147 -30
  103. package/css/rating.css +193 -43
  104. package/css/reasoning.css +336 -0
  105. package/css/reset.css +84 -6
  106. package/css/resizable.css +143 -19
  107. package/css/scroll-area.css +68 -7
  108. package/css/scrollbar.css +47 -13
  109. package/css/segmented.css +94 -29
  110. package/css/select.css +286 -274
  111. package/css/separator.css +101 -1
  112. package/css/side-nav.css +131 -75
  113. package/css/signature-pad.css +74 -54
  114. package/css/skeleton.css +84 -11
  115. package/css/slider.css +132 -39
  116. package/css/sortable.css +123 -28
  117. package/css/spinner.css +126 -12
  118. package/css/splitter.css +29 -8
  119. package/css/statistic.css +55 -0
  120. package/css/steps.css +206 -72
  121. package/css/switch.css +268 -36
  122. package/css/table.css +429 -143
  123. package/css/tabs.css +475 -52
  124. package/css/tag-group.css +223 -0
  125. package/css/tag.css +118 -28
  126. package/css/tags-input.css +156 -274
  127. package/css/text-field.css +101 -249
  128. package/css/time-field.css +100 -128
  129. package/css/time-picker.css +321 -252
  130. package/css/time-range-picker.css +717 -0
  131. package/css/timeline.css +202 -68
  132. package/css/timer.css +56 -52
  133. package/css/timestamp.css +34 -0
  134. package/css/toast.css +373 -144
  135. package/css/toggle-group.css +309 -76
  136. package/css/toggle.css +116 -85
  137. package/css/tone.css +47 -0
  138. package/css/tool-call.css +421 -0
  139. package/css/toolbar.css +181 -33
  140. package/css/tooltip.css +105 -36
  141. package/css/tour.css +181 -152
  142. package/css/transfer.css +351 -138
  143. package/css/tree-select.css +321 -216
  144. package/css/tree.css +172 -122
  145. package/css/truncate.css +65 -0
  146. package/css/typography.css +228 -5
  147. package/css/undefined.css +10 -1
  148. package/css/virtualizer.css +9 -10
  149. package/css/visually-hidden.css +7 -0
  150. package/css/watermark.css +7 -0
  151. package/family/action-control.css +487 -0
  152. package/family/collection-item.css +770 -0
  153. package/family/field-chrome.css +298 -0
  154. package/family/motion.css +166 -0
  155. package/family/swatch.css +59 -0
  156. package/index.css +41658 -128
  157. package/index.unlayered.css +33356 -17825
  158. package/package.json +49 -17
  159. package/css/calendar.css +0 -367
  160. package/css/code-block.css +0 -91
  161. package/css/composer.css +0 -134
  162. package/css/countdown.css +0 -26
  163. package/css/dynamic-input.css +0 -220
  164. package/css/ellipsis.css +0 -52
  165. package/css/hotkeys.css +0 -90
  166. package/css/popselect.css +0 -391
  167. package/css/qr-code.css +0 -55
  168. package/css/result.css +0 -119
  169. package/css/space.css +0 -117
  170. package/css/thread.css +0 -120
  171. package/css/time.css +0 -25
@@ -0,0 +1,770 @@
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
+ /* AUTO-GENERATED by build/collection-item-recipe.mjs — do not edit. */
7
+ @layer xihan.components {
8
+ [data-xh-collection-item] {
9
+ --xh-_collection-block-padding: var(--xh-list-option-py-md);
10
+ --xh-_collection-inline-padding: var(--xh-control-px-md);
11
+ --xh-_collection-gap: var(--xh-control-gap-md);
12
+ --xh-_collection-font-size: var(--xh-control-font-md);
13
+ --xh-_collection-glyph-size: var(--xh-glyph-size-md);
14
+ --xh-_collection-bg: var(--xh-collection-bg-rest, transparent);
15
+ --xh-_collection-fg: var(--xh-collection-fg-rest, var(--xh-material-frosted-fg));
16
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-rest, var(--xh-material-frosted-fg-muted));
17
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-rest, var(--xh-fg-brand));
18
+ --xh-_collection-outline: var(--xh-collection-outline-rest, transparent);
19
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-rest, var(--xh-font-weight-regular));
20
+ --xh-_collection-cursor: var(--xh-collection-cursor-rest, pointer);
21
+ --xh-_collection-opacity: var(--xh-collection-opacity-rest, 1);
22
+
23
+ --xh-icon-size: var(--xh-collection-glyph-size, var(--xh-_collection-glyph-size));
24
+
25
+ display: grid;
26
+ grid-template-columns:
27
+ [prefix] max-content
28
+ [text] minmax(0, 1fr)
29
+ [shortcut] max-content
30
+ [suffix] max-content
31
+ [indicator] max-content;
32
+ /* 第 2 行是说明行。各皮肤为了省略号给 text 槽写了 overflow: hidden,它因此成为滚动容器、自动最小尺寸
33
+ 归 0;轨道尺寸算法里第 1 行的 base size 只有 0,处理跨两行的 prefix / indicator 等图标时会把图标高度
34
+ 平均分给两行,没有说明的条目也长出半个图标高的第 2 行,图标随之整体下沉。minmax(0, max-content)
35
+ 把第 2 行的最小尺寸钉在 0,它不再参与跨行项的最小高度分配,只在真有说明时按说明长;上限取 max-content
36
+ 而不是 auto,皮肤给条目定死 block-size 时多余空间也不会被说明行分走。 */
37
+ grid-template-rows: auto minmax(0, max-content);
38
+ align-items: center;
39
+ min-inline-size: 0;
40
+ padding-block: var(--xh-collection-block-padding, var(--xh-_collection-block-padding));
41
+ padding-inline: var(--xh-collection-inline-padding, var(--xh-_collection-inline-padding));
42
+ border-radius: var(--xh-collection-radius, var(--xh-shape-control));
43
+ outline: var(--xh-ring-width) solid var(--xh-_collection-outline);
44
+ outline-offset: var(--xh-ring-offset);
45
+ background-color: var(--xh-_collection-bg);
46
+ color: var(--xh-_collection-fg);
47
+ font-size: var(--xh-collection-font-size, var(--xh-_collection-font-size));
48
+ font-weight: var(--xh-_collection-font-weight);
49
+ line-height: var(--xh-leading-normal);
50
+ cursor: var(--xh-_collection-cursor);
51
+ opacity: var(--xh-_collection-opacity);
52
+ /* 描边色不进过渡,与 focus.css 的公共环同一节奏(即时出现、即时消失):
53
+ 描边在这里常驻 solid、静息透明,靠颜色表达键盘高亮。宿主页面常见的
54
+ button:focus:not(:focus-visible) { outline: none } 复位(VitePress 等)是无层规则,压过本份;
55
+ 指针落焦时它把简写复位成 none,outline-color 同时落到 currentColor;焦点离开、规则失效的那一刻
56
+ solid 立即回来,颜色若还在过渡就画成一圈实心边(上一条目闪边)。颜色即时切换后这条路径没有中间帧 */
57
+ transition:
58
+ background-color var(--xh-motion-duration-release) var(--xh-motion-ease-release),
59
+ color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
60
+ }
61
+
62
+ [data-xh-collection-item][data-xh-collection-size='sm'] {
63
+ --xh-_collection-block-padding: var(--xh-list-option-py-sm);
64
+ --xh-_collection-inline-padding: var(--xh-control-px-sm);
65
+ --xh-_collection-gap: var(--xh-control-gap-sm);
66
+ --xh-_collection-font-size: var(--xh-control-font-sm);
67
+ --xh-_collection-glyph-size: var(--xh-glyph-size-sm);
68
+ }
69
+
70
+ [data-xh-collection-item][data-xh-collection-size='md'] {
71
+ --xh-_collection-block-padding: var(--xh-list-option-py-md);
72
+ --xh-_collection-inline-padding: var(--xh-control-px-md);
73
+ --xh-_collection-gap: var(--xh-control-gap-md);
74
+ --xh-_collection-font-size: var(--xh-control-font-md);
75
+ --xh-_collection-glyph-size: var(--xh-glyph-size-md);
76
+ }
77
+
78
+ [data-xh-collection-item][data-xh-collection-size='lg'] {
79
+ --xh-_collection-block-padding: var(--xh-list-option-py-lg);
80
+ --xh-_collection-inline-padding: var(--xh-control-px-lg);
81
+ --xh-_collection-gap: var(--xh-control-gap-lg);
82
+ --xh-_collection-font-size: var(--xh-control-font-lg);
83
+ --xh-_collection-glyph-size: var(--xh-glyph-size-lg);
84
+ }
85
+
86
+ [data-xh-collection-slot='prefix'] {
87
+ grid-column: prefix;
88
+ grid-row: 1 / span 2;
89
+ margin-inline-end: var(--xh-collection-gap, var(--xh-_collection-gap));
90
+ }
91
+
92
+ [data-xh-collection-slot='text'] {
93
+ grid-column: text;
94
+ grid-row: 1;
95
+ min-inline-size: 0;
96
+ }
97
+
98
+ [data-xh-collection-slot='description'] {
99
+ grid-column: text;
100
+ grid-row: 2;
101
+ min-inline-size: 0;
102
+ color: var(--xh-_collection-description-fg);
103
+ font-size: var(--xh-collection-description-font-size, var(--xh-control-caption-md));
104
+ }
105
+
106
+ /* 快捷键提示:与说明同档同色的次级文字,只是落位在行尾而不是第 2 行。
107
+ 不换行——它是一串按键记号,折行会被读成两个组合。跟着 description 那支前景走,因此也不跟语气。 */
108
+ [data-xh-collection-slot='shortcut'] {
109
+ grid-column: shortcut;
110
+ color: var(--xh-_collection-description-fg);
111
+ font-size: var(--xh-collection-shortcut-font-size, var(--xh-control-caption-md));
112
+ white-space: nowrap;
113
+ }
114
+
115
+ [data-xh-collection-slot='suffix'] {
116
+ grid-column: suffix;
117
+ }
118
+
119
+ [data-xh-collection-slot='indicator'] {
120
+ grid-column: indicator;
121
+ color: var(--xh-_collection-indicator-fg);
122
+ visibility: hidden;
123
+ }
124
+
125
+ [data-xh-collection-slot='shortcut'],
126
+ [data-xh-collection-slot='suffix'],
127
+ [data-xh-collection-slot='indicator'] {
128
+ grid-row: 1 / span 2;
129
+ margin-inline-start: var(--xh-collection-gap, var(--xh-_collection-gap));
130
+ }
131
+
132
+ /* page 上下文:对号与 overlay 同在行尾的 indicator 列(trailing);当前项的起始侧指示条按配方开关(none),none 即只由行面与字色表达。 */
133
+ [data-xh-collection-item][data-xh-collection-context='page'] {
134
+ position: relative;
135
+ }
136
+
137
+ [data-xh-collection-item][data-in-path] {
138
+ --xh-_collection-bg: var(--xh-collection-bg-open-path, var(--xh-bg-subtle));
139
+ --xh-_collection-fg: var(--xh-collection-fg-open-path, var(--xh-material-frosted-fg));
140
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-open-path, var(--xh-material-frosted-fg-muted));
141
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-open-path, var(--xh-fg-brand));
142
+ --xh-_collection-outline: var(--xh-collection-outline-open-path, transparent);
143
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-open-path, var(--xh-font-weight-regular));
144
+ --xh-_collection-cursor: var(--xh-collection-cursor-open-path, pointer);
145
+ --xh-_collection-opacity: var(--xh-collection-opacity-open-path, 1);
146
+ }
147
+
148
+ [data-xh-collection-item]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
149
+ --xh-_collection-bg: var(--xh-collection-bg-hover, var(--xh-bg-subtle));
150
+ --xh-_collection-fg: var(--xh-collection-fg-hover, var(--xh-material-frosted-fg));
151
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-hover, var(--xh-material-frosted-fg-muted));
152
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-hover, var(--xh-fg-brand));
153
+ --xh-_collection-outline: var(--xh-collection-outline-hover, transparent);
154
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-hover, var(--xh-font-weight-regular));
155
+ --xh-_collection-cursor: var(--xh-collection-cursor-hover, pointer);
156
+ --xh-_collection-opacity: var(--xh-collection-opacity-hover, 1);
157
+ }
158
+
159
+ [data-xh-collection-item]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
160
+ --xh-_collection-bg: var(--xh-collection-bg-keyboard-highlight, var(--xh-bg-subtle));
161
+ --xh-_collection-fg: var(--xh-collection-fg-keyboard-highlight, var(--xh-material-frosted-fg));
162
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-keyboard-highlight, var(--xh-material-frosted-fg-muted));
163
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-keyboard-highlight, var(--xh-fg-brand));
164
+ --xh-_collection-outline: var(--xh-collection-outline-keyboard-highlight, var(--xh-ring-focus));
165
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-keyboard-highlight, var(--xh-font-weight-regular));
166
+ --xh-_collection-cursor: var(--xh-collection-cursor-keyboard-highlight, pointer);
167
+ --xh-_collection-opacity: var(--xh-collection-opacity-keyboard-highlight, 1);
168
+ }
169
+
170
+ /* 按下段:pressed 面与按下时长、曲线一起给出;排在 hover 与高亮之后,同特指度才不会被它们盖掉。 */
171
+ [data-xh-collection-item]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
172
+ --xh-_collection-bg: var(--xh-collection-bg-pressed, var(--xh-bg-subtle-hover));
173
+ --xh-_collection-fg: var(--xh-collection-fg-pressed, var(--xh-material-frosted-fg));
174
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-pressed, var(--xh-material-frosted-fg-muted));
175
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-pressed, var(--xh-fg-brand));
176
+ --xh-_collection-outline: var(--xh-collection-outline-pressed, transparent);
177
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-pressed, var(--xh-font-weight-regular));
178
+ --xh-_collection-cursor: var(--xh-collection-cursor-pressed, pointer);
179
+ --xh-_collection-opacity: var(--xh-collection-opacity-pressed, 1);
180
+
181
+ transition-duration: var(--xh-motion-duration-press);
182
+ transition-timing-function: var(--xh-motion-ease-press);
183
+ }
184
+
185
+ /* 语气段:条目自身动作的性质,静息只换字、hover / 高亮 / 按下换语气淡底,节奏与中性行一致。
186
+ 必须排在上下文段之前:语气与 selected / current 同特指度,靠源序让选中与当前压过语气。 */
187
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
188
+ --xh-_collection-bg: transparent;
189
+ --xh-_collection-fg: var(--xh-tone-fg);
190
+ }
191
+
192
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
193
+ --xh-_collection-bg: var(--xh-tone-subtle);
194
+ --xh-_collection-fg: var(--xh-tone-fg);
195
+ }
196
+
197
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
198
+ --xh-_collection-bg: var(--xh-tone-subtle);
199
+ --xh-_collection-fg: var(--xh-tone-fg);
200
+ }
201
+
202
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
203
+ --xh-_collection-bg: var(--xh-tone-subtle-hover);
204
+ --xh-_collection-fg: var(--xh-tone-fg);
205
+
206
+ transition-duration: var(--xh-motion-duration-press);
207
+ transition-timing-function: var(--xh-motion-ease-press);
208
+ }
209
+
210
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
211
+ --xh-_collection-bg: var(--xh-collection-bg-selected, transparent);
212
+ --xh-_collection-fg: var(--xh-collection-fg-selected, var(--xh-material-frosted-fg));
213
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected, var(--xh-material-frosted-fg-muted));
214
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected, var(--xh-fg-brand));
215
+ --xh-_collection-outline: var(--xh-collection-outline-selected, transparent);
216
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected, var(--xh-font-weight-regular));
217
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected, pointer);
218
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected, 1);
219
+ }
220
+
221
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
222
+ --xh-_collection-bg: var(--xh-collection-bg-selected-hover, var(--xh-bg-subtle));
223
+ --xh-_collection-fg: var(--xh-collection-fg-selected-hover, var(--xh-material-frosted-fg));
224
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected-hover, var(--xh-material-frosted-fg-muted));
225
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected-hover, var(--xh-fg-brand));
226
+ --xh-_collection-outline: var(--xh-collection-outline-selected-hover, transparent);
227
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected-hover, var(--xh-font-weight-regular));
228
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected-hover, pointer);
229
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected-hover, 1);
230
+ }
231
+
232
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
233
+ --xh-_collection-bg: var(--xh-collection-bg-selected-highlight, var(--xh-bg-subtle));
234
+ --xh-_collection-fg: var(--xh-collection-fg-selected-highlight, var(--xh-material-frosted-fg));
235
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected-highlight, var(--xh-material-frosted-fg-muted));
236
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected-highlight, var(--xh-fg-brand));
237
+ --xh-_collection-outline: var(--xh-collection-outline-selected-highlight, var(--xh-ring-focus));
238
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected-highlight, var(--xh-font-weight-regular));
239
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected-highlight, pointer);
240
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected-highlight, 1);
241
+ }
242
+
243
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
244
+ --xh-_collection-bg: var(--xh-collection-bg-selected-pressed, var(--xh-bg-subtle-hover));
245
+ --xh-_collection-fg: var(--xh-collection-fg-selected-pressed, var(--xh-material-frosted-fg));
246
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected-pressed, var(--xh-material-frosted-fg-muted));
247
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected-pressed, var(--xh-fg-brand));
248
+ --xh-_collection-outline: var(--xh-collection-outline-selected-pressed, transparent);
249
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected-pressed, var(--xh-font-weight-regular));
250
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected-pressed, pointer);
251
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected-pressed, 1);
252
+ }
253
+
254
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
255
+ --xh-_collection-bg: var(--xh-collection-bg-selected, var(--xh-bg-brand-subtle));
256
+ --xh-_collection-fg: var(--xh-collection-fg-selected, var(--xh-fg-on-brand-subtle));
257
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected, var(--xh-material-frosted-fg-muted));
258
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected, var(--xh-fg-on-brand-subtle));
259
+ --xh-_collection-outline: var(--xh-collection-outline-selected, transparent);
260
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected, var(--xh-font-weight-regular));
261
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected, pointer);
262
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected, 1);
263
+ }
264
+
265
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
266
+ --xh-_collection-bg: var(--xh-collection-bg-selected-hover, var(--xh-bg-brand-subtle-hover));
267
+ --xh-_collection-fg: var(--xh-collection-fg-selected-hover, var(--xh-fg-on-brand-subtle));
268
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected-hover, var(--xh-material-frosted-fg-muted));
269
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected-hover, var(--xh-fg-on-brand-subtle));
270
+ --xh-_collection-outline: var(--xh-collection-outline-selected-hover, transparent);
271
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected-hover, var(--xh-font-weight-regular));
272
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected-hover, pointer);
273
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected-hover, 1);
274
+ }
275
+
276
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
277
+ --xh-_collection-bg: var(--xh-collection-bg-selected-highlight, var(--xh-bg-brand-subtle-hover));
278
+ --xh-_collection-fg: var(--xh-collection-fg-selected-highlight, var(--xh-fg-on-brand-subtle));
279
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected-highlight, var(--xh-material-frosted-fg-muted));
280
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected-highlight, var(--xh-fg-on-brand-subtle));
281
+ --xh-_collection-outline: var(--xh-collection-outline-selected-highlight, var(--xh-ring-focus));
282
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected-highlight, var(--xh-font-weight-regular));
283
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected-highlight, pointer);
284
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected-highlight, 1);
285
+ }
286
+
287
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
288
+ --xh-_collection-bg: var(--xh-collection-bg-selected-pressed, var(--xh-bg-brand-subtle-active));
289
+ --xh-_collection-fg: var(--xh-collection-fg-selected-pressed, var(--xh-fg-on-brand-subtle));
290
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-selected-pressed, var(--xh-material-frosted-fg-muted));
291
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-selected-pressed, var(--xh-fg-on-brand-subtle));
292
+ --xh-_collection-outline: var(--xh-collection-outline-selected-pressed, transparent);
293
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-selected-pressed, var(--xh-font-weight-regular));
294
+ --xh-_collection-cursor: var(--xh-collection-cursor-selected-pressed, pointer);
295
+ --xh-_collection-opacity: var(--xh-collection-opacity-selected-pressed, 1);
296
+ }
297
+
298
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
299
+ --xh-_collection-bg: var(--xh-collection-bg-current, var(--xh-bg-brand-subtle));
300
+ --xh-_collection-fg: var(--xh-collection-fg-current, var(--xh-fg-on-brand-subtle));
301
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current, var(--xh-material-frosted-fg-muted));
302
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current, var(--xh-fg-on-brand-subtle));
303
+ --xh-_collection-outline: var(--xh-collection-outline-current, transparent);
304
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current, var(--xh-font-weight-regular));
305
+ --xh-_collection-cursor: var(--xh-collection-cursor-current, pointer);
306
+ --xh-_collection-opacity: var(--xh-collection-opacity-current, 1);
307
+ }
308
+
309
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
310
+ --xh-_collection-bg: var(--xh-collection-bg-current-hover, var(--xh-bg-brand-subtle-hover));
311
+ --xh-_collection-fg: var(--xh-collection-fg-current-hover, var(--xh-fg-on-brand-subtle));
312
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current-hover, var(--xh-material-frosted-fg-muted));
313
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current-hover, var(--xh-fg-on-brand-subtle));
314
+ --xh-_collection-outline: var(--xh-collection-outline-current-hover, transparent);
315
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current-hover, var(--xh-font-weight-regular));
316
+ --xh-_collection-cursor: var(--xh-collection-cursor-current-hover, pointer);
317
+ --xh-_collection-opacity: var(--xh-collection-opacity-current-hover, 1);
318
+ }
319
+
320
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
321
+ --xh-_collection-bg: var(--xh-collection-bg-current-highlight, var(--xh-bg-brand-subtle-hover));
322
+ --xh-_collection-fg: var(--xh-collection-fg-current-highlight, var(--xh-fg-on-brand-subtle));
323
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current-highlight, var(--xh-material-frosted-fg-muted));
324
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current-highlight, var(--xh-fg-on-brand-subtle));
325
+ --xh-_collection-outline: var(--xh-collection-outline-current-highlight, var(--xh-ring-focus));
326
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current-highlight, var(--xh-font-weight-regular));
327
+ --xh-_collection-cursor: var(--xh-collection-cursor-current-highlight, pointer);
328
+ --xh-_collection-opacity: var(--xh-collection-opacity-current-highlight, 1);
329
+ }
330
+
331
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
332
+ --xh-_collection-bg: var(--xh-collection-bg-current-pressed, var(--xh-bg-brand-subtle-active));
333
+ --xh-_collection-fg: var(--xh-collection-fg-current-pressed, var(--xh-fg-on-brand-subtle));
334
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current-pressed, var(--xh-material-frosted-fg-muted));
335
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current-pressed, var(--xh-fg-on-brand-subtle));
336
+ --xh-_collection-outline: var(--xh-collection-outline-current-pressed, transparent);
337
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current-pressed, var(--xh-font-weight-regular));
338
+ --xh-_collection-cursor: var(--xh-collection-cursor-current-pressed, pointer);
339
+ --xh-_collection-opacity: var(--xh-collection-opacity-current-pressed, 1);
340
+ }
341
+
342
+ [data-xh-collection-item][data-xh-collection-context='nav'] {
343
+ --xh-_collection-bg: var(--xh-collection-bg-rest, transparent);
344
+ --xh-_collection-fg: var(--xh-collection-fg-rest, var(--xh-fg-muted));
345
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-rest, var(--xh-fg-muted));
346
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-rest, var(--xh-fg-brand));
347
+ --xh-_collection-outline: var(--xh-collection-outline-rest, transparent);
348
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-rest, var(--xh-font-weight-regular));
349
+ --xh-_collection-cursor: var(--xh-collection-cursor-rest, pointer);
350
+ --xh-_collection-opacity: var(--xh-collection-opacity-rest, 1);
351
+ }
352
+
353
+ [data-xh-collection-item][data-xh-collection-context='nav']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
354
+ --xh-_collection-bg: var(--xh-collection-bg-hover, var(--xh-bg-subtle));
355
+ --xh-_collection-fg: var(--xh-collection-fg-hover, var(--xh-fg-default));
356
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-hover, var(--xh-fg-muted));
357
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-hover, var(--xh-fg-brand));
358
+ --xh-_collection-outline: var(--xh-collection-outline-hover, transparent);
359
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-hover, var(--xh-font-weight-regular));
360
+ --xh-_collection-cursor: var(--xh-collection-cursor-hover, pointer);
361
+ --xh-_collection-opacity: var(--xh-collection-opacity-hover, 1);
362
+ }
363
+
364
+ [data-xh-collection-item][data-xh-collection-context='nav']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
365
+ --xh-_collection-bg: var(--xh-collection-bg-keyboard-highlight, var(--xh-bg-subtle));
366
+ --xh-_collection-fg: var(--xh-collection-fg-keyboard-highlight, var(--xh-fg-default));
367
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-keyboard-highlight, var(--xh-fg-muted));
368
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-keyboard-highlight, var(--xh-fg-brand));
369
+ --xh-_collection-outline: var(--xh-collection-outline-keyboard-highlight, var(--xh-ring-focus));
370
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-keyboard-highlight, var(--xh-font-weight-regular));
371
+ --xh-_collection-cursor: var(--xh-collection-cursor-keyboard-highlight, pointer);
372
+ --xh-_collection-opacity: var(--xh-collection-opacity-keyboard-highlight, 1);
373
+ }
374
+
375
+ [data-xh-collection-item][data-xh-collection-context='nav']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
376
+ --xh-_collection-bg: var(--xh-collection-bg-pressed, var(--xh-bg-subtle-hover));
377
+ --xh-_collection-fg: var(--xh-collection-fg-pressed, var(--xh-fg-default));
378
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-pressed, var(--xh-fg-muted));
379
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-pressed, var(--xh-fg-brand));
380
+ --xh-_collection-outline: var(--xh-collection-outline-pressed, transparent);
381
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-pressed, var(--xh-font-weight-regular));
382
+ --xh-_collection-cursor: var(--xh-collection-cursor-pressed, pointer);
383
+ --xh-_collection-opacity: var(--xh-collection-opacity-pressed, 1);
384
+
385
+ transition-duration: var(--xh-motion-duration-press);
386
+ transition-timing-function: var(--xh-motion-ease-press);
387
+ }
388
+
389
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-in-path] {
390
+ --xh-_collection-bg: var(--xh-collection-bg-open-path, var(--xh-bg-subtle));
391
+ --xh-_collection-fg: var(--xh-collection-fg-open-path, var(--xh-fg-default));
392
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-open-path, var(--xh-fg-muted));
393
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-open-path, var(--xh-fg-brand));
394
+ --xh-_collection-outline: var(--xh-collection-outline-open-path, transparent);
395
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-open-path, var(--xh-font-weight-regular));
396
+ --xh-_collection-cursor: var(--xh-collection-cursor-open-path, pointer);
397
+ --xh-_collection-opacity: var(--xh-collection-opacity-open-path, 1);
398
+ }
399
+
400
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
401
+ --xh-_collection-bg: var(--xh-collection-bg-current, transparent);
402
+ --xh-_collection-fg: var(--xh-collection-fg-current, var(--xh-fg-brand-strong));
403
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current, var(--xh-fg-muted));
404
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current, var(--xh-fg-brand));
405
+ --xh-_collection-outline: var(--xh-collection-outline-current, transparent);
406
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current, var(--xh-font-weight-medium));
407
+ --xh-_collection-cursor: var(--xh-collection-cursor-current, pointer);
408
+ --xh-_collection-opacity: var(--xh-collection-opacity-current, 1);
409
+ }
410
+
411
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
412
+ --xh-_collection-bg: var(--xh-collection-bg-current-hover, var(--xh-bg-subtle));
413
+ --xh-_collection-fg: var(--xh-collection-fg-current-hover, var(--xh-fg-brand-strong));
414
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current-hover, var(--xh-fg-muted));
415
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current-hover, var(--xh-fg-brand));
416
+ --xh-_collection-outline: var(--xh-collection-outline-current-hover, transparent);
417
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current-hover, var(--xh-font-weight-medium));
418
+ --xh-_collection-cursor: var(--xh-collection-cursor-current-hover, pointer);
419
+ --xh-_collection-opacity: var(--xh-collection-opacity-current-hover, 1);
420
+ }
421
+
422
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
423
+ --xh-_collection-bg: var(--xh-collection-bg-current-highlight, var(--xh-bg-subtle));
424
+ --xh-_collection-fg: var(--xh-collection-fg-current-highlight, var(--xh-fg-brand-strong));
425
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current-highlight, var(--xh-fg-muted));
426
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current-highlight, var(--xh-fg-brand));
427
+ --xh-_collection-outline: var(--xh-collection-outline-current-highlight, var(--xh-ring-focus));
428
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current-highlight, var(--xh-font-weight-medium));
429
+ --xh-_collection-cursor: var(--xh-collection-cursor-current-highlight, pointer);
430
+ --xh-_collection-opacity: var(--xh-collection-opacity-current-highlight, 1);
431
+ }
432
+
433
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
434
+ --xh-_collection-bg: var(--xh-collection-bg-current-pressed, var(--xh-bg-subtle-hover));
435
+ --xh-_collection-fg: var(--xh-collection-fg-current-pressed, var(--xh-fg-brand-strong));
436
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-current-pressed, var(--xh-fg-muted));
437
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-current-pressed, var(--xh-fg-brand));
438
+ --xh-_collection-outline: var(--xh-collection-outline-current-pressed, transparent);
439
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-current-pressed, var(--xh-font-weight-medium));
440
+ --xh-_collection-cursor: var(--xh-collection-cursor-current-pressed, pointer);
441
+ --xh-_collection-opacity: var(--xh-collection-opacity-current-pressed, 1);
442
+ }
443
+
444
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current][data-xh-collection-terminal] {
445
+ --xh-_collection-bg: var(--xh-collection-bg-terminal, transparent);
446
+ --xh-_collection-fg: var(--xh-collection-fg-terminal, var(--xh-fg-default));
447
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-terminal, var(--xh-fg-muted));
448
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-terminal, var(--xh-fg-brand));
449
+ --xh-_collection-outline: var(--xh-collection-outline-terminal, transparent);
450
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-terminal, var(--xh-font-weight-medium));
451
+ --xh-_collection-cursor: var(--xh-collection-cursor-terminal, default);
452
+ --xh-_collection-opacity: var(--xh-collection-opacity-terminal, 1);
453
+
454
+ cursor: var(--xh-_collection-cursor);
455
+ }
456
+
457
+ [data-xh-collection-item]:is([aria-selected='true'], [data-state='checked']) [data-xh-collection-slot='indicator'] {
458
+ visibility: visible;
459
+ }
460
+
461
+ [data-xh-collection-item][data-state='checked'] {
462
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-checked, var(--xh-fg-brand));
463
+ }
464
+
465
+ [data-xh-collection-item][aria-disabled='true'] {
466
+ --xh-_collection-bg: var(--xh-collection-bg-disabled, transparent);
467
+ --xh-_collection-fg: var(--xh-collection-fg-disabled, var(--xh-fg-disabled));
468
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-disabled, var(--xh-fg-disabled));
469
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-disabled, var(--xh-fg-disabled));
470
+ --xh-_collection-outline: var(--xh-collection-outline-disabled, transparent);
471
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-disabled, var(--xh-font-weight-regular));
472
+ --xh-_collection-cursor: var(--xh-collection-cursor-disabled, not-allowed);
473
+ --xh-_collection-opacity: var(--xh-collection-opacity-disabled, 1);
474
+ }
475
+
476
+ [data-xh-collection-item][aria-busy='true'] {
477
+ --xh-_collection-bg: var(--xh-collection-bg-loading, transparent);
478
+ --xh-_collection-fg: var(--xh-collection-fg-loading, var(--xh-material-frosted-fg));
479
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-loading, var(--xh-material-frosted-fg-muted));
480
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-loading, var(--xh-fg-brand));
481
+ --xh-_collection-outline: var(--xh-collection-outline-loading, transparent);
482
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-loading, var(--xh-font-weight-regular));
483
+ --xh-_collection-cursor: var(--xh-collection-cursor-loading, progress);
484
+ --xh-_collection-opacity: var(--xh-collection-opacity-loading, 1);
485
+ }
486
+
487
+ [data-xh-collection-item][data-error] {
488
+ --xh-_collection-bg: var(--xh-collection-bg-error, color-mix(in oklab, var(--xh-fg-danger) 10%, transparent));
489
+ --xh-_collection-fg: var(--xh-collection-fg-error, var(--xh-fg-danger));
490
+ --xh-_collection-description-fg: var(--xh-collection-description-fg-error, var(--xh-fg-danger));
491
+ --xh-_collection-indicator-fg: var(--xh-collection-indicator-fg-error, var(--xh-fg-danger));
492
+ --xh-_collection-outline: var(--xh-collection-outline-error, var(--xh-fg-danger));
493
+ --xh-_collection-font-weight: var(--xh-collection-font-weight-error, var(--xh-font-weight-regular));
494
+ --xh-_collection-cursor: var(--xh-collection-cursor-error, pointer);
495
+ --xh-_collection-opacity: var(--xh-collection-opacity-error, 1);
496
+ }
497
+
498
+ [data-xh-collection-separator] {
499
+ block-size: var(--xh-stroke-thin);
500
+ margin-block: var(--xh-collection-separator-block-margin, var(--xh-space-1));
501
+ margin-inline: var(--xh-collection-separator-inline-margin, var(--xh-control-px-md));
502
+ border: 0;
503
+ background-color: var(--xh-collection-separator-color, var(--xh-material-frosted-separator));
504
+ }
505
+
506
+ [data-xh-collection-item][hidden],
507
+ [data-xh-collection-separator][hidden] {
508
+ display: none;
509
+ }
510
+
511
+ :where([data-motion='reduce']) [data-xh-collection-item] {
512
+ transition: none;
513
+ }
514
+
515
+ @media (prefers-reduced-motion: reduce) {
516
+ [data-xh-collection-item] {
517
+ transition: none;
518
+ }
519
+ }
520
+
521
+ @media (forced-colors: active) {
522
+ [data-xh-collection-item] {
523
+ --xh-_collection-bg: Canvas;
524
+ --xh-_collection-fg: CanvasText;
525
+ --xh-_collection-outline: transparent;
526
+ --xh-_collection-indicator-fg: ButtonText;
527
+ }
528
+
529
+ [data-xh-collection-item][data-in-path] {
530
+ --xh-_collection-bg: Canvas;
531
+ --xh-_collection-fg: CanvasText;
532
+ --xh-_collection-outline: Highlight;
533
+ --xh-_collection-indicator-fg: Highlight;
534
+ }
535
+
536
+ [data-xh-collection-item]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
537
+ --xh-_collection-bg: Highlight;
538
+ --xh-_collection-fg: HighlightText;
539
+ --xh-_collection-outline: transparent;
540
+ --xh-_collection-indicator-fg: HighlightText;
541
+ }
542
+
543
+ [data-xh-collection-item]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
544
+ --xh-_collection-bg: Canvas;
545
+ --xh-_collection-fg: CanvasText;
546
+ --xh-_collection-outline: Highlight;
547
+ --xh-_collection-indicator-fg: Highlight;
548
+ }
549
+
550
+ [data-xh-collection-item]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
551
+ --xh-_collection-bg: Highlight;
552
+ --xh-_collection-fg: HighlightText;
553
+ --xh-_collection-outline: transparent;
554
+ --xh-_collection-indicator-fg: HighlightText;
555
+ }
556
+
557
+ /* 语气在强制颜色下退出:逐态用系统色盖回家族缺省,只留图标与文案通道。
558
+ 语气段在媒体查询外的特指度比这里的基础态各高一级,必须逐条同形盖回,不能只写一条。 */
559
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
560
+ --xh-_collection-bg: Canvas;
561
+ --xh-_collection-fg: CanvasText;
562
+ --xh-_collection-outline: transparent;
563
+ --xh-_collection-indicator-fg: ButtonText;
564
+ }
565
+
566
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
567
+ --xh-_collection-bg: Highlight;
568
+ --xh-_collection-fg: HighlightText;
569
+ --xh-_collection-outline: transparent;
570
+ --xh-_collection-indicator-fg: HighlightText;
571
+ }
572
+
573
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
574
+ --xh-_collection-bg: Canvas;
575
+ --xh-_collection-fg: CanvasText;
576
+ --xh-_collection-outline: Highlight;
577
+ --xh-_collection-indicator-fg: Highlight;
578
+ }
579
+
580
+ [data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
581
+ --xh-_collection-bg: Highlight;
582
+ --xh-_collection-fg: HighlightText;
583
+ --xh-_collection-outline: transparent;
584
+ --xh-_collection-indicator-fg: HighlightText;
585
+ }
586
+
587
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
588
+ --xh-_collection-bg: Canvas;
589
+ --xh-_collection-fg: CanvasText;
590
+ --xh-_collection-outline: transparent;
591
+ --xh-_collection-indicator-fg: Highlight;
592
+ }
593
+
594
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
595
+ --xh-_collection-bg: Highlight;
596
+ --xh-_collection-fg: HighlightText;
597
+ --xh-_collection-outline: transparent;
598
+ --xh-_collection-indicator-fg: HighlightText;
599
+ }
600
+
601
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
602
+ --xh-_collection-bg: Canvas;
603
+ --xh-_collection-fg: CanvasText;
604
+ --xh-_collection-outline: Highlight;
605
+ --xh-_collection-indicator-fg: Highlight;
606
+ }
607
+
608
+ [data-xh-collection-item][data-xh-collection-context='overlay']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
609
+ --xh-_collection-bg: Highlight;
610
+ --xh-_collection-fg: HighlightText;
611
+ --xh-_collection-outline: transparent;
612
+ --xh-_collection-indicator-fg: HighlightText;
613
+ }
614
+
615
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
616
+ --xh-_collection-bg: Highlight;
617
+ --xh-_collection-fg: HighlightText;
618
+ --xh-_collection-outline: transparent;
619
+ --xh-_collection-indicator-fg: HighlightText;
620
+ }
621
+
622
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
623
+ --xh-_collection-bg: Highlight;
624
+ --xh-_collection-fg: HighlightText;
625
+ --xh-_collection-outline: transparent;
626
+ --xh-_collection-indicator-fg: HighlightText;
627
+ }
628
+
629
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
630
+ --xh-_collection-bg: Highlight;
631
+ --xh-_collection-fg: HighlightText;
632
+ --xh-_collection-outline: HighlightText;
633
+ --xh-_collection-indicator-fg: HighlightText;
634
+ }
635
+
636
+ [data-xh-collection-item][data-xh-collection-context='page']:is([aria-selected='true'], [data-selected]):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
637
+ --xh-_collection-bg: Highlight;
638
+ --xh-_collection-fg: HighlightText;
639
+ --xh-_collection-outline: transparent;
640
+ --xh-_collection-indicator-fg: HighlightText;
641
+ }
642
+
643
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
644
+ --xh-_collection-bg: Highlight;
645
+ --xh-_collection-fg: HighlightText;
646
+ --xh-_collection-outline: transparent;
647
+ --xh-_collection-indicator-fg: HighlightText;
648
+ }
649
+
650
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
651
+ --xh-_collection-bg: Highlight;
652
+ --xh-_collection-fg: HighlightText;
653
+ --xh-_collection-outline: transparent;
654
+ --xh-_collection-indicator-fg: HighlightText;
655
+ }
656
+
657
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
658
+ --xh-_collection-bg: Highlight;
659
+ --xh-_collection-fg: HighlightText;
660
+ --xh-_collection-outline: HighlightText;
661
+ --xh-_collection-indicator-fg: HighlightText;
662
+ }
663
+
664
+ [data-xh-collection-item][data-xh-collection-context='page'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
665
+ --xh-_collection-bg: Highlight;
666
+ --xh-_collection-fg: HighlightText;
667
+ --xh-_collection-outline: transparent;
668
+ --xh-_collection-indicator-fg: HighlightText;
669
+ }
670
+
671
+ [data-xh-collection-item][data-xh-collection-context='nav'] {
672
+ --xh-_collection-bg: Canvas;
673
+ --xh-_collection-fg: CanvasText;
674
+ --xh-_collection-outline: transparent;
675
+ --xh-_collection-indicator-fg: ButtonText;
676
+ }
677
+
678
+ [data-xh-collection-item][data-xh-collection-context='nav']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
679
+ --xh-_collection-bg: Highlight;
680
+ --xh-_collection-fg: HighlightText;
681
+ --xh-_collection-outline: transparent;
682
+ --xh-_collection-indicator-fg: HighlightText;
683
+ }
684
+
685
+ [data-xh-collection-item][data-xh-collection-context='nav']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
686
+ --xh-_collection-bg: Canvas;
687
+ --xh-_collection-fg: CanvasText;
688
+ --xh-_collection-outline: Highlight;
689
+ --xh-_collection-indicator-fg: Highlight;
690
+ }
691
+
692
+ [data-xh-collection-item][data-xh-collection-context='nav']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
693
+ --xh-_collection-bg: Highlight;
694
+ --xh-_collection-fg: HighlightText;
695
+ --xh-_collection-outline: transparent;
696
+ --xh-_collection-indicator-fg: HighlightText;
697
+ }
698
+
699
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-in-path] {
700
+ --xh-_collection-bg: Canvas;
701
+ --xh-_collection-fg: CanvasText;
702
+ --xh-_collection-outline: Highlight;
703
+ --xh-_collection-indicator-fg: Highlight;
704
+ }
705
+
706
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
707
+ --xh-_collection-bg: Canvas;
708
+ --xh-_collection-fg: CanvasText;
709
+ --xh-_collection-outline: transparent;
710
+ --xh-_collection-indicator-fg: ButtonText;
711
+ }
712
+
713
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
714
+ --xh-_collection-bg: Highlight;
715
+ --xh-_collection-fg: HighlightText;
716
+ --xh-_collection-outline: transparent;
717
+ --xh-_collection-indicator-fg: HighlightText;
718
+ }
719
+
720
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:focus-visible, [data-highlighted]) {
721
+ --xh-_collection-bg: Canvas;
722
+ --xh-_collection-fg: CanvasText;
723
+ --xh-_collection-outline: Highlight;
724
+ --xh-_collection-indicator-fg: Highlight;
725
+ }
726
+
727
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current]:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed]) {
728
+ --xh-_collection-bg: Highlight;
729
+ --xh-_collection-fg: HighlightText;
730
+ --xh-_collection-outline: transparent;
731
+ --xh-_collection-indicator-fg: HighlightText;
732
+ }
733
+
734
+ [data-xh-collection-item][data-xh-collection-context='nav'][data-current][data-xh-collection-terminal] {
735
+ --xh-_collection-bg: Canvas;
736
+ --xh-_collection-fg: CanvasText;
737
+ --xh-_collection-outline: transparent;
738
+ --xh-_collection-indicator-fg: ButtonText;
739
+ }
740
+
741
+ [data-xh-collection-item][data-state='checked'] {
742
+ --xh-_collection-indicator-fg: Highlight;
743
+ }
744
+
745
+ [data-xh-collection-item][aria-disabled='true'] {
746
+ --xh-_collection-bg: Canvas;
747
+ --xh-_collection-fg: GrayText;
748
+ --xh-_collection-outline: transparent;
749
+ --xh-_collection-indicator-fg: GrayText;
750
+ }
751
+
752
+ [data-xh-collection-item][aria-busy='true'] {
753
+ --xh-_collection-bg: Canvas;
754
+ --xh-_collection-fg: CanvasText;
755
+ --xh-_collection-outline: Highlight;
756
+ --xh-_collection-indicator-fg: Highlight;
757
+ }
758
+
759
+ [data-xh-collection-item][data-error] {
760
+ --xh-_collection-bg: Canvas;
761
+ --xh-_collection-fg: CanvasText;
762
+ --xh-_collection-outline: Highlight;
763
+ --xh-_collection-indicator-fg: Highlight;
764
+ }
765
+
766
+ [data-xh-collection-separator] {
767
+ background-color: CanvasText;
768
+ }
769
+ }
770
+ }