@xihan-ui/styles 2.0.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.
- package/CHANGELOG.md +101 -0
- package/component-tokens.d.ts +0 -15
- package/components.tokens.json +65 -396
- package/css/accordion.css +6 -6
- package/css/alert.css +2 -2
- package/css/anchor.css +3 -3
- package/css/approval.css +8 -8
- package/css/back-top.css +2 -2
- package/css/badge.css +1 -1
- package/css/breadcrumb.css +1 -1
- package/css/button-group.css +1 -1
- package/css/button.css +2 -2
- package/css/calendar-picker.css +8 -8
- package/css/calendar-range-picker.css +9 -9
- package/css/card.css +1 -1
- package/css/carousel.css +6 -6
- package/css/cascader.css +3 -5
- package/css/checkbox-group.css +10 -10
- package/css/checkbox.css +5 -5
- package/css/clipboard.css +4 -4
- package/css/code-view.css +2 -2
- package/css/collapsible.css +4 -4
- package/css/color-picker.css +2 -4
- package/css/color-slider.css +4 -4
- package/css/color-swatch-picker.css +5 -5
- package/css/combobox.css +2 -4
- package/css/command.css +3 -5
- package/css/context-menu.css +4 -6
- package/css/date-picker.css +0 -2
- package/css/date-range-picker.css +0 -2
- package/css/descriptions.css +1 -1
- package/css/dialog.css +5 -7
- package/css/diff-view.css +4 -4
- package/css/download-trigger.css +3 -3
- package/css/drawer.css +9 -15
- package/css/empty-state.css +1 -1
- package/css/field.css +1 -1
- package/css/fieldset.css +1 -1
- package/css/file-upload.css +1 -1
- package/css/float-button.css +3 -3
- package/css/floating-panel.css +6 -8
- package/css/form.css +3 -3
- package/css/heatmap.css +1 -1
- package/css/hover-card.css +2 -4
- package/css/image-cropper.css +2 -2
- package/css/image-viewer.css +2 -4
- package/css/infinite-scroll.css +2 -2
- package/css/input-group.css +2 -2
- package/css/json-viewer.css +5 -5
- package/css/kbd.css +1 -1
- package/css/layout.css +3 -3
- package/css/list.css +1 -1
- package/css/listbox.css +26 -17
- package/css/log.css +2 -2
- package/css/mention.css +0 -2
- package/css/menu.css +5 -7
- package/css/menubar.css +6 -8
- package/css/message-feed.css +2 -2
- package/css/navigation-menu.css +5 -7
- package/css/notification.css +3 -3
- package/css/page-header.css +1 -1
- package/css/pagination.css +5 -7
- package/css/popconfirm.css +6 -8
- package/css/popover.css +5 -7
- package/css/prompt-input.css +1 -1
- package/css/question-flow.css +7 -7
- package/css/radio-group.css +9 -9
- package/css/rating.css +4 -4
- package/css/reasoning.css +5 -5
- package/css/reset.css +1 -1
- package/css/segmented.css +7 -7
- package/css/select.css +2 -4
- package/css/side-nav.css +4 -6
- package/css/signature-pad.css +7 -7
- package/css/slider.css +5 -5
- package/css/sortable.css +1 -1
- package/css/splitter.css +1 -1
- package/css/steps.css +10 -10
- package/css/switch.css +8 -8
- package/css/table.css +11 -11
- package/css/tabs.css +12 -12
- package/css/tag-group.css +39 -35
- package/css/tag.css +2 -2
- package/css/time-picker.css +0 -2
- package/css/time-range-picker.css +0 -2
- package/css/toast.css +3 -3
- package/css/toggle-group.css +4 -4
- package/css/toggle.css +2 -2
- package/css/tool-call.css +5 -5
- package/css/toolbar.css +4 -4
- package/css/tooltip.css +4 -6
- package/css/tour.css +7 -9
- package/css/transfer.css +6 -6
- package/css/tree-select.css +3 -5
- package/css/tree.css +46 -99
- package/css/virtualizer.css +1 -1
- package/family/collection-item.css +61 -12
- package/family/motion.css +1 -1
- package/index.css +506 -553
- package/index.unlayered.css +506 -553
- package/package.json +2 -2
package/index.css
CHANGED
|
@@ -1119,8 +1119,13 @@
|
|
|
1119
1119
|
font-size: var(--xh-collection-description-font-size, var(--xh-control-caption-md));
|
|
1120
1120
|
}
|
|
1121
1121
|
|
|
1122
|
+
/* 快捷键提示:与说明同档同色的次级文字,只是落位在行尾而不是第 2 行。
|
|
1123
|
+
不换行——它是一串按键记号,折行会被读成两个组合。跟着 description 那支前景走,因此也不跟语气。 */
|
|
1122
1124
|
[data-xh-collection-slot='shortcut'] {
|
|
1123
1125
|
grid-column: shortcut;
|
|
1126
|
+
color: var(--xh-_collection-description-fg);
|
|
1127
|
+
font-size: var(--xh-collection-shortcut-font-size, var(--xh-control-caption-md));
|
|
1128
|
+
white-space: nowrap;
|
|
1124
1129
|
}
|
|
1125
1130
|
|
|
1126
1131
|
[data-xh-collection-slot='suffix'] {
|
|
@@ -1140,20 +1145,9 @@
|
|
|
1140
1145
|
margin-inline-start: var(--xh-collection-gap, var(--xh-_collection-gap));
|
|
1141
1146
|
}
|
|
1142
1147
|
|
|
1143
|
-
/* page
|
|
1148
|
+
/* page 上下文:对号与 overlay 同在行尾的 indicator 列(trailing);当前项的起始侧指示条按配方开关(none),none 即只由行面与字色表达。 */
|
|
1144
1149
|
[data-xh-collection-item][data-xh-collection-context='page'] {
|
|
1145
1150
|
position: relative;
|
|
1146
|
-
grid-template-columns:
|
|
1147
|
-
[indicator] max-content
|
|
1148
|
-
[prefix] max-content
|
|
1149
|
-
[text] minmax(0, 1fr)
|
|
1150
|
-
[shortcut] max-content
|
|
1151
|
-
[suffix] max-content;
|
|
1152
|
-
}
|
|
1153
|
-
|
|
1154
|
-
[data-xh-collection-item][data-xh-collection-context='page'] [data-xh-collection-slot='indicator'] {
|
|
1155
|
-
margin-inline-start: 0;
|
|
1156
|
-
margin-inline-end: var(--xh-collection-gap, var(--xh-_collection-gap));
|
|
1157
1151
|
}
|
|
1158
1152
|
|
|
1159
1153
|
[data-xh-collection-item][data-in-path] {
|
|
@@ -1204,6 +1198,31 @@
|
|
|
1204
1198
|
transition-timing-function: var(--xh-motion-ease-press);
|
|
1205
1199
|
}
|
|
1206
1200
|
|
|
1201
|
+
/* 语气段:条目自身动作的性质,静息只换字、hover / 高亮 / 按下换语气淡底,节奏与中性行一致。
|
|
1202
|
+
必须排在上下文段之前:语气与 selected / current 同特指度,靠源序让选中与当前压过语气。 */
|
|
1203
|
+
[data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
|
|
1204
|
+
--xh-_collection-bg: transparent;
|
|
1205
|
+
--xh-_collection-fg: var(--xh-tone-fg);
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
[data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
|
|
1209
|
+
--xh-_collection-bg: var(--xh-tone-subtle);
|
|
1210
|
+
--xh-_collection-fg: var(--xh-tone-fg);
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
[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]) {
|
|
1214
|
+
--xh-_collection-bg: var(--xh-tone-subtle);
|
|
1215
|
+
--xh-_collection-fg: var(--xh-tone-fg);
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
[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]) {
|
|
1219
|
+
--xh-_collection-bg: var(--xh-tone-subtle-hover);
|
|
1220
|
+
--xh-_collection-fg: var(--xh-tone-fg);
|
|
1221
|
+
|
|
1222
|
+
transition-duration: var(--xh-motion-duration-press);
|
|
1223
|
+
transition-timing-function: var(--xh-motion-ease-press);
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1207
1226
|
[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]) {
|
|
1208
1227
|
--xh-_collection-bg: var(--xh-collection-bg-selected, transparent);
|
|
1209
1228
|
--xh-_collection-fg: var(--xh-collection-fg-selected, var(--xh-material-frosted-fg));
|
|
@@ -1551,6 +1570,36 @@
|
|
|
1551
1570
|
--xh-_collection-indicator-fg: HighlightText;
|
|
1552
1571
|
}
|
|
1553
1572
|
|
|
1573
|
+
/* 语气在强制颜色下退出:逐态用系统色盖回家族缺省,只留图标与文案通道。
|
|
1574
|
+
语气段在媒体查询外的特指度比这里的基础态各高一级,必须逐条同形盖回,不能只写一条。 */
|
|
1575
|
+
[data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]) {
|
|
1576
|
+
--xh-_collection-bg: Canvas;
|
|
1577
|
+
--xh-_collection-fg: CanvasText;
|
|
1578
|
+
--xh-_collection-outline: transparent;
|
|
1579
|
+
--xh-_collection-indicator-fg: ButtonText;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
[data-xh-collection-item][data-tone]:not([data-xh-collection-context='nav']):not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):hover {
|
|
1583
|
+
--xh-_collection-bg: Highlight;
|
|
1584
|
+
--xh-_collection-fg: HighlightText;
|
|
1585
|
+
--xh-_collection-outline: transparent;
|
|
1586
|
+
--xh-_collection-indicator-fg: HighlightText;
|
|
1587
|
+
}
|
|
1588
|
+
|
|
1589
|
+
[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]) {
|
|
1590
|
+
--xh-_collection-bg: Canvas;
|
|
1591
|
+
--xh-_collection-fg: CanvasText;
|
|
1592
|
+
--xh-_collection-outline: Highlight;
|
|
1593
|
+
--xh-_collection-indicator-fg: Highlight;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
[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]) {
|
|
1597
|
+
--xh-_collection-bg: Highlight;
|
|
1598
|
+
--xh-_collection-fg: HighlightText;
|
|
1599
|
+
--xh-_collection-outline: transparent;
|
|
1600
|
+
--xh-_collection-indicator-fg: HighlightText;
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1554
1603
|
[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]) {
|
|
1555
1604
|
--xh-_collection-bg: Canvas;
|
|
1556
1605
|
--xh-_collection-fg: CanvasText;
|
|
@@ -1795,7 +1844,7 @@
|
|
|
1795
1844
|
/* family/motion.css */
|
|
1796
1845
|
/* 定义 motion 样式。 */
|
|
1797
1846
|
|
|
1798
|
-
/*
|
|
1847
|
+
/* 共享关键帧的唯一真源。
|
|
1799
1848
|
*
|
|
1800
1849
|
* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
1801
1850
|
* 动画会静默地整个不跑。所以引用这里任一名字的皮肤都 @import 本文件,单独引入那份皮肤时
|
|
@@ -2136,7 +2185,7 @@
|
|
|
2136
2185
|
}
|
|
2137
2186
|
|
|
2138
2187
|
/* —— 触发器 ——
|
|
2139
|
-
浮在内容之上的单图标圆钮,接 Action Control floating
|
|
2188
|
+
浮在内容之上的单图标圆钮,接 Action Control floating 档:盒型(md = box-lg 48px,圆形)、
|
|
2140
2189
|
四态面、0.97 按压与 44px 命中区由家族配方按 data-xh-action-variant / -size 给出。
|
|
2141
2190
|
这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射。
|
|
2142
2191
|
整件只有这一颗按钮,槽名与其余一样不带部件段(照 float-button 的 --xh-float-button-size) */
|
|
@@ -2155,7 +2204,7 @@
|
|
|
2155
2204
|
--xh-action-border-pressed: var(--xh-back-top-border-hover, var(--xh-_action-variant-border-pressed));
|
|
2156
2205
|
--xh-action-border-focus-visible: var(--xh-back-top-border, var(--xh-_action-variant-border-focus-visible));
|
|
2157
2206
|
--xh-action-border-disabled: var(--xh-back-top-border, var(--xh-_action-variant-border-disabled));
|
|
2158
|
-
/*
|
|
2207
|
+
/* 矩阵各态无影(淡底与阴影互斥);outline 那一档的磨砂投影在下面另桥接 */
|
|
2159
2208
|
--xh-action-shadow-rest: var(--xh-back-top-shadow, none);
|
|
2160
2209
|
--xh-action-shadow-hover: var(--xh-back-top-shadow, none);
|
|
2161
2210
|
--xh-action-shadow-pressed: var(--xh-back-top-shadow, none);
|
|
@@ -2457,7 +2506,7 @@
|
|
|
2457
2506
|
}
|
|
2458
2507
|
|
|
2459
2508
|
/* 独立 Button 按下时缩一档;组内段却靠共边重叠一像素,单段缩放会同时撕开两侧接缝。
|
|
2460
|
-
组内仍保留 active 换底与撤高光,只把会改变外轮廓几何的 scale
|
|
2509
|
+
组内仍保留 active 换底与撤高光,只把会改变外轮廓几何的 scale 收掉(允许的只换面);
|
|
2461
2510
|
键盘与触屏的按压由 Headless 投影 data-pressed,与指针 :active 同一档。 */
|
|
2462
2511
|
[data-scope='button-group'][data-part='root']
|
|
2463
2512
|
> [data-scope='button'][data-part='root']:not([data-disabled]):not([data-loading]):is(:active, [data-pressed]),
|
|
@@ -2507,7 +2556,7 @@
|
|
|
2507
2556
|
/* 一个尺寸档只换这几个私有槽,每一格与格内两段都从根上继承它们,
|
|
2508
2557
|
换档不必给每个部件各写一条选择器 */
|
|
2509
2558
|
--xh-_descriptions-gap: var(--xh-space-3);
|
|
2510
|
-
/* 标签是每一格的集合标题:叠着排时与取值隔 space-2
|
|
2559
|
+
/* 标签是每一格的集合标题:叠着排时与取值隔 space-2(集合标题与集合的间距) */
|
|
2511
2560
|
--xh-_descriptions-pair-gap: var(--xh-space-2);
|
|
2512
2561
|
--xh-_descriptions-label-gap: var(--xh-space-2);
|
|
2513
2562
|
--xh-_descriptions-py: var(--xh-space-2);
|
|
@@ -2759,10 +2808,10 @@
|
|
|
2759
2808
|
--xh-diff-view-skin: 1;
|
|
2760
2809
|
}
|
|
2761
2810
|
|
|
2762
|
-
/* 一张静态内容面:--xh-border-default 描边 + surface 底 +
|
|
2811
|
+
/* 一张静态内容面:--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担);
|
|
2763
2812
|
头部、行号列与并排接缝的内部分隔线走另一支 --xh-diff-view-divider(subtle) */
|
|
2764
2813
|
[data-scope='diff-view'][data-part='root'] {
|
|
2765
|
-
/* 作者塞进部件里的图标与皮肤画的兜底字形同一把尺:md 档,随 data-size
|
|
2814
|
+
/* 作者塞进部件里的图标与皮肤画的兜底字形同一把尺:md 档,随 data-size 换档 */
|
|
2766
2815
|
--xh-icon-size: var(--xh-diff-view-icon-size, var(--xh-glyph-size-md));
|
|
2767
2816
|
|
|
2768
2817
|
/* 尺寸缺省档:不写 data-size 时的取值。三档都只写这三个私有槽,
|
|
@@ -3003,7 +3052,7 @@
|
|
|
3003
3052
|
color: var(--xh-diff-view-punctuation-fg, var(--xh-fg-subtle));
|
|
3004
3053
|
}
|
|
3005
3054
|
|
|
3006
|
-
/* 折起来的那一行:整行都是展开按钮。行是淡底承载面,向按钮下发 hover 200 → pressed 300
|
|
3055
|
+
/* 折起来的那一行:整行都是展开按钮。行是淡底承载面,向按钮下发 hover 200 → pressed 300 */
|
|
3007
3056
|
[data-scope='diff-view'][data-part='gap'] {
|
|
3008
3057
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
3009
3058
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -3021,7 +3070,7 @@
|
|
|
3021
3070
|
}
|
|
3022
3071
|
|
|
3023
3072
|
/* 展开按钮铺满折叠格,盒型、悬停与按下面由 Action Control 的 disclosure-trigger 档给(ghost 形态,
|
|
3024
|
-
|
|
3073
|
+
按下只换面不缩放);这里只把使用者槽映射到桥接槽:圆角归零贴住格边、纵向内衬归零、
|
|
3025
3074
|
高度锚在代码行高上让折叠格与相邻代码行同高,字号跟着正文走 */
|
|
3026
3075
|
[data-scope='diff-view'][data-part='gap-trigger'] {
|
|
3027
3076
|
--xh-action-radius: 0;
|
|
@@ -3203,7 +3252,7 @@
|
|
|
3203
3252
|
}
|
|
3204
3253
|
|
|
3205
3254
|
/*
|
|
3206
|
-
*
|
|
3255
|
+
* 触发器就是这一个原生按钮,是定尺的独立动作按钮:盒型、三档几何、四态面、0.97 按压与粗指针
|
|
3207
3256
|
* 命中区由家族配方按 data-xh-action-variant / -size 给出(缺省 subtle 由连接层显式投影,只有 solid 才品牌实心)。
|
|
3208
3257
|
* 这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射;
|
|
3209
3258
|
* 要换成品牌样式的作者改 --xh-download-trigger-* 这一族槽位,或直接写自己的类名。
|
|
@@ -3225,7 +3274,7 @@
|
|
|
3225
3274
|
--xh-action-border-pressed: var(--xh-download-trigger-border-hover, var(--xh-_action-variant-border-pressed));
|
|
3226
3275
|
--xh-action-border-focus-visible: var(--xh-download-trigger-border, var(--xh-_action-variant-border-focus-visible));
|
|
3227
3276
|
--xh-action-border-disabled: var(--xh-download-trigger-border-disabled, var(--xh-_action-variant-border-disabled));
|
|
3228
|
-
/*
|
|
3277
|
+
/* 矩阵各态无影(淡底与阴影互斥):solid 也不再悬停抬影,使用者槽仍可自行加 */
|
|
3229
3278
|
--xh-action-shadow-hover: var(--xh-download-trigger-shadow-hover, none);
|
|
3230
3279
|
--xh-action-radius: var(--xh-download-trigger-radius, var(--xh-shape-control));
|
|
3231
3280
|
--xh-action-visual-size: var(--xh-download-trigger-h, var(--xh-_action-profile-visual-size));
|
|
@@ -3289,7 +3338,7 @@
|
|
|
3289
3338
|
margin: auto;
|
|
3290
3339
|
border: var(--xh-stroke-thin) solid transparent;
|
|
3291
3340
|
border-block-start-color: var(--xh-_download-trigger-loading-fg);
|
|
3292
|
-
/* 正圆的加载环:正方盒取 circle
|
|
3341
|
+
/* 正圆的加载环:正方盒取 circle */
|
|
3293
3342
|
border-radius: var(--xh-shape-circle);
|
|
3294
3343
|
opacity: 0;
|
|
3295
3344
|
animation:
|
|
@@ -3567,7 +3616,7 @@
|
|
|
3567
3616
|
[data-scope='fieldset'][data-part='legend'] {
|
|
3568
3617
|
padding: 0;
|
|
3569
3618
|
margin-block-end: var(--xh-fieldset-legend-gap, var(--xh-space-2));
|
|
3570
|
-
/*
|
|
3619
|
+
/* 组标题是「一组字段的标题」,归集合标题角色:fg-muted,与组 --xh-space-2,字号字重同字段标签 */
|
|
3571
3620
|
color: var(--xh-fieldset-legend-fg, var(--xh-fg-muted));
|
|
3572
3621
|
font-size: var(--xh-fieldset-legend-font-size, var(--xh-text-label-size));
|
|
3573
3622
|
font-weight: var(--xh-fieldset-legend-font-weight, var(--xh-text-label-weight));
|
|
@@ -3838,7 +3887,7 @@
|
|
|
3838
3887
|
/* —— 形态:给展开列表里原生动作项用的面 ——
|
|
3839
3888
|
触发器的面由 Action Control 形态矩阵按 data-xh-action-variant 给(solid / subtle / ghost),
|
|
3840
3889
|
原生动作项读不到矩阵,这几块私有槽按矩阵同一张表镜像;ghost 与 outline 的悬停 / 按下走画布承载的
|
|
3841
|
-
阶梯(100 → 200
|
|
3890
|
+
阶梯(100 → 200)。缺省 outline(连接层不传 variant 时显式落)是磨砂面:背景、边缘、
|
|
3842
3891
|
顶光、投影与磨砂从同一份 M2 配方取,高对比、减少透明度、打印和强制色便能一起降级——钮浮在正文
|
|
3843
3892
|
之上,透空的面在任何内容上都读不出边界,所以 outline 这一档面留着 */
|
|
3844
3893
|
[data-scope='float-button'][data-part='root'][data-variant='solid'] {
|
|
@@ -3882,7 +3931,7 @@
|
|
|
3882
3931
|
}
|
|
3883
3932
|
|
|
3884
3933
|
/* —— 触发器 ——
|
|
3885
|
-
浮在内容之上的单图标圆钮,接 Action Control floating
|
|
3934
|
+
浮在内容之上的单图标圆钮,接 Action Control floating 档:盒型(md = box-lg 48px,圆形)、
|
|
3886
3935
|
四态面、0.97 按压与 44px 命中区由家族配方按 data-xh-action-variant / -size 给出。
|
|
3887
3936
|
这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射 */
|
|
3888
3937
|
[data-scope='float-button'][data-part='trigger'] {
|
|
@@ -3900,7 +3949,7 @@
|
|
|
3900
3949
|
--xh-action-border-pressed: var(--xh-float-button-border-hover, var(--xh-_action-variant-border-pressed));
|
|
3901
3950
|
--xh-action-border-focus-visible: var(--xh-float-button-border, var(--xh-_action-variant-border-focus-visible));
|
|
3902
3951
|
--xh-action-border-disabled: var(--xh-float-button-border, var(--xh-_action-variant-border-disabled));
|
|
3903
|
-
/*
|
|
3952
|
+
/* 矩阵各态无影(淡底与阴影互斥);outline 那一档的磨砂投影在下面另桥接 */
|
|
3904
3953
|
--xh-action-shadow-rest: var(--xh-float-button-shadow, none);
|
|
3905
3954
|
--xh-action-shadow-hover: var(--xh-float-button-shadow, none);
|
|
3906
3955
|
--xh-action-shadow-pressed: var(--xh-float-button-shadow, none);
|
|
@@ -4099,7 +4148,7 @@
|
|
|
4099
4148
|
皮肤只管层级、配色、圆角、阴影、把手的摆放与状态表现。 */
|
|
4100
4149
|
|
|
4101
4150
|
[data-scope='floating-panel'][data-part='root'] {
|
|
4102
|
-
/*
|
|
4151
|
+
/* 作者塞进面板里的图标按控件档取;标题栏上的按钮另由家族配方按各自的档下发字形尺 */
|
|
4103
4152
|
--xh-icon-size: var(--xh-floating-panel-icon-size, var(--xh-glyph-size-md));
|
|
4104
4153
|
|
|
4105
4154
|
/* 面板本身是 fixed 定位,root 只是作者那棵树里的容器,不参与排布 */
|
|
@@ -4117,7 +4166,7 @@
|
|
|
4117
4166
|
}
|
|
4118
4167
|
|
|
4119
4168
|
/*
|
|
4120
|
-
*
|
|
4169
|
+
* 开合触发器是页面上的独立文字按钮:盒型、md 档几何、outline 四态面、0.97 按压并换底与粗指针命中区
|
|
4121
4170
|
* 由家族配方按连接层投影的 data-xh-action-variant / -size 给出(此前只缩放不换底)。这里只把公开槽桥接到
|
|
4122
4171
|
* 矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射。
|
|
4123
4172
|
*/
|
|
@@ -4162,9 +4211,7 @@
|
|
|
4162
4211
|
面板整棵子树都在 positioner 底下,它一收就不生成盒子,退场动画一帧都播不出来。
|
|
4163
4212
|
真正的收起由宿主在退场结束后落成内联 display:none。 */
|
|
4164
4213
|
|
|
4165
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
4166
4214
|
[data-scope='floating-panel'][data-part='positioner'][data-state='open'] {
|
|
4167
|
-
will-change: opacity, scale;
|
|
4168
4215
|
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
4169
4216
|
}
|
|
4170
4217
|
|
|
@@ -4237,7 +4284,7 @@
|
|
|
4237
4284
|
display: none;
|
|
4238
4285
|
}
|
|
4239
4286
|
|
|
4240
|
-
/*
|
|
4287
|
+
/* 浮层内标题:14 / 600 */
|
|
4241
4288
|
[data-scope='floating-panel'][data-part='title'] {
|
|
4242
4289
|
margin: 0;
|
|
4243
4290
|
flex: 1 1 auto;
|
|
@@ -4354,7 +4401,7 @@
|
|
|
4354
4401
|
|
|
4355
4402
|
/*
|
|
4356
4403
|
* —— 标题栏上的按钮 ——
|
|
4357
|
-
*
|
|
4404
|
+
* 形态钮与关闭钮是标题栏上的单图标钮:正方盒、sm 档几何、ghost 四态面、0.97 按压并换底与粗指针
|
|
4358
4405
|
* 命中区由家族配方给出——磨砂白面上走画布承载阶梯悬停 --xh-bg-subtle(100)→ 按下 --xh-bg-subtle-hover(200),
|
|
4359
4406
|
* 焦点面透明吃库环。这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省);
|
|
4360
4407
|
* 静息前景取磨砂面的 muted 字色,悬停 / 按下回到 fg-default。
|
|
@@ -4387,7 +4434,7 @@
|
|
|
4387
4434
|
display: none;
|
|
4388
4435
|
}
|
|
4389
4436
|
|
|
4390
|
-
/* 当前形态的那颗钮是按下的开关(aria-pressed),无滑块开关的 on
|
|
4437
|
+
/* 当前形态的那颗钮是按下的开关(aria-pressed),无滑块开关的 on 态取品牌淡底:
|
|
4391
4438
|
rest 12% → hover 20% → pressed 28%,前景一律 --xh-fg-on-brand-subtle(对比度由该令牌承担);
|
|
4392
4439
|
淡底不是实心面,焦点吃库环 */
|
|
4393
4440
|
[data-scope='floating-panel'][data-part='window-state-trigger'][data-state='on'] {
|
|
@@ -4408,7 +4455,7 @@
|
|
|
4408
4455
|
}
|
|
4409
4456
|
}
|
|
4410
4457
|
|
|
4411
|
-
/* 正文是浮在页面之上的 Overlay
|
|
4458
|
+
/* 正文是浮在页面之上的 Overlay 滚动面:原生细条由 reset 层统一给,滚到头不把页面一起带走;
|
|
4412
4459
|
内容高度不动态变化,不写 scrollbar-gutter */
|
|
4413
4460
|
[data-scope='floating-panel'][data-part='body'] {
|
|
4414
4461
|
flex: 1 1 auto;
|
|
@@ -5830,7 +5877,7 @@
|
|
|
5830
5877
|
padding-block: var(--xh-heatmap-tooltip-py, var(--xh-space-1));
|
|
5831
5878
|
padding-inline: var(--xh-heatmap-tooltip-px, var(--xh-space-2));
|
|
5832
5879
|
border-radius: var(--xh-heatmap-tooltip-radius, var(--xh-shape-control));
|
|
5833
|
-
/* 与 Tooltip
|
|
5880
|
+
/* 与 Tooltip 同一副反白气泡:任何浮层都得有一圈非透明描边,描边从字色里兑两成,
|
|
5834
5881
|
深浅主题与语气换色时跟着字色走;影走 frosted 紧凑档,与 Tooltip 的 content 同深 */
|
|
5835
5882
|
border: var(--xh-stroke-thin) solid var(--xh-heatmap-tooltip-border, color-mix(in oklab, var(--xh-heatmap-tooltip-fg, var(--xh-bg-surface)) 20%, transparent));
|
|
5836
5883
|
background: var(--xh-heatmap-tooltip-bg, var(--xh-fg-default));
|
|
@@ -6114,7 +6161,7 @@
|
|
|
6114
6161
|
background: var(--xh-kbd-bg, var(--xh-bg-subtle));
|
|
6115
6162
|
color: var(--xh-kbd-fg, var(--xh-fg-muted));
|
|
6116
6163
|
font-family: var(--xh-kbd-font, inherit);
|
|
6117
|
-
/* 快捷键是次级标注,字号取 caption
|
|
6164
|
+
/* 快捷键是次级标注,字号取 caption 档 */
|
|
6118
6165
|
font-size: var(--xh-kbd-font-size, var(--xh-text-caption-size));
|
|
6119
6166
|
font-weight: var(--xh-kbd-font-weight, var(--xh-font-weight-medium));
|
|
6120
6167
|
line-height: var(--xh-leading-none);
|
|
@@ -6219,7 +6266,7 @@
|
|
|
6219
6266
|
}
|
|
6220
6267
|
|
|
6221
6268
|
/* 圆形裁切取 circle 档(50%):shape 的固定长度档画出来是胶囊不是椭圆,
|
|
6222
|
-
|
|
6269
|
+
裁切框的宽高由数据决定、两边通常不等长,只有百分比才随框变成椭圆;圆角只能来自语义形状令牌 */
|
|
6223
6270
|
[data-scope='image-cropper'][data-part='crop-area'][data-shape='round'] {
|
|
6224
6271
|
--xh-_image-cropper-corner-radius: var(--xh-shape-circle);
|
|
6225
6272
|
|
|
@@ -6303,7 +6350,7 @@
|
|
|
6303
6350
|
content: '';
|
|
6304
6351
|
}
|
|
6305
6352
|
|
|
6306
|
-
/* 把手静息是白面(bg-surface
|
|
6353
|
+
/* 把手静息是白面(bg-surface),悬停从同一语义面派生一档,不切到品牌淡底;拖动中才是品牌实心 */
|
|
6307
6354
|
[data-scope='image-cropper'][data-part='crop-handle']:hover:not([data-disabled], [data-readonly]) {
|
|
6308
6355
|
--xh-_image-cropper-handle-color: var(--xh-image-cropper-handle-bg-hover, var(--xh-bg-subtle));
|
|
6309
6356
|
}
|
|
@@ -6539,11 +6586,11 @@
|
|
|
6539
6586
|
|
|
6540
6587
|
/*
|
|
6541
6588
|
* 取下一页的按钮:与哨兵同一条通路的键盘入口,摆在列表末尾自成一行——铺满一行的独立动作条目,
|
|
6542
|
-
* 接 Action Control 的 row 档、outline
|
|
6589
|
+
* 接 Action Control 的 row 档、outline 形态:宽度由容器给、高度随内容、按下只换面不缩放;
|
|
6543
6590
|
* 盒几何、中性描边与透明底、悬停 / 按下 / 禁用面、焦点环与粗指针热区全由家族给,
|
|
6544
6591
|
* 白底承载 hover 100 → pressed 200。这里只把使用者槽映射到桥接槽,并把文案居中:
|
|
6545
6592
|
* 它是一行里唯一的东西,靠起始缘会像一条没对齐的列表项。
|
|
6546
|
-
* 行高不吃家族的单行档:row
|
|
6593
|
+
* 行高不吃家族的单行档:row 档允许换行、高度随内容,折行的文案走正文行高
|
|
6547
6594
|
*/
|
|
6548
6595
|
[data-scope='infinite-scroll'][data-part='load-more-trigger'] {
|
|
6549
6596
|
--xh-action-gap: var(--xh-infinite-scroll-load-more-gap, var(--xh-_action-profile-gap));
|
|
@@ -6598,7 +6645,7 @@
|
|
|
6598
6645
|
--xh-_input-group-font-size: var(--xh-control-font-md);
|
|
6599
6646
|
--xh-_input-group-bg: transparent;
|
|
6600
6647
|
--xh-_input-group-bg-hover: color-mix(in oklab, var(--xh-bg-subtle) 45%, transparent);
|
|
6601
|
-
/* 组壳按字段外壳画 outline
|
|
6648
|
+
/* 组壳按字段外壳画 outline 描边:静息 --xh-border-control、悬停升 -hover、聚焦换 -focus,无影 */
|
|
6602
6649
|
--xh-_input-group-border: var(--xh-border-control);
|
|
6603
6650
|
--xh-_input-group-border-hover: var(--xh-border-control-hover);
|
|
6604
6651
|
--xh-_input-group-border-focus: var(--xh-border-control-focus);
|
|
@@ -6631,7 +6678,7 @@
|
|
|
6631
6678
|
transition: border-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
6632
6679
|
}
|
|
6633
6680
|
|
|
6634
|
-
/* subtle:淡底顶替描边表达边界,描边只退成透明而不去掉;悬停浮出 --xh-border-control
|
|
6681
|
+
/* subtle:淡底顶替描边表达边界,描边只退成透明而不去掉;悬停浮出 --xh-border-control */
|
|
6635
6682
|
[data-scope='input-group'][data-part='root'][data-variant='subtle'] {
|
|
6636
6683
|
--xh-_input-group-bg: var(--xh-bg-subtle);
|
|
6637
6684
|
--xh-_input-group-bg-hover: var(--xh-bg-subtle-hover);
|
|
@@ -6863,7 +6910,7 @@
|
|
|
6863
6910
|
/* 缺省态(md 档)。等宽字体让层级缩进与值的长度对得齐。
|
|
6864
6911
|
逐类型配色走 --xh-syntax-* 语法令牌,与代码块的记号色同源、随主题明暗切换。 */
|
|
6865
6912
|
[data-scope='json-viewer'][data-part='root'] {
|
|
6866
|
-
/* 作者放进空态格里的图标按档取尺,缺省 md,随 data-size
|
|
6913
|
+
/* 作者放进空态格里的图标按档取尺,缺省 md,随 data-size 换档。
|
|
6867
6914
|
查看器自绘的状态字形(分支行首的展开方向 chevron)不读这支:它是指示符,与所在的把手盒同走
|
|
6868
6915
|
--xh-control-indicator-* 一族——branch-trigger 在自己身上把 --xh-icon-size 改接到盒的尺 */
|
|
6869
6916
|
--xh-icon-size: var(--xh-json-viewer-icon-size, var(--xh-glyph-size-md));
|
|
@@ -6884,7 +6931,7 @@
|
|
|
6884
6931
|
display: none;
|
|
6885
6932
|
}
|
|
6886
6933
|
|
|
6887
|
-
/* 面画在两档容器与空态格上,root
|
|
6934
|
+
/* 面画在两档容器与空态格上,root 只是壳。三档按边界三选一:outline 即基础规则
|
|
6888
6935
|
(--xh-border-default 描边 + surface 底 + 无影);淡底档描边透明、底换 subtle;
|
|
6889
6936
|
无框档边框留着但透明——去掉外框不会让行的位置跳一格 */
|
|
6890
6937
|
[data-scope='json-viewer'][data-part='root'][data-variant='subtle']
|
|
@@ -6915,7 +6962,7 @@
|
|
|
6915
6962
|
}
|
|
6916
6963
|
|
|
6917
6964
|
/* 常驻容器不是浮层:两轴都可能溢出——深层缩进往行首方向推、长字符串往行尾伸;
|
|
6918
|
-
页内结构容器走 reset
|
|
6965
|
+
页内结构容器走 reset 层的原生细条,不写 overscroll */
|
|
6919
6966
|
[data-scope='json-viewer'][data-part='tree'] {
|
|
6920
6967
|
display: flex;
|
|
6921
6968
|
flex-direction: column;
|
|
@@ -7003,7 +7050,7 @@
|
|
|
7003
7050
|
user-select: none;
|
|
7004
7051
|
}
|
|
7005
7052
|
|
|
7006
|
-
/* 按下只换面不缩放:白底承载 hover 100 → pressed 200
|
|
7053
|
+
/* 按下只换面不缩放:白底承载 hover 100 → pressed 200(集合行不允许零反馈);
|
|
7007
7054
|
指针按住由 :active 表出,Space / Enter 与触屏按住由 Headless 投影 data-pressed,三种输入同一副面 */
|
|
7008
7055
|
[data-scope='json-viewer'][data-part='branch-control']:not([data-disabled]):is(:active, [data-pressed]) {
|
|
7009
7056
|
background: var(--xh-json-viewer-row-bg-active, var(--xh-bg-subtle-hover));
|
|
@@ -7063,7 +7110,7 @@
|
|
|
7063
7110
|
}
|
|
7064
7111
|
|
|
7065
7112
|
/* 展开箭头与勾选标记同宽,两种行的文字起点才对得齐。
|
|
7066
|
-
盒里的 chevron
|
|
7113
|
+
盒里的 chevron 是指示符:与盒同边长,--xh-icon-size 在自己身上改接到盒的尺——
|
|
7067
7114
|
root 那支只管作者图标的 --xh-json-viewer-icon-size 不流进来,按图标档取的 20px 会比 16px 的盒还大;
|
|
7068
7115
|
branch-indicator 由适配器固定渲染在这颗把手里,继承即可 */
|
|
7069
7116
|
[data-scope='json-viewer'][data-part='branch-trigger'] {
|
|
@@ -7268,7 +7315,7 @@
|
|
|
7268
7315
|
}
|
|
7269
7316
|
|
|
7270
7317
|
/* 宽度过渡在这里声明一次,展开与折叠两档、以及 props 直接写进内联的宽度,走的都是这一条。
|
|
7271
|
-
占位档的侧栏是淡底承载面:把手摆进来时由它下发 hover 200 → pressed 300
|
|
7318
|
+
占位档的侧栏是淡底承载面:把手摆进来时由它下发 hover 200 → pressed 300;
|
|
7272
7319
|
覆盖档换成 elevated 白底,那一档的规则把阶梯写回 100 → 200 */
|
|
7273
7320
|
[data-scope='layout'][data-part='sider'] {
|
|
7274
7321
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
@@ -7395,7 +7442,7 @@
|
|
|
7395
7442
|
写成槽位而不是写死 ±100%:贴边用的是逻辑 inset,RTL 下行首落在物理右边,
|
|
7396
7443
|
位移若写死物理方向就会出现「贴在右边、却从左边滑进来」 */
|
|
7397
7444
|
--xh-_layout-sheet-shift: -100%;
|
|
7398
|
-
/* 这一档的底是 elevated
|
|
7445
|
+
/* 这一档的底是 elevated 白底:交互阶梯按承载面走,把上面占位档下发的 200 → 300 写回
|
|
7399
7446
|
白底的 hover 100 → pressed 200 */
|
|
7400
7447
|
--xh-action-host-bg-hover: var(--xh-bg-subtle);
|
|
7401
7448
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-hover);
|
|
@@ -7421,7 +7468,7 @@
|
|
|
7421
7468
|
env(safe-area-inset-left),
|
|
7422
7469
|
env(safe-area-inset-right)
|
|
7423
7470
|
);
|
|
7424
|
-
/* 盖在内容之上、带遮罩的一面走 sheet
|
|
7471
|
+
/* 盖在内容之上、带遮罩的一面走 sheet 三件套(--xh-material-elevated-bg / -border / -shadow),
|
|
7425
7472
|
贴着内容那一侧描一条边;占位档的侧栏不画投影 */
|
|
7426
7473
|
border-inline-end: var(--xh-stroke-thin) solid var(--xh-layout-border, var(--xh-material-elevated-border));
|
|
7427
7474
|
background: var(--xh-layout-sider-bg, var(--xh-material-elevated-bg));
|
|
@@ -7514,7 +7561,7 @@
|
|
|
7514
7561
|
--xh-_list-item-gap: var(--xh-space-3);
|
|
7515
7562
|
--xh-_list-title-size: var(--xh-control-font-md);
|
|
7516
7563
|
--xh-_list-description-size: var(--xh-control-caption-md);
|
|
7517
|
-
/* 条目悬停换到的面:坐在白底上是 100,淡底档的根把它抬到 200
|
|
7564
|
+
/* 条目悬停换到的面:坐在白底上是 100,淡底档的根把它抬到 200(按承载面的阶梯) */
|
|
7518
7565
|
--xh-_list-item-bg-hover: var(--xh-bg-subtle);
|
|
7519
7566
|
|
|
7520
7567
|
display: flex;
|
|
@@ -7685,7 +7732,7 @@
|
|
|
7685
7732
|
--xh-_log-font-size: var(--xh-text-secondary-size);
|
|
7686
7733
|
--xh-_log-content-px: var(--xh-space-3);
|
|
7687
7734
|
|
|
7688
|
-
/* 一张静态内容面:--xh-border-default 描边 + surface 底 +
|
|
7735
|
+
/* 一张静态内容面:--xh-border-default 描边 + surface 底 + 无影(描边与淡底互斥),
|
|
7689
7736
|
与 code-view / diff-view / json-viewer 同走 solid */
|
|
7690
7737
|
position: relative;
|
|
7691
7738
|
display: flex;
|
|
@@ -7766,7 +7813,7 @@
|
|
|
7766
7813
|
|
|
7767
7814
|
/* 回到底部:浮在视口右下角,收起时不卸载只隐藏。盒型、悬停 / 按下面与缩放由 Action Control 的
|
|
7768
7815
|
floating 档给(circle 正方盒、ghost 形态:白底承载 hover 100 → pressed 200);材质随角落浮钮族走
|
|
7769
|
-
frosted 四件套(底 + 边 + 影 +
|
|
7816
|
+
frosted 四件套(底 + 边 + 影 + 磨砂),这里只把使用者槽映射到桥接槽:
|
|
7770
7817
|
字形按 xs 档取 --xh-_action-profile-glyph-size(16px),与 back-top 同一把尺 */
|
|
7771
7818
|
[data-scope='log'][data-part='scroll-to-end-trigger'] {
|
|
7772
7819
|
--xh-_log-scroll-to-end-trigger-shadow: var(--xh-log-scroll-to-end-trigger-shadow, var(--xh-material-frosted-shadow));
|
|
@@ -8583,8 +8630,6 @@
|
|
|
8583
8630
|
|
|
8584
8631
|
[data-scope='mention'][data-part='content'][data-state='open'] {
|
|
8585
8632
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
8586
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
8587
|
-
will-change: opacity, translate;
|
|
8588
8633
|
}
|
|
8589
8634
|
|
|
8590
8635
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -8823,7 +8868,7 @@
|
|
|
8823
8868
|
--xh-_page-header-radius: var(--xh-shape-surface);
|
|
8824
8869
|
}
|
|
8825
8870
|
|
|
8826
|
-
/* outline 是一张静态内容面:--xh-border-default 描边撑住这块面的边界 + surface
|
|
8871
|
+
/* outline 是一张静态内容面:--xh-border-default 描边撑住这块面的边界 + surface 底,不叠投影;
|
|
8827
8872
|
--xh-border-subtle 只作 ghost 贴底那条分隔线用,不当根面外边 */
|
|
8828
8873
|
[data-scope='page-header'][data-part='root'][data-variant='outline'] {
|
|
8829
8874
|
border: var(--xh-stroke-thin) solid var(--xh-page-header-border, var(--xh-border-default));
|
|
@@ -9319,7 +9364,7 @@
|
|
|
9319
9364
|
}
|
|
9320
9365
|
|
|
9321
9366
|
/*
|
|
9322
|
-
*
|
|
9367
|
+
* 触发器是页面上的独立文字按钮:盒型、md 档几何、outline 四态面、0.97 按压并换底与粗指针命中区
|
|
9323
9368
|
* 由家族配方按连接层投影的 data-xh-action-variant / -size 给出。皮肤没有自己的外观规则,
|
|
9324
9369
|
* 只把作者塞进按钮的图标接到随档字形尺(md = 20px)。
|
|
9325
9370
|
*/
|
|
@@ -9381,7 +9426,7 @@
|
|
|
9381
9426
|
/* 面板排成三列:左列吃掉剩余宽度,右两列各摆一颗按钮。
|
|
9382
9427
|
标题、说明与作者塞进来的内容各占一整行,两颗按钮因此并排落在最后一行的右侧。 */
|
|
9383
9428
|
[data-scope='popconfirm'][data-part='content'] {
|
|
9384
|
-
/*
|
|
9429
|
+
/* 作者塞进面板里的图标按控件档取;两颗动作钮另由家族配方按 sm 档下发字形尺 */
|
|
9385
9430
|
--xh-icon-size: var(--xh-popconfirm-icon-size, var(--xh-glyph-size-md));
|
|
9386
9431
|
/* 尺寸档只换这两个私有槽 */
|
|
9387
9432
|
--xh-_popconfirm-pad: var(--xh-surface-pad-md);
|
|
@@ -9398,7 +9443,7 @@
|
|
|
9398
9443
|
/* 说明文案长度由作者给,矮视口下不限高面板会整块伸出视口且滚不到 */
|
|
9399
9444
|
max-block-size: min(var(--xh-popconfirm-max-h, var(--xh-overlay-max-h)), var(--xh-_popconfirm-available-h));
|
|
9400
9445
|
overflow-y: auto;
|
|
9401
|
-
/* 浮在页面之上的 Overlay
|
|
9446
|
+
/* 浮在页面之上的 Overlay 滚动面:滚到头不把页面一起带走 */
|
|
9402
9447
|
overscroll-behavior: contain;
|
|
9403
9448
|
padding-block: var(--xh-popconfirm-py, var(--xh-_popconfirm-pad));
|
|
9404
9449
|
padding-inline: var(--xh-popconfirm-px, var(--xh-_popconfirm-pad));
|
|
@@ -9442,8 +9487,6 @@
|
|
|
9442
9487
|
|
|
9443
9488
|
[data-scope='popconfirm'][data-part='content'][data-state='open'] {
|
|
9444
9489
|
animation: xh-overlay-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
9445
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
9446
|
-
will-change: opacity, scale, translate;
|
|
9447
9490
|
}
|
|
9448
9491
|
|
|
9449
9492
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -9474,7 +9517,7 @@
|
|
|
9474
9517
|
color: var(--xh-popconfirm-title-fg, var(--xh-material-frosted-fg));
|
|
9475
9518
|
}
|
|
9476
9519
|
|
|
9477
|
-
/*
|
|
9520
|
+
/* 说明文字走说明档:13px + fg-muted */
|
|
9478
9521
|
[data-scope='popconfirm'][data-part='description'] {
|
|
9479
9522
|
margin: 0;
|
|
9480
9523
|
min-inline-size: 0;
|
|
@@ -9499,7 +9542,7 @@
|
|
|
9499
9542
|
|
|
9500
9543
|
/*
|
|
9501
9544
|
* —— 两颗按钮 ——
|
|
9502
|
-
*
|
|
9545
|
+
* 确认与取消都是浮层末行的文字按钮:盒型、sm 档几何、四态面、0.97 按压并换底、粗指针命中区与
|
|
9503
9546
|
* 强制色由家族配方按连接层投影的 data-xh-action-variant / -size 给出。这里只把公开槽桥接到矩阵之前
|
|
9504
9547
|
* (使用者槽 → 形态矩阵 → 家族缺省)与几何映射;内衬与圆角槽取两颗共用的 action 段。
|
|
9505
9548
|
*/
|
|
@@ -9524,7 +9567,7 @@
|
|
|
9524
9567
|
grid-column: 3;
|
|
9525
9568
|
}
|
|
9526
9569
|
|
|
9527
|
-
/*
|
|
9570
|
+
/* 确认是实心的主操作。底色走共享语气槽:作者在 content 上写 data-tone="danger"
|
|
9528
9571
|
就整体换成危险色,不写则用品牌色——配方 solid 列本就读 --xh-_tone,这里只桥接使用者槽 */
|
|
9529
9572
|
[data-scope='popconfirm'][data-part='confirm-trigger'] {
|
|
9530
9573
|
--xh-action-bg-rest: var(--xh-popconfirm-confirm-bg, var(--xh-_action-variant-bg-rest));
|
|
@@ -9625,7 +9668,7 @@
|
|
|
9625
9668
|
}
|
|
9626
9669
|
|
|
9627
9670
|
/* root 就是视觉盒:描边、底色、圆角、聚焦环、悬停与禁用面由 Field Chrome 家族画在它身上(静息描边式:
|
|
9628
|
-
canvas 底 + --xh-border-control 描边 + 无影,不用 soft
|
|
9671
|
+
canvas 底 + --xh-border-control 描边 + 无影,不用 soft,登记的例外只在 8px surface 圆角),内部 textarea
|
|
9629
9672
|
无边框;align-items: flex-end 让按钮随输入框长高贴着底边。
|
|
9630
9673
|
三个视觉轴都落在 root 上:形态三档由家族按 data-variant 生成,语气管用哪族颜色,尺寸管高度与字号 */
|
|
9631
9674
|
[data-scope='prompt-input'][data-part='root'] {
|
|
@@ -9893,7 +9936,7 @@
|
|
|
9893
9936
|
* Typography prose 里的 <pre>——它是库内唯一不带 data-part 的滚动面,作者只写 <pre> 不写角色。
|
|
9894
9937
|
* 皮肤不得再手写 scrollbar-width / scrollbar-color(stylelint 判红),要藏条写 none。
|
|
9895
9938
|
* 这里不写 scrollbar-gutter:auto 是初始值,stable 只给内容高度会变的容器由皮肤显式写。
|
|
9896
|
-
* ::-webkit-scrollbar-thumb 的圆角取 pill:原生滑块与自绘 scrollbar:thumb
|
|
9939
|
+
* ::-webkit-scrollbar-thumb 的圆角取 pill:原生滑块与自绘 scrollbar:thumb 同为一维对象,
|
|
9897
9940
|
* 不再按厚度折半凑半圆,三档厚度都是同一身份。
|
|
9898
9941
|
*
|
|
9899
9942
|
* 令牌住在 xihan.tokens 层、排在本层之后,但自定义属性的求值不受层序影响:
|
|
@@ -9960,13 +10003,13 @@
|
|
|
9960
10003
|
--xh-reasoning-skin: 1;
|
|
9961
10004
|
}
|
|
9962
10005
|
|
|
9963
|
-
/* 一张淡底面:--xh-bg-subtle 底 + 透明边位 +
|
|
9964
|
-
缺省淡底承载开关:向它下发 hover 200 → pressed 300
|
|
10006
|
+
/* 一张淡底面:--xh-bg-subtle 底 + 透明边位 + 无影(subtle 无影),描边留给 outline 档打开。
|
|
10007
|
+
缺省淡底承载开关:向它下发 hover 200 → pressed 300 的阶梯,白底档在形态规则里改回 100 → 200 */
|
|
9965
10008
|
[data-scope='reasoning'][data-part='root'] {
|
|
9966
10009
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
9967
10010
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
9968
10011
|
|
|
9969
|
-
/*
|
|
10012
|
+
/* 作者塞进两个图形位的图标与皮肤画的兜底字形同一把尺:按档取,与开关的家族档同步——
|
|
9970
10013
|
不写 data-size 时字号是 sm 档,字形随之取 sm */
|
|
9971
10014
|
--xh-_reasoning-icon-size: var(--xh-glyph-size-sm);
|
|
9972
10015
|
--xh-icon-size: var(--xh-reasoning-icon-size, var(--xh-_reasoning-icon-size));
|
|
@@ -9995,7 +10038,7 @@
|
|
|
9995
10038
|
|
|
9996
10039
|
/* —— 形态 —— */
|
|
9997
10040
|
/* 缺省档即 subtle,写在上面那条基础规则里 */
|
|
9998
|
-
/* 描边分区:--xh-border-default 描边 + surface
|
|
10041
|
+
/* 描边分区:--xh-border-default 描边 + surface 底(静态内容面);
|
|
9999
10042
|
白底承载面把开关的阶梯改回 hover 100 → pressed 200 */
|
|
10000
10043
|
[data-scope='reasoning'][data-part='root'][data-variant='outline'] {
|
|
10001
10044
|
--xh-action-host-bg-hover: var(--xh-bg-subtle);
|
|
@@ -10023,7 +10066,7 @@
|
|
|
10023
10066
|
}
|
|
10024
10067
|
|
|
10025
10068
|
/* 开关铺满一行,盒型、悬停 / 按下 / 禁用面由 Action Control 的 disclosure-trigger 档给(ghost 形态,
|
|
10026
|
-
阶梯由根按承载面经 host
|
|
10069
|
+
阶梯由根按承载面经 host 槽下发,按下只换面不缩放);这里只把使用者槽映射到桥接槽:
|
|
10027
10070
|
圆角归零贴住面边,内衬与字号沿用本组件的档位(不取 profile 的内衬,几何不变),字色三态都停在
|
|
10028
10071
|
弱一档的 muted(开关不是正文);字形尺由根按同一档位给 */
|
|
10029
10072
|
[data-scope='reasoning'][data-part='trigger'] {
|
|
@@ -10530,17 +10573,17 @@
|
|
|
10530
10573
|
--xh-_segmented-px: var(--xh-control-px-md);
|
|
10531
10574
|
--xh-_segmented-gap: var(--xh-control-gap-md);
|
|
10532
10575
|
--xh-_segmented-font-size: var(--xh-control-font-md);
|
|
10533
|
-
/*
|
|
10576
|
+
/* 指示器(有滑块开关的白色抬起面)的底、描边与选中段的文字色;没写 data-tone 时就是这里的取值 */
|
|
10534
10577
|
--xh-_segmented-indicator-bg: var(--xh-bg-surface-raised);
|
|
10535
10578
|
--xh-_segmented-fg-selected: var(--xh-fg-default);
|
|
10536
|
-
/* 轨道是淡底承载面:段坐在它上面,悬停 200 → 按下 300
|
|
10579
|
+
/* 轨道是淡底承载面:段坐在它上面,悬停 200 → 按下 300,host 槽向内下发同一副阶梯 */
|
|
10537
10580
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
10538
10581
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
10539
10582
|
|
|
10540
10583
|
/* 一行排不下就折行:每个选项都必须看得见、点得到,硬撑一行会把末尾几段顶出容器。
|
|
10541
10584
|
段各自带圆角,折行不会切角;不改成横向滚动是因为段离轨道内沿只有一格衬距,
|
|
10542
10585
|
轨道一旦成为滚动容器,段的焦点环(画在段外侧 2px 处)会被裁掉。
|
|
10543
|
-
|
|
10586
|
+
轨道是一块淡底面:--xh-bg-subtle 底 + 同宽透明占位边 + 无影,边界由滑块的描边与轨道底色的落差承担 */
|
|
10544
10587
|
position: relative;
|
|
10545
10588
|
display: inline-flex;
|
|
10546
10589
|
flex-wrap: wrap;
|
|
@@ -10660,7 +10703,7 @@
|
|
|
10660
10703
|
white-space: nowrap;
|
|
10661
10704
|
cursor: pointer;
|
|
10662
10705
|
user-select: none;
|
|
10663
|
-
/*
|
|
10706
|
+
/* 段是轨道里铺开的一段(Segmented item 归行级),按下只换面不缩放:transition 里没有 scale */
|
|
10664
10707
|
transition:
|
|
10665
10708
|
color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
10666
10709
|
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
@@ -10681,14 +10724,14 @@
|
|
|
10681
10724
|
}
|
|
10682
10725
|
|
|
10683
10726
|
/* 悬停只提亮未选中的那几段:选中段的底下压着指示器,再变色就成了两套强调。
|
|
10684
|
-
底色用中性的悬停档——它是「指哪一段」的轻反馈,不表达选中;段坐在淡底轨道里,悬停取 200
|
|
10727
|
+
底色用中性的悬停档——它是「指哪一段」的轻反馈,不表达选中;段坐在淡底轨道里,悬停取 200 */
|
|
10685
10728
|
[data-scope='segmented'][data-part='item']:not([data-disabled]):not([data-state='checked']):hover {
|
|
10686
10729
|
background-color: var(--xh-segmented-item-bg-hover, var(--xh-bg-subtle-hover));
|
|
10687
10730
|
color: var(--xh-segmented-item-fg-hover, var(--xh-fg-default));
|
|
10688
10731
|
}
|
|
10689
10732
|
|
|
10690
10733
|
/* 按下去要有回应:未选中段换到按下面(淡底承载 300),几何不动;只读段不压。
|
|
10691
|
-
|
|
10734
|
+
选中段不叠按下面:它压着的白色滑块本身就是选中身份(有滑块开关无叠加态) */
|
|
10692
10735
|
[data-scope='segmented'][data-part='item']:not([data-disabled]):not([data-readonly]):not([data-state='checked']):is(:active, [data-pressed]) {
|
|
10693
10736
|
background-color: var(--xh-segmented-item-bg-pressed, var(--xh-bg-subtle-active));
|
|
10694
10737
|
transition-duration: var(--xh-motion-duration-press);
|
|
@@ -10733,7 +10776,7 @@
|
|
|
10733
10776
|
inset-block-start: var(--xh-_segmented-indicator-y);
|
|
10734
10777
|
inline-size: var(--xh-_segmented-indicator-w);
|
|
10735
10778
|
block-size: var(--xh-_segmented-indicator-h);
|
|
10736
|
-
/*
|
|
10779
|
+
/* 白色抬起面三件(有滑块开关):surface-raised 底 + border-default 描边 + raised 影,描边必须在,影只是加成。
|
|
10737
10780
|
尺寸由连接层按段的盒量出,描边吃进盒里(border-box),滑块与段仍是同一块矩形 */
|
|
10738
10781
|
border: var(--xh-stroke-thin) solid var(--xh-segmented-indicator-border, var(--xh-border-default));
|
|
10739
10782
|
border-radius: var(--xh-segmented-indicator-radius, var(--xh-shape-inset));
|
|
@@ -10809,7 +10852,7 @@
|
|
|
10809
10852
|
gap: var(--xh-signature-pad-gap, var(--xh-space-2));
|
|
10810
10853
|
}
|
|
10811
10854
|
|
|
10812
|
-
/*
|
|
10855
|
+
/* 复合单字段的标签:14 / 500 / fg-default,不随档;贴画布 space-1——
|
|
10813
10856
|
容器的 gap 归画布之后的部件,标签在它之上补一段差值把距离收成目标值 */
|
|
10814
10857
|
[data-scope='signature-pad'][data-part='label'] {
|
|
10815
10858
|
margin-block-end: calc(
|
|
@@ -10828,7 +10871,7 @@
|
|
|
10828
10871
|
/* 画布是块状的写字区:宽度铺满外层,高度由宽高比决定。
|
|
10829
10872
|
控件行高那把尺量的是一行控件,一块要写字的面积用不上它。
|
|
10830
10873
|
touch-action 由连接层内联写死,触摸落笔才不会被页面滚动抢走。
|
|
10831
|
-
|
|
10874
|
+
外壳按字段规则自绘(登记的画布型字段例外:字段家族配方钉死控件行高,画布按宽高比撑高吃不下它):
|
|
10832
10875
|
静息透明底 + border-control 描边 + control 圆角 + 无影 */
|
|
10833
10876
|
[data-scope='signature-pad'][data-part='control'] {
|
|
10834
10877
|
display: block;
|
|
@@ -10857,13 +10900,13 @@
|
|
|
10857
10900
|
}
|
|
10858
10901
|
|
|
10859
10902
|
/* 只读仍看得见签名,只是改不动:收掉手型,别暗示"在这儿能写";
|
|
10860
|
-
|
|
10903
|
+
面按字段只读规则只换到淡底,描边不动 */
|
|
10861
10904
|
[data-scope='signature-pad'][data-part='control'][data-readonly]:not([data-disabled]) {
|
|
10862
10905
|
background: var(--xh-signature-pad-bg-readonly, var(--xh-bg-subtle));
|
|
10863
10906
|
cursor: default;
|
|
10864
10907
|
}
|
|
10865
10908
|
|
|
10866
|
-
/*
|
|
10909
|
+
/* 字段禁用面:描边退到 border-default、底换淡底 */
|
|
10867
10910
|
[data-scope='signature-pad'][data-part='control'][data-disabled] {
|
|
10868
10911
|
border-color: var(--xh-signature-pad-border-disabled, var(--xh-border-default));
|
|
10869
10912
|
background: var(--xh-signature-pad-bg-disabled, var(--xh-bg-subtle));
|
|
@@ -10886,9 +10929,9 @@
|
|
|
10886
10929
|
}
|
|
10887
10930
|
|
|
10888
10931
|
/*
|
|
10889
|
-
*
|
|
10932
|
+
* 清空按钮是画布旁的独立文字按钮:盒型、sm 档几何、outline 四态面、0.97 按压与粗指针命中区由家族配方
|
|
10890
10933
|
* 按连接层投影的 data-xh-action-variant / -size 给出(缺省 outline,白底承载阶梯 100 → 200)。这里只把公开槽
|
|
10891
|
-
* 桥接到矩阵之前(使用者槽 → 形态矩阵 →
|
|
10934
|
+
* 桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射,矩阵各态无影(淡底与阴影互斥)。
|
|
10892
10935
|
*/
|
|
10893
10936
|
[data-scope='signature-pad'][data-part='clear-trigger'] {
|
|
10894
10937
|
--xh-action-bg-rest: var(--xh-signature-pad-clear-bg, var(--xh-_action-variant-bg-rest));
|
|
@@ -10928,7 +10971,7 @@
|
|
|
10928
10971
|
--xh-action-ring-color-focus-visible: currentColor;
|
|
10929
10972
|
}
|
|
10930
10973
|
|
|
10931
|
-
/*
|
|
10974
|
+
/* 签没签的那句话是说明角色:13 / fg-muted / leading-normal。读屏靠它播报,看得见的人也用得上,因此不做视觉隐藏 */
|
|
10932
10975
|
[data-scope='signature-pad'][data-part='status'] {
|
|
10933
10976
|
color: var(--xh-signature-pad-status-fg, var(--xh-fg-muted));
|
|
10934
10977
|
font-size: var(--xh-signature-pad-status-font-size, var(--xh-text-secondary-size));
|
|
@@ -11102,7 +11145,7 @@
|
|
|
11102
11145
|
padding-inline: var(--xh-tag-px, var(--xh-_tag-px));
|
|
11103
11146
|
padding-block: var(--xh-tag-py, var(--xh-_tag-py));
|
|
11104
11147
|
border: var(--xh-stroke-thin) solid var(--xh-tag-border, var(--xh-material-soft-border));
|
|
11105
|
-
/* 状态 chip
|
|
11148
|
+
/* 状态 chip 的身份是胶囊(pill 只给状态 chip 与一维对象) */
|
|
11106
11149
|
border-radius: var(--xh-tag-radius, var(--xh-shape-pill));
|
|
11107
11150
|
background: var(--xh-tag-bg, var(--xh-material-soft-bg));
|
|
11108
11151
|
box-shadow: var(--xh-tag-shadow, var(--xh-material-soft-shadow));
|
|
@@ -11183,7 +11226,7 @@
|
|
|
11183
11226
|
transition-timing-function: var(--xh-motion-ease-press);
|
|
11184
11227
|
}
|
|
11185
11228
|
|
|
11186
|
-
/*
|
|
11229
|
+
/* 按住的叉落着焦点(focus-visible + pressed 保留焦点环):按压面是从字色兑出的 22% 底,
|
|
11187
11230
|
压在淡底 / 选中面上把面往字色那头带了一档,默认环与这块混色面在浅色档上只剩 2.2–2.9。
|
|
11188
11231
|
环改取叉自己的字色:按压面正是从这支色兑出来的,字色压在它上面的对比与字压在标签面上同源,
|
|
11189
11232
|
六族语气与深浅两态都过 3:1;实心档本来就取字色,这条与它同一口径 */
|
|
@@ -12616,10 +12659,10 @@
|
|
|
12616
12659
|
--xh-alert-skin: 1;
|
|
12617
12660
|
}
|
|
12618
12661
|
|
|
12619
|
-
/* 提示本体是一层中性 surface:边界由 --xh-border-default
|
|
12662
|
+
/* 提示本体是一层中性 surface:边界由 --xh-border-default 描边承担、无影(静态反馈面),
|
|
12620
12663
|
语气只落到图标与标题,不会用整块彩底抢走正文层级。 */
|
|
12621
12664
|
[data-scope='alert'][data-part='root'] {
|
|
12622
|
-
/* 作者塞进指示符槽的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md
|
|
12665
|
+
/* 作者塞进指示符槽的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md 档 */
|
|
12623
12666
|
--xh-icon-size: var(--xh-alert-icon-size, var(--xh-glyph-size-md));
|
|
12624
12667
|
|
|
12625
12668
|
display: flex;
|
|
@@ -12807,7 +12850,7 @@
|
|
|
12807
12850
|
--xh-_empty-state-gap: var(--xh-stack-gap-md);
|
|
12808
12851
|
--xh-_empty-state-py: var(--xh-section-py-md);
|
|
12809
12852
|
--xh-_empty-state-icon-size: var(--xh-glyph-size-2xl);
|
|
12810
|
-
/* 标题走 Surface / Feedback 标题档 14/600
|
|
12853
|
+
/* 标题走 Surface / Feedback 标题档 14/600;sm 同档只缩图形与留白,lg 升到页面级 heading-3 */
|
|
12811
12854
|
--xh-_empty-state-title-size: var(--xh-text-label-size);
|
|
12812
12855
|
/* 图标区的强调色:由 data-status(状态码)或 data-tone(语气)换掉;两样都没写就退成中性 */
|
|
12813
12856
|
--xh-_empty-state-accent: var(--xh-fg-subtle);
|
|
@@ -13324,7 +13367,7 @@
|
|
|
13324
13367
|
}
|
|
13325
13368
|
|
|
13326
13369
|
[data-scope='accordion'][data-part='root'] {
|
|
13327
|
-
/* 作者塞进正文里的图标与皮肤画的兜底字形同一把尺:md
|
|
13370
|
+
/* 作者塞进正文里的图标与皮肤画的兜底字形同一把尺:md 档,标题栏上另按家族档取值 */
|
|
13328
13371
|
--xh-icon-size: var(--xh-accordion-icon-size, var(--xh-glyph-size-md));
|
|
13329
13372
|
|
|
13330
13373
|
/* 尺寸档只换正文这两个私有槽,正文从 root 继承它们;标题栏的三档几何由家族 disclosure-trigger 档给 */
|
|
@@ -13409,7 +13452,7 @@
|
|
|
13409
13452
|
border-inline-start: 0;
|
|
13410
13453
|
}
|
|
13411
13454
|
|
|
13412
|
-
/* outline:一张静态内容面,--xh-border-default 描边 + surface 底 +
|
|
13455
|
+
/* outline:一张静态内容面,--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担);
|
|
13413
13456
|
根的外边走 --xh-accordion-border,与条与条之间的分隔线槽 --xh-accordion-item-border 各管各的 */
|
|
13414
13457
|
[data-scope='accordion'][data-part='root'][data-variant='outline'] {
|
|
13415
13458
|
border: var(--xh-stroke-thin) solid var(--xh-accordion-border, var(--xh-border-default));
|
|
@@ -13420,7 +13463,7 @@
|
|
|
13420
13463
|
}
|
|
13421
13464
|
|
|
13422
13465
|
/* subtle:同一块连续表面,底换成淡底,描边让位给底色但留住 1px 边位(三档几何一致);
|
|
13423
|
-
淡底承载面向标题栏下发 hover 200 → pressed 300
|
|
13466
|
+
淡底承载面向标题栏下发 hover 200 → pressed 300 */
|
|
13424
13467
|
[data-scope='accordion'][data-part='root'][data-variant='subtle'] {
|
|
13425
13468
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
13426
13469
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -13449,7 +13492,7 @@
|
|
|
13449
13492
|
}
|
|
13450
13493
|
|
|
13451
13494
|
/* 标题栏铺满一行,盒型、三档几何、悬停 / 按下 / 禁用面由 Action Control 的 disclosure-trigger 档给
|
|
13452
|
-
(ghost 形态:白底承载 hover 100 → pressed 200,淡底容器由根下发 host
|
|
13495
|
+
(ghost 形态:白底承载 hover 100 → pressed 200,淡底容器由根下发 host 槽;按下只换面不缩放);
|
|
13453
13496
|
这里只把使用者槽映射到桥接槽:字色三态同值(家族的 hover / pressed 字色规则比皮肤更特定,不映射会被换回
|
|
13454
13497
|
缺省字色),字形按标题栏自己的档位取 --xh-_action-profile-glyph-size;边归零贴住条目,几何与迁移前一致 */
|
|
13455
13498
|
[data-scope='accordion'][data-part='trigger'] {
|
|
@@ -13471,7 +13514,7 @@
|
|
|
13471
13514
|
}
|
|
13472
13515
|
|
|
13473
13516
|
/* 展开态自带一个槽:与常态共用一个的话,作者一改常态字色,
|
|
13474
|
-
展开那一档的语气高亮就跟着被抹平,再也分不开。悬停 /
|
|
13517
|
+
展开那一档的语气高亮就跟着被抹平,再也分不开。悬停 / 按下的面与收起态同档(open 与家族 hover 同档中性) */
|
|
13475
13518
|
[data-scope='accordion'][data-part='trigger'][data-state='open'] {
|
|
13476
13519
|
--xh-action-fg-rest: var(--xh-accordion-trigger-fg-open, var(--xh-_accordion-open-fg));
|
|
13477
13520
|
--xh-action-fg-hover: var(--xh-accordion-trigger-fg-open, var(--xh-_accordion-open-fg));
|
|
@@ -13491,7 +13534,7 @@
|
|
|
13491
13534
|
flex: none;
|
|
13492
13535
|
color: var(--xh-accordion-indicator-fg, var(--xh-fg-muted));
|
|
13493
13536
|
line-height: var(--xh-leading-none);
|
|
13494
|
-
/*
|
|
13537
|
+
/* 指示器与正文同档转向:正文 enter 档展开,箭头也用同一段时长翻过去 */
|
|
13495
13538
|
transition: rotate var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
13496
13539
|
}
|
|
13497
13540
|
|
|
@@ -13570,7 +13613,7 @@
|
|
|
13570
13613
|
--xh-_anchor-link-px: var(--xh-control-px-md);
|
|
13571
13614
|
/* 当前那一节的指示条与文字随语气走。没写 data-tone 时这两个槽都没被声明,退回品牌色。
|
|
13572
13615
|
指示条是装饰性的色条,取柔和档;文字要压在普通背景上读,取语气的文字档——
|
|
13573
|
-
|
|
13616
|
+
导航当前页缺省是 --xh-fg-brand-strong,比指示条深一档。
|
|
13574
13617
|
聚焦环不在其列,它恒是 --xh-ring-focus */
|
|
13575
13618
|
--xh-_anchor-accent: var(--xh-_tone-soft, var(--xh-fg-brand));
|
|
13576
13619
|
--xh-_anchor-accent-text: var(--xh-_tone-fg, var(--xh-fg-brand-strong));
|
|
@@ -13632,7 +13675,7 @@
|
|
|
13632
13675
|
}
|
|
13633
13676
|
|
|
13634
13677
|
/* 链接的几何、字号与面全经家族桥接槽:静息 muted / regular,悬停走白底承载 hover 100 + default 字,
|
|
13635
|
-
按下 pressed 200
|
|
13678
|
+
按下 pressed 200 只换面;当前那一节(导航当前页)brand-strong 字色(随语气的
|
|
13636
13679
|
--xh-_anchor-accent-text)+ medium 字重都跟着变,2px 指示线放了 indicator 部件由部件滑动、没放则由
|
|
13637
13680
|
下面的静态线规则画在当前链接自己身上。本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 color / background。
|
|
13638
13681
|
position: relative 是静态线的定位参照 */
|
|
@@ -13706,7 +13749,7 @@
|
|
|
13706
13749
|
inline-size var(--xh-motion-duration-enter) var(--xh-motion-ease-continuous);
|
|
13707
13750
|
}
|
|
13708
13751
|
|
|
13709
|
-
/* 目录里没放 indicator
|
|
13752
|
+
/* 目录里没放 indicator 部件时,当前那一节的链接自画一条静态指示线(导航当前页):
|
|
13710
13753
|
与 Tabs line 档同一取法,作者不必为了这条线多放一个部件。
|
|
13711
13754
|
线画在当前链接的 ::after 上,以链接盒为定位参照(上面已给 position: relative),
|
|
13712
13755
|
厚度 / 颜色 / 圆角与 indicator 部件读同一组槽与缺省——作者改一处,部件与静态线一起改。
|
|
@@ -13806,10 +13849,10 @@
|
|
|
13806
13849
|
--xh-approval-skin: 1;
|
|
13807
13850
|
}
|
|
13808
13851
|
|
|
13809
|
-
/* 一块要人做决定的静态内容面:--xh-border-default 描边 + surface 底 +
|
|
13852
|
+
/* 一块要人做决定的静态内容面:--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担),
|
|
13810
13853
|
作者打了语气时描边染成语气色作强调(下面那条),判定落定后描边退回中性 */
|
|
13811
13854
|
[data-scope='approval'][data-part='root'] {
|
|
13812
|
-
/* 作者塞进标题 / 说明 /
|
|
13855
|
+
/* 作者塞进标题 / 说明 / 结果条里的图标按档取尺,缺省 md;勾选记号另按盒比例量 */
|
|
13813
13856
|
--xh-_approval-icon-size: var(--xh-glyph-size-md);
|
|
13814
13857
|
--xh-icon-size: var(--xh-approval-icon-size, var(--xh-_approval-icon-size));
|
|
13815
13858
|
|
|
@@ -13844,7 +13887,7 @@
|
|
|
13844
13887
|
border-color: var(--xh-approval-border, var(--xh-_tone, var(--xh-border-default)));
|
|
13845
13888
|
}
|
|
13846
13889
|
|
|
13847
|
-
/* 判过了就不再抢注意力:语气色边退回中性描边(根面外边不取 subtle
|
|
13890
|
+
/* 判过了就不再抢注意力:语气色边退回中性描边(根面外边不取 subtle)。
|
|
13848
13891
|
排在语气那条之后:同等特指度,落定要盖得过语气 */
|
|
13849
13892
|
[data-scope='approval'][data-part='root']:not([data-state='pending']) {
|
|
13850
13893
|
border-color: var(--xh-approval-border-settled, var(--xh-border-default));
|
|
@@ -13854,7 +13897,7 @@
|
|
|
13854
13897
|
/* 缺省档即 outline,写在上面那条基础规则里。
|
|
13855
13898
|
两档排在落定那条之后:它们把描边整个撤掉,排在前面会被落定那条按同等特指度盖回来 */
|
|
13856
13899
|
/* 底色分区:描边让位给底色,闸门嵌在别人的面里时不再多一圈线;
|
|
13857
|
-
淡底承载面向授权行与拒绝钮下发 hover 200 → pressed 300
|
|
13900
|
+
淡底承载面向授权行与拒绝钮下发 hover 200 → pressed 300 */
|
|
13858
13901
|
[data-scope='approval'][data-part='root'][data-variant='subtle'] {
|
|
13859
13902
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
13860
13903
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -13870,7 +13913,7 @@
|
|
|
13870
13913
|
box-shadow: none;
|
|
13871
13914
|
}
|
|
13872
13915
|
|
|
13873
|
-
/* 标题走 Surface 标题档 14/600
|
|
13916
|
+
/* 标题走 Surface 标题档 14/600 */
|
|
13874
13917
|
[data-scope='approval'][data-part='title'] {
|
|
13875
13918
|
display: block;
|
|
13876
13919
|
margin: 0;
|
|
@@ -13920,9 +13963,9 @@
|
|
|
13920
13963
|
}
|
|
13921
13964
|
|
|
13922
13965
|
/* 一项授权:整行可点、可聚焦,勾选记号在左。盒型、悬停 / 按下 / 禁用面由 Action Control 的 row 档给
|
|
13923
|
-
(ghost 形态:白底承载 hover 100 → pressed 200
|
|
13966
|
+
(ghost 形态:白底承载 hover 100 → pressed 200,按下只换面不缩放;禁用守卫认 data-disabled),
|
|
13924
13967
|
这里只把使用者槽映射到桥接槽,内衬与间距沿用本组件的档位。
|
|
13925
|
-
行高不吃家族的单行档:row
|
|
13968
|
+
行高不吃家族的单行档:row 档允许换行、高度随内容,一条会折行的授权文案走正文行高 */
|
|
13926
13969
|
[data-scope='approval'][data-part='item'] {
|
|
13927
13970
|
--xh-action-gap: var(--xh-approval-item-gap, var(--xh-space-1_5));
|
|
13928
13971
|
--xh-action-padding-inline: var(--xh-approval-item-px, var(--xh-space-2));
|
|
@@ -14083,7 +14126,7 @@
|
|
|
14083
14126
|
|
|
14084
14127
|
/* 两颗按钮是离散动作控件:盒几何、悬停 / 按下与 0.97 按压、焦点环、禁用与在途面全由 Action Control 的
|
|
14085
14128
|
text 档给,组件只映射既有使用者槽。批准走 solid 档:判定闸门里的主要动作,与 Button 缺省同为品牌实心;
|
|
14086
|
-
拒绝走 outline 档:非 Button
|
|
14129
|
+
拒绝走 outline 档:非 Button 的触发器缺省中性描边。
|
|
14087
14130
|
三档守卫由连接层投影:判定在途是 data-loading + aria-disabled(保住可聚焦,家族给在途面:底色不置灰、
|
|
14088
14131
|
指针 progress),必选项没勾满与落定是 data-disabled(家族给禁用面:置灰底、置灰字、not-allowed)。
|
|
14089
14132
|
两颗共用的几何与字号写在一起 */
|
|
@@ -14366,7 +14409,7 @@
|
|
|
14366
14409
|
}
|
|
14367
14410
|
|
|
14368
14411
|
/* 圆点形态:只表示「有」,不表示「有几个」——收掉内边距与文字盒。
|
|
14369
|
-
宽高同槽的正方盒按身份取 circle
|
|
14412
|
+
宽高同槽的正方盒按身份取 circle,不沿用计数档的胶囊冒充圆:
|
|
14370
14413
|
胶囊那 9999px 在正方盒上虽也画成圆,形状身份却写错了档,作者按圆点覆盖圆角时无处落手。
|
|
14371
14414
|
圆点直径只有六到十像素,一像素的内高光会占去顶上一大截、读成缺了一圈的描边,这里收掉 */
|
|
14372
14415
|
[data-scope='badge'][data-part='indicator'][data-dot] {
|
|
@@ -14586,7 +14629,7 @@
|
|
|
14586
14629
|
}
|
|
14587
14630
|
|
|
14588
14631
|
/* 链接的几何、字号与面全经家族桥接槽:静息 muted / regular,悬停走白底承载 hover 100 + 随语气的字色,
|
|
14589
|
-
按下 pressed 200
|
|
14632
|
+
按下 pressed 200 只换面;当前页那条不再是"可去的地方":连接层投影
|
|
14590
14633
|
data-xh-collection-terminal,家族给透明面 + 随语气的 fg-default + medium + cursor default,不响应悬停与按下,
|
|
14591
14634
|
并压过它同时带的 aria-disabled 禁用面。本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 color / background */
|
|
14592
14635
|
[data-scope='breadcrumb'][data-part='link'] {
|
|
@@ -14713,7 +14756,7 @@
|
|
|
14713
14756
|
--xh-action-fg-loading: var(--xh-button-fg, var(--xh-_action-variant-fg-loading));
|
|
14714
14757
|
--xh-action-highlight-rest: transparent;
|
|
14715
14758
|
--xh-action-highlight-pressed: transparent;
|
|
14716
|
-
/* 海拔只有 solid
|
|
14759
|
+
/* 海拔只有 solid 一档有:其余形态无影,私有槽在下面的 solid 块里才被赋值 */
|
|
14717
14760
|
--xh-_button-shadow-rest: var(--xh-button-shadow, none);
|
|
14718
14761
|
--xh-_button-shadow-hover: var(--xh-button-shadow-hover, none);
|
|
14719
14762
|
--xh-_button-shadow-pressed: none;
|
|
@@ -14734,7 +14777,7 @@
|
|
|
14734
14777
|
font-weight: var(--xh-button-font-weight, var(--xh-text-label-weight));
|
|
14735
14778
|
}
|
|
14736
14779
|
|
|
14737
|
-
/* Button soft
|
|
14780
|
+
/* Button soft 是登记在册的 raised 消费者:solid 一档静息带顶光与贴地软影,悬停抬到 raised,按下只留顶光。
|
|
14738
14781
|
成组时段与段共边焊成一条,静息不落软影、悬停不抬起——投影会压到左右两段的面上,
|
|
14739
14782
|
ButtonGroup 用 --xh-_button-group-shadow-rest / -hover 只留顶光 */
|
|
14740
14783
|
[data-scope='button'][data-part='root'][data-variant='solid'] {
|
|
@@ -15054,7 +15097,7 @@
|
|
|
15054
15097
|
}
|
|
15055
15098
|
|
|
15056
15099
|
[data-scope='calendar-picker'][data-part='root'] {
|
|
15057
|
-
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm
|
|
15100
|
+
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm;
|
|
15058
15101
|
作者塞进去的图标与皮肤画的兜底字形同一把尺 */
|
|
15059
15102
|
--xh-icon-size: var(--xh-calendar-picker-icon-size, var(--xh-glyph-size-sm));
|
|
15060
15103
|
|
|
@@ -15093,7 +15136,7 @@
|
|
|
15093
15136
|
|
|
15094
15137
|
/* 标题里的年与月:点它们逐级钻上去(年 → 十年格、月 → 月格)。
|
|
15095
15138
|
长得像标题而不像按钮——它本来就是标题,只是可点 */
|
|
15096
|
-
/* 标题里的年与月接 Action Control text
|
|
15139
|
+
/* 标题里的年与月接 Action Control text 档(日期翻页按钮同族):盒、按下 / 禁用面、0.97 缩放与换底、焦点环与过渡
|
|
15097
15140
|
由家族配方给,这里只把使用者槽映射到桥接槽。长得像标题而不像按钮——它本来就是标题,只是可点:静息透明(ghost),
|
|
15098
15141
|
悬停只换字色不换底(标题不是一枚按钮面),按下换到 200 档中性面(白底承载);到顶那一层只作标题显示,
|
|
15099
15142
|
光标别装成能点,也不再换面 */
|
|
@@ -15119,7 +15162,7 @@
|
|
|
15119
15162
|
display: none;
|
|
15120
15163
|
}
|
|
15121
15164
|
|
|
15122
|
-
/* 四颗方向钮接 Action Control icon
|
|
15165
|
+
/* 四颗方向钮接 Action Control icon 档(日期翻页按钮)、ghost 形态:正方盒、悬停 / 按下 / 禁用面、0.97 缩放与换底、
|
|
15123
15166
|
粗指针热区、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽;钮坐在日历的白底上,悬停 100 → 按下 200 */
|
|
15124
15167
|
[data-scope='calendar-picker'][data-part='prev-year-trigger'],
|
|
15125
15168
|
[data-scope='calendar-picker'][data-part='prev-trigger'],
|
|
@@ -15176,7 +15219,7 @@
|
|
|
15176
15219
|
align-content: start;
|
|
15177
15220
|
max-block-size: var(--xh-calendar-picker-year-grid-max-h, var(--xh-viewport-h-sm));
|
|
15178
15221
|
padding-inline-end: var(--xh-calendar-picker-year-grid-pe, var(--xh-space-1));
|
|
15179
|
-
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto
|
|
15222
|
+
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto;嵌进 date-picker 浮层时由那份皮肤补 contain */
|
|
15180
15223
|
overflow-y: auto;
|
|
15181
15224
|
}
|
|
15182
15225
|
|
|
@@ -15277,7 +15320,7 @@
|
|
|
15277
15320
|
display: none;
|
|
15278
15321
|
}
|
|
15279
15322
|
|
|
15280
|
-
/* 日期格接 Action Control text
|
|
15323
|
+
/* 日期格接 Action Control text 档(日历格是定尺控件,属格状当前)、ghost 形态:悬停 / 按下 / 禁用面、
|
|
15281
15324
|
0.97 缩放与换底、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽。几何仍由网格给:宽度由 week-row 的
|
|
15282
15325
|
等分轨道给、高度按 aspect-ratio 跟着走(block-size 归 auto,不取家族的固定高),日历才不会被长月份拉扁。
|
|
15283
15326
|
格子坐在日历的白底上:悬停 100 → 按下 200;今天 / 选中 / 邻月 / 不可用只换下面的私有槽 */
|
|
@@ -15342,7 +15385,7 @@
|
|
|
15342
15385
|
--xh-_calendar-picker-cell-fg: var(--xh-calendar-picker-cell-fg-outside, var(--xh-fg-subtle));
|
|
15343
15386
|
}
|
|
15344
15387
|
|
|
15345
|
-
/* 今天:1px 品牌环 +
|
|
15388
|
+
/* 今天:1px 品牌环 + 品牌字(brand-subtle 退出 today 语义),底透明、悬停走普通格的阶梯;
|
|
15346
15389
|
选中仍用后面的实心强调面,两个状态叠加时不会混成同一种反馈 */
|
|
15347
15390
|
[data-scope='calendar-picker'][data-part='cell-trigger'][data-today] {
|
|
15348
15391
|
--xh-_calendar-picker-cell-bg: var(--xh-calendar-picker-today-bg, transparent);
|
|
@@ -15350,7 +15393,7 @@
|
|
|
15350
15393
|
--xh-_calendar-picker-cell-fg: var(--xh-calendar-picker-today-fg, var(--xh-fg-brand));
|
|
15351
15394
|
}
|
|
15352
15395
|
|
|
15353
|
-
/* 实心强调面给单选 /
|
|
15396
|
+
/* 实心强调面给单选 / 多选的选中格(格状当前):悬停不换面,按下压到 active 档(光缩放在深色底上看不出回执)。
|
|
15354
15397
|
面是实心的,环色与面同族,画在面里就看不出来;环改取面自己的前景色——
|
|
15355
15398
|
那一族色本来就要在这块面上把字读清楚,与面的对比是按可读性定的 */
|
|
15356
15399
|
[data-scope='calendar-picker'][data-part='cell-trigger'][data-selected] {
|
|
@@ -15390,7 +15433,7 @@
|
|
|
15390
15433
|
--xh-action-ring-color-focus-visible: var(--xh-ring-focus);
|
|
15391
15434
|
}
|
|
15392
15435
|
|
|
15393
|
-
/* 不可用又选中的格:退到中性淡底 +
|
|
15436
|
+
/* 不可用又选中的格:退到中性淡底 + 置灰字(禁用面),选中身份仍由这块底与未选中的透明格分开 */
|
|
15394
15437
|
[data-scope='calendar-picker'][data-part='cell-trigger'][data-disabled][data-selected] {
|
|
15395
15438
|
--xh-action-bg-disabled: var(--xh-calendar-picker-cell-bg-selected-disabled, var(--xh-bg-subtle));
|
|
15396
15439
|
}
|
|
@@ -15495,7 +15538,7 @@
|
|
|
15495
15538
|
}
|
|
15496
15539
|
|
|
15497
15540
|
[data-scope='calendar-range-picker'][data-part='root'] {
|
|
15498
|
-
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm
|
|
15541
|
+
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm;
|
|
15499
15542
|
作者塞进去的图标与皮肤画的兜底字形同一把尺 */
|
|
15500
15543
|
--xh-icon-size: var(--xh-calendar-range-picker-icon-size, var(--xh-glyph-size-sm));
|
|
15501
15544
|
|
|
@@ -15534,7 +15577,7 @@
|
|
|
15534
15577
|
|
|
15535
15578
|
/* 标题里的年与月:点它们逐级钻上去(年 → 十年格、月 → 月格)。
|
|
15536
15579
|
长得像标题而不像按钮——它本来就是标题,只是可点 */
|
|
15537
|
-
/* 标题里的年与月接 Action Control text
|
|
15580
|
+
/* 标题里的年与月接 Action Control text 档(日期翻页按钮同族):盒、按下 / 禁用面、0.97 缩放与换底、焦点环与过渡
|
|
15538
15581
|
由家族配方给,这里只把使用者槽映射到桥接槽。长得像标题而不像按钮——它本来就是标题,只是可点:静息透明(ghost),
|
|
15539
15582
|
悬停只换字色不换底(标题不是一枚按钮面),按下换到 200 档中性面(白底承载);到顶那一层只作标题显示,
|
|
15540
15583
|
光标别装成能点,也不再换面 */
|
|
@@ -15560,7 +15603,7 @@
|
|
|
15560
15603
|
display: none;
|
|
15561
15604
|
}
|
|
15562
15605
|
|
|
15563
|
-
/* 四颗方向钮接 Action Control icon
|
|
15606
|
+
/* 四颗方向钮接 Action Control icon 档(日期翻页按钮)、ghost 形态:正方盒、悬停 / 按下 / 禁用面、0.97 缩放与换底、
|
|
15564
15607
|
粗指针热区、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽;钮坐在日历的白底上,悬停 100 → 按下 200 */
|
|
15565
15608
|
[data-scope='calendar-range-picker'][data-part='prev-year-trigger'],
|
|
15566
15609
|
[data-scope='calendar-range-picker'][data-part='prev-trigger'],
|
|
@@ -15617,7 +15660,7 @@
|
|
|
15617
15660
|
align-content: start;
|
|
15618
15661
|
max-block-size: var(--xh-calendar-range-picker-year-grid-max-h, var(--xh-viewport-h-sm));
|
|
15619
15662
|
padding-inline-end: var(--xh-calendar-range-picker-year-grid-pe, var(--xh-space-1));
|
|
15620
|
-
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto
|
|
15663
|
+
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto;嵌进 date-picker 浮层时由那份皮肤补 contain */
|
|
15621
15664
|
overflow-y: auto;
|
|
15622
15665
|
}
|
|
15623
15666
|
|
|
@@ -15762,7 +15805,7 @@
|
|
|
15762
15805
|
border-radius: var(--xh-calendar-range-picker-cell-radius, var(--xh-shape-inset));
|
|
15763
15806
|
}
|
|
15764
15807
|
|
|
15765
|
-
/* 日期格接 Action Control text
|
|
15808
|
+
/* 日期格接 Action Control text 档(日历格是定尺控件,属格状当前)、ghost 形态:悬停 / 按下 / 禁用面、
|
|
15766
15809
|
0.97 缩放与换底、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽。几何仍由网格给:宽度由 week-row 的
|
|
15767
15810
|
等分轨道给、高度按 aspect-ratio 跟着走(block-size 归 auto,不取家族的固定高),日历才不会被长月份拉扁。
|
|
15768
15811
|
格子坐在日历的白底上:悬停 100 → 按下 200;今天 / 选中 / 邻月 / 不可用只换下面的私有槽 */
|
|
@@ -15827,13 +15870,13 @@
|
|
|
15827
15870
|
--xh-_calendar-range-picker-cell-fg: var(--xh-calendar-range-picker-cell-fg-outside, var(--xh-fg-subtle));
|
|
15828
15871
|
}
|
|
15829
15872
|
|
|
15830
|
-
/*
|
|
15873
|
+
/* 区间中段的格坐在品牌淡底的轨道上(页内选中 12%):悬停 20%、按下 28%,铺在格子自己的选中片上 */
|
|
15831
15874
|
[data-scope='calendar-range-picker'][data-part='cell-trigger'][data-in-range]:not([data-outside-month], [data-disabled], [data-range-start], [data-range-end]) {
|
|
15832
15875
|
--xh-_calendar-range-picker-cell-bg-hover: var(--xh-calendar-range-picker-range-cell-bg-hover, var(--xh-bg-brand-subtle-hover));
|
|
15833
15876
|
--xh-_calendar-range-picker-cell-bg-pressed: var(--xh-calendar-range-picker-range-cell-bg-pressed, var(--xh-bg-brand-subtle-active));
|
|
15834
15877
|
}
|
|
15835
15878
|
|
|
15836
|
-
/* 今天:1px 品牌环 +
|
|
15879
|
+
/* 今天:1px 品牌环 + 品牌字(brand-subtle 退出 today 语义),底透明、悬停走普通格的阶梯;
|
|
15837
15880
|
落在区间里时环压在轨道上,选中仍用后面的实心强调面,状态叠加时不会混成同一种反馈 */
|
|
15838
15881
|
[data-scope='calendar-range-picker'][data-part='cell-trigger'][data-today] {
|
|
15839
15882
|
--xh-_calendar-range-picker-cell-bg: var(--xh-calendar-range-picker-today-bg, transparent);
|
|
@@ -15841,7 +15884,7 @@
|
|
|
15841
15884
|
--xh-_calendar-range-picker-cell-fg: var(--xh-calendar-range-picker-today-fg, var(--xh-fg-brand));
|
|
15842
15885
|
}
|
|
15843
15886
|
|
|
15844
|
-
/* 实心强调面只给单选 /
|
|
15887
|
+
/* 实心强调面只给单选 / 多选的选中格与区间的两端(格状当前):悬停不换面,按下压到 active 档(光缩放在深色底上
|
|
15845
15888
|
看不出回执);区间中段的格子由格子上的轨道铺底,自己不换面——不然一整段都是实心圆,就分不出哪两格是端点。
|
|
15846
15889
|
面是实心的,环色与面同族,画在面里就看不出来;环改取面自己的前景色——
|
|
15847
15890
|
那一族色本来就要在这块面上把字读清楚,与面的对比是按可读性定的 */
|
|
@@ -15883,7 +15926,7 @@
|
|
|
15883
15926
|
--xh-action-ring-color-focus-visible: var(--xh-ring-focus);
|
|
15884
15927
|
}
|
|
15885
15928
|
|
|
15886
|
-
/* 不可用又选中的格:退到中性淡底 +
|
|
15929
|
+
/* 不可用又选中的格:退到中性淡底 + 置灰字(禁用面),选中身份仍由这块底与未选中的透明格分开 */
|
|
15887
15930
|
[data-scope='calendar-range-picker'][data-part='cell-trigger'][data-disabled][data-selected] {
|
|
15888
15931
|
--xh-action-bg-disabled: var(--xh-calendar-range-picker-cell-bg-selected-disabled, var(--xh-bg-subtle));
|
|
15889
15932
|
}
|
|
@@ -16005,7 +16048,7 @@
|
|
|
16005
16048
|
}
|
|
16006
16049
|
|
|
16007
16050
|
/* Card 是带统一内边距与节奏的内容面;布局方向可由作者在根上覆盖。
|
|
16008
|
-
边界由 --xh-border-default 描边承担,raised
|
|
16051
|
+
边界由 --xh-border-default 描边承担,raised 落影只是抬起的加成(Card 是唯一登记 raised 的静态面,
|
|
16009
16052
|
且 raised 必带描边);内衬只走 --xh-surface-* 阶梯。 */
|
|
16010
16053
|
[data-scope='card'][data-part='root'] {
|
|
16011
16054
|
position: relative;
|
|
@@ -16194,10 +16237,10 @@
|
|
|
16194
16237
|
display: none;
|
|
16195
16238
|
}
|
|
16196
16239
|
|
|
16197
|
-
/* 两端按钮与播放开关:浮在媒体之上的单图标圆钮,接 Action Control floating
|
|
16240
|
+
/* 两端按钮与播放开关:浮在媒体之上的单图标圆钮,接 Action Control floating 档:
|
|
16198
16241
|
盒型(md = box-lg 48px,圆形)、四态面、0.97 按压与 44px 命中区由家族配方给出,组件没有 size 轴、固定 md。
|
|
16199
16242
|
连接层不投影 variant:面由这里桥接到磨砂缺省(使用者槽 → 磨砂面),悬停 / 按下的底走画布承载的阶梯
|
|
16200
|
-
(100 → 200
|
|
16243
|
+
(100 → 200),边缘与投影不动;这里只留定位、桥接槽与图标尺 */
|
|
16201
16244
|
[data-scope='carousel'][data-part='prev-trigger'],
|
|
16202
16245
|
[data-scope='carousel'][data-part='next-trigger'],
|
|
16203
16246
|
[data-scope='carousel'][data-part='autoplay-trigger'] {
|
|
@@ -16307,7 +16350,7 @@
|
|
|
16307
16350
|
translate: -50% 0;
|
|
16308
16351
|
}
|
|
16309
16352
|
|
|
16310
|
-
/* 分页点与 Tour
|
|
16353
|
+
/* 分页点与 Tour 的步骤点同一种语言:8px 圆点,当前页拉长成 20px 胶囊并换品牌色。
|
|
16311
16354
|
本体就是那颗点:没有文字(页码交给作者,默认不显示),底色即标记。
|
|
16312
16355
|
悬停 / 按下的回执落在点的颜色上:中性标记按前景阶梯加深一档、再加深一档;当前页按品牌阶梯压一档 */
|
|
16313
16356
|
[data-scope='carousel'][data-part='indicator'] {
|
|
@@ -16348,7 +16391,7 @@
|
|
|
16348
16391
|
background: var(--xh-carousel-indicator-bg-hover, var(--xh-fg-muted));
|
|
16349
16392
|
}
|
|
16350
16393
|
|
|
16351
|
-
/*
|
|
16394
|
+
/* 按下:点的颜色再压一档,同时缩一下(同时换底);指针按住由 :active 表出,
|
|
16352
16395
|
Space / Enter 与触屏按住由 Headless 投影 data-pressed,三种输入同一副面 */
|
|
16353
16396
|
[data-scope='carousel'][data-part='indicator']:is(:active, [data-pressed]):not([data-current]) {
|
|
16354
16397
|
background: var(--xh-carousel-indicator-bg-active, var(--xh-fg-default));
|
|
@@ -16366,7 +16409,7 @@
|
|
|
16366
16409
|
|
|
16367
16410
|
/* 当前页:data-current 与 aria-current='true' 由连接层成对给出,
|
|
16368
16411
|
样式挂在 data 钩子上,无障碍语义留给 aria,两边各司其职。
|
|
16369
|
-
拉长成胶囊并换品牌色(格状当前 =
|
|
16412
|
+
拉长成胶囊并换品牌色(格状当前 = 实心品牌) */
|
|
16370
16413
|
[data-scope='carousel'][data-part='indicator'][data-current] {
|
|
16371
16414
|
inline-size: var(--xh-carousel-indicator-size-current, var(--xh-space-5));
|
|
16372
16415
|
border-radius: var(--xh-carousel-indicator-radius-current, var(--xh-shape-pill));
|
|
@@ -16393,7 +16436,7 @@
|
|
|
16393
16436
|
transition-timing-function: var(--xh-motion-ease-press);
|
|
16394
16437
|
}
|
|
16395
16438
|
|
|
16396
|
-
/*
|
|
16439
|
+
/* 自动播放的进度:胶囊是品牌淡底当轨道(仍是「当前」语义;淡底上公共环够对比,不灌环色),
|
|
16397
16440
|
品牌填充条从起点沿轨道方向长满这一页的时长;暂停时定住 */
|
|
16398
16441
|
[data-scope='carousel'][data-part='root'][data-autoplay]
|
|
16399
16442
|
[data-scope='carousel'][data-part='indicator'][data-current],
|
|
@@ -16723,7 +16766,7 @@
|
|
|
16723
16766
|
/* 私有槽同时声明在根与 positioner 上:浮层被搬到 portal 落点,不是根的后代,继承不过去 */
|
|
16724
16767
|
[data-scope='cascader']:is([data-part='root'], [data-part='positioner']) {
|
|
16725
16768
|
/* 作者塞进触发器指示符槽的图标跟着尺寸档走,与皮肤画的兜底字形同一把尺;列里条目的由家族随
|
|
16726
|
-
data-xh-collection-size
|
|
16769
|
+
data-xh-collection-size 下发。级联选择器自绘的状态字形(标记盒里的勾与半选杠、分支箭头)
|
|
16727
16770
|
不读这支:它们是指示符,走 --xh-control-indicator-* 一族——标记盒在自己身上把 --xh-icon-size 改接到
|
|
16728
16771
|
盒的尺,分支箭头走 --xh-cascader-branch-arrow-size */
|
|
16729
16772
|
--xh-icon-size: var(--xh-cascader-icon-size, var(--xh-glyph-size-md));
|
|
@@ -16991,8 +17034,6 @@
|
|
|
16991
17034
|
|
|
16992
17035
|
[data-scope='cascader'][data-part='content'][data-state='open'] {
|
|
16993
17036
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
16994
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
16995
|
-
will-change: opacity, translate;
|
|
16996
17037
|
}
|
|
16997
17038
|
|
|
16998
17039
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -17165,7 +17206,7 @@
|
|
|
17165
17206
|
/* 分支条目行尾画右向小箭头:不点开也看得出还有下一级。落在家族网格的 suffix 列、跨两行居中。
|
|
17166
17207
|
与菜单族的子菜单箭头同走字形令牌——此前这里是「描全边框再抹掉两条、把剩下的直角旋 45 度」,
|
|
17167
17208
|
作者换掉标记时换不动它,RTL 还得再翻一次旋转角。
|
|
17168
|
-
|
|
17209
|
+
箭头是指示符:与同一行的标记盒同走 --xh-control-indicator-size,不读家族按档下发的
|
|
17169
17210
|
--xh-icon-size——按图标档取的 20px 会比 16px 的标记盒大一圈 */
|
|
17170
17211
|
[data-scope='cascader'][data-part='item'][data-branch]::after {
|
|
17171
17212
|
content: '';
|
|
@@ -17198,7 +17239,7 @@
|
|
|
17198
17239
|
|
|
17199
17240
|
/* 勾选标记落在家族网格的 indicator 列,只在选中项上显形(家族按 aria-selected / data-state=checked 给);
|
|
17200
17241
|
未选中时占位不塌,切换选中不引起行宽抖动。
|
|
17201
|
-
|
|
17242
|
+
盒里的勾与半选杠是指示符:盒在自己身上把 --xh-icon-size 改接到盒的尺,皮肤画的兜底字形与作者
|
|
17202
17243
|
塞进盒里的 XhIcon 读同一把尺、与盒同边长(行尾标记不是勾选格,不取 × 0.75,与搜索候选行尾的勾同尺);
|
|
17203
17244
|
不读家族按档下发到行的 --xh-icon-size——那支只管作者放进条目里的图标,按图标档取的 20px 会比 16 / 14 的盒还大 */
|
|
17204
17245
|
[data-scope='cascader'][data-part='item-indicator'] {
|
|
@@ -17530,8 +17571,8 @@
|
|
|
17530
17571
|
/* 实心底上的勾与横杠,同样没写 data-tone 时退回原来的品牌底前景色 */
|
|
17531
17572
|
--xh-_checkbox-on-accent: var(--xh-_tone-on, var(--xh-fg-on-brand));
|
|
17532
17573
|
|
|
17533
|
-
/* 方框接 Action Control icon
|
|
17534
|
-
|
|
17574
|
+
/* 方框接 Action Control icon 档(定尺方框):盒型、悬停 / 按下 / 禁用面、0.97 缩放与换底、粗指针热区、
|
|
17575
|
+
焦点环由家族配方给,这里只把使用者槽映射到桥接槽。面按字段静息形态取值:透明底 +
|
|
17535
17576
|
--xh-border-control 描边 + 无影,不消费海拔与顶光;悬停只把描边升一档,底不动;按下换到 200 档中性面
|
|
17536
17577
|
(白底承载);边长随 --xh-control-indicator-* 走,不取家族的 profile 尺寸。
|
|
17537
17578
|
常态 / 勾中 / 校验失败 / 只读只换下面四支私有槽,桥接槽的映射写一次 */
|
|
@@ -17604,7 +17645,7 @@
|
|
|
17604
17645
|
|
|
17605
17646
|
/* 悬停标签文字时也让控制盒回应,整行可点不再只有移到 16px 小盒上才看得出来:
|
|
17606
17647
|
指针落在方框上时由家族的悬停块换到 --xh-action-border-hover,落在标签文字上时这里补同一档;
|
|
17607
|
-
未勾选的方框描边升一档(字段静息 → hover
|
|
17648
|
+
未勾选的方框描边升一档(字段静息 → hover 的同一条阶梯),勾中 / 校验失败的方框由上面的映射钉住不换 */
|
|
17608
17649
|
@media (hover: hover) {
|
|
17609
17650
|
[data-scope='checkbox'][data-part='label']:not([data-disabled]):not([data-readonly]):hover
|
|
17610
17651
|
[data-scope='checkbox'][data-part='root'] {
|
|
@@ -17716,7 +17757,7 @@
|
|
|
17716
17757
|
}
|
|
17717
17758
|
|
|
17718
17759
|
/* —— 带文字的整行:<label> 包住控件与文字,与 checkbox-group 的条目、switch 的标签同一副样子 ——
|
|
17719
|
-
文字是控件自己的文字,字号随 size 档取 --xh-control-font
|
|
17760
|
+
文字是控件自己的文字,字号随 size 档取 --xh-control-font-*(控件字号随档);
|
|
17720
17761
|
行高取正文档,长文字可以自然换行 */
|
|
17721
17762
|
[data-scope='checkbox'][data-part='label'] {
|
|
17722
17763
|
--xh-_checkbox-label-gap: var(--xh-control-gap-md);
|
|
@@ -17741,7 +17782,7 @@
|
|
|
17741
17782
|
--xh-_checkbox-label-font-size: var(--xh-control-font-lg);
|
|
17742
17783
|
}
|
|
17743
17784
|
|
|
17744
|
-
/* 禁用标签色统一 --xh-fg-subtle
|
|
17785
|
+
/* 禁用标签色统一 --xh-fg-subtle */
|
|
17745
17786
|
[data-scope='checkbox'][data-part='label'][data-disabled] {
|
|
17746
17787
|
color: var(--xh-checkbox-label-fg-disabled, var(--xh-fg-subtle));
|
|
17747
17788
|
cursor: not-allowed;
|
|
@@ -17806,7 +17847,7 @@
|
|
|
17806
17847
|
[data-scope='checkbox-group'][data-part='root'] {
|
|
17807
17848
|
/* 尺寸档只换这四个私有槽,条目、方框与全选格都从 root 继承它们,
|
|
17808
17849
|
换档不必给每个部件各写一条选择器。方框与字形照 checkbox 的档位走,
|
|
17809
|
-
单体与集合里的同一枚方框必须一样大;条目文字是控件文字,随档取 --xh-control-font
|
|
17850
|
+
单体与集合里的同一枚方框必须一样大;条目文字是控件文字,随档取 --xh-control-font-* */
|
|
17810
17851
|
--xh-_checkbox-group-box: var(--xh-control-indicator-md);
|
|
17811
17852
|
--xh-_checkbox-group-glyph: calc(var(--xh-_checkbox-group-box) * 0.75);
|
|
17812
17853
|
--xh-_checkbox-group-gap: var(--xh-control-gap-md);
|
|
@@ -17817,7 +17858,7 @@
|
|
|
17817
17858
|
/* 勾中的填色随语气走;没写 data-tone 时退回品牌色 */
|
|
17818
17859
|
--xh-_checkbox-group-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
17819
17860
|
--xh-_checkbox-group-on-accent: var(--xh-_tone-on, var(--xh-fg-on-brand));
|
|
17820
|
-
/*
|
|
17861
|
+
/* 方框是字段家族的控制盒(字段静息形态):透明底 + --xh-border-control 描边 + 无影,不消费海拔与顶光 */
|
|
17821
17862
|
--xh-_checkbox-group-bg: var(--xh-checkbox-group-indicator-bg, transparent);
|
|
17822
17863
|
/* 条目与全选格是方框的承载面:行自己坐画布走 100 → 200,行面上的方框按淡底容器阶梯再上一档(200 → 300)。
|
|
17823
17864
|
两支私有槽是这一档的唯一来源——宿主拿它们给 --xh-action-host-bg-* 赋值(桥接槽只写不读),
|
|
@@ -17826,7 +17867,7 @@
|
|
|
17826
17867
|
--xh-_checkbox-group-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
17827
17868
|
|
|
17828
17869
|
/* 标题与条目都是根的直接子节点,一支 gap 同时管「标题到集合」与「条目之间」:
|
|
17829
|
-
集合标题与集合隔 --xh-space-2
|
|
17870
|
+
集合标题与集合隔 --xh-space-2,同组条目之间也是同一档紧密关系 */
|
|
17830
17871
|
display: flex;
|
|
17831
17872
|
gap: var(--xh-checkbox-group-gap, var(--xh-space-2));
|
|
17832
17873
|
}
|
|
@@ -17859,7 +17900,7 @@
|
|
|
17859
17900
|
align-items: center;
|
|
17860
17901
|
}
|
|
17861
17902
|
|
|
17862
|
-
/*
|
|
17903
|
+
/* 集合标题:14 / 500 / fg-muted,字号不随 size 档 */
|
|
17863
17904
|
[data-scope='checkbox-group'][data-part='label'] {
|
|
17864
17905
|
color: var(--xh-checkbox-group-label-fg, var(--xh-fg-muted));
|
|
17865
17906
|
font-size: var(--xh-checkbox-group-label-font-size, var(--xh-text-label-size));
|
|
@@ -17873,7 +17914,7 @@
|
|
|
17873
17914
|
color: var(--xh-checkbox-group-label-fg-disabled, var(--xh-fg-subtle));
|
|
17874
17915
|
}
|
|
17875
17916
|
|
|
17876
|
-
/* 条目是「方框 +
|
|
17917
|
+
/* 条目是「方框 + 文案」的整行命中区:接 Action Control row 档、ghost 形态,悬停 / 按下 / 禁用面、手型、
|
|
17877
17918
|
过渡与焦点环由家族给,按下只换面不缩放(row 档专属按压块 scale: none);这里只把使用者槽映射到桥接槽。
|
|
17878
17919
|
行自己坐画布走 100 → 200(--xh-action-bg-* 钉住自己的面),行面上的方框按淡底容器阶梯再上一档
|
|
17879
17920
|
(--xh-action-host-bg-* 向内声明自己是方框的承载面,host 槽只对后代生效——自己的面已由 --xh-action-bg-* 钉住;
|
|
@@ -17937,7 +17978,7 @@
|
|
|
17937
17978
|
box-shadow: var(--xh-checkbox-group-indicator-shadow, none);
|
|
17938
17979
|
font-size: var(--xh-checkbox-group-indicator-font-size, var(--xh-_checkbox-group-glyph));
|
|
17939
17980
|
line-height: var(--xh-leading-none);
|
|
17940
|
-
/*
|
|
17981
|
+
/* 方框不缩放(行级只换面),过渡只有底与描边;按下走 press 时间线、释放同走 micro */
|
|
17941
17982
|
transition:
|
|
17942
17983
|
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
17943
17984
|
border-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
@@ -17949,7 +17990,7 @@
|
|
|
17949
17990
|
content: '';
|
|
17950
17991
|
}
|
|
17951
17992
|
|
|
17952
|
-
/* 悬停整行时未勾选的方框描边升一档(字段静息 → hover
|
|
17993
|
+
/* 悬停整行时未勾选的方框描边升一档(字段静息 → hover 的同一条阶梯);
|
|
17953
17994
|
勾中的方框描边与底同色,悬停不换描边——填色本身已经在表达状态 */
|
|
17954
17995
|
@media (hover: hover) {
|
|
17955
17996
|
[data-scope='checkbox-group'][data-part='root']:not([data-disabled]):not([data-readonly]):not([data-invalid])
|
|
@@ -17970,7 +18011,7 @@
|
|
|
17970
18011
|
}
|
|
17971
18012
|
|
|
17972
18013
|
/* 按下去要有回应。方框不是激活宿主:宿主是投影了 row 档的整行(条目 / 全选格),方框在宿主的
|
|
17973
|
-
:hover / :is(:active, [data-pressed]) 下读宿主 host
|
|
18014
|
+
:hover / :is(:active, [data-pressed]) 下读宿主 host 槽的同一来源换面、不缩放——行按下是 200,
|
|
17974
18015
|
坐在上面的方框到 300(行以 --xh-action-host-bg-pressed 声明自己是方框的承载面,桥接槽只写不读,
|
|
17975
18016
|
方框读的是喂给它的那支私有槽),勾中的换到语气的 active 档;
|
|
17976
18017
|
与家族按压块同一时间线(按下 --xh-motion-duration-press,释放同走 micro) */
|
|
@@ -18059,7 +18100,7 @@
|
|
|
18059
18100
|
border-color: var(--xh-checkbox-group-indicator-border-invalid, var(--xh-border-invalid));
|
|
18060
18101
|
}
|
|
18061
18102
|
|
|
18062
|
-
/*
|
|
18103
|
+
/* 禁用:--xh-border-default 描边 + --xh-bg-subtle 底 + --xh-fg-disabled 字形,不靠 opacity */
|
|
18063
18104
|
[data-scope='checkbox-group'][data-part='root'][data-disabled]
|
|
18064
18105
|
[data-scope='checkbox-group'][data-part='indicator'],
|
|
18065
18106
|
[data-scope='checkbox-group'][data-part='item'][data-disabled]
|
|
@@ -18081,7 +18122,7 @@
|
|
|
18081
18122
|
家族的禁用块同样只读 data-disabled。position 是给叠在方框上的那颗字形 ::after 当定位基准 */
|
|
18082
18123
|
[data-scope='checkbox-group'][data-part='select-all-trigger'] {
|
|
18083
18124
|
--xh-action-gap: var(--xh-checkbox-group-select-all-trigger-gap, var(--xh-_checkbox-group-gap));
|
|
18084
|
-
/* 全选格的身份是嵌在 control
|
|
18125
|
+
/* 全选格的身份是嵌在 control 内的小方框(select-all 方框取 inset),与条目方框同一档 */
|
|
18085
18126
|
--xh-action-radius: var(--xh-checkbox-group-select-all-trigger-radius, var(--xh-shape-inset));
|
|
18086
18127
|
--xh-action-font-size: var(--xh-checkbox-group-select-all-trigger-font-size, var(--xh-_checkbox-group-font-size));
|
|
18087
18128
|
--xh-action-padding-inline: 0;
|
|
@@ -18309,7 +18350,7 @@
|
|
|
18309
18350
|
border-end-end-radius: 0;
|
|
18310
18351
|
}
|
|
18311
18352
|
|
|
18312
|
-
/* 焦点边一律 --xh-border-control-focus,不随 tone
|
|
18353
|
+
/* 焦点边一律 --xh-border-control-focus,不随 tone */
|
|
18313
18354
|
[data-scope='clipboard'][data-part='input']:focus-visible {
|
|
18314
18355
|
border-color: var(--xh-clipboard-input-border-focus, var(--xh-border-control-focus));
|
|
18315
18356
|
}
|
|
@@ -18330,7 +18371,7 @@
|
|
|
18330
18371
|
-webkit-text-fill-color: var(--xh-clipboard-input-autofill-fg, var(--xh-fg-default));
|
|
18331
18372
|
}
|
|
18332
18373
|
|
|
18333
|
-
/*
|
|
18374
|
+
/* 复制钮是定尺的独立动作按钮:盒型、四态面、0.97 按压与粗指针命中区由家族配方给出,
|
|
18334
18375
|
这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射。
|
|
18335
18376
|
叠格布局要保留:两侧指示器叠在同一格,切换时不抖宽度 */
|
|
18336
18377
|
[data-scope='clipboard'][data-part='copy-trigger'] {
|
|
@@ -18350,7 +18391,7 @@
|
|
|
18350
18391
|
--xh-action-border-pressed: var(--xh-clipboard-copy-trigger-border-hover, var(--xh-_action-variant-border-pressed));
|
|
18351
18392
|
--xh-action-border-focus-visible: var(--xh-clipboard-copy-trigger-border, var(--xh-_action-variant-border-focus-visible));
|
|
18352
18393
|
--xh-action-border-disabled: var(--xh-clipboard-copy-trigger-border-disabled, var(--xh-_action-variant-border-disabled));
|
|
18353
|
-
/*
|
|
18394
|
+
/* 矩阵各态无影(淡底与阴影互斥):solid 也不再悬停抬影,使用者槽仍可自行加 */
|
|
18354
18395
|
--xh-action-shadow-hover: var(--xh-clipboard-copy-trigger-shadow-hover, none);
|
|
18355
18396
|
--xh-action-radius: var(--xh-clipboard-copy-trigger-radius, var(--xh-shape-control));
|
|
18356
18397
|
--xh-action-visual-size: var(--xh-clipboard-copy-trigger-h, var(--xh-_clipboard-h));
|
|
@@ -18416,7 +18457,7 @@
|
|
|
18416
18457
|
margin: auto;
|
|
18417
18458
|
border: var(--xh-stroke-thin) solid transparent;
|
|
18418
18459
|
border-block-start-color: currentColor;
|
|
18419
|
-
/* 正圆的加载环:正方盒取 circle
|
|
18460
|
+
/* 正圆的加载环:正方盒取 circle */
|
|
18420
18461
|
border-radius: var(--xh-shape-circle);
|
|
18421
18462
|
opacity: 0;
|
|
18422
18463
|
animation:
|
|
@@ -18539,7 +18580,7 @@
|
|
|
18539
18580
|
--xh-code-view-skin: 1;
|
|
18540
18581
|
}
|
|
18541
18582
|
|
|
18542
|
-
/* 一张静态内容面:--xh-border-default 描边 + surface 底 +
|
|
18583
|
+
/* 一张静态内容面:--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担),
|
|
18543
18584
|
overflow: hidden 让内部 <pre> 的滚动内容沿圆角收边;不设 display,排布由作者决定。
|
|
18544
18585
|
color 给整段未着色的代码定基线,字号在这里消费一次,缺省即 sm 档。 */
|
|
18545
18586
|
[data-scope='code-view'][data-part='root'] {
|
|
@@ -18727,7 +18768,7 @@
|
|
|
18727
18768
|
}
|
|
18728
18769
|
|
|
18729
18770
|
/* 折叠条是铺满一行的 disclosure trigger,盒型、悬停与按下面由 Action Control 的 disclosure-trigger 档给
|
|
18730
|
-
(ghost 形态:白底承载 hover 100 → pressed 200
|
|
18771
|
+
(ghost 形态:白底承载 hover 100 → pressed 200,按下只换面不缩放);这里只把使用者槽映射到
|
|
18731
18772
|
桥接槽:圆角归零贴住卡边,内衬沿用代码区的横向内距与折叠条自己的纵向内距,字号与头部条同档。
|
|
18732
18773
|
顶边是与头部条同一支的内部分隔线:配方按状态写 border-color 简写,四个状态的边色槽都映射到
|
|
18733
18774
|
这支分隔色,再把四边宽归零、只留顶边一条 */
|
|
@@ -18818,7 +18859,7 @@
|
|
|
18818
18859
|
/* 根容器自己不排版,这条只声明尺寸档的私有槽:正文与标题行从 root 继承它们,
|
|
18819
18860
|
换档不必给部件各写一条选择器;触发器的三档几何由家族 disclosure-trigger 档给 */
|
|
18820
18861
|
[data-scope='collapsible'][data-part='root'] {
|
|
18821
|
-
/* 作者塞进正文里的图标与皮肤画的兜底字形同一把尺:md
|
|
18862
|
+
/* 作者塞进正文里的图标与皮肤画的兜底字形同一把尺:md 档,触发器上另按家族档取值 */
|
|
18822
18863
|
--xh-icon-size: var(--xh-collapsible-icon-size, var(--xh-glyph-size-md));
|
|
18823
18864
|
|
|
18824
18865
|
--xh-_collapsible-trigger-gap: var(--xh-control-gap-md);
|
|
@@ -18858,7 +18899,7 @@
|
|
|
18858
18899
|
}
|
|
18859
18900
|
|
|
18860
18901
|
/* 触发器铺满一行,盒型、三档几何、悬停 / 按下 / 禁用面由 Action Control 的 disclosure-trigger 档给
|
|
18861
|
-
(ghost 形态:根无壳,按画布承载 hover 100 → pressed 200
|
|
18902
|
+
(ghost 形态:根无壳,按画布承载 hover 100 → pressed 200;按下只换面不缩放);
|
|
18862
18903
|
这里只把使用者槽映射到桥接槽:字色三态同值(家族的 hover / pressed 字色规则比皮肤更特定,不映射会被换回
|
|
18863
18904
|
缺省字色),字形按触发器自己的档位取 --xh-_action-profile-glyph-size;边归零贴住标题行,几何与迁移前一致 */
|
|
18864
18905
|
[data-scope='collapsible'][data-part='trigger'] {
|
|
@@ -18880,7 +18921,7 @@
|
|
|
18880
18921
|
}
|
|
18881
18922
|
|
|
18882
18923
|
/* 展开着的那一档单开一个槽:与常态共用一个的话,作者一改常态字色就把展开态也改掉了。
|
|
18883
|
-
悬停 /
|
|
18924
|
+
悬停 / 按下的面与收起态同档(open 与家族 hover 同档中性) */
|
|
18884
18925
|
[data-scope='collapsible'][data-part='trigger'][data-state='open'] {
|
|
18885
18926
|
--xh-action-fg-rest: var(--xh-collapsible-trigger-fg-open, var(--xh-_collapsible-open-fg));
|
|
18886
18927
|
--xh-action-fg-hover: var(--xh-collapsible-trigger-fg-open, var(--xh-_collapsible-open-fg));
|
|
@@ -18900,7 +18941,7 @@
|
|
|
18900
18941
|
justify-content: center;
|
|
18901
18942
|
color: var(--xh-collapsible-indicator-fg, var(--xh-fg-muted));
|
|
18902
18943
|
line-height: var(--xh-leading-none);
|
|
18903
|
-
/*
|
|
18944
|
+
/* 指示器与正文同档转向:正文 enter 档展开,箭头也用同一段时长翻过去 */
|
|
18904
18945
|
transition: rotate var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
18905
18946
|
}
|
|
18906
18947
|
|
|
@@ -19320,9 +19361,9 @@
|
|
|
19320
19361
|
padding-inline: var(--xh-color-picker-content-px, var(--xh-space-3));
|
|
19321
19362
|
max-block-size: min(var(--xh-color-picker-max-h, var(--xh-viewport-h-md)), var(--xh-_color-picker-available-h));
|
|
19322
19363
|
overflow-y: auto;
|
|
19323
|
-
/*
|
|
19364
|
+
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
19324
19365
|
overscroll-behavior: contain;
|
|
19325
|
-
/* 面域 + 滑杆 + 通道输入的表单型多列面板,走 floating
|
|
19366
|
+
/* 面域 + 滑杆 + 通道输入的表单型多列面板,走 floating 材质——实体底 + --xh-border-default 描边 +
|
|
19326
19367
|
--xh-elevation-floating 落影,不透景、不画顶部边界光 */
|
|
19327
19368
|
border: var(--xh-stroke-thin) solid var(--xh-color-picker-content-border, var(--xh-border-default));
|
|
19328
19369
|
border-radius: var(--xh-color-picker-content-radius, var(--xh-shape-overlay));
|
|
@@ -19332,9 +19373,7 @@
|
|
|
19332
19373
|
pointer-events: auto;
|
|
19333
19374
|
}
|
|
19334
19375
|
|
|
19335
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
19336
19376
|
[data-scope='color-picker'][data-part='content'][data-state='open'] {
|
|
19337
|
-
will-change: opacity, translate;
|
|
19338
19377
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
19339
19378
|
}
|
|
19340
19379
|
|
|
@@ -19642,7 +19681,7 @@
|
|
|
19642
19681
|
|
|
19643
19682
|
display: flex;
|
|
19644
19683
|
flex-direction: column;
|
|
19645
|
-
/*
|
|
19684
|
+
/* 字段标签贴控件(复合单字段) */
|
|
19646
19685
|
gap: var(--xh-color-slider-gap, var(--xh-space-1));
|
|
19647
19686
|
}
|
|
19648
19687
|
|
|
@@ -19652,10 +19691,10 @@
|
|
|
19652
19691
|
align-items: center;
|
|
19653
19692
|
}
|
|
19654
19693
|
|
|
19655
|
-
/*
|
|
19694
|
+
/* 禁用不整体压暗:标签是文字,换到禁用前景;颜色带与拇指画的是颜色本身,换不得色,
|
|
19656
19695
|
压暗只做一次、落在 control 上(track / thumb 各自再叠一层 opacity 会越叠越黑),拇指另收掉抬升 */
|
|
19657
19696
|
|
|
19658
|
-
/* 字段标签:14 / 500 / fg-default
|
|
19697
|
+
/* 字段标签:14 / 500 / fg-default,禁用换到 --xh-fg-subtle */
|
|
19659
19698
|
[data-scope='color-slider'][data-part='label'] {
|
|
19660
19699
|
color: var(--xh-color-slider-label-fg, var(--xh-fg-default));
|
|
19661
19700
|
font-size: var(--xh-color-slider-label-font-size, var(--xh-text-label-size));
|
|
@@ -19741,7 +19780,7 @@
|
|
|
19741
19780
|
}
|
|
19742
19781
|
|
|
19743
19782
|
/* 圆点浮在轨道之上:轨道是流内的,拇指是绝对定位的,天然后来居上。
|
|
19744
|
-
拇指填的是当前那一档的颜色(连接层写进私有槽),拇指是可拖起的 raised
|
|
19783
|
+
拇指填的是当前那一档的颜色(连接层写进私有槽),拇指是可拖起的 raised 面:
|
|
19745
19784
|
--xh-border-default 描边把它从任何底色里框出来,raised 影只是加成、不作边界。
|
|
19746
19785
|
box-sizing 必须显式写:描边要吃进直径里,否则下面按半个直径回拉的负外边距就对不上圆心。 */
|
|
19747
19786
|
[data-scope='color-slider'][data-part='thumb'] {
|
|
@@ -19969,7 +20008,7 @@
|
|
|
19969
20008
|
--xh-_color-swatch-picker-indicator: var(--xh-control-indicator-lg);
|
|
19970
20009
|
}
|
|
19971
20010
|
|
|
19972
|
-
/*
|
|
20011
|
+
/* 标题独占一行,格子从下一行起排。复合单字段的标签:14 / 500 / fg-default,不随档;
|
|
19973
20012
|
与格子的距离贴控件 space-1——容器的 gap 归格子之间,标签在它之上补一段差值把距离收成目标值 */
|
|
19974
20013
|
[data-scope='color-swatch-picker'][data-part='label'] {
|
|
19975
20014
|
flex-basis: 100%;
|
|
@@ -19998,7 +20037,7 @@
|
|
|
19998
20037
|
flex: none;
|
|
19999
20038
|
inline-size: var(--xh-color-swatch-picker-item-size, var(--xh-_color-swatch-picker-cell));
|
|
20000
20039
|
block-size: var(--xh-color-swatch-picker-item-size, var(--xh-_color-swatch-picker-cell));
|
|
20001
|
-
/* 色块 item 的身份是 inset
|
|
20040
|
+
/* 色块 item 的身份是 inset(嵌在 control 内的小块) */
|
|
20002
20041
|
border-radius: var(--xh-color-swatch-picker-item-radius, var(--xh-shape-inset));
|
|
20003
20042
|
outline: none;
|
|
20004
20043
|
cursor: pointer;
|
|
@@ -20006,12 +20045,12 @@
|
|
|
20006
20045
|
}
|
|
20007
20046
|
|
|
20008
20047
|
/* 指到哪一格:描边换到控件的悬停边(border-strong 只留给 contrast-more 与登记的强调边);
|
|
20009
|
-
|
|
20048
|
+
选中的那一格保留自己的品牌描边(选中身份不被悬停盖掉) */
|
|
20010
20049
|
[data-scope='color-swatch-picker'][data-part='item']:not([data-disabled], [data-readonly], [data-state='checked']):hover {
|
|
20011
20050
|
--xh-_color-swatch-picker-edge: var(--xh-color-swatch-picker-swatch-border-hover, var(--xh-border-control-hover));
|
|
20012
20051
|
}
|
|
20013
20052
|
|
|
20014
|
-
/*
|
|
20053
|
+
/* 这一格的底色就是它要展示的那个颜色,换底等于把展示物盖掉(的「同时换底」在这里落不下去),
|
|
20015
20054
|
交互回执只能落在别处:按下去看下压,描边同时换到品牌色作第二通道(按住即将选中的那一格)。
|
|
20016
20055
|
置灰与只读的都不压;指针 :active 与 Headless 投影的 data-pressed 看见同一副按压面 */
|
|
20017
20056
|
[data-scope='color-swatch-picker'][data-part='item']:not([data-disabled], [data-readonly]):is(:active, [data-pressed]) {
|
|
@@ -20080,7 +20119,7 @@
|
|
|
20080
20119
|
inline-size: var(--xh-color-swatch-picker-indicator-size, var(--xh-_color-swatch-picker-indicator));
|
|
20081
20120
|
block-size: var(--xh-color-swatch-picker-indicator-size, var(--xh-_color-swatch-picker-indicator));
|
|
20082
20121
|
border: var(--xh-stroke-thin) solid var(--xh-color-swatch-picker-indicator-border, var(--xh-bg-canvas));
|
|
20083
|
-
/* 正方盒取 circle
|
|
20122
|
+
/* 正方盒取 circle(宽高同槽的盒不得用 pill 冒充圆) */
|
|
20084
20123
|
border-radius: var(--xh-shape-circle);
|
|
20085
20124
|
background: var(--xh-color-swatch-picker-indicator-bg, var(--xh-_color-swatch-picker-accent));
|
|
20086
20125
|
opacity: 0;
|
|
@@ -20239,7 +20278,7 @@
|
|
|
20239
20278
|
|
|
20240
20279
|
/* 作者塞进指示符槽的图标跟着控件的尺寸档走;它自己写了 size 时仍以作者的为准。
|
|
20241
20280
|
浮层条目里自绘的状态字形(勾选标记所在的标记盒与盒里的勾)不读这支:它们是指示符,走
|
|
20242
|
-
--xh-control-indicator-* 一族——标记盒在自己身上把 --xh-icon-size
|
|
20281
|
+
--xh-control-indicator-* 一族——标记盒在自己身上把 --xh-icon-size 改接到盒的尺 */
|
|
20243
20282
|
--xh-icon-size: var(--xh-combobox-icon-size, var(--xh-glyph-size-md));
|
|
20244
20283
|
|
|
20245
20284
|
/* 语气只落在勾选标记上,单选与多选正文使用同一颜色。 */
|
|
@@ -20477,8 +20516,6 @@
|
|
|
20477
20516
|
|
|
20478
20517
|
[data-scope='combobox'][data-part='content'][data-state='open'] {
|
|
20479
20518
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
20480
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
20481
|
-
will-change: opacity, translate;
|
|
20482
20519
|
}
|
|
20483
20520
|
|
|
20484
20521
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -20579,7 +20616,7 @@
|
|
|
20579
20616
|
|
|
20580
20617
|
/* 勾选标记落在家族网格的 indicator 列,只在选中项上显形(家族按 aria-selected / data-state=checked 给);
|
|
20581
20618
|
未选中时占位不塌,切换选中不引起行宽抖动。
|
|
20582
|
-
|
|
20619
|
+
盒与盒里的勾是指示符:盒按指示符档取尺,并在自己身上把 --xh-icon-size 改接到盒的尺,皮肤画的
|
|
20583
20620
|
兜底勾与作者塞进盒里的 XhIcon 读同一把尺、与盒同边长(勾选标记不是勾选格,不取 × 0.75,与 Select /
|
|
20584
20621
|
Listbox / Menu 族同口径);不读 root / positioner 按档下发的 --xh-icon-size——那支只管作者放进条目里的
|
|
20585
20622
|
图标,按图标档取的 20px 比 16 / 14 的指示符档大一圈 */
|
|
@@ -20689,7 +20726,7 @@
|
|
|
20689
20726
|
谁先命中谁给出这一档的取值;条目、检索框与提示条都从面板继承下去 */
|
|
20690
20727
|
[data-scope='command']:is([data-part='positioner'], [data-part='content']) {
|
|
20691
20728
|
/* 条目外的字形(分组标题、底部提示条)按档取尺,缺省 md,随 data-size 换档;命令里的图标由家族随
|
|
20692
|
-
data-xh-collection-size
|
|
20729
|
+
data-xh-collection-size 下发 */
|
|
20693
20730
|
--xh-icon-size: var(--xh-command-icon-size, var(--xh-glyph-size-md));
|
|
20694
20731
|
|
|
20695
20732
|
/* 尺寸档只换这六个私有槽,换档不必给每个部件各写一条选择器 */
|
|
@@ -20788,7 +20825,7 @@
|
|
|
20788
20825
|
max-inline-size: var(--xh-command-max-w, var(--xh-_command-max-w));
|
|
20789
20826
|
/* 封顶才有可滚的余量:不封顶结果列表会一路撑到视口外,滚动条永远出不来 */
|
|
20790
20827
|
max-block-size: var(--xh-command-max-h, var(--xh-overlay-max-h));
|
|
20791
|
-
/* 模态命令面板与 Dialog 同档:overlay 圆角 + sheet 三件套(material-elevated 的边 / 底 /
|
|
20828
|
+
/* 模态命令面板与 Dialog 同档:overlay 圆角 + sheet 三件套(material-elevated 的边 / 底 / 影),
|
|
20792
20829
|
边界由描边承担,不再只靠落影 */
|
|
20793
20830
|
border: var(--xh-stroke-thin) solid var(--xh-command-border, var(--xh-material-elevated-border));
|
|
20794
20831
|
border-radius: var(--xh-command-radius, var(--xh-shape-overlay));
|
|
@@ -20818,8 +20855,6 @@
|
|
|
20818
20855
|
|
|
20819
20856
|
[data-scope='command'][data-part='content'][data-state='open'] {
|
|
20820
20857
|
animation: xh-overlay-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
20821
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
20822
|
-
will-change: opacity, scale, translate;
|
|
20823
20858
|
}
|
|
20824
20859
|
|
|
20825
20860
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -20875,7 +20910,7 @@
|
|
|
20875
20910
|
min-block-size: 0;
|
|
20876
20911
|
padding-block: var(--xh-command-list-py, var(--xh-space-2));
|
|
20877
20912
|
padding-inline: var(--xh-command-list-px, var(--xh-space-2));
|
|
20878
|
-
/*
|
|
20913
|
+
/* 模态面板里的滚动面:到底后不把滚动链穿透给页面 */
|
|
20879
20914
|
overflow-y: auto;
|
|
20880
20915
|
overscroll-behavior: contain;
|
|
20881
20916
|
}
|
|
@@ -21127,7 +21162,7 @@
|
|
|
21127
21162
|
/* 私有槽同时声明在根与 positioner 上:浮层被搬到 portal 落点,不是根的后代,继承不过去 */
|
|
21128
21163
|
[data-scope='context-menu']:is([data-part='root'], [data-part='positioner']) {
|
|
21129
21164
|
/* 条目外的字形(分组标题等)按档取尺,缺省 md,随 data-size 换档;同样声明在 positioner 上,被搬走的浮层
|
|
21130
|
-
才拿得到;条目里作者放的图标由家族随 data-xh-collection-size
|
|
21165
|
+
才拿得到;条目里作者放的图标由家族随 data-xh-collection-size 下发。菜单自绘的状态字形(标记位的盒、
|
|
21131
21166
|
盒里兜底的勾、子菜单的展开 chevron)不读这支:它们是指示符,走 --xh-control-indicator-* 一族——标记位在
|
|
21132
21167
|
自己身上把 --xh-icon-size 改接到盒的尺,子菜单箭头走 --xh-context-menu-submenu-indicator-size */
|
|
21133
21168
|
--xh-icon-size: var(--xh-context-menu-icon-size, var(--xh-glyph-size-md));
|
|
@@ -21166,7 +21201,7 @@
|
|
|
21166
21201
|
-webkit-backdrop-filter: var(--xh-context-menu-backdrop, var(--xh-material-frosted-backdrop));
|
|
21167
21202
|
backdrop-filter: var(--xh-context-menu-backdrop, var(--xh-material-frosted-backdrop));
|
|
21168
21203
|
/* 条目超过上限就在菜单内部滚;内收焦点环不会被内边距缘裁掉。
|
|
21169
|
-
|
|
21204
|
+
浮层滚动面:到底后不把滚动链穿透给页面 */
|
|
21170
21205
|
overflow-y: auto;
|
|
21171
21206
|
overscroll-behavior: contain;
|
|
21172
21207
|
pointer-events: auto;
|
|
@@ -21242,8 +21277,6 @@
|
|
|
21242
21277
|
|
|
21243
21278
|
/* 首帧落位后从锚点一侧淡入短移,不缩放整张面。 */
|
|
21244
21279
|
[data-scope='context-menu'][data-part='content'][data-state='open'] {
|
|
21245
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
21246
|
-
will-change: opacity, translate;
|
|
21247
21280
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
21248
21281
|
}
|
|
21249
21282
|
|
|
@@ -21324,7 +21357,7 @@
|
|
|
21324
21357
|
}
|
|
21325
21358
|
|
|
21326
21359
|
/* 子菜单箭头留在主行末端;description 即使写在它前面,也由 order 独占下一行。
|
|
21327
|
-
|
|
21360
|
+
箭头是指示符:与标记位的盒同走 --xh-control-indicator-size,不读 --xh-icon-size——
|
|
21328
21361
|
按图标档取的 20px 会比 16px 的标记位盒大一圈 */
|
|
21329
21362
|
[data-scope='context-menu'][data-part='item'][aria-haspopup='menu']::after {
|
|
21330
21363
|
content: '';
|
|
@@ -21356,7 +21389,7 @@
|
|
|
21356
21389
|
display: none;
|
|
21357
21390
|
}
|
|
21358
21391
|
|
|
21359
|
-
/* 标记位(勾选符号 /
|
|
21392
|
+
/* 标记位(勾选符号 / 图标)按作者写入的槽位留在主行,不为没写的条目强制占列。盒是指示符:按指示符档
|
|
21360
21393
|
取尺,与 Menu / Cascader 的标记位同走 --xh-control-indicator-size,不读家族按档下发的 --xh-icon-size——
|
|
21361
21394
|
按图标档取的 20px 会比同一行 16px 的指示符档大一圈。盒在自己身上把 --xh-icon-size 改接到盒的尺,
|
|
21362
21395
|
皮肤画的兜底勾与作者塞进标记位的 XhIcon 读同一把尺、与盒同边长(行尾标记不是勾选格,不取 × 0.75);
|
|
@@ -22002,8 +22035,6 @@
|
|
|
22002
22035
|
}
|
|
22003
22036
|
|
|
22004
22037
|
[data-scope='date-picker'][data-part='content'][data-state='open'] {
|
|
22005
|
-
/* 只在展开态挂着:随状态属性一起消失,不长期占着合成层 */
|
|
22006
|
-
will-change: opacity, translate;
|
|
22007
22038
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
22008
22039
|
}
|
|
22009
22040
|
|
|
@@ -22772,8 +22803,6 @@
|
|
|
22772
22803
|
}
|
|
22773
22804
|
|
|
22774
22805
|
[data-scope='date-range-picker'][data-part='content'][data-state='open'] {
|
|
22775
|
-
/* 只在展开态挂着:随状态属性一起消失,不长期占着合成层 */
|
|
22776
|
-
will-change: opacity, translate;
|
|
22777
22806
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
22778
22807
|
}
|
|
22779
22808
|
|
|
@@ -23061,7 +23090,7 @@
|
|
|
23061
23090
|
}
|
|
23062
23091
|
|
|
23063
23092
|
/*
|
|
23064
|
-
*
|
|
23093
|
+
* 触发器是页面上的独立文字按钮:盒型、md 档几何、outline 四态面、0.97 按压并换底与粗指针命中区
|
|
23065
23094
|
* 由家族配方按连接层投影的 data-xh-action-variant / -size 给出。皮肤没有自己的外观规则,
|
|
23066
23095
|
* 只把作者塞进按钮的图标接到随档字形尺(md = 20px)。
|
|
23067
23096
|
*/
|
|
@@ -23125,7 +23154,7 @@
|
|
|
23125
23154
|
}
|
|
23126
23155
|
|
|
23127
23156
|
[data-scope='dialog'][data-part='content'] {
|
|
23128
|
-
/*
|
|
23157
|
+
/* 作者塞进面板里的图标按控件档取;语气徽记与关闭钮另有各自的尺 */
|
|
23129
23158
|
--xh-icon-size: var(--xh-dialog-icon-size, var(--xh-glyph-size-md));
|
|
23130
23159
|
|
|
23131
23160
|
/* 尺寸档只换这一个私有槽。它声明在 content 而不是别处:dialog 的解剖里没有 root,
|
|
@@ -23193,8 +23222,6 @@
|
|
|
23193
23222
|
|
|
23194
23223
|
[data-scope='dialog'][data-part='content'][data-state='open'] {
|
|
23195
23224
|
animation: xh-dialog-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
23196
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
23197
|
-
will-change: opacity, scale, translate;
|
|
23198
23225
|
}
|
|
23199
23226
|
|
|
23200
23227
|
[data-scope='dialog'][data-part='content'][data-state='closed'] {
|
|
@@ -23275,7 +23302,7 @@
|
|
|
23275
23302
|
|
|
23276
23303
|
/* 正文段:面板里唯一会滚的一段。最小高度归零,
|
|
23277
23304
|
否则弹性项按内容撑高,容器再矮也不产生溢出,滚动条永远出不来。
|
|
23278
|
-
模态 body
|
|
23305
|
+
模态 body 是原生细条滚动面:细条由 reset 层统一给,滚到头不把页面一起带走 */
|
|
23279
23306
|
[data-scope='dialog'][data-part='body'] {
|
|
23280
23307
|
flex: 1 1 auto;
|
|
23281
23308
|
min-block-size: 0;
|
|
@@ -23318,7 +23345,7 @@
|
|
|
23318
23345
|
color: var(--xh-dialog-title-fg, var(--xh-fg-default));
|
|
23319
23346
|
}
|
|
23320
23347
|
|
|
23321
|
-
/*
|
|
23348
|
+
/* 说明文字走说明档:13px + fg-muted */
|
|
23322
23349
|
[data-scope='dialog'][data-part='description'] {
|
|
23323
23350
|
margin: 0;
|
|
23324
23351
|
font-size: var(--xh-dialog-description-font-size, var(--xh-text-secondary-size));
|
|
@@ -23333,7 +23360,7 @@
|
|
|
23333
23360
|
}
|
|
23334
23361
|
|
|
23335
23362
|
/*
|
|
23336
|
-
*
|
|
23363
|
+
* 关闭钮是面板角落的单图标钮:正方盒、sm 档几何、ghost 四态面、0.97 按压并换底与粗指针命中区
|
|
23337
23364
|
* 由家族配方给出——白面上走画布承载阶梯悬停 --xh-bg-subtle(100)→ 按下 --xh-bg-subtle-hover(200),
|
|
23338
23365
|
* 焦点面透明吃库环。这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与摆放,
|
|
23339
23366
|
* 聚焦档的 -bg-focus / -fg-focus 两槽同样桥到配方的 focus-visible 面,缺省仍是透明底与悬停字色;
|
|
@@ -23514,7 +23541,7 @@
|
|
|
23514
23541
|
/* root 留在页面原地,只是 data-side / data-state 的落点,不该凭空多出一层盒子把
|
|
23515
23542
|
trigger 从作者的 flex / grid 行里挤出去,故 display: contents。 */
|
|
23516
23543
|
[data-scope='drawer'][data-part='root'] {
|
|
23517
|
-
/*
|
|
23544
|
+
/* 作者塞进面板里的图标按控件档取;触发器与关闭钮另由家族配方按各自的档下发字形尺 */
|
|
23518
23545
|
--xh-icon-size: var(--xh-drawer-icon-size, var(--xh-glyph-size-md));
|
|
23519
23546
|
|
|
23520
23547
|
display: contents;
|
|
@@ -23532,7 +23559,7 @@
|
|
|
23532
23559
|
}
|
|
23533
23560
|
|
|
23534
23561
|
/*
|
|
23535
|
-
*
|
|
23562
|
+
* 触发器是页面上的独立文字按钮:盒型、md 档几何、outline 四态面、0.97 按压并换底与粗指针命中区
|
|
23536
23563
|
* 由家族配方按连接层投影的 data-xh-action-variant / -size 给出(此前自写描边盒型,hover 落 200 / active 落 300)。
|
|
23537
23564
|
* 这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射。
|
|
23538
23565
|
*/
|
|
@@ -23566,7 +23593,7 @@
|
|
|
23566
23593
|
}
|
|
23567
23594
|
|
|
23568
23595
|
/* 抽屉展开期间触发按钮压住不弹起:面板贴在视口边上,它和按钮往往离得很远,
|
|
23569
|
-
按钮自己得说明"这一扇是我开的"。open 与家族 hover
|
|
23596
|
+
按钮自己得说明"这一扇是我开的"。open 与家族 hover 同档中性:
|
|
23570
23597
|
白底承载的 --xh-bg-subtle(100)+ 悬停描边,聚焦时这块面留着 */
|
|
23571
23598
|
[data-scope='drawer'][data-part='trigger'][data-state='open'] {
|
|
23572
23599
|
--xh-action-bg-rest: var(--xh-drawer-trigger-bg-open, var(--xh-bg-subtle));
|
|
@@ -23666,13 +23693,13 @@
|
|
|
23666
23693
|
env(safe-area-inset-left),
|
|
23667
23694
|
env(safe-area-inset-right)
|
|
23668
23695
|
);
|
|
23669
|
-
/* M4 sheet
|
|
23696
|
+
/* M4 sheet 三件套:任何浮层不得只靠 box-shadow 分层,亮色下面板与页面同色,
|
|
23670
23697
|
1px 描边才是它的边界;影只是加成 */
|
|
23671
23698
|
border: var(--xh-stroke-thin) solid var(--xh-drawer-border, var(--xh-material-elevated-border));
|
|
23672
23699
|
background: var(--xh-drawer-bg, var(--xh-material-elevated-bg));
|
|
23673
23700
|
color: var(--xh-drawer-fg, var(--xh-material-elevated-fg));
|
|
23674
23701
|
box-shadow: var(--xh-drawer-shadow, var(--xh-material-elevated-shadow));
|
|
23675
|
-
/* 作者不用 header / body / footer
|
|
23702
|
+
/* 作者不用 header / body / footer 三段时它是唯一的滚动层:模态面滚到头不把页面一起带走 */
|
|
23676
23703
|
overflow: auto;
|
|
23677
23704
|
overscroll-behavior: contain;
|
|
23678
23705
|
/* 尺寸是照视口那条边算出来的,padding 再往外顶就会把面板挤出屏幕、
|
|
@@ -23757,13 +23784,7 @@
|
|
|
23757
23784
|
border-start-end-radius: var(--xh-drawer-radius, var(--xh-shape-overlay));
|
|
23758
23785
|
}
|
|
23759
23786
|
|
|
23760
|
-
/*
|
|
23761
|
-
合成层随 data-state 一起收走,收起后不再占着 */
|
|
23762
|
-
[data-scope='drawer'][data-part='content'][data-state='open'] {
|
|
23763
|
-
will-change: translate;
|
|
23764
|
-
}
|
|
23765
|
-
|
|
23766
|
-
/* 滑入/滑出按边配对。入场是整面板从画外推入的大尺度位移(§9.5):走 --xh-motion-duration-slide
|
|
23787
|
+
/* 滑入/滑出按边配对。入场是整面板从画外推入的大尺度位移:走 --xh-motion-duration-slide
|
|
23767
23788
|
与 --xh-motion-ease-slide;退场仍走 exit 档。退场一律 forwards:presence 要等 animationend 才卸载,
|
|
23768
23789
|
不定住终态,面板会在最后一帧弹回原位再消失。 */
|
|
23769
23790
|
[data-scope='drawer'][data-part='content'][data-side='right'][data-state='open'] {
|
|
@@ -23820,7 +23841,7 @@
|
|
|
23820
23841
|
|
|
23821
23842
|
/* 正文段:面板里唯一会滚的一段。最小高度归零,
|
|
23822
23843
|
否则弹性项按内容撑高,容器再矮也不产生溢出,滚动条永远出不来。
|
|
23823
|
-
模态 body
|
|
23844
|
+
模态 body 是原生细条滚动面:细条由 reset 层统一给,滚到头不把页面一起带走 */
|
|
23824
23845
|
[data-scope='drawer'][data-part='body'] {
|
|
23825
23846
|
flex: 1 1 auto;
|
|
23826
23847
|
min-block-size: 0;
|
|
@@ -23858,7 +23879,7 @@
|
|
|
23858
23879
|
color: var(--xh-drawer-title-fg, var(--xh-fg-default));
|
|
23859
23880
|
}
|
|
23860
23881
|
|
|
23861
|
-
/*
|
|
23882
|
+
/* 说明文字走说明档:13px + fg-muted */
|
|
23862
23883
|
[data-scope='drawer'][data-part='description'] {
|
|
23863
23884
|
margin: 0;
|
|
23864
23885
|
font-size: var(--xh-drawer-description-font-size, var(--xh-text-secondary-size));
|
|
@@ -23873,7 +23894,7 @@
|
|
|
23873
23894
|
}
|
|
23874
23895
|
|
|
23875
23896
|
/*
|
|
23876
|
-
*
|
|
23897
|
+
* 关闭钮是面板角落的单图标钮:正方盒、sm 档几何、ghost 四态面、0.97 按压并换底与粗指针命中区
|
|
23877
23898
|
* 由家族配方给出——白面上走画布承载阶梯悬停 --xh-bg-subtle(100)→ 按下 --xh-bg-subtle-hover(200),
|
|
23878
23899
|
* 焦点面透明吃库环。这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与摆放,
|
|
23879
23900
|
* 聚焦档的 -bg-focus / -fg-focus 两槽同样桥到配方的 focus-visible 面(与 dialog 一致),缺省仍是透明底与悬停字色;
|
|
@@ -24291,7 +24312,7 @@
|
|
|
24291
24312
|
--xh-field-border-hover: var(--xh-field-control-border-hover, var(--xh-_field-variant-border-hover));
|
|
24292
24313
|
--xh-field-border-focus: var(--xh-field-control-border-focus, var(--xh-_field-variant-border-focus));
|
|
24293
24314
|
--xh-field-border-invalid: var(--xh-field-control-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
24294
|
-
/*
|
|
24315
|
+
/* 焦点环与家族同一支公共环,不再留逐组件的环色槽(焦点边与环一律公共) */
|
|
24295
24316
|
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
24296
24317
|
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
24297
24318
|
--xh-field-shadow-rest: var(--xh-field-control-shadow, none);
|
|
@@ -24366,7 +24387,7 @@
|
|
|
24366
24387
|
[data-scope='file-upload'][data-part='root'] {
|
|
24367
24388
|
/* 作者放进缩略图槽、删除钮与清空钮里的图标跟着字号走,与皮肤画的兜底叉同一把尺。
|
|
24368
24389
|
条目行首自绘的状态标记(传完的勾、失败的警示)不读这支:它们是指示符,与同一行里 icon 档的
|
|
24369
|
-
删除钮并排、走 --xh-control-indicator-*
|
|
24390
|
+
删除钮并排、走 --xh-control-indicator-* 一族,尺寸由 --xh-file-upload-item-mark-size 单独控 */
|
|
24370
24391
|
--xh-icon-size: var(--xh-file-upload-icon-size, var(--xh-glyph-size-text));
|
|
24371
24392
|
|
|
24372
24393
|
display: flex;
|
|
@@ -24974,7 +24995,7 @@
|
|
|
24974
24995
|
color: var(--xh-form-summary-fg, var(--xh-fg-danger));
|
|
24975
24996
|
font-size: var(--xh-form-summary-font-size, var(--xh-text-body-size));
|
|
24976
24997
|
line-height: var(--xh-leading-normal);
|
|
24977
|
-
/*
|
|
24998
|
+
/* 静态反馈面:边界由描边承担,不带落影(solid 无影) */
|
|
24978
24999
|
box-shadow: var(--xh-form-summary-shadow, none);
|
|
24979
25000
|
}
|
|
24980
25001
|
|
|
@@ -24994,7 +25015,7 @@
|
|
|
24994
25015
|
animation: xh-form-summary-enter var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
24995
25016
|
}
|
|
24996
25017
|
|
|
24997
|
-
/*
|
|
25018
|
+
/* 摘要里的每一条是一个真链接,指向对应字段容器。铺满一行的集合行:悬停 / 按下只换面不缩放,
|
|
24998
25019
|
底面坐在摘要的 surface 白底上,走白底承载阶梯 100 → 200;换面走按压时间线,释放回 release 档 */
|
|
24999
25020
|
[data-scope='form'][data-part='error-summary-item'] {
|
|
25000
25021
|
display: block;
|
|
@@ -25090,7 +25111,7 @@
|
|
|
25090
25111
|
|
|
25091
25112
|
/* 两颗按钮是离散动作控件:盒几何、悬停 / 按下与 0.97 按压、焦点环、禁用面全由 Action Control 的 text 档给,
|
|
25092
25113
|
组件只映射既有使用者槽。提交走 solid 档:表单提交是这一组里的主要动作,与 Button 缺省同为品牌实心;
|
|
25093
|
-
重置走 outline 档:非 Button
|
|
25114
|
+
重置走 outline 档:非 Button 的触发器缺省中性描边。两颗共用的几何与字号写在一起 */
|
|
25094
25115
|
[data-scope='form'][data-part='submit-trigger'],
|
|
25095
25116
|
[data-scope='form'][data-part='reset-trigger'] {
|
|
25096
25117
|
--xh-action-visual-size: var(--xh-form-trigger-h, var(--xh-_action-profile-visual-size));
|
|
@@ -25272,7 +25293,7 @@
|
|
|
25272
25293
|
/* 内容由作者给,长度不可预知:不限高就整块伸出视口且滚不到 */
|
|
25273
25294
|
max-block-size: min(var(--xh-hover-card-max-h, var(--xh-overlay-max-h)), var(--xh-_hover-card-available-h));
|
|
25274
25295
|
overflow-y: auto;
|
|
25275
|
-
/* 浮在页面之上的 Overlay
|
|
25296
|
+
/* 浮在页面之上的 Overlay 滚动面:滚到头不把页面一起带走 */
|
|
25276
25297
|
overscroll-behavior: contain;
|
|
25277
25298
|
padding-block: var(--xh-hover-card-py, var(--xh-_hover-card-pad));
|
|
25278
25299
|
padding-inline: var(--xh-hover-card-px, var(--xh-_hover-card-pad));
|
|
@@ -25308,8 +25329,6 @@
|
|
|
25308
25329
|
|
|
25309
25330
|
[data-scope='hover-card'][data-part='content'][data-state='open'] {
|
|
25310
25331
|
animation: xh-overlay-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
25311
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
25312
|
-
will-change: opacity, scale, translate;
|
|
25313
25332
|
}
|
|
25314
25333
|
|
|
25315
25334
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -25337,7 +25356,7 @@
|
|
|
25337
25356
|
color: var(--xh-hover-card-title-fg, var(--xh-fg-default));
|
|
25338
25357
|
}
|
|
25339
25358
|
|
|
25340
|
-
/*
|
|
25359
|
+
/* 说明文字走说明档:13px + fg-muted */
|
|
25341
25360
|
[data-scope='hover-card'][data-part='description'] {
|
|
25342
25361
|
margin: 0;
|
|
25343
25362
|
font-size: var(--xh-hover-card-description-font-size, var(--xh-text-secondary-size));
|
|
@@ -25639,9 +25658,7 @@
|
|
|
25639
25658
|
color: var(--xh-image-viewer-fg, var(--xh-color-neutral-0));
|
|
25640
25659
|
}
|
|
25641
25660
|
|
|
25642
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
25643
25661
|
[data-scope='image-viewer'][data-part='content'][data-state='open'] {
|
|
25644
|
-
will-change: opacity;
|
|
25645
25662
|
animation: xh-fade-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter);
|
|
25646
25663
|
}
|
|
25647
25664
|
|
|
@@ -25699,7 +25716,7 @@
|
|
|
25699
25716
|
四件都钉在铺满视口的那一层的边上,贴边一律与安全区取大的一头:刘海、圆角与
|
|
25700
25717
|
底部横条压住的那一段由系统给出,贴边比它窄时钮会被切掉一角;桌面上 env() 恒为 0。
|
|
25701
25718
|
安全区只有物理方向的四个名字,行内轴上两侧同取较宽的那一段,RTL 下不会翻错边。
|
|
25702
|
-
工具条是容器、计数是一行字的气泡,各按身份取圆角(surface / control
|
|
25719
|
+
工具条是容器、计数是一行字的气泡,各按身份取圆角(surface / control),
|
|
25703
25720
|
--xh-image-viewer-overlay-radius 仍是两者共用的使用者入口;翻页钮的面走下面的桥接槽 */
|
|
25704
25721
|
[data-scope='image-viewer'][data-part='toolbar'],
|
|
25705
25722
|
[data-scope='image-viewer'][data-part='counter'] {
|
|
@@ -25754,7 +25771,7 @@
|
|
|
25754
25771
|
font-size: var(--xh-text-secondary-size);
|
|
25755
25772
|
}
|
|
25756
25773
|
|
|
25757
|
-
/* 两颗翻页钮:浮在图上的单图标圆钮,接 Action Control floating 档 md(48px,正方盒取 circle
|
|
25774
|
+
/* 两颗翻页钮:浮在图上的单图标圆钮,接 Action Control floating 档 md(48px,正方盒取 circle)。
|
|
25758
25775
|
面桥接到自家深色 chrome:跟的是图上那层半透明深底不是页面底色,所以不取 frosted 缺省面,
|
|
25759
25776
|
也不取语义档的 --xh-bg-subtle-*;到头时是原生 disabled,压不动的东西不给回应 */
|
|
25760
25777
|
[data-scope='image-viewer'][data-part='prev-trigger'],
|
|
@@ -25969,10 +25986,10 @@
|
|
|
25969
25986
|
|
|
25970
25987
|
[data-scope='listbox'][data-part='root'] {
|
|
25971
25988
|
/* 条目外的字形(空态 / 在途占位里作者塞的图标)按档取尺,缺省 md;条目内的字形由家族随
|
|
25972
|
-
data-xh-collection-size
|
|
25989
|
+
data-xh-collection-size 下发。列表框自绘的状态字形(行尾对号所在的标记盒与盒里的勾)不读这支:
|
|
25973
25990
|
它们是指示符,走 --xh-control-indicator-* 一族——标记盒在自己身上把 --xh-icon-size 改接到盒的尺 */
|
|
25974
25991
|
--xh-icon-size: var(--xh-listbox-icon-size, var(--xh-glyph-size-md));
|
|
25975
|
-
/*
|
|
25992
|
+
/* 定高小列表的自绘条挂在根上:根是条子的定位盒,轨道底色关掉才不会在列表右缘糊出一条灰带 */
|
|
25976
25993
|
--xh-scrollbar-track-bg: transparent;
|
|
25977
25994
|
|
|
25978
25995
|
/* 尺寸档只换这四个私有槽,条目、分组标题与空态占位都从 root 继承它们,
|
|
@@ -26169,7 +26186,7 @@
|
|
|
26169
26186
|
}
|
|
26170
26187
|
|
|
26171
26188
|
/* 取下一页的按钮:铺满一行摆在列表尾——铺满一行的独立动作条目,接 Action Control 的 row 档、
|
|
26172
|
-
ghost
|
|
26189
|
+
ghost 形态:宽度由容器给、高度随内容、按下只换面不缩放;盒几何、悬停 / 按下 / 禁用面、
|
|
26173
26190
|
焦点环与粗指针热区全由家族给,白底承载 hover 100 → pressed 200。
|
|
26174
26191
|
这里只把使用者槽映射到桥接槽并把文案居中:它是一行里唯一的东西,靠起始缘会像一条没对齐的条目 */
|
|
26175
26192
|
[data-scope='listbox'][data-part='load-more-trigger'] {
|
|
@@ -26185,7 +26202,7 @@
|
|
|
26185
26202
|
|
|
26186
26203
|
justify-content: center;
|
|
26187
26204
|
text-align: center;
|
|
26188
|
-
/* row
|
|
26205
|
+
/* row 档允许换行、高度随内容,折行的文案走正文行高 */
|
|
26189
26206
|
line-height: var(--xh-leading-normal);
|
|
26190
26207
|
}
|
|
26191
26208
|
|
|
@@ -26193,11 +26210,11 @@
|
|
|
26193
26210
|
display: none;
|
|
26194
26211
|
}
|
|
26195
26212
|
|
|
26196
|
-
/* 条目走 Collection Item 的
|
|
26197
|
-
(白底承载 hover 100 → pressed 200
|
|
26198
|
-
|
|
26199
|
-
|
|
26200
|
-
|
|
26213
|
+
/* 条目走 Collection Item 的 overlay 语境,与树选择同一种选中读法:网格、尺寸档、悬停 / 高亮 / 按下面
|
|
26214
|
+
(白底承载 hover 100 → pressed 200)由家族给,选中不换面、不换字色,只在行尾亮对号,
|
|
26215
|
+
选中叠悬停 / 按下沿用同一条阶梯;禁用面(字色降级、not-allowed、不换面)也归家族。
|
|
26216
|
+
这里只把公开槽映射到桥接槽,不复制任何状态选择器。
|
|
26217
|
+
列表框坐在 surface 白底上,前景走 fg-default 而不是浮层的 frosted 前景 */
|
|
26201
26218
|
[data-scope='listbox'][data-part='item'] {
|
|
26202
26219
|
--xh-collection-block-padding: var(--xh-listbox-item-py, var(--xh-_listbox-item-py));
|
|
26203
26220
|
--xh-collection-inline-padding: var(--xh-listbox-item-px, var(--xh-_listbox-item-px));
|
|
@@ -26210,10 +26227,10 @@
|
|
|
26210
26227
|
--xh-collection-fg-hover: var(--xh-listbox-item-fg, var(--xh-fg-default));
|
|
26211
26228
|
--xh-collection-fg-keyboard-highlight: var(--xh-listbox-item-fg, var(--xh-fg-default));
|
|
26212
26229
|
--xh-collection-fg-pressed: var(--xh-listbox-item-fg, var(--xh-fg-default));
|
|
26213
|
-
--xh-collection-fg-selected: var(--xh-listbox-item-fg-selected, var(--xh-fg-
|
|
26214
|
-
--xh-collection-fg-selected-hover: var(--xh-listbox-item-fg-selected, var(--xh-fg-
|
|
26215
|
-
--xh-collection-fg-selected-highlight: var(--xh-listbox-item-fg-selected, var(--xh-fg-
|
|
26216
|
-
--xh-collection-fg-selected-pressed: var(--xh-listbox-item-fg-selected, var(--xh-fg-
|
|
26230
|
+
--xh-collection-fg-selected: var(--xh-listbox-item-fg-selected, var(--xh-listbox-item-fg, var(--xh-fg-default)));
|
|
26231
|
+
--xh-collection-fg-selected-hover: var(--xh-listbox-item-fg-selected, var(--xh-listbox-item-fg, var(--xh-fg-default)));
|
|
26232
|
+
--xh-collection-fg-selected-highlight: var(--xh-listbox-item-fg-selected, var(--xh-listbox-item-fg, var(--xh-fg-default)));
|
|
26233
|
+
--xh-collection-fg-selected-pressed: var(--xh-listbox-item-fg-selected, var(--xh-listbox-item-fg, var(--xh-fg-default)));
|
|
26217
26234
|
--xh-collection-font-weight-selected: var(--xh-listbox-item-font-weight-selected, var(--xh-font-weight-regular));
|
|
26218
26235
|
--xh-collection-font-weight-selected-hover: var(--xh-listbox-item-font-weight-selected, var(--xh-font-weight-regular));
|
|
26219
26236
|
--xh-collection-font-weight-selected-highlight: var(--xh-listbox-item-font-weight-selected, var(--xh-font-weight-regular));
|
|
@@ -26221,7 +26238,9 @@
|
|
|
26221
26238
|
--xh-collection-bg-hover: var(--xh-listbox-item-bg-hover, var(--xh-bg-subtle));
|
|
26222
26239
|
--xh-collection-bg-keyboard-highlight: var(--xh-listbox-item-bg-hover, var(--xh-bg-subtle));
|
|
26223
26240
|
--xh-collection-bg-pressed: var(--xh-listbox-item-bg-pressed, var(--xh-bg-subtle-hover));
|
|
26224
|
-
--xh-collection-bg-selected: var(--xh-listbox-item-bg-
|
|
26241
|
+
--xh-collection-bg-selected-hover: var(--xh-listbox-item-bg-hover, var(--xh-bg-subtle));
|
|
26242
|
+
--xh-collection-bg-selected-highlight: var(--xh-listbox-item-bg-hover, var(--xh-bg-subtle));
|
|
26243
|
+
--xh-collection-bg-selected-pressed: var(--xh-listbox-item-bg-pressed, var(--xh-bg-subtle-hover));
|
|
26225
26244
|
/* data-highlighted 跟的是连接层记的焦点条目(指针点选也会落焦):只换面,焦点环在 :focus-visible 下再接回 */
|
|
26226
26245
|
--xh-collection-outline-keyboard-highlight: transparent;
|
|
26227
26246
|
--xh-collection-outline-selected-highlight: transparent;
|
|
@@ -26260,10 +26279,10 @@
|
|
|
26260
26279
|
text-overflow: ellipsis;
|
|
26261
26280
|
}
|
|
26262
26281
|
|
|
26263
|
-
/*
|
|
26282
|
+
/* 勾选标记落在家族网格行尾的 indicator 列(page 与 overlay 同位);显隐与颜色由家族按选中态给,
|
|
26264
26283
|
未选中时占位不塌,切换选中不引起行宽抖动。
|
|
26265
|
-
|
|
26266
|
-
兜底勾与作者塞进盒里的 XhIcon
|
|
26284
|
+
盒与盒里的勾是指示符:盒按指示符档取尺,并在自己身上把 --xh-icon-size 改接到盒的尺,皮肤画的
|
|
26285
|
+
兜底勾与作者塞进盒里的 XhIcon 读同一把尺、与盒同边长(对号不是勾选格,不取 × 0.75,与 Menu 族同口径);
|
|
26267
26286
|
不读家族按档下发到行的 --xh-icon-size——那支只管作者放进条目里的图标,按图标档取的 20px 比 16 / 14 的指示符档大一圈 */
|
|
26268
26287
|
[data-scope='listbox'][data-part='item-indicator'] {
|
|
26269
26288
|
--xh-icon-size: var(--xh-listbox-item-indicator-size, var(--xh-control-indicator-size));
|
|
@@ -26291,6 +26310,13 @@
|
|
|
26291
26310
|
-webkit-mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
26292
26311
|
mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
26293
26312
|
}
|
|
26313
|
+
|
|
26314
|
+
@media print {
|
|
26315
|
+
/* 打印默认丢底色,而对号是遮罩出来的一块底色:行本就不换面,丢了它选中在纸上就没了踪影 */
|
|
26316
|
+
[data-scope='listbox'][data-part='item-indicator'] {
|
|
26317
|
+
print-color-adjust: exact;
|
|
26318
|
+
}
|
|
26319
|
+
}
|
|
26294
26320
|
}
|
|
26295
26321
|
|
|
26296
26322
|
/* styles/loading-bar.css */
|
|
@@ -26474,14 +26500,14 @@
|
|
|
26474
26500
|
}
|
|
26475
26501
|
|
|
26476
26502
|
/* 触发器的长相归作者,皮肤只表达展开态:展开着的那一张是打开路径,落与家族 hover 同档的中性面——
|
|
26477
|
-
|
|
26503
|
+
打开中不是选中,不用品牌色、不接语气;哪一张开着由浮层本身说明。不加粗:加粗会推挤相邻内容 */
|
|
26478
26504
|
[data-scope='menu'][data-part='trigger']:not([data-disabled])[data-state='open'] {
|
|
26479
26505
|
background: var(--xh-menu-trigger-bg-active, var(--xh-bg-subtle));
|
|
26480
26506
|
}
|
|
26481
26507
|
|
|
26482
26508
|
[data-scope='menu'][data-part='content'] {
|
|
26483
26509
|
/* 条目外的字形(分组标题等)按档取尺,缺省 md,随 data-size 换档;条目里作者放的图标由家族随
|
|
26484
|
-
data-xh-collection-size
|
|
26510
|
+
data-xh-collection-size 下发。菜单自绘的状态字形(标记位的盒、子菜单的展开 chevron)不读这支:
|
|
26485
26511
|
它们是指示符,走 --xh-control-indicator-* 一族——标记位在自己身上把 --xh-icon-size 改接到盒的尺,
|
|
26486
26512
|
子菜单箭头走 --xh-menu-submenu-indicator-size */
|
|
26487
26513
|
--xh-icon-size: var(--xh-menu-icon-size, var(--xh-glyph-size-md));
|
|
@@ -26513,7 +26539,7 @@
|
|
|
26513
26539
|
-webkit-backdrop-filter: var(--xh-menu-backdrop, var(--xh-material-frosted-backdrop));
|
|
26514
26540
|
backdrop-filter: var(--xh-menu-backdrop, var(--xh-material-frosted-backdrop));
|
|
26515
26541
|
/* 条目超过上限就在菜单内部滚。条目的焦点环是内收的,滚动容器裁在内边距缘上,环切不着。
|
|
26516
|
-
|
|
26542
|
+
浮层滚动面:到底后不把滚动链穿透给页面 */
|
|
26517
26543
|
overflow-y: auto;
|
|
26518
26544
|
overscroll-behavior: contain;
|
|
26519
26545
|
pointer-events: auto;
|
|
@@ -26542,9 +26568,7 @@
|
|
|
26542
26568
|
outline: none;
|
|
26543
26569
|
}
|
|
26544
26570
|
|
|
26545
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
26546
26571
|
[data-scope='menu'][data-part='content'][data-state='open'] {
|
|
26547
|
-
will-change: opacity, translate;
|
|
26548
26572
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
26549
26573
|
}
|
|
26550
26574
|
|
|
@@ -26624,7 +26648,7 @@
|
|
|
26624
26648
|
display: none;
|
|
26625
26649
|
}
|
|
26626
26650
|
|
|
26627
|
-
/* 标记位(勾选符号 /
|
|
26651
|
+
/* 标记位(勾选符号 / 图标):定宽占位,切换内容不引起行宽抖动。盒是指示符:按指示符档取尺,
|
|
26628
26652
|
与 Cascader / Select 的标记位同走 --xh-control-indicator-size,不读家族按档下发的 --xh-icon-size——
|
|
26629
26653
|
按图标档取的 20px 会比同一行 16px 的指示符档大一圈。盒在自己身上把 --xh-icon-size 改接到盒的尺,
|
|
26630
26654
|
作者塞进标记位的 XhIcon 与盒同尺;条目上那支只管作者直接放进条目里的图标 */
|
|
@@ -26674,7 +26698,7 @@
|
|
|
26674
26698
|
}
|
|
26675
26699
|
|
|
26676
26700
|
/* 带子菜单的条目行尾画右向小箭头:不点开也看得出还有下一级。
|
|
26677
|
-
|
|
26701
|
+
箭头与作者内容同排,用自动外距推到行尾。箭头是指示符:与标记位的盒同走
|
|
26678
26702
|
--xh-control-indicator-size,不读 --xh-icon-size——按图标档取的 20px 会比 16px 的标记位盒大一圈 */
|
|
26679
26703
|
[data-scope='menu'][data-part='item'][aria-haspopup='menu']::after {
|
|
26680
26704
|
content: '';
|
|
@@ -26811,8 +26835,8 @@
|
|
|
26811
26835
|
|
|
26812
26836
|
/* 入口归 Collection Item 展开路径 / 打开中(nav 语境):几何、字号与面全经家族桥接槽。静息字色取 default
|
|
26813
26837
|
(菜单名不是次要文字,不取 nav 缺省的 muted),悬停走白底承载 hover 100,展开着的那一张由连接层投影
|
|
26814
|
-
data-in-path
|
|
26815
|
-
按下 pressed 200
|
|
26838
|
+
data-in-path,家族给与悬停同档的中性面——打开中不是选中,不用品牌色、不接语气、不加粗;
|
|
26839
|
+
按下 pressed 200 只换面不缩放;禁用走 aria-disabled,家族给禁用字色与 not-allowed。
|
|
26816
26840
|
本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 background / color / cursor */
|
|
26817
26841
|
[data-scope='menubar'][data-part='trigger'] {
|
|
26818
26842
|
--xh-collection-block-padding: var(--xh-menubar-trigger-py, var(--xh-_menubar-trigger-py));
|
|
@@ -26892,7 +26916,7 @@
|
|
|
26892
26916
|
缺省档写在第一条:trigger 与条目的行内内缩都走 control-px 档(随密度轴)、纵向走 space 档,换档各挪一级 */
|
|
26893
26917
|
[data-scope='menubar']:is([data-part='root'], [data-part='positioner']) {
|
|
26894
26918
|
/* 条目外的字形(分组标题、入口)按档取尺,缺省 md,随 data-size 换档;同样声明在 positioner 上,被搬走的
|
|
26895
|
-
浮层才拿得到;条目里作者放的图标由家族随 data-xh-collection-size
|
|
26919
|
+
浮层才拿得到;条目里作者放的图标由家族随 data-xh-collection-size 下发。菜单栏自绘的状态字形(标记位的盒、
|
|
26896
26920
|
盒里兜底的勾、子菜单的展开 chevron)不读这支:它们是指示符,走 --xh-control-indicator-* 一族——标记位在
|
|
26897
26921
|
自己身上把 --xh-icon-size 改接到盒的尺,子菜单箭头走 --xh-menubar-submenu-indicator-size */
|
|
26898
26922
|
--xh-icon-size: var(--xh-menubar-icon-size, var(--xh-glyph-size-md));
|
|
@@ -26946,7 +26970,7 @@
|
|
|
26946
26970
|
-webkit-backdrop-filter: var(--xh-menubar-backdrop, var(--xh-material-frosted-backdrop));
|
|
26947
26971
|
backdrop-filter: var(--xh-menubar-backdrop, var(--xh-material-frosted-backdrop));
|
|
26948
26972
|
/* 条目超过上限就在菜单内部滚。条目的焦点环是内收的,滚动容器裁在内边距缘上,环切不着。
|
|
26949
|
-
|
|
26973
|
+
浮层滚动面:到底后不把滚动链穿透给页面 */
|
|
26950
26974
|
overflow-y: auto;
|
|
26951
26975
|
overscroll-behavior: contain;
|
|
26952
26976
|
pointer-events: auto;
|
|
@@ -26977,8 +27001,6 @@
|
|
|
26977
27001
|
|
|
26978
27002
|
/* 首开从锚点一侧淡入短移,不缩放整张菜单面。 */
|
|
26979
27003
|
[data-scope='menubar'][data-part='content'][data-state='open'] {
|
|
26980
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
26981
|
-
will-change: opacity, translate;
|
|
26982
27004
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
26983
27005
|
}
|
|
26984
27006
|
|
|
@@ -27065,7 +27087,7 @@
|
|
|
27065
27087
|
|
|
27066
27088
|
/* 带子菜单的条目行尾画右向小箭头:不点开也看得出还有下一级。
|
|
27067
27089
|
description 按 order 独占下一行,箭头仍留在主行末端。
|
|
27068
|
-
|
|
27090
|
+
箭头是指示符:与标记位的盒同走 --xh-control-indicator-size,不读 --xh-icon-size——
|
|
27069
27091
|
按图标档取的 20px 会比 16px 的标记位盒大一圈 */
|
|
27070
27092
|
[data-scope='menubar'][data-part='item'][aria-haspopup='menu']::after {
|
|
27071
27093
|
content: '';
|
|
@@ -27097,7 +27119,7 @@
|
|
|
27097
27119
|
display: none;
|
|
27098
27120
|
}
|
|
27099
27121
|
|
|
27100
|
-
/* 标记位(勾选符号 /
|
|
27122
|
+
/* 标记位(勾选符号 / 图标)按作者写入的位置留在主行,不为没写的条目强制占列。盒是指示符:按指示符档
|
|
27101
27123
|
取尺,与 Menu / ContextMenu 的标记位同走 --xh-control-indicator-size,不读家族按档下发的 --xh-icon-size——
|
|
27102
27124
|
按图标档取的 20px 会比同一行 16px 的指示符档大一圈。盒在自己身上把 --xh-icon-size 改接到盒的尺,
|
|
27103
27125
|
皮肤画的兜底勾与作者塞进标记位的 XhIcon 读同一把尺、与盒同边长(行尾标记不是勾选格,不取 × 0.75);
|
|
@@ -27266,7 +27288,7 @@
|
|
|
27266
27288
|
overscroll-behavior: contain;
|
|
27267
27289
|
}
|
|
27268
27290
|
|
|
27269
|
-
/*
|
|
27291
|
+
/* 流式视口的内容高度一直在变,还在用原生滚动条的视口留一条空道,滚动条出现与消失时不推动文字。
|
|
27270
27292
|
带 data-xh-scrollbar 的容器已经把原生条藏成零宽,这条空道对它没有布局作用,排除掉 */
|
|
27271
27293
|
[data-scope='message-feed'][data-part='viewport']:not([data-xh-scrollbar]) {
|
|
27272
27294
|
scrollbar-gutter: stable;
|
|
@@ -27310,7 +27332,7 @@
|
|
|
27310
27332
|
|
|
27311
27333
|
/* 回到底部:浮在滚动区右下角,收起时不卸载只隐藏。盒型、悬停 / 按下面与缩放由 Action Control 的
|
|
27312
27334
|
floating 档给(circle 正方盒、ghost 形态:白底承载 hover 100 → pressed 200);材质随角落浮钮族走
|
|
27313
|
-
frosted 四件套(底 + 边 + 影 +
|
|
27335
|
+
frosted 四件套(底 + 边 + 影 + 磨砂),这里只把使用者槽映射到桥接槽:
|
|
27314
27336
|
字形按 xs 档取 --xh-_action-profile-glyph-size(16px),与 log / back-top 同一把尺 */
|
|
27315
27337
|
[data-scope='message-feed'][data-part='scroll-to-end-trigger'] {
|
|
27316
27338
|
--xh-_message-feed-scroll-to-end-trigger-shadow: var(--xh-message-feed-scroll-to-end-trigger-shadow, var(--xh-material-frosted-shadow));
|
|
@@ -27413,7 +27435,7 @@
|
|
|
27413
27435
|
换档不必给每个部件各写一条选择器。面板与共享外壳都是 root 的后代,一并继承。
|
|
27414
27436
|
trigger 的字号经家族桥接槽接回 root 这一档,不另立私有槽 */
|
|
27415
27437
|
/* 入口里的方向标记按档取尺,缺省 md,随 data-size 换档;面板里链接内的字形由家族随
|
|
27416
|
-
data-xh-collection-size
|
|
27438
|
+
data-xh-collection-size 下发 */
|
|
27417
27439
|
--xh-icon-size: var(--xh-navigation-menu-icon-size, var(--xh-glyph-size-md));
|
|
27418
27440
|
|
|
27419
27441
|
--xh-_navigation-menu-font-size: var(--xh-control-font-md);
|
|
@@ -27424,7 +27446,7 @@
|
|
|
27424
27446
|
--xh-_navigation-menu-link-px: var(--xh-control-px-md);
|
|
27425
27447
|
--xh-_navigation-menu-link-font-size: var(--xh-control-font-md);
|
|
27426
27448
|
|
|
27427
|
-
/*
|
|
27449
|
+
/* 悬停、键盘锚点与展开着的入口同走中性灰轻档、不接语气槽:打开中不是选中,不用品牌色 */
|
|
27428
27450
|
--xh-_navigation-menu-highlight-bg: var(--xh-bg-subtle);
|
|
27429
27451
|
|
|
27430
27452
|
/* 语气只落在指示条上;没写 data-tone 时 --xh-_tone 没被声明,退回品牌色。
|
|
@@ -27501,7 +27523,7 @@
|
|
|
27501
27523
|
/* 入口归 Collection Item 展开路径 / 打开中(nav 语境):几何、字号、面与字重全经家族桥接槽。静息 muted /
|
|
27502
27524
|
regular,悬停走白底承载 hover 100 + default 字;展开着的那一张由连接层投影 data-in-path,家族给与悬停同档的
|
|
27503
27525
|
中性面——打开中不是选中,不用品牌色、不加粗(横排的栏加粗会推挤相邻触发器),哪一张开着由指示条与转向的
|
|
27504
|
-
箭头说明;按下 pressed 200
|
|
27526
|
+
箭头说明;按下 pressed 200 只换面不缩放;禁用走 aria-disabled,家族给禁用字色与 not-allowed。
|
|
27505
27527
|
高度由 block-size 定,块向内边距归零。本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 background / color /
|
|
27506
27528
|
font-weight / cursor;也不写 font: inherit(reset.css 已抹平按钮 UA 字体,再写会把家族给的字号字重一并盖掉) */
|
|
27507
27529
|
[data-scope='navigation-menu'][data-part='trigger'] {
|
|
@@ -27562,9 +27584,7 @@
|
|
|
27562
27584
|
inset-inline-start: calc(100% + var(--xh-navigation-menu-content-offset, var(--xh-space-1)));
|
|
27563
27585
|
}
|
|
27564
27586
|
|
|
27565
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
27566
27587
|
[data-scope='navigation-menu'][data-part='content'][data-state='open'] {
|
|
27567
|
-
will-change: opacity, scale;
|
|
27568
27588
|
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
27569
27589
|
}
|
|
27570
27590
|
|
|
@@ -27585,7 +27605,7 @@
|
|
|
27585
27605
|
|
|
27586
27606
|
/* 面板里的链接归 Collection Item 导航当前(nav 语境):悬停 / 键盘高亮(白底承载 100)与按下(200)面由家族
|
|
27587
27607
|
按 :hover / :focus-visible / :active 给出,指向当前页面的那一条(data-current)取 strong 档品牌字色 +
|
|
27588
|
-
medium
|
|
27608
|
+
medium 字重,字色不随语气、不加下划线(下划线是"可点"的信号,它已经在这儿了);这里只把公开槽
|
|
27589
27609
|
映射到桥接槽。面板是实色 floating 面,常态字色取 --xh-fg-default 而非 nav 缺省的 muted。
|
|
27590
27610
|
布局保持 flex:链接是一行文字,不用家族网格。position: relative 是当前链接静态线的定位参照 */
|
|
27591
27611
|
[data-scope='navigation-menu'][data-part='link'] {
|
|
@@ -27647,7 +27667,7 @@
|
|
|
27647
27667
|
color: var(--xh-fg-disabled);
|
|
27648
27668
|
}
|
|
27649
27669
|
|
|
27650
|
-
/*
|
|
27670
|
+
/* 指向当前页面的链接自画一条静态指示线(导航当前页):与 Tabs line / Anchor 同一取法,作者不必为了
|
|
27651
27671
|
这条线多放一个部件。下面的 indicator 部件表达的是「哪张面板开着」而不是当前页,所以这条线不随部件收起,
|
|
27652
27672
|
两者各说各的:部件亮着时开着的入口下有一条、当前页链接上另有一条。
|
|
27653
27673
|
线画在当前链接的 ::after 上,以链接盒为定位参照(上面已给 position: relative),
|
|
@@ -27891,12 +27911,12 @@
|
|
|
27891
27911
|
* 竖排 flex 里这两件事都做不到(叉会变成第三行)。
|
|
27892
27912
|
* 底与描边一律中性,语气只由左列那枚字形承载:整片兑色是轻提示那条的做法,
|
|
27893
27913
|
* 一张有标题有正文的卡片全片染色会把两层文字都压在同一片语气色上。
|
|
27894
|
-
* 面走 sheet
|
|
27914
|
+
* 面走 sheet 三件套(--xh-material-elevated-bg / -border / -shadow,与 toast 同一套)。
|
|
27895
27915
|
*
|
|
27896
27916
|
* 卡片的槽带 item 段(--xh-notification-item-*),与摞的 --xh-notification-inset 分开。
|
|
27897
27917
|
*/
|
|
27898
27918
|
[data-scope='notification'][data-part='item'] {
|
|
27899
|
-
/* 作者塞进卡片里的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md
|
|
27919
|
+
/* 作者塞进卡片里的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md 档;
|
|
27900
27920
|
左列那枚类型字形另有自己的尺寸槽,叉与操作钮的字形各按按钮档取值 */
|
|
27901
27921
|
--xh-icon-size: var(--xh-notification-icon-size, var(--xh-glyph-size-md));
|
|
27902
27922
|
|
|
@@ -28100,7 +28120,7 @@
|
|
|
28100
28120
|
}
|
|
28101
28121
|
|
|
28102
28122
|
/* 操作钮是带文案的离散动作钮:盒几何、悬停 / 按下与 0.97 按压、粗指针热区、焦点环、禁用面全由 Action Control
|
|
28103
|
-
的 text outline 档给(连接层投 sm;非 Button
|
|
28123
|
+
的 text outline 档给(连接层投 sm;非 Button 的触发器缺省中性描边、透明底),组件只映射既有使用者槽。
|
|
28104
28124
|
语气只落到左列字形:这颗钮坐在带 data-tone 的卡片里,底 / 边 / 字钉在中性语义面上,不随语气;
|
|
28105
28125
|
卡片是 sheet 白面承载:hover --xh-bg-subtle(100)→ pressed --xh-bg-subtle-hover(200) */
|
|
28106
28126
|
[data-scope='notification'][data-part='item-action-trigger'] {
|
|
@@ -28433,7 +28453,7 @@
|
|
|
28433
28453
|
/* 私有槽同时声明在根与 positioner 上:摊开的页码面板被搬到 portal 落点,
|
|
28434
28454
|
不是根的后代,继承不过去。面板里的页码格子与主区那排消费的是同一批槽 */
|
|
28435
28455
|
[data-scope='pagination']:is([data-part='root'], [data-part='positioner']) {
|
|
28436
|
-
/*
|
|
28456
|
+
/* 作者塞进面板或分页行里的图标按档取字形尺;四类格子上另按家族档位取同一把尺 */
|
|
28437
28457
|
--xh-icon-size: var(--xh-pagination-icon-size, var(--xh-glyph-size-md));
|
|
28438
28458
|
|
|
28439
28459
|
/* 尺寸档只换这三个私有槽,上一页/下一页、页码与省略号都从这两处继承它们,
|
|
@@ -28484,7 +28504,7 @@
|
|
|
28484
28504
|
display: none;
|
|
28485
28505
|
}
|
|
28486
28506
|
|
|
28487
|
-
/* 四类格子接 Action Control 的 text 档,缺省中性的 ghost
|
|
28507
|
+
/* 四类格子接 Action Control 的 text 档,缺省中性的 ghost 形态(只有 Button 品牌实心):盒型、三档几何、
|
|
28488
28508
|
透明描边(省略号也占一条,两者内容盒等高,一行里对得齐)、悬停 100 → 按下 200(画布承载)、禁用面、按压缩放与
|
|
28489
28509
|
过渡都由家族给;这里只把使用者槽映射到桥接槽并保留分页自己的排版。
|
|
28490
28510
|
等宽的关键:1 与 10 的内容宽度不同,靠最小宽度把它们撑到同一格,行宽才不会随当前页左右抖动 */
|
|
@@ -28503,7 +28523,7 @@
|
|
|
28503
28523
|
--xh-action-fg-rest: var(--xh-pagination-item-fg, var(--xh-_action-variant-fg-rest));
|
|
28504
28524
|
--xh-action-fg-hover: var(--xh-pagination-item-fg, var(--xh-_action-variant-fg-hover));
|
|
28505
28525
|
--xh-action-fg-pressed: var(--xh-pagination-item-fg, var(--xh-_action-variant-fg-pressed));
|
|
28506
|
-
/*
|
|
28526
|
+
/* 作者塞进上一页/下一页的图标按档取字形尺,与皮肤画的兜底字形同一把尺 */
|
|
28507
28527
|
--xh-icon-size: var(--xh-pagination-icon-size, var(--xh-_action-profile-glyph-size));
|
|
28508
28528
|
|
|
28509
28529
|
flex: none;
|
|
@@ -28522,7 +28542,7 @@
|
|
|
28522
28542
|
/* 首末页的上一页 / 下一页是原生 disabled(不可聚焦、进不了 Tab 序列),连接层同时给 data-disabled,
|
|
28523
28543
|
家族按 data-disabled 画禁用面(透明底 + --xh-fg-disabled);分页条目从不禁用 */
|
|
28524
28544
|
|
|
28525
|
-
/*
|
|
28545
|
+
/* 当前页(格状当前):data-current 与 aria-current='page' 由连接层成对给出,样式挂在 data 钩子上,
|
|
28526
28546
|
无障碍语义留给 aria。实心品牌面 + 配对前景、不加粗——字重一变字形就变宽,页码格子会跟着长一点,
|
|
28527
28547
|
正是这里要避免的抖动;悬停 / 按下沿 brand → brand-hover → brand-active 走,三态都经桥接槽交给家族画,
|
|
28528
28548
|
solid 面允许一条顶高光,环色改取面自己的前景 */
|
|
@@ -28654,7 +28674,7 @@
|
|
|
28654
28674
|
var(--xh-_pagination-available-h)
|
|
28655
28675
|
);
|
|
28656
28676
|
overflow-y: auto;
|
|
28657
|
-
/*
|
|
28677
|
+
/* 浮层滚动面:滚到底不把滚动量交给页面(只给 Overlay 家族滚动面) */
|
|
28658
28678
|
overscroll-behavior: contain;
|
|
28659
28679
|
padding: var(--xh-pagination-content-p, var(--xh-space-1));
|
|
28660
28680
|
border: var(--xh-stroke-thin) solid var(--xh-pagination-content-border, var(--xh-border-default));
|
|
@@ -28665,9 +28685,7 @@
|
|
|
28665
28685
|
pointer-events: auto;
|
|
28666
28686
|
}
|
|
28667
28687
|
|
|
28668
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
28669
28688
|
[data-scope='pagination'][data-part='content'][data-state='open'] {
|
|
28670
|
-
will-change: opacity, scale;
|
|
28671
28689
|
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
28672
28690
|
}
|
|
28673
28691
|
|
|
@@ -29017,7 +29035,7 @@
|
|
|
29017
29035
|
}
|
|
29018
29036
|
|
|
29019
29037
|
/*
|
|
29020
|
-
*
|
|
29038
|
+
* 触发器是页面上的独立文字按钮:盒型、md 档几何、outline 四态面、0.97 按压并换底与粗指针命中区
|
|
29021
29039
|
* 由家族配方按连接层投影的 data-xh-action-variant / -size 给出。皮肤没有自己的外观规则,
|
|
29022
29040
|
* 只把作者塞进按钮的图标接到随档字形尺(md = 20px)。
|
|
29023
29041
|
*/
|
|
@@ -29031,7 +29049,7 @@
|
|
|
29031
29049
|
}
|
|
29032
29050
|
|
|
29033
29051
|
[data-scope='popover'][data-part='content'] {
|
|
29034
|
-
/*
|
|
29052
|
+
/* 作者塞进面板里的图标按控件档取;关闭钮另由家族配方按 sm 档下发字形尺 */
|
|
29035
29053
|
--xh-icon-size: var(--xh-popover-icon-size, var(--xh-glyph-size-md));
|
|
29036
29054
|
|
|
29037
29055
|
/* 尺寸档只换这两个私有槽。popover 没有 root 部件,size 落在浮层树最外层的 content 上。
|
|
@@ -29049,7 +29067,7 @@
|
|
|
29049
29067
|
/* 内容由作者给,长度不可预知:不限高就整块伸出视口且滚不到 */
|
|
29050
29068
|
max-block-size: min(var(--xh-popover-max-h, var(--xh-overlay-max-h)), var(--xh-_popover-available-h));
|
|
29051
29069
|
overflow-y: auto;
|
|
29052
|
-
/* 浮在页面之上的 Overlay
|
|
29070
|
+
/* 浮在页面之上的 Overlay 滚动面:滚到头不把页面一起带走 */
|
|
29053
29071
|
overscroll-behavior: contain;
|
|
29054
29072
|
padding-block: var(--xh-popover-py, var(--xh-_popover-pad));
|
|
29055
29073
|
padding-inline: var(--xh-popover-px, var(--xh-_popover-pad));
|
|
@@ -29084,8 +29102,6 @@
|
|
|
29084
29102
|
|
|
29085
29103
|
[data-scope='popover'][data-part='content'][data-state='open'] {
|
|
29086
29104
|
animation: xh-overlay-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
29087
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
29088
|
-
will-change: opacity, scale, translate;
|
|
29089
29105
|
}
|
|
29090
29106
|
|
|
29091
29107
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -29113,7 +29129,7 @@
|
|
|
29113
29129
|
color: var(--xh-popover-title-fg, var(--xh-material-frosted-fg));
|
|
29114
29130
|
}
|
|
29115
29131
|
|
|
29116
|
-
/*
|
|
29132
|
+
/* 说明文字走说明档:13px + fg-muted */
|
|
29117
29133
|
[data-scope='popover'][data-part='description'] {
|
|
29118
29134
|
margin: 0;
|
|
29119
29135
|
font-size: var(--xh-popover-description-font-size, var(--xh-text-secondary-size));
|
|
@@ -29128,7 +29144,7 @@
|
|
|
29128
29144
|
}
|
|
29129
29145
|
|
|
29130
29146
|
/*
|
|
29131
|
-
*
|
|
29147
|
+
* 关闭钮是浮层角落的单图标钮:正方盒、sm 档几何、ghost 四态面、0.97 按压并换底与粗指针命中区
|
|
29132
29148
|
* 由家族配方给出——磨砂白面上走画布承载阶梯悬停 --xh-bg-subtle(100)→ 按下 --xh-bg-subtle-hover(200),
|
|
29133
29149
|
* 焦点面透明吃库环。这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与摆放,
|
|
29134
29150
|
* 聚焦档的 -bg-focus / -fg-focus 两槽同样桥到配方的 focus-visible 面,缺省仍是透明底与悬停字色:
|
|
@@ -29410,10 +29426,10 @@
|
|
|
29410
29426
|
--xh-question-flow-skin: 1;
|
|
29411
29427
|
}
|
|
29412
29428
|
|
|
29413
|
-
/* 一张静态内容面:--xh-border-default 描边 + surface 底 +
|
|
29429
|
+
/* 一张静态内容面:--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担)。
|
|
29414
29430
|
三个视觉轴都落在 root 上:形态管底与描边怎么画,语气管用哪族颜色,尺寸管内衬、按钮高度与字号 */
|
|
29415
29431
|
[data-scope='question-flow'][data-part='root'] {
|
|
29416
|
-
/*
|
|
29432
|
+
/* 作者塞进翻页钮的图标按档取尺,与皮肤画的兜底字形同一把尺 */
|
|
29417
29433
|
--xh-icon-size: var(--xh-question-flow-icon-size, var(--xh-glyph-size-md));
|
|
29418
29434
|
/* 尺寸缺省档:不写 data-size 时按中档走 */
|
|
29419
29435
|
--xh-_question-flow-p: var(--xh-space-4);
|
|
@@ -29443,7 +29459,7 @@
|
|
|
29443
29459
|
/* 描边式是缺省档,写在上面那条基础规则里 */
|
|
29444
29460
|
/* 填充式:底色顶替描边表达边界。描边只退成透明而不去掉,
|
|
29445
29461
|
1px 的位置留着,与 outline 档并排时基线对得上;
|
|
29446
|
-
淡底承载面向选项行与几颗中性钮下发 hover 200 → pressed 300
|
|
29462
|
+
淡底承载面向选项行与几颗中性钮下发 hover 200 → pressed 300 */
|
|
29447
29463
|
[data-scope='question-flow'][data-part='root'][data-variant='subtle'] {
|
|
29448
29464
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
29449
29465
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -29539,7 +29555,7 @@
|
|
|
29539
29555
|
pointer-events: auto;
|
|
29540
29556
|
}
|
|
29541
29557
|
|
|
29542
|
-
/* 题干就是这一题的标题,也是选项组的可访问名:走 Surface 标题档 14/600
|
|
29558
|
+
/* 题干就是这一题的标题,也是选项组的可访问名:走 Surface 标题档 14/600 */
|
|
29543
29559
|
[data-scope='question-flow'][data-part='prompt'] {
|
|
29544
29560
|
display: block;
|
|
29545
29561
|
margin: 0;
|
|
@@ -29564,9 +29580,9 @@
|
|
|
29564
29580
|
}
|
|
29565
29581
|
|
|
29566
29582
|
/* 一个选项:整行可点、可聚焦,记号在左。盒型、悬停 / 按下 / 禁用面由 Action Control 的 row 档给
|
|
29567
|
-
(ghost 形态:白底承载 hover 100 → pressed 200
|
|
29583
|
+
(ghost 形态:白底承载 hover 100 → pressed 200,按下只换面不缩放;禁用守卫认 data-disabled),
|
|
29568
29584
|
这里只把使用者槽映射到桥接槽,内衬与间距沿用本组件的档位;字色三态同一支,选中档在下面换一档。
|
|
29569
|
-
行高不吃家族的单行档:row
|
|
29585
|
+
行高不吃家族的单行档:row 档允许换行、高度随内容,一条会折行的选项文案走正文行高 */
|
|
29570
29586
|
[data-scope='question-flow'][data-part='item'] {
|
|
29571
29587
|
--xh-action-gap: var(--xh-question-flow-item-gap, var(--xh-space-1_5));
|
|
29572
29588
|
--xh-action-padding-inline: var(--xh-question-flow-item-px, var(--xh-space-2));
|
|
@@ -29647,7 +29663,7 @@
|
|
|
29647
29663
|
display: none;
|
|
29648
29664
|
}
|
|
29649
29665
|
|
|
29650
|
-
/* 单选那一档把方格收成圆:正方盒取 circle
|
|
29666
|
+
/* 单选那一档把方格收成圆:正方盒取 circle */
|
|
29651
29667
|
[data-scope='question-flow'][data-part='item-indicator'][data-select-mode='single'] {
|
|
29652
29668
|
border-radius: var(--xh-question-flow-indicator-radius-single, var(--xh-shape-circle));
|
|
29653
29669
|
}
|
|
@@ -29929,7 +29945,7 @@
|
|
|
29929
29945
|
--xh-_radio-group-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
29930
29946
|
|
|
29931
29947
|
/* 标题与条目都是根的直接子节点,一支 gap 同时管「标题到集合」与「条目之间」:
|
|
29932
|
-
集合标题与集合隔 --xh-space-2
|
|
29948
|
+
集合标题与集合隔 --xh-space-2,同组条目之间也是同一档紧密关系 */
|
|
29933
29949
|
display: flex;
|
|
29934
29950
|
gap: var(--xh-radio-group-gap, var(--xh-space-2));
|
|
29935
29951
|
}
|
|
@@ -29959,7 +29975,7 @@
|
|
|
29959
29975
|
--xh-_radio-group-indicator: var(--xh-control-indicator-lg);
|
|
29960
29976
|
}
|
|
29961
29977
|
|
|
29962
|
-
/*
|
|
29978
|
+
/* 集合标题:14 / 500 / fg-muted,字号不随 size 档——随档的是条目文字 */
|
|
29963
29979
|
[data-scope='radio-group'][data-part='label'] {
|
|
29964
29980
|
color: var(--xh-radio-group-label-fg, var(--xh-fg-muted));
|
|
29965
29981
|
font-size: var(--xh-radio-group-label-font-size, var(--xh-text-label-size));
|
|
@@ -29967,12 +29983,12 @@
|
|
|
29967
29983
|
line-height: var(--xh-leading-none);
|
|
29968
29984
|
}
|
|
29969
29985
|
|
|
29970
|
-
/* label 自己不带状态属性,整组禁用只写在 root 上,禁用标签色统一 --xh-fg-subtle
|
|
29986
|
+
/* label 自己不带状态属性,整组禁用只写在 root 上,禁用标签色统一 --xh-fg-subtle */
|
|
29971
29987
|
[data-scope='radio-group'][data-part='root'][data-disabled] [data-scope='radio-group'][data-part='label'] {
|
|
29972
29988
|
color: var(--xh-radio-group-label-fg-disabled, var(--xh-fg-subtle));
|
|
29973
29989
|
}
|
|
29974
29990
|
|
|
29975
|
-
/* 条目是「圆圈 +
|
|
29991
|
+
/* 条目是「圆圈 + 文案」的整行命中区:接 Action Control row 档、ghost 形态,悬停 / 按下 / 禁用面、手型、
|
|
29976
29992
|
过渡与焦点环由家族给,按下只换面不缩放(row 档专属按压块 scale: none);这里只把使用者槽映射到桥接槽。
|
|
29977
29993
|
行自己坐画布走 100 → 200(--xh-action-bg-* 钉住自己的面),行面上的圆圈按淡底容器阶梯再上一档
|
|
29978
29994
|
(--xh-action-host-bg-* 向内声明自己是圆圈的承载面,host 槽只对后代生效——自己的面已由 --xh-action-bg-* 钉住;
|
|
@@ -30016,8 +30032,8 @@
|
|
|
30016
30032
|
--xh-action-cursor-focus-visible: default;
|
|
30017
30033
|
}
|
|
30018
30034
|
|
|
30019
|
-
/*
|
|
30020
|
-
|
|
30035
|
+
/* 圆圈是字段家族的控制盒(字段静息形态):透明底 + --xh-border-control 描边 + 无影。
|
|
30036
|
+
不缩放(行级只换面),过渡只有底与描边;按下走 press 时间线、释放同走 micro */
|
|
30021
30037
|
[data-scope='radio-group'][data-part='indicator'] {
|
|
30022
30038
|
display: inline-flex;
|
|
30023
30039
|
flex: none;
|
|
@@ -30033,7 +30049,7 @@
|
|
|
30033
30049
|
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
30034
30050
|
}
|
|
30035
30051
|
|
|
30036
|
-
/* 悬停整行时未选中的圆圈描边升一档(字段静息 → hover
|
|
30052
|
+
/* 悬停整行时未选中的圆圈描边升一档(字段静息 → hover 的同一条阶梯);
|
|
30037
30053
|
选中圈与校验失败的圈保住各自的描边——圈内的点 / 警示色本身已经在表达状态 */
|
|
30038
30054
|
[data-scope='radio-group'][data-part='item']:not([data-disabled]):not([data-readonly]):hover
|
|
30039
30055
|
> [data-scope='radio-group'][data-part='indicator']:not([data-state='checked']):not([data-invalid]) {
|
|
@@ -30041,7 +30057,7 @@
|
|
|
30041
30057
|
}
|
|
30042
30058
|
|
|
30043
30059
|
/* 按下去要有回应。圆圈不是激活宿主:宿主是投影了 row 档的整行条目,圆圈在宿主的
|
|
30044
|
-
:hover / :is(:active, [data-pressed]) 下读宿主 host
|
|
30060
|
+
:hover / :is(:active, [data-pressed]) 下读宿主 host 槽的同一来源换面、不缩放——行按下是 200,
|
|
30045
30061
|
坐在上面的圆圈到 300(行以 --xh-action-host-bg-pressed 声明自己是圆圈的承载面,桥接槽只写不读,
|
|
30046
30062
|
圆圈读的是喂给它的那支私有槽),描边不动、几何不动;
|
|
30047
30063
|
与家族按压块同一时间线(按下 --xh-motion-duration-press,释放同走 micro) */
|
|
@@ -30086,7 +30102,7 @@
|
|
|
30086
30102
|
background: var(--xh-radio-group-indicator-dot-pressed, var(--xh-_tone-active, var(--xh-bg-brand-active)));
|
|
30087
30103
|
}
|
|
30088
30104
|
|
|
30089
|
-
/*
|
|
30105
|
+
/* 禁用:--xh-border-default 描边 + --xh-bg-subtle 底 + --xh-fg-disabled 圆点,不靠 opacity;
|
|
30090
30106
|
与 checkbox-group 方框、独立 checkbox 逐档一致。条目自己带 data-disabled(组禁用也逐条下放),圆圈读它 */
|
|
30091
30107
|
[data-scope='radio-group'][data-part='item'][data-disabled] > [data-scope='radio-group'][data-part='indicator'] {
|
|
30092
30108
|
border-color: var(--xh-radio-group-indicator-border-disabled, var(--xh-border-default));
|
|
@@ -30154,7 +30170,7 @@
|
|
|
30154
30170
|
根上不留基准它就会贴到更外层的定位祖先上,原生校验提示跟着飘到页面别处。 */
|
|
30155
30171
|
[data-scope='rating'][data-part='root'] {
|
|
30156
30172
|
/* 尺寸档只换这三个私有槽,星星与分值都从 root 继承它们,换档不必给每个部件各写一条选择器。
|
|
30157
|
-
星是控件内的字形,按档取 --xh-glyph-size-sm / md / lg
|
|
30173
|
+
星是控件内的字形,按档取 --xh-glyph-size-sm / md / lg;标签字号不随档 */
|
|
30158
30174
|
--xh-_rating-item-gap: var(--xh-control-gap-md);
|
|
30159
30175
|
--xh-_rating-item-size: var(--xh-glyph-size-md);
|
|
30160
30176
|
--xh-_rating-item-box-size: var(--xh-control-action-size);
|
|
@@ -30166,7 +30182,7 @@
|
|
|
30166
30182
|
position: relative;
|
|
30167
30183
|
display: inline-flex;
|
|
30168
30184
|
flex-direction: column;
|
|
30169
|
-
/*
|
|
30185
|
+
/* 字段标签贴控件(复合单字段) */
|
|
30170
30186
|
gap: var(--xh-rating-gap, var(--xh-space-1));
|
|
30171
30187
|
}
|
|
30172
30188
|
|
|
@@ -30183,7 +30199,7 @@
|
|
|
30183
30199
|
--xh-_rating-font-size: var(--xh-control-font-lg);
|
|
30184
30200
|
}
|
|
30185
30201
|
|
|
30186
|
-
/* 字段标签:14 / 500 / fg-default
|
|
30202
|
+
/* 字段标签:14 / 500 / fg-default,禁用换到 --xh-fg-subtle;文字部件不叠 opacity */
|
|
30187
30203
|
[data-scope='rating'][data-part='label'] {
|
|
30188
30204
|
color: var(--xh-rating-label-fg, var(--xh-fg-default));
|
|
30189
30205
|
font-size: var(--xh-rating-label-font-size, var(--xh-text-label-size));
|
|
@@ -30243,7 +30259,7 @@
|
|
|
30243
30259
|
|
|
30244
30260
|
/* 条目固定成一枚方形图标盒:连接层用 clientWidth 判定指针落在左半还是右半,
|
|
30245
30261
|
固定盒能让半档分界与图形中心严格重合。
|
|
30246
|
-
星接 Action Control icon
|
|
30262
|
+
星接 Action Control icon 档(定尺的星):盒型、按下 / 禁用面、0.97 缩放与换底、焦点环与过渡由家族配方给,
|
|
30247
30263
|
这里只把使用者槽映射到桥接槽。静息透明(ghost 形态);悬停不换底——悬停预览由点亮的星形(data-highlighted)
|
|
30248
30264
|
表达,再给盒换面是重复的通道;按下换到 200 档中性面(白底承载)。前景五态映射同一个值:点亮时五态一起换到
|
|
30249
30265
|
点亮色,家族的悬停 / 按下块才不会把点亮色换回静息色;禁用不换前景,星带整体的压暗落在 control 的 opacity 上 */
|
|
@@ -30713,7 +30729,7 @@
|
|
|
30713
30729
|
[data-scope='select'][data-part='root'] {
|
|
30714
30730
|
/* 作者塞进指示符槽的图标跟着控件的尺寸档走;它自己写了 size 时仍以作者的为准。
|
|
30715
30731
|
浮层条目里自绘的状态字形(勾选标记所在的标记盒与盒里的勾)不读这支:它们是指示符,走
|
|
30716
|
-
--xh-control-indicator-* 一族——标记盒在自己身上把 --xh-icon-size
|
|
30732
|
+
--xh-control-indicator-* 一族——标记盒在自己身上把 --xh-icon-size 改接到盒的尺 */
|
|
30717
30733
|
--xh-icon-size: var(--xh-select-icon-size, var(--xh-glyph-size-md));
|
|
30718
30734
|
|
|
30719
30735
|
display: inline-flex;
|
|
@@ -31027,8 +31043,6 @@
|
|
|
31027
31043
|
|
|
31028
31044
|
[data-scope='select'][data-part='content'][data-state='open'] {
|
|
31029
31045
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
31030
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
31031
|
-
will-change: opacity, translate;
|
|
31032
31046
|
}
|
|
31033
31047
|
|
|
31034
31048
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -31163,7 +31177,7 @@
|
|
|
31163
31177
|
}
|
|
31164
31178
|
|
|
31165
31179
|
/* 勾选标记只在选中项上出现;未选中时占位不塌,切换选中不引起行宽抖动。
|
|
31166
|
-
|
|
31180
|
+
盒与盒里的勾是指示符:盒按指示符档取尺,并在自己身上把 --xh-icon-size 改接到盒的尺,皮肤画的
|
|
31167
31181
|
兜底勾与作者塞进盒里的 XhIcon 读同一把尺、与盒同边长(勾选标记不是勾选格,不取 × 0.75,与 Listbox / Menu 族
|
|
31168
31182
|
同口径);不读家族按档下发到行的 --xh-icon-size——那支只管作者放进条目里的图标,按图标档取的 20px 比
|
|
31169
31183
|
16 / 14 的指示符档大一圈 */
|
|
@@ -31361,7 +31375,7 @@
|
|
|
31361
31375
|
不是根的后代,继承不过去。面板里的行与栏内那些消费的是同一批槽 */
|
|
31362
31376
|
[data-scope='side-nav']:is([data-part='root'], [data-part='positioner']) {
|
|
31363
31377
|
/* 行外的字形按档取尺,缺省 md,随 data-size 换档并同样声明在定位层上(弹出面板里的行也拿得到);
|
|
31364
|
-
行内的由家族随 data-xh-collection-size
|
|
31378
|
+
行内的由家族随 data-xh-collection-size 下发。这支只管作者放进行里的图标:
|
|
31365
31379
|
侧栏自绘的状态字形(分支行尾的展开方向 chevron)是指示符,branch-indicator 在自己身上
|
|
31366
31380
|
把 --xh-icon-size 改接到 --xh-control-indicator-* 一族的盒尺 */
|
|
31367
31381
|
--xh-icon-size: var(--xh-side-nav-icon-size, var(--xh-glyph-size-md));
|
|
@@ -31460,7 +31474,7 @@
|
|
|
31460
31474
|
}
|
|
31461
31475
|
|
|
31462
31476
|
/* —— 行:分支按钮与链接同一副长相 ——
|
|
31463
|
-
两种行都走 Collection Item 的 page
|
|
31477
|
+
两种行都走 Collection Item 的 page 语境(页内持久集合):悬停 / 高亮 / 按下面(白底承载 hover 100 →
|
|
31464
31478
|
pressed 200,只换面不缩放)、当前页(品牌淡底 + 淡底前景 + 起始侧 2px 指示条,current+hover 20% /
|
|
31465
31479
|
+pressed 28%)、展开路径(与 hover 同档的中性面,不用品牌色、不加粗)与禁用面都由家族按 data-current /
|
|
31466
31480
|
data-in-path / aria-disabled 给出。这里只把公开槽映射到桥接槽。
|
|
@@ -31595,15 +31609,13 @@
|
|
|
31595
31609
|
box-shadow: var(--xh-side-nav-popout-shadow, var(--xh-elevation-floating));
|
|
31596
31610
|
|
|
31597
31611
|
/* 子导航条目数没有上限,矮视口下不限高就整块伸出视口且滚不到。
|
|
31598
|
-
|
|
31612
|
+
浮层滚动面:到底后不把滚动链穿透给页面;细条由 reset 层给 */
|
|
31599
31613
|
max-block-size: min(var(--xh-side-nav-popout-max-h, var(--xh-overlay-menu-max-h)), var(--xh-_side-nav-available-h));
|
|
31600
31614
|
overflow-y: auto;
|
|
31601
31615
|
overscroll-behavior: contain;
|
|
31602
31616
|
}
|
|
31603
31617
|
|
|
31604
|
-
/* 在场那一档才提前备好合成层:属性随 data-state 一起消失,收起后不长期占着 */
|
|
31605
31618
|
[data-scope='side-nav'][data-part='branch-content'][data-popout][data-state='open'] {
|
|
31606
|
-
will-change: opacity, scale;
|
|
31607
31619
|
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
31608
31620
|
}
|
|
31609
31621
|
|
|
@@ -31614,7 +31626,7 @@
|
|
|
31614
31626
|
}
|
|
31615
31627
|
|
|
31616
31628
|
/* 箭头是行尾的后缀:auto 外边距把它顶到行尾,家族按 suffix 槽下发的外边距已在行上归零。
|
|
31617
|
-
盒里的 chevron
|
|
31629
|
+
盒里的 chevron 是指示符:盒按指示符档定尺(comfortable 16 / compact 14,与 Tree / TreeSelect
|
|
31618
31630
|
的 branch-indicator 同款定尺盒),--xh-icon-size 在自己身上改接到盒的尺,兜底字形与作者塞进盒里的
|
|
31619
31631
|
XhIcon 读同一把尺、与盒同边长;不读家族按档下发到行的 --xh-icon-size——那支只管作者放进行里的
|
|
31620
31632
|
图标,按图标档取的 20px 比指示符档大一圈。盒自己定尺而不随字形撑开:转 90° 时才不抖 */
|
|
@@ -31693,7 +31705,7 @@
|
|
|
31693
31705
|
|
|
31694
31706
|
display: flex;
|
|
31695
31707
|
flex-direction: column;
|
|
31696
|
-
/*
|
|
31708
|
+
/* 字段标签贴控件(复合单字段) */
|
|
31697
31709
|
gap: var(--xh-slider-gap, var(--xh-space-1));
|
|
31698
31710
|
}
|
|
31699
31711
|
|
|
@@ -31703,10 +31715,10 @@
|
|
|
31703
31715
|
align-items: center;
|
|
31704
31716
|
}
|
|
31705
31717
|
|
|
31706
|
-
/*
|
|
31718
|
+
/* 禁用不整体压暗:前景与表面各自降级——连接层把 data-disabled 发到每个角色节点上,
|
|
31707
31719
|
轨道、区间、拇指、刻度与标签就近消费,写在各自的规则里 */
|
|
31708
31720
|
|
|
31709
|
-
/* 字段标签:14 / 500 / fg-default
|
|
31721
|
+
/* 字段标签:14 / 500 / fg-default,禁用换到 --xh-fg-subtle */
|
|
31710
31722
|
[data-scope='slider'][data-part='label'] {
|
|
31711
31723
|
color: var(--xh-slider-label-fg, var(--xh-fg-default));
|
|
31712
31724
|
font-size: var(--xh-slider-label-font-size, var(--xh-text-label-size));
|
|
@@ -31812,7 +31824,7 @@
|
|
|
31812
31824
|
/* 圆点浮在轨道之上:轨道是流内的,拇指是绝对定位的,天然后来居上,不必再堆 z-index。
|
|
31813
31825
|
box-sizing 必须显式写:描边要吃进直径里,否则实际盒子比 --xh-_thumb-size 宽两条边,
|
|
31814
31826
|
下面按半个直径回拉的负外边距就对不上圆心。
|
|
31815
|
-
拇指是可拖起的 raised
|
|
31827
|
+
拇指是可拖起的 raised 面:描边取 --xh-border-default,raised 影只是加成、不作边界 */
|
|
31816
31828
|
[data-scope='slider'][data-part='thumb'] {
|
|
31817
31829
|
position: absolute;
|
|
31818
31830
|
box-sizing: border-box;
|
|
@@ -31945,7 +31957,7 @@
|
|
|
31945
31957
|
pointer-events: none;
|
|
31946
31958
|
}
|
|
31947
31959
|
|
|
31948
|
-
/* 刻度点是正方盒,取 circle
|
|
31960
|
+
/* 刻度点是正方盒,取 circle(正方盒不得用 pill 冒充圆) */
|
|
31949
31961
|
[data-scope='slider'][data-part='tick'] {
|
|
31950
31962
|
position: absolute;
|
|
31951
31963
|
inset-block-start: 50%;
|
|
@@ -32083,7 +32095,7 @@
|
|
|
32083
32095
|
opacity: var(--xh-sortable-item-opacity-dragging, 0.9);
|
|
32084
32096
|
}
|
|
32085
32097
|
|
|
32086
|
-
/*
|
|
32098
|
+
/* 把手是只有字形的离散动作钮(定尺把手):盒几何、悬停 / 按下与 0.97 按压、粗指针热区、焦点环、
|
|
32087
32099
|
禁用面全由 Action Control 的 icon ghost 档给(连接层投 xs:24px 正方盒,与此前 --xh-control-action-size
|
|
32088
32100
|
同尺寸),组件只映射既有使用者槽。静息透明,白底承载 hover 100 → pressed 200(此前悬停落 200 是错档)。
|
|
32089
32101
|
手型不是 pointer:抓起来拖的东西给 grab,按住拖动中给 grabbing;家族的手型槽逐态映射 */
|
|
@@ -32322,7 +32334,7 @@
|
|
|
32322
32334
|
cursor: row-resize;
|
|
32323
32335
|
}
|
|
32324
32336
|
|
|
32325
|
-
/* 分隔条是一根线不是一块面:悬停不走面阶梯(300 只留给 pressed
|
|
32337
|
+
/* 分隔条是一根线不是一块面:悬停不走面阶梯(300 只留给 pressed),
|
|
32326
32338
|
按线取——与字段描边 rest → hover 同向加深一档 */
|
|
32327
32339
|
[data-scope='splitter'][data-part='resize-trigger']:hover {
|
|
32328
32340
|
background: var(--xh-splitter-trigger-bg-hover, var(--xh-border-control));
|
|
@@ -32373,7 +32385,7 @@
|
|
|
32373
32385
|
}
|
|
32374
32386
|
|
|
32375
32387
|
[data-scope='steps'][data-part='root'] {
|
|
32376
|
-
/* 作者放进标题 / 说明里的图标按档取尺,缺省 sm
|
|
32388
|
+
/* 作者放进标题 / 说明里的图标按档取尺,缺省 sm。走过的步里皮肤画的兜底对号不读这支:
|
|
32377
32389
|
它是指示符,与序号圆点同走 --xh-control-indicator-* 一族——圆点在自己身上把 --xh-icon-size
|
|
32378
32390
|
改接到 --xh-steps-indicator-mark-size,兜底对号与作者塞进圆点里的 XhIcon 读同一把尺 */
|
|
32379
32391
|
--xh-icon-size: var(--xh-steps-icon-size, var(--xh-glyph-size-sm));
|
|
@@ -32387,14 +32399,14 @@
|
|
|
32387
32399
|
/* 语气落在当前步的标记、走过那几步的对号与连接线上:强调色画描边与填充,
|
|
32388
32400
|
accent-text 是普通底上的强调文字(走过与当前步的标题),on-accent 是实心底上的前景。
|
|
32389
32401
|
没写 data-tone 时 --xh-_tone 一族没被声明,三个槽都退回原来的品牌配色。
|
|
32390
|
-
|
|
32402
|
+
走过的步不再用品牌淡底(brand-subtle 退出 completed 语义),淡底那两支私有槽随之撤掉 */
|
|
32391
32403
|
--xh-_steps-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
32392
32404
|
--xh-_steps-accent-text: var(--xh-_tone-fg, var(--xh-fg-brand-strong));
|
|
32393
32405
|
/* 走过的步里那枚对号:中性淡底上的品牌色标记,不用标题那档更深的字色 */
|
|
32394
32406
|
--xh-_steps-accent-mark: var(--xh-_tone-fg, var(--xh-fg-brand));
|
|
32395
32407
|
--xh-_steps-on-accent: var(--xh-_tone-on, var(--xh-fg-on-brand));
|
|
32396
32408
|
/* 触发器是序号圆点的承载面:圆点静息就坐在 --xh-bg-subtle(100)的淡底上,阶梯按淡底容器走
|
|
32397
|
-
(hover 200 → pressed 300
|
|
32409
|
+
(hover 200 → pressed 300)。两支私有槽是这一档的唯一来源——触发器拿它们给
|
|
32398
32410
|
--xh-action-host-bg-* 赋值(桥接槽只写不读),圆点悬停 / 按下读同一支私有槽,即与宿主的 host 槽同源 */
|
|
32399
32411
|
--xh-_steps-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
32400
32412
|
--xh-_steps-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -32493,7 +32505,7 @@
|
|
|
32493
32505
|
align-items: flex-start;
|
|
32494
32506
|
}
|
|
32495
32507
|
|
|
32496
|
-
/* 触发器是「序号 + 标题 +
|
|
32508
|
+
/* 触发器是「序号 + 标题 + 说明」的整块内容行:接 Action Control row 档、ghost 形态,悬停 / 按下 / 禁用面、
|
|
32497
32509
|
手型、过渡与焦点环由家族给,按下只换面不缩放(row 档专属按压块 scale: none);这里只把使用者槽映射到桥接槽。
|
|
32498
32510
|
触发器既是 Action Control 又是圆点的承载面:自己坐画布走 hover 100 → pressed 200,由 --xh-action-bg-* 钉住;
|
|
32499
32511
|
--xh-action-host-bg-* 只对圆点生效(圆点自己是 100 的淡底,坐在触发器面上再上一档到 200 / 300)。
|
|
@@ -32542,9 +32554,9 @@
|
|
|
32542
32554
|
color: var(--xh-fg-disabled);
|
|
32543
32555
|
}
|
|
32544
32556
|
|
|
32545
|
-
/*
|
|
32557
|
+
/* 序号圆点:未开始使用中性面,当前步骤实心强调,已完成步骤中性面上画品牌对号。 */
|
|
32546
32558
|
[data-scope='steps'][data-part='indicator'] {
|
|
32547
|
-
/*
|
|
32559
|
+
/* 圆点里的字形是指示符:对号按指示符档取尺、随密度换档(comfortable 16 / compact 14),
|
|
32548
32560
|
不读 root 上只管作者标题 / 说明图标的 --xh-steps-icon-size;作者塞进圆点的 XhIcon 与兜底对号同一把尺。
|
|
32549
32561
|
圆点自己走 space / control-h 的尺(最小 28px),不随密度,两档字形在三档圆点里都留得出边距 */
|
|
32550
32562
|
--xh-icon-size: var(--xh-steps-indicator-mark-size, var(--xh-control-indicator-size));
|
|
@@ -32576,8 +32588,8 @@
|
|
|
32576
32588
|
display: none;
|
|
32577
32589
|
}
|
|
32578
32590
|
|
|
32579
|
-
/*
|
|
32580
|
-
:hover / :is(:active, [data-pressed]) 下读宿主 host
|
|
32591
|
+
/* 圆点是格状当前的标记,但不是激活宿主:宿主是投影了 row 档的触发器;圆点在宿主的
|
|
32592
|
+
:hover / :is(:active, [data-pressed]) 下读宿主 host 槽的同一来源换面,同一时间线,不缩放——
|
|
32581
32593
|
圆点自己是 100 的淡底,坐在触发器的 hover 面(100)上,再上一档到 200 才与承载面分得开,按下到 300;
|
|
32582
32594
|
当前步的实心面按下换语气 active 档 */
|
|
32583
32595
|
[data-scope='steps'][data-part='trigger']:hover:not([data-disabled])
|
|
@@ -32612,7 +32624,7 @@
|
|
|
32612
32624
|
box-shadow: var(--xh-steps-indicator-shadow, var(--xh-_steps-highlight));
|
|
32613
32625
|
}
|
|
32614
32626
|
|
|
32615
|
-
/*
|
|
32627
|
+
/* 走过的步:中性淡底(透明边位)承一枚品牌色对号;标了语气的步对号跟语气的前景走 */
|
|
32616
32628
|
[data-scope='steps'][data-part='indicator'][data-state='completed'] {
|
|
32617
32629
|
border-color: var(--xh-steps-indicator-border-completed, transparent);
|
|
32618
32630
|
background: var(--xh-steps-indicator-bg-completed, var(--xh-bg-subtle));
|
|
@@ -32666,7 +32678,7 @@
|
|
|
32666
32678
|
color: var(--xh-steps-title-fg-toned, var(--xh-_steps-accent-text));
|
|
32667
32679
|
}
|
|
32668
32680
|
|
|
32669
|
-
/*
|
|
32681
|
+
/* 说明走说明角色:13 / fg-muted / leading-normal,不随 size 档 */
|
|
32670
32682
|
[data-scope='steps'][data-part='description'] {
|
|
32671
32683
|
grid-column: 2;
|
|
32672
32684
|
color: var(--xh-steps-description-fg, var(--xh-fg-muted));
|
|
@@ -32803,9 +32815,9 @@
|
|
|
32803
32815
|
--xh-_switch-track-bg-pressed: var(--xh-switch-bg-pressed, var(--xh-_switch-track-bg));
|
|
32804
32816
|
--xh-_switch-fg: var(--xh-switch-fg, var(--xh-fg-default));
|
|
32805
32817
|
|
|
32806
|
-
/* 轨道接 Action Control text
|
|
32818
|
+
/* 轨道接 Action Control text 档(定尺轨道):悬停 / 按下 / 禁用面、0.97 缩放与换底、粗指针热区、
|
|
32807
32819
|
焦点环与过渡由家族配方给,这里只把轨道的私有槽映射到桥接槽。轨道没有实描边(边界以内描边画,不吃行程),
|
|
32808
|
-
边位映射 transparent 并把 border 宽度归零;内描边经 shadow
|
|
32820
|
+
边位映射 transparent 并把 border 宽度归零;内描边经 shadow 通道各态同一支。悬停不换面(阶梯只给按下) */
|
|
32809
32821
|
--xh-action-visual-size: var(--xh-_switch-track-h);
|
|
32810
32822
|
--xh-action-min-inline-size: calc(var(--xh-_switch-track-h) * 2 - var(--xh-_switch-pad) * 2);
|
|
32811
32823
|
--xh-action-padding-inline: var(--xh-_switch-pad);
|
|
@@ -32851,7 +32863,7 @@
|
|
|
32851
32863
|
|
|
32852
32864
|
/* 只读:值仍要读得清、也仍会随表单提交,所以不压对比度、也不借禁用那档灰。
|
|
32853
32865
|
变的是"动不动得了":指针不摆手型、按下不缩放不换底(家族的按压块由这里的映射钉回静息面),
|
|
32854
|
-
|
|
32866
|
+
选中档的轨道退回未选中那一档的中性底(交互态的底只从语义面派生),
|
|
32855
32867
|
滑块收掉那层抬起的投影——投影是"这颗按得动"的信号。与文本框只读那一档同口径(压低底色而非置灰)。
|
|
32856
32868
|
滑块停在哪一端不受影响,值本身仍由位置这条非颜色通道读出。 */
|
|
32857
32869
|
[data-scope='switch'][data-part='root'][data-readonly]:not([data-disabled]) {
|
|
@@ -32888,7 +32900,7 @@
|
|
|
32888
32900
|
box-shadow: var(--xh-switch-thumb-shadow-readonly, none);
|
|
32889
32901
|
}
|
|
32890
32902
|
|
|
32891
|
-
/*
|
|
32903
|
+
/* 禁用:不靠 opacity——轨道退回 --xh-bg-subtle 底 + --xh-border-default 内描边,滑块前景置灰;
|
|
32892
32904
|
选中的禁用轨道同样退回中性面,值由滑块位置读出。面与手型由家族的禁用块按映射给 */
|
|
32893
32905
|
[data-scope='switch'][data-part='root'][data-disabled] {
|
|
32894
32906
|
--xh-_switch-track-border: var(--xh-switch-border-disabled, var(--xh-border-default));
|
|
@@ -32925,7 +32937,7 @@
|
|
|
32925
32937
|
}
|
|
32926
32938
|
}
|
|
32927
32939
|
|
|
32928
|
-
/* 滑块是 raised
|
|
32940
|
+
/* 滑块是 raised 抬起面(可拖起部件,逐部件登记):--xh-bg-surface-raised 底 + --xh-border-default 描边 +
|
|
32929
32941
|
--xh-elevation-raised 影,无顶光;描边必须在,影只是加成 */
|
|
32930
32942
|
[data-scope='switch'][data-part='thumb'] {
|
|
32931
32943
|
position: relative;
|
|
@@ -32995,13 +33007,13 @@
|
|
|
32995
33007
|
block-size: 60%;
|
|
32996
33008
|
border: var(--xh-stroke-thin) solid transparent;
|
|
32997
33009
|
border-block-start-color: var(--xh-switch-loading-fg, var(--xh-_switch-accent));
|
|
32998
|
-
/*
|
|
33010
|
+
/* 加载环是等宽高的圆(全部加载环取 circle) */
|
|
32999
33011
|
border-radius: var(--xh-shape-circle);
|
|
33000
33012
|
animation: xh-switch-rotate var(--xh-switch-loading-duration, var(--xh-spin-duration)) var(--xh-motion-ease-loop) infinite;
|
|
33001
33013
|
}
|
|
33002
33014
|
|
|
33003
33015
|
/* —— 带文字的整行:<label> 包住控件与文字,与 checkbox 的标签、checkbox-group 的条目同一副样子 ——
|
|
33004
|
-
文字是控件自己的文字,字号随 size 档取 --xh-control-font
|
|
33016
|
+
文字是控件自己的文字,字号随 size 档取 --xh-control-font-*(控件字号随档);
|
|
33005
33017
|
行高取正文档,长文字可以自然换行 */
|
|
33006
33018
|
[data-scope='switch'][data-part='label'] {
|
|
33007
33019
|
--xh-_switch-label-font-size: var(--xh-control-font-md);
|
|
@@ -33023,7 +33035,7 @@
|
|
|
33023
33035
|
--xh-_switch-label-font-size: var(--xh-control-font-lg);
|
|
33024
33036
|
}
|
|
33025
33037
|
|
|
33026
|
-
/* 禁用标签色统一 --xh-fg-subtle
|
|
33038
|
+
/* 禁用标签色统一 --xh-fg-subtle */
|
|
33027
33039
|
[data-scope='switch'][data-part='label'][data-disabled] {
|
|
33028
33040
|
color: var(--xh-switch-label-fg-disabled, var(--xh-fg-subtle));
|
|
33029
33041
|
cursor: not-allowed;
|
|
@@ -33167,7 +33179,7 @@
|
|
|
33167
33179
|
既不让页面上的层号插进来,也不让它们漏出去压住别人 */
|
|
33168
33180
|
isolation: isolate;
|
|
33169
33181
|
|
|
33170
|
-
/* 作者放进单元格、列头与把手里的图标按档取尺,缺省 md
|
|
33182
|
+
/* 作者放进单元格、列头与把手里的图标按档取尺,缺省 md;表体行上的由家族随 data-xh-collection-size 下发。
|
|
33171
33183
|
表格自绘的状态字形(排序方向、勾、半选杠、展开方向)不读这支:它们是指示符,与所在的方盒同走
|
|
33172
33184
|
--xh-control-indicator-* 一族——五颗把手在自己身上把 --xh-icon-size 改接到方盒的尺,排序钮那支叫 --xh-table-sort-size */
|
|
33173
33185
|
--xh-icon-size: var(--xh-table-icon-size, var(--xh-glyph-size-md));
|
|
@@ -33311,7 +33323,7 @@
|
|
|
33311
33323
|
outline: none;
|
|
33312
33324
|
}
|
|
33313
33325
|
|
|
33314
|
-
/* 表头是淡底承载面:里头的触发器按淡底阶梯走(hover 200 → pressed 300),阶梯由 host
|
|
33326
|
+
/* 表头是淡底承载面:里头的触发器按淡底阶梯走(hover 200 → pressed 300),阶梯由 host 槽向内下发;
|
|
33315
33327
|
排序钮是 ghost 图标钮,悬停 / 按下面就从这两支 host 槽取 */
|
|
33316
33328
|
[data-scope='table'][data-part='header'] {
|
|
33317
33329
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
@@ -33335,7 +33347,7 @@
|
|
|
33335
33347
|
font-weight: var(--xh-table-footer-font-weight, var(--xh-font-weight-medium));
|
|
33336
33348
|
}
|
|
33337
33349
|
|
|
33338
|
-
/* 表体行走 Collection Item 的 page
|
|
33350
|
+
/* 表体行走 Collection Item 的 page 语境(页内持久集合):悬停 / 高亮 / 按下面(白底承载 hover 100 →
|
|
33339
33351
|
pressed 200)与选中面(品牌淡底 + 淡底前景,selected+hover 20% / +pressed 28%)由家族按 aria-selected /
|
|
33340
33352
|
aria-disabled 给出,标记由行首的勾选把手承担。这里只把公开槽映射到桥接槽,并逐项盖掉家族的行盒几何:
|
|
33341
33353
|
行是 flex 容器(列宽由单元格的内联尺寸决定,不进家族网格)、不内衬、不圆角、字号与光标随表格本身
|
|
@@ -33503,7 +33515,7 @@
|
|
|
33503
33515
|
}
|
|
33504
33516
|
|
|
33505
33517
|
/* 五个把手共用一副方形盒子,两种行的文字起点才对得齐;列设置区那颗与表头里的选择框同款,一眼看得出是同一件事。
|
|
33506
|
-
五颗都接 Action Control icon
|
|
33518
|
+
五颗都接 Action Control icon 档(定尺方框):盒型、悬停 / 按下 / 禁用面、0.97 缩放与换底、焦点环与过渡由家族
|
|
33507
33519
|
配方给,这里只把使用者槽映射到桥接槽;边长仍按 --xh-control-indicator-size 走。三颗勾选框是 outline 形态
|
|
33508
33520
|
(字段静息形态:透明底 + --xh-border-control 描边),展开箭头与排序钮是 ghost;空框与箭头坐在白底行上,
|
|
33509
33521
|
按下落 200 档,已勾选的品牌实心面按下派生 active 面;排序钮坐在表头淡底上,阶梯另由 host 槽给(见下) */
|
|
@@ -33553,7 +33565,7 @@
|
|
|
33553
33565
|
}
|
|
33554
33566
|
}
|
|
33555
33567
|
|
|
33556
|
-
/*
|
|
33568
|
+
/* 盒里的字形是指示符:这四颗把手各自把 --xh-icon-size 改接到方盒的尺上,兜底字形与作者塞进盒里的
|
|
33557
33569
|
XhIcon 读同一把尺,root 那支只管作者放进单元格与把手里图标的 --xh-table-icon-size 不流进来。
|
|
33558
33570
|
三颗勾选框的勾与半选杠按方盒边长 × 0.75,与 Checkbox 的 --xh-_checkbox-glyph、Tree 勾选把手同一比例;
|
|
33559
33571
|
展开箭头的 chevron 与方盒同边长,同 Tree 的 branch-trigger */
|
|
@@ -33656,7 +33668,7 @@
|
|
|
33656
33668
|
mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
33657
33669
|
}
|
|
33658
33670
|
|
|
33659
|
-
/*
|
|
33671
|
+
/* 禁用:--xh-border-default 描边 + --xh-bg-subtle 底,勾藏起来;家族的禁用块按映射给 */
|
|
33660
33672
|
[data-scope='table'][data-part='select-all-trigger'][data-disabled],
|
|
33661
33673
|
[data-scope='table'][data-part='column-visibility-trigger'][data-disabled],
|
|
33662
33674
|
[data-scope='table'][data-part='row-select-trigger'][data-disabled] {
|
|
@@ -33707,7 +33719,7 @@
|
|
|
33707
33719
|
outline: none;
|
|
33708
33720
|
}
|
|
33709
33721
|
|
|
33710
|
-
/*
|
|
33722
|
+
/* 排序钮是列头里独立的定尺图标钮:不包列名,列名留在列头上、它排在列名之后,auto 外边距把它
|
|
33711
33723
|
推到行尾侧与列宽把手并排。盒型与 0.97 按压由家族 icon 档给(见五颗把手共用块);坐在表头淡底上,
|
|
33712
33724
|
悬停 / 按下面按 header 的 host 槽下发的阶梯走(hover 200 → pressed 300),不取白底行那档。
|
|
33713
33725
|
箭头静息取 subtle 前景,参与排序的列换成默认前景(见字形块) */
|
|
@@ -33977,7 +33989,7 @@
|
|
|
33977
33989
|
悬停恒真,而悬停那条是 0-6-0、选中那条是 0-3-0,少写一层祖先这块淡底就会被那两档盖掉。
|
|
33978
33990
|
禁用的行不接换父落点,:not([data-disabled]) 不会漏画任何一处高亮 */
|
|
33979
33991
|
[data-scope='table'][data-part='root'] [data-scope='table'][data-part='body'] > [data-scope='table'][data-part='row'][data-drop='inside']:not([data-disabled]) {
|
|
33980
|
-
/*
|
|
33992
|
+
/* 落点不是选中:品牌淡底专属选中,落点面取悬停之上一档的中性面 */
|
|
33981
33993
|
background: var(--xh-table-drop-inside-bg, var(--xh-bg-subtle-hover));
|
|
33982
33994
|
}
|
|
33983
33995
|
|
|
@@ -34011,7 +34023,7 @@
|
|
|
34011
34023
|
}
|
|
34012
34024
|
|
|
34013
34025
|
/* 排序方向用箭头字形表出来:aria-sort 只报给读屏,视觉侧也得有对应的东西。
|
|
34014
|
-
|
|
34026
|
+
箭头是指示符:尺寸读钮自己改接过的 --xh-icon-size(--xh-table-sort-size,缺省与方盒同边长),
|
|
34015
34027
|
与同一表头里的勾选框方盒、列拖拽把手同走 --xh-control-indicator-size,按图标档取的 20px 会比
|
|
34016
34028
|
16px 的方盒与列头文字都大一圈。:empty 守卫同展开箭头:作者塞了自己的图标就整个顶掉兜底;
|
|
34017
34029
|
flex: none 是因为 ghost 那圈透明描边仍占位,不钉住的话与盒同边长的箭头会被挤窄一个描边。
|
|
@@ -34119,7 +34131,7 @@
|
|
|
34119
34131
|
}
|
|
34120
34132
|
|
|
34121
34133
|
/* 取下一页的按钮:铺满一行摆在表尾——铺满一行的独立动作条目,接 Action Control 的 row 档、
|
|
34122
|
-
ghost
|
|
34134
|
+
ghost 形态:宽度由容器给、高度随内容、按下只换面不缩放;盒几何、悬停 / 按下 / 禁用面、
|
|
34123
34135
|
焦点环与粗指针热区全由家族给,白底承载 hover 100 → pressed 200。
|
|
34124
34136
|
这里只把使用者槽映射到桥接槽并把文案居中:它是一行里唯一的东西,靠起始缘会像一条没对齐的行 */
|
|
34125
34137
|
[data-scope='table'][data-part='load-more-trigger'] {
|
|
@@ -34135,7 +34147,7 @@
|
|
|
34135
34147
|
|
|
34136
34148
|
justify-content: center;
|
|
34137
34149
|
text-align: center;
|
|
34138
|
-
/* row
|
|
34150
|
+
/* row 档允许换行、高度随内容,折行的文案走正文行高 */
|
|
34139
34151
|
line-height: var(--xh-leading-normal);
|
|
34140
34152
|
}
|
|
34141
34153
|
|
|
@@ -34240,7 +34252,7 @@
|
|
|
34240
34252
|
/* 缺省是 line 变体:透明标签带,选中项由文字与底部指示条表达。Web Components 升级前还没有
|
|
34241
34253
|
data-variant,这组几何基础值也必须画成相同结果,避免定义完成时闪换样式;line 档的面与字色由家族
|
|
34242
34254
|
按升级后写入的家族角色给,升级前那一帧只有几何没有面色(与 side-nav / menu 同)。
|
|
34243
|
-
|
|
34255
|
+
悬停与按下的面按承载面分档:line 档经家族走白底承载 hover 100 → pressed 200;card 坐在
|
|
34244
34256
|
画布上 hover 100 → pressed 200;segment 坐在淡底轨道里 hover 200 → pressed 300。card / segment 的
|
|
34245
34257
|
六支面槽只在各自形态块里赋值,line 档不消费它们 */
|
|
34246
34258
|
--xh-_tabs-list-gap: var(--xh-space-0);
|
|
@@ -34302,7 +34314,7 @@
|
|
|
34302
34314
|
}
|
|
34303
34315
|
|
|
34304
34316
|
/* 卡片式:基线收掉,选中的那张标签自己成为一张有描边有底的卡片,顶边一条指示条。
|
|
34305
|
-
标签坐在画布上,悬停 100 → 按下 200
|
|
34317
|
+
标签坐在画布上,悬停 100 → 按下 200(白底承载) */
|
|
34306
34318
|
[data-scope='tabs'][data-part='root'][data-variant='card'] {
|
|
34307
34319
|
--xh-_tabs-list-gap: var(--xh-control-gap-md);
|
|
34308
34320
|
--xh-_tabs-list-bg: transparent;
|
|
@@ -34321,7 +34333,7 @@
|
|
|
34321
34333
|
--xh-_tabs-accent-text: var(--xh-_tone-fg, var(--xh-fg-default));
|
|
34322
34334
|
}
|
|
34323
34335
|
|
|
34324
|
-
/*
|
|
34336
|
+
/* 分段式(有滑块开关):淡底轨道承载一块白色抬起的选中面,选中文字保持默认字色。
|
|
34325
34337
|
未选中标签坐在淡底轨道里,悬停 200 → 按下 300;选中面自己不再叠悬停 / 按下态。
|
|
34326
34338
|
选中面的三件(surface-raised 底、border-default 描边、raised 影)写在下面标签自己的规则里 */
|
|
34327
34339
|
[data-scope='tabs'][data-part='root'][data-variant='segment'] {
|
|
@@ -34386,8 +34398,8 @@
|
|
|
34386
34398
|
translate: 0 var(--xh-_tabs-scroll);
|
|
34387
34399
|
}
|
|
34388
34400
|
|
|
34389
|
-
/* segment 档的标签带是一块淡底面:--xh-bg-subtle 底 + 一圈透明占位边 +
|
|
34390
|
-
它同时是标签的淡底承载面,向内下发 hover 200 → pressed 300
|
|
34401
|
+
/* segment 档的标签带是一块淡底面:--xh-bg-subtle 底 + 一圈透明占位边 + 无影(三选一)。
|
|
34402
|
+
它同时是标签的淡底承载面,向内下发 hover 200 → pressed 300 的承载阶梯;
|
|
34391
34403
|
只写在标签带上不写在 root 上:内容面板里的按钮坐在画布上,不该跟着抬一档 */
|
|
34392
34404
|
[data-scope='tabs'][data-part='root'][data-variant='segment'] [data-scope='tabs'][data-part='list'] {
|
|
34393
34405
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
@@ -34417,9 +34429,9 @@
|
|
|
34417
34429
|
min-inline-size: auto;
|
|
34418
34430
|
}
|
|
34419
34431
|
|
|
34420
|
-
/* line
|
|
34432
|
+
/* line 档(导航当前页):把公开槽映射到 Collection Item 的 nav 语境桥接槽。静息 muted / regular,
|
|
34421
34433
|
悬停 100 + default 字,按下 200 只换面;当前页透明面 + 品牌深字(随语气的 --xh-_tabs-accent-text)+
|
|
34422
|
-
medium,叠悬停 100
|
|
34434
|
+
medium,叠悬停 100。2px 指示线不由家族按条目画:放了 indicator 部件是 list 上的滑动部件,
|
|
34423
34435
|
没放则由下面的静态线规则画在选中标签自己身上。高度由 block-size 定,块向内边距归零 */
|
|
34424
34436
|
[data-scope='tabs'][data-part='root'][data-variant='line'] [data-scope='tabs'][data-part='trigger'] {
|
|
34425
34437
|
--xh-collection-block-padding: var(--xh-space-0);
|
|
@@ -34443,7 +34455,7 @@
|
|
|
34443
34455
|
color: var(--xh-tabs-trigger-fg, var(--xh-fg-muted));
|
|
34444
34456
|
font-weight: var(--xh-tabs-trigger-font-weight, var(--xh-text-label-weight));
|
|
34445
34457
|
cursor: pointer;
|
|
34446
|
-
/*
|
|
34458
|
+
/* 标签是铺开的一段(Tabs trigger 归行级),按下只换面不缩放:transition 里没有 scale */
|
|
34447
34459
|
transition:
|
|
34448
34460
|
color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
34449
34461
|
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
@@ -34472,7 +34484,7 @@
|
|
|
34472
34484
|
}
|
|
34473
34485
|
|
|
34474
34486
|
/* 按下去要有回应:card / segment 档的未选中标签换到按下面(card 200、segment 300),几何不动。
|
|
34475
|
-
选中标签不叠按下面:card 的卡片面与 segment
|
|
34487
|
+
选中标签不叠按下面:card 的卡片面与 segment 的抬起面本身就是选中身份(有滑块开关无叠加态) */
|
|
34476
34488
|
[data-scope='tabs'][data-part='root']:is([data-variant='card'], [data-variant='segment'])
|
|
34477
34489
|
[data-scope='tabs'][data-part='trigger']:not([data-disabled]):not([data-state='active']):is(:active, [data-pressed]) {
|
|
34478
34490
|
background: var(--xh-tabs-trigger-bg-pressed, var(--xh-_tabs-trigger-bg-pressed));
|
|
@@ -34491,7 +34503,7 @@
|
|
|
34491
34503
|
font-weight: var(--xh-tabs-trigger-font-weight-active, var(--xh-font-weight-medium));
|
|
34492
34504
|
}
|
|
34493
34505
|
|
|
34494
|
-
/* segment
|
|
34506
|
+
/* segment 档的选中标签就是那块白色抬起的滑块面(有滑块开关):surface-raised 底 +
|
|
34495
34507
|
border-default 描边 + raised 影三件写在标签自己身上。标签带里放了 indicator 部件时,
|
|
34496
34508
|
这块面搬到部件上跟着滑(见下面的 indicator 规则),标签自己透空、只留字 */
|
|
34497
34509
|
[data-scope='tabs'][data-part='root'][data-variant='segment']
|
|
@@ -34692,7 +34704,7 @@
|
|
|
34692
34704
|
display: none;
|
|
34693
34705
|
}
|
|
34694
34706
|
|
|
34695
|
-
/* segment
|
|
34707
|
+
/* segment 档(有滑块开关):部件就是那块白色抬起的滑块面,四个几何量都取、整块跟着滑——
|
|
34696
34708
|
surface-raised 底 + border-default 描边 + raised 影三件与 Segmented 的滑块同一套;
|
|
34697
34709
|
描边吃进盒里(border-box),面与标签仍是同一块矩形。标签压在它上面,点击一律交给标签。
|
|
34698
34710
|
用连续档而不是进场那条:滑块是被推过去的,起步就该有速度;四个几何量同时走,标签宽不等时才不会先变形再挪位 */
|
|
@@ -34716,7 +34728,7 @@
|
|
|
34716
34728
|
block-size var(--xh-motion-duration-enter) var(--xh-motion-ease-continuous);
|
|
34717
34729
|
}
|
|
34718
34730
|
|
|
34719
|
-
/* line 档没放 indicator
|
|
34731
|
+
/* line 档没放 indicator 部件时,选中标签自画一条静态指示线(导航当前页):
|
|
34720
34732
|
横向缺省也要像纵向示例那样有一条选中线,作者不必为了这条线多放一个部件。
|
|
34721
34733
|
线画在选中标签的 ::after 上,以标签盒为定位参照(基础规则里已是 position: relative),
|
|
34722
34734
|
厚度 / 颜色 / 圆角与 indicator 部件读同一组槽与缺省——作者改一处,部件与静态线一起改。
|
|
@@ -35016,7 +35028,7 @@
|
|
|
35016
35028
|
cursor: pointer;
|
|
35017
35029
|
}
|
|
35018
35030
|
|
|
35019
|
-
/*
|
|
35031
|
+
/* 按下去要有回应:可选的芯片是一颗定尺的离散控件,整枚轻微下压并同时换底
|
|
35020
35032
|
(白底承载 hover 100 → pressed 200),松手即弹回。置灰的不压;
|
|
35021
35033
|
指针 :active 与 Headless 投影的 data-pressed 看见同一副按压面 */
|
|
35022
35034
|
[data-scope='tag-group'][data-part='list']
|
|
@@ -35050,7 +35062,7 @@
|
|
|
35050
35062
|
background: var(--xh-tag-group-item-bg-pressed-solid, var(--xh-_tone-active, var(--xh-bg-brand-active)));
|
|
35051
35063
|
}
|
|
35052
35064
|
|
|
35053
|
-
/* 悬停与键盘锚点共用白底承载的 hover
|
|
35065
|
+
/* 悬停与键盘锚点共用白底承载的 hover 档(hover 100 → pressed 200):
|
|
35054
35066
|
data-highlighted 跟的是连接层记的焦点标签,与选中互相独立。
|
|
35055
35067
|
实心标签不进这里:它的字是实心底上配对的那支前景色,换成灰底就读不出来了;
|
|
35056
35068
|
实心档在这两档里面不换,回执落在按压缩放与聚焦环上 */
|
|
@@ -35073,32 +35085,8 @@
|
|
|
35073
35085
|
}
|
|
35074
35086
|
|
|
35075
35087
|
/* —— 选中 —— */
|
|
35076
|
-
/*
|
|
35077
|
-
|
|
35078
|
-
标了语气的组从语气层取同一条曲线。置灰的标签不进这里:它的边与字都已退成置灰色。
|
|
35079
|
-
实心档另有一条:它的面本身就是那族色,淡底与配对前景压在上面都读不出来 */
|
|
35080
|
-
[data-scope='tag-group'][data-part='list']
|
|
35081
|
-
> [data-scope='tag'][data-part='root'][data-selected]:not([data-disabled]):not([data-variant='solid']) {
|
|
35082
|
-
border-color: var(--xh-tag-group-item-border-selected, transparent);
|
|
35083
|
-
background: var(--xh-tag-group-item-bg-selected, var(--xh-_tone-subtle, var(--xh-bg-brand-subtle)));
|
|
35084
|
-
color: var(--xh-tag-group-item-fg-selected, var(--xh-_tone-fg, var(--xh-fg-on-brand-subtle)));
|
|
35085
|
-
}
|
|
35086
|
-
|
|
35087
|
-
[data-scope='tag-group'][data-part='list']
|
|
35088
|
-
> [data-scope='tag'][data-part='root'][data-selected]:not([data-disabled]):not([data-variant='solid']):is(:hover, [data-highlighted]) {
|
|
35089
|
-
background: var(--xh-tag-group-item-bg-selected-hover, var(--xh-_tone-subtle-hover, var(--xh-bg-brand-subtle-hover)));
|
|
35090
|
-
}
|
|
35091
|
-
|
|
35092
|
-
[data-scope='tag-group'][data-part='list']
|
|
35093
|
-
> [data-scope='tag'][data-part='root'][data-selected][data-selectable]:not([data-disabled]):not([data-variant='solid']):is(:active, [data-pressed]) {
|
|
35094
|
-
background: var(--xh-tag-group-item-bg-selected-pressed, var(--xh-_tone-subtle-active, var(--xh-bg-brand-subtle-active)));
|
|
35095
|
-
}
|
|
35096
|
-
|
|
35097
|
-
/* 实心标签选中:字不换(仍是 tag.css 给的面配对前景色,作者的 --xh-tag-fg 照旧生效),
|
|
35098
|
-
描边取字色,在实心底上描出一圈;环由 tag.css 取 currentColor,跟着字走 */
|
|
35099
|
-
[data-scope='tag-group'][data-part='list'] > [data-scope='tag'][data-part='root'][data-variant='solid'][data-selected]:not([data-disabled]) {
|
|
35100
|
-
border-color: var(--xh-tag-group-item-border-selected, currentColor);
|
|
35101
|
-
}
|
|
35088
|
+
/* 与树选择同一种读法:选中的标签面、字与描边都不换,悬停 / 锚点 / 按下沿用未选中的那条阶梯,
|
|
35089
|
+
只在文字后亮一枚对号(见下面 item-indicator 那几块) */
|
|
35102
35090
|
|
|
35103
35091
|
/* 标签里那一格:文字与摘除钮排在一条线上。它是 tag 根与 tag 的 label / close-trigger 之间的一层,
|
|
35104
35092
|
间距照抄所在标签的那一档,有它与没它标签长得一样 */
|
|
@@ -35114,7 +35102,8 @@
|
|
|
35114
35102
|
display: none;
|
|
35115
35103
|
}
|
|
35116
35104
|
|
|
35117
|
-
/*
|
|
35105
|
+
/* 选中标记:跟在文字后面的一枚对号,与摘除钮的叉同一把随文尺(标签是纯行内文字组件);
|
|
35106
|
+
作者写在格里哪儿都排到文字与作者内容之后、摘除钮之前。
|
|
35118
35107
|
作者塞进来的图标读同一支 --xh-icon-size。连接层没选中时给 hidden,UA 的 display:none 被上面的 display 盖住,
|
|
35119
35108
|
这里压回去 */
|
|
35120
35109
|
[data-scope='tag-group'][data-part='item-indicator'] {
|
|
@@ -35122,17 +35111,34 @@
|
|
|
35122
35111
|
|
|
35123
35112
|
display: inline-flex;
|
|
35124
35113
|
flex: none;
|
|
35114
|
+
order: 1;
|
|
35125
35115
|
align-items: center;
|
|
35126
35116
|
justify-content: center;
|
|
35127
35117
|
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
35128
35118
|
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
35129
|
-
|
|
35119
|
+
/* 与树选择的行尾对号同色:标了语气的组取语气字色,没写语气取品牌前景 */
|
|
35120
|
+
color: var(--xh-tag-group-item-indicator-fg, var(--xh-_tone-fg, var(--xh-fg-brand)));
|
|
35130
35121
|
}
|
|
35131
35122
|
|
|
35132
35123
|
[data-scope='tag-group'][data-part='item-indicator'][hidden] {
|
|
35133
35124
|
display: none;
|
|
35134
35125
|
}
|
|
35135
35126
|
|
|
35127
|
+
/* 实心标签的面本身就是那族色,品牌 / 语气字色压在上面读不出来:对号取面配对的那支前景色 */
|
|
35128
|
+
[data-scope='tag'][data-part='root'][data-variant='solid'] [data-scope='tag-group'][data-part='item-indicator'] {
|
|
35129
|
+
color: var(--xh-tag-group-item-indicator-fg, currentColor);
|
|
35130
|
+
}
|
|
35131
|
+
|
|
35132
|
+
/* 置灰的标签里对号跟着字一起退成置灰色 */
|
|
35133
|
+
[data-scope='tag-group'][data-part='item-indicator'][data-disabled] {
|
|
35134
|
+
color: inherit;
|
|
35135
|
+
}
|
|
35136
|
+
|
|
35137
|
+
/* 摘除钮是操作,排在对号之后、格的最末 */
|
|
35138
|
+
[data-scope='tag-group'][data-part='cell'] > [data-scope='tag'][data-part='close-trigger'] {
|
|
35139
|
+
order: 2;
|
|
35140
|
+
}
|
|
35141
|
+
|
|
35136
35142
|
/* 没写内容就由皮肤画兜底对号;作者往部件里塞了自己的图形,这条即不命中 */
|
|
35137
35143
|
[data-scope='tag-group'][data-part='item-indicator']:empty::before {
|
|
35138
35144
|
content: '';
|
|
@@ -35145,12 +35151,15 @@
|
|
|
35145
35151
|
}
|
|
35146
35152
|
|
|
35147
35153
|
@media (forced-colors: active) {
|
|
35148
|
-
/*
|
|
35154
|
+
/* 选中只由对号表达:遮罩出来的那块底色用系统高亮色画,按下时标签整枚反成 Highlight,对号换成反白 */
|
|
35155
|
+
[data-scope='tag-group'][data-part='item-indicator']:empty::before {
|
|
35156
|
+
background-color: Highlight;
|
|
35157
|
+
}
|
|
35158
|
+
|
|
35149
35159
|
[data-scope='tag-group'][data-part='list']
|
|
35150
|
-
> [data-scope='tag'][data-part='root'][data-
|
|
35151
|
-
|
|
35152
|
-
background:
|
|
35153
|
-
color: HighlightText;
|
|
35160
|
+
> [data-scope='tag'][data-part='root'][data-selectable]:not([data-disabled]):not([data-variant='solid']):is(:active, [data-pressed])
|
|
35161
|
+
[data-scope='tag-group'][data-part='item-indicator']:empty::before {
|
|
35162
|
+
background-color: HighlightText;
|
|
35154
35163
|
}
|
|
35155
35164
|
|
|
35156
35165
|
/* 按下:常态靠底色深一档表出,这一档里底色被统一换成 Canvas;按住那一下用系统高亮反色画回来 */
|
|
@@ -35160,6 +35169,13 @@
|
|
|
35160
35169
|
color: HighlightText;
|
|
35161
35170
|
}
|
|
35162
35171
|
}
|
|
35172
|
+
|
|
35173
|
+
@media print {
|
|
35174
|
+
/* 打印默认丢底色,而对号是遮罩出来的一块底色:标签本就不换面,丢了它选中在纸上就没了踪影 */
|
|
35175
|
+
[data-scope='tag-group'][data-part='item-indicator'] {
|
|
35176
|
+
print-color-adjust: exact;
|
|
35177
|
+
}
|
|
35178
|
+
}
|
|
35163
35179
|
}
|
|
35164
35180
|
|
|
35165
35181
|
/* styles/tags-input.css */
|
|
@@ -36181,8 +36197,6 @@
|
|
|
36181
36197
|
}
|
|
36182
36198
|
|
|
36183
36199
|
[data-scope='time-picker'][data-part='content'][data-state='open'] {
|
|
36184
|
-
/* 只在展开态挂着:随状态属性一起消失,不长期占着合成层 */
|
|
36185
|
-
will-change: opacity, translate;
|
|
36186
36200
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
36187
36201
|
}
|
|
36188
36202
|
|
|
@@ -36834,8 +36848,6 @@
|
|
|
36834
36848
|
}
|
|
36835
36849
|
|
|
36836
36850
|
[data-scope='time-range-picker'][data-part='content'][data-state='open'] {
|
|
36837
|
-
/* 只在展开态挂着:随状态属性一起消失,不长期占着合成层 */
|
|
36838
|
-
will-change: opacity, translate;
|
|
36839
36851
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
36840
36852
|
}
|
|
36841
36853
|
|
|
@@ -37296,9 +37308,9 @@
|
|
|
37296
37308
|
}
|
|
37297
37309
|
|
|
37298
37310
|
/* 中性浮层承载整条反馈,语气只落到状态字形和标题。
|
|
37299
|
-
面走 sheet
|
|
37311
|
+
面走 sheet 三件套(--xh-material-elevated-bg / -border / -shadow,亮暗两档同有 1px 描边)。 */
|
|
37300
37312
|
[data-scope='toast'][data-part='root'] {
|
|
37301
|
-
/* 作者塞进指示符槽的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md
|
|
37313
|
+
/* 作者塞进指示符槽的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md 档 */
|
|
37302
37314
|
--xh-icon-size: var(--xh-toast-icon-size, var(--xh-glyph-size-md));
|
|
37303
37315
|
|
|
37304
37316
|
--xh-toast-y: var(--xh-toast-offset-collapsed, 0px);
|
|
@@ -37545,7 +37557,7 @@
|
|
|
37545
37557
|
}
|
|
37546
37558
|
|
|
37547
37559
|
/* 操作钮是带文案的离散动作钮:盒几何、悬停 / 按下与 0.97 按压、粗指针热区、焦点环、禁用面全由 Action Control
|
|
37548
|
-
的 text outline 档给(连接层投 sm;非 Button
|
|
37560
|
+
的 text outline 档给(连接层投 sm;非 Button 的触发器缺省中性描边、透明底),组件只映射既有使用者槽。
|
|
37549
37561
|
语气只落到状态字形和标题:这颗钮坐在带 data-tone 的条子里,底 / 边 / 字钉在中性语义面上,不随语气;
|
|
37550
37562
|
条子是 sheet 白面承载:hover --xh-bg-subtle(100)→ pressed --xh-bg-subtle-hover(200)。
|
|
37551
37563
|
条子是单行 flex,按钮不参与伸缩:文案长了该换行的是文字 */
|
|
@@ -37697,7 +37709,7 @@
|
|
|
37697
37709
|
|
|
37698
37710
|
/* 未按下的四档形态由家族形态矩阵按 data-xh-action-variant 给出(缺省 subtle 由连接层显式投影;solid 未按下时
|
|
37699
37711
|
投 ghost,只在按下时才是品牌实心);公开槽桥接到矩阵之前:使用者槽 → 形态矩阵 → 家族缺省。
|
|
37700
|
-
按下(on
|
|
37712
|
+
按下(on)是无滑块开关的选中面:品牌淡底 12 → 悬停 20 → 按压 28,前景 fg-on-brand-subtle,
|
|
37701
37713
|
私有槽在下面的 data-state='on' 块里接到桥接槽上。 */
|
|
37702
37714
|
[data-scope='toggle'][data-part='root'] {
|
|
37703
37715
|
--xh-_toggle-bg-on: var(--xh-toggle-bg-on, var(--xh-_tone-subtle, var(--xh-bg-brand-subtle)));
|
|
@@ -37780,7 +37792,7 @@
|
|
|
37780
37792
|
--xh-action-border-disabled: var(--xh-_toggle-border-on);
|
|
37781
37793
|
}
|
|
37782
37794
|
|
|
37783
|
-
/* 使用者的 --xh-toggle-shadow
|
|
37795
|
+
/* 使用者的 --xh-toggle-shadow 只落在按下面上:矩阵各态无影,淡底与阴影互斥 */
|
|
37784
37796
|
[data-scope='toggle'][data-part='root'][data-state='on'] {
|
|
37785
37797
|
--xh-action-shadow-rest: var(--xh-toggle-shadow, none);
|
|
37786
37798
|
--xh-action-shadow-hover: var(--xh-toggle-shadow, none);
|
|
@@ -37853,8 +37865,8 @@
|
|
|
37853
37865
|
/* 形态的落点:没写 data-variant 时这十支保持缺省档的取值,段的规则读的是
|
|
37854
37866
|
「使用者令牌 → 这十支 → 语义令牌」三级,使用者令牌永远排在形态之前。
|
|
37855
37867
|
未选中那五支管段的壳,选中那五支管当前值那一段。
|
|
37856
|
-
缺省档(subtle)的段坐在自己的淡底面上,悬停 200 → 按下 300
|
|
37857
|
-
|
|
37868
|
+
缺省档(subtle)的段坐在自己的淡底面上,悬停 200 → 按下 300(淡底承载);
|
|
37869
|
+
选中段是无滑块开关:品牌淡底 + 淡底前景,悬停 20% → 按下 28% */
|
|
37858
37870
|
--xh-_toggle-group-item-bg: var(--xh-bg-subtle);
|
|
37859
37871
|
--xh-_toggle-group-item-bg-hover: var(--xh-bg-subtle-hover);
|
|
37860
37872
|
--xh-_toggle-group-item-bg-active: var(--xh-bg-subtle-active);
|
|
@@ -37919,7 +37931,7 @@
|
|
|
37919
37931
|
--xh-_toggle-group-item-highlight-on: none;
|
|
37920
37932
|
}
|
|
37921
37933
|
|
|
37922
|
-
/* outline 与 ghost 的段坐在画布上:悬停 100 → 按下 200
|
|
37934
|
+
/* outline 与 ghost 的段坐在画布上:悬停 100 → 按下 200(白底承载) */
|
|
37923
37935
|
[data-scope='toggle-group'][data-part='root'][data-variant='outline'] {
|
|
37924
37936
|
--xh-_toggle-group-item-bg: transparent;
|
|
37925
37937
|
--xh-_toggle-group-item-bg-hover: var(--xh-_tone-subtle, var(--xh-bg-subtle));
|
|
@@ -38081,7 +38093,7 @@
|
|
|
38081
38093
|
|
|
38082
38094
|
/* 选中态:单选是 role=radio + aria-checked,多选是原生按钮 + aria-pressed,
|
|
38083
38095
|
两套 ARIA 各出一半,样式一条都对不上——只有 data-state 是两种模式共同的出口。
|
|
38084
|
-
|
|
38096
|
+
无滑块开关:品牌淡底 + 淡底前景,悬停 20% → 按下 28%,三态都经桥接槽交给家族画;
|
|
38085
38097
|
用哪族颜色由 data-tone 决定:语气槽沿继承流下来,root 自己写了 tone 算、
|
|
38086
38098
|
整组落在语气容器里也算;没有语气就退回品牌配色,与不接语气时逐值相同。
|
|
38087
38099
|
使用者令牌排在语气之前:写了组件槽就以它为准。
|
|
@@ -38258,7 +38270,7 @@
|
|
|
38258
38270
|
--xh-tool-call-skin: 1;
|
|
38259
38271
|
}
|
|
38260
38272
|
|
|
38261
|
-
/* 一张静态内容面:--xh-border-default 描边 + surface 底 +
|
|
38273
|
+
/* 一张静态内容面:--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担);
|
|
38262
38274
|
审批位与详情区的内部分隔线走另一支 --xh-tool-call-divider(subtle)。
|
|
38263
38275
|
卡片建出来时淡入并向上收一段,一屏若干张的错峰交给外层容器排 */
|
|
38264
38276
|
[data-scope='tool-call'][data-part='root'] {
|
|
@@ -38271,7 +38283,7 @@
|
|
|
38271
38283
|
/* 影另落一份进私有槽给语气档:它要把影与左侧色条叠成一条 box-shadow,缺省无影写成零影占位 */
|
|
38272
38284
|
--xh-_tool-call-shadow: var(--xh-tool-call-shadow, 0 0 0 transparent);
|
|
38273
38285
|
|
|
38274
|
-
/* 作者塞进指示符里的图标与皮肤画的兜底字形同一把尺:md
|
|
38286
|
+
/* 作者塞进指示符里的图标与皮肤画的兜底字形同一把尺:md 档,开关上另按家族档取值 */
|
|
38275
38287
|
--xh-icon-size: var(--xh-tool-call-icon-size, var(--xh-glyph-size-md));
|
|
38276
38288
|
|
|
38277
38289
|
display: block;
|
|
@@ -38291,7 +38303,7 @@
|
|
|
38291
38303
|
/* —— 形态 —— */
|
|
38292
38304
|
/* 缺省档即 outline,写在上面那条基础规则里 */
|
|
38293
38305
|
/* 底色分区:描边让位给底色,嵌在别人的面里时不再多一圈线;
|
|
38294
|
-
淡底承载面向开关下发 hover 200 → pressed 300
|
|
38306
|
+
淡底承载面向开关下发 hover 200 → pressed 300 */
|
|
38295
38307
|
[data-scope='tool-call'][data-part='root'][data-variant='subtle'] {
|
|
38296
38308
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
38297
38309
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -38326,7 +38338,7 @@
|
|
|
38326
38338
|
}
|
|
38327
38339
|
|
|
38328
38340
|
/* 开关铺满一行,盒型、悬停 / 按下 / 禁用面由 Action Control 的 disclosure-trigger 档给(ghost 形态:
|
|
38329
|
-
白底承载 hover 100 → pressed 200
|
|
38341
|
+
白底承载 hover 100 → pressed 200,按下只换面不缩放);这里只把使用者槽映射到桥接槽:
|
|
38330
38342
|
圆角归零贴住卡边,内衬与字号沿用卡片的档位(不取 profile 的 md 档内衬,几何不变),
|
|
38331
38343
|
字形按开关自己的档位取 --xh-_action-profile-glyph-size */
|
|
38332
38344
|
[data-scope='tool-call'][data-part='trigger'] {
|
|
@@ -38551,7 +38563,7 @@
|
|
|
38551
38563
|
animation: xh-disclosure-expand var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
38552
38564
|
}
|
|
38553
38565
|
|
|
38554
|
-
/* 退场走 exit
|
|
38566
|
+
/* 退场走 exit 档曲线 */
|
|
38555
38567
|
[data-scope='tool-call'][data-part='content'][data-state='closed'] {
|
|
38556
38568
|
animation: xh-disclosure-collapse var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
38557
38569
|
}
|
|
@@ -38728,7 +38740,7 @@
|
|
|
38728
38740
|
}
|
|
38729
38741
|
|
|
38730
38742
|
/* 淡底档:带内距、换成 subtle 底,描边让位给底色但留住 1px 边位(与 outline 几何一致),无影;
|
|
38731
|
-
淡底承载面向条目下发 hover 200 → pressed 300
|
|
38743
|
+
淡底承载面向条目下发 hover 200 → pressed 300 */
|
|
38732
38744
|
[data-scope='toolbar'][data-part='root'][data-variant='subtle'] {
|
|
38733
38745
|
--xh-_toolbar-root-p: var(--xh-_toolbar-p);
|
|
38734
38746
|
--xh-_toolbar-root-border-width: var(--xh-stroke-thin);
|
|
@@ -38737,7 +38749,7 @@
|
|
|
38737
38749
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
38738
38750
|
}
|
|
38739
38751
|
|
|
38740
|
-
/* 附着式工具面:一张静态内容面,--xh-border-default 描边 + surface 底 +
|
|
38752
|
+
/* 附着式工具面:一张静态内容面,--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担)。 */
|
|
38741
38753
|
[data-scope='toolbar'][data-part='root'][data-variant='outline'] {
|
|
38742
38754
|
--xh-_toolbar-root-p: var(--xh-_toolbar-p);
|
|
38743
38755
|
--xh-_toolbar-root-border-width: var(--xh-stroke-thin);
|
|
@@ -38804,7 +38816,7 @@
|
|
|
38804
38816
|
|
|
38805
38817
|
/* 默认条目是一枚无描边工具按钮:盒型、三档几何、悬停 / 按下 / 禁用面与按压缩放由 Action Control 的
|
|
38806
38818
|
text 档给(ghost 形态:ghost 根按画布承载 hover 100 → pressed 200,subtle 根与分组由 host 槽下发
|
|
38807
|
-
200 → 300
|
|
38819
|
+
200 → 300);这里只把使用者槽映射到桥接槽(-gap / -h / -px / -radius / -bg / -bg-hover /
|
|
38808
38820
|
-bg-active / -bg-disabled / -fg / -font-size 保留为第一参数)。作者仍可用类名或内联样式完整覆盖。 */
|
|
38809
38821
|
[data-scope='toolbar'][data-part='item'] {
|
|
38810
38822
|
--xh-action-gap: var(--xh-toolbar-item-gap, var(--xh-control-gap-sm));
|
|
@@ -38824,7 +38836,7 @@
|
|
|
38824
38836
|
touch-action: manipulation;
|
|
38825
38837
|
}
|
|
38826
38838
|
|
|
38827
|
-
/*
|
|
38839
|
+
/* 无滑块开关的按下态:品牌淡底 + 淡底前景,hover / 按下沿 12% → 20% → 28% 三档走;
|
|
38828
38840
|
三态都经桥接槽交给家族画,禁用面仍由家族按 data-disabled 给 */
|
|
38829
38841
|
[data-scope='toolbar'][data-part='item'][aria-pressed='true'] {
|
|
38830
38842
|
--xh-action-bg-rest: var(--xh-toolbar-item-bg-pressed, var(--xh-bg-brand-subtle));
|
|
@@ -38997,10 +39009,10 @@
|
|
|
38997
39009
|
--xh-_tooltip-py: var(--xh-space-1);
|
|
38998
39010
|
--xh-_tooltip-px: var(--xh-space-2);
|
|
38999
39011
|
--xh-_tooltip-font-size: var(--xh-control-caption-md);
|
|
39000
|
-
/* Tooltip
|
|
39012
|
+
/* Tooltip 保留反白身份(登记的反白 compact frosted):短提示要与可交互的普通主题浮层一眼分开。
|
|
39001
39013
|
94% 是六种 tone 在纯黑/纯白最坏底色上仍托住 4.5:1 正文的首个安全档。
|
|
39002
39014
|
边不取 --xh-material-frosted-border:那是深色 14% 的透明边,压在反白深底上看不见,
|
|
39003
|
-
|
|
39015
|
+
浮层要的 1px 可见边界由 on 色 20% 拼色承担;浮层不用玻璃高光,顶光缺省不画 */
|
|
39004
39016
|
--xh-_tooltip-solid: var(--xh-_tone, var(--xh-fg-default));
|
|
39005
39017
|
--xh-_tooltip-on: var(--xh-_tone-on, var(--xh-bg-surface));
|
|
39006
39018
|
--xh-_tooltip-border: color-mix(in oklab, var(--xh-_tooltip-on) 20%, transparent);
|
|
@@ -39028,7 +39040,7 @@
|
|
|
39028
39040
|
text-wrap: pretty;
|
|
39029
39041
|
--xh-_tooltip-elevation-shadow: var(--xh-tooltip-shadow, var(--xh-material-frosted-compact-shadow));
|
|
39030
39042
|
|
|
39031
|
-
/*
|
|
39043
|
+
/* 顶光槽缺省透明(不用顶部高光),使用者要加自行灌色 */
|
|
39032
39044
|
box-shadow:
|
|
39033
39045
|
inset 0 var(--xh-stroke-thin) 0 var(--xh-tooltip-highlight, transparent),
|
|
39034
39046
|
var(--xh-_tooltip-elevation-shadow);
|
|
@@ -39048,11 +39060,9 @@
|
|
|
39048
39060
|
pointer-events: none;
|
|
39049
39061
|
}
|
|
39050
39062
|
|
|
39051
|
-
/* 入场走 enter
|
|
39063
|
+
/* 入场走 enter 档(锚定列表族的 tooltip 入场 --xh-motion-duration-enter),退场仍是 exit */
|
|
39052
39064
|
[data-scope='tooltip'][data-part='content'][data-state='open'] {
|
|
39053
39065
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
39054
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
39055
|
-
will-change: opacity, translate;
|
|
39056
39066
|
}
|
|
39057
39067
|
|
|
39058
39068
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -39315,7 +39325,7 @@
|
|
|
39315
39325
|
padding-inline: var(--xh-tour-px, var(--xh-surface-px-md));
|
|
39316
39326
|
/* 引导步骤的正文长度由作者定,矮视口下不限高气泡会整块伸出视口 */
|
|
39317
39327
|
max-block-size: min(var(--xh-tour-max-h, var(--xh-overlay-max-h)), var(--xh-_tour-available-h));
|
|
39318
|
-
/* M4 sheet
|
|
39328
|
+
/* M4 sheet 三件套,与 dialog 同源:1px 描边是它的边界,不透明底,影只是加成 */
|
|
39319
39329
|
border: var(--xh-stroke-thin) solid var(--xh-tour-border, var(--xh-material-elevated-border));
|
|
39320
39330
|
border-radius: var(--xh-tour-radius, var(--xh-shape-overlay));
|
|
39321
39331
|
background: var(--xh-tour-bg, var(--xh-material-elevated-bg));
|
|
@@ -39335,8 +39345,6 @@
|
|
|
39335
39345
|
|
|
39336
39346
|
[data-scope='tour'][data-part='content'][data-state='open'] {
|
|
39337
39347
|
animation: xh-overlay-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
39338
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
39339
|
-
will-change: opacity, scale, translate;
|
|
39340
39348
|
}
|
|
39341
39349
|
|
|
39342
39350
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -39359,7 +39367,7 @@
|
|
|
39359
39367
|
padding-inline-end: calc(var(--xh-tour-close-size, var(--xh-control-h-sm)) + var(--xh-surface-action-inset));
|
|
39360
39368
|
}
|
|
39361
39369
|
|
|
39362
|
-
/*
|
|
39370
|
+
/* 说明文字走说明档:13px + fg-muted */
|
|
39363
39371
|
[data-scope='tour'][data-part='description'] {
|
|
39364
39372
|
margin: 0;
|
|
39365
39373
|
font-size: var(--xh-text-secondary-size);
|
|
@@ -39384,7 +39392,7 @@
|
|
|
39384
39392
|
display: none;
|
|
39385
39393
|
}
|
|
39386
39394
|
|
|
39387
|
-
/* 圆点:8px 正圆取 circle
|
|
39395
|
+
/* 圆点:8px 正圆取 circle(分页点统一款),未走到的一档取中性描边色。
|
|
39388
39396
|
宽度与底色都随状态换,换步那一下能看出进度在推进 */
|
|
39389
39397
|
[data-scope='tour'][data-part='progress-dot'] {
|
|
39390
39398
|
inline-size: var(--xh-space-2);
|
|
@@ -39410,7 +39418,7 @@
|
|
|
39410
39418
|
|
|
39411
39419
|
/*
|
|
39412
39420
|
* —— 末行三颗按钮 ——
|
|
39413
|
-
* 上一步 / 下一步 /
|
|
39421
|
+
* 上一步 / 下一步 / 跳过都是气泡末行的文字按钮:盒型、sm 档几何、四态面、0.97 按压并换底、粗指针命中区与
|
|
39414
39422
|
* 强制色由家族配方按连接层投影的 data-xh-action-variant / -size 给出。这里只把公开槽桥接到矩阵之前
|
|
39415
39423
|
* (使用者槽 → 形态矩阵 → 家族缺省)与几何映射;内衬与圆角槽三颗共用。
|
|
39416
39424
|
*/
|
|
@@ -39429,7 +39437,7 @@
|
|
|
39429
39437
|
display: none;
|
|
39430
39438
|
}
|
|
39431
39439
|
|
|
39432
|
-
/* 下一步是整条引导的主线动作,显式 solid
|
|
39440
|
+
/* 下一步是整条引导的主线动作,显式 solid:底、字与影三组使用者槽桥到配方 solid 列之前 */
|
|
39433
39441
|
[data-scope='tour'][data-part='next-trigger'] {
|
|
39434
39442
|
--xh-action-bg-rest: var(--xh-tour-next-bg, var(--xh-_action-variant-bg-rest));
|
|
39435
39443
|
--xh-action-bg-hover: var(--xh-tour-next-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
@@ -39448,7 +39456,7 @@
|
|
|
39448
39456
|
}
|
|
39449
39457
|
|
|
39450
39458
|
/*
|
|
39451
|
-
*
|
|
39459
|
+
* 关闭钮是气泡角落的单图标钮:正方盒、sm 档几何、ghost 四态面、0.97 按压并换底与粗指针命中区
|
|
39452
39460
|
* 由家族配方给出——白面上走画布承载阶梯悬停 --xh-bg-subtle(100)→ 按下 --xh-bg-subtle-hover(200),
|
|
39453
39461
|
* 焦点面透明吃库环。这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与摆放;
|
|
39454
39462
|
* 静息前景取 muted 字色,悬停 / 按下 / 聚焦回到 fg-default。
|
|
@@ -39507,7 +39515,7 @@
|
|
|
39507
39515
|
|
|
39508
39516
|
@layer xihan.components {
|
|
39509
39517
|
/* 气泡限高之后只让正文让步:标题与上下步按钮滚出视线就点不到了。
|
|
39510
|
-
|
|
39518
|
+
模态气泡里的原生细条滚动面:细条由 reset 层统一给,滚到头不把页面一起带走;内容高度不动态变化,不写 gutter */
|
|
39511
39519
|
[data-scope='tour'][data-part='description'] {
|
|
39512
39520
|
flex: 1 1 auto;
|
|
39513
39521
|
min-block-size: 0;
|
|
@@ -39605,9 +39613,9 @@
|
|
|
39605
39613
|
所以只能按位置显式安放,不能靠自动流——自动流会把"往回搬"甩到目标面板的位置上 */
|
|
39606
39614
|
[data-scope='transfer'][data-part='root'] {
|
|
39607
39615
|
/* 条目外的字形(空态占位里作者塞的图标)按档取尺,缺省 md;条目内的字形由家族随 data-xh-collection-size
|
|
39608
|
-
下发,搬运钮内的按 Action Control icon
|
|
39616
|
+
下发,搬运钮内的按 Action Control icon 档取,勾选格里的勾按边长比例取 */
|
|
39609
39617
|
--xh-icon-size: var(--xh-transfer-icon-size, var(--xh-glyph-size-md));
|
|
39610
|
-
/*
|
|
39618
|
+
/* 两侧定高小列表的自绘条挂在根上:根是条子的定位盒(面板不定位),轨道底色关掉才不会在列表边缘糊出一条灰带 */
|
|
39611
39619
|
--xh-scrollbar-track-bg: transparent;
|
|
39612
39620
|
|
|
39613
39621
|
/* 尺寸档只换这五个私有槽,面板头、搜索框、条目与勾选格都从 root 继承它们,
|
|
@@ -39723,7 +39731,7 @@
|
|
|
39723
39731
|
min-inline-size: 0;
|
|
39724
39732
|
overflow: hidden;
|
|
39725
39733
|
color: var(--xh-transfer-panel-title-fg, var(--xh-fg-default));
|
|
39726
|
-
/* 面板标头是 Surface 内的标题:14 / 600
|
|
39734
|
+
/* 面板标头是 Surface 内的标题:14 / 600 */
|
|
39727
39735
|
font-size: var(--xh-transfer-panel-title-font-size, var(--xh-text-label-size));
|
|
39728
39736
|
font-weight: var(--xh-transfer-panel-title-font-weight, var(--xh-font-weight-semibold));
|
|
39729
39737
|
line-height: var(--xh-leading-none);
|
|
@@ -39868,7 +39876,7 @@
|
|
|
39868
39876
|
color: var(--xh-fg-disabled);
|
|
39869
39877
|
}
|
|
39870
39878
|
|
|
39871
|
-
/* 条目走 Collection Item 的 page
|
|
39879
|
+
/* 条目走 Collection Item 的 page 语境(页内持久集合):悬停 / 高亮 / 按下面(白底承载 hover 100 →
|
|
39872
39880
|
pressed 200)与勾选行的选中面(品牌淡底 + 淡底前景,selected+hover 20% / +pressed 28%)都由家族按
|
|
39873
39881
|
aria-selected / aria-disabled 给出,标记由行首的勾选方框承担;禁用面(字色降级、not-allowed、不换面)
|
|
39874
39882
|
也归家族。这里只把公开槽映射到桥接槽。
|
|
@@ -40031,7 +40039,7 @@
|
|
|
40031
40039
|
}
|
|
40032
40040
|
|
|
40033
40041
|
/* 全选格是原生按钮(三态经 aria-checked 上报,激活由平台负责),禁用同时打原生 disabled 与 data-disabled。
|
|
40034
|
-
它是「方框 +
|
|
40042
|
+
它是「方框 + 文案」的整行命中区:接 Action Control text 档、ghost 形态,悬停 / 按下 / 禁用面与过渡由家族给
|
|
40035
40043
|
(白底承载 hover 100 → pressed 200),按下只换面不缩放(--xh-action-scale-pressed: none),勾选回执落在方框上;
|
|
40036
40044
|
盒随内容收宽、高度取 xs 档的 24px 命中地板(方框 16px 居中其间),text 档的内距与最小宽度归零。
|
|
40037
40045
|
position 是给叠在方框上的那颗字形 ::after 当定位基准 */
|
|
@@ -40069,7 +40077,7 @@
|
|
|
40069
40077
|
|
|
40070
40078
|
/* 两颗搬运钮是只有字形的离散动作钮:接 Action Control 的 icon 档、outline 形态(中性描边、透明底,
|
|
40071
40079
|
白底承载 hover 100 → pressed 200,按下 0.97 并同时换底),盒、焦点环、粗指针热区与禁用面由家族给;
|
|
40072
|
-
此前的 raised
|
|
40080
|
+
此前的 raised 悬停抬升退役(边界只由描边承担)。这里只把使用者槽映射到桥接槽;
|
|
40073
40081
|
钮是正方盒,按 sm 档取一个控件高 */
|
|
40074
40082
|
[data-scope='transfer'][data-part='to-target-trigger'],
|
|
40075
40083
|
[data-scope='transfer'][data-part='to-source-trigger'] {
|
|
@@ -40208,8 +40216,8 @@
|
|
|
40208
40216
|
|
|
40209
40217
|
[data-scope='tree'][data-part='root'] {
|
|
40210
40218
|
/* 行外的字形(空态 / 在途占位里作者塞的图标)按档取尺,树没有 size 轴、固定 md;
|
|
40211
|
-
行内的由家族随 data-xh-collection-size
|
|
40212
|
-
|
|
40219
|
+
行内的由家族随 data-xh-collection-size 下发。这支只管作者放进行里的图标:
|
|
40220
|
+
树自绘的状态字形(展开方向、行尾对号与半选杠)是指示符,各部件在自己身上
|
|
40213
40221
|
把 --xh-icon-size 改接到 --xh-control-indicator-* 一族的盒尺 */
|
|
40214
40222
|
--xh-icon-size: var(--xh-tree-icon-size, var(--xh-glyph-size-md));
|
|
40215
40223
|
|
|
@@ -40339,10 +40347,10 @@
|
|
|
40339
40347
|
}
|
|
40340
40348
|
|
|
40341
40349
|
/* 行:叶子与分支共用同一套盒子,两种行在视觉上必须齐平。
|
|
40342
|
-
行走 Collection Item 的
|
|
40343
|
-
|
|
40344
|
-
aria-selected / data-selected 与 aria-disabled / data-disabled
|
|
40345
|
-
布局保持 flex
|
|
40350
|
+
行走 Collection Item 的 overlay 语境,与树选择同一种选中读法:悬停 / 高亮 / 按下面(白底承载
|
|
40351
|
+
hover 100 → pressed 200)由家族给,选中不换面、不换字色,只在行尾亮对号,选中叠悬停 / 按下沿用同一条阶梯;
|
|
40352
|
+
家族按 aria-selected / data-selected 与 aria-disabled / data-disabled 给出,这里只把公开槽映射到桥接槽。
|
|
40353
|
+
布局保持 flex 而不用家族网格:一行里可以并排多个前导部件(箭头、拖拽把手)与作者自己的图标、
|
|
40346
40354
|
按钮,单列的 prefix 放不下;间距统一由行的 gap 给,家族按槽下发的外边距(--xh-collection-gap)归零 */
|
|
40347
40355
|
[data-scope='tree'][data-part='item'],
|
|
40348
40356
|
[data-scope='tree'][data-part='branch-control'] {
|
|
@@ -40353,18 +40361,18 @@
|
|
|
40353
40361
|
--xh-collection-radius: var(--xh-tree-row-radius, var(--xh-shape-control));
|
|
40354
40362
|
/* 作者的图标尺槽经桥接槽下发到行,家族缺省按 md 档 */
|
|
40355
40363
|
--xh-collection-glyph-size: var(--xh-tree-icon-size, var(--xh-_collection-glyph-size));
|
|
40356
|
-
/* 箭头 /
|
|
40364
|
+
/* 箭头 / 对号盒与叶子的占位同一把尺:指示符档,与同一行里的拖拽把手同走
|
|
40357
40365
|
--xh-control-indicator-size(comfortable 16 / compact 14)。不读家族按档下发的 --xh-icon-size——
|
|
40358
|
-
那支只管作者放进行里的图标,按图标档取的 20px 会比 16px
|
|
40366
|
+
那支只管作者放进行里的图标,按图标档取的 20px 会比 16px 的指示符盒大一圈 */
|
|
40359
40367
|
--xh-_tree-indicator-size: var(--xh-tree-indicator-size, var(--xh-control-indicator-size));
|
|
40360
40368
|
--xh-collection-fg-rest: var(--xh-tree-row-fg, var(--xh-fg-default));
|
|
40361
40369
|
--xh-collection-fg-hover: var(--xh-tree-row-fg, var(--xh-fg-default));
|
|
40362
40370
|
--xh-collection-fg-keyboard-highlight: var(--xh-tree-row-fg, var(--xh-fg-default));
|
|
40363
40371
|
--xh-collection-fg-pressed: var(--xh-tree-row-fg, var(--xh-fg-default));
|
|
40364
|
-
--xh-collection-fg-selected: var(--xh-tree-row-fg-selected, var(--xh-fg-
|
|
40365
|
-
--xh-collection-fg-selected-hover: var(--xh-tree-row-fg-selected, var(--xh-fg-
|
|
40366
|
-
--xh-collection-fg-selected-highlight: var(--xh-tree-row-fg-selected, var(--xh-fg-
|
|
40367
|
-
--xh-collection-fg-selected-pressed: var(--xh-tree-row-fg-selected, var(--xh-fg-
|
|
40372
|
+
--xh-collection-fg-selected: var(--xh-tree-row-fg-selected, var(--xh-tree-row-fg, var(--xh-fg-default)));
|
|
40373
|
+
--xh-collection-fg-selected-hover: var(--xh-tree-row-fg-selected, var(--xh-tree-row-fg, var(--xh-fg-default)));
|
|
40374
|
+
--xh-collection-fg-selected-highlight: var(--xh-tree-row-fg-selected, var(--xh-tree-row-fg, var(--xh-fg-default)));
|
|
40375
|
+
--xh-collection-fg-selected-pressed: var(--xh-tree-row-fg-selected, var(--xh-tree-row-fg, var(--xh-fg-default)));
|
|
40368
40376
|
--xh-collection-font-weight-selected: var(--xh-tree-row-selected-font-weight, var(--xh-font-weight-regular));
|
|
40369
40377
|
--xh-collection-font-weight-selected-hover: var(--xh-tree-row-selected-font-weight, var(--xh-font-weight-regular));
|
|
40370
40378
|
--xh-collection-font-weight-selected-highlight: var(--xh-tree-row-selected-font-weight, var(--xh-font-weight-regular));
|
|
@@ -40372,11 +40380,13 @@
|
|
|
40372
40380
|
--xh-collection-bg-hover: var(--xh-tree-row-bg-hover, var(--xh-bg-subtle));
|
|
40373
40381
|
--xh-collection-bg-keyboard-highlight: var(--xh-tree-row-bg-hover, var(--xh-bg-subtle));
|
|
40374
40382
|
--xh-collection-bg-pressed: var(--xh-tree-row-bg-pressed, var(--xh-bg-subtle-hover));
|
|
40375
|
-
--xh-collection-bg-selected: var(--xh-tree-row-bg-
|
|
40383
|
+
--xh-collection-bg-selected-hover: var(--xh-tree-row-bg-hover, var(--xh-bg-subtle));
|
|
40384
|
+
--xh-collection-bg-selected-highlight: var(--xh-tree-row-bg-hover, var(--xh-bg-subtle));
|
|
40385
|
+
--xh-collection-bg-selected-pressed: var(--xh-tree-row-bg-pressed, var(--xh-bg-subtle-hover));
|
|
40376
40386
|
/* data-highlighted 跟的是连接层记的焦点行(指针点选也会落焦):只换面,焦点环在 :focus-visible 下再接回 */
|
|
40377
40387
|
--xh-collection-outline-keyboard-highlight: transparent;
|
|
40378
40388
|
--xh-collection-outline-selected-highlight: transparent;
|
|
40379
|
-
/*
|
|
40389
|
+
/* 行尾对号:槽按本部件取名(item-check-fg),标记部件的旧槽留在兜底位 */
|
|
40380
40390
|
--xh-collection-indicator-fg-rest: var(--xh-tree-item-check-fg, var(--xh-tree-item-indicator-fg, var(--xh-fg-brand)));
|
|
40381
40391
|
--xh-collection-indicator-fg-checked: var(--xh-tree-item-check-fg, var(--xh-tree-item-indicator-fg, var(--xh-fg-brand)));
|
|
40382
40392
|
--xh-collection-indicator-fg-selected: var(--xh-tree-item-check-fg, var(--xh-tree-item-indicator-fg, var(--xh-fg-brand)));
|
|
@@ -40399,12 +40409,9 @@
|
|
|
40399
40409
|
box-shadow var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
40400
40410
|
}
|
|
40401
40411
|
|
|
40402
|
-
/*
|
|
40403
|
-
|
|
40404
|
-
|
|
40405
|
-
[data-orientation='vertical'] > [data-scope='tree'][data-part='item']:not(
|
|
40406
|
-
:has(> [data-scope='tree'][data-part='item-indicator'])
|
|
40407
|
-
) {
|
|
40412
|
+
/* 分支行的首格是展开箭头,叶子行没有这一格,由行盒自己补出来(对号在行尾,不再替叶子顶这一格),
|
|
40413
|
+
否则叶子会比同级分支往行首缩一格,层级关系读不出来。占位宽度与箭头盒同一把尺 */
|
|
40414
|
+
[data-orientation='vertical'] > [data-scope='tree'][data-part='item'] {
|
|
40408
40415
|
padding-inline-start: calc(
|
|
40409
40416
|
var(--xh-tree-row-px, var(--xh-control-px-md)) +
|
|
40410
40417
|
var(--xh-_tree-indicator-size) +
|
|
@@ -40435,76 +40442,6 @@
|
|
|
40435
40442
|
--xh-collection-cursor-rest: not-allowed;
|
|
40436
40443
|
}
|
|
40437
40444
|
|
|
40438
|
-
/* 勾选把手:勾选态只画在它身上,不碰行底色——底色那条通道归高亮 */
|
|
40439
|
-
[data-scope='tree'][data-part='item-checkbox'],
|
|
40440
|
-
[data-scope='tree'][data-part='branch-checkbox'] {
|
|
40441
|
-
/* 方框里的勾按边长的比例取尺(与 Checkbox 同一比例),不吃家族按档下发的行内字形尺 */
|
|
40442
|
-
--xh-icon-size: calc(var(--xh-tree-checkbox-size, var(--xh-control-indicator-size)) * 0.75);
|
|
40443
|
-
|
|
40444
|
-
display: inline-grid;
|
|
40445
|
-
place-items: center;
|
|
40446
|
-
flex: none;
|
|
40447
|
-
inline-size: var(--xh-tree-checkbox-size, var(--xh-control-indicator-size));
|
|
40448
|
-
block-size: var(--xh-tree-checkbox-size, var(--xh-control-indicator-size));
|
|
40449
|
-
border: var(--xh-stroke-thin) solid var(--xh-tree-checkbox-border, var(--xh-border-control));
|
|
40450
|
-
border-radius: var(--xh-tree-checkbox-radius, var(--xh-shape-inset));
|
|
40451
|
-
background: var(--xh-tree-checkbox-bg, transparent);
|
|
40452
|
-
color: var(--xh-tree-checkbox-fg, var(--xh-fg-on-brand));
|
|
40453
|
-
}
|
|
40454
|
-
|
|
40455
|
-
[data-scope='tree'][data-part='item-checkbox'][data-selected],
|
|
40456
|
-
[data-scope='tree'][data-part='branch-checkbox'][data-selected] {
|
|
40457
|
-
border-color: var(--xh-tree-checkbox-border-checked, var(--xh-bg-brand));
|
|
40458
|
-
background: var(--xh-tree-checkbox-bg-checked, var(--xh-bg-brand));
|
|
40459
|
-
}
|
|
40460
|
-
|
|
40461
|
-
/* 面是实心的,环色与面同族,画在面里就看不出来;环改取面自己的前景色——
|
|
40462
|
-
那一族色本来就要在这块面上把字读清楚,与面的对比是按可读性定的。
|
|
40463
|
-
勾满与半选铺的是同一块实心底,两态一起收 */
|
|
40464
|
-
[data-scope='tree'][data-part='item-checkbox'][data-selected]:focus-visible,
|
|
40465
|
-
[data-scope='tree'][data-part='item-checkbox'][data-indeterminate]:focus-visible,
|
|
40466
|
-
[data-scope='tree'][data-part='branch-checkbox'][data-selected]:focus-visible,
|
|
40467
|
-
[data-scope='tree'][data-part='branch-checkbox'][data-indeterminate]:focus-visible {
|
|
40468
|
-
--xh-_ring-color: currentColor;
|
|
40469
|
-
}
|
|
40470
|
-
|
|
40471
|
-
/* 半选:级联勾选下「子树勾了一部分」的第三态,此前发了 data-indeterminate 却没人画 */
|
|
40472
|
-
[data-scope='tree'][data-part='item-checkbox'][data-indeterminate]:not([data-selected]),
|
|
40473
|
-
[data-scope='tree'][data-part='branch-checkbox'][data-indeterminate]:not([data-selected]) {
|
|
40474
|
-
border-color: var(--xh-tree-checkbox-border-checked, var(--xh-bg-brand));
|
|
40475
|
-
background: var(--xh-tree-checkbox-bg-checked, var(--xh-bg-brand));
|
|
40476
|
-
}
|
|
40477
|
-
|
|
40478
|
-
/* 没写内容就由皮肤画;作者往把手里塞了自己的图形,这条规则即不命中 */
|
|
40479
|
-
[data-scope='tree'][data-part='item-checkbox'][data-selected]:empty::before,
|
|
40480
|
-
[data-scope='tree'][data-part='branch-checkbox'][data-selected]:empty::before {
|
|
40481
|
-
content: '';
|
|
40482
|
-
display: inline-block;
|
|
40483
|
-
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
40484
|
-
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
40485
|
-
vertical-align: var(--xh-glyph-baseline-shift);
|
|
40486
|
-
background-color: currentColor;
|
|
40487
|
-
-webkit-mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
40488
|
-
mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
40489
|
-
}
|
|
40490
|
-
|
|
40491
|
-
[data-scope='tree'][data-part='item-checkbox'][data-indeterminate]:not([data-selected]):empty::before,
|
|
40492
|
-
[data-scope='tree'][data-part='branch-checkbox'][data-indeterminate]:not([data-selected]):empty::before {
|
|
40493
|
-
content: '';
|
|
40494
|
-
display: inline-block;
|
|
40495
|
-
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
40496
|
-
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
40497
|
-
vertical-align: var(--xh-glyph-baseline-shift);
|
|
40498
|
-
background-color: currentColor;
|
|
40499
|
-
-webkit-mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
40500
|
-
mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
40501
|
-
}
|
|
40502
|
-
|
|
40503
|
-
[data-scope='tree'][data-part='item-checkbox'][data-disabled],
|
|
40504
|
-
[data-scope='tree'][data-part='branch-checkbox'][data-disabled] {
|
|
40505
|
-
border-color: var(--xh-tree-checkbox-border-disabled, var(--xh-border-default));
|
|
40506
|
-
}
|
|
40507
|
-
|
|
40508
40445
|
[data-scope='tree'][data-part='item-text'],
|
|
40509
40446
|
[data-scope='tree'][data-part='branch-text'] {
|
|
40510
40447
|
flex: 1;
|
|
@@ -40515,14 +40452,16 @@
|
|
|
40515
40452
|
text-overflow: ellipsis;
|
|
40516
40453
|
}
|
|
40517
40454
|
|
|
40518
|
-
/*
|
|
40519
|
-
|
|
40455
|
+
/* 选中对号落在行尾,与树选择同位:作者在行里摆在哪儿都排到最后,
|
|
40456
|
+
行尾那一格(item-suffix)在它之前;正文吃满剩余宽度,对号因此贴着行的末端。
|
|
40457
|
+
未选中时占位不塌,切换选中不引起行宽抖动。盒尺取指示符档;盒里的对号是指示符,
|
|
40520
40458
|
在自己身上把 --xh-icon-size 改接到盒的尺,兜底对号与作者塞进盒里的 XhIcon 读同一把尺、与盒同边长 */
|
|
40521
40459
|
[data-scope='tree'][data-part='item-indicator'] {
|
|
40522
40460
|
--xh-icon-size: var(--xh-_tree-indicator-size);
|
|
40523
40461
|
|
|
40524
40462
|
display: inline-flex;
|
|
40525
40463
|
flex: none;
|
|
40464
|
+
order: 1;
|
|
40526
40465
|
align-items: center;
|
|
40527
40466
|
justify-content: center;
|
|
40528
40467
|
inline-size: var(--xh-_tree-indicator-size);
|
|
@@ -40532,9 +40471,20 @@
|
|
|
40532
40471
|
display: none;
|
|
40533
40472
|
}
|
|
40534
40473
|
|
|
40474
|
+
/* 家族只按行的 aria-selected 显示对号:分支行的 aria-selected 在 branch 上、半选没有选中语义,
|
|
40475
|
+
这两档按标记自身的 data-selected / data-indeterminate 显形 */
|
|
40476
|
+
[data-scope='tree'][data-part='item-indicator']:is([data-selected], [data-indeterminate]) {
|
|
40477
|
+
visibility: visible;
|
|
40478
|
+
}
|
|
40479
|
+
|
|
40480
|
+
/* 分支行的禁用不在行的 aria-disabled 上(那在 branch 上),标记按自身的 data-disabled 降级 */
|
|
40481
|
+
[data-scope='tree'][data-part='item-indicator'][data-disabled] {
|
|
40482
|
+
color: var(--xh-fg-disabled);
|
|
40483
|
+
}
|
|
40484
|
+
|
|
40535
40485
|
/* 展开箭头与方向指示符:两者都可能被作者用作"点这里展开"的把手,
|
|
40536
40486
|
所以尺寸与叶子的勾选标记一致,两种行的文字起点才对得齐。
|
|
40537
|
-
盒里的 chevron
|
|
40487
|
+
盒里的 chevron 是指示符:与盒同边长,--xh-icon-size 在自己身上改接到盒的尺 */
|
|
40538
40488
|
[data-scope='tree'][data-part='branch-trigger'],
|
|
40539
40489
|
[data-scope='tree'][data-part='branch-indicator'] {
|
|
40540
40490
|
--xh-icon-size: var(--xh-_tree-indicator-size);
|
|
@@ -40630,6 +40580,11 @@
|
|
|
40630
40580
|
mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
40631
40581
|
}
|
|
40632
40582
|
|
|
40583
|
+
[data-scope='tree'][data-part='item-indicator'][data-indeterminate]:not([data-selected]):empty::before {
|
|
40584
|
+
-webkit-mask-image: var(--xh-glyph-mark-minus);
|
|
40585
|
+
mask-image: var(--xh-glyph-mark-minus);
|
|
40586
|
+
}
|
|
40587
|
+
|
|
40633
40588
|
/* —— 节点拖拽搬家 —— */
|
|
40634
40589
|
/* 整行都是拖动源,光标换成抓手告诉人这一行按得动。
|
|
40635
40590
|
这条不写 touch-action:整行关掉纵向手势,树容器自己就滚不动了;
|
|
@@ -40735,7 +40690,7 @@
|
|
|
40735
40690
|
禁用的节点从来不做落点,这一段因此不会漏画任何一处高亮 */
|
|
40736
40691
|
[data-scope='tree'][data-part='item'][data-drop='inside']:not([data-disabled]),
|
|
40737
40692
|
[data-scope='tree'][data-part='branch-control'][data-drop='inside']:not([data-disabled]) {
|
|
40738
|
-
/* 落点不是选中:品牌淡底专属选中 /
|
|
40693
|
+
/* 落点不是选中:品牌淡底专属选中 / 当前,落点面取悬停之上一档的中性面 */
|
|
40739
40694
|
background: var(--xh-tree-drop-inside-bg, var(--xh-bg-subtle-hover));
|
|
40740
40695
|
box-shadow: inset 0 0 0 var(--xh-tree-drop-line, var(--xh-stroke-thick))
|
|
40741
40696
|
var(--xh-tree-drop-fg, var(--xh-border-control-focus));
|
|
@@ -40754,11 +40709,11 @@
|
|
|
40754
40709
|
border: 0;
|
|
40755
40710
|
}
|
|
40756
40711
|
|
|
40757
|
-
|
|
40758
|
-
|
|
40759
|
-
|
|
40760
|
-
|
|
40761
|
-
|
|
40712
|
+
@media print {
|
|
40713
|
+
/* 打印默认丢底色,而对号与半选杠是遮罩出来的一块底色:行本就不换面,丢了它选中在纸上就没了踪影 */
|
|
40714
|
+
[data-scope='tree'][data-part='item-indicator'] {
|
|
40715
|
+
print-color-adjust: exact;
|
|
40716
|
+
}
|
|
40762
40717
|
}
|
|
40763
40718
|
}
|
|
40764
40719
|
|
|
@@ -40825,7 +40780,7 @@
|
|
|
40825
40780
|
[data-scope='tree-select']:is([data-part='root'], [data-part='positioner']) {
|
|
40826
40781
|
/* 作者塞进触发器指示符槽 / 清除钮的图标跟着尺寸档走,与皮肤画的兜底字形同一把尺。这支只管作者放进
|
|
40827
40782
|
盒与行里的图标:面板里自绘的状态字形(展开方向、行尾对号与半选杠)是指示符,各部件在自己身上
|
|
40828
|
-
把 --xh-icon-size 改接到 --xh-control-indicator-*
|
|
40783
|
+
把 --xh-icon-size 改接到 --xh-control-indicator-* 一族的盒尺 */
|
|
40829
40784
|
--xh-icon-size: var(--xh-tree-select-icon-size, var(--xh-glyph-size-md));
|
|
40830
40785
|
|
|
40831
40786
|
/* 尺寸档只换这几个私有槽,盒与树里的行都从这两处继承它们,换档不必给每个部件各写一条选择器;
|
|
@@ -41083,8 +41038,6 @@
|
|
|
41083
41038
|
|
|
41084
41039
|
[data-scope='tree-select'][data-part='content'][data-state='open'] {
|
|
41085
41040
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
41086
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
41087
|
-
will-change: opacity, translate;
|
|
41088
41041
|
}
|
|
41089
41042
|
|
|
41090
41043
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -41308,7 +41261,7 @@
|
|
|
41308
41261
|
/* 勾选标记落在家族网格的 indicator 列;未选中时占位不塌,切换选中不引起行宽抖动。
|
|
41309
41262
|
尺寸槽按各自部件取名:行内的勾与展开箭头分别是 item- 与 branch- 段,
|
|
41310
41263
|
触发器上那枚箭头是 --xh-tree-select-indicator-*,三处各调各的。
|
|
41311
|
-
盒里的对号 /
|
|
41264
|
+
盒里的对号 / 半选杠是指示符:在自己身上把 --xh-icon-size 改接到盒的尺,兜底字形与作者
|
|
41312
41265
|
塞进盒里的 XhIcon 读同一把尺、与盒同边长;不读家族按档下发到行的 --xh-icon-size——那支只管
|
|
41313
41266
|
作者放进行里的图标,按图标档取的 20px 会比 16 / 14 的盒还大 */
|
|
41314
41267
|
[data-scope='tree-select'][data-part='item-indicator'] {
|
|
@@ -41338,7 +41291,7 @@
|
|
|
41338
41291
|
|
|
41339
41292
|
/* 展开箭头与方向指示符:两者都可能被作者用作「点这里展开」的把手,
|
|
41340
41293
|
所以尺寸与叶子的勾选标记一致,两种行的文字起点才对得齐。
|
|
41341
|
-
盒里的 chevron
|
|
41294
|
+
盒里的 chevron 是指示符:与盒同边长,--xh-icon-size 在自己身上改接到盒的尺 */
|
|
41342
41295
|
[data-scope='tree-select'][data-part='branch-trigger'],
|
|
41343
41296
|
[data-scope='tree-select'][data-part='branch-indicator'] {
|
|
41344
41297
|
--xh-icon-size: var(--xh-tree-select-branch-indicator-size, var(--xh-control-indicator-size));
|
|
@@ -41496,7 +41449,7 @@
|
|
|
41496
41449
|
overflow-x: auto;
|
|
41497
41450
|
overflow-y: auto;
|
|
41498
41451
|
/* 页内结构容器,滚到尽头把剩余的滚动交给外层(overscroll-behavior 保持 auto):
|
|
41499
|
-
contain 只给浮层、模态 body
|
|
41452
|
+
contain 只给浮层、模态 body 与粘底视口。滚动条走 reset 层的原生细条 */
|
|
41500
41453
|
}
|
|
41501
41454
|
|
|
41502
41455
|
/* 单向列表把另一条轴关掉:那一向既没有内容也没有位移,能滚就成了滚不回来的暗格 */
|