zenkit-css 1.0.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.
Files changed (96) hide show
  1. package/README.md +182 -0
  2. package/dist/zenkit.css +33721 -0
  3. package/dist/zenkit.css.map +1 -0
  4. package/dist/zenkit.min.css +1 -0
  5. package/dist/zenkit.min.css.map +1 -0
  6. package/package.json +41 -0
  7. package/scss/abstracts/_functions.scss +174 -0
  8. package/scss/abstracts/_mixins.scss +272 -0
  9. package/scss/abstracts/_variables.scss +216 -0
  10. package/scss/base/_reset.scss +130 -0
  11. package/scss/base/_root.scss +194 -0
  12. package/scss/base/_typography.scss +271 -0
  13. package/scss/components/_accordion.scss +200 -0
  14. package/scss/components/_affix.scss +278 -0
  15. package/scss/components/_alerts.scss +175 -0
  16. package/scss/components/_anchor.scss +438 -0
  17. package/scss/components/_autocomplete.scss +530 -0
  18. package/scss/components/_avatar.scss +256 -0
  19. package/scss/components/_backtop.scss +329 -0
  20. package/scss/components/_badges.scss +266 -0
  21. package/scss/components/_breadcrumb.scss +102 -0
  22. package/scss/components/_buttons.scss +340 -0
  23. package/scss/components/_calendar.scss +787 -0
  24. package/scss/components/_cards.scss +265 -0
  25. package/scss/components/_carousel.scss +306 -0
  26. package/scss/components/_cascader.scss +510 -0
  27. package/scss/components/_close-button.scss +106 -0
  28. package/scss/components/_colorpicker.scss +593 -0
  29. package/scss/components/_datepicker.scss +625 -0
  30. package/scss/components/_descriptions.scss +453 -0
  31. package/scss/components/_divider.scss +253 -0
  32. package/scss/components/_drawer.scss +485 -0
  33. package/scss/components/_dropdown.scss +323 -0
  34. package/scss/components/_empty.scss +321 -0
  35. package/scss/components/_floatbutton.scss +400 -0
  36. package/scss/components/_forms.scss +753 -0
  37. package/scss/components/_image.scss +497 -0
  38. package/scss/components/_inputnumber.scss +475 -0
  39. package/scss/components/_layout.scss +538 -0
  40. package/scss/components/_list-group.scss +227 -0
  41. package/scss/components/_list.scss +528 -0
  42. package/scss/components/_mentions.scss +479 -0
  43. package/scss/components/_menu.scss +510 -0
  44. package/scss/components/_message.scss +412 -0
  45. package/scss/components/_modal.scss +304 -0
  46. package/scss/components/_navbar.scss +329 -0
  47. package/scss/components/_notification.scss +499 -0
  48. package/scss/components/_offcanvas.scss +274 -0
  49. package/scss/components/_pagination.scss +176 -0
  50. package/scss/components/_placeholder.scss +237 -0
  51. package/scss/components/_popconfirm.scss +393 -0
  52. package/scss/components/_popover.scss +298 -0
  53. package/scss/components/_progress.scss +225 -0
  54. package/scss/components/_rating.scss +314 -0
  55. package/scss/components/_result.scss +383 -0
  56. package/scss/components/_segmented.scss +441 -0
  57. package/scss/components/_select.scss +412 -0
  58. package/scss/components/_spinners.scss +229 -0
  59. package/scss/components/_statistic.scss +336 -0
  60. package/scss/components/_steps.scss +343 -0
  61. package/scss/components/_tabs.scss +239 -0
  62. package/scss/components/_tag.scss +317 -0
  63. package/scss/components/_timeline.scss +341 -0
  64. package/scss/components/_timepicker.scss +468 -0
  65. package/scss/components/_toast.scss +279 -0
  66. package/scss/components/_tooltip.scss +305 -0
  67. package/scss/components/_tour.scss +488 -0
  68. package/scss/components/_transfer.scss +556 -0
  69. package/scss/components/_tree.scss +518 -0
  70. package/scss/components/_treeselect.scss +531 -0
  71. package/scss/components/_upload.scss +510 -0
  72. package/scss/components/_watermark.scss +314 -0
  73. package/scss/content/_figures.scss +38 -0
  74. package/scss/content/_images.scss +138 -0
  75. package/scss/content/_tables.scss +232 -0
  76. package/scss/layout/_container.scss +71 -0
  77. package/scss/layout/_grid.scss +258 -0
  78. package/scss/utilities/_animations.scss +494 -0
  79. package/scss/utilities/_borders.scss +246 -0
  80. package/scss/utilities/_colors.scss +194 -0
  81. package/scss/utilities/_display.scss +263 -0
  82. package/scss/utilities/_filters.scss +328 -0
  83. package/scss/utilities/_flex.scss +178 -0
  84. package/scss/utilities/_float.scss +70 -0
  85. package/scss/utilities/_grid-utils.scss +151 -0
  86. package/scss/utilities/_helpers.scss +479 -0
  87. package/scss/utilities/_interactions.scss +249 -0
  88. package/scss/utilities/_overflow.scss +204 -0
  89. package/scss/utilities/_position.scss +245 -0
  90. package/scss/utilities/_shadows.scss +67 -0
  91. package/scss/utilities/_sizing.scss +217 -0
  92. package/scss/utilities/_spacing.scss +207 -0
  93. package/scss/utilities/_text.scss +237 -0
  94. package/scss/utilities/_transforms.scss +368 -0
  95. package/scss/utilities/_visibility.scss +251 -0
  96. package/scss/zenkit.scss +121 -0
@@ -0,0 +1,753 @@
1
+ // ========================================
2
+ // ZenKit - Forms
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+ @use '../abstracts/mixins' as *;
7
+
8
+ // ----------------------------------------
9
+ // Form Control (Input, Textarea, Select)
10
+ // ----------------------------------------
11
+ .form-control {
12
+ @include form-control;
13
+ }
14
+
15
+ // Sizes
16
+ .form-control-sm {
17
+ padding: 0.375rem 0.75rem;
18
+ font-size: var(--text-sm);
19
+ border-radius: var(--radius-sm);
20
+ }
21
+
22
+ .form-control-lg {
23
+ padding: 0.875rem 1rem;
24
+ font-size: var(--text-lg);
25
+ border-radius: var(--radius-md);
26
+ }
27
+
28
+ // ----------------------------------------
29
+ // Form Label
30
+ // ----------------------------------------
31
+ .form-label {
32
+ display: inline-block;
33
+ margin-bottom: 0.5rem;
34
+ font-size: var(--text-sm);
35
+ font-weight: $font-weight-medium;
36
+ color: var(--text);
37
+ }
38
+
39
+ .form-label-required::after {
40
+ content: " *";
41
+ color: var(--danger);
42
+ }
43
+
44
+ // ----------------------------------------
45
+ // Form Group
46
+ // ----------------------------------------
47
+ .form-group {
48
+ margin-bottom: 1rem;
49
+ }
50
+
51
+ // ----------------------------------------
52
+ // Form Text (Help Text)
53
+ // ----------------------------------------
54
+ .form-text {
55
+ display: block;
56
+ margin-top: 0.25rem;
57
+ font-size: var(--text-sm);
58
+ color: var(--text-muted);
59
+ }
60
+
61
+ // ----------------------------------------
62
+ // Form Validation States
63
+ // ----------------------------------------
64
+ .form-control.is-valid {
65
+ border-color: var(--success);
66
+
67
+ &:focus {
68
+ border-color: var(--success);
69
+ box-shadow: 0 0 0 3px rgba($success, 0.15);
70
+ }
71
+ }
72
+
73
+ .form-control.is-invalid {
74
+ border-color: var(--danger);
75
+
76
+ &:focus {
77
+ border-color: var(--danger);
78
+ box-shadow: 0 0 0 3px rgba($danger, 0.15);
79
+ }
80
+ }
81
+
82
+ .valid-feedback {
83
+ display: none;
84
+ margin-top: 0.25rem;
85
+ font-size: var(--text-sm);
86
+ color: var(--success);
87
+ }
88
+
89
+ .invalid-feedback {
90
+ display: none;
91
+ margin-top: 0.25rem;
92
+ font-size: var(--text-sm);
93
+ color: var(--danger);
94
+ }
95
+
96
+ .is-valid ~ .valid-feedback,
97
+ .is-invalid ~ .invalid-feedback {
98
+ display: block;
99
+ }
100
+
101
+ // ----------------------------------------
102
+ // Select
103
+ // ----------------------------------------
104
+ .form-select {
105
+ @include form-control;
106
+ appearance: none;
107
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23475569' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");
108
+ background-repeat: no-repeat;
109
+ background-position: right 0.75rem center;
110
+ background-size: 1rem;
111
+ padding-right: 2.5rem;
112
+ cursor: pointer;
113
+ }
114
+
115
+ .form-select-sm {
116
+ padding: 0.375rem 2rem 0.375rem 0.75rem;
117
+ font-size: var(--text-sm);
118
+ }
119
+
120
+ .form-select-lg {
121
+ padding: 0.875rem 2.5rem 0.875rem 1rem;
122
+ font-size: var(--text-lg);
123
+ }
124
+
125
+ // ----------------------------------------
126
+ // Checkbox & Radio
127
+ // ----------------------------------------
128
+ .form-check {
129
+ display: flex;
130
+ align-items: flex-start;
131
+ gap: 0.5rem;
132
+ margin-bottom: 0.5rem;
133
+ }
134
+
135
+ .form-check-input {
136
+ flex-shrink: 0;
137
+ width: 1.125rem;
138
+ height: 1.125rem;
139
+ margin-top: 0.125rem;
140
+ appearance: none;
141
+ background-color: var(--bg);
142
+ border: 2px solid var(--border-dark);
143
+ cursor: pointer;
144
+ transition: all var(--transition-fast) ease-in-out;
145
+
146
+ &[type="checkbox"] {
147
+ border-radius: var(--radius-sm);
148
+ }
149
+
150
+ &[type="radio"] {
151
+ border-radius: 50%;
152
+ }
153
+
154
+ &:checked {
155
+ background-color: var(--primary);
156
+ border-color: var(--primary);
157
+ }
158
+
159
+ &[type="checkbox"]:checked {
160
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='white' d='M10.28 2.28L4.5 8.06 1.72 5.28a.75.75 0 00-1.06 1.06l3.25 3.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06z'/%3E%3C/svg%3E");
161
+ background-repeat: no-repeat;
162
+ background-position: center;
163
+ background-size: 0.75rem;
164
+ }
165
+
166
+ &[type="radio"]:checked {
167
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Ccircle fill='white' cx='4' cy='4' r='4'/%3E%3C/svg%3E");
168
+ background-repeat: no-repeat;
169
+ background-position: center;
170
+ }
171
+
172
+ &:focus {
173
+ outline: none;
174
+ box-shadow: 0 0 0 3px rgba($primary, 0.15);
175
+ }
176
+
177
+ &:disabled {
178
+ opacity: 0.5;
179
+ cursor: not-allowed;
180
+ }
181
+ }
182
+
183
+ .form-check-label {
184
+ font-size: var(--text-base);
185
+ color: var(--text);
186
+ cursor: pointer;
187
+ }
188
+
189
+ // Inline checkboxes
190
+ .form-check-inline {
191
+ display: inline-flex;
192
+ margin-right: 1rem;
193
+ }
194
+
195
+ // ----------------------------------------
196
+ // Switch
197
+ // ----------------------------------------
198
+ .form-switch {
199
+ display: flex;
200
+ align-items: center;
201
+ gap: 0.5rem;
202
+ }
203
+
204
+ .form-switch-input {
205
+ flex-shrink: 0;
206
+ width: 2.5rem;
207
+ height: 1.375rem;
208
+ appearance: none;
209
+ background-color: var(--gray-300);
210
+ border-radius: var(--radius-full);
211
+ cursor: pointer;
212
+ transition: background-color var(--transition-fast) ease-in-out;
213
+ position: relative;
214
+
215
+ &::before {
216
+ content: "";
217
+ position: absolute;
218
+ top: 2px;
219
+ left: 2px;
220
+ width: 1rem;
221
+ height: 1rem;
222
+ background-color: var(--white);
223
+ border-radius: 50%;
224
+ transition: transform var(--transition-fast) ease-in-out;
225
+ box-shadow: var(--shadow-sm);
226
+ }
227
+
228
+ &:checked {
229
+ background-color: var(--primary);
230
+
231
+ &::before {
232
+ transform: translateX(1.125rem);
233
+ }
234
+ }
235
+
236
+ &:focus {
237
+ outline: none;
238
+ box-shadow: 0 0 0 3px rgba($primary, 0.15);
239
+ }
240
+
241
+ &:disabled {
242
+ opacity: 0.5;
243
+ cursor: not-allowed;
244
+ }
245
+ }
246
+
247
+ // ----------------------------------------
248
+ // Range
249
+ // ----------------------------------------
250
+ .form-range {
251
+ width: 100%;
252
+ height: 1.5rem;
253
+ appearance: none;
254
+ background: transparent;
255
+ cursor: pointer;
256
+
257
+ &::-webkit-slider-track {
258
+ height: 0.5rem;
259
+ background-color: var(--gray-200);
260
+ border-radius: var(--radius-full);
261
+ }
262
+
263
+ &::-webkit-slider-thumb {
264
+ appearance: none;
265
+ width: 1.25rem;
266
+ height: 1.25rem;
267
+ margin-top: -0.375rem;
268
+ background-color: var(--primary);
269
+ border-radius: 50%;
270
+ cursor: pointer;
271
+ transition: transform var(--transition-fast) ease-in-out;
272
+
273
+ &:hover {
274
+ transform: scale(1.1);
275
+ }
276
+ }
277
+
278
+ &::-moz-range-track {
279
+ height: 0.5rem;
280
+ background-color: var(--gray-200);
281
+ border-radius: var(--radius-full);
282
+ }
283
+
284
+ &::-moz-range-thumb {
285
+ width: 1.25rem;
286
+ height: 1.25rem;
287
+ background-color: var(--primary);
288
+ border: none;
289
+ border-radius: 50%;
290
+ cursor: pointer;
291
+ }
292
+
293
+ &:focus {
294
+ outline: none;
295
+ }
296
+
297
+ &:disabled {
298
+ opacity: 0.5;
299
+ cursor: not-allowed;
300
+ }
301
+ }
302
+
303
+ // ----------------------------------------
304
+ // Input Group
305
+ // ----------------------------------------
306
+ .input-group {
307
+ display: flex;
308
+ width: 100%;
309
+
310
+ > .form-control {
311
+ flex: 1;
312
+ border-radius: 0;
313
+
314
+ &:first-child {
315
+ border-top-left-radius: var(--radius);
316
+ border-bottom-left-radius: var(--radius);
317
+ }
318
+
319
+ &:last-child {
320
+ border-top-right-radius: var(--radius);
321
+ border-bottom-right-radius: var(--radius);
322
+ }
323
+
324
+ &:not(:last-child) {
325
+ border-right: none;
326
+ }
327
+
328
+ &:focus {
329
+ z-index: 1;
330
+ }
331
+ }
332
+ }
333
+
334
+ .input-group-text {
335
+ display: flex;
336
+ align-items: center;
337
+ padding: 0.625rem 0.875rem;
338
+ font-size: var(--text-base);
339
+ color: var(--text-muted);
340
+ background-color: var(--bg-muted);
341
+ border: $border-width solid var(--border);
342
+
343
+ &:first-child {
344
+ border-top-left-radius: var(--radius);
345
+ border-bottom-left-radius: var(--radius);
346
+ border-right: none;
347
+ }
348
+
349
+ &:last-child {
350
+ border-top-right-radius: var(--radius);
351
+ border-bottom-right-radius: var(--radius);
352
+ border-left: none;
353
+ }
354
+ }
355
+
356
+ // ----------------------------------------
357
+ // Floating Labels
358
+ // ----------------------------------------
359
+ .form-floating {
360
+ position: relative;
361
+
362
+ > .form-control {
363
+ height: calc(3.5rem + 2px);
364
+ padding: 1rem 0.875rem;
365
+
366
+ &::placeholder {
367
+ color: transparent;
368
+ }
369
+
370
+ &:focus,
371
+ &:not(:placeholder-shown) {
372
+ padding-top: 1.625rem;
373
+ padding-bottom: 0.375rem;
374
+ }
375
+
376
+ &:focus ~ label,
377
+ &:not(:placeholder-shown) ~ label {
378
+ opacity: 0.65;
379
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
380
+ }
381
+ }
382
+
383
+ > label {
384
+ position: absolute;
385
+ top: 0;
386
+ left: 0;
387
+ height: 100%;
388
+ padding: 1rem 0.875rem;
389
+ pointer-events: none;
390
+ border: $border-width solid transparent;
391
+ transform-origin: 0 0;
392
+ transition: opacity var(--transition-fast) ease-in-out,
393
+ transform var(--transition-fast) ease-in-out;
394
+ color: var(--text-muted);
395
+ }
396
+ }
397
+
398
+ // ----------------------------------------
399
+ // File Input
400
+ // ----------------------------------------
401
+ .form-file {
402
+ position: relative;
403
+ display: inline-block;
404
+ width: 100%;
405
+ }
406
+
407
+ .form-file-input {
408
+ position: relative;
409
+ z-index: 2;
410
+ width: 100%;
411
+ height: calc(2.5rem + 2px);
412
+ margin: 0;
413
+ opacity: 0;
414
+ cursor: pointer;
415
+ }
416
+
417
+ .form-file-label {
418
+ position: absolute;
419
+ top: 0;
420
+ right: 0;
421
+ left: 0;
422
+ z-index: 1;
423
+ display: flex;
424
+ height: calc(2.5rem + 2px);
425
+ border: $border-width solid var(--border);
426
+ border-radius: var(--radius);
427
+ background-color: var(--bg);
428
+ }
429
+
430
+ .form-file-text {
431
+ display: block;
432
+ flex-grow: 1;
433
+ padding: 0.625rem 0.875rem;
434
+ overflow: hidden;
435
+ font-weight: $font-weight-normal;
436
+ color: var(--text-muted);
437
+ text-overflow: ellipsis;
438
+ white-space: nowrap;
439
+ }
440
+
441
+ .form-file-button {
442
+ display: block;
443
+ flex-shrink: 0;
444
+ padding: 0.625rem 0.875rem;
445
+ color: var(--text);
446
+ background-color: var(--bg-muted);
447
+ border-left: $border-width solid var(--border);
448
+ border-radius: 0 var(--radius) var(--radius) 0;
449
+ }
450
+
451
+ // ----------------------------------------
452
+ // Color Picker
453
+ // ----------------------------------------
454
+ .form-control-color {
455
+ width: 3rem;
456
+ height: calc(2.5rem + 2px);
457
+ padding: 0.375rem;
458
+ background-color: var(--bg);
459
+ border: $border-width solid var(--border);
460
+ border-radius: var(--radius);
461
+ cursor: pointer;
462
+
463
+ &::-moz-color-swatch {
464
+ border: 0;
465
+ border-radius: calc(var(--radius) - 2px);
466
+ }
467
+
468
+ &::-webkit-color-swatch-wrapper {
469
+ padding: 0;
470
+ }
471
+
472
+ &::-webkit-color-swatch {
473
+ border: 0;
474
+ border-radius: calc(var(--radius) - 2px);
475
+ }
476
+
477
+ &:focus {
478
+ outline: none;
479
+ border-color: var(--primary);
480
+ box-shadow: 0 0 0 3px rgba($primary, 0.15);
481
+ }
482
+
483
+ &:disabled {
484
+ opacity: 0.5;
485
+ cursor: not-allowed;
486
+ }
487
+ }
488
+
489
+ .form-control-color-lg {
490
+ width: 4rem;
491
+ height: calc(3rem + 2px);
492
+ }
493
+
494
+ .form-control-color-sm {
495
+ width: 2.5rem;
496
+ height: calc(2rem + 2px);
497
+ }
498
+
499
+ // ----------------------------------------
500
+ // Plaintext Form Control
501
+ // ----------------------------------------
502
+ .form-control-plaintext {
503
+ display: block;
504
+ width: 100%;
505
+ padding: 0.625rem 0;
506
+ margin-bottom: 0;
507
+ line-height: $line-height-normal;
508
+ color: var(--text);
509
+ background-color: transparent;
510
+ border: solid transparent;
511
+ border-width: $border-width 0;
512
+
513
+ &:focus {
514
+ outline: none;
515
+ }
516
+
517
+ &.form-control-sm {
518
+ padding-right: 0;
519
+ padding-left: 0;
520
+ }
521
+
522
+ &.form-control-lg {
523
+ padding-right: 0;
524
+ padding-left: 0;
525
+ }
526
+ }
527
+
528
+ // ----------------------------------------
529
+ // Button Check (Toggle Buttons)
530
+ // ----------------------------------------
531
+ .btn-check {
532
+ position: absolute;
533
+ clip: rect(0, 0, 0, 0);
534
+ pointer-events: none;
535
+
536
+ &[disabled] + .btn,
537
+ &:disabled + .btn {
538
+ pointer-events: none;
539
+ filter: none;
540
+ opacity: 0.65;
541
+ }
542
+ }
543
+
544
+ // Solid button check styles
545
+ .btn-check:checked + .btn-primary,
546
+ .btn-check:active + .btn-primary {
547
+ background-color: var(--primary-700);
548
+ border-color: var(--primary-700);
549
+ }
550
+
551
+ .btn-check:checked + .btn-secondary,
552
+ .btn-check:active + .btn-secondary {
553
+ background-color: var(--gray-700);
554
+ border-color: var(--gray-700);
555
+ }
556
+
557
+ .btn-check:checked + .btn-success,
558
+ .btn-check:active + .btn-success {
559
+ background-color: var(--success-dark);
560
+ border-color: var(--success-dark);
561
+ }
562
+
563
+ .btn-check:checked + .btn-danger,
564
+ .btn-check:active + .btn-danger {
565
+ background-color: var(--danger-dark);
566
+ border-color: var(--danger-dark);
567
+ }
568
+
569
+ .btn-check:checked + .btn-warning,
570
+ .btn-check:active + .btn-warning {
571
+ background-color: var(--warning-dark);
572
+ border-color: var(--warning-dark);
573
+ }
574
+
575
+ .btn-check:checked + .btn-info,
576
+ .btn-check:active + .btn-info {
577
+ background-color: var(--info-dark);
578
+ border-color: var(--info-dark);
579
+ }
580
+
581
+ // Outline button check styles
582
+ .btn-check:checked + .btn-outline-primary,
583
+ .btn-check:active + .btn-outline-primary {
584
+ color: var(--white);
585
+ background-color: var(--primary);
586
+ border-color: var(--primary);
587
+ }
588
+
589
+ .btn-check:checked + .btn-outline-secondary,
590
+ .btn-check:active + .btn-outline-secondary {
591
+ color: var(--white);
592
+ background-color: var(--gray-600);
593
+ border-color: var(--gray-600);
594
+ }
595
+
596
+ .btn-check:checked + .btn-outline-success,
597
+ .btn-check:active + .btn-outline-success {
598
+ color: var(--white);
599
+ background-color: var(--success);
600
+ border-color: var(--success);
601
+ }
602
+
603
+ .btn-check:checked + .btn-outline-danger,
604
+ .btn-check:active + .btn-outline-danger {
605
+ color: var(--white);
606
+ background-color: var(--danger);
607
+ border-color: var(--danger);
608
+ }
609
+
610
+ .btn-check:checked + .btn-outline-warning,
611
+ .btn-check:active + .btn-outline-warning {
612
+ color: var(--gray-900);
613
+ background-color: var(--warning);
614
+ border-color: var(--warning);
615
+ }
616
+
617
+ .btn-check:checked + .btn-outline-info,
618
+ .btn-check:active + .btn-outline-info {
619
+ color: var(--white);
620
+ background-color: var(--info);
621
+ border-color: var(--info);
622
+ }
623
+
624
+ .btn-check:checked + .btn-outline-dark,
625
+ .btn-check:active + .btn-outline-dark {
626
+ color: var(--white);
627
+ background-color: var(--gray-900);
628
+ border-color: var(--gray-900);
629
+ }
630
+
631
+ .btn-check:checked + .btn-outline-light,
632
+ .btn-check:active + .btn-outline-light {
633
+ color: var(--gray-900);
634
+ background-color: var(--gray-100);
635
+ border-color: var(--gray-100);
636
+ }
637
+
638
+ // Focus state for btn-check
639
+ .btn-check:focus + .btn {
640
+ box-shadow: 0 0 0 0.25rem rgba($primary, 0.25);
641
+ }
642
+
643
+ .btn-check:focus:not(:checked) + .btn-outline-primary {
644
+ color: var(--primary);
645
+ }
646
+
647
+ .btn-check:focus:not(:checked) + .btn-outline-secondary {
648
+ color: var(--gray-600);
649
+ }
650
+
651
+ // ----------------------------------------
652
+ // Input Group Sizes
653
+ // ----------------------------------------
654
+ .input-group-sm {
655
+ > .form-control,
656
+ > .form-select {
657
+ padding: 0.375rem 0.75rem;
658
+ font-size: var(--text-sm);
659
+ border-radius: 0;
660
+
661
+ &:first-child {
662
+ border-top-left-radius: var(--radius-sm);
663
+ border-bottom-left-radius: var(--radius-sm);
664
+ }
665
+
666
+ &:last-child {
667
+ border-top-right-radius: var(--radius-sm);
668
+ border-bottom-right-radius: var(--radius-sm);
669
+ }
670
+ }
671
+
672
+ > .input-group-text {
673
+ padding: 0.375rem 0.75rem;
674
+ font-size: var(--text-sm);
675
+ }
676
+
677
+ > .btn {
678
+ padding: 0.375rem 0.75rem;
679
+ font-size: var(--text-sm);
680
+ }
681
+ }
682
+
683
+ .input-group-lg {
684
+ > .form-control,
685
+ > .form-select {
686
+ padding: 0.875rem 1rem;
687
+ font-size: var(--text-lg);
688
+ border-radius: 0;
689
+
690
+ &:first-child {
691
+ border-top-left-radius: var(--radius-lg);
692
+ border-bottom-left-radius: var(--radius-lg);
693
+ }
694
+
695
+ &:last-child {
696
+ border-top-right-radius: var(--radius-lg);
697
+ border-bottom-right-radius: var(--radius-lg);
698
+ }
699
+ }
700
+
701
+ > .input-group-text {
702
+ padding: 0.875rem 1rem;
703
+ font-size: var(--text-lg);
704
+ }
705
+
706
+ > .btn {
707
+ padding: 0.875rem 1rem;
708
+ font-size: var(--text-lg);
709
+ }
710
+ }
711
+
712
+ // ----------------------------------------
713
+ // Input Group with Button
714
+ // ----------------------------------------
715
+ .input-group {
716
+ > .btn {
717
+ position: relative;
718
+ z-index: 2;
719
+ border-radius: 0;
720
+
721
+ &:first-child {
722
+ border-top-left-radius: var(--radius);
723
+ border-bottom-left-radius: var(--radius);
724
+ }
725
+
726
+ &:last-child {
727
+ border-top-right-radius: var(--radius);
728
+ border-bottom-right-radius: var(--radius);
729
+ }
730
+ }
731
+
732
+ > .form-control:focus,
733
+ > .form-select:focus {
734
+ z-index: 3;
735
+ }
736
+
737
+ > .btn:focus {
738
+ z-index: 4;
739
+ }
740
+ }
741
+
742
+ // Multiple inputs
743
+ .input-group > .form-control:not(:first-child):not(:last-child) {
744
+ border-radius: 0;
745
+ }
746
+
747
+ // ----------------------------------------
748
+ // Form Readonly
749
+ // ----------------------------------------
750
+ .form-control[readonly] {
751
+ background-color: var(--bg-muted);
752
+ opacity: 1;
753
+ }