@bigtablet/design-system 1.17.2 → 1.17.4

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.
@@ -1,1060 +0,0 @@
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 */