什麼是 Design Tokens
Lucent UI 所有元件的視覺數值(顏色、字級、間距、圓角、陰影)都不是寫死的,而是引用 :root 上的一組 CSS 變數。這代表:
- 換色 / 換字只要覆寫變數,全站同步生效;
- 工程師不用記十六進位色碼,用語意名稱即可;
- 未來 Figma 設計調整,只需更新這一小段。
v1.1 所有 token 皆為 Figma「sketchup_設計元件」元件庫逐一萃取的校準值。
色彩
| 變數 | 預設值 | 用途 |
|---|---|---|
--lct-primary |
#d32f2f |
品牌主色(按鈕、重點) |
--lct-primary-hover |
#b71c1c |
主色 hover |
--lct-primary-active |
#a31515 |
主色按下 |
--lct-primary-soft |
rgba(211,47,47,.3) |
停用 / 次要 |
--lct-primary-tint |
rgba(211,47,47,.08) |
淡背景 |
--lct-ink |
#2b2b2b |
主要文字 / 深色按鈕底(搜尋鈕、--dark) |
--lct-ink-hover |
#000000 |
深色按鈕 hover 底 |
--lct-text-secondary |
#5b5b5b |
次要文字(項數等) |
--lct-muted |
#8a8278 |
停用文字 |
--lct-placeholder |
rgba(91,91,91,.7) |
輸入框 placeholder、Tab 未選字色 |
--lct-footer-ink |
#5a4a36 |
Footer 按鈕文字 |
--lct-surface |
#ffffff |
卡片 / 面板底 |
--lct-surface-hover |
#fafafa |
次要按鈕 hover 底 |
--lct-bg |
#f6f6f8 |
頁面底 |
--lct-border |
#d2d2d7 |
標準邊框(卡片 / 輸入框) |
--lct-border-soft |
#ececef |
淺邊框(搜尋框 / 選單) |
--lct-border-strong |
#b8b8bf |
加深邊框(hover) |
--lct-line-soft |
#ece6dc |
看板卡空格底 |
--lct-hover-tint |
rgba(91,91,91,.05) |
選單 / 透明鈕 hover 底 |
--lct-cell-tint |
rgba(91,91,91,.10) |
Tab 選取膠囊底、報價表格頭底與框線 |
--lct-scrim-bg |
rgba(0,0,0,.4) |
Modal 遮罩底 |
語意色(通知列三件組)
v1.1 起每個語意色都是 底色 / 邊框(含圖示)/ 文字 三件組,供 .lct-bar 等元件使用:
| 語意 | 底色 -bg
|
邊框 / 圖示 | 文字 -text
|
|---|---|---|---|
| success | #e9f4ea |
#1e8e3e |
#137333 |
| error | #fcebea |
#d93025 |
#c5221f |
| warning | #fff4e5 |
#ed6c02 |
#9a4a00 |
| info | #e5f4fd |
#0288d1 |
#01579b |
變數命名:--lct-success-bg、--lct-success、--lct-success-text,其餘語意同理。
字級與行高
依 Figma 定義為五階:
| 變數 | 大小 / 行高 | 用途 |
|---|---|---|
--lct-fs-caption / --lct-lh-caption
|
11 / 16 | 註記、項數、表格頭 |
--lct-fs-sm / --lct-lh-sm
|
12 / 18 | Tab、Footer 按鈕、材質卡名稱 |
--lct-fs-md / --lct-lh-md
|
13 / 18 | 按鈕、選單、搜尋、對話框內文 |
--lct-fs-base / --lct-lh-base
|
14 / 20 | 內文、通知列 |
--lct-fs-title / --lct-lh-title
|
16 / 22 | 標題 |
字重:--lct-fw-regular (400)、--lct-fw-medium (500)、--lct-fw-bold (700)。
間距
以 4 的倍數為基礎的階梯,元件內部一律引用這些變數:
--lct-space-1: 4px · -2: 6px · -3: 8px · -4: 10px · -5: 12px · -6: 16px · -7: 20px · -8: 24px
搭配的 spacing utility(.lct-p-N、.lct-gap-N…)見「響應式 Utility」。
尺寸
| 變數 | 值 | 用途 |
|---|---|---|
--lct-shell-width |
420px | 外掛面板寬(.lct-shell--panel 模式才生效) |
--lct-header-h |
68px | Header 高度 |
--lct-control-h |
32px | 搜尋框 / 搜尋鈕等控制項高度 |
--lct-footer-h |
80px | Footer 動作列高度 |
除了全域 token,各元件的尺寸(卡片寬、縮圖比例、圖示大小…)也都是元件層級變數(如 --lct-mcard-*、--lct-bcard-*、--lct-icon-size),可在任意層覆寫,詳見各元件章節。
圓角與陰影
| 變數 | 值 | 用途 |
|---|---|---|
--lct-radius-panel |
4px | Modal / Dialog / Toast / 搜尋框(v1.0 為 12px) |
--lct-radius-sm |
6px | 按鈕、材質卡、返回鈕 |
--lct-radius-md |
8px | 卡片、清單列、對話框按鈕 |
--lct-radius-lg |
16px | 看板卡封面 |
--lct-radius-pill |
999px | 膠囊徽章、收藏愛心 |
--lct-shadow-sm |
0 1px 2px rgba(12,12,13,.05) |
面板細陰影(Header、搜尋框) |
--lct-shadow-up |
0 -1px 2px rgba(12,12,13,.05) |
Footer 動作列向上陰影 |
--lct-shadow-md |
0 4px 12px rgba(12,12,13,.1) |
下拉、Toast、卡片 hover |
--lct-shadow-lg |
0 8px 24px rgba(12,12,13,.14) |
Modal |
--lct-shadow-dialog |
0 10px 30px rgba(0,0,0,.25) |
確認對話框 |
--lct-shadow-float |
0 1px 2px rgba(0,0,0,.15) |
收藏愛心浮鈕 |
響應式斷點
斷點採 mobile-first:sm ≥ 480px、md ≥ 768px、lg ≥ 1024px。media query 無法使用 CSS 變數,故斷點不是 token;要修改請在 lucent-ui.css 內全域搜尋替換。詳見「響應式 Utility」。
客製化:換主色
在你自己的樣式(載入 lucent-ui.css 之後)覆寫變數即可:
:root {
--lct-primary: #1565c0; /* 換成藍色主色 */
--lct-primary-hover: #0d47a1;
--lct-font-family: 'Inter', 'Noto Sans TC', sans-serif;
}
不要直接改元件的 class(例如去覆寫 .lct-btn--primary 的 background)。永遠改變數,才能保持整套系統一致、升級時不衝突。
客製化:局部主題
變數也可以只作用在某個容器內,做出區塊級的主題:
<div class="lct-root" style="--lct-primary:#2e7d32">
<!-- 這個區塊裡的主色都變綠色 -->
<button class="lct-btn lct-btn--primary">套用</button>
</div>