색상
TDS의 색은 이름(토큰)으로 정해져 있다. 서비스가 Mordy에서 Morit으로 바뀌어도 이름은 같고 HEX 값만 바뀐다. 코드에는 HEX 값이 아니라 토큰 이름을 쓴다.
읽는 방법#
- 화면 오른쪽 아래의 서비스 색 선택기(Mordy, Morit)를 바꾸면 이 페이지의 모든 색 견본과 HEX 값이 바로 바뀐다.
- 모든 토큰에는 라이트(밝은 화면)와 다크(어두운 화면) 값이 있다. 두 값을 같은 줄에 나란히 적었다.
- 토큰 이름은 코드의
color.primary와 같다. 웹에서는 CSS 변수--tds-primary로 쓴다. - 웹 확장 표시가 있는 토큰은 앱 코드(
tokens.ts)에는 없고, 웹에서 글자 대비를 맞추려고 TDS가 더한 토큰이다. - 앱 미사용 표시가 있는 토큰은 앱 코드에 정의만 있고 아직 읽는 곳이 없다.
서비스별 주요 색#
선택기와 상관없이 두 서비스의 값을 한눈에 비교하는 표다. 나머지 모든 토큰은 아래 그룹별 표에 있다.
| 토큰 | Mordy 라이트 | Morit 라이트 | Mordy 다크 | Morit 다크 |
|---|---|---|---|---|
화면 배경bg--tds-bg | #FCFCFD | #F7F8FA | #0B0F17 | #1C2327 |
회색 바탕canvas--tds-canvas | #F4F6FA | #F7F8FA | #0B0F17 | #1C2327 |
흰 면surface--tds-surface | #FFFFFF | #FBFDFC | #141A25 | #242C30 |
본문text--tds-text | #141B2D | #17211F | #ECF0F7 | #DCE3E4 |
보조 글자textSecondary--tds-text-secondary | #737B8F | #65717D | #9AA4B8 | #ACBABD |
주색primary--tds-primary | #1F7BFF | #00856A | #3D8BFF | #79C7AF |
진한 주색primaryStrong--tds-primary-strong | #0C70FC | #00856A | #2F80FF | #326C59 |
옅은 주색primarySoft--tds-primary-soft | #E8F1FD | #EAF8F4 | #172A4A | #2F4D43 |
그라데이션 시작gradientFrom--tds-gradient-from | #3A93FF | #00856A | #3A93FF | #326C59 |
그라데이션 끝gradientTo--tds-gradient-to | #0A70FF | #00856A | #0A70FF | #326C59 |
성공success--tds-success | #0E9057 | #00856A | #2FBF7E | #79C7AF |
주의amber--tds-amber | #F8A434 | #E3A008 | #F8A434 | #D5BD8E |
오류danger--tds-danger | #E5213A | #C43C42 | #FF5A6E | #EBA6A4 |
배경과 면#
화면, 패널, 입력 칸처럼 넓은 면에 쓰는 색이다.
| 토큰 | 라이트 | 다크 | 용도 |
|---|---|---|---|
화면 배경bg--tds-bg | #FCFCFD#F7F8FA | #0B0F17#1C2327 | 화면 맨 뒤 배경이다. Screen 컴포넌트의 기본 배경이다. |
회색 바탕canvas--tds-canvas | #F4F6FA#F7F8FA | #0B0F17#1C2327 | 흰 패널(Panel) 아래에 까는 옅은 회색 바탕이다. 시험 계획과 리포트 화면이 쓴다. |
흰 면surface--tds-surface | #FFFFFF#FBFDFC | #141A25#242C30 | 패널, 시트, 대화상자, 탭 바, 선택 전 보기 칸의 배경이다. |
홈well--tds-well | #F6F8FB#F2F4F6 | #1A2130#2C353A | 패널 안에서 행을 감싸는 옅은 홈이다. WellRow 배경과 시트 닫기 버튼 배경이다. |
카드card--tds-card | #F3F7FE#F3FBF8 | #18202E#283837 | 주색을 옅게 깐 카드 배경이다. Card의 기본 색이고 메뉴 목록 배경이다. |
진한 카드cardStrong--tds-card-strong | #EAF2FD#EAF8F4 | #1D2839#2C433D | card보다 한 단계 진한 틴트다. 온보딩에서 선택된 타일과 다크 모드 토스트의 배경이다. |
선택됨selected--tds-selected | #F4F8FF#F3FBF8 | #15233C#2A3D3A | 선택된 항목의 배경이다. ChoiceCard, WellRow, FilterPill이 선택되면 이 색을 깐다. |
입력 칸field--tds-field | #F4F7FB#F2F4F6 | #1A2130#2C353A | Field의 기본 배경이다. 포커스를 받으면 surface로 바뀐다. |
보조 면muted--tds-muted | #F2F5F9#F0F3F2 | #1A2130#2C353A | 누르지 않는 보조 면이다. 표 머리글, 작은 태그, 이전·다음 둥근 버튼, 모임 커버 자리의 배경이다. |
누름pressed--tds-pressed | #F5F8FC#F0F3F2 | #1B2230#343F44 | 행을 누르는 동안의 배경이다. SettingsRow와 메뉴 행이 쓴다. |
사진 자리photo--tds-photo | #F1F3F7#F2F4F6 | #10151F#191F23 | 사진을 불러오기 전이나 사진이 없을 때 깔리는 색이다. Avatar, SourceCrop, ImageBlock이 쓴다. |
로딩 막대skeleton--tds-skeleton | #EAF0F8#E8EAED | #1C2433#343F44 | Skeleton의 막대 색이다. |
빈 막대track--tds-track | #E6ECF5#E8EAED | #253043#3D494F | 진행 막대, 슬라이더 레일, 차트 막대의 비어 있는 부분이다. |
선#
구분선과 테두리에 쓰는 색이다.
| 토큰 | 라이트 | 다크 | 용도 |
|---|---|---|---|
기본 선line--tds-line | #E8EDF5#EEF1F0 | #232C3C#3A464A | 구분선과 기본 테두리다. 두께는 1px(또는 헤어라인)이다. |
진한 선lineStrong--tds-line-strong | #D9E1EC#D8E1DE | #2F394C#5E6D6D | 선택 전 체크 원, 라디오 테두리, 시트 손잡이처럼 눈에 띄어야 하는 선이다. |
카드 테두리cardBorder--tds-card-border | #EDF1F6#E2E9E7 | #212A3A#3A464A | ChoiceCard 테두리이고, 다크 모드에서는 Panel 테두리다. |
선택 테두리앱 미사용selectedLine--tds-selected-line | #DCE8FB#D5EBE6 | #284B82#42625C | 선택된 항목의 옅은 테두리로 정의되어 있다. 앱 코드에서는 아직 읽지 않는다. |
글자#
글자와 아이콘에 쓰는 색이다.
| 토큰 | 라이트 | 다크 | 용도 |
|---|---|---|---|
본문text--tds-text | #141B2D#17211F | #ECF0F7#DCE3E4 | 제목과 본문 글자다. 흰 면 위에서 가장 진한 글자다. |
보조 글자textSecondary--tds-text-secondary | #737B8F#65717D | #9AA4B8#ACBABD | 날짜, 설명, 개수처럼 본문 아래에 놓는 보조 글자다. |
약한 글자textTertiary--tds-text-tertiary | #9AA3B5#8B95A1 | #667085#82948F | 입력 칸 안내 문구와 쓸 수 없는 상태의 글자다. 읽어야 하는 내용에는 쓰지 않는다. |
선택 안 된 탭tabInactive--tds-tab-inactive | #6F7486#65717D | #7C8699#ACBABD | 하단 탭 바에서 선택되지 않은 아이콘과 이름이다. |
슬레이트slate--tds-slate | #4B5A74#4E5A57 | #AAB5C8#A5BEC4 | 선택되지 않은 달력 날짜 숫자, 노트 카드의 종류 이름, 선택되지 않은 알림 선택지의 글자다. |
| #0B1F56#173D34 | #DCE7FF#BAE7D6 | 워드마크 글자와 PillTabs의 선택된 칸 색이다. 다크 모드의 PillTabs는 navy 대신 primary를 쓴다. | |
보조 글자(웹)웹 확장textSecondaryInk--tds-text-secondary-ink | #6A7184#65717D | #9AA4B8#ACBABD | 웹에서 작은 보조 글자를 쓸 때 쓴다. textSecondary를 흰 면에서 4.5:1이 되도록 진하게 만든 값이다. |
주색#
서비스마다 값이 가장 크게 달라지는 색이다. 버튼, 링크, 선택 표시에 쓴다.
gradientFrom에서 오른쪽 gradientTo로 이어진다. Morit은 단색이라 두 값이 같다.| 토큰 | 라이트 | 다크 | 용도 |
|---|---|---|---|
주색primary--tds-primary | #1F7BFF#00856A | #3D8BFF#79C7AF | 주 행동, 링크, 선택 표시, 진행 막대의 색이다. 앱 코드에서 가장 많이 쓰이는 색이다. |
진한 주색primaryStrong--tds-primary-strong | #0C70FC#00856A | #2F80FF#326C59 | 색이 채워진 둥근 표식에 쓴다. 오늘 날짜 원과 중앙 버튼 그림자가 이 색이다. |
옅은 주색primarySoft--tds-primary-soft | #E8F1FD#EAF8F4 | #172A4A#2F4D43 | 선택 타일, D-Day 칩, 부드러운 버튼, 안내(Notice) 배경이다. |
주색 테두리primaryLine--tds-primary-line | #9CC3FF#88D6BA | #35609E#286B55 | SecondaryButton의 테두리와 켜진 FilterPill의 테두리다. |
그라데이션 시작gradientFrom--tds-gradient-from | #3A93FF#00856A | #3A93FF#326C59 | 주 버튼, 중앙 버튼, 진행 막대, 아바타 바탕의 그라데이션 시작 색(왼쪽 또는 위)이다. |
그라데이션 끝gradientTo--tds-gradient-to | #0A70FF#00856A | #0A70FF#326C59 | 그라데이션의 끝 색(오른쪽 또는 아래)이다. |
primary 위 글자(웹)웹 확장onPrimary--tds-on-primary | #FFFFFF#FFFFFF | #FFFFFF#132F25 | primary로 채운 면 위에 놓는 글자와 아이콘 색이다. 앱 코드에서는 white를 쓴다. |
primaryStrong·그라데이션 위 글자(웹)웹 확장onPrimaryStrong--tds-on-primary-strong | #FFFFFF#FFFFFF | #FFFFFF#EDF4EF | primaryStrong 또는 gradient로 채운 면 위에 놓는 글자와 아이콘 색이다. 앱 코드에서는 white를 쓴다. |
주색 글자(웹)웹 확장primaryInk--tds-primary-ink | #1A69D9#007E65 | #4590FF#79C7AF | 웹에서 작은 글자를 주색으로 쓸 때 쓴다. primary를 흰 면에서 4.5:1이 되도록 진하게 만든 값이다. |
탭과 구분 컨트롤#
탭, 칩, 구분 컨트롤의 바탕에 쓰는 색이다.
| 토큰 | 라이트 | 다크 | 용도 |
|---|---|---|---|
구분 컨트롤 선택segment--tds-segment | #4B5A74#4E5A57 | #3A4A66#30434C | 촬영 검토 화면에서 선택된 필터 칩의 배경이다. |
구분 컨트롤 바탕segmentTrack--tds-segment-track | #F1F4F8#F2F4F6 | #1A2130#2C353A | 중립 대화상자 버튼, 시간 선택 띠, AiMark 칩의 배경이다. |
탭 바탕tabTrack--tds-tab-track | #E9EDF3#E8EAED | #1A2130#2C353A | PillTabs의 바탕 띠다. |
상태#
성공, 주의, 오류를 알리는 색이다. 색만으로 알리지 않고 아이콘과 글자를 함께 쓴다.
| 토큰 | 라이트 | 다크 | 용도 |
|---|---|---|---|
성공success--tds-success | #0E9057#00856A | #2FBF7E#79C7AF | 정답, 완료, 성공 토스트의 아이콘 색이다. |
성공 면successSoft--tds-success-soft | #ECF8F2#EAF8F4 | #11281E#2F4D43 | 정답 보기와 FeedbackCard(correct)의 배경이다. |
성공 글자successText--tds-success-text | #1F724D#173D34 | #7EDDB0#BAE7D6 | successSoft 위에 놓는 글자 색이다. |
민트mint--tds-mint | #2DC48D#00A884 | #33C891#79C7AF | 학습 목표선, 학습 완료 표시, 차트의 세 번째 선 색, 올라간 수치의 배경이다. |
민트 글자mintText--tds-mint-text | #17A673#00856A | #4FD6A2#79C7AF | 이번 주 달성 목표 수치와 올라간 수치의 글자와 아이콘이다. |
주의amber--tds-amber | #F8A434#E3A008 | #F8A434#D5BD8E | 복습 추천 버튼(AmberButton)과 경고 표시 색이다. |
주의 면amberSoft--tds-amber-soft | #FCF6E9#FFF8D6 | #2A2215#4B4231 | Notice(warn)와 복습 추천 카드의 배경이다. |
주의 글자amberText--tds-amber-text | #8A5A12#6D5429 | #F5C576#E9D5AC | amberSoft 위에 놓는 글자 색이다. |
주황orange--tds-orange | #F59A3C#E3A008 | #F59A3C#D5BD8E | 연속 학습일을 나타내는 불꽃 아이콘의 색이다. |
오류danger--tds-danger | #E5213A#C43C42 | #FF5A6E#EBA6A4 | 오류 글자, 오답 표시, 삭제 버튼, D-Day 임박 점의 색이다. |
오류 면dangerSoft--tds-danger-soft | #FFEFF2#FFF1F1 | #321820#513638 | Notice(error), 오답 보기, 삭제 행 아이콘 타일의 배경이다. |
오류 테두리dangerLine--tds-danger-line | #F6C3CB#ECC4C6 | #6A2A36#645153 | 오류 면 위의 옅은 테두리다. 문제 번호 격자와 단원 카드에 쓴다. |
오류 위 글자(웹)웹 확장onDanger--tds-on-danger | #FFFFFF#FFFFFF | #FFFFFF#441C1C | danger 위에 놓는 글자 색이다. 앱 코드에서는 white를 쓴다. |
덮개와 고정색#
화면을 덮거나, 어떤 서비스에서도 바뀌지 않는 색이다.
| 토큰 | 라이트 | 다크 | 용도 |
|---|---|---|---|
어둠막scrim--tds-scrim | rgba(12, 18, 34, 0.45)rgba(12, 18, 34, 0.45) | rgba(0, 0, 0, 0.62)rgba(0, 0, 0, 0.62) | 대화상자와 시트 뒤를 어둡게 덮는 반투명 색이다. |
베일veil--tds-veil | rgba(255, 255, 255, 0.55)rgba(255, 255, 255, 0.55) | rgba(11, 15, 23, 0.55)rgba(11, 15, 23, 0.55) | 촬영 검토 화면에서 사진 위를 흐리게 덮는 반투명 흰색이다. |
흰색white--tds-white | #FFFFFF#FFFFFF | #FFFFFF#FFFFFF | 색이 채워진 면 위의 글자와 아이콘이다. 모든 모드와 서비스에서 #FFFFFF다. |
검정앱 미사용black--tds-black | #000000#000000 | #000000#000000 | 정의되어 있지만 앱 코드에서는 아직 쓰지 않는다. |
과목 팔레트#
과목을 구분하는 8가지 색이다. 데이터를 구분하는 색이라서 서비스가 바뀌어도 값이 같다. 각 색은 다섯 값으로 이루어진다. 글리프는 아이콘과 링의 색, 옅은 면은 아이콘 바탕, 채움은 아이콘 타일의 그라데이션(왼쪽 위에서 오른쪽 아래), 막대는 차트 막대의 색이다.
| 이름 | 글리프 | 옅은 면 | 채움 (시작 → 끝) | 막대 | 기본 과목 |
|---|---|---|---|---|---|
| blue | #3B82F6#5B9BFF | #E9F3FDrgba(91, 155, 255, 0.16) | #7DB4FF#4C8DFB | #5B9BFF | 수학 |
| green | #18A865#35C483 | #E6F7EErgba(53, 196, 131, 0.16) | #6FD7A0#3DBE7C | #7CD0A4 | 영어 |
| orange | #F08A24#FFA24A | #FFF3E6rgba(255, 162, 74, 0.16) | #FFC07A#F59A3C | #FCC470 | 사회 |
| red | #F25C5C#FF7676 | #FFECEFrgba(255, 118, 118, 0.16) | #FF8F8F#F25C5C | #FC8C64 | 한국사 |
| purple | #7B61FF#9C86FF | #F0EBFFrgba(156, 134, 255, 0.16) | #B3A2FF#8B72FF | #A897FF | — |
| teal | #14A89A#2EC7B5 | #E0F8F0rgba(46, 199, 181, 0.16) | #6ADBC6#1FB58A | #6ACFB8 | 과학 |
| yellow | #E0A100#F2BE2E | #FFF7DDrgba(242, 190, 46, 0.16) | #FFD96B#F1B81C | #F6D36B | — |
| gray | #6B7A99#98A5BD | #F1F4F8rgba(152, 165, 189, 0.16) | #AAB4C7#8391AA | #AAB4C7 | 국어, 기타 |
각 칸에서 위쪽 값이 라이트, 아래쪽 값이 다크다. 채움과 막대는 라이트와 다크가 같다. 다크의 옅은 면은 글리프 색을 16% 투명도로 얹은 값이다.
글자 색 대비#
글자와 바탕의 밝기 차이를 숫자로 나타낸 값이다. 작은 글자(굵은 18.66px 미만)는 4.5:1 이상이어야 읽기 쉽다. 아래 표는 선택한 서비스와 모드의 실제 값으로 계산한 결과다.
| 쓰임 | 글자색 | 바탕 | 대비 | 기준 4.5:1 |
|---|---|---|---|---|
| 본문 글자 | text | surface | 17.15:115.25:116.13:110.92:1 | 통과통과통과통과 |
| 배경 위 본문 글자 | text | bg | 16.72:116.78:115.51:112.24:1 | 통과통과통과통과 |
| 회색 바탕 위 본문 글자 | text | canvas | 15.85:116.78:115.51:112.24:1 | 통과통과통과통과 |
| 보조 글자 (앱 값) | textSecondary | surface | 4.23:16.95:14.88:17.11:1 | 미달통과통과통과 |
| 보조 글자 (웹용 보정값) | textSecondaryInk | surface | 4.87:16.95:14.88:17.11:1 | 통과통과통과통과 |
| 약한 글자·안내 문구 | textTertiary | surface | 2.53:13.50:12.97:14.45:1 | 미달미달미달미달 |
| 선택 안 된 탭 | tabInactive | surface | 4.64:14.75:14.88:17.11:1 | 통과통과통과통과 |
| 주색 글자 (앱 값) | primary | surface | 3.93:15.26:14.50:17.17:1 | 미달통과통과통과 |
| 주색 글자 (웹용 보정값) | primaryInk | surface | 5.16:15.55:14.92:17.17:1 | 통과통과통과통과 |
| 옅은 주색 면 위 주색 글자 (앱 값) | primary | primarySoft | 3.45:14.32:14.21:14.68:1 | 미달미달미달통과 |
| 옅은 주색 면 위 주색 글자 (웹용 보정값) | primaryInk | primarySoft | 4.53:14.55:14.60:14.68:1 | 통과통과통과통과 |
| PrimaryButton 글자 | onPrimaryStrong | gradient (양 끝 중 낮은 값) | 3.08:13.08:14.60:15.48:1 | 미달미달통과통과 |
| primary 면 위 글자 | onPrimary | primary | 3.93:13.31:14.60:17.25:1 | 미달미달통과통과 |
| AmberButton 글자 | white | amber | 2.02:12.02:12.25:11.82:1 | 미달미달미달미달 |
| 주의 면 위 글자 | amberText | amberSoft | 5.48:19.81:16.66:16.86:1 | 통과통과통과통과 |
| 성공 면 위 글자 | successText | successSoft | 5.39:19.55:110.96:16.84:1 | 통과통과통과통과 |
| 오류 글자 | danger | surface | 4.55:15.76:15.04:17.11:1 | 통과통과통과통과 |
| 오류 면 위 글자 | danger | dangerSoft | 4.09:15.39:14.69:15.43:1 | 미달통과통과통과 |
| danger 면 위 글자 | onDanger | danger | 4.55:13.02:15.15:17.36:1 | 통과미달통과통과 |
Morit 값의 출처#
Morit은 Flutter의 Material 3 색 체계를 쓴다. TDS 토큰은 Mordy의 이름을 기준으로 하므로, Morit의 각 값이 어디에서 왔는지 세 가지로 나누어 적는다.
- 코드 값 Morit 코드에 있는 값을 그대로 가져왔다. Flutter가 자동으로 만드는 색 역할(
colorScheme.primaryContainer같은 것)도 실제 앱을 실행해서 읽은 값이다. - 계산 Morit에 같은 역할이 없어서, 코드 값 둘을 섞어 만들었다. 섞는 비율을 같이 적었다.
- 공통 Morit 코드에 정한 값이 없어서 Mordy와 같은 값을 쓴다. 어둠막, 흰색, 검정이 여기에 속한다.
| 토큰 | 라이트 값 | 라이트 출처 | 다크 값 | 다크 출처 |
|---|---|---|---|---|
bg | #F7F8FA | 코드 값 colorScheme.surface | #1C2327 | 코드 값 colorScheme.surface |
canvas | #F7F8FA | 코드 값 colorScheme.surface | #1C2327 | 코드 값 colorScheme.surface |
surface | #FBFDFC | 코드 값 colorScheme.surfaceContainerLow (cardTheme.color) | #242C30 | 코드 값 colorScheme.surfaceContainerLow (cardTheme.color) |
well | #F2F4F6 | 코드 값 colorScheme.surfaceContainer | #2C353A | 코드 값 colorScheme.surfaceContainer |
card | #F3FBF8 | 계산 primaryContainer 50% + surfaceContainerLow 50% | #283837 | 계산 primaryContainer 35% + surfaceContainerLow 65% |
cardStrong | #EAF8F4 | 코드 값 colorScheme.primaryContainer | #2C433D | 계산 primaryContainer 70% + surfaceContainerLow 30% |
selected | #F3FBF8 | 계산 primaryContainer 50% + surfaceContainerLow 50% | #2A3D3A | 계산 primaryContainer 50% + surfaceContainerLow 50% |
field | #F2F4F6 | 코드 값 inputDecorationTheme.fillColor | #2C353A | 코드 값 inputDecorationTheme.fillColor |
muted | #F0F3F2 | 코드 값 colorScheme.surfaceContainerHigh | #2C353A | 코드 값 colorScheme.surfaceContainer |
pressed | #F0F3F2 | 코드 값 colorScheme.surfaceContainerHigh | #343F44 | 코드 값 colorScheme.surfaceContainerHigh |
photo | #F2F4F6 | 코드 값 colorScheme.surfaceContainer | #191F23 | 코드 값 colorScheme.surfaceContainerLowest |
skeleton | #E8EAED | 코드 값 colorScheme.surfaceContainerHighest | #343F44 | 코드 값 colorScheme.surfaceContainerHigh |
track | #E8EAED | 코드 값 colorScheme.surfaceContainerHighest | #3D494F | 코드 값 colorScheme.surfaceContainerHighest |
line | #EEF1F0 | 코드 값 dividerTheme.color | #3A464A | 코드 값 dividerTheme.color |
lineStrong | #D8E1DE | 코드 값 outlinedButtonTheme 테두리색 | #5E6D6D | 계산 outline 50% + outlineVariant 50% |
cardBorder | #E2E9E7 | 코드 값 _lightCardBorder | #3A464A | 코드 값 colorScheme.outlineVariant |
selectedLine | #D5EBE6 | 계산 primary 15% + surfaceContainerLow 85% | #42625C | 계산 primary 35% + surfaceContainerLow 65% |
text | #17211F | 코드 값 colorScheme.onSurface | #DCE3E4 | 코드 값 colorScheme.onSurface |
textSecondary | #65717D | 코드 값 colorScheme.onSurfaceVariant | #ACBABD | 코드 값 colorScheme.onSurfaceVariant |
textTertiary | #8B95A1 | 코드 값 colorScheme.outline | #82948F | 코드 값 colorScheme.outline |
tabInactive | #65717D | 코드 값 colorScheme.onSurfaceVariant | #ACBABD | 코드 값 colorScheme.onSurfaceVariant |
slate | #4E5A57 | 코드 값 listTileTheme.iconColor | #A5BEC4 | 코드 값 colorScheme.secondary |
navy | #173D34 | 코드 값 colorScheme.onPrimaryContainer | #BAE7D6 | 코드 값 colorScheme.onPrimaryContainer |
textSecondaryInk | #65717D | 웹 확장 textSecondary를 surface·bg·canvas·well·card 위에서 4.5:1이 되도록 조정한 값 | #ACBABD | 웹 확장 textSecondary를 surface·bg·canvas·well·card 위에서 4.5:1이 되도록 조정한 값 |
primary | #00856A | 코드 값 colorScheme.primary | #79C7AF | 코드 값 colorScheme.primary |
primaryStrong | #00856A | 코드 값 filledButtonTheme 배경색 | #326C59 | 코드 값 filledButtonTheme 배경색 |
primarySoft | #EAF8F4 | 코드 값 colorScheme.primaryContainer | #2F4D43 | 코드 값 colorScheme.primaryContainer |
primaryLine | #88D6BA | 코드 값 colorScheme.inversePrimary | #286B55 | 코드 값 colorScheme.inversePrimary |
gradientFrom | #00856A | 코드 값 filledButtonTheme 배경색 (Morit 버튼은 단색이라 시작과 끝이 같다) | #326C59 | 코드 값 filledButtonTheme 배경색 (Morit 버튼은 단색이라 시작과 끝이 같다) |
gradientTo | #00856A | 코드 값 filledButtonTheme 배경색 (Morit 버튼은 단색이라 시작과 끝이 같다) | #326C59 | 코드 값 filledButtonTheme 배경색 (Morit 버튼은 단색이라 시작과 끝이 같다) |
onPrimary | #FFFFFF | 코드 값 colorScheme.onPrimary | #132F25 | 코드 값 colorScheme.onPrimary |
onPrimaryStrong | #FFFFFF | 코드 값 filledButtonTheme 글자색 | #EDF4EF | 코드 값 filledButtonTheme 글자색 |
primaryInk | #007E65 | 웹 확장 primary를 surface·primarySoft·canvas·card·selected 위에서 4.5:1이 되도록 조정한 값 | #79C7AF | 웹 확장 primary를 surface·primarySoft·canvas·card·selected 위에서 4.5:1이 되도록 조정한 값 |
segment | #4E5A57 | 코드 값 listTileTheme.iconColor | #30434C | 코드 값 colorScheme.secondaryContainer |
segmentTrack | #F2F4F6 | 코드 값 colorScheme.surfaceContainer | #2C353A | 코드 값 colorScheme.surfaceContainer |
tabTrack | #E8EAED | 코드 값 colorScheme.surfaceContainerHighest | #2C353A | 코드 값 colorScheme.surfaceContainer |
success | #00856A | 코드 값 colorScheme.primary | #79C7AF | 코드 값 colorScheme.primary |
successSoft | #EAF8F4 | 코드 값 colorScheme.primaryContainer | #2F4D43 | 코드 값 colorScheme.primaryContainer |
successText | #173D34 | 코드 값 colorScheme.onPrimaryContainer | #BAE7D6 | 코드 값 colorScheme.onPrimaryContainer |
mint | #00A884 | 코드 값 seed | #79C7AF | 코드 값 colorScheme.primary |
mintText | #00856A | 코드 값 colorScheme.primary | #79C7AF | 코드 값 colorScheme.primary |
amber | #E3A008 | 코드 값 colorScheme.tertiary | #D5BD8E | 코드 값 colorScheme.tertiary |
amberSoft | #FFF8D6 | 코드 값 colorScheme.tertiaryContainer | #4B4231 | 코드 값 colorScheme.tertiaryContainer |
amberText | #6D5429 | 코드 값 colorScheme.onTertiaryContainer | #E9D5AC | 코드 값 colorScheme.onTertiaryContainer |
orange | #E3A008 | 코드 값 colorScheme.tertiary | #D5BD8E | 코드 값 colorScheme.tertiary |
danger | #C43C42 | 코드 값 colorScheme.error | #EBA6A4 | 코드 값 colorScheme.error |
dangerSoft | #FFF1F1 | 코드 값 colorScheme.errorContainer | #513638 | 코드 값 colorScheme.errorContainer |
dangerLine | #ECC4C6 | 계산 error 30% + surfaceContainerLowest 70% | #645153 | 계산 error 35% + surface 65% |
onDanger | #FFFFFF | 코드 값 colorScheme.onError | #441C1C | 코드 값 colorScheme.onError |
scrim | rgba(12, 18, 34, 0.45) | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 | rgba(0, 0, 0, 0.62) | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 |
veil | rgba(255, 255, 255, 0.55) | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 | rgba(11, 15, 23, 0.55) | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 |
white | #FFFFFF | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 | #FFFFFF | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 |
black | #000000 | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 | #000000 | 공통 Morit 코드에 정한 값이 없어 Mordy와 같은 값을 쓴다 |
코드에서 쓰기#
앱 (React Native, Mordy)
import { color } from '@/ui/tokens';
// 현재 라이트·다크 모드의 값을 돌려준다.
<View style={{ backgroundColor: color.surface }}>
<Text style={{ color: color.text }}>제목</Text>
</View>웹 (CSS 변수)
tokens.css를 불러오고, 서비스는 data-tds-service로, 다크 모드는 data-tds-scheme="dark"로 정한다.
@import url('https://developers.moring.co/tds/tokens.css');
.card {
background: var(--tds-surface);
color: var(--tds-text);
border: 1px solid var(--tds-line);
}<html data-tds-service="morit" data-tds-scheme="dark">값 전체가 필요하면 tokens.json을 읽는다. Flutter에서 Morit을 만들 때는 위 “Morit 값의 출처” 표에서 코드 값(colorScheme.*)을 그대로 쓴다.
새 서비스 추가#
서비스를 추가하려면 색 값만 정하면 된다. 간격, 글자, 모서리, 그림자, 컴포넌트 코드는 그대로 쓴다.
값을 정한다.
src/tds/data/services.ts의services목록에 항목을 하나 더한다. 라이트와 다크 모두 이 페이지의 53개 토큰(과 웹 확장 토큰)을 빠짐없이 채운다.확인한다.
npm run tds:check를 실행한다. 빠진 토큰이나 글자 대비가 4.5:1에 못 미치는 웹 확장 값이 있으면 알려 준다.끝이다. 서비스 색 선택기, CSS 변수, 이 페이지의 표,
tokens.json,tokens.css, 마크다운 문서가 목록을 읽고 자동으로 늘어난다.