@bigtablet/design-system 1.16.2 → 1.17.1

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,1060 @@
1
+ /**
2
+ * Bigtablet Design System - Vanilla CSS
3
+ * For use with plain HTML/CSS/JS, Thymeleaf, JSP, etc.
4
+ */
5
+ /* Primary */
6
+ /* Background */
7
+ /* Background - Dark Palette (for modern/tech sections) */
8
+ /* Text */
9
+ /* Border */
10
+ /* Status */
11
+ /* Accent - Tech Blue */
12
+ /* Overlay */
13
+ /* Glass Effect */
14
+ /* Flex Utilities */
15
+ /* Glass Effect Mixins */
16
+ /* Hover Lift Effect */
17
+ /* Glow on Hover */
18
+ /* Base Transitions */
19
+ /* Easing Curves */
20
+ /* Material / Emphasized */
21
+ /* Specific Transitions */
22
+ /* Modern/Tech Transitions */
23
+ /* Hover Lift */
24
+ /* Standard Shadows */
25
+ /* Elevated Shadows (for floating elements) */
26
+ /* Glow Effects (for tech/accent elements) */
27
+ /* Inner Shadows */
28
+ /* ========================================
29
+ CSS Custom Properties (Design Tokens)
30
+ ======================================== */
31
+ :root {
32
+ /* Colors - Primary */
33
+ --bt-color-primary: #000000;
34
+ --bt-color-primary-hover: #333333;
35
+ /* Colors - Background */
36
+ --bt-color-background: #ffffff;
37
+ --bt-color-background-secondary: #fafafa;
38
+ --bt-color-background-neutral: #F3F3F3;
39
+ --bt-color-background-muted: #f0f0f0;
40
+ /* Colors - Text */
41
+ --bt-color-text-primary: #1a1a1a;
42
+ --bt-color-text-secondary: #666666;
43
+ --bt-color-text-tertiary: #999999;
44
+ --bt-text-inverse: #ffffff;
45
+ --bt-text-disabled: #9ca3af;
46
+ /* Colors - Border */
47
+ --bt-color-border: #e5e5e5;
48
+ --bt-color-border-light: rgba(0, 0, 0, 0.08);
49
+ /* Colors - Status */
50
+ --bt-color-success: #10b981;
51
+ --bt-color-error: #ef4444;
52
+ --bt-color-warning: #f59e0b;
53
+ --bt-color-info: #3b82f6;
54
+ /* Colors - Overlay */
55
+ --bt-color-overlay: rgba(0, 0, 0, 0.5);
56
+ /* Spacing */
57
+ --bt-spacing-xs: 0.25rem;
58
+ --bt-spacing-sm: 0.5rem;
59
+ --bt-spacing-md: 0.75rem;
60
+ --bt-spacing-lg: 1rem;
61
+ --bt-spacing-xl: 1.25rem;
62
+ --bt-spacing-2xl: 1.5rem;
63
+ --bt-spacing-3xl: 1.75rem;
64
+ /* Typography */
65
+ --bt-font-family: Pretendard, sans-serif;
66
+ --bt-font-size-xs: 0.75rem;
67
+ --bt-font-size-sm: 0.875rem;
68
+ --bt-font-size-base: 0.9375rem;
69
+ --bt-font-size-md: 1rem;
70
+ --bt-font-size-lg: 1.125rem;
71
+ --bt-font-size-xl: 1.25rem;
72
+ --bt-font-weight-regular: 400;
73
+ --bt-font-weight-medium: 500;
74
+ --bt-font-weight-semibold: 600;
75
+ --bt-font-weight-bold: 700;
76
+ --bt-line-height-normal: 1.5;
77
+ /* Radius */
78
+ --bt-radius-sm: 6px;
79
+ --bt-radius-md: 8px;
80
+ --bt-radius-lg: 12px;
81
+ --bt-radius-full: 9999px;
82
+ /* Shadows */
83
+ --bt-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);
84
+ --bt-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
85
+ --bt-shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
86
+ --bt-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
87
+ /* Transitions */
88
+ --bt-transition-fast: 0.1s ease-in-out;
89
+ --bt-transition-base: 0.2s ease-in-out;
90
+ --bt-transition-slow: 0.3s ease-in-out;
91
+ /* Z-index */
92
+ --bt-z-modal: 10000;
93
+ --bt-z-toast: 10001;
94
+ }
95
+
96
+ /* ========================================
97
+ Button
98
+ ======================================== */
99
+ .bt-button {
100
+ display: inline-flex;
101
+ align-items: center;
102
+ justify-content: center;
103
+ gap: var(--bt-spacing-sm);
104
+ border-radius: var(--bt-radius-md);
105
+ border: none;
106
+ cursor: pointer;
107
+ font-family: var(--bt-font-family);
108
+ font-weight: var(--bt-font-weight-medium);
109
+ transition: background var(--bt-transition-base), color var(--bt-transition-base), box-shadow var(--bt-transition-base), transform var(--bt-transition-base);
110
+ }
111
+ .bt-button:disabled {
112
+ cursor: not-allowed;
113
+ opacity: 0.6;
114
+ }
115
+ .bt-button {
116
+ /* Sizes */
117
+ }
118
+ .bt-button--sm {
119
+ padding: var(--bt-spacing-sm) var(--bt-spacing-lg);
120
+ font-size: var(--bt-font-size-sm);
121
+ }
122
+ .bt-button--md {
123
+ padding: var(--bt-spacing-md) var(--bt-spacing-xl);
124
+ font-size: var(--bt-font-size-base);
125
+ }
126
+ .bt-button--lg {
127
+ padding: var(--bt-spacing-lg) var(--bt-spacing-2xl);
128
+ font-size: var(--bt-font-size-md);
129
+ }
130
+ .bt-button {
131
+ /* Variants */
132
+ }
133
+ .bt-button--primary {
134
+ background: var(--bt-color-primary);
135
+ color: var(--bt-color-background);
136
+ }
137
+ .bt-button--primary:hover:not(:disabled) {
138
+ background: var(--bt-color-primary-hover);
139
+ }
140
+ .bt-button--primary:active:not(:disabled) {
141
+ transform: scale(0.98);
142
+ }
143
+ .bt-button--secondary {
144
+ background: transparent;
145
+ border: 1px solid var(--bt-color-border);
146
+ color: var(--bt-color-text-primary);
147
+ }
148
+ .bt-button--secondary:hover:not(:disabled) {
149
+ background: var(--bt-color-background-secondary);
150
+ }
151
+ .bt-button--secondary:active:not(:disabled) {
152
+ transform: scale(0.98);
153
+ }
154
+ .bt-button--ghost {
155
+ background: transparent;
156
+ color: var(--bt-color-text-primary);
157
+ }
158
+ .bt-button--ghost:hover:not(:disabled) {
159
+ background: rgba(0, 0, 0, 0.05);
160
+ }
161
+ .bt-button--ghost:active:not(:disabled) {
162
+ transform: scale(0.96);
163
+ }
164
+ .bt-button--danger {
165
+ background: var(--bt-color-error);
166
+ color: var(--bt-color-background);
167
+ }
168
+ .bt-button--danger:hover:not(:disabled) {
169
+ background: rgb(235.7842364532, 30.4157635468, 30.4157635468);
170
+ }
171
+ .bt-button--danger:active:not(:disabled) {
172
+ transform: scale(0.98);
173
+ }
174
+ .bt-button--full-width {
175
+ width: 100%;
176
+ }
177
+
178
+ /* ========================================
179
+ TextField
180
+ ======================================== */
181
+ .bt-text-field {
182
+ display: flex;
183
+ flex-direction: column;
184
+ }
185
+ .bt-text-field--full-width {
186
+ width: 100%;
187
+ }
188
+ .bt-text-field__label {
189
+ margin-bottom: var(--bt-spacing-xs);
190
+ color: var(--bt-color-text-primary);
191
+ font-size: var(--bt-font-size-sm);
192
+ font-weight: var(--bt-font-weight-medium);
193
+ line-height: var(--bt-line-height-normal);
194
+ }
195
+ .bt-text-field__wrap {
196
+ position: relative;
197
+ display: inline-flex;
198
+ width: 100%;
199
+ align-items: center;
200
+ }
201
+ .bt-text-field__input {
202
+ width: 100%;
203
+ border-radius: var(--bt-radius-md);
204
+ font-family: var(--bt-font-family);
205
+ font-size: var(--bt-font-size-base);
206
+ line-height: var(--bt-line-height-normal);
207
+ color: var(--bt-color-text-primary);
208
+ background: var(--bt-color-background);
209
+ transition: border-color var(--bt-transition-base), box-shadow var(--bt-transition-base), background var(--bt-transition-base);
210
+ }
211
+ .bt-text-field__input::placeholder {
212
+ color: var(--bt-color-text-tertiary);
213
+ }
214
+ .bt-text-field__input:disabled {
215
+ cursor: not-allowed;
216
+ background: var(--bt-color-background-secondary);
217
+ color: var(--bt-color-text-tertiary);
218
+ opacity: 0.7;
219
+ }
220
+ .bt-text-field__input {
221
+ /* Variants */
222
+ }
223
+ .bt-text-field__input--outline {
224
+ border: 1px solid var(--bt-color-border);
225
+ }
226
+ .bt-text-field__input--outline:hover:not(:disabled) {
227
+ border-color: var(--bt-color-border-light);
228
+ }
229
+ .bt-text-field__input--outline:focus-visible {
230
+ outline: none;
231
+ border-color: var(--bt-color-primary);
232
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
233
+ }
234
+ .bt-text-field__input--filled {
235
+ background: var(--bt-color-background-secondary);
236
+ border: 1px solid transparent;
237
+ }
238
+ .bt-text-field__input--filled:focus-visible {
239
+ outline: none;
240
+ border-color: var(--bt-color-primary);
241
+ background: var(--bt-color-background);
242
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
243
+ }
244
+ .bt-text-field__input {
245
+ /* Sizes */
246
+ }
247
+ .bt-text-field__input--sm {
248
+ padding: var(--bt-spacing-sm) var(--bt-spacing-lg);
249
+ font-size: var(--bt-font-size-sm);
250
+ }
251
+ .bt-text-field__input--md {
252
+ padding: var(--bt-spacing-md) var(--bt-spacing-xl);
253
+ font-size: var(--bt-font-size-base);
254
+ }
255
+ .bt-text-field__input--lg {
256
+ padding: var(--bt-spacing-lg) var(--bt-spacing-2xl);
257
+ font-size: var(--bt-font-size-md);
258
+ }
259
+ .bt-text-field__input {
260
+ /* States */
261
+ }
262
+ .bt-text-field__input--error {
263
+ border-color: var(--bt-color-error) !important;
264
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;
265
+ }
266
+ .bt-text-field__input--success {
267
+ border-color: var(--bt-color-success) !important;
268
+ box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15) !important;
269
+ }
270
+ .bt-text-field__helper {
271
+ margin-top: var(--bt-spacing-xs);
272
+ font-size: var(--bt-font-size-sm);
273
+ color: var(--bt-color-text-secondary);
274
+ }
275
+ .bt-text-field__helper--error {
276
+ color: var(--bt-color-error);
277
+ }
278
+ .bt-text-field__helper--success {
279
+ color: var(--bt-color-success);
280
+ }
281
+ .bt-text-field__icon {
282
+ position: absolute;
283
+ display: inline-flex;
284
+ align-items: center;
285
+ justify-content: center;
286
+ width: 1.25rem;
287
+ height: 1.25rem;
288
+ color: var(--bt-color-text-secondary);
289
+ }
290
+ .bt-text-field__icon--left {
291
+ left: var(--bt-spacing-md);
292
+ }
293
+ .bt-text-field__icon--right {
294
+ right: var(--bt-spacing-md);
295
+ }
296
+
297
+ /* ========================================
298
+ Checkbox
299
+ ======================================== */
300
+ .bt-checkbox {
301
+ display: inline-flex;
302
+ align-items: center;
303
+ gap: var(--bt-spacing-sm);
304
+ cursor: pointer;
305
+ user-select: none;
306
+ position: relative;
307
+ }
308
+ .bt-checkbox__input {
309
+ position: absolute;
310
+ width: 1px;
311
+ height: 1px;
312
+ overflow: hidden;
313
+ clip: rect(0 0 0 0);
314
+ clip-path: inset(50%);
315
+ white-space: nowrap;
316
+ }
317
+ .bt-checkbox__box {
318
+ width: 1.125rem;
319
+ height: 1.125rem;
320
+ box-sizing: border-box;
321
+ border: 1px solid var(--bt-color-border);
322
+ border-radius: var(--bt-radius-sm);
323
+ background: var(--bt-color-background);
324
+ transition: background var(--bt-transition-base), border-color var(--bt-transition-base), box-shadow var(--bt-transition-base);
325
+ display: inline-block;
326
+ position: relative;
327
+ }
328
+ .bt-checkbox__label {
329
+ font-family: var(--bt-font-family);
330
+ font-size: var(--bt-font-size-base);
331
+ line-height: var(--bt-line-height-normal);
332
+ color: var(--bt-color-text-primary);
333
+ }
334
+ .bt-checkbox {
335
+ /* Sizes */
336
+ }
337
+ .bt-checkbox--sm .bt-checkbox__box {
338
+ width: 1rem;
339
+ height: 1rem;
340
+ }
341
+ .bt-checkbox--sm .bt-checkbox__label {
342
+ font-size: var(--bt-font-size-sm);
343
+ }
344
+ .bt-checkbox--lg .bt-checkbox__box {
345
+ width: 1.25rem;
346
+ height: 1.25rem;
347
+ }
348
+ .bt-checkbox--lg .bt-checkbox__label {
349
+ font-size: var(--bt-font-size-md);
350
+ }
351
+ .bt-checkbox {
352
+ /* States */
353
+ }
354
+ .bt-checkbox__input:focus-visible + .bt-checkbox__box {
355
+ box-shadow: 0 0 0 3px var(--bt-color-border-light);
356
+ border-color: var(--bt-color-primary);
357
+ }
358
+ .bt-checkbox__input:disabled + .bt-checkbox__box, .bt-checkbox__input:disabled ~ .bt-checkbox__label {
359
+ opacity: 0.6;
360
+ cursor: not-allowed;
361
+ }
362
+ .bt-checkbox__input:checked + .bt-checkbox__box {
363
+ background: var(--bt-color-primary);
364
+ border-color: var(--bt-color-primary);
365
+ }
366
+ .bt-checkbox__input:checked + .bt-checkbox__box::after {
367
+ content: "";
368
+ position: absolute;
369
+ left: 50%;
370
+ top: 50%;
371
+ width: 0.28rem;
372
+ height: 0.55rem;
373
+ border: 2px solid var(--bt-color-background);
374
+ border-top: 0;
375
+ border-left: 0;
376
+ transform: translate(-50%, -58%) rotate(45deg);
377
+ }
378
+
379
+ /* ========================================
380
+ Radio
381
+ ======================================== */
382
+ .bt-radio {
383
+ position: relative;
384
+ display: inline-flex;
385
+ align-items: center;
386
+ gap: var(--bt-spacing-sm);
387
+ cursor: pointer;
388
+ user-select: none;
389
+ }
390
+ .bt-radio__input {
391
+ position: absolute;
392
+ inset: 0;
393
+ opacity: 0;
394
+ cursor: pointer;
395
+ margin: 0;
396
+ }
397
+ .bt-radio__dot {
398
+ width: 1.125rem;
399
+ height: 1.125rem;
400
+ box-sizing: border-box;
401
+ border: 1px solid var(--bt-color-border);
402
+ border-radius: var(--bt-radius-full);
403
+ background: var(--bt-color-background);
404
+ transition: background var(--bt-transition-base), border-color var(--bt-transition-base), box-shadow var(--bt-transition-base);
405
+ position: relative;
406
+ display: inline-block;
407
+ }
408
+ .bt-radio__label {
409
+ font-family: var(--bt-font-family);
410
+ font-size: var(--bt-font-size-base);
411
+ line-height: var(--bt-line-height-normal);
412
+ color: var(--bt-color-text-primary);
413
+ }
414
+ .bt-radio {
415
+ /* Sizes */
416
+ }
417
+ .bt-radio--sm .bt-radio__dot {
418
+ width: 1rem;
419
+ height: 1rem;
420
+ }
421
+ .bt-radio--sm .bt-radio__label {
422
+ font-size: var(--bt-font-size-sm);
423
+ }
424
+ .bt-radio--lg .bt-radio__dot {
425
+ width: 1.25rem;
426
+ height: 1.25rem;
427
+ }
428
+ .bt-radio--lg .bt-radio__label {
429
+ font-size: var(--bt-font-size-md);
430
+ }
431
+ .bt-radio {
432
+ /* States */
433
+ }
434
+ .bt-radio__input:focus-visible + .bt-radio__dot {
435
+ box-shadow: 0 0 0 3px var(--bt-color-border-light);
436
+ border-color: var(--bt-color-primary);
437
+ }
438
+ .bt-radio__input:checked + .bt-radio__dot {
439
+ border-color: var(--bt-color-primary);
440
+ }
441
+ .bt-radio__input:checked + .bt-radio__dot::after {
442
+ content: "";
443
+ position: absolute;
444
+ left: 50%;
445
+ top: 50%;
446
+ width: 60%;
447
+ height: 60%;
448
+ transform: translate(-50%, -50%);
449
+ background: var(--bt-color-primary);
450
+ border-radius: 9999px;
451
+ }
452
+ .bt-radio__input:disabled + .bt-radio__dot, .bt-radio__input:disabled ~ .bt-radio__label {
453
+ opacity: 0.6;
454
+ cursor: not-allowed;
455
+ }
456
+
457
+ /* ========================================
458
+ Switch
459
+ ======================================== */
460
+ .bt-switch {
461
+ position: relative;
462
+ display: inline-flex;
463
+ align-items: center;
464
+ width: 40px;
465
+ height: 22px;
466
+ padding: 2px;
467
+ border-radius: var(--bt-radius-full);
468
+ background: var(--bt-color-border);
469
+ transition: background var(--bt-transition-base);
470
+ cursor: pointer;
471
+ border: none;
472
+ }
473
+ .bt-switch__thumb {
474
+ width: 18px;
475
+ height: 18px;
476
+ background: var(--bt-color-background);
477
+ border-radius: var(--bt-radius-full);
478
+ transition: transform var(--bt-transition-base);
479
+ transform: translateX(0);
480
+ }
481
+ .bt-switch--on {
482
+ background: var(--bt-color-primary);
483
+ }
484
+ .bt-switch--on .bt-switch__thumb {
485
+ transform: translateX(18px);
486
+ }
487
+ .bt-switch {
488
+ /* Sizes */
489
+ }
490
+ .bt-switch--sm {
491
+ width: 34px;
492
+ height: 18px;
493
+ }
494
+ .bt-switch--sm .bt-switch__thumb {
495
+ width: 14px;
496
+ height: 14px;
497
+ }
498
+ .bt-switch--sm.bt-switch--on .bt-switch__thumb {
499
+ transform: translateX(16px);
500
+ }
501
+ .bt-switch--lg {
502
+ width: 48px;
503
+ height: 26px;
504
+ }
505
+ .bt-switch--lg .bt-switch__thumb {
506
+ width: 22px;
507
+ height: 22px;
508
+ }
509
+ .bt-switch--lg.bt-switch--on .bt-switch__thumb {
510
+ transform: translateX(22px);
511
+ }
512
+ .bt-switch--disabled {
513
+ opacity: 0.6;
514
+ cursor: not-allowed;
515
+ }
516
+
517
+ /* ========================================
518
+ Select
519
+ ======================================== */
520
+ .bt-select {
521
+ position: relative;
522
+ display: inline-flex;
523
+ flex-direction: column;
524
+ width: 100%;
525
+ gap: var(--bt-spacing-xs);
526
+ font-family: var(--bt-font-family);
527
+ }
528
+ .bt-select__label {
529
+ font-size: var(--bt-font-size-sm);
530
+ font-weight: var(--bt-font-weight-medium);
531
+ line-height: var(--bt-line-height-normal);
532
+ color: var(--bt-color-text-primary);
533
+ }
534
+ .bt-select__control {
535
+ width: 100%;
536
+ display: inline-flex;
537
+ align-items: center;
538
+ justify-content: space-between;
539
+ gap: var(--bt-spacing-sm);
540
+ cursor: pointer;
541
+ color: var(--bt-color-text-primary);
542
+ background: var(--bt-color-background);
543
+ border-radius: var(--bt-radius-md);
544
+ transition: border-color var(--bt-transition-base), box-shadow var(--bt-transition-base), background var(--bt-transition-base);
545
+ font-size: var(--bt-font-size-base);
546
+ line-height: var(--bt-line-height-normal);
547
+ border: none;
548
+ text-align: left;
549
+ }
550
+ .bt-select__control:disabled, .bt-select__control.is-disabled {
551
+ cursor: not-allowed;
552
+ opacity: 0.7;
553
+ background: var(--bt-color-background-secondary);
554
+ color: var(--bt-color-text-tertiary);
555
+ }
556
+ .bt-select__control {
557
+ /* Variants */
558
+ }
559
+ .bt-select__control--outline {
560
+ border: 1px solid var(--bt-color-border);
561
+ }
562
+ .bt-select__control--outline:hover:not(.is-disabled) {
563
+ border-color: var(--bt-color-border-light);
564
+ }
565
+ .bt-select__control--outline.is-open {
566
+ border-color: var(--bt-color-primary);
567
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
568
+ }
569
+ .bt-select__control--filled {
570
+ background: var(--bt-color-background-secondary);
571
+ border: 1px solid transparent;
572
+ }
573
+ .bt-select__control--filled.is-open {
574
+ background: var(--bt-color-background);
575
+ border-color: var(--bt-color-primary);
576
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
577
+ }
578
+ .bt-select__control {
579
+ /* Sizes */
580
+ }
581
+ .bt-select__control--sm {
582
+ padding: var(--bt-spacing-sm) var(--bt-spacing-lg);
583
+ font-size: var(--bt-font-size-sm);
584
+ }
585
+ .bt-select__control--md {
586
+ padding: var(--bt-spacing-md) var(--bt-spacing-xl);
587
+ font-size: var(--bt-font-size-base);
588
+ }
589
+ .bt-select__control--lg {
590
+ padding: var(--bt-spacing-lg) var(--bt-spacing-2xl);
591
+ font-size: var(--bt-font-size-md);
592
+ }
593
+ .bt-select__value {
594
+ flex: 1 1 auto;
595
+ min-width: 0;
596
+ overflow: hidden;
597
+ text-overflow: ellipsis;
598
+ white-space: nowrap;
599
+ }
600
+ .bt-select__placeholder {
601
+ flex: 1 1 auto;
602
+ min-width: 0;
603
+ overflow: hidden;
604
+ text-overflow: ellipsis;
605
+ white-space: nowrap;
606
+ color: var(--bt-color-text-tertiary);
607
+ }
608
+ .bt-select__icon {
609
+ display: inline-flex;
610
+ align-items: center;
611
+ justify-content: center;
612
+ color: var(--bt-color-text-secondary);
613
+ transition: transform var(--bt-transition-base);
614
+ }
615
+ .bt-select__icon.is-open {
616
+ transform: rotate(180deg);
617
+ }
618
+ .bt-select__list {
619
+ position: absolute;
620
+ z-index: var(--bt-z-modal);
621
+ top: 100%;
622
+ left: 0;
623
+ width: 100%;
624
+ min-width: 100%;
625
+ box-sizing: border-box;
626
+ margin-top: var(--bt-spacing-xs);
627
+ background: var(--bt-color-background);
628
+ border: 1px solid var(--bt-color-border);
629
+ border-radius: var(--bt-radius-md);
630
+ box-shadow: var(--bt-shadow-md);
631
+ max-height: 18rem;
632
+ overflow-y: auto;
633
+ overflow-x: hidden;
634
+ padding: var(--bt-spacing-xs) 0;
635
+ list-style: none;
636
+ margin: var(--bt-spacing-xs) 0 0 0;
637
+ }
638
+ .bt-select__list--up {
639
+ top: auto;
640
+ bottom: 100%;
641
+ margin-top: 0;
642
+ margin-bottom: var(--bt-spacing-xs);
643
+ }
644
+ .bt-select__option {
645
+ width: 100%;
646
+ box-sizing: border-box;
647
+ display: flex;
648
+ align-items: center;
649
+ justify-content: space-between;
650
+ gap: var(--bt-spacing-sm);
651
+ padding: var(--bt-spacing-sm) var(--bt-spacing-lg);
652
+ cursor: pointer;
653
+ color: var(--bt-color-text-primary);
654
+ background: transparent;
655
+ font-family: var(--bt-font-family);
656
+ font-size: var(--bt-font-size-base);
657
+ line-height: var(--bt-line-height-normal);
658
+ }
659
+ .bt-select__option:hover, .bt-select__option.is-active {
660
+ background: var(--bt-color-background-secondary);
661
+ }
662
+ .bt-select__option.is-selected {
663
+ font-weight: var(--bt-font-weight-medium);
664
+ }
665
+ .bt-select__option.is-disabled {
666
+ cursor: not-allowed;
667
+ color: var(--bt-color-text-tertiary);
668
+ }
669
+
670
+ /* ========================================
671
+ Modal
672
+ ======================================== */
673
+ .bt-modal {
674
+ position: fixed;
675
+ inset: 0;
676
+ display: none;
677
+ place-items: center;
678
+ background: var(--bt-color-overlay);
679
+ z-index: var(--bt-z-modal);
680
+ }
681
+ .bt-modal.is-open {
682
+ display: grid;
683
+ }
684
+ .bt-modal__panel {
685
+ background: var(--bt-color-background);
686
+ border-radius: var(--bt-radius-lg);
687
+ box-shadow: var(--bt-shadow-lg);
688
+ max-width: calc(100% - 32px);
689
+ overflow: hidden;
690
+ }
691
+ .bt-modal__header {
692
+ padding: var(--bt-spacing-lg);
693
+ border-bottom: 1px solid var(--bt-color-border);
694
+ color: var(--bt-color-text-primary);
695
+ font-size: var(--bt-font-size-xl);
696
+ font-weight: var(--bt-font-weight-semibold);
697
+ line-height: 1.3;
698
+ }
699
+ .bt-modal__body {
700
+ padding: var(--bt-spacing-lg);
701
+ }
702
+ .bt-modal__footer {
703
+ padding: var(--bt-spacing-lg);
704
+ border-top: 1px solid var(--bt-color-border);
705
+ display: flex;
706
+ justify-content: flex-end;
707
+ gap: var(--bt-spacing-sm);
708
+ }
709
+
710
+ /* ========================================
711
+ Alert
712
+ ======================================== */
713
+ @keyframes bt-alert-fade-in {
714
+ from {
715
+ opacity: 0;
716
+ }
717
+ to {
718
+ opacity: 1;
719
+ }
720
+ }
721
+ @keyframes bt-alert-slide-up {
722
+ from {
723
+ opacity: 0;
724
+ transform: translateY(20px);
725
+ }
726
+ to {
727
+ opacity: 1;
728
+ transform: translateY(0);
729
+ }
730
+ }
731
+ .bt-alert__overlay {
732
+ position: fixed;
733
+ inset: 0;
734
+ background: var(--bt-color-overlay);
735
+ display: none;
736
+ align-items: center;
737
+ justify-content: center;
738
+ z-index: var(--bt-z-modal);
739
+ animation: bt-alert-fade-in var(--bt-transition-base);
740
+ }
741
+ .bt-alert__overlay.is-open {
742
+ display: flex;
743
+ }
744
+ .bt-alert__modal {
745
+ background: var(--bt-color-background);
746
+ border-radius: var(--bt-radius-lg);
747
+ min-width: 320px;
748
+ max-width: 480px;
749
+ box-shadow: var(--bt-shadow-xl);
750
+ animation: bt-alert-slide-up var(--bt-transition-slow);
751
+ overflow: hidden;
752
+ }
753
+ .bt-alert__title {
754
+ font-size: var(--bt-font-size-lg);
755
+ font-weight: var(--bt-font-weight-semibold);
756
+ line-height: var(--bt-line-height-normal);
757
+ color: var(--bt-color-info);
758
+ padding: var(--bt-spacing-md) var(--bt-spacing-xl) var(--bt-spacing-xs);
759
+ }
760
+ .bt-alert__message {
761
+ font-size: var(--bt-font-size-base);
762
+ color: var(--bt-color-text-secondary);
763
+ padding: var(--bt-spacing-xl);
764
+ line-height: 1.75;
765
+ }
766
+ .bt-alert__actions {
767
+ display: flex;
768
+ gap: var(--bt-spacing-sm);
769
+ align-items: center;
770
+ padding: 0 var(--bt-spacing-xl) var(--bt-spacing-xl);
771
+ justify-content: flex-end;
772
+ }
773
+ .bt-alert {
774
+ /* Variants */
775
+ }
776
+ .bt-alert--info .bt-alert__title {
777
+ color: var(--bt-color-info);
778
+ }
779
+ .bt-alert--success .bt-alert__title {
780
+ color: var(--bt-color-success);
781
+ }
782
+ .bt-alert--warning .bt-alert__title {
783
+ color: var(--bt-color-warning);
784
+ }
785
+ .bt-alert--error .bt-alert__title {
786
+ color: var(--bt-color-error);
787
+ }
788
+
789
+ /* ========================================
790
+ Card
791
+ ======================================== */
792
+ .bt-card {
793
+ background: var(--bt-color-background);
794
+ border-radius: var(--bt-radius-lg);
795
+ }
796
+ .bt-card--bordered {
797
+ border: 1px solid var(--bt-color-border);
798
+ }
799
+ .bt-card--shadow-sm {
800
+ box-shadow: var(--bt-shadow-sm);
801
+ }
802
+ .bt-card--shadow-md {
803
+ box-shadow: var(--bt-shadow-md);
804
+ }
805
+ .bt-card--shadow-lg {
806
+ box-shadow: var(--bt-shadow-lg);
807
+ }
808
+ .bt-card--p-sm {
809
+ padding: var(--bt-spacing-sm);
810
+ }
811
+ .bt-card--p-md {
812
+ padding: var(--bt-spacing-lg);
813
+ }
814
+ .bt-card--p-lg {
815
+ padding: var(--bt-spacing-2xl);
816
+ }
817
+ .bt-card__title {
818
+ font-size: var(--bt-font-size-xl);
819
+ font-weight: var(--bt-font-weight-semibold);
820
+ line-height: 1.3;
821
+ margin-bottom: var(--bt-spacing-md);
822
+ color: var(--bt-color-text-primary);
823
+ }
824
+
825
+ /* ========================================
826
+ Spinner
827
+ ======================================== */
828
+ @keyframes bt-spinner-spin {
829
+ to {
830
+ transform: rotate(360deg);
831
+ }
832
+ }
833
+ .bt-spinner {
834
+ display: inline-block;
835
+ box-sizing: border-box;
836
+ border-radius: 50%;
837
+ border: 2px solid var(--bt-color-border);
838
+ border-top-color: var(--bt-color-primary);
839
+ animation: bt-spinner-spin 0.8s linear infinite;
840
+ }
841
+ .bt-spinner--sm {
842
+ width: 16px;
843
+ height: 16px;
844
+ }
845
+ .bt-spinner--md {
846
+ width: 24px;
847
+ height: 24px;
848
+ }
849
+ .bt-spinner--lg {
850
+ width: 32px;
851
+ height: 32px;
852
+ }
853
+ .bt-spinner--xl {
854
+ width: 48px;
855
+ height: 48px;
856
+ }
857
+
858
+ /* ========================================
859
+ Pagination
860
+ ======================================== */
861
+ .bt-pagination {
862
+ display: flex;
863
+ align-items: center;
864
+ justify-content: center;
865
+ gap: var(--bt-spacing-sm);
866
+ margin-top: var(--bt-spacing-3xl);
867
+ }
868
+ .bt-pagination__item {
869
+ border: 1px solid var(--bt-color-border);
870
+ background: var(--bt-color-background);
871
+ border-radius: var(--bt-radius-md);
872
+ padding: 6px 10px;
873
+ min-width: 36px;
874
+ font-family: var(--bt-font-family);
875
+ font-size: var(--bt-font-size-sm);
876
+ color: var(--bt-color-text-primary);
877
+ cursor: pointer;
878
+ transition: background var(--bt-transition-base), border-color var(--bt-transition-base);
879
+ }
880
+ .bt-pagination__item:hover:not(:disabled) {
881
+ background: var(--bt-color-background-secondary);
882
+ }
883
+ .bt-pagination__item:disabled {
884
+ opacity: 0.5;
885
+ cursor: not-allowed;
886
+ }
887
+ .bt-pagination__pages {
888
+ display: flex;
889
+ align-items: center;
890
+ gap: 6px;
891
+ }
892
+ .bt-pagination__page {
893
+ border: 0;
894
+ background: transparent;
895
+ min-width: 36px;
896
+ height: 36px;
897
+ border-radius: var(--bt-radius-md);
898
+ font-family: var(--bt-font-family);
899
+ font-size: var(--bt-font-size-sm);
900
+ color: var(--bt-color-text-secondary);
901
+ cursor: pointer;
902
+ transition: background var(--bt-transition-base), color var(--bt-transition-base);
903
+ }
904
+ .bt-pagination__page:hover {
905
+ background: var(--bt-color-background-secondary);
906
+ color: var(--bt-color-text-primary);
907
+ }
908
+ .bt-pagination__page--active {
909
+ color: var(--bt-color-text-primary);
910
+ font-weight: var(--bt-font-weight-semibold);
911
+ }
912
+ .bt-pagination__ellipsis {
913
+ min-width: 20px;
914
+ text-align: center;
915
+ font-size: var(--bt-font-size-sm);
916
+ color: var(--bt-color-text-tertiary);
917
+ }
918
+
919
+ /* ========================================
920
+ DatePicker
921
+ ======================================== */
922
+ .bt-date-picker {
923
+ display: flex;
924
+ flex-direction: column;
925
+ gap: var(--bt-spacing-xs);
926
+ }
927
+ .bt-date-picker__label {
928
+ color: var(--bt-color-text-primary);
929
+ margin-bottom: var(--bt-spacing-xs);
930
+ font-weight: var(--bt-font-weight-medium);
931
+ font-size: var(--bt-font-size-sm);
932
+ line-height: var(--bt-line-height-normal);
933
+ }
934
+ .bt-date-picker__label-required {
935
+ margin-left: var(--bt-spacing-xs);
936
+ color: var(--bt-color-error);
937
+ }
938
+ .bt-date-picker__fields {
939
+ display: flex;
940
+ gap: var(--bt-spacing-sm);
941
+ }
942
+ .bt-date-picker__select {
943
+ min-width: 88px;
944
+ height: 44px;
945
+ padding: 0 var(--bt-spacing-md);
946
+ font-family: var(--bt-font-family);
947
+ font-size: var(--bt-font-size-base);
948
+ color: var(--bt-color-text-primary);
949
+ background-color: var(--bt-color-background);
950
+ border: 1px solid var(--bt-color-border);
951
+ border-radius: var(--bt-radius-sm);
952
+ cursor: pointer;
953
+ transition: border-color var(--bt-transition-fast), box-shadow var(--bt-transition-fast), background-color var(--bt-transition-fast);
954
+ appearance: none;
955
+ background-image: linear-gradient(45deg, transparent 50%, var(--bt-color-text-secondary) 50%), linear-gradient(135deg, var(--bt-color-text-secondary) 50%, transparent 50%);
956
+ background-position: calc(100% - 16px) calc(50% - 3px), calc(100% - 11px) calc(50% - 3px);
957
+ background-size: 5px 5px;
958
+ background-repeat: no-repeat;
959
+ }
960
+ .bt-date-picker__select:hover:not(:disabled) {
961
+ border-color: var(--bt-color-primary);
962
+ background-color: var(--bt-color-background-secondary);
963
+ }
964
+ .bt-date-picker__select:focus-visible {
965
+ outline: none;
966
+ border-color: var(--bt-color-primary);
967
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
968
+ }
969
+ .bt-date-picker__select:disabled {
970
+ cursor: not-allowed;
971
+ color: var(--bt-text-disabled);
972
+ background-color: var(--bt-color-background-secondary);
973
+ border-color: var(--bt-color-border-light);
974
+ }
975
+ .bt-date-picker--full-width {
976
+ width: 100%;
977
+ }
978
+ .bt-date-picker--full-width .bt-date-picker__fields {
979
+ width: 100%;
980
+ }
981
+ .bt-date-picker--full-width .bt-date-picker__select {
982
+ flex: 1;
983
+ min-width: 0;
984
+ }
985
+
986
+ /* ========================================
987
+ FileInput
988
+ ======================================== */
989
+ .bt-file-input {
990
+ position: relative;
991
+ display: inline-flex;
992
+ align-items: center;
993
+ }
994
+ .bt-file-input:hover .bt-file-input__label {
995
+ border-color: var(--bt-color-border-light);
996
+ }
997
+ .bt-file-input__control {
998
+ position: absolute;
999
+ inset: 0;
1000
+ opacity: 0;
1001
+ cursor: pointer;
1002
+ }
1003
+ .bt-file-input__label {
1004
+ border: 1px solid var(--bt-color-border);
1005
+ border-radius: var(--bt-radius-md);
1006
+ background: var(--bt-color-background);
1007
+ padding: var(--bt-spacing-sm) var(--bt-spacing-lg);
1008
+ font-family: var(--bt-font-family);
1009
+ font-size: var(--bt-font-size-base);
1010
+ color: var(--bt-color-text-primary);
1011
+ transition: background var(--bt-transition-base), border-color var(--bt-transition-base), box-shadow var(--bt-transition-base);
1012
+ }
1013
+ .bt-file-input__control:focus-visible + .bt-file-input__label {
1014
+ box-shadow: 0 0 0 3px var(--bt-color-border-light);
1015
+ border-color: var(--bt-color-primary);
1016
+ }
1017
+ .bt-file-input--disabled {
1018
+ cursor: not-allowed;
1019
+ }
1020
+ .bt-file-input--disabled .bt-file-input__control {
1021
+ cursor: not-allowed;
1022
+ }
1023
+ .bt-file-input--disabled .bt-file-input__label {
1024
+ opacity: 0.6;
1025
+ cursor: not-allowed;
1026
+ }
1027
+ .bt-file-input--disabled:hover .bt-file-input__label {
1028
+ border-color: var(--bt-color-border);
1029
+ }
1030
+
1031
+ /* ========================================
1032
+ Toast (react-toastify compatible)
1033
+ ======================================== */
1034
+ .bt-toast {
1035
+ font-family: var(--bt-font-family);
1036
+ font-size: var(--bt-font-size-base);
1037
+ border-radius: var(--bt-radius-md);
1038
+ box-shadow: var(--bt-shadow-lg);
1039
+ }
1040
+
1041
+ /* ========================================
1042
+ Utility Classes
1043
+ ======================================== */
1044
+ .bt-hidden {
1045
+ display: none !important;
1046
+ }
1047
+
1048
+ .bt-sr-only {
1049
+ position: absolute;
1050
+ width: 1px;
1051
+ height: 1px;
1052
+ padding: 0;
1053
+ margin: -1px;
1054
+ overflow: hidden;
1055
+ clip: rect(0, 0, 0, 0);
1056
+ white-space: nowrap;
1057
+ border: 0;
1058
+ }
1059
+
1060
+ /*# sourceMappingURL=bigtablet.css.map */