視覺基礎
色彩、字體、間距與圓角,以單一 token 來源控制。
AITOM · AI TRANSFORMATION & BRAND GROWTH
延續既有留白、文字層次與灰階介面,把視覺規則轉成可操作、可驗證的設計系統。
色彩、字體、間距與圓角,以單一 token 來源控制。
操作、鍵盤、回饋與錯誤,都是元件的一部分。
對照 WCAG 2.2 AA 目標;不把自動檢查視為符合認證。
01 / FOUNDATIONS
主要灰階承接原站;焦點、表單外框與狀態色是本地可及性控制。深色模式是依來源研究建立的候選映射。
canvas
#ffffffsurface
#f9f9f9subtle
#f3f3f3text
#282828muted
#5d5d5dborder
#e5e5e5primary
#171717focus
#005fccdanger
#b42318success
#18794econtrol-border
#76767602 / SINGLE SOURCE
直接讀取 tokens.json,包含原始值、別名與型別;CSS 由程式產生。
顯示 96 / 96 個 tokens
primitive.light.canvas{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}原站實測 --color-surface = #fff;本地保留同值。primitive.light.surface{"colorSpace":"srgb","components":[0.97647059,0.97647059,0.97647059],"alpha":1,"hex":"#f9f9f9"}原站實測 --color-surface-secondary = #f9f9f9;本地保留同值。primitive.light.subtle{"colorSpace":"srgb","components":[0.95294118,0.95294118,0.95294118],"alpha":1,"hex":"#f3f3f3"}原站實測 --color-surface-tertiary = #f3f3f3;本地保留同值。primitive.light.text{"colorSpace":"srgb","components":[0.15686275,0.15686275,0.15686275],"alpha":1,"hex":"#282828"}原站實測 --color-text = #282828;本地保留同值。primitive.light.muted{"colorSpace":"srgb","components":[0.36470588,0.36470588,0.36470588],"alpha":1,"hex":"#5d5d5d"}原站實測 --color-text-secondary = #5d5d5d;本地保留同值。primitive.light.border{"colorSpace":"srgb","components":[0.89803922,0.89803922,0.89803922],"alpha":1,"hex":"#e5e5e5"}原站實測 --color-border = color-mix(in oklab, #0d0d0d 10%, transparent);本地採候選控制值 #e5e5e5,有差異。primitive.light.primary{"colorSpace":"srgb","components":[0.09019608,0.09019608,0.09019608],"alpha":1,"hex":"#171717"}原站實測 --color-background-primary-solid = #181818;本地採候選控制值 #171717,有差異。primitive.light.on-primary{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}本地新增控制值,沒有對應原站實測同名 token。primitive.light.focus{"colorSpace":"srgb","components":[0,0.37254902,0.8],"alpha":1,"hex":"#005fcc"}原站實測 --color-ring-primary = #0169cc;本地採候選控制值 #005fcc,有差異。primitive.light.danger{"colorSpace":"srgb","components":[0.70588235,0.1372549,0.09411765],"alpha":1,"hex":"#b42318"}原站實測 --color-text-danger = #911e1b;本地採候選控制值 #b42318,有差異。primitive.light.success{"colorSpace":"srgb","components":[0.09411765,0.4745098,0.30588235],"alpha":1,"hex":"#18794e"}原站實測 --color-text-success = #00692a;本地採候選控制值 #18794e,有差異。primitive.light.control-border{"colorSpace":"srgb","components":[0.4627451,0.4627451,0.4627451],"alpha":1,"hex":"#767676"}本地新增控制值,沒有對應原站實測同名 token。primitive.light.danger-solid{"colorSpace":"srgb","components":[0.70588235,0.1372549,0.09411765],"alpha":1,"hex":"#b42318"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。primitive.light.on-danger{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。primitive.dark.canvas{"colorSpace":"srgb","components":[0.09019608,0.09019608,0.09019608],"alpha":1,"hex":"#171717"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.surface{"colorSpace":"srgb","components":[0.12941176,0.12941176,0.12941176],"alpha":1,"hex":"#212121"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.subtle{"colorSpace":"srgb","components":[0.18823529,0.18823529,0.18823529],"alpha":1,"hex":"#303030"}原站實測 --color-surface-tertiary = #131313;本地採候選控制值 #303030,有差異。primitive.dark.text{"colorSpace":"srgb","components":[0.96078431,0.96078431,0.96078431],"alpha":1,"hex":"#f5f5f5"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.muted{"colorSpace":"srgb","components":[0.72156863,0.72156863,0.72156863],"alpha":1,"hex":"#b8b8b8"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.border{"colorSpace":"srgb","components":[0.26666667,0.26666667,0.26666667],"alpha":1,"hex":"#444444"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.primary{"colorSpace":"srgb","components":[0.96078431,0.96078431,0.96078431],"alpha":1,"hex":"#f5f5f5"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.on-primary{"colorSpace":"srgb","components":[0.09019608,0.09019608,0.09019608],"alpha":1,"hex":"#171717"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.focus{"colorSpace":"srgb","components":[0.54117647,0.70588235,1],"alpha":1,"hex":"#8ab4ff"}原站實測 --color-ring-primary = #0285ff;本地採候選控制值 #8ab4ff,有差異。primitive.dark.danger{"colorSpace":"srgb","components":[1,0.60392157,0.56862745],"alpha":1,"hex":"#ff9a91"}原站實測 --color-text-danger = #e02e2a;本地採候選控制值 #ff9a91,有差異。primitive.dark.success{"colorSpace":"srgb","components":[0.4745098,0.84313725,0.64705882],"alpha":1,"hex":"#79d7a5"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.control-border{"colorSpace":"srgb","components":[0.62745098,0.62745098,0.62745098],"alpha":1,"hex":"#a0a0a0"}本地新增控制值,沒有對應原站實測同名 token。primitive.dark.danger-solid{"colorSpace":"srgb","components":[0.70588235,0.1372549,0.09411765],"alpha":1,"hex":"#b42318"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。primitive.dark.on-danger{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。semantic.light.canvas--color-canvas{primitive.light.canvas}原站實測 --color-surface = #fff;本地保留同值。semantic.light.surface--color-surface{primitive.light.surface}原站實測 --color-surface-secondary = #f9f9f9;本地保留同值。semantic.light.subtle--color-subtle{primitive.light.subtle}原站實測 --color-surface-tertiary = #f3f3f3;本地保留同值。semantic.light.text--color-text{primitive.light.text}原站實測 --color-text = #282828;本地保留同值。semantic.light.muted--color-muted{primitive.light.muted}原站實測 --color-text-secondary = #5d5d5d;本地保留同值。semantic.light.border--color-border{primitive.light.border}原站實測 --color-border = color-mix(in oklab, #0d0d0d 10%, transparent);本地採候選控制值 #e5e5e5,有差異。semantic.light.primary--color-primary{primitive.light.primary}原站實測 --color-background-primary-solid = #181818;本地採候選控制值 #171717,有差異。semantic.light.on-primary--color-on-primary{primitive.light.on-primary}本地新增控制值,沒有對應原站實測同名 token。semantic.light.focus--color-focus{primitive.light.focus}原站實測 --color-ring-primary = #0169cc;本地採候選控制值 #005fcc,有差異。semantic.light.danger--color-danger{primitive.light.danger}原站實測 --color-text-danger = #911e1b;本地採候選控制值 #b42318,有差異。semantic.light.success--color-success{primitive.light.success}原站實測 --color-text-success = #00692a;本地採候選控制值 #18794e,有差異。semantic.light.control-border--color-control-border{primitive.light.control-border}本地新增控制值,沒有對應原站實測同名 token。semantic.light.danger-solid--color-danger-solid{primitive.light.danger-solid}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。semantic.light.on-danger--color-on-danger{primitive.light.on-danger}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。semantic.dark.canvas--color-canvas{primitive.dark.canvas}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.surface--color-surface{primitive.dark.surface}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.subtle--color-subtle{primitive.dark.subtle}原站實測 --color-surface-tertiary = #131313;本地採候選控制值 #303030,有差異。semantic.dark.text--color-text{primitive.dark.text}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.muted--color-muted{primitive.dark.muted}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.border--color-border{primitive.dark.border}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.primary--color-primary{primitive.dark.primary}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.on-primary--color-on-primary{primitive.dark.on-primary}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.focus--color-focus{primitive.dark.focus}原站實測 --color-ring-primary = #0285ff;本地採候選控制值 #8ab4ff,有差異。semantic.dark.danger--color-danger{primitive.dark.danger}原站實測 --color-text-danger = #e02e2a;本地採候選控制值 #ff9a91,有差異。semantic.dark.success--color-success{primitive.dark.success}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.control-border--color-control-border{primitive.dark.control-border}本地新增控制值,沒有對應原站實測同名 token。semantic.dark.danger-solid--color-danger-solid{primitive.dark.danger-solid}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。semantic.dark.on-danger--color-on-danger{primitive.dark.on-danger}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。foundation.font-family--font-family["OpenAI Sans","system-ui","sans-serif"]本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-xs--font-size-xs{"value":12,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-sm--font-size-sm{"value":14,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-md--font-size-md{"value":16,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-lg--font-size-lg{"value":20,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-xl--font-size-xl{"value":24,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-2xl--font-size-2xl{"value":32,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-3xl--font-size-3xl{"value":48,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-size-4xl--font-size-4xl{"value":64,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-weight-regular--font-weight-regular400本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-weight-medium--font-weight-medium500本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.font-weight-semibold--font-weight-semibold600本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.line-height-body--line-height-body1.5本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.line-height-heading--line-height-heading1.1本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-0--space-0{"value":0,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-4--space-4{"value":4,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-8--space-8{"value":8,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-12--space-12{"value":12,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-16--space-16{"value":16,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-20--space-20{"value":20,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-24--space-24{"value":24,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-32--space-32{"value":32,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-40--space-40{"value":40,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-48--space-48{"value":48,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-64--space-64{"value":64,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-80--space-80{"value":80,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.space-96--space-96{"value":96,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.radius-sm--radius-sm{"value":8,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.radius-md--radius-md{"value":12,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.radius-lg--radius-lg{"value":16,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.radius-xl--radius-xl{"value":24,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.radius-pill--radius-pill{"value":9999,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.motion-fast--motion-fast{"value":120,"unit":"ms"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.motion-normal--motion-normal{"value":200,"unit":"ms"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.motion-easing--motion-easing[0.2,0,0,1]本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.content-max--content-max{"value":1440,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。foundation.control-min--control-min{"value":44,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。component.button-radius--button-radius{foundation.radius-pill}本地新增控制值;來源差異見 docs/extraction.md。component.card-radius--card-radius{foundation.radius-lg}本地新增控制值;來源差異見 docs/extraction.md。component.dialog-radius--dialog-radius{foundation.radius-xl}本地新增控制值;來源差異見 docs/extraction.md。找不到相符 token。請縮短關鍵字,或清除搜尋。
03 / TYPOGRAPHY
OpenAI Sans 使用本地來源字型,缺字時回退系統字型。英文與繁體中文混排需分別目視驗收。
好的介面把複雜留在背後,讓學習自然發生。閱讀、探索,再動手試一次。
狀態、補充說明與來源。輔助文字仍保留足夠對比。
05 / INPUT
06 / PATTERNS
灰階底色、膠囊操作、清楚標題與充足留白。此展示頁為本地新增。
左右方向鍵、Home、End 移動並啟用分頁;只有目前分頁進入 Tab 順序。
tab、tabpanel、aria-selected、aria-controls 與 aria-labelledby 成對連結。
目前以 AA 作為驗收目標。完整符合性仍需逐項人工、輔助科技與完整流程驗證;不能僅憑 token 對比檢查宣稱符合。
查看完整控制規範這個頁面是可操作的設計規格。系統搜尋可實際查找章節,輸入不存在的詞可驗證空狀態。
07 / GOVERNANCE
格式基線 DTCG 2025.10;可及性目標 WCAG 2.2 AA;互動依原生 HTML 與 WAI-ARIA APG。以下是本地控制文件。
執行:python3 scripts/tokens.py --check
程式僅涵蓋本專案使用的 token 型別及 22 組色彩配對,不是完整 DTCG 或 WCAG 認證。