# components-api · 组件 API
> 实现:`lib/components/*`。规则见 `.claude/rules/components.md`。
## chat-window · 仿微信一对一
```html
```
JSON schema:
| 字段 | 类型 | 说明 |
|---|---|---|
| `title` / `subtitle` | string | 顶部条标题 / 副题 |
| `msgs[]` | array | 消息 |
| `footer` | string | 底部脚注 |
`msgs[]` 元素(`side: 'in'|'out'`,`avatar` 头像文字):
| type | 字段 | 渲染 |
|---|---|---|
| `time` | text | 居中时间 |
| `text` | text, bold? | 气泡文本(\n 换行,bold 加粗) |
| `transfer` | text, amount | 转账卡(金额绿色) |
| `divider` | text | 剧情推进分隔线 |
| `image` | src, caption? | 气泡内图片 |
| `quote` | text, source? | 引语强调 |
## group-chat · 仿企业微信电脑端群聊
```html
```
JSON schema:`{ group, subtitle, members:[{name,avatar,role}], msgs:[...], footer }`
`msgs[]` 元素:`{ name, avatar, type }`
- `type:'text'`:`text`,文本内 `@成员名` 自动高亮提及
- `type:'card'`:`title, sub, tag` 名片卡
## logic-flow · 逻辑图(mermaid 封装)
> 通用规则见 `.claude/rules/logic-diagram.md`。mermaid 需先加载:``
```html
```
JSON schema:
| 字段 | 类型 | 说明 |
|---|---|---|
| `dir` | string | `LR`(左右)/ `TB`(上下),默认 LR |
| `nodes[]` | array | `id` 节点 key、`label` 显示文本(`\n` 换行)、`cls` 节点配色 |
| `edges[]` | array | `from`/`to` 节点 id、`label` 边标签、`dotted` 虚线 |
`cls` 可选值(配色随 token,双主题自适应):`warn`(红·卡点/警示)/ `ok`(绿·解法/通过)/ `brand`(金·主角/核心)/ `sub`(紫·次级/支撑)/ `plain`(灰·默认)。
特点:色全部读 `var(--*)`(getComputedStyle),`html[data-theme]` 变化自动重绘(MutationObserver);mermaid 缺失时降级显示原文。
## 组件纪律
- CSS 零硬编码色,只用 `var(--*)`(含 `--chat-*` 组件 token),双主题自适应。
- 不依赖 fetch / module,file:// 可用。
- 需要新组件:先在 `.claude/rules/components.md` 登记 → 定义 schema → 实现 → 在 smoke.html 冒烟。