設計變數 Design Tokens


什麼是 Design Tokens

Lucent UI 所有元件的視覺數值(顏色、字級、間距、圓角、陰影)都不是寫死的,而是引用 :root 上的一組 CSS 變數。這代表:

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 ≥ 480pxmd ≥ 768pxlg ≥ 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--primarybackground)。永遠改變數,才能保持整套系統一致、升級時不衝突。

客製化:局部主題

變數也可以只作用在某個容器內,做出區塊級的主題:

<div class="lct-root" style="--lct-primary:#2e7d32">
  <!-- 這個區塊裡的主色都變綠色 -->
  <button class="lct-btn lct-btn--primary">套用</button>
</div>