@xihan-ui/styles 1.0.0-alpha.1 → 1.0.0-alpha.2
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 +80 -0
- package/css/accordion.css +5 -0
- package/css/affix.css +5 -0
- package/css/alert.css +5 -0
- package/css/anchor.css +5 -0
- package/css/avatar-group.css +5 -0
- package/css/avatar.css +5 -0
- package/css/back-top.css +5 -0
- package/css/badge.css +5 -0
- package/css/breadcrumb.css +5 -0
- package/css/button-group.css +5 -0
- package/css/button.css +15 -0
- package/css/calendar.css +5 -0
- package/css/card.css +5 -0
- package/css/carousel.css +5 -0
- package/css/cascader.css +8 -3
- package/css/checkbox-group.css +5 -0
- package/css/checkbox.css +5 -0
- package/css/clipboard.css +5 -0
- package/css/code-block.css +5 -0
- package/css/collapsible.css +5 -0
- package/css/color-picker.css +6 -1
- package/css/combobox.css +19 -0
- package/css/composer.css +5 -0
- package/css/context-menu.css +6 -8
- package/css/countdown.css +5 -0
- package/css/date-field.css +5 -0
- package/css/date-picker.css +6 -1
- package/css/descriptions.css +5 -0
- package/css/dialog.css +69 -9
- package/css/drawer.css +30 -9
- package/css/dynamic-input.css +5 -0
- package/css/editable.css +5 -0
- package/css/ellipsis.css +5 -0
- package/css/empty-state.css +5 -0
- package/css/field.css +5 -0
- package/css/file-upload.css +5 -0
- package/css/flex.css +5 -0
- package/css/float-button.css +5 -0
- package/css/form.css +6 -1
- package/css/gradient-text.css +5 -0
- package/css/grid.css +5 -0
- package/css/highlight.css +5 -0
- package/css/hover-card.css +19 -6
- package/css/icon-wrapper.css +5 -0
- package/css/icon.css +5 -0
- package/css/image-viewer.css +31 -11
- package/css/image.css +5 -0
- package/css/infinite-scroll.css +5 -0
- package/css/layout.css +5 -0
- package/css/list.css +5 -0
- package/css/listbox.css +5 -0
- package/css/loading-bar.css +5 -0
- package/css/log.css +5 -0
- package/css/marquee.css +5 -0
- package/css/mention.css +19 -0
- package/css/menu.css +19 -0
- package/css/menubar.css +6 -8
- package/css/navigation-menu.css +6 -1
- package/css/number-animation.css +5 -0
- package/css/number-field.css +5 -0
- package/css/page-header.css +5 -0
- package/css/pagination.css +5 -0
- package/css/pin-input.css +5 -0
- package/css/popconfirm.css +28 -7
- package/css/popover.css +19 -0
- package/css/popselect.css +19 -0
- package/css/progress.css +5 -0
- package/css/qr-code.css +5 -0
- package/css/radio-group.css +5 -0
- package/css/rating.css +5 -0
- package/css/result.css +5 -0
- package/css/scroll-area.css +5 -6
- package/css/select.css +19 -0
- package/css/separator.css +5 -0
- package/css/side-nav.css +5 -0
- package/css/skeleton.css +5 -0
- package/css/slider.css +5 -0
- package/css/spinner.css +9 -1
- package/css/splitter.css +5 -0
- package/css/statistic.css +5 -0
- package/css/steps.css +5 -0
- package/css/switch.css +14 -7
- package/css/table.css +5 -0
- package/css/tabs.css +5 -0
- package/css/tags-input.css +5 -0
- package/css/text-field.css +5 -0
- package/css/thread.css +5 -0
- package/css/time-field.css +5 -0
- package/css/time-picker.css +6 -1
- package/css/time.css +5 -0
- package/css/timeline.css +5 -0
- package/css/toast.css +13 -12
- package/css/toaster.css +5 -0
- package/css/toggle-group.css +5 -0
- package/css/toggle.css +5 -0
- package/css/toolbar.css +5 -0
- package/css/tooltip.css +19 -6
- package/css/tour.css +29 -9
- package/css/transfer.css +5 -0
- package/css/tree-select.css +19 -0
- package/css/tree.css +5 -0
- package/css/typography.css +5 -0
- package/css/virtualizer.css +5 -0
- package/css/watermark.css +5 -0
- package/index.css +0 -1
- package/index.unlayered.css +804 -153
- package/package.json +2 -3
- package/css/motion.css +0 -58
package/css/dynamic-input.css
CHANGED
package/css/editable.css
CHANGED
package/css/ellipsis.css
CHANGED
package/css/empty-state.css
CHANGED
package/css/field.css
CHANGED
package/css/file-upload.css
CHANGED
package/css/flex.css
CHANGED
package/css/float-button.css
CHANGED
package/css/form.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='form'] {
|
|
4
|
+
--xh-form-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
/* 表单是一列字段:竖排、字段之间留一档间距。root 就是那个原生 <form> */
|
|
3
8
|
[data-scope='form'][data-part='root'] {
|
|
4
9
|
display: flex;
|
|
@@ -186,7 +191,7 @@
|
|
|
186
191
|
@keyframes xh-form-summary-enter {
|
|
187
192
|
from {
|
|
188
193
|
opacity: 0;
|
|
189
|
-
translate: 0 calc(-1 * var(--xh-
|
|
194
|
+
translate: 0 calc(-1 * var(--xh-motion-distance-sm));
|
|
190
195
|
}
|
|
191
196
|
|
|
192
197
|
to {
|
package/css/gradient-text.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='gradient-text'] {
|
|
4
|
+
--xh-gradient-text-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
/* 渐变画在背景上,再用 background-clip 把背景裁进字形里;前景必须透明才透得出底下的渐变。
|
|
3
8
|
两条 background-clip 都写:WebKit 只认带前缀那条。
|
|
4
9
|
-webkit-text-fill-color 在 WebKit 里决定字形填充色并盖过 color,也要一并透明。 */
|
package/css/grid.css
CHANGED
package/css/highlight.css
CHANGED
package/css/hover-card.css
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
+
@layer xihan.motion {
|
|
2
|
+
/* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
3
|
+
动画会静默地整个不跑。每份皮肤都能单独引入,所以它用到的关键帧都写在自己身上。 */
|
|
4
|
+
@keyframes xh-fade-in {
|
|
5
|
+
from {
|
|
6
|
+
opacity: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
to {
|
|
10
|
+
opacity: 1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
@layer xihan.components {
|
|
16
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
17
|
+
[data-scope='hover-card'] {
|
|
18
|
+
--xh-hover-card-skin: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
2
21
|
/* 根节点只把 trigger 与浮层收在一处,不参与定位(坐标系仍由祖先的定位上下文决定) */
|
|
3
22
|
[data-scope='hover-card'][data-part='root'] {
|
|
4
23
|
display: inline-block;
|
|
@@ -141,10 +160,4 @@
|
|
|
141
160
|
border-block-end: 0;
|
|
142
161
|
border-inline-start: 0;
|
|
143
162
|
}
|
|
144
|
-
|
|
145
|
-
@media (prefers-reduced-motion: reduce) {
|
|
146
|
-
[data-scope='hover-card'][data-part='content'] {
|
|
147
|
-
animation-duration: 0.01ms !important;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
163
|
}
|
package/css/icon-wrapper.css
CHANGED
package/css/icon.css
CHANGED
package/css/image-viewer.css
CHANGED
|
@@ -1,4 +1,33 @@
|
|
|
1
|
+
@layer xihan.motion {
|
|
2
|
+
/* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
3
|
+
动画会静默地整个不跑。每份皮肤都能单独引入,所以它用到的关键帧都写在自己身上。 */
|
|
4
|
+
@keyframes xh-fade-in {
|
|
5
|
+
from {
|
|
6
|
+
opacity: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
to {
|
|
10
|
+
opacity: 1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@keyframes xh-fade-out {
|
|
15
|
+
from {
|
|
16
|
+
opacity: 1;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
to {
|
|
20
|
+
opacity: 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
1
25
|
@layer xihan.components {
|
|
26
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
27
|
+
[data-scope='image-viewer'] {
|
|
28
|
+
--xh-image-viewer-skin: 1;
|
|
29
|
+
}
|
|
30
|
+
|
|
2
31
|
[data-scope='image-viewer'][data-part='backdrop'] {
|
|
3
32
|
position: fixed;
|
|
4
33
|
inset: 0;
|
|
@@ -12,7 +41,7 @@
|
|
|
12
41
|
}
|
|
13
42
|
|
|
14
43
|
[data-scope='image-viewer'][data-part='backdrop'][data-state='closed'] {
|
|
15
|
-
animation: xh-fade-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit);
|
|
44
|
+
animation: xh-fade-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
16
45
|
}
|
|
17
46
|
|
|
18
47
|
[data-scope='image-viewer'][data-part='positioner'] {
|
|
@@ -41,11 +70,7 @@
|
|
|
41
70
|
}
|
|
42
71
|
|
|
43
72
|
[data-scope='image-viewer'][data-part='content'][data-state='closed'] {
|
|
44
|
-
animation: xh-fade-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
[data-scope='image-viewer'][data-part='content'][hidden] {
|
|
48
|
-
display: none;
|
|
73
|
+
animation: xh-fade-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
49
74
|
}
|
|
50
75
|
|
|
51
76
|
[data-scope='image-viewer'][data-part='viewport'] {
|
|
@@ -164,11 +189,6 @@
|
|
|
164
189
|
}
|
|
165
190
|
|
|
166
191
|
@media (prefers-reduced-motion: reduce) {
|
|
167
|
-
[data-scope='image-viewer'][data-part='backdrop'],
|
|
168
|
-
[data-scope='image-viewer'][data-part='content'] {
|
|
169
|
-
animation-duration: 0.01ms;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
192
|
[data-scope='image-viewer'][data-part='image'] {
|
|
173
193
|
transition: none;
|
|
174
194
|
}
|
package/css/image.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='image'] {
|
|
4
|
+
--xh-image-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
/* 尺寸交给三个变量而不是写死:这个组件既要能当封面图,也要能当头图与缩略图。
|
|
3
8
|
给了 --xh-image-ratio 才有确定高度,回退内容与图片在同一个盒子里换人时不会跳。 */
|
|
4
9
|
[data-scope='image'][data-part='root'] {
|
package/css/infinite-scroll.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='infinite-scroll'] {
|
|
4
|
+
--xh-infinite-scroll-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
/*
|
|
3
8
|
* 列表外壳这一层刻意不给盒模型:滚的是页面还是作者自己的 overflow 容器、列表长什么样,
|
|
4
9
|
* 都归作者的布局管,组件只往它身上挂 data-state / data-loading / data-disabled 供作者取用。
|
package/css/layout.css
CHANGED
package/css/list.css
CHANGED
package/css/listbox.css
CHANGED
package/css/loading-bar.css
CHANGED
package/css/log.css
CHANGED
package/css/marquee.css
CHANGED
package/css/mention.css
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
+
@layer xihan.motion {
|
|
2
|
+
/* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
3
|
+
动画会静默地整个不跑。每份皮肤都能单独引入,所以它用到的关键帧都写在自己身上。 */
|
|
4
|
+
@keyframes xh-fade-in {
|
|
5
|
+
from {
|
|
6
|
+
opacity: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
to {
|
|
10
|
+
opacity: 1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
@layer xihan.components {
|
|
16
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
17
|
+
[data-scope='mention'] {
|
|
18
|
+
--xh-mention-skin: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
2
21
|
[data-scope='mention'][data-part='root'] {
|
|
3
22
|
/* 尺寸档只换这四个私有槽,输入框与候选都从 root 继承它们,换档不必给每个部件各写一条选择器。
|
|
4
23
|
浮层在 positioner 里、也是 root 的后代,一并继承 */
|
package/css/menu.css
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
+
@layer xihan.motion {
|
|
2
|
+
/* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
3
|
+
动画会静默地整个不跑。每份皮肤都能单独引入,所以它用到的关键帧都写在自己身上。 */
|
|
4
|
+
@keyframes xh-fade-in {
|
|
5
|
+
from {
|
|
6
|
+
opacity: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
to {
|
|
10
|
+
opacity: 1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
@layer xihan.components {
|
|
16
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
17
|
+
[data-scope='menu'] {
|
|
18
|
+
--xh-menu-skin: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
2
21
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
3
22
|
[data-scope='menu'][data-part='positioner'] {
|
|
4
23
|
position: fixed;
|
package/css/menubar.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='menubar'] {
|
|
4
|
+
--xh-menubar-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
/* 一排 trigger。主轴跟着 data-orientation 走:菜单栏本身可以横排也可以竖排 */
|
|
3
8
|
[data-scope='menubar'][data-part='root'] {
|
|
4
9
|
/* 尺寸档只换这五个私有槽,trigger 与菜单里的条目都从 root 继承它们,
|
|
@@ -155,13 +160,6 @@
|
|
|
155
160
|
animation: xh-menubar-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter);
|
|
156
161
|
}
|
|
157
162
|
|
|
158
|
-
/* 关掉动效的用户不该被涨开动画晃一下;这里只管本组件,公共那份不动 */
|
|
159
|
-
@media (prefers-reduced-motion: reduce) {
|
|
160
|
-
[data-scope='menubar'][data-part='content'][data-state='open'] {
|
|
161
|
-
animation-duration: 0.01ms;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
163
|
[data-scope='menubar'][data-part='group'] {
|
|
166
164
|
display: flex;
|
|
167
165
|
flex-direction: column;
|
|
@@ -271,7 +269,7 @@
|
|
|
271
269
|
@keyframes xh-menubar-in {
|
|
272
270
|
from {
|
|
273
271
|
opacity: 0;
|
|
274
|
-
scale:
|
|
272
|
+
scale: var(--xh-motion-scale-enter);
|
|
275
273
|
}
|
|
276
274
|
|
|
277
275
|
to {
|
package/css/navigation-menu.css
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
@keyframes xh-navigation-menu-in {
|
|
4
4
|
from {
|
|
5
5
|
opacity: 0;
|
|
6
|
-
translate: 0 -
|
|
6
|
+
translate: 0 calc(-1 * var(--xh-motion-distance-sm));
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
to {
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
@layer xihan.components {
|
|
17
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
18
|
+
[data-scope='navigation-menu'] {
|
|
19
|
+
--xh-navigation-menu-skin: 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
17
22
|
/* 根节点是 nav 地标,不参与排版;给 relative 是为了让共享外壳(viewport)有个定位参照系。
|
|
18
23
|
这里不给 display,UA 的 [hidden]{display:none} 就仍然压得住 */
|
|
19
24
|
[data-scope='navigation-menu'][data-part='root'] {
|
package/css/number-animation.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='number-animation'] {
|
|
4
|
+
--xh-number-animation-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
[data-scope='number-animation'][data-part='root'] {
|
|
3
8
|
/* 不写尺寸就跟着上下文的字号走:这个数常常摆在别人的标题、卡片标题或统计数值槽里,
|
|
4
9
|
自带一个字号只会跟摆放它的地方打架。三个档位各自换掉这个私有槽 */
|
package/css/number-field.css
CHANGED
package/css/page-header.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='page-header'] {
|
|
4
|
+
--xh-page-header-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
[data-scope='page-header'][data-part='root'] {
|
|
3
8
|
/* 尺寸档只换这三个私有槽,各段从根上继承它们,换档不必给每个部件各写一条选择器 */
|
|
4
9
|
--xh-_page-header-py: var(--xh-space-4);
|
package/css/pagination.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='pagination'] {
|
|
4
|
+
--xh-pagination-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
/* 根节点是 nav 地标,只负责把上一页 / 页码 / 下一页排成一行。
|
|
3
8
|
页数为 0 时连接层会打 data-empty,这里不拿它做隐藏:作者常把「第 x-y 条」这类
|
|
4
9
|
区间回显也写在 nav 里,整块藏掉会连那行字一起吞了,是否隐藏交给作者决定 */
|
package/css/pin-input.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='pin-input'] {
|
|
4
|
+
--xh-pin-input-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
/* 与文本框、数字框同一套堆叠:标签一行、格子一行 */
|
|
3
8
|
[data-scope='pin-input'][data-part='root'] {
|
|
4
9
|
/* 尺寸档只换这四个私有槽,标题与格子都从 root 继承它们,换档不必给每个部件各写一条选择器 */
|
package/css/popconfirm.css
CHANGED
|
@@ -1,4 +1,32 @@
|
|
|
1
|
+
@layer xihan.motion {
|
|
2
|
+
/* 转圈的关键帧定义在本文件里:引用别处文件的动画名时那份文件不一定在场,动画会静默不跑 */
|
|
3
|
+
@keyframes xh-popconfirm-rotate {
|
|
4
|
+
to {
|
|
5
|
+
transform: rotate(1turn);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@layer xihan.motion {
|
|
11
|
+
/* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
12
|
+
动画会静默地整个不跑。每份皮肤都能单独引入,所以它用到的关键帧都写在自己身上。 */
|
|
13
|
+
@keyframes xh-fade-in {
|
|
14
|
+
from {
|
|
15
|
+
opacity: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
to {
|
|
19
|
+
opacity: 1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
1
24
|
@layer xihan.components {
|
|
25
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
26
|
+
[data-scope='popconfirm'] {
|
|
27
|
+
--xh-popconfirm-skin: 1;
|
|
28
|
+
}
|
|
29
|
+
|
|
2
30
|
/* 根只框住触发器:浮层树靠 positioner 的固定定位飞出去,不占根的盒子 */
|
|
3
31
|
[data-scope='popconfirm'][data-part='root'] {
|
|
4
32
|
display: inline-block;
|
|
@@ -120,13 +148,6 @@
|
|
|
120
148
|
color: var(--xh-popconfirm-confirm-fg, var(--xh-_tone-on, var(--xh-fg-on-brand)));
|
|
121
149
|
}
|
|
122
150
|
|
|
123
|
-
/* 转圈的关键帧定义在本文件里:引用别处文件的动画名时那份文件不一定在场,动画会静默不跑 */
|
|
124
|
-
@keyframes xh-popconfirm-rotate {
|
|
125
|
-
to {
|
|
126
|
-
transform: rotate(1turn);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
151
|
/* 异步确认挂起:按钮转圈、指针挂起;不是禁用,焦点与对比度都保持 */
|
|
131
152
|
[data-scope='popconfirm'][data-part='confirm-trigger'][data-loading] {
|
|
132
153
|
cursor: wait;
|
package/css/popover.css
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
+
@layer xihan.motion {
|
|
2
|
+
/* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
3
|
+
动画会静默地整个不跑。每份皮肤都能单独引入,所以它用到的关键帧都写在自己身上。 */
|
|
4
|
+
@keyframes xh-fade-in {
|
|
5
|
+
from {
|
|
6
|
+
opacity: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
to {
|
|
10
|
+
opacity: 1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
@layer xihan.components {
|
|
16
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
17
|
+
[data-scope='popover'] {
|
|
18
|
+
--xh-popover-skin: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
2
21
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
3
22
|
[data-scope='popover'][data-part='positioner'] {
|
|
4
23
|
position: fixed;
|
package/css/popselect.css
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
+
@layer xihan.motion {
|
|
2
|
+
/* 动画名的查找只认「文档里有没有这个名字」:引用别处文件里的名字,那份文件不一定在场,
|
|
3
|
+
动画会静默地整个不跑。每份皮肤都能单独引入,所以它用到的关键帧都写在自己身上。 */
|
|
4
|
+
@keyframes xh-fade-in {
|
|
5
|
+
from {
|
|
6
|
+
opacity: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
to {
|
|
10
|
+
opacity: 1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
@layer xihan.components {
|
|
16
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
17
|
+
[data-scope='popselect'] {
|
|
18
|
+
--xh-popselect-skin: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
2
21
|
[data-scope='popselect'][data-part='root'] {
|
|
3
22
|
/* 尺寸档只换这四个私有槽,触发器与条目都从 root 继承它们,换档不必给每个部件各写一条选择器。
|
|
4
23
|
浮层在 positioner 里、也是 root 的后代,一并继承 */
|
package/css/progress.css
CHANGED
package/css/qr-code.css
CHANGED
package/css/radio-group.css
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@layer xihan.components {
|
|
2
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
|
+
[data-scope='radio-group'] {
|
|
4
|
+
--xh-radio-group-skin: 1;
|
|
5
|
+
}
|
|
6
|
+
|
|
2
7
|
[data-scope='radio-group'][data-part='root'] {
|
|
3
8
|
/* 尺寸档只换这两个私有槽,标题与条目都从 root 继承它们,换档不必给每个部件各写一条选择器 */
|
|
4
9
|
--xh-_radio-group-item-gap: var(--xh-control-gap-md);
|
package/css/rating.css
CHANGED