CH14 · Design System 詳細 ROADMAP

計畫文件,不會被 Quartz 渲染。 回主 roadmap → frontend/ROADMAP.md


章節目標

Design System(DS)是前端能力走到成熟階段的里程碑——整合了元件設計、視覺系統、a11y、測試、打包、版本管理、跨框架、團隊治理。建立從 Design Token 到 Headless 元件、從 Storybook 到 Figma 整合、從個人 UI Library 到組織級 DS 的完整能力。


🌱 基本介紹

#主題SlugStage大綱
01Design System 是什麼01-what-is-design-system🌱DS 定義、包含的東西(tokens、components、guidelines、patterns)、為什麼不只是「元件庫」
02Design Token 是什麼02-what-is-design-token🌱設計決策的變數化、跟 CSS 變數差異、W3C Design Tokens Community Group 格式
03Component Library vs Design System 差異03-library-vs-system🌱Library 是「元件」;System 是「元件 + tokens + 文件 + 流程 + 治理」

❓ 為什麼需要

#主題SlugStage大綱
04為什麼需要 Design System(元件庫不夠嗎)04-why-design-system🌱一致性、團隊效率、設計債、品牌、onboarding;什麼規模才值得投入(2 個產品不夠、5 個要考慮、多團隊必做)
05為什麼 Design Token 是 DS 基礎05-why-design-tokens🌱設計與程式碼之間的契約、跨平台一致(Web / iOS / Android)、主題切換、dark mode 的唯一正解
06為什麼不直接用 Material UI / Ant Design06-why-not-off-the-shelf🌱品牌獨特性、bundle size、客製困難、vendor lock-in、其實多數情境用現成的就夠的反省
07為什麼大公司都自建 DS07-why-big-companies-build-own🌱跨產品一致、品牌核心、累積的設計語言、離職工程師帶不走;Material / Polaris / Lightning / Carbon / Atlassian 為什麼都自己做

🕰️ 演進

#主題SlugStage大綱
08DS 演進史08-ds-evolution🌱Brand Guidelines(紙本)→ Style Guide(BBC 2010s)→ Pattern Library(MailChimp)→ Design System(Salesforce Lightning 2015)→ Token-driven(2020+)
09Storybook 演進09-storybook-evolution🌱React Storybook(2016)→ 支援多框架 → CSF 3(2022)→ Storybook 8(Vitest 整合、CSF 3 play function)
10Headless UI 興起10-headless-ui-rise🌱為什麼 Radix / Headless UI / Ark UI / React Aria 成主流、跟傳統 UI library 差異、shadcn/ui 現象
11Figma × Code 同步演進11-figma-code-sync-evolution🌱Figma Dev Mode(2023)→ Tokens Studio → Anima / Builder.io → AI 生成(v0.dev),設計稿到程式碼的變化

🧠 知識型

Design Tokens

#主題SlugStage大綱
12Design Token 三層架構12-token-architecture🌱Base tokens(color.blue.500)→ Semantic tokens(color.primary)→ Component tokens(button.bg),為什麼要分層
13Token 格式與工具13-token-format-tools🌱W3C DTCG 格式、Style Dictionary、Tokens Studio for Figma、Supernova,選型考量
14Token 導出到各平台14-token-platform-export🌱從 JSON token 產生 CSS / Sass / JS / Swift / Android 檔案、cross-platform 一致
15Dark mode + Theming via tokens15-dark-mode-theming🌱用 semantic token 實作主題切換、多主題(dark / light / high-contrast)、[data-theme] 切換

Component API 設計

#主題SlugStage大綱
16Component API 設計原則16-component-api-principles🌱可組合優於 props、最小 API surface、預設值哲學、為什麼 Button 不該有 type="success"(改用 composition)
17Compound Components Pattern17-compound-components🌱<Tabs>/<Tabs.List>/<Tabs.Panel> 模式、context 共享、靈活組合
18Headless Component 設計18-headless-components🌱行為與樣式分離、Radix / React Aria / TanStack 的做法、為什麼這是 2024+ 主流
19Polymorphic Components(as prop)19-polymorphic-components🌱<Box as="a">、TypeScript 支援、Radix 的 asChild pattern
20Controlled vs Uncontrolled 取捨20-controlled-uncontrolled-api🌱元件內部是否管理 state、如何同時支援兩者、defaultValue vs value
21A11y 內建 DS21-a11y-built-in🌱DS 元件的 a11y 是內建義務、不是可選、Radix / React Aria 為什麼自帶 a11y

文件與 Storybook

#主題SlugStage大綱
22Storybook 基礎22-storybook-basics🌱CSF(Component Story Format)、args / argTypes、controls、actions
23Storybook 進階23-storybook-advanced🌱play function、interaction test、docs page、自動化 props table
24自動化 Component API 文件24-component-docs-automation🌱TSDoc / JSDoc → Storybook、react-docgen、API extractor
25視覺迴歸測試整合 DS25-vrt-for-ds🌱Chromatic / Percy / Lost Pixel、每個元件的 baseline、CI 整合

打包與發布

#主題SlugStage大綱
26Monorepo 組織 DS26-ds-monorepo🌱Turborepo / Nx / pnpm workspaces、packages 分層(core / components / icons / themes)
27打包策略(ESM + CJS + Types)27-ds-build-strategy🌱tsup / Rollup / Rolldown、dual package、tree-shaking 友善、sideEffects: false
28Versioning / Changeset28-ds-versioning🌱@changesets/cli、semver 用法、breaking change 溝通
29Release Automation29-ds-release-automation🌱GitHub Actions / release-please、canary 發布、自動 changelog

Theming

#主題SlugStage大綱
30Runtime vs Build-time Theming30-runtime-buildtime-theming🌱兩種的效能 / 彈性 tradeoff、CSS Variable 為什麼是現代解
31Multi-tenant / White-label31-multi-tenant-theming🌱SaaS 多租戶、品牌客製、token override 策略

治理

#主題SlugStage大綱
32DS 治理模型32-ds-governance-models🌱Solitary(一人做)、Centralized(專職團隊)、Federated(多團隊貢獻)、Cyclical(混合),選型考量
33Contribution Workflow33-contribution-workflow🌱PR review 流程、RFC 機制、新元件納入標準、maintainer 責任
34Breaking Change 管理34-breaking-change-management🌱deprecation 週期、migration guide、codemod 提供、major release 節奏
35使用者支援35-ds-user-support🌱Office hour、Discord / Slack 支援、feedback loop、adoption metrics

跨框架

#主題SlugStage大綱
36跨框架 DS 策略36-cross-framework-ds🌱Web Components 方案、Headless + Framework wrappers(React/Vue 各自 wrap)、Stencil

Figma 整合

#主題SlugStage大綱
37Figma Dev Mode37-figma-dev-mode🌱Dev Mode 能做什麼、inspect specs、code connect、component linking
38Token 雙向同步(Figma ↔ Code)38-figma-token-sync🌱Tokens Studio / Supernova 雙向同步、single source of truth 戰略
39AI 驅動的設計稿轉 Code39-ai-design-to-code🌱v0.dev / Builder.io / Anima / Locofy 2024 比較、哪些適合 DS 情境、局限性

🔧 小實作注意事項

#主題SlugStage大綱
40建立第一個 Design Token 系統40-first-token-system🌱Style Dictionary 實戰、base → semantic → component、輸出 CSS + JS
41Headless Dropdown 從零實作41-headless-dropdown🌱跟 Radix 對比、a11y 建構、key flow、focus management
42Storybook 導入實戰42-storybook-setup🌱Vite + React + TS + Tailwind,Storybook 8 零配置起手
43Token 版本升級策略43-token-upgrade-strategy🌱primary.500 改名 → migration guide / codemod / 併存期
44跨 React / Vue 共用 DS44-cross-framework-ds-practice🌱Tokens 共用 + 各自 wrapper、monorepo 設定、testing 策略
45發布一個 DS npm package45-publish-ds-package🌱從 Storybook 到 npm、scoped package、主題支援
46走歪的信號:DS 設計者 / 架構師 / 前端 Senior 的自我檢視46-signs-of-going-astray🌱走歪的 10 個信號:只談抽象沒程式碼、沒有個人 awesome repo(用過的工具收藏)、沒有 proto repo(驗證新技術的沙盒)、推薦別人方案前沒用過、用 buzzword 但解釋不清底層、引用 2 年前資訊當現狀、只看 talk 不讀源碼、評斷技術靠人情而非技術、不願意說「我還不熟」、追求完美架構卻沒產出。避免走歪的實作習慣:維護個人 awesome repo(只放用過的)、每年至少 1 個 proto project、讀源碼不只讀文章、定期跟實戰者對話、對不熟領域誠實標記、每個觀點都要有 code evidence、避免評論沒用過的工具。Dunning-Kruger 在技術圈:抽象領域(架構 / DS)特別容易被 knowledge-without-practice 綁架,DS 設計者尤其要警覺——整天開會畫 token 圖但沒實際碰組件的那種

💣 Anti-pattern

#主題SlugStage大綱
47DS Anti-patterns47-ds-anti-patterns🌱過早建 DS(2 個 component 硬做系統)、跳過 token 直接做 component、沒治理的 federated DS(混亂)、Breaking change 不預告、Storybook 跟實際使用脫節、a11y 事後補、Figma 設計稿跟 code 永遠同步不上

🧰 對應檢查工具

#主題SlugStage大綱
48DS 工具生態48-ds-tooling🌱Storybook / Chromatic / Ladle / React Cosmos / Style Dictionary / Tokens Studio / Supernova / Zeplin / Anima / Figma Dev Mode / changeset / tsup / Rolldown

📎 補充

#主題SlugStage大綱
S01知名 DS 研究s01-famous-design-systems🌱Material / Polaris(Shopify)/ Lightning(Salesforce)/ Carbon(IBM)/ Atlassian / Fluent(Microsoft)/ Primer(GitHub),每家特色
S02DS 成功指標(ROI / Adoption)s02-ds-success-metrics🌱adoption rate、時間節省、bug reduction、consistency score 怎麼測
S03Icon System 設計s03-icon-system🌱SVG sprite / Icon font / React component、命名策略、size variants、linecap
S04Illustration / Motion Systems04-illustration-motion🌱插圖系統、動畫 token、微互動 guideline

章節進度統計

  • 知識主題:48 + 4 補充 = 52 項
  • 🌿 growing:0
  • 🌱 seed:52

跨系列連結

  • frontend/css/ CH2(CSS Variables / Theming / Tokens)
  • frontend/framework/ CH6(元件 API 設計)
  • frontend/testing/ CH10(視覺迴歸測試整合)
  • frontend/a11y/ CH12(DS 元件的 a11y 義務)
  • frontend/application/ CH8(UI Library 建置時機、Monorepo、npm 發布)
  • → W05 CMS capstone(自訂 DS 給 CMS 用)