@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.
- package/CHANGELOG.md +470 -0
- package/component-tokens.d.ts +230 -60
- package/components.tokens.json +5156 -1557
- package/css/accordion.css +47 -20
- package/css/alert.css +16 -17
- package/css/anchor.css +2 -2
- package/css/approval.css +41 -17
- package/css/avatar-group.css +9 -12
- package/css/avatar.css +20 -18
- package/css/back-top.css +21 -7
- package/css/badge.css +5 -5
- package/css/breadcrumb.css +18 -16
- package/css/button-group.css +4 -6
- package/css/button.css +13 -12
- package/css/calendar-picker.css +178 -95
- package/css/calendar-range-picker.css +207 -122
- package/css/card.css +34 -6
- package/css/carousel.css +94 -46
- package/css/cartesian-chart.css +11 -11
- package/css/cascader.css +51 -39
- package/css/checkbox-group.css +9 -6
- package/css/checkbox.css +5 -4
- package/css/citation.css +9 -4
- package/css/clipboard.css +20 -4
- package/css/code-view.css +6 -6
- package/css/collapsible.css +29 -14
- package/css/color-field.css +4 -4
- package/css/color-picker.css +77 -23
- package/css/color-slider.css +10 -8
- package/css/color-swatch-picker.css +14 -9
- package/css/combobox.css +26 -14
- package/css/command.css +14 -9
- package/css/context-menu.css +10 -5
- package/css/date-field.css +12 -6
- package/css/date-picker.css +178 -109
- package/css/date-range-picker.css +199 -130
- package/css/description.css +10 -6
- package/css/descriptions.css +47 -19
- package/css/dialog.css +50 -35
- package/css/diff-view.css +8 -8
- package/css/drawer.css +75 -21
- package/css/editable.css +15 -41
- package/css/empty-state.css +21 -3
- package/css/field-array.css +5 -2
- package/css/field.css +17 -18
- package/css/fieldset.css +33 -13
- package/css/file-upload.css +66 -33
- package/css/float-button.css +60 -35
- package/css/floating-panel.css +1 -1
- package/css/form.css +30 -16
- package/css/graph-chart.css +2 -2
- package/css/grid-list.css +1 -1
- package/css/highlight.css +5 -5
- package/css/hover-card.css +19 -12
- package/css/image-viewer.css +77 -27
- package/css/image.css +13 -5
- package/css/infinite-scroll.css +8 -4
- package/css/input-group.css +74 -26
- package/css/kbd.css +1 -1
- package/css/label.css +27 -11
- package/css/layout.css +17 -10
- package/css/list.css +13 -9
- package/css/listbox.css +12 -7
- package/css/loading-bar.css +3 -0
- package/css/mention.css +11 -9
- package/css/menu.css +10 -5
- package/css/menubar.css +13 -8
- package/css/message-feed.css +1 -1
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +132 -49
- package/css/number-animation.css +2 -2
- package/css/number-field.css +75 -52
- package/css/page-header.css +64 -27
- package/css/pagination.css +35 -38
- package/css/password-input.css +12 -68
- package/css/pin-input.css +18 -26
- package/css/popconfirm.css +23 -14
- package/css/popover.css +18 -12
- package/css/progress.css +14 -13
- package/css/prompt-input.css +3 -3
- package/css/question-flow.css +41 -15
- package/css/radar-chart.css +6 -6
- package/css/radio-group.css +120 -55
- package/css/rating.css +32 -15
- package/css/select.css +16 -12
- package/css/separator.css +24 -6
- package/css/side-nav.css +29 -24
- package/css/signature-pad.css +23 -9
- package/css/skeleton.css +12 -12
- package/css/slider.css +77 -48
- package/css/sortable.css +2 -2
- package/css/sparkline.css +8 -2
- package/css/spinner.css +40 -20
- package/css/statistic.css +14 -14
- package/css/steps.css +115 -84
- package/css/switch.css +9 -7
- package/css/table.css +29 -12
- package/css/tabs.css +35 -12
- package/css/tag-group.css +17 -6
- package/css/tag.css +54 -29
- package/css/tags-input.css +39 -20
- package/css/text-field.css +5 -5
- package/css/time-field.css +4 -4
- package/css/time-picker.css +150 -64
- package/css/time-range-picker.css +91 -62
- package/css/timeline.css +37 -20
- package/css/timer.css +3 -3
- package/css/toggle-group.css +4 -4
- package/css/tool-call.css +13 -11
- package/css/toolbar.css +6 -5
- package/css/tooltip.css +16 -17
- package/css/tour.css +14 -7
- package/css/transfer.css +22 -16
- package/css/tree-select.css +12 -12
- package/css/tree.css +26 -25
- package/css/typography.css +28 -25
- package/dist/css/accordion.css +296 -0
- package/dist/css/affix.css +47 -0
- package/dist/css/alert.css +246 -0
- package/dist/css/anchor.css +252 -0
- package/dist/css/approval.css +525 -0
- package/dist/css/avatar-group.css +96 -0
- package/dist/css/avatar.css +100 -0
- package/dist/css/back-top.css +175 -0
- package/dist/css/badge.css +205 -0
- package/dist/css/bar-code.css +62 -0
- package/dist/css/breadcrumb.css +232 -0
- package/dist/css/button-group.css +261 -0
- package/dist/css/button.css +216 -0
- package/dist/css/calendar-picker.css +550 -0
- package/dist/css/calendar-range-picker.css +639 -0
- package/dist/css/card.css +249 -0
- package/dist/css/carousel.css +726 -0
- package/dist/css/cartesian-chart.css +830 -0
- package/dist/css/cascader.css +973 -0
- package/dist/css/checkbox-group.css +361 -0
- package/dist/css/checkbox.css +258 -0
- package/dist/css/citation.css +475 -0
- package/dist/css/clipboard.css +331 -0
- package/dist/css/code-view.css +374 -0
- package/dist/css/collapsible.css +200 -0
- package/dist/css/color-field.css +176 -0
- package/dist/css/color-picker.css +649 -0
- package/dist/css/color-slider.css +283 -0
- package/dist/css/color-swatch-picker.css +250 -0
- package/dist/css/color-swatch.css +35 -0
- package/dist/css/combobox.css +578 -0
- package/dist/css/command.css +404 -0
- package/dist/css/context-menu.css +425 -0
- package/dist/css/date-field.css +317 -0
- package/dist/css/date-picker.css +931 -0
- package/dist/css/date-range-picker.css +949 -0
- package/dist/css/description.css +71 -0
- package/dist/css/descriptions.css +327 -0
- package/dist/css/dialog.css +470 -0
- package/dist/css/diff-view.css +513 -0
- package/dist/css/download-trigger.css +151 -0
- package/dist/css/drawer.css +606 -0
- package/dist/css/editable.css +269 -0
- package/dist/css/empty-state.css +181 -0
- package/dist/css/field-array.css +229 -0
- package/dist/css/field.css +165 -0
- package/dist/css/fieldset.css +122 -0
- package/dist/css/file-upload.css +462 -0
- package/dist/css/flex.css +441 -0
- package/dist/css/float-button.css +579 -0
- package/dist/css/floating-panel.css +429 -0
- package/dist/css/focus.css +46 -0
- package/dist/css/forced-colors.css +93 -0
- package/dist/css/form.css +407 -0
- package/dist/css/funnel-chart.css +106 -0
- package/dist/css/graph-chart.css +205 -0
- package/dist/css/grid-list.css +235 -0
- package/dist/css/grid.css +1201 -0
- package/dist/css/heatmap.css +552 -0
- package/dist/css/hierarchy-chart.css +298 -0
- package/dist/css/highlight.css +41 -0
- package/dist/css/hover-card.css +233 -0
- package/dist/css/icon.css +225 -0
- package/dist/css/image-cropper.css +373 -0
- package/dist/css/image-viewer.css +588 -0
- package/dist/css/image.css +106 -0
- package/dist/css/infinite-scroll.css +81 -0
- package/dist/css/input-group.css +323 -0
- package/dist/css/json-viewer.css +379 -0
- package/dist/css/kbd.css +72 -0
- package/dist/css/label.css +94 -0
- package/dist/css/layers.css +7 -0
- package/dist/css/layout.css +379 -0
- package/dist/css/liquid.css +106 -0
- package/dist/css/list.css +156 -0
- package/dist/css/listbox.css +395 -0
- package/dist/css/loading-bar.css +144 -0
- package/dist/css/log.css +306 -0
- package/dist/css/markdown-stream.css +149 -0
- package/dist/css/marquee.css +378 -0
- package/dist/css/masonry.css +70 -0
- package/dist/css/matrix-code.css +67 -0
- package/dist/css/mention.css +395 -0
- package/dist/css/menu.css +369 -0
- package/dist/css/menubar.css +461 -0
- package/dist/css/message-feed.css +318 -0
- package/dist/css/navigation-menu.css +513 -0
- package/dist/css/notification.css +865 -0
- package/dist/css/number-animation.css +44 -0
- package/dist/css/number-field.css +275 -0
- package/dist/css/overlay-arrow.css +56 -0
- package/dist/css/page-header.css +221 -0
- package/dist/css/pagination.css +447 -0
- package/dist/css/password-input.css +335 -0
- package/dist/css/pie-chart.css +247 -0
- package/dist/css/pin-input.css +191 -0
- package/dist/css/pointer.css +36 -0
- package/dist/css/popconfirm.css +329 -0
- package/dist/css/popover.css +285 -0
- package/dist/css/progress.css +502 -0
- package/dist/css/prompt-input.css +260 -0
- package/dist/css/question-flow.css +579 -0
- package/dist/css/radar-chart.css +233 -0
- package/dist/css/radio-group.css +663 -0
- package/dist/css/rating.css +311 -0
- package/dist/css/reasoning.css +343 -0
- package/dist/css/reset.css +117 -0
- package/dist/css/resizable.css +242 -0
- package/dist/css/sankey-chart.css +174 -0
- package/dist/css/scroll-area.css +240 -0
- package/dist/css/scrollbar.css +204 -0
- package/dist/css/select.css +616 -0
- package/dist/css/separator.css +140 -0
- package/dist/css/side-nav.css +481 -0
- package/dist/css/signature-pad.css +193 -0
- package/dist/css/skeleton.css +161 -0
- package/dist/css/slider.css +403 -0
- package/dist/css/sortable.css +228 -0
- package/dist/css/sparkline.css +170 -0
- package/dist/css/spinner.css +256 -0
- package/dist/css/splitter.css +159 -0
- package/dist/css/statistic.css +137 -0
- package/dist/css/steps.css +658 -0
- package/dist/css/switch.css +353 -0
- package/dist/css/table.css +1162 -0
- package/dist/css/tabs.css +967 -0
- package/dist/css/tag-group.css +258 -0
- package/dist/css/tag.css +335 -0
- package/dist/css/tags-input.css +341 -0
- package/dist/css/text-field.css +197 -0
- package/dist/css/time-field.css +277 -0
- package/dist/css/time-picker.css +793 -0
- package/dist/css/time-range-picker.css +775 -0
- package/dist/css/timeline.css +440 -0
- package/dist/css/timer.css +123 -0
- package/dist/css/timestamp.css +34 -0
- package/dist/css/toggle-group.css +424 -0
- package/dist/css/toggle.css +146 -0
- package/dist/css/tone.css +189 -0
- package/dist/css/tool-call.css +431 -0
- package/dist/css/toolbar.css +366 -0
- package/dist/css/tooltip.css +217 -0
- package/dist/css/tour.css +446 -0
- package/dist/css/transfer.css +644 -0
- package/dist/css/tree-select.css +878 -0
- package/dist/css/tree.css +734 -0
- package/dist/css/truncate.css +108 -0
- package/dist/css/typography.css +475 -0
- package/dist/css/undefined.css +58 -0
- package/dist/css/virtualizer.css +166 -0
- package/dist/css/visually-hidden.css +20 -0
- package/dist/css/watermark.css +82 -0
- package/dist/family/action-control.css +493 -0
- package/dist/family/chart.css +537 -0
- package/dist/family/check-mark.css +94 -0
- package/dist/family/choice-card.css +97 -0
- package/dist/family/collection-item.css +768 -0
- package/dist/family/field-chrome.css +296 -0
- package/dist/family/loading-ring.css +102 -0
- package/dist/family/material.css +72 -0
- package/dist/family/menu-choice.css +56 -0
- package/dist/family/motion.css +363 -0
- package/dist/family/swatch.css +59 -0
- package/dist/family/tag-list.css +65 -0
- package/family/action-control.css +33 -36
- package/family/chart.css +57 -0
- package/family/collection-item.css +12 -8
- package/family/field-chrome.css +28 -19
- package/family/loading-ring.css +20 -13
- package/family/swatch.css +4 -4
- package/family/tag-list.css +6 -0
- package/index.css +10349 -8756
- package/index.unlayered.css +10350 -8758
- package/package.json +165 -164
package/css/color-picker.css
CHANGED
|
@@ -30,8 +30,6 @@
|
|
|
30
30
|
--xh-_color-picker-px: var(--xh-control-px-md);
|
|
31
31
|
--xh-_color-picker-gap: var(--xh-control-gap-md);
|
|
32
32
|
|
|
33
|
-
/* 聚焦环恒用固定环色 */
|
|
34
|
-
--xh-_color-picker-ring: var(--xh-ring-focus);
|
|
35
33
|
|
|
36
34
|
display: inline-flex;
|
|
37
35
|
flex-direction: column;
|
|
@@ -60,7 +58,9 @@
|
|
|
60
58
|
}
|
|
61
59
|
|
|
62
60
|
[data-scope='color-picker'][data-part='label'] {
|
|
63
|
-
|
|
61
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-color-picker-label-gap 给多少最终就是多少 */
|
|
62
|
+
margin-block-end: calc(var(--xh-color-picker-label-gap, var(--xh-space-2)) - var(--xh-color-picker-gap, var(--xh-space-1)));
|
|
63
|
+
color: var(--xh-color-picker-label-fg, var(--xh-fg-muted));
|
|
64
64
|
/* 字段标签不随档:与同族字段同一档标签字号 */
|
|
65
65
|
font-size: var(--xh-color-picker-label-font-size, var(--xh-text-label-size));
|
|
66
66
|
font-weight: var(--xh-color-picker-label-font-weight, var(--xh-text-label-weight));
|
|
@@ -83,7 +83,6 @@
|
|
|
83
83
|
--xh-field-border-rest: var(--xh-color-picker-control-border, var(--xh-_field-variant-border-rest));
|
|
84
84
|
--xh-field-border-hover: var(--xh-color-picker-control-border-hover, var(--xh-_field-variant-border-hover));
|
|
85
85
|
--xh-field-border-focus: var(--xh-color-picker-control-border-focus, var(--xh-_field-variant-border-focus));
|
|
86
|
-
--xh-field-ring-focus: var(--xh-_color-picker-ring);
|
|
87
86
|
--xh-field-shadow-rest: var(--xh-color-picker-control-shadow, none);
|
|
88
87
|
--xh-field-cursor-rest: pointer;
|
|
89
88
|
}
|
|
@@ -224,16 +223,20 @@
|
|
|
224
223
|
}
|
|
225
224
|
|
|
226
225
|
[data-scope='color-picker'][data-part='content'] {
|
|
226
|
+
/* 内衬落进私有槽:贴顶通栏的取色区与色板区的通栏分隔按同一份内衬往外撑 */
|
|
227
|
+
--xh-_color-picker-content-py: var(--xh-color-picker-content-py, var(--xh-space-3));
|
|
228
|
+
--xh-_color-picker-content-px: var(--xh-color-picker-content-px, var(--xh-space-3));
|
|
229
|
+
|
|
227
230
|
position: relative;
|
|
228
231
|
display: flex;
|
|
229
232
|
flex-direction: column;
|
|
230
233
|
gap: var(--xh-color-picker-content-gap, var(--xh-space-3));
|
|
231
|
-
inline-size: var(--xh-color-picker-content-w, var(--xh-overlay-
|
|
234
|
+
inline-size: var(--xh-color-picker-content-w, var(--xh-overlay-max-w-sm));
|
|
232
235
|
/* 定宽的面板也要夹一道:窄视口下伸出去,右半边的取色区就点不到了 */
|
|
233
236
|
max-inline-size: var(--xh-_color-picker-available-w);
|
|
234
|
-
padding-block: var(--xh-
|
|
235
|
-
padding-inline: var(--xh-
|
|
236
|
-
max-block-size: min(var(--xh-color-picker-max-h, var(--xh-viewport-h-
|
|
237
|
+
padding-block: var(--xh-_color-picker-content-py);
|
|
238
|
+
padding-inline: var(--xh-_color-picker-content-px);
|
|
239
|
+
max-block-size: min(var(--xh-color-picker-max-h, var(--xh-viewport-h-lg)), var(--xh-_color-picker-available-h));
|
|
237
240
|
overflow-y: auto;
|
|
238
241
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
239
242
|
overscroll-behavior: contain;
|
|
@@ -287,11 +290,20 @@
|
|
|
287
290
|
[data-scope='color-picker'][data-part='saturation-area'] {
|
|
288
291
|
position: relative;
|
|
289
292
|
display: block;
|
|
290
|
-
|
|
293
|
+
flex: none;
|
|
294
|
+
block-size: var(--xh-color-picker-saturation-area-h, var(--xh-overlay-color-area-h));
|
|
291
295
|
border-radius: var(--xh-color-picker-saturation-area-radius, var(--xh-shape-control));
|
|
292
296
|
cursor: crosshair;
|
|
293
297
|
}
|
|
294
298
|
|
|
299
|
+
/* 取色区排在面板最前时贴着面板顶边通栏:往外撑掉顶边与两侧的内衬、不取圆角,
|
|
300
|
+
四角由面板(滚动面)自己的圆角裁出;后面的内容照常留内衬 */
|
|
301
|
+
[data-scope='color-picker'][data-part='content'] > [data-part='saturation-area']:first-child:where([data-scope='color-picker']) {
|
|
302
|
+
margin-block-start: calc(-1 * var(--xh-_color-picker-content-py));
|
|
303
|
+
margin-inline: calc(-1 * var(--xh-_color-picker-content-px));
|
|
304
|
+
border-radius: var(--xh-color-picker-saturation-area-radius, 0);
|
|
305
|
+
}
|
|
306
|
+
|
|
295
307
|
/* white / black 是 HSV 色彩空间自带的两个端点,不是主题色,因此不走令牌 */
|
|
296
308
|
[data-scope='color-picker'][data-part='saturation-area']::before {
|
|
297
309
|
position: absolute;
|
|
@@ -328,9 +340,9 @@
|
|
|
328
340
|
[data-scope='color-picker'][data-part='area-thumb'] {
|
|
329
341
|
position: absolute;
|
|
330
342
|
box-sizing: border-box;
|
|
331
|
-
inline-size: var(--xh-color-picker-thumb-size,
|
|
332
|
-
block-size: var(--xh-color-picker-thumb-size,
|
|
333
|
-
margin-inline-start: calc(var(--xh-color-picker-thumb-size,
|
|
343
|
+
inline-size: var(--xh-color-picker-thumb-size, var(--xh-control-indicator-md));
|
|
344
|
+
block-size: var(--xh-color-picker-thumb-size, var(--xh-control-indicator-md));
|
|
345
|
+
margin-inline-start: calc(var(--xh-color-picker-thumb-size, var(--xh-control-indicator-md)) / -2);
|
|
334
346
|
border: var(--xh-stroke-thick) solid var(--xh-color-picker-thumb-border, var(--xh-color-neutral-0));
|
|
335
347
|
border-radius: var(--xh-color-picker-thumb-radius, var(--xh-shape-circle));
|
|
336
348
|
background: transparent;
|
|
@@ -341,7 +353,7 @@
|
|
|
341
353
|
|
|
342
354
|
/* 取色区的纵轴也由连接层给(inset-block-start),回拉同样按 block-start 那侧 */
|
|
343
355
|
[data-scope='color-picker'][data-part='area-thumb'] {
|
|
344
|
-
margin-block-start: calc(var(--xh-color-picker-thumb-size,
|
|
356
|
+
margin-block-start: calc(var(--xh-color-picker-thumb-size, var(--xh-control-indicator-md)) / -2);
|
|
345
357
|
}
|
|
346
358
|
|
|
347
359
|
/* 只有手真正拖着时带 data-dragging:放大与光标不会几处一起变。
|
|
@@ -361,13 +373,23 @@
|
|
|
361
373
|
滑块内部的皮仍归 color-slider 那一份。尺寸档跟着浮层上的 data-size 走,不必再各写一遍 */
|
|
362
374
|
[data-scope='color-picker'][data-part='hue-slider'],
|
|
363
375
|
[data-scope='color-picker'][data-part='alpha-slider'] {
|
|
364
|
-
--xh-_thumb-size: var(--xh-color-picker-slider-thumb-size, var(--xh-
|
|
376
|
+
--xh-_thumb-size: var(--xh-color-picker-slider-thumb-size, var(--xh-control-indicator-md));
|
|
365
377
|
--xh-_track-thickness: var(--xh-color-picker-slider-track-thickness, var(--xh-space-3));
|
|
366
378
|
|
|
367
379
|
display: flex;
|
|
368
380
|
flex-direction: column;
|
|
369
381
|
}
|
|
370
382
|
|
|
383
|
+
/* 面板里两条滑块的拇指:一枚承载面色的白盘 + 1px 描边,正中一颗 8px 的当前色点。
|
|
384
|
+
颜色带本身就是一排颜色,拇指整颗填当前色会融进色带里,留白盘才分得出拇指在哪;
|
|
385
|
+
当前色点读滑块自己按拇指写的那支色 */
|
|
386
|
+
[data-scope='color-picker']:is([data-part='hue-slider'], [data-part='alpha-slider']) [data-scope='color-slider'][data-part='thumb'] {
|
|
387
|
+
border-width: var(--xh-stroke-thin);
|
|
388
|
+
background:
|
|
389
|
+
radial-gradient(circle, var(--xh-_color-slider-thumb-color) 0 var(--xh-space-1), transparent var(--xh-space-1)),
|
|
390
|
+
var(--xh-color-picker-slider-thumb-bg, var(--xh-bg-surface-raised));
|
|
391
|
+
}
|
|
392
|
+
|
|
371
393
|
/* 标题与轨道之间的间隙 */
|
|
372
394
|
[data-scope='color-picker'][data-part='hue-slider'] {
|
|
373
395
|
gap: var(--xh-color-picker-hue-slider-gap, var(--xh-stack-gap-md));
|
|
@@ -383,26 +405,35 @@
|
|
|
383
405
|
opacity: var(--xh-state-disabled-opacity);
|
|
384
406
|
}
|
|
385
407
|
|
|
408
|
+
/* 通道输入照字段外壳:字段淡底 + 控件描边、24px 小号盒、说明档字号;悬停描边升一档,
|
|
409
|
+
聚焦换承载面底 + 品牌描边、不画环(焦点由描边换色与底色差标出,强制色档补一圈 Highlight 环) */
|
|
386
410
|
[data-scope='color-picker'][data-part='channel-input'] {
|
|
387
411
|
inline-size: 100%;
|
|
388
412
|
min-inline-size: 0;
|
|
389
|
-
block-size: var(--xh-color-picker-input-h, var(--xh-control-
|
|
413
|
+
block-size: var(--xh-color-picker-input-h, var(--xh-control-action-size));
|
|
390
414
|
padding-inline: var(--xh-color-picker-input-px, var(--xh-control-px-sm));
|
|
391
415
|
border: var(--xh-stroke-thin) solid var(--xh-color-picker-input-border, var(--xh-border-control));
|
|
392
416
|
border-radius: var(--xh-color-picker-input-radius, var(--xh-shape-control));
|
|
393
|
-
background: var(--xh-color-picker-input-bg,
|
|
417
|
+
background: var(--xh-color-picker-input-bg, var(--xh-bg-field));
|
|
394
418
|
color: inherit;
|
|
395
419
|
/* 表单控件不继承页面字体,只给字号会让输入框用 UA 默认字族,与周围文本对不上 */
|
|
396
420
|
font-family: inherit;
|
|
397
|
-
font-size: var(--xh-color-picker-input-font-size, var(--xh-text-
|
|
421
|
+
font-size: var(--xh-color-picker-input-font-size, var(--xh-text-caption-size));
|
|
398
422
|
text-align: center;
|
|
399
423
|
}
|
|
400
424
|
|
|
401
|
-
[data-scope='color-picker'][data-part='channel-input']:focus-
|
|
425
|
+
[data-scope='color-picker'][data-part='channel-input']:hover:not(:disabled, :focus, [data-readonly], [data-invalid]) {
|
|
426
|
+
border-color: var(--xh-color-picker-input-border-hover, var(--xh-border-strong));
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
[data-scope='color-picker'][data-part='channel-input']:focus {
|
|
402
430
|
/* 焦点边一律 --xh-border-control-focus,不随语气 */
|
|
403
431
|
border-color: var(--xh-color-picker-input-border-focus, var(--xh-border-control-focus));
|
|
404
|
-
|
|
405
|
-
|
|
432
|
+
background: var(--xh-color-picker-input-bg-focus, var(--xh-bg-surface));
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
[data-scope='color-picker'][data-part='channel-input']:focus-visible {
|
|
436
|
+
outline: none;
|
|
406
437
|
}
|
|
407
438
|
|
|
408
439
|
/* 打到一半的串:框里留着草稿,但值没动——描边提示"这串还没被收下" */
|
|
@@ -478,7 +509,7 @@
|
|
|
478
509
|
/* 「添加」是面板里唯一的主要动作:品牌实心、悬停 / 按下与 0.97 按压、焦点环全由 Action Control 的
|
|
479
510
|
text solid 档给;槽名统一按部件取 --xh-color-picker-confirm-trigger-*,只映射到家族桥接槽 */
|
|
480
511
|
[data-scope='color-picker'][data-part='confirm-trigger'] {
|
|
481
|
-
--xh-action-visual-size: var(--xh-color-picker-confirm-trigger-h, var(--xh-
|
|
512
|
+
--xh-action-visual-size: var(--xh-color-picker-confirm-trigger-h, var(--xh-control-action-size));
|
|
482
513
|
--xh-action-padding-inline: var(--xh-color-picker-confirm-trigger-px, var(--xh-_action-profile-padding-inline));
|
|
483
514
|
--xh-action-radius: var(--xh-color-picker-confirm-trigger-radius, var(--xh-shape-control));
|
|
484
515
|
--xh-action-bg-rest: var(--xh-color-picker-confirm-trigger-bg, var(--xh-_action-variant-bg-rest));
|
|
@@ -508,8 +539,8 @@
|
|
|
508
539
|
浮层里的色板走小号格子:与滑块的拇指、数值框一个量级,整块面板才不会被色板撑开。
|
|
509
540
|
最近使用色是同一台色块选择器,挂载点同一套 */
|
|
510
541
|
[data-scope='color-picker']:is([data-part='swatch-picker'], [data-part='recent-swatch-picker']) {
|
|
511
|
-
--xh-_color-swatch-picker-cell: var(--xh-color-picker-swatch-cell, var(--xh-
|
|
512
|
-
--xh-_color-swatch-picker-gap: var(--xh-color-picker-swatch-gap, var(--xh-
|
|
542
|
+
--xh-_color-swatch-picker-cell: var(--xh-color-picker-swatch-cell, var(--xh-glyph-size-sm));
|
|
543
|
+
--xh-_color-swatch-picker-gap: var(--xh-color-picker-swatch-gap, var(--xh-space-2));
|
|
513
544
|
--xh-_color-swatch-picker-indicator: var(--xh-control-indicator-sm);
|
|
514
545
|
--xh-_color-swatch-picker-mark: calc(var(--xh-_color-swatch-picker-indicator) - var(--xh-space-1));
|
|
515
546
|
--xh-_color-swatch-picker-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
@@ -525,6 +556,23 @@
|
|
|
525
556
|
cursor: not-allowed;
|
|
526
557
|
}
|
|
527
558
|
|
|
559
|
+
/* 粗指针:16px 的格子手指压不准,格子回到小号控件高 */
|
|
560
|
+
@media (pointer: coarse) {
|
|
561
|
+
[data-scope='color-picker']:is([data-part='swatch-picker'], [data-part='recent-swatch-picker']) {
|
|
562
|
+
--xh-_color-swatch-picker-cell: var(--xh-color-picker-swatch-cell, var(--xh-control-h-sm));
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
/* 色板区与上面的取色控件之间一条通栏分隔:撑掉两侧内衬铺满面板宽,线取面板材质的描边档;
|
|
567
|
+
两块色板挨着时只在头一块上画 */
|
|
568
|
+
[data-scope='color-picker'][data-part='content']
|
|
569
|
+
> :is([data-part='swatch-picker'], [data-part='recent-swatch-picker']):where([data-scope='color-picker']):not(:is([data-part='swatch-picker'], [data-part='recent-swatch-picker']) + *) {
|
|
570
|
+
margin-inline: calc(-1 * var(--xh-_color-picker-content-px));
|
|
571
|
+
padding-block-start: var(--xh-_color-picker-content-py);
|
|
572
|
+
padding-inline: var(--xh-_color-picker-content-px);
|
|
573
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-color-picker-separator, var(--xh-material-solid-border));
|
|
574
|
+
}
|
|
575
|
+
|
|
528
576
|
/* 任何 display 都会盖掉 UA 的 [hidden]{display:none}:
|
|
529
577
|
凡是被赋了 display 的角色节点都要显式让位,漏一处收起态就失效。
|
|
530
578
|
content 的收起交给 presence:退场结束后由适配器写内联 display:none,避免截断动画。 */
|
|
@@ -586,6 +634,12 @@
|
|
|
586
634
|
outline-offset: calc(-1 * var(--xh-stroke-thin));
|
|
587
635
|
}
|
|
588
636
|
|
|
637
|
+
/* 通道输入聚焦不画环,靠描边换色;这一档描边被换成系统色,补一圈 Highlight 环 */
|
|
638
|
+
[data-scope='color-picker'][data-part='channel-input']:focus {
|
|
639
|
+
outline: var(--xh-ring-width) solid Highlight;
|
|
640
|
+
outline-offset: var(--xh-ring-offset);
|
|
641
|
+
}
|
|
642
|
+
|
|
589
643
|
/* 标签前的色点画的也是颜色本身:同样退出强制着色,用系统文字色描一圈 */
|
|
590
644
|
[data-scope='color-picker'][data-part='tag-list'] > [data-scope='tag'][data-part='root'][data-value]::before {
|
|
591
645
|
forced-color-adjust: none;
|
package/css/color-slider.css
CHANGED
|
@@ -36,15 +36,17 @@
|
|
|
36
36
|
/* 禁用不整体压暗:标签是文字,换到禁用前景;颜色带与拇指画的是颜色本身,换不得色,
|
|
37
37
|
压暗只做一次、落在 control 上(track / thumb 各自再叠一层 opacity 会越叠越黑),拇指另收掉抬升 */
|
|
38
38
|
|
|
39
|
-
/* 字段标签:14 /
|
|
39
|
+
/* 字段标签:14 / 400 / fg-muted,与控件隔 space-2,禁用不另变色 */
|
|
40
40
|
[data-scope='color-slider'][data-part='label'] {
|
|
41
|
-
|
|
41
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-color-slider-label-gap 给多少最终就是多少 */
|
|
42
|
+
margin-block-end: calc(var(--xh-color-slider-label-gap, var(--xh-space-2)) - var(--xh-color-slider-gap, var(--xh-space-1)));
|
|
43
|
+
color: var(--xh-color-slider-label-fg, var(--xh-fg-muted));
|
|
42
44
|
font-size: var(--xh-color-slider-label-font-size, var(--xh-text-label-size));
|
|
43
45
|
font-weight: var(--xh-color-slider-label-font-weight, var(--xh-text-label-weight));
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
[data-scope='color-slider'][data-part='label'][data-disabled] {
|
|
47
|
-
color: var(--xh-color-slider-label-fg-disabled, var(--xh-fg-
|
|
49
|
+
color: var(--xh-color-slider-label-fg-disabled, var(--xh-fg-muted));
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
/* 拇指以它为定位上下文(拇指常常浮出轨道,挂在 track 上会被轨道的盒子束住)。
|
|
@@ -84,7 +86,7 @@
|
|
|
84
86
|
[data-scope='color-slider'][data-part='track'] {
|
|
85
87
|
position: relative;
|
|
86
88
|
border-radius: var(--xh-color-slider-track-radius, var(--xh-shape-pill));
|
|
87
|
-
box-shadow: inset 0 0 0 var(--xh-stroke-thin) var(--xh-color-slider-track-border, var(--xh-border-
|
|
89
|
+
box-shadow: inset 0 0 0 var(--xh-stroke-thin) var(--xh-color-slider-track-border, var(--xh-border-default));
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
[data-scope='color-slider'][data-part='track'][data-orientation='horizontal'] {
|
|
@@ -108,10 +110,10 @@
|
|
|
108
110
|
border-radius: inherit;
|
|
109
111
|
background-color: var(--xh-color-slider-checker-base, var(--xh-bg-surface));
|
|
110
112
|
background-image:
|
|
111
|
-
linear-gradient(45deg, var(--xh-color-slider-checker, var(--xh-
|
|
112
|
-
linear-gradient(-45deg, var(--xh-color-slider-checker, var(--xh-
|
|
113
|
-
linear-gradient(45deg, transparent 75%, var(--xh-color-slider-checker, var(--xh-
|
|
114
|
-
linear-gradient(-45deg, transparent 75%, var(--xh-color-slider-checker, var(--xh-
|
|
113
|
+
linear-gradient(45deg, var(--xh-color-slider-checker, var(--xh-bg-subtle)) 25%, transparent 25%),
|
|
114
|
+
linear-gradient(-45deg, var(--xh-color-slider-checker, var(--xh-bg-subtle)) 25%, transparent 25%),
|
|
115
|
+
linear-gradient(45deg, transparent 75%, var(--xh-color-slider-checker, var(--xh-bg-subtle)) 75%),
|
|
116
|
+
linear-gradient(-45deg, transparent 75%, var(--xh-color-slider-checker, var(--xh-bg-subtle)) 75%);
|
|
115
117
|
background-position: 0 0, 0 4px, 4px -4px, -4px 0;
|
|
116
118
|
background-size: 8px 8px;
|
|
117
119
|
}
|
|
@@ -51,21 +51,21 @@
|
|
|
51
51
|
--xh-_color-swatch-picker-indicator: var(--xh-control-indicator-lg);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
/* 标题独占一行,格子从下一行起排。复合单字段的标签:14 /
|
|
55
|
-
|
|
54
|
+
/* 标题独占一行,格子从下一行起排。复合单字段的标签:14 / 400 / fg-muted,不随档;
|
|
55
|
+
与格子隔 space-2——容器的 gap 归格子之间,标签在它之上补一段差值把距离收成目标值 */
|
|
56
56
|
[data-scope='color-swatch-picker'][data-part='label'] {
|
|
57
57
|
flex-basis: 100%;
|
|
58
58
|
margin-block-end: calc(
|
|
59
|
-
var(--xh-color-swatch-picker-label-gap, var(--xh-space-
|
|
59
|
+
var(--xh-color-swatch-picker-label-gap, var(--xh-space-2))
|
|
60
60
|
- var(--xh-color-swatch-picker-gap, var(--xh-_color-swatch-picker-gap))
|
|
61
61
|
);
|
|
62
|
-
color: var(--xh-color-swatch-picker-label-fg, var(--xh-fg-
|
|
62
|
+
color: var(--xh-color-swatch-picker-label-fg, var(--xh-fg-muted));
|
|
63
63
|
font-size: var(--xh-color-swatch-picker-label-font-size, var(--xh-text-label-size));
|
|
64
64
|
font-weight: var(--xh-color-swatch-picker-label-font-weight, var(--xh-text-label-weight));
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
[data-scope='color-swatch-picker'][data-part='label'][data-disabled] {
|
|
68
|
-
color: var(--xh-color-swatch-picker-label-fg-disabled, var(--xh-fg-
|
|
68
|
+
color: var(--xh-color-swatch-picker-label-fg-disabled, var(--xh-fg-muted));
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/* 一格:正方形命中区,里面铺满色块面。
|
|
@@ -186,10 +186,12 @@
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
/* 作者塞进来的图形跟着勾同一套显隐 */
|
|
189
|
+
/* 显隐写在 indicator 自己的私有槽上、图形只读槽:作者的图形没有可认的特征,
|
|
190
|
+
规则主体不能挂在 data-state 后面(翻转时会让全页同名属性的变化整棵子树重算) */
|
|
189
191
|
[data-scope='color-swatch-picker'][data-part='indicator'] > * {
|
|
190
192
|
position: relative;
|
|
191
193
|
color: var(--xh-color-swatch-picker-indicator-fg, var(--xh-_tone-on, var(--xh-fg-on-brand)));
|
|
192
|
-
opacity: 0;
|
|
194
|
+
opacity: var(--xh-_color-swatch-picker-glyph-opacity, 0);
|
|
193
195
|
transition: opacity var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
194
196
|
}
|
|
195
197
|
|
|
@@ -199,8 +201,11 @@
|
|
|
199
201
|
scale: 1;
|
|
200
202
|
}
|
|
201
203
|
|
|
202
|
-
[data-scope='color-swatch-picker'][data-part='indicator'][data-state='checked']
|
|
203
|
-
|
|
204
|
+
[data-scope='color-swatch-picker'][data-part='indicator'][data-state='checked'] {
|
|
205
|
+
--xh-_color-swatch-picker-glyph-opacity: 1;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
[data-scope='color-swatch-picker'][data-part='indicator'][data-state='checked']:empty::after {
|
|
204
209
|
opacity: 1;
|
|
205
210
|
}
|
|
206
211
|
|
|
@@ -227,7 +232,7 @@
|
|
|
227
232
|
*/
|
|
228
233
|
@media (forced-colors: active) {
|
|
229
234
|
/* 家族在这一档把色块描边统一钉成 CanvasText,选中的那一格要在它之上换成高亮色 */
|
|
230
|
-
[data-scope='color-swatch-picker'][data-part='item'][data-state='checked'] > [data-part='swatch'] {
|
|
235
|
+
[data-scope='color-swatch-picker'][data-part='item'][data-state='checked'] > [data-part='swatch']:where([data-scope='color-swatch-picker']) {
|
|
231
236
|
border-color: Highlight;
|
|
232
237
|
}
|
|
233
238
|
|
package/css/combobox.css
CHANGED
|
@@ -82,6 +82,7 @@
|
|
|
82
82
|
--xh-_combobox-h: var(--xh-control-h-md);
|
|
83
83
|
--xh-_combobox-px: var(--xh-control-px-md);
|
|
84
84
|
--xh-_combobox-item-py: var(--xh-list-option-py-md);
|
|
85
|
+
--xh-_combobox-item-h: var(--xh-list-option-h-md);
|
|
85
86
|
--xh-_combobox-item-px: var(--xh-control-px-md);
|
|
86
87
|
--xh-_combobox-gap: var(--xh-control-gap-md);
|
|
87
88
|
--xh-_combobox-font-size: var(--xh-control-font-md);
|
|
@@ -118,6 +119,7 @@
|
|
|
118
119
|
--xh-_combobox-h: var(--xh-control-h-sm);
|
|
119
120
|
--xh-_combobox-px: var(--xh-control-px-sm);
|
|
120
121
|
--xh-_combobox-item-py: var(--xh-list-option-py-sm);
|
|
122
|
+
--xh-_combobox-item-h: var(--xh-list-option-h-sm);
|
|
121
123
|
--xh-_combobox-item-px: var(--xh-control-px-sm);
|
|
122
124
|
--xh-_combobox-gap: var(--xh-control-gap-sm);
|
|
123
125
|
--xh-_combobox-font-size: var(--xh-control-font-sm);
|
|
@@ -129,6 +131,7 @@
|
|
|
129
131
|
--xh-_combobox-h: var(--xh-control-h-lg);
|
|
130
132
|
--xh-_combobox-px: var(--xh-control-px-lg);
|
|
131
133
|
--xh-_combobox-item-py: var(--xh-list-option-py-lg);
|
|
134
|
+
--xh-_combobox-item-h: var(--xh-list-option-h-lg);
|
|
132
135
|
--xh-_combobox-item-px: var(--xh-control-px-lg);
|
|
133
136
|
--xh-_combobox-gap: var(--xh-control-gap-lg);
|
|
134
137
|
--xh-_combobox-font-size: var(--xh-control-font-lg);
|
|
@@ -137,14 +140,16 @@
|
|
|
137
140
|
}
|
|
138
141
|
|
|
139
142
|
[data-scope='combobox'][data-part='label'] {
|
|
140
|
-
|
|
143
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-combobox-label-gap 给多少最终就是多少 */
|
|
144
|
+
margin-block-end: calc(var(--xh-combobox-label-gap, var(--xh-space-2)) - var(--xh-combobox-gap, var(--xh-space-1)));
|
|
145
|
+
color: var(--xh-combobox-label-fg, var(--xh-fg-muted));
|
|
141
146
|
font-size: var(--xh-combobox-label-font-size, var(--xh-text-label-size));
|
|
142
147
|
font-weight: var(--xh-combobox-label-font-weight, var(--xh-text-label-weight));
|
|
143
148
|
line-height: var(--xh-leading-none);
|
|
144
149
|
}
|
|
145
150
|
|
|
146
151
|
[data-scope='combobox'][data-part='label'][data-disabled] {
|
|
147
|
-
color: var(--xh-combobox-label-fg-disabled, var(--xh-fg-
|
|
152
|
+
color: var(--xh-combobox-label-fg-disabled, var(--xh-fg-muted));
|
|
148
153
|
}
|
|
149
154
|
|
|
150
155
|
/* 画成一个框的是 control 而不是 input:输入框、展开按钮、清空按钮三者要看起来是一体的,
|
|
@@ -166,8 +171,6 @@
|
|
|
166
171
|
--xh-field-border-hover: var(--xh-combobox-control-border-hover, var(--xh-_field-variant-border-hover));
|
|
167
172
|
--xh-field-border-focus: var(--xh-combobox-control-border-focus, var(--xh-_field-variant-border-focus));
|
|
168
173
|
--xh-field-border-invalid: var(--xh-combobox-control-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
169
|
-
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
170
|
-
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
171
174
|
--xh-field-shadow-rest: var(--xh-combobox-control-shadow, none);
|
|
172
175
|
/* 家族 chrome 会重写 --xh-icon-size,使用者图标槽必须经桥接槽下发才能在盒内生效 */
|
|
173
176
|
--xh-field-glyph-size: var(--xh-combobox-icon-size, var(--xh-_field-size-glyph-size));
|
|
@@ -236,14 +239,19 @@
|
|
|
236
239
|
/* 有值时清空钮顶上来,展开钮让位:两颗并排堆着用户分不清点哪个,换来换去还会让盒的宽度跳一下。
|
|
237
240
|
判据是盒里此刻有一颗没收起的清空钮——没写清空钮的结构里展开钮照常留着;
|
|
238
241
|
输入框仍是展开的入口(打字、方向键、openOnClick) */
|
|
239
|
-
[data-scope='combobox'][data-part='control']:has([data-part='clear-trigger']:not([hidden])) [data-part='trigger'] {
|
|
242
|
+
[data-scope='combobox'][data-part='control']:has([data-part='clear-trigger']:not([hidden])) [data-part='trigger']:where([data-scope='combobox']) {
|
|
240
243
|
display: none;
|
|
241
244
|
}
|
|
242
245
|
|
|
243
246
|
/* 展开时箭头翻个面,指向与列表的去向一致。转的是字形或作者塞的图形,不转按钮本体:
|
|
244
247
|
按钮自带悬停底色,整个按钮转会带着底色一起转;家族按压缩放的是整钮,不影响这里的转向 */
|
|
245
|
-
[data-scope='combobox'][data-part='trigger']:empty::before
|
|
248
|
+
[data-scope='combobox'][data-part='trigger']:empty::before {
|
|
249
|
+
transition: rotate var(--xh-motion-duration-nudge) var(--xh-motion-ease-enter-strong);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* 作者的箭头是任意节点:转向写在 trigger 自己的私有槽上,箭头只读槽(规则主体无特征时不挂在 data-state 后面) */
|
|
246
253
|
[data-scope='combobox'][data-part='trigger'] > * {
|
|
254
|
+
rotate: var(--xh-_combobox-trigger-turn, none);
|
|
247
255
|
transition: rotate var(--xh-motion-duration-nudge) var(--xh-motion-ease-enter-strong);
|
|
248
256
|
}
|
|
249
257
|
|
|
@@ -272,11 +280,14 @@
|
|
|
272
280
|
}
|
|
273
281
|
|
|
274
282
|
/* 打开中与悬停同档:展开钮不另上底,方向由箭头转向承担 */
|
|
275
|
-
[data-scope='combobox'][data-part='trigger'][data-state='open']:empty::before
|
|
276
|
-
[data-scope='combobox'][data-part='trigger'][data-state='open'] > * {
|
|
283
|
+
[data-scope='combobox'][data-part='trigger'][data-state='open']:empty::before {
|
|
277
284
|
rotate: 180deg;
|
|
278
285
|
}
|
|
279
286
|
|
|
287
|
+
[data-scope='combobox'][data-part='trigger'][data-state='open'] {
|
|
288
|
+
--xh-_combobox-trigger-turn: 180deg;
|
|
289
|
+
}
|
|
290
|
+
|
|
280
291
|
[data-scope='combobox'][data-part='content'] {
|
|
281
292
|
/* 材质由家族配方画(family/material.css 的 frosted 面:描边、底、1px 顶光、前景、投影与背景滤镜),
|
|
282
293
|
这里只把使用者槽接进来 */
|
|
@@ -303,7 +314,7 @@
|
|
|
303
314
|
min-block-size: var(--xh-combobox-content-min-h, var(--xh-_combobox-h));
|
|
304
315
|
max-block-size: min(var(--xh-combobox-content-max-h, var(--xh-overlay-menu-max-h)), var(--xh-_combobox-available-h));
|
|
305
316
|
padding-block: var(--xh-combobox-content-py, var(--xh-space-1));
|
|
306
|
-
padding-inline: var(--xh-combobox-content-px,
|
|
317
|
+
padding-inline: var(--xh-combobox-content-px, 0);
|
|
307
318
|
border-radius: var(--xh-combobox-content-radius, var(--xh-shape-overlay));
|
|
308
319
|
overflow-y: auto;
|
|
309
320
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
@@ -376,10 +387,11 @@
|
|
|
376
387
|
语境给(选中 = 透明底 + 行尾对号,正文保持 rest 色与常规字重),公开 Combobox 槽只映射到家族合同 */
|
|
377
388
|
[data-scope='combobox'][data-part='item'] {
|
|
378
389
|
--xh-collection-block-padding: var(--xh-combobox-item-py, var(--xh-_combobox-item-py));
|
|
390
|
+
--xh-collection-row-h: var(--xh-combobox-item-h, var(--xh-_combobox-item-h));
|
|
379
391
|
--xh-collection-inline-padding: var(--xh-combobox-item-px, var(--xh-_combobox-item-px));
|
|
380
392
|
--xh-collection-gap: var(--xh-combobox-item-gap, var(--xh-_combobox-gap));
|
|
381
393
|
--xh-collection-font-size: var(--xh-combobox-item-font-size, var(--xh-_combobox-font-size));
|
|
382
|
-
--xh-collection-radius: var(--xh-combobox-item-radius,
|
|
394
|
+
--xh-collection-radius: var(--xh-combobox-item-radius, 0);
|
|
383
395
|
--xh-collection-fg-rest: var(--xh-combobox-item-fg, var(--xh-material-frosted-fg));
|
|
384
396
|
--xh-collection-fg-hover: var(--xh-combobox-item-fg, var(--xh-material-frosted-fg));
|
|
385
397
|
--xh-collection-fg-keyboard-highlight: var(--xh-combobox-item-fg, var(--xh-material-frosted-fg));
|
|
@@ -388,10 +400,10 @@
|
|
|
388
400
|
--xh-collection-fg-selected-hover: var(--xh-combobox-item-fg-selected, var(--xh-combobox-item-fg, var(--xh-material-frosted-fg)));
|
|
389
401
|
--xh-collection-fg-selected-pressed: var(--xh-combobox-item-fg-selected, var(--xh-combobox-item-fg, var(--xh-material-frosted-fg)));
|
|
390
402
|
--xh-collection-fg-pressed: var(--xh-combobox-item-fg, var(--xh-material-frosted-fg));
|
|
391
|
-
--xh-collection-font-weight-selected: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-
|
|
392
|
-
--xh-collection-font-weight-selected-highlight: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-
|
|
393
|
-
--xh-collection-font-weight-selected-hover: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-
|
|
394
|
-
--xh-collection-font-weight-selected-pressed: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-
|
|
403
|
+
--xh-collection-font-weight-selected: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
404
|
+
--xh-collection-font-weight-selected-highlight: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
405
|
+
--xh-collection-font-weight-selected-hover: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
406
|
+
--xh-collection-font-weight-selected-pressed: var(--xh-combobox-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
395
407
|
--xh-collection-bg-hover: var(--xh-combobox-item-bg-hover, var(--xh-bg-subtle));
|
|
396
408
|
--xh-collection-bg-keyboard-highlight: var(--xh-combobox-item-bg-hover, var(--xh-bg-subtle));
|
|
397
409
|
--xh-collection-bg-selected-highlight: var(--xh-combobox-item-bg-hover, var(--xh-bg-subtle));
|
package/css/command.css
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
--xh-_command-input-h: var(--xh-control-h-md);
|
|
30
30
|
--xh-_command-px: var(--xh-control-px-md);
|
|
31
31
|
--xh-_command-item-py: var(--xh-list-option-py-md);
|
|
32
|
+
--xh-_command-item-h: var(--xh-list-option-h-md);
|
|
32
33
|
--xh-_command-gap: var(--xh-control-gap-md);
|
|
33
34
|
--xh-_command-font-size: var(--xh-control-font-md);
|
|
34
35
|
}
|
|
@@ -47,6 +48,7 @@
|
|
|
47
48
|
--xh-_command-input-h: var(--xh-control-h-sm);
|
|
48
49
|
--xh-_command-px: var(--xh-control-px-sm);
|
|
49
50
|
--xh-_command-item-py: var(--xh-list-option-py-sm);
|
|
51
|
+
--xh-_command-item-h: var(--xh-list-option-h-sm);
|
|
50
52
|
--xh-_command-gap: var(--xh-control-gap-sm);
|
|
51
53
|
--xh-_command-font-size: var(--xh-control-font-sm);
|
|
52
54
|
}
|
|
@@ -57,6 +59,7 @@
|
|
|
57
59
|
--xh-_command-input-h: var(--xh-control-h-lg);
|
|
58
60
|
--xh-_command-px: var(--xh-control-px-lg);
|
|
59
61
|
--xh-_command-item-py: var(--xh-list-option-py-lg);
|
|
62
|
+
--xh-_command-item-h: var(--xh-list-option-h-lg);
|
|
60
63
|
--xh-_command-gap: var(--xh-control-gap-lg);
|
|
61
64
|
--xh-_command-font-size: var(--xh-control-font-lg);
|
|
62
65
|
}
|
|
@@ -172,7 +175,7 @@
|
|
|
172
175
|
padding-block: 0;
|
|
173
176
|
padding-inline: var(--xh-command-input-px, var(--xh-_command-px));
|
|
174
177
|
border: 0;
|
|
175
|
-
border-block-end: var(--xh-stroke-thin) solid var(--xh-command-input-border, var(--xh-material-elevated-
|
|
178
|
+
border-block-end: var(--xh-stroke-thin) solid var(--xh-command-input-border, var(--xh-material-elevated-border));
|
|
176
179
|
border-radius: 0;
|
|
177
180
|
background: transparent;
|
|
178
181
|
color: var(--xh-command-input-fg, var(--xh-fg-default));
|
|
@@ -209,8 +212,9 @@
|
|
|
209
212
|
flex-direction: column;
|
|
210
213
|
gap: var(--xh-command-list-gap, var(--xh-list-option-gap));
|
|
211
214
|
min-block-size: 0;
|
|
212
|
-
|
|
213
|
-
padding-
|
|
215
|
+
/* 行通栏:列表左右不留内衬,行面贴到面板两缘;上下各留 4px */
|
|
216
|
+
padding-block: var(--xh-command-list-py, var(--xh-space-1));
|
|
217
|
+
padding-inline: var(--xh-command-list-px, var(--xh-space-0));
|
|
214
218
|
/* 模态面板里的滚动面:到底后不把滚动链穿透给页面 */
|
|
215
219
|
overflow-y: auto;
|
|
216
220
|
overscroll-behavior: contain;
|
|
@@ -241,7 +245,7 @@
|
|
|
241
245
|
|
|
242
246
|
/* 组间留白只加在后继分组上:首组顶上已经有列表的内边距,再加一层会显得头重 */
|
|
243
247
|
[data-scope='command'][data-part='group'] + [data-scope='command'][data-part='group'] {
|
|
244
|
-
margin-block-start: var(--xh-command-group-spacing, var(--xh-space-
|
|
248
|
+
margin-block-start: var(--xh-command-group-spacing, var(--xh-space-2));
|
|
245
249
|
}
|
|
246
250
|
|
|
247
251
|
/* 分组标题不是命令、进不了导航,画成小号次要文字,内缩与条目对齐 */
|
|
@@ -249,9 +253,9 @@
|
|
|
249
253
|
display: block;
|
|
250
254
|
padding-block: var(--xh-command-group-label-py, var(--xh-space-1));
|
|
251
255
|
padding-inline: var(--xh-command-group-label-px, var(--xh-_command-px));
|
|
252
|
-
color: var(--xh-command-group-label-fg, var(--xh-fg-
|
|
256
|
+
color: var(--xh-command-group-label-fg, var(--xh-fg-subtle));
|
|
253
257
|
font-size: var(--xh-command-group-label-font-size, var(--xh-text-caption-size));
|
|
254
|
-
font-weight: var(--xh-command-group-label-font-weight, var(--xh-font-weight-
|
|
258
|
+
font-weight: var(--xh-command-group-label-font-weight, var(--xh-font-weight-regular));
|
|
255
259
|
line-height: var(--xh-leading-none);
|
|
256
260
|
user-select: none;
|
|
257
261
|
}
|
|
@@ -264,10 +268,11 @@
|
|
|
264
268
|
布局保持 flex:图标、正文、快捷键按作者顺序排成一行,不用家族网格;间距由行的 gap 给 */
|
|
265
269
|
[data-scope='command'][data-part='item'] {
|
|
266
270
|
--xh-collection-block-padding: var(--xh-command-item-py, var(--xh-_command-item-py));
|
|
271
|
+
--xh-collection-row-h: var(--xh-command-item-h, var(--xh-_command-item-h));
|
|
267
272
|
--xh-collection-inline-padding: var(--xh-command-item-px, var(--xh-_command-px));
|
|
268
273
|
--xh-collection-gap: 0;
|
|
269
274
|
--xh-collection-font-size: var(--xh-command-item-font-size, var(--xh-_command-font-size));
|
|
270
|
-
--xh-collection-radius: var(--xh-command-item-radius,
|
|
275
|
+
--xh-collection-radius: var(--xh-command-item-radius, 0);
|
|
271
276
|
--xh-collection-fg-rest: var(--xh-command-item-fg, var(--xh-fg-default));
|
|
272
277
|
--xh-collection-fg-hover: var(--xh-command-item-fg, var(--xh-fg-default));
|
|
273
278
|
--xh-collection-fg-keyboard-highlight: var(--xh-command-item-fg, var(--xh-fg-default));
|
|
@@ -298,7 +303,7 @@
|
|
|
298
303
|
不会拖出一条越来越慢的尾巴)。打开时已有的结果直接呈现:自己或本列表带 data-instant。
|
|
299
304
|
检索过滤筛掉的条目带 hidden 不生成盒子,重新露面只是换一批已有结果,机器给它打上 data-instant 直接呈现。
|
|
300
305
|
backwards 让每条在自己那份延迟里保持起始帧 */
|
|
301
|
-
[data-scope='command'][data-part='list'] [data-part='item']:not([data-instant], [data-scope='command'][data-part='list'][data-instant]
|
|
306
|
+
[data-scope='command'][data-part='list'] [data-part='item']:where([data-scope='command']):not([data-instant], [data-scope='command'][data-part='list'][data-instant] :where([data-scope='command'])) {
|
|
302
307
|
animation: xh-rise-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong) backwards;
|
|
303
308
|
animation-delay: calc(var(--xh-_stagger-index, 0) * var(--xh-motion-stagger-step));
|
|
304
309
|
}
|
|
@@ -369,7 +374,7 @@
|
|
|
369
374
|
gap: var(--xh-command-footer-gap, var(--xh-space-2));
|
|
370
375
|
padding-block: var(--xh-command-footer-py, var(--xh-space-2));
|
|
371
376
|
padding-inline: var(--xh-command-footer-px, var(--xh-_command-px));
|
|
372
|
-
border-block-start: var(--xh-stroke-thin) solid var(--xh-command-footer-border, var(--xh-material-elevated-
|
|
377
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-command-footer-border, var(--xh-material-elevated-border));
|
|
373
378
|
color: var(--xh-command-footer-fg, var(--xh-fg-muted));
|
|
374
379
|
font-size: var(--xh-command-footer-font-size, var(--xh-text-caption-size));
|
|
375
380
|
}
|
package/css/context-menu.css
CHANGED
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
/* 尺寸档只换这四个私有槽,条目与分组标题都从这两处继承它们,
|
|
74
74
|
换档不必给每个部件各写一条选择器 */
|
|
75
75
|
--xh-_context-menu-item-py: var(--xh-list-option-py-md);
|
|
76
|
+
--xh-_context-menu-item-h: var(--xh-list-option-h-md);
|
|
76
77
|
--xh-_context-menu-item-px: var(--xh-control-px-md);
|
|
77
78
|
--xh-_context-menu-item-gap: var(--xh-control-gap-md);
|
|
78
79
|
--xh-_context-menu-font-size: var(--xh-control-font-md);
|
|
@@ -104,7 +105,7 @@
|
|
|
104
105
|
/* 两道上限取更小的那道:自己的高度上限,以及落定那一侧真正剩下的空间。 */
|
|
105
106
|
max-block-size: min(var(--xh-context-menu-max-h, var(--xh-overlay-menu-max-h)), var(--xh-_context-menu-available-h));
|
|
106
107
|
padding-block: var(--xh-context-menu-content-py, var(--xh-surface-pad-xs));
|
|
107
|
-
padding-inline: var(--xh-context-menu-content-px,
|
|
108
|
+
padding-inline: var(--xh-context-menu-content-px, 0);
|
|
108
109
|
border-radius: var(--xh-context-menu-content-radius, var(--xh-shape-overlay));
|
|
109
110
|
/* 条目超过上限就在菜单内部滚;内收焦点环不会被内边距缘裁掉。
|
|
110
111
|
浮层滚动面:到底后不把滚动链穿透给页面 */
|
|
@@ -123,6 +124,7 @@
|
|
|
123
124
|
[data-scope='context-menu']:is([data-part='root'], [data-part='positioner'])[data-size='sm'] {
|
|
124
125
|
--xh-icon-size: var(--xh-context-menu-icon-size, var(--xh-glyph-size-sm));
|
|
125
126
|
--xh-_context-menu-item-py: var(--xh-list-option-py-sm);
|
|
127
|
+
--xh-_context-menu-item-h: var(--xh-list-option-h-sm);
|
|
126
128
|
--xh-_context-menu-item-px: var(--xh-control-px-sm);
|
|
127
129
|
--xh-_context-menu-item-gap: var(--xh-control-gap-sm);
|
|
128
130
|
--xh-_context-menu-font-size: var(--xh-control-font-sm);
|
|
@@ -131,6 +133,7 @@
|
|
|
131
133
|
[data-scope='context-menu']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
132
134
|
--xh-icon-size: var(--xh-context-menu-icon-size, var(--xh-glyph-size-lg));
|
|
133
135
|
--xh-_context-menu-item-py: var(--xh-list-option-py-lg);
|
|
136
|
+
--xh-_context-menu-item-h: var(--xh-list-option-h-lg);
|
|
134
137
|
--xh-_context-menu-item-px: var(--xh-control-px-lg);
|
|
135
138
|
--xh-_context-menu-item-gap: var(--xh-control-gap-lg);
|
|
136
139
|
--xh-_context-menu-font-size: var(--xh-control-font-lg);
|
|
@@ -192,15 +195,16 @@
|
|
|
192
195
|
display: none;
|
|
193
196
|
}
|
|
194
197
|
|
|
195
|
-
/*
|
|
198
|
+
/* 分组标题不是条目、进不了导航,画成小号常规字重的次要文字,上方让出 8px 与上一组分开;
|
|
196
199
|
内缩与条目对齐(同一个 padding-inline),标题与条目文字才在一条竖线上 */
|
|
197
200
|
[data-scope='context-menu'][data-part='group-label'] {
|
|
198
201
|
display: block;
|
|
202
|
+
margin-block-start: var(--xh-context-menu-group-label-mt, var(--xh-space-2));
|
|
199
203
|
padding-block: var(--xh-context-menu-group-label-py, var(--xh-space-1));
|
|
200
204
|
padding-inline: var(--xh-context-menu-group-label-px, var(--xh-_context-menu-item-px));
|
|
201
205
|
color: var(--xh-context-menu-group-label-fg, var(--xh-material-frosted-fg-muted));
|
|
202
206
|
font-size: var(--xh-context-menu-group-label-font-size, var(--xh-text-caption-size));
|
|
203
|
-
font-weight: var(--xh-context-menu-group-label-font-weight, var(--xh-font-weight-
|
|
207
|
+
font-weight: var(--xh-context-menu-group-label-font-weight, var(--xh-font-weight-regular));
|
|
204
208
|
line-height: var(--xh-leading-none);
|
|
205
209
|
user-select: none;
|
|
206
210
|
}
|
|
@@ -215,10 +219,11 @@
|
|
|
215
219
|
子菜单箭头是行尾的伪元素;间距统一由行的 gap 给,家族按槽下发的外边距归零 */
|
|
216
220
|
[data-scope='context-menu'][data-part='item'] {
|
|
217
221
|
--xh-collection-block-padding: var(--xh-context-menu-item-py, var(--xh-_context-menu-item-py));
|
|
222
|
+
--xh-collection-row-h: var(--xh-context-menu-item-h, var(--xh-_context-menu-item-h));
|
|
218
223
|
--xh-collection-inline-padding: var(--xh-context-menu-item-px, var(--xh-_context-menu-item-px));
|
|
219
224
|
--xh-collection-gap: 0;
|
|
220
225
|
--xh-collection-font-size: var(--xh-context-menu-item-font-size, var(--xh-_context-menu-font-size));
|
|
221
|
-
--xh-collection-radius: var(--xh-context-menu-item-radius,
|
|
226
|
+
--xh-collection-radius: var(--xh-context-menu-item-radius, 0);
|
|
222
227
|
--xh-collection-fg-rest: var(--xh-context-menu-item-fg, var(--xh-material-frosted-fg));
|
|
223
228
|
--xh-collection-fg-hover: var(--xh-context-menu-item-fg, var(--xh-material-frosted-fg));
|
|
224
229
|
--xh-collection-fg-keyboard-highlight: var(--xh-context-menu-item-fg, var(--xh-material-frosted-fg));
|
|
@@ -261,7 +266,7 @@
|
|
|
261
266
|
margin-inline-start: auto;
|
|
262
267
|
inline-size: var(--xh-context-menu-submenu-indicator-size, var(--xh-control-indicator-size));
|
|
263
268
|
block-size: var(--xh-context-menu-submenu-indicator-size, var(--xh-control-indicator-size));
|
|
264
|
-
background-color: var(--xh-context-menu-submenu-indicator-fg,
|
|
269
|
+
background-color: var(--xh-context-menu-submenu-indicator-fg, currentColor);
|
|
265
270
|
-webkit-mask: var(--xh-glyph-mark-chevron-right) center / contain no-repeat;
|
|
266
271
|
mask: var(--xh-glyph-mark-chevron-right) center / contain no-repeat;
|
|
267
272
|
}
|