Dev Portal 視覺重塑與資料整理
Context
Phase 1 Link Layer(#694–#698)已將 Dev Portal 內容層建置完成,#699 也將 Cloudflare Pages 部署 repo-side 準備就緒。但目前 Dev Portal 的呈現有兩個顯著問題:
- 內頁完全沒有自訂樣式。首頁有 573 行
custom.css(拓撲圖、卡片網格),但start-here、domain-maps、flows等內頁直接使用 Docusaurus 預設樣式,table 是無底色邊框、heading 沒有層次、整體質感顯著低於首頁。使用者實測後反映「沒有質感」。 - 資料殘片散落。
domain-maps.md有 5 個「Coming soon」字串、flows.md有 1 個未完成流程,且 sidebar 結構扁平(5 個分類),P0 onboarding 路徑與 reference / archive 條目混雜。
本次工作將以 engineering console × atlas workbook 為視覺方向,全面重塑 Dev Portal 的 CSS 系統、補上 3 個 MDX 元件、並重新組織 sidebar 與資料殘片。目標是讓 Dev Portal 在 *.pages.dev 公開部署前達到「人類與 AI agent 都覺得有質感且可掃讀」的狀態。
視覺方向
採用 engineering console / atlas workbook:
- 安靜的文件工作台:灰底 board、白色 card、薄 border、低陰影
- 以藍/綠/橘/紅 token 做狀態與拓撲提示,但避免整頁變成高彩度看板
- 首頁像專案導覽 console;內頁像可掃讀的 engineering runbook
- Callout 保留左側色條語彙,PR2/PR3 若導入 MDX markup 再補更精準的狀態型別
設計系統
色彩 token
:root {
--dp-primary: #0052cc;
--dp-success: #00875a;
--dp-warning: #ff8b00;
--dp-neutral: #6b778c;
--dp-danger: #de350b;
--dp-bg-board: #f4f5f7;
--dp-bg-card: #ffffff;
--dp-bg-subtle: #fafaf9;
--dp-text-primary: #172b4d;
--dp-text-secondary: #5e6c84;
--dp-text-muted: #9b9a97;
--dp-border: #dfe1e6;
--dp-border-strong: #c1c7d0;
--dp-radius-sm: 3px;
--dp-radius-md: 6px;
--dp-radius-lg: 8px;
--dp-shadow-card: 0 1px 0 rgba(9, 30, 66, 0.25);
--dp-shadow-card-hover: 0 4px 12px rgba(9, 30, 66, 0.15);
}
[data-theme='dark'] {
--dp-bg-board: #0f1117;
--dp-bg-card: #1a1d24;
--dp-text-primary: #f9fafb;
--dp-text-secondary: #9ca3af;
--dp-border: #1f2937;
}
字型
- 內文:
Inter(既有,移除 Avenir Next / Optima) - 中文 fallback:
Noto Sans TC(保留) - 代碼:
JetBrains Mono(取代現有 SFMono)
CSS 元件(自動套用)
| Selector | 樣式 |
|---|---|
article table | 白底、表頭 --dp-bg-board 灰底、表格邊框 1px solid var(--dp-border)、border-radius: var(--dp-radius-lg)、overflow: hidden、tbody row :hover 加 background: var(--dp-bg-subtle) |
article h2 | 左側 4px 漸層色條(linear-gradient(180deg, var(--dp-primary), var(--dp-success)))、padding-left: 12px、margin 32px 0 12px |
article h3 | uppercase label 風格(font-size: 13px; letter-spacing: .08em; color: var(--dp-text-secondary)) |
article :not(pre) > code | background: var(--dp-bg-board); color: var(--dp-danger); padding: 1px 5px; border-radius: var(--dp-radius-sm) |
article pre | 深底 #172b4d + 白字、JetBrains Mono、border-radius: var(--dp-radius-lg) |
article blockquote | 左側 4px 色條(依首字 emoji 變色:💡 黃、⚠️ 橘、🚨 紅、📝 藍)、淡底色 |
article a | color: var(--dp-primary) + 點線下底(text-decoration: underline dotted),hover 變實線 |
MDX 元件
<StatusBadge status="..." />
type StatusBadgeProps = {
status: 'complete' | 'draft' | 'planned' | 'blocker' | 'in-progress';
children?: React.ReactNode;
};
對應色彩:complete = --dp-success、draft = --dp-warning、planned = --dp-neutral、blocker = --dp-danger、in-progress = --dp-primary。
位置:apps/docs/src/components/StatusBadge/