@phcdevworks/spectre-ui 1.5.0 → 1.7.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.
@@ -2,7 +2,7 @@
2
2
  --sp-surface-page: #f7f8fb;
3
3
  --sp-surface-card: #ffffff;
4
4
  --sp-surface-input: #ffffff;
5
- --sp-surface-overlay: rgba(20, 27, 36, 0.6);
5
+ --sp-surface-overlay: rgba(0, 0, 0, 0.6);
6
6
  --sp-surface-alternate: #eef1f6;
7
7
  --sp-surface-hero: linear-gradient(135deg, #5b6ee1 0%, #6f3fd7 100%);
8
8
  --sp-text-on-page-default: #141b24;
@@ -144,10 +144,14 @@
144
144
  --sp-layout-container-max-width: 72rem;
145
145
  --sp-border-width-base: 1px;
146
146
  --sp-border-width-thick: 2px;
147
+ --sp-border-style-none: none;
148
+ --sp-border-style-solid: solid;
147
149
  --sp-radius-none: 0;
148
150
  --sp-radius-sm: 2px;
149
151
  --sp-radius-md: 4px;
150
152
  --sp-radius-lg: 8px;
153
+ --sp-radius-xl: 12px;
154
+ --sp-radius-2xl: 16px;
151
155
  --sp-radius-pill: 999px;
152
156
  --sp-font-family-sans: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
153
157
  --sp-font-family-serif: 'Times New Roman', Times, serif;
@@ -183,34 +187,21 @@
183
187
  --sp-font-6xl-line-height: 5rem;
184
188
  --sp-font-6xl-weight: 900;
185
189
  --sp-font-xs-letter-spacing: 0.02em;
186
- --sp-text-on-page-default: #141b24;
187
- --sp-text-on-page-muted: #4b576a;
188
- --sp-text-on-page-subtle: #657287;
189
- --sp-text-on-page-meta: #657287;
190
- --sp-text-on-surface-default: #141b24;
191
- --sp-text-on-surface-muted: #4b576a;
192
- --sp-text-on-surface-subtle: #657287;
193
- --sp-text-on-surface-meta: #657287;
194
- --sp-badge-neutral-bg: #eef1f6;
195
- --sp-badge-neutral-text: #374253;
196
- --sp-badge-info-bg: #e0f2fe;
197
- --sp-badge-info-text: #075985;
198
- --sp-badge-success-bg: #dcfce7;
199
- --sp-badge-success-text: #166534;
200
- --sp-badge-warning-bg: #fff1c2;
201
- --sp-badge-warning-text: #8f5200;
202
- --sp-badge-danger-bg: #fee2e2;
203
- --sp-badge-danger-text: #991b1b;
204
- --sp-icon-box-bg: #ffffff;
205
- --sp-icon-box-border: #d9dfeb;
206
- --sp-icon-box-icon-default: #0369a1;
207
- --sp-icon-box-icon-success: #16a34a;
208
- --sp-icon-box-icon-warning: #d48806;
209
- --sp-icon-box-icon-danger: #dc2626;
190
+ --sp-font-sm-letter-spacing: 0em;
191
+ --sp-font-md-letter-spacing: 0em;
192
+ --sp-font-lg-letter-spacing: 0em;
193
+ --sp-font-xl-letter-spacing: 0em;
194
+ --sp-font-2xl-letter-spacing: 0em;
195
+ --sp-font-3xl-letter-spacing: 0em;
196
+ --sp-font-4xl-letter-spacing: 0em;
197
+ --sp-font-5xl-letter-spacing: 0em;
198
+ --sp-font-6xl-letter-spacing: 0em;
210
199
  --sp-shadow-none: none;
211
200
  --sp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.06);
212
201
  --sp-shadow-md: 0 2px 6px -1px rgba(0, 0, 0, 0.08);
213
202
  --sp-shadow-lg: 0 6px 16px -4px rgba(0, 0, 0, 0.12);
203
+ --sp-shadow-xl: 0 12px 24px -6px rgba(0, 0, 0, 0.15);
204
+ --sp-shadow-2xl: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
214
205
  --sp-breakpoint-sm: 640px;
215
206
  --sp-breakpoint-md: 768px;
216
207
  --sp-breakpoint-lg: 1024px;
@@ -224,20 +215,26 @@
224
215
  --sp-z-index-modal: 1400;
225
216
  --sp-z-index-popover: 1500;
226
217
  --sp-z-index-tooltip: 1600;
218
+ --sp-z-index-toast: 1700;
227
219
  --sp-duration-instant: 75ms;
228
220
  --sp-duration-fast: 150ms;
229
221
  --sp-duration-base: 200ms;
222
+ --sp-duration-relaxed: 250ms;
230
223
  --sp-duration-moderate: 300ms;
231
224
  --sp-duration-slow: 500ms;
232
225
  --sp-duration-slower: 700ms;
226
+ --sp-duration-long: 1000ms;
227
+ --sp-duration-slowest: 1200ms;
233
228
  --sp-easing-linear: linear;
234
229
  --sp-easing-in: cubic-bezier(0.4, 0, 1, 1);
235
230
  --sp-easing-out: cubic-bezier(0, 0, 0.2, 1);
236
231
  --sp-easing-inout: cubic-bezier(0.4, 0, 0.2, 1);
237
232
  --sp-easing-spring: cubic-bezier(0.4, 0, 0.2, 1);
233
+ --sp-easing-overshoot: cubic-bezier(0.34, 1.56, 0.64, 1);
238
234
  --sp-opacity-disabled: 0.38;
239
235
  --sp-opacity-hover: 0.92;
240
236
  --sp-opacity-active: 0.84;
237
+ --sp-opacity-loading: 0.6;
241
238
  --sp-opacity-focus: 1;
242
239
  --sp-opacity-overlay: 0.5;
243
240
  --sp-opacity-tooltip: 0.95;
@@ -369,7 +366,7 @@
369
366
  --sp-button-text-default: #eef1f6;
370
367
  --sp-button-text-on-primary: #ffffff;
371
368
  --sp-badge-neutral-bg: #374253;
372
- --sp-badge-neutral-text: #eef1f6;
369
+ --sp-badge-neutral-text: #f7f8fb;
373
370
  --sp-badge-info-bg: #0c4a6e;
374
371
  --sp-badge-info-text: #e0f2fe;
375
372
  --sp-badge-success-bg: #166534;
@@ -498,6 +495,8 @@
498
495
  --sp-component-badge-ghost-text: var(--sp-button-ghost-text);
499
496
  --sp-component-badge-accent-bg: var(--sp-button-accent-bg);
500
497
  --sp-component-badge-accent-text: var(--sp-button-accent-text);
498
+ --sp-component-badge-cta-bg: var(--sp-button-cta-bg);
499
+ --sp-component-badge-cta-text: var(--sp-button-cta-text);
501
500
 
502
501
  /* badge hover states derived from Spectre token semantics */
503
502
  --sp-component-badge-primary-bg-hover: var(--sp-button-primary-bghover);
@@ -509,6 +508,7 @@
509
508
  --sp-component-badge-info-bg-hover: var(--sp-color-info-200);
510
509
  --sp-component-badge-ghost-bg-hover: var(--sp-button-ghost-bghover);
511
510
  --sp-component-badge-accent-bg-hover: var(--sp-button-accent-bghover);
511
+ --sp-component-badge-cta-bg-hover: var(--sp-button-cta-bghover);
512
512
 
513
513
  --sp-component-badge-padding-x-sm: var(--sp-space-8);
514
514
  --sp-component-badge-padding-x-md: var(--sp-space-12);
@@ -541,15 +541,27 @@
541
541
  --sp-component-iconbox-ghost-text: var(--sp-button-ghost-text);
542
542
  --sp-component-iconbox-accent-bg: var(--sp-button-accent-bg);
543
543
  --sp-component-iconbox-accent-text: var(--sp-button-accent-text);
544
+ --sp-component-iconbox-cta-bg: var(--sp-button-cta-bg);
545
+ --sp-component-iconbox-cta-text: var(--sp-button-cta-text);
544
546
 
545
547
  /* testimonial roles */
546
548
  --sp-component-testimonial-bg: var(--sp-surface-card);
547
549
  --sp-component-testimonial-bg-hover: var(--sp-color-neutral-50);
548
550
  --sp-component-testimonial-border: var(--sp-color-neutral-200);
551
+ --sp-component-testimonial-border-base: var(--sp-component-testimonial-ghost-border);
549
552
  --sp-component-testimonial-text: var(--sp-color-neutral-700);
550
553
  --sp-component-testimonial-author-name: var(--sp-color-neutral-900);
551
554
  --sp-component-testimonial-author-title: var(--sp-color-neutral-600);
552
555
  --sp-component-testimonial-quote-mark: var(--sp-color-neutral-600);
556
+ --sp-component-testimonial-shadow: var(--sp-shadow-none);
557
+ --sp-component-testimonial-shadow-elevated: var(--sp-shadow-lg);
558
+ --sp-component-testimonial-shadow-flat: var(--sp-shadow-none);
559
+ --sp-component-testimonial-shadow-outline: var(--sp-shadow-none);
560
+ --sp-component-testimonial-shadow-ghost: var(--sp-shadow-none);
561
+ --sp-component-testimonial-outline-bg: var(--sp-component-testimonial-bg);
562
+ --sp-component-testimonial-outline-border: var(--sp-component-testimonial-border);
563
+ --sp-component-testimonial-ghost-bg: var(--sp-button-ghost-bg);
564
+ --sp-component-testimonial-ghost-border: var(--sp-component-testimonial-ghost-bg);
553
565
 
554
566
  /* pricing card roles */
555
567
  --sp-component-pricing-card-bg: var(--sp-surface-card);
@@ -570,13 +582,97 @@
570
582
  --sp-component-rating-size-sm: var(--sp-font-sm-size);
571
583
  --sp-component-rating-size-md: var(--sp-font-md-size);
572
584
  --sp-component-rating-size-lg: var(--sp-font-lg-size);
585
+
586
+ /* alert roles */
587
+ --sp-component-alert-radius: var(--sp-radius-lg);
588
+ --sp-component-alert-padding-x: var(--sp-space-16);
589
+ --sp-component-alert-padding-y-sm: var(--sp-space-8);
590
+ --sp-component-alert-padding-y-md: var(--sp-space-12);
591
+ --sp-component-alert-padding-y-lg: var(--sp-space-16);
592
+ --sp-component-alert-info-bg: var(--sp-badge-info-bg);
593
+ --sp-component-alert-info-text: var(--sp-badge-info-text);
594
+ --sp-component-alert-info-border: var(--sp-color-info-200);
595
+ --sp-component-alert-success-bg: var(--sp-badge-success-bg);
596
+ --sp-component-alert-success-text: var(--sp-badge-success-text);
597
+ --sp-component-alert-success-border: var(--sp-color-success-200);
598
+ --sp-component-alert-warning-bg: var(--sp-badge-warning-bg);
599
+ --sp-component-alert-warning-text: var(--sp-badge-warning-text);
600
+ --sp-component-alert-warning-border: var(--sp-color-warning-200);
601
+ --sp-component-alert-danger-bg: var(--sp-badge-danger-bg);
602
+ --sp-component-alert-danger-text: var(--sp-badge-danger-text);
603
+ --sp-component-alert-danger-border: var(--sp-color-error-200);
604
+ --sp-component-alert-neutral-bg: var(--sp-badge-neutral-bg);
605
+ --sp-component-alert-neutral-text: var(--sp-badge-neutral-text);
606
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-200);
607
+
608
+ /* avatar roles */
609
+ --sp-component-avatar-size-xs: var(--sp-space-24);
610
+ --sp-component-avatar-size-sm: var(--sp-space-32);
611
+ --sp-component-avatar-size-md: var(--sp-space-48);
612
+ --sp-component-avatar-size-lg: var(--sp-space-64);
613
+ --sp-component-avatar-size-xl: var(--sp-space-80);
614
+ --sp-component-avatar-bg: var(--sp-surface-alternate);
615
+ --sp-component-avatar-text: var(--sp-text-on-surface-default);
616
+ --sp-component-avatar-radius-circle: var(--sp-radius-pill);
617
+ --sp-component-avatar-radius-square: var(--sp-radius-lg);
618
+ --sp-component-avatar-font: var(--sp-font-family-sans);
619
+ --sp-component-avatar-weight: var(--sp-font-md-weight);
620
+
621
+ /* tag roles */
622
+ --sp-component-tag-radius: var(--sp-radius-pill);
623
+ --sp-component-tag-font: var(--sp-font-family-sans);
624
+ --sp-component-tag-weight: var(--sp-font-sm-weight);
625
+ --sp-component-tag-padding-x-sm: var(--sp-space-8);
626
+ --sp-component-tag-padding-x-md: var(--sp-space-12);
627
+ --sp-component-tag-padding-x-lg: var(--sp-space-16);
628
+ --sp-component-tag-default-bg: var(--sp-badge-neutral-bg);
629
+ --sp-component-tag-default-text: var(--sp-badge-neutral-text);
630
+ --sp-component-tag-primary-bg: var(--sp-button-primary-bg);
631
+ --sp-component-tag-primary-text: var(--sp-button-text-on-primary);
632
+ --sp-component-tag-secondary-bg: var(--sp-button-secondary-bg);
633
+ --sp-component-tag-secondary-text: var(--sp-button-secondary-text);
634
+ --sp-component-tag-success-bg: var(--sp-badge-success-bg);
635
+ --sp-component-tag-success-text: var(--sp-badge-success-text);
636
+ --sp-component-tag-warning-bg: var(--sp-badge-warning-bg);
637
+ --sp-component-tag-warning-text: var(--sp-badge-warning-text);
638
+ --sp-component-tag-danger-bg: var(--sp-badge-danger-bg);
639
+ --sp-component-tag-danger-text: var(--sp-badge-danger-text);
640
+ --sp-component-tag-info-bg: var(--sp-badge-info-bg);
641
+ --sp-component-tag-info-text: var(--sp-badge-info-text);
642
+ --sp-component-tag-neutral-bg: var(--sp-badge-neutral-bg);
643
+ --sp-component-tag-neutral-text: var(--sp-badge-neutral-text);
644
+ --sp-component-tag-accent-bg: var(--sp-button-accent-bg);
645
+ --sp-component-tag-accent-text: var(--sp-button-accent-text);
646
+ --sp-component-tag-cta-bg: var(--sp-button-cta-bg);
647
+ --sp-component-tag-cta-text: var(--sp-button-cta-text);
648
+ --sp-component-tag-outline-bg: transparent;
649
+ --sp-component-tag-outline-text: var(--sp-badge-neutral-text);
650
+ --sp-component-tag-outline-border: var(--sp-button-secondary-border);
651
+ --sp-component-tag-ghost-bg: var(--sp-button-ghost-bg);
652
+ --sp-component-tag-ghost-text: var(--sp-button-ghost-text);
653
+ --sp-component-tag-selected-bg: var(--sp-button-primary-bg);
654
+ --sp-component-tag-selected-text: var(--sp-button-primary-text);
655
+ --sp-component-tag-gap: var(--sp-space-4);
656
+ --sp-component-tag-padding-y-sm: var(--sp-space-4);
657
+ --sp-component-tag-padding-y-md: var(--sp-space-4);
658
+ --sp-component-tag-padding-y-lg: var(--sp-space-4);
659
+
660
+ /* spinner roles */
661
+ --sp-component-spinner-size-sm: var(--sp-space-16);
662
+ --sp-component-spinner-size-md: var(--sp-space-24);
663
+ --sp-component-spinner-size-lg: var(--sp-space-32);
664
+ --sp-component-spinner-border-width: var(--sp-border-width-thick);
665
+ --sp-component-spinner-track-color: var(--sp-color-neutral-200);
666
+ --sp-component-spinner-arc-color: var(--sp-button-primary-bg);
667
+ --sp-component-spinner-duration: var(--sp-duration-long);
668
+ --sp-component-spinner-easing: var(--sp-easing-linear);
573
669
  }
574
670
 
575
671
  /* dark mode overrides mapped from Spectre token mode definitions */
576
672
  :where(:root[data-spectre-theme="dark"]) {
577
673
  /* badge hover states remain manual as they are not currently exported as tokens */
578
674
  --sp-component-badge-success-bg-hover: var(--sp-color-success-700);
579
- --sp-component-badge-warning-bg-hover: var(--sp-color-warning-800);
675
+ --sp-component-badge-warning-bg-hover: var(--sp-color-warning-700);
580
676
  --sp-component-badge-danger-bg-hover: var(--sp-color-error-700);
581
677
  --sp-component-badge-neutral-bg-hover: var(--sp-color-neutral-600);
582
678
  --sp-component-badge-info-bg-hover: var(--sp-color-info-700);
@@ -609,6 +705,25 @@
609
705
  --sp-component-rating-star-filled: var(--sp-color-warning-400);
610
706
  --sp-component-rating-star-empty: var(--sp-color-neutral-700);
611
707
  --sp-component-rating-text: var(--sp-color-neutral-400);
708
+
709
+ --sp-component-alert-info-bg: var(--sp-color-info-800);
710
+ --sp-component-alert-info-text: var(--sp-color-info-100);
711
+ --sp-component-alert-info-border: var(--sp-color-info-700);
712
+ --sp-component-alert-success-bg: var(--sp-color-success-800);
713
+ --sp-component-alert-success-text: var(--sp-color-success-100);
714
+ --sp-component-alert-success-border: var(--sp-color-success-700);
715
+ --sp-component-alert-warning-bg: var(--sp-color-warning-800);
716
+ --sp-component-alert-warning-text: var(--sp-color-warning-100);
717
+ --sp-component-alert-warning-border: var(--sp-color-warning-700);
718
+ --sp-component-alert-danger-bg: var(--sp-color-error-800);
719
+ --sp-component-alert-danger-text: var(--sp-color-error-100);
720
+ --sp-component-alert-danger-border: var(--sp-color-error-700);
721
+ --sp-component-alert-neutral-bg: var(--sp-color-neutral-700);
722
+ --sp-component-alert-neutral-text: var(--sp-color-neutral-100);
723
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-600);
724
+
725
+ --sp-component-spinner-track-color: var(--sp-color-neutral-700);
726
+ --sp-component-spinner-arc-color: var(--sp-color-brand-400);
612
727
  }
613
728
 
614
729
  /* BUTTONS -------------------------------------------------------------- */
@@ -643,7 +758,8 @@
643
758
  pointer-events: none;
644
759
  }
645
760
 
646
- .sp-btn--loading {
761
+ .sp-btn--loading,
762
+ .sp-btn[aria-busy="true"] {
647
763
  pointer-events: none;
648
764
  opacity: var(--sp-opacity-active);
649
765
  }
@@ -710,6 +826,7 @@
710
826
  }
711
827
 
712
828
  .sp-btn--primary.sp-btn--disabled,
829
+ .sp-btn--primary[aria-disabled="true"],
713
830
  .sp-btn--primary:disabled {
714
831
  background-color: var(--sp-component-button-primary-bg-disabled);
715
832
  color: var(--sp-component-button-primary-text-disabled);
@@ -736,6 +853,7 @@
736
853
  }
737
854
 
738
855
  .sp-btn--secondary.sp-btn--disabled,
856
+ .sp-btn--secondary[aria-disabled="true"],
739
857
  .sp-btn--secondary:disabled {
740
858
  background-color: var(--sp-component-button-secondary-bg-disabled);
741
859
  color: var(--sp-component-button-secondary-text-disabled);
@@ -761,6 +879,7 @@
761
879
  }
762
880
 
763
881
  .sp-btn--ghost.sp-btn--disabled,
882
+ .sp-btn--ghost[aria-disabled="true"],
764
883
  .sp-btn--ghost:disabled {
765
884
  color: var(--sp-component-button-ghost-text-disabled);
766
885
  background-color: var(--sp-component-button-ghost-bg-disabled);
@@ -785,6 +904,7 @@
785
904
  }
786
905
 
787
906
  .sp-btn--danger.sp-btn--disabled,
907
+ .sp-btn--danger[aria-disabled="true"],
788
908
  .sp-btn--danger:disabled {
789
909
  background-color: var(--sp-component-button-danger-bg-disabled);
790
910
  color: var(--sp-component-button-danger-text-disabled);
@@ -809,6 +929,7 @@
809
929
  }
810
930
 
811
931
  .sp-btn--success.sp-btn--disabled,
932
+ .sp-btn--success[aria-disabled="true"],
812
933
  .sp-btn--success:disabled {
813
934
  background-color: var(--sp-component-button-success-bg-disabled);
814
935
  color: var(--sp-component-button-success-text-disabled);
@@ -834,6 +955,7 @@
834
955
  }
835
956
 
836
957
  .sp-btn--cta.sp-btn--disabled,
958
+ .sp-btn--cta[aria-disabled="true"],
837
959
  .sp-btn--cta:disabled {
838
960
  background-color: var(--sp-component-button-cta-bg-disabled);
839
961
  color: var(--sp-component-button-cta-text-disabled);
@@ -859,6 +981,7 @@
859
981
  }
860
982
 
861
983
  .sp-btn--accent.sp-btn--disabled,
984
+ .sp-btn--accent[aria-disabled="true"],
862
985
  .sp-btn--accent:disabled {
863
986
  background-color: var(--sp-component-button-accent-bg-disabled);
864
987
  color: var(--sp-component-button-accent-text-disabled);
@@ -879,12 +1002,20 @@
879
1002
  line-height: var(--sp-font-sm-line-height);
880
1003
  }
881
1004
 
1005
+ .sp-label--disabled {
1006
+ color: var(--sp-component-input-role-text-disabled);
1007
+ }
1008
+
882
1009
  .sp-helper-text {
883
1010
  color: var(--sp-text-on-surface-meta);
884
1011
  font-size: var(--sp-font-xs-size);
885
1012
  line-height: var(--sp-font-xs-line-height);
886
1013
  }
887
1014
 
1015
+ .sp-helper-text--disabled {
1016
+ opacity: var(--sp-opacity-disabled);
1017
+ }
1018
+
888
1019
  .sp-error-message {
889
1020
  color: var(--sp-component-input-role-text-error);
890
1021
  font-size: var(--sp-font-xs-size);
@@ -1046,11 +1177,15 @@
1046
1177
  height: 100%;
1047
1178
  }
1048
1179
 
1180
+ .sp-card:disabled,
1181
+ .sp-card[aria-disabled="true"],
1049
1182
  .sp-card--disabled {
1050
1183
  opacity: var(--sp-opacity-disabled);
1051
1184
  pointer-events: none;
1185
+ cursor: not-allowed;
1052
1186
  }
1053
1187
 
1188
+ .sp-card[aria-busy="true"],
1054
1189
  .sp-card--loading {
1055
1190
  opacity: var(--sp-opacity-active);
1056
1191
  pointer-events: none;
@@ -1065,14 +1200,20 @@
1065
1200
  }
1066
1201
 
1067
1202
  .sp-card--interactive:hover,
1068
- .sp-card--interactive:focus-visible,
1069
1203
  .sp-card--interactive:focus-within,
1070
1204
  .sp-card--interactive.sp-card--hover,
1071
- .sp-card--interactive.is-hover,
1205
+ .sp-card--interactive.is-hover {
1206
+ outline: none;
1207
+ transform: translateY(calc(var(--sp-component-border-width) * -1));
1208
+ box-shadow: var(--sp-component-card-shadow-elevated);
1209
+ }
1210
+
1211
+ .sp-card--interactive:focus-visible,
1072
1212
  .sp-card--interactive.sp-card--focus,
1073
1213
  .sp-card--interactive.is-focus {
1214
+ outline: none;
1074
1215
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1075
- box-shadow: var(--sp-component-card-shadow-elevated);
1216
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1076
1217
  }
1077
1218
 
1078
1219
  .sp-card--interactive:active,
@@ -1127,8 +1268,8 @@
1127
1268
  }
1128
1269
 
1129
1270
  .sp-badge--primary.sp-badge--interactive:hover,
1130
- .sp-badge--primary.sp-badge--interactive.sp-badge--hover,
1131
- .sp-badge--primary.sp-badge--interactive.is-hover {
1271
+ .sp-badge--primary.sp-badge--hover,
1272
+ .sp-badge--primary.is-hover {
1132
1273
  background-color: var(--sp-component-badge-primary-bg-hover);
1133
1274
  }
1134
1275
 
@@ -1139,8 +1280,8 @@
1139
1280
  }
1140
1281
 
1141
1282
  .sp-badge--secondary.sp-badge--interactive:hover,
1142
- .sp-badge--secondary.sp-badge--interactive.sp-badge--hover,
1143
- .sp-badge--secondary.sp-badge--interactive.is-hover {
1283
+ .sp-badge--secondary.sp-badge--hover,
1284
+ .sp-badge--secondary.is-hover {
1144
1285
  background-color: var(--sp-component-badge-secondary-bg-hover);
1145
1286
  }
1146
1287
 
@@ -1150,8 +1291,8 @@
1150
1291
  }
1151
1292
 
1152
1293
  .sp-badge--success.sp-badge--interactive:hover,
1153
- .sp-badge--success.sp-badge--interactive.sp-badge--hover,
1154
- .sp-badge--success.sp-badge--interactive.is-hover {
1294
+ .sp-badge--success.sp-badge--hover,
1295
+ .sp-badge--success.is-hover {
1155
1296
  background-color: var(--sp-component-badge-success-bg-hover);
1156
1297
  }
1157
1298
 
@@ -1161,8 +1302,8 @@
1161
1302
  }
1162
1303
 
1163
1304
  .sp-badge--warning.sp-badge--interactive:hover,
1164
- .sp-badge--warning.sp-badge--interactive.sp-badge--hover,
1165
- .sp-badge--warning.sp-badge--interactive.is-hover {
1305
+ .sp-badge--warning.sp-badge--hover,
1306
+ .sp-badge--warning.is-hover {
1166
1307
  background-color: var(--sp-component-badge-warning-bg-hover);
1167
1308
  }
1168
1309
 
@@ -1172,8 +1313,8 @@
1172
1313
  }
1173
1314
 
1174
1315
  .sp-badge--danger.sp-badge--interactive:hover,
1175
- .sp-badge--danger.sp-badge--interactive.sp-badge--hover,
1176
- .sp-badge--danger.sp-badge--interactive.is-hover {
1316
+ .sp-badge--danger.sp-badge--hover,
1317
+ .sp-badge--danger.is-hover {
1177
1318
  background-color: var(--sp-component-badge-danger-bg-hover);
1178
1319
  }
1179
1320
 
@@ -1183,8 +1324,8 @@
1183
1324
  }
1184
1325
 
1185
1326
  .sp-badge--neutral.sp-badge--interactive:hover,
1186
- .sp-badge--neutral.sp-badge--interactive.sp-badge--hover,
1187
- .sp-badge--neutral.sp-badge--interactive.is-hover {
1327
+ .sp-badge--neutral.sp-badge--hover,
1328
+ .sp-badge--neutral.is-hover {
1188
1329
  background-color: var(--sp-component-badge-neutral-bg-hover);
1189
1330
  }
1190
1331
 
@@ -1194,8 +1335,8 @@
1194
1335
  }
1195
1336
 
1196
1337
  .sp-badge--info.sp-badge--interactive:hover,
1197
- .sp-badge--info.sp-badge--interactive.sp-badge--hover,
1198
- .sp-badge--info.sp-badge--interactive.is-hover {
1338
+ .sp-badge--info.sp-badge--hover,
1339
+ .sp-badge--info.is-hover {
1199
1340
  background-color: var(--sp-component-badge-info-bg-hover);
1200
1341
  }
1201
1342
 
@@ -1205,8 +1346,8 @@
1205
1346
  }
1206
1347
 
1207
1348
  .sp-badge--ghost.sp-badge--interactive:hover,
1208
- .sp-badge--ghost.sp-badge--interactive.sp-badge--hover,
1209
- .sp-badge--ghost.sp-badge--interactive.is-hover {
1349
+ .sp-badge--ghost.sp-badge--hover,
1350
+ .sp-badge--ghost.is-hover {
1210
1351
  background-color: var(--sp-component-badge-ghost-bg-hover);
1211
1352
  }
1212
1353
 
@@ -1216,11 +1357,22 @@
1216
1357
  }
1217
1358
 
1218
1359
  .sp-badge--accent.sp-badge--interactive:hover,
1219
- .sp-badge--accent.sp-badge--interactive.sp-badge--hover,
1220
- .sp-badge--accent.sp-badge--interactive.is-hover {
1360
+ .sp-badge--accent.sp-badge--hover,
1361
+ .sp-badge--accent.is-hover {
1221
1362
  background-color: var(--sp-component-badge-accent-bg-hover);
1222
1363
  }
1223
1364
 
1365
+ .sp-badge--cta {
1366
+ background-color: var(--sp-component-badge-cta-bg);
1367
+ color: var(--sp-component-badge-cta-text);
1368
+ }
1369
+
1370
+ .sp-badge--cta.sp-badge--interactive:hover,
1371
+ .sp-badge--cta.sp-badge--hover,
1372
+ .sp-badge--cta.is-hover {
1373
+ background-color: var(--sp-component-badge-cta-bg-hover);
1374
+ }
1375
+
1224
1376
  .sp-badge--interactive {
1225
1377
  cursor: pointer;
1226
1378
  transition:
@@ -1232,24 +1384,27 @@
1232
1384
  }
1233
1385
 
1234
1386
  .sp-badge--interactive:active,
1235
- .sp-badge--interactive.sp-badge--active,
1236
- .sp-badge--interactive.is-active {
1387
+ .sp-badge--active,
1388
+ .sp-badge.is-active {
1237
1389
  opacity: var(--sp-opacity-active);
1238
1390
  }
1239
1391
 
1240
1392
  .sp-badge--interactive:focus-visible,
1241
- .sp-badge--interactive.sp-badge--focus,
1242
- .sp-badge--interactive.is-focus {
1393
+ .sp-badge--focus,
1394
+ .sp-badge.is-focus {
1243
1395
  outline: none;
1244
1396
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1245
1397
  }
1246
1398
 
1399
+ .sp-badge:disabled,
1400
+ .sp-badge[aria-disabled="true"],
1247
1401
  .sp-badge--disabled {
1248
1402
  opacity: var(--sp-opacity-disabled);
1249
1403
  pointer-events: none;
1250
1404
  }
1251
1405
 
1252
- .sp-badge--loading {
1406
+ .sp-badge--loading,
1407
+ .sp-badge[aria-busy="true"] {
1253
1408
  opacity: var(--sp-opacity-active);
1254
1409
  pointer-events: none;
1255
1410
  }
@@ -1334,6 +1489,10 @@
1334
1489
  font-size: var(--sp-font-lg-size);
1335
1490
  }
1336
1491
 
1492
+ .sp-iconbox--full {
1493
+ width: 100%;
1494
+ }
1495
+
1337
1496
  .sp-iconbox--pill {
1338
1497
  border-radius: var(--sp-radius-pill);
1339
1498
  }
@@ -1384,25 +1543,30 @@
1384
1543
  color: var(--sp-component-iconbox-accent-text);
1385
1544
  }
1386
1545
 
1546
+ .sp-iconbox--cta {
1547
+ background-color: var(--sp-component-iconbox-cta-bg);
1548
+ color: var(--sp-component-iconbox-cta-text);
1549
+ }
1550
+
1387
1551
  .sp-iconbox--interactive {
1388
1552
  cursor: pointer;
1389
1553
  }
1390
1554
 
1391
1555
  .sp-iconbox--interactive:hover,
1392
- .sp-iconbox--interactive.sp-iconbox--hover,
1393
- .sp-iconbox--interactive.is-hover {
1556
+ .sp-iconbox--hover,
1557
+ .sp-iconbox.is-hover {
1394
1558
  opacity: var(--sp-opacity-hover);
1395
1559
  }
1396
1560
 
1397
1561
  .sp-iconbox--interactive:active,
1398
- .sp-iconbox--interactive.sp-iconbox--active,
1399
- .sp-iconbox--interactive.is-active {
1562
+ .sp-iconbox--active,
1563
+ .sp-iconbox.is-active {
1400
1564
  opacity: var(--sp-opacity-active);
1401
1565
  }
1402
1566
 
1403
1567
  .sp-iconbox--interactive:focus-visible,
1404
- .sp-iconbox--interactive.sp-iconbox--focus,
1405
- .sp-iconbox--interactive.is-focus {
1568
+ .sp-iconbox--focus,
1569
+ .sp-iconbox.is-focus {
1406
1570
  outline: none;
1407
1571
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1408
1572
  }
@@ -1415,7 +1579,8 @@
1415
1579
  cursor: not-allowed;
1416
1580
  }
1417
1581
 
1418
- .sp-iconbox--loading {
1582
+ .sp-iconbox--loading,
1583
+ .sp-iconbox[aria-busy="true"] {
1419
1584
  opacity: var(--sp-opacity-active);
1420
1585
  pointer-events: none;
1421
1586
  }
@@ -1424,20 +1589,46 @@
1424
1589
 
1425
1590
  .sp-testimonial {
1426
1591
  background-color: var(--sp-component-testimonial-bg);
1427
- border: var(--sp-component-border-width) solid var(--sp-component-testimonial-border);
1592
+ border: var(--sp-component-border-width) solid var(--sp-component-testimonial-border-base);
1428
1593
  border-radius: var(--sp-radius-lg);
1429
1594
  padding: var(--sp-space-32);
1430
1595
  display: flex;
1431
1596
  flex-direction: column;
1432
1597
  gap: var(--sp-space-24);
1598
+ box-shadow: var(--sp-component-testimonial-shadow);
1599
+ }
1600
+
1601
+ .sp-testimonial--elevated {
1602
+ box-shadow: var(--sp-component-testimonial-shadow-elevated);
1603
+ }
1604
+
1605
+ .sp-testimonial--flat {
1606
+ box-shadow: var(--sp-component-testimonial-shadow-flat);
1607
+ border-color: var(--sp-component-testimonial-border);
1608
+ }
1609
+
1610
+ .sp-testimonial--outline {
1611
+ background-color: var(--sp-component-testimonial-outline-bg);
1612
+ border-color: var(--sp-component-testimonial-outline-border);
1613
+ box-shadow: var(--sp-component-testimonial-shadow-outline);
1614
+ }
1615
+
1616
+ .sp-testimonial--ghost {
1617
+ background-color: var(--sp-component-testimonial-ghost-bg);
1618
+ border-color: var(--sp-component-testimonial-ghost-border);
1619
+ box-shadow: var(--sp-component-testimonial-shadow-ghost);
1433
1620
  }
1434
1621
 
1622
+ .sp-testimonial:disabled,
1623
+ .sp-testimonial[aria-disabled="true"],
1435
1624
  .sp-testimonial--disabled {
1436
1625
  opacity: var(--sp-opacity-disabled);
1437
1626
  pointer-events: none;
1627
+ cursor: not-allowed;
1438
1628
  }
1439
1629
 
1440
- .sp-testimonial--loading {
1630
+ .sp-testimonial--loading,
1631
+ .sp-testimonial[aria-busy="true"] {
1441
1632
  opacity: var(--sp-opacity-active);
1442
1633
  pointer-events: none;
1443
1634
  }
@@ -1459,7 +1650,7 @@
1459
1650
  .sp-testimonial--interactive.sp-testimonial--hover,
1460
1651
  .sp-testimonial--interactive.is-hover {
1461
1652
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1462
- box-shadow: var(--sp-shadow-lg);
1653
+ box-shadow: var(--sp-component-testimonial-shadow-elevated);
1463
1654
  background-color: var(--sp-component-testimonial-bg-hover);
1464
1655
  }
1465
1656
 
@@ -1543,12 +1734,15 @@
1543
1734
  border: none;
1544
1735
  }
1545
1736
 
1737
+ .sp-pricing-card:disabled,
1738
+ .sp-pricing-card[aria-disabled="true"],
1546
1739
  .sp-pricing-card--disabled {
1547
1740
  opacity: var(--sp-opacity-disabled);
1548
1741
  pointer-events: none;
1549
1742
  }
1550
1743
 
1551
- .sp-pricing-card--loading {
1744
+ .sp-pricing-card--loading,
1745
+ .sp-pricing-card[aria-busy="true"] {
1552
1746
  opacity: var(--sp-opacity-active);
1553
1747
  pointer-events: none;
1554
1748
  }
@@ -1564,7 +1758,7 @@
1564
1758
  .sp-pricing-card--interactive:hover,
1565
1759
  .sp-pricing-card--interactive:focus-within,
1566
1760
  .sp-pricing-card--interactive.sp-pricing-card--hover,
1567
- .sp-pricing-card--interactive.is-hover {
1761
+ .sp-pricing-card.is-hover {
1568
1762
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1569
1763
  box-shadow: var(--sp-shadow-lg);
1570
1764
  background-color: var(--sp-component-pricing-card-bg-hover);
@@ -1574,28 +1768,28 @@
1574
1768
  .sp-pricing-card--featured.sp-pricing-card--interactive:focus-visible,
1575
1769
  .sp-pricing-card--featured.sp-pricing-card--interactive:focus-within,
1576
1770
  .sp-pricing-card--featured.sp-pricing-card--interactive.sp-pricing-card--hover,
1577
- .sp-pricing-card--featured.sp-pricing-card--interactive.is-hover,
1771
+ .sp-pricing-card--featured.is-hover,
1578
1772
  .sp-pricing-card--featured.sp-pricing-card--interactive.sp-pricing-card--focus,
1579
- .sp-pricing-card--featured.sp-pricing-card--interactive.is-focus {
1773
+ .sp-pricing-card--featured.is-focus {
1580
1774
  transform: scale(1.05) translateY(calc(var(--sp-component-border-width) * -1));
1581
1775
  }
1582
1776
 
1583
1777
  .sp-pricing-card--interactive:active,
1584
1778
  .sp-pricing-card--interactive.sp-pricing-card--active,
1585
- .sp-pricing-card--interactive.is-active {
1779
+ .sp-pricing-card.is-active {
1586
1780
  opacity: var(--sp-opacity-active);
1587
1781
  transform: translateY(0);
1588
1782
  }
1589
1783
 
1590
1784
  .sp-pricing-card--featured.sp-pricing-card--interactive:active,
1591
1785
  .sp-pricing-card--featured.sp-pricing-card--interactive.sp-pricing-card--active,
1592
- .sp-pricing-card--featured.sp-pricing-card--interactive.is-active {
1786
+ .sp-pricing-card--featured.is-active {
1593
1787
  transform: scale(1.05) translateY(0);
1594
1788
  }
1595
1789
 
1596
1790
  .sp-pricing-card--interactive:focus-visible,
1597
1791
  .sp-pricing-card--interactive.sp-pricing-card--focus,
1598
- .sp-pricing-card--interactive.is-focus {
1792
+ .sp-pricing-card.is-focus {
1599
1793
  outline: none;
1600
1794
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1601
1795
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
@@ -1647,9 +1841,11 @@
1647
1841
  gap: var(--sp-space-8);
1648
1842
  font-size: var(--sp-component-rating-size-md);
1649
1843
  border-radius: var(--sp-radius-md);
1844
+ border: var(--sp-component-border-width) solid transparent;
1650
1845
  transition:
1651
1846
  opacity var(--sp-duration-fast) var(--sp-easing-out),
1652
- box-shadow var(--sp-duration-fast) var(--sp-easing-out);
1847
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
1848
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
1653
1849
  }
1654
1850
 
1655
1851
  .sp-rating--sm {
@@ -1680,7 +1876,8 @@
1680
1876
  cursor: not-allowed;
1681
1877
  }
1682
1878
 
1683
- .sp-rating--loading {
1879
+ .sp-rating--loading,
1880
+ .sp-rating[aria-busy="true"] {
1684
1881
  opacity: var(--sp-opacity-active);
1685
1882
  pointer-events: none;
1686
1883
  }
@@ -1690,20 +1887,20 @@
1690
1887
  }
1691
1888
 
1692
1889
  .sp-rating--interactive:hover,
1693
- .sp-rating--interactive.sp-rating--hover,
1694
- .sp-rating--interactive.is-hover {
1890
+ .sp-rating--hover,
1891
+ .is-hover {
1695
1892
  opacity: var(--sp-opacity-hover);
1696
1893
  }
1697
1894
 
1698
1895
  .sp-rating--interactive:active,
1699
- .sp-rating--interactive.sp-rating--active,
1700
- .sp-rating--interactive.is-active {
1896
+ .sp-rating--active,
1897
+ .is-active {
1701
1898
  opacity: var(--sp-opacity-active);
1702
1899
  }
1703
1900
 
1704
1901
  .sp-rating--interactive:focus-visible,
1705
- .sp-rating--interactive.sp-rating--focus,
1706
- .sp-rating--interactive.is-focus {
1902
+ .sp-rating--focus,
1903
+ .is-focus {
1707
1904
  outline: none;
1708
1905
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1709
1906
  }
@@ -1728,4 +1925,411 @@
1728
1925
  color: var(--sp-component-rating-text);
1729
1926
  font-size: var(--sp-font-sm-size);
1730
1927
  }
1928
+
1929
+ .sp-rating-text--disabled {
1930
+ opacity: var(--sp-opacity-disabled);
1931
+ }
1932
+
1933
+ /* ALERTS --------------------------------------------------------------- */
1934
+ .sp-alert {
1935
+ display: flex;
1936
+ align-items: flex-start;
1937
+ gap: var(--sp-space-12);
1938
+ border-radius: var(--sp-component-alert-radius);
1939
+ border: var(--sp-component-border-width) solid transparent;
1940
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
1941
+ font-family: var(--sp-font-family-sans);
1942
+ font-size: var(--sp-font-sm-size);
1943
+ line-height: var(--sp-font-sm-line-height);
1944
+ transition:
1945
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
1946
+ color var(--sp-duration-fast) var(--sp-easing-out),
1947
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
1948
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
1949
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
1950
+ }
1951
+
1952
+ .sp-alert--dismissed {
1953
+ display: none;
1954
+ }
1955
+
1956
+ .sp-alert--full {
1957
+ width: 100%;
1958
+ }
1959
+
1960
+ .sp-alert--sm {
1961
+ padding: var(--sp-component-alert-padding-y-sm) var(--sp-component-alert-padding-x);
1962
+ font-size: var(--sp-font-xs-size);
1963
+ line-height: var(--sp-font-xs-line-height);
1964
+ }
1965
+
1966
+ .sp-alert--md {
1967
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
1968
+ font-size: var(--sp-font-sm-size);
1969
+ line-height: var(--sp-font-sm-line-height);
1970
+ }
1971
+
1972
+ .sp-alert--lg {
1973
+ padding: var(--sp-component-alert-padding-y-lg) var(--sp-component-alert-padding-x);
1974
+ font-size: var(--sp-font-md-size);
1975
+ line-height: var(--sp-font-md-line-height);
1976
+ }
1977
+
1978
+ .sp-alert--info {
1979
+ background-color: var(--sp-component-alert-info-bg);
1980
+ color: var(--sp-component-alert-info-text);
1981
+ border-color: var(--sp-component-alert-info-border);
1982
+ }
1983
+
1984
+ .sp-alert--success {
1985
+ background-color: var(--sp-component-alert-success-bg);
1986
+ color: var(--sp-component-alert-success-text);
1987
+ border-color: var(--sp-component-alert-success-border);
1988
+ }
1989
+
1990
+ .sp-alert--warning {
1991
+ background-color: var(--sp-component-alert-warning-bg);
1992
+ color: var(--sp-component-alert-warning-text);
1993
+ border-color: var(--sp-component-alert-warning-border);
1994
+ }
1995
+
1996
+ .sp-alert--danger {
1997
+ background-color: var(--sp-component-alert-danger-bg);
1998
+ color: var(--sp-component-alert-danger-text);
1999
+ border-color: var(--sp-component-alert-danger-border);
2000
+ }
2001
+
2002
+ .sp-alert--neutral {
2003
+ background-color: var(--sp-component-alert-neutral-bg);
2004
+ color: var(--sp-component-alert-neutral-text);
2005
+ border-color: var(--sp-component-alert-neutral-border);
2006
+ }
2007
+
2008
+ .sp-alert--interactive {
2009
+ cursor: pointer;
2010
+ }
2011
+
2012
+ .sp-alert--interactive:hover,
2013
+ .sp-alert--hover,
2014
+ .sp-alert.is-hover {
2015
+ opacity: var(--sp-opacity-hover);
2016
+ }
2017
+
2018
+ .sp-alert--interactive:active,
2019
+ .sp-alert--active,
2020
+ .sp-alert.is-active {
2021
+ opacity: var(--sp-opacity-active);
2022
+ }
2023
+
2024
+ .sp-alert--interactive:focus-visible,
2025
+ .sp-alert--focus,
2026
+ .sp-alert.is-focus {
2027
+ outline: none;
2028
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2029
+ }
2030
+
2031
+ .sp-alert:disabled,
2032
+ .sp-alert[aria-disabled="true"],
2033
+ .sp-alert--disabled {
2034
+ opacity: var(--sp-opacity-disabled);
2035
+ pointer-events: none;
2036
+ cursor: not-allowed;
2037
+ }
2038
+
2039
+ .sp-alert--loading,
2040
+ .sp-alert[aria-busy="true"] {
2041
+ opacity: var(--sp-opacity-active);
2042
+ pointer-events: none;
2043
+ }
2044
+
2045
+ /* AVATARS -------------------------------------------------------------- */
2046
+ .sp-avatar {
2047
+ display: inline-flex;
2048
+ align-items: center;
2049
+ justify-content: center;
2050
+ overflow: hidden;
2051
+ flex-shrink: 0;
2052
+ background-color: var(--sp-component-avatar-bg);
2053
+ color: var(--sp-component-avatar-text);
2054
+ border: var(--sp-component-border-width) solid transparent;
2055
+ font-family: var(--sp-component-avatar-font);
2056
+ font-weight: var(--sp-component-avatar-weight);
2057
+ transition:
2058
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2059
+ color var(--sp-duration-fast) var(--sp-easing-out),
2060
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2061
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2062
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2063
+ }
2064
+
2065
+ .sp-avatar--xs {
2066
+ width: var(--sp-component-avatar-size-xs);
2067
+ height: var(--sp-component-avatar-size-xs);
2068
+ font-size: var(--sp-font-xs-size);
2069
+ line-height: var(--sp-font-xs-line-height);
2070
+ }
2071
+
2072
+ .sp-avatar--sm {
2073
+ width: var(--sp-component-avatar-size-sm);
2074
+ height: var(--sp-component-avatar-size-sm);
2075
+ font-size: var(--sp-font-xs-size);
2076
+ line-height: var(--sp-font-xs-line-height);
2077
+ }
2078
+
2079
+ .sp-avatar--md {
2080
+ width: var(--sp-component-avatar-size-md);
2081
+ height: var(--sp-component-avatar-size-md);
2082
+ font-size: var(--sp-font-sm-size);
2083
+ line-height: var(--sp-font-sm-line-height);
2084
+ }
2085
+
2086
+ .sp-avatar--lg {
2087
+ width: var(--sp-component-avatar-size-lg);
2088
+ height: var(--sp-component-avatar-size-lg);
2089
+ font-size: var(--sp-font-md-size);
2090
+ line-height: var(--sp-font-md-line-height);
2091
+ }
2092
+
2093
+ .sp-avatar--xl {
2094
+ width: var(--sp-component-avatar-size-xl);
2095
+ height: var(--sp-component-avatar-size-xl);
2096
+ font-size: var(--sp-font-lg-size);
2097
+ line-height: var(--sp-font-lg-line-height);
2098
+ }
2099
+
2100
+ .sp-avatar--circle {
2101
+ border-radius: var(--sp-component-avatar-radius-circle);
2102
+ }
2103
+
2104
+ .sp-avatar--square {
2105
+ border-radius: var(--sp-component-avatar-radius-square);
2106
+ }
2107
+
2108
+ .sp-avatar--full {
2109
+ width: 100%;
2110
+ }
2111
+
2112
+ .sp-avatar--interactive {
2113
+ cursor: pointer;
2114
+ }
2115
+
2116
+ .sp-avatar--interactive:hover,
2117
+ .sp-avatar--hover,
2118
+ .sp-avatar.is-hover {
2119
+ opacity: var(--sp-opacity-hover);
2120
+ }
2121
+
2122
+ .sp-avatar--interactive:active,
2123
+ .sp-avatar--active,
2124
+ .sp-avatar.is-active {
2125
+ opacity: var(--sp-opacity-active);
2126
+ }
2127
+
2128
+ .sp-avatar--interactive:focus-visible,
2129
+ .sp-avatar--focus,
2130
+ .sp-avatar.is-focus {
2131
+ outline: none;
2132
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2133
+ }
2134
+
2135
+ .sp-avatar:disabled,
2136
+ .sp-avatar[aria-disabled="true"],
2137
+ .sp-avatar--disabled {
2138
+ opacity: var(--sp-opacity-disabled);
2139
+ pointer-events: none;
2140
+ cursor: not-allowed;
2141
+ }
2142
+
2143
+ .sp-avatar--loading,
2144
+ .sp-avatar[aria-busy="true"] {
2145
+ opacity: var(--sp-opacity-active);
2146
+ pointer-events: none;
2147
+ }
2148
+
2149
+ .sp-avatar--placeholder {
2150
+ background-color: var(--sp-surface-alternate);
2151
+ color: var(--sp-text-on-surface-meta);
2152
+ }
2153
+
2154
+ /* TAGS ----------------------------------------------------------------- */
2155
+ .sp-tag {
2156
+ display: inline-flex;
2157
+ align-items: center;
2158
+ gap: var(--sp-component-tag-gap);
2159
+ border-radius: var(--sp-component-tag-radius);
2160
+ font-family: var(--sp-component-tag-font);
2161
+ font-weight: var(--sp-component-tag-weight);
2162
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2163
+ font-size: var(--sp-font-sm-size);
2164
+ line-height: var(--sp-font-sm-line-height);
2165
+ border: var(--sp-component-border-width) solid transparent;
2166
+ white-space: nowrap;
2167
+ transition:
2168
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2169
+ color var(--sp-duration-fast) var(--sp-easing-out),
2170
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2171
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2172
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2173
+ }
2174
+
2175
+ .sp-tag--full {
2176
+ width: 100%;
2177
+ }
2178
+
2179
+ .sp-tag--default {
2180
+ background-color: var(--sp-component-tag-default-bg);
2181
+ color: var(--sp-component-tag-default-text);
2182
+ }
2183
+
2184
+ .sp-tag--primary {
2185
+ background-color: var(--sp-component-tag-primary-bg);
2186
+ color: var(--sp-component-tag-primary-text);
2187
+ }
2188
+
2189
+ .sp-tag--secondary {
2190
+ background-color: var(--sp-component-tag-secondary-bg);
2191
+ color: var(--sp-component-tag-secondary-text);
2192
+ }
2193
+
2194
+ .sp-tag--success {
2195
+ background-color: var(--sp-component-tag-success-bg);
2196
+ color: var(--sp-component-tag-success-text);
2197
+ }
2198
+
2199
+ .sp-tag--warning {
2200
+ background-color: var(--sp-component-tag-warning-bg);
2201
+ color: var(--sp-component-tag-warning-text);
2202
+ }
2203
+
2204
+ .sp-tag--danger {
2205
+ background-color: var(--sp-component-tag-danger-bg);
2206
+ color: var(--sp-component-tag-danger-text);
2207
+ }
2208
+
2209
+ .sp-tag--info {
2210
+ background-color: var(--sp-component-tag-info-bg);
2211
+ color: var(--sp-component-tag-info-text);
2212
+ }
2213
+
2214
+ .sp-tag--neutral {
2215
+ background-color: var(--sp-component-tag-neutral-bg);
2216
+ color: var(--sp-component-tag-neutral-text);
2217
+ }
2218
+
2219
+ .sp-tag--accent {
2220
+ background-color: var(--sp-component-tag-accent-bg);
2221
+ color: var(--sp-component-tag-accent-text);
2222
+ }
2223
+
2224
+ .sp-tag--cta {
2225
+ background-color: var(--sp-component-tag-cta-bg);
2226
+ color: var(--sp-component-tag-cta-text);
2227
+ }
2228
+
2229
+ .sp-tag--outline {
2230
+ background-color: var(--sp-component-tag-outline-bg);
2231
+ color: var(--sp-component-tag-outline-text);
2232
+ border-color: var(--sp-component-tag-outline-border);
2233
+ }
2234
+
2235
+ .sp-tag--selected {
2236
+ background-color: var(--sp-component-tag-selected-bg);
2237
+ color: var(--sp-component-tag-selected-text);
2238
+ border-color: transparent;
2239
+ }
2240
+
2241
+ .sp-tag--ghost {
2242
+ background-color: var(--sp-component-tag-ghost-bg);
2243
+ color: var(--sp-component-tag-ghost-text);
2244
+ }
2245
+
2246
+ .sp-tag--interactive {
2247
+ cursor: pointer;
2248
+ }
2249
+
2250
+ .sp-tag--interactive:hover,
2251
+ .sp-tag--hover,
2252
+ .sp-tag.is-hover {
2253
+ opacity: var(--sp-opacity-hover);
2254
+ }
2255
+
2256
+ .sp-tag--interactive:active,
2257
+ .sp-tag--active,
2258
+ .sp-tag.is-active {
2259
+ opacity: var(--sp-opacity-active);
2260
+ }
2261
+
2262
+ .sp-tag--interactive:focus-visible,
2263
+ .sp-tag--focus,
2264
+ .sp-tag.is-focus {
2265
+ outline: none;
2266
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2267
+ }
2268
+
2269
+ .sp-tag:disabled,
2270
+ .sp-tag[aria-disabled="true"],
2271
+ .sp-tag--disabled {
2272
+ opacity: var(--sp-opacity-disabled);
2273
+ pointer-events: none;
2274
+ cursor: not-allowed;
2275
+ }
2276
+
2277
+ .sp-tag--loading,
2278
+ .sp-tag[aria-busy="true"] {
2279
+ opacity: var(--sp-opacity-active);
2280
+ pointer-events: none;
2281
+ }
2282
+
2283
+ .sp-tag--sm {
2284
+ padding: var(--sp-component-tag-padding-y-sm) var(--sp-component-tag-padding-x-sm);
2285
+ font-size: var(--sp-font-xs-size);
2286
+ line-height: var(--sp-font-xs-line-height);
2287
+ }
2288
+
2289
+ .sp-tag--md {
2290
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2291
+ font-size: var(--sp-font-sm-size);
2292
+ line-height: var(--sp-font-sm-line-height);
2293
+ }
2294
+
2295
+ .sp-tag--lg {
2296
+ padding: var(--sp-component-tag-padding-y-lg) var(--sp-component-tag-padding-x-lg);
2297
+ font-size: var(--sp-font-md-size);
2298
+ line-height: var(--sp-font-md-line-height);
2299
+ }
2300
+
2301
+ .sp-tag--dismissible {
2302
+ gap: var(--sp-space-8);
2303
+ }
2304
+
2305
+ /* SPINNER -------------------------------------------------------------- */
2306
+
2307
+ @keyframes sp-spin {
2308
+ to {
2309
+ transform: rotate(360deg);
2310
+ }
2311
+ }
2312
+
2313
+ .sp-spinner {
2314
+ display: inline-block;
2315
+ border-radius: 50%;
2316
+ border: var(--sp-component-spinner-border-width) solid var(--sp-component-spinner-track-color);
2317
+ border-top-color: var(--sp-component-spinner-arc-color);
2318
+ animation: sp-spin var(--sp-component-spinner-duration) var(--sp-component-spinner-easing) infinite;
2319
+ }
2320
+
2321
+ .sp-spinner--sm {
2322
+ width: var(--sp-component-spinner-size-sm);
2323
+ height: var(--sp-component-spinner-size-sm);
2324
+ }
2325
+
2326
+ .sp-spinner--md {
2327
+ width: var(--sp-component-spinner-size-md);
2328
+ height: var(--sp-component-spinner-size-md);
2329
+ }
2330
+
2331
+ .sp-spinner--lg {
2332
+ width: var(--sp-component-spinner-size-lg);
2333
+ height: var(--sp-component-spinner-size-lg);
2334
+ }
1731
2335
  }