@manohub/ui 0.7.1 → 0.8.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.
Files changed (39) hide show
  1. package/README.md +1 -1
  2. package/dist/components/button/index.d.ts +6 -0
  3. package/dist/components/card/index.d.ts +21 -19
  4. package/dist/components/card/index.js +12 -4
  5. package/dist/components/form/index.d.ts +28 -46
  6. package/dist/components/form/index.js +3 -21
  7. package/dist/components/input/index.d.ts +74 -6
  8. package/dist/components/input/index.js +13 -1
  9. package/dist/components/list-view/index.d.ts +1 -1
  10. package/dist/components/pagination/index.d.ts +2 -2
  11. package/dist/components/pagination/index.js +1 -1
  12. package/dist/components/query-state/index.d.ts +18 -2
  13. package/dist/components/select/index.d.ts +32 -30
  14. package/dist/components/select/index.js +46 -82
  15. package/dist/components/select/select-list.d.ts +125 -0
  16. package/dist/components/select/select-list.js +95 -0
  17. package/dist/components/select/select-panel.d.ts +106 -0
  18. package/dist/components/select/select-panel.js +72 -0
  19. package/dist/components/select/select-shared.d.ts +64 -0
  20. package/dist/components/select/select-shared.js +24 -0
  21. package/dist/components/select/select-tree-filter.d.ts +61 -0
  22. package/dist/components/select/select-tree-filter.js +63 -0
  23. package/dist/components/select/select-tree.d.ts +274 -0
  24. package/dist/components/select/select-tree.js +263 -0
  25. package/dist/components/select/select-trigger.d.ts +132 -0
  26. package/dist/components/select/select-trigger.js +101 -0
  27. package/dist/components/steps/index.d.ts +1 -1
  28. package/dist/components/table/index.d.ts +25 -4
  29. package/dist/components/text/index.d.ts +7 -2
  30. package/dist/components/tree/index.d.ts +28 -2
  31. package/dist/components/tree/index.js +14 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.js +2 -0
  34. package/dist/styles/components/card.css +7 -1
  35. package/dist/styles/components/form.css +0 -21
  36. package/dist/styles/components/input.css +25 -0
  37. package/dist/styles/components/select.css +21 -0
  38. package/dist/styles/components/select.tokens.css +3 -0
  39. package/package.json +2 -2
@@ -39,6 +39,11 @@
39
39
  * 段的位置由组件保证(裸内容自动成段、封面不吃内距也不是段),故 `:last-child` 必定落在段上。
40
40
  * 4. 横向每段恒吃 `--mh-card-padding`(`padding-inline`)。
41
41
  *
42
+ * ⚠️ 以上 2 / 3 / 4 是**不给 `padding` 时的缺省口径**。分件一旦显式传了 `padding`,
43
+ * 组件就落行内样式(`{ y, x }` 两维都给时是 `padding: y x` 简写),**整段四边由消费方定价** ——
44
+ * 行内样式盖过这里的类规则,`:last-child` 那条下沿兜底也随之失效(这是有意的:消费方显式给了就说得清)。
45
+ * 要保留兜底就不要给那一段传 `padding`。
46
+ *
42
47
  * 直接写的内容(没包 `Card.Body` 的裸子节点)由组件自动补一层 Body,所以
43
48
  * 「不给分件」(`<Card>正文</Card>`)与显式分段得到的是同一套几何。 */
44
49
 
@@ -148,7 +153,8 @@
148
153
  padding-inline: var(--mh-card-padding);
149
154
  }
150
155
 
151
- /* 卡片下沿:纵向只吃上边(见上),底边由**最后一段**补,否则内容贴卡片边 */
156
+ /* 卡片下沿:不给 `padding` 时纵向只吃上边(见上),底边由**最后一段**补,否则内容贴卡片边。
157
+ (传了 `padding` 的段由行内样式接管,这里的兜底对那一段不再生效。) */
152
158
 
153
159
  .mh-card > .mh-card__header:last-child,
154
160
  .mh-card > .mh-card__body:last-child,
@@ -227,27 +227,6 @@
227
227
  align-items: center;
228
228
  }
229
229
 
230
- /* 只读文本行(Form.Item 的 text 形态:摘要 / 详情):正文色与行高,
231
- 长文案(SQL where、列说明)按词折行;`pre-wrap` 保留换行符(多行过滤条件回显)。
232
- 它只占第 1 行、与 label 各自居中即对齐 —— **不给任何高度**(撑到某个「控件高」等于把那个
233
- 外部高度变量换个名字复活;只读行按内容高排版,行与行的间距归 `Form` 的 gap)。 */
234
-
235
- .mh-form-item__text {
236
- display: flex;
237
- align-items: center;
238
- font-size: var(--ui-font-body);
239
- line-height: var(--ui-line-body);
240
- color: var(--ui-base-content);
241
- white-space: pre-wrap;
242
- word-break: break-word;
243
- }
244
-
245
- /* 空值占位(组件统一给 `—`):压成次要色,避免它被当成真实取值 */
246
-
247
- .mh-form-item__text[data-empty='true'] {
248
- color: var(--ui-base-content-subtle);
249
- }
250
-
251
230
  /* 错误 / 说明:**行的直接子节点**(不在控件列里面),排在控件行之下、与控件列同列。
252
231
  只给 `grid-column` 不给行号 —— 自动放置会把它们推进下一个空行:控件占着第 1 行,
253
232
  于是它们既不会挤进第 1 行、也不会掉到 label 列下面去。 */
@@ -169,6 +169,19 @@
169
169
  background: var(--ui-base-100);
170
170
  box-shadow: 0 0 0 2px var(--ui-primary-weak);
171
171
  }
172
+ /* **只读值档**(`readonly` + `bordered={false}`):几何照旧(与可编辑输入框同高、同内距),
173
+ 但把「可编辑」的线索全退掉 —— 只读值不该在滑过时亮起浅底、被点中时亮出边框与主色环。
174
+ 仍然可聚焦、可选中复制(只读 ≠ 禁用:要的就是能选、能复制)。
175
+ 它是摘要 / 详情里值回显的推荐写法,也是 `Form.Item` 的 `readonly` 行配的那一档。
176
+ 特异性 0-3-0,压过上面两条(0-2-0);带壳时框主是壳,同款规则见文件下半部分。 */
177
+ .mh-input--borderless[readonly]:hover,
178
+ .mh-input--borderless[readonly].is-hover,
179
+ .mh-input--borderless[readonly]:focus,
180
+ .mh-input--borderless[readonly].is-focus {
181
+ border-color: transparent;
182
+ background: transparent;
183
+ box-shadow: none;
184
+ }
172
185
 
173
186
  /* ===== 展示态(下划线,只读值回显) ===== */
174
187
  .mh-input--display {
@@ -310,6 +323,18 @@
310
323
  background: var(--ui-base-100);
311
324
  box-shadow: 0 0 0 2px var(--ui-primary-weak);
312
325
  }
326
+ /* **只读值档**同款(带壳时框主是壳):退掉悬停底与聚焦的边框 / 底色 / 主色环。
327
+ 特异性 0-4-0,压过上面两条(0-3-0),并且写在它们之后。 */
328
+ .mh-input__wrap:has(> .mh-input--borderless[readonly]):hover,
329
+ .mh-input__wrap:has(> .mh-input--borderless[readonly]).is-hover {
330
+ border-color: transparent;
331
+ background: transparent;
332
+ }
333
+ .mh-input__wrap:has(> .mh-input--borderless[readonly]):focus-within {
334
+ border-color: transparent;
335
+ background: transparent;
336
+ box-shadow: none;
337
+ }
313
338
 
314
339
  /* ===== 前缀 / 后缀插槽(纯装饰:图标、单位、域名;无底色、不进 Tab 序列) ===== */
315
340
  .mh-input__prefix,
@@ -219,6 +219,27 @@
219
219
  padding: var(--ui-space-2) var(--ui-space-2) var(--ui-space-1);
220
220
  }
221
221
 
222
+ /* ===== 树体(树选择 `SelectTree` 的面板内容)=====
223
+ 边界要认清楚:**面板皮肤归本文件**(上一节),**树的行态归 tree 面**(`.mh-tree__*` 那一族,
224
+ 本文件一行都不碰 —— 跨族类名须先登记跨面豁免,这里不走那条路)。
225
+ 故本件只做「把树安放进面板」这一件事:内距 + 限高 + 溢出滚动。
226
+ 行高 / 缩进 / 滑过与选中底色全部沿用 tree 面,两处形态不会漂移。 */
227
+ .mh-select__tree {
228
+ /* 行底满宽、只有内容缩进(缩进公式在 tree 面),故左右各留一个最小呼吸位 */
229
+ padding: 0 var(--ui-space-1) var(--ui-space-1);
230
+ max-height: var(--ui-select-tree-max-height);
231
+ overflow-y: auto;
232
+ }
233
+
234
+ /* 命中高亮(搜索命中的那段文字,由组件的 `renderLabel` 落进 `.mh-tree__label` 槽)。
235
+ 底色取主色浅底档(与选中 / 滑过同一套语义槽位);字色 `inherit` —— 高亮只负责「标出位置」,
236
+ 不引入第二套强调色,否则同一行里会同时出现三种主色深浅。 */
237
+ .mh-select__hit {
238
+ border-radius: var(--ui-radius-xs);
239
+ background: var(--ui-primary-weak);
240
+ color: inherit;
241
+ }
242
+
222
243
  /* ===== 日期格(DatePicker 复用本族面板;选中主色实底、区间浅底) ===== */
223
244
  .mh-select__date {
224
245
  display: inline-flex;
@@ -30,4 +30,7 @@
30
30
  --ui-select-option-selected: var(--ui-primary-subtle); /* 见头部「有色差异」 */
31
31
  --ui-select-chip-height: 24px; /* 多选标签(规范复用标签族 24 档) */
32
32
  --ui-select-icon-size: var(--ui-font-icon); /* 下拉箭头:常规图标档 */
33
+ /* 树形态(SelectTree):面板内树体的限高 —— 约等于 9 行(行高 34 + 行距 6 的节距 40 见 tree.css),
34
+ 超过即滚动,长树不把面板撑成整屏 */
35
+ --ui-select-tree-max-height: 320px;
33
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manohub/ui",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
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.7.1"
49
+ "@manohub/icon": "^0.8.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "^24.0.0",