@manohub/ui 1.0.3 → 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.
Files changed (84) hide show
  1. package/dist/components/card/index.d.ts +7 -8
  2. package/dist/components/dialog/index.d.ts +3 -3
  3. package/dist/components/dialog/index.js +3 -2
  4. package/dist/components/form/index.d.ts +54 -106
  5. package/dist/components/input/index.d.ts +35 -50
  6. package/dist/components/input/index.js +7 -10
  7. package/dist/components/page/index.d.ts +21 -28
  8. package/dist/components/panel/index.d.ts +6 -8
  9. package/dist/components/radio/index.d.ts +11 -14
  10. package/dist/components/select/index.d.ts +23 -35
  11. package/dist/components/table/index.d.ts +9 -9
  12. package/dist/components/tree/index.d.ts +16 -24
  13. package/dist/services/dialog.d.ts +3 -1
  14. package/dist/services/dialog.js +2 -0
  15. package/dist/styles/components/avatar.css +5 -7
  16. package/dist/styles/components/avatar.tokens.css +4 -9
  17. package/dist/styles/components/badge.css +3 -6
  18. package/dist/styles/components/badge.tokens.css +5 -17
  19. package/dist/styles/components/button.css +33 -57
  20. package/dist/styles/components/button.tokens.css +5 -14
  21. package/dist/styles/components/capsule.css +11 -20
  22. package/dist/styles/components/capsule.tokens.css +4 -9
  23. package/dist/styles/components/card.css +13 -24
  24. package/dist/styles/components/checkbox.css +9 -15
  25. package/dist/styles/components/checkbox.tokens.css +4 -9
  26. package/dist/styles/components/code-block.css +30 -40
  27. package/dist/styles/components/code-block.tokens.css +7 -20
  28. package/dist/styles/components/collapse.css +6 -10
  29. package/dist/styles/components/collapse.tokens.css +4 -9
  30. package/dist/styles/components/dialog.css +19 -27
  31. package/dist/styles/components/dialog.tokens.css +9 -9
  32. package/dist/styles/components/divider.css +9 -14
  33. package/dist/styles/components/divider.tokens.css +4 -9
  34. package/dist/styles/components/drawer.css +12 -16
  35. package/dist/styles/components/drawer.tokens.css +7 -9
  36. package/dist/styles/components/filter.css +13 -24
  37. package/dist/styles/components/form.css +76 -143
  38. package/dist/styles/components/form.tokens.css +9 -6
  39. package/dist/styles/components/input.css +80 -166
  40. package/dist/styles/components/input.tokens.css +5 -13
  41. package/dist/styles/components/layout.css +13 -29
  42. package/dist/styles/components/loading.css +6 -10
  43. package/dist/styles/components/loading.tokens.css +4 -9
  44. package/dist/styles/components/notice.css +1 -1
  45. package/dist/styles/components/notice.tokens.css +8 -6
  46. package/dist/styles/components/notification.css +9 -12
  47. package/dist/styles/components/notification.tokens.css +4 -12
  48. package/dist/styles/components/page.css +12 -22
  49. package/dist/styles/components/pagination.css +10 -15
  50. package/dist/styles/components/pagination.tokens.css +4 -9
  51. package/dist/styles/components/query-state.css +1 -1
  52. package/dist/styles/components/query-state.tokens.css +6 -0
  53. package/dist/styles/components/radio.css +10 -25
  54. package/dist/styles/components/radio.tokens.css +4 -9
  55. package/dist/styles/components/search.css +10 -18
  56. package/dist/styles/components/select.css +63 -109
  57. package/dist/styles/components/select.tokens.css +4 -12
  58. package/dist/styles/components/skeleton.css +4 -7
  59. package/dist/styles/components/skeleton.tokens.css +4 -9
  60. package/dist/styles/components/steps.css +9 -12
  61. package/dist/styles/components/steps.tokens.css +4 -12
  62. package/dist/styles/components/switch.css +5 -8
  63. package/dist/styles/components/switch.tokens.css +4 -9
  64. package/dist/styles/components/tabbar.css +10 -11
  65. package/dist/styles/components/tabbar.tokens.css +4 -9
  66. package/dist/styles/components/table.css +52 -86
  67. package/dist/styles/components/table.tokens.css +5 -6
  68. package/dist/styles/components/tag.css +13 -23
  69. package/dist/styles/components/tag.tokens.css +5 -11
  70. package/dist/styles/components/text.css +11 -23
  71. package/dist/styles/components/toast.css +11 -18
  72. package/dist/styles/components/toast.tokens.css +6 -9
  73. package/dist/styles/components/tooltip.css +9 -11
  74. package/dist/styles/components/tooltip.tokens.css +5 -9
  75. package/dist/styles/components/tree.css +14 -27
  76. package/dist/styles/components/tree.tokens.css +5 -6
  77. package/dist/styles/components/upload.css +8 -13
  78. package/dist/styles/components/upload.tokens.css +4 -9
  79. package/dist/styles/index.css +27 -50
  80. package/dist/styles/operations/collapse.css +12 -25
  81. package/dist/styles/operations/popup.css +41 -79
  82. package/dist/styles/operations/tabs.css +14 -32
  83. package/dist/styles/reset.css +0 -61
  84. package/package.json +2 -2
@@ -1,43 +1,25 @@
1
1
  /**
2
2
  * 操作层 · 面板切换骨架(把「一组互斥选项 + 按顺序排列的面板」接起来;只给骨架、不给面)。
3
3
  *
4
- * 出处:`@aihub/theme` 的 `playground/components/tabset.css`(本件当时叫 `Tabset`,0.7.1 起改名 `Tabs`)。
5
- * 映射:`--mh-*` → `--ui-*`;类名加 `.mh-` 前缀。
4
+ * 只做三件事:① 操作根(轨道 → 面板组 的呼吸位);② 面板组与面板的**弹性链**(供抽屉 / 区域容器里的
5
+ * 「填满」用法);③ 面板的**收起态**(`hidden`)。
6
6
  *
7
- * 本层只做三件事 ——
8
- * ① 操作根(轨道 → 面板组 的呼吸位);
9
- * ② 面板组与面板的**弹性链**(供抽屉 / 区域容器里的「填满」用法);
10
- * ③ 面板的**收起态**(`hidden`)。
11
- *
12
- * **显隐只有一条路径:组件路径。** `Tabs` 按受控值给非选中面板下发 `hidden`,
13
- * 与选择控件形态无关(页签条 / 胶囊 / 分段按钮 / 单选卡片都一样)。本层因此:
14
- * · 收起态写在 `.mh-tabs-panel[hidden]` 上(UA 的 `[hidden]` 是**元素级**规则,
15
- * 作者源里任何自带 `display` 的类都能压过它,故这里显式落下一次);
16
- * · **显形态一条规则都不写** —— 面板显形就是它自己的 `display`(块 / 弹性 / 网格归消费方与皮肤)。
17
- *
18
- * ⚠️ 历史缺陷一(0.7.0 及以前):当时只有「零 JS 档位表」、没有上面那条收起规则 ⇒ 面板被基线按住,
19
- * 而档位表在 `TabBar` 下恒不命中 ⇒ 三块面板全不显示(`apps/mcp` 配置抽屉实测踩到)。
20
- * ⚠️ 历史缺陷二(0.7.1 一度这么修、已改回):组件路径的显形**不能**写成
21
- * `.mh-tabs-panel:not([hidden]) { display: block }` —— 它把面板的 `display` 钉死成 `block`,
22
- * 连带顶掉消费方/皮肤给面板的布局(面板里是弹性列时整条高度链当场断掉)。
23
- * ⚠️ 已退役(2026-09-24 拍板删除):**零 JS 路径(原生 radio ↔ 档位表)整段移除**。原写法
24
- * `.mh-tabs:has(input:nth-of-type(n):checked) .mh-tabs-panels > :nth-child(n)` 逐档一条写不出通式,
25
- * 且同时受三条硬限制:① 上限 8 档;② 开关必须与面板**同序**,且按「同一父级里第 n 个 input」计数;
26
- * ③ 面板必须是 `.mh-tabs-panels` 的**直接子级**。局限远大于它省下的那点 JS —— 取消。
27
- * (`TabBar` / `Capsule` 各自面向**静态页**的原生 `:checked` 选中态与本文件无关,仍然有效。)
28
- *
29
- * **与皮肤零互指**:本层不认任何皮肤类名(退役后也不再认识 `input`)。
7
+ * **显隐只有一条路径:组件路径。** `Tabs` 按受控值给非选中面板下发 `hidden`,与选择控件形态无关:
8
+ * - 收起态写在 `.mh-tabs-panel[hidden]` 上:UA 的 `[hidden]` 是**元素级**规则,作者源里任何自带
9
+ * `display` 的类都能压过它,故这里显式落下一次;
10
+ * - **显形态一条规则都不写** —— 面板显形就是它自己的 `display`。⚠️ 别写成
11
+ * `.mh-tabs-panel:not([hidden]) { display: block }`:那会把面板 `display` 钉死成 `block`,
12
+ * 连带顶掉消费方 / 皮肤给面板的布局(面板里是弹性列时整条高度链当场断掉)。
13
+ * - **零 JS 路径(原生 radio ↔ 档位表)已退役**:逐档一条写不出通式,且受「上限 8 档 / 开关必须与
14
+ * 面板同序 / 面板必须是直接子级」三条硬限制,局限远大于省下的那点 JS。`TabBar` / `Capsule` 各自
15
+ * 面向静态页的原生 `:checked` 与本文件无关。
30
16
  *
31
17
  * 结构契约(轨道项与面板组顺序**一一对应**;面板壳由 `Tabs` 出,消费方不必手写):
32
- * <div class="mh-tabs">
33
- * <div class="[皮肤:轨道 / 选择控件]">…</div>
34
- * <div class="mh-tabs-panels">
35
- * <section class="mh-tabs-panel [皮肤类]" hidden>…</section>
36
- * </div>
37
- * </div>
18
+ * `<div class="mh-tabs">` → `[皮肤:轨道 / 选择控件]` + `<div class="mh-tabs-panels">` →
19
+ * `<section class="mh-tabs-panel [皮肤类]" hidden>`。
38
20
  *
39
21
  * 禁写(与折叠 / 浮层同款):底 / 边 / 圆角 / 内距 / 宽高 / 字号 / 阴影 —— 写了就顶掉皮肤族属性面。
40
- * 面板的面与几何由皮肤族给(卡片一类);本层只写「收起态」「弹性链」与根上的呼吸位。
22
+ * 面板的面与几何由皮肤族给;本层只写「收起态」「弹性链」与根上的呼吸位,且**不认任何皮肤类名**。
41
23
  */
42
24
 
43
25
  /* ===== 一、操作根:选择控件在上、面板在下 =====
@@ -9,67 +9,6 @@
9
9
  * 它是令牌的落点(`@manohub/theme` 的全局令牌与各件的 `<件>.tokens.css` 都锚这个属性),
10
10
  * 也是本文件唯一一条**描述容器自身、不涉及后代**、因此不带 `:where()` 的规则。
11
11
  *
12
- * 除这两面之外**一条都不留**(2026-09 瘦身)。理由与去向见下面两节。
13
- *
14
- * ## 为什么删:未分层 > 分层(不是特异性问题)
15
- *
16
- * 旧版这份文件是按 **Tailwind Preflight** 逐条复刻的(盒模型 / 块级外边距归零 / 标题字阶 /
17
- * 列表序号 / 链接下划线 / 控件外观 / 媒体元素转块 …)。问题出在**级联层**上:Tailwind 4 的
18
- * 产物首行是 `@layer theme, base, components, utilities;`,preflight 与全部工具类都在层里,
19
- * 而本文件**在层外** —— CSS 里未分层的普通声明一律赢过分层里的普通声明,**这条优先于特异性**。
20
- * 于是那些复刻规则把消费方的工具类整片压住(实测:`border*` 被 `border-width: 0` 打掉、
21
- * `img` 上的 `h-*` 被 `height: auto` 打掉,同类还有 `h1`–`h6` 的 `text-*`、`p` 的 `mb-*`、
22
- * `svg`/`img` 上的 `hidden`),而 `:where()` 把特异性降到 0 也救不了 —— 胜负不在特异性上。
23
- *
24
- * 两件事要分开:**分层**管优先级(本文件现在不再依赖消费方分层,因为可抢的声明已经没有了),
25
- * **瘦身**管重复 —— 与 preflight 重合的规则对 Tailwind 消费方本就是零增量,剩下的都归了具体组件。
26
- *
27
- * ## 删掉的那些去了哪
28
- *
29
- * | 旧规则 | 现在的落点 |
30
- * |---|---|
31
- * | `img` / `svg` / `video` / `canvas` / `audio` / `iframe` / `embed` / `object` 转块级、`img`+`video` 不溢出 | 用图的件各自写:Card / ListView / QueryState 本来就有,Avatar / Upload 已补 `display: block` |
32
- * | `a { color: inherit; text-decoration: inherit }` | `.mh-button` 基块补 `text-decoration: none`(链接形态的按钮就是 `<a>`);正文链接的颜色与下划线交给消费方 |
33
- * | `textarea { resize: vertical }` | `.mh-input--textarea` |
34
- * | `button` 的 `cursor: pointer` / 透明底 / 无渐变 / 无缩改 | 各按钮形态的面(本来都自带 `border` / `background` / `padding` / `cursor`) |
35
- * | `code` / `kbd` / `samp` / `pre` 等宽族 | CodeBlock 面,以及 `.mh-text--mono`(消费方写裸 `<code>` 时用后者) |
36
- * | `:disabled { cursor: default }` | 各件禁用态(Button / Input / Select / Checkbox / Capsule / Card / Collapse 等都已自带) |
37
- * | `[type='search'] { outline-offset: -2px }` | 搜索框的面自画焦点环 |
38
- * | 标题字阶归位 / 块级元素外边距归零 / 列表序号与缩进 / 控件字体与颜色继承 / `b`+`strong` / `small` / `summary` / `label` | **直接删**:全库零组件依赖,且 Tailwind Preflight 全都有 |
39
- *
40
- * `border-width: 0; border-style: solid` 也一并删了:库内每个面都写全简写
41
- * (`border: 1px solid …` / `border: none` / `border-bottom: 1px solid …`),没有一处依赖默认值,
42
- * 留着只会继续压消费方的 `border*` 工具类。
43
- *
44
- * ## 特异性的老纪律(往这里加东西前必读)
45
- *
46
- * **作用域一律用 `:where([data-manohub-ui])` 包裹**:`:where()` 特异性为 0,等价于纯元素选择器。
47
- * 写成 `.container button` 这类高特异性选择器(0,1,1)会**反压本包组件面**(普遍是单类 0,1,0)——
48
- * 本仓踩过:主按钮文字变成 `color: inherit` 的黑色。
49
- *
50
- * 唯一例外是**容器基座**(下面的 `[data-manohub-ui]`):它描述容器自身而非其后代,
51
- * 且要能在消费方「同名选择器后写即胜」的规则里被覆盖,故保持 (0,1,0)。
52
- *
53
- * **加声明之前先自问**:这条会不会压住消费方的 Tailwind 工具类?会压就落进**具体组件的面**
54
- * (谁渲染这个元素谁负责),不要放这里。`__tests__/contract-reset.spec.ts` 按这条锁着:
55
- * 除容器基座外,整份文件只允许 `box-sizing` 一条声明。
56
- *
57
- * ## 三条不做
58
- *
59
- * 1. **不碰 `html` / `body` / `#app`**:micro-app 的 scopecss **不作用域化**它们,
60
- * 写进去会泄漏到宿主应用的全局样式。整链高度由消费方承担
61
- * (`@manohub/kit/CONTRACT.md` §1.2「入口基线」,是 L1-6「不得用裸元素选择器」的唯一例外);
62
- * 容器自身在这里给 `height: 100%`,`Page` 的 `height: 100%` 依赖上面那条链存在。
63
- * 2. **不定义任何 `--ui-*` 令牌**:值一律归 `@manohub/theme`,本文件只**消费**(两处定义必然漂)。
64
- * 3. **不出现任何类选择器**:本层是元素基线,类归各组件面(`styles/components/`)。
65
- *
66
- * ## 富文本须知(相对旧版是反转)
67
- *
68
- * 本文件现在**不归零列表序号、不归零链接下划线、不归位标题字阶**,所以富文本(markdown)与正文
69
- * 可以直接吃浏览器默认排版 —— 旧版那条「消费方须为自己的富文本容器复权」的告示随之作废
70
- * (见 `@manohub/kit/CONTRACT.md` §10)。反之,消费方想要一套自己的正文排版,按自己的容器类写即可。
71
- */
72
-
73
12
  /* ===== 盒模型:容器、其后代与伪元素一律 border-box(本库全部面的几何前提) ===== */
74
13
  :where([data-manohub-ui]),
75
14
  :where([data-manohub-ui]) *,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manohub/ui",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "AIHub 自绘组件层:不依赖 farris 的手写 Vue TSX 组件 + 自带令牌层(Farris 规范视觉 · daisyUI 式语义令牌 · shadcn 式 API 词汇)。",
@@ -35,7 +35,7 @@
35
35
  "vue": "^3.5.0"
36
36
  },
37
37
  "dependencies": {
38
- "@manohub/icon": "^1.0.3"
38
+ "@manohub/icon": "^1.0.5"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^24.0.0",