UI system

AITOM · AI TRANSFORMATION & BRAND GROWTH

同一套語言,
從畫面到系統。

延續既有留白、文字層次與灰階介面,把視覺規則轉成可操作、可驗證的設計系統。

v02 候選版本 / 來源抽取 + 本地控制擴充
01

視覺基礎

色彩、字體、間距與圓角,以單一 token 來源控制。

02

互動契約

操作、鍵盤、回饋與錯誤,都是元件的一部分。

03

證據與規範

對照 WCAG 2.2 AA 目標;不把自動檢查視為符合認證。

01 / FOUNDATIONS

克制的視覺,明確的功能。

主要灰階承接原站;焦點、表單外框與狀態色是本地可及性控制。深色模式是依來源研究建立的候選映射。

canvas

#ffffff

surface

#f9f9f9

subtle

#f3f3f3

text

#282828

muted

#5d5d5d

border

#e5e5e5

primary

#171717

focus

#005fcc

danger

#b42318

success

#18794e

control-border

#767676

間距尺度

4px
8px
12px
16px
24px
32px
48px
64px
80px
96px

圓角尺度

sm
md
lg
xl
pill

02 / SINGLE SOURCE

Token 索引

直接讀取 tokens.json,包含原始值、別名與型別;CSS 由程式產生。

顯示 96 / 96 個 tokens

primitive.light.canvas
color
{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}原站實測 --color-surface = #fff;本地保留同值。
primitive.light.surface
color
{"colorSpace":"srgb","components":[0.97647059,0.97647059,0.97647059],"alpha":1,"hex":"#f9f9f9"}原站實測 --color-surface-secondary = #f9f9f9;本地保留同值。
primitive.light.subtle
color
{"colorSpace":"srgb","components":[0.95294118,0.95294118,0.95294118],"alpha":1,"hex":"#f3f3f3"}原站實測 --color-surface-tertiary = #f3f3f3;本地保留同值。
primitive.light.text
color
{"colorSpace":"srgb","components":[0.15686275,0.15686275,0.15686275],"alpha":1,"hex":"#282828"}原站實測 --color-text = #282828;本地保留同值。
primitive.light.muted
color
{"colorSpace":"srgb","components":[0.36470588,0.36470588,0.36470588],"alpha":1,"hex":"#5d5d5d"}原站實測 --color-text-secondary = #5d5d5d;本地保留同值。
primitive.light.border
color
{"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
color
{"colorSpace":"srgb","components":[0.09019608,0.09019608,0.09019608],"alpha":1,"hex":"#171717"}原站實測 --color-background-primary-solid = #181818;本地採候選控制值 #171717,有差異。
primitive.light.on-primary
color
{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}本地新增控制值,沒有對應原站實測同名 token。
primitive.light.focus
color
{"colorSpace":"srgb","components":[0,0.37254902,0.8],"alpha":1,"hex":"#005fcc"}原站實測 --color-ring-primary = #0169cc;本地採候選控制值 #005fcc,有差異。
primitive.light.danger
color
{"colorSpace":"srgb","components":[0.70588235,0.1372549,0.09411765],"alpha":1,"hex":"#b42318"}原站實測 --color-text-danger = #911e1b;本地採候選控制值 #b42318,有差異。
primitive.light.success
color
{"colorSpace":"srgb","components":[0.09411765,0.4745098,0.30588235],"alpha":1,"hex":"#18794e"}原站實測 --color-text-success = #00692a;本地採候選控制值 #18794e,有差異。
primitive.light.control-border
color
{"colorSpace":"srgb","components":[0.4627451,0.4627451,0.4627451],"alpha":1,"hex":"#767676"}本地新增控制值,沒有對應原站實測同名 token。
primitive.light.danger-solid
color
{"colorSpace":"srgb","components":[0.70588235,0.1372549,0.09411765],"alpha":1,"hex":"#b42318"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
primitive.light.on-danger
color
{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
primitive.dark.canvas
color
{"colorSpace":"srgb","components":[0.09019608,0.09019608,0.09019608],"alpha":1,"hex":"#171717"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.surface
color
{"colorSpace":"srgb","components":[0.12941176,0.12941176,0.12941176],"alpha":1,"hex":"#212121"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.subtle
color
{"colorSpace":"srgb","components":[0.18823529,0.18823529,0.18823529],"alpha":1,"hex":"#303030"}原站實測 --color-surface-tertiary = #131313;本地採候選控制值 #303030,有差異。
primitive.dark.text
color
{"colorSpace":"srgb","components":[0.96078431,0.96078431,0.96078431],"alpha":1,"hex":"#f5f5f5"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.muted
color
{"colorSpace":"srgb","components":[0.72156863,0.72156863,0.72156863],"alpha":1,"hex":"#b8b8b8"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.border
color
{"colorSpace":"srgb","components":[0.26666667,0.26666667,0.26666667],"alpha":1,"hex":"#444444"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.primary
color
{"colorSpace":"srgb","components":[0.96078431,0.96078431,0.96078431],"alpha":1,"hex":"#f5f5f5"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.on-primary
color
{"colorSpace":"srgb","components":[0.09019608,0.09019608,0.09019608],"alpha":1,"hex":"#171717"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.focus
color
{"colorSpace":"srgb","components":[0.54117647,0.70588235,1],"alpha":1,"hex":"#8ab4ff"}原站實測 --color-ring-primary = #0285ff;本地採候選控制值 #8ab4ff,有差異。
primitive.dark.danger
color
{"colorSpace":"srgb","components":[1,0.60392157,0.56862745],"alpha":1,"hex":"#ff9a91"}原站實測 --color-text-danger = #e02e2a;本地採候選控制值 #ff9a91,有差異。
primitive.dark.success
color
{"colorSpace":"srgb","components":[0.4745098,0.84313725,0.64705882],"alpha":1,"hex":"#79d7a5"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.control-border
color
{"colorSpace":"srgb","components":[0.62745098,0.62745098,0.62745098],"alpha":1,"hex":"#a0a0a0"}本地新增控制值,沒有對應原站實測同名 token。
primitive.dark.danger-solid
color
{"colorSpace":"srgb","components":[0.70588235,0.1372549,0.09411765],"alpha":1,"hex":"#b42318"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
primitive.dark.on-danger
color
{"colorSpace":"srgb","components":[1,1,1],"alpha":1,"hex":"#ffffff"}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
semantic.light.canvas--color-canvas
color
{primitive.light.canvas}原站實測 --color-surface = #fff;本地保留同值。
semantic.light.surface--color-surface
color
{primitive.light.surface}原站實測 --color-surface-secondary = #f9f9f9;本地保留同值。
semantic.light.subtle--color-subtle
color
{primitive.light.subtle}原站實測 --color-surface-tertiary = #f3f3f3;本地保留同值。
semantic.light.text--color-text
color
{primitive.light.text}原站實測 --color-text = #282828;本地保留同值。
semantic.light.muted--color-muted
color
{primitive.light.muted}原站實測 --color-text-secondary = #5d5d5d;本地保留同值。
semantic.light.border--color-border
color
{primitive.light.border}原站實測 --color-border = color-mix(in oklab, #0d0d0d 10%, transparent);本地採候選控制值 #e5e5e5,有差異。
semantic.light.primary--color-primary
color
{primitive.light.primary}原站實測 --color-background-primary-solid = #181818;本地採候選控制值 #171717,有差異。
semantic.light.on-primary--color-on-primary
color
{primitive.light.on-primary}本地新增控制值,沒有對應原站實測同名 token。
semantic.light.focus--color-focus
color
{primitive.light.focus}原站實測 --color-ring-primary = #0169cc;本地採候選控制值 #005fcc,有差異。
semantic.light.danger--color-danger
color
{primitive.light.danger}原站實測 --color-text-danger = #911e1b;本地採候選控制值 #b42318,有差異。
semantic.light.success--color-success
color
{primitive.light.success}原站實測 --color-text-success = #00692a;本地採候選控制值 #18794e,有差異。
semantic.light.control-border--color-control-border
color
{primitive.light.control-border}本地新增控制值,沒有對應原站實測同名 token。
semantic.light.danger-solid--color-danger-solid
color
{primitive.light.danger-solid}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
semantic.light.on-danger--color-on-danger
color
{primitive.light.on-danger}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
semantic.dark.canvas--color-canvas
color
{primitive.dark.canvas}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.surface--color-surface
color
{primitive.dark.surface}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.subtle--color-subtle
color
{primitive.dark.subtle}原站實測 --color-surface-tertiary = #131313;本地採候選控制值 #303030,有差異。
semantic.dark.text--color-text
color
{primitive.dark.text}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.muted--color-muted
color
{primitive.dark.muted}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.border--color-border
color
{primitive.dark.border}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.primary--color-primary
color
{primitive.dark.primary}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.on-primary--color-on-primary
color
{primitive.dark.on-primary}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.focus--color-focus
color
{primitive.dark.focus}原站實測 --color-ring-primary = #0285ff;本地採候選控制值 #8ab4ff,有差異。
semantic.dark.danger--color-danger
color
{primitive.dark.danger}原站實測 --color-text-danger = #e02e2a;本地採候選控制值 #ff9a91,有差異。
semantic.dark.success--color-success
color
{primitive.dark.success}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.control-border--color-control-border
color
{primitive.dark.control-border}本地新增控制值,沒有對應原站實測同名 token。
semantic.dark.danger-solid--color-danger-solid
color
{primitive.dark.danger-solid}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
semantic.dark.on-danger--color-on-danger
color
{primitive.dark.on-danger}本地新增:危險按鈕固定深紅底/白字配對,淺深主題均維持對比。
foundation.font-family--font-family
fontFamily
["OpenAI Sans","system-ui","sans-serif"]本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-xs--font-size-xs
dimension
{"value":12,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-sm--font-size-sm
dimension
{"value":14,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-md--font-size-md
dimension
{"value":16,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-lg--font-size-lg
dimension
{"value":20,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-xl--font-size-xl
dimension
{"value":24,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-2xl--font-size-2xl
dimension
{"value":32,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-3xl--font-size-3xl
dimension
{"value":48,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-size-4xl--font-size-4xl
dimension
{"value":64,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-weight-regular--font-weight-regular
fontWeight
400本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-weight-medium--font-weight-medium
fontWeight
500本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.font-weight-semibold--font-weight-semibold
fontWeight
600本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.line-height-body--line-height-body
number
1.5本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.line-height-heading--line-height-heading
number
1.1本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-0--space-0
dimension
{"value":0,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-4--space-4
dimension
{"value":4,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-8--space-8
dimension
{"value":8,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-12--space-12
dimension
{"value":12,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-16--space-16
dimension
{"value":16,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-20--space-20
dimension
{"value":20,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-24--space-24
dimension
{"value":24,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-32--space-32
dimension
{"value":32,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-40--space-40
dimension
{"value":40,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-48--space-48
dimension
{"value":48,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-64--space-64
dimension
{"value":64,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-80--space-80
dimension
{"value":80,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.space-96--space-96
dimension
{"value":96,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.radius-sm--radius-sm
dimension
{"value":8,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.radius-md--radius-md
dimension
{"value":12,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.radius-lg--radius-lg
dimension
{"value":16,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.radius-xl--radius-xl
dimension
{"value":24,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.radius-pill--radius-pill
dimension
{"value":9999,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.motion-fast--motion-fast
duration
{"value":120,"unit":"ms"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.motion-normal--motion-normal
duration
{"value":200,"unit":"ms"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.motion-easing--motion-easing
cubicBezier
[0.2,0,0,1]本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.content-max--content-max
dimension
{"value":1440,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
foundation.control-min--control-min
dimension
{"value":44,"unit":"px"}本地規格尺度;對應來源實測與適用差異見 docs/components.md,並非 OpenAI 官方 token。
component.button-radius--button-radius
dimension
{foundation.radius-pill}本地新增控制值;來源差異見 docs/extraction.md。
component.card-radius--card-radius
dimension
{foundation.radius-lg}本地新增控制值;來源差異見 docs/extraction.md。
component.dialog-radius--dialog-radius
dimension
{foundation.radius-xl}本地新增控制值;來源差異見 docs/extraction.md。

03 / TYPOGRAPHY

讓內容決定層次。

OpenAI Sans 使用本地來源字型,缺字時回退系統字型。英文與繁體中文混排需分別目視驗收。

Display · font-size-3xl / line-height-heading / regular
Turn ideas into progress.
Heading · font-size-2xl / line-height-heading / medium
把想法轉成下一步。
Body · font-size-md / line-height-body / regular

好的介面把複雜留在背後,讓學習自然發生。閱讀、探索,再動手試一次。

Supporting · font-size-sm / line-height-body / regular

狀態、補充說明與來源。輔助文字仍保留足夠對比。

04 / ACTIONS

每一個操作,都有回應。

試著點擊按鈕,或使用 Tab 與 Enter 操作。

Hover / active / focus-visible 以實際操作展示;disabled 使用原生語意;選取狀態同步 aria-pressed。載入為 1 秒本地模擬。

05 / INPUT

錯誤也要有下一步。

不會儲存或傳送資料。送出空白或格式不完整的內容,可查看錯誤狀態。

06 / PATTERNS

熟悉的操作,一致的契約。

分頁切換

原站語言,本地元件。

灰階底色、膠囊操作、清楚標題與充足留白。此展示頁為本地新增。

展開/收合

狀態訊息

資訊

這個頁面是可操作的設計規格。系統搜尋可實際查找章節,輸入不存在的詞可驗證空狀態。

07 / GOVERNANCE

可追溯,才可以演進。

格式基線 DTCG 2025.10;可及性目標 WCAG 2.2 AA;互動依原生 HTML 與 WAI-ARIA APG。以下是本地控制文件。

執行:python3 scripts/tokens.py --check
程式僅涵蓋本專案使用的 token 型別及 22 組色彩配對,不是完整 DTCG 或 WCAG 認證。

AiTOM 介面系統 · T026 · 本地候選 v02

搜尋系統章節

按 Esc 關閉,焦點返回搜尋按鈕。