📔

Semantic color

Semantic color

Semantic color 指的是將特定的顏色與特定的意義或功能綁定為顏色語意,例如紅色代表取消、黃色代表警告,一個顏色語意可以同時表示 Dark Mode 和 Light Mode,在開發時使用可以提高介面的可用性和一致性。

⚡️ 開發與設計文件:

Intro

簡介

KKBOX 在 2022 年開始導入 Semantic 的顏色結構應用於設計交付和開發,並且讓所有設計師與各平台的開發者使用共通的文件,提升開發效率。此後,工程師拿到設計稿時不需將顏色轉譯成各自不同的 Semantic;設計師也可以透過調整 Semantic,一次性調整某種情境的顏色,同時可以間接控管顏色的使用規則,幫助人數較多的設計團隊維持設計一致性。顏色轉譯過程

設計師在 Figma 進行設計時,會套用已建立好的 Semantic Color System,工程師使用 Figma 點擊物件後,即可在右側欄的 Inspect 看到該物件使用的 Semantic。

Naming Structure of Semantic

命名規則

Guideline

顏色的語意名稱需依照規範命名,幫助夥伴管理與辨識。

💡
Core token 和 Components token 是 Semantic 組成的必要元素,所以需擇一使用,且不會同時出現。
image

Sequence

設計時,Sequence 最多不超過四層(Quaternary),讓使用者容易分辨資訊層級。

TOKEN
DESCRIPTION
Primary
第一層級
Secondary
第二層級
Tertiary
第三層級
Quaternary
第四層級

Assistive

當顏色規則在應用時,因應某些原因產生特殊規則時,需使用 Assistive (輔助)。

舉例來說,主要的填充色在 light mode 時使用 White,但如果應用於小物件上再加上陰影,會容易影響閱讀,所以須改成 Gray5,此時使用「primaryAltContainer」。

image
TOKEN
DESCRIPTION
Alt (Alternative)
可替代的選擇

Characteristic

Characteristic 用來表示該顏色是否有特殊意涵,例如:紅色會被用來作為否定的意思

TOKEN
DESCRIPTION
Negative
否定
Accent
強調
Brand
品牌
OnDark
在暗色之上,通常在不同主題 (Theme) 中使用相同顏色
OnBrand
在品牌色之上,通常在不同主題 (Theme) 中使用相同顏色
OnImage
在圖片之上,例如:圖片遮罩 (onImageOverlay)、圖片框線 (onImageBorder)
Interactive
可互動的
transparent
半透明的
placeholder
預先載入用來墊底的填充物

States

表示某物件在狀態中的顏色,必須要能夠與 Characteristic 並存。

TOKEN
DESCRIPTION
Pressed
手指點擊
Disabled
不可訪問
Hovered
鼠標懸浮

Core

Core token 是可以汎用於產品中的核心基底,設計基本需遵循 Core token 的顏色規則進行設計。

TOKEN
DESCRIPTION
Text
文字
Bg (Background)
頁面背景色,命名時使用簡寫
Container
重疊的區塊或元件背景色,例如:Card、Modal 或 Popover
Icon
圖標
Border
元件外框線
Separator
分隔線
Overlay
覆蓋物

Components

Components token 僅用於特定元件,不可用於他處。

並非只要是 Components 就使用 Components token,而是當特定 Components 需使用特殊的顏色規則時,才會建立新的 Components token 。

TOKEN
DESCRIPTION
Button
按鍵
Banner
橫幅
Bottom Navigation
底部導航列
Toolbar
工具列

Core Token

01 Text

primaryText / secondaryText / tertiaryText

primaryText 為主要層級的文字,可使用在標題或較需要被閱讀的文字,使用時需注意層級劃分,避免過度使用 primaryText 讓畫面資訊量過大。 secondaryText 較少單獨使用,經常依附在 primaryText 之下。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryText
Gray90
Gray5
主要文字
頁面標題、列表、卡片標題、內文,方便用戶閱讀的主要資訊
primaryTextPressed
PreGray90
PreGray5
主要文字點擊狀態
secondaryText
Gray70
Gray20
次要文字
頁面標題下的副標
secondaryTextPressed
PreGray70
PreGray20
次要文字點擊狀態
tertiaryText
Gray40
Gray50
第三級文字
列表、卡片副標題,用戶想看再仔細看的次要資訊、輸入框的預設文字
tertiaryTextPressed
PreGray40
PreGray50
第三級文字點擊狀態

primaryOnDarkText / tertiaryOnDarkText

onDarkText 是應用於任何模式下都是「深色底色」之上的文字,所以無論在 light / dark mode 之下文字都會顯示相同的顏色。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryOnDarkText
Gray5
Gray5
應用於深色底色的主要文字
排行榜卡片標題文字
tertiaryOnDarkText
Gray50
Gray50
應用於深色底色的第三級文字
排行榜卡片副標題文字

accentText

畫面中需強調的文字。文字本身不可點擊,和 Button 不同,經常用於標題或字串中。若文字右側有箭頭連接,箭頭也使用 accentText。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
accentText
StdBlueHC70
StdBlueHC60
強調文字
延伸歌單、卡片中引導點擊的文字

textDisabled

表示不可訪問狀態的文字時使用 textDisabled,但「僅用於灰階文字」,不可用於表示彩色文字的不可訪問狀態。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
textDisabled
Gray20
Gray70
不可訪問的文字
列表未授權歌曲

interactiveText

interactiveText 為最高層級的文字,可使用在本身可點擊的文字/標籤或較需要被閱讀的文字,通用於複雜組成的模組中,或文字段落之中。

⚠️
若文字右側有箭頭連接,箭頭也使用 interactiveText。
image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
interactiveText
StdBlueHC70
StdBlueHC60
最高層級文字
連結、一起聽跟聽數
interactiveTextPressed
PreBlueHC70
PreBlueHC60
最高層級文字點擊狀態
interactiveTextDisabled
PdBlueHC30
PdBlueHC95
最高層級文字不可訪問狀態

OnBrandText

onBrandText 是應用於品牌色底色之上的文字。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
OnBrandText
Gray90
Gray90
應用於品牌色底色的主要文字
按鈕、重要通知卡片(未開發)
OnBrandTextDisabled
Gray20
Gray20
應用於品牌色底色的主要文字不可訪問狀態
按鈕、重要通知卡片(未開發)

placeholderText

應用於輸入框未輸入文字狀態的提示文字,目前僅使用於 primaryBg 上的輸入框。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
placeholderText
Gray20
Gra70
輸入框提示文字
分類名稱輸入框

02 Background (Bg)

primaryBg

預設的一般頁面背景色。

⚠️
當物件顏色與 primaryBg 相同時,點擊狀態需使用 primaryBgPressed,而不是 primaryContainerPressed,例如:List Item
image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryBg
White
Gray95
主要背景
畫面底色、列表背景
primaryBgPressed
PreWhite
PreGray95
主要背景點擊狀態
列表背景點擊狀態

brandBg

用於展示品牌色的頁面背景色,在 Dark mode 時轉為灰階。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
brandBg
StdBlueHC60
Gray95
品牌色背景
App 開啟畫面背景

03 Container

一般情況下僅使用 PrimaryContainer,疊層設計最多不超過三層(Tertairy Container)。

參考章節 Layout / Hierarchy

primaryContainer / primaryAltContainer

應用於卡片的填充色,一般情況使用 primaryContainer,小型卡片使用 primaryAltContainer。

由於 primaryContainer 在 Light mode 時與 primaryBg 顏色相同,所以應用時需使用陰影。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryContainer
White
Gray90
主要區塊背景
一起聽、Podcast、紛絲/活動徽章、新聞、Uni 歌單卡片,更多內頁卡片
primaryContainerPressed
PreWhite
PreGray90
主要區塊背景點擊狀態
primaryAltContainer
Gray5
Gray90
可替代的主要區塊背景 ⚠️ 不可置於 primaryContainer 上
最近播放小卡、個人頁聆聽成就區塊
primaryAltContainerPressed
PreGray5
PreGray90
次要區塊背景點擊狀態

secondaryContainer / secondaryAltContainer

SecondaryContainer 在 light mode 時顏色較淺,可以作為區塊底色,使用於物件底色時需特別注意是否會顏色過淡。 若應用於小型物件,需使用 SecondaryAltContainer 提升 light mode 能見度。

image
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
secondaryContainer
Gray5
Gray80
第二級區塊背景 ⚠️ 置於 primaryContainer 上
更多頁上半部底色
secondaryContainerPressed
PreGray5
PreGray80
第二級區塊背景點擊狀態
secondaryAltContainer
Gray10
Gray80
可替代的第二級區塊背景 ⚠️ 不可置於 SecondaryContainer 上
Pill Tab, Search Bar
secondaryAltContainerPressed
PreGray10
PreGray80
第二級區塊背景點擊狀態

TertiaryContainer

應用於 Secondary Container 之上的物件填充色,一般不會單獨使用。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
tertiaryContainer
White
Gra70
第三級區塊背景 ⚠️ 置於 SecondaryContainer 上
更多頁上半部小卡底色
tertiaryContainerPressed
PreWhite
PreGray70
第三級區塊背景點擊狀態

brandContainer

品牌色填充色用來展示品牌設計,在 dark mode 時會轉為灰階設計。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
brandContainer
StdBlueHC20
Gray90
品牌色塊
花生背景

accentContainer

用於重要提示訊息的背景色。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
accentContainer
StdBlueHC20
PdBlueHC95
重要提示訊息
底色蓋板訊息

negativeContainer

否定性質的物件填充色。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
negativeContainer
RedHC60
RedHC60
否定色塊
左滑刪除按鈕

interactiveContainer

表示互動性質的物件填充色,常見於 Control 類型的物件中。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
interactiveContainer
StdBlueHC60
StdBlueHC60
帶有互動性質的元件
Toggle button、Slider
interactiveContainerPressed
PreBlueHC60
PreBlueHC60
帶有互動性質的元件點擊狀態
interactiveContainerDisabled
PdBlueHC30
PdBlueHC95
帶有互動性質的元件不可訪問狀態

transparentContainer

半透明的填充色,通常用於「前景」物件的背景色,因半透明特性讓使用者可以看到原頁面的狀態。

⚠️
和 Overlay 不同,TransparentContainer 僅於物件本身是半透明的情形下使用,Overlay 用於「疊加」在照片或頁面之上。
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryTransparentContainer
Black 85%
Black 85%
深半透明背景色
Toast
secondaryTransparentContainer
Black 40%
Black 40%
中深半透明背景色
Icon Button 底色
tertiaryTransparentContainer
Black 20%
Black 20%
淺半透明背景色
半透明 Search Bar 填充色

placeholderContainer

圖片載入前預先顯示的預設圖填充色。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
placeholderContainer
Gray20
Gray70
內容載入前的填充色
Default Image、Loading Logo

04 Border

Border

預設的物件框線,使用於不需特別凸顯的物件,通常物件無填充色,顏色與 primaryBg 相同。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
Border
Gray10
Gray80
主要邊框
AD banner

onImageBorder

應用於圖片的框線。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
onImageBorder
Black 10%
White 10%
圖片邊框
專輯、歌單封面、藝人圖等內框線

05 Separator

Separator

預設的物件分隔線,通常用於區隔列表或物件區塊。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
Separator
Gray10
Gray80
分隔線
列表、區塊分隔線

06 Icon

primaryIcon / secondaryIcon

primaryIcon 為主要的圖標顏色,應用於需要讓使用者注意的按鈕類型圖標;secondaryIcon 則應用於輔助類型的圖標,例如:列表中的引導箭頭或更多 (3 more)。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryIcon
Gray70
Gray20
主要圖標
頂部導航列、列表標題前的圖標
primaryIconPressed
PreGray70
PreGray20
主要圖標點擊狀態
secondaryIcon
Gray40
Gray50
次要圖標
更多箭頭、列表 action icon、等待下載狀態
secondaryIconPressed
PreGray40
PreGray50
次要圖標點擊狀態

PrimaryOnDarkIcon / SecondaryOnDarkIcon

onDarkIcon 是應用於任何模式下都是「深色底色」之上的圖標,所以無論在 light / dark mode 之下圖標都會顯示相同的顏色。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryOnDarkIcon
Gray5
Gray5
應用在深色底色上的主要圖標
Top Navigation
primaryOnDarkIconPressed
PreGray5
PreGray5
應用在深色底色上的主要圖標點擊狀態
secondaryOnDarkIcon
Gray20
Gray20
應用在深色底色上的次要圖標
刪除 Icon (垃圾桶)、歌單上半部、Uni hover
secondaryOnDarkIconPressed
PreGray20
PreGray20
應用在深色底色上的次要圖標點擊狀態
tertiaryOnDarkIcon
Gray50
Gray50
應用在深色底色上的第三級圖標
半透明 search bar
tertiaryOnDarkIconPressed
PreGray50
PreGray50
應用在深色底色上的第三級圖標點擊狀態

onBrandIcon

onBrandIcon 應用於底色是 StdBlueHC60 或StdBlueHC50 的圖標。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
onBrandIcon
Gray90
Gray90
至於品牌色之上的圖標顏色
primary pill button
onBrandIconDisabled
Gray20
Gray90
至於品牌色之上的圖標顏色不可訪問狀態

interactiveIcon

表示活躍狀態或選取狀態若文字右側有箭頭連接,「箭頭使用文字的顏色」。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
interactiveIcon
StdBlueHC60
StdBlueHC60
活躍狀態、選取狀態的圖標
收藏、追蹤、關注
interactiveIconPressed
PreBlueHC60
PreBlueHC60
活躍狀態、選取狀態的圖標點擊狀態
interactiveIconDisabled
PdBlueHC15
PdBlueHC95
活躍狀態、選取狀態的圖標不可訪問狀態

negativeIcon

否定性質的圖標。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
negativeIcon
RedHC60
RedHC60
否定圖標
刪除 Icon (禁止符號)、下載錯誤

iconDisabled

表示不可訪問狀態的圖標時使用 iconDisabled,但「僅用於灰階圖標」,「不可」用於表示 interactiveIcon 的不可訪問狀態。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
iconDisabled
Gray20
Gray70
不可訪問的圖標
不可訪問的圖標、已下載

placeholderIcon

圖片載入前,預先顯示的預設圖上的圖標顏色

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
placeholderIcon
Gray10
Gray50
照片預設圖的圖標顏色
Default Image

07 Overlay

Overlay

顯示對話框或其他視窗時,覆蓋全頁的半透明填充色。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
Overlay
Black 70%
Black 70%
半透明背景色
Dialog、Action Sheet 等背景遮罩

primaryOnImageOverlay / secondarOnImageOverlay

覆蓋在圖片上方的填充色,一般為帶有透明度的遮罩。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryOnImageOverlay
Black 70%
Black 70%
主要遮罩
歌單內頁封面圖背景,排行榜內頁卡片上半部背景,曲風情境卡片底色
secondaryOnImageOverlay
Black 50%
Black 50%
次要遮罩
正在播放的歌曲列表封面圖

Components Tokens

01 Btn

應用於 Button 元件,不可使用他處。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
primaryBtn
StdBlueHC50
StdBlueHC60
主要按鈕
PrimaryPillBtn, PrimaryBlockBtn
primaryBtnPressed
PreBlueHC50
PreBlueHC60
主要按鈕點擊狀態
primaryBtnDisabled
PdBlueHC15
PdBlueHC95
主要按鈕不可訪問狀態
secondaryBtn
Gray90
Gray5
次要按鈕
SecondaryPillBtn, SecondaryBlockBtn
secondaryBtnPressed
PreGray90
PreGray5
次要按鈕點擊狀態
secondaryBtnDisabled
Gray20
Gray70
次要按鈕不可訪問狀態
tertiaryBtn
Gray90
Gray5
第三級按鈕
tertiaryPillBtn, tertiaryBlockBtn
tertiaryBtnPressed
PreGray90
PreGray5
第三級按鈕點擊狀態
tertiaryBtnDisabled
Gray20
Gray70
第三級按鈕不可訪問狀態
tertiaryAccentBtn
StdBlueHC70
StdBlueHC60
第三級強調按鈕(無外框或底色)
tertiaryAccentPillBtn, tertiaryAccentBlockBtn
tertiaryAccentBtnPressed
PreBlueHC70
PreBlueHC60
第三級強調按鈕點擊狀態
tertiaryAccentBtnDisabled
PdBlueHC30
PdBlueHC95
第三級強調按鈕不可訪問狀態

02 Banner

應用於 Fix Banner 元件,不可使用他處。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
banner
StdBlueHC10
Gray80
固定橫幅
離線模式我的頁 Banner

03 Bottom Navigation

應用於底部導航列。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
bottomNav
Gray50
Gray40
底部導航列
Bottom Navigation icon & Text

04 Toolbar

iOS 應用於底部工具列;Android 應用於頂部導航列。

SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
toolbar (iOS)
Gray10
Gray80
iOS 工具列
tool bar (⚠️ iOS only)
SEMANTIC
LIGHT
DARK
DESCRIPTION
USAGE
toolbar (iOS)
StdBlueHC20
PdBlueHC95
Android 工具列
Android Edit Mode (⚠️ Android only)