@bigtablet/design-system 1.1.3 → 1.2.2

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/dist/index.css CHANGED
@@ -31,6 +31,161 @@
31
31
  padding: 1.5rem;
32
32
  }
33
33
 
34
+ /* src/ui/feedback/alert/style.scss */
35
+ .alert-overlay {
36
+ position: fixed;
37
+ inset: 0;
38
+ background: rgba(0, 0, 0, 0.5);
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ z-index: 9999;
43
+ animation: fadeIn 0.2s ease;
44
+ }
45
+ @keyframes fadeIn {
46
+ from {
47
+ opacity: 0;
48
+ }
49
+ to {
50
+ opacity: 1;
51
+ }
52
+ }
53
+ @keyframes slideUp {
54
+ from {
55
+ opacity: 0;
56
+ transform: translateY(20px);
57
+ }
58
+ to {
59
+ opacity: 1;
60
+ transform: translateY(0);
61
+ }
62
+ }
63
+ .alert-modal {
64
+ background: white;
65
+ border-radius: 12px;
66
+ padding: 0;
67
+ min-width: 320px;
68
+ max-width: 480px;
69
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
70
+ animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1);
71
+ position: relative;
72
+ overflow: hidden;
73
+ }
74
+ .alert-modal__title {
75
+ font-size: 1.125rem;
76
+ line-height: 1.5;
77
+ font-weight: 600;
78
+ color: #3b82f6;
79
+ margin-top: 8px;
80
+ padding: 0.75rem 1.25rem;
81
+ padding-bottom: 0.25rem;
82
+ }
83
+ .alert-modal__message {
84
+ font-size: 0.9375rem;
85
+ font-weight: 400;
86
+ line-height: 1.5;
87
+ color: #666666;
88
+ margin: 0;
89
+ padding: 1.25rem;
90
+ padding-bottom: 1rem;
91
+ line-height: 1.6;
92
+ }
93
+ .alert-modal__actions {
94
+ display: flex;
95
+ gap: 0.5rem;
96
+ align-items: center;
97
+ padding: 0 1.25rem 1.25rem 1.25rem;
98
+ }
99
+ .alert-modal__actions--left {
100
+ justify-content: flex-start;
101
+ }
102
+ .alert-modal__actions--center {
103
+ justify-content: center;
104
+ }
105
+ .alert-modal__actions--right {
106
+ justify-content: flex-end;
107
+ }
108
+ .alert-modal__button {
109
+ padding: 10px 24px;
110
+ border-radius: 6px;
111
+ font-size: 14px;
112
+ font-weight: 600;
113
+ cursor: pointer;
114
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
115
+ border: 1px solid transparent;
116
+ min-width: 80px;
117
+ line-height: 1.5;
118
+ }
119
+ .alert-modal__button:focus-visible {
120
+ outline: 2px solid rgba(0, 0, 0, 0.3);
121
+ outline-offset: 2px;
122
+ }
123
+ .alert-modal__button--cancel {
124
+ background: white;
125
+ border-color: #e5e5e5;
126
+ color: #1a1a1a;
127
+ }
128
+ .alert-modal__button--cancel:hover {
129
+ background: rgba(0, 0, 0, 0.04);
130
+ border-color: rgba(0, 0, 0, 0.3);
131
+ }
132
+ .alert-modal__button--cancel:active {
133
+ transform: scale(0.98);
134
+ background: rgba(0, 0, 0, 0.06);
135
+ }
136
+ .alert-modal__button--confirm {
137
+ color: white;
138
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
139
+ }
140
+ .alert-modal__button--confirm:active {
141
+ transform: scale(0.98);
142
+ }
143
+ .alert-modal--info .alert-modal__title {
144
+ color: #3b82f6;
145
+ }
146
+ .alert-modal--info .alert-modal__button--confirm {
147
+ background: #3b82f6;
148
+ border-color: #3b82f6;
149
+ }
150
+ .alert-modal--info .alert-modal__button--confirm:hover {
151
+ background: rgb(29.7434146341, 111.3414634146, 244.6565853659);
152
+ border-color: rgb(29.7434146341, 111.3414634146, 244.6565853659);
153
+ }
154
+ .alert-modal--success .alert-modal__title {
155
+ color: #10b981;
156
+ }
157
+ .alert-modal--success .alert-modal__button--confirm {
158
+ background: #10b981;
159
+ border-color: #10b981;
160
+ }
161
+ .alert-modal--success .alert-modal__button--confirm:hover {
162
+ background: rgb(13.5641791045, 156.8358208955, 109.3611940299);
163
+ border-color: rgb(13.5641791045, 156.8358208955, 109.3611940299);
164
+ }
165
+ .alert-modal--warning .alert-modal__title {
166
+ color: #f59e0b;
167
+ }
168
+ .alert-modal--warning .alert-modal__button--confirm {
169
+ background: #f59e0b;
170
+ border-color: #f59e0b;
171
+ }
172
+ .alert-modal--warning .alert-modal__button--confirm:hover {
173
+ background: rgb(216.525984252, 139.3220472441, 8.874015748);
174
+ border-color: rgb(216.525984252, 139.3220472441, 8.874015748);
175
+ }
176
+ .alert-modal--error .alert-modal__title {
177
+ color: #ef4444;
178
+ }
179
+ .alert-modal--error .alert-modal__button--confirm {
180
+ background: #ef4444;
181
+ border-color: #ef4444;
182
+ }
183
+ .alert-modal--error .alert-modal__button--confirm:hover {
184
+ background: rgb(236.5881773399, 39.8118226601, 39.8118226601);
185
+ border-color: rgb(236.5881773399, 39.8118226601, 39.8118226601);
186
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
187
+ }
188
+
34
189
  /* src/ui/feedback/loading/style.scss */
35
190
  @keyframes spin {
36
191
  to {
@@ -44,3 +199,1010 @@
44
199
  border-top-color: #000000;
45
200
  animation: spin 0.8s linear infinite;
46
201
  }
202
+
203
+ /* src/ui/general/button/style.scss */
204
+ .btn {
205
+ display: flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ border: none;
209
+ cursor: pointer;
210
+ transition: 0.2s ease-out;
211
+ font-weight: 500;
212
+ border-radius: 8px;
213
+ }
214
+ .btn:disabled {
215
+ cursor: not-allowed;
216
+ opacity: 0.5;
217
+ }
218
+ .btn--primary {
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ border: none;
223
+ cursor: pointer;
224
+ transition: 0.2s ease-out;
225
+ font-weight: 500;
226
+ border-radius: 8px;
227
+ }
228
+ .btn--primary:disabled {
229
+ cursor: not-allowed;
230
+ opacity: 0.5;
231
+ }
232
+ .btn--primary {
233
+ background: #000000;
234
+ color: #ffffff;
235
+ }
236
+ .btn--primary:hover:not(:disabled) {
237
+ background: #333333;
238
+ }
239
+ .btn--primary:active:not(:disabled) {
240
+ transform: scale(0.98);
241
+ }
242
+ .btn--secondary {
243
+ display: flex;
244
+ align-items: center;
245
+ justify-content: center;
246
+ border: none;
247
+ cursor: pointer;
248
+ transition: 0.2s ease-out;
249
+ font-weight: 500;
250
+ border-radius: 8px;
251
+ }
252
+ .btn--secondary:disabled {
253
+ cursor: not-allowed;
254
+ opacity: 0.5;
255
+ }
256
+ .btn--secondary {
257
+ background: transparent;
258
+ border: 1px solid #e5e5e5;
259
+ color: #1a1a1a;
260
+ }
261
+ .btn--secondary:hover:not(:disabled) {
262
+ background: #fafafa;
263
+ }
264
+ .btn--secondary:active:not(:disabled) {
265
+ transform: scale(0.98);
266
+ }
267
+ .btn--ghost {
268
+ display: flex;
269
+ align-items: center;
270
+ justify-content: center;
271
+ border: none;
272
+ cursor: pointer;
273
+ transition: 0.2s ease-out;
274
+ font-weight: 500;
275
+ border-radius: 8px;
276
+ }
277
+ .btn--ghost:disabled {
278
+ cursor: not-allowed;
279
+ opacity: 0.5;
280
+ }
281
+ .btn--ghost {
282
+ background: transparent;
283
+ color: #1a1a1a;
284
+ }
285
+ .btn--ghost:hover:not(:disabled) {
286
+ background: rgba(0, 0, 0, 0.05);
287
+ }
288
+ .btn--ghost:active:not(:disabled) {
289
+ transform: scale(0.95);
290
+ }
291
+ .btn--sm {
292
+ padding: 0.5rem 1rem;
293
+ font-size: 0.875rem;
294
+ line-height: 1.5;
295
+ }
296
+ .btn--md {
297
+ padding: 0.75rem 1.25rem;
298
+ font-size: 0.9375rem;
299
+ line-height: 1.5;
300
+ }
301
+ .btn--lg {
302
+ padding: 1rem 1.5rem;
303
+ font-size: 1rem;
304
+ line-height: 1.5;
305
+ }
306
+
307
+ /* src/ui/form/checkbox/style.scss */
308
+ .checkbox {
309
+ display: inline-flex;
310
+ align-items: center;
311
+ gap: 0.5rem;
312
+ cursor: pointer;
313
+ user-select: none;
314
+ }
315
+ .checkbox__input {
316
+ position: absolute;
317
+ opacity: 0;
318
+ pointer-events: none;
319
+ }
320
+ .checkbox__box {
321
+ width: 1.125rem;
322
+ height: 1.125rem;
323
+ border: 1px solid #e5e5e5;
324
+ border-radius: 6px;
325
+ background: #ffffff;
326
+ transition:
327
+ background 0.2s ease-out,
328
+ border-color 0.2s ease-out,
329
+ box-shadow 0.2s ease-out;
330
+ }
331
+ .checkbox__label {
332
+ font-size: 0.9375rem;
333
+ line-height: 1.5;
334
+ color: #1a1a1a;
335
+ }
336
+ .checkbox--sm .checkbox__box {
337
+ width: 1rem;
338
+ height: 1rem;
339
+ }
340
+ .checkbox--sm .checkbox__label {
341
+ font-size: 0.875rem;
342
+ line-height: 1.5;
343
+ }
344
+ .checkbox--md .checkbox__box {
345
+ width: 1.125rem;
346
+ height: 1.125rem;
347
+ }
348
+ .checkbox--lg .checkbox__box {
349
+ width: 1.25rem;
350
+ height: 1.25rem;
351
+ }
352
+ .checkbox--lg .checkbox__label {
353
+ font-size: 1rem;
354
+ line-height: 1.5;
355
+ }
356
+ .checkbox:has(.checkbox__input:focus-visible) .checkbox__box {
357
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
358
+ border-color: #000000;
359
+ }
360
+ .checkbox:has(.checkbox__input:checked) .checkbox__box,
361
+ .checkbox:has(.checkbox__input:indeterminate) .checkbox__box {
362
+ background: #000000;
363
+ border-color: #000000;
364
+ }
365
+ .checkbox:has(.checkbox__input:checked) .checkbox__box::after,
366
+ .checkbox:has(.checkbox__input:indeterminate) .checkbox__box::after {
367
+ content: "";
368
+ display: block;
369
+ width: 100%;
370
+ height: 100%;
371
+ background: #ffffff;
372
+ clip-path: polygon(14% 52%, 0 66%, 40% 100%, 100% 24%, 86% 10%, 38% 70%);
373
+ }
374
+ .checkbox:has(.checkbox__input:indeterminate) .checkbox__box::after {
375
+ clip-path: inset(40% 15% 40% 15%);
376
+ }
377
+ .checkbox:has(.checkbox__input:disabled) {
378
+ opacity: 0.6;
379
+ cursor: not-allowed;
380
+ }
381
+
382
+ /* src/ui/form/file/style.scss */
383
+ .file {
384
+ position: relative;
385
+ display: inline-flex;
386
+ align-items: center;
387
+ }
388
+ .file__input {
389
+ position: absolute;
390
+ inset: 0;
391
+ opacity: 0;
392
+ cursor: pointer;
393
+ }
394
+ .file__label {
395
+ border: 1px solid #e5e5e5;
396
+ border-radius: 8px;
397
+ background: #ffffff;
398
+ padding: 0.5rem 1rem;
399
+ color: #1a1a1a;
400
+ transition: background 0.2s ease-out, border-color 0.2s ease-out;
401
+ font-size: 0.9375rem;
402
+ line-height: 1.5;
403
+ }
404
+ .file:hover .file__label {
405
+ border-color: rgba(0, 0, 0, 0.08);
406
+ }
407
+ .file:has(.file__input:focus-visible) .file__label {
408
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
409
+ border-color: #000000;
410
+ }
411
+
412
+ /* src/ui/form/markdown/style.scss */
413
+ .md {
414
+ display: grid;
415
+ gap: 0.5rem;
416
+ }
417
+ .md__label {
418
+ font-size: 0.875rem;
419
+ font-weight: 400;
420
+ line-height: 1.5;
421
+ color: #6B7280;
422
+ }
423
+ .md__grid {
424
+ display: grid;
425
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
426
+ align-items: stretch;
427
+ column-gap: 1.5rem;
428
+ row-gap: 0.75rem;
429
+ }
430
+ @media (max-width: 960px) {
431
+ .md__grid {
432
+ grid-template-columns: 1fr;
433
+ }
434
+ }
435
+ .md__input,
436
+ .md__preview {
437
+ min-width: 0;
438
+ box-sizing: border-box;
439
+ max-width: 100%;
440
+ overflow: auto;
441
+ }
442
+ .md__input {
443
+ width: 100%;
444
+ min-height: 300px;
445
+ border: 1px solid #e5e5e5;
446
+ border-radius: 8px;
447
+ padding: 0.75rem;
448
+ background: #ffffff;
449
+ font-size: 0.9375rem;
450
+ font-weight: 400;
451
+ line-height: 1.5;
452
+ color: #3B3B3B;
453
+ line-height: 1.75;
454
+ resize: vertical;
455
+ transition: border-color 0.2s ease-out, box-shadow 0.2s ease-out;
456
+ }
457
+ .md__input:hover {
458
+ border-color: rgba(0, 0, 0, 0.08);
459
+ }
460
+ .md__input:focus {
461
+ border-color: #000000;
462
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.06);
463
+ outline: none;
464
+ }
465
+ .md__preview {
466
+ min-height: 300px;
467
+ border: 1px solid #e5e5e5;
468
+ border-radius: 8px;
469
+ background: #ffffff;
470
+ padding: 0.75rem;
471
+ }
472
+ .markdown-body {
473
+ font-size: 0.9375rem;
474
+ font-weight: 400;
475
+ line-height: 1.5;
476
+ color: #3B3B3B;
477
+ line-height: 1.7;
478
+ word-break: break-word;
479
+ overflow-wrap: anywhere;
480
+ }
481
+ .markdown-body img,
482
+ .markdown-body video {
483
+ max-width: 100%;
484
+ height: auto;
485
+ display: block;
486
+ }
487
+ .markdown-body h1,
488
+ .markdown-body h2,
489
+ .markdown-body h3,
490
+ .markdown-body h4,
491
+ .markdown-body h5,
492
+ .markdown-body h6 {
493
+ font-size: 1.25rem;
494
+ font-weight: 600;
495
+ line-height: 1.3;
496
+ color: #1F2937;
497
+ margin: 1rem 0 0.5rem;
498
+ }
499
+ .markdown-body p {
500
+ margin: 0.5rem 0;
501
+ }
502
+ .markdown-body a {
503
+ color: #000000;
504
+ text-decoration: underline;
505
+ }
506
+ .markdown-body ul,
507
+ .markdown-body ol {
508
+ margin: 0.5rem 0 0.5rem 1rem;
509
+ }
510
+ .markdown-body blockquote {
511
+ border-left: 4px solid #e5e5e5;
512
+ padding-left: 0.75rem;
513
+ color: #6B7280;
514
+ margin: 0.5rem 0;
515
+ }
516
+ .markdown-body table {
517
+ width: 100%;
518
+ border-collapse: collapse;
519
+ margin: 0.75rem 0;
520
+ }
521
+ .markdown-body table th,
522
+ .markdown-body table td {
523
+ border: 1px solid #e5e5e5;
524
+ padding: 0.5rem 0.75rem;
525
+ text-align: left;
526
+ }
527
+ .markdown-body table th {
528
+ background: #fafafa;
529
+ }
530
+ .markdown-body code {
531
+ background: #fafafa;
532
+ padding: 2px 6px;
533
+ border-radius: 6px;
534
+ font-family:
535
+ ui-monospace,
536
+ SFMono-Regular,
537
+ Menlo,
538
+ monospace;
539
+ }
540
+ .markdown-body pre {
541
+ background: #fafafa;
542
+ padding: 0.75rem;
543
+ border-radius: 8px;
544
+ overflow: auto;
545
+ }
546
+ .markdown-body pre code {
547
+ background: transparent;
548
+ padding: 0;
549
+ }
550
+
551
+ /* src/ui/form/radio/style.scss */
552
+ .radio {
553
+ display: inline-flex;
554
+ align-items: center;
555
+ gap: 0.5rem;
556
+ cursor: pointer;
557
+ }
558
+ .radio__input {
559
+ position: absolute;
560
+ opacity: 0;
561
+ pointer-events: none;
562
+ }
563
+ .radio__dot {
564
+ width: 1.125rem;
565
+ height: 1.125rem;
566
+ border: 1px solid #e5e5e5;
567
+ border-radius: 9999px;
568
+ background: #ffffff;
569
+ transition:
570
+ background 0.2s ease-out,
571
+ border-color 0.2s ease-out,
572
+ box-shadow 0.2s ease-out;
573
+ }
574
+ .radio__label {
575
+ font-size: 0.9375rem;
576
+ line-height: 1.5;
577
+ color: #1a1a1a;
578
+ }
579
+ .radio--sm .radio__dot {
580
+ width: 1rem;
581
+ height: 1rem;
582
+ }
583
+ .radio--sm .radio__label {
584
+ font-size: 0.875rem;
585
+ line-height: 1.5;
586
+ }
587
+ .radio--lg .radio__dot {
588
+ width: 1.25rem;
589
+ height: 1.25rem;
590
+ }
591
+ .radio--lg .radio__label {
592
+ font-size: 1rem;
593
+ line-height: 1.5;
594
+ }
595
+ .radio:has(.radio__input:focus-visible) .radio__dot {
596
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
597
+ border-color: #000000;
598
+ }
599
+ .radio:has(.radio__input:checked) .radio__dot {
600
+ border-color: #000000;
601
+ }
602
+ .radio:has(.radio__input:checked) .radio__dot::after {
603
+ content: "";
604
+ display: block;
605
+ width: 60%;
606
+ height: 60%;
607
+ margin: 20%;
608
+ background: #000000;
609
+ border-radius: 9999px;
610
+ }
611
+ .radio:has(.radio__input:disabled) {
612
+ opacity: 0.6;
613
+ cursor: not-allowed;
614
+ }
615
+
616
+ /* src/ui/general/select/style.scss */
617
+ .select {
618
+ position: relative;
619
+ display: inline-flex;
620
+ flex-direction: column;
621
+ width: 100%;
622
+ gap: 0.25rem;
623
+ font-family: "Pretendard", sans-serif;
624
+ }
625
+ .select__label {
626
+ font-size: 0.875rem;
627
+ line-height: 1.5;
628
+ font-weight: 500;
629
+ color: #1a1a1a;
630
+ }
631
+ .select__control--outline {
632
+ width: 100%;
633
+ display: inline-flex;
634
+ align-items: center;
635
+ justify-content: space-between;
636
+ gap: 0.5rem;
637
+ cursor: pointer;
638
+ color: #1a1a1a;
639
+ background: #ffffff;
640
+ border-radius: 8px;
641
+ transition:
642
+ border-color 0.2s ease-out,
643
+ box-shadow 0.2s ease-out,
644
+ background 0.2s ease-out;
645
+ font-size: 0.9375rem;
646
+ line-height: 1.5;
647
+ }
648
+ .select__control--outline:disabled,
649
+ .select__control--outline.is-disabled {
650
+ cursor: not-allowed;
651
+ opacity: 0.7;
652
+ background: #fafafa;
653
+ color: #999999;
654
+ }
655
+ .select__control--outline {
656
+ border: 1px solid #e5e5e5;
657
+ }
658
+ .select__control--outline:hover:not(.is-disabled) {
659
+ border-color: rgba(0, 0, 0, 0.08);
660
+ }
661
+ .select__control--outline.is-open {
662
+ border-color: #000000;
663
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
664
+ }
665
+ .select__control--filled {
666
+ width: 100%;
667
+ display: inline-flex;
668
+ align-items: center;
669
+ justify-content: space-between;
670
+ gap: 0.5rem;
671
+ cursor: pointer;
672
+ color: #1a1a1a;
673
+ background: #ffffff;
674
+ border-radius: 8px;
675
+ transition:
676
+ border-color 0.2s ease-out,
677
+ box-shadow 0.2s ease-out,
678
+ background 0.2s ease-out;
679
+ font-size: 0.9375rem;
680
+ line-height: 1.5;
681
+ }
682
+ .select__control--filled:disabled,
683
+ .select__control--filled.is-disabled {
684
+ cursor: not-allowed;
685
+ opacity: 0.7;
686
+ background: #fafafa;
687
+ color: #999999;
688
+ }
689
+ .select__control--filled {
690
+ background: #fafafa;
691
+ border: 1px solid transparent;
692
+ }
693
+ .select__control--filled:hover:not(.is-disabled) {
694
+ background: rgb(253.5, 253.5, 253.5);
695
+ }
696
+ .select__control--filled.is-open {
697
+ background: #ffffff;
698
+ border-color: #000000;
699
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
700
+ }
701
+ .select__control--ghost {
702
+ width: 100%;
703
+ display: inline-flex;
704
+ align-items: center;
705
+ justify-content: space-between;
706
+ gap: 0.5rem;
707
+ cursor: pointer;
708
+ color: #1a1a1a;
709
+ background: #ffffff;
710
+ border-radius: 8px;
711
+ transition:
712
+ border-color 0.2s ease-out,
713
+ box-shadow 0.2s ease-out,
714
+ background 0.2s ease-out;
715
+ font-size: 0.9375rem;
716
+ line-height: 1.5;
717
+ }
718
+ .select__control--ghost:disabled,
719
+ .select__control--ghost.is-disabled {
720
+ cursor: not-allowed;
721
+ opacity: 0.7;
722
+ background: #fafafa;
723
+ color: #999999;
724
+ }
725
+ .select__control--ghost {
726
+ background: transparent;
727
+ border: 1px solid transparent;
728
+ }
729
+ .select__control--ghost:hover:not(.is-disabled) {
730
+ background: rgba(0, 0, 0, 0.03);
731
+ }
732
+ .select__control--ghost.is-open {
733
+ background: #ffffff;
734
+ border-color: #000000;
735
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
736
+ }
737
+ .select__control--sm {
738
+ padding: 0.5rem 1rem;
739
+ font-size: 0.875rem;
740
+ line-height: 1.5;
741
+ }
742
+ .select__control--md {
743
+ padding: 0.75rem 1.25rem;
744
+ font-size: 0.9375rem;
745
+ line-height: 1.5;
746
+ }
747
+ .select__control--lg {
748
+ padding: 1rem 1.5rem;
749
+ font-size: 1rem;
750
+ line-height: 1.5;
751
+ }
752
+ .select__control .select__value {
753
+ flex: 1 1 auto;
754
+ min-width: 0;
755
+ overflow: hidden;
756
+ text-overflow: ellipsis;
757
+ white-space: nowrap;
758
+ font-size: 0.9375rem;
759
+ font-weight: 400;
760
+ line-height: 1.5;
761
+ }
762
+ .select__control .select__placeholder {
763
+ flex: 1 1 auto;
764
+ min-width: 0;
765
+ overflow: hidden;
766
+ text-overflow: ellipsis;
767
+ white-space: nowrap;
768
+ font-size: 0.9375rem;
769
+ font-weight: 400;
770
+ line-height: 1.5;
771
+ color: #999999;
772
+ }
773
+ .select__control .select__icon {
774
+ display: inline-flex;
775
+ align-items: center;
776
+ justify-content: center;
777
+ color: #666666;
778
+ }
779
+ .select__list {
780
+ position: absolute;
781
+ z-index: 10000;
782
+ top: calc(100% + 0.25rem);
783
+ left: 0;
784
+ width: 100%;
785
+ min-width: 100%;
786
+ box-sizing: border-box;
787
+ background: #ffffff;
788
+ border: 1px solid #e5e5e5;
789
+ border-radius: 8px;
790
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
791
+ max-height: 18rem;
792
+ overflow-y: auto;
793
+ overflow-x: hidden;
794
+ padding: 0.25rem 0;
795
+ }
796
+ .select__option {
797
+ width: 100%;
798
+ box-sizing: border-box;
799
+ display: grid;
800
+ grid-template-columns: 1fr auto;
801
+ align-items: center;
802
+ gap: 0.5rem;
803
+ padding: 0.5rem 1rem;
804
+ cursor: pointer;
805
+ color: #1a1a1a;
806
+ background: transparent;
807
+ font-size: 0.9375rem;
808
+ font-weight: 400;
809
+ line-height: 1.5;
810
+ }
811
+ .select__option > span:first-child {
812
+ min-width: 0;
813
+ overflow: hidden;
814
+ text-overflow: ellipsis;
815
+ white-space: nowrap;
816
+ }
817
+ .select__option:hover,
818
+ .select__option.is-active {
819
+ background: #fafafa;
820
+ }
821
+ .select__option.is-selected {
822
+ font-weight: 500;
823
+ }
824
+ .select__option.is-disabled {
825
+ cursor: not-allowed;
826
+ color: #999999;
827
+ }
828
+
829
+ /* src/ui/form/switch/style.scss */
830
+ .switch {
831
+ position: relative;
832
+ display: inline-flex;
833
+ align-items: center;
834
+ border-radius: 9999px;
835
+ background: #e5e5e5;
836
+ transition: background 0.2s ease-out;
837
+ cursor: pointer;
838
+ width: 40px;
839
+ height: 22px;
840
+ padding: 2px;
841
+ }
842
+ .switch__thumb {
843
+ width: 18px;
844
+ height: 18px;
845
+ background: #ffffff;
846
+ border-radius: 9999px;
847
+ transition: transform 0.2s ease-out;
848
+ transform: translateX(0);
849
+ }
850
+ .switch.is-on {
851
+ background: #000000;
852
+ }
853
+ .switch.is-on .switch__thumb {
854
+ transform: translateX(18px);
855
+ }
856
+ .switch--sm {
857
+ width: 34px;
858
+ height: 18px;
859
+ }
860
+ .switch--sm .switch__thumb {
861
+ width: 14px;
862
+ height: 14px;
863
+ }
864
+ .switch--sm.is-on .switch__thumb {
865
+ transform: translateX(16px);
866
+ }
867
+ .switch--lg {
868
+ width: 48px;
869
+ height: 26px;
870
+ }
871
+ .switch--lg .switch__thumb {
872
+ width: 22px;
873
+ height: 22px;
874
+ }
875
+ .switch--lg.is-on .switch__thumb {
876
+ transform: translateX(22px);
877
+ }
878
+ .switch.is-disabled {
879
+ opacity: 0.6;
880
+ cursor: not-allowed;
881
+ }
882
+
883
+ /* src/ui/form/textfield/style.scss */
884
+ .tf {
885
+ display: flex;
886
+ flex-direction: column;
887
+ }
888
+ .tf__label {
889
+ margin-bottom: 0.25rem;
890
+ color: #1a1a1a;
891
+ font-size: 0.875rem;
892
+ line-height: 1.5;
893
+ font-weight: 500;
894
+ }
895
+ .tf__wrapper {
896
+ position: relative;
897
+ display: inline-flex;
898
+ width: 100%;
899
+ align-items: center;
900
+ gap: 0.75rem;
901
+ }
902
+ .tf__input--outline {
903
+ width: 100%;
904
+ border-radius: 8px;
905
+ transition:
906
+ border-color 0.2s ease-out,
907
+ box-shadow 0.2s ease-out,
908
+ background 0.2s ease-out;
909
+ font-size: 0.9375rem;
910
+ line-height: 1.5;
911
+ color: #1a1a1a;
912
+ background: #ffffff;
913
+ }
914
+ .tf__input--outline::placeholder {
915
+ color: #999999;
916
+ }
917
+ .tf__input--outline:disabled {
918
+ cursor: not-allowed;
919
+ background: #fafafa;
920
+ color: #999999;
921
+ opacity: 0.7;
922
+ }
923
+ .tf__input--outline {
924
+ border: 1px solid #e5e5e5;
925
+ }
926
+ .tf__input--outline:hover:not(:disabled) {
927
+ border-color: rgba(0, 0, 0, 0.08);
928
+ }
929
+ .tf__input--outline:focus-visible {
930
+ outline: none;
931
+ border-color: #000000;
932
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
933
+ }
934
+ .tf__input--filled {
935
+ width: 100%;
936
+ border-radius: 8px;
937
+ transition:
938
+ border-color 0.2s ease-out,
939
+ box-shadow 0.2s ease-out,
940
+ background 0.2s ease-out;
941
+ font-size: 0.9375rem;
942
+ line-height: 1.5;
943
+ color: #1a1a1a;
944
+ background: #ffffff;
945
+ }
946
+ .tf__input--filled::placeholder {
947
+ color: #999999;
948
+ }
949
+ .tf__input--filled:disabled {
950
+ cursor: not-allowed;
951
+ background: #fafafa;
952
+ color: #999999;
953
+ opacity: 0.7;
954
+ }
955
+ .tf__input--filled {
956
+ background: #fafafa;
957
+ border: 1px solid transparent;
958
+ }
959
+ .tf__input--filled:hover:not(:disabled) {
960
+ background: rgb(253.5, 253.5, 253.5);
961
+ }
962
+ .tf__input--filled:focus-visible {
963
+ outline: none;
964
+ border-color: #000000;
965
+ background: #ffffff;
966
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
967
+ }
968
+ .tf__input--ghost {
969
+ width: 100%;
970
+ border-radius: 8px;
971
+ transition:
972
+ border-color 0.2s ease-out,
973
+ box-shadow 0.2s ease-out,
974
+ background 0.2s ease-out;
975
+ font-size: 0.9375rem;
976
+ line-height: 1.5;
977
+ color: #1a1a1a;
978
+ background: #ffffff;
979
+ }
980
+ .tf__input--ghost::placeholder {
981
+ color: #999999;
982
+ }
983
+ .tf__input--ghost:disabled {
984
+ cursor: not-allowed;
985
+ background: #fafafa;
986
+ color: #999999;
987
+ opacity: 0.7;
988
+ }
989
+ .tf__input--ghost {
990
+ background: transparent;
991
+ border: 1px solid transparent;
992
+ }
993
+ .tf__input--ghost:hover:not(:disabled) {
994
+ background: rgba(0, 0, 0, 0.03);
995
+ }
996
+ .tf__input--ghost:focus-visible {
997
+ outline: none;
998
+ border-color: #000000;
999
+ background: #ffffff;
1000
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
1001
+ }
1002
+ .tf__input--sm {
1003
+ padding: 0.5rem 1rem;
1004
+ font-size: 0.875rem;
1005
+ line-height: 1.5;
1006
+ }
1007
+ .tf__input--md {
1008
+ padding: 0.75rem 1.25rem;
1009
+ font-size: 0.9375rem;
1010
+ line-height: 1.5;
1011
+ }
1012
+ .tf__input--lg {
1013
+ padding: 1rem 1.5rem;
1014
+ font-size: 1rem;
1015
+ line-height: 1.5;
1016
+ }
1017
+ .tf__input--with-left {
1018
+ padding-left: calc(1.25rem + 1.25rem);
1019
+ }
1020
+ .tf__input--with-right {
1021
+ padding-right: calc(1.25rem + 1.25rem);
1022
+ }
1023
+ .tf__input--error {
1024
+ border-color: #ef4444 !important;
1025
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;
1026
+ }
1027
+ .tf__input--success {
1028
+ border-color: #10b981 !important;
1029
+ box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15) !important;
1030
+ }
1031
+ .tf__icon {
1032
+ position: absolute;
1033
+ display: inline-flex;
1034
+ align-items: center;
1035
+ justify-content: center;
1036
+ width: 1.25rem;
1037
+ height: 1.25rem;
1038
+ color: #666666;
1039
+ }
1040
+ .tf__icon--left {
1041
+ left: 0.75rem;
1042
+ }
1043
+ .tf__icon--right {
1044
+ right: 0.75rem;
1045
+ }
1046
+ .tf__helper {
1047
+ margin-top: 0.25rem;
1048
+ font-size: 0.875rem;
1049
+ line-height: 1.5;
1050
+ color: #666666;
1051
+ }
1052
+ .tf__helper--error {
1053
+ color: #ef4444;
1054
+ }
1055
+
1056
+ /* src/ui/navigation/pagination/style.scss */
1057
+ .pagination {
1058
+ display: inline-flex;
1059
+ align-items: center;
1060
+ gap: 0.5rem;
1061
+ }
1062
+ .pagination__item {
1063
+ border: 1px solid #e5e5e5;
1064
+ background: #ffffff;
1065
+ color: #1a1a1a;
1066
+ border-radius: 6px;
1067
+ padding: 0.25rem 0.5rem;
1068
+ cursor: pointer;
1069
+ font-size: 0.875rem;
1070
+ line-height: 1.5;
1071
+ }
1072
+ .pagination__item.is-active {
1073
+ background: #000000;
1074
+ color: #ffffff;
1075
+ border-color: #000000;
1076
+ }
1077
+ .pagination__item:disabled {
1078
+ opacity: 0.5;
1079
+ cursor: not-allowed;
1080
+ }
1081
+ .pagination__item:focus-visible {
1082
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
1083
+ border-color: #000000;
1084
+ }
1085
+ .pagination__ellipsis {
1086
+ padding: 0 0.25rem;
1087
+ color: #999999;
1088
+ }
1089
+
1090
+ /* src/ui/overlay/modal/style.scss */
1091
+ .modal {
1092
+ position: fixed;
1093
+ inset: 0;
1094
+ background: rgba(0, 0, 0, 0.5);
1095
+ display: grid;
1096
+ place-items: center;
1097
+ z-index: 10000;
1098
+ }
1099
+ .modal__panel {
1100
+ background: #ffffff;
1101
+ border-radius: 12px;
1102
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
1103
+ max-width: calc(100% - 32px);
1104
+ }
1105
+ .modal__header {
1106
+ padding: 1rem;
1107
+ font-size: 1.25rem;
1108
+ font-weight: 600;
1109
+ line-height: 1.3;
1110
+ color: #1a1a1a;
1111
+ border-bottom: 1px solid #e5e5e5;
1112
+ }
1113
+ .modal__body {
1114
+ padding: 1rem;
1115
+ }
1116
+
1117
+ /* src/ui/skeleton/card/style.scss */
1118
+ .card-skeleton {
1119
+ display: flex;
1120
+ flex-direction: column;
1121
+ border: 1px solid var(--line-normal);
1122
+ border-radius: 12px;
1123
+ overflow: hidden;
1124
+ background: var(--background-light);
1125
+ animation: card-skeleton-pulse 1.5s ease-in-out infinite;
1126
+ }
1127
+ .card-skeleton__thumb {
1128
+ width: 100%;
1129
+ aspect-ratio: 4/3;
1130
+ background: var(--background-input);
1131
+ }
1132
+ .card-skeleton__text {
1133
+ padding: 12px;
1134
+ display: flex;
1135
+ flex-direction: column;
1136
+ gap: 8px;
1137
+ }
1138
+ .card-skeleton__line {
1139
+ height: 12px;
1140
+ background: var(--background-input);
1141
+ border-radius: 4px;
1142
+ }
1143
+ .card-skeleton__line.short {
1144
+ width: 60%;
1145
+ }
1146
+ @keyframes card-skeleton-pulse {
1147
+ 0%, 100% {
1148
+ opacity: 1;
1149
+ }
1150
+ 50% {
1151
+ opacity: 0.5;
1152
+ }
1153
+ }
1154
+
1155
+ /* src/ui/skeleton/list/style.scss */
1156
+ .request-item.skeleton {
1157
+ pointer-events: none;
1158
+ }
1159
+ .skeleton__title {
1160
+ width: 220px;
1161
+ height: 18px;
1162
+ border-radius: 6px;
1163
+ background:
1164
+ linear-gradient(
1165
+ 90deg,
1166
+ var(--background-normal) 25%,
1167
+ var(--line-normal) 37%,
1168
+ var(--background-normal) 63%);
1169
+ background-size: 400% 100%;
1170
+ animation: skeleton-shimmer 1.2s ease-in-out infinite;
1171
+ margin-bottom: 8px;
1172
+ }
1173
+ .skeleton__tag {
1174
+ display: inline-block;
1175
+ width: 64px;
1176
+ height: 22px;
1177
+ border-radius: 6px;
1178
+ background:
1179
+ linear-gradient(
1180
+ 90deg,
1181
+ var(--background-normal) 25%,
1182
+ var(--line-normal) 37%,
1183
+ var(--background-normal) 63%);
1184
+ background-size: 400% 100%;
1185
+ animation: skeleton-shimmer 1.2s ease-in-out infinite;
1186
+ }
1187
+ .skeleton__dday {
1188
+ display: inline-block;
1189
+ width: 48px;
1190
+ height: 16px;
1191
+ border-radius: 6px;
1192
+ background:
1193
+ linear-gradient(
1194
+ 90deg,
1195
+ var(--background-normal) 25%,
1196
+ var(--line-normal) 37%,
1197
+ var(--background-normal) 63%);
1198
+ background-size: 400% 100%;
1199
+ animation: skeleton-shimmer 1.2s ease-in-out infinite;
1200
+ }
1201
+ @keyframes skeleton-shimmer {
1202
+ 0% {
1203
+ background-position: 100% 0;
1204
+ }
1205
+ 100% {
1206
+ background-position: 0 0;
1207
+ }
1208
+ }