@bigtablet/design-system 1.1.2 → 1.1.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.
@@ -0,0 +1,943 @@
1
+ /* src/ui/general/button/style.scss */
2
+ .btn {
3
+ display: flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ border: none;
7
+ cursor: pointer;
8
+ transition: 0.2s ease-out;
9
+ font-weight: 500;
10
+ border-radius: 8px;
11
+ }
12
+ .btn:disabled {
13
+ cursor: not-allowed;
14
+ opacity: 0.5;
15
+ }
16
+ .btn--primary {
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ border: none;
21
+ cursor: pointer;
22
+ transition: 0.2s ease-out;
23
+ font-weight: 500;
24
+ border-radius: 8px;
25
+ }
26
+ .btn--primary:disabled {
27
+ cursor: not-allowed;
28
+ opacity: 0.5;
29
+ }
30
+ .btn--primary {
31
+ background: #000000;
32
+ color: #ffffff;
33
+ }
34
+ .btn--primary:hover:not(:disabled) {
35
+ background: #333333;
36
+ }
37
+ .btn--primary:active:not(:disabled) {
38
+ transform: scale(0.98);
39
+ }
40
+ .btn--secondary {
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ border: none;
45
+ cursor: pointer;
46
+ transition: 0.2s ease-out;
47
+ font-weight: 500;
48
+ border-radius: 8px;
49
+ }
50
+ .btn--secondary:disabled {
51
+ cursor: not-allowed;
52
+ opacity: 0.5;
53
+ }
54
+ .btn--secondary {
55
+ background: transparent;
56
+ border: 1px solid #e5e5e5;
57
+ color: #1a1a1a;
58
+ }
59
+ .btn--secondary:hover:not(:disabled) {
60
+ background: #fafafa;
61
+ }
62
+ .btn--secondary:active:not(:disabled) {
63
+ transform: scale(0.98);
64
+ }
65
+ .btn--ghost {
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ border: none;
70
+ cursor: pointer;
71
+ transition: 0.2s ease-out;
72
+ font-weight: 500;
73
+ border-radius: 8px;
74
+ }
75
+ .btn--ghost:disabled {
76
+ cursor: not-allowed;
77
+ opacity: 0.5;
78
+ }
79
+ .btn--ghost {
80
+ background: transparent;
81
+ color: #1a1a1a;
82
+ }
83
+ .btn--ghost:hover:not(:disabled) {
84
+ background: rgba(0, 0, 0, 0.05);
85
+ }
86
+ .btn--ghost:active:not(:disabled) {
87
+ transform: scale(0.95);
88
+ }
89
+ .btn--sm {
90
+ padding: 0.5rem 1rem;
91
+ font-size: 0.875rem;
92
+ line-height: 1.5;
93
+ }
94
+ .btn--md {
95
+ padding: 0.75rem 1.25rem;
96
+ font-size: 0.9375rem;
97
+ line-height: 1.5;
98
+ }
99
+ .btn--lg {
100
+ padding: 1rem 1.5rem;
101
+ font-size: 1rem;
102
+ line-height: 1.5;
103
+ }
104
+
105
+ /* src/ui/general/select/style.scss */
106
+ .select {
107
+ position: relative;
108
+ display: inline-flex;
109
+ flex-direction: column;
110
+ width: 100%;
111
+ gap: 0.25rem;
112
+ font-family: "Pretendard", sans-serif;
113
+ }
114
+ .select__label {
115
+ font-size: 0.875rem;
116
+ line-height: 1.5;
117
+ font-weight: 500;
118
+ color: #1a1a1a;
119
+ }
120
+ .select__control--outline {
121
+ width: 100%;
122
+ display: inline-flex;
123
+ align-items: center;
124
+ justify-content: space-between;
125
+ gap: 0.5rem;
126
+ cursor: pointer;
127
+ color: #1a1a1a;
128
+ background: #ffffff;
129
+ border-radius: 8px;
130
+ transition:
131
+ border-color 0.2s ease-out,
132
+ box-shadow 0.2s ease-out,
133
+ background 0.2s ease-out;
134
+ font-size: 0.9375rem;
135
+ line-height: 1.5;
136
+ }
137
+ .select__control--outline:disabled,
138
+ .select__control--outline.is-disabled {
139
+ cursor: not-allowed;
140
+ opacity: 0.7;
141
+ background: #fafafa;
142
+ color: #999999;
143
+ }
144
+ .select__control--outline {
145
+ border: 1px solid #e5e5e5;
146
+ }
147
+ .select__control--outline:hover:not(.is-disabled) {
148
+ border-color: rgba(0, 0, 0, 0.08);
149
+ }
150
+ .select__control--outline.is-open {
151
+ border-color: #000000;
152
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
153
+ }
154
+ .select__control--filled {
155
+ width: 100%;
156
+ display: inline-flex;
157
+ align-items: center;
158
+ justify-content: space-between;
159
+ gap: 0.5rem;
160
+ cursor: pointer;
161
+ color: #1a1a1a;
162
+ background: #ffffff;
163
+ border-radius: 8px;
164
+ transition:
165
+ border-color 0.2s ease-out,
166
+ box-shadow 0.2s ease-out,
167
+ background 0.2s ease-out;
168
+ font-size: 0.9375rem;
169
+ line-height: 1.5;
170
+ }
171
+ .select__control--filled:disabled,
172
+ .select__control--filled.is-disabled {
173
+ cursor: not-allowed;
174
+ opacity: 0.7;
175
+ background: #fafafa;
176
+ color: #999999;
177
+ }
178
+ .select__control--filled {
179
+ background: #fafafa;
180
+ border: 1px solid transparent;
181
+ }
182
+ .select__control--filled:hover:not(.is-disabled) {
183
+ background: rgb(253.5, 253.5, 253.5);
184
+ }
185
+ .select__control--filled.is-open {
186
+ background: #ffffff;
187
+ border-color: #000000;
188
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
189
+ }
190
+ .select__control--ghost {
191
+ width: 100%;
192
+ display: inline-flex;
193
+ align-items: center;
194
+ justify-content: space-between;
195
+ gap: 0.5rem;
196
+ cursor: pointer;
197
+ color: #1a1a1a;
198
+ background: #ffffff;
199
+ border-radius: 8px;
200
+ transition:
201
+ border-color 0.2s ease-out,
202
+ box-shadow 0.2s ease-out,
203
+ background 0.2s ease-out;
204
+ font-size: 0.9375rem;
205
+ line-height: 1.5;
206
+ }
207
+ .select__control--ghost:disabled,
208
+ .select__control--ghost.is-disabled {
209
+ cursor: not-allowed;
210
+ opacity: 0.7;
211
+ background: #fafafa;
212
+ color: #999999;
213
+ }
214
+ .select__control--ghost {
215
+ background: transparent;
216
+ border: 1px solid transparent;
217
+ }
218
+ .select__control--ghost:hover:not(.is-disabled) {
219
+ background: rgba(0, 0, 0, 0.03);
220
+ }
221
+ .select__control--ghost.is-open {
222
+ background: #ffffff;
223
+ border-color: #000000;
224
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
225
+ }
226
+ .select__control--sm {
227
+ padding: 0.5rem 1rem;
228
+ font-size: 0.875rem;
229
+ line-height: 1.5;
230
+ }
231
+ .select__control--md {
232
+ padding: 0.75rem 1.25rem;
233
+ font-size: 0.9375rem;
234
+ line-height: 1.5;
235
+ }
236
+ .select__control--lg {
237
+ padding: 1rem 1.5rem;
238
+ font-size: 1rem;
239
+ line-height: 1.5;
240
+ }
241
+ .select__control .select__value {
242
+ flex: 1 1 auto;
243
+ min-width: 0;
244
+ overflow: hidden;
245
+ text-overflow: ellipsis;
246
+ white-space: nowrap;
247
+ font-size: 0.9375rem;
248
+ font-weight: 400;
249
+ line-height: 1.5;
250
+ }
251
+ .select__control .select__placeholder {
252
+ flex: 1 1 auto;
253
+ min-width: 0;
254
+ overflow: hidden;
255
+ text-overflow: ellipsis;
256
+ white-space: nowrap;
257
+ font-size: 0.9375rem;
258
+ font-weight: 400;
259
+ line-height: 1.5;
260
+ color: #999999;
261
+ }
262
+ .select__control .select__icon {
263
+ display: inline-flex;
264
+ align-items: center;
265
+ justify-content: center;
266
+ color: #666666;
267
+ }
268
+ .select__list {
269
+ position: absolute;
270
+ z-index: 10000;
271
+ top: calc(100% + 0.25rem);
272
+ left: 0;
273
+ width: 100%;
274
+ min-width: 100%;
275
+ box-sizing: border-box;
276
+ background: #ffffff;
277
+ border: 1px solid #e5e5e5;
278
+ border-radius: 8px;
279
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
280
+ max-height: 18rem;
281
+ overflow-y: auto;
282
+ overflow-x: hidden;
283
+ padding: 0.25rem 0;
284
+ }
285
+ .select__option {
286
+ width: 100%;
287
+ box-sizing: border-box;
288
+ display: grid;
289
+ grid-template-columns: 1fr auto;
290
+ align-items: center;
291
+ gap: 0.5rem;
292
+ padding: 0.5rem 1rem;
293
+ cursor: pointer;
294
+ color: #1a1a1a;
295
+ background: transparent;
296
+ font-size: 0.9375rem;
297
+ font-weight: 400;
298
+ line-height: 1.5;
299
+ }
300
+ .select__option > span:first-child {
301
+ min-width: 0;
302
+ overflow: hidden;
303
+ text-overflow: ellipsis;
304
+ white-space: nowrap;
305
+ }
306
+ .select__option:hover,
307
+ .select__option.is-active {
308
+ background: #fafafa;
309
+ }
310
+ .select__option.is-selected {
311
+ font-weight: 500;
312
+ }
313
+ .select__option.is-disabled {
314
+ cursor: not-allowed;
315
+ color: #999999;
316
+ }
317
+
318
+ /* src/ui/feedback/alert/style.scss */
319
+ .alert {
320
+ position: relative;
321
+ display: grid;
322
+ grid-template-columns: auto 1fr auto;
323
+ align-items: start;
324
+ gap: 0.75rem;
325
+ padding: 0.75rem 1rem;
326
+ border-radius: 8px;
327
+ border: 1px solid #e5e5e5;
328
+ background: #ffffff;
329
+ }
330
+ .alert::before {
331
+ content: "";
332
+ position: absolute;
333
+ inset: 0 auto 0 0;
334
+ width: 4px;
335
+ border-top-left-radius: inherit;
336
+ border-bottom-left-radius: inherit;
337
+ background: #3b82f6;
338
+ }
339
+ .alert__icon {
340
+ margin-top: 2px;
341
+ color: #666666;
342
+ display: inline-grid;
343
+ place-items: center;
344
+ }
345
+ .alert__content {
346
+ min-width: 0;
347
+ }
348
+ .alert__title {
349
+ font-size: 1rem;
350
+ line-height: 1.5;
351
+ font-weight: 600;
352
+ color: #1a1a1a;
353
+ margin-bottom: 0.25rem;
354
+ }
355
+ .alert__desc {
356
+ font-size: 0.9375rem;
357
+ font-weight: 400;
358
+ line-height: 1.5;
359
+ color: #666666;
360
+ }
361
+ .alert__close {
362
+ align-self: start;
363
+ display: inline-grid;
364
+ place-items: center;
365
+ margin-left: 0.75rem;
366
+ width: 28px;
367
+ height: 28px;
368
+ padding: 0;
369
+ border: 0;
370
+ border-radius: 6px;
371
+ background: transparent;
372
+ color: #666666;
373
+ line-height: 1;
374
+ cursor: pointer;
375
+ transition:
376
+ background 0.15s ease,
377
+ color 0.15s ease,
378
+ transform 0.05s ease;
379
+ }
380
+ .alert__close:hover {
381
+ background: rgba(0, 0, 0, 0.05);
382
+ color: #1a1a1a;
383
+ }
384
+ .alert__close:active {
385
+ transform: translateY(0.5px);
386
+ }
387
+ .alert__close:focus-visible {
388
+ outline: 2px solid rgba(0, 0, 0, 0.2);
389
+ outline-offset: 2px;
390
+ }
391
+ .alert--info {
392
+ background: rgb(243.24, 247.5, 254.46);
393
+ border-color: rgb(200.12, 220, 252.48);
394
+ }
395
+ .alert--info::before {
396
+ background: #3b82f6;
397
+ }
398
+ .alert--info .alert__icon {
399
+ color: #3b82f6;
400
+ }
401
+ .alert--success {
402
+ background: rgb(240.66, 250.8, 247.44);
403
+ border-color: rgb(188.08, 235.4, 219.72);
404
+ }
405
+ .alert--success::before {
406
+ background: #10b981;
407
+ }
408
+ .alert--success .alert__icon {
409
+ color: #10b981;
410
+ }
411
+ .alert--warning {
412
+ background: rgb(254.2, 247.24, 235.48);
413
+ border-color: rgb(251.8, 223.96, 176.92);
414
+ }
415
+ .alert--warning::before {
416
+ background: #f59e0b;
417
+ }
418
+ .alert--warning .alert__icon {
419
+ color: #f59e0b;
420
+ }
421
+ .alert--error {
422
+ background: rgb(254.04, 243.78, 243.78);
423
+ border-color: rgb(250.52, 202.64, 202.64);
424
+ }
425
+ .alert--error::before {
426
+ background: #ef4444;
427
+ }
428
+ .alert--error .alert__icon {
429
+ color: #ef4444;
430
+ }
431
+
432
+ /* src/ui/form/checkbox/style.scss */
433
+ .checkbox {
434
+ display: inline-flex;
435
+ align-items: center;
436
+ gap: 0.5rem;
437
+ cursor: pointer;
438
+ user-select: none;
439
+ }
440
+ .checkbox__input {
441
+ position: absolute;
442
+ opacity: 0;
443
+ pointer-events: none;
444
+ }
445
+ .checkbox__box {
446
+ width: 1.125rem;
447
+ height: 1.125rem;
448
+ border: 1px solid #e5e5e5;
449
+ border-radius: 6px;
450
+ background: #ffffff;
451
+ transition:
452
+ background 0.2s ease-out,
453
+ border-color 0.2s ease-out,
454
+ box-shadow 0.2s ease-out;
455
+ }
456
+ .checkbox__label {
457
+ font-size: 0.9375rem;
458
+ line-height: 1.5;
459
+ color: #1a1a1a;
460
+ }
461
+ .checkbox--sm .checkbox__box {
462
+ width: 1rem;
463
+ height: 1rem;
464
+ }
465
+ .checkbox--sm .checkbox__label {
466
+ font-size: 0.875rem;
467
+ line-height: 1.5;
468
+ }
469
+ .checkbox--md .checkbox__box {
470
+ width: 1.125rem;
471
+ height: 1.125rem;
472
+ }
473
+ .checkbox--lg .checkbox__box {
474
+ width: 1.25rem;
475
+ height: 1.25rem;
476
+ }
477
+ .checkbox--lg .checkbox__label {
478
+ font-size: 1rem;
479
+ line-height: 1.5;
480
+ }
481
+ .checkbox:has(.checkbox__input:focus-visible) .checkbox__box {
482
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
483
+ border-color: #000000;
484
+ }
485
+ .checkbox:has(.checkbox__input:checked) .checkbox__box,
486
+ .checkbox:has(.checkbox__input:indeterminate) .checkbox__box {
487
+ background: #000000;
488
+ border-color: #000000;
489
+ }
490
+ .checkbox:has(.checkbox__input:checked) .checkbox__box::after,
491
+ .checkbox:has(.checkbox__input:indeterminate) .checkbox__box::after {
492
+ content: "";
493
+ display: block;
494
+ width: 100%;
495
+ height: 100%;
496
+ background: #ffffff;
497
+ clip-path: polygon(14% 52%, 0 66%, 40% 100%, 100% 24%, 86% 10%, 38% 70%);
498
+ }
499
+ .checkbox:has(.checkbox__input:indeterminate) .checkbox__box::after {
500
+ clip-path: inset(40% 15% 40% 15%);
501
+ }
502
+ .checkbox:has(.checkbox__input:disabled) {
503
+ opacity: 0.6;
504
+ cursor: not-allowed;
505
+ }
506
+
507
+ /* src/ui/form/file/style.scss */
508
+ .file {
509
+ position: relative;
510
+ display: inline-flex;
511
+ align-items: center;
512
+ }
513
+ .file__input {
514
+ position: absolute;
515
+ inset: 0;
516
+ opacity: 0;
517
+ cursor: pointer;
518
+ }
519
+ .file__label {
520
+ border: 1px solid #e5e5e5;
521
+ border-radius: 8px;
522
+ background: #ffffff;
523
+ padding: 0.5rem 1rem;
524
+ color: #1a1a1a;
525
+ transition: background 0.2s ease-out, border-color 0.2s ease-out;
526
+ font-size: 0.9375rem;
527
+ line-height: 1.5;
528
+ }
529
+ .file:hover .file__label {
530
+ border-color: rgba(0, 0, 0, 0.08);
531
+ }
532
+ .file:has(.file__input:focus-visible) .file__label {
533
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
534
+ border-color: #000000;
535
+ }
536
+
537
+ /* src/ui/form/radio/style.scss */
538
+ .radio {
539
+ display: inline-flex;
540
+ align-items: center;
541
+ gap: 0.5rem;
542
+ cursor: pointer;
543
+ }
544
+ .radio__input {
545
+ position: absolute;
546
+ opacity: 0;
547
+ pointer-events: none;
548
+ }
549
+ .radio__dot {
550
+ width: 1.125rem;
551
+ height: 1.125rem;
552
+ border: 1px solid #e5e5e5;
553
+ border-radius: 9999px;
554
+ background: #ffffff;
555
+ transition:
556
+ background 0.2s ease-out,
557
+ border-color 0.2s ease-out,
558
+ box-shadow 0.2s ease-out;
559
+ }
560
+ .radio__label {
561
+ font-size: 0.9375rem;
562
+ line-height: 1.5;
563
+ color: #1a1a1a;
564
+ }
565
+ .radio--sm .radio__dot {
566
+ width: 1rem;
567
+ height: 1rem;
568
+ }
569
+ .radio--sm .radio__label {
570
+ font-size: 0.875rem;
571
+ line-height: 1.5;
572
+ }
573
+ .radio--lg .radio__dot {
574
+ width: 1.25rem;
575
+ height: 1.25rem;
576
+ }
577
+ .radio--lg .radio__label {
578
+ font-size: 1rem;
579
+ line-height: 1.5;
580
+ }
581
+ .radio:has(.radio__input:focus-visible) .radio__dot {
582
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
583
+ border-color: #000000;
584
+ }
585
+ .radio:has(.radio__input:checked) .radio__dot {
586
+ border-color: #000000;
587
+ }
588
+ .radio:has(.radio__input:checked) .radio__dot::after {
589
+ content: "";
590
+ display: block;
591
+ width: 60%;
592
+ height: 60%;
593
+ margin: 20%;
594
+ background: #000000;
595
+ border-radius: 9999px;
596
+ }
597
+ .radio:has(.radio__input:disabled) {
598
+ opacity: 0.6;
599
+ cursor: not-allowed;
600
+ }
601
+
602
+ /* src/ui/form/switch/style.scss */
603
+ .switch {
604
+ position: relative;
605
+ display: inline-flex;
606
+ align-items: center;
607
+ border-radius: 9999px;
608
+ background: #e5e5e5;
609
+ transition: background 0.2s ease-out;
610
+ cursor: pointer;
611
+ width: 40px;
612
+ height: 22px;
613
+ padding: 2px;
614
+ }
615
+ .switch__thumb {
616
+ width: 18px;
617
+ height: 18px;
618
+ background: #ffffff;
619
+ border-radius: 9999px;
620
+ transition: transform 0.2s ease-out;
621
+ transform: translateX(0);
622
+ }
623
+ .switch.is-on {
624
+ background: #000000;
625
+ }
626
+ .switch.is-on .switch__thumb {
627
+ transform: translateX(18px);
628
+ }
629
+ .switch--sm {
630
+ width: 34px;
631
+ height: 18px;
632
+ }
633
+ .switch--sm .switch__thumb {
634
+ width: 14px;
635
+ height: 14px;
636
+ }
637
+ .switch--sm.is-on .switch__thumb {
638
+ transform: translateX(16px);
639
+ }
640
+ .switch--lg {
641
+ width: 48px;
642
+ height: 26px;
643
+ }
644
+ .switch--lg .switch__thumb {
645
+ width: 22px;
646
+ height: 22px;
647
+ }
648
+ .switch--lg.is-on .switch__thumb {
649
+ transform: translateX(22px);
650
+ }
651
+ .switch.is-disabled {
652
+ opacity: 0.6;
653
+ cursor: not-allowed;
654
+ }
655
+
656
+ /* src/ui/form/textfield/style.scss */
657
+ .tf__label {
658
+ margin-bottom: 0.75rem;
659
+ color: #1a1a1a;
660
+ font-size: 0.875rem;
661
+ line-height: 1.5;
662
+ font-weight: 500;
663
+ }
664
+ .tf__wrapper {
665
+ position: relative;
666
+ display: inline-flex;
667
+ width: 100%;
668
+ align-items: center;
669
+ gap: 0.75rem;
670
+ }
671
+ .tf__input--outline {
672
+ width: 100%;
673
+ border-radius: 8px;
674
+ transition:
675
+ border-color 0.2s ease-out,
676
+ box-shadow 0.2s ease-out,
677
+ background 0.2s ease-out;
678
+ font-size: 0.9375rem;
679
+ line-height: 1.5;
680
+ color: #1a1a1a;
681
+ background: #ffffff;
682
+ }
683
+ .tf__input--outline::placeholder {
684
+ color: #999999;
685
+ }
686
+ .tf__input--outline:disabled {
687
+ cursor: not-allowed;
688
+ background: #fafafa;
689
+ color: #999999;
690
+ opacity: 0.7;
691
+ }
692
+ .tf__input--outline {
693
+ border: 1px solid #e5e5e5;
694
+ }
695
+ .tf__input--outline:hover:not(:disabled) {
696
+ border-color: rgba(0, 0, 0, 0.08);
697
+ }
698
+ .tf__input--outline:focus-visible {
699
+ outline: none;
700
+ border-color: #000000;
701
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
702
+ }
703
+ .tf__input--filled {
704
+ width: 100%;
705
+ border-radius: 8px;
706
+ transition:
707
+ border-color 0.2s ease-out,
708
+ box-shadow 0.2s ease-out,
709
+ background 0.2s ease-out;
710
+ font-size: 0.9375rem;
711
+ line-height: 1.5;
712
+ color: #1a1a1a;
713
+ background: #ffffff;
714
+ }
715
+ .tf__input--filled::placeholder {
716
+ color: #999999;
717
+ }
718
+ .tf__input--filled:disabled {
719
+ cursor: not-allowed;
720
+ background: #fafafa;
721
+ color: #999999;
722
+ opacity: 0.7;
723
+ }
724
+ .tf__input--filled {
725
+ background: #fafafa;
726
+ border: 1px solid transparent;
727
+ }
728
+ .tf__input--filled:hover:not(:disabled) {
729
+ background: rgb(253.5, 253.5, 253.5);
730
+ }
731
+ .tf__input--filled:focus-visible {
732
+ outline: none;
733
+ border-color: #000000;
734
+ background: #ffffff;
735
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
736
+ }
737
+ .tf__input--ghost {
738
+ width: 100%;
739
+ border-radius: 8px;
740
+ transition:
741
+ border-color 0.2s ease-out,
742
+ box-shadow 0.2s ease-out,
743
+ background 0.2s ease-out;
744
+ font-size: 0.9375rem;
745
+ line-height: 1.5;
746
+ color: #1a1a1a;
747
+ background: #ffffff;
748
+ }
749
+ .tf__input--ghost::placeholder {
750
+ color: #999999;
751
+ }
752
+ .tf__input--ghost:disabled {
753
+ cursor: not-allowed;
754
+ background: #fafafa;
755
+ color: #999999;
756
+ opacity: 0.7;
757
+ }
758
+ .tf__input--ghost {
759
+ background: transparent;
760
+ border: 1px solid transparent;
761
+ }
762
+ .tf__input--ghost:hover:not(:disabled) {
763
+ background: rgba(0, 0, 0, 0.03);
764
+ }
765
+ .tf__input--ghost:focus-visible {
766
+ outline: none;
767
+ border-color: #000000;
768
+ background: #ffffff;
769
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
770
+ }
771
+ .tf__input--sm {
772
+ padding: 0.5rem 1rem;
773
+ font-size: 0.875rem;
774
+ line-height: 1.5;
775
+ }
776
+ .tf__input--md {
777
+ padding: 0.75rem 1.25rem;
778
+ font-size: 0.9375rem;
779
+ line-height: 1.5;
780
+ }
781
+ .tf__input--lg {
782
+ padding: 1rem 1.5rem;
783
+ font-size: 1rem;
784
+ line-height: 1.5;
785
+ }
786
+ .tf__input--with-left {
787
+ padding-left: calc(1.25rem + 1.25rem);
788
+ }
789
+ .tf__input--with-right {
790
+ padding-right: calc(1.25rem + 1.25rem);
791
+ }
792
+ .tf__input--error {
793
+ border-color: #ef4444 !important;
794
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;
795
+ }
796
+ .tf__input--success {
797
+ border-color: #10b981 !important;
798
+ box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15) !important;
799
+ }
800
+ .tf__icon {
801
+ position: absolute;
802
+ display: inline-flex;
803
+ align-items: center;
804
+ justify-content: center;
805
+ width: 1.25rem;
806
+ height: 1.25rem;
807
+ color: #666666;
808
+ }
809
+ .tf__icon--left {
810
+ left: 0.75rem;
811
+ }
812
+ .tf__icon--right {
813
+ right: 0.75rem;
814
+ }
815
+ .tf__helper {
816
+ margin-top: 0.25rem;
817
+ font-size: 0.875rem;
818
+ line-height: 1.5;
819
+ color: #666666;
820
+ }
821
+ .tf__helper--error {
822
+ color: #ef4444;
823
+ }
824
+
825
+ /* src/ui/navigation/pagination/style.scss */
826
+ .pagination {
827
+ display: inline-flex;
828
+ align-items: center;
829
+ gap: 0.5rem;
830
+ }
831
+ .pagination__item {
832
+ border: 1px solid #e5e5e5;
833
+ background: #ffffff;
834
+ color: #1a1a1a;
835
+ border-radius: 6px;
836
+ padding: 0.25rem 0.5rem;
837
+ cursor: pointer;
838
+ font-size: 0.875rem;
839
+ line-height: 1.5;
840
+ }
841
+ .pagination__item.is-active {
842
+ background: #000000;
843
+ color: #ffffff;
844
+ border-color: #000000;
845
+ }
846
+ .pagination__item:disabled {
847
+ opacity: 0.5;
848
+ cursor: not-allowed;
849
+ }
850
+ .pagination__item:focus-visible {
851
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
852
+ border-color: #000000;
853
+ }
854
+ .pagination__ellipsis {
855
+ padding: 0 0.25rem;
856
+ color: #999999;
857
+ }
858
+
859
+ /* src/ui/navigation/sidebar/style.scss */
860
+ .sidebar {
861
+ height: 100%;
862
+ background: #ffffff;
863
+ border-right: 1px solid #e5e5e5;
864
+ display: flex;
865
+ flex-direction: column;
866
+ gap: 0.5rem;
867
+ padding: 0.5rem;
868
+ }
869
+ .sidebar__toggle {
870
+ align-self: flex-end;
871
+ width: 24px;
872
+ height: 24px;
873
+ border-radius: 6px;
874
+ border: 1px solid #e5e5e5;
875
+ background: #ffffff;
876
+ }
877
+ .sidebar__nav {
878
+ display: grid;
879
+ gap: 0.25rem;
880
+ }
881
+ .sidebar__item {
882
+ display: grid;
883
+ grid-template-columns: 24px 1fr;
884
+ align-items: center;
885
+ gap: 0.5rem;
886
+ padding: 0.5rem;
887
+ border-radius: 8px;
888
+ color: #1a1a1a;
889
+ background: transparent;
890
+ border: 1px solid transparent;
891
+ font-size: 0.9375rem;
892
+ line-height: 1.5;
893
+ cursor: pointer;
894
+ transition: background 0.2s ease, color 0.2s ease;
895
+ }
896
+ .sidebar__item:hover {
897
+ background: #fafafa;
898
+ }
899
+ .sidebar__item.is-active {
900
+ background: rgb(25.5, 25.5, 25.5);
901
+ border-color: rgb(76.5, 76.5, 76.5);
902
+ color: #ffffff;
903
+ }
904
+ .sidebar__item.is-active .sidebar__icon {
905
+ color: #ffffff;
906
+ }
907
+ .sidebar__icon {
908
+ display: inline-grid;
909
+ place-items: center;
910
+ color: #666666;
911
+ transition: color 0.2s ease;
912
+ }
913
+ .sidebar.is-collapsed .sidebar__item {
914
+ grid-template-columns: 1fr;
915
+ place-items: center;
916
+ }
917
+
918
+ /* src/ui/overlay/modal/style.scss */
919
+ .modal {
920
+ position: fixed;
921
+ inset: 0;
922
+ background: rgba(0, 0, 0, 0.5);
923
+ display: grid;
924
+ place-items: center;
925
+ z-index: 10000;
926
+ }
927
+ .modal__panel {
928
+ background: #ffffff;
929
+ border-radius: 12px;
930
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
931
+ max-width: calc(100% - 32px);
932
+ }
933
+ .modal__header {
934
+ padding: 1rem;
935
+ font-size: 1.25rem;
936
+ font-weight: 600;
937
+ line-height: 1.3;
938
+ color: #1a1a1a;
939
+ border-bottom: 1px solid #e5e5e5;
940
+ }
941
+ .modal__body {
942
+ padding: 1rem;
943
+ }