@iyulab/components 1.14.1 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +234 -0
- package/dist/_virtual/_glob-assets_raw/dark.css.e8ac080d.js +1 -1
- package/dist/_virtual/_glob-assets_raw/light.css.637cb2f8.js +1 -1
- package/dist/components/alert/UAlert.styles.js +15 -8
- package/dist/components/badge/UBadge.styles.js +5 -1
- package/dist/components/breadcrumb/UBreadcrumb.styles.js +1 -1
- package/dist/components/breadcrumb-item/UBreadcrumbItem.styles.js +2 -2
- package/dist/components/button/UButton.styles.js +10 -8
- package/dist/components/checkbox/UCheckbox.styles.js +7 -7
- package/dist/components/copy-button/UCopyButton.styles.js +2 -2
- package/dist/components/divider/UDivider.styles.js +1 -1
- package/dist/components/field/UField.styles.js +3 -3
- package/dist/components/icon-button/UIconButton.styles.js +1 -1
- package/dist/components/input/UInput.styles.js +9 -9
- package/dist/components/menu-item/UMenuItem.styles.js +1 -1
- package/dist/components/option/UOption.styles.js +1 -1
- package/dist/components/progress-bar/UProgressBar.styles.js +3 -3
- package/dist/components/progress-ring/UProgressRing.styles.js +3 -3
- package/dist/components/radio/URadio.styles.js +2 -2
- package/dist/components/select/USelect.styles.js +12 -12
- package/dist/components/slider/USlider.styles.js +2 -2
- package/dist/components/spinner/USpinner.styles.js +1 -1
- package/dist/components/switch/USwitch.styles.js +8 -8
- package/dist/components/tab/UTab.styles.js +1 -1
- package/dist/components/tab-panel/UTabPanel.styles.js +1 -1
- package/dist/components/tag/UTag.styles.js +1 -1
- package/dist/components/textarea/UTextarea.styles.js +8 -8
- package/dist/components/tree-item/UTreeItem.styles.js +1 -1
- package/dist/styles/dark.css +43 -9
- package/dist/styles/light.css +74 -15
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,239 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.18.0] - 2026-08-02
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **`--u-bg-color-raised`** — 바탕에 인접해 있으면서 한 단 구분되는 **크롬 면**
|
|
8
|
+
(툴바 · 표 헤더 · 푸터 · 페이지네이션).
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
라이트 neutral-50 (#FAFAFA) 다크 neutral-300 (#2A2A2A)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
종전에는 배경 역할 토큰이 **상호작용 상태 이름뿐**이었다(`-hover`·`-active`·
|
|
15
|
+
`-disabled`). *"바탕보다 한 단 올라온 면"* 을 뜻할 수단이 없어, 소비 패키지가
|
|
16
|
+
`:host-context([theme="dark"])` 로 다크만 손으로 보정했다 — 그리고 그 선택자는
|
|
17
|
+
**Firefox·Safari 에서 미지원**이라 그 브라우저에서는 다크가 적용된 적이 없었다.
|
|
18
|
+
|
|
19
|
+
⚠**`--u-panel-bg-color` 와 다르다.** 그쪽은 *떠 있는* 패널(카드·대화상자·메뉴)이라
|
|
20
|
+
라이트에서 페이지와 같은 흰색이고 그림자가 높이를 나른다. 크롬 면은 그림자가 없어
|
|
21
|
+
라이트에서도 틴트가 필요하다.
|
|
22
|
+
|
|
23
|
+
⚠**한 단만 정의한다.** 두 단째의 실측 수요는 라이트 한쪽뿐이었고, 다크에서는 소비 측
|
|
24
|
+
오버라이드가 두 값을 이미 같은 단으로 합치고 있었다. 상호작용 상태 축에 높이를 얹지도
|
|
25
|
+
않는다 — 의미가 어긋난다.
|
|
26
|
+
|
|
27
|
+
## [1.17.0] - 2026-08-02
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- ★**알림(`u-alert`) 아이콘이 알림 배경 위에서 보이지 않던 문제 — 라이트 4/4 미달.**
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
라이트 (기준 3.0) error 2.31 ✗ warning 1.48 ✗ info 2.63 ✗ success 2.50 ✗
|
|
35
|
+
다크 3.18 ✓ 3.80 ✓ 3.48 ✓ 3.95 ✓
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
원인은 **전경이 아니라 배경**이었다. 알림 배경이 `--u-*-color-weakest`(라이트
|
|
39
|
+
shade-200)였는데, 그 단은 **진행바 버퍼 같은 그래픽**에도 쓰인다 — 그래픽으로 보이려면
|
|
40
|
+
진해야 하고 면으로 쓰이려면 옅어야 한다. 두 요구를 한 단에 겹쳐 둔 것이 결함의 뿌리다.
|
|
41
|
+
|
|
42
|
+
⇒ 알림 배경을 **면 토큰 `--u-*-bg-color`** 로 옮겼다. 두 테마 **4/4 통과**(4.58~7.00).
|
|
43
|
+
`-weakest` 는 그래픽 단으로 남는다.
|
|
44
|
+
|
|
45
|
+
**라이트 알림 배경이 옅어진다** — error `#EF9A9A` → `#FFEBEE` · info `#90CAF9` →
|
|
46
|
+
`#E3F2FD` · success `#A5D6A7` → `#E8F5E9` (warning 은 `#FFF59D` 유지).
|
|
47
|
+
|
|
48
|
+
- **라이트 `--u-warning-color-strong` 이 어떤 배경에서도 읽히지 않던 문제.**
|
|
49
|
+
yellow-700(`#FBC02D`)은 흰 바탕 1.66 · 노란 면 위 1.61 이다. 노랑 램프는 900 까지도
|
|
50
|
+
2.65 로 미달이고 **1000(`#8A4A00`)에서 처음 6.86** 이 된다.
|
|
51
|
+
|
|
52
|
+
⇒ 라이트만 `yellow-1000` 으로 옮겼다(다크는 yellow-700 = 5.30 으로 이미 정상).
|
|
53
|
+
경고 아이콘·문구가 **밝은 노랑에서 어두운 호박색으로** 바뀐다 — 이 단의 용도는 면이
|
|
54
|
+
아니라 글자·아이콘이므로 색상보다 가독성이 앞선다.
|
|
55
|
+
|
|
56
|
+
⇒ 1.16.0 이 대비 검사에서 **제외해 두었던 라이트 warning 이 제외 없이 통과**한다.
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
|
|
60
|
+
- **`--u-warning-bg-color`** — 1.16.0 에서 유일하게 빠져 있던 유채색 면 토큰.
|
|
61
|
+
|
|
62
|
+
당시 판정은 *"라이트 황색 틴트가 Δ0.071 로 거의 보이지 않아 세기를 맞출 단 짝이 없다"*
|
|
63
|
+
였는데, 그 측정은 **shade-0 짝만** 재고 있었다. 노랑만 한 단 내려 잡으면 라이트 쪽
|
|
64
|
+
세기가 맞는다 — 바탕 대비 휘도 델타 실측:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
blue-0 0.131 · red-0 0.132 · green-0 0.117 · yellow-200 0.110 (yellow-0 은 0.027)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
라이트 `yellow-200` / 다크 `yellow-100`. ⚠단 이름이 계열마다 다른 것은 이 층의 정상
|
|
71
|
+
상태다 — 라이트 팔레트는 휘도 순이 아니라 같은 단 번호가 같은 세기를 뜻하지 않는다.
|
|
72
|
+
|
|
73
|
+
- **대비 계약 단언 2종** — `상태 아이콘이 그 상태의 면 위에서 보인다`(비텍스트 3.0)와
|
|
74
|
+
면 토큰 위의 본문(5역할 전부). 1.16.0 이 측정값으로만 기록해 둔 항목이 단언으로 승격됐다.
|
|
75
|
+
|
|
76
|
+
### Known issues
|
|
77
|
+
|
|
78
|
+
1.16.0 의 다음 둘은 그대로다 — **다크 `-weak` 의 구조적 충돌**(바탕 위 그래픽과 흰 글자를
|
|
79
|
+
받는 면이 팔레트의 반대쪽을 요구한다)과 **`--u-border-color-strong` 3.0 미달**.
|
|
80
|
+
알림 테두리(`-weaker`)도 면 위에서 3.0 에 못 미치지만(1.13~2.61), 알림은 상호작용
|
|
81
|
+
컴포넌트가 아니라 WCAG 1.4.11 적용 여부 자체가 판단을 요구하므로 이번에 손대지 않았다.
|
|
82
|
+
|
|
83
|
+
## [1.16.0] - 2026-08-02
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
|
|
87
|
+
- ★**역할 토큰의 유채색 단이 WCAG AA 를 받치지 못하던 문제 — 두 테마 모두.**
|
|
88
|
+
|
|
89
|
+
1.15.0 은 *"라이트 shade-600 위의 흰 글자가 8색 중 6색 미달, 다크는 8/8 통과"* 로
|
|
90
|
+
기록했다. 그 측정은 **한 방향만** 재고 있었다 — 같은 토큰이 **바탕 위의 글자**로도
|
|
91
|
+
쓰이는데, 그쪽은 다크가 미달이었다:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
바탕 위의 글자 (기준 4.5) 면 위의 흰 글자 (기준 4.5)
|
|
95
|
+
라이트 --u-primary-color 3.68 ✗ 라이트 3.68 ✗
|
|
96
|
+
다크 --u-primary-color 3.07 ✗ 다크 6.09 ✓
|
|
97
|
+
다크 --u-danger-color 2.74 ✗ 다크 6.83 ✓
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
실제로 깨져 있던 자리: **입력 오류 문구**(`u-field`·`u-checkbox`·`u-switch`),
|
|
101
|
+
**링크 버튼**(`variant="link"` 쉬는 상태 3.12), **복사 완료 표시**, hover/active
|
|
102
|
+
텍스트·아이콘.
|
|
103
|
+
|
|
104
|
+
⇒ **단을 대비로 다시 골랐다.** 단 번호가 아니라 측정이 기준이다:
|
|
105
|
+
|
|
106
|
+
| 토큰 | 라이트 | 다크 |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| `--u-primary-color` · `--u-info-color` | blue-600 → **blue-700** (4.60) | 변경 없음 (면, 6.09) |
|
|
109
|
+
| `--u-primary-color-strong` · `--u-info-color-strong` | blue-700 → **blue-800** (5.75) | blue-700 → **blue-800** (5.32) |
|
|
110
|
+
| `--u-danger-color` | red-600 → **red-700** (4.98) | 변경 없음 (면, 6.83) |
|
|
111
|
+
| `--u-danger-color-strong` | red-700 → **red-800** (5.62) | red-700 → **red-800** (4.87) |
|
|
112
|
+
| `--u-success-color` | green-600 → **green-800** (5.13) | 변경 없음 (면, 4.93) |
|
|
113
|
+
| `--u-success-color-strong` | green-700 → **green-900** (7.87) | 변경 없음 (5.15) |
|
|
114
|
+
|
|
115
|
+
⚠**계열마다 단이 다르고 테마마다 다르다.** Material 램프는 휘도가 아니라 색상 기준으로
|
|
116
|
+
만들어져 있어 같은 단 번호가 같은 세기를 뜻하지 않는다(green 은 700 도 4.12 로 미달이라
|
|
117
|
+
두 단을 건너뛴다). 종전에는 두 시트가 **같은 단**을 쓰도록 테스트가 강제하고 있었고,
|
|
118
|
+
그 규칙이 라이트만 미달인 결함을 세 번 반복해서 만들었다.
|
|
119
|
+
|
|
120
|
+
⚠**라이트와 다크에서 요구가 갈리는 이유**: 라이트는 바탕도 on-color 도 흰색이라 두
|
|
121
|
+
요구가 한 조건으로 합쳐지지만, 다크는 바탕 `#121212` · on-color `#FFFFFF` 로 **정반대
|
|
122
|
+
방향**이다. 한 단이 둘을 맡을 수 없다. 그래서 `-color` 는 **면**, `-strong` 은
|
|
123
|
+
**글자·아이콘**으로 용도를 확정했고, 다크에서 두 단이 벌어진다.
|
|
124
|
+
|
|
125
|
+
- **`--u-warning-txt-color` 가 노란 면 위에서 읽히지 않던 문제** — `#FFFFFF` 는 라이트
|
|
126
|
+
노랑 위에서 1.40 이다. 노랑은 **어떤 단으로 옮겨도** 흰 글자로 AA 를 못 받치므로
|
|
127
|
+
(라이트 최대 2.65 @900, 그마저 갈색) 전경을 뒤집었다: `var(--u-neutral-1000)` —
|
|
128
|
+
라이트 `#000000`(15.05 ✓) · 다크 `#FFFFFF`(4.65 ✓). 한 줄로 양 테마를 만족한다.
|
|
129
|
+
|
|
130
|
+
- **`u-badge[color="blue"]` 가 장식 축에서 역할 토큰을 읽던 문제.** 이 한 색만
|
|
131
|
+
`--u-primary-color` 를 참조해, 브랜드 색을 바꾸면 `color="blue"` 배지가 함께 움직였다
|
|
132
|
+
(`color="green"` 등 나머지 8색은 팔레트 직참조라 움직이지 않는다). `--u-blue-500` 로
|
|
133
|
+
되돌렸다 — 이 컴포넌트의 다른 장식 색과 같은 단이다. **배지 파랑이 `#1E88E5` →
|
|
134
|
+
`#2196F3` 로 바뀐다.**
|
|
135
|
+
|
|
136
|
+
- **`u-button[variant="link"]` 이 `--u-link-txt-color` 를 무시하던 문제.** 링크 색을
|
|
137
|
+
정의해 둔 토큰이 **어디에서도 쓰이지 않았고**, 링크는 대신 `--u-primary-color-weak`
|
|
138
|
+
(흰 바탕 3.12 ✗)를 썼다. 쉬는 상태를 그 토큰으로 되돌리고, hover/active 는 밑줄 +
|
|
139
|
+
`-strong` 한 단으로 합쳤다.
|
|
140
|
+
|
|
141
|
+
### Added
|
|
142
|
+
|
|
143
|
+
- **`tests/build/token-contrast.test.ts`** — 역할 토큰의 **조합 대비**를 단언하는 회귀망.
|
|
144
|
+
값 하나를 재는 것으로는 토큰이 안전한지 알 수 없다는 것이 위 결함의 교훈이므로,
|
|
145
|
+
`(전경, 배경, 기준)` 표를 두 테마에 대해 검사한다. 소비자가 `--u-primary-color` 를
|
|
146
|
+
덮어써도 살아남는 형태의 계약이다.
|
|
147
|
+
|
|
148
|
+
- **`node scripts/token-fallbacks.mjs --refresh`** — 시트 값이 바뀐 뒤 **이미 배선된**
|
|
149
|
+
폴백 리터럴을 다시 굽는다. 종전 생성기는 배선만 하고 갱신을 못 해서, 매핑을 바꿀 때마다
|
|
150
|
+
수십 곳을 손으로 고쳐야 했다(*"폴백은 손으로 쓰지 말고 생성한다"* 는 원칙에 갱신 경로가
|
|
151
|
+
없었다). 이번 변경의 49곳이 이 명령으로 처리됐다.
|
|
152
|
+
|
|
153
|
+
### Changed
|
|
154
|
+
|
|
155
|
+
- **시각 변화 요약** — 전부 *진해지는* 방향이며 레이아웃에 영향이 없다.
|
|
156
|
+
주 강조색 `#1E88E5` → `#1976D2` · 오류색 `#E53935` → `#D32F2F` ·
|
|
157
|
+
성공색 `#43A047` → `#2E7D32` · 링크/hover 텍스트가 한 단 더 · 경고 면 위 글자가
|
|
158
|
+
흰색 → 검정 · 배지 파랑 `#1E88E5` → `#2196F3`.
|
|
159
|
+
다크에서는 **글자로 쓰이는 자리만** 밝아진다(면 색은 그대로).
|
|
160
|
+
|
|
161
|
+
### Known issues
|
|
162
|
+
|
|
163
|
+
- **알림(`u-alert`) 아이콘이 알림 배경 위에서 3.0 에 미달** — 라이트 danger 2.61 ·
|
|
164
|
+
warning 1.48 (info 3.28 ✓ · success 4.79 ✓ 는 이번 재매핑으로 해소됐다). 원인은
|
|
165
|
+
전경이 아니라 **배경(`-weakest` = shade-200)이 너무 진한 것**이라 면 토큰 쪽을
|
|
166
|
+
손봐야 한다. 다크는 4/4 통과한다.
|
|
167
|
+
|
|
168
|
+
- **다크에서 `-weak`(진행바 채움·별점·포커스 링)가 바탕 위 3.0 미달** (2.31).
|
|
169
|
+
이 자리는 재매핑으로 못 고친다 — 다크에서 `-weak`(바탕 위 그래픽, 밝아야 함)와
|
|
170
|
+
`-color`(흰 글자를 받는 면, 어두워야 함)가 팔레트의 **반대쪽**을 요구하므로 강도 축
|
|
171
|
+
하나로 표현되지 않는다. 새 축 신설 여부는 설계 결정이다.
|
|
172
|
+
|
|
173
|
+
- **`--u-border-color-strong` 이 양 테마 모두 3.0 미달** (라이트 1.88 · 다크 2.40).
|
|
174
|
+
무엇이 "UI 컴포넌트 경계"인지의 판단이 선행돼야 한다.
|
|
175
|
+
|
|
176
|
+
- **장식 축(`[color=X]`)의 shade-600 위 흰 글자는 여전히 8색 중 6색 미달** — 아래
|
|
177
|
+
1.15.0 항목 참조. 역할 층과 달리 장식 축은 소비자가 고른 색이라 라이브러리가 단을
|
|
178
|
+
대신 고를 수 없다.
|
|
179
|
+
|
|
180
|
+
## [1.15.0] - 2026-08-02
|
|
181
|
+
|
|
182
|
+
### Fixed
|
|
183
|
+
|
|
184
|
+
- ★**`--u-txt-color-weak` 가 라이트 테마에서 WCAG AA 에 미달하던 문제.**
|
|
185
|
+
흰 배경 대비 **2.68** (AA 기준 4.5) 이었다. neutral-500 → **neutral-600** 으로 한 단
|
|
186
|
+
내려 **4.61** 로 통과한다. 다크 매핑(neutral-700 = 5.43)은 원래 정상이었으므로 그대로
|
|
187
|
+
둔다 — **라이트 한쪽만의 결함**이었다.
|
|
188
|
+
|
|
189
|
+
이 토큰은 컴포넌트 전반의 보조 텍스트가 쓴다. **보조 텍스트가 한 단 진해진다** —
|
|
190
|
+
방향이 단조로워(가독성만 상승) 레이아웃·위계에는 영향이 없다. 배선된 폴백 리터럴
|
|
191
|
+
17곳(11파일)도 함께 맞췄다.
|
|
192
|
+
|
|
193
|
+
### Added
|
|
194
|
+
|
|
195
|
+
- **유채색 표면 토큰 4종** — `--u-primary-bg-color` · `--u-info-bg-color` ·
|
|
196
|
+
`--u-success-bg-color` · `--u-danger-bg-color`.
|
|
197
|
+
|
|
198
|
+
종전에는 역할 층의 유채색이 **전경 5단뿐**이라, 상태 배경(선택된 행, 정보 패널,
|
|
199
|
+
오류 줄 …)이 필요한 컴포넌트는 팔레트를 직접 읽고 다크를 손으로 보정해야 했다.
|
|
200
|
+
|
|
201
|
+
⚠**두 테마가 같은 단이 아니라 같은 세기가 되도록 짝지었다.** 팔레트의 유채색 틴트는
|
|
202
|
+
다크에서 짓눌린다 — 바탕 대비 델타의 다크/라이트 비가 중립은 1.34~1.62배인 반면
|
|
203
|
+
청색은 **0.38~0.54배**다. 그래서 라이트 shade-0 ↔ 다크 shade-100 으로 맞췄고,
|
|
204
|
+
실측 세기 비는 blue 1.09 · red 1.12 · green 0.91 이다.
|
|
205
|
+
|
|
206
|
+
⚠**경고(yellow)는 빠져 있다.** 라이트 황색 틴트가 Δ0.071 로 거의 보이지 않아 어떤
|
|
207
|
+
단 짝을 골라도 비가 2배 밑으로 내려가지 않는다(최선 1.99). 팔레트 리터럴 재설계가
|
|
208
|
+
선행돼야 한다.
|
|
209
|
+
|
|
210
|
+
- **유채색 배경 위의 글자 토큰 5종** — `--u-primary-txt-color` 외.
|
|
211
|
+
`--u-txt-color-inverse` 는 다크에서 neutral-100(`#121212`)이라 유채색 버튼 위에서
|
|
212
|
+
읽히지 않는다. 브랜드 색을 바꾸는 소비자가 전경색도 함께 조절할 수 있도록 분리했다.
|
|
213
|
+
값은 두 테마 모두 `#FFFFFF` 이며 **현재 렌더는 바뀌지 않는다**(컴포넌트가 이미
|
|
214
|
+
리터럴 흰색을 쓰고 있었다).
|
|
215
|
+
|
|
216
|
+
### Known issues
|
|
217
|
+
|
|
218
|
+
- ★**라이트 팔레트의 shade-600 위에서 흰 글자가 AA 에 미달한다 — 8색 중 6색.**
|
|
219
|
+
`u-button[variant="solid"]` 이 그 조합이다. 실측(흰 글자 기준):
|
|
220
|
+
|
|
221
|
+
| 계열 | 라이트 shade-600 | 라이트 shade-700 | 다크 shade-600 |
|
|
222
|
+
|---|---|---|---|
|
|
223
|
+
| blue | 3.68 ✗ | 4.60 ✓ | 6.09 ✓ |
|
|
224
|
+
| green | 3.30 ✗ | 4.12 ✗ | 4.93 ✓ |
|
|
225
|
+
| red | 4.23 ✗ | 4.98 ✓ | 6.83 ✓ |
|
|
226
|
+
| orange | 2.37 ✗ | 2.70 ✗ | 5.34 ✓ |
|
|
227
|
+
| teal | 4.32 ✗ | 5.32 ✓ | 4.91 ✓ |
|
|
228
|
+
| cyan | 2.74 ✗ | 3.51 ✗ | 4.56 ✓ |
|
|
229
|
+
| purple | 7.04 ✓ | 8.20 ✓ | 6.03 ✓ |
|
|
230
|
+
| pink | 4.95 ✓ | 5.87 ✓ | 5.47 ✓ |
|
|
231
|
+
|
|
232
|
+
**다크는 8/8 통과**한다. 한 단 내리는 것(shade-700)으로는 3색만 해결되고 green·
|
|
233
|
+
orange·cyan 은 여전히 미달이라, **라이트 유채색 램프의 리터럴 재설계**가 필요하다.
|
|
234
|
+
위 `--u-txt-color-weak` 와 같은 성격이며 — 다크는 대비를 검증하며 만들어졌고 라이트는
|
|
235
|
+
그렇지 않다 — 범위가 훨씬 크다. 이번 릴리스에서는 고치지 않았다.
|
|
236
|
+
|
|
3
237
|
## [1.14.1] - 2026-08-01
|
|
4
238
|
|
|
5
239
|
### Fixed
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region \0glob-assets_raw/dark.css.e8ac080d
|
|
2
|
-
var dark_css_default = ":root[theme=\"dark\"] {\n color-scheme: dark;\n\n /* Neutral Colors */\n --u-neutral-0: #000000;\n --u-neutral-50: #0A0A0A;\n --u-neutral-100: #121212;\n --u-neutral-200: #1E1E1E;\n --u-neutral-300: #2A2A2A;\n --u-neutral-400: #3D3D3D;\n --u-neutral-500: #525252;\n --u-neutral-600: #6E6E6E;\n --u-neutral-700: #8A8A8A;\n --u-neutral-800: #B0B0B0;\n --u-neutral-900: #D4D4D4;\n --u-neutral-1000: #FFFFFF;\n\n /* Blue Colors */\n --u-blue-0: #030D1A;\n --u-blue-100: #061629;\n --u-blue-200: #0A223B;\n --u-blue-300: #103150;\n --u-blue-400: #174167;\n --u-blue-500: #205281;\n --u-blue-600: #2A659D;\n --u-blue-700: #3678B8;\n --u-blue-800: #478DCE;\n --u-blue-900: #5DA2DF;\n --u-blue-1000: #79BBEA;\n\n /* Green Colors */\n --u-green-0: #06140C;\n --u-green-100: #0A2114;\n --u-green-200: #10301D;\n --u-green-300: #164228;\n --u-green-400: #1F5535;\n --u-green-500: #2A6942;\n --u-green-600: #367E50;\n --u-green-700: #4A9563;\n --u-green-800: #63AB7A;\n --u-green-900: #80BE97;\n --u-green-1000: #9BCFB1;\n\n /* Yellow Colors */\n --u-yellow-0: #1C1300;\n --u-yellow-100: #2D1E00;\n --u-yellow-200: #402B00;\n --u-yellow-300: #553900;\n --u-yellow-400: #6B4900;\n --u-yellow-500: #825A00;\n --u-yellow-600: #9A6C00;\n --u-yellow-700: #B08012;\n --u-yellow-800: #C69635;\n --u-yellow-900: #D9AD5A;\n --u-yellow-1000: #E8C57F;\n\n /* Red Colors */\n --u-red-0: #1C0707;\n --u-red-100: #2C0B0B;\n --u-red-200: #3E1111;\n --u-red-300: #541818;\n --u-red-400: #6C2020;\n --u-red-500: #852A2A;\n --u-red-600: #A13535;\n --u-red-700: #B94949;\n --u-red-800: #CB6262;\n --u-red-900: #D98383;\n --u-red-1000: #E7A2A2;\n\n /* Orange Colors */\n --u-orange-0: #1D0E00;\n --u-orange-100: #2F1700;\n --u-orange-200: #421F00;\n --u-orange-300: #582A00;\n --u-orange-400: #703600;\n --u-orange-500: #8A4500;\n --u-orange-600: #A55600;\n --u-orange-700: #BD6A18;\n --u-orange-800: #D1823C;\n --u-orange-900: #E19D67;\n --u-orange-1000: #EDB992;\n\n /* Teal Colors */\n --u-teal-0: #041411;\n --u-teal-100: #07201B;\n --u-teal-200: #0B2E28;\n --u-teal-300: #10403A;\n --u-teal-400: #16544D;\n --u-teal-500: #1E6860;\n --u-teal-600: #297D74;\n --u-teal-700: #3A9389;\n --u-teal-800: #54A89F;\n --u-teal-900: #73BBB3;\n --u-teal-1000: #93CBC5;\n\n /* Cyan Colors */\n --u-cyan-0: #041318;\n --u-cyan-100: #071F29;\n --u-cyan-200: #0B2D3A;\n --u-cyan-300: #104050;\n --u-cyan-400: #165469;\n --u-cyan-500: #1E6A82;\n --u-cyan-600: #287F9C;\n --u-cyan-700: #3995B5;\n --u-cyan-800: #53AACC;\n --u-cyan-900: #73BEDD;\n --u-cyan-1000: #95CFE8;\n\n /* Purple Colors */\n --u-purple-0: #150A22;\n --u-purple-100: #220F36;\n --u-purple-200: #31164B;\n --u-purple-300: #432064;\n --u-purple-400: #572B80;\n --u-purple-500: #6C379C;\n --u-purple-600: #8245B7;\n --u-purple-700: #975BCB;\n --u-purple-800: #AB79D9;\n --u-purple-900: #BD99E2;\n --u-purple-1000: #CEB8EA;\n\n /* Pink Colors */\n --u-pink-0: #1F0A14;\n --u-pink-100: #310F20;\n --u-pink-200: #451532;\n --u-pink-300: #5C1D45;\n --u-pink-400: #74285A;\n --u-pink-500: #8F336F;\n --u-pink-600: #AB4187;\n --u-pink-700: #C0569D;\n --u-pink-800: #D174B3;\n --u-pink-900: #E095C7;\n --u-pink-1000: #EBB5D9;\n\n /* ==========================================================================\n Role Colors — 의미 역할 층\n 컴포넌트는 팔레트 프리미티브가 아니라 이 층을 참조한다.\n 브랜드 색 교체는 아래 25개만 재정의하면 시맨틱 층까지 따라온다.\n\n 단은 '강도' 축이다 (weakest -> strong). 용도(배경/테두리/텍스트)는\n 소비처가 정한다 -- 단을 속성에 묶으면 primary 버튼의 배경이 어느\n 단인지 같은 모순이 생긴다.\n ========================================================================== */\n\n /* primary — 브랜드 · 강조 · 포커스 · 링크 */\n --u-primary-color-weakest: var(--u-blue-200);\n --u-primary-color-weaker: var(--u-blue-300);\n --u-primary-color-weak: var(--u-blue-500);\n --u-primary-color: var(--u-blue-600);\n --u-primary-color-strong: var(--u-blue-700);\n\n /* info — 정보 안내 (primary 와 기본값은 같으나 역할이 다르다 — 브랜딩은 primary 만 바꾼다) */\n --u-info-color-weakest: var(--u-blue-200);\n --u-info-color-weaker: var(--u-blue-300);\n --u-info-color-weak: var(--u-blue-500);\n --u-info-color: var(--u-blue-600);\n --u-info-color-strong: var(--u-blue-700);\n\n /* success — 성공 · 완료 */\n --u-success-color-weakest: var(--u-green-200);\n --u-success-color-weaker: var(--u-green-300);\n --u-success-color-weak: var(--u-green-500);\n --u-success-color: var(--u-green-600);\n --u-success-color-strong: var(--u-green-700);\n\n /* warning — 주의 */\n --u-warning-color-weakest: var(--u-yellow-200);\n --u-warning-color-weaker: var(--u-yellow-300);\n --u-warning-color-weak: var(--u-yellow-500);\n --u-warning-color: var(--u-yellow-600);\n --u-warning-color-strong: var(--u-yellow-700);\n\n /* danger — 오류 · 위험 · 유효성 실패 */\n --u-danger-color-weakest: var(--u-red-200);\n --u-danger-color-weaker: var(--u-red-300);\n --u-danger-color-weak: var(--u-red-500);\n --u-danger-color: var(--u-red-600);\n --u-danger-color-strong: var(--u-red-700);\n /* ==========================================================================\n Radius Scale — 모서리 반경\n 리터럴을 흩뿌리면 값이 갈린다(실제로 pill 이 999px/9999px 두 표기로 나뉘어 있었다).\n ========================================================================== */\n --u-radius-none: 0;\n --u-radius-sm: 3px;\n --u-radius-md: 4px;\n --u-radius-lg: 6px;\n --u-radius-xl: 8px;\n --u-radius-pill: 9999px;\n --u-radius-circle: 50%;\n\n /* ==========================================================================\n Space Scale — 컨테이너·오버레이의 절대 여백\n ⚠**여백은 하나의 축이 아니다.** 이 스케일은 컨테이너/오버레이의 **레이아웃 여백**만\n 담당한다. 폼·인라인 요소의 `em` 여백은 상속된 `font-size` 에 비례하는 것이 의도이므로\n **여기로 흡수하지 않는다.** 반경과 마찬가지로 테마와 무관하므로 두 시트가 같다.\n 축 구분과 근거는 docs/design-tokens.md 참조.\n ========================================================================== */\n --u-space-3xs: 2px;\n --u-space-2xs: 4px;\n --u-space-xs: 6px;\n --u-space-sm: 8px;\n --u-space-md: 12px;\n --u-space-lg: 16px;\n\n /* Text Colors */\n --u-txt-color: var(--u-neutral-900);\n --u-txt-color-inverse: var(--u-neutral-100);\n --u-txt-color-hover: var(--u-primary-color);\n --u-txt-color-active: var(--u-primary-color);\n --u-txt-color-disabled: var(--u-neutral-500);\n --u-txt-color-weak: var(--u-neutral-700);\n --u-txt-color-strong: var(--u-neutral-1000);\n\n --u-link-txt-color: var(--u-primary-color-strong);\n --u-tooltip-txt-color: var(--u-neutral-100);\n\n /* Icon Colors */\n --u-icon-color: var(--u-neutral-800);\n --u-icon-color-inverse: var(--u-neutral-100);\n --u-icon-color-hover: var(--u-primary-color);\n --u-icon-color-active: var(--u-primary-color);\n --u-icon-color-disabled: var(--u-neutral-500);\n\n /* Border Colors */\n --u-border-color: var(--u-neutral-400);\n --u-border-color-weak: var(--u-neutral-300);\n --u-border-color-strong: var(--u-neutral-500);\n --u-border-color-hover: var(--u-neutral-500);\n\n --u-input-border-color: var(--u-neutral-400);\n --u-input-border-color-hover: var(--u-neutral-500);\n --u-input-border-color-focus: var(--u-primary-color);\n --u-input-border-color-invalid: var(--u-danger-color);\n\n /* Background Colors */\n --u-bg-color: var(--u-neutral-100);\n --u-bg-color-inverse: var(--u-neutral-0);\n --u-bg-color-hover: var(--u-neutral-300);\n --u-bg-color-active: var(--u-neutral-400);\n --u-bg-color-disabled: var(--u-neutral-100);\n \n --u-input-bg-color: var(--u-neutral-200);\n --u-panel-bg-color: var(--u-neutral-200);\n --u-overlay-bg-color: rgba(0, 0, 0, 0.7);\n --u-tooltip-bg-color: rgba(255, 255, 255, 0.85);\n\n /* Shadow Colors */\n --u-shadow-color-weaker: rgba(0, 0, 0, 0.15);\n --u-shadow-color-weak: rgba(0, 0, 0, 0.25);\n --u-shadow-color-normal: rgba(0, 0, 0, 0.35);\n --u-shadow-color-strong: rgba(0, 0, 0, 0.45);\n --u-shadow-color-stronger: rgba(0, 0, 0, 0.60);\n\n /* Scrollbar Colors */\n --u-scrollbar-color: var(--u-neutral-500);\n --u-scrollbar-color-hover: var(--u-neutral-600);\n --u-scrollbar-track-color: transparent;\n\n /* Font Styles */\n --u-font-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n --u-font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Monaco, 'Courier New', monospace;\n --u-font-serif: 'Georgia', 'Times New Roman', Times, serif;\n --u-font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;\n --u-font-modern: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n --u-font-rounded: 'Nunito', 'Quicksand', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}";
|
|
2
|
+
var dark_css_default = ":root[theme=\"dark\"] {\n color-scheme: dark;\n\n /* Neutral Colors */\n --u-neutral-0: #000000;\n --u-neutral-50: #0A0A0A;\n --u-neutral-100: #121212;\n --u-neutral-200: #1E1E1E;\n --u-neutral-300: #2A2A2A;\n --u-neutral-400: #3D3D3D;\n --u-neutral-500: #525252;\n --u-neutral-600: #6E6E6E;\n --u-neutral-700: #8A8A8A;\n --u-neutral-800: #B0B0B0;\n --u-neutral-900: #D4D4D4;\n --u-neutral-1000: #FFFFFF;\n\n /* Blue Colors */\n --u-blue-0: #030D1A;\n --u-blue-100: #061629;\n --u-blue-200: #0A223B;\n --u-blue-300: #103150;\n --u-blue-400: #174167;\n --u-blue-500: #205281;\n --u-blue-600: #2A659D;\n --u-blue-700: #3678B8;\n --u-blue-800: #478DCE;\n --u-blue-900: #5DA2DF;\n --u-blue-1000: #79BBEA;\n\n /* Green Colors */\n --u-green-0: #06140C;\n --u-green-100: #0A2114;\n --u-green-200: #10301D;\n --u-green-300: #164228;\n --u-green-400: #1F5535;\n --u-green-500: #2A6942;\n --u-green-600: #367E50;\n --u-green-700: #4A9563;\n --u-green-800: #63AB7A;\n --u-green-900: #80BE97;\n --u-green-1000: #9BCFB1;\n\n /* Yellow Colors */\n --u-yellow-0: #1C1300;\n --u-yellow-100: #2D1E00;\n --u-yellow-200: #402B00;\n --u-yellow-300: #553900;\n --u-yellow-400: #6B4900;\n --u-yellow-500: #825A00;\n --u-yellow-600: #9A6C00;\n --u-yellow-700: #B08012;\n --u-yellow-800: #C69635;\n --u-yellow-900: #D9AD5A;\n --u-yellow-1000: #E8C57F;\n\n /* Red Colors */\n --u-red-0: #1C0707;\n --u-red-100: #2C0B0B;\n --u-red-200: #3E1111;\n --u-red-300: #541818;\n --u-red-400: #6C2020;\n --u-red-500: #852A2A;\n --u-red-600: #A13535;\n --u-red-700: #B94949;\n --u-red-800: #CB6262;\n --u-red-900: #D98383;\n --u-red-1000: #E7A2A2;\n\n /* Orange Colors */\n --u-orange-0: #1D0E00;\n --u-orange-100: #2F1700;\n --u-orange-200: #421F00;\n --u-orange-300: #582A00;\n --u-orange-400: #703600;\n --u-orange-500: #8A4500;\n --u-orange-600: #A55600;\n --u-orange-700: #BD6A18;\n --u-orange-800: #D1823C;\n --u-orange-900: #E19D67;\n --u-orange-1000: #EDB992;\n\n /* Teal Colors */\n --u-teal-0: #041411;\n --u-teal-100: #07201B;\n --u-teal-200: #0B2E28;\n --u-teal-300: #10403A;\n --u-teal-400: #16544D;\n --u-teal-500: #1E6860;\n --u-teal-600: #297D74;\n --u-teal-700: #3A9389;\n --u-teal-800: #54A89F;\n --u-teal-900: #73BBB3;\n --u-teal-1000: #93CBC5;\n\n /* Cyan Colors */\n --u-cyan-0: #041318;\n --u-cyan-100: #071F29;\n --u-cyan-200: #0B2D3A;\n --u-cyan-300: #104050;\n --u-cyan-400: #165469;\n --u-cyan-500: #1E6A82;\n --u-cyan-600: #287F9C;\n --u-cyan-700: #3995B5;\n --u-cyan-800: #53AACC;\n --u-cyan-900: #73BEDD;\n --u-cyan-1000: #95CFE8;\n\n /* Purple Colors */\n --u-purple-0: #150A22;\n --u-purple-100: #220F36;\n --u-purple-200: #31164B;\n --u-purple-300: #432064;\n --u-purple-400: #572B80;\n --u-purple-500: #6C379C;\n --u-purple-600: #8245B7;\n --u-purple-700: #975BCB;\n --u-purple-800: #AB79D9;\n --u-purple-900: #BD99E2;\n --u-purple-1000: #CEB8EA;\n\n /* Pink Colors */\n --u-pink-0: #1F0A14;\n --u-pink-100: #310F20;\n --u-pink-200: #451532;\n --u-pink-300: #5C1D45;\n --u-pink-400: #74285A;\n --u-pink-500: #8F336F;\n --u-pink-600: #AB4187;\n --u-pink-700: #C0569D;\n --u-pink-800: #D174B3;\n --u-pink-900: #E095C7;\n --u-pink-1000: #EBB5D9;\n\n /* ==========================================================================\n Role Colors — 의미 역할 층\n 컴포넌트는 팔레트 프리미티브가 아니라 이 층을 참조한다.\n 브랜드 색 교체는 아래 25개만 재정의하면 시맨틱 층까지 따라온다.\n\n 단은 '강도' 축이다 (weakest -> strong). 용도(배경/테두리/텍스트)는\n 소비처가 정한다 -- 단을 속성에 묶으면 primary 버튼의 배경이 어느\n 단인지 같은 모순이 생긴다.\n\n ★**다만 두 단은 용도가 확정돼 있다** — 대비 요구가 서로 다르기 때문이다.\n `-color` = **면**. `--u-*-txt-color` 가 그 위에 얹히므로 on-color 기준 4.5.\n `-strong` = **글자·아이콘**. `--u-bg-color` 위에 놓이므로 바탕 기준 4.5.\n 라이트에서는 바탕도 on-color 도 흰색이라 두 요구가 한 조건으로 합쳐지지만,\n **다크에서는 정반대 방향**이다(바탕 #121212 · on-color #FFFFFF). 바탕에서 읽히는\n 밝은 단은 흰 글자를 못 받고, 흰 글자를 받는 어두운 단은 바탕에서 안 읽힌다.\n ⇒ 다크에서 `-color` 와 `-strong` 이 두 단 벌어지는 것이 그 결과다.\n `tests/build/token-contrast.test.ts` 가 값을 지킨다.\n ========================================================================== */\n\n /* primary — 브랜드 · 강조 · 포커스 · 링크 */\n --u-primary-color-weakest: var(--u-blue-200);\n --u-primary-color-weaker: var(--u-blue-300);\n --u-primary-color-weak: var(--u-blue-500);\n --u-primary-color: var(--u-blue-600); /* 면: 흰 글자 6.09 ✓ */\n --u-primary-color-strong: var(--u-blue-800); /* 글자: 바탕 5.32 ✓ (700 은 4.05 ✗) */\n\n /* info — 정보 안내 (primary 와 기본값은 같으나 역할이 다르다 — 브랜딩은 primary 만 바꾼다) */\n --u-info-color-weakest: var(--u-blue-200);\n --u-info-color-weaker: var(--u-blue-300);\n --u-info-color-weak: var(--u-blue-500);\n --u-info-color: var(--u-blue-600);\n --u-info-color-strong: var(--u-blue-800);\n\n /* success — 성공 · 완료 */\n --u-success-color-weakest: var(--u-green-200);\n --u-success-color-weaker: var(--u-green-300);\n --u-success-color-weak: var(--u-green-500);\n --u-success-color: var(--u-green-600);\n --u-success-color-strong: var(--u-green-700);\n\n /* warning — 주의 */\n --u-warning-color-weakest: var(--u-yellow-200);\n --u-warning-color-weaker: var(--u-yellow-300);\n --u-warning-color-weak: var(--u-yellow-500);\n --u-warning-color: var(--u-yellow-600);\n --u-warning-color-strong: var(--u-yellow-700);\n\n /* danger — 오류 · 위험 · 유효성 실패 */\n --u-danger-color-weakest: var(--u-red-200);\n --u-danger-color-weaker: var(--u-red-300);\n --u-danger-color-weak: var(--u-red-500);\n --u-danger-color: var(--u-red-600); /* 면: 흰 글자 6.83 ✓ */\n --u-danger-color-strong: var(--u-red-800); /* 글자: 바탕 4.87 ✓ (700 은 3.67 ✗) */\n /* ==========================================================================\n Radius Scale — 모서리 반경\n 리터럴을 흩뿌리면 값이 갈린다(실제로 pill 이 999px/9999px 두 표기로 나뉘어 있었다).\n ========================================================================== */\n --u-radius-none: 0;\n --u-radius-sm: 3px;\n --u-radius-md: 4px;\n --u-radius-lg: 6px;\n --u-radius-xl: 8px;\n --u-radius-pill: 9999px;\n --u-radius-circle: 50%;\n\n /* ==========================================================================\n Space Scale — 컨테이너·오버레이의 절대 여백\n ⚠**여백은 하나의 축이 아니다.** 이 스케일은 컨테이너/오버레이의 **레이아웃 여백**만\n 담당한다. 폼·인라인 요소의 `em` 여백은 상속된 `font-size` 에 비례하는 것이 의도이므로\n **여기로 흡수하지 않는다.** 반경과 마찬가지로 테마와 무관하므로 두 시트가 같다.\n 축 구분과 근거는 docs/design-tokens.md 참조.\n ========================================================================== */\n --u-space-3xs: 2px;\n --u-space-2xs: 4px;\n --u-space-xs: 6px;\n --u-space-sm: 8px;\n --u-space-md: 12px;\n --u-space-lg: 16px;\n\n /* Text Colors */\n --u-txt-color: var(--u-neutral-900);\n --u-txt-color-inverse: var(--u-neutral-100);\n\n /* 유채색 배경 위의 글자 — warning 만 다르다(light.css 참조). */\n --u-primary-txt-color: #FFFFFF;\n --u-info-txt-color: #FFFFFF;\n --u-success-txt-color: #FFFFFF;\n --u-danger-txt-color: #FFFFFF;\n /* ★라이트 시트와 같은 이유로 중립 최상단을 쓴다 — 다크에서는 그 값이 #FFFFFF 라\n 결과가 종전과 같다(4.65 ✓). 리터럴 대신 토큰을 쓰는 이유는 라이트에서 뒤집히기\n 때문이다(#000000). 두 시트가 같은 선언이 되어 어긋날 자리가 없어진다. */\n --u-warning-txt-color: var(--u-neutral-1000);\n --u-txt-color-hover: var(--u-primary-color-strong);\n --u-txt-color-active: var(--u-primary-color-strong);\n --u-txt-color-disabled: var(--u-neutral-500);\n --u-txt-color-weak: var(--u-neutral-700);\n --u-txt-color-strong: var(--u-neutral-1000);\n\n --u-link-txt-color: var(--u-primary-color-strong);\n --u-tooltip-txt-color: var(--u-neutral-100);\n\n /* Icon Colors */\n --u-icon-color: var(--u-neutral-800);\n --u-icon-color-inverse: var(--u-neutral-100);\n --u-icon-color-hover: var(--u-primary-color-strong);\n --u-icon-color-active: var(--u-primary-color-strong);\n --u-icon-color-disabled: var(--u-neutral-500);\n\n /* Border Colors */\n --u-border-color: var(--u-neutral-400);\n --u-border-color-weak: var(--u-neutral-300);\n --u-border-color-strong: var(--u-neutral-500);\n --u-border-color-hover: var(--u-neutral-500);\n\n --u-input-border-color: var(--u-neutral-400);\n --u-input-border-color-hover: var(--u-neutral-500);\n --u-input-border-color-focus: var(--u-primary-color);\n --u-input-border-color-invalid: var(--u-danger-color);\n\n /* Background Colors */\n --u-bg-color: var(--u-neutral-100);\n --u-bg-color-inverse: var(--u-neutral-0);\n --u-bg-color-hover: var(--u-neutral-300);\n --u-bg-color-active: var(--u-neutral-400);\n --u-bg-color-disabled: var(--u-neutral-100);\n\n /* 면 높이 — 상세는 light.css 참조. 다크는 **바탕보다 밝은 쪽**이 위다.\n neutral-300(#2A2A2A)은 바탕(#121212) 대비 1.42 로, 소비 측이 오버라이드로 쓰던\n neutral-200(1.15)보다 실제로 더 잘 구분된다 — 그 오버라이드가 해결하려던 증상이\n *\"툴바·헤더가 배경에 묻힌다\"* 였다. */\n --u-bg-color-raised: var(--u-neutral-300);\n \n /* 유채색 표면 — 라이트와 **같은 단이 아니라 같은 세기**로 짝지었다(light.css 참조).\n 팔레트 유채색 틴트가 다크에서 짓눌리므로 한 단 위를 쓴다. green 은 대칭이라 그대로. */\n --u-primary-bg-color: var(--u-blue-100);\n --u-info-bg-color: var(--u-blue-100);\n --u-success-bg-color: var(--u-green-0);\n --u-danger-bg-color: var(--u-red-100);\n /* warning 합류 — 라이트는 yellow-200 이다(단 이름이 다른 이유는 light.css 참조). */\n --u-warning-bg-color: var(--u-yellow-100);\n\n --u-input-bg-color: var(--u-neutral-200);\n --u-panel-bg-color: var(--u-neutral-200);\n --u-overlay-bg-color: rgba(0, 0, 0, 0.7);\n --u-tooltip-bg-color: rgba(255, 255, 255, 0.85);\n\n /* Shadow Colors */\n --u-shadow-color-weaker: rgba(0, 0, 0, 0.15);\n --u-shadow-color-weak: rgba(0, 0, 0, 0.25);\n --u-shadow-color-normal: rgba(0, 0, 0, 0.35);\n --u-shadow-color-strong: rgba(0, 0, 0, 0.45);\n --u-shadow-color-stronger: rgba(0, 0, 0, 0.60);\n\n /* Scrollbar Colors */\n --u-scrollbar-color: var(--u-neutral-500);\n --u-scrollbar-color-hover: var(--u-neutral-600);\n --u-scrollbar-track-color: transparent;\n\n /* Font Styles */\n --u-font-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n --u-font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Monaco, 'Courier New', monospace;\n --u-font-serif: 'Georgia', 'Times New Roman', Times, serif;\n --u-font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;\n --u-font-modern: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n --u-font-rounded: 'Nunito', 'Quicksand', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { dark_css_default as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region \0glob-assets_raw/light.css.637cb2f8
|
|
2
|
-
var light_css_default = ":root {\n color-scheme: light;\n\n /* Neutral Colors */\n --u-neutral-0: #FFFFFF;\n --u-neutral-50: #FAFAFA;\n --u-neutral-100: #F5F5F5;\n --u-neutral-200: #EEEEEE;\n --u-neutral-300: #E0E0E0;\n --u-neutral-400: #BDBDBD;\n --u-neutral-500: #9E9E9E;\n --u-neutral-600: #757575;\n --u-neutral-700: #616161;\n --u-neutral-800: #424242;\n --u-neutral-900: #212121;\n --u-neutral-1000: #000000;\n\n /* Blue Colors */\n --u-blue-0: #E3F2FD;\n --u-blue-100: #BBDEFB;\n --u-blue-200: #90CAF9;\n --u-blue-300: #64B5F6;\n --u-blue-400: #42A5F5;\n --u-blue-500: #2196F3;\n --u-blue-600: #1E88E5;\n --u-blue-700: #1976D2;\n --u-blue-800: #1565C0;\n --u-blue-900: #0D47A1;\n --u-blue-1000: #062A5E;\n\n /* Green Colors */\n --u-green-0: #E8F5E9;\n --u-green-100: #C8E6C9;\n --u-green-200: #A5D6A7;\n --u-green-300: #81C784;\n --u-green-400: #66BB6A;\n --u-green-500: #4CAF50;\n --u-green-600: #43A047;\n --u-green-700: #388E3C;\n --u-green-800: #2E7D32;\n --u-green-900: #1B5E20;\n --u-green-1000: #0F3A12;\n\n /* Yellow Colors */\n --u-yellow-0: #FFFDE7;\n --u-yellow-100: #FFF9C4;\n --u-yellow-200: #FFF59D;\n --u-yellow-300: #FFF176;\n --u-yellow-400: #FFEE58;\n --u-yellow-500: #FFEB3B;\n --u-yellow-600: #FDD835;\n --u-yellow-700: #FBC02D;\n --u-yellow-800: #F9A825;\n --u-yellow-900: #F57F17;\n --u-yellow-1000: #8A4A00;\n\n /* Red Colors */\n --u-red-0: #FFEBEE;\n --u-red-100: #FFCDD2;\n --u-red-200: #EF9A9A;\n --u-red-300: #E57373;\n --u-red-400: #EF5350;\n --u-red-500: #F44336;\n --u-red-600: #E53935;\n --u-red-700: #D32F2F;\n --u-red-800: #C62828;\n --u-red-900: #B71C1C;\n --u-red-1000: #6B0F0F;\n\n /* Orange Colors */\n --u-orange-0: #FFF3E0;\n --u-orange-100: #FFE0B2;\n --u-orange-200: #FFCC80;\n --u-orange-300: #FFB74D;\n --u-orange-400: #FFA726;\n --u-orange-500: #FF9800;\n --u-orange-600: #FB8C00;\n --u-orange-700: #F57C00;\n --u-orange-800: #EF6C00;\n --u-orange-900: #E65100;\n --u-orange-1000: #8C3100;\n\n /* Teal Colors */\n --u-teal-0: #E0F2F1;\n --u-teal-100: #B2DFDB;\n --u-teal-200: #80CBC4;\n --u-teal-300: #4DB6AC;\n --u-teal-400: #26A69A;\n --u-teal-500: #009688;\n --u-teal-600: #00897B;\n --u-teal-700: #00796B;\n --u-teal-800: #00695C;\n --u-teal-900: #004D40;\n --u-teal-1000: #002E26;\n\n /* Cyan Colors */\n --u-cyan-0: #E0F7FA;\n --u-cyan-100: #B2EBF2;\n --u-cyan-200: #80DEEA;\n --u-cyan-300: #4DD0E1;\n --u-cyan-400: #26C6DA;\n --u-cyan-500: #00BCD4;\n --u-cyan-600: #00ACC1;\n --u-cyan-700: #0097A7;\n --u-cyan-800: #00838F;\n --u-cyan-900: #006064;\n --u-cyan-1000: #003A3D;\n\n /* Purple Colors */\n --u-purple-0: #F3E5F5;\n --u-purple-100: #E1BEE7;\n --u-purple-200: #CE93D8;\n --u-purple-300: #BA68C8;\n --u-purple-400: #AB47BC;\n --u-purple-500: #9C27B0;\n --u-purple-600: #8E24AA;\n --u-purple-700: #7B1FA2;\n --u-purple-800: #6A1B9A;\n --u-purple-900: #4A148C;\n --u-purple-1000: #2C0B54;\n\n /* Pink Colors */\n --u-pink-0: #FCE4EC;\n --u-pink-100: #F8BBD0;\n --u-pink-200: #F48FB1;\n --u-pink-300: #F06292;\n --u-pink-400: #EC407A;\n --u-pink-500: #E91E63;\n --u-pink-600: #D81B60;\n --u-pink-700: #C2185B;\n --u-pink-800: #AD1457;\n --u-pink-900: #880E4F;\n --u-pink-1000: #520830;\n\n /* ==========================================================================\n Role Colors — 의미 역할 층\n 컴포넌트는 팔레트 프리미티브가 아니라 이 층을 참조한다.\n 브랜드 색 교체는 아래 25개만 재정의하면 시맨틱 층까지 따라온다.\n\n 단은 '강도' 축이다 (weakest -> strong). 용도(배경/테두리/텍스트)는\n 소비처가 정한다 -- 단을 속성에 묶으면 primary 버튼의 배경이 어느\n 단인지 같은 모순이 생긴다.\n ========================================================================== */\n\n /* primary — 브랜드 · 강조 · 포커스 · 링크 */\n --u-primary-color-weakest: var(--u-blue-200);\n --u-primary-color-weaker: var(--u-blue-300);\n --u-primary-color-weak: var(--u-blue-500);\n --u-primary-color: var(--u-blue-600);\n --u-primary-color-strong: var(--u-blue-700);\n\n /* info — 정보 안내 (primary 와 기본값은 같으나 역할이 다르다 — 브랜딩은 primary 만 바꾼다) */\n --u-info-color-weakest: var(--u-blue-200);\n --u-info-color-weaker: var(--u-blue-300);\n --u-info-color-weak: var(--u-blue-500);\n --u-info-color: var(--u-blue-600);\n --u-info-color-strong: var(--u-blue-700);\n\n /* success — 성공 · 완료 */\n --u-success-color-weakest: var(--u-green-200);\n --u-success-color-weaker: var(--u-green-300);\n --u-success-color-weak: var(--u-green-500);\n --u-success-color: var(--u-green-600);\n --u-success-color-strong: var(--u-green-700);\n\n /* warning — 주의 */\n --u-warning-color-weakest: var(--u-yellow-200);\n --u-warning-color-weaker: var(--u-yellow-300);\n --u-warning-color-weak: var(--u-yellow-500);\n --u-warning-color: var(--u-yellow-600);\n --u-warning-color-strong: var(--u-yellow-700);\n\n /* danger — 오류 · 위험 · 유효성 실패 */\n --u-danger-color-weakest: var(--u-red-200);\n --u-danger-color-weaker: var(--u-red-300);\n --u-danger-color-weak: var(--u-red-500);\n --u-danger-color: var(--u-red-600);\n --u-danger-color-strong: var(--u-red-700);\n /* ==========================================================================\n Radius Scale — 모서리 반경\n 리터럴을 흩뿌리면 값이 갈린다(실제로 pill 이 999px/9999px 두 표기로 나뉘어 있었다).\n ========================================================================== */\n --u-radius-none: 0;\n --u-radius-sm: 3px;\n --u-radius-md: 4px;\n --u-radius-lg: 6px;\n --u-radius-xl: 8px;\n --u-radius-pill: 9999px;\n --u-radius-circle: 50%;\n\n /* ==========================================================================\n Space Scale — 컨테이너·오버레이의 절대 여백\n ⚠**여백은 하나의 축이 아니다.** 이 스케일은 컨테이너/오버레이(카드·대화상자·드로어·\n 알림·메뉴·툴팁 등)의 **레이아웃 여백**만 담당한다. 폼·인라인 요소의 `em` 여백은\n 상속된 `font-size` 에 비례하는 것이 의도이므로 **여기로 흡수하지 않는다** —\n 흡수하면 타이포를 키운 소비자의 여백이 따라 커지지 않는다.\n 축 구분과 근거는 docs/design-tokens.md 참조.\n ========================================================================== */\n --u-space-3xs: 2px;\n --u-space-2xs: 4px;\n --u-space-xs: 6px;\n --u-space-sm: 8px;\n --u-space-md: 12px;\n --u-space-lg: 16px;\n\n /* Text Colors */\n --u-txt-color: var(--u-neutral-900);\n --u-txt-color-inverse: var(--u-neutral-0);\n --u-txt-color-hover: var(--u-primary-color);\n --u-txt-color-active: var(--u-primary-color);\n --u-txt-color-disabled: var(--u-neutral-400);\n --u-txt-color-weak: var(--u-neutral-500);\n --u-txt-color-strong: var(--u-neutral-1000);\n\n --u-link-txt-color: var(--u-primary-color-strong);\n --u-tooltip-txt-color: var(--u-neutral-0);\n\n /* Icon Colors */\n --u-icon-color: var(--u-neutral-700);\n --u-icon-color-inverse: var(--u-neutral-0);\n --u-icon-color-hover: var(--u-primary-color);\n --u-icon-color-active: var(--u-primary-color);\n --u-icon-color-disabled: var(--u-neutral-400);\n\n /* Border Colors */\n --u-border-color: var(--u-neutral-300);\n --u-border-color-weak: var(--u-neutral-200);\n --u-border-color-strong: var(--u-neutral-400);\n --u-border-color-hover: var(--u-neutral-400);\n\n --u-input-border-color: var(--u-neutral-300);\n --u-input-border-color-hover: var(--u-neutral-400);\n --u-input-border-color-focus: var(--u-primary-color);\n --u-input-border-color-invalid: var(--u-danger-color);\n\n /* Background Colors */\n --u-bg-color: var(--u-neutral-0);\n --u-bg-color-inverse: var(--u-neutral-900);\n --u-bg-color-hover: var(--u-neutral-100);\n --u-bg-color-active: var(--u-neutral-200);\n --u-bg-color-disabled: var(--u-neutral-50);\n \n --u-input-bg-color: var(--u-neutral-0);\n --u-panel-bg-color: var(--u-neutral-0);\n --u-overlay-bg-color: rgba(0, 0, 0, 0.5);\n --u-tooltip-bg-color: rgba(0, 0, 0, 0.75);\n\n /* Shadow Colors */\n --u-shadow-color-weaker: rgba(0, 0, 0, 0.04);\n --u-shadow-color-weak: rgba(0, 0, 0, 0.08);\n --u-shadow-color-normal: rgba(0, 0, 0, 0.12);\n --u-shadow-color-strong: rgba(0, 0, 0, 0.16);\n --u-shadow-color-stronger: rgba(0, 0, 0, 0.24);\n\n /* Scrollbar Colors */\n --u-scrollbar-color: var(--u-neutral-400);\n --u-scrollbar-color-hover: var(--u-neutral-500);\n --u-scrollbar-track-color: transparent;\n\n /* Font Styles */\n --u-font-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n --u-font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Monaco, 'Courier New', monospace;\n --u-font-serif: 'Georgia', 'Times New Roman', Times, serif;\n --u-font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;\n --u-font-modern: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n --u-font-rounded: 'Nunito', 'Quicksand', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}";
|
|
2
|
+
var light_css_default = ":root {\n color-scheme: light;\n\n /* Neutral Colors */\n --u-neutral-0: #FFFFFF;\n --u-neutral-50: #FAFAFA;\n --u-neutral-100: #F5F5F5;\n --u-neutral-200: #EEEEEE;\n --u-neutral-300: #E0E0E0;\n --u-neutral-400: #BDBDBD;\n --u-neutral-500: #9E9E9E;\n --u-neutral-600: #757575;\n --u-neutral-700: #616161;\n --u-neutral-800: #424242;\n --u-neutral-900: #212121;\n --u-neutral-1000: #000000;\n\n /* Blue Colors */\n --u-blue-0: #E3F2FD;\n --u-blue-100: #BBDEFB;\n --u-blue-200: #90CAF9;\n --u-blue-300: #64B5F6;\n --u-blue-400: #42A5F5;\n --u-blue-500: #2196F3;\n --u-blue-600: #1E88E5;\n --u-blue-700: #1976D2;\n --u-blue-800: #1565C0;\n --u-blue-900: #0D47A1;\n --u-blue-1000: #062A5E;\n\n /* Green Colors */\n --u-green-0: #E8F5E9;\n --u-green-100: #C8E6C9;\n --u-green-200: #A5D6A7;\n --u-green-300: #81C784;\n --u-green-400: #66BB6A;\n --u-green-500: #4CAF50;\n --u-green-600: #43A047;\n --u-green-700: #388E3C;\n --u-green-800: #2E7D32;\n --u-green-900: #1B5E20;\n --u-green-1000: #0F3A12;\n\n /* Yellow Colors */\n --u-yellow-0: #FFFDE7;\n --u-yellow-100: #FFF9C4;\n --u-yellow-200: #FFF59D;\n --u-yellow-300: #FFF176;\n --u-yellow-400: #FFEE58;\n --u-yellow-500: #FFEB3B;\n --u-yellow-600: #FDD835;\n --u-yellow-700: #FBC02D;\n --u-yellow-800: #F9A825;\n --u-yellow-900: #F57F17;\n --u-yellow-1000: #8A4A00;\n\n /* Red Colors */\n --u-red-0: #FFEBEE;\n --u-red-100: #FFCDD2;\n --u-red-200: #EF9A9A;\n --u-red-300: #E57373;\n --u-red-400: #EF5350;\n --u-red-500: #F44336;\n --u-red-600: #E53935;\n --u-red-700: #D32F2F;\n --u-red-800: #C62828;\n --u-red-900: #B71C1C;\n --u-red-1000: #6B0F0F;\n\n /* Orange Colors */\n --u-orange-0: #FFF3E0;\n --u-orange-100: #FFE0B2;\n --u-orange-200: #FFCC80;\n --u-orange-300: #FFB74D;\n --u-orange-400: #FFA726;\n --u-orange-500: #FF9800;\n --u-orange-600: #FB8C00;\n --u-orange-700: #F57C00;\n --u-orange-800: #EF6C00;\n --u-orange-900: #E65100;\n --u-orange-1000: #8C3100;\n\n /* Teal Colors */\n --u-teal-0: #E0F2F1;\n --u-teal-100: #B2DFDB;\n --u-teal-200: #80CBC4;\n --u-teal-300: #4DB6AC;\n --u-teal-400: #26A69A;\n --u-teal-500: #009688;\n --u-teal-600: #00897B;\n --u-teal-700: #00796B;\n --u-teal-800: #00695C;\n --u-teal-900: #004D40;\n --u-teal-1000: #002E26;\n\n /* Cyan Colors */\n --u-cyan-0: #E0F7FA;\n --u-cyan-100: #B2EBF2;\n --u-cyan-200: #80DEEA;\n --u-cyan-300: #4DD0E1;\n --u-cyan-400: #26C6DA;\n --u-cyan-500: #00BCD4;\n --u-cyan-600: #00ACC1;\n --u-cyan-700: #0097A7;\n --u-cyan-800: #00838F;\n --u-cyan-900: #006064;\n --u-cyan-1000: #003A3D;\n\n /* Purple Colors */\n --u-purple-0: #F3E5F5;\n --u-purple-100: #E1BEE7;\n --u-purple-200: #CE93D8;\n --u-purple-300: #BA68C8;\n --u-purple-400: #AB47BC;\n --u-purple-500: #9C27B0;\n --u-purple-600: #8E24AA;\n --u-purple-700: #7B1FA2;\n --u-purple-800: #6A1B9A;\n --u-purple-900: #4A148C;\n --u-purple-1000: #2C0B54;\n\n /* Pink Colors */\n --u-pink-0: #FCE4EC;\n --u-pink-100: #F8BBD0;\n --u-pink-200: #F48FB1;\n --u-pink-300: #F06292;\n --u-pink-400: #EC407A;\n --u-pink-500: #E91E63;\n --u-pink-600: #D81B60;\n --u-pink-700: #C2185B;\n --u-pink-800: #AD1457;\n --u-pink-900: #880E4F;\n --u-pink-1000: #520830;\n\n /* ==========================================================================\n Role Colors — 의미 역할 층\n 컴포넌트는 팔레트 프리미티브가 아니라 이 층을 참조한다.\n 브랜드 색 교체는 아래 25개만 재정의하면 시맨틱 층까지 따라온다.\n\n 단은 '강도' 축이다 (weakest -> strong). 용도(배경/테두리/텍스트)는\n 소비처가 정한다 -- 단을 속성에 묶으면 primary 버튼의 배경이 어느\n 단인지 같은 모순이 생긴다.\n ========================================================================== */\n\n /* ★단이 팔레트 shade 와 1:1 이 아니다 — **대비로 고른다.**\n `-color` 는 `--u-*-txt-color` 를 받는 면이고 `-strong` 은 바탕 위의 글자다.\n 라이트에서는 바탕도 on-color 도 흰색이라 두 요구가 `contrast(shade, #FFF) ≥ 4.5`\n 하나로 합쳐지고, 그 단이 계열마다 다르다(blue 700 · red 700 · green 800).\n Material 램프는 휘도가 아니라 색상 기준으로 만들어져 있어서 단 번호가 세기를\n 보장하지 않는다 — 값은 `tests/build/token-contrast.test.ts` 가 지킨다. */\n\n /* primary — 브랜드 · 강조 · 포커스 · 링크 */\n --u-primary-color-weakest: var(--u-blue-200);\n --u-primary-color-weaker: var(--u-blue-300);\n --u-primary-color-weak: var(--u-blue-500);\n --u-primary-color: var(--u-blue-700); /* 4.60 ✓ (600 은 3.68 ✗) */\n --u-primary-color-strong: var(--u-blue-800); /* 5.75 ✓ */\n\n /* info — 정보 안내 (primary 와 기본값은 같으나 역할이 다르다 — 브랜딩은 primary 만 바꾼다) */\n --u-info-color-weakest: var(--u-blue-200);\n --u-info-color-weaker: var(--u-blue-300);\n --u-info-color-weak: var(--u-blue-500);\n --u-info-color: var(--u-blue-700);\n --u-info-color-strong: var(--u-blue-800);\n\n /* success — 성공 · 완료\n ⚠green 은 700 도 4.12 로 미달이라 두 단을 건너뛴다. 계열마다 통과 단이 다른 것이\n 이 층의 정상 상태다(단 번호를 맞추면 대비가 어긋난다). */\n --u-success-color-weakest: var(--u-green-200);\n --u-success-color-weaker: var(--u-green-300);\n --u-success-color-weak: var(--u-green-500);\n --u-success-color: var(--u-green-800); /* 5.13 ✓ (600=3.30 · 700=4.12 ✗) */\n --u-success-color-strong: var(--u-green-900); /* 7.87 ✓ */\n\n /* warning — 주의 */\n --u-warning-color-weakest: var(--u-yellow-200);\n --u-warning-color-weaker: var(--u-yellow-300);\n --u-warning-color-weak: var(--u-yellow-500);\n --u-warning-color: var(--u-yellow-600);\n /* ★다른 계열은 -strong 이 shade-800~900 인데 warning 만 1000 이다 — 노랑 램프는\n 900 까지도 흰 바탕 2.65 로 미달이고, 1000(#8A4A00)에서 처음 6.86 이 된다.\n 그 값은 갈색에 가깝지만, 이 단의 용도는 **면이 아니라 글자·아이콘**이므로 색상보다\n 가독성이 먼저다(경고 문구를 어두운 호박색으로 쓰는 것은 보편 관행이다). */\n --u-warning-color-strong: var(--u-yellow-1000);\n\n /* danger — 오류 · 위험 · 유효성 실패 */\n --u-danger-color-weakest: var(--u-red-200);\n --u-danger-color-weaker: var(--u-red-300);\n --u-danger-color-weak: var(--u-red-500);\n --u-danger-color: var(--u-red-700); /* 4.98 ✓ (600 은 4.23 ✗ — 오류 문구가 이 단이었다) */\n --u-danger-color-strong: var(--u-red-800); /* 5.62 ✓ */\n /* ==========================================================================\n Radius Scale — 모서리 반경\n 리터럴을 흩뿌리면 값이 갈린다(실제로 pill 이 999px/9999px 두 표기로 나뉘어 있었다).\n ========================================================================== */\n --u-radius-none: 0;\n --u-radius-sm: 3px;\n --u-radius-md: 4px;\n --u-radius-lg: 6px;\n --u-radius-xl: 8px;\n --u-radius-pill: 9999px;\n --u-radius-circle: 50%;\n\n /* ==========================================================================\n Space Scale — 컨테이너·오버레이의 절대 여백\n ⚠**여백은 하나의 축이 아니다.** 이 스케일은 컨테이너/오버레이(카드·대화상자·드로어·\n 알림·메뉴·툴팁 등)의 **레이아웃 여백**만 담당한다. 폼·인라인 요소의 `em` 여백은\n 상속된 `font-size` 에 비례하는 것이 의도이므로 **여기로 흡수하지 않는다** —\n 흡수하면 타이포를 키운 소비자의 여백이 따라 커지지 않는다.\n 축 구분과 근거는 docs/design-tokens.md 참조.\n ========================================================================== */\n --u-space-3xs: 2px;\n --u-space-2xs: 4px;\n --u-space-xs: 6px;\n --u-space-sm: 8px;\n --u-space-md: 12px;\n --u-space-lg: 16px;\n\n /* Text Colors */\n --u-txt-color: var(--u-neutral-900);\n --u-txt-color-inverse: var(--u-neutral-0);\n /* 유채색 배경 위의 글자. --u-txt-color-inverse 는 다크에서 neutral-100(#121212)이라\n 유채색 버튼 위에서 읽히지 않는다. 브랜드 색을 바꾸는 소비자가 전경색도 함께\n 조절할 수 있도록 별도 이름을 준다.\n ⚠이 토큰이 흰색이라는 것과 그 위의 배경이 AA 를 받친다는 것은 별개다 —\n 라이트 팔레트의 shade-600 은 8색 중 6색이 흰 글자로 AA 에 미달한다(미해결). */\n --u-primary-txt-color: #FFFFFF;\n --u-info-txt-color: #FFFFFF;\n --u-success-txt-color: #FFFFFF;\n --u-danger-txt-color: #FFFFFF;\n /* ★warning 만 어둡다 — 취향이 아니라 측정이다. 노랑은 **어떤 단도** 흰 글자로 AA 를\n 받치지 못한다(라이트 최대 2.65 @900, 그마저 갈색). 다른 넷처럼 단을 옮기는 수단이\n 없으므로 전경을 뒤집는다. `--u-neutral-1000` 은 라이트 #000000 / 다크 #FFFFFF 이라\n 한 줄로 양 테마를 만족한다(라이트 15.05 · 다크 4.65). */\n --u-warning-txt-color: var(--u-neutral-1000);\n\n --u-txt-color-hover: var(--u-primary-color-strong);\n --u-txt-color-active: var(--u-primary-color-strong);\n --u-txt-color-disabled: var(--u-neutral-400);\n /* neutral-500(#9E9E9E)은 흰 배경 대비 2.68 로 WCAG AA(4.5) 미달이었다.\n neutral-600(#757575) = 4.61 로 통과한다. 다크 매핑(neutral-700 = 5.43)은\n 원래 정상이라 손대지 않는다 — 라이트 한쪽만의 결함이었다. */\n --u-txt-color-weak: var(--u-neutral-600);\n --u-txt-color-strong: var(--u-neutral-1000);\n\n --u-link-txt-color: var(--u-primary-color-strong);\n --u-tooltip-txt-color: var(--u-neutral-0);\n\n /* Icon Colors */\n --u-icon-color: var(--u-neutral-700);\n --u-icon-color-inverse: var(--u-neutral-0);\n --u-icon-color-hover: var(--u-primary-color-strong);\n --u-icon-color-active: var(--u-primary-color-strong);\n --u-icon-color-disabled: var(--u-neutral-400);\n\n /* Border Colors */\n --u-border-color: var(--u-neutral-300);\n --u-border-color-weak: var(--u-neutral-200);\n --u-border-color-strong: var(--u-neutral-400);\n --u-border-color-hover: var(--u-neutral-400);\n\n --u-input-border-color: var(--u-neutral-300);\n --u-input-border-color-hover: var(--u-neutral-400);\n --u-input-border-color-focus: var(--u-primary-color);\n --u-input-border-color-invalid: var(--u-danger-color);\n\n /* Background Colors */\n --u-bg-color: var(--u-neutral-0);\n --u-bg-color-inverse: var(--u-neutral-900);\n --u-bg-color-hover: var(--u-neutral-100);\n --u-bg-color-active: var(--u-neutral-200);\n --u-bg-color-disabled: var(--u-neutral-50);\n\n /* ★면 높이 — 바탕에 인접해 있으면서 한 단 구분되는 크롬 면(툴바·표 헤더·푸터).\n 상호작용 상태(-hover/-active/-disabled)와 **다른 축**이다. 상태 이름에 높이를\n 얹으면 의미가 어긋난다(`DL-131-1`).\n `--u-panel-bg-color` 와도 다르다 — 그쪽은 **떠 있는 패널**(카드·대화상자·메뉴)이라\n 라이트에서 페이지와 같은 흰색이고 그림자가 높이를 나른다. 크롬 면은 그림자가 없어\n 라이트에서도 틴트가 필요하다.\n ⚠한 단만 정의한다. 두 단째의 실측 수요는 라이트 한쪽뿐이었다(다크에서는 소비 측\n 오버라이드가 두 값을 같은 단으로 합치고 있었다). */\n --u-bg-color-raised: var(--u-neutral-50);\n \n /* 유채색 표면 — 정보/성공/위험 상태의 '면'.\n 역할 층의 유채색은 전경 5단뿐이라, 상태 배경이 필요한 컴포넌트는 팔레트를 직접\n 읽고 다크를 손으로 보정해야 했다. 팔레트의 유채색 틴트는 다크에서 짓눌리므로\n (바탕 대비 델타의 다크/라이트 비 — 청색 0.38~0.54) 두 테마가 **같은 단이 아니라\n 같은 세기**가 되도록 짝지었다. 실측 비: blue 1.09 · red 1.12 · green 0.91.\n\n ★**warning 이 합류했다(1.16.0 → 1.17.0).** 종전에는 *\"세기를 맞출 단 짝이 없다\"* 며\n 빠져 있었는데, 그 판정은 **shade-0 짝만** 재고 있었다. 노랑만 한 단 내려 잡으면\n 라이트 쪽 세기가 맞는다 — 바탕 대비 휘도 델타 실측:\n blue-0 0.131 · red-0 0.132 · green-0 0.117 · **yellow-200 0.110** (yellow-0 은 0.027)\n ⚠단 이름이 계열마다 다른 것(yellow 만 200)은 이 층의 정상 상태다. 라이트 팔레트는\n 휘도 순이 아니므로 같은 단 번호가 같은 세기를 뜻하지 않는다. */\n --u-primary-bg-color: var(--u-blue-0);\n --u-info-bg-color: var(--u-blue-0);\n --u-success-bg-color: var(--u-green-0);\n --u-danger-bg-color: var(--u-red-0);\n --u-warning-bg-color: var(--u-yellow-200);\n\n --u-input-bg-color: var(--u-neutral-0);\n --u-panel-bg-color: var(--u-neutral-0);\n --u-overlay-bg-color: rgba(0, 0, 0, 0.5);\n --u-tooltip-bg-color: rgba(0, 0, 0, 0.75);\n\n /* Shadow Colors */\n --u-shadow-color-weaker: rgba(0, 0, 0, 0.04);\n --u-shadow-color-weak: rgba(0, 0, 0, 0.08);\n --u-shadow-color-normal: rgba(0, 0, 0, 0.12);\n --u-shadow-color-strong: rgba(0, 0, 0, 0.16);\n --u-shadow-color-stronger: rgba(0, 0, 0, 0.24);\n\n /* Scrollbar Colors */\n --u-scrollbar-color: var(--u-neutral-400);\n --u-scrollbar-color-hover: var(--u-neutral-500);\n --u-scrollbar-track-color: transparent;\n\n /* Font Styles */\n --u-font-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n --u-font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Monaco, 'Courier New', monospace;\n --u-font-serif: 'Georgia', 'Times New Roman', Times, serif;\n --u-font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;\n --u-font-modern: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n --u-font-rounded: 'Nunito', 'Quicksand', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { light_css_default as default };
|
|
@@ -7,25 +7,32 @@ var styles = css`
|
|
|
7
7
|
--alert-border-color: var(--u-neutral-300, #E0E0E0);
|
|
8
8
|
--alert-background-color: var(--u-neutral-200, #EEEEEE);
|
|
9
9
|
}
|
|
10
|
+
/* ★배경은 -weakest 가 아니라 면 토큰(--u-*-bg-color)이다.
|
|
11
|
+
-weakest 는 라이트에서 shade-200 이라 **면으로 쓰기에 너무 진했다** — 그 위의
|
|
12
|
+
아이콘(-strong)이 라이트 4/4 미달이었다(1.48~2.63, 기준 3.0). 다크는 통과했으므로
|
|
13
|
+
라이트 한쪽만의 결함이었고, 원인은 전경이 아니라 배경이다.
|
|
14
|
+
면 토큰으로 옮기면 두 테마 4/4 통과한다(4.58~7.00).
|
|
15
|
+
-weakest 는 진행바 버퍼 같은 **그래픽** 단으로 남는다 — 같은 단에 면과 그래픽을
|
|
16
|
+
겹쳐 두었던 것이 애초의 문제다. */
|
|
10
17
|
:host([status="error"]) {
|
|
11
|
-
--alert-icon-color: var(--u-danger-color-strong, #
|
|
18
|
+
--alert-icon-color: var(--u-danger-color-strong, #C62828);
|
|
12
19
|
--alert-border-color: var(--u-danger-color-weaker, #E57373);
|
|
13
|
-
--alert-background-color: var(--u-danger-color
|
|
20
|
+
--alert-background-color: var(--u-danger-bg-color, #FFEBEE);
|
|
14
21
|
}
|
|
15
22
|
:host([status="warning"]) {
|
|
16
|
-
--alert-icon-color: var(--u-warning-color-strong, #
|
|
23
|
+
--alert-icon-color: var(--u-warning-color-strong, #8A4A00);
|
|
17
24
|
--alert-border-color: var(--u-warning-color-weaker, #FFF176);
|
|
18
|
-
--alert-background-color: var(--u-warning-color
|
|
25
|
+
--alert-background-color: var(--u-warning-bg-color, #FFF59D);
|
|
19
26
|
}
|
|
20
27
|
:host([status="info"]) {
|
|
21
|
-
--alert-icon-color: var(--u-info-color-strong, #
|
|
28
|
+
--alert-icon-color: var(--u-info-color-strong, #1565C0);
|
|
22
29
|
--alert-border-color: var(--u-info-color-weaker, #64B5F6);
|
|
23
|
-
--alert-background-color: var(--u-info-color
|
|
30
|
+
--alert-background-color: var(--u-info-bg-color, #E3F2FD);
|
|
24
31
|
}
|
|
25
32
|
:host([status="success"]) {
|
|
26
|
-
--alert-icon-color: var(--u-success-color-strong, #
|
|
33
|
+
--alert-icon-color: var(--u-success-color-strong, #1B5E20);
|
|
27
34
|
--alert-border-color: var(--u-success-color-weaker, #81C784);
|
|
28
|
-
--alert-background-color: var(--u-success-color
|
|
35
|
+
--alert-background-color: var(--u-success-bg-color, #E8F5E9);
|
|
29
36
|
}
|
|
30
37
|
:host([status="notice"]) {
|
|
31
38
|
--alert-icon-color: var(--u-neutral-700, #616161);
|
|
@@ -51,7 +51,11 @@ var styles = css`
|
|
|
51
51
|
}
|
|
52
52
|
:host([color="blue"]) {
|
|
53
53
|
color: var(--u-neutral-0, #FFFFFF);
|
|
54
|
-
|
|
54
|
+
/* ★장식 축이므로 팔레트를 직접 읽는다 — 여기만 역할 토큰(--u-primary-color)이었다.
|
|
55
|
+
그 탓에 브랜드를 바꾸면 color="blue" 배지만 함께 움직였다(color="green" 등 8색은
|
|
56
|
+
안 움직인다). u-tag 에는 이 오염을 막는 네거티브 컨트롤이 있는데 u-badge 에는
|
|
57
|
+
없어서 드러나지 않았다. 단은 이 컴포넌트의 다른 장식 색과 같은 500 으로 맞춘다. */
|
|
58
|
+
background-color: var(--u-blue-500, #2196F3);
|
|
55
59
|
}
|
|
56
60
|
:host([color="green"]) {
|
|
57
61
|
color: var(--u-neutral-0, #FFFFFF);
|
|
@@ -6,13 +6,13 @@ var styles = css`
|
|
|
6
6
|
align-items: center;
|
|
7
7
|
gap: 0.2em;
|
|
8
8
|
flex-shrink: 0;
|
|
9
|
-
color: var(--u-txt-color-weak, #
|
|
9
|
+
color: var(--u-txt-color-weak, #757575);
|
|
10
10
|
font-size: inherit;
|
|
11
11
|
line-height: 1.5em;
|
|
12
12
|
cursor: pointer;
|
|
13
13
|
}
|
|
14
14
|
:host:hover {
|
|
15
|
-
color: var(--u-primary-color-strong, #
|
|
15
|
+
color: var(--u-primary-color-strong, #1565C0);
|
|
16
16
|
}
|
|
17
17
|
:host([disabled]) {
|
|
18
18
|
opacity: 0.5;
|
|
@@ -3,7 +3,7 @@ import { css } from "lit";
|
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
5
|
/* --btn-color 하나만 정해지면 hover/active/surface/outline 톤이 전부 자동 파생 */
|
|
6
|
-
--btn-color: var(--u-primary-color, #
|
|
6
|
+
--btn-color: var(--u-primary-color, #1976D2);
|
|
7
7
|
--btn-color-hover: color-mix(in srgb, var(--btn-color) 85%, black);
|
|
8
8
|
--btn-color-active: color-mix(in srgb, var(--btn-color) 70%, black);
|
|
9
9
|
--btn-color-surface: color-mix(in srgb, var(--btn-color) 12%, var(--u-bg-color, #FFFFFF));
|
|
@@ -148,19 +148,21 @@ var styles = css`
|
|
|
148
148
|
background-color: var(--u-bg-color-active, #EEEEEE);
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
/* link: blue 링크 스타일 (기본값, color="neutral"일 때도 유지 — 기존 동작 보존)
|
|
151
|
+
/* link: blue 링크 스타일 (기본값, color="neutral"일 때도 유지 — 기존 동작 보존)
|
|
152
|
+
★종전 3단(weak → color → strong)은 쉬는 상태가 --u-primary-color-weak (흰 바탕 3.12)라
|
|
153
|
+
링크 글자가 AA 미달이었고, 그 사이 토큰 층의 --u-link-txt-color 는 어디에서도 쓰이지
|
|
154
|
+
않았다. 링크 색을 정의해 둔 토큰을 링크가 무시하고 있었던 셈이다.
|
|
155
|
+
쉬는 상태를 그 토큰으로 되돌리고, 강조는 밑줄과 -strong 한 단으로 표현한다. */
|
|
152
156
|
:host([variant="link"]) {
|
|
153
|
-
color: var(--u-
|
|
157
|
+
color: var(--u-link-txt-color, #1565C0);
|
|
154
158
|
--btn-border-color: transparent;
|
|
155
159
|
background-color: transparent;
|
|
156
160
|
--btn-padding-inline: 0;
|
|
157
161
|
}
|
|
158
|
-
:host([variant="link"]:hover)
|
|
159
|
-
color: var(--u-primary-color, #1E88E5);
|
|
160
|
-
text-decoration: underline;
|
|
161
|
-
}
|
|
162
|
+
:host([variant="link"]:hover),
|
|
162
163
|
:host([variant="link"]:active) {
|
|
163
|
-
color: var(--u-primary-color-strong, #
|
|
164
|
+
color: var(--u-primary-color-strong, #1565C0);
|
|
165
|
+
text-decoration: underline;
|
|
164
166
|
}
|
|
165
167
|
/* link + 명시적 non-neutral color: 링크 자체 색상을 재정의 (예: 파괴적 액션 링크) */
|
|
166
168
|
:host([variant="link"][color]:not([color="neutral"])) {
|
|
@@ -2,7 +2,7 @@ import { css } from "lit";
|
|
|
2
2
|
//#region src/components/checkbox/UCheckbox.styles.ts
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
|
-
--checkbox-fill-color: var(--u-primary-color, #
|
|
5
|
+
--checkbox-fill-color: var(--u-primary-color, #1976D2);
|
|
6
6
|
--checkbox-color: inherit;
|
|
7
7
|
--checkbox-border-color: var(--u-input-border-color, #E0E0E0);
|
|
8
8
|
--checkbox-background-color: var(--u-input-bg-color, #FFFFFF);
|
|
@@ -27,10 +27,10 @@ var styles = css`
|
|
|
27
27
|
cursor: default;
|
|
28
28
|
}
|
|
29
29
|
:host([invalid]) {
|
|
30
|
-
--checkbox-border-color: var(--u-danger-color, #
|
|
30
|
+
--checkbox-border-color: var(--u-danger-color, #D32F2F);
|
|
31
31
|
}
|
|
32
32
|
:host([invalid]) .footer {
|
|
33
|
-
color: var(--u-danger-color, #
|
|
33
|
+
color: var(--u-danger-color-strong, #C62828);
|
|
34
34
|
}
|
|
35
35
|
:host([checked]) .checkbox u-icon,
|
|
36
36
|
:host([indeterminate]) .checkbox u-icon {
|
|
@@ -104,7 +104,7 @@ var styles = css`
|
|
|
104
104
|
}
|
|
105
105
|
input:focus-visible ~ .checkbox {
|
|
106
106
|
box-shadow:
|
|
107
|
-
0 0 0 1px var(--u-input-border-color-focus, #
|
|
107
|
+
0 0 0 1px var(--u-input-border-color-focus, #1976D2),
|
|
108
108
|
0 0 0 3px rgba(59, 130, 246, 0.22);
|
|
109
109
|
}
|
|
110
110
|
|
|
@@ -137,19 +137,19 @@ var styles = css`
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
.required {
|
|
140
|
-
color: var(--u-danger-color, #
|
|
140
|
+
color: var(--u-danger-color-strong, #C62828);
|
|
141
141
|
font-weight: 500;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
.description {
|
|
145
145
|
margin-top: 0.5em;
|
|
146
|
-
color: var(--u-txt-color-weak, #
|
|
146
|
+
color: var(--u-txt-color-weak, #757575);
|
|
147
147
|
font-size: 0.75em;
|
|
148
148
|
line-height: 1.2;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
:host([invalid]) .description {
|
|
152
|
-
color: var(--u-danger-color, #
|
|
152
|
+
color: var(--u-danger-color-strong, #C62828);
|
|
153
153
|
}
|
|
154
154
|
`;
|
|
155
155
|
//#endregion
|
|
@@ -14,12 +14,12 @@ var styles = css`
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
:host([copied]) u-icon-button {
|
|
17
|
-
color: var(--u-success-color-
|
|
17
|
+
color: var(--u-success-color-strong, #1B5E20);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/* 라벨 형태(아이콘+텍스트): 복사 완료 시 아이콘/텍스트를 성공색으로 강조 */
|
|
21
21
|
:host([copied]) u-button {
|
|
22
|
-
color: var(--u-success-color-
|
|
22
|
+
color: var(--u-success-color-strong, #1B5E20);
|
|
23
23
|
}
|
|
24
24
|
`;
|
|
25
25
|
//#endregion
|
|
@@ -12,7 +12,7 @@ var styles = css`
|
|
|
12
12
|
cursor: not-allowed;
|
|
13
13
|
}
|
|
14
14
|
:host([invalid]) .footer {
|
|
15
|
-
color: var(--u-danger-color, #
|
|
15
|
+
color: var(--u-danger-color-strong, #C62828);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.header {
|
|
@@ -32,12 +32,12 @@ var styles = css`
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
.required {
|
|
35
|
-
color: var(--u-danger-color, #
|
|
35
|
+
color: var(--u-danger-color-strong, #C62828);
|
|
36
36
|
margin-right: 0.2em;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
.footer {
|
|
40
|
-
color: var(--u-txt-color-weak, #
|
|
40
|
+
color: var(--u-txt-color-weak, #757575);
|
|
41
41
|
font-size: 0.75em;
|
|
42
42
|
line-height: 1.2;
|
|
43
43
|
margin-top: 0.5em;
|