@manohub/ui 0.10.4 → 1.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/README.md +155 -155
- package/dist/components/form/index.js +8 -1
- package/dist/components/tabs/index.d.ts +9 -6
- package/dist/components/tabs/index.js +6 -1
- package/dist/styles/components/avatar.css +131 -131
- package/dist/styles/components/avatar.tokens.css +24 -24
- package/dist/styles/components/badge.css +266 -266
- package/dist/styles/components/badge.tokens.css +24 -24
- package/dist/styles/components/button.css +460 -460
- package/dist/styles/components/capsule.css +128 -128
- package/dist/styles/components/capsule.tokens.css +27 -27
- package/dist/styles/components/card.css +198 -198
- package/dist/styles/components/checkbox.css +145 -145
- package/dist/styles/components/checkbox.tokens.css +26 -26
- package/dist/styles/components/code-block.css +216 -216
- package/dist/styles/components/code-block.tokens.css +40 -40
- package/dist/styles/components/collapse.css +62 -62
- package/dist/styles/components/collapse.tokens.css +20 -20
- package/dist/styles/components/dialog.css +158 -158
- package/dist/styles/components/dialog.tokens.css +24 -24
- package/dist/styles/components/divider.css +75 -75
- package/dist/styles/components/divider.tokens.css +22 -22
- package/dist/styles/components/drawer.css +143 -143
- package/dist/styles/components/drawer.tokens.css +22 -22
- package/dist/styles/components/filter.css +29 -29
- package/dist/styles/components/form.css +442 -430
- package/dist/styles/components/form.tokens.css +15 -15
- package/dist/styles/components/input.css +538 -533
- package/dist/styles/components/input.tokens.css +43 -43
- package/dist/styles/components/layout.css +200 -200
- package/dist/styles/components/list-view.css +244 -244
- package/dist/styles/components/loading.css +76 -76
- package/dist/styles/components/loading.tokens.css +23 -23
- package/dist/styles/components/nav.css +48 -48
- package/dist/styles/components/notice.css +153 -153
- package/dist/styles/components/notice.tokens.css +17 -17
- package/dist/styles/components/notification.css +159 -159
- package/dist/styles/components/notification.tokens.css +37 -37
- package/dist/styles/components/page.css +473 -473
- package/dist/styles/components/pagination.css +303 -303
- package/dist/styles/components/pagination.tokens.css +32 -32
- package/dist/styles/components/panel.css +77 -77
- package/dist/styles/components/query-state.css +88 -88
- package/dist/styles/components/radio.css +271 -271
- package/dist/styles/components/radio.tokens.css +26 -26
- package/dist/styles/components/search.css +34 -34
- package/dist/styles/components/select.css +326 -326
- package/dist/styles/components/select.tokens.css +44 -44
- package/dist/styles/components/skeleton.css +60 -60
- package/dist/styles/components/skeleton.tokens.css +27 -27
- package/dist/styles/components/steps.css +205 -205
- package/dist/styles/components/steps.tokens.css +44 -44
- package/dist/styles/components/switch.css +165 -165
- package/dist/styles/components/switch.tokens.css +26 -26
- package/dist/styles/components/tabbar.css +235 -235
- package/dist/styles/components/tabbar.tokens.css +30 -30
- package/dist/styles/components/table.css +504 -504
- package/dist/styles/components/table.tokens.css +44 -44
- package/dist/styles/components/tag.css +127 -127
- package/dist/styles/components/tag.tokens.css +24 -24
- package/dist/styles/components/toast.css +185 -185
- package/dist/styles/components/toast.tokens.css +26 -26
- package/dist/styles/components/tooltip.css +89 -89
- package/dist/styles/components/tooltip.tokens.css +25 -25
- package/dist/styles/components/tree.css +173 -173
- package/dist/styles/components/upload.css +151 -151
- package/dist/styles/components/upload.tokens.css +27 -27
- package/dist/styles/index.css +153 -153
- package/dist/styles/operations/collapse.css +84 -84
- package/dist/styles/operations/popup.css +193 -193
- package/dist/styles/operations/tabs.css +82 -73
- package/package.json +62 -62
|
@@ -1,185 +1,185 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Toast —— 消息提示(一行提示 + 语义图标 + 可选动作;可堆叠)。
|
|
3
|
-
*
|
|
4
|
-
* 出处:`@aihub/theme` 的 `playground/components/toast.css` 与 `src/components/toast.css`
|
|
5
|
-
* (宽 240 / 最大 560 / 最小高 52 / r8 / 1px 描边 / 内距 10 16 10 24 / 图标 18 圆 / 图标与文字间距 12 /
|
|
6
|
-
* 投影 `0 2 12` 黑 10% / 正文 15;loading 样张 240x93 且图标顶对齐;带动作样张宽 360)。
|
|
7
|
-
*
|
|
8
|
-
* **与规范的一处有意偏差**:loading 那张 240x93 的样张是「多行加载文案」的尺寸,照搬成最小高后,
|
|
9
|
-
* 单行提示会撑出一张上挤下空的空卡 —— 故本档高度回归常态(与其它档同为 52 起,内容多时自然撑高),
|
|
10
|
-
* 只保留图标差异(透明底 + 主色转圈)。
|
|
11
|
-
*
|
|
12
|
-
* 三件事必须与规范一致(容易做错):
|
|
13
|
-
*
|
|
14
|
-
* 1. **图标是「圆形色底 + 白色字形」**,不是一个字形图标 —— 只有 loading 例外(透明底 + 2px 主色描边,
|
|
15
|
-
* **上边留缺口**造成转圈感);
|
|
16
|
-
* 2. **动作按钮靠 `margin-left: auto` 顶到最右**,不是跟在文字后面;
|
|
17
|
-
* 3. **转圈动画的键名归本族**(`mh-toast-spin`):动画名是全局标识,加 `mh-` 前缀避免与页面上别的库撞名。
|
|
18
|
-
*
|
|
19
|
-
* 零 JS 能表达的:全部静态形态 + 转圈。**必须 JS**:自动消失计时、多条的出队、以及把 loading 换成结果态
|
|
20
|
-
* (那三件都在组件层,本面不预设)。
|
|
21
|
-
*
|
|
22
|
-
* 堆叠容器(`.mh-toast-stack`)是随本族给的一层薄皮:定在视口顶部居中、纵向 8 间距 —— 位置与堆叠是
|
|
23
|
-
* 「一族怎么摆」的事,做成类比让每个应用各写一份靠谱。
|
|
24
|
-
*/
|
|
25
|
-
.mh-toast {
|
|
26
|
-
display: flex;
|
|
27
|
-
align-items: center;
|
|
28
|
-
gap: var(--ui-toast-gap);
|
|
29
|
-
/* 宽度:**内容自适应,240 起、最长 560** —— 即规范原文的「宽 240 / 最大 560」。
|
|
30
|
-
原写法 `width: var(--ui-toast-width)` 是**固定宽**:文本被锁在 240−40=200px 里折行,
|
|
31
|
-
而 `max-width` 永远轮不到(内容只会折行,撑不宽元素)⇒ 23 字提示被硬折成两行。
|
|
32
|
-
改 min/max 夹住的 fit-content 后:短文案仍是 240(样张宽不变),长文案按内容展开、到 560 才折行。 */
|
|
33
|
-
width: fit-content;
|
|
34
|
-
min-width: var(--ui-toast-width);
|
|
35
|
-
max-width: var(--ui-toast-width-max);
|
|
36
|
-
min-height: var(--ui-toast-min-height);
|
|
37
|
-
padding: var(--ui-space-3) var(--ui-space-4) var(--ui-space-3) var(--ui-space-6);
|
|
38
|
-
border: 1px solid var(--ui-toast-border);
|
|
39
|
-
border-radius: var(--ui-toast-radius);
|
|
40
|
-
background: var(--ui-base-100);
|
|
41
|
-
box-shadow: var(--ui-shadow-elevated);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* loading:**不另设样张高**(高度与其它档一致,见文件头的「有意偏差」)—— 本档只差图标(转圈) */
|
|
45
|
-
/* 带动作:**更宽的样张宽**(360 是下限,长文案仍可展开到 560 上限) */
|
|
46
|
-
.mh-toast--action {
|
|
47
|
-
min-width: 360px;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/* ===== 图标:圆形色底 + 白色字形(18×18) ===== */
|
|
51
|
-
.mh-toast__icon {
|
|
52
|
-
display: flex;
|
|
53
|
-
align-items: center;
|
|
54
|
-
justify-content: center;
|
|
55
|
-
flex: none;
|
|
56
|
-
width: var(--ui-toast-icon-size);
|
|
57
|
-
height: var(--ui-toast-icon-size);
|
|
58
|
-
border-radius: var(--ui-radius-full);
|
|
59
|
-
color: var(--ui-base-100);
|
|
60
|
-
font-size: var(--ui-font-caption);
|
|
61
|
-
line-height: 1;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/* ===== 语义档:色落在**根修饰符**上,由它再作用到图标 =====
|
|
65
|
-
* 本包 tone 维度的统一落点是 `.mh-<件>--<tone>`(`Badge` / `Dialog` / `Notice` / `Notification`
|
|
66
|
-
* / `Tag` / `Text` 同款)。本件此前写成 `.mh-toast__icon--<tone>`,是唯一一个落子元素修饰符的 ——
|
|
67
|
-
* 消费方按直觉拼 `.mh-toast--success` 会落空。现改为「根挂 tone、面里用后代选择器取到图标」,
|
|
68
|
-
* **视觉一字未变**(圆形色底仍然只在图标上)。 */
|
|
69
|
-
.mh-toast--info .mh-toast__icon {
|
|
70
|
-
background: var(--ui-info);
|
|
71
|
-
}
|
|
72
|
-
.mh-toast--success .mh-toast__icon {
|
|
73
|
-
background: var(--ui-success);
|
|
74
|
-
}
|
|
75
|
-
.mh-toast--warning .mh-toast__icon {
|
|
76
|
-
background: var(--ui-warning);
|
|
77
|
-
}
|
|
78
|
-
.mh-toast--error .mh-toast__icon {
|
|
79
|
-
background: var(--ui-error);
|
|
80
|
-
}
|
|
81
|
-
/* loading 档:透明底 + 主色字形 + 匀速转圈。
|
|
82
|
-
规范此处是「2px 描边 + 上边缺口」的自画法,本仓改用意形(图标包的 `loading`)——
|
|
83
|
-
硬约束是「图标一律来自图标包、不用文字符号或自画形状冒充」,视觉等价(都是转圈环)。 */
|
|
84
|
-
.mh-toast--loading .mh-toast__icon {
|
|
85
|
-
background: transparent;
|
|
86
|
-
color: var(--ui-primary);
|
|
87
|
-
animation: mh-toast-spin 0.8s linear infinite;
|
|
88
|
-
}
|
|
89
|
-
@keyframes mh-toast-spin {
|
|
90
|
-
to {
|
|
91
|
-
transform: rotate(360deg);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.mh-toast__text {
|
|
96
|
-
/* 占满剩余宽度:动作位 / 关闭位都被顶到右端。
|
|
97
|
-
不写成「每个右侧位各给 margin-left: auto」—— 两个 auto 会平分剩余空间,
|
|
98
|
-
而本族的常驻提示可能同时带动作与关闭位(那样动作钮会被推到卡片中间)。 */
|
|
99
|
-
/* ⚠️ 必须是 `flex: 1 1 auto`,不能写成 `flex: 1`(= basis 0%):父级现在是 `width: fit-content`,
|
|
100
|
-
容器的固有宽按子项的**内容宽**算,basis 为 0 会让文本对容器宽度的贡献退化
|
|
101
|
-
⇒ 容器停在 min-width(240)、长文案照旧折行(改宽度就白改了)。 */
|
|
102
|
-
flex: 1 1 auto;
|
|
103
|
-
min-width: 0;
|
|
104
|
-
margin: 0;
|
|
105
|
-
font-size: var(--ui-toast-text-size);
|
|
106
|
-
line-height: var(--ui-line-body);
|
|
107
|
-
color: var(--ui-base-content);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/* 动作位:文本按钮样,顶到最右(面归按钮族时可直接用 `.mh-button--text`,本类只给定位与默认字色) */
|
|
111
|
-
.mh-toast__action {
|
|
112
|
-
margin-left: auto;
|
|
113
|
-
padding: 0;
|
|
114
|
-
border: none;
|
|
115
|
-
background: transparent;
|
|
116
|
-
font-family: inherit;
|
|
117
|
-
font-size: var(--ui-font-caption);
|
|
118
|
-
color: var(--ui-primary);
|
|
119
|
-
cursor: pointer;
|
|
120
|
-
}
|
|
121
|
-
.mh-toast__action:focus-visible {
|
|
122
|
-
outline: 2px solid var(--ui-primary);
|
|
123
|
-
outline-offset: 2px;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/* ===== 堆叠容器(顶部居中、纵向 8) =====
|
|
127
|
-
⚠️ `z-index` 只对**普通层**有效:原生 `<dialog>.showModal()` 的模态层与 `::backdrop` 在 top layer,
|
|
128
|
-
对它 z-index 再大也没用(toast 会被遮罩压暗)。故本容器带 `popover="manual"` 进 top layer
|
|
129
|
-
—— `showPopover()` 由组件层负责(见 `ToastStack` 的说明)。 */
|
|
130
|
-
.mh-toast-stack {
|
|
131
|
-
position: fixed;
|
|
132
|
-
top: var(--ui-space-6);
|
|
133
|
-
left: 50%;
|
|
134
|
-
transform: translateX(-50%);
|
|
135
|
-
z-index: 1080; /* 普通层里仍压过页面内容;popover 不可用的浏览器靠它兜底 */
|
|
136
|
-
display: flex;
|
|
137
|
-
flex-direction: column;
|
|
138
|
-
gap: var(--ui-space-2);
|
|
139
|
-
align-items: center;
|
|
140
|
-
pointer-events: none; /* 容器不挡点击;每条自己恢复 */
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/* `[popover]` 档:清掉 UA 给 popover 的默认,否则会变成「全屏居中、带边框的方块」
|
|
144
|
-
(UA 给的是 `inset: 0; margin: auto; border: solid; padding: .25em; background: Canvas; overflow: auto`)。
|
|
145
|
-
⚠️ `inset: auto` 与 `top` / `left` **必须写在同一条规则里**:只写 `inset: auto` 会把上面那条规则里的
|
|
146
|
-
`left: 50%` 一并压成 auto(同层冲突按顺序/特异性决胜,本块更高),元素就跑到视口左边缘去了。 */
|
|
147
|
-
.mh-toast-stack[popover] {
|
|
148
|
-
inset: auto;
|
|
149
|
-
top: var(--ui-space-6);
|
|
150
|
-
left: 50%;
|
|
151
|
-
transform: translateX(-50%);
|
|
152
|
-
margin: 0;
|
|
153
|
-
border: 0;
|
|
154
|
-
padding: 0;
|
|
155
|
-
background: transparent;
|
|
156
|
-
overflow: visible;
|
|
157
|
-
max-width: none;
|
|
158
|
-
max-height: none;
|
|
159
|
-
}
|
|
160
|
-
.mh-toast-stack > .mh-toast {
|
|
161
|
-
pointer-events: auto;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/* ===== 关闭位(`duration=0` 的常驻提示必须给用户一个关掉的入口) =====
|
|
165
|
-
靠右由 `.mh-toast__text` 的弹性占位实现 —— 本件不写 `margin-left: auto`:
|
|
166
|
-
与动作位同时存在时两个 auto 会平分剩余空间,反而把动作钮推到卡片中间 */
|
|
167
|
-
.mh-toast__close {
|
|
168
|
-
display: inline-flex;
|
|
169
|
-
align-items: center;
|
|
170
|
-
justify-content: center;
|
|
171
|
-
flex: none;
|
|
172
|
-
padding: 0;
|
|
173
|
-
border: none;
|
|
174
|
-
background: transparent;
|
|
175
|
-
color: inherit;
|
|
176
|
-
cursor: pointer;
|
|
177
|
-
opacity: 0.7;
|
|
178
|
-
transition: opacity 0.15s ease;
|
|
179
|
-
}
|
|
180
|
-
.mh-toast__close:hover {
|
|
181
|
-
opacity: 1;
|
|
182
|
-
}
|
|
183
|
-
.mh-toast__close-icon {
|
|
184
|
-
flex: none;
|
|
185
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Toast —— 消息提示(一行提示 + 语义图标 + 可选动作;可堆叠)。
|
|
3
|
+
*
|
|
4
|
+
* 出处:`@aihub/theme` 的 `playground/components/toast.css` 与 `src/components/toast.css`
|
|
5
|
+
* (宽 240 / 最大 560 / 最小高 52 / r8 / 1px 描边 / 内距 10 16 10 24 / 图标 18 圆 / 图标与文字间距 12 /
|
|
6
|
+
* 投影 `0 2 12` 黑 10% / 正文 15;loading 样张 240x93 且图标顶对齐;带动作样张宽 360)。
|
|
7
|
+
*
|
|
8
|
+
* **与规范的一处有意偏差**:loading 那张 240x93 的样张是「多行加载文案」的尺寸,照搬成最小高后,
|
|
9
|
+
* 单行提示会撑出一张上挤下空的空卡 —— 故本档高度回归常态(与其它档同为 52 起,内容多时自然撑高),
|
|
10
|
+
* 只保留图标差异(透明底 + 主色转圈)。
|
|
11
|
+
*
|
|
12
|
+
* 三件事必须与规范一致(容易做错):
|
|
13
|
+
*
|
|
14
|
+
* 1. **图标是「圆形色底 + 白色字形」**,不是一个字形图标 —— 只有 loading 例外(透明底 + 2px 主色描边,
|
|
15
|
+
* **上边留缺口**造成转圈感);
|
|
16
|
+
* 2. **动作按钮靠 `margin-left: auto` 顶到最右**,不是跟在文字后面;
|
|
17
|
+
* 3. **转圈动画的键名归本族**(`mh-toast-spin`):动画名是全局标识,加 `mh-` 前缀避免与页面上别的库撞名。
|
|
18
|
+
*
|
|
19
|
+
* 零 JS 能表达的:全部静态形态 + 转圈。**必须 JS**:自动消失计时、多条的出队、以及把 loading 换成结果态
|
|
20
|
+
* (那三件都在组件层,本面不预设)。
|
|
21
|
+
*
|
|
22
|
+
* 堆叠容器(`.mh-toast-stack`)是随本族给的一层薄皮:定在视口顶部居中、纵向 8 间距 —— 位置与堆叠是
|
|
23
|
+
* 「一族怎么摆」的事,做成类比让每个应用各写一份靠谱。
|
|
24
|
+
*/
|
|
25
|
+
.mh-toast {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: var(--ui-toast-gap);
|
|
29
|
+
/* 宽度:**内容自适应,240 起、最长 560** —— 即规范原文的「宽 240 / 最大 560」。
|
|
30
|
+
原写法 `width: var(--ui-toast-width)` 是**固定宽**:文本被锁在 240−40=200px 里折行,
|
|
31
|
+
而 `max-width` 永远轮不到(内容只会折行,撑不宽元素)⇒ 23 字提示被硬折成两行。
|
|
32
|
+
改 min/max 夹住的 fit-content 后:短文案仍是 240(样张宽不变),长文案按内容展开、到 560 才折行。 */
|
|
33
|
+
width: fit-content;
|
|
34
|
+
min-width: var(--ui-toast-width);
|
|
35
|
+
max-width: var(--ui-toast-width-max);
|
|
36
|
+
min-height: var(--ui-toast-min-height);
|
|
37
|
+
padding: var(--ui-space-3) var(--ui-space-4) var(--ui-space-3) var(--ui-space-6);
|
|
38
|
+
border: 1px solid var(--ui-toast-border);
|
|
39
|
+
border-radius: var(--ui-toast-radius);
|
|
40
|
+
background: var(--ui-base-100);
|
|
41
|
+
box-shadow: var(--ui-shadow-elevated);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* loading:**不另设样张高**(高度与其它档一致,见文件头的「有意偏差」)—— 本档只差图标(转圈) */
|
|
45
|
+
/* 带动作:**更宽的样张宽**(360 是下限,长文案仍可展开到 560 上限) */
|
|
46
|
+
.mh-toast--action {
|
|
47
|
+
min-width: 360px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* ===== 图标:圆形色底 + 白色字形(18×18) ===== */
|
|
51
|
+
.mh-toast__icon {
|
|
52
|
+
display: flex;
|
|
53
|
+
align-items: center;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
flex: none;
|
|
56
|
+
width: var(--ui-toast-icon-size);
|
|
57
|
+
height: var(--ui-toast-icon-size);
|
|
58
|
+
border-radius: var(--ui-radius-full);
|
|
59
|
+
color: var(--ui-base-100);
|
|
60
|
+
font-size: var(--ui-font-caption);
|
|
61
|
+
line-height: 1;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* ===== 语义档:色落在**根修饰符**上,由它再作用到图标 =====
|
|
65
|
+
* 本包 tone 维度的统一落点是 `.mh-<件>--<tone>`(`Badge` / `Dialog` / `Notice` / `Notification`
|
|
66
|
+
* / `Tag` / `Text` 同款)。本件此前写成 `.mh-toast__icon--<tone>`,是唯一一个落子元素修饰符的 ——
|
|
67
|
+
* 消费方按直觉拼 `.mh-toast--success` 会落空。现改为「根挂 tone、面里用后代选择器取到图标」,
|
|
68
|
+
* **视觉一字未变**(圆形色底仍然只在图标上)。 */
|
|
69
|
+
.mh-toast--info .mh-toast__icon {
|
|
70
|
+
background: var(--ui-info);
|
|
71
|
+
}
|
|
72
|
+
.mh-toast--success .mh-toast__icon {
|
|
73
|
+
background: var(--ui-success);
|
|
74
|
+
}
|
|
75
|
+
.mh-toast--warning .mh-toast__icon {
|
|
76
|
+
background: var(--ui-warning);
|
|
77
|
+
}
|
|
78
|
+
.mh-toast--error .mh-toast__icon {
|
|
79
|
+
background: var(--ui-error);
|
|
80
|
+
}
|
|
81
|
+
/* loading 档:透明底 + 主色字形 + 匀速转圈。
|
|
82
|
+
规范此处是「2px 描边 + 上边缺口」的自画法,本仓改用意形(图标包的 `loading`)——
|
|
83
|
+
硬约束是「图标一律来自图标包、不用文字符号或自画形状冒充」,视觉等价(都是转圈环)。 */
|
|
84
|
+
.mh-toast--loading .mh-toast__icon {
|
|
85
|
+
background: transparent;
|
|
86
|
+
color: var(--ui-primary);
|
|
87
|
+
animation: mh-toast-spin 0.8s linear infinite;
|
|
88
|
+
}
|
|
89
|
+
@keyframes mh-toast-spin {
|
|
90
|
+
to {
|
|
91
|
+
transform: rotate(360deg);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.mh-toast__text {
|
|
96
|
+
/* 占满剩余宽度:动作位 / 关闭位都被顶到右端。
|
|
97
|
+
不写成「每个右侧位各给 margin-left: auto」—— 两个 auto 会平分剩余空间,
|
|
98
|
+
而本族的常驻提示可能同时带动作与关闭位(那样动作钮会被推到卡片中间)。 */
|
|
99
|
+
/* ⚠️ 必须是 `flex: 1 1 auto`,不能写成 `flex: 1`(= basis 0%):父级现在是 `width: fit-content`,
|
|
100
|
+
容器的固有宽按子项的**内容宽**算,basis 为 0 会让文本对容器宽度的贡献退化
|
|
101
|
+
⇒ 容器停在 min-width(240)、长文案照旧折行(改宽度就白改了)。 */
|
|
102
|
+
flex: 1 1 auto;
|
|
103
|
+
min-width: 0;
|
|
104
|
+
margin: 0;
|
|
105
|
+
font-size: var(--ui-toast-text-size);
|
|
106
|
+
line-height: var(--ui-line-body);
|
|
107
|
+
color: var(--ui-base-content);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* 动作位:文本按钮样,顶到最右(面归按钮族时可直接用 `.mh-button--text`,本类只给定位与默认字色) */
|
|
111
|
+
.mh-toast__action {
|
|
112
|
+
margin-left: auto;
|
|
113
|
+
padding: 0;
|
|
114
|
+
border: none;
|
|
115
|
+
background: transparent;
|
|
116
|
+
font-family: inherit;
|
|
117
|
+
font-size: var(--ui-font-caption);
|
|
118
|
+
color: var(--ui-primary);
|
|
119
|
+
cursor: pointer;
|
|
120
|
+
}
|
|
121
|
+
.mh-toast__action:focus-visible {
|
|
122
|
+
outline: 2px solid var(--ui-primary);
|
|
123
|
+
outline-offset: 2px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* ===== 堆叠容器(顶部居中、纵向 8) =====
|
|
127
|
+
⚠️ `z-index` 只对**普通层**有效:原生 `<dialog>.showModal()` 的模态层与 `::backdrop` 在 top layer,
|
|
128
|
+
对它 z-index 再大也没用(toast 会被遮罩压暗)。故本容器带 `popover="manual"` 进 top layer
|
|
129
|
+
—— `showPopover()` 由组件层负责(见 `ToastStack` 的说明)。 */
|
|
130
|
+
.mh-toast-stack {
|
|
131
|
+
position: fixed;
|
|
132
|
+
top: var(--ui-space-6);
|
|
133
|
+
left: 50%;
|
|
134
|
+
transform: translateX(-50%);
|
|
135
|
+
z-index: 1080; /* 普通层里仍压过页面内容;popover 不可用的浏览器靠它兜底 */
|
|
136
|
+
display: flex;
|
|
137
|
+
flex-direction: column;
|
|
138
|
+
gap: var(--ui-space-2);
|
|
139
|
+
align-items: center;
|
|
140
|
+
pointer-events: none; /* 容器不挡点击;每条自己恢复 */
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* `[popover]` 档:清掉 UA 给 popover 的默认,否则会变成「全屏居中、带边框的方块」
|
|
144
|
+
(UA 给的是 `inset: 0; margin: auto; border: solid; padding: .25em; background: Canvas; overflow: auto`)。
|
|
145
|
+
⚠️ `inset: auto` 与 `top` / `left` **必须写在同一条规则里**:只写 `inset: auto` 会把上面那条规则里的
|
|
146
|
+
`left: 50%` 一并压成 auto(同层冲突按顺序/特异性决胜,本块更高),元素就跑到视口左边缘去了。 */
|
|
147
|
+
.mh-toast-stack[popover] {
|
|
148
|
+
inset: auto;
|
|
149
|
+
top: var(--ui-space-6);
|
|
150
|
+
left: 50%;
|
|
151
|
+
transform: translateX(-50%);
|
|
152
|
+
margin: 0;
|
|
153
|
+
border: 0;
|
|
154
|
+
padding: 0;
|
|
155
|
+
background: transparent;
|
|
156
|
+
overflow: visible;
|
|
157
|
+
max-width: none;
|
|
158
|
+
max-height: none;
|
|
159
|
+
}
|
|
160
|
+
.mh-toast-stack > .mh-toast {
|
|
161
|
+
pointer-events: auto;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* ===== 关闭位(`duration=0` 的常驻提示必须给用户一个关掉的入口) =====
|
|
165
|
+
靠右由 `.mh-toast__text` 的弹性占位实现 —— 本件不写 `margin-left: auto`:
|
|
166
|
+
与动作位同时存在时两个 auto 会平分剩余空间,反而把动作钮推到卡片中间 */
|
|
167
|
+
.mh-toast__close {
|
|
168
|
+
display: inline-flex;
|
|
169
|
+
align-items: center;
|
|
170
|
+
justify-content: center;
|
|
171
|
+
flex: none;
|
|
172
|
+
padding: 0;
|
|
173
|
+
border: none;
|
|
174
|
+
background: transparent;
|
|
175
|
+
color: inherit;
|
|
176
|
+
cursor: pointer;
|
|
177
|
+
opacity: 0.7;
|
|
178
|
+
transition: opacity 0.15s ease;
|
|
179
|
+
}
|
|
180
|
+
.mh-toast__close:hover {
|
|
181
|
+
opacity: 1;
|
|
182
|
+
}
|
|
183
|
+
.mh-toast__close-icon {
|
|
184
|
+
flex: none;
|
|
185
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* toast —— 单件令牌(**基础值**)。
|
|
3
|
-
*
|
|
4
|
-
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
|
-
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `toast.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
|
-
*
|
|
12
|
-
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里 —— 它们靠「同一元素上两个
|
|
13
|
-
* 选择器改写同一个令牌」生效,搬到本文件会让档位失效。
|
|
14
|
-
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
15
|
-
*/
|
|
16
|
-
[data-manohub-ui] {
|
|
17
|
-
/* 单件令牌 */
|
|
18
|
-
--ui-toast-width: 240px;
|
|
19
|
-
--ui-toast-width-max: 560px;
|
|
20
|
-
--ui-toast-min-height: 52px;
|
|
21
|
-
--ui-toast-radius: var(--ui-radius-md); /* 规范 r8 */
|
|
22
|
-
--ui-toast-border: var(--ui-base-300); /* 规范 #d8dce6 */
|
|
23
|
-
--ui-toast-gap: var(--ui-space-3); /* 图标与文字间距 12 */
|
|
24
|
-
--ui-toast-icon-size: 18px;
|
|
25
|
-
--ui-toast-text-size: 15px; /* 规范实测(本仓字阶无 15,按实测值给) */
|
|
26
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* toast —— 单件令牌(**基础值**)。
|
|
3
|
+
*
|
|
4
|
+
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
|
+
*
|
|
6
|
+
* ## 抽出说明
|
|
7
|
+
* 本文件从面文件里抽出(原先混写在 `toast.css` 顶部):这些是**基础值**,锚在
|
|
8
|
+
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
+
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
+
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里 —— 它们靠「同一元素上两个
|
|
13
|
+
* 选择器改写同一个令牌」生效,搬到本文件会让档位失效。
|
|
14
|
+
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
15
|
+
*/
|
|
16
|
+
[data-manohub-ui] {
|
|
17
|
+
/* 单件令牌 */
|
|
18
|
+
--ui-toast-width: 240px;
|
|
19
|
+
--ui-toast-width-max: 560px;
|
|
20
|
+
--ui-toast-min-height: 52px;
|
|
21
|
+
--ui-toast-radius: var(--ui-radius-md); /* 规范 r8 */
|
|
22
|
+
--ui-toast-border: var(--ui-base-300); /* 规范 #d8dce6 */
|
|
23
|
+
--ui-toast-gap: var(--ui-space-3); /* 图标与文字间距 12 */
|
|
24
|
+
--ui-toast-icon-size: 18px;
|
|
25
|
+
--ui-toast-text-size: 15px; /* 规范实测(本仓字阶无 15,按实测值给) */
|
|
26
|
+
}
|
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tooltip —— 提示气泡皮肤(与操作层并列组合)。
|
|
3
|
-
*
|
|
4
|
-
* 出处:`@aihub/theme` 的 `playground/components/tooltip.css` 与 `src/components/tooltip.css`
|
|
5
|
-
* (内距 8 / 14、圆角 10、深底反白字、`0 2 8` 黑 15% 投影;引导档另有一套面:蓝渐变底 + 12/14 内距 +
|
|
6
|
-
* `0 2 14` 投影;标题 medium;动作是白色文本按钮;显隐纯淡入、不位移不缩放)。
|
|
7
|
-
*
|
|
8
|
-
* **类名与面文件名同根**:族名 `tooltip` → 类名 `.mh-tooltip*`(与令牌 `--ui-tooltip-*` 同根),
|
|
9
|
-
* 一律 `mh-` 前缀 —— 本包独立发布,不迁就任何下游的既有类名(有用例盯着这条口径)。
|
|
10
|
-
*
|
|
11
|
-
* 显隐与定位全归操作层:宿主态(`.mh-popup-host:hover` / `:focus-within`)切 display、`data-side` / `data-align`
|
|
12
|
-
* 给定位、`.mh-popup-anchor` / `--anchored` 给锚。本件只给面 + 淡入(进出对称)。
|
|
13
|
-
*/
|
|
14
|
-
.mh-tooltip {
|
|
15
|
-
display: inline-block;
|
|
16
|
-
padding: var(--ui-space-2) var(--ui-tooltip-padding-x);
|
|
17
|
-
border-radius: var(--ui-tooltip-radius);
|
|
18
|
-
background: var(--ui-tooltip-bg);
|
|
19
|
-
color: var(--ui-tooltip-text);
|
|
20
|
-
font-size: var(--ui-font-caption);
|
|
21
|
-
line-height: var(--ui-line-body);
|
|
22
|
-
box-shadow: var(--ui-tooltip-shadow);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/* 引导档(自己的面:更亮的内距 + 蓝渐变 + 更大投影) */
|
|
26
|
-
.mh-tooltip--guide {
|
|
27
|
-
padding: var(--ui-space-3) var(--ui-tooltip-padding-x);
|
|
28
|
-
background: var(--ui-tooltip-guide-bg);
|
|
29
|
-
box-shadow: var(--ui-tooltip-guide-shadow);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/* 标题位(medium)与动作位(白色文本按钮,面不另开按钮族之外的类) */
|
|
33
|
-
.mh-tooltip__title {
|
|
34
|
-
font-weight: var(--ui-weight-medium);
|
|
35
|
-
}
|
|
36
|
-
.mh-tooltip__action {
|
|
37
|
-
padding: 0;
|
|
38
|
-
border: none;
|
|
39
|
-
background: transparent;
|
|
40
|
-
font-family: inherit;
|
|
41
|
-
font-size: inherit;
|
|
42
|
-
color: var(--ui-tooltip-text);
|
|
43
|
-
cursor: pointer;
|
|
44
|
-
}
|
|
45
|
-
.mh-tooltip__action:focus-visible {
|
|
46
|
-
outline: 2px solid var(--ui-tooltip-text);
|
|
47
|
-
outline-offset: 2px;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/* ===== 淡入(hover 档:display 由操作层切,本层只管透明度补间,进出对称) =====
|
|
51
|
-
* 规范:提示不位移不缩放,纯淡入淡出 —— `opacity` 与触发态同源绑定。
|
|
52
|
-
* 域定在 `.mh-popup--hover`:静态摆样(不带该档)恒可见,不落收起末帧。 */
|
|
53
|
-
.mh-tooltip.mh-popup--hover {
|
|
54
|
-
opacity: 0;
|
|
55
|
-
transition: opacity 0.2s ease-out;
|
|
56
|
-
}
|
|
57
|
-
.mh-popup-host:hover .mh-tooltip.mh-popup--hover,
|
|
58
|
-
.mh-popup-host:focus-within .mh-tooltip.mh-popup--hover {
|
|
59
|
-
opacity: 1;
|
|
60
|
-
}
|
|
61
|
-
@starting-style {
|
|
62
|
-
.mh-popup-host:hover .mh-tooltip.mh-popup--hover {
|
|
63
|
-
opacity: 0;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/* ===== 点击档(原生 popover)=====
|
|
68
|
-
* 触发器按钮化:清掉 UA 的按钮外观,让它看起来仍是页面里原来那个元素。 */
|
|
69
|
-
.mh-tooltip__trigger {
|
|
70
|
-
display: inline-flex;
|
|
71
|
-
align-items: center;
|
|
72
|
-
gap: var(--ui-space-1);
|
|
73
|
-
padding: 0;
|
|
74
|
-
border: none;
|
|
75
|
-
background: transparent;
|
|
76
|
-
font-family: inherit;
|
|
77
|
-
font-size: inherit;
|
|
78
|
-
line-height: inherit;
|
|
79
|
-
color: inherit;
|
|
80
|
-
cursor: pointer;
|
|
81
|
-
}
|
|
82
|
-
.mh-tooltip__trigger:focus-visible {
|
|
83
|
-
outline: 2px solid var(--ui-primary);
|
|
84
|
-
outline-offset: 2px;
|
|
85
|
-
}
|
|
86
|
-
/* 点击档的气泡要限宽:进了 top layer 就不再受容器约束,长文案会被拉成一整行 */
|
|
87
|
-
.mh-tooltip--click {
|
|
88
|
-
max-width: 280px;
|
|
89
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Tooltip —— 提示气泡皮肤(与操作层并列组合)。
|
|
3
|
+
*
|
|
4
|
+
* 出处:`@aihub/theme` 的 `playground/components/tooltip.css` 与 `src/components/tooltip.css`
|
|
5
|
+
* (内距 8 / 14、圆角 10、深底反白字、`0 2 8` 黑 15% 投影;引导档另有一套面:蓝渐变底 + 12/14 内距 +
|
|
6
|
+
* `0 2 14` 投影;标题 medium;动作是白色文本按钮;显隐纯淡入、不位移不缩放)。
|
|
7
|
+
*
|
|
8
|
+
* **类名与面文件名同根**:族名 `tooltip` → 类名 `.mh-tooltip*`(与令牌 `--ui-tooltip-*` 同根),
|
|
9
|
+
* 一律 `mh-` 前缀 —— 本包独立发布,不迁就任何下游的既有类名(有用例盯着这条口径)。
|
|
10
|
+
*
|
|
11
|
+
* 显隐与定位全归操作层:宿主态(`.mh-popup-host:hover` / `:focus-within`)切 display、`data-side` / `data-align`
|
|
12
|
+
* 给定位、`.mh-popup-anchor` / `--anchored` 给锚。本件只给面 + 淡入(进出对称)。
|
|
13
|
+
*/
|
|
14
|
+
.mh-tooltip {
|
|
15
|
+
display: inline-block;
|
|
16
|
+
padding: var(--ui-space-2) var(--ui-tooltip-padding-x);
|
|
17
|
+
border-radius: var(--ui-tooltip-radius);
|
|
18
|
+
background: var(--ui-tooltip-bg);
|
|
19
|
+
color: var(--ui-tooltip-text);
|
|
20
|
+
font-size: var(--ui-font-caption);
|
|
21
|
+
line-height: var(--ui-line-body);
|
|
22
|
+
box-shadow: var(--ui-tooltip-shadow);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* 引导档(自己的面:更亮的内距 + 蓝渐变 + 更大投影) */
|
|
26
|
+
.mh-tooltip--guide {
|
|
27
|
+
padding: var(--ui-space-3) var(--ui-tooltip-padding-x);
|
|
28
|
+
background: var(--ui-tooltip-guide-bg);
|
|
29
|
+
box-shadow: var(--ui-tooltip-guide-shadow);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* 标题位(medium)与动作位(白色文本按钮,面不另开按钮族之外的类) */
|
|
33
|
+
.mh-tooltip__title {
|
|
34
|
+
font-weight: var(--ui-weight-medium);
|
|
35
|
+
}
|
|
36
|
+
.mh-tooltip__action {
|
|
37
|
+
padding: 0;
|
|
38
|
+
border: none;
|
|
39
|
+
background: transparent;
|
|
40
|
+
font-family: inherit;
|
|
41
|
+
font-size: inherit;
|
|
42
|
+
color: var(--ui-tooltip-text);
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
}
|
|
45
|
+
.mh-tooltip__action:focus-visible {
|
|
46
|
+
outline: 2px solid var(--ui-tooltip-text);
|
|
47
|
+
outline-offset: 2px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* ===== 淡入(hover 档:display 由操作层切,本层只管透明度补间,进出对称) =====
|
|
51
|
+
* 规范:提示不位移不缩放,纯淡入淡出 —— `opacity` 与触发态同源绑定。
|
|
52
|
+
* 域定在 `.mh-popup--hover`:静态摆样(不带该档)恒可见,不落收起末帧。 */
|
|
53
|
+
.mh-tooltip.mh-popup--hover {
|
|
54
|
+
opacity: 0;
|
|
55
|
+
transition: opacity 0.2s ease-out;
|
|
56
|
+
}
|
|
57
|
+
.mh-popup-host:hover .mh-tooltip.mh-popup--hover,
|
|
58
|
+
.mh-popup-host:focus-within .mh-tooltip.mh-popup--hover {
|
|
59
|
+
opacity: 1;
|
|
60
|
+
}
|
|
61
|
+
@starting-style {
|
|
62
|
+
.mh-popup-host:hover .mh-tooltip.mh-popup--hover {
|
|
63
|
+
opacity: 0;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* ===== 点击档(原生 popover)=====
|
|
68
|
+
* 触发器按钮化:清掉 UA 的按钮外观,让它看起来仍是页面里原来那个元素。 */
|
|
69
|
+
.mh-tooltip__trigger {
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
gap: var(--ui-space-1);
|
|
73
|
+
padding: 0;
|
|
74
|
+
border: none;
|
|
75
|
+
background: transparent;
|
|
76
|
+
font-family: inherit;
|
|
77
|
+
font-size: inherit;
|
|
78
|
+
line-height: inherit;
|
|
79
|
+
color: inherit;
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
}
|
|
82
|
+
.mh-tooltip__trigger:focus-visible {
|
|
83
|
+
outline: 2px solid var(--ui-primary);
|
|
84
|
+
outline-offset: 2px;
|
|
85
|
+
}
|
|
86
|
+
/* 点击档的气泡要限宽:进了 top layer 就不再受容器约束,长文案会被拉成一整行 */
|
|
87
|
+
.mh-tooltip--click {
|
|
88
|
+
max-width: 280px;
|
|
89
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* tooltip —— 单件令牌(**基础值**)。
|
|
3
|
-
*
|
|
4
|
-
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
|
-
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `tooltip.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
|
-
*
|
|
12
|
-
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里 —— 它们靠「同一元素上两个
|
|
13
|
-
* 选择器改写同一个令牌」生效,搬到本文件会让档位失效。
|
|
14
|
-
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
15
|
-
*/
|
|
16
|
-
[data-manohub-ui] {
|
|
17
|
-
/* 单件令牌 */
|
|
18
|
-
--ui-tooltip-radius: 10px; /* 规范 r10(本仓圆角刻度最大 8) */
|
|
19
|
-
--ui-tooltip-padding-x: 14px; /* 规范间距档 5 = 14 */
|
|
20
|
-
--ui-tooltip-bg: var(--ui-base-content); /* 深底:规范用深色蒙层色,本仓无深色面令牌,取正文档(与输入说明气泡同一映射) */
|
|
21
|
-
--ui-tooltip-text: var(--ui-base-100); /* 反白字 */
|
|
22
|
-
--ui-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); /* 规范实测值(本仓阴影令牌几何不同族,故按出处给) */
|
|
23
|
-
--ui-tooltip-guide-bg: linear-gradient(180deg, #2e77ff, #2a87ff); /* 规范引导档蓝渐变 */
|
|
24
|
-
--ui-tooltip-guide-shadow: 0 2px 14px rgba(45, 47, 51, 0.2);
|
|
25
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* tooltip —— 单件令牌(**基础值**)。
|
|
3
|
+
*
|
|
4
|
+
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
|
+
*
|
|
6
|
+
* ## 抽出说明
|
|
7
|
+
* 本文件从面文件里抽出(原先混写在 `tooltip.css` 顶部):这些是**基础值**,锚在
|
|
8
|
+
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
+
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
+
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里 —— 它们靠「同一元素上两个
|
|
13
|
+
* 选择器改写同一个令牌」生效,搬到本文件会让档位失效。
|
|
14
|
+
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
15
|
+
*/
|
|
16
|
+
[data-manohub-ui] {
|
|
17
|
+
/* 单件令牌 */
|
|
18
|
+
--ui-tooltip-radius: 10px; /* 规范 r10(本仓圆角刻度最大 8) */
|
|
19
|
+
--ui-tooltip-padding-x: 14px; /* 规范间距档 5 = 14 */
|
|
20
|
+
--ui-tooltip-bg: var(--ui-base-content); /* 深底:规范用深色蒙层色,本仓无深色面令牌,取正文档(与输入说明气泡同一映射) */
|
|
21
|
+
--ui-tooltip-text: var(--ui-base-100); /* 反白字 */
|
|
22
|
+
--ui-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); /* 规范实测值(本仓阴影令牌几何不同族,故按出处给) */
|
|
23
|
+
--ui-tooltip-guide-bg: linear-gradient(180deg, #2e77ff, #2a87ff); /* 规范引导档蓝渐变 */
|
|
24
|
+
--ui-tooltip-guide-shadow: 0 2px 14px rgba(45, 47, 51, 0.2);
|
|
25
|
+
}
|