# TVU Figma Component Catalog

> AI 工具（Claude Code / Codex / Cursor / Cline / Gemini / 其它）在 TVU 产品 mockup 任务里**第一个该查的文档**。
>
> Bootstrap 自 [`figma-data/normalized/components.manifest.json`](../../figma-data/normalized/components.manifest.json) +
> [`figma-data/figma-to-code-mapping.json`](../../figma-data/figma-to-code-mapping.json)。
>
> Last bootstrap: 2026-05-06 · 49 unique non-icon components + 647 icons across 28 namespaces.

---

## 工作流（必读）

```
[task] → grep this catalog → 命中 ✅ entry → 直接用
                          → 命中 🟡 entry → 用 + 把 Extension/Don't-use 写实，回填本文档
                          → 没命中 → search_design_system + import sample（M2 流程）
                                  → 找到 → 加 entry 到本文档（即使本任务用不到也补完）
                                  → 真没有 → 自画 + 标 🟡 候选（M6）
```

**不要凭直觉跳过 catalog 直接 search_design_system**——70% 的"library 缺件"判断在 catalog 已经有答案。

## Status legend

- ✅ **Verified** — Library key + Primary use + Extension scenarios + Don't-use 都填了，至少在一次 mockup 里实证过
- 🟡 **Skeleton** — manifest 自动生成基础信息，使用语义未填
- ⚠️ **File-local** — 不是库组件，是 product file 内嵌的 component_set，跨 file 不可用

---

## 真源

| 维度 | 值 |
|---|---|
| Library 名 | `TVU UX Design System` |
| Library key | `lk-057f6ba0f771bfa7f63a6a197502999462c2974f995488b381708ca5faadb7f9f6675e04aa442b3a5ffb31732150a7f5aa8ca3102073ab210edc684022fc6c21` |
| Library file key | `YbsPRUVmNdsbN40NNwh1Gn` |
| Manifest source | `figma-data/normalized/components.manifest.json`（运行 `node figma-sync/generate-manifest.mjs` 重建） |
| Code mapping | `figma-data/figma-to-code-mapping.json` |

---

## ✅ Verified Components

### Badge
- **Library key**: `4db5246d0782fe13bcc01747a7a2578c2da77b2a`
- **Axes**: `Type` (Circle / Rectangle) × `Color` (Green / Blue / Orange / Red / Black) × `Tag` (Filled / Line)
- **Variants**: 20
- **Code mapping**: `Badge` (status: approved)

#### Primary use
状态/计数指示器 (status pill)。最常用于 row-level INPUT/OUTPUT 状态显示。

#### Extension scenarios
- **Status pill**（INPUT/OUTPUT 列）：`Type=Rectangle, Color=Red/Green/Black, Tag=Filled` —— Live=Red, Preview=Green, Inactive=Black
- **N/A pill**（input-only/output-only app 的对应空列）：`Type=Rectangle, Color=Black, Tag=Line` —— outline 表达"该位置不存在"
- **CapabilityTag**（`input-only` / `output-only` metadata）：`Type=Rectangle, Color=Black, Tag=Line` + 文本覆盖 —— outline 矩形是只读信息标签的标准 primitive
- **Active count badge**（卡片头 "X active"）：`Type=Rectangle, Color=Green, Tag=Filled` + 文本覆盖
- **Sessions count badge**（折叠卡片 "X sessions"）：`Type=Rectangle, Color=Black, Tag=Filled` + 文本覆盖
- **Top-bar status counters**（"8 Live" / "12 Previewing" / "19 Total Sessions"）：同状态色 mapping，文本覆盖为 "数字 + 标签"

#### Don't use for
- 大块 callout / inline message —— 用 `Notification` 或 `prompt message`
- 可点击的 selector / chip —— 用 `Tab/Item`（Badge 是只读 indicator，不是 interactive primitive）

#### Used by
- Session Dashboard (Frame 1, node `2969:85`, 2026-05-06)

---

### Button/dark M
- **Library key**: `12b38c8b68cd67dd3978e0d68712bc646f1e97c1`
- **Axes**: `icon` (right / left / loading / no) × `style` (filling / ghost / rimless) × `color` (gray 1 / green / orange / red) × `status` (default / loading / hover / disable) × `radius` × `fixed width`
- **Variants**: 400
- **Code mapping**: `Button` (status: approved)

#### Primary use
Dark theme 中等尺寸按钮 (32px 高)。**所有 row-level / header-level / modal action 按钮的默认选择**。

#### Extension scenarios
- **Action buttons in table rows** (operator console)：`style=ghost`，颜色由 row state 决定 —— `gray 1` (Open GUI 中性), `red` (Stop / Remove destructive), `green` (Start)
- **Modal destructive button**：`style=filling, color=red, status=default`
- **Modal cancel button**：`style=ghost, color=gray 1, status=default`
- **Header CTA**：`style=filling, color=green` (positive primary action)

#### Don't use for
- **不要自画 XS chip 替代它**（M7 + M2 双重违反）。column 不够宽就让 column 变宽
- 行内极小按钮：虽然有 `Button/dark XS`，但 operator console **必须**用 M 维持 Fitts 命中率（M7）
- Filter chip：用 `Tab/Item Type=Filled` 而非 Button

#### Used by
- Session Dashboard (Frame 1, 2026-05-06) — 27 instances

---

### Tab/Item
- **Library key**: `2267405386cb3186ba920b0d0b790d54e65a1529`
- **Axes**: `Property 1` (Active / Normal) × `Property 2` (Green / White) × `Type` (Line / Filled / Text)
- **Variants**: 6

#### Primary use
单选导航 tab（切换内容面板）。

#### Extension scenarios
- **FilterChip — 单选过滤器**（如 Filter Bar 的 All / Live / Previewing / Inactive Only）：
  - Selected: `Property 1=Active, Property 2=Green, Type=Filled`
  - Default: `Property 1=Normal, Property 2=White, Type=Filled`
  - 视觉差异：tab 是矩形小圆角而非 cornerRadius=999 的 pill；语义匹配（单选 + 缩范围）。

#### Don't use for
- 多选 filter（Tab 是单选语义；多选用 checkbox 或 chip-with-checkmark pattern）
- 静态信息标签（用 `Badge` Type=Rectangle, Tag=Line）

---

### Tab List
- **Library key**: `47efe04ff35b46602f0827f24c87af9dca3bae4b`
- **Axes**: `Type` (Line / Filled / Text)
- **Variants**: 3
- **Slot**: `List#4605:0` —— preferredValue 直接绑定 `Tab/Item` component_set

#### Primary use
`Tab/Item` 的容器组件，处理多 tab 排版。

#### Extension scenarios
- **Filter Bar 容器**：搭配 `Tab/Item` 当 FilterChip 用时，用 `Tab List Type=Filled` 作 wrapper，自动管理间距

---

### Top bar
- **Library key**: `918b928e4541f1573de5c98c32b408af663d7f2f`
- **Axes**: `Tag` (After Login / Before Login)
- **Variants**: 2
- **Properties**: `Show Menu` (BOOLEAN) / `Show Search box` (BOOLEAN) / `Menu` (SLOT) / `Right_content` (SLOT)

#### Primary use
TVU 全产品页面顶部 bar（1920×56 After Login / 1920×64 Before Login）。**M1 硬规则**：任何 TVU 产品页面**必须** instance 此组件，不允许自画。

#### Extension scenarios
- **Product 标题**：用自带 product-name slot（默认 placeholder "Product Name"），手动覆写为实际产品名（如 "MicroApps Sessions"）。**不要**在 top bar 下方加重复 page-title strip
- **Right side custom content** (notifications / user / settings)：用 `Right_content` SLOT

#### Don't use for
- 把 page-level 元素塞进 slot —— **不允许**：counters / filter chips / 批量操作按钮。这些必须放在 top bar **下方**独立 strip
- 修改 top bar 结构本身（菜单数量 / Tokens 段 / Network Delay 等只能开关显示）
- 旧库 `TVU UX Library` 里有同名 `Top bar` (key `2f36c51a...`)，**不要用**

#### Used by
- 所有 TVU 产品 mockup（强制硬规则 M1）

---

### prompt message
- **Library key**: `e9574b39e93ac3ffe94834f05d704798ce997274`
- **Axes**: `interact` × `status` × `size`
- **Variants**: 8

#### Primary use
确认 / 警告 / 信息类 modal。包含 X close + title + body + Cancel + destructive 按钮的标准布局。

#### Extension scenarios
- **Stop In/Out confirm modal** (broadcast destructive)：cascade 警告版本（停 input 同时下线 output）和单停版本
- **Remove confirm modal**（移除完全 inactive 的 session）

#### Don't use for
- 自画 modal（M2 重灾区，2026-05-06 review 第三次踩坑）
- 大量内容 / 多 step 表单：用 Drawer / 全屏 view

#### Compare with
- `Popup Box` (key TBD, 2 variants Theme) —— 简单弹窗，可能更适合纯 informational 场景。需要 import sample 验证两者差异
- `Notification` (theme×status, 14 variants) —— inline message bar，不是 modal

---

### input box/filled
- **Library key**: `1f513914bde7e5e2844e785eefe427f0693f6d20`
- **Axes**: `dark theme` × `status` × `enable` × `UX` × `size` × `feature`
- **Variants**: 112
- **Properties**: `Content#4995:0` (SLOT)

#### Primary use
Dark theme 文本输入框，filled 风格。

#### Extension scenarios
- **Search field**（filter bar 搜索 PID/Object ID）：`dark theme=on, status=default, UX=default, size=M, feature=no`
- **Form 输入**：根据 size / feature 调整

#### Don't use for
- Light theme 页面（用 `dark theme=off`，但更推荐用 `input box/line` 在 light 下）

#### Used by
- Session Dashboard Filter Bar

---

### Tooltips
- **Library key**: `40c9daafd174d0f4d7005eacc566570ef381fde5`
- **Axes**: `dark theme` × `pointing` (left up / left down / right up / right down / Center up / Center down)
- **Variants**: 12
- **Properties**: `Content#4798:0` (SLOT)

#### Primary use
悬停提示。`pointing` variant 控制箭头方向。

#### Extension scenarios
- **Action button hint** ("Open Audio Remapping UI" 之类)：`dark theme=on, pointing=Center down`，悬于按钮上方
- **Disabled button explanation**（"Start Output 在 input previewing 之前不可用"）：`pointing=Center up`，贴于按钮下方

---

### APP Icons ⚠️ (file-local)
- **File-local key**: `fefd6aacdbb0a6e1acaf4106446e831fe3c5b8ff`
- **File-local nodeId**: `3:14402`
- **Scope**: 仅 `Micro-Apps-20250923` (fileKey `DtZcMkhNy6qh6jbQQnhreQ`)，跨文件不可用
- **Axes**: `Tag` × `Color` (Green / Black)
- **Variants**: 18

#### Available variants (Tag values)
- Audio remapping
- Audio Video Sync
- Media Analyzer
- Micro app
- Overlay APP
- SCTE App
- Standard Conversion
- Transcriber App
- TVU
- Video Sync

#### Missing (TODO: 加到既有 set，**不要**新建)
- Color Correction
- Graphics Insertion
- Test Pattern Generator

#### Don't use for
- 跨文件——这是 file-local，需要 cross-file 复用时要么入 library，要么在新文件里复制 set

---

## 🟡 Skeleton — Other Library Components

下表列出 manifest 里其他 49 个 unique component_sets，按字母排序。**Library keys 留空**（用时 import 一次填回；优先 grep 这个表确认是否存在再 import）。

| Component | Axes | Variants | Status | Notes |
|---|---|---|---|---|
| `After selecting R wi` | — | 1 | 🟡 | 名字像 file-internal 标记，可能是 leak，需验 |
| `auto recover` | — | 1 | 🟡 | 同上 |
| `Brand color` | — | 1 | 🟡 | 色板示例，非组件 |
| `Breadcrumb/Item` | state | 4 | 🟡 | navigation breadcrumb 单项 |
| `Button/dark L` | icon×style×color×status×radius×fixedWidth | 400 | 🟡 | M 的 large 版本 (40px) |
| `Button/dark S` | 同上 | 400 | 🟡 | small 版本 (28px) |
| `Button/dark XS` | 同上 | 400 | 🟡 | ⚠️ operator console **不要用** (M7) |
| `Button/light L` | 同上 | 400 | 🟡 | light theme |
| `Button/light M` | 同上 | 400 | 🟡 | light theme |
| `Button/light S` | 同上 | 400 | 🟡 | light theme |
| `Button/light XS` | 同上 | 400 | 🟡 | light theme |
| `Button/url link` | dark theme×status | 4 | 🟡 | 链接样式按钮 |
| `Chart` | type | 6 | 🟡 | 图表组件 |
| `check box` | dark theme×status×enable | 12 | 🟡 | 多选用 |
| `Dark/filled btn` | Property 1 | 3 | 🟡 | 名字像旧库残留，优先用 `Button/dark M` |
| `Dark/outlined btn` | Property 1 | 3 | 🟡 | 同上 |
| `Dark/text btn` | Property 1 | 3 | 🟡 | 同上 |
| `Drop down List/Cascading` | Dark Theme×Type | 4 | 🟡 | 级联下拉 |
| `Drop down List/Item` | Theme×Type×IsParent×Checked×Active×Disabled×Hover | 41 | 🟡 | 下拉单项 |
| `Drop down List/Select` | Dark Theme×Type | 8 | 🟡 | 下拉容器 |
| `Form Item` | Type×Layout×Theme×LabelWidth×Status | 64 | 🟡 | 表单字段 wrapper |
| `Home` | — | 1 | 🟡 | 名字异常，可能 leak |
| `Icon Guides 16*16` | — | 1 | 🟡 | 设计指引非组件 |
| `input box/line` | 同 input box/filled | 112 | 🟡 | line 风格 |
| `InputNumber` | Property 1 | 4 | 🟡 | 数字输入 |
| `Light/filled btn` | Property 1 | 3 | 🟡 | 旧库残留 |
| `Light/outlined btn` | Property 1 | 3 | 🟡 | 旧库残留 |
| `Light/text btn` | Property 1 | 3 | 🟡 | 旧库残留 |
| `Neutral Color` | — | 1 | 🟡 | 色板示例 |
| `Notification` | theme×status | 14 | 🟡 | inline message banner |
| `Pagination` | Type | 3 | 🟡 | 翻页 |
| `Popup Box` | Theme | 2 | 🟡 | modal 替代 prompt message? 需对比验证 |
| `Progress` | theme×status×size | 16 | 🟡 | 进度条 |
| `radio` | dark theme×status×enable | 8 | 🟡 | 单选按钮 |
| `Rating` | theme×value | 10 | 🟡 | 评分 |
| `select box/filled` | 同 input box | 144 | 🟡 | 下拉 select |
| `select box/line` | 同上 | 144 | 🟡 | line 版本 |
| `Slider` | theme×size | 4 | 🟡 | 滑块 |
| `Step/Item` | direction×style×state | 9 | 🟡 | 步骤条单项 |
| `switch` | dark theme×status×enable×loading | 18 | 🟡 | 开关 |
| `Table` | Type×Align | 6 | 🟡 | 表格 |

---

## Icons (647 total · 28 namespaces)

**直接用，不要用 Unicode glyph 替代。** 命名清晰：`icon/Action/Concept`。

| Namespace | Count | 主要 icon | Notes |
|---|---|---|---|
| `icon/output` | 81 | — | 输出/视频/流 类 |
| `icon/Video` | 57 | `Video/go to` (跳转/外链) | broadcast 视频操作 |
| `icon/indicator` | 51 | — | 状态指示 dot/glow 等 |
| `icon/input` | 41 | `input/SRT` | 输入信号源类型 |
| `icon/file` | 40 | `file/log` | 文件操作 |
| `icon/Meeting` | 38 | — | 会议/通讯 |
| `icon/Edit` | 37 | `Edit/Add 1`, `Edit/Delete` (X 关闭/移除), `Edit/Edit`, `Edit/Copy` | 编辑/CRUD |
| `icon/Preview` | 31 | `Preview/Hide` | preview/眼睛切换 |
| `icon/user` | 29 | `user/ID` | 用户标识 |
| `icon/Picture` | 24 | — | 图片操作 |
| `icon/mark` | 23 | — | 标记/书签 |
| `icon/others` | 21 | `others/global control` | 杂项 |
| `icon/audio` | 17 | — | 音频操作 |
| `icon/Message` | 17 | `Message/Notification 2` | 消息提示 |
| `icon/Arrow` | 16 | `Arrow/Double up` (展开↑), `Arrow/Double down` (折叠↓), `Arrow/Dropdown`, `Arrow/Sorting` | 方向/箭头 |
| `icon/network` | 16 | — | 网络/连接 |
| `icon/Filter` | 15 | `MMA/filter` (待验证 namespace) | 过滤 |
| `icon/Setting` | 14 | `Setting/Setting 1`, `Setting/Switch` | 设置 |
| `icon/Time` | 13 | — | 时间/时钟 |
| `icon/Feature` | 11 | — | 功能特性标记 |
| `icon/share` | 11 | — | 分享/外发 |
| `icon/Cut` | 10 | `Cut/Hard cut`, `Cut/Dissolve` | 视频剪辑过渡 |
| `icon/Menu` | 9 | `menu/3` | 菜单触发 |
| `icon/pay` | 9 | — | 计费 |
| `icon/Search` | 5 | `MMA/search` | 搜索 |
| `icon/location` | 5 | — | 地理位置 |
| `icon/load` | 4 | — | loading 状态 |
| `icon/logo` | 2 | `logo/TVU` | 品牌 logo |

### 已知具体 icon (用过实证 key)

| Icon name | Key | 语义 |
|---|---|---|
| `icon/Arrow/Double up` | `2be13b82bf5bb8e32142e82d06bc20a14cfb79c2` | card 展开（点击折叠） |
| `icon/Arrow/Double down` | `9b7938b81ceba8cb1a55661a9fbbfaa5980a6493` | card 折叠（点击展开） |
| `icon/Arrow/Dropdown` | `eba15c0b438d16e88b86ffebe86423aabef212e9` | dropdown trigger |
| `icon/PP/play` | `260bf857862c7294aaaf3b8883efbc7a7d757e9f` | "Start" action（Start In / Start Out） |
| `icon/Edit/Delete` | `6379e02068f1cad59776d408d63cb9f4b416a594` | "Remove" / X close |
| `icon/Edit/Add 1` | `b55b65cce73c6dc552b44769025770d4025d6056` | 添加 |
| `icon/Video/go to` | `07b3d6414821094250313062d0d9977b09d0ed14` | 跳转外链/UI（Open GUI 用此 icon） |
| `icon/MMA/search` | `c9e2e51836547104114154c73bf10ce33e697386` | search field 内嵌 |
| `icon/MMA/filter` | `8cde6a706478268b9b42642809c65ed8913d4d4a` | filter trigger |
| `icon/menu/3` | `f5852eafa50b905e86dee2d20dd611dcdcf1b876` | top bar menu |
| `icon/message/notification 1` | `c05b1ead2bf860ada6d3c18170e5a24647b8658a` | top bar notification |
| `icon/Setting/Setting 1` | `3233ac2db519e7221673c4bd5e5f3c1e8bda4a53` | 设置入口 |
| `icon/Setting/Switch` | `9a6fdd6764d62d08a7a542e0bc3a229de8742503` | 设置切换 |
| `icon/file/log` | `70da3e2612f1c7c8f78ad83d380946986ba24f74` | 日志/记录 |
| `icon/user/ID` | `bddcef5f3dc2e868db753f0969d52174932ff22e` | 用户 ID |
| `icon/Preview/Hide` | `d969a9441f5e442b1fbee6eba42c403a4ecc55c1` | 预览隐藏切换 |
| `icon/Preview/4` | `b2cb6ce9757ffd2b91fd86ca78d6497890d3c2c9` | 2×2 grid / 4-tile layout —— **Overview / Dashboard / All Apps 入口的标准图标**（MicroApps Console Plan B 2026-05-14 实证：sidebar Overview row） |
| `icon/Preview/9` | `8f129b19b7eaf74bbae82c381df51a846310cb82` | 3×3 grid / 9-tile layout |
| `icon/Preview/6` | `fe01f4f75abacb88bcbc4ad6c593a2f9ccba1128` | 2×3 grid / 6-tile layout |
| `icon/Preview/1` | `3aa90987939670e1ca44de6edc7eee22ce3ea570` | single tile |
| `icon/Preview/25` | `93447a33188148bdf4debe1d78330fbab7627b9f` | 5×5 grid / 25-tile layout |
| `icon/Preview/grid view` | `301206fa43b380236df529891c60088446721f7d` | 通用 grid view 视图切换 |
| `icon/Preview/List` | `0ee7e3971009799b2b6666d78f9a95f971c626b9` | 列表视图切换（与 grid view 配对） |
| `icon/Preview/Layout` | `76f23233c100f9d2ffd941859ed2619ea3cc8b78` | 布局切换 |
| `icon/Preview/sidebar` | `2edf26729d98acafec5a981f73f2861e00662def` | 侧栏切换 |
| `icon/PL/more` | `c07fc7400241ef39ebef5ed0742bfec5f8cbd533` | 更多操作 (...) |

---

## Variables (color / spacing / radius / size)

参考 [`figma-data/normalized/variables.json`](../../figma-data/normalized/variables.json) 拿全集。**已知常用**：

### Status colors (broadcast convention M3)
- `UX/Red/Default` (key `a3f82a4b...`) — Live = on-air
- `UX/Brand/Brand` (key `ea8c2383...`) — Preview / standby / **primary brand identity (Active states' left border / badge primary fill)**
- `UX/Brand/Hover` (key `eab4ef3b...`) — **Hover affordance** for brand-colored interactive elements（sidebar item hover bg / button hover bg / etc.）。**禁止用 `UX/Brand/Brand` 给 hover 状态**——hover 有专门 token
- `UX/Brand/Disable` (key `9166c747...`) — disabled state of brand action
- `UX/Red/Hover 1` (key `fc189c23...`) — red hover variant
- `UX/Blue/Hover 1` (key `c4aedbd6...`) — blue hover variant
- `UX/Orange/Hover 1` (key `e3fe4750...`) — orange hover variant
- `UX/Grey/grey-7 #7B7B7B` (key `722ad30e...`) — Inactive
- `Color Type/Icon/Active & Hover` (key `f291aa2b...`) — icon-specific active/hover color（scope: FRAME_FILL / SHAPE_FILL / STROKE）
- `Color Type/Background/Hover Grey Button` (key `7d927a84...`) — grey button hover bg
- `Color Type/Text/Hover Grey button` (key `5cd07e8e...`) — grey button hover text

> **Hover ≠ Brand 实证**（MicroApps Console Plan B 2026-05-14）：Sidebar Item Hover variant 初版误用 `Color Type/Background/Layer_3` 灰 bg，缺乏品牌色 hover affordance；修正为 `UX/Brand/Hover @ 0.10`。Active 仍用 `UX/Brand/Brand` 作主品牌身份。规则：**hover = brand-hover @ low alpha / active = brand pure**。

### Surface (dark theme)
- `Color Type/Background/Layer_1` (`1c7389d2...`) — page bg
- `Color Type/Background/Layer_3` (`93476370...`) — card bg
- `Color Type/Background/Layer_4` (`f576bb4f...`) — elevated header
- `Color Type/Background/Top Bar` (`18e41d5d...`) — top bar bg

### Text
- `Color Type/Text/Heading & Button` (`232edb81...`) — primary
- `Color Type/Text/Text_1` (`422926b1...`) — body
- `Color Type/Text/Tips` (`b3b5983a...`) — secondary
- `Color Type/Text/Placeholder & Button` (`1fe2a119...`) — placeholder

### Border / divider
- `Color Type/Line/Deep Divider` (`8a6fbbc2...`)
- `Color Type/Line/Light Divider` (`51ef402a...`)

### Spacing / Radius
- `Spacing/XXS XS S M L XL XXL`
- `Radius/XS S M`

---

## Maintenance

### Variant-leak 问题
`figma-data/normalized/components.manifest.json` 含 4078 条 variant-leak entry（figmaName 像 `dark theme=off, status=default, ...`）。Filter `figmaName.includes('=')` 过滤即可。**根本原因在 extract 步骤**——`figma-sync/extract.mjs` 把某些 component_set 的 variants 拆成独立 .json 文件保存到 `components-tokenized/`。这是数据质量 bug，将来要修，但不阻塞 catalog 使用。

### 每个 entry 的演化路径
🟡 → ✅ 的方式：
1. 任务里实际用到 → import sample instance 看 variant properties
2. 写实 Primary use / Extension scenarios / Don't use（哪怕只填 1-2 行）
3. 把 Library key 填回（可从 instance 反推）
4. 加 `Used by` 段记录在哪个 mockup 用过
5. status 改为 ✅

### Bootstrap 重生成
将来如果要做自动 catalog 维护脚本，建议放在 `figma-sync/generate-component-catalog.mjs`：
- 输入：`components.manifest.json` + `figma-to-code-mapping.json`
- 输出：本文件的 🟡 表格部分（self-overwrite）
- 保留：✅ entry 的手填部分（用 HTML 注释 `<!-- BEGIN MANUAL: <name> -->...<!-- END MANUAL -->` 边界保护）

---

## 历史

- **2026-05-06** — 首次 bootstrap。来自 Session Dashboard mockup 阶段第三次 M2 库验证踩坑（Badge / prompt message / Tab/Item 全在库但被错判"缺件"）的反思产物。把"AI 临场 brainstorm 库类比"升级为"AI 查表"。
