@manohub/kit 0.9.0 → 0.10.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 (2) hide show
  1. package/CONTRACT.md +18 -11
  2. package/package.json +1 -1
package/CONTRACT.md CHANGED
@@ -87,17 +87,23 @@ theme 提供令牌(值),icon 提供图形。**本包不发布任何样式*
87
87
  - 用非兜底主题时把 ① 换成对应入口(如 `@manohub/theme/farris.css`),
88
88
  并在入口给 `createSubApp({ theme: 'farris' })`(写到容器的 `data-theme` 上)。
89
89
  - **`reset`(元素级基线)自 0.7.0 起已内置在 ② 里**,不需要第三行:`@manohub/ui/styles.css` 的**首条** import
90
- 就是它(盒模型、按钮外观、列表序号、链接下划线、标题字阶一并归零)。作用域锚 `[data-manohub-ui]`
91
- 且特异性为 0,**应用侧写任何元素选择器都能盖过它**。(0.6.x 没有它,那两版的应用侧自补过一份 —— 见 §12.2。)
90
+ 就是它。**2026-09 起它只有两面**:① 盒模型(`box-sizing: border-box` 覆盖容器 + 全部后代 + 伪元素);
91
+ ② 容器基座(`[data-manohub-ui]` 上的字族 / 字号 / 行高 / 字色 / 底色 / 整链高度)。作用域锚
92
+ `[data-manohub-ui]` 且特异性为 0,**应用侧写任何元素选择器都能盖过它**。
93
+ 它**有意不再**归零标题字阶 / 列表序号 / 链接下划线 / 控件外观:那些规则在 Tailwind 的层外
94
+ (未分层赢过分层,且这条优先于特异性),会把消费方的工具类整片压住(`border*`、`img` 上的 `h-*`、
95
+ `hidden` …);与 Tailwind Preflight 重合的部分交给 preflight,其余归到**渲染它的组件面**。
96
+ **所以应用侧也不要再自备一份全局 reset** —— 那是同一类压制。
97
+ (0.6.x 没有它,那两版的应用侧自补过一份 —— 见 §12.2。)
92
98
  - **入口基线(`html` / `body` / `#app` 的高度链)归消费方,且是合法的**:本包的 reset **有意不写**这三个
93
99
  选择器 —— micro-app 的 `scopecss` 不作用域化它们,包内写进去会泄漏到宿主全局。但「页面撑满」这条链
94
100
  **必须有人给**(`Page` 的 `height: 100%` 依赖它),所以它由**应用的入口基线**承担:写在 ③ 里,
95
101
  或写在入口 HTML 的 `<style>` 里。典型形态是「`html` / `body` / `#app` 三个 `height: 100%` + `margin: 0`」。
96
102
  这是 L1-6「不得用裸元素选择器」的**唯一例外**(`html` / `body` / `#app` 三个名字),
97
103
  用到的属性全在 L1-4 白名单内。**别把这条链写进组件 / 页面样式** —— 它只属于入口。
98
- - **富文本(markdown)要自行复权**:reset 归零了 `ul` / `ol` 的序号与 `a` 的下划线,
99
- 而富文本排版没有合规归属(见 §10 的已知缺口)—— 消费方须为自己的富文本容器类补回
100
- `list-style` / 链接样式 / 段落边距。
104
+ - **富文本(markdown)仍无合规归属**:reset 不再归零 `ul` / `ol` 的序号与 `a` 的下划线
105
+ (默认排版就是浏览器默认,**不需要「复权」**),但应用侧要自定义正文排版仍缺合规落点
106
+ (L1-4 的属性白名单 + L1-6 禁裸元素选择器)—— 见 §10 的已知缺口:整段登记,或在 `@manohub/ui` 提一个 `Markdown` 件。
101
107
 
102
108
  ### 1.3 入口
103
109
 
@@ -525,7 +531,7 @@ import Sortable from 'sortablejs' // 行为库:不产
525
531
  | `Text` 只做六个维度(字号 / 行高 / 字重 / 语义色 / 等宽 / 截断) | 它补的是「容器里的文字层级」这条一直缺的路径;富文本解析、省略的展开交互都不归它 |
526
532
  | 本包零样式(无 reset、无富文本预设) | 样式只有两个来源:theme(值)与 ui(面)。本包夹在中间转发样式,只会让「值的来源」说不清 |
527
533
  | `theme` **有意不建 icons / motion 两片** | 图标不承载颜色(随文案色,见 L1.5-3);动效目前没有跨组件统一的语义。这两片是**有意未建**,不是遗漏 |
528
- | **已知缺口:富文本排版暂无归属** | 此前由本包的 `.app-markdown` 预设承担,已随样式删除;`@manohub/ui` 的 `reset` 又归零了 `ul` / `ol` 的序号与 `a` 的下划线,**富文本容器必须自己补回** `list-style` / 链接样式 / 段落边距。需要富文本排版的页面暂时只能整段进 §11 登记,或在 ui 提一个 `Markdown` 件 |
534
+ | **已知缺口:富文本排版暂无归属** | 此前由本包的 `.app-markdown` 预设承担,已随样式删除;`@manohub/ui` 的 `reset` 也**不再代管**(2026-09 起它只有盒模型 + 容器基座两面,不再归零 `ul` / `ol` 的序号与 `a` 的下划线)。默认排版可以直接用,但要一套自己的正文排版(序号 / 间距 / 链接态)仍缺合规落点:需要富文本排版的页面只能整段进 §11 登记,或在 ui 提一个 `Markdown` 件 |
529
535
 
530
536
  ---
531
537
 
@@ -586,7 +592,7 @@ import Sortable from 'sortablejs' // 行为库:不产
586
592
  | **属性锚改名** | 容器上的 `data-app-container` → **`data-manohub-ui`**;旧名不再被任何一方识别(不留兼容别名) |
587
593
  | **作用域统一** | 主题令牌、组件令牌、服务层宿主解析**全锚 `data-manohub-ui` 一个属性** |
588
594
  | **组件令牌变可覆盖** | 组件令牌基础值锚从「元件根类」上提到「容器锚」——表行高、label 宽这类终于能在容器上被覆盖(也可被误覆盖) |
589
- | **`reset` 改由 `@manohub/ui` 提供(0.7.0)** | 元素级基线并入 `@manohub/ui/styles.css` 的**首条** import(锚 `[data-manohub-ui]`、特异性 0):应用侧不必再自己写 reset,消费方自建的全局 reset 可以移除 —— 但**富文本容器的复权要保留**(reset 归零了 `ul` / `ol` 的序号与 `a` 的下划线) |
595
+ | **`reset` 改由 `@manohub/ui` 提供(0.7.0)** | 元素级基线并入 `@manohub/ui/styles.css` 的**首条** import(锚 `[data-manohub-ui]`、特异性 0):应用侧不必再自己写 reset,消费方自建的全局 reset 可以**整块移除**(2026-09 起该 reset 只剩盒模型 + 容器基座两面,原先「富文本容器要保留复权」一条随之作废) |
590
596
 
591
597
  **三、契约与护栏(本文件与 §7 自检清单)**
592
598
 
@@ -599,7 +605,7 @@ import Sortable from 'sortablejs' // 行为库:不产
599
605
  | **骨架层补齐** | L2 从「几种页面模板」扩到 20 条,含归位、直接子节点、页头两模式、区域头形态等原先没写下的规则 |
600
606
 
601
607
  **三组一起怎么迁**:装包 → 样式链改由自己引(§1.2 两行;reset 自 0.7.0 起内含在 ② 里)→ 换主题入口 →
602
- 自建容器换锚 → 补富文本复权(或提件)→ 换骨架与件 → 收样式与图形。类名 `class="app-container"` 不必动
608
+ 自建容器换锚 → 富文本按需登记(或提件)→ 换骨架与件 → 收样式与图形。类名 `class="app-container"` 不必动
603
609
  (已降级为本包内部命名)。
604
610
 
605
611
  ### 12.2 修复与补齐(0.6.x → 0.7.1)变了什么
@@ -636,9 +642,10 @@ import Sortable from 'sortablejs' // 行为库:不产
636
642
  四档(标题左侧一个裸符号 + 配色),`confirm({ tone: 'error' })` 还会把确定按钮自动染成危险色 ——
637
643
  「删除确认」与「保存成功」不再长得一样。
638
644
  - **`reset` 进驻 `@manohub/ui/styles.css` 首条**(0.6.x 里由应用自补):
639
- **已经在 `app.css` 自补过 reset 的应用,可以删掉其中「盒模型 / 按钮外观 / 列表序号 / 链接 / 标题字阶」这一族
640
- 与「元素 margin 归零」**(② 已经给了);但**高度链(`html` / `body` / `#app`)必须留着** ——
641
- 那是入口基线,包的 reset **有意不写**(见 §1.2)。
645
+ **已经在 `app.css` 自补过 reset 的应用可以整块删掉** —— ② 给的那份覆盖了基座(盒模型 + 容器基座),
646
+ 而「按钮外观 / 列表序号 / 链接 / 标题字阶 / 元素 margin 归零」这一族**已随 2026-09 的瘦身删除**
647
+ (它们会压住 Tailwind 工具类;对应的归零现在归到渲染它的组件面,Tailwind 消费方另有 preflight 兜底);
648
+ 但**高度链(`html` / `body` / `#app`)必须留着** —— 那是入口基线,包的 reset **有意不写**(见 §1.2)。
642
649
  - **`kit lint` 恢复**(`pnpm exec kit lint --root apps/<app> --namespace <前缀>`):
643
650
  0.6.0 整批下线后,三个应用迁完就累计出「3 份重复 reset / 1 处登记描述错误 / 1 处注释引错文件名」——
644
651
  都是「有脚本就当场红」的类型。恢复的版本**换了立足点**:不查目录结构,只查本契约里能机械判定的四组
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manohub/kit",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "子应用入口编排层:createSubApp(作用域容器与宿主锚点、pinia/路由/vue-query 装配、宿主挂载协议)、i18n 单实例与语言探测,外加随包分发的接入契约(CONTRACT.md,五层闭集条款 + 自检清单)与三个 AI 技能包。本包**零样式产物**:设计令牌(值)在 @manohub/theme,组件(类与行为)在 @manohub/ui,两者由消费方直接引入。",