@manohub/ui 0.10.5 → 1.0.1
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/input/bordered.d.ts +15 -0
- package/dist/components/input/bordered.js +8 -0
- package/dist/components/input/index.d.ts +82 -31
- package/dist/components/input/index.js +16 -6
- package/dist/components/input/number-input.d.ts +239 -0
- package/dist/components/input/number-input.js +240 -0
- package/dist/components/select/index.d.ts +19 -0
- package/dist/components/select/index.js +10 -0
- package/dist/components/select/select-tree.d.ts +11 -0
- package/dist/components/select/select-tree.js +6 -0
- package/dist/components/select/select-trigger.d.ts +17 -0
- package/dist/components/select/select-trigger.js +9 -0
- package/dist/components/table/index.d.ts +85 -10
- package/dist/components/table/index.js +38 -9
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -0
- 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 +456 -425
- package/dist/styles/components/form.tokens.css +19 -15
- package/dist/styles/components/input.css +659 -538
- 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 +510 -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 -82
- package/package.json +62 -62
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 批量栏 `.mh-table__batch` 是包裹层的子元素(与 `<table>` 同级)—— 令牌锚在容器上,
|
|
3
|
-
* 批量栏的高度 / 内距 / 底色照样取得到
|
|
4
|
-
*
|
|
5
|
-
* ## 抽出说明
|
|
6
|
-
* 本文件从面文件里抽出:这些是**基础值**,锚在 `[data-manohub-ui]`(跨包唯一作用域锚,
|
|
7
|
-
* 由入口层无条件写在应用容器上)—— 任何落在容器里的分件都取得到值,不再依赖
|
|
8
|
-
* 「声明在某个组件根类上」这条脆弱假设。
|
|
9
|
-
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(拆开会让档位失效)。
|
|
10
|
-
*/
|
|
11
|
-
[data-manohub-ui] {
|
|
12
|
-
/* 单件令牌 */
|
|
13
|
-
--ui-table-font-size: var(--ui-font-caption);
|
|
14
|
-
/* 尺寸档三档 = 30 / 38 / 46(sm / md / lg),本节是**基础值 = 中档(md)**,
|
|
15
|
-
与 Button(24 / 32 / 40)、Tree(基础 34、紧凑 28)同一条库内约定:
|
|
16
|
-
基础令牌承担 md,`.mh-<件>--<档>` 只改写另两档。
|
|
17
|
-
⚠️ 两个档位改写分别在面文件的 `.mh-table--xs`(sm)与 `.mh-table--lg` 里,别写回本文件。 */
|
|
18
|
-
--ui-table-head-height: 38px; /* 中档(md)表头 = 行高 */
|
|
19
|
-
--ui-table-row-height: 38px; /* 中档(md)行高 */
|
|
20
|
-
--ui-table-line-height: var(--ui-line-caption); /* 单元格行高 = 正文档的 13px 配对(default 20 / farris 18) */
|
|
21
|
-
--ui-table-head-bg: var(--ui-base-200); /* 设计 #f1f2f5 */
|
|
22
|
-
--ui-table-head-text: var(--ui-base-content-muted);
|
|
23
|
-
--ui-table-head-bg-hover: var(--ui-primary-weak);
|
|
24
|
-
--ui-table-head-divider: var(--ui-base-300);
|
|
25
|
-
--ui-table-head-divider-width: 0 1px 0 0; /* 多级表头里列与列的分隔 */
|
|
26
|
-
--ui-table-text: var(--ui-base-content);
|
|
27
|
-
--ui-table-border: var(--ui-base-300);
|
|
28
|
-
--ui-table-radius: var(--ui-radius-md); /* 容器档:设计为 7(两档之间),按「表格是容器」取 md 并登记偏差 */
|
|
29
|
-
--ui-table-row-alt: var(--ui-base-200);
|
|
30
|
-
--ui-table-row-hover: var(--ui-primary-weak);
|
|
31
|
-
--ui-table-row-selected: var(--ui-primary-subtle); /* 设计 #dbe9ff;与滑过档分家(改前两者同值 ⇒ 滑过与选中不可辨) */
|
|
32
|
-
--ui-table-row-disabled: var(--ui-base-200);
|
|
33
|
-
--ui-table-link: var(--ui-primary);
|
|
34
|
-
--ui-table-padding-x: var(--ui-space-4); /* 单元格左右内距 16 */
|
|
35
|
-
--ui-table-col-check: 40px;
|
|
36
|
-
--ui-table-drag-line: var(--ui-primary);
|
|
37
|
-
--ui-table-drag-line-width: 3px;
|
|
38
|
-
--ui-table-drag-line-height: 40px;
|
|
39
|
-
--ui-table-status-dot: 6px;
|
|
40
|
-
--ui-table-summary-height: 40px;
|
|
41
|
-
--ui-table-batch-height: 34px;
|
|
42
|
-
--ui-table-tree-indent: 38px;
|
|
43
|
-
--ui-table-scroll-height: 132px; /* 规范样张值 */
|
|
44
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 批量栏 `.mh-table__batch` 是包裹层的子元素(与 `<table>` 同级)—— 令牌锚在容器上,
|
|
3
|
+
* 批量栏的高度 / 内距 / 底色照样取得到
|
|
4
|
+
*
|
|
5
|
+
* ## 抽出说明
|
|
6
|
+
* 本文件从面文件里抽出:这些是**基础值**,锚在 `[data-manohub-ui]`(跨包唯一作用域锚,
|
|
7
|
+
* 由入口层无条件写在应用容器上)—— 任何落在容器里的分件都取得到值,不再依赖
|
|
8
|
+
* 「声明在某个组件根类上」这条脆弱假设。
|
|
9
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(拆开会让档位失效)。
|
|
10
|
+
*/
|
|
11
|
+
[data-manohub-ui] {
|
|
12
|
+
/* 单件令牌 */
|
|
13
|
+
--ui-table-font-size: var(--ui-font-caption);
|
|
14
|
+
/* 尺寸档三档 = 30 / 38 / 46(sm / md / lg),本节是**基础值 = 中档(md)**,
|
|
15
|
+
与 Button(24 / 32 / 40)、Tree(基础 34、紧凑 28)同一条库内约定:
|
|
16
|
+
基础令牌承担 md,`.mh-<件>--<档>` 只改写另两档。
|
|
17
|
+
⚠️ 两个档位改写分别在面文件的 `.mh-table--xs`(sm)与 `.mh-table--lg` 里,别写回本文件。 */
|
|
18
|
+
--ui-table-head-height: 38px; /* 中档(md)表头 = 行高 */
|
|
19
|
+
--ui-table-row-height: 38px; /* 中档(md)行高 */
|
|
20
|
+
--ui-table-line-height: var(--ui-line-caption); /* 单元格行高 = 正文档的 13px 配对(default 20 / farris 18) */
|
|
21
|
+
--ui-table-head-bg: var(--ui-base-200); /* 设计 #f1f2f5 */
|
|
22
|
+
--ui-table-head-text: var(--ui-base-content-muted);
|
|
23
|
+
--ui-table-head-bg-hover: var(--ui-primary-weak);
|
|
24
|
+
--ui-table-head-divider: var(--ui-base-300);
|
|
25
|
+
--ui-table-head-divider-width: 0 1px 0 0; /* 多级表头里列与列的分隔 */
|
|
26
|
+
--ui-table-text: var(--ui-base-content);
|
|
27
|
+
--ui-table-border: var(--ui-base-300);
|
|
28
|
+
--ui-table-radius: var(--ui-radius-md); /* 容器档:设计为 7(两档之间),按「表格是容器」取 md 并登记偏差 */
|
|
29
|
+
--ui-table-row-alt: var(--ui-base-200);
|
|
30
|
+
--ui-table-row-hover: var(--ui-primary-weak);
|
|
31
|
+
--ui-table-row-selected: var(--ui-primary-subtle); /* 设计 #dbe9ff;与滑过档分家(改前两者同值 ⇒ 滑过与选中不可辨) */
|
|
32
|
+
--ui-table-row-disabled: var(--ui-base-200);
|
|
33
|
+
--ui-table-link: var(--ui-primary);
|
|
34
|
+
--ui-table-padding-x: var(--ui-space-4); /* 单元格左右内距 16 */
|
|
35
|
+
--ui-table-col-check: 40px;
|
|
36
|
+
--ui-table-drag-line: var(--ui-primary);
|
|
37
|
+
--ui-table-drag-line-width: 3px;
|
|
38
|
+
--ui-table-drag-line-height: 40px;
|
|
39
|
+
--ui-table-status-dot: 6px;
|
|
40
|
+
--ui-table-summary-height: 40px;
|
|
41
|
+
--ui-table-batch-height: 34px;
|
|
42
|
+
--ui-table-tree-indent: 38px;
|
|
43
|
+
--ui-table-scroll-height: 132px; /* 规范样张值 */
|
|
44
|
+
}
|
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tag —— **`Badge` 的交互封装**(可关闭 / 可新增)。
|
|
3
|
-
*
|
|
4
|
-
* ## 本件不画框(与 `select.css` 同一条纪律)
|
|
5
|
-
*
|
|
6
|
-
* 底 / 边 / 圆角 / 高度 / 字号 / 内距 / 档位**全归 `badge` 面** —— 徽标是「只读标记」的唯一样式源,
|
|
7
|
-
* 本件只往它上面加两个交互位。2026-09-30 之前这里有一整套与 `badge` 重复的几何
|
|
8
|
-
* (`--ui-tag-bg` / `-height` / `-font-size` / `-radius` …):同一个高度上两件各走一个圆角档、
|
|
9
|
-
* 同一个「浅主色标签底」两件给了两个色 —— 那批规则已整体撤除,本文件只剩三样东西:
|
|
10
|
-
*
|
|
11
|
-
* 1. `.mh-tag`:内容与操作位之间的间距(比 `Badge` 的通用 gap 紧一档);
|
|
12
|
-
* 2. `.mh-tag__close` / `.mh-tag__confirm`:两个操作位(14 圆底 + 悬停蒙层;图标 12 属有意保留的专属尺寸);
|
|
13
|
-
* 3. `.mh-tag--add`:新增入口形态(虚线框 + 中性字,滑过转主色);
|
|
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` 也在那边补 —— 本件只管虚线框与悬停色。
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
/* ===== 内容 ↔ 关闭位:比 Badge 的通用 gap(6,给前置点的)紧一档 ===== */
|
|
32
|
-
.mh-tag {
|
|
33
|
-
gap: var(--ui-tag-gap);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/* ===== 操作位:关闭位(受控:只回调,见 TSX)与添加位(新增档)=====
|
|
37
|
-
两位共享「按钮重置 + 圆底 + 悬停过渡」,**尺寸与字形各按自己的量级走**:
|
|
38
|
-
- 关闭位:14 触区 + **12 字形**(贴小控件的字形,见 `contract-icon-direction` 的白名单)——
|
|
39
|
-
它是标签内的轻量移除操作,不该跟内容抢视觉重量;
|
|
40
|
-
- 添加位:**常规图标档** `--ui-font-icon`(default 16 / farris 14)+ 由它派生的触区
|
|
41
|
-
(`+ 4`:16→20 / 14→18)—— 它是这一档的**主操作**(一枚 +),与入口的加号同档。
|
|
42
|
-
触区用 `calc()` 而不是写死 20:farris 的图标档是 14,写死就会让字形顶满圆底。
|
|
43
|
-
关闭位右端不再回收内距:旧写法是「本件左右内距 12 + 关闭位负外边距 4」凑出 8,
|
|
44
|
-
现在 `Badge` 的 md 内距就是 8,负外边距一并撤掉。 */
|
|
45
|
-
.mh-tag__close,
|
|
46
|
-
.mh-tag__confirm {
|
|
47
|
-
display: inline-flex;
|
|
48
|
-
align-items: center;
|
|
49
|
-
justify-content: center;
|
|
50
|
-
flex: none;
|
|
51
|
-
padding: 0;
|
|
52
|
-
border: none;
|
|
53
|
-
border-radius: var(--ui-radius-full);
|
|
54
|
-
background: transparent;
|
|
55
|
-
color: inherit;
|
|
56
|
-
cursor: pointer;
|
|
57
|
-
opacity: 0.65;
|
|
58
|
-
transition: opacity 0.15s ease, background-color 0.15s ease;
|
|
59
|
-
}
|
|
60
|
-
.mh-tag__close {
|
|
61
|
-
width: var(--ui-tag-close-size);
|
|
62
|
-
height: var(--ui-tag-close-size);
|
|
63
|
-
}
|
|
64
|
-
.mh-tag__close > svg {
|
|
65
|
-
flex: none;
|
|
66
|
-
width: 12px;
|
|
67
|
-
height: 12px;
|
|
68
|
-
}
|
|
69
|
-
.mh-tag__close:hover {
|
|
70
|
-
opacity: 1;
|
|
71
|
-
background: rgb(0 0 0 / 0.08);
|
|
72
|
-
}
|
|
73
|
-
/* 添加位是**肯定的**操作:触区与字形都跟图标档走,色取主色、悬停给主色浅底 */
|
|
74
|
-
.mh-tag__confirm {
|
|
75
|
-
width: calc(var(--ui-font-icon) + var(--ui-space-1));
|
|
76
|
-
height: calc(var(--ui-font-icon) + var(--ui-space-1));
|
|
77
|
-
color: var(--ui-primary);
|
|
78
|
-
}
|
|
79
|
-
.mh-tag__confirm > svg {
|
|
80
|
-
flex: none;
|
|
81
|
-
width: var(--ui-font-icon);
|
|
82
|
-
height: var(--ui-font-icon);
|
|
83
|
-
}
|
|
84
|
-
.mh-tag__confirm:hover {
|
|
85
|
-
opacity: 1;
|
|
86
|
-
background: var(--ui-primary-weak);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/* ===== 编辑态(`shape="add"` 点入口后)=====
|
|
90
|
-
这一档**没有标记片**:输入框的框归 input 面(本件只给宽度),确认位是第二个操作位。
|
|
91
|
-
宽度令牌设在 `Input` 的**表壳**上(`Input` 的 `class` 落表壳,见它的「属性落点」)。 */
|
|
92
|
-
.mh-tag--editing {
|
|
93
|
-
display: inline-flex;
|
|
94
|
-
align-items: center;
|
|
95
|
-
}
|
|
96
|
-
/* ⚠️ **两位类选择器**(0-2-0),不是单类:`Input` 的表壳自带宽度规则(`.mh-input__wrap`,0-1-0),
|
|
97
|
-
而 `styles/index.css` 里 **`input.css` 排在本文件之后**(表单与选择控件那一组)—— 单类写法在
|
|
98
|
-
同特异性下会被它压掉,实测输入框渲染成 201px 而不是这一档要的 120px(「窄输入」名存实亡)。 */
|
|
99
|
-
.mh-tag .mh-tag__input {
|
|
100
|
-
width: var(--ui-tag-input-width);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/* ===== 新增入口形态(`shape="add"`)=====
|
|
104
|
-
转发给 `Badge` 的是 `plain`(透明底 + 中性字),这里把框换成虚线、字压成中性档、
|
|
105
|
-
悬停 / 按下转主色 —— 与旧 `--add` 档同一套观感。 */
|
|
106
|
-
.mh-tag.mh-tag--add {
|
|
107
|
-
border-style: dashed;
|
|
108
|
-
border-color: var(--ui-line-dashed); /* 虚线线色:口径「实线 base-300 / 虚线 base-400」 */
|
|
109
|
-
background: transparent;
|
|
110
|
-
color: var(--ui-base-content-muted);
|
|
111
|
-
cursor: pointer;
|
|
112
|
-
font-family: inherit;
|
|
113
|
-
}
|
|
114
|
-
/* 加号走常规图标档(`--ui-font-icon`):组件里不写死 `size`(见 AGENTS 第 7 条) */
|
|
115
|
-
.mh-tag.mh-tag--add > svg {
|
|
116
|
-
flex: none;
|
|
117
|
-
width: var(--ui-font-icon);
|
|
118
|
-
height: var(--ui-font-icon);
|
|
119
|
-
}
|
|
120
|
-
.mh-tag.mh-tag--add:hover {
|
|
121
|
-
border-color: var(--ui-primary-hover);
|
|
122
|
-
color: var(--ui-primary);
|
|
123
|
-
}
|
|
124
|
-
.mh-tag.mh-tag--add:active {
|
|
125
|
-
border-color: var(--ui-primary);
|
|
126
|
-
color: var(--ui-primary);
|
|
127
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Tag —— **`Badge` 的交互封装**(可关闭 / 可新增)。
|
|
3
|
+
*
|
|
4
|
+
* ## 本件不画框(与 `select.css` 同一条纪律)
|
|
5
|
+
*
|
|
6
|
+
* 底 / 边 / 圆角 / 高度 / 字号 / 内距 / 档位**全归 `badge` 面** —— 徽标是「只读标记」的唯一样式源,
|
|
7
|
+
* 本件只往它上面加两个交互位。2026-09-30 之前这里有一整套与 `badge` 重复的几何
|
|
8
|
+
* (`--ui-tag-bg` / `-height` / `-font-size` / `-radius` …):同一个高度上两件各走一个圆角档、
|
|
9
|
+
* 同一个「浅主色标签底」两件给了两个色 —— 那批规则已整体撤除,本文件只剩三样东西:
|
|
10
|
+
*
|
|
11
|
+
* 1. `.mh-tag`:内容与操作位之间的间距(比 `Badge` 的通用 gap 紧一档);
|
|
12
|
+
* 2. `.mh-tag__close` / `.mh-tag__confirm`:两个操作位(14 圆底 + 悬停蒙层;图标 12 属有意保留的专属尺寸);
|
|
13
|
+
* 3. `.mh-tag--add`:新增入口形态(虚线框 + 中性字,滑过转主色);
|
|
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` 也在那边补 —— 本件只管虚线框与悬停色。
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/* ===== 内容 ↔ 关闭位:比 Badge 的通用 gap(6,给前置点的)紧一档 ===== */
|
|
32
|
+
.mh-tag {
|
|
33
|
+
gap: var(--ui-tag-gap);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* ===== 操作位:关闭位(受控:只回调,见 TSX)与添加位(新增档)=====
|
|
37
|
+
两位共享「按钮重置 + 圆底 + 悬停过渡」,**尺寸与字形各按自己的量级走**:
|
|
38
|
+
- 关闭位:14 触区 + **12 字形**(贴小控件的字形,见 `contract-icon-direction` 的白名单)——
|
|
39
|
+
它是标签内的轻量移除操作,不该跟内容抢视觉重量;
|
|
40
|
+
- 添加位:**常规图标档** `--ui-font-icon`(default 16 / farris 14)+ 由它派生的触区
|
|
41
|
+
(`+ 4`:16→20 / 14→18)—— 它是这一档的**主操作**(一枚 +),与入口的加号同档。
|
|
42
|
+
触区用 `calc()` 而不是写死 20:farris 的图标档是 14,写死就会让字形顶满圆底。
|
|
43
|
+
关闭位右端不再回收内距:旧写法是「本件左右内距 12 + 关闭位负外边距 4」凑出 8,
|
|
44
|
+
现在 `Badge` 的 md 内距就是 8,负外边距一并撤掉。 */
|
|
45
|
+
.mh-tag__close,
|
|
46
|
+
.mh-tag__confirm {
|
|
47
|
+
display: inline-flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: center;
|
|
50
|
+
flex: none;
|
|
51
|
+
padding: 0;
|
|
52
|
+
border: none;
|
|
53
|
+
border-radius: var(--ui-radius-full);
|
|
54
|
+
background: transparent;
|
|
55
|
+
color: inherit;
|
|
56
|
+
cursor: pointer;
|
|
57
|
+
opacity: 0.65;
|
|
58
|
+
transition: opacity 0.15s ease, background-color 0.15s ease;
|
|
59
|
+
}
|
|
60
|
+
.mh-tag__close {
|
|
61
|
+
width: var(--ui-tag-close-size);
|
|
62
|
+
height: var(--ui-tag-close-size);
|
|
63
|
+
}
|
|
64
|
+
.mh-tag__close > svg {
|
|
65
|
+
flex: none;
|
|
66
|
+
width: 12px;
|
|
67
|
+
height: 12px;
|
|
68
|
+
}
|
|
69
|
+
.mh-tag__close:hover {
|
|
70
|
+
opacity: 1;
|
|
71
|
+
background: rgb(0 0 0 / 0.08);
|
|
72
|
+
}
|
|
73
|
+
/* 添加位是**肯定的**操作:触区与字形都跟图标档走,色取主色、悬停给主色浅底 */
|
|
74
|
+
.mh-tag__confirm {
|
|
75
|
+
width: calc(var(--ui-font-icon) + var(--ui-space-1));
|
|
76
|
+
height: calc(var(--ui-font-icon) + var(--ui-space-1));
|
|
77
|
+
color: var(--ui-primary);
|
|
78
|
+
}
|
|
79
|
+
.mh-tag__confirm > svg {
|
|
80
|
+
flex: none;
|
|
81
|
+
width: var(--ui-font-icon);
|
|
82
|
+
height: var(--ui-font-icon);
|
|
83
|
+
}
|
|
84
|
+
.mh-tag__confirm:hover {
|
|
85
|
+
opacity: 1;
|
|
86
|
+
background: var(--ui-primary-weak);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* ===== 编辑态(`shape="add"` 点入口后)=====
|
|
90
|
+
这一档**没有标记片**:输入框的框归 input 面(本件只给宽度),确认位是第二个操作位。
|
|
91
|
+
宽度令牌设在 `Input` 的**表壳**上(`Input` 的 `class` 落表壳,见它的「属性落点」)。 */
|
|
92
|
+
.mh-tag--editing {
|
|
93
|
+
display: inline-flex;
|
|
94
|
+
align-items: center;
|
|
95
|
+
}
|
|
96
|
+
/* ⚠️ **两位类选择器**(0-2-0),不是单类:`Input` 的表壳自带宽度规则(`.mh-input__wrap`,0-1-0),
|
|
97
|
+
而 `styles/index.css` 里 **`input.css` 排在本文件之后**(表单与选择控件那一组)—— 单类写法在
|
|
98
|
+
同特异性下会被它压掉,实测输入框渲染成 201px 而不是这一档要的 120px(「窄输入」名存实亡)。 */
|
|
99
|
+
.mh-tag .mh-tag__input {
|
|
100
|
+
width: var(--ui-tag-input-width);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* ===== 新增入口形态(`shape="add"`)=====
|
|
104
|
+
转发给 `Badge` 的是 `plain`(透明底 + 中性字),这里把框换成虚线、字压成中性档、
|
|
105
|
+
悬停 / 按下转主色 —— 与旧 `--add` 档同一套观感。 */
|
|
106
|
+
.mh-tag.mh-tag--add {
|
|
107
|
+
border-style: dashed;
|
|
108
|
+
border-color: var(--ui-line-dashed); /* 虚线线色:口径「实线 base-300 / 虚线 base-400」 */
|
|
109
|
+
background: transparent;
|
|
110
|
+
color: var(--ui-base-content-muted);
|
|
111
|
+
cursor: pointer;
|
|
112
|
+
font-family: inherit;
|
|
113
|
+
}
|
|
114
|
+
/* 加号走常规图标档(`--ui-font-icon`):组件里不写死 `size`(见 AGENTS 第 7 条) */
|
|
115
|
+
.mh-tag.mh-tag--add > svg {
|
|
116
|
+
flex: none;
|
|
117
|
+
width: var(--ui-font-icon);
|
|
118
|
+
height: var(--ui-font-icon);
|
|
119
|
+
}
|
|
120
|
+
.mh-tag.mh-tag--add:hover {
|
|
121
|
+
border-color: var(--ui-primary-hover);
|
|
122
|
+
color: var(--ui-primary);
|
|
123
|
+
}
|
|
124
|
+
.mh-tag.mh-tag--add:active {
|
|
125
|
+
border-color: var(--ui-primary);
|
|
126
|
+
color: var(--ui-primary);
|
|
127
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* tag —— 单件令牌(**基础值**)。
|
|
3
|
-
*
|
|
4
|
-
* 本件是 **`Badge` 的交互封装**(可关闭 / 可新增):底 / 边 / 圆角 / 高度 / 字号 / 内距 / 档位
|
|
5
|
-
* 全归 `badge` 面,故这里只剩**交互位自己**的两个值 —— 文件这么短是**有意**的:
|
|
6
|
-
* 2026-09-30 之前它带着一整套与 `badge` 重复的几何(`--ui-tag-bg` / `-height` / `-font-size` …),
|
|
7
|
-
* 同一高度上还各走一个圆角档,那批令牌已随收口撤除。
|
|
8
|
-
*
|
|
9
|
-
* ## 抽出说明
|
|
10
|
-
* 这些是**基础值**,锚在 `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,
|
|
11
|
-
* 因此**任何落在容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设。
|
|
12
|
-
*
|
|
13
|
-
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效)。
|
|
14
|
-
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
15
|
-
*/
|
|
16
|
-
[data-manohub-ui] {
|
|
17
|
-
/* 内容 ↔ 操作位:4(`Badge` 的通用 gap 是 6,那是给前置点的;操作位紧一档更像「贴在字尾」) */
|
|
18
|
-
--ui-tag-gap: var(--ui-space-1);
|
|
19
|
-
/* 关闭位触区;字形 12 属「贴小控件的字形」,见 contract-icon-direction。
|
|
20
|
-
添加位(新增档)**不占令牌**:它的触区与字形都按常规图标档 `--ui-font-icon` 派生。 */
|
|
21
|
-
--ui-tag-close-size: 14px;
|
|
22
|
-
/* 新增档的**窄**输入框宽度:在容器上重设即可加宽(`--ui-tag-input-width: 200px`) */
|
|
23
|
-
--ui-tag-input-width: 120px;
|
|
24
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* tag —— 单件令牌(**基础值**)。
|
|
3
|
+
*
|
|
4
|
+
* 本件是 **`Badge` 的交互封装**(可关闭 / 可新增):底 / 边 / 圆角 / 高度 / 字号 / 内距 / 档位
|
|
5
|
+
* 全归 `badge` 面,故这里只剩**交互位自己**的两个值 —— 文件这么短是**有意**的:
|
|
6
|
+
* 2026-09-30 之前它带着一整套与 `badge` 重复的几何(`--ui-tag-bg` / `-height` / `-font-size` …),
|
|
7
|
+
* 同一高度上还各走一个圆角档,那批令牌已随收口撤除。
|
|
8
|
+
*
|
|
9
|
+
* ## 抽出说明
|
|
10
|
+
* 这些是**基础值**,锚在 `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,
|
|
11
|
+
* 因此**任何落在容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设。
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效)。
|
|
14
|
+
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
15
|
+
*/
|
|
16
|
+
[data-manohub-ui] {
|
|
17
|
+
/* 内容 ↔ 操作位:4(`Badge` 的通用 gap 是 6,那是给前置点的;操作位紧一档更像「贴在字尾」) */
|
|
18
|
+
--ui-tag-gap: var(--ui-space-1);
|
|
19
|
+
/* 关闭位触区;字形 12 属「贴小控件的字形」,见 contract-icon-direction。
|
|
20
|
+
添加位(新增档)**不占令牌**:它的触区与字形都按常规图标档 `--ui-font-icon` 派生。 */
|
|
21
|
+
--ui-tag-close-size: 14px;
|
|
22
|
+
/* 新增档的**窄**输入框宽度:在容器上重设即可加宽(`--ui-tag-input-width: 200px`) */
|
|
23
|
+
--ui-tag-input-width: 120px;
|
|
24
|
+
}
|