如何通過 Chakra UI 打造一致的 Design System (part 2)

BoSyuan
設計丸物製
Published in
9 min readSep 25, 2023

上一篇文章(part 1-專案導言

介紹了「A.專案背景脈絡」及「B.如何選擇 UI 框架」,本章節 實際案例將介紹最後兩段:「C.利用 Chakra UI 製作設計系統」、「D.導入後回顧」。

*本文並非針對設計系統的教學文,旨在分享 Chakra UI 框架實作經驗*

C. 如何利用 Chakra UI 製作設計系統? 👉

當團隊選擇了 Chakra UI 框架,接下來設計要從何著手?建構設計系統有哪些小技巧?🏃

想深入了解 UI 框架的設計,建議先從官方文件入手,Chakra UI 除了官方文件外,亦提供了 Chakra UI Figma Kit,幫助設計師更了解元件庫的結構。

https://chakra-ui.com/
Chakra UI Figma Kit

設計系統可大致分為兩大部分: 主題(Theme)和元件(Component),首要任務是了解如何設定 UI 框架的主題:色彩主題(Color Theme)和文字排版 (Typography)。除了自定義主題外,也需要研究元件庫的結構是否符合產品需求?哪些元件需要跟團隊討論客製化?

綜合上述問題,本次專案可分享以下 5 點經驗:

1) 因應產品/品牌規範,調整主題(Theme)

🎯 色彩主題(Color Theme)

Chakra UI Color Theme 的結構與其他 UI 框架相似,都是以主色為基礎,延伸出不同深淺程度的色階,並以數字命名。Chakra UI 的色階從淺 (50) 到深 (900),共有 10 個不同的層次。

你可以使用色階工具產出色票,再根據需求進行微調,確保顏色適用於產品。需要自行調整的情境,通常是 - 淺色階太淺或色階之間差異太大,實際套入產品時不適用。

快速產生色階的方法,推薦以下幾個服務:Ant Design ColorsThemera(專門為 Chakra UI 生成色階)、Eva Colors

📌 如果你想了解色階原理:How to create a nice color palette in Figma

🎯 文字排版 (Typography)

Chakra UI 預設的 Typography 架構,提供從 xs 到 6xl 共十組不同的字體大小選擇,除了字體大小(font size)外,亦可針對以下屬性設定:fonts、fontWeights、lineHeights、letterSpacings。

Figma 內調整行高(line-heights)的單位使用 px 或百分比,前端在 CSS 設定行高則有 5 種寫法:

  • 預設值 normal:行高 = (該元素設定的文字大小 x 1.2)
    1.0 ~ 1.2 是瀏覽器給 line-height 的初始值,通常都用 1.2 來計算
  • 純數字:行高 = (該元素設定的文字大小 x 數字 )
  • 帶單位的值:em, px, pt …等,1rem=16px
  • 百分比:行高 = (父元素文字大小 x百分比)
  • 繼承:寫法是 line-height:inherit;,如果加上這段語法,就會繼承該父元素的設定

Chakra UI 預設的單位是 rem,假設文字樣式是: Font Size 16pt / line Height 24px,在 Chakra UI 當中行高為 1.5rem( 24/16 )等同於 line Height-6。

若需要調整 Typography 預設值時,建議特別標示出來,讓開發人員知道哪些部分需要調整。(如上圖橘色文字)

除了基於文字大小的命名方式外,還能創建應用於特定功能的文本樣式,例如:Helper text、Tooltip、Table title…等,將特定文本樣式規範在設計系統,可確保在不同情境保持一致性。

📌 Chakra UI 的創始人對定義命名建議:Naming text styles

2) 探索複合組件

除了 Color Theme、Typography 之外,Chakra UI Theme 的內容還包含:陰影(Shadows)、邊框圓角(Radii)、間距(Spacing)、斷點(Breakpoints)以及容器(Containers)。

在設計稿中建立基本元件的同時,別忘了定義由基本元件組合而成的複合組件,例如:卡片(Card)、對話框(Dialog)、抽屜(Drawer)。在探索視覺稿(Mockup)風格時,嘗試不同的效果樣式-陰影及圓角效果,並將樣式規範定義在設計系統中,確保產品的一致性。

Chakra UI Theme 預設值
定義產品組件的樣式

3) 元件(Component)優化:預設元件/自定義元件

在上一篇文章(part 1)中,提及 Chakra UI 元件的完整度不及其他成熟的設計系統,預設元件也無法完全符合設計需求。使用官方 Chakra UI Figma Kit 時需自行優化,舉例來說:按鈕、下拉選單、文本框的狀態並不完整。

設計稿的元件狀態完整(在 Figma 中可使用變體屬性),不只能讓設計系統易於管理,更能協助前端開發該元件。需要注意的是…

創建變體(Variants)需要時間,在創建一組變體之前需考慮工作負載量,可多使用 Figma Boolean 或隱藏圖層,避免變體數量過多難以管理。

📌 變體的使用方式,可看 Figma 官方文件:Create and use variants

優化預設元件

雖然 Chakra UI 沒有內建日期選擇器、分頁等元件,但它提供了許多彈性讓設計和前端可以自定義元件。客製化元件時,設計師需考量所有情境,確保該元件的狀態、尺寸規格、樣式類型都已經包含在內。

目的驅動客製化元件,在使用者易於使用的同時(User-Friendly),與程式開發之間達到平衡點 (Code-Friendly)。

自定義元件樣式

4) 結合柵欄系統( Grid System)

導入 Grid System 可以更有效地組織和排列內容,即使是版型複雜的儀表板也可以套用,實現產品一致性和視覺上的整齊感。

在柵欄系統中,易於整除是一個重要的原則。該專案設計系統使用 12 柵欄的結構,側邊欄展開或收合時,欄位(Column)的寬度依照螢幕尺寸調整。此外,全站使用 16px 作為基本間距單位,因此將間距(Gutter space - column 彼此之間的距離)設定為 16px,能提供元素對齊的規範。

5) 為設計系統製作一份 Onboarding !

最後,別忘了建立一份用戶指南 (Onboarding)! 能幫助新成員迅速了解專案全貌,提供更友善的設計交付流程。設計師製作時,也可藉由此過程,檢查遺漏的規範。(變相逼迫設計師整理檔案 😆)

內容包含 /

  • 概述:解釋目的、原則和核心價值,使用什麼套件或 UI 框架。
  • 目錄 / 文件導覽:交付結構,檔案分為哪些部分,幫助新使用者找到需要的資訊。
  • 使用指南:紀錄具體步驟,例如:如何創建新頁面、複製 Local Style、如何使用元件…等等。
  • Theme:Typography 及 Color theme 簡介
  • Component:介紹設計系統元件
  • 設計原則:通用的核心原則
  • 版本控制:同步最新功能,紀錄版本控制信息

建議向成熟的設計系統學習,例如:Material UI for FigmaAnt Design System for FigmaIBM Carbon Design SystemShopify Figma onboarding

D. 導入後回顧 🎊

目前專案已經告一個段落,回顧建立設計系統的過程,有幾點心得:

善用線上資源

每個 UI 框架都能帶來不同的經驗值,接觸不熟悉的 UI 框架時,官方文件及成熟的設計系統,都是最好的學習對象。

多跟不同的角色交流

每個人都有自己的盲點,主動跟前端、產品經理及專案外的角色廣泛互動,往往能獲得寶貴的回饋,探索不同的切入點。

持續維護設計系統

從專案起始到結束,設計系統不斷地擴充,透過功能和情境的增加,歸納出更完整的設計規範。

建立設計系統是持續不斷的迭代過程,隨著功能和情境增加,越能歸納出更完善的設計系統。

以上的分享,希望能夠為你的設計系統帶來一些啟發。當我剛踏入這個專案時,很難想像最終能達到的成果,由衷感謝所有參與專案並給予回饋的開發人員、產品經理,以及我自己😆

發表你的設計系統,獲得更多寶貴的意見!

感謝您的耐心閱讀,以上是我個人專案回顧的分享,如果你喜歡這次內容,請拍手給與小小的回饋鼓勵 👏👏👏

如果你想了解更多產品設計 / UIUX / 敏捷設計 內容,歡迎訂閱設計丸物製&追蹤設計丸 IG 👋👋👋

--

--

BoSyuan
設計丸物製

從文學背景 ( 台文系不是中文系! ) 切入做產品設計,誤打誤撞進入敏捷開發世界。喜歡美的事物,喜歡分享交流,相信人生的意義在於熱愛生活。