@manohub/ui 1.0.4 → 1.0.5
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/dist/components/card/index.d.ts +7 -8
- package/dist/components/dialog/index.d.ts +3 -3
- package/dist/components/dialog/index.js +3 -2
- package/dist/components/form/index.d.ts +54 -106
- package/dist/components/input/index.d.ts +35 -50
- package/dist/components/input/index.js +7 -10
- package/dist/components/page/index.d.ts +21 -28
- package/dist/components/panel/index.d.ts +6 -8
- package/dist/components/radio/index.d.ts +11 -14
- package/dist/components/select/index.d.ts +23 -35
- package/dist/components/table/index.d.ts +9 -9
- package/dist/components/tree/index.d.ts +16 -24
- package/dist/services/dialog.d.ts +3 -1
- package/dist/services/dialog.js +2 -0
- package/dist/styles/components/avatar.css +5 -7
- package/dist/styles/components/avatar.tokens.css +4 -9
- package/dist/styles/components/badge.css +3 -6
- package/dist/styles/components/badge.tokens.css +5 -17
- package/dist/styles/components/button.css +33 -57
- package/dist/styles/components/button.tokens.css +5 -14
- package/dist/styles/components/capsule.css +11 -20
- package/dist/styles/components/capsule.tokens.css +4 -9
- package/dist/styles/components/card.css +13 -24
- package/dist/styles/components/checkbox.css +9 -15
- package/dist/styles/components/checkbox.tokens.css +4 -9
- package/dist/styles/components/code-block.css +30 -40
- package/dist/styles/components/code-block.tokens.css +7 -20
- package/dist/styles/components/collapse.css +6 -10
- package/dist/styles/components/collapse.tokens.css +4 -9
- package/dist/styles/components/dialog.css +19 -27
- package/dist/styles/components/dialog.tokens.css +9 -9
- package/dist/styles/components/divider.css +9 -14
- package/dist/styles/components/divider.tokens.css +4 -9
- package/dist/styles/components/drawer.css +12 -16
- package/dist/styles/components/drawer.tokens.css +7 -9
- package/dist/styles/components/filter.css +13 -24
- package/dist/styles/components/form.css +76 -143
- package/dist/styles/components/form.tokens.css +9 -6
- package/dist/styles/components/input.css +80 -166
- package/dist/styles/components/input.tokens.css +5 -13
- package/dist/styles/components/layout.css +13 -29
- package/dist/styles/components/loading.css +6 -10
- package/dist/styles/components/loading.tokens.css +4 -9
- package/dist/styles/components/notice.css +1 -1
- package/dist/styles/components/notice.tokens.css +8 -6
- package/dist/styles/components/notification.css +9 -12
- package/dist/styles/components/notification.tokens.css +4 -12
- package/dist/styles/components/page.css +12 -22
- package/dist/styles/components/pagination.css +10 -15
- package/dist/styles/components/pagination.tokens.css +4 -9
- package/dist/styles/components/query-state.css +1 -1
- package/dist/styles/components/query-state.tokens.css +6 -0
- package/dist/styles/components/radio.css +10 -25
- package/dist/styles/components/radio.tokens.css +4 -9
- package/dist/styles/components/search.css +10 -18
- package/dist/styles/components/select.css +63 -109
- package/dist/styles/components/select.tokens.css +4 -12
- package/dist/styles/components/skeleton.css +4 -7
- package/dist/styles/components/skeleton.tokens.css +4 -9
- package/dist/styles/components/steps.css +9 -12
- package/dist/styles/components/steps.tokens.css +4 -12
- package/dist/styles/components/switch.css +5 -8
- package/dist/styles/components/switch.tokens.css +4 -9
- package/dist/styles/components/tabbar.css +10 -11
- package/dist/styles/components/tabbar.tokens.css +4 -9
- package/dist/styles/components/table.css +52 -86
- package/dist/styles/components/table.tokens.css +5 -6
- package/dist/styles/components/tag.css +13 -23
- package/dist/styles/components/tag.tokens.css +5 -11
- package/dist/styles/components/text.css +11 -23
- package/dist/styles/components/toast.css +11 -18
- package/dist/styles/components/toast.tokens.css +6 -9
- package/dist/styles/components/tooltip.css +9 -11
- package/dist/styles/components/tooltip.tokens.css +5 -9
- package/dist/styles/components/tree.css +14 -27
- package/dist/styles/components/tree.tokens.css +5 -6
- package/dist/styles/components/upload.css +8 -13
- package/dist/styles/components/upload.tokens.css +4 -9
- package/dist/styles/index.css +27 -50
- package/dist/styles/operations/collapse.css +12 -25
- package/dist/styles/operations/popup.css +41 -79
- package/dist/styles/operations/tabs.css +14 -32
- package/dist/styles/reset.css +0 -61
- package/package.json +2 -2
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Steps —— 步骤条(横向节点式 + 条形燕尾段式 + 进度条)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* 出处:规范(节点 30 圆、字号 14、节点与标题**同行**、标题间距 12;连线是 2px **点线** + 末端 6px 方盒
|
|
5
|
+
* 转 45° 的 `>` 折角箭头、最小长 58.383、弹性撑开;段 140×30、相邻**重叠 10**、整条 inline-flex 收宽;
|
|
6
|
+
* 进度条高 9)。
|
|
7
|
+
* ⚠️ **当前步之后那一段才转蓝**(已完成步之后仍是灰线)—— 规范实测的取向,别做成"已完成段全蓝"。
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* 状态来源是**单一来源**(组件下发的 `--done` / `--current` / `--active`):步骤序号不是原生元素能表达的
|
|
10
|
+
* 状态,故这里没有「三源等价」可言 —— 与勾选 / 开关那类不同,别照抄那份写法。
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* 连线用**独立空元素**(`.mh-steps__connector`)而不是 `.mh-steps__step + ::after`:折角箭头要撑开弹性余量,
|
|
15
|
-
* 且 N 个节点配 N-1 条线,独立元素才能让两端节点各自保持自己的标题宽度。
|
|
16
|
-
*
|
|
17
|
-
* 可点档(`clickable`)下步元素是**原生 `<button>`** —— 归零、焦点环、禁用态见文件中间那节。
|
|
12
|
+
* 连线用**独立空元素**(`.mh-steps__connector`)而不是 `+ ::after`:折角箭头要撑开弹性余量,且 N 个节点
|
|
13
|
+
* 配 N-1 条线,独立元素才能让两端节点各自保持自己的标题宽度。
|
|
14
|
+
* 可点档(`clickable`)下步元素是**原生 `<button>`** —— 归零 / 焦点环 / 禁用态见文件中间那节。
|
|
18
15
|
*/
|
|
19
16
|
|
|
20
17
|
/* 几何只挂在 node 档根件上:令牌在同名 `.tokens.css`(锚 `[data-manohub-ui]`),几何若跟着挂会给 bar / 进度条多套一层 flex */
|
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* steps ——
|
|
2
|
+
* steps —— 单件令牌(**基础值**;只服务本件,故不随主题进 `@manohub/theme`)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `steps.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
|
-
*
|
|
12
|
-
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里 —— 它们靠「同一元素上两个
|
|
13
|
-
* 选择器改写同一个令牌」生效,搬到本文件会让档位失效。
|
|
14
|
-
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
4
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
5
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
6
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
15
7
|
*/
|
|
16
8
|
[data-manohub-ui] {
|
|
17
9
|
/* bar 档与独立进度条都是**自己的根节点**(无 `.mh-steps` 祖先)—— 靠容器锚取到值 */
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Switch —— 开关(两档尺寸:表格档 36×18 / 表单档 50×24)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* 文字与轨道间距 10;禁用整体降透明 0.5)。
|
|
7
|
-
*
|
|
8
|
-
* **结构固定**:`input` →(可选)`__label` → `__track > __knob` —— 轨道用**通用兄弟** `~` 命中,
|
|
9
|
-
* 因为文字可以夹在开关与轨道之间(规范的结构如此),用相邻兄弟 `+` 会漏。
|
|
10
|
-
*
|
|
11
|
-
* 状态三源等价:原生 `input:checked`(零 JS)/ 组件下发 `[data-state='checked']` / 静态档 `.is-checked`。
|
|
4
|
+
* 出处:规范(轨道 36×18、滑块 14、内距 2;表单档 50×24、滑块 18、内距 3;未选中底 Ne04、选中主色;
|
|
5
|
+
* 文字与轨道间距 10;禁用整体降透明 0.5)。
|
|
12
6
|
*
|
|
7
|
+
* **结构固定**:`input` →(可选)`__label` → `__track > __knob` —— 轨道用**通用兄弟** `~` 命中
|
|
8
|
+
* (文字可以夹在开关与轨道之间,用相邻兄弟 `+` 会漏)。
|
|
9
|
+
* 状态三源等价:原生 `input:checked`(零 JS)/ `[data-state='checked']` / 静态档 `.is-checked`。
|
|
13
10
|
* **焦点环画在可见轨道上**(隐身开关没有可见焦点),外扩 2px —— 轨道自身无边框,内缩会吃掉滑块。
|
|
14
11
|
*/
|
|
15
12
|
.mh-switch {
|
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
5
|
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `switch.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
9
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
10
|
+
*/
|
|
16
11
|
[data-manohub-ui] {
|
|
17
12
|
/* 单件令牌 */
|
|
18
13
|
--ui-switch-track-w: 36px; /* 规范表格档 */
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TabBar —— 页签条(下划线指示条 + 禁用 + 「更多」页签)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* 滑过 `#529dff` / 选中 `#4e94ff` / 禁用 Te07)。
|
|
4
|
+
* 出处:规范(区高 26 / 项间距 30 / 字号 14 / 指示条高 3、距文字 3、两端与文字同宽 / 未选字 `#446a9f` /
|
|
5
|
+
* 滑过 `#529dff` / 选中 `#4e94ff` / 禁用 Te07)。
|
|
7
6
|
*
|
|
8
7
|
* 三条必须照做的几何(做错一眼就歪):
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* 1. **不画轨线**:页签区没有底边框,选中只由指示条表达(加轨线还会扣走区高 1px)—— 「像不像页签」
|
|
9
|
+
* 全靠那道 3px 指示条,不靠一条横线。
|
|
10
|
+
* 2. **指示条是每项自己的伪元素**(`::after`),不是共享滑块:所有项的指示条常驻,未选
|
|
11
|
+
* `opacity:0; scale:.75`、选中转 `opacity:1; scale:1` —— "滑过去"的观感来自这两个属性的过渡
|
|
12
|
+
* (`display` 直切补间不了)。
|
|
14
13
|
* 3. **文字贴底**:项高 26 = 文字框 20 + 留白 3 + 指示条 3,故 `align-items:flex-end` +
|
|
15
|
-
* `padding-bottom = indicator-gap + indicator-height
|
|
14
|
+
* `padding-bottom = indicator-gap + indicator-height`(少了这段内距,指示条会压在字上)。
|
|
16
15
|
*
|
|
17
|
-
* **三源等价**(本仓通例):原生 `:checked +` /
|
|
18
|
-
*
|
|
16
|
+
* **三源等价**(本仓通例):原生 `:checked +` / `[data-state='active']` / 静态档 `.is-selected` ——
|
|
17
|
+
* 原生态给零 JS 用法,组件态给受控值。
|
|
19
18
|
*/
|
|
20
19
|
.mh-tabbar {
|
|
21
20
|
display: flex;
|
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
5
|
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `tabbar.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
9
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
10
|
+
*/
|
|
16
11
|
[data-manohub-ui] {
|
|
17
12
|
/* 单件令牌 */
|
|
18
13
|
--ui-tabbar-height: var(--ui-control-height-md); /* 标准控件高 32 */
|
|
@@ -1,48 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Table —— 表格(表头/行/单元格类型 + 行态四档 + 固定表头与列 + 批量栏与合计行)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* -
|
|
8
|
-
* 节距 31 = 30 + 1px 线)/ 表头底 `#f1f2f5`(= `--ui-base-200`)/ 行线 `#e6e6e6`
|
|
9
|
-
* (每行 `DROP_SHADOW(0,1,b0,#e6e6e6)`)/ 外框 `#e6e6e6 @1` / 选中行底 `#dbe9ff`
|
|
10
|
-
* (= `--ui-primary-subtle`)。
|
|
11
|
-
*
|
|
12
|
-
* ⚠️ 改前这里写的是 44 / 46 —— 与上面两套来源**都不符**,是历史遗留值(文件头注释一直写着 34/30,
|
|
13
|
-
* 是代码没跟上),本轮已归位。
|
|
14
|
-
*
|
|
15
|
-
* **单元格左右内距保持 16(`--ui-space-4`)**:设计稿里可量的只有「勾选框距表左 20」这一处,
|
|
16
|
-
* 而它量的是**内容盒**、不是单元格盒(勾选列 40 宽 + 居中时内容盒落在 13 处),无法唯一反推内距,
|
|
17
|
-
* 故不作推测性改动。勾选列宽 `40` 也不动,理由同此。
|
|
4
|
+
* 出处(两套来源在关键几何上一致,故没有取舍余地):设计稿《MH后台-0911》表头 **34**
|
|
5
|
+
* (`0:3962`)/ 行 **30**(`0:3956`–`0:3961`,节距 31 = 30 + 1px 线)/ 表头底 `#f1f2f5`
|
|
6
|
+
* (= `--ui-base-200`)/ 行线 `#e6e6e6` / 外框 `#e6e6e6 @1` / 选中行底 `#dbe9ff`
|
|
7
|
+
* (= `--ui-primary-subtle`);规范侧同值(勾选列 40 / 拖拽线 3×40 / 合计行 40)。
|
|
18
8
|
*
|
|
19
9
|
* 行态:表头底 `--ui-base-200` + 字 `--ui-base-content-muted` + 中粗 / 外框 1px `--ui-base-300` /
|
|
20
10
|
* 斑马与禁用 `--ui-base-200` / 滑过 `--ui-primary-weak` / 选中 `--ui-primary-subtle`(**只底色**)。
|
|
21
11
|
*
|
|
12
|
+
* ⚠️ **单元格左右内距保持 16(`--ui-space-4`)**:设计稿可量的只有「勾选框距表左 20」,而它量的是
|
|
13
|
+
* **内容盒**(勾选列 40 宽 + 居中时内容盒落在 13 处),无法唯一反推内距,故不作推测性改动。
|
|
14
|
+
*
|
|
22
15
|
* 四条必须照做的**结构**决定(做错就与规范不是一回事):
|
|
23
16
|
*
|
|
24
|
-
* 1.
|
|
25
|
-
*
|
|
26
|
-
* `--borderless` 才切回 `collapse` 并去掉外框。
|
|
17
|
+
* 1. **边框模型**:默认是外框 + 表头下分割线 + 每行底线(末行去线)⇒ `border-collapse: separate`
|
|
18
|
+
* + `border-spacing: 0`(圆角只在 separate 下渲染得出来);`--borderless` 才切回 `collapse` 并去外框。
|
|
27
19
|
* **三条线之外的边一律显式清零**(`border: 0` 写在 `th` / `td` / `tr` 上,不是冗余):特异性只在
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* ——
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* 故 `:has(...)` 这条路径照旧成立;`Checkbox` 的框体带 `data-state`(checked / indeterminate),
|
|
37
|
-
* 半选与选中都走它自己的样式数据,表格这边不再画方块。
|
|
38
|
-
* **选择器必须限定在勾选列内**(`.mh-table__col-check`,勾选列单元格自带的类):不限列时,
|
|
39
|
-
* 功能列里任何「内部本来就是 checkbox」的件都会命中 —— `Switch` 的内部正是 `<input type="checkbox">`,
|
|
40
|
-
* 于是「启用」这类**功能值**会把整行点亮。功能值与行选择语义不同,视觉必须分开(否则一张表里
|
|
41
|
-
* 开关一开就整行变色,且用户无从判断那到底表示什么)。
|
|
20
|
+
* **同一属性**上分胜负,宿主给单元格/行下的整圈边框(典型 markdown 正文的 `.vp-doc th { border }`)
|
|
21
|
+
* 不会被「没写的边」顶掉,否则与表外框、行交界处各叠成 2px,还凭空多出列分隔线。
|
|
22
|
+
* 2. **斑马纹是显式类**(`.is-striped`)而非 `:nth-child(even)`:表里可以插分组行,`nth-child` 会整表错位。
|
|
23
|
+
* 3. **行选中由行内的选择控件驱动**(`tr:has(.mh-table__col-check input:checked)`):零 JS 也能选中;
|
|
24
|
+
* 组件态给 `[data-state='selected']`、静态档给 `.is-selected` —— 三源等价。勾选列复用 `Checkbox`
|
|
25
|
+
* **组件**(它内部才是真实 `<input type="checkbox">`,故 `:has()` 成立;框体与半选状态归它自己的样式)。
|
|
26
|
+
* ⚠️ **选择器必须限定在勾选列内**:不限列时功能列里任何「内部本来就是 checkbox」的件都会命中
|
|
27
|
+
* —— `Switch` 内部正是 `<input type="checkbox">`,于是「启用」这类**功能值**会把整行点亮。
|
|
42
28
|
* 4. **固定列必须自带底**(`background: var(--ui-base-100)`):它是 sticky 的,不遮挡就会被滚过的单元格透出。
|
|
43
29
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
30
|
+
* **不做**:排序与列宽拖拽的**算法**(规范只给 `↕` 字形与 3×40 拖拽线两处视觉),也不做空态/加载态
|
|
31
|
+
* (三态归 `QueryState`)。
|
|
46
32
|
*/
|
|
47
33
|
.mh-table-wrapper {
|
|
48
34
|
overflow: auto;
|
|
@@ -90,29 +76,24 @@
|
|
|
90
76
|
}
|
|
91
77
|
|
|
92
78
|
/* ===== 固定布局档(`layout="fixed"`)=====
|
|
93
|
-
* 列宽由 `<colgroup>`
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* 调用方要知道的:表体**默认不换行**(nowrap + 省略号,见下条);要换行的列显式标 `wrap: true`。 */
|
|
79
|
+
* 列宽由 `<colgroup>` 下发,本档只把布局算法换成 `fixed`:列宽从此**受声明约束、不再被内容撑破**
|
|
80
|
+
* ⇒ 长文本不会把表格撑得比容器还宽,「百分比 / 数字权重」可以吃满容器 + 严格按比例。
|
|
81
|
+
* 调用方要知道的:表体**默认不换行**(见下条);要换行的列显式标 `wrap: true`。 */
|
|
98
82
|
.mh-table--fixed {
|
|
99
83
|
table-layout: fixed;
|
|
100
84
|
}
|
|
101
|
-
/* `fixed`
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* ⚠️ **只在本档翻默认**:`auto` 档的列宽由内容计算,td 默认 nowrap 会让长文本列不再靠换行收敛、
|
|
107
|
-
* 表格更容易撑破容器 —— 与本档「表头裁切只加在 fixed」同一条判据(见上一条注释)。 */
|
|
85
|
+
/* `fixed` 档表体默认**不换行**。两条依据:① 列宽已被 `<colgroup>` 钉死,换行救不回内容、只会顶高行高
|
|
86
|
+
* (`td` 的 `height` 只是下限);② 换行必然伴随**从字符间断字** —— 实测序号列窄到装不下两位数时,
|
|
87
|
+
* `overflow-wrap: anywhere` 把 `10` 拆成 `1` / `0` 两行,行高 30 → **49**。
|
|
88
|
+
* 于是「换行」改成**列级主动选择**(`TableColumn.wrap: true`,见 `.mh-table__cell-wrap`)。
|
|
89
|
+
* ⚠️ **只在本档翻默认**:`auto` 档的列宽由内容计算,td 默认 nowrap 会让长文本列不再靠换行收敛。 */
|
|
108
90
|
.mh-table--fixed tbody td {
|
|
109
91
|
overflow: hidden;
|
|
110
92
|
text-overflow: ellipsis;
|
|
111
93
|
white-space: nowrap;
|
|
112
94
|
}
|
|
113
|
-
/* 前导列(勾选 / 展开)在 auto 下靠内容把 40px 的「建议宽」撑出去;fixed
|
|
114
|
-
|
|
115
|
-
装不下 16px 的勾选框(实测该列溢出 19px,还会被上面的 `overflow: hidden` 裁掉)。
|
|
95
|
+
/* 前导列(勾选 / 展开)在 auto 下靠内容把 40px 的「建议宽」撑出去;fixed 下是硬宽,而标准左右内距
|
|
96
|
+
各 16px ⇒ 可用内容只有 40 − 32 = 8px,装不下 16px 的勾选框(实测该列溢出 19px、还会被裁掉)。
|
|
116
97
|
故本档把前导列的内距清零,靠既有的 `text-align: center` 居中。 */
|
|
117
98
|
.mh-table--fixed .mh-table__col-check,
|
|
118
99
|
.mh-table--fixed .mh-table__col-expand {
|
|
@@ -120,11 +101,8 @@
|
|
|
120
101
|
}
|
|
121
102
|
|
|
122
103
|
/* ===== 表头 =====
|
|
123
|
-
* `border: 0` **不是冗余**:本件只画「表外框 + 表头分割线 +
|
|
124
|
-
*
|
|
125
|
-
* (典型:markdown 正文的 `.vp-doc th, .vp-doc td { border: 1px solid }`)不会被任何组件声明顶掉,
|
|
126
|
-
* 于是单元格四边各来一条:与表外框叠成 2px、每行交界处上一行底线 + 本行顶线叠成 2px,还凭空多出列分隔线。
|
|
127
|
-
* 这三条不是「装饰」而是边框模型的一部分,故与 `border-bottom` 写在同一规则里(0-1-2 压过 `.vp-doc th` 0-1-1)。 */
|
|
104
|
+
* `border: 0` **不是冗余**:本件只画「表外框 + 表头分割线 + 每行底线」三条,其余边必须显式清零
|
|
105
|
+
* (理由见文件头第 1 条)。与 `border-bottom` 写在同一规则里:0-1-2 压过 `.vp-doc th` 的 0-1-1。 */
|
|
128
106
|
.mh-table thead th {
|
|
129
107
|
height: var(--ui-table-head-height);
|
|
130
108
|
padding: 0 var(--ui-table-padding-x);
|
|
@@ -140,8 +118,7 @@
|
|
|
140
118
|
.mh-table thead th.is-hover {
|
|
141
119
|
background: var(--ui-table-head-bg-hover);
|
|
142
120
|
}
|
|
143
|
-
/* 固定档下表头也要裁切:列宽已被 colgroup
|
|
144
|
-
(实测溢出 97px),必须靠这两条收住。`white-space: nowrap` 上面已有。
|
|
121
|
+
/* 固定档下表头也要裁切:列宽已被 colgroup 钉死,长表头文字会**溢出到相邻列**(实测溢出 97px)。
|
|
145
122
|
⚠️ 只在本档加 —— auto 档下表头参与列宽计算,加裁切会改动老页面的列宽分配。 */
|
|
146
123
|
.mh-table--fixed thead th {
|
|
147
124
|
overflow: hidden;
|
|
@@ -159,8 +136,7 @@
|
|
|
159
136
|
.mh-table tbody tr {
|
|
160
137
|
border: 0;
|
|
161
138
|
}
|
|
162
|
-
/* 单元格的边框模型:**全清零 +
|
|
163
|
-
* 特异性挡不住未声明的三边,会让行线与表外框全部叠成双线)。 */
|
|
139
|
+
/* 单元格的边框模型:**全清零 + 只留底线**(理由同表头处) */
|
|
164
140
|
.mh-table tbody td {
|
|
165
141
|
height: var(--ui-table-row-height);
|
|
166
142
|
padding: var(--ui-space-1) var(--ui-table-padding-x);
|
|
@@ -180,9 +156,8 @@
|
|
|
180
156
|
.mh-table tbody tr.is-hover td {
|
|
181
157
|
background: var(--ui-table-row-hover);
|
|
182
158
|
}
|
|
183
|
-
/*
|
|
184
|
-
|
|
185
|
-
看起来像"两行线叠在一起")。要恢复下沿就加回 inset 阴影 + 对应令牌。
|
|
159
|
+
/* 选中态**只有底色**:规范样张那条 2px 主色下沿(Au01)不取 —— 行线只由单元格底边提供,
|
|
160
|
+
额外压一条 `box-shadow: inset 0 -2px` 会盖住底边线,看起来像「两行线叠在一起」。
|
|
186
161
|
第三条路径限定在勾选列内(见文件头第 3 条):不限列会被功能列的 Switch 命中。 */
|
|
187
162
|
.mh-table tbody tr.is-selected td,
|
|
188
163
|
.mh-table tbody tr[data-state='selected'] td,
|
|
@@ -209,7 +184,7 @@
|
|
|
209
184
|
}
|
|
210
185
|
.mh-table__tree-caret {
|
|
211
186
|
display: inline-flex;
|
|
212
|
-
width: var(--ui-font-icon); /*
|
|
187
|
+
width: var(--ui-font-icon); /* 常规图标档 */
|
|
213
188
|
height: var(--ui-font-icon);
|
|
214
189
|
margin-right: var(--ui-space-1);
|
|
215
190
|
color: var(--ui-base-content-subtle);
|
|
@@ -220,8 +195,7 @@
|
|
|
220
195
|
}
|
|
221
196
|
|
|
222
197
|
/* ===== 列 ===== */
|
|
223
|
-
/* 勾选列:只负责「多宽 +
|
|
224
|
-
方块尺寸 / 圆角 / 三态配色全归 `checkbox.css`(表格不再给这一列任何选中态样式) */
|
|
198
|
+
/* 勾选列:只负责「多宽 + 居中」——尺寸 / 圆角 / 三态配色全归 `checkbox.css` */
|
|
225
199
|
.mh-table__col-check {
|
|
226
200
|
width: var(--ui-table-col-check);
|
|
227
201
|
text-align: center;
|
|
@@ -230,12 +204,10 @@
|
|
|
230
204
|
text-align: right;
|
|
231
205
|
}
|
|
232
206
|
|
|
233
|
-
/* ⚠️
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
* 只用补 `text-align` —— `thead th` 没声明过其它会被这些类覆盖的属性(宽度/内距不冲突)。
|
|
238
|
-
* 写法沿用 `th.mh-table__th-group`(组头居中)那条既有先例。 */
|
|
207
|
+
/* ⚠️ **表头要把对齐重声明一遍**:下面几条与 `.mh-table__cell-center` / `--cell-amount` 都只有
|
|
208
|
+
* **0-1-0**,而 `.mh-table thead th { text-align: left }` 是 **0-1-1** ⇒ 表头被强拉成左对齐、与表体不齐
|
|
209
|
+
* (实测勾选列表头左留白 0 / 右留白 26,错位 13px;右对齐列的标题也被拉到左边)。
|
|
210
|
+
* 只补 `text-align`(`thead th` 没声明过其它会被这些类覆盖的属性)。写法沿用 `th.mh-table__th-group`。 */
|
|
239
211
|
.mh-table thead th.mh-table__col-check,
|
|
240
212
|
.mh-table thead th.mh-table__cell-center {
|
|
241
213
|
text-align: center;
|
|
@@ -256,9 +228,8 @@
|
|
|
256
228
|
background: var(--ui-table-head-bg);
|
|
257
229
|
}
|
|
258
230
|
/* `--sticky-head`:表头钉顶。
|
|
259
|
-
* ⚠️ 选择器必须带 `tr`(0-1-3):文件后段「拖拽线的定位上下文」那条
|
|
260
|
-
*
|
|
261
|
-
* ⇒ 会把 `position: sticky` 覆盖掉,`stickyHead` 静默失效(0.6.0 起就存在,0.9.0 复核仍在)。
|
|
231
|
+
* ⚠️ 选择器必须带 `tr`(0-1-3):文件后段「拖拽线的定位上下文」那条 `.mh-table thead th` 是 **0-1-2**,
|
|
232
|
+
* 与不写 `tr` 的写法同特异性且在后 ⇒ 会覆盖 `position: sticky`,`stickyHead` 静默失效。
|
|
262
233
|
* `sticky` 同样是定位元素,照样给表头里的拖拽线当包含块,故加 `tr` 不损失原能力。 */
|
|
263
234
|
.mh-table--sticky-head thead tr th {
|
|
264
235
|
position: sticky;
|
|
@@ -283,10 +254,8 @@
|
|
|
283
254
|
text-decoration: underline;
|
|
284
255
|
}
|
|
285
256
|
/* 列级**放开换行**(列定义里 `wrap: true` 时下发,只作用于表体 `td`;表头始终 nowrap)。
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
* ⚠️ 选择器必须带 `td`(0-1-3):`.mh-table--fixed tbody td` 是 **0-1-2**,
|
|
289
|
-
* 单个类(0-1-0)压不过它(同 §表头对齐那条的先例)。 */
|
|
257
|
+
* 缺省不换行在 `.mh-table--fixed tbody td` 里 —— 本档才翻默认,故这里把「换行三件套」与兜底一并给回。
|
|
258
|
+
* ⚠️ 选择器必须带 `td`(0-1-3):`.mh-table--fixed tbody td` 是 **0-1-2**,单个类压不过它。 */
|
|
290
259
|
.mh-table tbody td.mh-table__cell-wrap {
|
|
291
260
|
white-space: normal;
|
|
292
261
|
overflow: visible;
|
|
@@ -313,11 +282,10 @@
|
|
|
313
282
|
color: var(--ui-error);
|
|
314
283
|
}
|
|
315
284
|
|
|
316
|
-
/*
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
* 列宽要守得住就开 `layout="fixed"`(列宽由 `<colgroup>` 决定,不再被内容撑破)。 */
|
|
285
|
+
/* 单元格里的编辑控件:**表格面不为它写规则** —— 编辑格由调用方在 `#cell` 插槽里自己摆
|
|
286
|
+
* (`Input` / `Select` / `NumberInput`,外层可套 `Form.Item`),框 / 内距 / 错误档全沿用 form / input
|
|
287
|
+
* 两族既有口径。唯一要提醒的是**列宽**:`table-layout: auto` 下输入框的最小内容宽会把窄列顶开,
|
|
288
|
+
* 列宽要守得住就开 `layout="fixed"`。 */
|
|
321
289
|
|
|
322
290
|
/* 状态点(语义四档) */
|
|
323
291
|
.mh-table__status-dot {
|
|
@@ -357,16 +325,14 @@
|
|
|
357
325
|
.mh-table__sort--active {
|
|
358
326
|
color: var(--ui-primary);
|
|
359
327
|
}
|
|
360
|
-
/* 槽位尺寸:常规图标一律取全局图标档(**不写 `.mh-table__sort-icon`** ——
|
|
361
|
-
面上为排序指示写规则会被契约拦下,见下方注释) */
|
|
328
|
+
/* 槽位尺寸:常规图标一律取全局图标档(**不写 `.mh-table__sort-icon`** —— 那是只作朝向锚点的结构类) */
|
|
362
329
|
.mh-table__sort > svg {
|
|
363
330
|
width: var(--ui-font-icon);
|
|
364
331
|
height: var(--ui-font-icon);
|
|
365
332
|
}
|
|
366
333
|
/* 排序朝向:**方位在字形里**(升序 `chevron-up` / 降序与未排序 `chevron-down`,未排走浅色、已排随
|
|
367
|
-
`.mh-table__sort--active` 主色)—— 本层零 `transform`,不走"把别的图标旋转 90° 冒充上下"
|
|
368
|
-
|
|
369
|
-
当前朝向),面上无声明,登记在测试契约的结构锚点台账里。 */
|
|
334
|
+
`.mh-table__sort--active` 主色)—— 本层零 `transform`,不走"把别的图标旋转 90° 冒充上下"的老路。
|
|
335
|
+
`mh-table__sort-icon` 与 `--asc` / `--desc` 只作**状态锚点**,面上无声明。 */
|
|
370
336
|
.mh-table__drag-line {
|
|
371
337
|
position: absolute;
|
|
372
338
|
top: 50%;
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* 批量栏 `.mh-table__batch` 是包裹层的子元素(与 `<table>` 同级)—— 令牌锚在容器上,
|
|
3
3
|
* 批量栏的高度 / 内距 / 底色照样取得到
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
*/
|
|
5
|
+
*
|
|
6
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
7
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
8
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
9
|
+
*/
|
|
11
10
|
[data-manohub-ui] {
|
|
12
11
|
/* 单件令牌 */
|
|
13
12
|
--ui-table-font-size: var(--ui-font-caption);
|
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tag —— **`Badge` 的交互封装**(可关闭 / 可新增)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* **本件不画框**(与 `select.css` 同一条纪律):底 / 边 / 圆角 / 高度 / 字号 / 内距 / 档位**全归 `badge` 面**
|
|
5
|
+
* —— 徽标是「只读标记」的唯一样式源,本件只往它上面加交互位。本文件只有四样东西:
|
|
6
|
+
* ① `.mh-tag` 内容与操作位之间的间距(比 `Badge` 的通用 gap 紧一档);② `.mh-tag__close` /
|
|
7
|
+
* `__confirm` 两个操作位(14 圆底 + 悬停蒙层;图标 12 属有意保留的专属尺寸);③ `.mh-tag--add`
|
|
8
|
+
* 新增入口(虚线框 + 中性字,滑过转主色);④ `.mh-tag--editing` / `__input` 编辑态(框归 input 面,
|
|
9
|
+
* 这里只给**窄**宽度,与确认位沿用 `.mh-tag` 的间距)。
|
|
5
10
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
11
|
+
* **特异性:两位本件类,不靠导入顺序**。`--add` 那组写成 `.mh-tag.mh-tag--add`(0-2-0),压过 badge 面的
|
|
12
|
+
* 单类规则(0-1-0)—— 两条备选都被否掉:引 `.mh-badge`(面文件的类名必须与文件词根同根)、靠导入顺序
|
|
13
|
+
* (顺序会被人无意调整,两位类权重不会)。`--add` 转发给 `Badge` 的档是 `plain`(底透明、字取中性),
|
|
14
|
+
* 需要覆盖的只剩 `border-color` 与字色。
|
|
10
15
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* 4. `.mh-tag--editing` / `.mh-tag__input`:新增档点开后的编辑态(输入框的框归 input 面,
|
|
15
|
-
* 这里只给**窄**宽度;输入框 ↔ 确认位沿用 `.mh-tag` 的间距)。
|
|
16
|
-
*
|
|
17
|
-
* ## 特异性:两位本件类,不靠导入顺序
|
|
18
|
-
*
|
|
19
|
-
* `--add` 那组写成 **`.mh-tag.mh-tag--add`(0-2-0)**,压过 badge 面的单类规则(0-1-0)。
|
|
20
|
-
* 两条备选都被否掉:
|
|
21
|
-
* ① 引用 `.mh-badge`(面文件的类名必须与文件词根同根,跨族引用要进豁免台账);
|
|
22
|
-
* ② 靠 `styles/index.css` 的导入顺序(badge 面在前、本面在后)—— 顺序会被人无意调整,
|
|
23
|
-
* 两位类权重不会。`--add` 转发给 `Badge` 的档是 `plain`(底透明、字取中性),
|
|
24
|
-
* 需要覆盖的只剩 `border-color` 与字色。
|
|
25
|
-
*
|
|
26
|
-
* ⚠️ 新增档的根是**真实 `<button>`**(走 `Badge` 的 `as="button"`):按钮自带外观的三样
|
|
27
|
-
* (`border` / `background` / `padding`)由 badge 面提供(`contract-reset.spec.ts` 按标签审计),
|
|
28
|
-
* `font-family: inherit` 也在那边补 —— 本件只管虚线框与悬停色。
|
|
16
|
+
* ⚠️ 新增档的根是**真实 `<button>`**(走 `Badge` 的 `as="button"`):按钮自带外观的三样(`border` /
|
|
17
|
+
* `background` / `padding`)与 `font-family: inherit` 都由 badge 面提供(`contract-reset.spec.ts` 按标签
|
|
18
|
+
* 审计),本件只管虚线框与悬停色。
|
|
29
19
|
*/
|
|
30
20
|
|
|
31
21
|
/* ===== 内容 ↔ 关闭位:比 Badge 的通用 gap(6,给前置点的)紧一档 ===== */
|
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* tag —— 单件令牌(**基础值**)。
|
|
3
3
|
*
|
|
4
|
-
* 本件是 **`Badge` 的交互封装**(可关闭 / 可新增):底 / 边 / 圆角 / 高度 / 字号 / 内距 /
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* ## 抽出说明
|
|
10
|
-
* 这些是**基础值**,锚在 `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,
|
|
11
|
-
* 因此**任何落在容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设。
|
|
12
|
-
*
|
|
13
|
-
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效)。
|
|
14
|
-
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
4
|
+
* 本件是 **`Badge` 的交互封装**(可关闭 / 可新增):底 / 边 / 圆角 / 高度 / 字号 / 内距 / 档位全归
|
|
5
|
+
* `badge` 面,故这里只剩**交互位自己**的两个值 —— 文件这么短是**有意**的(从前它带着一整套与 `badge`
|
|
6
|
+
* 重复的几何、同一高度还各走一个圆角档,那批令牌已随收口撤除)。
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ 档位改写留在面文件的修饰符块里(搬走会让档位失效);新增组件登记两处:本文件 + `src/styles/index.css`。
|
|
15
9
|
*/
|
|
16
10
|
[data-manohub-ui] {
|
|
17
11
|
/* 内容 ↔ 操作位:4(`Badge` 的通用 gap 是 6,那是给前置点的;操作位紧一档更像「贴在字尾」) */
|
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Text —— 文本排版(字号 / 行高 / 字重 / 语义色 / 等宽 / 截断)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* (契约 L1-5 禁 `font-*` / `color`),每个应用都要留一条定版例外登记。
|
|
4
|
+
* 本文件是那套 `--ui-font-*` / `--ui-line-*` / `--ui-weight-*` 档位令牌的**第一个消费者**:在此之前它们
|
|
5
|
+
* 只有定义、没有件,于是「卡片里的文字层级」在应用侧无合规落点(L1-5 禁 `font-*` / `color`)。
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 与 `Notice` / `Dialog` 的语义档同一张表:`success` / `warning` 取 `-strong` 档
|
|
7
|
+
* 取色口径:与 `Notice` / `Dialog` 的语义档同一张表 —— `success` / `warning` 取 `-strong` 档
|
|
11
8
|
* (直接用 500 档主色在浅底上对比度不足,属可读性缺陷)。
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* `--mh-text-
|
|
16
|
-
*
|
|
17
|
-
* 故**不传 tone 的文字也不会被强行染色**(`tone` 缺省档是 `default`,与正文色一致)。
|
|
18
|
-
*
|
|
19
|
-
* ## 截断
|
|
20
|
-
*
|
|
21
|
-
* `--truncate`(单行)与 `--clamp`(N 行)都要 `min-width: 0` 才能在被 flex 拉伸的子项里生效
|
|
22
|
-
* (flex 子项的 `min-width` 默认是 `auto`,不给就会把容器撑开而不是省略)。
|
|
23
|
-
* N 行的行数经 `--mh-text-lines` 下发(`-webkit-line-clamp` 只吃值,不能由类名表达行数)。
|
|
9
|
+
* **tone 走内部变量**:`--mh-text-tone-color` 由修饰符类赋值、由根类消费 ⇒「一条规则管颜色」而不是七条
|
|
10
|
+
* 各写一次 `color`;默认值 `inherit`,故**不传 tone 的文字也不会被强行染色**。
|
|
11
|
+
* **截断**:`--truncate`(单行)与 `--clamp`(N 行)都要 `min-width: 0` 才能在 flex 拉伸的子项里生效
|
|
12
|
+
* (flex 子项的 `min-width` 默认是 `auto`,不给就会把容器撑开而不是省略);行数经 `--mh-text-lines` 下发
|
|
13
|
+
* (`-webkit-line-clamp` 只吃值,不能由类名表达行数)。
|
|
24
14
|
*/
|
|
25
15
|
|
|
26
16
|
.mh-text {
|
|
27
17
|
color: var(--mh-text-tone-color, inherit);
|
|
28
18
|
}
|
|
29
19
|
|
|
30
|
-
/* 浏览器给 `h1`-`h6`
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
档位类在本文件里更靠后、且同特异性,故 `--heading` / `--semibold` 一类照样覆盖它
|
|
34
|
-
(静态页里手写 `<h2 class="mh-text">` 且不给档位时,也仍是「正文字号 + 继承字重」)。 */
|
|
20
|
+
/* 浏览器给 `h1`-`h6` 的字阶(`1.5em` + 粗体)只该是**语义**,视觉由 `size` / `weight` 定 —— 归零搬到本件
|
|
21
|
+
(元素级基线不再代管:那条在 Tailwind 的层外,会压住消费方的 `text-*` 工具类)。只点名标题标签,
|
|
22
|
+
`strong` / `b` 的加粗是它们唯一的表达、不能被归零。档位类在本文件里更靠后且同特异性,故照样覆盖它。 */
|
|
35
23
|
.mh-text:where(h1, h2, h3, h4, h5, h6) {
|
|
36
24
|
font-size: inherit;
|
|
37
25
|
font-weight: inherit;
|
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Toast —— 消息提示(一行提示 + 语义图标 + 可选动作;可堆叠)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* 出处:规范(宽 240 / 最大 560 / 最小高 52 / r8 / 1px 描边 / 内距 10 16 10 24 / 图标 18 圆 /
|
|
5
|
+
* 图标与文字间距 12 / 投影 `0 2 12` 黑 10% / 正文 15;loading 样张 240x93 且图标顶对齐;带动作样张宽 360)。
|
|
6
|
+
* ⚠️ **与规范的一处有意偏差**:loading 那张是「多行加载文案」的尺寸,照搬成最小高会让单行提示撑出一张
|
|
7
|
+
* 上挤下空的空卡 —— 故本档高度回归常态(52 起、内容多时自然撑高),只保留图标差异(透明底 + 主色转圈)。
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* 三件事必须与规范一致(容易做错):① **图标是「圆形色底 + 白色字形」**,不是一个字形图标
|
|
10
|
+
* (只有 loading 例外:透明底 + 2px 主色描边、**上边留缺口**造成转圈感);② **动作按钮靠
|
|
11
|
+
* `margin-left: auto` 顶到最右**,不是跟在文字后面;③ **转圈动画的键名归本族**(`mh-toast-spin`)——
|
|
12
|
+
* 动画名是全局标识,加 `mh-` 前缀以免与页面上别的库撞名。
|
|
11
13
|
*
|
|
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 间距 —— 位置与堆叠是
|
|
14
|
+
* 零 JS 能表达全部静态形态 + 转圈;**必须 JS**:自动消失计时、多条出队、loading 换结果态(都在组件层)。
|
|
15
|
+
* 堆叠容器(`.mh-toast-stack`)是随本族给的薄皮:定在视口顶部居中、纵向 8 间距 —— 位置与堆叠是
|
|
23
16
|
* 「一族怎么摆」的事,做成类比让每个应用各写一份靠谱。
|
|
24
17
|
*/
|
|
25
18
|
.mh-toast {
|
|
@@ -34,7 +27,7 @@
|
|
|
34
27
|
min-width: var(--ui-toast-width);
|
|
35
28
|
max-width: var(--ui-toast-width-max);
|
|
36
29
|
min-height: var(--ui-toast-min-height);
|
|
37
|
-
padding: var(--ui-
|
|
30
|
+
padding: var(--ui-toast-padding);
|
|
38
31
|
border: 1px solid var(--ui-toast-border);
|
|
39
32
|
border-radius: var(--ui-toast-radius);
|
|
40
33
|
background: var(--ui-base-100);
|