@xihan-ui/styles 1.0.0 → 2.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 +5146 -6
- package/README.md +22 -2
- package/component-tokens.d.ts +4212 -0
- package/component-tokens.js +2 -0
- package/components.tokens.json +80116 -0
- package/css/accordion.css +131 -75
- package/css/affix.css +16 -1
- package/css/alert.css +114 -67
- package/css/anchor.css +99 -27
- package/css/approval.css +461 -0
- package/css/avatar-group.css +14 -6
- package/css/avatar.css +33 -9
- package/css/back-top.css +103 -48
- package/css/badge.css +42 -14
- package/css/bar-code.css +62 -0
- package/css/breadcrumb.css +40 -21
- package/css/button-group.css +146 -24
- package/css/button.css +116 -99
- package/css/calendar-picker.css +448 -0
- package/css/calendar-range-picker.css +517 -0
- package/css/card.css +54 -77
- package/css/carousel.css +412 -68
- package/css/cascader.css +429 -246
- package/css/checkbox-group.css +225 -77
- package/css/checkbox.css +174 -37
- package/css/clipboard.css +266 -47
- package/css/code-view.css +279 -0
- package/css/collapsible.css +108 -63
- package/css/color-field.css +158 -0
- package/css/color-picker.css +172 -184
- package/css/color-slider.css +274 -0
- package/css/color-swatch-picker.css +243 -0
- package/css/color-swatch.css +35 -0
- package/css/combobox.css +267 -273
- package/css/command.css +399 -0
- package/css/context-menu.css +183 -108
- package/css/date-field.css +94 -121
- package/css/date-picker.css +486 -249
- package/css/date-range-picker.css +559 -0
- package/css/description.css +51 -0
- package/css/descriptions.css +133 -87
- package/css/dialog.css +247 -68
- package/css/diff-view.css +428 -0
- package/css/download-trigger.css +155 -46
- package/css/drawer.css +194 -111
- package/css/editable.css +172 -152
- package/css/empty-state.css +80 -11
- package/css/field-array.css +190 -0
- package/css/field.css +84 -31
- package/css/fieldset.css +51 -18
- package/css/file-upload.css +134 -36
- package/css/flex.css +20 -1
- package/css/float-button.css +238 -57
- package/css/floating-panel.css +173 -92
- package/css/focus.css +46 -0
- package/css/forced-colors.css +93 -0
- package/css/form.css +254 -77
- package/css/gradient-text.css +34 -10
- package/css/grid.css +516 -5
- package/css/heatmap.css +87 -29
- package/css/highlight.css +20 -5
- package/css/hover-card.css +97 -47
- package/css/icon-wrapper.css +15 -3
- package/css/icon.css +74 -8
- package/css/image-cropper.css +143 -29
- package/css/image-viewer.css +150 -89
- package/css/image.css +30 -1
- package/css/infinite-scroll.css +51 -1
- package/css/input-group.css +277 -0
- package/css/json-viewer.css +102 -45
- package/css/kbd.css +72 -0
- package/css/label.css +78 -0
- package/css/layers.css +5 -0
- package/css/layout.css +175 -31
- package/css/list.css +24 -3
- package/css/listbox.css +208 -67
- package/css/loading-bar.css +52 -3
- package/css/log.css +144 -9
- package/css/markdown-stream.css +149 -0
- package/css/marquee.css +27 -1
- package/css/masonry.css +7 -0
- package/css/matrix-code.css +67 -0
- package/css/mention.css +234 -152
- package/css/menu.css +180 -83
- package/css/menubar.css +204 -136
- package/css/message-feed.css +197 -0
- package/css/navigation-menu.css +144 -90
- package/css/notification.css +178 -100
- package/css/number-animation.css +7 -0
- package/css/number-field.css +120 -277
- package/css/overlay-arrow.css +12 -7
- package/css/page-header.css +99 -14
- package/css/pagination.css +175 -135
- package/css/password-input.css +222 -219
- package/css/pin-input.css +101 -67
- package/css/pointer.css +36 -0
- package/css/popconfirm.css +185 -94
- package/css/popover.css +121 -77
- package/css/progress.css +60 -12
- package/css/prompt-input.css +224 -0
- package/css/question-flow.css +513 -0
- package/css/radio-group.css +147 -30
- package/css/rating.css +193 -43
- package/css/reasoning.css +336 -0
- package/css/reset.css +84 -6
- package/css/resizable.css +237 -0
- package/css/scroll-area.css +68 -7
- package/css/scrollbar.css +47 -13
- package/css/segmented.css +94 -29
- package/css/select.css +288 -274
- package/css/separator.css +101 -1
- package/css/side-nav.css +133 -75
- package/css/signature-pad.css +74 -54
- package/css/skeleton.css +84 -11
- package/css/slider.css +132 -39
- package/css/sortable.css +198 -0
- package/css/spinner.css +126 -12
- package/css/splitter.css +29 -8
- package/css/statistic.css +55 -0
- package/css/steps.css +206 -72
- package/css/switch.css +268 -36
- package/css/table.css +695 -118
- package/css/tabs.css +604 -42
- package/css/tag-group.css +219 -0
- package/css/tag.css +118 -28
- package/css/tags-input.css +156 -274
- package/css/text-field.css +101 -249
- package/css/time-field.css +100 -128
- package/css/time-picker.css +323 -252
- package/css/time-range-picker.css +719 -0
- package/css/timeline.css +202 -68
- package/css/timer.css +56 -52
- package/css/timestamp.css +34 -0
- package/css/toast.css +373 -144
- package/css/toggle-group.css +309 -76
- package/css/toggle.css +116 -85
- package/css/tone.css +47 -0
- package/css/tool-call.css +421 -0
- package/css/toolbar.css +181 -33
- package/css/tooltip.css +107 -36
- package/css/tour.css +183 -152
- package/css/transfer.css +351 -138
- package/css/tree-select.css +323 -216
- package/css/tree.css +294 -62
- package/css/truncate.css +65 -0
- package/css/typography.css +228 -5
- package/css/undefined.css +10 -1
- package/css/virtualizer.css +9 -10
- package/css/visually-hidden.css +7 -0
- package/css/watermark.css +7 -0
- package/family/action-control.css +487 -0
- package/family/collection-item.css +721 -0
- package/family/field-chrome.css +298 -0
- package/family/motion.css +166 -0
- package/family/swatch.css +59 -0
- package/index.css +41705 -126
- package/index.unlayered.css +33692 -17339
- package/package.json +51 -17
- package/css/calendar.css +0 -367
- package/css/code-block.css +0 -91
- package/css/composer.css +0 -134
- package/css/countdown.css +0 -26
- package/css/dynamic-input.css +0 -220
- package/css/ellipsis.css +0 -52
- package/css/hotkeys.css +0 -90
- package/css/popselect.css +0 -391
- package/css/qr-code.css +0 -55
- package/css/result.css +0 -119
- package/css/space.css +0 -117
- package/css/thread.css +0 -120
- package/css/time.css +0 -25
package/css/pin-input.css
CHANGED
|
@@ -1,27 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2021-Present XiHanFun and contributors.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* PinInput 独立皮肤传递引入字段视觉盒:每一格 input 自身就是 Field Chrome 的 chrome 节点;full bundle 递归去重。 */
|
|
7
|
+
@import '../family/field-chrome.css';
|
|
8
|
+
|
|
1
9
|
@layer xihan.components {
|
|
2
10
|
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
3
11
|
[data-scope='pin-input'] {
|
|
4
12
|
--xh-pin-input-skin: 1;
|
|
5
13
|
}
|
|
6
14
|
|
|
7
|
-
/*
|
|
15
|
+
/* 与文本框、数字框同一套堆叠:标签一行、格子一行。
|
|
16
|
+
格子的描边、底、圆角、五态与悬停由 Field Chrome 家族按格子上的 data-variant 生成,皮肤不再声明形态三档 */
|
|
8
17
|
[data-scope='pin-input'][data-part='root'] {
|
|
9
|
-
/*
|
|
18
|
+
/* 尺寸档只换这三个私有槽,格子与分隔都从 root 继承它们,换档不必给每个部件各写一条选择器 */
|
|
10
19
|
--xh-_pin-input-box-size: var(--xh-control-box-md);
|
|
11
20
|
--xh-_pin-input-box-gap: var(--xh-control-gap-md);
|
|
12
21
|
--xh-_pin-input-box-font-size: var(--xh-text-heading-3-size);
|
|
13
|
-
|
|
14
|
-
/* 形态档只换这三个私有槽,缺省这一份就是描边式(描边 + 画布底) */
|
|
15
|
-
--xh-_pin-input-box-bg: var(--xh-bg-canvas);
|
|
16
|
-
--xh-_pin-input-box-border: var(--xh-border-control);
|
|
17
|
-
--xh-_pin-input-box-border-hover: var(--xh-border-control-hover);
|
|
18
|
-
/* 聚焦环与填满态的强调色随语气走。没写 data-tone 时 --xh-_tone 没被声明,退回原来的取值 */
|
|
19
|
-
--xh-_pin-input-ring: var(--xh-ring-focus);
|
|
22
|
+
/* 填满态的强调色随语气走。没写 data-tone 时 --xh-_tone 没被声明,退回品牌色 */
|
|
20
23
|
--xh-_pin-input-accent: var(--xh-_tone, var(--xh-bg-brand));
|
|
21
24
|
|
|
22
25
|
display: inline-flex;
|
|
23
26
|
flex-direction: column;
|
|
24
27
|
gap: var(--xh-pin-input-gap, var(--xh-space-1));
|
|
28
|
+
/* 每格都有定宽,一行格子的最小宽度就是这些定宽之和,收缩到边框盒之内不再有余地:
|
|
29
|
+
不封顶的话整块控件按这个和撑开,比容器宽多少就顶出多少。
|
|
30
|
+
封到容器那么宽,格子那条收缩才有得可收 */
|
|
31
|
+
max-inline-size: 100%;
|
|
25
32
|
}
|
|
26
33
|
|
|
27
34
|
/* 声明了 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去 */
|
|
@@ -29,35 +36,11 @@
|
|
|
29
36
|
display: none;
|
|
30
37
|
}
|
|
31
38
|
|
|
32
|
-
/* —— 形态 —— */
|
|
33
|
-
/* 形态只决定颜色怎么用;用哪族颜色由 data-tone 决定。
|
|
34
|
-
不做 solid:实心填充盖住了"这里能打字"这件事,输入框用不上它 */
|
|
35
|
-
[data-scope='pin-input'][data-part='root'][data-variant='outline'] {
|
|
36
|
-
--xh-_pin-input-box-bg: var(--xh-bg-canvas);
|
|
37
|
-
--xh-_pin-input-box-border: var(--xh-border-control);
|
|
38
|
-
--xh-_pin-input-box-border-hover: var(--xh-border-control-hover);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/* 填充式:底色说明这里是一格输入位,描边让位给底色 */
|
|
42
|
-
[data-scope='pin-input'][data-part='root'][data-variant='subtle'] {
|
|
43
|
-
--xh-_pin-input-box-bg: var(--xh-_tone-subtle, var(--xh-bg-subtle));
|
|
44
|
-
--xh-_pin-input-box-border: transparent;
|
|
45
|
-
--xh-_pin-input-box-border-hover: var(--xh-_tone-border, var(--xh-border-control-hover));
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* 无边框、透明底:静息时格子完全隐入背景,可见反馈全靠悬停描边与聚焦环 */
|
|
49
|
-
[data-scope='pin-input'][data-part='root'][data-variant='ghost'] {
|
|
50
|
-
--xh-_pin-input-box-bg: transparent;
|
|
51
|
-
--xh-_pin-input-box-border: transparent;
|
|
52
|
-
--xh-_pin-input-box-border-hover: var(--xh-_tone-border, var(--xh-border-control-hover));
|
|
53
|
-
}
|
|
54
|
-
|
|
55
39
|
/* —— 尺寸 —— */
|
|
56
40
|
[data-scope='pin-input'][data-part='root'][data-size='sm'] {
|
|
57
41
|
--xh-_pin-input-box-size: var(--xh-control-box-sm);
|
|
58
42
|
--xh-_pin-input-box-gap: var(--xh-control-gap-sm);
|
|
59
43
|
--xh-_pin-input-box-font-size: var(--xh-control-font-lg);
|
|
60
|
-
--xh-_pin-input-label-font-size: var(--xh-control-font-sm);
|
|
61
44
|
}
|
|
62
45
|
|
|
63
46
|
/* 格子是正方形,缺省档已经占到控件高度表的顶档,lg 档由顶档加一格间距合成,不另立数值 */
|
|
@@ -65,31 +48,79 @@
|
|
|
65
48
|
--xh-_pin-input-box-size: var(--xh-control-box-lg);
|
|
66
49
|
--xh-_pin-input-box-gap: var(--xh-control-gap-lg);
|
|
67
50
|
--xh-_pin-input-box-font-size: var(--xh-text-heading-2-size);
|
|
68
|
-
--xh-_pin-input-label-font-size: var(--xh-control-font-lg);
|
|
69
51
|
}
|
|
70
52
|
|
|
71
53
|
[data-scope='pin-input'][data-part='label'] {
|
|
72
54
|
color: var(--xh-pin-input-label-fg, var(--xh-fg-default));
|
|
73
|
-
font-size: var(--xh-pin-input-label-font-size, var(--xh-
|
|
55
|
+
font-size: var(--xh-pin-input-label-font-size, var(--xh-text-label-size));
|
|
74
56
|
font-weight: var(--xh-pin-input-label-font-weight, var(--xh-text-label-weight));
|
|
75
|
-
line-height: var(--xh-leading-none);
|
|
76
57
|
}
|
|
77
58
|
|
|
78
59
|
[data-scope='pin-input'][data-part='label'][data-disabled] {
|
|
79
60
|
color: var(--xh-pin-input-label-fg-disabled, var(--xh-fg-subtle));
|
|
80
61
|
}
|
|
81
62
|
|
|
82
|
-
/*
|
|
83
|
-
|
|
84
|
-
|
|
63
|
+
/* 分段:连着的几格圈成一段。它只排版,格间距仍由格子自己的相邻兄弟规则给 */
|
|
64
|
+
[data-scope='pin-input'][data-part='group'] {
|
|
65
|
+
display: inline-flex;
|
|
66
|
+
align-items: center;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[data-scope='pin-input'][data-part='group'][hidden] {
|
|
70
|
+
display: none;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* 段间分隔:两段之间的一道短横或圆点,两侧各留一格间距 */
|
|
74
|
+
[data-scope='pin-input'][data-part='separator'] {
|
|
75
|
+
display: inline-flex;
|
|
85
76
|
flex: none;
|
|
77
|
+
align-items: center;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
margin-inline: var(--xh-pin-input-separator-gap, var(--xh-_pin-input-box-gap));
|
|
80
|
+
color: var(--xh-pin-input-separator-fg, var(--xh-fg-muted));
|
|
81
|
+
font-size: var(--xh-pin-input-separator-font-size, var(--xh-_pin-input-box-font-size));
|
|
82
|
+
line-height: var(--xh-leading-none);
|
|
83
|
+
user-select: none;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
[data-scope='pin-input'][data-part='separator'][hidden] {
|
|
87
|
+
display: none;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
[data-scope='pin-input'][data-part='separator'][data-disabled] {
|
|
91
|
+
color: var(--xh-pin-input-separator-fg-disabled, var(--xh-fg-disabled));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* 每格是等宽方框:它自身就是 Field Chrome 的 chrome 节点,宽高同取一个尺寸,内边距归零。
|
|
95
|
+
留了内边距,单字符居中后可用宽度不足,中文与全角字符会被挤出框外。
|
|
96
|
+
组件层只把既有公开槽映射到家族合同;不投影 data-xh-field-input,否则家族会把格子的边框重置掉 */
|
|
97
|
+
[data-scope='pin-input'][data-part='input'] {
|
|
98
|
+
--xh-field-control-height: var(--xh-pin-input-box-size, var(--xh-_pin-input-box-size));
|
|
99
|
+
--xh-field-control-padding-inline: 0;
|
|
100
|
+
--xh-field-control-gap: 0;
|
|
101
|
+
--xh-field-control-min-inline-size: 0;
|
|
102
|
+
--xh-field-control-radius: var(--xh-pin-input-box-radius, var(--xh-shape-control));
|
|
103
|
+
--xh-field-bg-rest: var(--xh-pin-input-box-bg, var(--xh-_field-variant-bg-rest));
|
|
104
|
+
--xh-field-bg-hover: var(--xh-pin-input-box-bg-hover, var(--xh-_field-variant-bg-hover));
|
|
105
|
+
--xh-field-bg-read-only: var(--xh-pin-input-box-bg-readonly, var(--xh-_field-variant-bg-read-only));
|
|
106
|
+
--xh-field-bg-disabled: var(--xh-pin-input-box-bg-disabled, var(--xh-_field-variant-bg-disabled));
|
|
107
|
+
--xh-field-fg-rest: var(--xh-pin-input-box-fg, var(--xh-fg-default));
|
|
108
|
+
--xh-field-border-rest: var(--xh-pin-input-box-border, var(--xh-_field-variant-border-rest));
|
|
109
|
+
--xh-field-border-hover: var(--xh-pin-input-box-border-hover, var(--xh-_field-variant-border-hover));
|
|
110
|
+
--xh-field-border-focus: var(--xh-pin-input-box-border-focus, var(--xh-_field-variant-border-focus));
|
|
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
|
+
--xh-field-shadow-rest: var(--xh-pin-input-box-shadow, none);
|
|
115
|
+
|
|
116
|
+
/* 一行放不下时逐格收窄,收不动就整行顶出屏幕。
|
|
117
|
+
min-inline-size 归零解开表单控件那份按字符数算出来的自动最小宽度。
|
|
118
|
+
高度不跟着收:它取自控件高度尺,与同一行里别的控件对齐靠的就是这个数。
|
|
119
|
+
宽度放得下时收窄量为零,格子仍是尺寸档给的那个正方形。 */
|
|
120
|
+
flex: 0 1 auto;
|
|
121
|
+
min-inline-size: 0;
|
|
86
122
|
inline-size: var(--xh-pin-input-box-size, var(--xh-_pin-input-box-size));
|
|
87
|
-
block-size: var(--xh-pin-input-box-size, var(--xh-_pin-input-box-size));
|
|
88
123
|
padding: 0;
|
|
89
|
-
border: var(--xh-stroke-thin) solid var(--xh-pin-input-box-border, var(--xh-_pin-input-box-border));
|
|
90
|
-
border-radius: var(--xh-pin-input-box-radius, var(--xh-shape-control));
|
|
91
|
-
background: var(--xh-pin-input-box-bg, var(--xh-_pin-input-box-bg));
|
|
92
|
-
color: var(--xh-pin-input-box-fg, var(--xh-fg-default));
|
|
93
124
|
/* 表单控件不继承页面字体,只给字号会让格子用 UA 默认字族 */
|
|
94
125
|
font-family: inherit;
|
|
95
126
|
font-size: var(--xh-pin-input-box-font-size, var(--xh-_pin-input-box-font-size));
|
|
@@ -97,7 +128,6 @@
|
|
|
97
128
|
font-variant-numeric: tabular-nums;
|
|
98
129
|
line-height: var(--xh-leading-none);
|
|
99
130
|
text-align: center;
|
|
100
|
-
transition: border-color var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
101
131
|
}
|
|
102
132
|
|
|
103
133
|
/* 格间距只能长在格子自己身上:包住这一行的容器是作者写的,不在角色表里,
|
|
@@ -111,33 +141,19 @@
|
|
|
111
141
|
color: var(--xh-pin-input-placeholder-fg, var(--xh-fg-subtle));
|
|
112
142
|
}
|
|
113
143
|
|
|
114
|
-
/* hover 只在中性态换描边:invalid 正拿边框颜色说事,被 hover 盖掉那条信息就没了 */
|
|
115
|
-
[data-scope='pin-input'][data-part='input']:hover:not(:disabled, [data-invalid]) {
|
|
116
|
-
border-color: var(--xh-pin-input-box-border-hover, var(--xh-_pin-input-box-border-hover));
|
|
117
|
-
}
|
|
118
|
-
|
|
119
144
|
/* 一行格子长得一模一样,光标那道竖线太细,看不出正在填哪一格:
|
|
120
145
|
当前格必须有明显的环。data-focus 由机器给(它知道谁是当前格),
|
|
121
|
-
:focus-
|
|
122
|
-
|
|
123
|
-
[data-scope='pin-input'][data-part='input']
|
|
124
|
-
border-color: var(--xh-pin-input-box-border-focus, var(--xh-
|
|
125
|
-
outline: var(--xh-ring-width) solid var(--xh-
|
|
146
|
+
家族的 :focus-within 兜住机器状态还没回流的那一帧,两条同时写不冲突。
|
|
147
|
+
焦点边一律家族的 --xh-border-control-focus,不随 tone */
|
|
148
|
+
[data-scope='pin-input'][data-part='input'][data-focus] {
|
|
149
|
+
border-color: var(--xh-pin-input-box-border-focus, var(--xh-_field-variant-border-focus));
|
|
150
|
+
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
126
151
|
outline-offset: var(--xh-ring-offset);
|
|
127
152
|
}
|
|
128
153
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
/* 校验失败时环也跟着变红:两圈等宽相邻却一红一蓝,读的人不知道哪个才是当前状态 */
|
|
133
|
-
--xh-_pin-input-ring: var(--xh-ring-invalid);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/* 每格都是原生 disabled 的单体控件(禁用的格子不该能聚焦),所以用 :disabled */
|
|
137
|
-
[data-scope='pin-input'][data-part='input']:disabled {
|
|
138
|
-
background: var(--xh-pin-input-box-bg-disabled, var(--xh-bg-subtle));
|
|
139
|
-
color: var(--xh-fg-disabled);
|
|
140
|
-
cursor: not-allowed;
|
|
154
|
+
/* 校验失败时环也跟着变红:两圈等宽相邻却一红一蓝,读的人不知道哪个才是当前状态 */
|
|
155
|
+
[data-scope='pin-input'][data-part='input'][data-invalid][data-focus] {
|
|
156
|
+
outline-color: var(--xh-ring-invalid);
|
|
141
157
|
}
|
|
142
158
|
|
|
143
159
|
/* 填满只代表"格子都有字",不代表"验证码对",所以用品牌色而不是成功色收个尾。
|
|
@@ -147,6 +163,24 @@
|
|
|
147
163
|
border-color: var(--xh-pin-input-box-border-complete, var(--xh-_pin-input-accent));
|
|
148
164
|
}
|
|
149
165
|
|
|
166
|
+
/* 自动填充:一次性验证码由平台直接灌进这一行格子,引擎顺手给每格强加一套系统色
|
|
167
|
+
(多数是黄底黑字),盖得过 background 与 color,深色档下就剩一行不跟主题走的黄方块。
|
|
168
|
+
格子没投影 data-xh-field-input,家族那两条 autofill 命不中,这里自写一份:
|
|
169
|
+
底改用 inset 阴影铺回来,扩散量 100vmax 填满内容盒;字改用 -webkit-text-fill-color
|
|
170
|
+
接回来,那是这个态下唯一还听样式表的前景通道。
|
|
171
|
+
不去拉长 transition 把系统底推迟显现:那只是把它藏起来,减弱动效通道一关过渡就当场露出。
|
|
172
|
+
两个选择器名分写两条:一条选择器列表里只要有一个名字不被认识,整条规则就被丢弃。
|
|
173
|
+
底取一支不透明的面令牌而不是家族的形态底:后者在 ghost 档下是透明的,铺一层透明等于没铺。 */
|
|
174
|
+
[data-scope='pin-input'][data-part='input']:autofill {
|
|
175
|
+
box-shadow: inset 0 0 0 100vmax var(--xh-pin-input-box-autofill-bg, var(--xh-bg-canvas));
|
|
176
|
+
-webkit-text-fill-color: var(--xh-pin-input-box-autofill-fg, var(--xh-fg-default));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
[data-scope='pin-input'][data-part='input']:-webkit-autofill {
|
|
180
|
+
box-shadow: inset 0 0 0 100vmax var(--xh-pin-input-box-autofill-bg, var(--xh-bg-canvas));
|
|
181
|
+
-webkit-text-fill-color: var(--xh-pin-input-box-autofill-fg, var(--xh-fg-default));
|
|
182
|
+
}
|
|
183
|
+
|
|
150
184
|
/* 连接层把它写成 type=hidden,UA 自己就不渲染;这里的视觉隐藏是给元素升级前那一瞬兜底
|
|
151
185
|
(作者手写的是一个普通 input,升级完成前它是可见的文本框)。
|
|
152
186
|
刻意不写 display:写了反而会盖掉 UA 对 type=hidden 的收起,把它显出来 */
|
package/css/pointer.css
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2021-Present XiHanFun and contributors.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* 指针反馈的公共层:全库共用一份。
|
|
8
|
+
*
|
|
9
|
+
* 两件事写在这里。
|
|
10
|
+
*
|
|
11
|
+
* 一、触摸点按时浏览器画的那层高亮方块。它是继承属性,一条规则打在 [data-scope] 上就覆盖
|
|
12
|
+
* 库里的每一个节点与它们的后代,不必逐个组件登记。
|
|
13
|
+
*
|
|
14
|
+
* 二、禁用态的光标。「这个控件不可用」在库里有三种条件拼写:解剖打出来的 data-disabled、
|
|
15
|
+
* 原生表单控件的 :disabled、集合条目用的 aria-disabled——三者说的是同一件事,光标也是同一个。
|
|
16
|
+
* 选择器停在两个属性加一个条件(0,3,0):与组件皮肤里
|
|
17
|
+
* [data-scope='x'][data-part='y'][data-disabled] 同级,本份排在全部组件皮肤之前,
|
|
18
|
+
* 要另画的组件照写即可压过。
|
|
19
|
+
*
|
|
20
|
+
* 「在途」不在这里:它是另一件事,光标是 progress,挂在哪个部件上逐个组件不同,
|
|
21
|
+
* 写成通配会盖到作者自己的内容上(列表外壳、快捷键展示、可调容器都带 data-loading / data-disabled,
|
|
22
|
+
* 而它们身上的这两个标记说的是「这项行为关掉了」,不是「这个控件不可用」)。
|
|
23
|
+
*
|
|
24
|
+
* 排在全部组件皮肤之前:组件不必为了换一个光标把整条规则重写一遍。
|
|
25
|
+
*/
|
|
26
|
+
@layer xihan.components {
|
|
27
|
+
[data-scope] {
|
|
28
|
+
-webkit-tap-highlight-color: transparent;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
[data-scope][data-part][data-disabled],
|
|
32
|
+
[data-scope][data-part]:disabled,
|
|
33
|
+
[data-scope][data-part][aria-disabled='true'] {
|
|
34
|
+
cursor: not-allowed;
|
|
35
|
+
}
|
|
36
|
+
}
|