Roles
속성 · 역할 · 변형 · 상태로 짓는 역할 색
역할 색은 색에 기능적 역할(주요 동작 · 오류 · 정보 …)을 줘서 화면 전체의 일관성 · 명확성 · 접근성을 지킨다. 이름은 속성(Property) · 역할(Role) · 변형(Variant) · 상태(State) 순으로 짓는다.
-fg (글자 · 아이콘)-bg (배경)-stroke (선)-layer-neutral-brand-critical-positive-warning-informative-solid-weak-contrast-muted-subtle-inverted-pressedProperty (속성)
Background
화면 전체나 UI 요소의 배경에 쓴다 — bg-.
Foreground
글자 · 아이콘처럼 앞에 놓이는 요소에 쓴다 — fg-. 채움(solid) 위의 흰 글자는 static-white 다.
Stroke
경계를 나누는 선이나 요소의 윤곽선에 쓴다 — stroke-.
Role (역할)
Brand
브랜드 요소를 바로 알아보게 하고, 화면에서 가장 중요한 동작을 강조한다. 값은 브랜드마다 다르다.
fg-brandfg-brand-contrastbg-brand-solidbg-brand-solid-pressedbg-brand-weakstroke-brand-solidstroke-focus-ring
fg-brandfg-brand-contrastbg-brand-solidbg-brand-solid-pressedbg-brand-weakstroke-brand-solidstroke-focus-ring
Neutral
일반 콘텐츠에 쓰는 기본 색이다. 가장 눈에 띄지는 않지만 읽혀야 하는 요소에 쓴다.
약한 배경(bg-neutral-weak)과 비활성(bg-disabled)은 라이트에서 회색 바닥과 같은 색이라 흰 표면 위에만 둔다. 회색 바닥 위에 바로 놓이는 칩 · 세그먼트 트랙은 투명한 bg-neutral-weak-alpha 로 칠한다 — Elevation 의 "바닥 위의 채움".
fg-neutralfg-neutral-mutedfg-neutral-subtlefg-placeholderfg-disabledbg-neutral-weakbg-neutral-weak-alphabg-disabledbg-neutral-invertedfg-neutral-inverted
Positive
작업 성공 · 확인 · 긍정적인 상태를 나타낸다.
fg-positivefg-positive-contrastbg-positive-solidbg-positive-solid-pressedbg-positive-weakbg-positive-weak-pressedstroke-positive-solid
Warning
주의가 필요한 경고나 안내를 전한다.
fg-warningfg-warning-contrastbg-warning-solidbg-warning-solid-pressedbg-warning-weakbg-warning-weak-pressedstroke-warning-solid
Critical
오류 · 문제 · 되돌릴 수 없는 동작을 알린다. 사용자의 주의를 바로 끈다.
fg-criticalfg-critical-contrastbg-critical-solidbg-critical-solid-pressedbg-critical-weakbg-critical-weak-pressedstroke-critical-solid
Informative
유용한 정보를 주거나 상태를 설명한다.
fg-informativefg-informative-contrastbg-informative-solidbg-informative-solid-pressedbg-informative-weakbg-informative-weak-pressedstroke-informative-solid
Layer
레이어 색은 화면의 깊이와 층을 나타낸다. 바닥(basement) 위에 기본 표면(default)이, 그 위에 메뉴 · 팝오버 같은 뜨는 표면(floating)이 놓인다.
bg-layer-basementbg-layer-defaultbg-layer-default-pressedbg-layer-floatingbg-layer-floating-pressed
Variant
같은 역할이라도 강조 정도에 따라 변형을 고른다 — 채움(solid)은 강하게, 약한 배경(weak)은 부드럽게. 약한 배경 위 글자는 contrast 를 써서 4.5:1 을 지킨다. 글자의 위계는 muted · subtle, 반전 배경 위 글자는 inverted 다.
State
누를 수 있는 요소는 누르는 동안 pressed 값으로 바뀐다. 웹의 hover 도 같은 값을 쓴다.
*-pressed
Tokens
값 옆의 이름은 역할이 가리키는 팔레트 단계다. 모드마다 다른 단계를 가리킬 수 있다 — bg-layer-default 는 라이트 gray-00, 다크 gray-100 이다.
Foreground
| 토큰 | 라이트 | 다크 | 옛 이름 |
|---|---|---|---|
fg-neutral | #1A1F2Egray-1000 | #F5F6FAgray-1000 | text-primary |
fg-neutral-muted | #535866gray-800 | #B7BDCCgray-800 | text-secondary |
fg-neutral-subtle | #62697Agray-700 | #A2A8B7gray-700 | text-tertiary |
fg-neutral-inverted | #FFFFFFgray-00 | #242938gray-100 | — |
fg-placeholder | #767C8Bgray-600 | #838997gray-600 | — |
fg-disabled | #8A91A0gray-500 | #838997gray-600 | text-disabled |
static-white | #FFFFFF | #FFFFFF | text-on-accent |
fg-critical | #D72323red-700 | #FF8477red-800 | error · error-light |
fg-positive | #167F3Fgreen-700 | #25C062green-800 | success · success-light |
fg-warning | #BE490Dorange-700 | #FF8758orange-800 | warning · warning-light |
fg-informative | #1D6EC9blue-700 | #69ABFFblue-800 | info · info-light |
fg-critical-contrast | #C01016red-800 | #FFBCB3red-900 | — |
fg-positive-contrast | #026E33green-800 | #AED6B6green-900 | — |
fg-warning-contrast | #A53E0Aorange-800 | #F9BFA9orange-900 | — |
fg-informative-contrast | #0F5FB3blue-800 | #ACCEFBblue-900 | — |
fg-positive-inverted | #25C062green-800 | #167F3Fgreen-700 | — |
fg-critical-inverted | #FF8477red-800 | #D72323red-700 | — |
Background
| 토큰 | 라이트 | 다크 | 옛 이름 |
|---|---|---|---|
bg-layer-basement | #F5F6FAgray-200 | #1A1F2Egray-00 | bg-page |
bg-layer-default | #FFFFFFgray-00 | #242938gray-100 | surface-default |
bg-layer-default-pressed | #F7F8FDgray-100 | #353B4Dgray-300 | — |
bg-layer-floating | #FFFFFFgray-00 | #2D3346gray-200 | — |
bg-layer-floating-pressed | #F7F8FDgray-100 | #353B4Dgray-300 | — |
bg-neutral-weak | #F5F6FAgray-200 | #353B4Dgray-300 | surface-input |
bg-neutral-weak-pressed | #EDEFF3gray-300 | #404757gray-400 | — |
bg-neutral-weak-alpha | #0000000C | #FFFFFF20 | — |
bg-neutral-weak-alpha-pressed | #00000010 | #FFFFFF2E | — |
bg-neutral-inverted | #1A1F2Egray-1000 | #F5F6FAgray-1000 | — |
bg-neutral-inverted-pressed | #535866gray-800 | #B7BDCCgray-800 | — |
bg-disabled | #F5F6FAgray-200 | #353B4Dgray-300 | — |
bg-critical-solid | #D72323red-700 | #CC0E17red-600 | error |
bg-critical-solid-pressed | #C01016red-800 | #D82424red-700 | — |
bg-critical-weak | #FFEFECred-100 | #532722red-200 | — |
bg-critical-weak-pressed | #FFDEDAred-200 | #722722red-300 | — |
bg-positive-solid | #167F3Fgreen-700 | #117539green-600 | success |
bg-positive-solid-pressed | #026E33green-800 | #198140green-700 | — |
bg-positive-weak | #EAF5ECgreen-100 | #223927green-200 | — |
bg-positive-weak-pressed | #D8EADBgreen-200 | #20482Bgreen-300 | — |
bg-warning-solid | #BE490Dorange-700 | #B04209orange-600 | warning |
bg-warning-solid-pressed | #A53E0Aorange-800 | #BF4A10orange-700 | — |
bg-warning-weak | #FFEFE8orange-100 | #4B2B1Forange-200 | — |
bg-warning-weak-pressed | #FAE0D5orange-200 | #65321Dorange-300 | — |
bg-informative-solid | #1D6EC9blue-700 | #0F65BFblue-600 | info |
bg-informative-solid-pressed | #0F5FB3blue-800 | #1F70CBblue-700 | — |
bg-informative-weak | #EAF3FEblue-100 | #21344Dblue-200 | — |
bg-informative-weak-pressed | #D7E6FBblue-200 | #204069blue-300 | — |
Stroke
| 토큰 | 라이트 | 다크 | 옛 이름 |
|---|---|---|---|
stroke-neutral-subtle | #EDEFF3gray-300 | #353B4Dgray-300 | — |
stroke-neutral-weak | #E5E8EFgray-400 | #404757gray-400 | border-default |
stroke-neutral-solid | #767C8Bgray-600 | #838997gray-600 | border-strong |
stroke-neutral-contrast | #1A1F2Egray-1000 | #F5F6FAgray-1000 | — |
stroke-neutral-overlay | #0000000C | #FFFFFF0D | — |
stroke-critical-solid | #D72323red-700 | #FF8477red-800 | error |
stroke-positive-solid | #167F3Fgreen-700 | #25C062green-800 | success |
stroke-warning-solid | #BE490Dorange-700 | #FF8758orange-800 | warning |
stroke-informative-solid | #1D6EC9blue-700 | #69ABFFblue-800 | info |
stroke-critical-weak | #FEC4BCred-300 | #93231Fred-400 | — |
stroke-positive-weak | #BBDAC1green-300 | #1A582Fgreen-400 | — |
stroke-warning-weak | #F5C7B6orange-300 | #833615orange-400 | — |
stroke-informative-weak | #B9D4F6blue-300 | #1C4E8Ablue-400 | — |
Brand
브랜드 파일(DESIGN.desk.md · DESIGN.hr.md)에 같은 이름으로 다른 값이 있다.
| 토큰 | Desk 라이트 | Desk 다크 | HR 라이트 | HR 다크 |
|---|---|---|---|---|
fg-brand | #0147ADbrand-600 | #7AA9F6brand-900 | #075B3Cbrand-600 | #2ABE84brand-900 |
fg-brand-contrast | #013D96brand-700 | #7AA9F6brand-900 | #064F33brand-700 | #2ABE84brand-900 |
fg-brand-inverted | #7AA9F6brand-900 | #0147ADbrand-600 | #2ABE84brand-900 | #075B3Cbrand-600 |
bg-brand-solid | #0147ADbrand-600 | #1049A4brand-500 | #075B3Cbrand-600 | #1B583Ebrand-500 |
bg-brand-solid-pressed | #013D96brand-700 | #1A5AC2brand-700 | #064F33brand-700 | #0C6C49brand-700 |
bg-brand-weak | #E8F1FEbrand-100 | #20314Ebrand-200 | #E8F3ECbrand-100 | #21352Bbrand-200 |
bg-brand-weak-pressed | #D7E5FCbrand-200 | #1F3A69brand-300 | #D6E8DEbrand-200 | #214132brand-300 |
stroke-focus-ring | #0147ADbrand-600 | #7AA9F6brand-900 | #075B3Cbrand-600 | #2ABE84brand-900 |
stroke-brand-solid | #0147ADbrand-600 | #7AA9F6brand-900 | #075B3Cbrand-600 | #2ABE84brand-900 |
stroke-brand-weak | #79A6F3brand-300 | #4C83DCbrand-800 | #77B193brand-300 | #1D9567brand-800 |
옛 이름(text-primary · surface-default · border-default · success …)은 역할 색을 가리키는 별칭으로 남아 있다 — 값을 따로 갖지 않는다. 컴포넌트 스펙을 새 이름으로 옮기고 나면 지운다. SEED 의 bg.neutral-solid · bg.transparent-* · stroke.neutral-muted 같은 역할은 groo 화면에 아직 쓰는 자리가 없어 두지 않았다.
구성과 일부 설명은 당근 SEED Design 의 Foundations 문서(Apache-2.0)를 바탕으로 했다. 값과 그림은 groo 것이다.