@xihan-ui/styles 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1328 -0
- package/README.md +6 -1
- package/component-tokens.d.ts +505 -111
- package/components.tokens.json +34750 -26291
- package/css/accordion.css +39 -13
- package/css/alert.css +61 -3
- package/css/anchor.css +49 -11
- package/css/approval.css +124 -84
- package/css/avatar-group.css +1 -1
- package/css/avatar.css +13 -5
- package/css/back-top.css +63 -44
- package/css/badge.css +63 -13
- package/css/bar-code.css +1 -1
- package/css/breadcrumb.css +63 -4
- package/css/button-group.css +5 -5
- package/css/button.css +69 -21
- package/css/calendar-picker.css +27 -8
- package/css/calendar-range-picker.css +48 -11
- package/css/card.css +116 -2
- package/css/carousel.css +153 -48
- package/css/cartesian-chart.css +830 -0
- package/css/cascader.css +184 -70
- package/css/checkbox-group.css +69 -99
- package/css/checkbox.css +21 -54
- package/css/citation.css +470 -0
- package/css/clipboard.css +23 -66
- package/css/code-view.css +103 -8
- package/css/collapsible.css +37 -11
- package/css/color-field.css +18 -0
- package/css/color-picker.css +57 -62
- package/css/color-slider.css +26 -19
- package/css/color-swatch-picker.css +8 -6
- package/css/combobox.css +82 -37
- package/css/command.css +48 -48
- package/css/context-menu.css +43 -28
- package/css/date-field.css +23 -0
- package/css/date-picker.css +57 -24
- package/css/date-range-picker.css +301 -14
- package/css/description.css +17 -1
- package/css/descriptions.css +43 -1
- package/css/dialog.css +99 -43
- package/css/diff-view.css +101 -16
- package/css/download-trigger.css +46 -80
- package/css/drawer.css +168 -133
- package/css/editable.css +19 -0
- package/css/empty-state.css +8 -7
- package/css/field-array.css +36 -0
- package/css/field.css +17 -19
- package/css/fieldset.css +1 -1
- package/css/file-upload.css +126 -136
- package/css/flex.css +324 -8
- package/css/float-button.css +168 -41
- package/css/floating-panel.css +59 -27
- package/css/form.css +26 -20
- package/css/funnel-chart.css +106 -0
- package/css/graph-chart.css +205 -0
- package/css/grid-list.css +235 -0
- package/css/grid.css +252 -1
- package/css/heatmap.css +119 -36
- package/css/hierarchy-chart.css +298 -0
- package/css/hover-card.css +33 -18
- package/css/icon.css +100 -0
- package/css/image-cropper.css +34 -8
- package/css/image-viewer.css +169 -26
- package/css/image.css +23 -4
- package/css/infinite-scroll.css +2 -2
- package/css/input-group.css +13 -15
- package/css/json-viewer.css +55 -7
- package/css/kbd.css +1 -1
- package/css/layout.css +71 -21
- package/css/liquid.css +106 -0
- package/css/list.css +2 -2
- package/css/listbox.css +72 -23
- package/css/loading-bar.css +27 -13
- package/css/log.css +131 -35
- package/css/markdown-stream.css +1 -1
- package/css/marquee.css +163 -7
- package/css/matrix-code.css +1 -1
- package/css/mention.css +35 -21
- package/css/menu.css +40 -28
- package/css/menubar.css +42 -28
- package/css/message-feed.css +174 -53
- package/css/navigation-menu.css +177 -18
- package/css/notification.css +431 -110
- package/css/number-field.css +22 -0
- package/css/page-header.css +4 -2
- package/css/pagination.css +129 -29
- package/css/password-input.css +40 -8
- package/css/pie-chart.css +247 -0
- package/css/popconfirm.css +50 -58
- package/css/popover.css +55 -21
- package/css/progress.css +308 -10
- package/css/prompt-input.css +37 -1
- package/css/question-flow.css +104 -64
- package/css/radar-chart.css +233 -0
- package/css/radio-group.css +372 -14
- package/css/rating.css +25 -27
- package/css/reasoning.css +62 -55
- package/css/reset.css +1 -1
- package/css/resizable.css +6 -1
- package/css/sankey-chart.css +174 -0
- package/css/scroll-area.css +32 -0
- package/css/scrollbar.css +1 -1
- package/css/select.css +76 -59
- package/css/side-nav.css +177 -30
- package/css/signature-pad.css +23 -8
- package/css/skeleton.css +13 -14
- package/css/slider.css +39 -17
- package/css/sortable.css +38 -8
- package/css/sparkline.css +164 -0
- package/css/spinner.css +50 -22
- package/css/splitter.css +8 -2
- package/css/statistic.css +10 -0
- package/css/steps.css +257 -38
- package/css/switch.css +30 -55
- package/css/table.css +168 -128
- package/css/tabs.css +243 -31
- package/css/tag-group.css +65 -37
- package/css/tag.css +55 -14
- package/css/tags-input.css +40 -3
- package/css/text-field.css +19 -0
- package/css/time-field.css +20 -1
- package/css/time-picker.css +44 -17
- package/css/time-range-picker.css +45 -18
- package/css/timeline.css +1 -1
- package/css/toggle-group.css +8 -8
- package/css/toggle.css +6 -5
- package/css/tool-call.css +64 -56
- package/css/toolbar.css +105 -7
- package/css/tooltip.css +18 -7
- package/css/tour.css +49 -21
- package/css/transfer.css +104 -81
- package/css/tree-select.css +235 -58
- package/css/tree.css +240 -147
- package/css/truncate.css +55 -12
- package/css/typography.css +93 -0
- package/css/virtualizer.css +57 -1
- package/css/watermark.css +23 -0
- package/family/action-control.css +14 -5
- package/family/chart.css +480 -0
- package/family/check-mark.css +94 -0
- package/family/choice-card.css +97 -0
- package/family/collection-item.css +70 -27
- package/family/field-chrome.css +1 -12
- package/family/loading-ring.css +95 -0
- package/family/material.css +72 -0
- package/family/menu-choice.css +56 -0
- package/family/motion.css +208 -11
- package/family/tag-list.css +59 -0
- package/index.css +23363 -14091
- package/index.unlayered.css +23198 -13922
- package/package.json +20 -8
- package/css/gradient-text.css +0 -91
- package/css/icon-wrapper.css +0 -81
- package/css/segmented.css +0 -280
- package/css/toast.css +0 -499
package/css/carousel.css
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
/* 定义 carousel 样式。 */
|
|
7
7
|
|
|
8
8
|
@import '../family/action-control.css';
|
|
9
|
+
@import '../family/material.css';
|
|
9
10
|
|
|
10
11
|
@layer xihan.components {
|
|
11
12
|
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
@@ -16,11 +17,6 @@
|
|
|
16
17
|
/* 根节点建立自己的覆盖层:视口占满容器,导航与分页压在内容之上,
|
|
17
18
|
isolation 把内部层号关在本组件内,不参与页面级层序。 */
|
|
18
19
|
[data-scope='carousel'][data-part='root'] {
|
|
19
|
-
/* 三颗控制钮浮在媒体之上,缺省 M2 磨砂面:背景、边缘、顶光、投影与磨砂从同一份配方取,
|
|
20
|
-
高对比、减少透明度、打印和强制色便能一起降级。三支写在根上:check-elevation-role 按赋值点认海拔角色 */
|
|
21
|
-
--xh-_carousel-trigger-bg: var(--xh-material-frosted-bg);
|
|
22
|
-
--xh-_carousel-trigger-border: var(--xh-material-frosted-border);
|
|
23
|
-
--xh-_carousel-trigger-shadow: var(--xh-material-frosted-shadow);
|
|
24
20
|
/* 自动播放开启时由 Headless 写入真实间隔;0ms 只用于未接入运行时的静态标记。 */
|
|
25
21
|
--xh-_carousel-autoplay-duration: 0ms;
|
|
26
22
|
--xh-_carousel-progress-from: 0 1;
|
|
@@ -56,14 +52,14 @@
|
|
|
56
52
|
}
|
|
57
53
|
|
|
58
54
|
/* 被位移的那条轨道。
|
|
59
|
-
|
|
55
|
+
translate 归连接层:整页位移与拖拽中的像素偏移都写在它的内联 style 上,
|
|
60
56
|
样式层再碰这条轴就会把两个位移互相覆盖,画面当场错位。
|
|
61
57
|
这里只负责排布与过渡 */
|
|
62
58
|
[data-scope='carousel'][data-part='list'] {
|
|
63
59
|
display: flex;
|
|
64
60
|
flex-direction: row;
|
|
65
61
|
block-size: 100%;
|
|
66
|
-
transition:
|
|
62
|
+
transition: translate var(--xh-carousel-duration, var(--xh-motion-duration-slide))
|
|
67
63
|
var(--xh-carousel-ease, var(--xh-motion-ease-slide));
|
|
68
64
|
}
|
|
69
65
|
|
|
@@ -79,7 +75,42 @@
|
|
|
79
75
|
整条轨道的位移这一档每帧都在改,合成层只在这一档备好,松手随 data-dragging 一起撤掉 */
|
|
80
76
|
[data-scope='carousel'][data-part='list'][data-dragging] {
|
|
81
77
|
transition: none;
|
|
82
|
-
will-change:
|
|
78
|
+
will-change: translate;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* 松手后由弹簧带着松手速度逐帧把轨道收到落定位置,同样不能再叠一层过渡;落定即撤 */
|
|
82
|
+
/* 回绕落定后轨道已无动画地归位:下一次翻页撤掉这个标记,过渡照常 */
|
|
83
|
+
[data-scope='carousel'][data-part='list'][data-snapped] {
|
|
84
|
+
transition: none;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
[data-scope='carousel'][data-part='list'][data-animating] {
|
|
88
|
+
transition: none;
|
|
89
|
+
will-change: translate;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* 淡变换页:条目叠进同一格,轨道不位移(连接层不写页位移)。
|
|
93
|
+
当前一张压在上面淡入,离开的那一张同一段淡出、淡完才藏起——visibility 在两端之间插值时取 visible,
|
|
94
|
+
过渡走到末端才落成 hidden。时长与曲线跟平移同一档:减弱动效下 slide 为 1ms,直接换 */
|
|
95
|
+
[data-scope='carousel'][data-part='list'][data-effect='fade']:not([hidden]) {
|
|
96
|
+
display: grid;
|
|
97
|
+
grid-template: minmax(0, 1fr) / minmax(0, 1fr);
|
|
98
|
+
transition: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
[data-scope='carousel'][data-part='list'][data-effect='fade'] > [data-scope='carousel'][data-part='item'] {
|
|
102
|
+
grid-area: 1 / 1;
|
|
103
|
+
opacity: 0;
|
|
104
|
+
visibility: hidden;
|
|
105
|
+
transition-property: opacity, visibility;
|
|
106
|
+
transition-duration: var(--xh-carousel-duration, var(--xh-motion-duration-slide));
|
|
107
|
+
transition-timing-function: var(--xh-carousel-ease, var(--xh-motion-ease-slide));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
[data-scope='carousel'][data-part='list'][data-effect='fade'] > [data-scope='carousel'][data-part='item'][data-inview] {
|
|
111
|
+
z-index: 1;
|
|
112
|
+
opacity: 1;
|
|
113
|
+
visibility: visible;
|
|
83
114
|
}
|
|
84
115
|
|
|
85
116
|
/* 一张幻灯片。
|
|
@@ -99,38 +130,42 @@
|
|
|
99
130
|
display: none;
|
|
100
131
|
}
|
|
101
132
|
|
|
102
|
-
/* 两端按钮与播放开关:浮在媒体之上的单图标圆钮,接 Action Control floating
|
|
133
|
+
/* 两端按钮与播放开关:浮在媒体之上的单图标圆钮,接 Action Control floating 档:
|
|
103
134
|
盒型(md = box-lg 48px,圆形)、四态面、0.97 按压与 44px 命中区由家族配方给出,组件没有 size 轴、固定 md。
|
|
104
135
|
连接层不投影 variant:面由这里桥接到磨砂缺省(使用者槽 → 磨砂面),悬停 / 按下的底走画布承载的阶梯
|
|
105
|
-
(100 → 200
|
|
136
|
+
(100 → 200,取不透明档:钮压在图上,半透明的墨色盖不住画面),边缘与投影不动;这里只留定位、桥接槽与图标尺 */
|
|
106
137
|
[data-scope='carousel'][data-part='prev-trigger'],
|
|
107
138
|
[data-scope='carousel'][data-part='next-trigger'],
|
|
108
139
|
[data-scope='carousel'][data-part='autoplay-trigger'] {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
--xh-action-bg-
|
|
112
|
-
--xh-action-bg-
|
|
113
|
-
--xh-action-bg-
|
|
114
|
-
--xh-action-
|
|
115
|
-
--xh-action-
|
|
116
|
-
--xh-action-fg-
|
|
117
|
-
--xh-action-fg-
|
|
118
|
-
--xh-action-
|
|
119
|
-
--xh-action-
|
|
120
|
-
--xh-action-border-
|
|
121
|
-
--xh-action-border-
|
|
122
|
-
--xh-action-border-
|
|
123
|
-
--xh-action-
|
|
124
|
-
--xh-action-
|
|
125
|
-
--xh-action-shadow-
|
|
126
|
-
--xh-action-shadow-
|
|
127
|
-
--xh-action-shadow-
|
|
140
|
+
/* 面走材质家族配方(family/material.css):frosted 档的底、交互阶梯、描边、投影、1px 顶光与背景滤镜,
|
|
141
|
+
liquid 档由配方换成液态面;这里把使用者槽接到 Action Control 的桥接槽 */
|
|
142
|
+
--xh-action-bg-rest: var(--xh-carousel-trigger-bg, var(--xh-_material-bg));
|
|
143
|
+
--xh-action-bg-hover: var(--xh-carousel-trigger-bg-hover, var(--xh-_material-bg-hover));
|
|
144
|
+
--xh-action-bg-pressed: var(--xh-carousel-trigger-bg-active, var(--xh-_material-bg-pressed));
|
|
145
|
+
--xh-action-bg-focus-visible: var(--xh-carousel-trigger-bg, var(--xh-_material-bg-focus));
|
|
146
|
+
--xh-action-bg-disabled: var(--xh-carousel-trigger-bg, var(--xh-_material-bg));
|
|
147
|
+
--xh-action-fg-rest: var(--xh-carousel-trigger-fg, var(--xh-_material-fg));
|
|
148
|
+
--xh-action-fg-hover: var(--xh-carousel-trigger-fg, var(--xh-_material-fg));
|
|
149
|
+
--xh-action-fg-pressed: var(--xh-carousel-trigger-fg, var(--xh-_material-fg));
|
|
150
|
+
--xh-action-fg-focus-visible: var(--xh-carousel-trigger-fg, var(--xh-_material-fg));
|
|
151
|
+
--xh-action-border-rest: var(--xh-carousel-trigger-border, var(--xh-_material-border));
|
|
152
|
+
--xh-action-border-hover: var(--xh-carousel-trigger-border, var(--xh-_material-border));
|
|
153
|
+
--xh-action-border-pressed: var(--xh-carousel-trigger-border, var(--xh-_material-border));
|
|
154
|
+
--xh-action-border-focus-visible: var(--xh-carousel-trigger-border, var(--xh-_material-border));
|
|
155
|
+
--xh-action-border-disabled: var(--xh-carousel-trigger-border, var(--xh-_material-border));
|
|
156
|
+
--xh-action-shadow-rest: var(--xh-carousel-trigger-shadow, var(--xh-_material-shadow));
|
|
157
|
+
--xh-action-shadow-hover: var(--xh-carousel-trigger-shadow-hover, var(--xh-_material-shadow));
|
|
158
|
+
--xh-action-shadow-pressed: var(--xh-carousel-trigger-shadow, var(--xh-_material-shadow));
|
|
159
|
+
--xh-action-shadow-focus-visible: var(--xh-carousel-trigger-shadow, var(--xh-_material-shadow));
|
|
160
|
+
--xh-action-shadow-disabled: var(--xh-carousel-trigger-shadow, var(--xh-_material-shadow));
|
|
161
|
+
--xh-action-highlight-rest: var(--xh-_material-highlight);
|
|
162
|
+
--xh-action-highlight-hover: var(--xh-_material-highlight);
|
|
163
|
+
--xh-action-highlight-pressed: var(--xh-_material-highlight);
|
|
164
|
+
--xh-action-highlight-focus-visible: var(--xh-_material-highlight);
|
|
165
|
+
--xh-action-highlight-disabled: var(--xh-_material-highlight);
|
|
166
|
+
--xh-action-bg-hover: var(--xh-carousel-trigger-bg-hover, var(--xh-bg-subtle-opaque));
|
|
167
|
+
--xh-action-bg-pressed: var(--xh-carousel-trigger-bg-active, var(--xh-bg-subtle-hover-opaque));
|
|
128
168
|
/* M2 顶光走配方的高光通道 */
|
|
129
|
-
--xh-action-highlight-rest: var(--xh-material-frosted-highlight);
|
|
130
|
-
--xh-action-highlight-hover: var(--xh-material-frosted-highlight);
|
|
131
|
-
--xh-action-highlight-pressed: var(--xh-material-frosted-highlight);
|
|
132
|
-
--xh-action-highlight-focus-visible: var(--xh-material-frosted-highlight);
|
|
133
|
-
--xh-action-highlight-disabled: var(--xh-material-frosted-highlight);
|
|
134
169
|
--xh-action-radius: var(--xh-carousel-trigger-radius, var(--xh-_action-profile-radius));
|
|
135
170
|
--xh-action-visual-size: var(--xh-carousel-trigger-size, var(--xh-_action-profile-visual-size));
|
|
136
171
|
/* 作者塞进来的图标跟着 floating 档走(md 24px),与皮肤画的兜底字形同一把尺 */
|
|
@@ -138,8 +173,6 @@
|
|
|
138
173
|
|
|
139
174
|
position: absolute;
|
|
140
175
|
z-index: 1;
|
|
141
|
-
-webkit-backdrop-filter: var(--xh-material-frosted-backdrop);
|
|
142
|
-
backdrop-filter: var(--xh-material-frosted-backdrop);
|
|
143
176
|
}
|
|
144
177
|
|
|
145
178
|
[data-scope='carousel'][data-part='prev-trigger'],
|
|
@@ -212,7 +245,29 @@
|
|
|
212
245
|
translate: -50% 0;
|
|
213
246
|
}
|
|
214
247
|
|
|
215
|
-
/*
|
|
248
|
+
/* 起点是逻辑属性、平移是物理通道:rtl 下行内分量掉头,分页条才落回中线 */
|
|
249
|
+
[data-scope='carousel'][data-part='indicator-group'][data-orientation='horizontal']:dir(rtl) {
|
|
250
|
+
translate: 50% 0;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* liquid 档:分页点托在一条液态胶囊上(不贴边的一维栏取 pill),压在任何媒体上都看得清。
|
|
254
|
+
胶囊是墨色域,点的中性色随之取墨色;胶囊本身不可按,不挂按住形变 */
|
|
255
|
+
:where([data-material='liquid']) [data-scope='carousel'][data-part='indicator-group'][data-xh-liquid] {
|
|
256
|
+
padding: var(--xh-carousel-indicator-group-p, var(--xh-space-2));
|
|
257
|
+
border: var(--xh-stroke-thin) solid var(--xh-material-liquid-border);
|
|
258
|
+
border-radius: var(--xh-carousel-indicator-group-radius, var(--xh-shape-pill));
|
|
259
|
+
background: var(--xh-_liquid-bg);
|
|
260
|
+
box-shadow: var(--xh-_liquid-shadow);
|
|
261
|
+
-webkit-backdrop-filter: var(--xh-material-liquid-backdrop);
|
|
262
|
+
backdrop-filter: var(--xh-material-liquid-backdrop);
|
|
263
|
+
/* 翻页换到深浅不同的图上时色调翻转:底色、细线与投影一起淡变 */
|
|
264
|
+
transition:
|
|
265
|
+
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
266
|
+
border-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
267
|
+
box-shadow var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* 分页点与 Tour 的步骤点同一种语言:8px 圆点,当前页拉长成 20px 胶囊并换品牌色。
|
|
216
271
|
本体就是那颗点:没有文字(页码交给作者,默认不显示),底色即标记。
|
|
217
272
|
悬停 / 按下的回执落在点的颜色上:中性标记按前景阶梯加深一档、再加深一档;当前页按品牌阶梯压一档 */
|
|
218
273
|
[data-scope='carousel'][data-part='indicator'] {
|
|
@@ -226,14 +281,14 @@
|
|
|
226
281
|
padding: 0;
|
|
227
282
|
border: 0;
|
|
228
283
|
border-radius: var(--xh-carousel-indicator-radius, var(--xh-shape-circle));
|
|
229
|
-
background: var(--xh-carousel-indicator-bg, var(--xh-
|
|
284
|
+
background: var(--xh-carousel-indicator-bg, var(--xh-bg-subtle-hover-opaque));
|
|
230
285
|
font-size: 0;
|
|
231
286
|
/* 自动播放的进度条画在点里,超出胶囊的那截裁掉 */
|
|
232
287
|
overflow: hidden;
|
|
233
288
|
cursor: pointer;
|
|
234
289
|
transition:
|
|
235
|
-
inline-size var(--xh-motion-duration-
|
|
236
|
-
block-size var(--xh-motion-duration-
|
|
290
|
+
inline-size var(--xh-motion-duration-move) var(--xh-motion-ease-continuous),
|
|
291
|
+
block-size var(--xh-motion-duration-move) var(--xh-motion-ease-continuous),
|
|
237
292
|
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
238
293
|
scale var(--xh-motion-duration-release) var(--xh-motion-ease-release);
|
|
239
294
|
}
|
|
@@ -253,7 +308,7 @@
|
|
|
253
308
|
background: var(--xh-carousel-indicator-bg-hover, var(--xh-fg-muted));
|
|
254
309
|
}
|
|
255
310
|
|
|
256
|
-
/*
|
|
311
|
+
/* 按下:点的颜色再压一档,同时缩一下(同时换底);指针按住由 :active 表出,
|
|
257
312
|
Space / Enter 与触屏按住由 Headless 投影 data-pressed,三种输入同一副面 */
|
|
258
313
|
[data-scope='carousel'][data-part='indicator']:is(:active, [data-pressed]):not([data-current]) {
|
|
259
314
|
background: var(--xh-carousel-indicator-bg-active, var(--xh-fg-default));
|
|
@@ -271,7 +326,7 @@
|
|
|
271
326
|
|
|
272
327
|
/* 当前页:data-current 与 aria-current='true' 由连接层成对给出,
|
|
273
328
|
样式挂在 data 钩子上,无障碍语义留给 aria,两边各司其职。
|
|
274
|
-
拉长成胶囊并换品牌色(格状当前 =
|
|
329
|
+
拉长成胶囊并换品牌色(格状当前 = 实心品牌) */
|
|
275
330
|
[data-scope='carousel'][data-part='indicator'][data-current] {
|
|
276
331
|
inline-size: var(--xh-carousel-indicator-size-current, var(--xh-space-5));
|
|
277
332
|
border-radius: var(--xh-carousel-indicator-radius-current, var(--xh-shape-pill));
|
|
@@ -298,8 +353,9 @@
|
|
|
298
353
|
transition-timing-function: var(--xh-motion-ease-press);
|
|
299
354
|
}
|
|
300
355
|
|
|
301
|
-
/*
|
|
302
|
-
|
|
356
|
+
/* 自动播放的进度:胶囊是品牌淡底当轨道(仍是「当前」语义;淡底上公共环够对比,不灌环色),
|
|
357
|
+
品牌填充条从起点沿轨道方向长满这一页的时长。计时器每次恢复都重计一整个间隔,
|
|
358
|
+
进度条跟它同一口径:暂停时回到起点,恢复时从头走 */
|
|
303
359
|
[data-scope='carousel'][data-part='root'][data-autoplay]
|
|
304
360
|
[data-scope='carousel'][data-part='indicator'][data-current],
|
|
305
361
|
[data-scope='carousel'][data-part='root'][data-paused]
|
|
@@ -322,7 +378,8 @@
|
|
|
322
378
|
|
|
323
379
|
[data-scope='carousel'][data-part='root'][data-paused]
|
|
324
380
|
[data-scope='carousel'][data-part='indicator'][data-current]::before {
|
|
325
|
-
animation
|
|
381
|
+
animation: none;
|
|
382
|
+
scale: var(--xh-_carousel-progress-from);
|
|
326
383
|
}
|
|
327
384
|
|
|
328
385
|
/* 纵轨:胶囊沿块轴拉长,进度条从上往下长 */
|
|
@@ -350,6 +407,17 @@
|
|
|
350
407
|
rotate: 90deg;
|
|
351
408
|
}
|
|
352
409
|
|
|
410
|
+
[data-scope='carousel'][data-part='root'][data-orientation='vertical']
|
|
411
|
+
> :is([data-part='prev-trigger'], [data-part='next-trigger']):dir(rtl) {
|
|
412
|
+
translate: 50% 0;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/* 纵轨的翻页钮整颗转了 90°,形变会跟着转到错的方向,这一档不挂 */
|
|
416
|
+
:where([data-material='liquid']) [data-scope='carousel'][data-part='root'][data-orientation='vertical']
|
|
417
|
+
> :is([data-part='prev-trigger'], [data-part='next-trigger'])[data-xh-liquid] {
|
|
418
|
+
transform: none;
|
|
419
|
+
}
|
|
420
|
+
|
|
353
421
|
[data-scope='carousel'][data-part='root'][data-orientation='vertical']
|
|
354
422
|
> [data-part='prev-trigger'] {
|
|
355
423
|
inset-block-start: var(--xh-carousel-control-inset, var(--xh-space-3));
|
|
@@ -498,14 +566,19 @@
|
|
|
498
566
|
inline-size: var(--xh-carousel-indicator-size, var(--xh-space-2));
|
|
499
567
|
block-size: var(--xh-carousel-indicator-size, var(--xh-space-2));
|
|
500
568
|
border-radius: var(--xh-carousel-indicator-radius, var(--xh-shape-circle));
|
|
501
|
-
background: var(--xh-carousel-indicator-bg, var(--xh-
|
|
569
|
+
background: var(--xh-carousel-indicator-bg, var(--xh-bg-subtle-hover-opaque));
|
|
502
570
|
translate: -50% -50%;
|
|
571
|
+
/* 当前点伸长是跨尺寸的换位(move),与细指针下盒子本身的伸长同一档 */
|
|
503
572
|
transition:
|
|
504
|
-
inline-size var(--xh-motion-duration-
|
|
505
|
-
block-size var(--xh-motion-duration-
|
|
573
|
+
inline-size var(--xh-motion-duration-move) var(--xh-motion-ease-continuous),
|
|
574
|
+
block-size var(--xh-motion-duration-move) var(--xh-motion-ease-continuous),
|
|
506
575
|
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
507
576
|
}
|
|
508
577
|
|
|
578
|
+
[data-scope='carousel'][data-part='indicator']:dir(rtl)::after {
|
|
579
|
+
translate: 50% -50%;
|
|
580
|
+
}
|
|
581
|
+
|
|
509
582
|
[data-scope='carousel'][data-part='indicator']:is(:active, [data-pressed]):not([data-current])::after {
|
|
510
583
|
background: var(--xh-carousel-indicator-bg-active, var(--xh-fg-default));
|
|
511
584
|
}
|
|
@@ -546,6 +619,13 @@
|
|
|
546
619
|
translate: -50% -50%;
|
|
547
620
|
}
|
|
548
621
|
|
|
622
|
+
[data-scope='carousel'][data-part='root'][data-autoplay]
|
|
623
|
+
[data-scope='carousel'][data-part='indicator'][data-current]:dir(rtl)::before,
|
|
624
|
+
[data-scope='carousel'][data-part='root'][data-paused]
|
|
625
|
+
[data-scope='carousel'][data-part='indicator'][data-current]:dir(rtl)::before {
|
|
626
|
+
translate: 50% -50%;
|
|
627
|
+
}
|
|
628
|
+
|
|
549
629
|
[data-scope='carousel'][data-part='indicator-group'][data-orientation='vertical']
|
|
550
630
|
> [data-scope='carousel'][data-part='indicator'][data-current]::after,
|
|
551
631
|
[data-scope='carousel'][data-part='root'][data-autoplay]
|
|
@@ -558,6 +638,31 @@
|
|
|
558
638
|
block-size: var(--xh-carousel-indicator-size-current, var(--xh-space-5));
|
|
559
639
|
}
|
|
560
640
|
}
|
|
641
|
+
|
|
642
|
+
@media (forced-colors: active) {
|
|
643
|
+
/* 兜底字形是 mask 挖出来的一块底色,这一档里底色被系统换成 Canvas,字形跟着消失。
|
|
644
|
+
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
645
|
+
按钮面上取 ButtonText,悬停与按下时家族把按钮涂成 Highlight、字形换 HighlightText;
|
|
646
|
+
禁用取 GrayText */
|
|
647
|
+
[data-scope='carousel']:is([data-part='prev-trigger'], [data-part='next-trigger']):empty::before,
|
|
648
|
+
[data-scope='carousel'][data-part='autoplay-trigger'][data-state='running']:empty::before,
|
|
649
|
+
[data-scope='carousel'][data-part='autoplay-trigger'][data-state='paused']:empty::before {
|
|
650
|
+
forced-color-adjust: none;
|
|
651
|
+
background-color: ButtonText;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
[data-scope='carousel']:is([data-part='prev-trigger'], [data-part='next-trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before,
|
|
655
|
+
[data-scope='carousel'][data-part='autoplay-trigger'][data-state='running']:not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before,
|
|
656
|
+
[data-scope='carousel'][data-part='autoplay-trigger'][data-state='paused']:not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
657
|
+
background-color: HighlightText;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
[data-scope='carousel']:is([data-part='prev-trigger'], [data-part='next-trigger'])[data-disabled]:empty::before,
|
|
661
|
+
[data-scope='carousel'][data-part='autoplay-trigger'][data-state='running'][data-disabled]:empty::before,
|
|
662
|
+
[data-scope='carousel'][data-part='autoplay-trigger'][data-state='paused'][data-disabled]:empty::before {
|
|
663
|
+
background-color: GrayText;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
561
666
|
}
|
|
562
667
|
|
|
563
668
|
@layer xihan.motion {
|