색 역할
zs-ui는 브랜드 시드 색으로 Material 3 색 역할을 계산하고, 용도가 드러나는 이름(background·text·border·surface1~surface5·primary …)으로 내보냅니다. 앱 코드는 숫자 톤이 아니라 색 역할로 색을 고르고, 라이트·다크·고대비에서는 같은 역할이 다른 값을 갖습니다.
const { colors } = useTheme();
<View style={{ backgroundColor: colors.surface3 }}>
<Text style={{ color: colors.text }}>본문</Text>
</View>
만드는 방법
ThemeProvider는 시드 색, 모드, 대비 수준으로 createThemeColors를 호출합니다.
primary는 채움 강조,onPrimary는 그 위의 글자·아이콘입니다.- 밝은 시드의
primary는 채움에 쓰고, 작은 선택 표시에는 대비를 보정한primaryMark를 씁니다. - 배경·글자·선은 기본 무채색입니다.
neutral시드로 색조를 지정할 수 있습니다. secondary·tertiary는 생략하면primary에서 파생합니다. 상태 색은 기본 시드를 사용합니다.- 다크 모드와 고대비에서는 같은 색 역할의 값이 자동으로 바뀝니다.
DEFAULT_COLORS
colors를 넘기지 않거나 일부만 넘기면 빈 자리를 기본 시드로 채웁니다. secondary·tertiary·neutral은 기본 시드가 없습니다(secondary·tertiary는 primary에서 만들고, neutral은 무채색입니다).
| 시드 | 기본값 |
|---|---|
primary | #ffa20d |
error | #ff4d6f |
success | #4fd165 |
warning | #ffd700 |
info | #4981ff |
색 규칙 — 채움과 얇은 표시
primary는 채움 색입니다. 글자나 얇은 선에는 쓰지 않습니다. 밝은 시드의 primary는 흰 바탕 위 글자·선으로 2:1 남짓이라(기본 호박 2.0:1) 읽히지 않습니다.
| 쓰임 | 색 | zs-ui 컴포넌트 |
|---|---|---|
| 넓은 채움 강조 | primary 면 + onPrimary 글자·아이콘 | ZSButton filled, 선택된 ZSChip, ZSSwitch 켬, 스낵바 동작 버튼. ZSCheckbox 켬·고른 ZSRadioGroup 라디오도 primary 면이지만 체크·점은 흰색(플랫폼 기본 컨트롤처럼) |
| 얇은 선택 표시(3:1 필요) | text | ZSTextField 포커스 테두리·라벨·커서, Android ZSMenu 체크 |
| 글자 버튼·링크 | text | ZSButton text·outlined(color="primary"), 헤더 버튼·뒤로가기 |
| 주색 표시(아이콘·선택 라벨, 3:1) | primaryMark | ZSTabNavigator 선택 아이콘·라벨, ZSCalendar 선택 카드 위 숫자 |
| 브랜드 색조 글자(4.5:1) | onPrimaryContainer | useStackTheme({ tint: 'primary' })(밝은 시드일 때) |
선택 상태는 면 색 하나에 기대지 않습니다. 고른 칩·세그먼트·라디오 줄·달력 숫자는 굵기·체크로도 상태를 알립니다. 예외로 ZSTabNavigator는 선택 아이콘·라벨을 주색 표시색 primaryMark로 칠합니다(Android 떠 있는 바은 회색 선택 캡슐이 함께 알립니다).
색 역할 목록 — ColorName
ThemeColors의 키(ColorName)이고, 모든 값은 #rrggbb 문자열입니다.