diff --git a/design-refs/mockup/components-page-1.png b/design-refs/mockup/components-page-1.png index 4132207..0ada3b5 100644 Binary files a/design-refs/mockup/components-page-1.png and b/design-refs/mockup/components-page-1.png differ diff --git a/design-refs/mockup/components-page-2.png b/design-refs/mockup/components-page-2.png index 223e8fb..6031262 100644 Binary files a/design-refs/mockup/components-page-2.png and b/design-refs/mockup/components-page-2.png differ diff --git a/design-refs/mockup/components-page-3.png b/design-refs/mockup/components-page-3.png index c3a9154..51b8c56 100644 Binary files a/design-refs/mockup/components-page-3.png and b/design-refs/mockup/components-page-3.png differ diff --git a/design-refs/mockup/components-page-4.png b/design-refs/mockup/components-page-4.png index 672b755..b92b97b 100644 Binary files a/design-refs/mockup/components-page-4.png and b/design-refs/mockup/components-page-4.png differ diff --git a/design-refs/mockup/components-page-5.png b/design-refs/mockup/components-page-5.png index 9e05a3c..e500afe 100644 Binary files a/design-refs/mockup/components-page-5.png and b/design-refs/mockup/components-page-5.png differ diff --git a/design-refs/mockup/components-page-6.png b/design-refs/mockup/components-page-6.png index 8f2e393..418928f 100644 Binary files a/design-refs/mockup/components-page-6.png and b/design-refs/mockup/components-page-6.png differ diff --git a/design-refs/mockup/components-page-7.png b/design-refs/mockup/components-page-7.png index a48b36c..e3f12ce 100644 Binary files a/design-refs/mockup/components-page-7.png and b/design-refs/mockup/components-page-7.png differ diff --git a/design-refs/mockup/components-page-8.png b/design-refs/mockup/components-page-8.png new file mode 100644 index 0000000..4882762 Binary files /dev/null and b/design-refs/mockup/components-page-8.png differ diff --git a/design-refs/mockup/components-page-9.png b/design-refs/mockup/components-page-9.png new file mode 100644 index 0000000..6b18da6 Binary files /dev/null and b/design-refs/mockup/components-page-9.png differ diff --git a/design-refs/mockup/components.html b/design-refs/mockup/components.html index c84aff2..5142847 100644 --- a/design-refs/mockup/components.html +++ b/design-refs/mockup/components.html @@ -163,11 +163,45 @@ .ev .r3 { font-size: 9.5px; color: #6b6b6b; } /* P1 目录卡 */ - .toc-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; } + .toc-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; } .toc-card { background: #fff; border-radius: 14px; padding: 14px 16px; box-shadow: 0 1px 2px rgba(26,26,26,0.06); } .toc-card .t { font-family: "DejaVu Sans Mono", monospace; font-size: 13.5px; font-weight: 700; color: #6d28d9; } .toc-card .c { font-size: 12.5px; font-weight: 700; color: #1a1a1a; margin-top: 3px; } .toc-card .d { font-size: 11px; color: #8a8a8a; margin-top: 3px; line-height: 1.45; } + /* P7 课程关系图 */ + .gnode { + position: absolute; width: 180px; height: 46px; + background: #ffffff; border-radius: 12px; + display: flex; align-items: center; gap: 9px; padding: 0 14px; + box-shadow: 0 1px 2px rgba(26,26,26,0.10); + } + .gnode .t { font-size: 13px; font-weight: 700; color: #1a1a1a; } + .entry-badge { + position: absolute; top: -10px; left: -10px; + width: 22px; height: 22px; border-radius: 50%; + background: #6366f1; color: #ffffff; font-size: 12px; font-weight: 700; + display: flex; align-items: center; justify-content: center; + } + .gedges { position: absolute; inset: 0; pointer-events: none; } + .glegend { display: flex; gap: 22px; font-size: 12px; color: #555; align-items: center; } + .glegend .sw { display: inline-block; width: 34px; border-top: 2px solid #555; margin-right: 6px; vertical-align: middle; } + .glegend .sw.rel { border-top-style: dashed; border-top-color: #b9b9b9; } + + /* P8 入口梳理 */ + .profile-card { + background: #ffffff; border-radius: 16px; padding: 18px 20px; + width: 368px; display: flex; flex-direction: column; gap: 11px; + box-shadow: 0 1px 2px rgba(26,26,26,0.06); + } + .profile-card .ph { display: flex; align-items: center; gap: 10px; } + .path-chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; } + .path-chips .arr { color: #8a8a8a; font-size: 11px; } + .path-chips .pchip { font-size: 11px; padding: 3px 10px; border-radius: 999px; border: 1px solid #cfcfcd; color: #1a1a1a; background: #ffffff; } + .path-chips .pchip.start { border-color: #6366f1; color: #6366f1; font-weight: 700; } + table.spec.tight { font-size: 12px; } + table.spec.tight th { padding: 4px 10px 4px 0; } + table.spec.tight td { padding: 3px 10px 3px 0; } +
@@ -182,8 +216,8 @@| Prop | 类型 | 说明 |
|---|---|---|
title | string | 章节名(分类 label) |
desc | string | 预期结果一句话 |
done | boolean | true → ✓ 胶囊 + ✓ 钮 |
relations | string[] | 空 → 虚线占位 chip |
prerequisites | string[] | 前置章节 → 实线 chip + 图中实线边 |
related | string[] | 关联章节 → 虚线 chip + 图中虚线边 |
icon / tint | emoji / hex | IconTile 底色与图标 |
href | string | 章节分类索引路由 |
| Prop | 类型 | 说明 |
|---|---|---|
nodes | Course[] | 直接取 courses.ts,渲染为迷你章节卡 |
edges.prerequisites | [from,to][] | 实线箭头,由每章 prerequisites 派生 |
edges.related | [from,to][] | 虚线,由 related 派生 |
entryPoints | Entry[] | ①②③ 入口徽标,数据见 EntryGuide |
| Prop | 类型 | 说明 |
|---|---|---|
profiles[].name | string | 读者画像名 |
profiles[].entry | courseId | 起点章节,对应图中 ①②③ |
profiles[].path | courseId[] | 推荐路径(可空 = 按需点读) |
profiles[].note | string | 跳读/回看策略一句话 |
| 设计组件 | 实现文件 |
|---|---|
| DashboardPage | pages/index.tsx |
| TopBar | navbar 主题化 docusaurus.config |
| StatsRow | CourseShelf/StatsRow |
| CourseCard(/Media) | CourseShelf/CourseCard |
| EventsPanel | CourseShelf/EventsPanel |
| courses/events 数据 | courses.ts / events.ts |
| CourseGraph / EntryGuide | CourseShelf/CourseGraph 等 |
| 数据 | courses.ts / events.ts / entries.ts |