summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-18 12:04:29 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-18 12:04:29 +0800
commitfc952a2876362bf834a60c35ef0f70b0278df197 (patch)
tree77f8bfc9c4297537599c90bdecf42116b7497862
parent17e30105538f419c6abef2a69ffd4f0eb4cf238b (diff)
downloadstrategy-lab-fc952a2876362bf834a60c35ef0f70b0278df197.tar.gz
[变更性质] docs(frontend)
[新增功能] round3 迁移矩阵文档:legacy 选择器→shadcn 组件映射、主题 token 来源、验证口径 [实现方案] docs/ui-redesign-round3.md [影响范围] docs/
-rw-r--r--docs/ui-redesign-round3.md49
1 files changed, 49 insertions, 0 deletions
diff --git a/docs/ui-redesign-round3.md b/docs/ui-redesign-round3.md
new file mode 100644
index 0000000..60147c3
--- /dev/null
+++ b/docs/ui-redesign-round3.md
@@ -0,0 +1,49 @@
+# UI 迁移 round3 — shadcn-svelte 全面化
+
+round1/round2 已迁移 AuthPages/AdminPage 等部分页面;round3 完成剩余全部页面与
+legacy 工具类的清除。组件统一来自 `shadcn-svelte` registry(CLI 生成于
+`src/lib/components/ui`,style: mira)。
+
+## 主题 tokens
+
+- preset b1D0dv72 落后为 neutral 默认,按 Leader 截图(Stripe 风 mint 主色)
+ 重配 `:root`:
+ - `--radius: 0.75rem`(--radius-lg/-xl/-2xl… 由其派生)
+ - `--primary: #0e3a30`(深墨绿,白字)
+ - `--ring` / `--brand: #70dab6 / #58d3aa`,`--accent: #e3f7ef`
+ - chart 家族 mint 梯度(--chart-1..5)
+- 第二主题 `.theme-amber`:`--brand: #f0ae00`、`--ring`、`--primary: #b87700`
+- `src/lib/theme.ts`:`currentTheme()/applyTheme()/toggleTheme()`,类挂在
+ `<html>`(`theme-amber`),localStorage `sl-brand-theme`,模块加载即生效。
+- `html { font-size: 14.5px }` 保留(历史口径),probe 校验按 rem 等值换算。
+
+## 迁移矩阵(旧选择器 → 新组件)
+
+| legacy | 迁移后 |
+| --- | --- |
+| `.btn` / `.btn.primary` / `.btn.outline` | `Button`(variant default/outline/secondary/ghost/destructive,size sm/icon-sm) |
+| `.banner error` / `.banner info` / `.banner warn` | `Alert`(destructive:`bg-[var(--danger-soft)] border-[#f2c7c7]`;info:`bg-[var(--brand-soft)] border-[#bfe9db]`;warn:`bg-[var(--warn-soft)] border-[#f0ddb4]`) |
+| `table.data` | `Table.Root/Header/HeaderRow/Head/Body/Row/Cell` |
+| `.badge`(grey/teal/warn) | `Badge`(secondary/outline/destructive) |
+| `.tabs button` | `Tabs.Root + Tabs.List variant="line" + Tabs.Trigger`(bind:value / onValueChange) |
+| `.metric-card` / `form.card` | `Card.Root class="m-tile"`(9 张 metric tile,resultsAccounting 断言锚点) |
+| `.metric-row` 卡片 | `Card.Root class="metric-r3"`(ProjectMetricRow 四卡) |
+| 配套表单 `.input` / `.label` | `Input` / `Label` |
+
+保留为纯排印/布局 token(非组件选择器):`.stack/.row/.spread/.grid2/.grid3/
+.cols-2/.table-wrap/.hint/.num/.mlabel/.mvalue/.metric-grid/.run-split` 及
+900px 收敛媒体查询。
+
+## 验证
+
+- `npm run check`:0 error 0 warning
+- `npx vitest run`:88/88(strategyTab 超时放宽至 15s —— 页面加载组件变重后套件满载偶发 >5s)
+- probe(scripts/ui-auth-shots.mjs,18/18,`artifacts/ui-shadcn-round4/`):
+ 三档宽度 0 overflow、0 pageError、tabbar 正确挂载/显隐、面包屑齐全、
+ metricCards=4、sparks=2、cardRadiusOk=true(--radius ≥ 0.75rem)
+
+## 已知边界
+
+- Layerchart 图表(round1 引入)保持原状。
+- `Layout.svelte` 结构未大动(sidebar/topbar 保留),页宽已无 780px 上限。
+- 使用 shadcn-svelte v1.7.0;`cn` 经本地 `clsx + tailwind-merge` 工具。