@xihan-ui/styles 1.0.0-alpha.3 → 1.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 +1922 -0
- package/README.md +1 -1
- package/css/accordion.css +25 -2
- package/css/alert.css +13 -9
- package/css/anchor.css +1 -1
- package/css/avatar-group.css +5 -1
- package/css/avatar.css +6 -0
- package/css/back-top.css +6 -0
- package/css/badge.css +94 -36
- package/css/breadcrumb.css +1 -1
- package/css/button-group.css +4 -0
- package/css/button.css +6 -0
- package/css/calendar.css +39 -13
- package/css/card.css +15 -6
- package/css/cascader.css +29 -23
- package/css/checkbox-group.css +38 -10
- package/css/checkbox.css +21 -10
- package/css/collapsible.css +7 -1
- package/css/color-picker.css +22 -2
- package/css/combobox.css +18 -7
- package/css/context-menu.css +17 -6
- package/css/date-field.css +2 -2
- package/css/date-picker.css +27 -17
- package/css/descriptions.css +9 -3
- package/css/dialog.css +7 -1
- package/css/drawer.css +15 -5
- package/css/dynamic-input.css +7 -0
- package/css/ellipsis.css +6 -0
- package/css/empty-state.css +16 -6
- package/css/field.css +7 -0
- package/css/file-upload.css +1 -1
- package/css/flex.css +13 -7
- package/css/float-button.css +7 -0
- package/css/floating-panel.css +6 -0
- package/css/grid.css +11 -5
- package/css/heatmap.css +3 -2
- package/css/highlight.css +1 -1
- package/css/hotkeys.css +1 -1
- package/css/hover-card.css +3 -0
- package/css/image-cropper.css +4 -2
- package/css/image-viewer.css +18 -5
- package/css/json-viewer.css +34 -1
- package/css/layout.css +15 -7
- package/css/list.css +14 -5
- package/css/listbox.css +4 -2
- package/css/loading-bar.css +5 -4
- package/css/log.css +6 -2
- package/css/masonry.css +5 -5
- package/css/mention.css +13 -3
- package/css/menu.css +16 -5
- package/css/menubar.css +14 -6
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +377 -0
- package/css/number-field.css +9 -3
- package/css/page-header.css +7 -0
- package/css/pagination.css +158 -1
- package/css/password-input.css +4 -4
- package/css/pin-input.css +2 -2
- package/css/popconfirm.css +9 -2
- package/css/popover.css +3 -0
- package/css/popselect.css +24 -4
- package/css/progress.css +8 -2
- package/css/radio-group.css +17 -6
- package/css/rating.css +2 -2
- package/css/resizable.css +113 -0
- package/css/result.css +15 -5
- package/css/scrollbar.css +3 -0
- package/css/segmented.css +1 -1
- package/css/select.css +25 -7
- package/css/side-nav.css +16 -5
- package/css/slider.css +4 -2
- package/css/sortable.css +103 -0
- package/css/space.css +6 -6
- package/css/steps.css +6 -6
- package/css/switch.css +9 -2
- package/css/table.css +309 -10
- package/css/tabs.css +148 -1
- package/css/tag.css +3 -1
- package/css/tags-input.css +3 -3
- package/css/text-field.css +3 -3
- package/css/thread.css +10 -2
- package/css/time-field.css +2 -2
- package/css/time-picker.css +6 -6
- package/css/timeline.css +7 -7
- package/css/toast.css +103 -53
- package/css/toggle-group.css +30 -4
- package/css/toggle.css +6 -0
- package/css/tone.css +47 -17
- package/css/tooltip.css +7 -1
- package/css/tour.css +9 -3
- package/css/transfer.css +38 -12
- package/css/tree-select.css +30 -5
- package/css/tree.css +175 -4
- package/css/typography.css +1 -1
- package/css/undefined.css +1 -0
- package/index.css +3 -1
- package/index.unlayered.css +2650 -634
- package/package.json +5 -3
- package/css/toaster.css +0 -74
package/css/steps.css
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
/* 尺寸档只换这三个私有槽,序号圆点、标题与说明都从 root 继承它们,
|
|
12
12
|
换档不必给每个部件各写一条选择器 */
|
|
13
|
-
--xh-_steps-indicator-size: var(--xh-
|
|
14
|
-
--xh-_steps-title-font-size: var(--xh-
|
|
13
|
+
--xh-_steps-indicator-size: var(--xh-space-7);
|
|
14
|
+
--xh-_steps-title-font-size: var(--xh-control-font-md);
|
|
15
15
|
--xh-_steps-caption-font-size: var(--xh-text-caption-size);
|
|
16
16
|
|
|
17
17
|
/* 语气落在走过与当前这两步的标记和连接线上:强调色画描边与填充,
|
|
@@ -153,8 +153,8 @@
|
|
|
153
153
|
justify-content: center;
|
|
154
154
|
inline-size: var(--xh-steps-indicator-size, var(--xh-_steps-indicator-size));
|
|
155
155
|
block-size: var(--xh-steps-indicator-size, var(--xh-_steps-indicator-size));
|
|
156
|
-
border: var(--xh-stroke-thin) solid var(--xh-steps-indicator-border, var(--xh-border-
|
|
157
|
-
border-radius: var(--xh-shape-pill);
|
|
156
|
+
border: var(--xh-stroke-thin) solid var(--xh-steps-indicator-border, var(--xh-border-control));
|
|
157
|
+
border-radius: var(--xh-steps-indicator-radius, var(--xh-shape-pill));
|
|
158
158
|
background: var(--xh-steps-indicator-bg, transparent);
|
|
159
159
|
color: var(--xh-steps-indicator-fg, var(--xh-fg-muted));
|
|
160
160
|
font-size: var(--xh-steps-indicator-font-size, var(--xh-_steps-caption-font-size));
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
[data-scope='steps'][data-part='item'][data-disabled] [data-scope='steps'][data-part='indicator'] {
|
|
189
|
-
border-color: var(--xh-steps-indicator-border-disabled, var(--xh-
|
|
189
|
+
border-color: var(--xh-steps-indicator-border-disabled, var(--xh-border-subtle));
|
|
190
190
|
color: var(--xh-steps-indicator-fg-disabled, var(--xh-fg-disabled));
|
|
191
191
|
}
|
|
192
192
|
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
flex: 1;
|
|
223
223
|
min-inline-size: var(--xh-steps-separator-min-length, var(--xh-space-4));
|
|
224
224
|
block-size: var(--xh-steps-separator-thickness, var(--xh-stroke-thick));
|
|
225
|
-
border-radius: var(--xh-shape-pill);
|
|
225
|
+
border-radius: var(--xh-steps-separator-radius, var(--xh-shape-pill));
|
|
226
226
|
background: var(--xh-steps-separator-bg, var(--xh-border-default));
|
|
227
227
|
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
228
228
|
}
|
package/css/switch.css
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
block-size: var(--xh-_switch-track-h);
|
|
31
31
|
padding: var(--xh-_switch-pad);
|
|
32
32
|
border: 0;
|
|
33
|
-
border-radius: var(--xh-shape-pill);
|
|
33
|
+
border-radius: var(--xh-switch-radius, var(--xh-shape-pill));
|
|
34
34
|
background: var(--xh-switch-bg, var(--xh-bg-subtle-active));
|
|
35
35
|
cursor: pointer;
|
|
36
36
|
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
[data-scope='switch'][data-part='thumb'] {
|
|
69
69
|
inline-size: var(--xh-_switch-thumb-size);
|
|
70
70
|
block-size: var(--xh-_switch-thumb-size);
|
|
71
|
-
border-radius: var(--xh-shape-pill);
|
|
71
|
+
border-radius: var(--xh-switch-thumb-radius, var(--xh-shape-pill));
|
|
72
72
|
background: var(--xh-switch-thumb, var(--xh-bg-canvas));
|
|
73
73
|
box-shadow: var(--xh-switch-thumb-shadow, var(--xh-elevation-raised));
|
|
74
74
|
transition: translate var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
@@ -134,4 +134,11 @@
|
|
|
134
134
|
border-color: var(--xh-switch-loading-fg, var(--xh-bg-brand));
|
|
135
135
|
animation: none;
|
|
136
136
|
}
|
|
137
|
+
|
|
138
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
139
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
140
|
+
[data-scope='switch'][data-part='root'][hidden],
|
|
141
|
+
[data-scope='switch'][data-part='label'][hidden] {
|
|
142
|
+
display: none;
|
|
143
|
+
}
|
|
137
144
|
}
|
package/css/table.css
CHANGED
|
@@ -19,13 +19,17 @@
|
|
|
19
19
|
|
|
20
20
|
/* 表格自己滚动:吸顶表头与横向吸附列都要一个确定的滚动容器才钉得住 */
|
|
21
21
|
[data-scope='table'][data-part='root'] {
|
|
22
|
+
/* 组件内那几档层号只在自己人之间排序:建一个层叠上下文把它们关起来,
|
|
23
|
+
既不让页面上的层号插进来,也不让它们漏出去压住别人 */
|
|
24
|
+
isolation: isolate;
|
|
25
|
+
|
|
22
26
|
/* 作者塞进指示符槽的图标跟着字号走,与皮肤画的兜底字形同一把尺 */
|
|
23
27
|
--xh-icon-size: var(--xh-table-icon-size, var(--xh-glyph-size-text));
|
|
24
28
|
|
|
25
29
|
/* 密度档只换这两个私有槽:单元格与列标题从 root 继承前者,字号靠 font-size 本身继承下去,
|
|
26
30
|
换档不必给每个部件各写一条选择器,列宽那套算法也一点不碰 */
|
|
27
31
|
--xh-_table-cell-py: var(--xh-table-cell-py-md);
|
|
28
|
-
--xh-_table-font-size: var(--xh-
|
|
32
|
+
--xh-_table-font-size: var(--xh-control-font-md);
|
|
29
33
|
|
|
30
34
|
display: flex;
|
|
31
35
|
position: relative;
|
|
@@ -222,8 +226,11 @@
|
|
|
222
226
|
}
|
|
223
227
|
|
|
224
228
|
/* —— 三个可叠加的外观开关 —— */
|
|
225
|
-
/*
|
|
226
|
-
|
|
229
|
+
/* 斑马纹:表体偶数行换一层浅底。它是最底下那一档,悬停、选中、落点都要盖得过它,
|
|
230
|
+
所以祖先链与 :nth-of-type 都收进 :where()——特指度落到与基础底同档(0-2-0),
|
|
231
|
+
只靠排在基础底之后压过它一条。照字面写祖先链是 0-8-0,比悬停与选中都高,
|
|
232
|
+
斑马表里偶数行会既不响应悬停也显不出选中 */
|
|
233
|
+
:where([data-scope='table'][data-part='root'][data-striped] [data-scope='table'][data-part='body']) > [data-scope='table'][data-part='row']:where(:nth-of-type(even)) {
|
|
227
234
|
background: var(--xh-table-row-bg-striped, var(--xh-bg-subtle));
|
|
228
235
|
}
|
|
229
236
|
|
|
@@ -284,7 +291,8 @@
|
|
|
284
291
|
color: transparent;
|
|
285
292
|
}
|
|
286
293
|
|
|
287
|
-
/*
|
|
294
|
+
/* 半选换一枚横杠字形盖住勾:aria-checked=mixed 在视觉上也得与"全选"分得开。
|
|
295
|
+
横杠与勾同走字形令牌,作者换掉标记时两态一起换 */
|
|
288
296
|
[data-scope='table'][data-part='select-all-trigger'][data-state='indeterminate'] {
|
|
289
297
|
position: relative;
|
|
290
298
|
color: transparent;
|
|
@@ -292,11 +300,12 @@
|
|
|
292
300
|
|
|
293
301
|
[data-scope='table'][data-part='select-all-trigger'][data-state='indeterminate']::after {
|
|
294
302
|
position: absolute;
|
|
295
|
-
inline-size:
|
|
296
|
-
block-size: var(--xh-
|
|
297
|
-
|
|
298
|
-
background: var(--xh-table-trigger-fg, var(--xh-fg-on-brand));
|
|
303
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
304
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
305
|
+
background-color: var(--xh-table-trigger-fg, var(--xh-fg-on-brand));
|
|
299
306
|
content: '';
|
|
307
|
+
-webkit-mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
308
|
+
mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
300
309
|
}
|
|
301
310
|
|
|
302
311
|
[data-scope='table'][data-part='select-all-trigger'][data-disabled],
|
|
@@ -307,10 +316,12 @@
|
|
|
307
316
|
cursor: not-allowed;
|
|
308
317
|
}
|
|
309
318
|
|
|
310
|
-
/* 全选把手是表头里独立的 Tab
|
|
319
|
+
/* 全选把手是表头里独立的 Tab 停靠点,环得画在它自己身上。
|
|
320
|
+
往内收,与行、排序把手同一口径:把手长在列头里,列头与根都收 overflow,
|
|
321
|
+
环画在外沿会被裁掉 */
|
|
311
322
|
[data-scope='table'][data-part='select-all-trigger']:focus-visible {
|
|
312
323
|
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
313
|
-
outline-offset: var(--xh-ring-
|
|
324
|
+
outline-offset: calc(-1 * var(--xh-ring-width));
|
|
314
325
|
}
|
|
315
326
|
|
|
316
327
|
/* 行选择把手不占 Tab 位(键盘那一路走 Space),只服务指针 */
|
|
@@ -364,6 +375,294 @@
|
|
|
364
375
|
display: none;
|
|
365
376
|
}
|
|
366
377
|
|
|
378
|
+
/* 列宽把手贴在表头格的行尾侧。它压在相邻两列的接缝上,因此往外挪半个身位,
|
|
379
|
+
两边各留出一点可抓的余量——贴着边只有一两个像素能按到。 */
|
|
380
|
+
[data-scope='table'][data-part='column-resize-trigger'] {
|
|
381
|
+
display: inline-flex;
|
|
382
|
+
flex: none;
|
|
383
|
+
align-self: stretch;
|
|
384
|
+
inline-size: var(--xh-table-resize-width, var(--xh-space-2));
|
|
385
|
+
/* 推到行尾侧。把手在标记里是表头格的最后一个孩子,auto 外边距把它顶到那一头,
|
|
386
|
+
不必给每个表头格加定位上下文——那条会落到所有既有表格上 */
|
|
387
|
+
margin-inline-start: auto;
|
|
388
|
+
align-items: center;
|
|
389
|
+
justify-content: center;
|
|
390
|
+
cursor: col-resize;
|
|
391
|
+
touch-action: none;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
[data-scope='table'][data-part='column-resize-trigger'][hidden] {
|
|
395
|
+
display: none;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/* 接缝上那条线。平时借表头的分隔色,按住与聚焦时换成品牌色好认 */
|
|
399
|
+
[data-scope='table'][data-part='column-resize-trigger']::after {
|
|
400
|
+
content: '';
|
|
401
|
+
display: block;
|
|
402
|
+
inline-size: var(--xh-table-resize-line, var(--xh-stroke-thin));
|
|
403
|
+
block-size: var(--xh-table-resize-line-length, 60%);
|
|
404
|
+
border-radius: var(--xh-table-resize-radius, var(--xh-shape-pill));
|
|
405
|
+
background: var(--xh-table-resize-fg, var(--xh-border-default));
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
[data-scope='table'][data-part='column-resize-trigger']:hover::after,
|
|
409
|
+
[data-scope='table'][data-part='column-resize-trigger'][data-resizing]::after {
|
|
410
|
+
background: var(--xh-table-resize-fg-active, var(--xh-border-control-focus));
|
|
411
|
+
block-size: 100%;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
[data-scope='table'][data-part='column-resize-trigger']:focus-visible {
|
|
415
|
+
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
416
|
+
outline-offset: var(--xh-ring-offset);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/* 不可改宽的列不显示把手:留着一条抓不动的线只会让人反复去试 */
|
|
420
|
+
[data-scope='table'][data-part='column-resize-trigger'][data-disabled] {
|
|
421
|
+
display: none;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* 列拖拽把手贴在表头格的行首侧,位置由源码顺序定,不写 auto 外边距:
|
|
425
|
+
同一个表头格里的改宽把手已经用 margin-inline-start: auto 把自己顶到行尾侧,
|
|
426
|
+
再添一条 auto,剩余空白会在两条外边距之间平分,两个把手谁都到不了自己那一头。
|
|
427
|
+
待在行首侧还有一层好处:它的位置与这一列有多宽、格里有没有排序把手都无关 */
|
|
428
|
+
[data-scope='table'][data-part='column-drag-trigger'] {
|
|
429
|
+
display: inline-flex;
|
|
430
|
+
flex: none;
|
|
431
|
+
align-items: center;
|
|
432
|
+
justify-content: center;
|
|
433
|
+
inline-size: var(--xh-table-drag-size, var(--xh-control-indicator-size));
|
|
434
|
+
block-size: var(--xh-table-drag-size, var(--xh-control-indicator-size));
|
|
435
|
+
border-radius: var(--xh-table-trigger-radius, var(--xh-shape-control));
|
|
436
|
+
color: var(--xh-table-drag-fg, var(--xh-fg-subtle));
|
|
437
|
+
cursor: grab;
|
|
438
|
+
/* 关掉这一轴的默认手势:不关的话触屏上手指一划就被系统当成滚动收走 */
|
|
439
|
+
touch-action: none;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
[data-scope='table'][data-part='column-drag-trigger'][hidden] {
|
|
443
|
+
display: none;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/* 抓手是两条竖线:盒子取边框盒,两侧描边就是那两条线,宽高与线宽都走令牌。
|
|
447
|
+
:empty 守卫让作者塞进来的图标整个顶掉它,而不是两份叠在一起 */
|
|
448
|
+
[data-scope='table'][data-part='column-drag-trigger']:empty::after {
|
|
449
|
+
content: '';
|
|
450
|
+
display: block;
|
|
451
|
+
inline-size: var(--xh-table-drag-grip-w, var(--xh-space-1));
|
|
452
|
+
block-size: var(--xh-table-drag-grip-h, var(--xh-space-2));
|
|
453
|
+
border-inline: var(--xh-stroke-thin) solid currentColor;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
[data-scope='table'][data-part='column-drag-trigger']:not([data-disabled]):hover,
|
|
457
|
+
[data-scope='table'][data-part='column-drag-trigger'][data-dragging] {
|
|
458
|
+
color: var(--xh-table-drag-fg-active, var(--xh-fg-default));
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
[data-scope='table'][data-part='column-drag-trigger'][data-dragging] {
|
|
462
|
+
cursor: grabbing;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/* 不可拖的列照样带一个把手,这里保住它的位置、只把它压到禁用色。
|
|
466
|
+
收成 display: none 是不行的:把手在行首侧,藏掉之后同一行里能拖与不能拖的两列,
|
|
467
|
+
标题起点会错开一格 */
|
|
468
|
+
[data-scope='table'][data-part='column-drag-trigger'][data-disabled] {
|
|
469
|
+
color: var(--xh-table-drag-fg-disabled, var(--xh-fg-disabled));
|
|
470
|
+
cursor: not-allowed;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
[data-scope='table'][data-part='column-drag-trigger']:focus-visible {
|
|
474
|
+
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
475
|
+
outline-offset: var(--xh-ring-offset);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/* 落点指示线:拖到哪一列的哪一侧,线就画在那一列的那条边上。列头与表体的格子一起画,
|
|
479
|
+
线贯穿整张表才看得出这一列要落到哪儿。
|
|
480
|
+
定位上下文由这条规则自己给:列头与格子平时都不定位,缺了它伪元素会一路上溯到表格根,
|
|
481
|
+
线就飞到整张表的左上角去。
|
|
482
|
+
冻结列排除在外:它靠 position: sticky 钉住,在这儿改成 relative 会把吸附顶掉;
|
|
483
|
+
而冻结列既不可拖也不做落点,排除掉不会漏画任何一条线 */
|
|
484
|
+
[data-scope='table'][data-part='column-header'][data-drop]:not([data-frozen]),
|
|
485
|
+
[data-scope='table'][data-part='cell'][data-drop]:not([data-frozen]) {
|
|
486
|
+
position: relative;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/* 线整条画在盒内:列头与格子都收 overflow: hidden,压着边画会被裁掉半条 */
|
|
490
|
+
[data-scope='table'][data-part='column-header'][data-drop]:not([data-frozen])::after,
|
|
491
|
+
[data-scope='table'][data-part='cell'][data-drop]:not([data-frozen])::after {
|
|
492
|
+
content: '';
|
|
493
|
+
position: absolute;
|
|
494
|
+
inset-block: 0;
|
|
495
|
+
inline-size: var(--xh-table-drop-line, var(--xh-stroke-thick));
|
|
496
|
+
background: var(--xh-table-drop-fg, var(--xh-border-control-focus));
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
/* 落在哪一侧走逻辑属性:rtl 下 before 自己就换到右边去了。
|
|
500
|
+
换成 box-shadow: inset 的话偏移量是物理的,书写方向一反 before 与 after 就调个个儿 */
|
|
501
|
+
[data-scope='table'][data-part='column-header'][data-drop='before']:not([data-frozen])::after,
|
|
502
|
+
[data-scope='table'][data-part='cell'][data-drop='before']:not([data-frozen])::after {
|
|
503
|
+
inset-inline-start: 0;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
[data-scope='table'][data-part='column-header'][data-drop='after']:not([data-frozen])::after,
|
|
507
|
+
[data-scope='table'][data-part='cell'][data-drop='after']:not([data-frozen])::after {
|
|
508
|
+
inset-inline-end: 0;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/* 被拖的那一列整列压暗,让人看得出正在搬的是它。这里只动 opacity 与 user-select,
|
|
512
|
+
一个 transform 都不写:冻结列是 position: sticky,祖先一有 transform 就掉出吸附。
|
|
513
|
+
位置的事全交给落点指示线,被拖的列自己原地不动 */
|
|
514
|
+
[data-scope='table'][data-part='column-header'][data-dragging],
|
|
515
|
+
[data-scope='table'][data-part='cell'][data-dragging] {
|
|
516
|
+
opacity: var(--xh-table-dragging-opacity, var(--xh-state-dragging-opacity));
|
|
517
|
+
user-select: none;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
/* —— 行拖拽排序 —— */
|
|
521
|
+
/* 整行都是拖动源,光标换成抓手告诉人这一行按得动。
|
|
522
|
+
这条不写 touch-action:整行关掉纵向手势,表格自己就滚不动了;
|
|
523
|
+
触屏那一路交给下面那块专属把手 */
|
|
524
|
+
[data-scope='table'][data-part='row'][data-row-draggable] {
|
|
525
|
+
cursor: grab;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/* 行拖拽把手:行里的一小块专属拖动区,按下即拖。触屏靠它起手,
|
|
529
|
+
代价只是这一小块地方不再跟着表格滚。整行起手那一路原样保留,把手是叠加的第二个入口。
|
|
530
|
+
touch-action 不在这儿写:连接层按「拖不动就不写」把它写进了内联 style,
|
|
531
|
+
皮肤再写一遍会盖掉那份条件判断,让不可拖的行也白白让出滚动 */
|
|
532
|
+
[data-scope='table'][data-part='row-drag-trigger'] {
|
|
533
|
+
display: inline-flex;
|
|
534
|
+
flex: none;
|
|
535
|
+
/* 行是 align-items: stretch 的 flex 容器,不自己居中就会被拉成整行高 */
|
|
536
|
+
align-self: center;
|
|
537
|
+
align-items: center;
|
|
538
|
+
justify-content: center;
|
|
539
|
+
inline-size: var(--xh-table-row-drag-size, var(--xh-control-indicator-size));
|
|
540
|
+
block-size: var(--xh-table-row-drag-size, var(--xh-control-indicator-size));
|
|
541
|
+
border-radius: var(--xh-table-trigger-radius, var(--xh-shape-control));
|
|
542
|
+
color: var(--xh-table-row-drag-fg, var(--xh-fg-subtle));
|
|
543
|
+
cursor: grab;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
[data-scope='table'][data-part='row-drag-trigger'][hidden] {
|
|
547
|
+
display: none;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/* 抓手是两条横线:盒子取边框盒,块向两侧的描边就是那两条线,宽高与线宽都走令牌。
|
|
551
|
+
线的走向与能拖的方向垂直——行沿块向上下排,画横线;列沿行向左右排,那边画的是竖线。
|
|
552
|
+
两处都用逻辑属性,书写模式一换,线跟着排列轴自己转过去。
|
|
553
|
+
:empty 守卫让作者塞进来的图标整个顶掉它,而不是两份叠在一起 */
|
|
554
|
+
[data-scope='table'][data-part='row-drag-trigger']:empty::after {
|
|
555
|
+
content: '';
|
|
556
|
+
display: block;
|
|
557
|
+
inline-size: var(--xh-table-row-drag-grip-long, var(--xh-space-2));
|
|
558
|
+
block-size: var(--xh-table-row-drag-grip-short, var(--xh-space-1));
|
|
559
|
+
border-block: var(--xh-stroke-thin) solid currentColor;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
[data-scope='table'][data-part='row-drag-trigger']:not([data-disabled]):hover,
|
|
563
|
+
[data-scope='table'][data-part='row-drag-trigger'][data-dragging] {
|
|
564
|
+
color: var(--xh-table-row-drag-fg-active, var(--xh-fg-default));
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
[data-scope='table'][data-part='row-drag-trigger'][data-dragging] {
|
|
568
|
+
cursor: grabbing;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/* 不可拖的行照样带一个把手,这里保住它的位置、只把它压到禁用色。
|
|
572
|
+
收成 display: none 是不行的:把手占着行首那一格,藏掉之后同一张表里能拖与不能拖的两行,
|
|
573
|
+
首列内容的起点会错开一格 */
|
|
574
|
+
[data-scope='table'][data-part='row-drag-trigger'][data-disabled] {
|
|
575
|
+
color: var(--xh-table-row-drag-fg-disabled, var(--xh-fg-disabled));
|
|
576
|
+
cursor: not-allowed;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
[data-scope='table'][data-part='row-drag-trigger']:focus-visible {
|
|
580
|
+
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
581
|
+
outline-offset: var(--xh-ring-offset);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/* 被拖的行整行压暗,与被拖的列同一档透明度。这里只动 opacity、cursor 与 user-select,
|
|
585
|
+
一个 transform 都不写:斑马纹按 nth-of-type 算、行间线按兄弟选择器算,两者认的都是 DOM 位置,
|
|
586
|
+
跟手让位会让它们在拖动全程与行错开。位置的事全交给落点指示线 */
|
|
587
|
+
[data-scope='table'][data-part='row'][data-dragging] {
|
|
588
|
+
opacity: var(--xh-table-dragging-opacity, var(--xh-state-dragging-opacity));
|
|
589
|
+
cursor: grabbing;
|
|
590
|
+
user-select: none;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/* 详情行与它的数据行是同一块,一起压暗 */
|
|
594
|
+
[data-scope='table'][data-part='expanded-row'][data-dragging] {
|
|
595
|
+
opacity: var(--xh-table-dragging-opacity, var(--xh-state-dragging-opacity));
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/* 落点指示:插到两行之间画一条横线,落进一行里面画一整圈。两档都靠伪元素画,
|
|
599
|
+
定位上下文只给带 data-drop 的那一行:缺了它伪元素会一路上溯到表格根,指示飞到整张表的左上角;
|
|
600
|
+
写到所有行上则是给每一行都多担一份,而落点同一时刻只有一个 */
|
|
601
|
+
[data-scope='table'][data-part='row'][data-drop] {
|
|
602
|
+
position: relative;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
/* 线贯穿整行宽度,并且要压在单元格之上:行是 flex 容器,横向吸附的格子带着层号,
|
|
606
|
+
伪元素不抬到它上面就会被盖住。
|
|
607
|
+
选择器逐值列出前后两档,不写成裸 [data-drop]:换父那一档用的是同一个 ::after,
|
|
608
|
+
裸写会让它先摊上一条线高的横条,再由下面那块整个改写 */
|
|
609
|
+
[data-scope='table'][data-part='row']:is([data-drop='before'], [data-drop='after'])::after {
|
|
610
|
+
content: '';
|
|
611
|
+
position: absolute;
|
|
612
|
+
z-index: calc(var(--xh-table-sticky-column-layer, 1) + 1);
|
|
613
|
+
inset-inline: 0;
|
|
614
|
+
block-size: var(--xh-table-drop-line, var(--xh-stroke-thick));
|
|
615
|
+
background: var(--xh-table-drop-fg, var(--xh-border-control-focus));
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/* 线整条画在行内,不压着边。压着边画的话,首行那条上沿线会被表格根的圆角与滚动裁掉半条 */
|
|
619
|
+
[data-scope='table'][data-part='row'][data-drop='before']::after {
|
|
620
|
+
inset-block-start: 0;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
[data-scope='table'][data-part='row'][data-drop='after']::after {
|
|
624
|
+
inset-block-end: 0;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/* 落进这一行里面(这一行成为新的父):整行淡底,与上下沿那条横线一眼分得开。
|
|
628
|
+
底色打在行上而不是伪元素上,横向吸附的格子取的是 background: inherit,跟着一起换色,
|
|
629
|
+
横向滚过去时冻结列不会留下一块没上色的补丁。
|
|
630
|
+
祖先写到 root 与 body 两层,是为把特指度抬到 0-8-0:拖动时指针必然停在落点这一行上、
|
|
631
|
+
悬停恒真,而悬停那条是 0-6-0、选中那条是 0-3-0,少写一层祖先这块淡底就会被那两档盖掉。
|
|
632
|
+
禁用的行不接换父落点,:not([data-disabled]) 不会漏画任何一处高亮 */
|
|
633
|
+
[data-scope='table'][data-part='root'] [data-scope='table'][data-part='body'] > [data-scope='table'][data-part='row'][data-drop='inside']:not([data-disabled]) {
|
|
634
|
+
background: var(--xh-table-drop-inside-bg, var(--xh-bg-brand-subtle));
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
/* 换父那一档的描边:与底色分两层画,因为它得压在横向吸附的格子之上——
|
|
638
|
+
格子带着层号,画在行自己的背景层上会被首尾的冻结列盖掉半圈。
|
|
639
|
+
零偏移的内投影四边同时着色、不涉及方向,书写模式一换也不用调;
|
|
640
|
+
整圈画在行内不压着边,与上下沿那条横线同一口径。
|
|
641
|
+
行上不写 transform:冻结列是 position: sticky,祖先一有 transform 就掉出吸附 */
|
|
642
|
+
[data-scope='table'][data-part='row'][data-drop='inside']::after {
|
|
643
|
+
content: '';
|
|
644
|
+
position: absolute;
|
|
645
|
+
z-index: calc(var(--xh-table-sticky-column-layer, 1) + 1);
|
|
646
|
+
inset: 0;
|
|
647
|
+
box-shadow: inset 0 0 0 var(--xh-table-drop-line, var(--xh-stroke-thick))
|
|
648
|
+
var(--xh-table-drop-fg, var(--xh-border-control-focus));
|
|
649
|
+
/* 这一层盖满整行,让它不接指针,落点判定照旧落到行与格子上 */
|
|
650
|
+
pointer-events: none;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
/* 活动区域只说给读屏听,不占版面。声明与 shared/visually-hidden.ts 逐条同值。 */
|
|
654
|
+
[data-scope='table'][data-part='live-region'] {
|
|
655
|
+
position: absolute;
|
|
656
|
+
inline-size: 1px;
|
|
657
|
+
block-size: 1px;
|
|
658
|
+
padding: 0;
|
|
659
|
+
margin: -1px;
|
|
660
|
+
overflow: hidden;
|
|
661
|
+
clip-path: inset(50%);
|
|
662
|
+
white-space: nowrap;
|
|
663
|
+
border: 0;
|
|
664
|
+
}
|
|
665
|
+
|
|
367
666
|
/* 排序方向用箭头字形表出来:aria-sort 只报给读屏,视觉侧也得有对应的东西 */
|
|
368
667
|
[data-scope='table'][data-part='sort-trigger']::after {
|
|
369
668
|
color: var(--xh-table-sort-fg, var(--xh-fg-subtle));
|
package/css/tabs.css
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
/* 尺寸档只换这三个私有槽,标签从 root 继承它们,换档不必给每个部件各写一条选择器 */
|
|
9
9
|
--xh-_tabs-trigger-h: var(--xh-control-h-md);
|
|
10
10
|
--xh-_tabs-trigger-px: var(--xh-control-px-md);
|
|
11
|
-
--xh-_tabs-trigger-font-size: var(--xh-
|
|
11
|
+
--xh-_tabs-trigger-font-size: var(--xh-control-font-md);
|
|
12
12
|
|
|
13
13
|
/* 形态档只换这几个私有槽:列表的底、内边距、基线,与标签的描边、选中底、选中态那道指示。
|
|
14
14
|
缺省档(line)是一条基线加一行标签,选中只换文字色——这里的取值即现状 */
|
|
@@ -159,4 +159,151 @@
|
|
|
159
159
|
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
160
160
|
outline-offset: var(--xh-ring-offset);
|
|
161
161
|
}
|
|
162
|
+
|
|
163
|
+
/* —— 标签拖拽换位 —— */
|
|
164
|
+
/* 整张标签都是拖动源,光标换成抓手告诉人这张标签按得动。
|
|
165
|
+
这条不写 touch-action:整张标签关掉手势,标签带自己就滚不动了;
|
|
166
|
+
触屏那一路交给下面那块专属把手 */
|
|
167
|
+
[data-scope='tabs'][data-part='trigger'][data-draggable] {
|
|
168
|
+
cursor: grab;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* 标签拖拽把手:标签里的一小块专属拖动区,按下即拖。触屏靠它起手,
|
|
172
|
+
代价只是这一小块地方不再跟着标签带滚。整张标签起手那一路原样保留,把手是叠加的第二个入口。
|
|
173
|
+
touch-action 不在这儿写:连接层按「拖不动就不写」把它写进了内联 style,
|
|
174
|
+
皮肤再写一遍会盖掉那份条件判断,让不可拖的标签也白白让出滚动 */
|
|
175
|
+
[data-scope='tabs'][data-part='tab-drag-trigger'] {
|
|
176
|
+
display: inline-flex;
|
|
177
|
+
flex: none;
|
|
178
|
+
align-items: center;
|
|
179
|
+
justify-content: center;
|
|
180
|
+
inline-size: var(--xh-tabs-drag-size, var(--xh-control-indicator-size));
|
|
181
|
+
block-size: var(--xh-tabs-drag-size, var(--xh-control-indicator-size));
|
|
182
|
+
border-radius: var(--xh-tabs-drag-radius, var(--xh-shape-control));
|
|
183
|
+
color: var(--xh-tabs-drag-fg, var(--xh-fg-subtle));
|
|
184
|
+
cursor: grab;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/* 抓手是两条与排列轴垂直的线:盒子取边框盒,两侧描边就是那两条线,宽高与线宽都走令牌。
|
|
188
|
+
标签带横排时标签左右排开,画的是两条竖线;竖排那一档在下面换成横线。
|
|
189
|
+
基础这一档同时兜住 root 上没写方向的情形。
|
|
190
|
+
:empty 守卫让作者塞进来的图标整个顶掉它,而不是两份叠在一起 */
|
|
191
|
+
[data-scope='tabs'][data-part='tab-drag-trigger']:empty::after {
|
|
192
|
+
content: '';
|
|
193
|
+
display: block;
|
|
194
|
+
inline-size: var(--xh-tabs-drag-grip-short, var(--xh-space-1));
|
|
195
|
+
block-size: var(--xh-tabs-drag-grip-long, var(--xh-space-2));
|
|
196
|
+
border-inline: var(--xh-stroke-thin) solid currentColor;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* 竖排的标签上下排开,两条线跟着转九十度:长短对调,描边换到块向两侧,
|
|
200
|
+
行向那两条得显式清零,否则四边都留着描边,抓手成了一个方框 */
|
|
201
|
+
[data-scope='tabs'][data-part='root'][data-orientation='vertical']
|
|
202
|
+
[data-scope='tabs'][data-part='tab-drag-trigger']:empty::after {
|
|
203
|
+
inline-size: var(--xh-tabs-drag-grip-long, var(--xh-space-2));
|
|
204
|
+
block-size: var(--xh-tabs-drag-grip-short, var(--xh-space-1));
|
|
205
|
+
border-inline: 0;
|
|
206
|
+
border-block: var(--xh-stroke-thin) solid currentColor;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
[data-scope='tabs'][data-part='tab-drag-trigger']:not([data-disabled]):hover,
|
|
210
|
+
[data-scope='tabs'][data-part='tab-drag-trigger'][data-dragging] {
|
|
211
|
+
color: var(--xh-tabs-drag-fg-active, var(--xh-fg-default));
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
[data-scope='tabs'][data-part='tab-drag-trigger'][data-dragging] {
|
|
215
|
+
cursor: grabbing;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* 不可拖的标签照样带一个把手,这里保住它的位置、只把它压到禁用色。
|
|
219
|
+
收成 display: none 是不行的:把手占着标签内的头一格,藏掉之后同一条标签带里
|
|
220
|
+
能拖与不能拖的两张标签,文字起点会错开一格 */
|
|
221
|
+
[data-scope='tabs'][data-part='tab-drag-trigger'][data-disabled] {
|
|
222
|
+
color: var(--xh-tabs-drag-fg-disabled, var(--xh-fg-disabled));
|
|
223
|
+
cursor: not-allowed;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
[data-scope='tabs'][data-part='tab-drag-trigger']:focus-visible {
|
|
227
|
+
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
228
|
+
outline-offset: var(--xh-ring-offset);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* 被拖的那张标签压暗,让人看得出正在搬的是它。这里只动 opacity、cursor 与 user-select,
|
|
232
|
+
一个 transform 都不写:标签原地不动,要落到哪儿全交给落点指示 */
|
|
233
|
+
[data-scope='tabs'][data-part='trigger'][data-dragging] {
|
|
234
|
+
opacity: var(--xh-tabs-dragging-opacity, var(--xh-state-dragging-opacity));
|
|
235
|
+
cursor: grabbing;
|
|
236
|
+
user-select: none;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* 落点指示线:插到哪张标签的哪一侧,线就画在那张标签的那条边上。
|
|
240
|
+
定位上下文不必在这儿再给:标签的基础规则里已经是 position: relative。
|
|
241
|
+
线走 ::after:选中态那道指示画的是 box-shadow(card 档的顶边条、segment 档的浮起),
|
|
242
|
+
line 档只换文字色,标签上两个伪元素都空着,落点线不与谁抢。
|
|
243
|
+
标签自身不收 overflow,线不会被裁掉;仍整条画在盒内不压着边 */
|
|
244
|
+
[data-scope='tabs'][data-part='trigger']:is([data-drop='before'], [data-drop='after'])::after {
|
|
245
|
+
content: '';
|
|
246
|
+
position: absolute;
|
|
247
|
+
background: var(--xh-tabs-drop-fg, var(--xh-border-control-focus));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* 线的方向跟着标签带的排法换:方向写在 root 的 data-orientation 上,从根往下选。
|
|
251
|
+
横排的标签左右排开,线是一条竖的,贯穿标签的块向、贴在行向的前后沿 */
|
|
252
|
+
[data-scope='tabs'][data-part='root'][data-orientation='horizontal']
|
|
253
|
+
[data-scope='tabs'][data-part='trigger']:is([data-drop='before'], [data-drop='after'])::after {
|
|
254
|
+
inset-block: 0;
|
|
255
|
+
inline-size: var(--xh-tabs-drop-line, var(--xh-stroke-thick));
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/* 落在前沿还是后沿走逻辑属性:rtl 下 before 自己就换到右边去了。
|
|
259
|
+
换成 box-shadow 的偏移量则是物理的,写不出逻辑方向 */
|
|
260
|
+
[data-scope='tabs'][data-part='root'][data-orientation='horizontal']
|
|
261
|
+
[data-scope='tabs'][data-part='trigger'][data-drop='before']::after {
|
|
262
|
+
inset-inline-start: 0;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
[data-scope='tabs'][data-part='root'][data-orientation='horizontal']
|
|
266
|
+
[data-scope='tabs'][data-part='trigger'][data-drop='after']::after {
|
|
267
|
+
inset-inline-end: 0;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* 竖排的标签上下排开,线是一条横的,贯穿标签的行向、贴在块向的前后沿 */
|
|
271
|
+
[data-scope='tabs'][data-part='root'][data-orientation='vertical']
|
|
272
|
+
[data-scope='tabs'][data-part='trigger']:is([data-drop='before'], [data-drop='after'])::after {
|
|
273
|
+
inset-inline: 0;
|
|
274
|
+
block-size: var(--xh-tabs-drop-line, var(--xh-stroke-thick));
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* 块向同样走逻辑属性,跟着书写模式走 */
|
|
278
|
+
[data-scope='tabs'][data-part='root'][data-orientation='vertical']
|
|
279
|
+
[data-scope='tabs'][data-part='trigger'][data-drop='before']::after {
|
|
280
|
+
inset-block-start: 0;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
[data-scope='tabs'][data-part='root'][data-orientation='vertical']
|
|
284
|
+
[data-scope='tabs'][data-part='trigger'][data-drop='after']::after {
|
|
285
|
+
inset-block-end: 0;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/* 活动区域只说给读屏听,不占版面。声明与 shared/visually-hidden.ts 逐条同值。 */
|
|
289
|
+
[data-scope='tabs'][data-part='live-region'] {
|
|
290
|
+
position: absolute;
|
|
291
|
+
inline-size: 1px;
|
|
292
|
+
block-size: 1px;
|
|
293
|
+
padding: 0;
|
|
294
|
+
margin: -1px;
|
|
295
|
+
overflow: hidden;
|
|
296
|
+
clip-path: inset(50%);
|
|
297
|
+
white-space: nowrap;
|
|
298
|
+
border: 0;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
302
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
303
|
+
[data-scope='tabs'][data-part='root'][hidden],
|
|
304
|
+
[data-scope='tabs'][data-part='list'][hidden],
|
|
305
|
+
[data-scope='tabs'][data-part='trigger'][hidden],
|
|
306
|
+
[data-scope='tabs'][data-part='tab-drag-trigger'][hidden] {
|
|
307
|
+
display: none;
|
|
308
|
+
}
|
|
162
309
|
}
|
package/css/tag.css
CHANGED
|
@@ -130,8 +130,10 @@
|
|
|
130
130
|
color: var(--xh-tag-fg, var(--xh-fg-default));
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
/* 描边档的边就是这枚标签的全部轮廓,走「可操作区边界」那一支:
|
|
134
|
+
兑了底色的 --xh-_tone-border 六族都在 1.44-2.18,当轮廓看不清 */
|
|
133
135
|
[data-scope='tag'][data-part='root'][data-variant='outline'][data-tone] {
|
|
134
|
-
border-color: var(--xh-tag-border, var(--xh-_tone-border, var(--xh-border-default)));
|
|
136
|
+
border-color: var(--xh-tag-border, var(--xh-_tone-border-control, var(--xh-border-default)));
|
|
135
137
|
color: var(--xh-tag-fg, var(--xh-_tone-fg, var(--xh-fg-default)));
|
|
136
138
|
}
|
|
137
139
|
|
package/css/tags-input.css
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
--xh-_tags-input-control-h: var(--xh-control-h-md);
|
|
16
16
|
--xh-_tags-input-control-px: var(--xh-control-px-md);
|
|
17
17
|
--xh-_tags-input-control-gap: var(--xh-control-gap-md);
|
|
18
|
-
--xh-_tags-input-input-font-size: var(--xh-
|
|
19
|
-
--xh-_tags-input-item-font-size: var(--xh-
|
|
20
|
-
--xh-_tags-input-label-font-size: var(--xh-
|
|
18
|
+
--xh-_tags-input-input-font-size: var(--xh-control-font-md);
|
|
19
|
+
--xh-_tags-input-item-font-size: var(--xh-control-caption-md);
|
|
20
|
+
--xh-_tags-input-label-font-size: var(--xh-control-font-md);
|
|
21
21
|
/* 形态档只换这三个私有槽,缺省这一份就是描边式(描边 + 画布底) */
|
|
22
22
|
--xh-_tags-input-control-bg: var(--xh-bg-canvas);
|
|
23
23
|
--xh-_tags-input-control-border: var(--xh-border-control);
|
package/css/text-field.css
CHANGED
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
--xh-_text-field-h: var(--xh-control-h-md);
|
|
17
17
|
--xh-_text-field-px: var(--xh-control-px-md);
|
|
18
18
|
--xh-_text-field-gap: var(--xh-control-gap-md);
|
|
19
|
-
--xh-_text-field-font-size: var(--xh-
|
|
20
|
-
--xh-_text-field-label-font-size: var(--xh-
|
|
21
|
-
--xh-_text-field-action-font-size: var(--xh-
|
|
19
|
+
--xh-_text-field-font-size: var(--xh-control-font-md);
|
|
20
|
+
--xh-_text-field-label-font-size: var(--xh-control-font-md);
|
|
21
|
+
--xh-_text-field-action-font-size: var(--xh-control-caption-md);
|
|
22
22
|
|
|
23
23
|
/* 形态档只换这三个私有槽:底、常态描边、悬停描边 */
|
|
24
24
|
--xh-_text-field-bg: var(--xh-bg-canvas);
|