@nurihaus/web-design-system 2.0.9 → 3.0.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.
@@ -0,0 +1,1749 @@
1
+
2
+ @import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.8/dist/web/static/pretendard.css');
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
+ /* 토큰 + 글꼴 + 리셋 + 유틸리티 + 컴포넌트. 디자인 시스템 컴포넌트를 쓸 때 가져온다. */
6
+ /* 변수만. 이것만 가져와도 화면이 바뀌지 않는다. CSS Modules 에서 var() 로 쓴다. */
7
+ /* tokens/figma.json 에서 생성됨 — 손으로 고치지 않는다. `npm run tokens` */
8
+ :root {
9
+ --color-purple-50: #F4EFFA;
10
+ --color-purple-100: #E9E0F5;
11
+ --color-purple-200: #DDD1F0;
12
+ --color-purple-300: #C3B4DD;
13
+ --color-purple-400: #A894C7;
14
+ --color-purple-500: #957EB4;
15
+ --color-purple-600: #6F56A3;
16
+ --color-purple-700: #4C277C;
17
+ --color-purple-800: #4C1D88;
18
+ --color-purple-900: #391D5D;
19
+ --color-grey-scale-50: #FAFAFA;
20
+ --color-grey-scale-100: #F4F4F5;
21
+ --color-grey-scale-200: #E4E4E7;
22
+ --color-grey-scale-300: #D4D4D8;
23
+ --color-grey-scale-400: #A1A1AA;
24
+ --color-grey-scale-500: #71717A;
25
+ --color-grey-scale-600: #52525B;
26
+ --color-grey-scale-700: #3F3F46;
27
+ --color-grey-scale-800: #27272A;
28
+ --color-grey-scale-900: #18181B;
29
+ --color-accent-red-50: #FFF5F6;
30
+ --color-accent-red-100: #FFE8E9;
31
+ --color-accent-red-200: #FBCFD2;
32
+ --color-accent-red-300: #F39AA0;
33
+ --color-accent-red-400: #E86F77;
34
+ --color-accent-red-500: #DF535C;
35
+ --color-accent-red-600: #C94751;
36
+ --color-accent-red-700: #B02E4C;
37
+ --color-accent-red-800: #8F243A;
38
+ --color-accent-red-900: #6E1A2C;
39
+ --color-accent-pink-50: #FFF1F6;
40
+ --color-accent-pink-100: #FFE4EE;
41
+ --color-accent-pink-200: #FECFE3;
42
+ --color-accent-pink-300: #FDA4CC;
43
+ --color-accent-pink-400: #F472B6;
44
+ --color-accent-pink-500: #EC6FAE;
45
+ --color-accent-pink-600: #D95D9A;
46
+ --color-accent-pink-700: #B94A7E;
47
+ --color-accent-pink-800: #93385F;
48
+ --color-accent-pink-900: #6E2644;
49
+ --color-accent-magenta-50: #FEF0FF;
50
+ --color-accent-magenta-100: #FEF0FF;
51
+ --color-accent-magenta-200: #F8C6FF;
52
+ --color-accent-magenta-300: #F29BFF;
53
+ --color-accent-magenta-400: #EC5CEF;
54
+ --color-accent-magenta-500: #E13BE7;
55
+ --color-accent-magenta-600: #C82FCC;
56
+ --color-accent-magenta-700: #A923A8;
57
+ --color-accent-magenta-800: #831C83;
58
+ --color-accent-magenta-900: #5E145E;
59
+ --color-accent-blue-50: #F1F4FF;
60
+ --color-accent-blue-100: #E3E8FF;
61
+ --color-accent-blue-200: #C7D2FE;
62
+ --color-accent-blue-300: #A5B4FC;
63
+ --color-accent-blue-400: #818CF8;
64
+ --color-accent-blue-500: #2563EB;
65
+ --color-accent-blue-600: #1F52C9;
66
+ --color-accent-blue-700: #1E40AF;
67
+ --color-accent-blue-800: #1C348A;
68
+ --color-accent-blue-900: #162763;
69
+ --color-accent-mint-50: #ECFEFD;
70
+ --color-accent-mint-100: #D1FAF7;
71
+ --color-accent-mint-200: #A7F3EE;
72
+ --color-accent-mint-300: #6EE7E0;
73
+ --color-accent-mint-400: #2DD4CB;
74
+ --color-accent-mint-500: #01ECE1;
75
+ --color-accent-mint-600: #0BC5BC;
76
+ --color-accent-mint-700: #0F9F99;
77
+ --color-accent-mint-800: #117D78;
78
+ --color-accent-mint-900: #135C58;
79
+ --color-accent-green-50: #ECFDF3;
80
+ --color-accent-green-100: #D1FAE1;
81
+ --color-accent-green-200: #A7F3C8;
82
+ --color-accent-green-300: #6EE7A3;
83
+ --color-accent-green-400: #41E176;
84
+ --color-accent-green-500: #22C55E;
85
+ --color-accent-green-600: #16A34A;
86
+ --color-accent-green-700: #289A3A;
87
+ --color-accent-green-800: #166534;
88
+ --color-accent-green-900: #14532D;
89
+ --color-accent-yellow-50: #FFFBEB;
90
+ --color-accent-yellow-100: #FEF3C7;
91
+ --color-accent-yellow-200: #FDE68A;
92
+ --color-accent-yellow-300: #FCD34D;
93
+ --color-accent-yellow-400: #FBBF24;
94
+ --color-accent-yellow-500: #FFB800;
95
+ --color-accent-yellow-600: #E0A106;
96
+ --color-accent-yellow-700: #B58105;
97
+ --color-accent-yellow-800: #8A6404;
98
+ --color-accent-yellow-900: #5F4703;
99
+ --color-accent-orange-50: #FFF7ED;
100
+ --color-accent-orange-100: #FFEDD5;
101
+ --color-accent-orange-200: #FED7AA;
102
+ --color-accent-orange-300: #FDBA74;
103
+ --color-accent-orange-400: #FB923C;
104
+ --color-accent-orange-500: #F97316;
105
+ --color-accent-orange-600: #EA580C;
106
+ --color-accent-orange-700: #C2410C;
107
+ --color-accent-orange-800: #9A3412;
108
+ --color-accent-orange-900: #7C2D12;
109
+ --font-family-primary: Pretendard;
110
+ --font-weight-regular: 400;
111
+ --font-weight-medium: 500;
112
+ --font-weight-semibold: 600;
113
+ --font-weight-bold: 700;
114
+ --font-weight-extrabold: 800;
115
+ --font-size-xsm: 12px;
116
+ --font-size-sm: 14px;
117
+ --font-size-base: 16px;
118
+ --font-size-lg: 18px;
119
+ --font-size-xl: 20px;
120
+ --font-size-2xl: 24px;
121
+ --font-size-3xl: 30px;
122
+ --font-size-4xl: 36px;
123
+ --font-size-5xl: 48px;
124
+ --font-size-6xl: 60px;
125
+ --spacing-2: 2px;
126
+ --spacing-4: 4px;
127
+ --spacing-6: 6px;
128
+ --spacing-8: 8px;
129
+ --spacing-10: 10px;
130
+ --spacing-12: 12px;
131
+ --spacing-14: 14px;
132
+ --spacing-16: 16px;
133
+ --spacing-18: 18px;
134
+ --spacing-20: 20px;
135
+ --spacing-22: 22px;
136
+ --spacing-24: 24px;
137
+ --spacing-26: 26px;
138
+ --spacing-28: 28px;
139
+ --spacing-30: 30px;
140
+ --radius-4: 4px;
141
+ --radius-6: 6px;
142
+ --radius-16: 16px;
143
+ --radius-20: 20px;
144
+ --radius-full: 9999px;
145
+ --color-black: #000000;
146
+ --color-white: #FFFFFF;
147
+
148
+ --line-height-xsm: 18px;
149
+ --line-height-sm: 18px;
150
+ --line-height-base: 22px;
151
+ --line-height-lg: 24px;
152
+ --line-height-xl: 28px;
153
+ --line-height-2xl: 32px;
154
+ --line-height-3xl: 36px;
155
+ --line-height-4xl: 43px;
156
+ --line-height-5xl: 66px;
157
+ --line-height-6xl: 82px;
158
+ }
159
+ /* semantic: app */
160
+ :root, :root[data-ds-theme='app'] {
161
+ --button-variant-primary-background: var(--color-purple-900);
162
+ --button-variant-primary-border: var(--color-purple-900);
163
+ --button-variant-primary-text: var(--color-white);
164
+ --button-variant-ghost-background: var(--color-white);
165
+ --button-variant-ghost-border: var(--color-grey-scale-300);
166
+ --button-variant-ghost-text: var(--color-purple-900);
167
+ --button-variant-secondary-background: var(--color-purple-50);
168
+ --button-variant-secondary-border: var(--color-purple-50);
169
+ --button-variant-secondary-text: var(--color-purple-900);
170
+ --button-variant-neutral-background: var(--color-white);
171
+ --button-variant-neutral-border: var(--color-white);
172
+ --button-variant-neutral-text: var(--color-purple-900);
173
+ --button-variant-disabled-background: var(--color-grey-scale-200);
174
+ --button-variant-disabled-border: var(--color-grey-scale-200);
175
+ --button-variant-disabled-text: var(--color-white);
176
+ --button-variant-outlined-background: var(--color-white);
177
+ --button-variant-outlined-border: var(--color-accent-red-700);
178
+ --button-variant-outlined-text: var(--color-accent-red-700);
179
+ --button-size-xl: [object Object];
180
+ --button-size-lg: [object Object];
181
+ --button-size-md: [object Object];
182
+ --button-size-rg: [object Object];
183
+ --button-size-sm: [object Object];
184
+ --button-size-xs: [object Object];
185
+ }
186
+ /* semantic: admin */
187
+ :root[data-ds-theme='admin'] {
188
+ --button-variant-primary-border: var(--color-purple-900);
189
+ --button-variant-primary-text: var(--color-white);
190
+ --button-variant-primary-hover-background: var(--color-purple-900);
191
+ --button-variant-primary-hover-border: var(--color-purple-900);
192
+ --button-variant-primary-hover-text: var(--color-white);
193
+ --button-variant-ghost-background: var(--color-white);
194
+ --button-variant-ghost-border: var(--color-grey-scale-300);
195
+ --button-variant-ghost-text: var(--color-purple-900);
196
+ --button-variant-ghost-hover-background: var(--color-white);
197
+ --button-variant-ghost-hover-border: var(--color-purple-900);
198
+ --button-variant-ghost-hover-text: var(--color-purple-900);
199
+ --button-variant-secondary-background: var(--color-purple-50);
200
+ --button-variant-secondary-border: var(--color-purple-50);
201
+ --button-variant-secondary-text: var(--color-purple-900);
202
+ --button-variant-secondary-hover-background: var(--color-purple-100);
203
+ --button-variant-secondary-hover-border: var(--color-purple-100);
204
+ --button-variant-secondary-hover-text: var(--color-purple-900);
205
+ --button-variant-disabled-background: var(--color-grey-scale-200);
206
+ --button-variant-disabled-border: var(--color-grey-scale-200);
207
+ --button-variant-disabled-text: var(--color-white);
208
+ --button-variant-outlined-background: var(--color-white);
209
+ --button-variant-outlined-border: var(--color-accent-red-700);
210
+ --button-variant-outlined-text: var(--color-accent-red-700);
211
+ --button-variant-neutral-background: var(--color-white);
212
+ --button-variant-neutral-border: var(--color-white);
213
+ --button-variant-neutral-text: var(--color-purple-900);
214
+ --button-variant-neutral-hover-background: var(--color-grey-scale-100);
215
+ --button-variant-neutral-hover-border: var(--color-grey-scale-100);
216
+ --button-variant-neutral-hover-text: var(--color-purple-900);
217
+ --button-variant-confirm-background: var(--color-accent-red-500);
218
+ --button-variant-confirm-border: var(--color-accent-red-500);
219
+ --button-variant-confirm-text: var(--color-white);
220
+ --button-variant-confirm-hover-background: var(--color-accent-red-700);
221
+ --button-variant-confirm-hover-border: var(--color-accent-red-700);
222
+ --button-variant-confirm-hover-text: var(--color-white);
223
+ --button-xl: [object Object];
224
+ --button-l: [object Object];
225
+ --button-sb: [object Object];
226
+ --button-r: [object Object];
227
+ --button-s: [object Object];
228
+ --button-xs: [object Object];
229
+ --button-size-xs: 30;
230
+ --button-size-s: 40;
231
+ --button-size-r: 48;
232
+ --button-size-m: 50;
233
+ --button-size-l: 54;
234
+ --button-size-xl: 60;
235
+ }
236
+ .nuri-theme {
237
+ --cursor-button: pointer;
238
+ --cursor-disabled: not-allowed;
239
+ --cursor-link: pointer;
240
+ font-family:
241
+ 'Twemoji Country Flags',
242
+ 'Pretendard',
243
+ Pretendard,
244
+ -apple-system,
245
+ BlinkMacSystemFont,
246
+ system-ui,
247
+ Roboto,
248
+ 'Helvetica Neue',
249
+ 'Segoe UI',
250
+ 'Apple SD Gothic Neo',
251
+ 'Noto Sans KR',
252
+ 'Malgun Gothic',
253
+ 'Apple Color Emoji',
254
+ 'Segoe UI Emoji',
255
+ 'Segoe UI Symbol',
256
+ 'Noto Color Emoji',
257
+ sans-serif;
258
+ }
259
+ /* 웹폰트와 기본 글꼴. 토큰이 아니라 손으로 유지한다. */
260
+ /*
261
+ * 글꼴은 `:root` 에 걸지 않는다. 토큰만 가져다 쓰는 앱의 글꼴을 뺏지 않기 위해서다.
262
+ * 디자인 시스템의 글꼴을 원하면 이 클래스를 붙인다.
263
+ */
264
+ .nuri-placeholder {
265
+ color: var(--color-grey-scale-400);
266
+ }
267
+ /* Reset */
268
+ /* 모든 요소의 마진과 패딩 제거 */
269
+ * {
270
+ margin: 0;
271
+ padding: 0;
272
+ box-sizing: border-box;
273
+ }
274
+ /* 기본 폰트 설정 및 텍스트 렌더링 최적화 */
275
+ html {
276
+ -webkit-text-size-adjust: 100%;
277
+ -webkit-font-smoothing: antialiased;
278
+ -moz-osx-font-smoothing: grayscale;
279
+ }
280
+ /* 리스트 스타일 제거 */
281
+ ul,
282
+ ol {
283
+ list-style: none;
284
+ }
285
+ /* 링크 스타일 초기화 */
286
+ a {
287
+ text-decoration: none;
288
+ color: inherit;
289
+ }
290
+ /* 버튼 스타일 초기화 */
291
+ button {
292
+ border: none;
293
+ background: none;
294
+ cursor: pointer;
295
+ }
296
+ /* 이미지 관련 설정 */
297
+ img {
298
+ max-width: 100%;
299
+ height: auto;
300
+ display: block;
301
+ }
302
+ /* 폼 요소 스타일 초기화 */
303
+ input,
304
+ textarea,
305
+ select {
306
+ font-family: inherit;
307
+ font-size: inherit;
308
+ }
309
+ p {
310
+ margin-top: 0;
311
+ margin-bottom: 0;
312
+ }
313
+ /* Utility */
314
+ .nuri-display-flex {
315
+ display: flex;
316
+ }
317
+ .nuri-display-inline-flex {
318
+ display: inline-flex;
319
+ }
320
+ .nuri-display-block {
321
+ display: block;
322
+ }
323
+ .nuri-display-inline-block {
324
+ display: inline-block;
325
+ }
326
+ .nuri-display-grid {
327
+ display: grid;
328
+ }
329
+ .nuri-display-inline-grid {
330
+ display: inline-grid;
331
+ }
332
+ .nuri-display-contents {
333
+ display: contents;
334
+ }
335
+ .nuri-display-none {
336
+ display: none;
337
+ }
338
+ .nuri-position-static {
339
+ position: static;
340
+ }
341
+ .nuri-position-relative {
342
+ position: relative;
343
+ }
344
+ .nuri-position-absolute {
345
+ position: absolute;
346
+ }
347
+ .nuri-position-fixed {
348
+ position: fixed;
349
+ }
350
+ .nuri-position-sticky {
351
+ position: sticky;
352
+ }
353
+ .nuri-flex-row {
354
+ flex-direction: row;
355
+ }
356
+ .nuri-flex-row-reverse {
357
+ flex-direction: row-reverse;
358
+ }
359
+ .nuri-flex-column {
360
+ flex-direction: column;
361
+ }
362
+ .nuri-flex-column-reverse {
363
+ flex-direction: column-reverse;
364
+ }
365
+ .nuri-ai-start {
366
+ align-items: flex-start;
367
+ }
368
+ .nuri-ai-center {
369
+ align-items: center;
370
+ }
371
+ .nuri-ai-end {
372
+ align-items: flex-end;
373
+ }
374
+ .nuri-ai-stretch {
375
+ align-items: stretch;
376
+ }
377
+ .nuri-ai-baseline {
378
+ align-items: baseline;
379
+ }
380
+ .nuri-justify-content-start {
381
+ justify-content: flex-start;
382
+ }
383
+ .nuri-justify-content-center {
384
+ justify-content: center;
385
+ }
386
+ .nuri-justify-content-end {
387
+ justify-content: flex-end;
388
+ }
389
+ .nuri-justify-content-between {
390
+ justify-content: space-between;
391
+ }
392
+ .nuri-justify-content-around {
393
+ justify-content: space-around;
394
+ }
395
+ .nuri-justify-content-evenly {
396
+ justify-content: space-evenly;
397
+ }
398
+ .nuri-overflow-visible {
399
+ overflow: visible;
400
+ }
401
+ .nuri-overflow-hidden {
402
+ overflow: hidden;
403
+ }
404
+ .nuri-overflow-scroll {
405
+ overflow: scroll;
406
+ }
407
+ .nuri-overflow-auto {
408
+ overflow: auto;
409
+ }
410
+ .nuri-overflow-x-visible {
411
+ overflow-x: visible;
412
+ }
413
+ .nuri-overflow-x-hidden {
414
+ overflow-x: hidden;
415
+ }
416
+ .nuri-overflow-x-scroll {
417
+ overflow-x: scroll;
418
+ }
419
+ .nuri-overflow-x-auto {
420
+ overflow-x: auto;
421
+ }
422
+ .nuri-overflow-y-visible {
423
+ overflow-y: visible;
424
+ }
425
+ .nuri-overflow-y-hidden {
426
+ overflow-y: hidden;
427
+ }
428
+ .nuri-overflow-y-scroll {
429
+ overflow-y: scroll;
430
+ }
431
+ .nuri-overflow-y-auto {
432
+ overflow-y: auto;
433
+ }
434
+ /* Component */
435
+ .base-avatar {
436
+ border-radius: 50%;
437
+ width: -moz-fit-content;
438
+ width: fit-content;
439
+ height: -moz-fit-content;
440
+ height: fit-content;
441
+ overflow: hidden;
442
+
443
+ &.avatar-image {
444
+ width: 100%;
445
+ height: 100%;
446
+ -o-object-fit: cover;
447
+ object-fit: cover;
448
+ }
449
+
450
+ & .avatar-fallback {
451
+ display: block;
452
+ width: 100%;
453
+ height: 100%;
454
+
455
+ & svg {
456
+ width: 100%;
457
+ height: 100%;
458
+ }
459
+ }
460
+ }
461
+ /***************************************************************************************************
462
+ * *
463
+ * avatar *
464
+ * *
465
+ ***************************************************************************************************/
466
+ .avatar {
467
+ display: flex;
468
+ align-items: center;
469
+ justify-content: center;
470
+
471
+ &.size-xl {
472
+ width: 124px;
473
+ height: 124px;
474
+ border: 1px solid #e4e4e7;
475
+
476
+ &.badge-option {
477
+ width: 48px;
478
+ height: 48px;
479
+ width: 30px;
480
+ height: 30px;
481
+ width: 24px;
482
+ height: 24px;
483
+ width: 18px;
484
+ height: 18px;
485
+ }
486
+ height: 60px;
487
+
488
+ font-size: var(--font-size-lg);
489
+ line-height: var(--line-height-lg);
490
+ font-weight: var(--font-weight-bold)
491
+ }
492
+
493
+ &.size-l {
494
+ width: 74px;
495
+ height: 74px;
496
+ border: 1px solid #e4e4e7;
497
+ height: 48px;
498
+
499
+ font-size: var(--font-size-sm);
500
+ line-height: var(--line-height-sm);
501
+ font-weight: var(--font-weight-semibold);
502
+ height: 54px;
503
+
504
+ font-size: var(--font-size-base);
505
+ line-height: var(--line-height-base);
506
+ font-weight: var(--font-weight-bold);
507
+ width: 24px;
508
+ height: 24px;
509
+ height: 50px;
510
+ width: 500px;
511
+ height: 50px
512
+ }
513
+
514
+ &.size-m {
515
+ width: 58px;
516
+ height: 58px;
517
+ border: 1px solid #e4e4e7;
518
+ height: 40px;
519
+
520
+ font-size: var(--font-size-sm);
521
+ line-height: var(--line-height-sm);
522
+ font-weight: var(--font-weight-semibold);
523
+ height: 50px;
524
+
525
+ font-size: var(--font-size-sm);
526
+ line-height: var(--line-height-sm);
527
+ font-weight: var(--font-weight-semibold);
528
+ width: 20px;
529
+ height: 20px;
530
+ height: 40px;
531
+ width: 450px;
532
+ height: 40px
533
+ }
534
+
535
+ &.size-s {
536
+ width: 40px;
537
+ height: 40px;
538
+ border: 1px solid #e4e4e7;
539
+ height: 32px;
540
+
541
+ font-size: var(--font-size-sm);
542
+ line-height: var(--line-height-sm);
543
+ font-weight: var(--font-weight-bold);
544
+ height: 40px;
545
+
546
+ font-size: var(--font-size-xsm);
547
+ line-height: var(--line-height-xsm);
548
+ font-weight: var(--font-weight-semibold);
549
+ width: 18px;
550
+ height: 18px;
551
+ width: 400px
552
+ }
553
+ }
554
+ .base-badge {
555
+ position: relative;
556
+ display: flex;
557
+ align-items: center;
558
+ gap: 4px;
559
+ border-radius: 40px;
560
+
561
+ background-color: attr(data-backgroundColor color, transparent);
562
+ color: attr(data-textColor color, transparent);
563
+ border: attr(data-borderColor color, transparent);
564
+
565
+ &.size-r {
566
+ height: 36px;
567
+
568
+ font-size: var(--font-size-sm);
569
+ line-height: var(--line-height-sm);
570
+ font-weight: var(--font-weight-semibold);
571
+ height: 48px;
572
+
573
+ font-size: var(--font-size-sm);
574
+ line-height: var(--line-height-sm);
575
+ font-weight: var(--font-weight-semibold);
576
+ }
577
+
578
+ &.size-sm {
579
+ height: 28px;
580
+
581
+ font-size: var(--font-size-xsm);
582
+ line-height: var(--line-height-xsm);
583
+ font-weight: var(--font-weight-bold);
584
+ }
585
+
586
+ &.icon-text-option {
587
+ display: flex;
588
+ align-items: center;
589
+ justify-content: space-between;
590
+
591
+ padding: 0 20px;
592
+ }
593
+ }
594
+ /***************************************************************************************************
595
+ * *
596
+ * option-badge *
597
+ * *
598
+ ***************************************************************************************************/
599
+ .option {
600
+ display: flex;
601
+ align-items: center;
602
+ justify-content: center;
603
+
604
+ border-width: 1px;
605
+ border-style: solid;
606
+ }
607
+ /***************************************************************************************************
608
+ * *
609
+ * option-badge *
610
+ * *
611
+ ***************************************************************************************************/
612
+ .icon-text {
613
+ display: flex;
614
+ align-items: center;
615
+ justify-content: center;
616
+ gap: 4px;
617
+
618
+ border-width: 1px;
619
+ border-style: solid;
620
+ }
621
+ /***************************************************************************************************
622
+ * *
623
+ * icon-text-option-badge *
624
+ * *
625
+ ***************************************************************************************************/
626
+ .icon-text-option {
627
+ display: flex;
628
+ align-items: center;
629
+ justify-content: space-between;
630
+
631
+ padding: 0 20px;
632
+
633
+ > span {
634
+ display: flex;
635
+ align-items: center;
636
+ gap: 4px;
637
+ }
638
+ }
639
+ .base-button {
640
+ display: flex;
641
+ justify-content: center;
642
+ align-items: center;
643
+ gap: 10px;
644
+ border-radius: 6px;
645
+ border: none;
646
+ cursor: pointer;
647
+
648
+ &:focus-visible {
649
+ outline: none;
650
+ box-shadow: none;
651
+ }
652
+ }
653
+ /***************************************************************************************************
654
+ * *
655
+ * cta-button *
656
+ * *
657
+ ***************************************************************************************************/
658
+ .cta-button {
659
+ border-radius: 6px;
660
+
661
+ &.variant-primary {
662
+ background-color: var(--color-purple-900);
663
+ border: 1px solid var(--color-purple-900);
664
+ color: var(--color-white);
665
+
666
+ &:not(:disabled):hover {
667
+ background-color: var(--color-purple-900);
668
+ border-color: var(--color-purple-900);
669
+ color: var(--color-white);
670
+ background-color: var(--color-purple-100);
671
+ border-color: var(--color-purple-100);
672
+ color: var(--color-purple-900);
673
+ background-color: var(--color-white);
674
+ border-color: var(--color-purple-900);
675
+ color: var(--color-purple-900);
676
+ background-color: var(--color-grey-scale-100);
677
+ border: 1px solid var(--color-grey-scale-100);
678
+ color: var(--color-purple-900);
679
+ background-color: var(--color-accent-red-700);
680
+ border-color: var(--color-accent-red-700);
681
+ color: var(--color-white);
682
+ }
683
+ }
684
+
685
+ &.variant-secondary {
686
+ background-color: var(--color-purple-50);
687
+ color: var(--color-purple-900)
688
+ }
689
+
690
+ &.variant-ghost {
691
+ background-color: var(--color-white);
692
+ border: 1px solid var(--color-grey-scale-300);
693
+ color: var(--color-purple-900)
694
+ }
695
+
696
+ &.variant-neutral {
697
+ background-color: var(--color-white);
698
+ color: var(--color-purple-900)
699
+ }
700
+
701
+ &.variant-confirm {
702
+ background-color: var(--color-accent-red-500);
703
+ border: 1px solid var(--color-accent-red-500);
704
+ color: var(--color-white)
705
+ }
706
+
707
+ &.variant-outlined {
708
+ background-color: var(--color-white);
709
+ border: 1px solid var(--color-accent-red-700);
710
+ color: var(--color-accent-red-700);
711
+ }
712
+
713
+ &.size-xs {
714
+ height: 30px;
715
+
716
+ font-size: var(--font-size-xsm);
717
+ line-height: var(--line-height-xsm);
718
+ font-weight: var(--font-weight-semibold);
719
+ }
720
+
721
+ &:disabled {
722
+ background-color: var(--color-grey-scale-200);
723
+ color: var(--color-white);
724
+ cursor: not-allowed;
725
+ border: none;
726
+ background-color: var(--color-grey-scale-100);
727
+ color: var(--color-grey-scale-400);
728
+ cursor: not-allowed;
729
+ }
730
+ }
731
+ .base-check-box {
732
+ &.label {
733
+ font-size: var(--font-size-sm);
734
+ font-weight: var(--font-weight-medium);
735
+ color: var(--color-black);
736
+ }
737
+ }
738
+ /***************************************************************************************************
739
+ * *
740
+ * check-box *
741
+ * *
742
+ ***************************************************************************************************/
743
+ .check-box {
744
+ display: flex;
745
+ align-items: center;
746
+ gap: 10px;
747
+
748
+ background-color: transparent;
749
+ border: none;
750
+ }
751
+ .check-box-indicator {
752
+ &.wrapper {
753
+ display: flex;
754
+ align-items: center;
755
+ justify-content: center;
756
+ border-radius: 4px;
757
+ border: 1.5px solid var(--color-purple-900);
758
+ }
759
+
760
+ width: 100%;
761
+ height: 100%;
762
+
763
+ &[data-state='unchecked'] {
764
+ background-color: #fff;
765
+ }
766
+
767
+ &[data-state='checked'] {
768
+ background-color: var(--color-purple-900);
769
+ }
770
+
771
+ &[data-disabled='true'] {
772
+ border: none;
773
+ border-radius: 4px;
774
+ background-color: var(--color-grey-scale-300);
775
+ }
776
+ }
777
+ .base-collapsible-menu {
778
+ &.trigger {
779
+ display: flex;
780
+ align-items: center;
781
+ justify-content: space-between;
782
+ gap: 10px;
783
+ width: 100%;
784
+ display: flex;
785
+ align-items: center;
786
+ justify-content: space-between;
787
+ gap: 10px;
788
+ }
789
+ }
790
+ /***************************************************************************************************
791
+ * *
792
+ * collapsible-menu *
793
+ * *
794
+ ***************************************************************************************************/
795
+ .collapsible-menu {
796
+ display: flex;
797
+ flex-direction: column;
798
+ gap: 4px;
799
+ }
800
+ .collapsible-menu.size-m {
801
+ .collapsible-menu-row {
802
+ height: 40px;
803
+ height: 48px;
804
+ all: unset;
805
+ box-sizing: border-box;
806
+ display: flex;
807
+ align-items: center;
808
+ justify-content: space-between;
809
+ gap: 10px;
810
+
811
+ width: 100%;
812
+ padding: 0 12px;
813
+ border-radius: 8px;
814
+ cursor: pointer;
815
+
816
+ font-size: var(--font-size-sm);
817
+ line-height: var(--line-height-sm);
818
+ font-weight: var(--font-weight-medium);
819
+ color: var(--collapsible-menu-text-color, var(--color-grey-scale-700));
820
+
821
+ &:hover {
822
+ background-color: var(--collapsible-menu-hover-bg-color, var(--color-grey-scale-100));
823
+ }
824
+
825
+ &.is-active {
826
+ background-color: var(--collapsible-menu-active-bg-color, var(--color-grey-scale-100));
827
+ color: var(--collapsible-menu-active-text-color, var(--color-purple-800));
828
+ font-weight: var(--collapsible-menu-active-font-weight, 600);
829
+ }
830
+
831
+ &:disabled,
832
+ &[aria-disabled='true'] {
833
+ cursor: not-allowed;
834
+ color: var(--collapsible-menu-disabled-text-color, var(--color-grey-scale-400));
835
+ }
836
+ }
837
+ }
838
+ .collapsible-menu-left {
839
+ display: inline-flex;
840
+ align-items: center;
841
+ gap: 10px;
842
+ min-width: 0;
843
+ }
844
+ .collapsible-menu-left > * {
845
+ min-width: 0;
846
+ }
847
+ .collapsible-menu-chevron {
848
+ width: 18px;
849
+ height: 18px;
850
+ color: var(--color-grey-scale-500);
851
+ transition: transform 160ms ease;
852
+ }
853
+ .base-collapsible-menu.trigger[data-state='open'] .collapsible-menu-chevron {
854
+ transform: rotate(180deg);
855
+ }
856
+ .collapsible-menu-content {
857
+ display: flex;
858
+ flex-direction: column;
859
+ gap: 2px;
860
+ margin-top: 2px;
861
+ margin-bottom: 4px;
862
+ }
863
+ /***************************************************************************************************
864
+ * *
865
+ * drop-down-single *
866
+ * *
867
+ ***************************************************************************************************/
868
+ .drop-down-single-trigger {
869
+
870
+ border: 1px solid var(--color-grey-scale-300);
871
+ border-radius: 4px;
872
+ width: -moz-fit-content;
873
+ width: fit-content;
874
+ padding: 0 14px;
875
+ background-color: var(--color-white);
876
+
877
+ &:focus {
878
+ border-color: var(--color-purple-900);
879
+ }
880
+
881
+ &[data-placeholder] {
882
+ .drop-down-single-icon {
883
+ color: var(--color-grey-scale-400);
884
+ color: var(--color-black);
885
+ }
886
+
887
+ svg {
888
+ color: var(--color-grey-scale-400);
889
+ color: var(--color-black);
890
+ }
891
+ }
892
+
893
+ &[data-state='open'] {
894
+ .rotate {
895
+ transform: rotate(180deg);
896
+ transform-origin: 50% 50%;
897
+ transition: transform 160ms ease;
898
+ will-change: transform;
899
+ }
900
+ }
901
+ }
902
+ .drop-down-single-value {
903
+ font-size: var(--font-size-sm);
904
+ line-height: var(--line-height-sm);
905
+ font-weight: var(--font-weight-medium);
906
+
907
+ text-align: left;
908
+
909
+ ::-moz-placeholder {
910
+ color: var(--color-grey-scale-400);
911
+ }
912
+
913
+ ::placeholder {
914
+ color: var(--color-grey-scale-400);
915
+ }
916
+ }
917
+ .drop-down-single-content {
918
+ z-index: 5;
919
+ min-width: var(--radix-select-trigger-width);
920
+ overflow: hidden;
921
+ box-shadow:
922
+ 0px 4px 6px -2px rgba(0, 0, 0, 0.06),
923
+ 0px 10px 15px -3px rgba(0, 0, 0, 0.1);
924
+ border-radius: 6px;
925
+ }
926
+ .drop-down-single-item {
927
+ padding: 14px;
928
+ background-color: var(--color-white);
929
+ outline: none;
930
+ height: 46px;
931
+
932
+ font-size: var(--font-size-sm);
933
+ line-height: var(--line-height-sm);
934
+ font-weight: var(--font-weight-medium);
935
+
936
+ cursor: pointer;
937
+
938
+ &[data-highlighted] {
939
+ background-color: var(--color-purple-50);
940
+ outline: none;
941
+ }
942
+ }
943
+ .base-text {
944
+ &:where(.xsm) {
945
+ font-size: var(--font-size-xsm);
946
+ line-height: var(--line-height-xsm);
947
+ }
948
+ &:where(.sm) {
949
+ font-size: var(--font-size-sm);
950
+ line-height: var(--line-height-sm);
951
+ }
952
+ &:where(.base) {
953
+ font-size: var(--font-size-base);
954
+ line-height: var(--line-height-base);
955
+ }
956
+ &:where(.lg) {
957
+ font-size: var(--font-size-lg);
958
+ line-height: var(--line-height-lg);
959
+ }
960
+ &:where(.xl) {
961
+ font-size: var(--font-size-xl);
962
+ line-height: var(--line-height-xl);
963
+ }
964
+ &:where(.t-2xl) {
965
+ font-size: var(--font-size-2xl);
966
+ line-height: var(--line-height-2xl);
967
+ }
968
+ &:where(.t-3xl) {
969
+ font-size: var(--font-size-3xl);
970
+ line-height: var(--line-height-3xl);
971
+ }
972
+ &:where(.t-4xl) {
973
+ font-size: var(--font-size-4xl);
974
+ line-height: var(--line-height-4xl);
975
+ }
976
+ &:where(.t-5xl) {
977
+ font-size: var(--font-size-5xl);
978
+ line-height: var(--line-height-5xl);
979
+ }
980
+ &:where(.t-6xl) {
981
+ font-size: var(--font-size-6xl);
982
+ line-height: var(--line-height-6xl);
983
+ }
984
+
985
+ &:where(.regular) {
986
+ font-weight: var(--font-weight-regular);
987
+ }
988
+ &:where(.medium) {
989
+ font-weight: var(--font-weight-medium);
990
+ }
991
+ &:where(.semibold) {
992
+ font-weight: var(--font-weight-semibold);
993
+ }
994
+ &:where(.bold) {
995
+ font-weight: var(--font-weight-bold);
996
+ }
997
+ &:where(.extrabold) {
998
+ font-weight: var(--font-weight-extrabold);
999
+ }
1000
+
1001
+ &[class*='textAlign-'] {
1002
+ &.textAlign-left {
1003
+ text-align: left;
1004
+ }
1005
+ &.textAlign-center {
1006
+ text-align: center;
1007
+ }
1008
+ }
1009
+
1010
+ &[class*='textDecoration-'] {
1011
+ &.textDecoration-underline {
1012
+ text-decoration: underline;
1013
+ }
1014
+ &.textDecoration-none {
1015
+ text-decoration: none;
1016
+ }
1017
+ &.textDecoration-lineThrough {
1018
+ text-decoration: line-through;
1019
+ }
1020
+ &.textDecoration-overline {
1021
+ text-decoration: overline;
1022
+ }
1023
+ &.textDecoration-blink {
1024
+ text-decoration: blink;
1025
+ }
1026
+ }
1027
+
1028
+ &[class*='wordBreak-'] {
1029
+ &.wordBreak-normal {
1030
+ word-break: normal;
1031
+ }
1032
+ &.wordBreak-breakAll {
1033
+ word-break: break-all;
1034
+ }
1035
+ &.wordBreak-breakWord {
1036
+ word-break: break-word;
1037
+ }
1038
+ &.wordBreak-keepAll {
1039
+ word-break: keep-all;
1040
+ }
1041
+ &.wordBreak-keepWord {
1042
+ word-break: keep-word;
1043
+ }
1044
+ &.wordBreak-breakSpaces {
1045
+ word-break: break-spaces;
1046
+ }
1047
+ &.wordBreak-all {
1048
+ word-break: all;
1049
+ }
1050
+ }
1051
+
1052
+ &[class*='whiteSpace-'] {
1053
+ &.whiteSpace-normal {
1054
+ white-space: normal;
1055
+ }
1056
+ &.whiteSpace-nowrap {
1057
+ white-space: nowrap;
1058
+ }
1059
+ &.whiteSpace-pre {
1060
+ white-space: pre;
1061
+ }
1062
+ &.whiteSpace-preLine {
1063
+ white-space: pre-line;
1064
+ }
1065
+ &.whiteSpace-preWrap {
1066
+ white-space: pre-wrap;
1067
+ }
1068
+ }
1069
+
1070
+ &[class*='color-'] {
1071
+ &.color-black {
1072
+ color: var(--color-black);
1073
+ }
1074
+ &.color-white {
1075
+ color: var(--color-white);
1076
+ }
1077
+ &.color-grey-scale-50 {
1078
+ color: var(--color-grey-scale-50);
1079
+ }
1080
+ &.color-grey-scale-100 {
1081
+ color: var(--color-grey-scale-100);
1082
+ }
1083
+ &.color-grey-scale-200 {
1084
+ color: var(--color-grey-scale-200);
1085
+ }
1086
+ &.color-grey-scale-300 {
1087
+ color: var(--color-grey-scale-300);
1088
+ }
1089
+ &.color-grey-scale-400 {
1090
+ color: var(--color-grey-scale-400);
1091
+ }
1092
+ &.color-grey-scale-500 {
1093
+ color: var(--color-grey-scale-500);
1094
+ }
1095
+ &.color-grey-scale-600 {
1096
+ color: var(--color-grey-scale-600);
1097
+ }
1098
+ &.color-grey-scale-700 {
1099
+ color: var(--color-grey-scale-700);
1100
+ }
1101
+ &.color-grey-scale-800 {
1102
+ color: var(--color-grey-scale-800);
1103
+ }
1104
+ &.color-grey-scale-900 {
1105
+ color: var(--color-grey-scale-900);
1106
+ }
1107
+ &.color-purple-50 {
1108
+ color: var(--color-purple-50);
1109
+ }
1110
+ &.color-purple-100 {
1111
+ color: var(--color-purple-100);
1112
+ }
1113
+ &.color-purple-200 {
1114
+ color: var(--color-purple-200);
1115
+ }
1116
+ &.color-purple-300 {
1117
+ color: var(--color-purple-300);
1118
+ }
1119
+ &.color-purple-400 {
1120
+ color: var(--color-purple-400);
1121
+ }
1122
+ &.color-purple-500 {
1123
+ color: var(--color-purple-500);
1124
+ }
1125
+ &.color-purple-600 {
1126
+ color: var(--color-purple-600);
1127
+ }
1128
+ &.color-purple-700 {
1129
+ color: var(--color-purple-700);
1130
+ }
1131
+ &.color-purple-800 {
1132
+ color: var(--color-purple-800);
1133
+ }
1134
+ &.color-purple-900 {
1135
+ color: var(--color-purple-900);
1136
+ }
1137
+ &.color-accent-red-50 {
1138
+ color: var(--color-accent-red-50);
1139
+ }
1140
+ &.color-accent-red-100 {
1141
+ color: var(--color-accent-red-100);
1142
+ }
1143
+ &.color-accent-red-200 {
1144
+ color: var(--color-accent-red-200);
1145
+ }
1146
+ &.color-accent-red-300 {
1147
+ color: var(--color-accent-red-300);
1148
+ }
1149
+ &.color-accent-red-400 {
1150
+ color: var(--color-accent-red-400);
1151
+ }
1152
+ &.color-accent-red-500 {
1153
+ color: var(--color-accent-red-500);
1154
+ }
1155
+ &.color-accent-red-600 {
1156
+ color: var(--color-accent-red-600);
1157
+ }
1158
+ &.color-accent-red-700 {
1159
+ color: var(--color-accent-red-700);
1160
+ }
1161
+ &.color-accent-red-800 {
1162
+ color: var(--color-accent-red-800);
1163
+ }
1164
+ &.color-accent-red-900 {
1165
+ color: var(--color-accent-red-900);
1166
+ }
1167
+ &.color-accent-pink-50 {
1168
+ color: var(--color-accent-pink-50);
1169
+ }
1170
+ &.color-accent-pink-100 {
1171
+ color: var(--color-accent-pink-100);
1172
+ }
1173
+ &.color-accent-pink-200 {
1174
+ color: var(--color-accent-pink-200);
1175
+ }
1176
+ &.color-accent-pink-300 {
1177
+ color: var(--color-accent-pink-300);
1178
+ }
1179
+ &.color-accent-pink-400 {
1180
+ color: var(--color-accent-pink-400);
1181
+ }
1182
+ &.color-accent-pink-500 {
1183
+ color: var(--color-accent-pink-500);
1184
+ }
1185
+ &.color-accent-pink-600 {
1186
+ color: var(--color-accent-pink-600);
1187
+ }
1188
+ &.color-accent-pink-700 {
1189
+ color: var(--color-accent-pink-700);
1190
+ }
1191
+ &.color-accent-pink-800 {
1192
+ color: var(--color-accent-pink-800);
1193
+ }
1194
+ &.color-accent-pink-900 {
1195
+ color: var(--color-accent-pink-900);
1196
+ }
1197
+ &.color-accent-magenta-50 {
1198
+ color: var(--color-accent-magenta-50);
1199
+ }
1200
+ &.color-accent-magenta-100 {
1201
+ color: var(--color-accent-magenta-100);
1202
+ }
1203
+ &.color-accent-magenta-200 {
1204
+ color: var(--color-accent-magenta-200);
1205
+ }
1206
+ &.color-accent-magenta-300 {
1207
+ color: var(--color-accent-magenta-300);
1208
+ }
1209
+ &.color-accent-magenta-400 {
1210
+ color: var(--color-accent-magenta-400);
1211
+ }
1212
+ &.color-accent-magenta-500 {
1213
+ color: var(--color-accent-magenta-500);
1214
+ }
1215
+ &.color-accent-magenta-600 {
1216
+ color: var(--color-accent-magenta-600);
1217
+ }
1218
+ &.color-accent-magenta-700 {
1219
+ color: var(--color-accent-magenta-700);
1220
+ }
1221
+ &.color-accent-magenta-800 {
1222
+ color: var(--color-accent-magenta-800);
1223
+ }
1224
+ &.color-accent-magenta-900 {
1225
+ color: var(--color-accent-magenta-900);
1226
+ }
1227
+ &.color-accent-blue-50 {
1228
+ color: var(--color-accent-blue-50);
1229
+ }
1230
+ &.color-accent-blue-100 {
1231
+ color: var(--color-accent-blue-100);
1232
+ }
1233
+ &.color-accent-blue-200 {
1234
+ color: var(--color-accent-blue-200);
1235
+ }
1236
+ &.color-accent-blue-300 {
1237
+ color: var(--color-accent-blue-300);
1238
+ }
1239
+ &.color-accent-blue-400 {
1240
+ color: var(--color-accent-blue-400);
1241
+ }
1242
+ &.color-accent-blue-500 {
1243
+ color: var(--color-accent-blue-500);
1244
+ }
1245
+ &.color-accent-blue-600 {
1246
+ color: var(--color-accent-blue-600);
1247
+ }
1248
+ &.color-accent-blue-700 {
1249
+ color: var(--color-accent-blue-700);
1250
+ }
1251
+ &.color-accent-blue-800 {
1252
+ color: var(--color-accent-blue-800);
1253
+ }
1254
+ &.color-accent-blue-900 {
1255
+ color: var(--color-accent-blue-900);
1256
+ }
1257
+ &.color-accent-mint-50 {
1258
+ color: var(--color-accent-mint-50);
1259
+ }
1260
+ &.color-accent-mint-100 {
1261
+ color: var(--color-accent-mint-100);
1262
+ }
1263
+ &.color-accent-mint-200 {
1264
+ color: var(--color-accent-mint-200);
1265
+ }
1266
+ &.color-accent-mint-300 {
1267
+ color: var(--color-accent-mint-300);
1268
+ }
1269
+ &.color-accent-mint-400 {
1270
+ color: var(--color-accent-mint-400);
1271
+ }
1272
+ &.color-accent-mint-500 {
1273
+ color: var(--color-accent-mint-500);
1274
+ }
1275
+ &.color-accent-mint-600 {
1276
+ color: var(--color-accent-mint-600);
1277
+ }
1278
+ &.color-accent-mint-700 {
1279
+ color: var(--color-accent-mint-700);
1280
+ }
1281
+ &.color-accent-mint-800 {
1282
+ color: var(--color-accent-mint-800);
1283
+ }
1284
+ &.color-accent-mint-900 {
1285
+ color: var(--color-accent-mint-900);
1286
+ }
1287
+ &.color-accent-green-50 {
1288
+ color: var(--color-accent-green-50);
1289
+ }
1290
+ &.color-accent-green-100 {
1291
+ color: var(--color-accent-green-100);
1292
+ }
1293
+ &.color-accent-green-200 {
1294
+ color: var(--color-accent-green-200);
1295
+ }
1296
+ &.color-accent-green-300 {
1297
+ color: var(--color-accent-green-300);
1298
+ }
1299
+ &.color-accent-green-400 {
1300
+ color: var(--color-accent-green-400);
1301
+ }
1302
+ &.color-accent-green-500 {
1303
+ color: var(--color-accent-green-500);
1304
+ }
1305
+ &.color-accent-green-600 {
1306
+ color: var(--color-accent-green-600);
1307
+ }
1308
+ &.color-accent-green-700 {
1309
+ color: var(--color-accent-green-700);
1310
+ }
1311
+ &.color-accent-green-800 {
1312
+ color: var(--color-accent-green-800);
1313
+ }
1314
+ &.color-accent-green-900 {
1315
+ color: var(--color-accent-green-900);
1316
+ }
1317
+ &.color-accent-yellow-50 {
1318
+ color: var(--color-accent-yellow-50);
1319
+ }
1320
+ &.color-accent-yellow-100 {
1321
+ color: var(--color-accent-yellow-100);
1322
+ }
1323
+ &.color-accent-yellow-200 {
1324
+ color: var(--color-accent-yellow-200);
1325
+ }
1326
+ &.color-accent-yellow-300 {
1327
+ color: var(--color-accent-yellow-300);
1328
+ }
1329
+ &.color-accent-yellow-400 {
1330
+ color: var(--color-accent-yellow-400);
1331
+ }
1332
+ &.color-accent-yellow-500 {
1333
+ color: var(--color-accent-yellow-500);
1334
+ }
1335
+ &.color-accent-yellow-600 {
1336
+ color: var(--color-accent-yellow-600);
1337
+ }
1338
+ &.color-accent-yellow-700 {
1339
+ color: var(--color-accent-yellow-700);
1340
+ }
1341
+ &.color-accent-yellow-800 {
1342
+ color: var(--color-accent-yellow-800);
1343
+ }
1344
+ &.color-accent-yellow-900 {
1345
+ color: var(--color-accent-yellow-900);
1346
+ }
1347
+ &.color-accent-orange-50 {
1348
+ color: var(--color-accent-orange-50);
1349
+ }
1350
+ &.color-accent-orange-100 {
1351
+ color: var(--color-accent-orange-100);
1352
+ }
1353
+ &.color-accent-orange-200 {
1354
+ color: var(--color-accent-orange-200);
1355
+ }
1356
+ &.color-accent-orange-300 {
1357
+ color: var(--color-accent-orange-300);
1358
+ }
1359
+ &.color-accent-orange-400 {
1360
+ color: var(--color-accent-orange-400);
1361
+ }
1362
+ &.color-accent-orange-500 {
1363
+ color: var(--color-accent-orange-500);
1364
+ }
1365
+ &.color-accent-orange-600 {
1366
+ color: var(--color-accent-orange-600);
1367
+ }
1368
+ &.color-accent-orange-700 {
1369
+ color: var(--color-accent-orange-700);
1370
+ }
1371
+ &.color-accent-orange-800 {
1372
+ color: var(--color-accent-orange-800);
1373
+ }
1374
+ &.color-accent-orange-900 {
1375
+ color: var(--color-accent-orange-900);
1376
+ }
1377
+ }
1378
+ }
1379
+ .component-loading-inline {
1380
+ display: flex;
1381
+ width: 100%;
1382
+ height: 100%;
1383
+ align-items: center;
1384
+ }
1385
+ /* components/loading/overlay-loading/overlay-loading-style.css */
1386
+ .page-loading-container {
1387
+ position: fixed;
1388
+ inset: 0;
1389
+ display: flex;
1390
+ align-items: center;
1391
+ justify-content: center;
1392
+ }
1393
+ .page-loading-backdrop { position: absolute; inset: 0; }
1394
+ .page-loading-content {
1395
+ position: relative;
1396
+ display: flex;
1397
+ flex-direction: column;
1398
+ align-items: center;
1399
+ gap: 16px;
1400
+ }
1401
+ /* 기본 스피너(20px)를 확대 */
1402
+ .page-loading-indicator { transform: scale(3.2); transform-origin: center; }
1403
+ .page-loading-text { position: relative; }
1404
+ .component-loading-container {
1405
+ display: flex;
1406
+ width: 20px;
1407
+ height: 20px;
1408
+ align-items: center;
1409
+ justify-content: center;
1410
+ }
1411
+ .loading-indicator-ring {
1412
+ position: relative;
1413
+ width: 20px;
1414
+ height: 20px;
1415
+ }
1416
+ .loading-indicator-single-ring {
1417
+ box-sizing: border-box;
1418
+ display: block;
1419
+ position: absolute;
1420
+ width: 100%;
1421
+ height: 100%;
1422
+ border: 3px solid;
1423
+ border-radius: 50%;
1424
+ animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
1425
+ /* 기본값은 white, 상위에서 --spinner-border-color 주입 */
1426
+ border-color: var(--spinner-border-color, var(--color-white)) transparent transparent transparent;
1427
+ }
1428
+ /* nth-child 지연은 그대로 CSS or 인라인 중 하나만 사용한다면, 아래는 제거 가능 (지금은 인라인 사용 중) */
1429
+ /*
1430
+ .loading-indicator-single-ring:nth-child(1) { animation-delay: -0.45s; }
1431
+ .loading-indicator-single-ring:nth-child(2) { animation-delay: -0.3s; }
1432
+ .loading-indicator-single-ring:nth-child(3) { animation-delay: -0.15s; }
1433
+ .loading-indicator-single-ring:nth-child(4) { animation-delay: 0s; }
1434
+ */
1435
+ @keyframes lds-ring {
1436
+ 0% { transform: rotate(0deg); }
1437
+ 100% { transform: rotate(360deg); }
1438
+ }
1439
+ .base-modal {
1440
+ display: flex;
1441
+ flex-direction: column;
1442
+ align-items: center;
1443
+
1444
+ padding: 30px;
1445
+ border-radius: 6px;
1446
+
1447
+ &.modal-container {
1448
+ position: fixed;
1449
+ top: 50%;
1450
+ left: 50%;
1451
+ transform: translate(-50%, -50%);
1452
+ z-index: 9999;
1453
+ background-color: var(--color-white);
1454
+ }
1455
+
1456
+ &.modal-overlay {
1457
+ position: fixed;
1458
+ top: 0;
1459
+ left: 0;
1460
+ right: 0;
1461
+ bottom: 0;
1462
+ background-color: rgba(0, 0, 0, 0.5);
1463
+ z-index: 9998;
1464
+ }
1465
+ }
1466
+ /***************************************************************************************************
1467
+ * *
1468
+ * modal-with-double-button *
1469
+ * *
1470
+ ***************************************************************************************************/
1471
+ .modal-with-double-button-close-button {
1472
+ display: flex;
1473
+ justify-content: flex-start;
1474
+ align-items: center;
1475
+ width: 100%;
1476
+ }
1477
+ .modal-with-double-button-title-icon {
1478
+ margin-bottom: 20px;
1479
+ }
1480
+ .modal-with-double-button-title {
1481
+ margin-bottom: 4px;
1482
+ }
1483
+ .modal-with-double-button-content {
1484
+ margin-top: 20px;
1485
+ }
1486
+ .modal-with-double-button-close {
1487
+ display: flex;
1488
+ justify-content: space-between;
1489
+ align-items: center;
1490
+ gap: 16px;
1491
+ width: 100%;
1492
+ margin-top: 30px;
1493
+
1494
+ &.row {
1495
+ display: flex;
1496
+ justify-content: center;
1497
+ align-items: center;
1498
+ gap: 16px;
1499
+
1500
+ > * {
1501
+ flex: 1;
1502
+ width: 100%;
1503
+ }
1504
+ }
1505
+
1506
+ &.column {
1507
+ display: flex;
1508
+ flex-direction: column;
1509
+ justify-content: center;
1510
+ align-items: center;
1511
+ gap: 10px
1512
+ }
1513
+ }
1514
+ .radio {
1515
+ &:where(.radio-group) {
1516
+ display: flex;
1517
+ flex-direction: column;
1518
+ gap: 16px;
1519
+ }
1520
+ &:where(.radio-button) {
1521
+ display: flex;
1522
+ align-items: center;
1523
+ justify-content: center;
1524
+ width: 18px;
1525
+ height: 18px;
1526
+ border-radius: 50%;
1527
+ background-color: var(--color-grey-scale-200);
1528
+ }
1529
+ &:where(.radio-indicator) {
1530
+ width: 8px;
1531
+ height: 8px;
1532
+ border-radius: 50%;
1533
+ background-color: var(--color-purple-900);
1534
+ }
1535
+ &:where(.radio-label) {
1536
+ font-size: var(--font-size-sm);
1537
+ font-weight: var(--font-weight-medium);
1538
+ color: var(--color-black);
1539
+ }
1540
+ }
1541
+ .base-table {
1542
+ width: -moz-fit-content;
1543
+ width: fit-content;
1544
+
1545
+ .header {
1546
+ display: flex;
1547
+ align-items: center;
1548
+ width: 100%;
1549
+ }
1550
+
1551
+ .body {
1552
+ width: 100%;
1553
+ }
1554
+
1555
+ .row {
1556
+ display: flex;
1557
+ align-items: center;
1558
+ width: 100%;
1559
+ }
1560
+
1561
+ .cell {
1562
+ text-align: start;
1563
+ display: flex;
1564
+ flex-direction: column;
1565
+ justify-content: center;
1566
+ }
1567
+ }
1568
+ /***************************************************************************************************
1569
+ * *
1570
+ * data-table *
1571
+ * *
1572
+ ***************************************************************************************************/
1573
+ .data-table {
1574
+ position: relative;
1575
+ width: 100%;
1576
+ }
1577
+ .data-table-header {
1578
+ position: sticky;
1579
+ top: 0;
1580
+ background-color: #fff;
1581
+ z-index: 3;
1582
+ border-bottom: 1px solid #e4e4e7;
1583
+ }
1584
+ .data-table-row {
1585
+ position: relative;
1586
+ border-bottom: 1px solid var(--color-grey-scale-200);
1587
+
1588
+ .fixed {
1589
+ position: sticky;
1590
+ background-color: #fff;
1591
+ z-index: 2;
1592
+
1593
+ & > * {
1594
+ position: relative;
1595
+ z-index: 1;
1596
+ }
1597
+ background-color: #f5f5f5
1598
+ }
1599
+ }
1600
+ .body .data-table-row:hover {
1601
+ background-color: #f5f5f5
1602
+ }
1603
+ .fixed-cell {
1604
+ position: sticky;
1605
+ left: 0;
1606
+ }
1607
+ .base-text-field {
1608
+ &.input {
1609
+ border: none;
1610
+ outline: none;
1611
+ background-color: transparent;
1612
+
1613
+ font-size: var(--font-size-sm);
1614
+ line-height: var(--line-height-sm);
1615
+ font-weight: var(--font-weight-medium);
1616
+
1617
+ &::-moz-placeholder {
1618
+ color: var(--color-grey-scale-400);
1619
+ }
1620
+
1621
+ &::placeholder {
1622
+ color: var(--color-grey-scale-400);
1623
+ }
1624
+
1625
+ &:-webkit-autofill,
1626
+ &:-webkit-autofill:hover,
1627
+ &:-webkit-autofill:focus,
1628
+ &:-webkit-autofill:active {
1629
+ box-shadow: 0 0 0px 1000px transparent inset;
1630
+ -webkit-transition: background-color 5000s ease-in-out 0s;
1631
+ transition: background-color 5000s ease-in-out 0s;
1632
+ }
1633
+ }
1634
+ }
1635
+ /***************************************************************************************************
1636
+ * *
1637
+ * base-text-field *
1638
+ * *
1639
+ ***************************************************************************************************/
1640
+ .text-field-title {
1641
+ margin-bottom: 8px;
1642
+ }
1643
+ .text-field-input-wrapper {
1644
+ display: flex;
1645
+ align-items: center;
1646
+ justify-content: space-between;
1647
+ gap: 10px;
1648
+
1649
+ padding: 0 14px;
1650
+
1651
+ border-radius: 4px;
1652
+ border: 1px solid var(--color-grey-scale-300);
1653
+
1654
+ &:has([data-disabled='true']) {
1655
+ border-color: var(--color-grey-scale-300);
1656
+ background-color: var(--color-grey-scale-100);
1657
+ }
1658
+
1659
+ &:focus-within {
1660
+ border: 1px solid var(--color-purple-900);
1661
+ }
1662
+
1663
+ > input {
1664
+ width: 100%;
1665
+ }
1666
+ }
1667
+ .text-field-helper-text {
1668
+ margin-top: 4px;
1669
+
1670
+ &.error {
1671
+ color: var(--color-accent-red-500);
1672
+ }
1673
+ }
1674
+ .base-tooltip {
1675
+ z-index: 3;
1676
+ &.content {
1677
+ text-align: center;
1678
+ }
1679
+ }
1680
+ /***************************************************************************************************
1681
+ * *
1682
+ * tooltip *
1683
+ * *
1684
+ ***************************************************************************************************/
1685
+ .tooltip-trigger {
1686
+ width: -moz-fit-content;
1687
+ width: fit-content;
1688
+ }
1689
+ .tooltip-content {
1690
+ display: flex;
1691
+ justify-content: space-around;
1692
+ align-items: center;
1693
+ gap: 10px;
1694
+
1695
+ background-color: var(--color-purple-900);
1696
+ color: var(--color-white);
1697
+ border-radius: 6px;
1698
+ padding: 12px;
1699
+
1700
+ font-size: var(--font-size-sm);
1701
+ line-height: var(--line-height-sm);
1702
+ font-weight: var(--font-weight-regular);
1703
+
1704
+ position: relative;
1705
+
1706
+ &::before {
1707
+ content: '';
1708
+ position: absolute;
1709
+ width: 0;
1710
+ height: 0;
1711
+ border-style: solid;
1712
+ bottom: -8px;
1713
+ left: 50%;
1714
+ transform: translateX(-50%);
1715
+ border-width: 8px 8px 0 8px;
1716
+ border-color: var(--color-purple-900) transparent transparent transparent;
1717
+ top: -8px;
1718
+ left: 50%;
1719
+ transform: translateX(-50%);
1720
+ border-width: 0 8px 8px 8px;
1721
+ border-color: transparent transparent var(--color-purple-900) transparent;
1722
+ right: -8px;
1723
+ top: 50%;
1724
+ transform: translateY(-50%);
1725
+ border-width: 8px 0 8px 8px;
1726
+ border-color: transparent transparent transparent var(--color-purple-900);
1727
+ left: -8px;
1728
+ top: 50%;
1729
+ transform: translateY(-50%);
1730
+ border-width: 8px 8px 8px 0;
1731
+ border-color: transparent var(--color-purple-900) transparent transparent;
1732
+ }
1733
+
1734
+ &.direction-top {
1735
+ transform: translateY(-10px)
1736
+ }
1737
+
1738
+ &.direction-bottom {
1739
+ transform: translateY(10px)
1740
+ }
1741
+
1742
+ &.direction-left {
1743
+ transform: translateX(-10px)
1744
+ }
1745
+
1746
+ &.direction-right {
1747
+ transform: translateX(10px)
1748
+ }
1749
+ }