@manohub/ui 0.10.1 → 0.10.2

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.
@@ -28,16 +28,18 @@
28
28
  }
29
29
 
30
30
  /* 尺寸档的圆角吃**体量档**(`xs` / `sm`),不吃容器档 `md` —— 容器档一改(卡片圆角调整)
31
- 徽标会跟着变,那是两件无关的事。20 档有设计实证(表格内标签 r3),24 档无实证、按体量就近升一档。 */
31
+ 徽标会跟着变,那是两件无关的事。20 档有设计实证(表格内标签 r3),24 档无实证、按体量就近升一档。
32
+ 高度取**标记体量档**(全局令牌 `--ui-mark-height-sm/md`):与 `Tag` 的 20 / 24、`Select` 多选
33
+ 标签片的 24 同源 —— 这三处以前各写一份字面量,改一次档要改三处(2026-09-30 收敛)。 */
32
34
  .mh-badge--sm {
33
- height: 20px;
35
+ height: var(--ui-mark-height-sm);
34
36
  padding: 0 6px;
35
37
  min-width: 36px;
36
38
  border-radius: var(--ui-radius-xs);
37
39
  }
38
40
 
39
41
  .mh-badge--md {
40
- height: 24px;
42
+ height: var(--ui-mark-height-md);
41
43
  padding: 0 8px;
42
44
  border-radius: var(--ui-radius-sm);
43
45
  }
@@ -96,8 +98,13 @@
96
98
  --mh-badge-fg: var(--ui-base-content-muted);
97
99
  }
98
100
 
101
+ /* ⚠️ 主色软底取**浅底档** `--ui-primary-weak`(同一槽位的其他消费者:`Tag` 默认底、表壳滑过底、
102
+ 聚焦环);**不取** `--ui-primary-subtle` —— 那是**选中态底**(树行 / 表格行 / 卡片选中 / 单选卡),
103
+ 两档在 default 主题里差一整档(#EFF5FF → #DBE9FF),取错会让徽标比同排的标签深一档,
104
+ 而徽标表达的是「标记」不是「选中」(2026-09-30 收敛,槽位口径见
105
+ `@manohub/theme` 的 `default/colors.css` 品牌槽位两条注释)。 */
99
106
  .mh-badge--soft.mh-badge--primary {
100
- --mh-badge-bg: var(--ui-primary-subtle);
107
+ --mh-badge-bg: var(--ui-primary-weak);
101
108
  }
102
109
 
103
110
  /* 描边:浅底 + 同色描边;default 退化为白底 + 中性描边 + 正文色(状态胶囊) */
@@ -25,6 +25,19 @@
25
25
  (特异性 0-3-0,高于本行)—— **那条兜底不能删**。 */
26
26
  display: flex;
27
27
  flex-direction: column;
28
+ /**
29
+ * **`margin: auto` 必须写**(靠 `inset: 0` + `margin: auto` 居中)。
30
+ *
31
+ * 不能依赖 UA 那条 `dialog { margin: auto }`:作者源无条件压过 UA 源(与特异性无关),
32
+ * 而**几乎每个宿主的 reset 都有 `* { margin: 0 }`**(Tailwind preflight / 本仓 ui reset 都会发下),
33
+ * 一旦命中就把 UA 的 `auto` 归零 ⇒ 弹窗**贴上贴左**(`inset: 0` + 无 margin 的必然结果)。
34
+ * 2026-09-30 实测:在 `apps/skill`(还带 Tailwind)里 `getComputedStyle` 读到 `margin: 0px`、
35
+ * `rect = (0, 0)`;显式补 `auto` 后立刻回到 `(432, 43)` 的精确居中。
36
+ *
37
+ * 与 `Drawer` 那条 `margin: 0` 是**同一件事的两面**:那边要贴侧、必须把 `auto` 归零,
38
+ * 这边要居中、必须把 `auto` 写实 —— 两边都**不能交给 UA**。`Toast` 同(它也显式归零)。
39
+ */
40
+ margin: auto;
28
41
  width: var(--ui-dialog-width);
29
42
  max-width: var(--ui-dialog-width);
30
43
  padding: 0; /* UA 给 <dialog> 的内距一律归零:内距由页头 / 内容 / 底栏各自拥有 */
@@ -28,7 +28,7 @@
28
28
  --ui-select-option-height: 36px; /* 设计 `0:4024`:选项行 144×36(原为 34) */
29
29
  --ui-select-option-hover: var(--ui-base-200); /* 设计滑过底 #f2f2f2 */
30
30
  --ui-select-option-selected: var(--ui-primary-subtle); /* 见头部「有色差异」 */
31
- --ui-select-chip-height: 24px; /* 多选标签(规范复用标签族 24 档) */
31
+ --ui-select-chip-height: var(--ui-mark-height-md); /* 多选标签(规范复用标签族 24 档)⇒ 标记体量档,与徽标 / 标签同源 */
32
32
  --ui-select-icon-size: var(--ui-font-icon); /* 下拉箭头:常规图标档 */
33
33
  /* 面板限高(**列表与树两形态共用**):面板整体(含搜索行)不超此高,超出即内容区滚动。
34
34
  320px ≈ 8 行选项(选项行 36 + 面板上下内距 8);树形态可见行数按 tree 面的节距 40 折算
@@ -19,8 +19,11 @@
19
19
  `--ui-primary-weak`(#EFF5FF) 差 ≤ 6/255 —— 三个近值并存的典型症状,本轮并入主题档。
20
20
  设计实证:表格内标签 `0:2723` 底 `#eaefff`。 */
21
21
  --ui-tag-bg: var(--ui-primary-weak);
22
- --ui-tag-height: 24px;
23
- --ui-tag-height-sm: 20px;
22
+ /* 20 / 24 两档是**跨件共用**的「标记体量档」(徽标 / 标签 / 多选标签片同源)⇒ 全局值在
23
+ `@manohub/theme` 的 `spacing.css`,本件只做别名:改档只改主题那一处。
24
+ 28 / 22 两档只服务本件(大号标签 / 状态标签),故字面量留在本文件。 */
25
+ --ui-tag-height: var(--ui-mark-height-md);
26
+ --ui-tag-height-sm: var(--ui-mark-height-sm);
24
27
  --ui-tag-height-lg: 28px;
25
28
  --ui-tag-height-status: 22px;
26
29
  --ui-tag-font-size: var(--ui-font-caption);
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * | 段 | 命名 | 落点 | 锚 |
14
14
  * |---|---|---|---|
15
- * | 全局令牌(跨件共用的值) | `--ui-{primary,base-*,space-*,radius-*,shadow-*,font-*}` | `@manohub/theme` | `[data-manohub-ui]` |
15
+ * | 全局令牌(跨件共用的值) | `--ui-{primary,base-*,space-*,radius-*,shadow-*,font-*}`、尺寸档(`--ui-control-height-*` / `--ui-mark-height-*`) | `@manohub/theme` | `[data-manohub-ui]` |
16
16
  * | 组件令牌**基础值** | `--ui-<件>-*` | 本目录同名 `<件>.tokens.css` | `[data-manohub-ui]` |
17
17
  * | 组件令牌**档位改写** | `--ui-<件>-*` | 面文件 `<件>.css` 的**修饰符块** | `.mh-<件>--<档>` 等 |
18
18
  * | 内部状态变量 | `--mh-<件>-*` | 面文件(修饰符机制本身) | 组件根类 / 修饰符类 |
@@ -32,7 +32,11 @@
32
32
  * 四、零 JS 锚定 —— CSS Anchor Positioning:`position-area` 定位档(`data-side` / `data-align`)
33
33
  * + `position-try-fallbacks` 自动翻面;锚点走 `popovertarget` 的**隐式锚**,一个 `anchor-name`
34
34
  * 都不用写(隐式锚够不着时才用 `.mh-popup-anchor` / `.mh-popup--anchored` 那一档)。
35
- * 无 `data-side` 时不落定位档 —— 模态与无锚点浮层退回 UA 的视口居中。
35
+ * 无 `data-side` 时不落定位档 —— 模态与无锚点浮层退回**件自己声明的**视口居中
36
+ * (`inset: 0` + `margin: auto`)。⚠️ 这里**不能指望 UA**:UA 确有 `dialog { margin: auto }`,
37
+ * 但作者源无条件压过 UA 源,而宿主的 `* { margin: 0 }` reset 会把它归零 ⇒ 弹窗贴上贴左。
38
+ * 故居中必须由**件**写实(见 `components/dialog.css` 的 `.mh-dialog { margin: auto }`,
39
+ * 2026-09-30 在带 Tailwind 的宿主里实测踩到)。
36
40
  *
37
41
  * 五、展开态派生 —— 箭头转向:原生路径由宿主 `:has` 反推,组件路径由触发器自带的
38
42
  * `aria-expanded` 反推。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manohub/ui",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "AIHub 自绘组件层:不依赖 farris 的手写 Vue TSX 组件 + 自带令牌层(Farris 规范视觉 · daisyUI 式语义令牌 · shadcn 式 API 词汇)。",
@@ -46,7 +46,7 @@
46
46
  "vue": "^3.5.0"
47
47
  },
48
48
  "dependencies": {
49
- "@manohub/icon": "^0.10.1"
49
+ "@manohub/icon": "^0.10.2"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "^24.0.0",