@nurihaus/web-design-system 3.0.1 → 3.0.3
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/README.md +104 -5
- package/dist/.storybook/story-kit.d.ts +18 -0
- package/dist/ai/components.md +742 -0
- package/dist/ai/tokens.md +319 -0
- package/dist/avatar.js +336 -0
- package/dist/check-box.js +379 -0
- package/dist/chunk-149.js +57 -0
- package/dist/chunk-298.js +34 -0
- package/dist/chunk-302.js +105 -0
- package/dist/chunk-309.js +36 -0
- package/dist/chunk-364.js +126 -0
- package/dist/chunk-387.js +37 -0
- package/dist/chunk-558.js +200 -0
- package/dist/chunk-563.js +181 -0
- package/dist/chunk-739.js +68 -0
- package/dist/chunk-777.js +117 -0
- package/dist/chunk-917.js +35 -0
- package/dist/chunk-933.js +70 -0
- package/dist/chunk-976.js +29 -0
- package/dist/collapsible-menu.js +394 -0
- package/dist/components/avatar/avatar-props.d.ts +2 -6
- package/dist/components/avatar/avatar-type.d.ts +4 -5
- package/dist/components/avatar/avatar.d.ts +1 -0
- package/dist/components/avatar/avatar.stories.d.ts +17 -1
- package/dist/components/badge/badge-props.d.ts +17 -80
- package/dist/components/badge/badge-type.d.ts +38 -2
- package/dist/components/badge/badge.stories.d.ts +25 -2
- package/dist/components/badge/base-badge.d.ts +2 -1
- package/dist/components/badge/icon-text-badge.d.ts +3 -21
- package/dist/components/badge/icon-text-option-badge.d.ts +2 -15
- package/dist/components/badge/option-badge.d.ts +3 -20
- package/dist/components/button/button-props.d.ts +2 -7
- package/dist/components/button/button-type.d.ts +11 -3
- package/dist/components/button/button.stories.d.ts +13 -10
- package/dist/components/button/cta-button.d.ts +3 -12
- package/dist/components/check-box/base-check-box.d.ts +9 -5
- package/dist/components/check-box/check-box-props.d.ts +2 -7
- package/dist/components/check-box/check-box-type.d.ts +11 -4
- package/dist/components/check-box/check-box.d.ts +3 -10
- package/dist/components/check-box/check-box.stories.d.ts +19 -4
- package/dist/components/collapsible-menu/base-collapsible-menu.d.ts +9 -5
- package/dist/components/collapsible-menu/collapsible-menu-props.d.ts +3 -12
- package/dist/components/collapsible-menu/collapsible-menu-type.d.ts +33 -9
- package/dist/components/collapsible-menu/collapsible-menu.d.ts +3 -23
- package/dist/components/collapsible-menu/collapsible-menu.stories.d.ts +20 -4
- package/dist/components/drop-down/base-drop-down.d.ts +11 -3
- package/dist/components/drop-down/drop-down-props.d.ts +3 -12
- package/dist/components/drop-down/drop-down-type.d.ts +34 -15
- package/dist/components/drop-down/drop-down.d.ts +3 -32
- package/dist/components/drop-down/drop-down.stories.d.ts +23 -4
- package/dist/components/elements/text/base-text.d.ts +3 -0
- package/dist/components/elements/text/text-props.d.ts +16 -0
- package/dist/components/elements/text/text-type.d.ts +6 -2
- package/dist/components/elements/text/text.d.ts +2 -1
- package/dist/components/elements/text/text.stories.d.ts +43 -3
- package/dist/components/loading/index.d.ts +6 -6
- package/dist/components/loading/inline-loading/base-inline-loading.d.ts +3 -0
- package/dist/components/loading/inline-loading/inline-loading-props.d.ts +9 -0
- package/dist/components/loading/inline-loading/inline-loading-type.d.ts +8 -6
- package/dist/components/loading/inline-loading/inline-loading.d.ts +3 -2
- package/dist/components/loading/inline-loading/inline-loading.stories.d.ts +5 -9
- package/dist/components/loading/overlay-loading/base-overlay-loading.d.ts +3 -0
- package/dist/components/loading/overlay-loading/overlay-loading-props.d.ts +7 -0
- package/dist/components/loading/overlay-loading/overlay-loading-type.d.ts +6 -3
- package/dist/components/loading/overlay-loading/overlay-loading.d.ts +3 -3
- package/dist/components/loading/overlay-loading/overlay-loading.stories.d.ts +8 -8
- package/dist/components/loading/spinner/base-spinner.d.ts +4 -0
- package/dist/components/loading/spinner/spinner-props.d.ts +1 -0
- package/dist/components/loading/spinner/spinner-type.d.ts +4 -4
- package/dist/components/loading/spinner/spinner.d.ts +2 -2
- package/dist/components/loading/spinner/spinner.stories.d.ts +5 -12
- package/dist/components/modal/base-modal.d.ts +17 -5
- package/dist/components/modal/modal-props.d.ts +2 -7
- package/dist/components/modal/modal-type.d.ts +20 -10
- package/dist/components/modal/modal-with-double-button.d.ts +4 -16
- package/dist/components/modal/modal.stories.d.ts +15 -2
- package/dist/components/radio/base-radio.d.ts +9 -5
- package/dist/components/radio/radio-props.d.ts +1 -0
- package/dist/components/radio/radio-type.d.ts +6 -8
- package/dist/components/radio/radio.d.ts +2 -2
- package/dist/components/radio/radio.stories.d.ts +13 -4
- package/dist/components/table/base-table.d.ts +4 -5
- package/dist/components/table/data-table.d.ts +5 -22
- package/dist/components/table/table-type.d.ts +22 -1
- package/dist/components/table/table.stories.d.ts +19 -3
- package/dist/components/tabs/base-tabs.d.ts +7 -7
- package/dist/components/tabs/tabs-props.d.ts +1 -1
- package/dist/components/tabs/tabs-type.d.ts +9 -13
- package/dist/components/tabs/tabs.d.ts +3 -3
- package/dist/components/tabs/tabs.stories.d.ts +16 -10
- package/dist/components/text-field/base-text-field.d.ts +5 -3
- package/dist/components/text-field/text-field-props.d.ts +3 -12
- package/dist/components/text-field/text-field-type.d.ts +14 -0
- package/dist/components/text-field/text-field.d.ts +3 -16
- package/dist/components/text-field/text-field.stories.d.ts +24 -0
- package/dist/components/tooltip/base-tooltip.d.ts +13 -3
- package/dist/components/tooltip/tooltip-props.d.ts +3 -2
- package/dist/components/tooltip/tooltip-type.d.ts +17 -5
- package/dist/components/tooltip/tooltip.d.ts +4 -7
- package/dist/components/tooltip/tooltip.stories.d.ts +21 -4
- package/dist/components.css +1984 -0
- package/dist/cta-button.js +236 -0
- package/dist/data-table.js +386 -0
- package/dist/drop-down.js +433 -0
- package/dist/helpers/props/common-props.d.ts +7 -0
- package/dist/helpers/types/common-props.d.ts +8 -0
- package/dist/icon-text-badge.js +294 -0
- package/dist/icon-text-option-badge.js +270 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.js +3021 -10637
- package/dist/loading.js +383 -0
- package/dist/modal-with-double-button.js +527 -0
- package/dist/option-badge.js +293 -0
- package/dist/radio.js +363 -0
- package/dist/reset.css +45 -0
- package/dist/styles.css +465 -219
- package/dist/tabs.js +421 -0
- package/dist/text-field.js +369 -0
- package/dist/text.js +233 -0
- package/dist/tokens.css +73 -0
- package/dist/tokens.js +4 -6
- package/dist/tooltip.js +360 -0
- package/package.json +91 -14
- package/dist/components/text-field/text-filed.stories.d.ts +0 -8
package/dist/styles.css
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap');
|
|
4
|
-
@import url('https://fonts.googleapis.com/icon?family=Material+Icons');
|
|
5
|
-
/* 토큰 + 글꼴 + 리셋 + 유틸리티 + 컴포넌트. 디자인 시스템 컴포넌트를 쓸 때 가져온다. */
|
|
1
|
+
/* 토큰 + 글꼴 스택(.nuri-theme) + 리셋 + 유틸리티 + 컴포넌트. 디자인 시스템 컴포넌트를 쓸 때 가져온다.
|
|
2
|
+
글꼴 파일은 불러오지 않는다. 앱이 불러온다. */
|
|
6
3
|
/* 변수만. 이것만 가져와도 화면이 바뀌지 않는다. CSS Modules 에서 var() 로 쓴다. */
|
|
7
4
|
/* tokens/figma.json 에서 생성됨 — 손으로 고치지 않는다. `npm run tokens` */
|
|
8
5
|
:root {
|
|
@@ -155,6 +152,74 @@
|
|
|
155
152
|
--line-height-4xl: 43px;
|
|
156
153
|
--line-height-5xl: 66px;
|
|
157
154
|
--line-height-6xl: 82px;
|
|
155
|
+
/* 한 줄에 나란히 놓이는 컨트롤: button, drop-down, text-field */
|
|
156
|
+
--control-height-xs: 30px;
|
|
157
|
+
--control-height-s: 40px;
|
|
158
|
+
--control-height-m: 50px;
|
|
159
|
+
--control-height-l: 54px;
|
|
160
|
+
--control-height-xl: 60px;
|
|
161
|
+
|
|
162
|
+
/* 라벨: badge */
|
|
163
|
+
--label-height-xs: 28px;
|
|
164
|
+
--label-height-s: 32px;
|
|
165
|
+
--label-height-m: 36px;
|
|
166
|
+
--label-height-l: 40px;
|
|
167
|
+
--label-height-xl: 48px;
|
|
168
|
+
|
|
169
|
+
/* 메뉴 행: collapsible-menu, drop-down 항목 */
|
|
170
|
+
--menu-row-height-s: 40px;
|
|
171
|
+
--menu-row-height-m: 48px;
|
|
172
|
+
--drop-down-item-height: 46px;
|
|
173
|
+
|
|
174
|
+
/* 정사각 */
|
|
175
|
+
--checkbox-size-s: 18px;
|
|
176
|
+
--checkbox-size-m: 20px;
|
|
177
|
+
--checkbox-size-l: 24px;
|
|
178
|
+
--radio-size: 18px;
|
|
179
|
+
--radio-dot-size: 8px;
|
|
180
|
+
--avatar-size-s: 40px;
|
|
181
|
+
--avatar-size-m: 58px;
|
|
182
|
+
--avatar-size-l: 74px;
|
|
183
|
+
--avatar-size-xl: 124px;
|
|
184
|
+
--avatar-badge-size-s: 18px;
|
|
185
|
+
--avatar-badge-size-m: 24px;
|
|
186
|
+
--avatar-badge-size-l: 30px;
|
|
187
|
+
--avatar-badge-size-xl: 48px;
|
|
188
|
+
|
|
189
|
+
/* 폭 */
|
|
190
|
+
--modal-width-s: 400px;
|
|
191
|
+
--modal-width-m: 450px;
|
|
192
|
+
--modal-width-l: 500px;
|
|
193
|
+
|
|
194
|
+
/* 그 밖의 치수 */
|
|
195
|
+
--icon-size-s: 18px;
|
|
196
|
+
--icon-size-m: 20px;
|
|
197
|
+
--icon-size-l: 24px;
|
|
198
|
+
--tooltip-arrow: 8px;
|
|
199
|
+
--spinner-stroke: 3px;
|
|
200
|
+
--tab-indicator-thickness: 3px;
|
|
201
|
+
--checkbox-border: 1.5px;
|
|
202
|
+
--hairline: 1px;
|
|
203
|
+
|
|
204
|
+
/* 그림자 */
|
|
205
|
+
--shadow-popover: 0px 4px 6px -2px rgba(0, 0, 0, 0.06), 0px 10px 15px -3px rgba(0, 0, 0, 0.1);
|
|
206
|
+
|
|
207
|
+
/* 레이어. 값이 같아도 역할이 다르면 이름을 따로 둔다 */
|
|
208
|
+
--z-base: 0;
|
|
209
|
+
--z-raised: 1;
|
|
210
|
+
--z-sticky: 2;
|
|
211
|
+
--z-sticky-header: 3;
|
|
212
|
+
--z-tooltip: 3;
|
|
213
|
+
--z-popover: 5;
|
|
214
|
+
--z-overlay: 9998;
|
|
215
|
+
--z-modal: 9999;
|
|
216
|
+
|
|
217
|
+
/* 모션 */
|
|
218
|
+
--motion-fast: 160ms;
|
|
219
|
+
--motion-base: 300ms;
|
|
220
|
+
--motion-ease: ease;
|
|
221
|
+
--spinner-duration: 1.2s;
|
|
222
|
+
--spinner-ease: cubic-bezier(0.5, 0, 0.5, 1);
|
|
158
223
|
}
|
|
159
224
|
/* semantic: app */
|
|
160
225
|
:root, :root[data-ds-theme='app'] {
|
|
@@ -233,6 +298,11 @@
|
|
|
233
298
|
--button-size-l: 54;
|
|
234
299
|
--button-size-xl: 60;
|
|
235
300
|
}
|
|
301
|
+
/*
|
|
302
|
+
* 크기·두께·레이어·모션. figma.json 에서 만들지 않고 손으로 유지한다(font-face.css 와 같다).
|
|
303
|
+
* 디자이너가 숫자를 바꾸는 곳은 여기다. 컴포넌트 CSS 는 숫자를 쓰지 않고 이 변수를 쓴다(빌드가 검사).
|
|
304
|
+
* 크기 이름은 xs · s · m · l · xl 다섯 개다. 컴포넌트는 그중 지원하는 것만 고른다.
|
|
305
|
+
*/
|
|
236
306
|
.nuri-theme {
|
|
237
307
|
--cursor-button: pointer;
|
|
238
308
|
--cursor-disabled: not-allowed;
|
|
@@ -256,15 +326,11 @@
|
|
|
256
326
|
'Noto Color Emoji',
|
|
257
327
|
sans-serif;
|
|
258
328
|
}
|
|
259
|
-
/* 웹폰트와 기본 글꼴. 토큰이 아니라 손으로 유지한다. */
|
|
260
329
|
/*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
330
|
+
* 글꼴 스택. 토큰이 아니라 손으로 유지한다.
|
|
331
|
+
* 웹폰트 파일은 불러오지 않는다. 앱이 Pretendard 를 불러왔으면 그것을, 아니면 시스템 글꼴을 쓴다.
|
|
332
|
+
* `:root` 에 걸지 않는다. 토큰만 가져다 쓰는 앱의 글꼴을 뺏지 않기 위해서다.
|
|
263
333
|
*/
|
|
264
|
-
.nuri-placeholder {
|
|
265
|
-
color: var(--color-grey-scale-400);
|
|
266
|
-
}
|
|
267
|
-
/* Reset */
|
|
268
334
|
/* 모든 요소의 마진과 패딩 제거 */
|
|
269
335
|
* {
|
|
270
336
|
margin: 0;
|
|
@@ -310,6 +376,13 @@ p {
|
|
|
310
376
|
margin-top: 0;
|
|
311
377
|
margin-bottom: 0;
|
|
312
378
|
}
|
|
379
|
+
/* 유틸리티 + 컴포넌트 스타일. 토큰·글꼴·리셋은 없다.
|
|
380
|
+
글꼴을 앱이 직접 관리할 때 tokens.css 와 함께 가져온다. 컴포넌트 글자는 앱의 글꼴을 물려받는다. */
|
|
381
|
+
/* 컴포넌트 글자는 앱의 글꼴을 물려받는다. <button> 처럼 브라우저가 글꼴을 따로 주는 요소도 포함한다.
|
|
382
|
+
:where 로 우선순위를 0 으로 둔다. styles.css 에서는 token/font-face.css 의 .nuri-theme 글꼴이 이긴다. */
|
|
383
|
+
:where(.nuri-theme) {
|
|
384
|
+
font-family: inherit;
|
|
385
|
+
}
|
|
313
386
|
/* Utility */
|
|
314
387
|
.nuri-display-flex {
|
|
315
388
|
display: flex;
|
|
@@ -460,88 +533,99 @@ p {
|
|
|
460
533
|
* avatar *
|
|
461
534
|
* *
|
|
462
535
|
***************************************************************************************************/
|
|
536
|
+
.avatar-wrapper {
|
|
537
|
+
position: relative;
|
|
538
|
+
display: inline-block;
|
|
539
|
+
}
|
|
463
540
|
.avatar {
|
|
464
541
|
display: flex;
|
|
465
542
|
align-items: center;
|
|
466
543
|
justify-content: center;
|
|
467
544
|
}
|
|
468
545
|
.avatar.size-xl {
|
|
469
|
-
width:
|
|
470
|
-
height:
|
|
471
|
-
border:
|
|
546
|
+
width: var(--avatar-size-xl);
|
|
547
|
+
height: var(--avatar-size-xl);
|
|
548
|
+
border: var(--hairline) solid var(--color-grey-scale-200);
|
|
472
549
|
}
|
|
473
|
-
.avatar.size-xl.badge-option {
|
|
474
|
-
width: 48px;
|
|
475
|
-
height: 48px;
|
|
476
|
-
}
|
|
477
550
|
.avatar.size-l {
|
|
478
|
-
width:
|
|
479
|
-
height:
|
|
480
|
-
border:
|
|
551
|
+
width: var(--avatar-size-l);
|
|
552
|
+
height: var(--avatar-size-l);
|
|
553
|
+
border: var(--hairline) solid var(--color-grey-scale-200);
|
|
481
554
|
}
|
|
482
|
-
.avatar.size-l.badge-option {
|
|
483
|
-
width: 30px;
|
|
484
|
-
height: 30px;
|
|
485
|
-
}
|
|
486
555
|
.avatar.size-m {
|
|
487
|
-
width:
|
|
488
|
-
height:
|
|
489
|
-
border:
|
|
556
|
+
width: var(--avatar-size-m);
|
|
557
|
+
height: var(--avatar-size-m);
|
|
558
|
+
border: var(--hairline) solid var(--color-grey-scale-200);
|
|
490
559
|
}
|
|
491
|
-
.avatar.size-m.badge-option {
|
|
492
|
-
width: 24px;
|
|
493
|
-
height: 24px;
|
|
494
|
-
}
|
|
495
560
|
.avatar.size-s {
|
|
496
|
-
width:
|
|
497
|
-
height:
|
|
498
|
-
border:
|
|
561
|
+
width: var(--avatar-size-s);
|
|
562
|
+
height: var(--avatar-size-s);
|
|
563
|
+
border: var(--hairline) solid var(--color-grey-scale-200);
|
|
564
|
+
}
|
|
565
|
+
.avatar-badge {
|
|
566
|
+
position: absolute;
|
|
567
|
+
right: 0;
|
|
568
|
+
bottom: 0;
|
|
569
|
+
display: flex;
|
|
570
|
+
align-items: center;
|
|
571
|
+
justify-content: center;
|
|
572
|
+
gap: var(--spacing-4);
|
|
573
|
+
border-radius: var(--radius-full);
|
|
574
|
+
border: var(--hairline) solid var(--color-grey-scale-200);
|
|
575
|
+
}
|
|
576
|
+
.avatar-badge.size-xl {
|
|
577
|
+
width: var(--avatar-badge-size-xl);
|
|
578
|
+
height: var(--avatar-badge-size-xl);
|
|
579
|
+
}
|
|
580
|
+
.avatar-badge.size-l {
|
|
581
|
+
width: var(--avatar-badge-size-l);
|
|
582
|
+
height: var(--avatar-badge-size-l);
|
|
583
|
+
}
|
|
584
|
+
.avatar-badge.size-m {
|
|
585
|
+
width: var(--avatar-badge-size-m);
|
|
586
|
+
height: var(--avatar-badge-size-m);
|
|
587
|
+
}
|
|
588
|
+
.avatar-badge.size-s {
|
|
589
|
+
width: var(--avatar-badge-size-s);
|
|
590
|
+
height: var(--avatar-badge-size-s);
|
|
499
591
|
}
|
|
500
|
-
.avatar.size-s.badge-option {
|
|
501
|
-
width: 18px;
|
|
502
|
-
height: 18px;
|
|
503
|
-
}
|
|
504
592
|
.base-badge {
|
|
505
593
|
position: relative;
|
|
506
594
|
display: flex;
|
|
507
595
|
align-items: center;
|
|
508
|
-
gap:
|
|
509
|
-
border-radius:
|
|
510
|
-
|
|
511
|
-
background-color: attr(data-backgroundColor color, transparent);
|
|
512
|
-
color: attr(data-textColor color, transparent);
|
|
513
|
-
border: attr(data-borderColor color, transparent);
|
|
596
|
+
gap: var(--spacing-4);
|
|
597
|
+
border-radius: var(--radius-full);
|
|
514
598
|
}
|
|
515
|
-
.base-badge.size-
|
|
516
|
-
height:
|
|
599
|
+
.base-badge.size-xl {
|
|
600
|
+
height: var(--label-height-xl);
|
|
517
601
|
|
|
518
602
|
font-size: var(--font-size-sm);
|
|
519
603
|
line-height: var(--line-height-sm);
|
|
520
604
|
font-weight: var(--font-weight-semibold);
|
|
521
605
|
}
|
|
522
|
-
.base-badge.size-
|
|
523
|
-
height:
|
|
606
|
+
.base-badge.size-l {
|
|
607
|
+
height: var(--label-height-l);
|
|
524
608
|
|
|
525
609
|
font-size: var(--font-size-sm);
|
|
526
610
|
line-height: var(--line-height-sm);
|
|
527
611
|
font-weight: var(--font-weight-semibold);
|
|
528
612
|
}
|
|
529
|
-
.base-badge.size-
|
|
530
|
-
height:
|
|
613
|
+
.base-badge.size-m {
|
|
614
|
+
height: var(--label-height-m);
|
|
531
615
|
|
|
532
616
|
font-size: var(--font-size-sm);
|
|
533
617
|
line-height: var(--line-height-sm);
|
|
534
618
|
font-weight: var(--font-weight-semibold);
|
|
535
619
|
}
|
|
536
620
|
.base-badge.size-s {
|
|
537
|
-
height:
|
|
621
|
+
height: var(--label-height-s);
|
|
538
622
|
|
|
539
623
|
font-size: var(--font-size-sm);
|
|
540
624
|
line-height: var(--line-height-sm);
|
|
541
625
|
font-weight: var(--font-weight-bold);
|
|
542
626
|
}
|
|
543
|
-
.base-badge.size-
|
|
544
|
-
height:
|
|
627
|
+
.base-badge.size-xs {
|
|
628
|
+
height: var(--label-height-xs);
|
|
545
629
|
|
|
546
630
|
font-size: var(--font-size-xsm);
|
|
547
631
|
line-height: var(--line-height-xsm);
|
|
@@ -552,7 +636,7 @@ p {
|
|
|
552
636
|
align-items: center;
|
|
553
637
|
justify-content: space-between;
|
|
554
638
|
|
|
555
|
-
padding: 0
|
|
639
|
+
padding: 0 var(--spacing-20);
|
|
556
640
|
}
|
|
557
641
|
/***************************************************************************************************
|
|
558
642
|
* *
|
|
@@ -564,7 +648,7 @@ p {
|
|
|
564
648
|
align-items: center;
|
|
565
649
|
justify-content: center;
|
|
566
650
|
|
|
567
|
-
border-width:
|
|
651
|
+
border-width: var(--hairline);
|
|
568
652
|
border-style: solid;
|
|
569
653
|
}
|
|
570
654
|
/***************************************************************************************************
|
|
@@ -576,9 +660,9 @@ p {
|
|
|
576
660
|
display: flex;
|
|
577
661
|
align-items: center;
|
|
578
662
|
justify-content: center;
|
|
579
|
-
gap:
|
|
663
|
+
gap: var(--spacing-4);
|
|
580
664
|
|
|
581
|
-
border-width:
|
|
665
|
+
border-width: var(--hairline);
|
|
582
666
|
border-style: solid;
|
|
583
667
|
}
|
|
584
668
|
/***************************************************************************************************
|
|
@@ -591,19 +675,45 @@ p {
|
|
|
591
675
|
align-items: center;
|
|
592
676
|
justify-content: space-between;
|
|
593
677
|
|
|
594
|
-
padding: 0
|
|
678
|
+
padding: 0 var(--spacing-20);
|
|
595
679
|
}
|
|
596
680
|
.icon-text-option > span {
|
|
597
681
|
display: flex;
|
|
598
682
|
align-items: center;
|
|
599
|
-
gap:
|
|
683
|
+
gap: var(--spacing-4);
|
|
684
|
+
}
|
|
685
|
+
/***************************************************************************************************
|
|
686
|
+
* *
|
|
687
|
+
* variant *
|
|
688
|
+
* *
|
|
689
|
+
***************************************************************************************************/
|
|
690
|
+
.variant-neutral:is(.option,.icon-text,.icon-text-option) {
|
|
691
|
+
color: var(--color-black);
|
|
692
|
+
background-color: var(--color-white);
|
|
693
|
+
border-color: transparent;
|
|
694
|
+
}
|
|
695
|
+
.variant-primary:is(.option,.icon-text,.icon-text-option) {
|
|
696
|
+
color: var(--color-purple-900);
|
|
697
|
+
background-color: var(--color-purple-50);
|
|
698
|
+
border-color: transparent;
|
|
699
|
+
}
|
|
700
|
+
.variant-danger:is(.option,.icon-text,.icon-text-option) {
|
|
701
|
+
color: var(--color-accent-red-700);
|
|
702
|
+
background-color: var(--color-accent-red-50);
|
|
703
|
+
border-color: transparent;
|
|
704
|
+
}
|
|
705
|
+
/* icon-text-option 은 테두리가 없는 모양이라 두께·스타일까지 여기서 준다. */
|
|
706
|
+
.variant-outlined:is(.option,.icon-text,.icon-text-option) {
|
|
707
|
+
color: var(--color-black);
|
|
708
|
+
background-color: var(--color-white);
|
|
709
|
+
border: var(--hairline) solid var(--color-grey-scale-300);
|
|
600
710
|
}
|
|
601
711
|
.base-button {
|
|
602
712
|
display: flex;
|
|
603
713
|
justify-content: center;
|
|
604
714
|
align-items: center;
|
|
605
|
-
gap:
|
|
606
|
-
border-radius:
|
|
715
|
+
gap: var(--spacing-10);
|
|
716
|
+
border-radius: var(--radius-6);
|
|
607
717
|
border: none;
|
|
608
718
|
cursor: pointer;
|
|
609
719
|
}
|
|
@@ -617,11 +727,11 @@ p {
|
|
|
617
727
|
* *
|
|
618
728
|
***************************************************************************************************/
|
|
619
729
|
.cta-button {
|
|
620
|
-
border-radius:
|
|
730
|
+
border-radius: var(--radius-6);
|
|
621
731
|
}
|
|
622
732
|
.cta-button.variant-primary {
|
|
623
733
|
background-color: var(--color-purple-900);
|
|
624
|
-
border:
|
|
734
|
+
border: var(--hairline) solid var(--color-purple-900);
|
|
625
735
|
color: var(--color-white);
|
|
626
736
|
}
|
|
627
737
|
.cta-button.variant-primary:not(:disabled):hover {
|
|
@@ -640,7 +750,7 @@ p {
|
|
|
640
750
|
}
|
|
641
751
|
.cta-button.variant-ghost {
|
|
642
752
|
background-color: var(--color-white);
|
|
643
|
-
border:
|
|
753
|
+
border: var(--hairline) solid var(--color-grey-scale-300);
|
|
644
754
|
color: var(--color-purple-900);
|
|
645
755
|
}
|
|
646
756
|
.cta-button.variant-ghost:not(:disabled):hover {
|
|
@@ -654,12 +764,12 @@ p {
|
|
|
654
764
|
}
|
|
655
765
|
.cta-button.variant-neutral:not(:disabled):hover {
|
|
656
766
|
background-color: var(--color-grey-scale-100);
|
|
657
|
-
border:
|
|
767
|
+
border: var(--hairline) solid var(--color-grey-scale-100);
|
|
658
768
|
color: var(--color-purple-900);
|
|
659
769
|
}
|
|
660
770
|
.cta-button.variant-confirm {
|
|
661
771
|
background-color: var(--color-accent-red-500);
|
|
662
|
-
border:
|
|
772
|
+
border: var(--hairline) solid var(--color-accent-red-500);
|
|
663
773
|
color: var(--color-white);
|
|
664
774
|
}
|
|
665
775
|
.cta-button.variant-confirm:not(:disabled):hover {
|
|
@@ -669,46 +779,39 @@ p {
|
|
|
669
779
|
}
|
|
670
780
|
.cta-button.variant-outlined {
|
|
671
781
|
background-color: var(--color-white);
|
|
672
|
-
border:
|
|
782
|
+
border: var(--hairline) solid var(--color-accent-red-700);
|
|
673
783
|
color: var(--color-accent-red-700);
|
|
674
784
|
}
|
|
675
785
|
.cta-button.size-xl {
|
|
676
|
-
height:
|
|
786
|
+
height: var(--control-height-xl);
|
|
677
787
|
|
|
678
788
|
font-size: var(--font-size-lg);
|
|
679
789
|
line-height: var(--line-height-lg);
|
|
680
790
|
font-weight: var(--font-weight-bold);
|
|
681
791
|
}
|
|
682
792
|
.cta-button.size-l {
|
|
683
|
-
height:
|
|
793
|
+
height: var(--control-height-l);
|
|
684
794
|
|
|
685
795
|
font-size: var(--font-size-base);
|
|
686
796
|
line-height: var(--line-height-base);
|
|
687
797
|
font-weight: var(--font-weight-bold);
|
|
688
798
|
}
|
|
689
|
-
.cta-button.size-r {
|
|
690
|
-
height: 48px;
|
|
691
|
-
|
|
692
|
-
font-size: var(--font-size-sm);
|
|
693
|
-
line-height: var(--line-height-sm);
|
|
694
|
-
font-weight: var(--font-weight-semibold);
|
|
695
|
-
}
|
|
696
799
|
.cta-button.size-m {
|
|
697
|
-
height:
|
|
800
|
+
height: var(--control-height-m);
|
|
698
801
|
|
|
699
802
|
font-size: var(--font-size-sm);
|
|
700
803
|
line-height: var(--line-height-sm);
|
|
701
804
|
font-weight: var(--font-weight-semibold);
|
|
702
805
|
}
|
|
703
806
|
.cta-button.size-s {
|
|
704
|
-
height:
|
|
807
|
+
height: var(--control-height-s);
|
|
705
808
|
|
|
706
809
|
font-size: var(--font-size-xsm);
|
|
707
810
|
line-height: var(--line-height-xsm);
|
|
708
811
|
font-weight: var(--font-weight-semibold);
|
|
709
812
|
}
|
|
710
813
|
.cta-button.size-xs {
|
|
711
|
-
height:
|
|
814
|
+
height: var(--control-height-xs);
|
|
712
815
|
|
|
713
816
|
font-size: var(--font-size-xsm);
|
|
714
817
|
line-height: var(--line-height-xsm);
|
|
@@ -733,7 +836,7 @@ p {
|
|
|
733
836
|
.check-box {
|
|
734
837
|
display: flex;
|
|
735
838
|
align-items: center;
|
|
736
|
-
gap:
|
|
839
|
+
gap: var(--spacing-10);
|
|
737
840
|
|
|
738
841
|
background-color: transparent;
|
|
739
842
|
border: none;
|
|
@@ -742,8 +845,8 @@ p {
|
|
|
742
845
|
display: flex;
|
|
743
846
|
align-items: center;
|
|
744
847
|
justify-content: center;
|
|
745
|
-
border-radius:
|
|
746
|
-
border:
|
|
848
|
+
border-radius: var(--radius-4);
|
|
849
|
+
border: var(--checkbox-border) solid var(--color-purple-900);
|
|
747
850
|
}
|
|
748
851
|
.check-box-indicator {
|
|
749
852
|
|
|
@@ -751,33 +854,33 @@ p {
|
|
|
751
854
|
height: 100%;
|
|
752
855
|
}
|
|
753
856
|
.check-box-indicator.size-l {
|
|
754
|
-
width:
|
|
755
|
-
height:
|
|
857
|
+
width: var(--checkbox-size-l);
|
|
858
|
+
height: var(--checkbox-size-l);
|
|
756
859
|
}
|
|
757
860
|
.check-box-indicator.size-m {
|
|
758
|
-
width:
|
|
759
|
-
height:
|
|
861
|
+
width: var(--checkbox-size-m);
|
|
862
|
+
height: var(--checkbox-size-m);
|
|
760
863
|
}
|
|
761
864
|
.check-box-indicator.size-s {
|
|
762
|
-
width:
|
|
763
|
-
height:
|
|
865
|
+
width: var(--checkbox-size-s);
|
|
866
|
+
height: var(--checkbox-size-s);
|
|
764
867
|
}
|
|
765
868
|
.check-box-indicator[data-state='unchecked'] {
|
|
766
|
-
background-color:
|
|
869
|
+
background-color: var(--color-white);
|
|
767
870
|
}
|
|
768
871
|
.check-box-indicator[data-state='checked'] {
|
|
769
872
|
background-color: var(--color-purple-900);
|
|
770
873
|
}
|
|
771
874
|
.check-box-indicator[data-disabled='true'] {
|
|
772
875
|
border: none;
|
|
773
|
-
border-radius:
|
|
876
|
+
border-radius: var(--radius-4);
|
|
774
877
|
background-color: var(--color-grey-scale-300);
|
|
775
878
|
}
|
|
776
879
|
.base-collapsible-menu.trigger {
|
|
777
880
|
display: flex;
|
|
778
881
|
align-items: center;
|
|
779
882
|
justify-content: space-between;
|
|
780
|
-
gap:
|
|
883
|
+
gap: var(--spacing-10);
|
|
781
884
|
width: 100%;
|
|
782
885
|
}
|
|
783
886
|
/***************************************************************************************************
|
|
@@ -788,13 +891,13 @@ p {
|
|
|
788
891
|
.collapsible-menu {
|
|
789
892
|
display: flex;
|
|
790
893
|
flex-direction: column;
|
|
791
|
-
gap:
|
|
894
|
+
gap: var(--spacing-4);
|
|
792
895
|
}
|
|
793
|
-
.collapsible-menu.size-
|
|
794
|
-
height:
|
|
896
|
+
.collapsible-menu.size-s .collapsible-menu-row {
|
|
897
|
+
height: var(--menu-row-height-s);
|
|
795
898
|
}
|
|
796
|
-
.collapsible-menu.size-
|
|
797
|
-
height:
|
|
899
|
+
.collapsible-menu.size-m .collapsible-menu-row {
|
|
900
|
+
height: var(--menu-row-height-m);
|
|
798
901
|
}
|
|
799
902
|
.collapsible-menu-row {
|
|
800
903
|
all: unset;
|
|
@@ -802,11 +905,12 @@ p {
|
|
|
802
905
|
display: flex;
|
|
803
906
|
align-items: center;
|
|
804
907
|
justify-content: space-between;
|
|
805
|
-
gap:
|
|
908
|
+
gap: var(--spacing-10);
|
|
806
909
|
|
|
807
910
|
width: 100%;
|
|
808
|
-
padding: 0
|
|
809
|
-
|
|
911
|
+
padding: 0 var(--spacing-12);
|
|
912
|
+
/* figma 토큰에 --radius-8 없음. 디자이너 확인 전까지 숫자 유지 */
|
|
913
|
+
border-radius: 8px; /* raw-px */
|
|
810
914
|
cursor: pointer;
|
|
811
915
|
|
|
812
916
|
font-size: var(--font-size-sm);
|
|
@@ -829,17 +933,17 @@ p {
|
|
|
829
933
|
.collapsible-menu-left {
|
|
830
934
|
display: inline-flex;
|
|
831
935
|
align-items: center;
|
|
832
|
-
gap:
|
|
936
|
+
gap: var(--spacing-10);
|
|
833
937
|
min-width: 0;
|
|
834
938
|
}
|
|
835
939
|
.collapsible-menu-left > * {
|
|
836
940
|
min-width: 0;
|
|
837
941
|
}
|
|
838
942
|
.collapsible-menu-chevron {
|
|
839
|
-
width:
|
|
840
|
-
height:
|
|
943
|
+
width: var(--icon-size-s);
|
|
944
|
+
height: var(--icon-size-s);
|
|
841
945
|
color: var(--color-grey-scale-500);
|
|
842
|
-
transition: transform
|
|
946
|
+
transition: transform var(--motion-fast) var(--motion-ease);
|
|
843
947
|
}
|
|
844
948
|
.base-collapsible-menu.trigger[data-state='open'] .collapsible-menu-chevron {
|
|
845
949
|
transform: rotate(180deg);
|
|
@@ -847,34 +951,38 @@ p {
|
|
|
847
951
|
.collapsible-menu-content {
|
|
848
952
|
display: flex;
|
|
849
953
|
flex-direction: column;
|
|
850
|
-
gap:
|
|
851
|
-
margin-top:
|
|
852
|
-
margin-bottom:
|
|
954
|
+
gap: var(--spacing-2);
|
|
955
|
+
margin-top: var(--spacing-2);
|
|
956
|
+
margin-bottom: var(--spacing-4);
|
|
957
|
+
}
|
|
958
|
+
/* placeholder 로 넘기는 span 의 색. base-drop-down 이 기본 placeholder 에 붙인다. */
|
|
959
|
+
.nuri-placeholder {
|
|
960
|
+
color: var(--color-grey-scale-400);
|
|
853
961
|
}
|
|
854
962
|
.base-drop-down.trigger {
|
|
855
963
|
display: flex;
|
|
856
964
|
align-items: center;
|
|
857
965
|
justify-content: space-between;
|
|
858
|
-
gap:
|
|
966
|
+
gap: var(--spacing-10);
|
|
859
967
|
}
|
|
860
968
|
/***************************************************************************************************
|
|
861
969
|
* *
|
|
862
970
|
* drop-down-single *
|
|
863
971
|
* *
|
|
864
972
|
***************************************************************************************************/
|
|
865
|
-
.drop-down-single-trigger.size-
|
|
866
|
-
height:
|
|
973
|
+
.drop-down-single-trigger.size-s {
|
|
974
|
+
height: var(--control-height-s);
|
|
867
975
|
}
|
|
868
|
-
.drop-down-single-trigger.size-
|
|
869
|
-
height:
|
|
976
|
+
.drop-down-single-trigger.size-m {
|
|
977
|
+
height: var(--control-height-m);
|
|
870
978
|
}
|
|
871
979
|
.drop-down-single-trigger {
|
|
872
980
|
|
|
873
|
-
border:
|
|
874
|
-
border-radius:
|
|
981
|
+
border: var(--hairline) solid var(--color-grey-scale-300);
|
|
982
|
+
border-radius: var(--radius-4);
|
|
875
983
|
width: -moz-fit-content;
|
|
876
984
|
width: fit-content;
|
|
877
|
-
padding: 0
|
|
985
|
+
padding: 0 var(--spacing-14);
|
|
878
986
|
background-color: var(--color-white);
|
|
879
987
|
}
|
|
880
988
|
.drop-down-single-trigger:focus {
|
|
@@ -895,9 +1003,12 @@ p {
|
|
|
895
1003
|
.drop-down-single-trigger[data-state='open'] .rotate {
|
|
896
1004
|
transform: rotate(180deg);
|
|
897
1005
|
transform-origin: 50% 50%;
|
|
898
|
-
transition: transform
|
|
1006
|
+
transition: transform var(--motion-fast) var(--motion-ease);
|
|
899
1007
|
will-change: transform;
|
|
900
1008
|
}
|
|
1009
|
+
.drop-down-single-label {
|
|
1010
|
+
gap: var(--spacing-10);
|
|
1011
|
+
}
|
|
901
1012
|
.drop-down-single-value {
|
|
902
1013
|
font-size: var(--font-size-sm);
|
|
903
1014
|
line-height: var(--line-height-sm);
|
|
@@ -912,19 +1023,17 @@ p {
|
|
|
912
1023
|
color: var(--color-grey-scale-400);
|
|
913
1024
|
}
|
|
914
1025
|
.drop-down-single-content {
|
|
915
|
-
z-index:
|
|
1026
|
+
z-index: var(--z-popover);
|
|
916
1027
|
min-width: var(--radix-select-trigger-width);
|
|
917
1028
|
overflow: hidden;
|
|
918
|
-
box-shadow:
|
|
919
|
-
|
|
920
|
-
0px 10px 15px -3px rgba(0, 0, 0, 0.1);
|
|
921
|
-
border-radius: 6px;
|
|
1029
|
+
box-shadow: var(--shadow-popover);
|
|
1030
|
+
border-radius: var(--radius-6);
|
|
922
1031
|
}
|
|
923
1032
|
.drop-down-single-item {
|
|
924
|
-
padding:
|
|
1033
|
+
padding: var(--spacing-14);
|
|
925
1034
|
background-color: var(--color-white);
|
|
926
1035
|
outline: none;
|
|
927
|
-
height:
|
|
1036
|
+
height: var(--drop-down-item-height);
|
|
928
1037
|
|
|
929
1038
|
font-size: var(--font-size-sm);
|
|
930
1039
|
line-height: var(--line-height-sm);
|
|
@@ -1359,42 +1468,57 @@ p {
|
|
|
1359
1468
|
.base-text.color-accent-orange-900[class*='color-'] {
|
|
1360
1469
|
color: var(--color-accent-orange-900);
|
|
1361
1470
|
}
|
|
1362
|
-
.
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
/*
|
|
1369
|
-
.
|
|
1471
|
+
.base-inline-loading {
|
|
1472
|
+
display: flex;
|
|
1473
|
+
width: 100%;
|
|
1474
|
+
height: 100%;
|
|
1475
|
+
align-items: center;
|
|
1476
|
+
}
|
|
1477
|
+
/* 링은 currentColor 다. 우선순위 0 이라 넘겨받은 className 이나 style 의 color 가 늘 이긴다. */
|
|
1478
|
+
:where(.base-inline-loading) {
|
|
1479
|
+
color: var(--color-grey-scale-200);
|
|
1480
|
+
}
|
|
1481
|
+
.base-overlay-loading {
|
|
1370
1482
|
position: fixed;
|
|
1371
1483
|
inset: 0;
|
|
1372
1484
|
display: flex;
|
|
1373
1485
|
align-items: center;
|
|
1374
1486
|
justify-content: center;
|
|
1375
1487
|
}
|
|
1376
|
-
.page-loading-backdrop {
|
|
1488
|
+
.page-loading-backdrop {
|
|
1489
|
+
position: absolute;
|
|
1490
|
+
inset: 0;
|
|
1491
|
+
}
|
|
1377
1492
|
.page-loading-content {
|
|
1378
1493
|
position: relative;
|
|
1379
1494
|
display: flex;
|
|
1380
1495
|
flex-direction: column;
|
|
1381
1496
|
align-items: center;
|
|
1382
|
-
gap:
|
|
1497
|
+
gap: var(--spacing-16);
|
|
1383
1498
|
}
|
|
1384
1499
|
/* 기본 스피너(20px)를 확대 */
|
|
1385
|
-
.page-loading-indicator {
|
|
1386
|
-
|
|
1387
|
-
|
|
1500
|
+
.page-loading-indicator {
|
|
1501
|
+
transform: scale(3.2);
|
|
1502
|
+
transform-origin: center;
|
|
1503
|
+
}
|
|
1504
|
+
.page-loading-text {
|
|
1505
|
+
position: relative;
|
|
1506
|
+
}
|
|
1507
|
+
.base-spinner {
|
|
1388
1508
|
display: flex;
|
|
1389
|
-
width:
|
|
1390
|
-
height:
|
|
1509
|
+
width: var(--icon-size-m);
|
|
1510
|
+
height: var(--icon-size-m);
|
|
1391
1511
|
align-items: center;
|
|
1392
1512
|
justify-content: center;
|
|
1393
1513
|
}
|
|
1514
|
+
/* 우선순위 0 이라 넘겨받은 className 이나 style 의 color 가 늘 이긴다. */
|
|
1515
|
+
:where(.base-spinner) {
|
|
1516
|
+
color: var(--color-grey-scale-200);
|
|
1517
|
+
}
|
|
1394
1518
|
.loading-indicator-ring {
|
|
1395
1519
|
position: relative;
|
|
1396
|
-
width:
|
|
1397
|
-
height:
|
|
1520
|
+
width: var(--icon-size-m);
|
|
1521
|
+
height: var(--icon-size-m);
|
|
1398
1522
|
}
|
|
1399
1523
|
.loading-indicator-single-ring {
|
|
1400
1524
|
box-sizing: border-box;
|
|
@@ -1402,37 +1526,46 @@ p {
|
|
|
1402
1526
|
position: absolute;
|
|
1403
1527
|
width: 100%;
|
|
1404
1528
|
height: 100%;
|
|
1405
|
-
border:
|
|
1529
|
+
border: var(--spinner-stroke) solid;
|
|
1406
1530
|
border-radius: 50%;
|
|
1407
|
-
animation: lds-ring
|
|
1408
|
-
|
|
1409
|
-
|
|
1531
|
+
animation: lds-ring var(--spinner-duration) var(--spinner-ease) infinite;
|
|
1532
|
+
border-color: currentColor transparent transparent transparent;
|
|
1533
|
+
}
|
|
1534
|
+
.loading-indicator-single-ring:nth-child(1) {
|
|
1535
|
+
animation-delay: calc(var(--spinner-duration) * -0.375);
|
|
1536
|
+
}
|
|
1537
|
+
.loading-indicator-single-ring:nth-child(2) {
|
|
1538
|
+
animation-delay: calc(var(--spinner-duration) * -0.25);
|
|
1539
|
+
}
|
|
1540
|
+
.loading-indicator-single-ring:nth-child(3) {
|
|
1541
|
+
animation-delay: calc(var(--spinner-duration) * -0.125);
|
|
1542
|
+
}
|
|
1543
|
+
.loading-indicator-single-ring:nth-child(4) {
|
|
1544
|
+
animation-delay: 0s;
|
|
1410
1545
|
}
|
|
1411
|
-
/* nth-child 지연은 그대로 CSS or 인라인 중 하나만 사용한다면, 아래는 제거 가능 (지금은 인라인 사용 중) */
|
|
1412
|
-
/*
|
|
1413
|
-
.loading-indicator-single-ring:nth-child(1) { animation-delay: -0.45s; }
|
|
1414
|
-
.loading-indicator-single-ring:nth-child(2) { animation-delay: -0.3s; }
|
|
1415
|
-
.loading-indicator-single-ring:nth-child(3) { animation-delay: -0.15s; }
|
|
1416
|
-
.loading-indicator-single-ring:nth-child(4) { animation-delay: 0s; }
|
|
1417
|
-
*/
|
|
1418
1546
|
@keyframes lds-ring {
|
|
1419
|
-
0% {
|
|
1420
|
-
|
|
1547
|
+
0% {
|
|
1548
|
+
transform: rotate(0deg);
|
|
1549
|
+
}
|
|
1550
|
+
100% {
|
|
1551
|
+
transform: rotate(360deg);
|
|
1552
|
+
}
|
|
1421
1553
|
}
|
|
1422
|
-
|
|
1554
|
+
/* Title·Close 같은 조각도 base-modal 을 달므로 상자 스타일은 container·overlay 에만 건다. */
|
|
1555
|
+
.base-modal:where(.modal-container, .modal-overlay) {
|
|
1423
1556
|
display: flex;
|
|
1424
1557
|
flex-direction: column;
|
|
1425
1558
|
align-items: center;
|
|
1426
1559
|
|
|
1427
|
-
padding:
|
|
1428
|
-
border-radius:
|
|
1560
|
+
padding: var(--spacing-30);
|
|
1561
|
+
border-radius: var(--radius-6);
|
|
1429
1562
|
}
|
|
1430
1563
|
.base-modal.modal-container {
|
|
1431
1564
|
position: fixed;
|
|
1432
1565
|
top: 50%;
|
|
1433
1566
|
left: 50%;
|
|
1434
1567
|
transform: translate(-50%, -50%);
|
|
1435
|
-
z-index:
|
|
1568
|
+
z-index: var(--z-modal);
|
|
1436
1569
|
background-color: var(--color-white);
|
|
1437
1570
|
}
|
|
1438
1571
|
.base-modal.modal-overlay {
|
|
@@ -1442,7 +1575,7 @@ p {
|
|
|
1442
1575
|
right: 0;
|
|
1443
1576
|
bottom: 0;
|
|
1444
1577
|
background-color: rgba(0, 0, 0, 0.5);
|
|
1445
|
-
z-index:
|
|
1578
|
+
z-index: var(--z-overlay);
|
|
1446
1579
|
}
|
|
1447
1580
|
/***************************************************************************************************
|
|
1448
1581
|
* *
|
|
@@ -1456,36 +1589,36 @@ p {
|
|
|
1456
1589
|
width: 100%;
|
|
1457
1590
|
}
|
|
1458
1591
|
.modal-with-double-button-container.size-s {
|
|
1459
|
-
width:
|
|
1592
|
+
width: var(--modal-width-s);
|
|
1460
1593
|
}
|
|
1461
1594
|
.modal-with-double-button-container.size-m {
|
|
1462
|
-
width:
|
|
1595
|
+
width: var(--modal-width-m);
|
|
1463
1596
|
}
|
|
1464
1597
|
.modal-with-double-button-container.size-l {
|
|
1465
|
-
width:
|
|
1598
|
+
width: var(--modal-width-l);
|
|
1466
1599
|
}
|
|
1467
1600
|
.modal-with-double-button-title-icon {
|
|
1468
|
-
margin-bottom:
|
|
1601
|
+
margin-bottom: var(--spacing-20);
|
|
1469
1602
|
}
|
|
1470
1603
|
.modal-with-double-button-title {
|
|
1471
|
-
margin-bottom:
|
|
1604
|
+
margin-bottom: var(--spacing-4);
|
|
1472
1605
|
}
|
|
1473
1606
|
.modal-with-double-button-content {
|
|
1474
|
-
margin-top:
|
|
1607
|
+
margin-top: var(--spacing-20);
|
|
1475
1608
|
}
|
|
1476
1609
|
.modal-with-double-button-close {
|
|
1477
1610
|
display: flex;
|
|
1478
1611
|
justify-content: space-between;
|
|
1479
1612
|
align-items: center;
|
|
1480
|
-
gap:
|
|
1613
|
+
gap: var(--spacing-16);
|
|
1481
1614
|
width: 100%;
|
|
1482
|
-
margin-top:
|
|
1615
|
+
margin-top: var(--spacing-30);
|
|
1483
1616
|
}
|
|
1484
1617
|
.modal-with-double-button-close.row {
|
|
1485
1618
|
display: flex;
|
|
1486
1619
|
justify-content: center;
|
|
1487
1620
|
align-items: center;
|
|
1488
|
-
gap:
|
|
1621
|
+
gap: var(--spacing-16);
|
|
1489
1622
|
}
|
|
1490
1623
|
.modal-with-double-button-close.row > * {
|
|
1491
1624
|
flex: 1;
|
|
@@ -1495,28 +1628,41 @@ p {
|
|
|
1495
1628
|
flex-direction: column;
|
|
1496
1629
|
justify-content: center;
|
|
1497
1630
|
align-items: center;
|
|
1498
|
-
gap:
|
|
1631
|
+
gap: var(--spacing-10);
|
|
1499
1632
|
}
|
|
1500
1633
|
.modal-with-double-button-close.column > * {
|
|
1501
1634
|
width: 100%;
|
|
1502
1635
|
}
|
|
1636
|
+
.base-radio:where(.button) {
|
|
1637
|
+
padding: 0;
|
|
1638
|
+
}
|
|
1639
|
+
/***************************************************************************************************
|
|
1640
|
+
* *
|
|
1641
|
+
* radio *
|
|
1642
|
+
* *
|
|
1643
|
+
***************************************************************************************************/
|
|
1503
1644
|
.radio:where(.radio-group) {
|
|
1504
1645
|
display: flex;
|
|
1505
1646
|
flex-direction: column;
|
|
1506
|
-
gap:
|
|
1647
|
+
gap: var(--spacing-16);
|
|
1648
|
+
}
|
|
1649
|
+
.radio:where(.radio-option) {
|
|
1650
|
+
display: flex;
|
|
1651
|
+
align-items: center;
|
|
1652
|
+
gap: var(--spacing-6);
|
|
1507
1653
|
}
|
|
1508
1654
|
.radio:where(.radio-button) {
|
|
1509
1655
|
display: flex;
|
|
1510
1656
|
align-items: center;
|
|
1511
1657
|
justify-content: center;
|
|
1512
|
-
width:
|
|
1513
|
-
height:
|
|
1658
|
+
width: var(--radio-size);
|
|
1659
|
+
height: var(--radio-size);
|
|
1514
1660
|
border-radius: 50%;
|
|
1515
1661
|
background-color: var(--color-grey-scale-200);
|
|
1516
1662
|
}
|
|
1517
1663
|
.radio:where(.radio-indicator) {
|
|
1518
|
-
width:
|
|
1519
|
-
height:
|
|
1664
|
+
width: var(--radio-dot-size);
|
|
1665
|
+
height: var(--radio-dot-size);
|
|
1520
1666
|
border-radius: 50%;
|
|
1521
1667
|
background-color: var(--color-purple-900);
|
|
1522
1668
|
}
|
|
@@ -1560,33 +1706,127 @@ p {
|
|
|
1560
1706
|
.data-table-header {
|
|
1561
1707
|
position: sticky;
|
|
1562
1708
|
top: 0;
|
|
1563
|
-
background-color:
|
|
1564
|
-
z-index:
|
|
1565
|
-
border-bottom:
|
|
1709
|
+
background-color: var(--color-white);
|
|
1710
|
+
z-index: var(--z-sticky-header);
|
|
1711
|
+
border-bottom: var(--hairline) solid var(--color-grey-scale-200);
|
|
1566
1712
|
}
|
|
1567
1713
|
.data-table-row {
|
|
1568
1714
|
position: relative;
|
|
1569
|
-
border-bottom:
|
|
1715
|
+
border-bottom: var(--hairline) solid var(--color-grey-scale-200);
|
|
1570
1716
|
}
|
|
1571
1717
|
.data-table-row .fixed {
|
|
1572
1718
|
position: sticky;
|
|
1573
|
-
background-color:
|
|
1574
|
-
z-index:
|
|
1719
|
+
background-color: var(--color-white);
|
|
1720
|
+
z-index: var(--z-sticky);
|
|
1575
1721
|
}
|
|
1576
1722
|
:is(.data-table-row .fixed) > * {
|
|
1577
1723
|
position: relative;
|
|
1578
|
-
z-index:
|
|
1724
|
+
z-index: var(--z-raised);
|
|
1579
1725
|
}
|
|
1580
1726
|
.body .data-table-row:hover {
|
|
1581
|
-
background-color:
|
|
1727
|
+
background-color: var(--color-grey-scale-100);
|
|
1582
1728
|
}
|
|
1583
1729
|
:is(.body .data-table-row:hover) .fixed {
|
|
1584
|
-
background-color:
|
|
1730
|
+
background-color: var(--color-grey-scale-100);
|
|
1585
1731
|
}
|
|
1586
1732
|
.fixed-cell {
|
|
1587
1733
|
position: sticky;
|
|
1588
1734
|
left: 0;
|
|
1589
1735
|
}
|
|
1736
|
+
.base-tabs:where(.root) {
|
|
1737
|
+
width: 100%;
|
|
1738
|
+
display: block;
|
|
1739
|
+
}
|
|
1740
|
+
/***************************************************************************************************
|
|
1741
|
+
* *
|
|
1742
|
+
* tabs *
|
|
1743
|
+
* *
|
|
1744
|
+
***************************************************************************************************/
|
|
1745
|
+
.tabs-list {
|
|
1746
|
+
display: flex;
|
|
1747
|
+
align-items: center;
|
|
1748
|
+
position: relative;
|
|
1749
|
+
}
|
|
1750
|
+
.tabs-list.variant-underline {
|
|
1751
|
+
border-bottom: var(--hairline) solid var(--color-grey-scale-200);
|
|
1752
|
+
|
|
1753
|
+
/* Scrollable logic */
|
|
1754
|
+
overflow-x: auto;
|
|
1755
|
+
scrollbar-width: none;
|
|
1756
|
+
}
|
|
1757
|
+
.tabs-list.variant-underline::-webkit-scrollbar {
|
|
1758
|
+
display: none;
|
|
1759
|
+
}
|
|
1760
|
+
.tabs-trigger {
|
|
1761
|
+
/* 1. 구조적 스타일 (Layout) */
|
|
1762
|
+
display: inline-flex;
|
|
1763
|
+
align-items: center;
|
|
1764
|
+
justify-content: center;
|
|
1765
|
+
cursor: pointer;
|
|
1766
|
+
background: transparent;
|
|
1767
|
+
border: 0;
|
|
1768
|
+
flex-shrink: 0;
|
|
1769
|
+
|
|
1770
|
+
/* 2. 테마 스타일 (Theme) */
|
|
1771
|
+
/* figma 토큰에 11px 없음. 디자이너 확인 전까지 숫자 유지 */
|
|
1772
|
+
padding: 10px 30px 11px 30px; /* raw-px */
|
|
1773
|
+
color: var(--color-grey-scale-400);
|
|
1774
|
+
font-size: var(--font-size-sm);
|
|
1775
|
+
font-weight: var(--font-weight-medium);
|
|
1776
|
+
border-bottom: var(--hairline) solid var(--color-grey-scale-200);
|
|
1777
|
+
transition: color var(--motion-base) var(--motion-ease);
|
|
1778
|
+
}
|
|
1779
|
+
.tabs-trigger:hover {
|
|
1780
|
+
color: var(--color-purple-700);
|
|
1781
|
+
}
|
|
1782
|
+
.tabs-trigger[data-state='active'] {
|
|
1783
|
+
color: var(--color-purple-700);
|
|
1784
|
+
font-weight: var(--font-weight-bold);
|
|
1785
|
+
}
|
|
1786
|
+
.tabs-trigger.disabled {
|
|
1787
|
+
cursor: not-allowed;
|
|
1788
|
+
opacity: 0.5;
|
|
1789
|
+
}
|
|
1790
|
+
/* 3. 변이 스타일 (Variants) */
|
|
1791
|
+
.tabs-trigger.variant-underline {
|
|
1792
|
+
border-bottom: 0;
|
|
1793
|
+
}
|
|
1794
|
+
.tabs-trigger.variant-underline[data-state='active'] {
|
|
1795
|
+
border-bottom-color: transparent;
|
|
1796
|
+
}
|
|
1797
|
+
.tabs-trigger.variant-filled {
|
|
1798
|
+
flex: 1; /* full-width logic integrated */
|
|
1799
|
+
text-align: center;
|
|
1800
|
+
/* figma 토큰에 11px 없음. 디자이너 확인 전까지 숫자 유지 */
|
|
1801
|
+
padding: 11px 30px; /* raw-px */
|
|
1802
|
+
border-bottom: 0;
|
|
1803
|
+
z-index: var(--z-raised);
|
|
1804
|
+
}
|
|
1805
|
+
.tabs-trigger.variant-filled:hover,.tabs-trigger.variant-filled[data-state='active'] {
|
|
1806
|
+
background-color: transparent;
|
|
1807
|
+
}
|
|
1808
|
+
.tabs-indicator {
|
|
1809
|
+
/* 1. 구조적 스타일 (Layout) */
|
|
1810
|
+
position: absolute;
|
|
1811
|
+
pointer-events: none;
|
|
1812
|
+
z-index: var(--z-raised);
|
|
1813
|
+
transition:
|
|
1814
|
+
left var(--motion-base) var(--motion-ease),
|
|
1815
|
+
width var(--motion-base) var(--motion-ease);
|
|
1816
|
+
|
|
1817
|
+
/* 2. 변이 스타일 (Variants) */
|
|
1818
|
+
}
|
|
1819
|
+
.tabs-indicator.variant-underline {
|
|
1820
|
+
bottom: 0;
|
|
1821
|
+
height: var(--tab-indicator-thickness);
|
|
1822
|
+
background-color: var(--color-purple-800);
|
|
1823
|
+
}
|
|
1824
|
+
.tabs-indicator.variant-filled {
|
|
1825
|
+
top: 0;
|
|
1826
|
+
bottom: 0;
|
|
1827
|
+
background-color: var(--color-purple-50);
|
|
1828
|
+
z-index: var(--z-base);
|
|
1829
|
+
}
|
|
1590
1830
|
.base-text-field.input {
|
|
1591
1831
|
border: none;
|
|
1592
1832
|
outline: none;
|
|
@@ -1603,76 +1843,82 @@ p {
|
|
|
1603
1843
|
color: var(--color-grey-scale-400);
|
|
1604
1844
|
}
|
|
1605
1845
|
.base-text-field.input:-webkit-autofill,.base-text-field.input:-webkit-autofill:hover,.base-text-field.input:-webkit-autofill:focus,.base-text-field.input:-webkit-autofill:active {
|
|
1606
|
-
|
|
1846
|
+
/* 브라우저 자동완성 배경을 덮는 관용 해킹. 토큰이 아니라 고정값이다 */ /* raw-value */
|
|
1847
|
+
box-shadow: 0 0 0px 1000px transparent inset; /* raw-value */
|
|
1607
1848
|
-webkit-transition: background-color 5000s ease-in-out 0s;
|
|
1608
|
-
transition: background-color 5000s ease-in-out 0s;
|
|
1849
|
+
transition: background-color 5000s ease-in-out 0s; /* raw-value */
|
|
1609
1850
|
}
|
|
1610
1851
|
/***************************************************************************************************
|
|
1611
1852
|
* *
|
|
1612
1853
|
* base-text-field *
|
|
1613
1854
|
* *
|
|
1614
1855
|
***************************************************************************************************/
|
|
1856
|
+
.text-field {
|
|
1857
|
+
height: -moz-fit-content;
|
|
1858
|
+
height: fit-content;
|
|
1859
|
+
}
|
|
1615
1860
|
.text-field-title {
|
|
1616
|
-
margin-bottom:
|
|
1861
|
+
margin-bottom: var(--spacing-8);
|
|
1617
1862
|
}
|
|
1618
1863
|
.text-field-input-wrapper {
|
|
1619
1864
|
display: flex;
|
|
1620
1865
|
align-items: center;
|
|
1621
1866
|
justify-content: space-between;
|
|
1622
|
-
gap:
|
|
1867
|
+
gap: var(--spacing-10);
|
|
1623
1868
|
|
|
1624
|
-
padding: 0
|
|
1869
|
+
padding: 0 var(--spacing-14);
|
|
1625
1870
|
|
|
1626
|
-
border-radius:
|
|
1627
|
-
border:
|
|
1871
|
+
border-radius: var(--radius-4);
|
|
1872
|
+
border: var(--hairline) solid var(--color-grey-scale-300);
|
|
1628
1873
|
}
|
|
1629
|
-
.text-field-input-wrapper.size-
|
|
1630
|
-
height:
|
|
1874
|
+
.text-field-input-wrapper.size-s {
|
|
1875
|
+
height: var(--control-height-s);
|
|
1631
1876
|
}
|
|
1632
|
-
.text-field-input-wrapper.size-
|
|
1633
|
-
height:
|
|
1877
|
+
.text-field-input-wrapper.size-m {
|
|
1878
|
+
height: var(--control-height-m);
|
|
1634
1879
|
}
|
|
1635
|
-
.text-field-input-wrapper:has([data-disabled='true']) {
|
|
1880
|
+
.text-field-input-wrapper:has( > input[data-disabled='true']) {
|
|
1636
1881
|
border-color: var(--color-grey-scale-300);
|
|
1637
1882
|
background-color: var(--color-grey-scale-100);
|
|
1638
1883
|
}
|
|
1639
1884
|
.text-field-input-wrapper:focus-within {
|
|
1640
|
-
border:
|
|
1885
|
+
border: var(--hairline) solid var(--color-purple-900);
|
|
1641
1886
|
}
|
|
1642
1887
|
.text-field-input-wrapper > input {
|
|
1643
1888
|
width: 100%;
|
|
1644
1889
|
}
|
|
1645
1890
|
.text-field-helper-text {
|
|
1646
|
-
margin-top:
|
|
1891
|
+
margin-top: var(--spacing-4);
|
|
1647
1892
|
}
|
|
1648
1893
|
.text-field-helper-text.error {
|
|
1649
1894
|
color: var(--color-accent-red-500);
|
|
1650
1895
|
}
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1896
|
+
/* Trigger 도 base-tooltip 을 달므로 z-index 는 Content 에만 건다. */
|
|
1897
|
+
.base-tooltip:where(.content) {
|
|
1898
|
+
z-index: var(--z-tooltip);
|
|
1899
|
+
}
|
|
1654
1900
|
.base-tooltip.content {
|
|
1655
1901
|
text-align: center;
|
|
1656
1902
|
}
|
|
1903
|
+
.base-tooltip:where(.trigger) {
|
|
1904
|
+
width: -moz-fit-content;
|
|
1905
|
+
width: fit-content;
|
|
1906
|
+
}
|
|
1657
1907
|
/***************************************************************************************************
|
|
1658
1908
|
* *
|
|
1659
1909
|
* tooltip *
|
|
1660
1910
|
* *
|
|
1661
1911
|
***************************************************************************************************/
|
|
1662
|
-
.tooltip-trigger {
|
|
1663
|
-
width: -moz-fit-content;
|
|
1664
|
-
width: fit-content;
|
|
1665
|
-
}
|
|
1666
1912
|
.tooltip-content {
|
|
1667
1913
|
display: flex;
|
|
1668
1914
|
justify-content: space-around;
|
|
1669
1915
|
align-items: center;
|
|
1670
|
-
gap:
|
|
1916
|
+
gap: var(--spacing-10);
|
|
1671
1917
|
|
|
1672
1918
|
background-color: var(--color-purple-900);
|
|
1673
1919
|
color: var(--color-white);
|
|
1674
|
-
border-radius:
|
|
1675
|
-
padding:
|
|
1920
|
+
border-radius: var(--radius-6);
|
|
1921
|
+
padding: var(--spacing-12);
|
|
1676
1922
|
|
|
1677
1923
|
font-size: var(--font-size-sm);
|
|
1678
1924
|
line-height: var(--line-height-sm);
|
|
@@ -1688,42 +1934,42 @@ p {
|
|
|
1688
1934
|
border-style: solid;
|
|
1689
1935
|
}
|
|
1690
1936
|
.tooltip-content.direction-top {
|
|
1691
|
-
transform: translateY(-
|
|
1937
|
+
transform: translateY(calc(-1 * var(--spacing-10)));
|
|
1692
1938
|
}
|
|
1693
1939
|
.tooltip-content.direction-top::before {
|
|
1694
|
-
bottom: -
|
|
1940
|
+
bottom: calc(-1 * var(--tooltip-arrow));
|
|
1695
1941
|
left: 50%;
|
|
1696
1942
|
transform: translateX(-50%);
|
|
1697
|
-
border-width:
|
|
1943
|
+
border-width: var(--tooltip-arrow) var(--tooltip-arrow) 0 var(--tooltip-arrow);
|
|
1698
1944
|
border-color: var(--color-purple-900) transparent transparent transparent;
|
|
1699
1945
|
}
|
|
1700
1946
|
.tooltip-content.direction-bottom {
|
|
1701
|
-
transform: translateY(
|
|
1947
|
+
transform: translateY(var(--spacing-10));
|
|
1702
1948
|
}
|
|
1703
1949
|
.tooltip-content.direction-bottom::before {
|
|
1704
|
-
top: -
|
|
1950
|
+
top: calc(-1 * var(--tooltip-arrow));
|
|
1705
1951
|
left: 50%;
|
|
1706
1952
|
transform: translateX(-50%);
|
|
1707
|
-
border-width: 0
|
|
1953
|
+
border-width: 0 var(--tooltip-arrow) var(--tooltip-arrow) var(--tooltip-arrow);
|
|
1708
1954
|
border-color: transparent transparent var(--color-purple-900) transparent;
|
|
1709
1955
|
}
|
|
1710
1956
|
.tooltip-content.direction-left {
|
|
1711
|
-
transform: translateX(-
|
|
1957
|
+
transform: translateX(calc(-1 * var(--spacing-10)));
|
|
1712
1958
|
}
|
|
1713
1959
|
.tooltip-content.direction-left::before {
|
|
1714
|
-
right: -
|
|
1960
|
+
right: calc(-1 * var(--tooltip-arrow));
|
|
1715
1961
|
top: 50%;
|
|
1716
1962
|
transform: translateY(-50%);
|
|
1717
|
-
border-width:
|
|
1963
|
+
border-width: var(--tooltip-arrow) 0 var(--tooltip-arrow) var(--tooltip-arrow);
|
|
1718
1964
|
border-color: transparent transparent transparent var(--color-purple-900);
|
|
1719
1965
|
}
|
|
1720
1966
|
.tooltip-content.direction-right {
|
|
1721
|
-
transform: translateX(
|
|
1967
|
+
transform: translateX(var(--spacing-10));
|
|
1722
1968
|
}
|
|
1723
1969
|
.tooltip-content.direction-right::before {
|
|
1724
|
-
left: -
|
|
1970
|
+
left: calc(-1 * var(--tooltip-arrow));
|
|
1725
1971
|
top: 50%;
|
|
1726
1972
|
transform: translateY(-50%);
|
|
1727
|
-
border-width:
|
|
1973
|
+
border-width: var(--tooltip-arrow) var(--tooltip-arrow) var(--tooltip-arrow) 0;
|
|
1728
1974
|
border-color: transparent var(--color-purple-900) transparent transparent;
|
|
1729
1975
|
}
|