@xihan-ui/styles 3.2.0 → 4.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 +441 -0
- package/component-tokens.d.ts +229 -60
- package/components.tokens.json +5124 -1555
- package/css/accordion.css +47 -20
- package/css/alert.css +14 -15
- package/css/anchor.css +2 -2
- package/css/approval.css +37 -13
- package/css/avatar-group.css +9 -12
- package/css/avatar.css +20 -18
- package/css/back-top.css +21 -7
- package/css/badge.css +5 -5
- package/css/breadcrumb.css +18 -16
- package/css/button-group.css +4 -6
- package/css/button.css +4 -7
- package/css/calendar-picker.css +177 -94
- package/css/calendar-range-picker.css +206 -121
- package/css/card.css +34 -6
- package/css/carousel.css +65 -49
- package/css/cascader.css +41 -29
- package/css/checkbox-group.css +9 -6
- package/css/checkbox.css +5 -4
- package/css/citation.css +7 -2
- package/css/clipboard.css +20 -4
- package/css/collapsible.css +29 -14
- package/css/color-field.css +4 -4
- package/css/color-picker.css +77 -23
- package/css/color-slider.css +10 -8
- package/css/color-swatch-picker.css +5 -5
- package/css/combobox.css +14 -10
- package/css/command.css +13 -8
- package/css/context-menu.css +10 -5
- package/css/date-field.css +4 -4
- package/css/date-picker.css +165 -102
- package/css/date-range-picker.css +186 -123
- package/css/description.css +10 -6
- package/css/descriptions.css +47 -19
- package/css/dialog.css +50 -35
- package/css/drawer.css +75 -21
- package/css/editable.css +15 -41
- package/css/empty-state.css +21 -3
- package/css/field-array.css +4 -1
- package/css/field.css +17 -18
- package/css/fieldset.css +33 -13
- package/css/file-upload.css +65 -32
- package/css/float-button.css +25 -15
- package/css/floating-panel.css +1 -1
- package/css/form.css +24 -10
- package/css/grid-list.css +1 -1
- package/css/highlight.css +4 -4
- package/css/hover-card.css +19 -12
- package/css/image-viewer.css +77 -27
- package/css/image.css +12 -4
- package/css/infinite-scroll.css +8 -4
- package/css/input-group.css +74 -26
- package/css/kbd.css +1 -1
- package/css/label.css +27 -11
- package/css/layout.css +17 -10
- package/css/list.css +13 -9
- package/css/listbox.css +12 -7
- package/css/loading-bar.css +3 -0
- package/css/mention.css +10 -8
- package/css/menu.css +10 -5
- package/css/menubar.css +13 -8
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +114 -31
- package/css/number-animation.css +2 -2
- package/css/number-field.css +60 -37
- package/css/page-header.css +63 -26
- package/css/pagination.css +35 -38
- package/css/password-input.css +10 -66
- package/css/pin-input.css +18 -26
- package/css/popconfirm.css +20 -11
- package/css/popover.css +18 -12
- package/css/progress.css +14 -13
- package/css/prompt-input.css +3 -3
- package/css/question-flow.css +33 -7
- package/css/radio-group.css +120 -55
- package/css/rating.css +31 -14
- package/css/select.css +14 -10
- package/css/separator.css +22 -4
- package/css/side-nav.css +16 -11
- package/css/signature-pad.css +23 -9
- package/css/skeleton.css +7 -7
- package/css/slider.css +71 -42
- package/css/sparkline.css +8 -2
- package/css/spinner.css +40 -20
- package/css/statistic.css +14 -14
- package/css/steps.css +115 -84
- package/css/switch.css +9 -7
- package/css/table.css +27 -10
- package/css/tabs.css +35 -12
- package/css/tag-group.css +17 -6
- package/css/tag.css +54 -29
- package/css/tags-input.css +38 -19
- package/css/text-field.css +5 -5
- package/css/time-field.css +4 -4
- package/css/time-picker.css +150 -64
- package/css/time-range-picker.css +91 -62
- package/css/timeline.css +37 -20
- package/css/timer.css +3 -3
- package/css/toggle-group.css +4 -4
- package/css/tool-call.css +6 -4
- package/css/toolbar.css +6 -5
- package/css/tooltip.css +15 -16
- package/css/tour.css +14 -7
- package/css/transfer.css +22 -16
- package/css/tree-select.css +10 -10
- package/css/tree.css +26 -25
- package/css/typography.css +28 -25
- package/dist/css/accordion.css +47 -20
- package/dist/css/alert.css +14 -15
- package/dist/css/anchor.css +2 -2
- package/dist/css/approval.css +37 -13
- package/dist/css/avatar-group.css +9 -12
- package/dist/css/avatar.css +20 -18
- package/dist/css/back-top.css +21 -7
- package/dist/css/badge.css +5 -5
- package/dist/css/breadcrumb.css +18 -16
- package/dist/css/button-group.css +4 -6
- package/dist/css/button.css +4 -7
- package/dist/css/calendar-picker.css +177 -94
- package/dist/css/calendar-range-picker.css +206 -121
- package/dist/css/card.css +34 -6
- package/dist/css/carousel.css +65 -49
- package/dist/css/cascader.css +41 -29
- package/dist/css/checkbox-group.css +9 -6
- package/dist/css/checkbox.css +5 -4
- package/dist/css/citation.css +7 -2
- package/dist/css/clipboard.css +20 -4
- package/dist/css/collapsible.css +29 -14
- package/dist/css/color-field.css +4 -4
- package/dist/css/color-picker.css +77 -23
- package/dist/css/color-slider.css +10 -8
- package/dist/css/color-swatch-picker.css +5 -5
- package/dist/css/combobox.css +14 -10
- package/dist/css/command.css +13 -8
- package/dist/css/context-menu.css +10 -5
- package/dist/css/date-field.css +4 -4
- package/dist/css/date-picker.css +165 -102
- package/dist/css/date-range-picker.css +186 -123
- package/dist/css/description.css +10 -6
- package/dist/css/descriptions.css +47 -19
- package/dist/css/dialog.css +50 -35
- package/dist/css/drawer.css +75 -21
- package/dist/css/editable.css +15 -41
- package/dist/css/empty-state.css +21 -3
- package/dist/css/field-array.css +4 -1
- package/dist/css/field.css +17 -18
- package/dist/css/fieldset.css +33 -13
- package/dist/css/file-upload.css +65 -32
- package/dist/css/float-button.css +25 -15
- package/dist/css/floating-panel.css +1 -1
- package/dist/css/form.css +24 -10
- package/dist/css/grid-list.css +1 -1
- package/dist/css/highlight.css +4 -4
- package/dist/css/hover-card.css +19 -12
- package/dist/css/image-viewer.css +77 -27
- package/dist/css/image.css +12 -4
- package/dist/css/infinite-scroll.css +8 -4
- package/dist/css/input-group.css +74 -26
- package/dist/css/kbd.css +1 -1
- package/dist/css/label.css +27 -11
- package/dist/css/layout.css +17 -10
- package/dist/css/list.css +13 -9
- package/dist/css/listbox.css +12 -7
- package/dist/css/loading-bar.css +3 -0
- package/dist/css/mention.css +10 -8
- package/dist/css/menu.css +10 -5
- package/dist/css/menubar.css +13 -8
- package/dist/css/navigation-menu.css +2 -2
- package/dist/css/notification.css +114 -31
- package/dist/css/number-animation.css +2 -2
- package/dist/css/number-field.css +60 -37
- package/dist/css/page-header.css +63 -26
- package/dist/css/pagination.css +35 -38
- package/dist/css/password-input.css +10 -66
- package/dist/css/pin-input.css +18 -26
- package/dist/css/popconfirm.css +20 -11
- package/dist/css/popover.css +18 -12
- package/dist/css/progress.css +14 -13
- package/dist/css/prompt-input.css +3 -3
- package/dist/css/question-flow.css +33 -7
- package/dist/css/radio-group.css +120 -55
- package/dist/css/rating.css +31 -14
- package/dist/css/select.css +14 -10
- package/dist/css/separator.css +22 -4
- package/dist/css/side-nav.css +16 -11
- package/dist/css/signature-pad.css +23 -9
- package/dist/css/skeleton.css +7 -7
- package/dist/css/slider.css +71 -42
- package/dist/css/sparkline.css +8 -2
- package/dist/css/spinner.css +40 -20
- package/dist/css/statistic.css +14 -14
- package/dist/css/steps.css +115 -84
- package/dist/css/switch.css +9 -7
- package/dist/css/table.css +27 -10
- package/dist/css/tabs.css +35 -12
- package/dist/css/tag-group.css +17 -6
- package/dist/css/tag.css +54 -29
- package/dist/css/tags-input.css +38 -19
- package/dist/css/text-field.css +5 -5
- package/dist/css/time-field.css +4 -4
- package/dist/css/time-picker.css +150 -64
- package/dist/css/time-range-picker.css +91 -62
- package/dist/css/timeline.css +37 -20
- package/dist/css/timer.css +3 -3
- package/dist/css/toggle-group.css +4 -4
- package/dist/css/tool-call.css +6 -4
- package/dist/css/toolbar.css +6 -5
- package/dist/css/tooltip.css +15 -16
- package/dist/css/tour.css +14 -7
- package/dist/css/transfer.css +22 -16
- package/dist/css/tree-select.css +10 -10
- package/dist/css/tree.css +26 -25
- package/dist/css/typography.css +28 -25
- package/dist/family/action-control.css +30 -24
- package/dist/family/chart.css +57 -0
- package/dist/family/collection-item.css +12 -8
- package/dist/family/field-chrome.css +28 -19
- package/dist/family/loading-ring.css +20 -13
- package/dist/family/swatch.css +4 -4
- package/dist/family/tag-list.css +6 -0
- package/family/action-control.css +30 -24
- package/family/chart.css +57 -0
- package/family/collection-item.css +12 -8
- package/family/field-chrome.css +28 -19
- package/family/loading-ring.css +20 -13
- package/family/swatch.css +4 -4
- package/family/tag-list.css +6 -0
- package/index.css +3580 -2060
- package/index.unlayered.css +3579 -2060
- package/package.json +2 -2
package/dist/css/pagination.css
CHANGED
|
@@ -22,20 +22,22 @@
|
|
|
22
22
|
/* 作者塞进面板或分页行里的图标按档取字形尺;四类格子上另按家族档位取同一把尺 */
|
|
23
23
|
--xh-icon-size: var(--xh-pagination-icon-size, var(--xh-glyph-size-md));
|
|
24
24
|
|
|
25
|
-
/*
|
|
26
|
-
|
|
25
|
+
/* 尺寸档只换这几个私有槽,上一页/下一页、页码与省略号都从这两处继承它们,
|
|
26
|
+
换档不必给每个部件各写一条选择器。格子的横内衬比控件尺窄一档:一位数的页码加两侧内衬
|
|
27
|
+
要收得进方格的最小宽度,格子才是正方的;跳页输入框是字段,仍取控件尺的横内衬 */
|
|
27
28
|
--xh-_pagination-item-size: var(--xh-control-h-md);
|
|
28
|
-
--xh-_pagination-item-px: var(--xh-
|
|
29
|
+
--xh-_pagination-item-px: var(--xh-space-2);
|
|
30
|
+
--xh-_pagination-jumper-px: var(--xh-control-px-md);
|
|
29
31
|
--xh-_pagination-font-size: var(--xh-control-font-md);
|
|
30
32
|
|
|
31
33
|
/* 当前页的选中态随语气走。没写 data-tone 时这几个 --xh-_tone-* 都没被声明,
|
|
32
34
|
退回原来的品牌底与其配色。聚焦环不在其列,它恒是 --xh-ring-focus */
|
|
33
|
-
--xh-_pagination-selected-bg: var(--xh-_tone, var(--xh-bg-brand));
|
|
34
|
-
--xh-_pagination-selected-bg-hover: var(--xh-_tone-hover, var(--xh-bg-brand-hover));
|
|
35
|
-
--xh-_pagination-selected-bg-active: var(--xh-_tone-active, var(--xh-bg-brand-active));
|
|
36
|
-
--xh-_pagination-selected-fg: var(--xh-_tone-
|
|
35
|
+
--xh-_pagination-selected-bg: var(--xh-_tone-subtle, var(--xh-bg-brand-subtle));
|
|
36
|
+
--xh-_pagination-selected-bg-hover: var(--xh-_tone-subtle-hover, var(--xh-bg-brand-subtle-hover));
|
|
37
|
+
--xh-_pagination-selected-bg-active: var(--xh-_tone-subtle-active, var(--xh-bg-brand-subtle-active));
|
|
38
|
+
--xh-_pagination-selected-fg: var(--xh-_tone-fg, var(--xh-fg-on-brand-subtle));
|
|
39
|
+
--xh-_pagination-selected-border: var(--xh-_tone-border-control, var(--xh-bg-brand));
|
|
37
40
|
/* 当前页那一格是实心底,顶边画一条极浅的内高光把它衬出厚度(solid 面允许顶高光,经家族的 highlight 槽画) */
|
|
38
|
-
--xh-_pagination-highlight: var(--xh-_highlight-tone);
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
/* 根节点是 nav 地标,只负责把上一页 / 页码 / 下一页排成一行。
|
|
@@ -55,14 +57,16 @@
|
|
|
55
57
|
.xh-scope-pagination:is([data-part='root'], [data-part='positioner'])[data-size='sm'] {
|
|
56
58
|
--xh-icon-size: var(--xh-pagination-icon-size, var(--xh-glyph-size-sm));
|
|
57
59
|
--xh-_pagination-item-size: var(--xh-control-h-sm);
|
|
58
|
-
--xh-_pagination-item-px: var(--xh-
|
|
60
|
+
--xh-_pagination-item-px: var(--xh-space-1_5);
|
|
61
|
+
--xh-_pagination-jumper-px: var(--xh-control-px-sm);
|
|
59
62
|
--xh-_pagination-font-size: var(--xh-control-font-sm);
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
.xh-scope-pagination:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
63
66
|
--xh-icon-size: var(--xh-pagination-icon-size, var(--xh-glyph-size-lg));
|
|
64
67
|
--xh-_pagination-item-size: var(--xh-control-h-lg);
|
|
65
|
-
--xh-_pagination-item-px: var(--xh-
|
|
68
|
+
--xh-_pagination-item-px: var(--xh-space-2_5);
|
|
69
|
+
--xh-_pagination-jumper-px: var(--xh-control-px-lg);
|
|
66
70
|
--xh-_pagination-font-size: var(--xh-control-font-lg);
|
|
67
71
|
}
|
|
68
72
|
|
|
@@ -70,9 +74,9 @@
|
|
|
70
74
|
display: none;
|
|
71
75
|
}
|
|
72
76
|
|
|
73
|
-
/* 各类格子接 Action Control 的 text
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
/* 各类格子接 Action Control 的 text 档(连接层投影 ghost 形态):盒型、三档几何、禁用面、按压与过渡都由家族给。
|
|
78
|
+
分页把每一格画成描边方块:静息一道装饰边、透明底,悬停边加深一档、字转正文色,底走家族的承载面阶梯;
|
|
79
|
+
省略位也占同样一格,几种格子内容盒等高,一行里对得齐。这里把使用者槽映射到桥接槽并保留分页自己的排版。
|
|
76
80
|
等宽的关键:1 与 10 的内容宽度不同,靠最小宽度把它们撑到同一格,行宽才不会随当前页左右抖动 */
|
|
77
81
|
.xh-scope-pagination[data-part='first-trigger'],
|
|
78
82
|
.xh-scope-pagination[data-part='prev-trigger'],
|
|
@@ -83,14 +87,19 @@
|
|
|
83
87
|
--xh-action-min-inline-size: var(--xh-pagination-item-min-size, var(--xh-_pagination-item-size));
|
|
84
88
|
--xh-action-visual-size: var(--xh-pagination-item-h, var(--xh-_pagination-item-size));
|
|
85
89
|
--xh-action-padding-inline: var(--xh-pagination-item-px, var(--xh-_pagination-item-px));
|
|
86
|
-
--xh-action-radius: var(--xh-pagination-item-radius, var(--xh-shape-
|
|
90
|
+
--xh-action-radius: var(--xh-pagination-item-radius, var(--xh-shape-surface));
|
|
87
91
|
--xh-action-font-size: var(--xh-pagination-font-size, var(--xh-_pagination-font-size));
|
|
88
92
|
--xh-action-bg-rest: var(--xh-pagination-item-bg, var(--xh-_action-variant-bg-rest));
|
|
89
93
|
--xh-action-bg-hover: var(--xh-pagination-item-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
90
94
|
--xh-action-bg-pressed: var(--xh-pagination-item-bg-active, var(--xh-_action-variant-bg-pressed));
|
|
95
|
+
--xh-action-border-rest: var(--xh-pagination-item-border, var(--xh-border-default));
|
|
96
|
+
--xh-action-border-hover: var(--xh-pagination-item-border-hover, var(--xh-border-strong));
|
|
97
|
+
--xh-action-border-pressed: var(--xh-pagination-item-border-hover, var(--xh-border-strong));
|
|
98
|
+
--xh-action-border-focus-visible: var(--xh-pagination-item-border, var(--xh-border-default));
|
|
99
|
+
--xh-action-border-disabled: var(--xh-pagination-item-border, var(--xh-border-default));
|
|
91
100
|
--xh-action-fg-rest: var(--xh-pagination-item-fg, var(--xh-_action-variant-fg-rest));
|
|
92
|
-
--xh-action-fg-hover: var(--xh-pagination-item-fg, var(--xh-
|
|
93
|
-
--xh-action-fg-pressed: var(--xh-pagination-item-fg, var(--xh-
|
|
101
|
+
--xh-action-fg-hover: var(--xh-pagination-item-fg, var(--xh-fg-default));
|
|
102
|
+
--xh-action-fg-pressed: var(--xh-pagination-item-fg, var(--xh-fg-default));
|
|
94
103
|
/* 作者塞进翻页钮的图标按档取字形尺,与皮肤画的兜底字形同一把尺 */
|
|
95
104
|
--xh-icon-size: var(--xh-pagination-icon-size, var(--xh-_action-profile-glyph-size));
|
|
96
105
|
|
|
@@ -112,10 +121,9 @@
|
|
|
112
121
|
/* 到头那一侧的翻页钮是原生 disabled(不可聚焦、进不了 Tab 序列),连接层同时给 data-disabled,
|
|
113
122
|
家族按 data-disabled 画禁用面(透明底 + --xh-fg-disabled);整组 disabled 时页码与省略位同样如此 */
|
|
114
123
|
|
|
115
|
-
/*
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
solid 面允许一条顶高光,环色改取面自己的前景 */
|
|
124
|
+
/* 当前页:data-current 与 aria-current='page' 由连接层成对给出,样式挂在 data 钩子上,无障碍语义留给 aria。
|
|
125
|
+
品牌描边 + 品牌淡底 + 淡底前景、不加粗——字重一变字形就变宽,页码格子会跟着长一点,正是这里要避免的抖动;
|
|
126
|
+
悬停 / 按下沿淡底 12% → 20% → 28% 走,边不变,三态都经桥接槽交给家族画 */
|
|
119
127
|
.xh-scope-pagination[data-part='item'][data-current] {
|
|
120
128
|
--xh-action-bg-rest: var(--xh-pagination-item-bg-selected, var(--xh-_pagination-selected-bg));
|
|
121
129
|
--xh-action-bg-hover: var(--xh-pagination-item-bg-selected-hover, var(--xh-_pagination-selected-bg-hover));
|
|
@@ -125,22 +133,17 @@
|
|
|
125
133
|
--xh-action-fg-hover: var(--xh-pagination-item-fg-selected, var(--xh-_pagination-selected-fg));
|
|
126
134
|
--xh-action-fg-pressed: var(--xh-pagination-item-fg-selected, var(--xh-_pagination-selected-fg));
|
|
127
135
|
--xh-action-fg-focus-visible: var(--xh-pagination-item-fg-selected, var(--xh-_pagination-selected-fg));
|
|
128
|
-
--xh-action-border-rest: var(--xh-pagination-item-border-selected, var(--xh-_pagination-selected-
|
|
129
|
-
--xh-action-border-hover: var(--xh-pagination-item-border-selected-hover, var(--xh-_pagination-selected-
|
|
130
|
-
--xh-action-border-pressed: var(--xh-pagination-item-border-selected-active, var(--xh-_pagination-selected-
|
|
131
|
-
--xh-action-border-focus-visible: var(--xh-pagination-item-border-selected, var(--xh-_pagination-selected-
|
|
132
|
-
--xh-action-highlight-rest: var(--xh-_pagination-highlight);
|
|
133
|
-
--xh-action-highlight-hover: var(--xh-_pagination-highlight);
|
|
134
|
-
--xh-action-highlight-pressed: var(--xh-_pagination-highlight);
|
|
135
|
-
--xh-action-highlight-focus-visible: var(--xh-_pagination-highlight);
|
|
136
|
+
--xh-action-border-rest: var(--xh-pagination-item-border-selected, var(--xh-_pagination-selected-border));
|
|
137
|
+
--xh-action-border-hover: var(--xh-pagination-item-border-selected-hover, var(--xh-_pagination-selected-border));
|
|
138
|
+
--xh-action-border-pressed: var(--xh-pagination-item-border-selected-active, var(--xh-_pagination-selected-border));
|
|
139
|
+
--xh-action-border-focus-visible: var(--xh-pagination-item-border-selected, var(--xh-_pagination-selected-border));
|
|
136
140
|
--xh-action-shadow-rest: var(--xh-pagination-item-shadow, none);
|
|
137
141
|
--xh-action-shadow-hover: var(--xh-pagination-item-shadow, none);
|
|
138
142
|
--xh-action-shadow-pressed: var(--xh-pagination-item-shadow, none);
|
|
139
143
|
--xh-action-shadow-focus-visible: var(--xh-pagination-item-shadow, none);
|
|
140
|
-
--xh-action-ring-color-focus-visible: currentColor;
|
|
141
144
|
}
|
|
142
145
|
|
|
143
|
-
/*
|
|
146
|
+
/* 整组禁用时当前页不跟着透明:品牌淡底退成中性淡底、字取禁用色,格子仍标得出位置,又一眼看得出按不动 */
|
|
144
147
|
.xh-scope-pagination[data-part='item'][data-current][data-disabled] {
|
|
145
148
|
--xh-action-bg-disabled: var(--xh-bg-subtle);
|
|
146
149
|
--xh-action-border-disabled: var(--xh-bg-subtle);
|
|
@@ -192,7 +195,7 @@
|
|
|
192
195
|
高度、内衬与圆角跟页码格子同一把尺,宽度按页码位数留够 */
|
|
193
196
|
.xh-scope-pagination[data-part='jumper'] {
|
|
194
197
|
--xh-field-control-height: var(--xh-pagination-item-h, var(--xh-_pagination-item-size));
|
|
195
|
-
--xh-field-control-padding-inline: var(--xh-pagination-item-px, var(--xh-_pagination-
|
|
198
|
+
--xh-field-control-padding-inline: var(--xh-pagination-item-px, var(--xh-_pagination-jumper-px));
|
|
196
199
|
--xh-field-control-min-inline-size: 0;
|
|
197
200
|
--xh-field-control-radius: var(--xh-pagination-item-radius, var(--xh-shape-control));
|
|
198
201
|
--xh-field-bg-rest: var(--xh-pagination-jumper-bg, var(--xh-_field-variant-bg-rest));
|
|
@@ -203,8 +206,6 @@
|
|
|
203
206
|
--xh-field-border-hover: var(--xh-pagination-jumper-border-hover, var(--xh-_field-variant-border-hover));
|
|
204
207
|
--xh-field-border-focus: var(--xh-pagination-jumper-border-focus, var(--xh-_field-variant-border-focus));
|
|
205
208
|
--xh-field-border-invalid: var(--xh-pagination-jumper-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
206
|
-
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
207
|
-
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
208
209
|
--xh-field-shadow-rest: none;
|
|
209
210
|
|
|
210
211
|
flex: none;
|
|
@@ -220,16 +221,12 @@
|
|
|
220
221
|
display: none;
|
|
221
222
|
}
|
|
222
223
|
|
|
223
|
-
/* 越界的页码(超出 1
|
|
224
|
+
/* 越界的页码(超出 1 到总页数):浏览器的约束校验在用户动过之后判失败,与字段家族的校验失败同一副边。
|
|
224
225
|
家族的失败档认 data-invalid,跳页框的取值不进状态机,失败由原生约束给出 */
|
|
225
226
|
.xh-scope-pagination[data-part='jumper']:user-invalid {
|
|
226
227
|
border-color: var(--xh-field-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
227
228
|
}
|
|
228
229
|
|
|
229
|
-
.xh-scope-pagination[data-part='jumper']:user-invalid:focus-within {
|
|
230
|
-
outline-color: var(--xh-field-ring-invalid, var(--xh-ring-invalid));
|
|
231
|
-
}
|
|
232
|
-
|
|
233
230
|
/* 摊开省略位的定位层。三处坐标系必须同为 fixed:机器交给引擎的 strategy、
|
|
234
231
|
连接层的内联 position、这里 —— 差一处就会算在错的坐标系里 */
|
|
235
232
|
.xh-scope-pagination[data-part='positioner'] {
|
|
@@ -31,8 +31,6 @@
|
|
|
31
31
|
/* 提示与切换钮里的字形都比正文小一档,三个尺寸档各自换过,不是一个恒等的中转 */
|
|
32
32
|
--xh-_password-input-caps-lock-font-size: var(--xh-control-caption-md);
|
|
33
33
|
--xh-_password-input-trigger-font-size: var(--xh-control-caption-md);
|
|
34
|
-
/* 切换钮与输入之间那道线的长度:取钮高的一半,线的上下各留一截空白 */
|
|
35
|
-
--xh-_password-input-divider-h: 50%;
|
|
36
34
|
|
|
37
35
|
/* 盒里有两个 Tab 停靠点,切换钮上再画一圈自己的环;环恒用 --xh-ring-focus,校验失败时随盒换红 */
|
|
38
36
|
--xh-_password-input-ring: var(--xh-ring-focus);
|
|
@@ -77,13 +75,15 @@
|
|
|
77
75
|
|
|
78
76
|
/* —— 标题 —— */
|
|
79
77
|
.xh-scope-password-input[data-part='label'] {
|
|
80
|
-
|
|
78
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-password-input-label-gap 给多少最终就是多少 */
|
|
79
|
+
margin-block-end: calc(var(--xh-password-input-label-gap, var(--xh-space-2)) - var(--xh-password-input-gap, var(--xh-space-1)));
|
|
80
|
+
color: var(--xh-password-input-label-fg, var(--xh-fg-muted));
|
|
81
81
|
font-size: var(--xh-password-input-label-font-size, var(--xh-text-label-size));
|
|
82
82
|
font-weight: var(--xh-password-input-label-font-weight, var(--xh-text-label-weight));
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
.xh-scope-password-input[data-part='label'][data-disabled] {
|
|
86
|
-
color: var(--xh-password-input-label-fg-disabled, var(--xh-fg-
|
|
86
|
+
color: var(--xh-password-input-label-fg-disabled, var(--xh-fg-muted));
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
/* —— 一体式 control:输入框、切换钮与提示同框 —— */
|
|
@@ -104,8 +104,6 @@
|
|
|
104
104
|
--xh-field-border-hover: var(--xh-password-input-control-border-hover, var(--xh-_field-variant-border-hover));
|
|
105
105
|
--xh-field-border-focus: var(--xh-password-input-control-border-focus, var(--xh-_field-variant-border-focus));
|
|
106
106
|
--xh-field-border-invalid: var(--xh-password-input-control-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
107
|
-
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
108
|
-
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
109
107
|
--xh-field-shadow-rest: var(--xh-password-input-control-shadow, none);
|
|
110
108
|
/* 家族 chrome 会重写 --xh-icon-size,使用者图标槽必须经桥接槽下发才能在盒内生效 */
|
|
111
109
|
--xh-field-glyph-size: var(--xh-password-input-icon-size, var(--xh-_field-size-glyph-size));
|
|
@@ -131,8 +129,10 @@
|
|
|
131
129
|
}
|
|
132
130
|
|
|
133
131
|
/* —— 明暗切换钮 —— */
|
|
134
|
-
/*
|
|
135
|
-
|
|
132
|
+
/* inset 圆角、按承载面取的悬停 / 按下阶梯、粗指针热区全由 Action Control 的 field-inset ghost 档给,
|
|
133
|
+
组件只映射既有覆盖槽;常态只剩符号,符号取次级前景。
|
|
134
|
+
视觉盒按字段内钮尺寸表随字段档(sm 取控件内动作档、md 取 control-h-sm、lg 取 control-h-md),
|
|
135
|
+
由 field-inset 档按 data-xh-action-size 给:比字段矮一档,是框里的辅助动作、不与输入抢 */
|
|
136
136
|
.xh-scope-password-input[data-part='visibility-trigger'] {
|
|
137
137
|
--xh-action-visual-size: var(--xh-password-input-trigger-size, var(--xh-_action-profile-visual-size));
|
|
138
138
|
--xh-action-min-inline-size: var(--xh-password-input-trigger-size, var(--xh-_action-profile-visual-size));
|
|
@@ -161,44 +161,7 @@
|
|
|
161
161
|
display: none;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
/*
|
|
165
|
-
44px 热区,线只能落在 background-image 上:一条 1px × 半高的渐变贴在靠输入的那一侧,
|
|
166
|
-
不随按钮悬停底或圆角变化。background-position 是物理轴,RTL 另给两条换边。 */
|
|
167
|
-
.xh-scope-password-input[data-part='control']
|
|
168
|
-
> .xh-scope-password-input[data-part='visibility-trigger']:has(~ .xh-scope-password-input[data-part='input']),
|
|
169
|
-
.xh-scope-password-input[data-part='control']
|
|
170
|
-
> .xh-scope-password-input[data-part='input'] ~ .xh-scope-password-input[data-part='visibility-trigger'] {
|
|
171
|
-
background-image: linear-gradient(
|
|
172
|
-
var(--xh-password-input-visibility-trigger-separator-color, var(--xh-border-subtle)),
|
|
173
|
-
var(--xh-password-input-visibility-trigger-separator-color, var(--xh-border-subtle))
|
|
174
|
-
);
|
|
175
|
-
background-repeat: no-repeat;
|
|
176
|
-
background-size: var(--xh-stroke-thin) var(--xh-password-input-visibility-trigger-separator-h, var(--xh-_password-input-divider-h));
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/* 钮排在输入之前:线贴在钮的逻辑末端 */
|
|
180
|
-
.xh-scope-password-input[data-part='control']
|
|
181
|
-
> .xh-scope-password-input[data-part='visibility-trigger']:has(~ .xh-scope-password-input[data-part='input']) {
|
|
182
|
-
background-position: 100% 50%;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
[dir='rtl'] .xh-scope-password-input[data-part='control']
|
|
186
|
-
> .xh-scope-password-input[data-part='visibility-trigger']:has(~ .xh-scope-password-input[data-part='input']) {
|
|
187
|
-
background-position: 0 50%;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/* 钮排在输入之后:线贴在钮的逻辑起始侧 */
|
|
191
|
-
.xh-scope-password-input[data-part='control']
|
|
192
|
-
> .xh-scope-password-input[data-part='input'] ~ .xh-scope-password-input[data-part='visibility-trigger'] {
|
|
193
|
-
background-position: 0 50%;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
[dir='rtl'] .xh-scope-password-input[data-part='control']
|
|
197
|
-
> .xh-scope-password-input[data-part='input'] ~ .xh-scope-password-input[data-part='visibility-trigger'] {
|
|
198
|
-
background-position: 100% 50%;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/* 盒里有两个 Tab 停靠点,盒子在 :focus-within 上画的那一圈两者完全一样,
|
|
164
|
+
/* 盒里有两个 Tab 停靠点,盒子在 :focus-within 上换的聚焦描边两者完全一样,
|
|
202
165
|
分不出焦点在框里还是在钮上,所以钮上再画一圈自己的环(家族只对不占 Tab 位的内嵌钮关环)。
|
|
203
166
|
环往内收,压在按钮自己的方框里,不与盒子外面那一圈叠在一起。
|
|
204
167
|
指示焦点只能用环不能用底色:可用的几档底色压在盒底上都到不了 3:1,换了色也等于没画 */
|
|
@@ -338,29 +301,10 @@
|
|
|
338
301
|
--xh-_password-input-strength-fg: var(--xh-fg-disabled);
|
|
339
302
|
}
|
|
340
303
|
|
|
341
|
-
/* 高对比档整层丢弃 background-image,分隔线改用系统色重画,并关掉这一颗钮的强制换色 */
|
|
342
304
|
@media (forced-colors: active) {
|
|
343
|
-
|
|
344
|
-
> .xh-scope-password-input[data-part='visibility-trigger']:has(~ .xh-scope-password-input[data-part='input']),
|
|
345
|
-
.xh-scope-password-input[data-part='control']
|
|
346
|
-
> .xh-scope-password-input[data-part='input'] ~ .xh-scope-password-input[data-part='visibility-trigger'] {
|
|
347
|
-
background-image: linear-gradient(CanvasText, CanvasText);
|
|
348
|
-
forced-color-adjust: none;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
.xh-scope-password-input[data-part='control'][data-disabled]
|
|
352
|
-
> .xh-scope-password-input[data-part='visibility-trigger']:has(~ .xh-scope-password-input[data-part='input']),
|
|
353
|
-
.xh-scope-password-input[data-part='control'][data-disabled]
|
|
354
|
-
> .xh-scope-password-input[data-part='input'] ~ .xh-scope-password-input[data-part='visibility-trigger'] {
|
|
355
|
-
background-image: linear-gradient(GrayText, GrayText);
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
/* 关掉强制换色后,上面那圈自留的 :focus-visible 环与家族普通态的焦点底/字都会按作者色落地;
|
|
359
|
-
家族高对比块的特指度压不过它们,这里用同一选择器把环、底、字改回系统色 */
|
|
305
|
+
/* 钮上那圈自留的 :focus-visible 环取系统高亮色:家族高对比块的特指度压不过上面那条环规则 */
|
|
360
306
|
.xh-scope-password-input[data-part='control'] [data-part='visibility-trigger']:where(.xh-scope-password-input):focus-visible {
|
|
361
307
|
outline-color: Highlight;
|
|
362
|
-
background-color: ButtonFace;
|
|
363
|
-
color: ButtonText;
|
|
364
308
|
}
|
|
365
309
|
}
|
|
366
310
|
|
package/dist/css/pin-input.css
CHANGED
|
@@ -15,10 +15,11 @@
|
|
|
15
15
|
/* 与文本框、数字框同一套堆叠:标签一行、格子一行。
|
|
16
16
|
格子的描边、底、圆角、五态与悬停由 Field Chrome 家族按格子上的 data-variant 生成,皮肤不再声明形态三档 */
|
|
17
17
|
.xh-scope-pin-input[data-part='root'] {
|
|
18
|
-
/*
|
|
19
|
-
|
|
20
|
-
--xh-_pin-input-box-
|
|
21
|
-
--xh-_pin-input-box-
|
|
18
|
+
/* 尺寸档只换这两个私有槽,格子与分隔都从 root 继承它们,换档不必给每个部件各写一条选择器。
|
|
19
|
+
格子边长取控件高档,与同一行里的字段等高;字号取控件字号档;格间距三档同为 --xh-space-1 */
|
|
20
|
+
--xh-_pin-input-box-size: var(--xh-control-h-md);
|
|
21
|
+
--xh-_pin-input-box-gap: var(--xh-space-1);
|
|
22
|
+
--xh-_pin-input-box-font-size: var(--xh-control-font-md);
|
|
22
23
|
/* 填满态的强调色随语气走。没写 data-tone 时 --xh-_tone 没被声明,退回品牌色 */
|
|
23
24
|
--xh-_pin-input-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
24
25
|
|
|
@@ -38,26 +39,25 @@
|
|
|
38
39
|
|
|
39
40
|
/* —— 尺寸 —— */
|
|
40
41
|
.xh-scope-pin-input[data-part='root'][data-size='sm'] {
|
|
41
|
-
--xh-_pin-input-box-size: var(--xh-control-
|
|
42
|
-
--xh-_pin-input-box-
|
|
43
|
-
--xh-_pin-input-box-font-size: var(--xh-control-font-lg);
|
|
42
|
+
--xh-_pin-input-box-size: var(--xh-control-h-sm);
|
|
43
|
+
--xh-_pin-input-box-font-size: var(--xh-control-font-sm);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
/* 格子是正方形,缺省档已经占到控件高度表的顶档,lg 档由顶档加一格间距合成,不另立数值 */
|
|
47
46
|
.xh-scope-pin-input[data-part='root'][data-size='lg'] {
|
|
48
|
-
--xh-_pin-input-box-size: var(--xh-control-
|
|
49
|
-
--xh-_pin-input-box-
|
|
50
|
-
--xh-_pin-input-box-font-size: var(--xh-text-heading-2-size);
|
|
47
|
+
--xh-_pin-input-box-size: var(--xh-control-h-lg);
|
|
48
|
+
--xh-_pin-input-box-font-size: var(--xh-control-font-lg);
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
.xh-scope-pin-input[data-part='label'] {
|
|
54
|
-
|
|
52
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-pin-input-label-gap 给多少最终就是多少 */
|
|
53
|
+
margin-block-end: calc(var(--xh-pin-input-label-gap, var(--xh-space-2)) - var(--xh-pin-input-gap, var(--xh-space-1)));
|
|
54
|
+
color: var(--xh-pin-input-label-fg, var(--xh-fg-muted));
|
|
55
55
|
font-size: var(--xh-pin-input-label-font-size, var(--xh-text-label-size));
|
|
56
56
|
font-weight: var(--xh-pin-input-label-font-weight, var(--xh-text-label-weight));
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
.xh-scope-pin-input[data-part='label'][data-disabled] {
|
|
60
|
-
color: var(--xh-pin-input-label-fg-disabled, var(--xh-fg-
|
|
60
|
+
color: var(--xh-pin-input-label-fg-disabled, var(--xh-fg-muted));
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/* 分段:连着的几格圈成一段。它只排版,格间距仍由格子自己的相邻兄弟规则给 */
|
|
@@ -109,8 +109,6 @@
|
|
|
109
109
|
--xh-field-border-hover: var(--xh-pin-input-box-border-hover, var(--xh-_field-variant-border-hover));
|
|
110
110
|
--xh-field-border-focus: var(--xh-pin-input-box-border-focus, var(--xh-_field-variant-border-focus));
|
|
111
111
|
--xh-field-border-invalid: var(--xh-pin-input-box-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
112
|
-
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
113
|
-
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
114
112
|
--xh-field-shadow-rest: var(--xh-pin-input-box-shadow, none);
|
|
115
113
|
|
|
116
114
|
/* 一行放不下时逐格收窄,收不动就整行顶出屏幕。
|
|
@@ -141,19 +139,13 @@
|
|
|
141
139
|
color: var(--xh-pin-input-placeholder-fg, var(--xh-fg-subtle));
|
|
142
140
|
}
|
|
143
141
|
|
|
144
|
-
/*
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
142
|
+
/* 一行格子长得一模一样,光标那道竖线太细,看不出正在填哪一格:当前格与字段外壳的聚焦态同一副面——
|
|
143
|
+
换承载面 + 聚焦描边,压在别的格子的字段淡底之间一眼分得出,不另画环(强制色档由家族补系统色环)。
|
|
144
|
+
data-focus 由机器给(它知道谁是当前格),家族的 :focus-within 兜住机器状态还没回流的那一帧,
|
|
145
|
+
两条同时写不冲突。焦点边一律家族的 --xh-border-control-focus,不随 tone */
|
|
148
146
|
.xh-scope-pin-input[data-part='input'][data-focus] {
|
|
149
147
|
border-color: var(--xh-pin-input-box-border-focus, var(--xh-_field-variant-border-focus));
|
|
150
|
-
|
|
151
|
-
outline-offset: var(--xh-ring-offset);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/* 校验失败时环也跟着变红:两圈等宽相邻却一红一蓝,读的人不知道哪个才是当前状态 */
|
|
155
|
-
.xh-scope-pin-input[data-part='input'][data-invalid][data-focus] {
|
|
156
|
-
outline-color: var(--xh-ring-invalid);
|
|
148
|
+
background-color: var(--xh-_field-variant-bg-focus);
|
|
157
149
|
}
|
|
158
150
|
|
|
159
151
|
/* 填满只代表"格子都有字",不代表"验证码对",所以用品牌色而不是成功色收个尾。
|
package/dist/css/popconfirm.css
CHANGED
|
@@ -115,15 +115,19 @@
|
|
|
115
115
|
|
|
116
116
|
/* 作者塞进面板里的图标按控件档取;两颗动作钮另由家族配方按 sm 档下发字形尺 */
|
|
117
117
|
--xh-icon-size: var(--xh-popconfirm-icon-size, var(--xh-glyph-size-md));
|
|
118
|
-
/*
|
|
119
|
-
--xh-_popconfirm-
|
|
118
|
+
/* 尺寸档只换这三个私有槽:横向内衬比纵向高一档(缺省纵 12 横 16),与 popover 同一套 */
|
|
119
|
+
--xh-_popconfirm-py: var(--xh-surface-pad-md);
|
|
120
|
+
--xh-_popconfirm-px: var(--xh-surface-pad-lg);
|
|
120
121
|
--xh-_popconfirm-max-w: var(--xh-overlay-max-w);
|
|
121
122
|
|
|
122
123
|
position: relative;
|
|
123
124
|
display: grid;
|
|
124
125
|
grid-template-columns: 1fr auto auto;
|
|
125
126
|
align-items: center;
|
|
126
|
-
|
|
127
|
+
/* 行距与气泡族同一档:标题与说明之间只留 4px;两颗钮之间的列距另由 column-gap 放宽。
|
|
128
|
+
column-gap 写在 gap 之后,先回落到 gap 槽再取缺省:作者只写 --xh-popconfirm-gap 时行列一起跟着它走 */
|
|
129
|
+
gap: var(--xh-popconfirm-gap, var(--xh-space-1));
|
|
130
|
+
column-gap: var(--xh-popconfirm-column-gap, var(--xh-popconfirm-gap, var(--xh-space-2)));
|
|
127
131
|
inline-size: max-content;
|
|
128
132
|
/* 静态档与落位后的可用宽度取小:窄视口下面板伸出去,最右侧的两颗钮就点不到了 */
|
|
129
133
|
max-inline-size: min(var(--xh-popconfirm-max-w, var(--xh-_popconfirm-max-w)), var(--xh-_popconfirm-available-w));
|
|
@@ -132,8 +136,8 @@
|
|
|
132
136
|
overflow-y: auto;
|
|
133
137
|
/* 浮在页面之上的 Overlay 滚动面:滚到头不把页面一起带走 */
|
|
134
138
|
overscroll-behavior: contain;
|
|
135
|
-
padding-block: var(--xh-popconfirm-py, var(--xh-_popconfirm-
|
|
136
|
-
padding-inline: var(--xh-popconfirm-px, var(--xh-_popconfirm-
|
|
139
|
+
padding-block: var(--xh-popconfirm-py, var(--xh-_popconfirm-py));
|
|
140
|
+
padding-inline: var(--xh-popconfirm-px, var(--xh-_popconfirm-px));
|
|
137
141
|
border-radius: var(--xh-popconfirm-radius, var(--xh-shape-overlay));
|
|
138
142
|
pointer-events: auto;
|
|
139
143
|
/* 进退场的缩放锚在贴着锚点的那条边上;两个分量由 positioner 按 placement 写进私有槽 */
|
|
@@ -171,32 +175,35 @@
|
|
|
171
175
|
}
|
|
172
176
|
|
|
173
177
|
/* —— 尺寸 —— */
|
|
174
|
-
/* 缺省档写在 content
|
|
178
|
+
/* 缺省档写在 content 的基础规则里;内衬三档取 surface-pad 那把尺,横向始终比纵向高一档 */
|
|
175
179
|
.xh-scope-popconfirm[data-part='content'][data-size='sm'] {
|
|
176
|
-
--xh-_popconfirm-
|
|
180
|
+
--xh-_popconfirm-py: var(--xh-surface-pad-sm);
|
|
181
|
+
--xh-_popconfirm-px: var(--xh-surface-pad-md);
|
|
177
182
|
--xh-_popconfirm-max-w: var(--xh-overlay-max-w-sm);
|
|
178
183
|
}
|
|
179
184
|
|
|
180
185
|
.xh-scope-popconfirm[data-part='content'][data-size='lg'] {
|
|
181
|
-
--xh-_popconfirm-
|
|
186
|
+
--xh-_popconfirm-py: var(--xh-surface-pad-lg);
|
|
187
|
+
--xh-_popconfirm-px: var(--xh-surface-pad-xl);
|
|
182
188
|
--xh-_popconfirm-max-w: var(--xh-overlay-max-w-lg);
|
|
183
189
|
}
|
|
184
190
|
|
|
191
|
+
/* 气泡标题:14px / medium / 正文色 */
|
|
185
192
|
.xh-scope-popconfirm[data-part='title'] {
|
|
186
193
|
margin: 0;
|
|
187
194
|
min-inline-size: 0;
|
|
188
195
|
font-size: var(--xh-popconfirm-title-font-size, var(--xh-text-label-size));
|
|
189
|
-
font-weight: var(--xh-popconfirm-title-font-weight, var(--xh-font-weight-
|
|
196
|
+
font-weight: var(--xh-popconfirm-title-font-weight, var(--xh-font-weight-medium));
|
|
190
197
|
line-height: var(--xh-leading-tight);
|
|
191
198
|
overflow-wrap: anywhere;
|
|
192
199
|
color: var(--xh-popconfirm-title-fg, var(--xh-material-frosted-fg));
|
|
193
200
|
}
|
|
194
201
|
|
|
195
|
-
/*
|
|
202
|
+
/* 说明就是气泡的正文:14px 正文字号 + fg-muted 次级色 */
|
|
196
203
|
.xh-scope-popconfirm[data-part='description'] {
|
|
197
204
|
margin: 0;
|
|
198
205
|
min-inline-size: 0;
|
|
199
|
-
font-size: var(--xh-popconfirm-description-font-size, var(--xh-text-
|
|
206
|
+
font-size: var(--xh-popconfirm-description-font-size, var(--xh-text-body-size));
|
|
200
207
|
line-height: var(--xh-leading-normal);
|
|
201
208
|
overflow-wrap: anywhere;
|
|
202
209
|
color: var(--xh-popconfirm-description-fg, var(--xh-fg-muted));
|
|
@@ -231,6 +238,8 @@
|
|
|
231
238
|
|
|
232
239
|
/* 动作钮的文字与 Button 同一字重(家族配方不管字重) */
|
|
233
240
|
font-weight: var(--xh-popconfirm-action-font-weight, var(--xh-text-label-weight));
|
|
241
|
+
/* 末行与上面的文字隔开:栅格行距只有标题与说明之间那 4px,钮再往下让 12px,文字与钮之间共 16px */
|
|
242
|
+
margin-block-start: var(--xh-popconfirm-action-mt, var(--xh-space-3));
|
|
234
243
|
}
|
|
235
244
|
|
|
236
245
|
/* 并排落在最后一行的右侧两格;取消在左、确认在右 */
|
package/dist/css/popover.css
CHANGED
|
@@ -108,15 +108,17 @@
|
|
|
108
108
|
/* 作者塞进面板里的图标按控件档取;关闭钮另由家族配方按 sm 档下发字形尺 */
|
|
109
109
|
--xh-icon-size: var(--xh-popover-icon-size, var(--xh-glyph-size-md));
|
|
110
110
|
|
|
111
|
-
/*
|
|
112
|
-
|
|
113
|
-
--xh-_popover-
|
|
111
|
+
/* 尺寸档只换这三个私有槽。popover 没有 root 部件,size 落在浮层树最外层的 content 上。
|
|
112
|
+
横向内衬比纵向高一档(缺省纵 12 横 16)。语气不接:面板是内容容器,语气该由里面的内容表达 */
|
|
113
|
+
--xh-_popover-py: var(--xh-surface-pad-md);
|
|
114
|
+
--xh-_popover-px: var(--xh-surface-pad-lg);
|
|
114
115
|
--xh-_popover-max-w: var(--xh-overlay-max-w);
|
|
115
116
|
|
|
116
117
|
position: relative;
|
|
117
118
|
display: flex;
|
|
118
119
|
flex-direction: column;
|
|
119
|
-
|
|
120
|
+
/* 标题与正文贴着排:两行之间只留 4px */
|
|
121
|
+
gap: var(--xh-popover-gap, var(--xh-space-1));
|
|
120
122
|
inline-size: max-content;
|
|
121
123
|
/* 静态档与落位后的可用宽度取小:窄视口下面板伸出去,最右侧的内容就点不到了 */
|
|
122
124
|
max-inline-size: min(var(--xh-popover-max-w, var(--xh-_popover-max-w)), var(--xh-_popover-available-w));
|
|
@@ -125,8 +127,8 @@
|
|
|
125
127
|
overflow-y: auto;
|
|
126
128
|
/* 浮在页面之上的 Overlay 滚动面:滚到头不把页面一起带走 */
|
|
127
129
|
overscroll-behavior: contain;
|
|
128
|
-
padding-block: var(--xh-popover-py, var(--xh-_popover-
|
|
129
|
-
padding-inline: var(--xh-popover-px, var(--xh-_popover-
|
|
130
|
+
padding-block: var(--xh-popover-py, var(--xh-_popover-py));
|
|
131
|
+
padding-inline: var(--xh-popover-px, var(--xh-_popover-px));
|
|
130
132
|
border-radius: var(--xh-popover-radius, var(--xh-shape-overlay));
|
|
131
133
|
pointer-events: auto;
|
|
132
134
|
/* 进退场的缩放锚在贴着锚点的那条边上;两个分量由 positioner 按 placement 写进私有槽 */
|
|
@@ -155,28 +157,32 @@
|
|
|
155
157
|
}
|
|
156
158
|
|
|
157
159
|
/* —— 尺寸 —— */
|
|
158
|
-
/* 缺省档写在 content
|
|
160
|
+
/* 缺省档写在 content 的基础规则里;内衬三档取 surface-pad 那把尺,横向始终比纵向高一档 */
|
|
159
161
|
.xh-scope-popover[data-part='content'][data-size='sm'] {
|
|
160
|
-
--xh-_popover-
|
|
162
|
+
--xh-_popover-py: var(--xh-surface-pad-sm);
|
|
163
|
+
--xh-_popover-px: var(--xh-surface-pad-md);
|
|
161
164
|
--xh-_popover-max-w: var(--xh-overlay-max-w-sm);
|
|
162
165
|
}
|
|
163
166
|
|
|
164
167
|
.xh-scope-popover[data-part='content'][data-size='lg'] {
|
|
165
|
-
--xh-_popover-
|
|
168
|
+
--xh-_popover-py: var(--xh-surface-pad-lg);
|
|
169
|
+
--xh-_popover-px: var(--xh-surface-pad-xl);
|
|
166
170
|
--xh-_popover-max-w: var(--xh-overlay-max-w-lg);
|
|
167
171
|
}
|
|
168
172
|
|
|
173
|
+
/* 气泡标题:14px / medium / 正文色 */
|
|
169
174
|
.xh-scope-popover[data-part='title'] {
|
|
170
175
|
margin: 0;
|
|
171
176
|
font-size: var(--xh-popover-title-font-size, var(--xh-text-label-size));
|
|
172
|
-
font-weight: var(--xh-popover-title-font-weight, var(--xh-font-weight-
|
|
177
|
+
font-weight: var(--xh-popover-title-font-weight, var(--xh-font-weight-medium));
|
|
173
178
|
color: var(--xh-popover-title-fg, var(--xh-material-frosted-fg));
|
|
174
179
|
}
|
|
175
180
|
|
|
176
|
-
/*
|
|
181
|
+
/* 说明就是气泡的正文:14px 正文字号 + fg-muted 次级色 */
|
|
177
182
|
.xh-scope-popover[data-part='description'] {
|
|
178
183
|
margin: 0;
|
|
179
|
-
font-size: var(--xh-popover-description-font-size, var(--xh-text-
|
|
184
|
+
font-size: var(--xh-popover-description-font-size, var(--xh-text-body-size));
|
|
185
|
+
line-height: var(--xh-leading-normal);
|
|
180
186
|
color: var(--xh-popover-description-fg, var(--xh-fg-muted));
|
|
181
187
|
}
|
|
182
188
|
|
package/dist/css/progress.css
CHANGED
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
--xh-progress-skin: 1;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
/* 私有槽位:组件令牌 →
|
|
42
|
-
尺寸档才改得动一处就够,track
|
|
41
|
+
/* 私有槽位:组件令牌 → 中档两级回退。厚度写在 root 上而不是 track 上,
|
|
42
|
+
尺寸档才改得动一处就够,track 靠继承拿到值。线形是一条细轨,按轨道厚度三档取 sm / md / lg = 3 / 4 / 8px */
|
|
43
43
|
.xh-scope-progress[data-part='root'] {
|
|
44
|
-
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-track-thickness));
|
|
44
|
+
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-track-thickness-md));
|
|
45
45
|
|
|
46
46
|
/* 目标刻度与环形的刻度值按根落位 */
|
|
47
47
|
position: relative;
|
|
@@ -58,7 +58,8 @@
|
|
|
58
58
|
inline-size: 100%;
|
|
59
59
|
block-size: var(--xh-_progress-thickness);
|
|
60
60
|
border-radius: var(--xh-progress-track-radius, var(--xh-shape-pill));
|
|
61
|
-
|
|
61
|
+
/* 底槽取淡底阶梯的 200 档(--xh-bg-subtle-hover),环形的底槽同一支 */
|
|
62
|
+
background: var(--xh-progress-track, var(--xh-bg-subtle-hover));
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
/* 语气槽由 root 上的 data-tone 声明、经继承发下来;没写 data-tone 时退回原来的品牌色。
|
|
@@ -136,11 +137,11 @@
|
|
|
136
137
|
/* —— 尺寸 —— */
|
|
137
138
|
/* 线形只有厚度分档;中间档不写规则,缺省即中档 */
|
|
138
139
|
.xh-scope-progress[data-part='root'][data-size='sm'] {
|
|
139
|
-
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-
|
|
140
|
+
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-track-thickness-sm));
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
.xh-scope-progress[data-part='root'][data-size='lg'] {
|
|
143
|
-
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-
|
|
144
|
+
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-track-thickness-lg));
|
|
144
145
|
}
|
|
145
146
|
|
|
146
147
|
/* —— 环形 —— */
|
|
@@ -176,10 +177,10 @@
|
|
|
176
177
|
block-size: 100%;
|
|
177
178
|
}
|
|
178
179
|
|
|
179
|
-
/*
|
|
180
|
+
/* 环心文字:12px 次级色,占位不撑格子,长内容自己换行由作者定 */
|
|
180
181
|
.xh-scope-progress[data-part='label'] {
|
|
181
|
-
color: var(--xh-progress-label-fg, var(--xh-fg-
|
|
182
|
-
font-size: var(--xh-progress-label-font-size, var(--xh-text-
|
|
182
|
+
color: var(--xh-progress-label-fg, var(--xh-fg-muted));
|
|
183
|
+
font-size: var(--xh-progress-label-font-size, var(--xh-text-caption-size));
|
|
183
184
|
line-height: var(--xh-leading-none);
|
|
184
185
|
text-align: center;
|
|
185
186
|
}
|
|
@@ -188,7 +189,7 @@
|
|
|
188
189
|
底槽不跟着语气换族:只有已完成的那段换色,才读得出"完成了多少" */
|
|
189
190
|
.xh-scope-progress[data-part='track'][data-variant='circle'],
|
|
190
191
|
.xh-scope-progress[data-part='track'][data-variant='dashboard'] {
|
|
191
|
-
stroke: var(--xh-progress-track, var(--xh-bg-subtle-
|
|
192
|
+
stroke: var(--xh-progress-track, var(--xh-bg-subtle-hover));
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
.xh-scope-progress[data-part='range'][data-variant='circle'],
|
|
@@ -204,16 +205,16 @@
|
|
|
204
205
|
/* 子弹图:有分段时轨道加厚一档,填充收窄成中间一条压在色带上,色带在填充两侧照样读得出。
|
|
205
206
|
三档厚度各比普通线形高一档,阶梯次序不变 */
|
|
206
207
|
.xh-scope-progress[data-part='root'][data-variant='line'][data-banded] {
|
|
207
|
-
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-
|
|
208
|
+
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-track-band-thickness-md));
|
|
208
209
|
--xh-_progress-range-size: 50%;
|
|
209
210
|
}
|
|
210
211
|
|
|
211
212
|
.xh-scope-progress[data-part='root'][data-variant='line'][data-banded][data-size='sm'] {
|
|
212
|
-
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-
|
|
213
|
+
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-track-band-thickness-sm));
|
|
213
214
|
}
|
|
214
215
|
|
|
215
216
|
.xh-scope-progress[data-part='root'][data-variant='line'][data-banded][data-size='lg'] {
|
|
216
|
-
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-
|
|
217
|
+
--xh-_progress-thickness: var(--xh-progress-thickness, var(--xh-track-band-thickness-lg));
|
|
217
218
|
}
|
|
218
219
|
|
|
219
220
|
/* 色带取本段语气的淡色:同一族颜色里填充是实色、色带浅一档,读得出填充落在哪一段 */
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
--xh-prompt-input-skin: 1;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
/* root
|
|
19
|
-
|
|
18
|
+
/* root 就是视觉盒:描边、底色、圆角、聚焦面、悬停与禁用面由 Field Chrome 家族画在它身上(静息描边式:
|
|
19
|
+
字段淡底 + --xh-border-control 描边 + 无影,聚焦换承载面底 + 品牌描边、不画环;登记的例外只在 surface 圆角),内部 textarea
|
|
20
20
|
无边框;align-items: flex-end 让按钮随输入框长高贴着底边。
|
|
21
21
|
三个视觉轴都落在 root 上:形态三档由家族按 data-variant 生成,语气管用哪族颜色,尺寸管高度与字号 */
|
|
22
22
|
.xh-scope-prompt-input[data-part='root'] {
|
|
23
|
-
/*
|
|
23
|
+
/* 圆角可由使用者槽切换,家族只过渡底、描边与影 */
|
|
24
24
|
transition: border-radius var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
25
25
|
/* 尺寸缺省档:不写 data-size 时按中档走 */
|
|
26
26
|
--xh-_prompt-input-h: var(--xh-control-h-md);
|