@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/css/accordion.css
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
[data-scope='accordion'][data-part='root'] {
|
|
20
|
-
/* 作者塞进正文里的图标与皮肤画的兜底字形同一把尺:md
|
|
20
|
+
/* 作者塞进正文里的图标与皮肤画的兜底字形同一把尺:md 档,标题栏上另按家族档取值 */
|
|
21
21
|
--xh-icon-size: var(--xh-accordion-icon-size, var(--xh-glyph-size-md));
|
|
22
22
|
|
|
23
23
|
/* 尺寸档只换正文这两个私有槽,正文从 root 继承它们;标题栏的三档几何由家族 disclosure-trigger 档给 */
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
border-inline-start: 0;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
/* outline:一张静态内容面,--xh-border-default 描边 + surface 底 +
|
|
105
|
+
/* outline:一张静态内容面,--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担);
|
|
106
106
|
根的外边走 --xh-accordion-border,与条与条之间的分隔线槽 --xh-accordion-item-border 各管各的 */
|
|
107
107
|
[data-scope='accordion'][data-part='root'][data-variant='outline'] {
|
|
108
108
|
border: var(--xh-stroke-thin) solid var(--xh-accordion-border, var(--xh-border-default));
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
/* subtle:同一块连续表面,底换成淡底,描边让位给底色但留住 1px 边位(三档几何一致);
|
|
116
|
-
淡底承载面向标题栏下发 hover 200 → pressed 300
|
|
116
|
+
淡底承载面向标题栏下发 hover 200 → pressed 300 */
|
|
117
117
|
[data-scope='accordion'][data-part='root'][data-variant='subtle'] {
|
|
118
118
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
119
119
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
/* 标题栏铺满一行,盒型、三档几何、悬停 / 按下 / 禁用面由 Action Control 的 disclosure-trigger 档给
|
|
145
|
-
(ghost 形态:白底承载 hover 100 → pressed 200,淡底容器由根下发 host
|
|
145
|
+
(ghost 形态:白底承载 hover 100 → pressed 200,淡底容器由根下发 host 槽;按下只换面不缩放);
|
|
146
146
|
这里只把使用者槽映射到桥接槽:字色三态同值(家族的 hover / pressed 字色规则比皮肤更特定,不映射会被换回
|
|
147
147
|
缺省字色),字形按标题栏自己的档位取 --xh-_action-profile-glyph-size;边归零贴住条目,几何与迁移前一致 */
|
|
148
148
|
[data-scope='accordion'][data-part='trigger'] {
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/* 展开态自带一个槽:与常态共用一个的话,作者一改常态字色,
|
|
167
|
-
展开那一档的语气高亮就跟着被抹平,再也分不开。悬停 /
|
|
167
|
+
展开那一档的语气高亮就跟着被抹平,再也分不开。悬停 / 按下的面与收起态同档(open 与家族 hover 同档中性) */
|
|
168
168
|
[data-scope='accordion'][data-part='trigger'][data-state='open'] {
|
|
169
169
|
--xh-action-fg-rest: var(--xh-accordion-trigger-fg-open, var(--xh-_accordion-open-fg));
|
|
170
170
|
--xh-action-fg-hover: var(--xh-accordion-trigger-fg-open, var(--xh-_accordion-open-fg));
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
flex: none;
|
|
185
185
|
color: var(--xh-accordion-indicator-fg, var(--xh-fg-muted));
|
|
186
186
|
line-height: var(--xh-leading-none);
|
|
187
|
-
/*
|
|
187
|
+
/* 指示器与正文同档转向:正文 enter 档展开,箭头也用同一段时长翻过去 */
|
|
188
188
|
transition: rotate var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
189
189
|
}
|
|
190
190
|
|
package/css/alert.css
CHANGED
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
--xh-alert-skin: 1;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
/* 提示本体是一层中性 surface:边界由 --xh-border-default
|
|
17
|
+
/* 提示本体是一层中性 surface:边界由 --xh-border-default 描边承担、无影(静态反馈面),
|
|
18
18
|
语气只落到图标与标题,不会用整块彩底抢走正文层级。 */
|
|
19
19
|
[data-scope='alert'][data-part='root'] {
|
|
20
|
-
/* 作者塞进指示符槽的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md
|
|
20
|
+
/* 作者塞进指示符槽的图标与皮肤画的兜底字形同一把尺:Feedback 指示符统一 md 档 */
|
|
21
21
|
--xh-icon-size: var(--xh-alert-icon-size, var(--xh-glyph-size-md));
|
|
22
22
|
|
|
23
23
|
display: flex;
|
package/css/anchor.css
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
--xh-_anchor-link-px: var(--xh-control-px-md);
|
|
25
25
|
/* 当前那一节的指示条与文字随语气走。没写 data-tone 时这两个槽都没被声明,退回品牌色。
|
|
26
26
|
指示条是装饰性的色条,取柔和档;文字要压在普通背景上读,取语气的文字档——
|
|
27
|
-
|
|
27
|
+
导航当前页缺省是 --xh-fg-brand-strong,比指示条深一档。
|
|
28
28
|
聚焦环不在其列,它恒是 --xh-ring-focus */
|
|
29
29
|
--xh-_anchor-accent: var(--xh-_tone-soft, var(--xh-fg-brand));
|
|
30
30
|
--xh-_anchor-accent-text: var(--xh-_tone-fg, var(--xh-fg-brand-strong));
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
/* 链接的几何、字号与面全经家族桥接槽:静息 muted / regular,悬停走白底承载 hover 100 + default 字,
|
|
89
|
-
按下 pressed 200
|
|
89
|
+
按下 pressed 200 只换面;当前那一节(导航当前页)brand-strong 字色(随语气的
|
|
90
90
|
--xh-_anchor-accent-text)+ medium 字重都跟着变,2px 指示线放了 indicator 部件由部件滑动、没放则由
|
|
91
91
|
下面的静态线规则画在当前链接自己身上。本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 color / background。
|
|
92
92
|
position: relative 是静态线的定位参照 */
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
inline-size var(--xh-motion-duration-enter) var(--xh-motion-ease-continuous);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
/* 目录里没放 indicator
|
|
163
|
+
/* 目录里没放 indicator 部件时,当前那一节的链接自画一条静态指示线(导航当前页):
|
|
164
164
|
与 Tabs line 档同一取法,作者不必为了这条线多放一个部件。
|
|
165
165
|
线画在当前链接的 ::after 上,以链接盒为定位参照(上面已给 position: relative),
|
|
166
166
|
厚度 / 颜色 / 圆角与 indicator 部件读同一组槽与缺省——作者改一处,部件与静态线一起改。
|
package/css/approval.css
CHANGED
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
--xh-approval-skin: 1;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
/* 一块要人做决定的静态内容面:--xh-border-default 描边 + surface 底 +
|
|
53
|
+
/* 一块要人做决定的静态内容面:--xh-border-default 描边 + surface 底 + 无影(边界只由描边承担),
|
|
54
54
|
作者打了语气时描边染成语气色作强调(下面那条),判定落定后描边退回中性 */
|
|
55
55
|
[data-scope='approval'][data-part='root'] {
|
|
56
|
-
/* 作者塞进标题 / 说明 /
|
|
56
|
+
/* 作者塞进标题 / 说明 / 结果条里的图标按档取尺,缺省 md;勾选记号另按盒比例量 */
|
|
57
57
|
--xh-_approval-icon-size: var(--xh-glyph-size-md);
|
|
58
58
|
--xh-icon-size: var(--xh-approval-icon-size, var(--xh-_approval-icon-size));
|
|
59
59
|
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
border-color: var(--xh-approval-border, var(--xh-_tone, var(--xh-border-default)));
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
/* 判过了就不再抢注意力:语气色边退回中性描边(根面外边不取 subtle
|
|
91
|
+
/* 判过了就不再抢注意力:语气色边退回中性描边(根面外边不取 subtle)。
|
|
92
92
|
排在语气那条之后:同等特指度,落定要盖得过语气 */
|
|
93
93
|
[data-scope='approval'][data-part='root']:not([data-state='pending']) {
|
|
94
94
|
border-color: var(--xh-approval-border-settled, var(--xh-border-default));
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
/* 缺省档即 outline,写在上面那条基础规则里。
|
|
99
99
|
两档排在落定那条之后:它们把描边整个撤掉,排在前面会被落定那条按同等特指度盖回来 */
|
|
100
100
|
/* 底色分区:描边让位给底色,闸门嵌在别人的面里时不再多一圈线;
|
|
101
|
-
淡底承载面向授权行与拒绝钮下发 hover 200 → pressed 300
|
|
101
|
+
淡底承载面向授权行与拒绝钮下发 hover 200 → pressed 300 */
|
|
102
102
|
[data-scope='approval'][data-part='root'][data-variant='subtle'] {
|
|
103
103
|
--xh-action-host-bg-hover: var(--xh-bg-subtle-hover);
|
|
104
104
|
--xh-action-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
box-shadow: none;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
/* 标题走 Surface 标题档 14/600
|
|
117
|
+
/* 标题走 Surface 标题档 14/600 */
|
|
118
118
|
[data-scope='approval'][data-part='title'] {
|
|
119
119
|
display: block;
|
|
120
120
|
margin: 0;
|
|
@@ -164,9 +164,9 @@
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/* 一项授权:整行可点、可聚焦,勾选记号在左。盒型、悬停 / 按下 / 禁用面由 Action Control 的 row 档给
|
|
167
|
-
(ghost 形态:白底承载 hover 100 → pressed 200
|
|
167
|
+
(ghost 形态:白底承载 hover 100 → pressed 200,按下只换面不缩放;禁用守卫认 data-disabled),
|
|
168
168
|
这里只把使用者槽映射到桥接槽,内衬与间距沿用本组件的档位。
|
|
169
|
-
行高不吃家族的单行档:row
|
|
169
|
+
行高不吃家族的单行档:row 档允许换行、高度随内容,一条会折行的授权文案走正文行高 */
|
|
170
170
|
[data-scope='approval'][data-part='item'] {
|
|
171
171
|
--xh-action-gap: var(--xh-approval-item-gap, var(--xh-space-1_5));
|
|
172
172
|
--xh-action-padding-inline: var(--xh-approval-item-px, var(--xh-space-2));
|
|
@@ -327,7 +327,7 @@
|
|
|
327
327
|
|
|
328
328
|
/* 两颗按钮是离散动作控件:盒几何、悬停 / 按下与 0.97 按压、焦点环、禁用与在途面全由 Action Control 的
|
|
329
329
|
text 档给,组件只映射既有使用者槽。批准走 solid 档:判定闸门里的主要动作,与 Button 缺省同为品牌实心;
|
|
330
|
-
拒绝走 outline 档:非 Button
|
|
330
|
+
拒绝走 outline 档:非 Button 的触发器缺省中性描边。
|
|
331
331
|
三档守卫由连接层投影:判定在途是 data-loading + aria-disabled(保住可聚焦,家族给在途面:底色不置灰、
|
|
332
332
|
指针 progress),必选项没勾满与落定是 data-disabled(家族给禁用面:置灰底、置灰字、not-allowed)。
|
|
333
333
|
两颗共用的几何与字号写在一起 */
|
package/css/back-top.css
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/* —— 触发器 ——
|
|
46
|
-
浮在内容之上的单图标圆钮,接 Action Control floating
|
|
46
|
+
浮在内容之上的单图标圆钮,接 Action Control floating 档:盒型(md = box-lg 48px,圆形)、
|
|
47
47
|
四态面、0.97 按压与 44px 命中区由家族配方按 data-xh-action-variant / -size 给出。
|
|
48
48
|
这里只把公开槽桥接到矩阵之前(使用者槽 → 形态矩阵 → 家族缺省)与几何槽映射。
|
|
49
49
|
整件只有这一颗按钮,槽名与其余一样不带部件段(照 float-button 的 --xh-float-button-size) */
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
--xh-action-border-pressed: var(--xh-back-top-border-hover, var(--xh-_action-variant-border-pressed));
|
|
63
63
|
--xh-action-border-focus-visible: var(--xh-back-top-border, var(--xh-_action-variant-border-focus-visible));
|
|
64
64
|
--xh-action-border-disabled: var(--xh-back-top-border, var(--xh-_action-variant-border-disabled));
|
|
65
|
-
/*
|
|
65
|
+
/* 矩阵各态无影(淡底与阴影互斥);outline 那一档的磨砂投影在下面另桥接 */
|
|
66
66
|
--xh-action-shadow-rest: var(--xh-back-top-shadow, none);
|
|
67
67
|
--xh-action-shadow-hover: var(--xh-back-top-shadow, none);
|
|
68
68
|
--xh-action-shadow-pressed: var(--xh-back-top-shadow, none);
|
package/css/badge.css
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/* 圆点形态:只表示「有」,不表示「有几个」——收掉内边距与文字盒。
|
|
69
|
-
宽高同槽的正方盒按身份取 circle
|
|
69
|
+
宽高同槽的正方盒按身份取 circle,不沿用计数档的胶囊冒充圆:
|
|
70
70
|
胶囊那 9999px 在正方盒上虽也画成圆,形状身份却写错了档,作者按圆点覆盖圆角时无处落手。
|
|
71
71
|
圆点直径只有六到十像素,一像素的内高光会占去顶上一大截、读成缺了一圈的描边,这里收掉 */
|
|
72
72
|
[data-scope='badge'][data-part='indicator'][data-dot] {
|
package/css/breadcrumb.css
CHANGED
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
/* 链接的几何、字号与面全经家族桥接槽:静息 muted / regular,悬停走白底承载 hover 100 + 随语气的字色,
|
|
79
|
-
按下 pressed 200
|
|
79
|
+
按下 pressed 200 只换面;当前页那条不再是"可去的地方":连接层投影
|
|
80
80
|
data-xh-collection-terminal,家族给透明面 + 随语气的 fg-default + medium + cursor default,不响应悬停与按下,
|
|
81
81
|
并压过它同时带的 aria-disabled 禁用面。本条 (0,2,0) 压过家族基础块 (0,1,0),不能再写 color / background */
|
|
82
82
|
[data-scope='breadcrumb'][data-part='link'] {
|
package/css/button-group.css
CHANGED
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
/* 独立 Button 按下时缩一档;组内段却靠共边重叠一像素,单段缩放会同时撕开两侧接缝。
|
|
228
|
-
组内仍保留 active 换底与撤高光,只把会改变外轮廓几何的 scale
|
|
228
|
+
组内仍保留 active 换底与撤高光,只把会改变外轮廓几何的 scale 收掉(允许的只换面);
|
|
229
229
|
键盘与触屏的按压由 Headless 投影 data-pressed,与指针 :active 同一档。 */
|
|
230
230
|
[data-scope='button-group'][data-part='root']
|
|
231
231
|
> [data-scope='button'][data-part='root']:not([data-disabled]):not([data-loading]):is(:active, [data-pressed]),
|
package/css/button.css
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
--xh-action-fg-loading: var(--xh-button-fg, var(--xh-_action-variant-fg-loading));
|
|
37
37
|
--xh-action-highlight-rest: transparent;
|
|
38
38
|
--xh-action-highlight-pressed: transparent;
|
|
39
|
-
/* 海拔只有 solid
|
|
39
|
+
/* 海拔只有 solid 一档有:其余形态无影,私有槽在下面的 solid 块里才被赋值 */
|
|
40
40
|
--xh-_button-shadow-rest: var(--xh-button-shadow, none);
|
|
41
41
|
--xh-_button-shadow-hover: var(--xh-button-shadow-hover, none);
|
|
42
42
|
--xh-_button-shadow-pressed: none;
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
font-weight: var(--xh-button-font-weight, var(--xh-text-label-weight));
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
/* Button soft
|
|
60
|
+
/* Button soft 是登记在册的 raised 消费者:solid 一档静息带顶光与贴地软影,悬停抬到 raised,按下只留顶光。
|
|
61
61
|
成组时段与段共边焊成一条,静息不落软影、悬停不抬起——投影会压到左右两段的面上,
|
|
62
62
|
ButtonGroup 用 --xh-_button-group-shadow-rest / -hover 只留顶光 */
|
|
63
63
|
[data-scope='button'][data-part='root'][data-variant='solid'] {
|
package/css/calendar-picker.css
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
[data-scope='calendar-picker'][data-part='root'] {
|
|
18
|
-
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm
|
|
18
|
+
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm;
|
|
19
19
|
作者塞进去的图标与皮肤画的兜底字形同一把尺 */
|
|
20
20
|
--xh-icon-size: var(--xh-calendar-picker-icon-size, var(--xh-glyph-size-sm));
|
|
21
21
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
|
|
55
55
|
/* 标题里的年与月:点它们逐级钻上去(年 → 十年格、月 → 月格)。
|
|
56
56
|
长得像标题而不像按钮——它本来就是标题,只是可点 */
|
|
57
|
-
/* 标题里的年与月接 Action Control text
|
|
57
|
+
/* 标题里的年与月接 Action Control text 档(日期翻页按钮同族):盒、按下 / 禁用面、0.97 缩放与换底、焦点环与过渡
|
|
58
58
|
由家族配方给,这里只把使用者槽映射到桥接槽。长得像标题而不像按钮——它本来就是标题,只是可点:静息透明(ghost),
|
|
59
59
|
悬停只换字色不换底(标题不是一枚按钮面),按下换到 200 档中性面(白底承载);到顶那一层只作标题显示,
|
|
60
60
|
光标别装成能点,也不再换面 */
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
display: none;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
/* 四颗方向钮接 Action Control icon
|
|
83
|
+
/* 四颗方向钮接 Action Control icon 档(日期翻页按钮)、ghost 形态:正方盒、悬停 / 按下 / 禁用面、0.97 缩放与换底、
|
|
84
84
|
粗指针热区、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽;钮坐在日历的白底上,悬停 100 → 按下 200 */
|
|
85
85
|
[data-scope='calendar-picker'][data-part='prev-year-trigger'],
|
|
86
86
|
[data-scope='calendar-picker'][data-part='prev-trigger'],
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
align-content: start;
|
|
139
139
|
max-block-size: var(--xh-calendar-picker-year-grid-max-h, var(--xh-viewport-h-sm));
|
|
140
140
|
padding-inline-end: var(--xh-calendar-picker-year-grid-pe, var(--xh-space-1));
|
|
141
|
-
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto
|
|
141
|
+
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto;嵌进 date-picker 浮层时由那份皮肤补 contain */
|
|
142
142
|
overflow-y: auto;
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -239,7 +239,7 @@
|
|
|
239
239
|
display: none;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
/* 日期格接 Action Control text
|
|
242
|
+
/* 日期格接 Action Control text 档(日历格是定尺控件,属格状当前)、ghost 形态:悬停 / 按下 / 禁用面、
|
|
243
243
|
0.97 缩放与换底、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽。几何仍由网格给:宽度由 week-row 的
|
|
244
244
|
等分轨道给、高度按 aspect-ratio 跟着走(block-size 归 auto,不取家族的固定高),日历才不会被长月份拉扁。
|
|
245
245
|
格子坐在日历的白底上:悬停 100 → 按下 200;今天 / 选中 / 邻月 / 不可用只换下面的私有槽 */
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
--xh-_calendar-picker-cell-fg: var(--xh-calendar-picker-cell-fg-outside, var(--xh-fg-subtle));
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
/* 今天:1px 品牌环 +
|
|
307
|
+
/* 今天:1px 品牌环 + 品牌字(brand-subtle 退出 today 语义),底透明、悬停走普通格的阶梯;
|
|
308
308
|
选中仍用后面的实心强调面,两个状态叠加时不会混成同一种反馈 */
|
|
309
309
|
[data-scope='calendar-picker'][data-part='cell-trigger'][data-today] {
|
|
310
310
|
--xh-_calendar-picker-cell-bg: var(--xh-calendar-picker-today-bg, transparent);
|
|
@@ -312,7 +312,7 @@
|
|
|
312
312
|
--xh-_calendar-picker-cell-fg: var(--xh-calendar-picker-today-fg, var(--xh-fg-brand));
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
-
/* 实心强调面给单选 /
|
|
315
|
+
/* 实心强调面给单选 / 多选的选中格(格状当前):悬停不换面,按下压到 active 档(光缩放在深色底上看不出回执)。
|
|
316
316
|
面是实心的,环色与面同族,画在面里就看不出来;环改取面自己的前景色——
|
|
317
317
|
那一族色本来就要在这块面上把字读清楚,与面的对比是按可读性定的 */
|
|
318
318
|
[data-scope='calendar-picker'][data-part='cell-trigger'][data-selected] {
|
|
@@ -352,7 +352,7 @@
|
|
|
352
352
|
--xh-action-ring-color-focus-visible: var(--xh-ring-focus);
|
|
353
353
|
}
|
|
354
354
|
|
|
355
|
-
/* 不可用又选中的格:退到中性淡底 +
|
|
355
|
+
/* 不可用又选中的格:退到中性淡底 + 置灰字(禁用面),选中身份仍由这块底与未选中的透明格分开 */
|
|
356
356
|
[data-scope='calendar-picker'][data-part='cell-trigger'][data-disabled][data-selected] {
|
|
357
357
|
--xh-action-bg-disabled: var(--xh-calendar-picker-cell-bg-selected-disabled, var(--xh-bg-subtle));
|
|
358
358
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
[data-scope='calendar-range-picker'][data-part='root'] {
|
|
18
|
-
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm
|
|
18
|
+
/* 翻页钮是 sm 档的图标钮(--xh-control-h-sm 见方),钮里的图标按 sm 档取 --xh-glyph-size-sm;
|
|
19
19
|
作者塞进去的图标与皮肤画的兜底字形同一把尺 */
|
|
20
20
|
--xh-icon-size: var(--xh-calendar-range-picker-icon-size, var(--xh-glyph-size-sm));
|
|
21
21
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
|
|
55
55
|
/* 标题里的年与月:点它们逐级钻上去(年 → 十年格、月 → 月格)。
|
|
56
56
|
长得像标题而不像按钮——它本来就是标题,只是可点 */
|
|
57
|
-
/* 标题里的年与月接 Action Control text
|
|
57
|
+
/* 标题里的年与月接 Action Control text 档(日期翻页按钮同族):盒、按下 / 禁用面、0.97 缩放与换底、焦点环与过渡
|
|
58
58
|
由家族配方给,这里只把使用者槽映射到桥接槽。长得像标题而不像按钮——它本来就是标题,只是可点:静息透明(ghost),
|
|
59
59
|
悬停只换字色不换底(标题不是一枚按钮面),按下换到 200 档中性面(白底承载);到顶那一层只作标题显示,
|
|
60
60
|
光标别装成能点,也不再换面 */
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
display: none;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
/* 四颗方向钮接 Action Control icon
|
|
83
|
+
/* 四颗方向钮接 Action Control icon 档(日期翻页按钮)、ghost 形态:正方盒、悬停 / 按下 / 禁用面、0.97 缩放与换底、
|
|
84
84
|
粗指针热区、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽;钮坐在日历的白底上,悬停 100 → 按下 200 */
|
|
85
85
|
[data-scope='calendar-range-picker'][data-part='prev-year-trigger'],
|
|
86
86
|
[data-scope='calendar-range-picker'][data-part='prev-trigger'],
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
align-content: start;
|
|
139
139
|
max-block-size: var(--xh-calendar-range-picker-year-grid-max-h, var(--xh-viewport-h-sm));
|
|
140
140
|
padding-inline-end: var(--xh-calendar-range-picker-year-grid-pe, var(--xh-space-1));
|
|
141
|
-
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto
|
|
141
|
+
/* 页内结构容器走原生细条(reset 层统一给)、滚动链保持 auto;嵌进 date-picker 浮层时由那份皮肤补 contain */
|
|
142
142
|
overflow-y: auto;
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
border-radius: var(--xh-calendar-range-picker-cell-radius, var(--xh-shape-inset));
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
-
/* 日期格接 Action Control text
|
|
286
|
+
/* 日期格接 Action Control text 档(日历格是定尺控件,属格状当前)、ghost 形态:悬停 / 按下 / 禁用面、
|
|
287
287
|
0.97 缩放与换底、焦点环与过渡由家族配方给,这里只把使用者槽映射到桥接槽。几何仍由网格给:宽度由 week-row 的
|
|
288
288
|
等分轨道给、高度按 aspect-ratio 跟着走(block-size 归 auto,不取家族的固定高),日历才不会被长月份拉扁。
|
|
289
289
|
格子坐在日历的白底上:悬停 100 → 按下 200;今天 / 选中 / 邻月 / 不可用只换下面的私有槽 */
|
|
@@ -348,13 +348,13 @@
|
|
|
348
348
|
--xh-_calendar-range-picker-cell-fg: var(--xh-calendar-range-picker-cell-fg-outside, var(--xh-fg-subtle));
|
|
349
349
|
}
|
|
350
350
|
|
|
351
|
-
/*
|
|
351
|
+
/* 区间中段的格坐在品牌淡底的轨道上(页内选中 12%):悬停 20%、按下 28%,铺在格子自己的选中片上 */
|
|
352
352
|
[data-scope='calendar-range-picker'][data-part='cell-trigger'][data-in-range]:not([data-outside-month], [data-disabled], [data-range-start], [data-range-end]) {
|
|
353
353
|
--xh-_calendar-range-picker-cell-bg-hover: var(--xh-calendar-range-picker-range-cell-bg-hover, var(--xh-bg-brand-subtle-hover));
|
|
354
354
|
--xh-_calendar-range-picker-cell-bg-pressed: var(--xh-calendar-range-picker-range-cell-bg-pressed, var(--xh-bg-brand-subtle-active));
|
|
355
355
|
}
|
|
356
356
|
|
|
357
|
-
/* 今天:1px 品牌环 +
|
|
357
|
+
/* 今天:1px 品牌环 + 品牌字(brand-subtle 退出 today 语义),底透明、悬停走普通格的阶梯;
|
|
358
358
|
落在区间里时环压在轨道上,选中仍用后面的实心强调面,状态叠加时不会混成同一种反馈 */
|
|
359
359
|
[data-scope='calendar-range-picker'][data-part='cell-trigger'][data-today] {
|
|
360
360
|
--xh-_calendar-range-picker-cell-bg: var(--xh-calendar-range-picker-today-bg, transparent);
|
|
@@ -362,7 +362,7 @@
|
|
|
362
362
|
--xh-_calendar-range-picker-cell-fg: var(--xh-calendar-range-picker-today-fg, var(--xh-fg-brand));
|
|
363
363
|
}
|
|
364
364
|
|
|
365
|
-
/* 实心强调面只给单选 /
|
|
365
|
+
/* 实心强调面只给单选 / 多选的选中格与区间的两端(格状当前):悬停不换面,按下压到 active 档(光缩放在深色底上
|
|
366
366
|
看不出回执);区间中段的格子由格子上的轨道铺底,自己不换面——不然一整段都是实心圆,就分不出哪两格是端点。
|
|
367
367
|
面是实心的,环色与面同族,画在面里就看不出来;环改取面自己的前景色——
|
|
368
368
|
那一族色本来就要在这块面上把字读清楚,与面的对比是按可读性定的 */
|
|
@@ -404,7 +404,7 @@
|
|
|
404
404
|
--xh-action-ring-color-focus-visible: var(--xh-ring-focus);
|
|
405
405
|
}
|
|
406
406
|
|
|
407
|
-
/* 不可用又选中的格:退到中性淡底 +
|
|
407
|
+
/* 不可用又选中的格:退到中性淡底 + 置灰字(禁用面),选中身份仍由这块底与未选中的透明格分开 */
|
|
408
408
|
[data-scope='calendar-range-picker'][data-part='cell-trigger'][data-disabled][data-selected] {
|
|
409
409
|
--xh-action-bg-disabled: var(--xh-calendar-range-picker-cell-bg-selected-disabled, var(--xh-bg-subtle));
|
|
410
410
|
}
|
package/css/card.css
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/* Card 是带统一内边距与节奏的内容面;布局方向可由作者在根上覆盖。
|
|
15
|
-
边界由 --xh-border-default 描边承担,raised
|
|
15
|
+
边界由 --xh-border-default 描边承担,raised 落影只是抬起的加成(Card 是唯一登记 raised 的静态面,
|
|
16
16
|
且 raised 必带描边);内衬只走 --xh-surface-* 阶梯。 */
|
|
17
17
|
[data-scope='card'][data-part='root'] {
|
|
18
18
|
position: relative;
|
package/css/carousel.css
CHANGED
|
@@ -99,10 +99,10 @@
|
|
|
99
99
|
display: none;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
/* 两端按钮与播放开关:浮在媒体之上的单图标圆钮,接 Action Control floating
|
|
102
|
+
/* 两端按钮与播放开关:浮在媒体之上的单图标圆钮,接 Action Control floating 档:
|
|
103
103
|
盒型(md = box-lg 48px,圆形)、四态面、0.97 按压与 44px 命中区由家族配方给出,组件没有 size 轴、固定 md。
|
|
104
104
|
连接层不投影 variant:面由这里桥接到磨砂缺省(使用者槽 → 磨砂面),悬停 / 按下的底走画布承载的阶梯
|
|
105
|
-
(100 → 200
|
|
105
|
+
(100 → 200),边缘与投影不动;这里只留定位、桥接槽与图标尺 */
|
|
106
106
|
[data-scope='carousel'][data-part='prev-trigger'],
|
|
107
107
|
[data-scope='carousel'][data-part='next-trigger'],
|
|
108
108
|
[data-scope='carousel'][data-part='autoplay-trigger'] {
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
translate: -50% 0;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
/* 分页点与 Tour
|
|
215
|
+
/* 分页点与 Tour 的步骤点同一种语言:8px 圆点,当前页拉长成 20px 胶囊并换品牌色。
|
|
216
216
|
本体就是那颗点:没有文字(页码交给作者,默认不显示),底色即标记。
|
|
217
217
|
悬停 / 按下的回执落在点的颜色上:中性标记按前景阶梯加深一档、再加深一档;当前页按品牌阶梯压一档 */
|
|
218
218
|
[data-scope='carousel'][data-part='indicator'] {
|
|
@@ -253,7 +253,7 @@
|
|
|
253
253
|
background: var(--xh-carousel-indicator-bg-hover, var(--xh-fg-muted));
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
/*
|
|
256
|
+
/* 按下:点的颜色再压一档,同时缩一下(同时换底);指针按住由 :active 表出,
|
|
257
257
|
Space / Enter 与触屏按住由 Headless 投影 data-pressed,三种输入同一副面 */
|
|
258
258
|
[data-scope='carousel'][data-part='indicator']:is(:active, [data-pressed]):not([data-current]) {
|
|
259
259
|
background: var(--xh-carousel-indicator-bg-active, var(--xh-fg-default));
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
|
|
272
272
|
/* 当前页:data-current 与 aria-current='true' 由连接层成对给出,
|
|
273
273
|
样式挂在 data 钩子上,无障碍语义留给 aria,两边各司其职。
|
|
274
|
-
拉长成胶囊并换品牌色(格状当前 =
|
|
274
|
+
拉长成胶囊并换品牌色(格状当前 = 实心品牌) */
|
|
275
275
|
[data-scope='carousel'][data-part='indicator'][data-current] {
|
|
276
276
|
inline-size: var(--xh-carousel-indicator-size-current, var(--xh-space-5));
|
|
277
277
|
border-radius: var(--xh-carousel-indicator-radius-current, var(--xh-shape-pill));
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
transition-timing-function: var(--xh-motion-ease-press);
|
|
299
299
|
}
|
|
300
300
|
|
|
301
|
-
/*
|
|
301
|
+
/* 自动播放的进度:胶囊是品牌淡底当轨道(仍是「当前」语义;淡底上公共环够对比,不灌环色),
|
|
302
302
|
品牌填充条从起点沿轨道方向长满这一页的时长;暂停时定住 */
|
|
303
303
|
[data-scope='carousel'][data-part='root'][data-autoplay]
|
|
304
304
|
[data-scope='carousel'][data-part='indicator'][data-current],
|
package/css/cascader.css
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
/* 私有槽同时声明在根与 positioner 上:浮层被搬到 portal 落点,不是根的后代,继承不过去 */
|
|
63
63
|
[data-scope='cascader']:is([data-part='root'], [data-part='positioner']) {
|
|
64
64
|
/* 作者塞进触发器指示符槽的图标跟着尺寸档走,与皮肤画的兜底字形同一把尺;列里条目的由家族随
|
|
65
|
-
data-xh-collection-size
|
|
65
|
+
data-xh-collection-size 下发。级联选择器自绘的状态字形(标记盒里的勾与半选杠、分支箭头)
|
|
66
66
|
不读这支:它们是指示符,走 --xh-control-indicator-* 一族——标记盒在自己身上把 --xh-icon-size 改接到
|
|
67
67
|
盒的尺,分支箭头走 --xh-cascader-branch-arrow-size */
|
|
68
68
|
--xh-icon-size: var(--xh-cascader-icon-size, var(--xh-glyph-size-md));
|
|
@@ -330,8 +330,6 @@
|
|
|
330
330
|
|
|
331
331
|
[data-scope='cascader'][data-part='content'][data-state='open'] {
|
|
332
332
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
333
|
-
/* 只在开着的这一档挂:合成层随 data-state 一起收走,收起后不再占着 */
|
|
334
|
-
will-change: opacity, translate;
|
|
335
333
|
}
|
|
336
334
|
|
|
337
335
|
/* 退场:收起那一帧 hidden 由退场闸门押后,这里才播得出来。forwards 把末态钉住,
|
|
@@ -504,7 +502,7 @@
|
|
|
504
502
|
/* 分支条目行尾画右向小箭头:不点开也看得出还有下一级。落在家族网格的 suffix 列、跨两行居中。
|
|
505
503
|
与菜单族的子菜单箭头同走字形令牌——此前这里是「描全边框再抹掉两条、把剩下的直角旋 45 度」,
|
|
506
504
|
作者换掉标记时换不动它,RTL 还得再翻一次旋转角。
|
|
507
|
-
|
|
505
|
+
箭头是指示符:与同一行的标记盒同走 --xh-control-indicator-size,不读家族按档下发的
|
|
508
506
|
--xh-icon-size——按图标档取的 20px 会比 16px 的标记盒大一圈 */
|
|
509
507
|
[data-scope='cascader'][data-part='item'][data-branch]::after {
|
|
510
508
|
content: '';
|
|
@@ -537,7 +535,7 @@
|
|
|
537
535
|
|
|
538
536
|
/* 勾选标记落在家族网格的 indicator 列,只在选中项上显形(家族按 aria-selected / data-state=checked 给);
|
|
539
537
|
未选中时占位不塌,切换选中不引起行宽抖动。
|
|
540
|
-
|
|
538
|
+
盒里的勾与半选杠是指示符:盒在自己身上把 --xh-icon-size 改接到盒的尺,皮肤画的兜底字形与作者
|
|
541
539
|
塞进盒里的 XhIcon 读同一把尺、与盒同边长(行尾标记不是勾选格,不取 × 0.75,与搜索候选行尾的勾同尺);
|
|
542
540
|
不读家族按档下发到行的 --xh-icon-size——那支只管作者放进条目里的图标,按图标档取的 20px 会比 16 / 14 的盒还大 */
|
|
543
541
|
[data-scope='cascader'][data-part='item-indicator'] {
|
package/css/checkbox-group.css
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
[data-scope='checkbox-group'][data-part='root'] {
|
|
19
19
|
/* 尺寸档只换这四个私有槽,条目、方框与全选格都从 root 继承它们,
|
|
20
20
|
换档不必给每个部件各写一条选择器。方框与字形照 checkbox 的档位走,
|
|
21
|
-
单体与集合里的同一枚方框必须一样大;条目文字是控件文字,随档取 --xh-control-font
|
|
21
|
+
单体与集合里的同一枚方框必须一样大;条目文字是控件文字,随档取 --xh-control-font-* */
|
|
22
22
|
--xh-_checkbox-group-box: var(--xh-control-indicator-md);
|
|
23
23
|
--xh-_checkbox-group-glyph: calc(var(--xh-_checkbox-group-box) * 0.75);
|
|
24
24
|
--xh-_checkbox-group-gap: var(--xh-control-gap-md);
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
/* 勾中的填色随语气走;没写 data-tone 时退回品牌色 */
|
|
30
30
|
--xh-_checkbox-group-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
31
31
|
--xh-_checkbox-group-on-accent: var(--xh-_tone-on, var(--xh-fg-on-brand));
|
|
32
|
-
/*
|
|
32
|
+
/* 方框是字段家族的控制盒(字段静息形态):透明底 + --xh-border-control 描边 + 无影,不消费海拔与顶光 */
|
|
33
33
|
--xh-_checkbox-group-bg: var(--xh-checkbox-group-indicator-bg, transparent);
|
|
34
34
|
/* 条目与全选格是方框的承载面:行自己坐画布走 100 → 200,行面上的方框按淡底容器阶梯再上一档(200 → 300)。
|
|
35
35
|
两支私有槽是这一档的唯一来源——宿主拿它们给 --xh-action-host-bg-* 赋值(桥接槽只写不读),
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
--xh-_checkbox-group-host-bg-pressed: var(--xh-bg-subtle-active);
|
|
39
39
|
|
|
40
40
|
/* 标题与条目都是根的直接子节点,一支 gap 同时管「标题到集合」与「条目之间」:
|
|
41
|
-
集合标题与集合隔 --xh-space-2
|
|
41
|
+
集合标题与集合隔 --xh-space-2,同组条目之间也是同一档紧密关系 */
|
|
42
42
|
display: flex;
|
|
43
43
|
gap: var(--xh-checkbox-group-gap, var(--xh-space-2));
|
|
44
44
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
align-items: center;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
/*
|
|
74
|
+
/* 集合标题:14 / 500 / fg-muted,字号不随 size 档 */
|
|
75
75
|
[data-scope='checkbox-group'][data-part='label'] {
|
|
76
76
|
color: var(--xh-checkbox-group-label-fg, var(--xh-fg-muted));
|
|
77
77
|
font-size: var(--xh-checkbox-group-label-font-size, var(--xh-text-label-size));
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
color: var(--xh-checkbox-group-label-fg-disabled, var(--xh-fg-subtle));
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
/* 条目是「方框 +
|
|
88
|
+
/* 条目是「方框 + 文案」的整行命中区:接 Action Control row 档、ghost 形态,悬停 / 按下 / 禁用面、手型、
|
|
89
89
|
过渡与焦点环由家族给,按下只换面不缩放(row 档专属按压块 scale: none);这里只把使用者槽映射到桥接槽。
|
|
90
90
|
行自己坐画布走 100 → 200(--xh-action-bg-* 钉住自己的面),行面上的方框按淡底容器阶梯再上一档
|
|
91
91
|
(--xh-action-host-bg-* 向内声明自己是方框的承载面,host 槽只对后代生效——自己的面已由 --xh-action-bg-* 钉住;
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
box-shadow: var(--xh-checkbox-group-indicator-shadow, none);
|
|
150
150
|
font-size: var(--xh-checkbox-group-indicator-font-size, var(--xh-_checkbox-group-glyph));
|
|
151
151
|
line-height: var(--xh-leading-none);
|
|
152
|
-
/*
|
|
152
|
+
/* 方框不缩放(行级只换面),过渡只有底与描边;按下走 press 时间线、释放同走 micro */
|
|
153
153
|
transition:
|
|
154
154
|
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
155
155
|
border-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
content: '';
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
/* 悬停整行时未勾选的方框描边升一档(字段静息 → hover
|
|
164
|
+
/* 悬停整行时未勾选的方框描边升一档(字段静息 → hover 的同一条阶梯);
|
|
165
165
|
勾中的方框描边与底同色,悬停不换描边——填色本身已经在表达状态 */
|
|
166
166
|
@media (hover: hover) {
|
|
167
167
|
[data-scope='checkbox-group'][data-part='root']:not([data-disabled]):not([data-readonly]):not([data-invalid])
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
/* 按下去要有回应。方框不是激活宿主:宿主是投影了 row 档的整行(条目 / 全选格),方框在宿主的
|
|
185
|
-
:hover / :is(:active, [data-pressed]) 下读宿主 host
|
|
185
|
+
:hover / :is(:active, [data-pressed]) 下读宿主 host 槽的同一来源换面、不缩放——行按下是 200,
|
|
186
186
|
坐在上面的方框到 300(行以 --xh-action-host-bg-pressed 声明自己是方框的承载面,桥接槽只写不读,
|
|
187
187
|
方框读的是喂给它的那支私有槽),勾中的换到语气的 active 档;
|
|
188
188
|
与家族按压块同一时间线(按下 --xh-motion-duration-press,释放同走 micro) */
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
border-color: var(--xh-checkbox-group-indicator-border-invalid, var(--xh-border-invalid));
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
/*
|
|
274
|
+
/* 禁用:--xh-border-default 描边 + --xh-bg-subtle 底 + --xh-fg-disabled 字形,不靠 opacity */
|
|
275
275
|
[data-scope='checkbox-group'][data-part='root'][data-disabled]
|
|
276
276
|
[data-scope='checkbox-group'][data-part='indicator'],
|
|
277
277
|
[data-scope='checkbox-group'][data-part='item'][data-disabled]
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
家族的禁用块同样只读 data-disabled。position 是给叠在方框上的那颗字形 ::after 当定位基准 */
|
|
294
294
|
[data-scope='checkbox-group'][data-part='select-all-trigger'] {
|
|
295
295
|
--xh-action-gap: var(--xh-checkbox-group-select-all-trigger-gap, var(--xh-_checkbox-group-gap));
|
|
296
|
-
/* 全选格的身份是嵌在 control
|
|
296
|
+
/* 全选格的身份是嵌在 control 内的小方框(select-all 方框取 inset),与条目方框同一档 */
|
|
297
297
|
--xh-action-radius: var(--xh-checkbox-group-select-all-trigger-radius, var(--xh-shape-inset));
|
|
298
298
|
--xh-action-font-size: var(--xh-checkbox-group-select-all-trigger-font-size, var(--xh-_checkbox-group-font-size));
|
|
299
299
|
--xh-action-padding-inline: 0;
|
package/css/checkbox.css
CHANGED
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
/* 实心底上的勾与横杠,同样没写 data-tone 时退回原来的品牌底前景色 */
|
|
28
28
|
--xh-_checkbox-on-accent: var(--xh-_tone-on, var(--xh-fg-on-brand));
|
|
29
29
|
|
|
30
|
-
/* 方框接 Action Control icon
|
|
31
|
-
|
|
30
|
+
/* 方框接 Action Control icon 档(定尺方框):盒型、悬停 / 按下 / 禁用面、0.97 缩放与换底、粗指针热区、
|
|
31
|
+
焦点环由家族配方给,这里只把使用者槽映射到桥接槽。面按字段静息形态取值:透明底 +
|
|
32
32
|
--xh-border-control 描边 + 无影,不消费海拔与顶光;悬停只把描边升一档,底不动;按下换到 200 档中性面
|
|
33
33
|
(白底承载);边长随 --xh-control-indicator-* 走,不取家族的 profile 尺寸。
|
|
34
34
|
常态 / 勾中 / 校验失败 / 只读只换下面四支私有槽,桥接槽的映射写一次 */
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
|
|
102
102
|
/* 悬停标签文字时也让控制盒回应,整行可点不再只有移到 16px 小盒上才看得出来:
|
|
103
103
|
指针落在方框上时由家族的悬停块换到 --xh-action-border-hover,落在标签文字上时这里补同一档;
|
|
104
|
-
未勾选的方框描边升一档(字段静息 → hover
|
|
104
|
+
未勾选的方框描边升一档(字段静息 → hover 的同一条阶梯),勾中 / 校验失败的方框由上面的映射钉住不换 */
|
|
105
105
|
@media (hover: hover) {
|
|
106
106
|
[data-scope='checkbox'][data-part='label']:not([data-disabled]):not([data-readonly]):hover
|
|
107
107
|
[data-scope='checkbox'][data-part='root'] {
|
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
/* —— 带文字的整行:<label> 包住控件与文字,与 checkbox-group 的条目、switch 的标签同一副样子 ——
|
|
216
|
-
文字是控件自己的文字,字号随 size 档取 --xh-control-font
|
|
216
|
+
文字是控件自己的文字,字号随 size 档取 --xh-control-font-*(控件字号随档);
|
|
217
217
|
行高取正文档,长文字可以自然换行 */
|
|
218
218
|
[data-scope='checkbox'][data-part='label'] {
|
|
219
219
|
--xh-_checkbox-label-gap: var(--xh-control-gap-md);
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
--xh-_checkbox-label-font-size: var(--xh-control-font-lg);
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
/* 禁用标签色统一 --xh-fg-subtle
|
|
241
|
+
/* 禁用标签色统一 --xh-fg-subtle */
|
|
242
242
|
[data-scope='checkbox'][data-part='label'][data-disabled] {
|
|
243
243
|
color: var(--xh-checkbox-label-fg-disabled, var(--xh-fg-subtle));
|
|
244
244
|
cursor: not-allowed;
|