@bigtablet/design-system 0.1.0

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