@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/spinner.css
CHANGED
|
@@ -5,19 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
/* 定义 spinner 样式。 */
|
|
7
7
|
|
|
8
|
+
/* 共享关键帧由 family/motion.css 提供,本皮肤 @import 它,单独引入仍成立。 */
|
|
9
|
+
@import '../family/motion.css';
|
|
10
|
+
|
|
8
11
|
@layer xihan.motion {
|
|
9
|
-
/*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/* 三点档的波:一条亮带沿行扫过三枚点,点依次亮起再暗回禁用档,不再整组同步明暗 */
|
|
13
|
+
@keyframes xh-spinner-dots {
|
|
14
|
+
from {
|
|
15
|
+
-webkit-mask-position: 100% 0;
|
|
16
|
+
mask-position: 100% 0;
|
|
14
17
|
}
|
|
15
|
-
}
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
opacity: var(--xh-state-disabled-opacity);
|
|
19
|
+
to {
|
|
20
|
+
-webkit-mask-position: 0 0;
|
|
21
|
+
mask-position: 0 0;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
}
|
|
@@ -39,32 +40,37 @@
|
|
|
39
40
|
vertical-align: middle;
|
|
40
41
|
}
|
|
41
42
|
|
|
43
|
+
/* 露面前的等待:整块藏起、位置照留,露面那一刻布局不跳;visibility 同时把它从读屏里摘掉 */
|
|
44
|
+
[data-scope='spinner'][data-part='root'][data-state='hidden'] {
|
|
45
|
+
visibility: hidden;
|
|
46
|
+
}
|
|
47
|
+
|
|
42
48
|
[data-scope='spinner'][data-part='root']::before {
|
|
43
49
|
content: '';
|
|
44
50
|
|
|
45
51
|
/* 边框算进直径,换厚度不会把圆环撑大 */
|
|
46
52
|
box-sizing: border-box;
|
|
47
53
|
flex: none;
|
|
48
|
-
inline-size: var(--xh-spinner-size, var(--xh-glyph-size-
|
|
49
|
-
block-size: var(--xh-spinner-size, var(--xh-glyph-size-
|
|
54
|
+
inline-size: var(--xh-spinner-size, var(--xh-glyph-size-md));
|
|
55
|
+
block-size: var(--xh-spinner-size, var(--xh-glyph-size-md));
|
|
50
56
|
border: var(--xh-spinner-thickness, var(--xh-stroke-thick)) solid var(--xh-spinner-track, var(--xh-border-default));
|
|
51
57
|
|
|
52
58
|
/* 一整圈是轨道色,只有起始边换成前景色,转起来才看得出方向 */
|
|
53
59
|
border-block-start-color: var(--xh-spinner-fg, currentColor);
|
|
54
60
|
border-radius: var(--xh-spinner-radius, var(--xh-shape-circle));
|
|
55
|
-
animation: xh-
|
|
61
|
+
animation: xh-spin var(--xh-spinner-duration, var(--xh-motion-loop-spin)) var(--xh-motion-ease-loop) infinite;
|
|
56
62
|
}
|
|
57
63
|
|
|
58
|
-
/*
|
|
59
|
-
|
|
64
|
+
/* 三档直径走字形尺寸那把尺,与控件内图标同档(sm 16 / md 20 / lg 24):圆环与同一行文字里的图标同级,
|
|
65
|
+
三档同族才不会在 compact 下错位。缺省档写在上面的基础规则里 */
|
|
60
66
|
[data-scope='spinner'][data-part='root'][data-size='sm']::before {
|
|
61
67
|
inline-size: var(--xh-glyph-size-sm);
|
|
62
68
|
block-size: var(--xh-glyph-size-sm);
|
|
63
69
|
}
|
|
64
70
|
|
|
65
71
|
[data-scope='spinner'][data-part='root'][data-size='lg']::before {
|
|
66
|
-
inline-size: var(--xh-glyph-size-
|
|
67
|
-
block-size: var(--xh-glyph-size-
|
|
72
|
+
inline-size: var(--xh-glyph-size-lg);
|
|
73
|
+
block-size: var(--xh-glyph-size-lg);
|
|
68
74
|
}
|
|
69
75
|
|
|
70
76
|
/* 语气只换起始边那一段,轨道留在中性描边上:轨道与起始边的反差就是转向的读法,
|
|
@@ -77,7 +83,7 @@
|
|
|
77
83
|
|
|
78
84
|
/*
|
|
79
85
|
* 渐隐弧:一整圈的色相由角度扫过来,再用一圈环形遮罩把中心挖空,剩下的就是一段
|
|
80
|
-
* 由浓到无的弧。转的还是同一条 xh-
|
|
86
|
+
* 由浓到无的弧。转的还是同一条 xh-spin——这一档只换画法,不换节拍。
|
|
81
87
|
* 遮罩只吃 alpha,用 currentColor 当不透明的那一端即可。
|
|
82
88
|
*/
|
|
83
89
|
[data-scope='spinner'][data-part='root'][data-variant='arc']::before {
|
|
@@ -100,17 +106,26 @@
|
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
/*
|
|
103
|
-
*
|
|
109
|
+
* 三点:一行三枚圆点,依次亮起成一道波。它不转,因此圆角与描边都撤掉,
|
|
104
110
|
* 图形改由三层径向渐变画;点的颜色走 currentColor,语气档只换这一处。
|
|
111
|
+
* 明暗不靠整组的不透明度(那样三点同步明灭,读起来像整体在闪),而是一层三倍宽的遮罩:
|
|
112
|
+
* 两端压在禁用档的不透明度,正中一道满不透明度的亮带,遮罩位置从行首外扫到行尾外,
|
|
113
|
+
* 亮带依次掠过三枚点。
|
|
105
114
|
*/
|
|
106
115
|
[data-scope='spinner'][data-part='root'][data-variant='dots']::before {
|
|
116
|
+
--xh-_spinner-dot-dim: color-mix(in srgb, currentColor calc(var(--xh-state-disabled-opacity) * 100%), transparent);
|
|
117
|
+
|
|
107
118
|
border: 0;
|
|
108
119
|
border-radius: 0;
|
|
109
120
|
background:
|
|
110
121
|
radial-gradient(circle closest-side, var(--xh-spinner-fg, currentColor) 100%, transparent) 0 50% / 25% 25% no-repeat,
|
|
111
122
|
radial-gradient(circle closest-side, var(--xh-spinner-fg, currentColor) 100%, transparent) 50% 50% / 25% 25% no-repeat,
|
|
112
123
|
radial-gradient(circle closest-side, var(--xh-spinner-fg, currentColor) 100%, transparent) 100% 50% / 25% 25% no-repeat;
|
|
113
|
-
|
|
124
|
+
-webkit-mask: linear-gradient(90deg, var(--xh-_spinner-dot-dim) 40%, currentColor 50%, var(--xh-_spinner-dot-dim) 60%) 100% 0 / 300% 100% no-repeat;
|
|
125
|
+
mask: linear-gradient(90deg, var(--xh-_spinner-dot-dim) 40%, currentColor 50%, var(--xh-_spinner-dot-dim) 60%) 100% 0 / 300% 100% no-repeat;
|
|
126
|
+
animation: xh-spinner-dots var(--xh-spinner-duration, var(--xh-motion-loop-spin)) var(--xh-motion-ease-loop) infinite;
|
|
127
|
+
/* 波跟着书写方向走:三枚点左右对称,按书写方向符号水平翻过来,RTL 下就从右往左依次亮起 */
|
|
128
|
+
scale: var(--xh-direction-sign) 1;
|
|
114
129
|
}
|
|
115
130
|
|
|
116
131
|
[data-scope='spinner'][data-part='root'][data-variant='dots'][data-tone]::before {
|
|
@@ -120,20 +135,26 @@
|
|
|
120
135
|
radial-gradient(circle closest-side, var(--xh-spinner-fg, var(--xh-_tone)) 100%, transparent) 100% 50% / 25% 25% no-repeat;
|
|
121
136
|
}
|
|
122
137
|
|
|
123
|
-
/*
|
|
124
|
-
|
|
138
|
+
/* 三点档的波自带一条动画,压不住上面那两块基础降级里的 animation: none,
|
|
139
|
+
因此这一档各自再写一份;遮罩一并撤掉,三点满不透明度静止。两组规则是同一件事的两个触发条件 */
|
|
125
140
|
@media (prefers-reduced-motion: reduce) {
|
|
126
141
|
[data-scope='spinner'][data-part='root'][data-variant='dots']::before {
|
|
142
|
+
-webkit-mask: none;
|
|
143
|
+
mask: none;
|
|
127
144
|
animation: none;
|
|
128
145
|
}
|
|
129
146
|
}
|
|
130
147
|
|
|
131
148
|
:where([data-motion='reduce']) [data-scope='spinner'][data-part='root'][data-variant='dots']::before {
|
|
149
|
+
-webkit-mask: none;
|
|
150
|
+
mask: none;
|
|
132
151
|
animation: none;
|
|
133
152
|
}
|
|
134
153
|
|
|
135
154
|
@media print {
|
|
136
155
|
[data-scope='spinner'][data-part='root'][data-variant='dots']::before {
|
|
156
|
+
-webkit-mask: none;
|
|
157
|
+
mask: none;
|
|
137
158
|
animation: none;
|
|
138
159
|
}
|
|
139
160
|
}
|
|
@@ -204,5 +225,12 @@
|
|
|
204
225
|
border-radius: var(--xh-spinner-radius, var(--xh-shape-circle));
|
|
205
226
|
background-image: none;
|
|
206
227
|
}
|
|
228
|
+
|
|
229
|
+
/* 三点档退回描边后撤掉扫点的遮罩,改转圆环那一条 */
|
|
230
|
+
[data-scope='spinner'][data-part='root'][data-variant='dots']::before {
|
|
231
|
+
-webkit-mask: none;
|
|
232
|
+
mask: none;
|
|
233
|
+
animation-name: xh-spin;
|
|
234
|
+
}
|
|
207
235
|
}
|
|
208
236
|
}
|
package/css/splitter.css
CHANGED
|
@@ -85,6 +85,12 @@
|
|
|
85
85
|
outline: none;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
/* 折叠 / 展开(Enter、双击、命令式)时面板尺寸走过渡,与 Layout 侧栏折叠同一种节奏;
|
|
89
|
+
拖拽与方向键步进跟手,连接层不投影 data-animating,照旧瞬时。尺寸仍由连接层写内联,这里只挂过渡 */
|
|
90
|
+
[data-scope='splitter'][data-part='root'][data-animating] > [data-scope='splitter'][data-part='panel'] {
|
|
91
|
+
transition: flex-basis var(--xh-motion-duration-move) var(--xh-motion-ease-continuous);
|
|
92
|
+
}
|
|
93
|
+
|
|
88
94
|
/* 折叠到 0 时连边框都不该露出来:留一条缝比留一块面板更像坏了 */
|
|
89
95
|
[data-scope='splitter'][data-part='panel'][data-collapsed] {
|
|
90
96
|
border: none;
|
|
@@ -98,7 +104,7 @@
|
|
|
98
104
|
align-items: center;
|
|
99
105
|
justify-content: center;
|
|
100
106
|
background: var(--xh-splitter-trigger-bg, var(--xh-border-default));
|
|
101
|
-
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
107
|
+
transition: background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
102
108
|
}
|
|
103
109
|
|
|
104
110
|
[data-scope='splitter'][data-part='resize-trigger'][data-orientation='horizontal'] {
|
|
@@ -111,7 +117,7 @@
|
|
|
111
117
|
cursor: row-resize;
|
|
112
118
|
}
|
|
113
119
|
|
|
114
|
-
/* 分隔条是一根线不是一块面:悬停不走面阶梯(300 只留给 pressed
|
|
120
|
+
/* 分隔条是一根线不是一块面:悬停不走面阶梯(300 只留给 pressed),
|
|
115
121
|
按线取——与字段描边 rest → hover 同向加深一档 */
|
|
116
122
|
[data-scope='splitter'][data-part='resize-trigger']:hover {
|
|
117
123
|
background: var(--xh-splitter-trigger-bg-hover, var(--xh-border-control));
|
package/css/statistic.css
CHANGED
|
@@ -124,4 +124,14 @@
|
|
|
124
124
|
[data-scope='statistic'][data-part='trend'][hidden] {
|
|
125
125
|
display: none;
|
|
126
126
|
}
|
|
127
|
+
|
|
128
|
+
@media (forced-colors: active) {
|
|
129
|
+
/* 兜底字形是 mask 挖出来的一块底色,这一档里底色被系统换成 Canvas,字形跟着消失。
|
|
130
|
+
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
131
|
+
落在 Canvas 面上的取 CanvasText */
|
|
132
|
+
[data-scope='statistic'][data-part='trend'][data-direction]::before {
|
|
133
|
+
forced-color-adjust: none;
|
|
134
|
+
background-color: CanvasText;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
127
137
|
}
|