@actabldesign/bellhop-styles 0.0.4 → 0.0.12

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 (60) hide show
  1. package/README.md +105 -70
  2. package/dist/index.css +33 -0
  3. package/dist/utilities.css +5730 -0
  4. package/llms.txt +2765 -119
  5. package/package.json +6 -1
  6. package/rollup.config.js +39 -24
  7. package/src/bh-tokens/_primitives.scss +296 -0
  8. package/src/bh-tokens/_semantic.scss +158 -0
  9. package/src/bh-tokens/components/_avatar.tokens.scss +64 -0
  10. package/src/bh-tokens/components/_badge-dot.tokens.scss +33 -0
  11. package/src/bh-tokens/components/_badge.tokens.scss +61 -0
  12. package/src/bh-tokens/components/_button-icon.tokens.scss +65 -0
  13. package/src/bh-tokens/components/_button.tokens.scss +185 -0
  14. package/src/bh-tokens/components/_checkbox.tokens.scss +67 -0
  15. package/src/bh-tokens/components/_dropdown.tokens.scss +103 -0
  16. package/src/bh-tokens/components/_featured-icon.tokens.scss +57 -0
  17. package/src/bh-tokens/components/_input-number.tokens.scss +50 -0
  18. package/src/bh-tokens/components/_input.tokens.scss +86 -0
  19. package/src/bh-tokens/components/_label.tokens.scss +37 -0
  20. package/src/bh-tokens/components/_modal.tokens.scss +42 -0
  21. package/src/bh-tokens/components/_pagination.tokens.scss +104 -0
  22. package/src/bh-tokens/components/_password.tokens.scss +63 -0
  23. package/src/bh-tokens/components/_progress-bar.tokens.scss +34 -0
  24. package/src/bh-tokens/components/_progress-spinner.tokens.scss +51 -0
  25. package/src/bh-tokens/components/_radiobutton.tokens.scss +90 -0
  26. package/src/bh-tokens/components/_skeleton.tokens.scss +22 -0
  27. package/src/bh-tokens/components/_textarea.tokens.scss +76 -0
  28. package/src/bh-tokens/components/_toggle.tokens.scss +74 -0
  29. package/src/bh-tokens/components/avatar.scss +288 -0
  30. package/src/bh-tokens/components/badge-dot.scss +177 -0
  31. package/src/bh-tokens/components/badge.scss +497 -0
  32. package/src/bh-tokens/components/button-icon.scss +227 -0
  33. package/src/bh-tokens/components/button.scss +640 -0
  34. package/src/bh-tokens/components/checkbox.scss +254 -0
  35. package/src/bh-tokens/components/dropdown.scss +231 -0
  36. package/src/bh-tokens/components/featured-icon.scss +219 -0
  37. package/src/bh-tokens/components/input-number.scss +147 -0
  38. package/src/bh-tokens/components/input.scss +271 -0
  39. package/src/bh-tokens/components/label.scss +176 -0
  40. package/src/bh-tokens/components/modal.scss +103 -0
  41. package/src/bh-tokens/components/pagination.scss +324 -0
  42. package/src/bh-tokens/components/password.scss +193 -0
  43. package/src/bh-tokens/components/progress-bar.scss +124 -0
  44. package/src/bh-tokens/components/progress-spinner.scss +130 -0
  45. package/src/bh-tokens/components/radiobutton.scss +193 -0
  46. package/src/bh-tokens/components/skeleton.scss +50 -0
  47. package/src/bh-tokens/components/textarea.scss +228 -0
  48. package/src/bh-tokens/components/toggle.scss +320 -0
  49. package/src/mixins/_responsive.scss +167 -0
  50. package/src/tokens/bellhop-typography.css +34 -0
  51. package/src/utilities/_breakpoints.scss +19 -0
  52. package/src/utilities/_flex.scss +228 -0
  53. package/src/utilities/_grid.scss +189 -0
  54. package/src/utilities/_index.scss +32 -0
  55. package/src/utilities/_scrollable.scss +239 -0
  56. package/src/utilities/_sizing.scss +229 -0
  57. package/src/utilities/_spacing.scss +187 -0
  58. package/src/utilities/_truncation.scss +126 -0
  59. package/src/utilities/_visibility.scss +117 -0
  60. package/src/utilities.scss +32 -0
@@ -0,0 +1,640 @@
1
+ /* ==========================================================================
2
+ BH-BUTTON COMPONENT STYLES
3
+ Uses tokens from _button.tokens.scss
4
+ ========================================================================== */
5
+
6
+ @use './button.tokens' as *;
7
+
8
+ :host {
9
+ display: inline-block;
10
+ position: relative;
11
+ vertical-align: middle;
12
+ }
13
+
14
+ /* ==========================================================================
15
+ BASE BUTTON
16
+ ========================================================================== */
17
+
18
+ .btn {
19
+ display: inline-flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ font-family: var(--bh-button-font-family);
23
+ font-weight: var(--bh-button-font-weight);
24
+ border: 1px solid transparent;
25
+ cursor: pointer;
26
+ text-align: center;
27
+ white-space: nowrap;
28
+ transition: var(--bh-button-transition);
29
+ text-decoration: none;
30
+ outline: none;
31
+ vertical-align: middle;
32
+ box-sizing: border-box;
33
+ }
34
+
35
+ /* ==========================================================================
36
+ BUTTON SIZES
37
+ ========================================================================== */
38
+
39
+ .btn-xs {
40
+ padding: 0 var(--bh-button-padding-x-xs);
41
+ height: var(--bh-button-height-xs);
42
+ border-radius: var(--bh-button-radius);
43
+ font-size: var(--bh-button-font-size-xs);
44
+ gap: var(--bh-button-gap-xs);
45
+ }
46
+
47
+ .btn-sm {
48
+ padding: 0 var(--bh-button-padding-x-sm);
49
+ height: var(--bh-button-height-sm);
50
+ border-radius: var(--bh-button-radius);
51
+ font-size: var(--bh-button-font-size-sm);
52
+ gap: var(--bh-button-gap-sm);
53
+ }
54
+
55
+ .btn-md {
56
+ padding: 0 var(--bh-button-padding-x-md);
57
+ height: var(--bh-button-height-md);
58
+ border-radius: var(--bh-button-radius);
59
+ font-size: var(--bh-button-font-size-md);
60
+ gap: var(--bh-button-gap-md);
61
+ }
62
+
63
+ .btn-lg {
64
+ padding: 0 var(--bh-button-padding-x-lg);
65
+ height: var(--bh-button-height-lg);
66
+ border-radius: var(--bh-button-radius);
67
+ font-size: var(--bh-button-font-size-lg);
68
+ gap: var(--bh-button-gap-lg);
69
+ }
70
+
71
+ /* ==========================================================================
72
+ ICON PADDING COMPENSATION
73
+ ========================================================================== */
74
+
75
+ .btn-xs.btn-icon-leading {
76
+ padding-left: calc(var(--bh-button-padding-x-xs) - var(--bh-button-gap-xs));
77
+ }
78
+
79
+ .btn-sm.btn-icon-leading {
80
+ padding-left: calc(var(--bh-button-padding-x-sm) - var(--bh-button-gap-sm));
81
+ }
82
+
83
+ .btn-md.btn-icon-leading {
84
+ padding-left: calc(var(--bh-button-padding-x-md) - var(--bh-button-gap-md));
85
+ }
86
+
87
+ .btn-lg.btn-icon-leading {
88
+ padding-left: calc(var(--bh-button-padding-x-lg) - var(--bh-button-gap-lg));
89
+ }
90
+
91
+ .btn-xs.btn-icon-trailing {
92
+ padding-right: calc(var(--bh-button-padding-x-xs) - var(--bh-button-gap-xs));
93
+ }
94
+
95
+ .btn-sm.btn-icon-trailing {
96
+ padding-right: calc(var(--bh-button-padding-x-sm) - var(--bh-button-gap-sm));
97
+ }
98
+
99
+ .btn-md.btn-icon-trailing {
100
+ padding-right: calc(var(--bh-button-padding-x-md) - var(--bh-button-gap-md));
101
+ }
102
+
103
+ .btn-lg.btn-icon-trailing {
104
+ padding-right: calc(var(--bh-button-padding-x-lg) - var(--bh-button-gap-lg));
105
+ }
106
+
107
+ /* ==========================================================================
108
+ BUTTON HIERARCHIES - DEFAULT KIND
109
+ ========================================================================== */
110
+
111
+ .btn-primary.btn-default {
112
+ background-color: var(--bh-button-primary-default-bg);
113
+ color: var(--bh-button-primary-default-color);
114
+ border-color: var(--bh-button-primary-default-border);
115
+
116
+ &.btn-icon-leading span,
117
+ &.btn-icon-trailing span,
118
+ .material-symbols-outlined {
119
+ color: var(--bh-button-primary-default-color);
120
+ }
121
+ }
122
+
123
+ .btn-secondary.btn-default {
124
+ background-color: var(--bh-button-secondary-default-bg);
125
+ color: var(--bh-button-secondary-default-color);
126
+ border-color: var(--bh-button-secondary-default-border);
127
+
128
+ &.btn-icon-leading span,
129
+ &.btn-icon-trailing span,
130
+ .material-symbols-outlined {
131
+ color: var(--bh-button-secondary-default-color);
132
+ }
133
+ }
134
+
135
+ .btn-tertiary.btn-default {
136
+ background-color: var(--bh-button-tertiary-default-bg);
137
+ color: var(--bh-button-tertiary-default-color);
138
+ border-color: var(--bh-button-tertiary-default-border);
139
+
140
+ &.btn-icon-leading span,
141
+ &.btn-icon-trailing span,
142
+ .material-symbols-outlined {
143
+ color: var(--bh-button-tertiary-default-color);
144
+ }
145
+ }
146
+
147
+ .btn-quaternary.btn-default {
148
+ background-color: var(--bh-button-quaternary-default-bg);
149
+ color: var(--bh-button-quaternary-default-color);
150
+ border-color: var(--bh-button-quaternary-default-border);
151
+
152
+ &.btn-icon-leading span,
153
+ &.btn-icon-trailing span,
154
+ .material-symbols-outlined {
155
+ color: var(--bh-button-quaternary-default-color);
156
+ }
157
+ }
158
+
159
+ /* ==========================================================================
160
+ BUTTON HIERARCHIES - DESTRUCTIVE KIND
161
+ ========================================================================== */
162
+
163
+ .btn-primary.btn-destructive {
164
+ background-color: var(--bh-button-primary-destructive-bg);
165
+ color: var(--bh-button-primary-destructive-color);
166
+ border-color: var(--bh-button-primary-destructive-border);
167
+
168
+ &.btn-icon-leading span,
169
+ &.btn-icon-trailing span,
170
+ .material-symbols-outlined {
171
+ color: var(--bh-button-primary-destructive-color);
172
+ }
173
+ }
174
+
175
+ .btn-secondary.btn-destructive {
176
+ background-color: var(--bh-button-secondary-destructive-bg);
177
+ color: var(--bh-button-secondary-destructive-color);
178
+ border-color: var(--bh-button-secondary-destructive-border);
179
+
180
+ &.btn-icon-leading span,
181
+ &.btn-icon-trailing span,
182
+ .material-symbols-outlined {
183
+ color: var(--bh-button-secondary-destructive-color);
184
+ }
185
+ }
186
+
187
+ .btn-tertiary.btn-destructive {
188
+ background-color: var(--bh-button-tertiary-destructive-bg);
189
+ color: var(--bh-button-tertiary-destructive-color);
190
+ border-color: var(--bh-button-tertiary-destructive-border);
191
+
192
+ &.btn-icon-leading span,
193
+ &.btn-icon-trailing span,
194
+ .material-symbols-outlined {
195
+ color: var(--bh-button-tertiary-destructive-color);
196
+ }
197
+ }
198
+
199
+ .btn-quaternary.btn-destructive {
200
+ background-color: var(--bh-button-quaternary-destructive-bg);
201
+ color: var(--bh-button-quaternary-destructive-color);
202
+ border-color: var(--bh-button-quaternary-destructive-border);
203
+
204
+ &.btn-icon-leading span,
205
+ &.btn-icon-trailing span,
206
+ .material-symbols-outlined {
207
+ color: var(--bh-button-quaternary-destructive-color);
208
+ }
209
+ }
210
+
211
+ /* ==========================================================================
212
+ BUTTON HIERARCHIES - SUCCESS KIND
213
+ ========================================================================== */
214
+
215
+ .btn-primary.btn-success {
216
+ background-color: var(--bh-button-primary-success-bg);
217
+ color: var(--bh-button-primary-success-color);
218
+ border-color: var(--bh-button-primary-success-border);
219
+
220
+ &.btn-icon-leading span,
221
+ &.btn-icon-trailing span,
222
+ .material-symbols-outlined {
223
+ color: var(--bh-button-primary-success-color);
224
+ }
225
+ }
226
+
227
+ .btn-secondary.btn-success {
228
+ background-color: var(--bh-button-secondary-success-bg);
229
+ color: var(--bh-button-secondary-success-color);
230
+ border-color: var(--bh-button-secondary-success-border);
231
+
232
+ &.btn-icon-leading span,
233
+ &.btn-icon-trailing span,
234
+ .material-symbols-outlined {
235
+ color: var(--bh-button-secondary-success-color);
236
+ }
237
+ }
238
+
239
+ .btn-tertiary.btn-success {
240
+ background-color: var(--bh-button-tertiary-success-bg);
241
+ color: var(--bh-button-tertiary-success-color);
242
+ border-color: var(--bh-button-tertiary-success-border);
243
+
244
+ &.btn-icon-leading span,
245
+ &.btn-icon-trailing span,
246
+ .material-symbols-outlined {
247
+ color: var(--bh-button-tertiary-success-color);
248
+ }
249
+ }
250
+
251
+ .btn-quaternary.btn-success {
252
+ background-color: var(--bh-button-quaternary-success-bg);
253
+ color: var(--bh-button-quaternary-success-color);
254
+ border-color: var(--bh-button-quaternary-success-border);
255
+
256
+ &.btn-icon-leading span,
257
+ &.btn-icon-trailing span,
258
+ .material-symbols-outlined {
259
+ color: var(--bh-button-quaternary-success-color);
260
+ }
261
+ }
262
+
263
+ /* ==========================================================================
264
+ HOVER STATES - DEFAULT KIND
265
+ ========================================================================== */
266
+
267
+ .btn-primary.btn-default:hover:not(:disabled):not(.btn-disabled) {
268
+ background-color: var(--bh-button-primary-default-bg-hover);
269
+ border-color: var(--bh-button-primary-default-border-hover);
270
+ }
271
+
272
+ .btn-secondary.btn-default:hover:not(:disabled):not(.btn-disabled) {
273
+ background-color: var(--bh-button-secondary-default-bg-hover);
274
+ color: var(--bh-button-secondary-default-color-hover);
275
+ border-color: var(--bh-button-secondary-default-border-hover);
276
+ }
277
+
278
+ .btn-tertiary.btn-default:hover:not(:disabled):not(.btn-disabled) {
279
+ background-color: var(--bh-button-tertiary-default-bg-hover);
280
+ color: var(--bh-button-tertiary-default-color-hover);
281
+ }
282
+
283
+ .btn-quaternary.btn-default:hover:not(:disabled):not(.btn-disabled) {
284
+ color: var(--bh-button-quaternary-default-color-hover);
285
+
286
+ &.btn-icon-leading span,
287
+ &.btn-icon-trailing span,
288
+ .material-symbols-outlined {
289
+ color: var(--bh-button-quaternary-default-color-hover);
290
+ }
291
+ }
292
+
293
+ /* ==========================================================================
294
+ HOVER STATES - DESTRUCTIVE KIND
295
+ ========================================================================== */
296
+
297
+ .btn-primary.btn-destructive:hover:not(:disabled):not(.btn-disabled) {
298
+ background-color: var(--bh-button-primary-destructive-bg-hover);
299
+ border-color: var(--bh-button-primary-destructive-border-hover);
300
+ }
301
+
302
+ .btn-secondary.btn-destructive:hover:not(:disabled):not(.btn-disabled) {
303
+ background-color: var(--bh-button-secondary-destructive-bg-hover);
304
+ border-color: var(--bh-button-secondary-destructive-border-hover);
305
+ }
306
+
307
+ .btn-tertiary.btn-destructive:hover:not(:disabled):not(.btn-disabled) {
308
+ background-color: var(--bh-button-tertiary-destructive-bg-hover);
309
+ }
310
+
311
+ .btn-quaternary.btn-destructive:hover:not(:disabled):not(.btn-disabled) {
312
+ color: var(--bh-button-quaternary-destructive-color-hover);
313
+
314
+ &.btn-icon-leading span,
315
+ &.btn-icon-trailing span,
316
+ .material-symbols-outlined {
317
+ color: var(--bh-button-quaternary-destructive-color-hover);
318
+ }
319
+ }
320
+
321
+ /* ==========================================================================
322
+ HOVER STATES - SUCCESS KIND
323
+ ========================================================================== */
324
+
325
+ .btn-primary.btn-success:hover:not(:disabled):not(.btn-disabled) {
326
+ background-color: var(--bh-button-primary-success-bg-hover);
327
+ border-color: var(--bh-button-primary-success-border-hover);
328
+ }
329
+
330
+ .btn-secondary.btn-success:hover:not(:disabled):not(.btn-disabled) {
331
+ background-color: var(--bh-button-secondary-success-bg-hover);
332
+ border-color: var(--bh-button-secondary-success-border-hover);
333
+ }
334
+
335
+ .btn-tertiary.btn-success:hover:not(:disabled):not(.btn-disabled) {
336
+ background-color: var(--bh-button-tertiary-success-bg-hover);
337
+ }
338
+
339
+ .btn-quaternary.btn-success:hover:not(:disabled):not(.btn-disabled) {
340
+ color: var(--bh-button-quaternary-success-color-hover);
341
+
342
+ &.btn-icon-leading span,
343
+ &.btn-icon-trailing span,
344
+ .material-symbols-outlined {
345
+ color: var(--bh-button-quaternary-success-color-hover);
346
+ }
347
+ }
348
+
349
+ /* ==========================================================================
350
+ ACTIVE STATES - DEFAULT KIND
351
+ ========================================================================== */
352
+
353
+ .btn-primary.btn-default:active:not(:disabled):not(.btn-disabled) {
354
+ background-color: var(--bh-button-primary-default-bg-active);
355
+ border-color: var(--bh-button-primary-default-border-active);
356
+ }
357
+
358
+ .btn-secondary.btn-default:active:not(:disabled):not(.btn-disabled) {
359
+ background-color: var(--bh-button-secondary-default-bg-active);
360
+ border-color: var(--bh-button-secondary-default-border-active);
361
+ }
362
+
363
+ .btn-tertiary.btn-default:active:not(:disabled):not(.btn-disabled) {
364
+ background-color: var(--bh-button-tertiary-default-bg-active);
365
+ }
366
+
367
+ .btn-quaternary.btn-default:active:not(:disabled):not(.btn-disabled) {
368
+ color: var(--bh-button-quaternary-default-color-active);
369
+ }
370
+
371
+ /* ==========================================================================
372
+ ACTIVE STATES - DESTRUCTIVE KIND
373
+ ========================================================================== */
374
+
375
+ .btn-primary.btn-destructive:active:not(:disabled):not(.btn-disabled) {
376
+ background-color: var(--bh-button-primary-destructive-bg-active);
377
+ border-color: var(--bh-button-primary-destructive-border-active);
378
+ }
379
+
380
+ .btn-secondary.btn-destructive:active:not(:disabled):not(.btn-disabled) {
381
+ background-color: var(--bh-button-secondary-destructive-bg-active);
382
+ border-color: var(--bh-button-secondary-destructive-border-active);
383
+ }
384
+
385
+ .btn-tertiary.btn-destructive:active:not(:disabled):not(.btn-disabled) {
386
+ background-color: var(--bh-button-tertiary-destructive-bg-active);
387
+ }
388
+
389
+ .btn-quaternary.btn-destructive:active:not(:disabled):not(.btn-disabled) {
390
+ color: var(--bh-button-quaternary-destructive-color-active);
391
+ }
392
+
393
+ /* ==========================================================================
394
+ ACTIVE STATES - SUCCESS KIND
395
+ ========================================================================== */
396
+
397
+ .btn-primary.btn-success:active:not(:disabled):not(.btn-disabled) {
398
+ background-color: var(--bh-button-primary-success-bg-active);
399
+ border-color: var(--bh-button-primary-success-border-active);
400
+ }
401
+
402
+ .btn-secondary.btn-success:active:not(:disabled):not(.btn-disabled) {
403
+ background-color: var(--bh-button-secondary-success-bg-active);
404
+ border-color: var(--bh-button-secondary-success-border-active);
405
+ }
406
+
407
+ .btn-tertiary.btn-success:active:not(:disabled):not(.btn-disabled) {
408
+ background-color: var(--bh-button-tertiary-success-bg-active);
409
+ }
410
+
411
+ .btn-quaternary.btn-success:active:not(:disabled):not(.btn-disabled) {
412
+ color: var(--bh-button-quaternary-success-color-active);
413
+ }
414
+
415
+ /* ==========================================================================
416
+ FOCUS STATES
417
+ ========================================================================== */
418
+
419
+ .btn.btn-default:focus,
420
+ .btn.btn-default:focus-visible {
421
+ outline: var(--bh-button-focus-outline-width) solid
422
+ var(--bh-button-primary-default-focus);
423
+ outline-offset: var(--bh-button-focus-outline-offset);
424
+ }
425
+
426
+ .btn.btn-destructive:focus,
427
+ .btn.btn-destructive:focus-visible {
428
+ outline: var(--bh-button-focus-outline-width) solid
429
+ var(--bh-button-primary-destructive-focus);
430
+ outline-offset: var(--bh-button-focus-outline-offset);
431
+ }
432
+
433
+ .btn.btn-success:focus,
434
+ .btn.btn-success:focus-visible {
435
+ outline: var(--bh-button-focus-outline-width) solid
436
+ var(--bh-button-primary-success-focus);
437
+ outline-offset: var(--bh-button-focus-outline-offset);
438
+ }
439
+
440
+ /* ==========================================================================
441
+ DISABLED STATES
442
+ ========================================================================== */
443
+
444
+ .btn:disabled,
445
+ .btn-disabled {
446
+ cursor: not-allowed;
447
+ pointer-events: none;
448
+ }
449
+
450
+ .btn-primary:disabled,
451
+ .btn-primary.btn-disabled {
452
+ background-color: var(--bh-button-disabled-bg);
453
+ color: var(--bh-button-disabled-color);
454
+ border-color: var(--bh-button-disabled-border);
455
+ }
456
+
457
+ .btn-secondary:disabled,
458
+ .btn-secondary.btn-disabled,
459
+ .btn-tertiary:disabled,
460
+ .btn-tertiary.btn-disabled,
461
+ .btn-quaternary:disabled,
462
+ .btn-quaternary.btn-disabled {
463
+ opacity: var(--bh-button-disabled-opacity);
464
+ }
465
+
466
+ /* ==========================================================================
467
+ LOADING STATE
468
+ ========================================================================== */
469
+
470
+ .btn-loading {
471
+ cursor: wait;
472
+ pointer-events: none;
473
+ }
474
+
475
+ .btn-loading .btn-label {
476
+ opacity: var(--bh-button-loading-label-opacity);
477
+ }
478
+
479
+ /* ==========================================================================
480
+ BUTTON CONTENT ELEMENTS
481
+ ========================================================================== */
482
+
483
+ .btn-label {
484
+ display: inline-block;
485
+ line-height: inherit;
486
+ }
487
+
488
+ .btn-quaternary span {
489
+ text-decoration: underline;
490
+ }
491
+
492
+ /* ==========================================================================
493
+ ICONS
494
+ ========================================================================== */
495
+
496
+ .btn-icon {
497
+ display: flex;
498
+ align-items: center;
499
+ justify-content: center;
500
+ flex-shrink: 0;
501
+ }
502
+
503
+ .btn-icon-material {
504
+ line-height: 1;
505
+ vertical-align: middle;
506
+ color: inherit !important;
507
+ }
508
+
509
+ .btn-xs .btn-icon-material {
510
+ font-size: var(--bh-button-icon-size-xs);
511
+ }
512
+
513
+ .btn-sm .btn-icon-material {
514
+ font-size: var(--bh-button-icon-size-sm);
515
+ }
516
+
517
+ .btn-md .btn-icon-material {
518
+ font-size: var(--bh-button-icon-size-md);
519
+ }
520
+
521
+ .btn-lg .btn-icon-material {
522
+ font-size: var(--bh-button-icon-size-lg);
523
+ }
524
+
525
+ /* ==========================================================================
526
+ ICON-ONLY BUTTONS
527
+ ========================================================================== */
528
+
529
+ .btn-icon-only {
530
+ padding: 0;
531
+ }
532
+
533
+ .btn-icon-only.btn-xs {
534
+ width: var(--bh-button-icon-only-size-xs);
535
+ height: var(--bh-button-icon-only-size-xs);
536
+ }
537
+
538
+ .btn-icon-only.btn-sm {
539
+ width: var(--bh-button-icon-only-size-sm);
540
+ height: var(--bh-button-icon-only-size-sm);
541
+ }
542
+
543
+ .btn-icon-only.btn-md {
544
+ width: var(--bh-button-icon-only-size-md);
545
+ height: var(--bh-button-icon-only-size-md);
546
+ }
547
+
548
+ .btn-icon-only.btn-lg {
549
+ width: var(--bh-button-icon-only-size-lg);
550
+ height: var(--bh-button-icon-only-size-lg);
551
+ }
552
+
553
+ .btn-icon-only .btn-icon-material {
554
+ margin: 0;
555
+ }
556
+
557
+ /* ==========================================================================
558
+ LOADING SPINNER
559
+ ========================================================================== */
560
+
561
+ .btn-loading-icon {
562
+ line-height: 1;
563
+ vertical-align: middle;
564
+ color: inherit;
565
+ animation: spin 1s linear infinite;
566
+ }
567
+
568
+ @keyframes spin {
569
+ from {
570
+ transform: rotate(0deg);
571
+ }
572
+ to {
573
+ transform: rotate(360deg);
574
+ }
575
+ }
576
+
577
+ /* ==========================================================================
578
+ FLUID (FULL-WIDTH) BUTTON
579
+ ========================================================================== */
580
+
581
+ .btn-fluid {
582
+ width: 100%;
583
+ display: flex;
584
+ }
585
+
586
+ /* ==========================================================================
587
+ BADGE STYLES
588
+ ========================================================================== */
589
+
590
+ .btn-badge {
591
+ position: absolute;
592
+ top: var(--bh-button-badge-offset-top);
593
+ right: var(--bh-button-badge-offset-right);
594
+ min-width: var(--bh-button-badge-min-width);
595
+ height: var(--bh-button-badge-height);
596
+ padding: 0 var(--bh-button-badge-padding-x);
597
+ border-radius: var(--bh-button-badge-radius);
598
+ background-color: var(--bh-button-badge-bg-secondary);
599
+ color: var(--bh-button-badge-color);
600
+ font-size: var(--bh-button-badge-font-size);
601
+ line-height: var(--bh-button-badge-height);
602
+ font-weight: var(--bh-button-badge-font-weight);
603
+ text-align: center;
604
+ display: flex;
605
+ align-items: center;
606
+ justify-content: center;
607
+ }
608
+
609
+ /* Badge severity variants */
610
+ .btn-badge-primary {
611
+ background-color: var(--bh-button-badge-bg-primary);
612
+ }
613
+
614
+ .btn-badge-secondary {
615
+ background-color: var(--bh-button-badge-bg-secondary);
616
+ }
617
+
618
+ .btn-badge-success {
619
+ background-color: var(--bh-button-badge-bg-success);
620
+ }
621
+
622
+ .btn-badge-info {
623
+ background-color: var(--bh-button-badge-bg-info);
624
+ }
625
+
626
+ .btn-badge-warn {
627
+ background-color: var(--bh-button-badge-bg-warn);
628
+ }
629
+
630
+ .btn-badge-danger {
631
+ background-color: var(--bh-button-badge-bg-danger);
632
+ }
633
+
634
+ .btn-badge-help {
635
+ background-color: var(--bh-button-badge-bg-help);
636
+ }
637
+
638
+ .btn-badge-contrast {
639
+ background-color: var(--bh-button-badge-bg-contrast);
640
+ }