@xihan-ui/styles 2.1.0 → 3.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 +1261 -0
- package/README.md +6 -1
- package/component-tokens.d.ts +533 -96
- package/components.tokens.json +35461 -26045
- package/css/accordion.css +34 -8
- package/css/alert.css +59 -1
- package/css/anchor.css +46 -8
- package/css/approval.css +116 -76
- package/css/avatar-group.css +1 -1
- package/css/avatar.css +13 -5
- package/css/back-top.css +61 -42
- package/css/badge.css +62 -12
- package/css/bar-code.css +1 -1
- package/css/breadcrumb.css +62 -3
- package/css/button-group.css +4 -4
- package/css/button.css +67 -19
- package/css/calendar-picker.css +19 -0
- package/css/calendar-range-picker.css +39 -2
- package/css/card.css +115 -1
- package/css/carousel.css +148 -43
- package/css/cartesian-chart.css +830 -0
- package/css/cascader.css +181 -65
- package/css/checkbox-group.css +59 -89
- package/css/checkbox.css +16 -49
- package/css/citation.css +470 -0
- package/css/clipboard.css +20 -63
- package/css/code-view.css +101 -6
- package/css/collapsible.css +34 -8
- package/css/color-field.css +18 -0
- package/css/color-picker.css +128 -50
- package/css/color-slider.css +22 -15
- package/css/color-swatch-picker.css +3 -1
- package/css/combobox.css +80 -33
- package/css/command.css +45 -43
- package/css/context-menu.css +39 -22
- package/css/date-field.css +56 -0
- package/css/date-picker.css +132 -26
- package/css/date-range-picker.css +337 -14
- package/css/description.css +17 -1
- package/css/descriptions.css +42 -0
- package/css/dialog.css +94 -36
- package/css/diff-view.css +97 -12
- package/css/download-trigger.css +44 -78
- package/css/drawer.css +160 -119
- package/css/editable.css +19 -0
- package/css/empty-state.css +7 -6
- package/css/field-array.css +36 -0
- package/css/field.css +20 -18
- package/css/file-upload.css +125 -135
- package/css/flex.css +324 -8
- package/css/float-button.css +263 -38
- package/css/floating-panel.css +53 -19
- package/css/form.css +31 -17
- 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 +31 -14
- package/css/icon.css +100 -0
- package/css/image-cropper.css +33 -7
- package/css/image-viewer.css +167 -22
- package/css/image.css +23 -4
- package/css/input-group.css +11 -13
- package/css/json-viewer.css +50 -2
- package/css/layout.css +68 -18
- package/css/liquid.css +106 -0
- package/css/list.css +1 -1
- package/css/listbox.css +46 -6
- package/css/loading-bar.css +27 -13
- package/css/log.css +129 -33
- 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 -19
- package/css/menu.css +35 -21
- package/css/menubar.css +36 -20
- package/css/message-feed.css +172 -51
- package/css/navigation-menu.css +172 -11
- package/css/notification.css +435 -108
- package/css/number-field.css +22 -0
- package/css/page-header.css +3 -1
- package/css/pagination.css +126 -24
- package/css/password-input.css +40 -8
- package/css/pie-chart.css +247 -0
- package/css/popconfirm.css +44 -50
- package/css/popover.css +50 -14
- package/css/progress.css +308 -10
- package/css/prompt-input.css +36 -0
- package/css/question-flow.css +97 -57
- package/css/radar-chart.css +233 -0
- package/css/radio-group.css +363 -5
- package/css/rating.css +21 -23
- package/css/reasoning.css +61 -54
- 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 +74 -55
- package/css/side-nav.css +173 -24
- package/css/signature-pad.css +16 -1
- package/css/skeleton.css +13 -14
- package/css/slider.css +35 -13
- package/css/sortable.css +37 -7
- package/css/sparkline.css +164 -0
- package/css/spinner.css +50 -22
- package/css/splitter.css +7 -1
- package/css/statistic.css +10 -0
- package/css/steps.css +248 -29
- package/css/switch.css +23 -48
- package/css/table.css +175 -118
- package/css/tabs.css +231 -19
- package/css/tag-group.css +27 -3
- package/css/tag.css +53 -12
- 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 +103 -17
- package/css/time-range-picker.css +45 -16
- package/css/timeline.css +1 -1
- package/css/toggle-group.css +4 -4
- package/css/toggle.css +4 -3
- package/css/tool-call.css +59 -51
- package/css/toolbar.css +101 -3
- package/css/tooltip.css +15 -2
- package/css/tour.css +42 -12
- package/css/transfer.css +98 -75
- package/css/tree-select.css +232 -53
- package/css/tree.css +271 -55
- package/css/truncate.css +55 -12
- package/css/typography.css +93 -0
- package/css/virtualizer.css +56 -0
- 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 +9 -15
- 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 +207 -10
- package/family/tag-list.css +59 -0
- package/index.css +13824 -4030
- package/index.unlayered.css +13403 -3605
- 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/time-picker.css
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
/* 共享关键帧由 family/motion.css 提供,本皮肤 @import 它,单独引入仍成立。 */
|
|
14
14
|
@import '../family/motion.css';
|
|
15
|
+
@import '../family/tag-list.css';
|
|
15
16
|
|
|
16
17
|
@layer xihan.components {
|
|
17
18
|
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
@@ -63,6 +64,7 @@
|
|
|
63
64
|
--xh-_time-picker-control-px: var(--xh-control-px-md);
|
|
64
65
|
--xh-_time-picker-gap: var(--xh-control-gap-md);
|
|
65
66
|
--xh-_time-picker-font-size: var(--xh-control-font-md);
|
|
67
|
+
--xh-_time-picker-item-py: var(--xh-list-option-py-md);
|
|
66
68
|
|
|
67
69
|
/* 段位强调随语气走:当前段是「当前项」,淡底 + 淡底前景;对号使用普通表面上的前景色。
|
|
68
70
|
没写 data-tone 时这几个 --xh-_tone* 没被声明,退回品牌色 */
|
|
@@ -95,6 +97,7 @@
|
|
|
95
97
|
--xh-_time-picker-control-px: var(--xh-control-px-sm);
|
|
96
98
|
--xh-_time-picker-gap: var(--xh-control-gap-sm);
|
|
97
99
|
--xh-_time-picker-font-size: var(--xh-control-font-sm);
|
|
100
|
+
--xh-_time-picker-item-py: var(--xh-list-option-py-sm);
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
[data-scope='time-picker']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
@@ -103,6 +106,7 @@
|
|
|
103
106
|
--xh-_time-picker-control-px: var(--xh-control-px-lg);
|
|
104
107
|
--xh-_time-picker-gap: var(--xh-control-gap-lg);
|
|
105
108
|
--xh-_time-picker-font-size: var(--xh-control-font-lg);
|
|
109
|
+
--xh-_time-picker-item-py: var(--xh-list-option-py-lg);
|
|
106
110
|
}
|
|
107
111
|
|
|
108
112
|
/* 声明了 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去 */
|
|
@@ -173,6 +177,27 @@
|
|
|
173
177
|
display: none;
|
|
174
178
|
}
|
|
175
179
|
|
|
180
|
+
/* 多选的标签行:段位让位,选中的时刻在盒里排成标签,超过 maxTagCount 的折进 +N。
|
|
181
|
+
行里每一枚都是 tag(data-scope="tag"),样子归 tag.css;行怎么排、标签怎么进出归标签行家族配方。
|
|
182
|
+
基准取 0:只吃两颗钮剩下的宽度、在自己里面折行;按内容宽算基准的话,盒子会先在钮前面折行,把钮挤到最后一行 */
|
|
183
|
+
[data-scope='time-picker'][data-part='tag-list'] {
|
|
184
|
+
--xh-tag-list-gap: var(--xh-time-picker-tag-list-gap, var(--xh-space-1));
|
|
185
|
+
|
|
186
|
+
flex: 1 1 0;
|
|
187
|
+
flex-wrap: wrap;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* 时刻标签是定长文字,截短了就读不出是几点:不收缩,排不下就折到下一行(与标签输入同一种排法),
|
|
191
|
+
盒随行数长高(字段家族的 multi-tag 布局给),到上限后在盒内滚动 */
|
|
192
|
+
[data-scope='time-picker'][data-part='tag-list'] > [data-scope='tag'][data-part='root'] {
|
|
193
|
+
flex: none;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
[data-scope='time-picker'][data-part='control'][data-xh-field-layout='multi-tag'] {
|
|
197
|
+
max-block-size: var(--xh-time-picker-control-max-h, var(--xh-viewport-h-sm));
|
|
198
|
+
overflow-y: auto;
|
|
199
|
+
}
|
|
200
|
+
|
|
176
201
|
[data-scope='time-picker'][data-part='segment-group'] > :not([data-scope]) {
|
|
177
202
|
color: var(--xh-time-picker-literal-fg, var(--xh-fg-subtle));
|
|
178
203
|
}
|
|
@@ -189,7 +214,7 @@
|
|
|
189
214
|
/* 段是 role=spinbutton 的展示节点,双击选中一段文字只会碍事 */
|
|
190
215
|
user-select: none;
|
|
191
216
|
transition:
|
|
192
|
-
background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
217
|
+
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
193
218
|
color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
194
219
|
}
|
|
195
220
|
|
|
@@ -278,10 +303,11 @@
|
|
|
278
303
|
--xh-action-fg-rest: var(--xh-time-picker-action-fg-hover, var(--xh-fg-default));
|
|
279
304
|
}
|
|
280
305
|
|
|
281
|
-
/*
|
|
306
|
+
/* 有值时清空钮顶上来,展开钮让位:两颗并排堆着用户分不清点哪个。
|
|
307
|
+
多选不让位:段位收起后展开钮是唯一的键盘入口(退格摘标签也在它身上),藏了键盘就进不来 */
|
|
282
308
|
[data-scope='time-picker'][data-part='control']:has(
|
|
283
309
|
> [data-scope='time-picker'][data-part='clear-trigger']:not([hidden])
|
|
284
|
-
)
|
|
310
|
+
):not(:has(> [data-scope='time-picker'][data-part='tag-list']:not([hidden])))
|
|
285
311
|
> [data-scope='time-picker'][data-part='trigger'] {
|
|
286
312
|
display: none;
|
|
287
313
|
}
|
|
@@ -320,7 +346,8 @@
|
|
|
320
346
|
outline: none;
|
|
321
347
|
}
|
|
322
348
|
|
|
323
|
-
|
|
349
|
+
/* 挂载时就开着的那一段(data-instant)属于首帧,直接呈现 */
|
|
350
|
+
[data-scope='time-picker'][data-part='content'][data-state='open']:not([data-instant]) {
|
|
324
351
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
325
352
|
}
|
|
326
353
|
|
|
@@ -330,6 +357,40 @@
|
|
|
330
357
|
animation: xh-overlay-slide-out var(--xh-motion-duration-exit) var(--xh-motion-ease-exit) forwards;
|
|
331
358
|
}
|
|
332
359
|
|
|
360
|
+
/* 「添加」沉到各列的右下角:它是多选时整块面板的出口,不跟列顶对齐 */
|
|
361
|
+
[data-scope='time-picker'][data-part='content'] > [data-scope='time-picker'][data-part='confirm-trigger'] {
|
|
362
|
+
flex: none;
|
|
363
|
+
align-self: flex-end;
|
|
364
|
+
margin-inline-start: var(--xh-time-picker-confirm-trigger-gap, var(--xh-space-1));
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/* 「添加」是面板里唯一的主要动作:品牌实心、悬停 / 按下与 0.97 按压、焦点环全由 Action Control 的
|
|
368
|
+
text solid 档给;槽名统一按部件取 --xh-time-picker-confirm-trigger-*,只映射到家族桥接槽 */
|
|
369
|
+
[data-scope='time-picker'][data-part='confirm-trigger'] {
|
|
370
|
+
--xh-action-visual-size: var(--xh-time-picker-confirm-trigger-h, var(--xh-_action-profile-visual-size));
|
|
371
|
+
--xh-action-padding-inline: var(--xh-time-picker-confirm-trigger-px, var(--xh-_action-profile-padding-inline));
|
|
372
|
+
--xh-action-radius: var(--xh-time-picker-confirm-trigger-radius, var(--xh-shape-control));
|
|
373
|
+
--xh-action-bg-rest: var(--xh-time-picker-confirm-trigger-bg, var(--xh-_action-variant-bg-rest));
|
|
374
|
+
--xh-action-bg-hover: var(--xh-time-picker-confirm-trigger-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
375
|
+
--xh-action-bg-pressed: var(--xh-time-picker-confirm-trigger-bg-active, var(--xh-_action-variant-bg-pressed));
|
|
376
|
+
--xh-action-fg-rest: var(--xh-time-picker-confirm-trigger-fg, var(--xh-_action-variant-fg-rest));
|
|
377
|
+
--xh-action-fg-hover: var(--xh-time-picker-confirm-trigger-fg, var(--xh-_action-variant-fg-hover));
|
|
378
|
+
--xh-action-fg-pressed: var(--xh-time-picker-confirm-trigger-fg, var(--xh-_action-variant-fg-pressed));
|
|
379
|
+
--xh-action-border-rest: transparent;
|
|
380
|
+
--xh-action-highlight-rest: transparent;
|
|
381
|
+
--xh-action-shadow-rest: var(--xh-time-picker-confirm-trigger-shadow, none);
|
|
382
|
+
--xh-action-shadow-hover: var(--xh-time-picker-confirm-trigger-shadow, none);
|
|
383
|
+
--xh-action-shadow-pressed: var(--xh-time-picker-confirm-trigger-shadow, none);
|
|
384
|
+
--xh-action-font-size: var(--xh-text-secondary-size);
|
|
385
|
+
|
|
386
|
+
border-width: 0;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/* 单选时连接层给的是 hidden 属性;家族那条 display 会把 UA 规则盖掉 */
|
|
390
|
+
[data-scope='time-picker'][data-part='confirm-trigger'][hidden] {
|
|
391
|
+
display: none;
|
|
392
|
+
}
|
|
393
|
+
|
|
333
394
|
/* 快捷选项也是一列,与时分秒那几列并排,排在行内起始一侧 */
|
|
334
395
|
[data-scope='time-picker'][data-part='preset-group'] {
|
|
335
396
|
display: flex;
|
|
@@ -341,7 +402,7 @@
|
|
|
341
402
|
overflow-y: auto;
|
|
342
403
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
343
404
|
overscroll-behavior: contain;
|
|
344
|
-
border-inline-end: var(--xh-stroke-thin) solid var(--xh-time-picker-column-divider, var(--xh-material-
|
|
405
|
+
border-inline-end: var(--xh-stroke-thin) solid var(--xh-time-picker-column-divider, var(--xh-material-solid-separator));
|
|
345
406
|
}
|
|
346
407
|
|
|
347
408
|
[data-scope='time-picker'][data-part='preset-group'][hidden] {
|
|
@@ -355,7 +416,7 @@
|
|
|
355
416
|
--xh-collection-block-padding: var(--xh-time-picker-preset-py, var(--xh-space-1));
|
|
356
417
|
--xh-collection-inline-padding: var(--xh-time-picker-preset-px, var(--xh-space-3));
|
|
357
418
|
--xh-collection-font-size: var(--xh-text-secondary-size);
|
|
358
|
-
--xh-collection-radius: var(--xh-time-picker-preset-radius, var(--xh-shape-
|
|
419
|
+
--xh-collection-radius: var(--xh-time-picker-preset-radius, var(--xh-shape-inset));
|
|
359
420
|
/* 面板是实体面(floating),正文取页面前景 */
|
|
360
421
|
--xh-collection-fg-rest: var(--xh-time-picker-preset-fg, var(--xh-fg-default));
|
|
361
422
|
--xh-collection-fg-hover: var(--xh-time-picker-preset-fg, var(--xh-fg-default));
|
|
@@ -381,7 +442,7 @@
|
|
|
381
442
|
/* 对号的末端轨始终留着,切换选中时文字与整列宽度都不移动。 */
|
|
382
443
|
padding-inline-end: calc(
|
|
383
444
|
var(--xh-time-picker-preset-px, var(--xh-space-3))
|
|
384
|
-
+ var(--xh-time-picker-preset-check-size, var(--xh-
|
|
445
|
+
+ var(--xh-time-picker-preset-check-size, var(--xh-control-indicator-size))
|
|
385
446
|
+ var(--xh-space-1)
|
|
386
447
|
);
|
|
387
448
|
white-space: nowrap;
|
|
@@ -402,8 +463,8 @@
|
|
|
402
463
|
position: absolute;
|
|
403
464
|
inset-block-start: 50%;
|
|
404
465
|
inset-inline-end: var(--xh-time-picker-preset-px, var(--xh-space-3));
|
|
405
|
-
inline-size: var(--xh-time-picker-preset-check-size, var(--xh-
|
|
406
|
-
block-size: var(--xh-time-picker-preset-check-size, var(--xh-
|
|
466
|
+
inline-size: var(--xh-time-picker-preset-check-size, var(--xh-control-indicator-size));
|
|
467
|
+
block-size: var(--xh-time-picker-preset-check-size, var(--xh-control-indicator-size));
|
|
407
468
|
background-color: var(--xh-time-picker-preset-check-fg, var(--xh-_time-picker-check-fg));
|
|
408
469
|
opacity: 0;
|
|
409
470
|
translate: 0 -50%;
|
|
@@ -450,7 +511,7 @@
|
|
|
450
511
|
|
|
451
512
|
/* 每列后面紧跟着它自己的贴层条子节点,相邻选择器接不到下一列,按「前面有过列」取第二列起 */
|
|
452
513
|
[data-scope='time-picker'][data-part='column'] ~ [data-scope='time-picker'][data-part='column'] {
|
|
453
|
-
border-inline-start: var(--xh-stroke-thin) solid var(--xh-time-picker-column-divider, var(--xh-material-
|
|
514
|
+
border-inline-start: var(--xh-stroke-thin) solid var(--xh-time-picker-column-divider, var(--xh-material-solid-separator));
|
|
454
515
|
}
|
|
455
516
|
|
|
456
517
|
/* 焦点落在列上有两种情形:指针打开、这一段还空着、还没有任何格当锚点,或整列被界裁空。
|
|
@@ -472,13 +533,13 @@
|
|
|
472
533
|
[data-scope='time-picker'][data-part='item'] {
|
|
473
534
|
--xh-_time-picker-item-rail: max(
|
|
474
535
|
var(--xh-time-picker-item-px, var(--xh-space-0_5)),
|
|
475
|
-
calc(var(--xh-time-picker-item-check-size, var(--xh-
|
|
536
|
+
calc(var(--xh-time-picker-item-check-size, var(--xh-control-indicator-size)) + var(--xh-space-0_5))
|
|
476
537
|
);
|
|
477
|
-
--xh-collection-block-padding: var(--xh-time-picker-item-py,
|
|
538
|
+
--xh-collection-block-padding: var(--xh-time-picker-item-py, var(--xh-_time-picker-item-py));
|
|
478
539
|
/* 两侧留同宽轨:对号绝对落在末端,数字仍在整格的数学中心。 */
|
|
479
540
|
--xh-collection-inline-padding: var(--xh-_time-picker-item-rail);
|
|
480
541
|
--xh-collection-font-size: var(--xh-time-picker-item-font-size, var(--xh-_time-picker-font-size));
|
|
481
|
-
--xh-collection-radius: var(--xh-time-picker-item-radius, var(--xh-shape-
|
|
542
|
+
--xh-collection-radius: var(--xh-time-picker-item-radius, var(--xh-shape-inset));
|
|
482
543
|
--xh-collection-fg-rest: var(--xh-time-picker-item-fg, var(--xh-material-frosted-fg));
|
|
483
544
|
--xh-collection-fg-hover: var(--xh-time-picker-item-fg, var(--xh-material-frosted-fg));
|
|
484
545
|
--xh-collection-fg-keyboard-highlight: var(--xh-time-picker-item-fg, var(--xh-material-frosted-fg));
|
|
@@ -505,9 +566,9 @@
|
|
|
505
566
|
flex: none;
|
|
506
567
|
align-items: center;
|
|
507
568
|
justify-content: center;
|
|
508
|
-
block-size: var(--xh-time-picker-item-h,
|
|
569
|
+
block-size: var(--xh-time-picker-item-h, auto);
|
|
509
570
|
/* 居中的单个数字格没有截断层,行高保持紧排,列内多露几格 */
|
|
510
|
-
line-height: var(--xh-leading-
|
|
571
|
+
line-height: var(--xh-leading-normal);
|
|
511
572
|
white-space: nowrap;
|
|
512
573
|
user-select: none;
|
|
513
574
|
}
|
|
@@ -530,8 +591,8 @@
|
|
|
530
591
|
position: absolute;
|
|
531
592
|
inset-block-start: 50%;
|
|
532
593
|
inset-inline-end: var(--xh-space-0_5);
|
|
533
|
-
inline-size: var(--xh-time-picker-item-check-size, var(--xh-
|
|
534
|
-
block-size: var(--xh-time-picker-item-check-size, var(--xh-
|
|
594
|
+
inline-size: var(--xh-time-picker-item-check-size, var(--xh-control-indicator-size));
|
|
595
|
+
block-size: var(--xh-time-picker-item-check-size, var(--xh-control-indicator-size));
|
|
535
596
|
background-color: var(--xh-time-picker-item-check-fg, var(--xh-_time-picker-check-fg));
|
|
536
597
|
opacity: 0;
|
|
537
598
|
translate: 0 -50%;
|
|
@@ -564,6 +625,12 @@
|
|
|
564
625
|
forced-color-adjust: none;
|
|
565
626
|
}
|
|
566
627
|
|
|
628
|
+
/* 按下与没被高亮时的悬停,家族把条目涂成 Highlight,对号跟着换 HighlightText */
|
|
629
|
+
[data-scope='time-picker'][data-part='preset']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed], :hover:not(:focus-visible, [data-highlighted]))::after,
|
|
630
|
+
[data-scope='time-picker'][data-part='item']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed], :hover:not(:focus-visible, [data-highlighted]))::after {
|
|
631
|
+
background-color: HighlightText;
|
|
632
|
+
}
|
|
633
|
+
|
|
567
634
|
[data-scope='time-picker'][data-part='preset'][data-disabled]::after,
|
|
568
635
|
[data-scope='time-picker'][data-part='item'][data-disabled]::after {
|
|
569
636
|
background-color: GrayText;
|
|
@@ -608,6 +675,25 @@
|
|
|
608
675
|
-webkit-mask: var(--xh-glyph-mark-clock) center / contain no-repeat;
|
|
609
676
|
mask: var(--xh-glyph-mark-clock) center / contain no-repeat;
|
|
610
677
|
}
|
|
678
|
+
|
|
679
|
+
@media (forced-colors: active) {
|
|
680
|
+
/* 兜底字形是 mask 挖出来的一块底色,这一档里底色被系统换成 Canvas,字形跟着消失。
|
|
681
|
+
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
682
|
+
按钮面上取 ButtonText,悬停与按下时家族把按钮涂成 Highlight、字形换 HighlightText;
|
|
683
|
+
禁用取 GrayText */
|
|
684
|
+
[data-scope='time-picker']:is([data-part='clear-trigger'], [data-part='trigger']):empty::before {
|
|
685
|
+
forced-color-adjust: none;
|
|
686
|
+
background-color: ButtonText;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
[data-scope='time-picker']:is([data-part='clear-trigger'], [data-part='trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
690
|
+
background-color: HighlightText;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
[data-scope='time-picker']:is([data-part='clear-trigger'], [data-part='trigger'])[data-disabled]:empty::before {
|
|
694
|
+
background-color: GrayText;
|
|
695
|
+
}
|
|
696
|
+
}
|
|
611
697
|
}
|
|
612
698
|
|
|
613
699
|
@layer xihan.motion {
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
--xh-_time-range-picker-control-px: var(--xh-control-px-md);
|
|
71
71
|
--xh-_time-range-picker-gap: var(--xh-control-gap-md);
|
|
72
72
|
--xh-_time-range-picker-font-size: var(--xh-control-font-md);
|
|
73
|
+
--xh-_time-range-picker-item-py: var(--xh-list-option-py-md);
|
|
73
74
|
|
|
74
75
|
/* 段位强调随语气走:当前段是「当前项」,淡底 + 淡底前景;对号使用普通表面上的前景色。
|
|
75
76
|
没写 data-tone 时这几个 --xh-_tone* 没被声明,退回品牌色 */
|
|
@@ -102,6 +103,7 @@
|
|
|
102
103
|
--xh-_time-range-picker-control-px: var(--xh-control-px-sm);
|
|
103
104
|
--xh-_time-range-picker-gap: var(--xh-control-gap-sm);
|
|
104
105
|
--xh-_time-range-picker-font-size: var(--xh-control-font-sm);
|
|
106
|
+
--xh-_time-range-picker-item-py: var(--xh-list-option-py-sm);
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
[data-scope='time-range-picker']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
@@ -110,6 +112,7 @@
|
|
|
110
112
|
--xh-_time-range-picker-control-px: var(--xh-control-px-lg);
|
|
111
113
|
--xh-_time-range-picker-gap: var(--xh-control-gap-lg);
|
|
112
114
|
--xh-_time-range-picker-font-size: var(--xh-control-font-lg);
|
|
115
|
+
--xh-_time-range-picker-item-py: var(--xh-list-option-py-lg);
|
|
113
116
|
}
|
|
114
117
|
|
|
115
118
|
/* 声明了 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去 */
|
|
@@ -222,7 +225,7 @@
|
|
|
222
225
|
/* 段是 role=spinbutton 的展示节点,双击选中一段文字只会碍事 */
|
|
223
226
|
user-select: none;
|
|
224
227
|
transition:
|
|
225
|
-
background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
228
|
+
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
226
229
|
color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
227
230
|
}
|
|
228
231
|
|
|
@@ -359,7 +362,8 @@
|
|
|
359
362
|
outline: none;
|
|
360
363
|
}
|
|
361
364
|
|
|
362
|
-
|
|
365
|
+
/* 挂载时就开着的那一段(data-instant)属于首帧,直接呈现 */
|
|
366
|
+
[data-scope='time-range-picker'][data-part='content'][data-state='open']:not([data-instant]) {
|
|
363
367
|
animation: xh-overlay-slide-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
364
368
|
}
|
|
365
369
|
|
|
@@ -380,7 +384,7 @@
|
|
|
380
384
|
overflow-y: auto;
|
|
381
385
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
382
386
|
overscroll-behavior: contain;
|
|
383
|
-
border-inline-end: var(--xh-stroke-thin) solid var(--xh-time-range-picker-column-divider, var(--xh-material-
|
|
387
|
+
border-inline-end: var(--xh-stroke-thin) solid var(--xh-time-range-picker-column-divider, var(--xh-material-solid-separator));
|
|
384
388
|
}
|
|
385
389
|
|
|
386
390
|
[data-scope='time-range-picker'][data-part='preset-group'][hidden] {
|
|
@@ -394,7 +398,7 @@
|
|
|
394
398
|
--xh-collection-block-padding: var(--xh-time-range-picker-preset-py, var(--xh-space-1));
|
|
395
399
|
--xh-collection-inline-padding: var(--xh-time-range-picker-preset-px, var(--xh-space-3));
|
|
396
400
|
--xh-collection-font-size: var(--xh-text-secondary-size);
|
|
397
|
-
--xh-collection-radius: var(--xh-time-range-picker-preset-radius, var(--xh-shape-
|
|
401
|
+
--xh-collection-radius: var(--xh-time-range-picker-preset-radius, var(--xh-shape-inset));
|
|
398
402
|
/* 面板是实体面(floating),正文取页面前景 */
|
|
399
403
|
--xh-collection-fg-rest: var(--xh-time-range-picker-preset-fg, var(--xh-fg-default));
|
|
400
404
|
--xh-collection-fg-hover: var(--xh-time-range-picker-preset-fg, var(--xh-fg-default));
|
|
@@ -420,7 +424,7 @@
|
|
|
420
424
|
/* 对号的末端轨始终留着,切换选中时文字与整列宽度都不移动。 */
|
|
421
425
|
padding-inline-end: calc(
|
|
422
426
|
var(--xh-time-range-picker-preset-px, var(--xh-space-3))
|
|
423
|
-
+ var(--xh-time-range-picker-preset-check-size, var(--xh-
|
|
427
|
+
+ var(--xh-time-range-picker-preset-check-size, var(--xh-control-indicator-size))
|
|
424
428
|
+ var(--xh-space-1)
|
|
425
429
|
);
|
|
426
430
|
white-space: nowrap;
|
|
@@ -441,8 +445,8 @@
|
|
|
441
445
|
position: absolute;
|
|
442
446
|
inset-block-start: 50%;
|
|
443
447
|
inset-inline-end: var(--xh-time-range-picker-preset-px, var(--xh-space-3));
|
|
444
|
-
inline-size: var(--xh-time-range-picker-preset-check-size, var(--xh-
|
|
445
|
-
block-size: var(--xh-time-range-picker-preset-check-size, var(--xh-
|
|
448
|
+
inline-size: var(--xh-time-range-picker-preset-check-size, var(--xh-control-indicator-size));
|
|
449
|
+
block-size: var(--xh-time-range-picker-preset-check-size, var(--xh-control-indicator-size));
|
|
446
450
|
background-color: var(--xh-time-range-picker-preset-check-fg, var(--xh-_time-range-picker-check-fg));
|
|
447
451
|
opacity: 0;
|
|
448
452
|
translate: 0 -50%;
|
|
@@ -497,7 +501,7 @@
|
|
|
497
501
|
[data-scope='time-range-picker'][data-part='column-group'] + [data-scope='time-range-picker'][data-part='column-group'] {
|
|
498
502
|
margin-inline-start: var(--xh-time-range-picker-column-group-gap, var(--xh-space-2));
|
|
499
503
|
padding-inline-start: var(--xh-time-range-picker-column-group-gap, var(--xh-space-2));
|
|
500
|
-
border-inline-start: var(--xh-stroke-thin) solid var(--xh-time-range-picker-column-group-divider, var(--xh-material-
|
|
504
|
+
border-inline-start: var(--xh-stroke-thin) solid var(--xh-time-range-picker-column-group-divider, var(--xh-material-solid-separator));
|
|
501
505
|
}
|
|
502
506
|
|
|
503
507
|
/* 组顶上的小标题:独占一行,字号走辅助文本档 */
|
|
@@ -546,7 +550,7 @@
|
|
|
546
550
|
|
|
547
551
|
/* 每列后面紧跟着它自己的贴层条子节点,相邻选择器接不到下一列,按「前面有过列」取第二列起 */
|
|
548
552
|
[data-scope='time-range-picker'][data-part='column'] ~ [data-scope='time-range-picker'][data-part='column'] {
|
|
549
|
-
border-inline-start: var(--xh-stroke-thin) solid var(--xh-time-range-picker-column-divider, var(--xh-material-
|
|
553
|
+
border-inline-start: var(--xh-stroke-thin) solid var(--xh-time-range-picker-column-divider, var(--xh-material-solid-separator));
|
|
550
554
|
}
|
|
551
555
|
|
|
552
556
|
/* 焦点落在列上有两种情形:指针打开、这一段还空着、还没有任何格当锚点,或整列被界裁空。
|
|
@@ -568,13 +572,13 @@
|
|
|
568
572
|
[data-scope='time-range-picker'][data-part='item'] {
|
|
569
573
|
--xh-_time-range-picker-item-rail: max(
|
|
570
574
|
var(--xh-time-range-picker-item-px, var(--xh-space-0_5)),
|
|
571
|
-
calc(var(--xh-time-range-picker-item-check-size, var(--xh-
|
|
575
|
+
calc(var(--xh-time-range-picker-item-check-size, var(--xh-control-indicator-size)) + var(--xh-space-0_5))
|
|
572
576
|
);
|
|
573
|
-
--xh-collection-block-padding: var(--xh-time-range-picker-item-py,
|
|
577
|
+
--xh-collection-block-padding: var(--xh-time-range-picker-item-py, var(--xh-_time-range-picker-item-py));
|
|
574
578
|
/* 两侧留同宽轨:对号绝对落在末端,数字仍在整格的数学中心。 */
|
|
575
579
|
--xh-collection-inline-padding: var(--xh-_time-range-picker-item-rail);
|
|
576
580
|
--xh-collection-font-size: var(--xh-time-range-picker-item-font-size, var(--xh-_time-range-picker-font-size));
|
|
577
|
-
--xh-collection-radius: var(--xh-time-range-picker-item-radius, var(--xh-shape-
|
|
581
|
+
--xh-collection-radius: var(--xh-time-range-picker-item-radius, var(--xh-shape-inset));
|
|
578
582
|
--xh-collection-fg-rest: var(--xh-time-range-picker-item-fg, var(--xh-material-frosted-fg));
|
|
579
583
|
--xh-collection-fg-hover: var(--xh-time-range-picker-item-fg, var(--xh-material-frosted-fg));
|
|
580
584
|
--xh-collection-fg-keyboard-highlight: var(--xh-time-range-picker-item-fg, var(--xh-material-frosted-fg));
|
|
@@ -601,9 +605,9 @@
|
|
|
601
605
|
flex: none;
|
|
602
606
|
align-items: center;
|
|
603
607
|
justify-content: center;
|
|
604
|
-
block-size: var(--xh-time-range-picker-item-h,
|
|
608
|
+
block-size: var(--xh-time-range-picker-item-h, auto);
|
|
605
609
|
/* 居中的单个数字格没有截断层,行高保持紧排,列内多露几格 */
|
|
606
|
-
line-height: var(--xh-leading-
|
|
610
|
+
line-height: var(--xh-leading-normal);
|
|
607
611
|
white-space: nowrap;
|
|
608
612
|
user-select: none;
|
|
609
613
|
}
|
|
@@ -626,8 +630,8 @@
|
|
|
626
630
|
position: absolute;
|
|
627
631
|
inset-block-start: 50%;
|
|
628
632
|
inset-inline-end: var(--xh-space-0_5);
|
|
629
|
-
inline-size: var(--xh-time-range-picker-item-check-size, var(--xh-
|
|
630
|
-
block-size: var(--xh-time-range-picker-item-check-size, var(--xh-
|
|
633
|
+
inline-size: var(--xh-time-range-picker-item-check-size, var(--xh-control-indicator-size));
|
|
634
|
+
block-size: var(--xh-time-range-picker-item-check-size, var(--xh-control-indicator-size));
|
|
631
635
|
background-color: var(--xh-time-range-picker-item-check-fg, var(--xh-_time-range-picker-check-fg));
|
|
632
636
|
opacity: 0;
|
|
633
637
|
translate: 0 -50%;
|
|
@@ -660,6 +664,12 @@
|
|
|
660
664
|
forced-color-adjust: none;
|
|
661
665
|
}
|
|
662
666
|
|
|
667
|
+
/* 按下与没被高亮时的悬停,家族把条目涂成 Highlight,对号跟着换 HighlightText */
|
|
668
|
+
[data-scope='time-range-picker'][data-part='preset']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed], :hover:not(:focus-visible, [data-highlighted]))::after,
|
|
669
|
+
[data-scope='time-range-picker'][data-part='item']:not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error]):is(:active, [data-pressed], :hover:not(:focus-visible, [data-highlighted]))::after {
|
|
670
|
+
background-color: HighlightText;
|
|
671
|
+
}
|
|
672
|
+
|
|
663
673
|
[data-scope='time-range-picker'][data-part='preset'][data-disabled]::after,
|
|
664
674
|
[data-scope='time-range-picker'][data-part='item'][data-disabled]::after {
|
|
665
675
|
background-color: GrayText;
|
|
@@ -704,6 +714,25 @@
|
|
|
704
714
|
-webkit-mask: var(--xh-glyph-mark-clock) center / contain no-repeat;
|
|
705
715
|
mask: var(--xh-glyph-mark-clock) center / contain no-repeat;
|
|
706
716
|
}
|
|
717
|
+
|
|
718
|
+
@media (forced-colors: active) {
|
|
719
|
+
/* 兜底字形是 mask 挖出来的一块底色,这一档里底色被系统换成 Canvas,字形跟着消失。
|
|
720
|
+
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
721
|
+
按钮面上取 ButtonText,悬停与按下时家族把按钮涂成 Highlight、字形换 HighlightText;
|
|
722
|
+
禁用取 GrayText */
|
|
723
|
+
[data-scope='time-range-picker']:is([data-part='clear-trigger'], [data-part='trigger']):empty::before {
|
|
724
|
+
forced-color-adjust: none;
|
|
725
|
+
background-color: ButtonText;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
[data-scope='time-range-picker']:is([data-part='clear-trigger'], [data-part='trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
729
|
+
background-color: HighlightText;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
[data-scope='time-range-picker']:is([data-part='clear-trigger'], [data-part='trigger'])[data-disabled]:empty::before {
|
|
733
|
+
background-color: GrayText;
|
|
734
|
+
}
|
|
735
|
+
}
|
|
707
736
|
}
|
|
708
737
|
|
|
709
738
|
@layer xihan.motion {
|
package/css/timeline.css
CHANGED
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
/* 语气色由每条自己的数据给,同一条的语气改了(事情办成了、出错了)走一遍过渡,
|
|
108
108
|
整列圆点不在数据回来的那一帧集体跳色 */
|
|
109
109
|
transition:
|
|
110
|
-
background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
110
|
+
background-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter),
|
|
111
111
|
color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
112
112
|
}
|
|
113
113
|
|
package/css/toggle-group.css
CHANGED
|
@@ -215,18 +215,18 @@
|
|
|
215
215
|
font-weight: var(--xh-toggle-group-item-font-weight, var(--xh-text-label-weight));
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
/*
|
|
218
|
+
/* 共边只画一次:后一段不画起始边,由前一段的末端边承担。墨色描边半透明,两条重合会加深。
|
|
219
219
|
方向跟着 data-orientation 走,横排收 inline 轴、竖排收 block 轴 */
|
|
220
220
|
[data-scope='toggle-group'][data-part='root'][data-orientation='horizontal']
|
|
221
221
|
> [data-scope='toggle-group'][data-part='item']
|
|
222
222
|
+ [data-scope='toggle-group'][data-part='item'] {
|
|
223
|
-
|
|
223
|
+
border-inline-start-width: 0;
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
[data-scope='toggle-group'][data-part='root'][data-orientation='vertical']
|
|
227
227
|
> [data-scope='toggle-group'][data-part='item']
|
|
228
228
|
+ [data-scope='toggle-group'][data-part='item'] {
|
|
229
|
-
|
|
229
|
+
border-block-start-width: 0;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
/* 两端圆角用逻辑角属性写,rtl 与竖排都跟着换边,不必另写一套。
|
|
@@ -270,7 +270,7 @@
|
|
|
270
270
|
--xh-action-bg-focus-visible: var(--xh-toggle-group-item-bg-on, var(--xh-_toggle-group-item-bg-on));
|
|
271
271
|
--xh-action-bg-disabled: var(
|
|
272
272
|
--xh-toggle-group-item-bg-on-disabled,
|
|
273
|
-
color-mix(in oklab, var(--xh-_toggle-group-item-bg-on) 50%, var(--xh-bg-muted))
|
|
273
|
+
color-mix(in oklab, var(--xh-_toggle-group-item-bg-on) 50%, var(--xh-bg-muted-opaque))
|
|
274
274
|
);
|
|
275
275
|
--xh-action-fg-rest: var(--xh-toggle-group-item-fg-on, var(--xh-_toggle-group-item-fg-on));
|
|
276
276
|
--xh-action-fg-hover: var(--xh-toggle-group-item-fg-on, var(--xh-_toggle-group-item-fg-on));
|
package/css/toggle.css
CHANGED
|
@@ -34,10 +34,11 @@
|
|
|
34
34
|
);
|
|
35
35
|
--xh-_toggle-fg-on: var(--xh-toggle-fg-on, var(--xh-_tone-fg, var(--xh-fg-on-brand-subtle)));
|
|
36
36
|
--xh-_toggle-border-on: var(--xh-toggle-border-on, transparent);
|
|
37
|
-
/* 禁用同时降级前景与表面,不靠 opacity;选中且禁用时底色掺一半中性面,选中信息不丢。
|
|
37
|
+
/* 禁用同时降级前景与表面,不靠 opacity;选中且禁用时底色掺一半中性面,选中信息不丢。
|
|
38
|
+
掺的是淡底的不透明档:墨色淡底半透明,掺进去整块面会跟着变半透明 */
|
|
38
39
|
--xh-_toggle-bg-on-disabled: var(
|
|
39
40
|
--xh-toggle-bg-on-disabled,
|
|
40
|
-
color-mix(in oklab, var(--xh-_toggle-bg-on) 50%, var(--xh-bg-subtle))
|
|
41
|
+
color-mix(in oklab, var(--xh-_toggle-bg-on) 50%, var(--xh-bg-subtle-opaque))
|
|
41
42
|
);
|
|
42
43
|
--xh-_toggle-fg-on-disabled: var(--xh-toggle-fg-on-disabled, var(--xh-_toggle-fg-on));
|
|
43
44
|
--xh-action-bg-rest: var(--xh-toggle-bg, var(--xh-_action-variant-bg-rest));
|
|
@@ -113,7 +114,7 @@
|
|
|
113
114
|
[data-scope='toggle'][data-part='root'][data-variant='solid'][data-state='on'] {
|
|
114
115
|
--xh-action-bg-disabled: var(
|
|
115
116
|
--xh-toggle-bg-on-disabled,
|
|
116
|
-
color-mix(in oklab, var(--xh-_action-variant-bg-rest) 50%, var(--xh-bg-subtle))
|
|
117
|
+
color-mix(in oklab, var(--xh-_action-variant-bg-rest) 50%, var(--xh-bg-subtle-opaque))
|
|
117
118
|
);
|
|
118
119
|
--xh-action-fg-disabled: var(--xh-toggle-fg-on-disabled, var(--xh-_action-variant-fg-rest));
|
|
119
120
|
--xh-action-highlight-rest: var(--xh-_highlight-tone);
|