色彩系統
AppFuse Web 採用全語意化色彩策略:所有色彩透過 DaisyUI 語意 class 引用,由主題變數決定實際色值。這確保元件在切換主題時自動適配,無需修改任何程式碼。
設計原則
- 全語意化 — 所有色彩使用語意 class(
text-primary、bg-base-200),不使用硬編碼色值 - No hardcoded colors — 禁止直接使用 Tailwind 色板(
text-gray-500、bg-red-600) - No
dark:prefix — 不使用dark:條件前綴,主題切換由 DaisyUI 變數自動處理 - OKLch 色彩空間 — 所有主題色以 OKLch 定義,確保感知均勻
色彩層級
品牌色
品牌色定義應用的視覺識別,用於主要操作、強調元素。
| 語意名稱 | 用途 | Fusion 主題值 | CSS 變數 |
|---|---|---|---|
primary | 主要操作、連結、焦點指示 | oklch(50% 0.035 230) 藍灰 | --color-primary |
secondary | 次要操作、輔助強調 | oklch(60% 0.20 35) 深橙 | --color-secondary |
accent | 裝飾性強調、特殊標記 | oklch(48% 0.13 245) 藍色 | --color-accent |
neutral | 中性元素、預設按鈕 | oklch(50% 0.035 230) 藍灰 | --color-neutral |
基底色
基底色建立頁面的背景層次結構,從淺到深區分不同區域。
| 語意名稱 | 用途 | Fusion 主題值 | CSS 變數 |
|---|---|---|---|
base-100 | 主要背景(頁面、卡片內容) | oklch(99% 0.005 230) 極淺藍灰 | --color-base-100 |
base-200 | 次要背景(側邊欄、區塊背景) | oklch(97% 0.008 230) 淺藍灰 | --color-base-200 |
base-300 | 邊框、分隔線、hover 狀態 | oklch(94% 0.012 230) 藍灰 | --color-base-300 |
base-content | 主要文字內容 | oklch(27% 0.025 230) 深藍灰 | --color-base-content |
狀態色
狀態色傳達操作回饋,每種狀態有明確的語意。
| 語意名稱 | 用途 | Fusion 主題值 | CSS 變數 |
|---|---|---|---|
info | 提示訊息、資訊標記 | oklch(60% 0.12 200) 青色 | --color-info |
success | 成功操作、正面狀態 | oklch(45% 0.10 170) 深青綠 | --color-success |
warning | 警告訊息、注意事項 | oklch(71.5% 0.165 60) 橙色 | --color-warning |
error | 錯誤訊息、破壞性操作 | oklch(52% 0.19 27) 紅色 | --color-error |
Content 顏色配對
DaisyUI 為每個語意色自動提供對應的 -content 色,確保文字在該色彩背景上保持可讀性:
| 背景色 | Content 色 | 用途 |
|---|---|---|
bg-primary | text-primary-content | 白色文字於 Primary 背景上 |
bg-secondary | text-secondary-content | 白色文字於 Secondary 背景上 |
bg-accent | text-accent-content | 白色文字於 Accent 背景上 |
bg-neutral | text-neutral-content | 白色文字於 Neutral 背景上 |
bg-info | text-info-content | 白色文字於 Info 背景上 |
bg-success | text-success-content | 白色文字於 Success 背景上 |
bg-warning | text-warning-content | 白色文字於 Warning 背景上 |
bg-error | text-error-content | 白色文字於 Error 背景上 |
bg-base-100 | text-base-content | 深色文字於淺色背景上 |
配對規則
當使用語意色作為背景時,永遠搭配對應的 -content 色作為前景。這是 DaisyUI 的核心設計:背景與前景成對使用,確保對比度。
文字透明度層級
透過 Tailwind 的透明度修飾符控制文字層次:
| 層級 | 透明度 | 用法 | 說明 |
|---|---|---|---|
| 主要 | 100% | text-base-content | 標題、正文、表格內容 |
| 次要 | 60% | text-base-content/60 | 輔助說明、timestamps |
| 禁用 | 40% | text-base-content/40 | 禁用狀態、placeholder |
// 文字層次範例
<h2 className="text-base-content">訂單詳情</h2> {/* 100% - 標題 */}
<p className="text-base-content/60">建立於 2024-01-15</p> {/* 60% - 輔助資訊 */}
<span className="text-base-content/40">尚未填寫</span> {/* 40% - placeholder */}
元件顏色 API
框架元件統一支援 8 種語意色:default、primary、secondary、accent、info、success、warning、error。
// Button
<Button color="primary">主要操作</Button>
<Button color="error">刪除</Button>
// Input
<Input color="error" label="電子郵件" />
// Checkbox
<Checkbox color="primary" label="同意條款" />
Do / Don't
// ✅ Do:使用語意化顏色
<p className="text-base-content">主要文字</p>
<p className="text-base-content/60">次要文字</p>
<div className="bg-primary text-primary-content">品牌區塊</div>
<span className="text-error">必填欄位</span>
// ❌ Don't:硬編碼顏色
<p className="text-gray-900">主要文字</p>
<p className="text-gray-500">次要文字</p>
<div className="bg-blue-600 text-white">品牌區塊</div>
<span className="text-red-500">必填欄位</span>
// ✅ Do:依賴主題自動切換
<div className="bg-base-100">內容區域</div>
// ❌ Don't:使用 dark: prefix 手動處理
<div className="bg-white dark:bg-gray-900">內容區域</div>
WCAG 對比度要求
所有文字必須符合 WCAG 2.1 AA 標準:
| 文字類型 | 最低對比度 | 說明 |
|---|---|---|
| 一般文字 | 4.5:1 | 正文、標籤、按鈕文字 |
| 大文字(≥ 18px bold 或 ≥ 24px) | 3:1 | 標題、大按鈕 |
| 非文字元素 | 3:1 | 圖示、邊框、焦點指示器 |
Fusion 主題的 base-content(深藍灰)在 base-100(極淺藍灰)上的對比度遠超 4.5:1,確保主要文字在所有情境下清晰可讀。