@xihan-ui/styles 1.0.0-alpha.2 → 1.0.0-alpha.3
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 +447 -0
- package/README.md +1 -1
- package/css/accordion.css +56 -5
- package/css/alert.css +30 -5
- package/css/anchor.css +7 -7
- package/css/avatar-group.css +3 -3
- package/css/avatar.css +3 -3
- package/css/back-top.css +16 -1
- package/css/badge.css +16 -2
- package/css/breadcrumb.css +24 -4
- package/css/button-group.css +14 -13
- package/css/button.css +42 -11
- package/css/calendar.css +119 -2
- package/css/card.css +5 -5
- package/css/carousel.css +36 -5
- package/css/cascader.css +183 -102
- package/css/checkbox-group.css +41 -19
- package/css/checkbox.css +54 -8
- package/css/clipboard.css +2 -1
- package/css/code-block.css +12 -7
- package/css/collapsible.css +42 -2
- package/css/color-picker.css +111 -45
- package/css/combobox.css +114 -53
- package/css/composer.css +5 -3
- package/css/context-menu.css +97 -69
- package/css/date-field.css +91 -14
- package/css/date-picker.css +276 -65
- package/css/descriptions.css +2 -2
- package/css/dialog.css +40 -13
- package/css/download-trigger.css +76 -0
- package/css/drawer.css +45 -14
- package/css/dynamic-input.css +68 -17
- package/css/editable.css +12 -10
- package/css/ellipsis.css +1 -1
- package/css/empty-state.css +7 -7
- package/css/field.css +9 -6
- package/css/fieldset.css +69 -0
- package/css/file-upload.css +45 -7
- package/css/float-button.css +16 -1
- package/css/floating-panel.css +310 -0
- package/css/form.css +4 -4
- package/css/heatmap.css +410 -0
- package/css/highlight.css +1 -1
- package/css/hotkeys.css +90 -0
- package/css/hover-card.css +40 -45
- package/css/image-cropper.css +231 -0
- package/css/image-viewer.css +137 -12
- package/css/image.css +2 -2
- package/css/infinite-scroll.css +1 -1
- package/css/json-viewer.css +241 -0
- package/css/layout.css +6 -10
- package/css/list.css +8 -8
- package/css/listbox.css +20 -4
- package/css/loading-bar.css +7 -1
- package/css/log.css +1 -1
- package/css/marquee.css +9 -0
- package/css/masonry.css +63 -0
- package/css/mention.css +87 -33
- package/css/menu.css +113 -47
- package/css/menubar.css +146 -60
- package/css/navigation-menu.css +54 -29
- package/css/number-animation.css +3 -3
- package/css/number-field.css +173 -16
- package/css/overlay-arrow.css +51 -0
- package/css/page-header.css +5 -5
- package/css/pagination.css +13 -13
- package/css/password-input.css +356 -0
- package/css/pin-input.css +13 -10
- package/css/popconfirm.css +46 -10
- package/css/popover.css +70 -45
- package/css/popselect.css +183 -53
- package/css/progress.css +47 -7
- package/css/qr-code.css +1 -1
- package/css/radio-group.css +14 -8
- package/css/rating.css +2 -2
- package/css/reset.css +17 -0
- package/css/result.css +6 -6
- package/css/scroll-area.css +61 -89
- package/css/scrollbar.css +167 -0
- package/css/segmented.css +215 -0
- package/css/select.css +274 -125
- package/css/separator.css +2 -2
- package/css/side-nav.css +111 -19
- package/css/signature-pad.css +144 -0
- package/css/skeleton.css +7 -1
- package/css/slider.css +10 -10
- package/css/space.css +117 -0
- package/css/spinner.css +22 -10
- package/css/statistic.css +9 -9
- package/css/steps.css +25 -8
- package/css/switch.css +48 -6
- package/css/table.css +131 -37
- package/css/tabs.css +4 -4
- package/css/tag.css +177 -0
- package/css/tags-input.css +78 -40
- package/css/text-field.css +149 -36
- package/css/thread.css +1 -1
- package/css/time-field.css +97 -16
- package/css/time-picker.css +259 -69
- package/css/timeline.css +10 -10
- package/css/timer.css +119 -0
- package/css/toast.css +34 -10
- package/css/toaster.css +1 -1
- package/css/toggle.css +6 -6
- package/css/tone.css +10 -5
- package/css/toolbar.css +1 -1
- package/css/tooltip.css +36 -33
- package/css/tour.css +103 -58
- package/css/transfer.css +68 -17
- package/css/tree-select.css +185 -84
- package/css/tree.css +85 -1
- package/css/typography.css +4 -4
- package/css/undefined.css +11 -1
- package/css/virtualizer.css +3 -1
- package/css/watermark.css +1 -2
- package/index.css +17 -0
- package/index.unlayered.css +8659 -2799
- package/package.json +19 -3
package/css/date-field.css
CHANGED
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
/* 与文本框、数字框同一套堆叠:标签一行、分段框一行 */
|
|
8
8
|
[data-scope='date-field'][data-part='root'] {
|
|
9
|
+
/* 作者塞进来的图标跟着控件的尺寸档走;它自己写了 size 时仍以作者的为准 */
|
|
10
|
+
--xh-icon-size: var(--xh-date-field-icon-size, var(--xh-glyph-size-md));
|
|
11
|
+
|
|
9
12
|
/* 尺寸档只换这四个私有槽,标题与分段框都从 root 继承它们,换档不必给每个部件各写一条选择器 */
|
|
10
13
|
--xh-_date-field-control-h: var(--xh-control-h-md);
|
|
11
14
|
--xh-_date-field-control-px: var(--xh-control-px-md);
|
|
15
|
+
--xh-_date-field-gap: var(--xh-control-gap-md);
|
|
12
16
|
--xh-_date-field-font-size: var(--xh-text-body-size);
|
|
13
17
|
--xh-_date-field-label-font-size: var(--xh-text-label-size);
|
|
14
18
|
/* 形态档只换这三个私有槽:底色与两档描边 */
|
|
@@ -27,17 +31,21 @@
|
|
|
27
31
|
|
|
28
32
|
/* —— 尺寸 —— */
|
|
29
33
|
[data-scope='date-field'][data-part='root'][data-size='sm'] {
|
|
34
|
+
--xh-icon-size: var(--xh-date-field-icon-size, var(--xh-glyph-size-sm));
|
|
30
35
|
--xh-_date-field-control-h: var(--xh-control-h-sm);
|
|
31
36
|
--xh-_date-field-control-px: var(--xh-control-px-sm);
|
|
32
|
-
--xh-_date-field-
|
|
33
|
-
--xh-_date-field-
|
|
37
|
+
--xh-_date-field-gap: var(--xh-control-gap-sm);
|
|
38
|
+
--xh-_date-field-font-size: var(--xh-control-font-sm);
|
|
39
|
+
--xh-_date-field-label-font-size: var(--xh-control-font-sm);
|
|
34
40
|
}
|
|
35
41
|
|
|
36
42
|
[data-scope='date-field'][data-part='root'][data-size='lg'] {
|
|
43
|
+
--xh-icon-size: var(--xh-date-field-icon-size, var(--xh-glyph-size-lg));
|
|
37
44
|
--xh-_date-field-control-h: var(--xh-control-h-lg);
|
|
38
45
|
--xh-_date-field-control-px: var(--xh-control-px-lg);
|
|
39
|
-
--xh-_date-field-
|
|
40
|
-
--xh-_date-field-
|
|
46
|
+
--xh-_date-field-gap: var(--xh-control-gap-lg);
|
|
47
|
+
--xh-_date-field-font-size: var(--xh-control-font-lg);
|
|
48
|
+
--xh-_date-field-label-font-size: var(--xh-control-font-lg);
|
|
41
49
|
}
|
|
42
50
|
|
|
43
51
|
/* —— 形态 —— */
|
|
@@ -55,11 +63,11 @@
|
|
|
55
63
|
--xh-_date-field-control-border-hover: var(--xh-_tone-border, var(--xh-border-control-hover));
|
|
56
64
|
}
|
|
57
65
|
|
|
58
|
-
/*
|
|
66
|
+
/* 无框:底与常态描边透明,悬停与聚焦浮出描边 */
|
|
59
67
|
[data-scope='date-field'][data-part='root'][data-variant='ghost'] {
|
|
60
68
|
--xh-_date-field-control-bg: transparent;
|
|
61
69
|
--xh-_date-field-control-border: transparent;
|
|
62
|
-
--xh-_date-field-control-border-hover:
|
|
70
|
+
--xh-_date-field-control-border-hover: var(--xh-_tone-border, var(--xh-border-control-hover));
|
|
63
71
|
}
|
|
64
72
|
|
|
65
73
|
/* 声明了 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去 */
|
|
@@ -72,8 +80,6 @@
|
|
|
72
80
|
font-size: var(--xh-date-field-label-font-size, var(--xh-_date-field-label-font-size));
|
|
73
81
|
font-weight: var(--xh-date-field-label-font-weight, var(--xh-text-label-weight));
|
|
74
82
|
line-height: var(--xh-leading-none);
|
|
75
|
-
/* 点标题会把焦点送进首段,指针得说明这件事 */
|
|
76
|
-
cursor: default;
|
|
77
83
|
}
|
|
78
84
|
|
|
79
85
|
[data-scope='date-field'][data-part='label'][hidden] {
|
|
@@ -85,11 +91,12 @@
|
|
|
85
91
|
cursor: not-allowed;
|
|
86
92
|
}
|
|
87
93
|
|
|
88
|
-
/* 分段框整体长得像一个输入框:边框与背景长在 control
|
|
89
|
-
段与段之间的分隔符('/'、'年')由作者自己写在段之间,不在角色表里 */
|
|
94
|
+
/* 分段框整体长得像一个输入框:边框与背景长在 control 上,各段只是里面的文字 */
|
|
90
95
|
[data-scope='date-field'][data-part='control'] {
|
|
91
96
|
display: inline-flex;
|
|
97
|
+
min-inline-size: var(--xh-date-field-control-min-w, var(--xh-control-min-w));
|
|
92
98
|
align-items: center;
|
|
99
|
+
gap: var(--xh-date-field-control-gap, var(--xh-_date-field-gap));
|
|
93
100
|
block-size: var(--xh-date-field-control-h, var(--xh-_date-field-control-h));
|
|
94
101
|
padding-inline: var(--xh-date-field-control-px, var(--xh-_date-field-control-px));
|
|
95
102
|
padding-block: 0;
|
|
@@ -115,14 +122,17 @@
|
|
|
115
122
|
|
|
116
123
|
/* 焦点落在某一段上,而边框长在 control 上:焦点环得由内向外借一层。
|
|
117
124
|
control 自己不占 Tab 位,:focus-within 是它唯一能感知组内焦点的方式 */
|
|
118
|
-
[data-scope='date-field'][data-part='control']:focus-within {
|
|
119
|
-
border-color: var(--xh-date-field-control-border-focus, var(--xh-
|
|
125
|
+
[data-scope='date-field'][data-part='control']:focus-within:not([data-disabled]) {
|
|
126
|
+
border-color: var(--xh-date-field-control-border-focus, var(--xh-_tone, var(--xh-border-control-focus)));
|
|
120
127
|
outline: var(--xh-ring-width) solid var(--xh-_date-field-ring);
|
|
121
128
|
outline-offset: var(--xh-ring-offset);
|
|
122
129
|
}
|
|
123
130
|
|
|
124
131
|
[data-scope='date-field'][data-part='control'][data-invalid] {
|
|
125
|
-
border-color: var(--xh-date-field-control-border-invalid, var(--xh-
|
|
132
|
+
border-color: var(--xh-date-field-control-border-invalid, var(--xh-border-invalid));
|
|
133
|
+
|
|
134
|
+
/* 校验失败时环也跟着变红:两圈等宽相邻却一红一蓝,读的人不知道哪个才是当前状态 */
|
|
135
|
+
--xh-_date-field-ring: var(--xh-ring-invalid);
|
|
126
136
|
}
|
|
127
137
|
|
|
128
138
|
/* 只读仍可聚焦、可换段,不置灰,只把底色压下去表示"改不动" */
|
|
@@ -137,12 +147,25 @@
|
|
|
137
147
|
cursor: not-allowed;
|
|
138
148
|
}
|
|
139
149
|
|
|
150
|
+
/* 段位与作者写在段间的分隔符('/'、'年')都在这一层里:它占满盒里剩下的宽度,
|
|
151
|
+
清空钮因此靠在框内末端 */
|
|
152
|
+
[data-scope='date-field'][data-part='segment-group'] {
|
|
153
|
+
display: inline-flex;
|
|
154
|
+
flex: 1 1 auto;
|
|
155
|
+
align-items: center;
|
|
156
|
+
min-inline-size: 0;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
[data-scope='date-field'][data-part='segment-group'][hidden] {
|
|
160
|
+
display: none;
|
|
161
|
+
}
|
|
162
|
+
|
|
140
163
|
/* 每一段是一块可聚焦的文字:宽度随内容走,两侧留一点让选中底色不贴着数字 */
|
|
141
164
|
[data-scope='date-field'][data-part='segment'] {
|
|
142
165
|
display: inline-block;
|
|
143
166
|
padding-inline: var(--xh-date-field-segment-px, var(--xh-space-1));
|
|
144
167
|
padding-block: var(--xh-date-field-segment-py, var(--xh-space-0));
|
|
145
|
-
border-radius: var(--xh-date-field-segment-radius, var(--xh-
|
|
168
|
+
border-radius: var(--xh-date-field-segment-radius, var(--xh-shape-inset));
|
|
146
169
|
color: inherit;
|
|
147
170
|
font: inherit;
|
|
148
171
|
/* 等宽数字:各位字宽不一时,上下键连按会让整行数字左右跳 */
|
|
@@ -187,6 +210,60 @@
|
|
|
187
210
|
color: var(--xh-date-field-segment-fg-focus, var(--xh-_date-field-segment-fg));
|
|
188
211
|
}
|
|
189
212
|
|
|
213
|
+
/* 清空钮排在段位之后、与框等高的一颗小方钮:没值或不可编辑时连接层给 hidden 收起 */
|
|
214
|
+
[data-scope='date-field'][data-part='clear-trigger'] {
|
|
215
|
+
display: inline-flex;
|
|
216
|
+
flex: none;
|
|
217
|
+
align-items: center;
|
|
218
|
+
justify-content: center;
|
|
219
|
+
inline-size: var(--xh-date-field-action-size, var(--xh-control-action-size));
|
|
220
|
+
block-size: var(--xh-date-field-action-size, var(--xh-control-action-size));
|
|
221
|
+
padding: 0;
|
|
222
|
+
border: 0;
|
|
223
|
+
border-radius: var(--xh-date-field-action-radius, var(--xh-shape-control));
|
|
224
|
+
background: var(--xh-date-field-action-bg, transparent);
|
|
225
|
+
color: var(--xh-date-field-action-fg, var(--xh-fg-muted));
|
|
226
|
+
font-family: inherit;
|
|
227
|
+
font-size: var(--xh-date-field-action-font-size, var(--xh-text-secondary-size));
|
|
228
|
+
line-height: var(--xh-leading-none);
|
|
229
|
+
cursor: pointer;
|
|
230
|
+
user-select: none;
|
|
231
|
+
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter), scale var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* 上面给了 display,UA 的 [hidden]{display:none} 已被盖掉,这里补回来 */
|
|
235
|
+
[data-scope='date-field'][data-part='clear-trigger'][hidden] {
|
|
236
|
+
display: none;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
[data-scope='date-field'][data-part='clear-trigger']:hover {
|
|
240
|
+
background: var(--xh-date-field-action-bg-hover, var(--xh-bg-subtle-hover));
|
|
241
|
+
color: var(--xh-date-field-action-fg-hover, var(--xh-fg-default));
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
[data-scope='date-field'][data-part='clear-trigger']:active {
|
|
245
|
+
background: var(--xh-date-field-action-bg-active, var(--xh-bg-subtle-active));
|
|
246
|
+
scale: var(--xh-motion-scale-press);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* 按钮不占 Tab 位(tabindex=-1),留给程序化聚焦兜底,落焦时得看得见 */
|
|
250
|
+
[data-scope='date-field'][data-part='clear-trigger']:focus-visible {
|
|
251
|
+
outline: var(--xh-ring-width) solid var(--xh-_date-field-ring);
|
|
252
|
+
outline-offset: var(--xh-ring-offset);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这条即不命中 */
|
|
256
|
+
[data-scope='date-field'][data-part='clear-trigger']:empty::before {
|
|
257
|
+
content: '';
|
|
258
|
+
display: inline-block;
|
|
259
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
260
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
261
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
262
|
+
background-color: currentColor;
|
|
263
|
+
-webkit-mask: var(--xh-glyph-mark-close) center / contain no-repeat;
|
|
264
|
+
mask: var(--xh-glyph-mark-close) center / contain no-repeat;
|
|
265
|
+
}
|
|
266
|
+
|
|
190
267
|
/* 连接层把它写成 type=hidden,UA 自己就不渲染;这里的视觉隐藏是给元素升级前那一瞬兜底
|
|
191
268
|
(作者手写的是一个普通 input,升级完成前它是可见的文本框)。
|
|
192
269
|
刻意不写 display:写了反而会盖掉 UA 对 type=hidden 的收起,把它显出来 */
|