@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.
package/dist/index.css CHANGED
@@ -6,7 +6,7 @@
6
6
  --sp-surface-page: #f7f8fb;
7
7
  --sp-surface-card: #ffffff;
8
8
  --sp-surface-input: #ffffff;
9
- --sp-surface-overlay: rgba(20, 27, 36, 0.6);
9
+ --sp-surface-overlay: rgba(0, 0, 0, 0.6);
10
10
  --sp-surface-alternate: #eef1f6;
11
11
  --sp-surface-hero: linear-gradient(135deg, #5b6ee1 0%, #6f3fd7 100%);
12
12
  --sp-text-on-page-default: #141b24;
@@ -148,10 +148,14 @@
148
148
  --sp-layout-container-max-width: 72rem;
149
149
  --sp-border-width-base: 1px;
150
150
  --sp-border-width-thick: 2px;
151
+ --sp-border-style-none: none;
152
+ --sp-border-style-solid: solid;
151
153
  --sp-radius-none: 0;
152
154
  --sp-radius-sm: 2px;
153
155
  --sp-radius-md: 4px;
154
156
  --sp-radius-lg: 8px;
157
+ --sp-radius-xl: 12px;
158
+ --sp-radius-2xl: 16px;
155
159
  --sp-radius-pill: 999px;
156
160
  --sp-font-family-sans: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
157
161
  --sp-font-family-serif: 'Times New Roman', Times, serif;
@@ -187,34 +191,21 @@
187
191
  --sp-font-6xl-line-height: 5rem;
188
192
  --sp-font-6xl-weight: 900;
189
193
  --sp-font-xs-letter-spacing: 0.02em;
190
- --sp-text-on-page-default: #141b24;
191
- --sp-text-on-page-muted: #4b576a;
192
- --sp-text-on-page-subtle: #657287;
193
- --sp-text-on-page-meta: #657287;
194
- --sp-text-on-surface-default: #141b24;
195
- --sp-text-on-surface-muted: #4b576a;
196
- --sp-text-on-surface-subtle: #657287;
197
- --sp-text-on-surface-meta: #657287;
198
- --sp-badge-neutral-bg: #eef1f6;
199
- --sp-badge-neutral-text: #374253;
200
- --sp-badge-info-bg: #e0f2fe;
201
- --sp-badge-info-text: #075985;
202
- --sp-badge-success-bg: #dcfce7;
203
- --sp-badge-success-text: #166534;
204
- --sp-badge-warning-bg: #fff1c2;
205
- --sp-badge-warning-text: #8f5200;
206
- --sp-badge-danger-bg: #fee2e2;
207
- --sp-badge-danger-text: #991b1b;
208
- --sp-icon-box-bg: #ffffff;
209
- --sp-icon-box-border: #d9dfeb;
210
- --sp-icon-box-icon-default: #0369a1;
211
- --sp-icon-box-icon-success: #16a34a;
212
- --sp-icon-box-icon-warning: #d48806;
213
- --sp-icon-box-icon-danger: #dc2626;
194
+ --sp-font-sm-letter-spacing: 0em;
195
+ --sp-font-md-letter-spacing: 0em;
196
+ --sp-font-lg-letter-spacing: 0em;
197
+ --sp-font-xl-letter-spacing: 0em;
198
+ --sp-font-2xl-letter-spacing: 0em;
199
+ --sp-font-3xl-letter-spacing: 0em;
200
+ --sp-font-4xl-letter-spacing: 0em;
201
+ --sp-font-5xl-letter-spacing: 0em;
202
+ --sp-font-6xl-letter-spacing: 0em;
214
203
  --sp-shadow-none: none;
215
204
  --sp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.06);
216
205
  --sp-shadow-md: 0 2px 6px -1px rgba(0, 0, 0, 0.08);
217
206
  --sp-shadow-lg: 0 6px 16px -4px rgba(0, 0, 0, 0.12);
207
+ --sp-shadow-xl: 0 12px 24px -6px rgba(0, 0, 0, 0.15);
208
+ --sp-shadow-2xl: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
218
209
  --sp-breakpoint-sm: 640px;
219
210
  --sp-breakpoint-md: 768px;
220
211
  --sp-breakpoint-lg: 1024px;
@@ -228,20 +219,26 @@
228
219
  --sp-z-index-modal: 1400;
229
220
  --sp-z-index-popover: 1500;
230
221
  --sp-z-index-tooltip: 1600;
222
+ --sp-z-index-toast: 1700;
231
223
  --sp-duration-instant: 75ms;
232
224
  --sp-duration-fast: 150ms;
233
225
  --sp-duration-base: 200ms;
226
+ --sp-duration-relaxed: 250ms;
234
227
  --sp-duration-moderate: 300ms;
235
228
  --sp-duration-slow: 500ms;
236
229
  --sp-duration-slower: 700ms;
230
+ --sp-duration-long: 1000ms;
231
+ --sp-duration-slowest: 1200ms;
237
232
  --sp-easing-linear: linear;
238
233
  --sp-easing-in: cubic-bezier(0.4, 0, 1, 1);
239
234
  --sp-easing-out: cubic-bezier(0, 0, 0.2, 1);
240
235
  --sp-easing-inout: cubic-bezier(0.4, 0, 0.2, 1);
241
236
  --sp-easing-spring: cubic-bezier(0.4, 0, 0.2, 1);
237
+ --sp-easing-overshoot: cubic-bezier(0.34, 1.56, 0.64, 1);
242
238
  --sp-opacity-disabled: 0.38;
243
239
  --sp-opacity-hover: 0.92;
244
240
  --sp-opacity-active: 0.84;
241
+ --sp-opacity-loading: 0.6;
245
242
  --sp-opacity-focus: 1;
246
243
  --sp-opacity-overlay: 0.5;
247
244
  --sp-opacity-tooltip: 0.95;
@@ -373,7 +370,7 @@
373
370
  --sp-button-text-default: #eef1f6;
374
371
  --sp-button-text-on-primary: #ffffff;
375
372
  --sp-badge-neutral-bg: #374253;
376
- --sp-badge-neutral-text: #eef1f6;
373
+ --sp-badge-neutral-text: #f7f8fb;
377
374
  --sp-badge-info-bg: #0c4a6e;
378
375
  --sp-badge-info-text: #e0f2fe;
379
376
  --sp-badge-success-bg: #166534;
@@ -568,6 +565,8 @@
568
565
  --sp-component-badge-ghost-text: var(--sp-button-ghost-text);
569
566
  --sp-component-badge-accent-bg: var(--sp-button-accent-bg);
570
567
  --sp-component-badge-accent-text: var(--sp-button-accent-text);
568
+ --sp-component-badge-cta-bg: var(--sp-button-cta-bg);
569
+ --sp-component-badge-cta-text: var(--sp-button-cta-text);
571
570
 
572
571
  /* badge hover states derived from Spectre token semantics */
573
572
  --sp-component-badge-primary-bg-hover: var(--sp-button-primary-bghover);
@@ -579,6 +578,7 @@
579
578
  --sp-component-badge-info-bg-hover: var(--sp-color-info-200);
580
579
  --sp-component-badge-ghost-bg-hover: var(--sp-button-ghost-bghover);
581
580
  --sp-component-badge-accent-bg-hover: var(--sp-button-accent-bghover);
581
+ --sp-component-badge-cta-bg-hover: var(--sp-button-cta-bghover);
582
582
 
583
583
  --sp-component-badge-padding-x-sm: var(--sp-space-8);
584
584
  --sp-component-badge-padding-x-md: var(--sp-space-12);
@@ -611,15 +611,27 @@
611
611
  --sp-component-iconbox-ghost-text: var(--sp-button-ghost-text);
612
612
  --sp-component-iconbox-accent-bg: var(--sp-button-accent-bg);
613
613
  --sp-component-iconbox-accent-text: var(--sp-button-accent-text);
614
+ --sp-component-iconbox-cta-bg: var(--sp-button-cta-bg);
615
+ --sp-component-iconbox-cta-text: var(--sp-button-cta-text);
614
616
 
615
617
  /* testimonial roles */
616
618
  --sp-component-testimonial-bg: var(--sp-surface-card);
617
619
  --sp-component-testimonial-bg-hover: var(--sp-color-neutral-50);
618
620
  --sp-component-testimonial-border: var(--sp-color-neutral-200);
621
+ --sp-component-testimonial-border-base: var(--sp-component-testimonial-ghost-border);
619
622
  --sp-component-testimonial-text: var(--sp-color-neutral-700);
620
623
  --sp-component-testimonial-author-name: var(--sp-color-neutral-900);
621
624
  --sp-component-testimonial-author-title: var(--sp-color-neutral-600);
622
625
  --sp-component-testimonial-quote-mark: var(--sp-color-neutral-600);
626
+ --sp-component-testimonial-shadow: var(--sp-shadow-none);
627
+ --sp-component-testimonial-shadow-elevated: var(--sp-shadow-lg);
628
+ --sp-component-testimonial-shadow-flat: var(--sp-shadow-none);
629
+ --sp-component-testimonial-shadow-outline: var(--sp-shadow-none);
630
+ --sp-component-testimonial-shadow-ghost: var(--sp-shadow-none);
631
+ --sp-component-testimonial-outline-bg: var(--sp-component-testimonial-bg);
632
+ --sp-component-testimonial-outline-border: var(--sp-component-testimonial-border);
633
+ --sp-component-testimonial-ghost-bg: var(--sp-button-ghost-bg);
634
+ --sp-component-testimonial-ghost-border: var(--sp-component-testimonial-ghost-bg);
623
635
 
624
636
  /* pricing card roles */
625
637
  --sp-component-pricing-card-bg: var(--sp-surface-card);
@@ -640,13 +652,97 @@
640
652
  --sp-component-rating-size-sm: var(--sp-font-sm-size);
641
653
  --sp-component-rating-size-md: var(--sp-font-md-size);
642
654
  --sp-component-rating-size-lg: var(--sp-font-lg-size);
655
+
656
+ /* alert roles */
657
+ --sp-component-alert-radius: var(--sp-radius-lg);
658
+ --sp-component-alert-padding-x: var(--sp-space-16);
659
+ --sp-component-alert-padding-y-sm: var(--sp-space-8);
660
+ --sp-component-alert-padding-y-md: var(--sp-space-12);
661
+ --sp-component-alert-padding-y-lg: var(--sp-space-16);
662
+ --sp-component-alert-info-bg: var(--sp-badge-info-bg);
663
+ --sp-component-alert-info-text: var(--sp-badge-info-text);
664
+ --sp-component-alert-info-border: var(--sp-color-info-200);
665
+ --sp-component-alert-success-bg: var(--sp-badge-success-bg);
666
+ --sp-component-alert-success-text: var(--sp-badge-success-text);
667
+ --sp-component-alert-success-border: var(--sp-color-success-200);
668
+ --sp-component-alert-warning-bg: var(--sp-badge-warning-bg);
669
+ --sp-component-alert-warning-text: var(--sp-badge-warning-text);
670
+ --sp-component-alert-warning-border: var(--sp-color-warning-200);
671
+ --sp-component-alert-danger-bg: var(--sp-badge-danger-bg);
672
+ --sp-component-alert-danger-text: var(--sp-badge-danger-text);
673
+ --sp-component-alert-danger-border: var(--sp-color-error-200);
674
+ --sp-component-alert-neutral-bg: var(--sp-badge-neutral-bg);
675
+ --sp-component-alert-neutral-text: var(--sp-badge-neutral-text);
676
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-200);
677
+
678
+ /* avatar roles */
679
+ --sp-component-avatar-size-xs: var(--sp-space-24);
680
+ --sp-component-avatar-size-sm: var(--sp-space-32);
681
+ --sp-component-avatar-size-md: var(--sp-space-48);
682
+ --sp-component-avatar-size-lg: var(--sp-space-64);
683
+ --sp-component-avatar-size-xl: var(--sp-space-80);
684
+ --sp-component-avatar-bg: var(--sp-surface-alternate);
685
+ --sp-component-avatar-text: var(--sp-text-on-surface-default);
686
+ --sp-component-avatar-radius-circle: var(--sp-radius-pill);
687
+ --sp-component-avatar-radius-square: var(--sp-radius-lg);
688
+ --sp-component-avatar-font: var(--sp-font-family-sans);
689
+ --sp-component-avatar-weight: var(--sp-font-md-weight);
690
+
691
+ /* tag roles */
692
+ --sp-component-tag-radius: var(--sp-radius-pill);
693
+ --sp-component-tag-font: var(--sp-font-family-sans);
694
+ --sp-component-tag-weight: var(--sp-font-sm-weight);
695
+ --sp-component-tag-padding-x-sm: var(--sp-space-8);
696
+ --sp-component-tag-padding-x-md: var(--sp-space-12);
697
+ --sp-component-tag-padding-x-lg: var(--sp-space-16);
698
+ --sp-component-tag-default-bg: var(--sp-badge-neutral-bg);
699
+ --sp-component-tag-default-text: var(--sp-badge-neutral-text);
700
+ --sp-component-tag-primary-bg: var(--sp-button-primary-bg);
701
+ --sp-component-tag-primary-text: var(--sp-button-text-on-primary);
702
+ --sp-component-tag-secondary-bg: var(--sp-button-secondary-bg);
703
+ --sp-component-tag-secondary-text: var(--sp-button-secondary-text);
704
+ --sp-component-tag-success-bg: var(--sp-badge-success-bg);
705
+ --sp-component-tag-success-text: var(--sp-badge-success-text);
706
+ --sp-component-tag-warning-bg: var(--sp-badge-warning-bg);
707
+ --sp-component-tag-warning-text: var(--sp-badge-warning-text);
708
+ --sp-component-tag-danger-bg: var(--sp-badge-danger-bg);
709
+ --sp-component-tag-danger-text: var(--sp-badge-danger-text);
710
+ --sp-component-tag-info-bg: var(--sp-badge-info-bg);
711
+ --sp-component-tag-info-text: var(--sp-badge-info-text);
712
+ --sp-component-tag-neutral-bg: var(--sp-badge-neutral-bg);
713
+ --sp-component-tag-neutral-text: var(--sp-badge-neutral-text);
714
+ --sp-component-tag-accent-bg: var(--sp-button-accent-bg);
715
+ --sp-component-tag-accent-text: var(--sp-button-accent-text);
716
+ --sp-component-tag-cta-bg: var(--sp-button-cta-bg);
717
+ --sp-component-tag-cta-text: var(--sp-button-cta-text);
718
+ --sp-component-tag-outline-bg: transparent;
719
+ --sp-component-tag-outline-text: var(--sp-badge-neutral-text);
720
+ --sp-component-tag-outline-border: var(--sp-button-secondary-border);
721
+ --sp-component-tag-ghost-bg: var(--sp-button-ghost-bg);
722
+ --sp-component-tag-ghost-text: var(--sp-button-ghost-text);
723
+ --sp-component-tag-selected-bg: var(--sp-button-primary-bg);
724
+ --sp-component-tag-selected-text: var(--sp-button-primary-text);
725
+ --sp-component-tag-gap: var(--sp-space-4);
726
+ --sp-component-tag-padding-y-sm: var(--sp-space-4);
727
+ --sp-component-tag-padding-y-md: var(--sp-space-4);
728
+ --sp-component-tag-padding-y-lg: var(--sp-space-4);
729
+
730
+ /* spinner roles */
731
+ --sp-component-spinner-size-sm: var(--sp-space-16);
732
+ --sp-component-spinner-size-md: var(--sp-space-24);
733
+ --sp-component-spinner-size-lg: var(--sp-space-32);
734
+ --sp-component-spinner-border-width: var(--sp-border-width-thick);
735
+ --sp-component-spinner-track-color: var(--sp-color-neutral-200);
736
+ --sp-component-spinner-arc-color: var(--sp-button-primary-bg);
737
+ --sp-component-spinner-duration: var(--sp-duration-long);
738
+ --sp-component-spinner-easing: var(--sp-easing-linear);
643
739
  }
644
740
 
645
741
  /* dark mode overrides mapped from Spectre token mode definitions */
646
742
  :where(:root[data-spectre-theme="dark"]) {
647
743
  /* badge hover states remain manual as they are not currently exported as tokens */
648
744
  --sp-component-badge-success-bg-hover: var(--sp-color-success-700);
649
- --sp-component-badge-warning-bg-hover: var(--sp-color-warning-800);
745
+ --sp-component-badge-warning-bg-hover: var(--sp-color-warning-700);
650
746
  --sp-component-badge-danger-bg-hover: var(--sp-color-error-700);
651
747
  --sp-component-badge-neutral-bg-hover: var(--sp-color-neutral-600);
652
748
  --sp-component-badge-info-bg-hover: var(--sp-color-info-700);
@@ -679,6 +775,25 @@
679
775
  --sp-component-rating-star-filled: var(--sp-color-warning-400);
680
776
  --sp-component-rating-star-empty: var(--sp-color-neutral-700);
681
777
  --sp-component-rating-text: var(--sp-color-neutral-400);
778
+
779
+ --sp-component-alert-info-bg: var(--sp-color-info-800);
780
+ --sp-component-alert-info-text: var(--sp-color-info-100);
781
+ --sp-component-alert-info-border: var(--sp-color-info-700);
782
+ --sp-component-alert-success-bg: var(--sp-color-success-800);
783
+ --sp-component-alert-success-text: var(--sp-color-success-100);
784
+ --sp-component-alert-success-border: var(--sp-color-success-700);
785
+ --sp-component-alert-warning-bg: var(--sp-color-warning-800);
786
+ --sp-component-alert-warning-text: var(--sp-color-warning-100);
787
+ --sp-component-alert-warning-border: var(--sp-color-warning-700);
788
+ --sp-component-alert-danger-bg: var(--sp-color-error-800);
789
+ --sp-component-alert-danger-text: var(--sp-color-error-100);
790
+ --sp-component-alert-danger-border: var(--sp-color-error-700);
791
+ --sp-component-alert-neutral-bg: var(--sp-color-neutral-700);
792
+ --sp-component-alert-neutral-text: var(--sp-color-neutral-100);
793
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-600);
794
+
795
+ --sp-component-spinner-track-color: var(--sp-color-neutral-700);
796
+ --sp-component-spinner-arc-color: var(--sp-color-brand-400);
682
797
  }
683
798
 
684
799
  /* BUTTONS -------------------------------------------------------------- */
@@ -713,7 +828,8 @@
713
828
  pointer-events: none;
714
829
  }
715
830
 
716
- .sp-btn--loading {
831
+ .sp-btn--loading,
832
+ .sp-btn[aria-busy="true"] {
717
833
  pointer-events: none;
718
834
  opacity: var(--sp-opacity-active);
719
835
  }
@@ -780,6 +896,7 @@
780
896
  }
781
897
 
782
898
  .sp-btn--primary.sp-btn--disabled,
899
+ .sp-btn--primary[aria-disabled="true"],
783
900
  .sp-btn--primary:disabled {
784
901
  background-color: var(--sp-component-button-primary-bg-disabled);
785
902
  color: var(--sp-component-button-primary-text-disabled);
@@ -806,6 +923,7 @@
806
923
  }
807
924
 
808
925
  .sp-btn--secondary.sp-btn--disabled,
926
+ .sp-btn--secondary[aria-disabled="true"],
809
927
  .sp-btn--secondary:disabled {
810
928
  background-color: var(--sp-component-button-secondary-bg-disabled);
811
929
  color: var(--sp-component-button-secondary-text-disabled);
@@ -831,6 +949,7 @@
831
949
  }
832
950
 
833
951
  .sp-btn--ghost.sp-btn--disabled,
952
+ .sp-btn--ghost[aria-disabled="true"],
834
953
  .sp-btn--ghost:disabled {
835
954
  color: var(--sp-component-button-ghost-text-disabled);
836
955
  background-color: var(--sp-component-button-ghost-bg-disabled);
@@ -855,6 +974,7 @@
855
974
  }
856
975
 
857
976
  .sp-btn--danger.sp-btn--disabled,
977
+ .sp-btn--danger[aria-disabled="true"],
858
978
  .sp-btn--danger:disabled {
859
979
  background-color: var(--sp-component-button-danger-bg-disabled);
860
980
  color: var(--sp-component-button-danger-text-disabled);
@@ -879,6 +999,7 @@
879
999
  }
880
1000
 
881
1001
  .sp-btn--success.sp-btn--disabled,
1002
+ .sp-btn--success[aria-disabled="true"],
882
1003
  .sp-btn--success:disabled {
883
1004
  background-color: var(--sp-component-button-success-bg-disabled);
884
1005
  color: var(--sp-component-button-success-text-disabled);
@@ -904,6 +1025,7 @@
904
1025
  }
905
1026
 
906
1027
  .sp-btn--cta.sp-btn--disabled,
1028
+ .sp-btn--cta[aria-disabled="true"],
907
1029
  .sp-btn--cta:disabled {
908
1030
  background-color: var(--sp-component-button-cta-bg-disabled);
909
1031
  color: var(--sp-component-button-cta-text-disabled);
@@ -929,6 +1051,7 @@
929
1051
  }
930
1052
 
931
1053
  .sp-btn--accent.sp-btn--disabled,
1054
+ .sp-btn--accent[aria-disabled="true"],
932
1055
  .sp-btn--accent:disabled {
933
1056
  background-color: var(--sp-component-button-accent-bg-disabled);
934
1057
  color: var(--sp-component-button-accent-text-disabled);
@@ -949,12 +1072,20 @@
949
1072
  line-height: var(--sp-font-sm-line-height);
950
1073
  }
951
1074
 
1075
+ .sp-label--disabled {
1076
+ color: var(--sp-component-input-role-text-disabled);
1077
+ }
1078
+
952
1079
  .sp-helper-text {
953
1080
  color: var(--sp-text-on-surface-meta);
954
1081
  font-size: var(--sp-font-xs-size);
955
1082
  line-height: var(--sp-font-xs-line-height);
956
1083
  }
957
1084
 
1085
+ .sp-helper-text--disabled {
1086
+ opacity: var(--sp-opacity-disabled);
1087
+ }
1088
+
958
1089
  .sp-error-message {
959
1090
  color: var(--sp-component-input-role-text-error);
960
1091
  font-size: var(--sp-font-xs-size);
@@ -1116,11 +1247,15 @@
1116
1247
  height: 100%;
1117
1248
  }
1118
1249
 
1250
+ .sp-card:disabled,
1251
+ .sp-card[aria-disabled="true"],
1119
1252
  .sp-card--disabled {
1120
1253
  opacity: var(--sp-opacity-disabled);
1121
1254
  pointer-events: none;
1255
+ cursor: not-allowed;
1122
1256
  }
1123
1257
 
1258
+ .sp-card[aria-busy="true"],
1124
1259
  .sp-card--loading {
1125
1260
  opacity: var(--sp-opacity-active);
1126
1261
  pointer-events: none;
@@ -1135,14 +1270,20 @@
1135
1270
  }
1136
1271
 
1137
1272
  .sp-card--interactive:hover,
1138
- .sp-card--interactive:focus-visible,
1139
1273
  .sp-card--interactive:focus-within,
1140
1274
  .sp-card--interactive.sp-card--hover,
1141
- .sp-card--interactive.is-hover,
1275
+ .sp-card--interactive.is-hover {
1276
+ outline: none;
1277
+ transform: translateY(calc(var(--sp-component-border-width) * -1));
1278
+ box-shadow: var(--sp-component-card-shadow-elevated);
1279
+ }
1280
+
1281
+ .sp-card--interactive:focus-visible,
1142
1282
  .sp-card--interactive.sp-card--focus,
1143
1283
  .sp-card--interactive.is-focus {
1284
+ outline: none;
1144
1285
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1145
- box-shadow: var(--sp-component-card-shadow-elevated);
1286
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1146
1287
  }
1147
1288
 
1148
1289
  .sp-card--interactive:active,
@@ -1197,8 +1338,8 @@
1197
1338
  }
1198
1339
 
1199
1340
  .sp-badge--primary.sp-badge--interactive:hover,
1200
- .sp-badge--primary.sp-badge--interactive.sp-badge--hover,
1201
- .sp-badge--primary.sp-badge--interactive.is-hover {
1341
+ .sp-badge--primary.sp-badge--hover,
1342
+ .sp-badge--primary.is-hover {
1202
1343
  background-color: var(--sp-component-badge-primary-bg-hover);
1203
1344
  }
1204
1345
 
@@ -1209,8 +1350,8 @@
1209
1350
  }
1210
1351
 
1211
1352
  .sp-badge--secondary.sp-badge--interactive:hover,
1212
- .sp-badge--secondary.sp-badge--interactive.sp-badge--hover,
1213
- .sp-badge--secondary.sp-badge--interactive.is-hover {
1353
+ .sp-badge--secondary.sp-badge--hover,
1354
+ .sp-badge--secondary.is-hover {
1214
1355
  background-color: var(--sp-component-badge-secondary-bg-hover);
1215
1356
  }
1216
1357
 
@@ -1220,8 +1361,8 @@
1220
1361
  }
1221
1362
 
1222
1363
  .sp-badge--success.sp-badge--interactive:hover,
1223
- .sp-badge--success.sp-badge--interactive.sp-badge--hover,
1224
- .sp-badge--success.sp-badge--interactive.is-hover {
1364
+ .sp-badge--success.sp-badge--hover,
1365
+ .sp-badge--success.is-hover {
1225
1366
  background-color: var(--sp-component-badge-success-bg-hover);
1226
1367
  }
1227
1368
 
@@ -1231,8 +1372,8 @@
1231
1372
  }
1232
1373
 
1233
1374
  .sp-badge--warning.sp-badge--interactive:hover,
1234
- .sp-badge--warning.sp-badge--interactive.sp-badge--hover,
1235
- .sp-badge--warning.sp-badge--interactive.is-hover {
1375
+ .sp-badge--warning.sp-badge--hover,
1376
+ .sp-badge--warning.is-hover {
1236
1377
  background-color: var(--sp-component-badge-warning-bg-hover);
1237
1378
  }
1238
1379
 
@@ -1242,8 +1383,8 @@
1242
1383
  }
1243
1384
 
1244
1385
  .sp-badge--danger.sp-badge--interactive:hover,
1245
- .sp-badge--danger.sp-badge--interactive.sp-badge--hover,
1246
- .sp-badge--danger.sp-badge--interactive.is-hover {
1386
+ .sp-badge--danger.sp-badge--hover,
1387
+ .sp-badge--danger.is-hover {
1247
1388
  background-color: var(--sp-component-badge-danger-bg-hover);
1248
1389
  }
1249
1390
 
@@ -1253,8 +1394,8 @@
1253
1394
  }
1254
1395
 
1255
1396
  .sp-badge--neutral.sp-badge--interactive:hover,
1256
- .sp-badge--neutral.sp-badge--interactive.sp-badge--hover,
1257
- .sp-badge--neutral.sp-badge--interactive.is-hover {
1397
+ .sp-badge--neutral.sp-badge--hover,
1398
+ .sp-badge--neutral.is-hover {
1258
1399
  background-color: var(--sp-component-badge-neutral-bg-hover);
1259
1400
  }
1260
1401
 
@@ -1264,8 +1405,8 @@
1264
1405
  }
1265
1406
 
1266
1407
  .sp-badge--info.sp-badge--interactive:hover,
1267
- .sp-badge--info.sp-badge--interactive.sp-badge--hover,
1268
- .sp-badge--info.sp-badge--interactive.is-hover {
1408
+ .sp-badge--info.sp-badge--hover,
1409
+ .sp-badge--info.is-hover {
1269
1410
  background-color: var(--sp-component-badge-info-bg-hover);
1270
1411
  }
1271
1412
 
@@ -1275,8 +1416,8 @@
1275
1416
  }
1276
1417
 
1277
1418
  .sp-badge--ghost.sp-badge--interactive:hover,
1278
- .sp-badge--ghost.sp-badge--interactive.sp-badge--hover,
1279
- .sp-badge--ghost.sp-badge--interactive.is-hover {
1419
+ .sp-badge--ghost.sp-badge--hover,
1420
+ .sp-badge--ghost.is-hover {
1280
1421
  background-color: var(--sp-component-badge-ghost-bg-hover);
1281
1422
  }
1282
1423
 
@@ -1286,11 +1427,22 @@
1286
1427
  }
1287
1428
 
1288
1429
  .sp-badge--accent.sp-badge--interactive:hover,
1289
- .sp-badge--accent.sp-badge--interactive.sp-badge--hover,
1290
- .sp-badge--accent.sp-badge--interactive.is-hover {
1430
+ .sp-badge--accent.sp-badge--hover,
1431
+ .sp-badge--accent.is-hover {
1291
1432
  background-color: var(--sp-component-badge-accent-bg-hover);
1292
1433
  }
1293
1434
 
1435
+ .sp-badge--cta {
1436
+ background-color: var(--sp-component-badge-cta-bg);
1437
+ color: var(--sp-component-badge-cta-text);
1438
+ }
1439
+
1440
+ .sp-badge--cta.sp-badge--interactive:hover,
1441
+ .sp-badge--cta.sp-badge--hover,
1442
+ .sp-badge--cta.is-hover {
1443
+ background-color: var(--sp-component-badge-cta-bg-hover);
1444
+ }
1445
+
1294
1446
  .sp-badge--interactive {
1295
1447
  cursor: pointer;
1296
1448
  transition:
@@ -1302,24 +1454,27 @@
1302
1454
  }
1303
1455
 
1304
1456
  .sp-badge--interactive:active,
1305
- .sp-badge--interactive.sp-badge--active,
1306
- .sp-badge--interactive.is-active {
1457
+ .sp-badge--active,
1458
+ .sp-badge.is-active {
1307
1459
  opacity: var(--sp-opacity-active);
1308
1460
  }
1309
1461
 
1310
1462
  .sp-badge--interactive:focus-visible,
1311
- .sp-badge--interactive.sp-badge--focus,
1312
- .sp-badge--interactive.is-focus {
1463
+ .sp-badge--focus,
1464
+ .sp-badge.is-focus {
1313
1465
  outline: none;
1314
1466
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1315
1467
  }
1316
1468
 
1469
+ .sp-badge:disabled,
1470
+ .sp-badge[aria-disabled="true"],
1317
1471
  .sp-badge--disabled {
1318
1472
  opacity: var(--sp-opacity-disabled);
1319
1473
  pointer-events: none;
1320
1474
  }
1321
1475
 
1322
- .sp-badge--loading {
1476
+ .sp-badge--loading,
1477
+ .sp-badge[aria-busy="true"] {
1323
1478
  opacity: var(--sp-opacity-active);
1324
1479
  pointer-events: none;
1325
1480
  }
@@ -1404,6 +1559,10 @@
1404
1559
  font-size: var(--sp-font-lg-size);
1405
1560
  }
1406
1561
 
1562
+ .sp-iconbox--full {
1563
+ width: 100%;
1564
+ }
1565
+
1407
1566
  .sp-iconbox--pill {
1408
1567
  border-radius: var(--sp-radius-pill);
1409
1568
  }
@@ -1454,25 +1613,30 @@
1454
1613
  color: var(--sp-component-iconbox-accent-text);
1455
1614
  }
1456
1615
 
1616
+ .sp-iconbox--cta {
1617
+ background-color: var(--sp-component-iconbox-cta-bg);
1618
+ color: var(--sp-component-iconbox-cta-text);
1619
+ }
1620
+
1457
1621
  .sp-iconbox--interactive {
1458
1622
  cursor: pointer;
1459
1623
  }
1460
1624
 
1461
1625
  .sp-iconbox--interactive:hover,
1462
- .sp-iconbox--interactive.sp-iconbox--hover,
1463
- .sp-iconbox--interactive.is-hover {
1626
+ .sp-iconbox--hover,
1627
+ .sp-iconbox.is-hover {
1464
1628
  opacity: var(--sp-opacity-hover);
1465
1629
  }
1466
1630
 
1467
1631
  .sp-iconbox--interactive:active,
1468
- .sp-iconbox--interactive.sp-iconbox--active,
1469
- .sp-iconbox--interactive.is-active {
1632
+ .sp-iconbox--active,
1633
+ .sp-iconbox.is-active {
1470
1634
  opacity: var(--sp-opacity-active);
1471
1635
  }
1472
1636
 
1473
1637
  .sp-iconbox--interactive:focus-visible,
1474
- .sp-iconbox--interactive.sp-iconbox--focus,
1475
- .sp-iconbox--interactive.is-focus {
1638
+ .sp-iconbox--focus,
1639
+ .sp-iconbox.is-focus {
1476
1640
  outline: none;
1477
1641
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1478
1642
  }
@@ -1485,7 +1649,8 @@
1485
1649
  cursor: not-allowed;
1486
1650
  }
1487
1651
 
1488
- .sp-iconbox--loading {
1652
+ .sp-iconbox--loading,
1653
+ .sp-iconbox[aria-busy="true"] {
1489
1654
  opacity: var(--sp-opacity-active);
1490
1655
  pointer-events: none;
1491
1656
  }
@@ -1494,20 +1659,46 @@
1494
1659
 
1495
1660
  .sp-testimonial {
1496
1661
  background-color: var(--sp-component-testimonial-bg);
1497
- border: var(--sp-component-border-width) solid var(--sp-component-testimonial-border);
1662
+ border: var(--sp-component-border-width) solid var(--sp-component-testimonial-border-base);
1498
1663
  border-radius: var(--sp-radius-lg);
1499
1664
  padding: var(--sp-space-32);
1500
1665
  display: flex;
1501
1666
  flex-direction: column;
1502
1667
  gap: var(--sp-space-24);
1668
+ box-shadow: var(--sp-component-testimonial-shadow);
1669
+ }
1670
+
1671
+ .sp-testimonial--elevated {
1672
+ box-shadow: var(--sp-component-testimonial-shadow-elevated);
1673
+ }
1674
+
1675
+ .sp-testimonial--flat {
1676
+ box-shadow: var(--sp-component-testimonial-shadow-flat);
1677
+ border-color: var(--sp-component-testimonial-border);
1678
+ }
1679
+
1680
+ .sp-testimonial--outline {
1681
+ background-color: var(--sp-component-testimonial-outline-bg);
1682
+ border-color: var(--sp-component-testimonial-outline-border);
1683
+ box-shadow: var(--sp-component-testimonial-shadow-outline);
1684
+ }
1685
+
1686
+ .sp-testimonial--ghost {
1687
+ background-color: var(--sp-component-testimonial-ghost-bg);
1688
+ border-color: var(--sp-component-testimonial-ghost-border);
1689
+ box-shadow: var(--sp-component-testimonial-shadow-ghost);
1503
1690
  }
1504
1691
 
1692
+ .sp-testimonial:disabled,
1693
+ .sp-testimonial[aria-disabled="true"],
1505
1694
  .sp-testimonial--disabled {
1506
1695
  opacity: var(--sp-opacity-disabled);
1507
1696
  pointer-events: none;
1697
+ cursor: not-allowed;
1508
1698
  }
1509
1699
 
1510
- .sp-testimonial--loading {
1700
+ .sp-testimonial--loading,
1701
+ .sp-testimonial[aria-busy="true"] {
1511
1702
  opacity: var(--sp-opacity-active);
1512
1703
  pointer-events: none;
1513
1704
  }
@@ -1529,7 +1720,7 @@
1529
1720
  .sp-testimonial--interactive.sp-testimonial--hover,
1530
1721
  .sp-testimonial--interactive.is-hover {
1531
1722
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1532
- box-shadow: var(--sp-shadow-lg);
1723
+ box-shadow: var(--sp-component-testimonial-shadow-elevated);
1533
1724
  background-color: var(--sp-component-testimonial-bg-hover);
1534
1725
  }
1535
1726
 
@@ -1613,12 +1804,15 @@
1613
1804
  border: none;
1614
1805
  }
1615
1806
 
1807
+ .sp-pricing-card:disabled,
1808
+ .sp-pricing-card[aria-disabled="true"],
1616
1809
  .sp-pricing-card--disabled {
1617
1810
  opacity: var(--sp-opacity-disabled);
1618
1811
  pointer-events: none;
1619
1812
  }
1620
1813
 
1621
- .sp-pricing-card--loading {
1814
+ .sp-pricing-card--loading,
1815
+ .sp-pricing-card[aria-busy="true"] {
1622
1816
  opacity: var(--sp-opacity-active);
1623
1817
  pointer-events: none;
1624
1818
  }
@@ -1634,7 +1828,7 @@
1634
1828
  .sp-pricing-card--interactive:hover,
1635
1829
  .sp-pricing-card--interactive:focus-within,
1636
1830
  .sp-pricing-card--interactive.sp-pricing-card--hover,
1637
- .sp-pricing-card--interactive.is-hover {
1831
+ .sp-pricing-card.is-hover {
1638
1832
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1639
1833
  box-shadow: var(--sp-shadow-lg);
1640
1834
  background-color: var(--sp-component-pricing-card-bg-hover);
@@ -1644,28 +1838,28 @@
1644
1838
  .sp-pricing-card--featured.sp-pricing-card--interactive:focus-visible,
1645
1839
  .sp-pricing-card--featured.sp-pricing-card--interactive:focus-within,
1646
1840
  .sp-pricing-card--featured.sp-pricing-card--interactive.sp-pricing-card--hover,
1647
- .sp-pricing-card--featured.sp-pricing-card--interactive.is-hover,
1841
+ .sp-pricing-card--featured.is-hover,
1648
1842
  .sp-pricing-card--featured.sp-pricing-card--interactive.sp-pricing-card--focus,
1649
- .sp-pricing-card--featured.sp-pricing-card--interactive.is-focus {
1843
+ .sp-pricing-card--featured.is-focus {
1650
1844
  transform: scale(1.05) translateY(calc(var(--sp-component-border-width) * -1));
1651
1845
  }
1652
1846
 
1653
1847
  .sp-pricing-card--interactive:active,
1654
1848
  .sp-pricing-card--interactive.sp-pricing-card--active,
1655
- .sp-pricing-card--interactive.is-active {
1849
+ .sp-pricing-card.is-active {
1656
1850
  opacity: var(--sp-opacity-active);
1657
1851
  transform: translateY(0);
1658
1852
  }
1659
1853
 
1660
1854
  .sp-pricing-card--featured.sp-pricing-card--interactive:active,
1661
1855
  .sp-pricing-card--featured.sp-pricing-card--interactive.sp-pricing-card--active,
1662
- .sp-pricing-card--featured.sp-pricing-card--interactive.is-active {
1856
+ .sp-pricing-card--featured.is-active {
1663
1857
  transform: scale(1.05) translateY(0);
1664
1858
  }
1665
1859
 
1666
1860
  .sp-pricing-card--interactive:focus-visible,
1667
1861
  .sp-pricing-card--interactive.sp-pricing-card--focus,
1668
- .sp-pricing-card--interactive.is-focus {
1862
+ .sp-pricing-card.is-focus {
1669
1863
  outline: none;
1670
1864
  transform: translateY(calc(var(--sp-component-border-width) * -1));
1671
1865
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
@@ -1717,9 +1911,11 @@
1717
1911
  gap: var(--sp-space-8);
1718
1912
  font-size: var(--sp-component-rating-size-md);
1719
1913
  border-radius: var(--sp-radius-md);
1914
+ border: var(--sp-component-border-width) solid transparent;
1720
1915
  transition:
1721
1916
  opacity var(--sp-duration-fast) var(--sp-easing-out),
1722
- box-shadow var(--sp-duration-fast) var(--sp-easing-out);
1917
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
1918
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
1723
1919
  }
1724
1920
 
1725
1921
  .sp-rating--sm {
@@ -1750,7 +1946,8 @@
1750
1946
  cursor: not-allowed;
1751
1947
  }
1752
1948
 
1753
- .sp-rating--loading {
1949
+ .sp-rating--loading,
1950
+ .sp-rating[aria-busy="true"] {
1754
1951
  opacity: var(--sp-opacity-active);
1755
1952
  pointer-events: none;
1756
1953
  }
@@ -1760,20 +1957,20 @@
1760
1957
  }
1761
1958
 
1762
1959
  .sp-rating--interactive:hover,
1763
- .sp-rating--interactive.sp-rating--hover,
1764
- .sp-rating--interactive.is-hover {
1960
+ .sp-rating--hover,
1961
+ .is-hover {
1765
1962
  opacity: var(--sp-opacity-hover);
1766
1963
  }
1767
1964
 
1768
1965
  .sp-rating--interactive:active,
1769
- .sp-rating--interactive.sp-rating--active,
1770
- .sp-rating--interactive.is-active {
1966
+ .sp-rating--active,
1967
+ .is-active {
1771
1968
  opacity: var(--sp-opacity-active);
1772
1969
  }
1773
1970
 
1774
1971
  .sp-rating--interactive:focus-visible,
1775
- .sp-rating--interactive.sp-rating--focus,
1776
- .sp-rating--interactive.is-focus {
1972
+ .sp-rating--focus,
1973
+ .is-focus {
1777
1974
  outline: none;
1778
1975
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1779
1976
  }
@@ -1798,6 +1995,413 @@
1798
1995
  color: var(--sp-component-rating-text);
1799
1996
  font-size: var(--sp-font-sm-size);
1800
1997
  }
1998
+
1999
+ .sp-rating-text--disabled {
2000
+ opacity: var(--sp-opacity-disabled);
2001
+ }
2002
+
2003
+ /* ALERTS --------------------------------------------------------------- */
2004
+ .sp-alert {
2005
+ display: flex;
2006
+ align-items: flex-start;
2007
+ gap: var(--sp-space-12);
2008
+ border-radius: var(--sp-component-alert-radius);
2009
+ border: var(--sp-component-border-width) solid transparent;
2010
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
2011
+ font-family: var(--sp-font-family-sans);
2012
+ font-size: var(--sp-font-sm-size);
2013
+ line-height: var(--sp-font-sm-line-height);
2014
+ transition:
2015
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2016
+ color var(--sp-duration-fast) var(--sp-easing-out),
2017
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2018
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2019
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2020
+ }
2021
+
2022
+ .sp-alert--dismissed {
2023
+ display: none;
2024
+ }
2025
+
2026
+ .sp-alert--full {
2027
+ width: 100%;
2028
+ }
2029
+
2030
+ .sp-alert--sm {
2031
+ padding: var(--sp-component-alert-padding-y-sm) var(--sp-component-alert-padding-x);
2032
+ font-size: var(--sp-font-xs-size);
2033
+ line-height: var(--sp-font-xs-line-height);
2034
+ }
2035
+
2036
+ .sp-alert--md {
2037
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
2038
+ font-size: var(--sp-font-sm-size);
2039
+ line-height: var(--sp-font-sm-line-height);
2040
+ }
2041
+
2042
+ .sp-alert--lg {
2043
+ padding: var(--sp-component-alert-padding-y-lg) var(--sp-component-alert-padding-x);
2044
+ font-size: var(--sp-font-md-size);
2045
+ line-height: var(--sp-font-md-line-height);
2046
+ }
2047
+
2048
+ .sp-alert--info {
2049
+ background-color: var(--sp-component-alert-info-bg);
2050
+ color: var(--sp-component-alert-info-text);
2051
+ border-color: var(--sp-component-alert-info-border);
2052
+ }
2053
+
2054
+ .sp-alert--success {
2055
+ background-color: var(--sp-component-alert-success-bg);
2056
+ color: var(--sp-component-alert-success-text);
2057
+ border-color: var(--sp-component-alert-success-border);
2058
+ }
2059
+
2060
+ .sp-alert--warning {
2061
+ background-color: var(--sp-component-alert-warning-bg);
2062
+ color: var(--sp-component-alert-warning-text);
2063
+ border-color: var(--sp-component-alert-warning-border);
2064
+ }
2065
+
2066
+ .sp-alert--danger {
2067
+ background-color: var(--sp-component-alert-danger-bg);
2068
+ color: var(--sp-component-alert-danger-text);
2069
+ border-color: var(--sp-component-alert-danger-border);
2070
+ }
2071
+
2072
+ .sp-alert--neutral {
2073
+ background-color: var(--sp-component-alert-neutral-bg);
2074
+ color: var(--sp-component-alert-neutral-text);
2075
+ border-color: var(--sp-component-alert-neutral-border);
2076
+ }
2077
+
2078
+ .sp-alert--interactive {
2079
+ cursor: pointer;
2080
+ }
2081
+
2082
+ .sp-alert--interactive:hover,
2083
+ .sp-alert--hover,
2084
+ .sp-alert.is-hover {
2085
+ opacity: var(--sp-opacity-hover);
2086
+ }
2087
+
2088
+ .sp-alert--interactive:active,
2089
+ .sp-alert--active,
2090
+ .sp-alert.is-active {
2091
+ opacity: var(--sp-opacity-active);
2092
+ }
2093
+
2094
+ .sp-alert--interactive:focus-visible,
2095
+ .sp-alert--focus,
2096
+ .sp-alert.is-focus {
2097
+ outline: none;
2098
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2099
+ }
2100
+
2101
+ .sp-alert:disabled,
2102
+ .sp-alert[aria-disabled="true"],
2103
+ .sp-alert--disabled {
2104
+ opacity: var(--sp-opacity-disabled);
2105
+ pointer-events: none;
2106
+ cursor: not-allowed;
2107
+ }
2108
+
2109
+ .sp-alert--loading,
2110
+ .sp-alert[aria-busy="true"] {
2111
+ opacity: var(--sp-opacity-active);
2112
+ pointer-events: none;
2113
+ }
2114
+
2115
+ /* AVATARS -------------------------------------------------------------- */
2116
+ .sp-avatar {
2117
+ display: inline-flex;
2118
+ align-items: center;
2119
+ justify-content: center;
2120
+ overflow: hidden;
2121
+ flex-shrink: 0;
2122
+ background-color: var(--sp-component-avatar-bg);
2123
+ color: var(--sp-component-avatar-text);
2124
+ border: var(--sp-component-border-width) solid transparent;
2125
+ font-family: var(--sp-component-avatar-font);
2126
+ font-weight: var(--sp-component-avatar-weight);
2127
+ transition:
2128
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2129
+ color var(--sp-duration-fast) var(--sp-easing-out),
2130
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2131
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2132
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2133
+ }
2134
+
2135
+ .sp-avatar--xs {
2136
+ width: var(--sp-component-avatar-size-xs);
2137
+ height: var(--sp-component-avatar-size-xs);
2138
+ font-size: var(--sp-font-xs-size);
2139
+ line-height: var(--sp-font-xs-line-height);
2140
+ }
2141
+
2142
+ .sp-avatar--sm {
2143
+ width: var(--sp-component-avatar-size-sm);
2144
+ height: var(--sp-component-avatar-size-sm);
2145
+ font-size: var(--sp-font-xs-size);
2146
+ line-height: var(--sp-font-xs-line-height);
2147
+ }
2148
+
2149
+ .sp-avatar--md {
2150
+ width: var(--sp-component-avatar-size-md);
2151
+ height: var(--sp-component-avatar-size-md);
2152
+ font-size: var(--sp-font-sm-size);
2153
+ line-height: var(--sp-font-sm-line-height);
2154
+ }
2155
+
2156
+ .sp-avatar--lg {
2157
+ width: var(--sp-component-avatar-size-lg);
2158
+ height: var(--sp-component-avatar-size-lg);
2159
+ font-size: var(--sp-font-md-size);
2160
+ line-height: var(--sp-font-md-line-height);
2161
+ }
2162
+
2163
+ .sp-avatar--xl {
2164
+ width: var(--sp-component-avatar-size-xl);
2165
+ height: var(--sp-component-avatar-size-xl);
2166
+ font-size: var(--sp-font-lg-size);
2167
+ line-height: var(--sp-font-lg-line-height);
2168
+ }
2169
+
2170
+ .sp-avatar--circle {
2171
+ border-radius: var(--sp-component-avatar-radius-circle);
2172
+ }
2173
+
2174
+ .sp-avatar--square {
2175
+ border-radius: var(--sp-component-avatar-radius-square);
2176
+ }
2177
+
2178
+ .sp-avatar--full {
2179
+ width: 100%;
2180
+ }
2181
+
2182
+ .sp-avatar--interactive {
2183
+ cursor: pointer;
2184
+ }
2185
+
2186
+ .sp-avatar--interactive:hover,
2187
+ .sp-avatar--hover,
2188
+ .sp-avatar.is-hover {
2189
+ opacity: var(--sp-opacity-hover);
2190
+ }
2191
+
2192
+ .sp-avatar--interactive:active,
2193
+ .sp-avatar--active,
2194
+ .sp-avatar.is-active {
2195
+ opacity: var(--sp-opacity-active);
2196
+ }
2197
+
2198
+ .sp-avatar--interactive:focus-visible,
2199
+ .sp-avatar--focus,
2200
+ .sp-avatar.is-focus {
2201
+ outline: none;
2202
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2203
+ }
2204
+
2205
+ .sp-avatar:disabled,
2206
+ .sp-avatar[aria-disabled="true"],
2207
+ .sp-avatar--disabled {
2208
+ opacity: var(--sp-opacity-disabled);
2209
+ pointer-events: none;
2210
+ cursor: not-allowed;
2211
+ }
2212
+
2213
+ .sp-avatar--loading,
2214
+ .sp-avatar[aria-busy="true"] {
2215
+ opacity: var(--sp-opacity-active);
2216
+ pointer-events: none;
2217
+ }
2218
+
2219
+ .sp-avatar--placeholder {
2220
+ background-color: var(--sp-surface-alternate);
2221
+ color: var(--sp-text-on-surface-meta);
2222
+ }
2223
+
2224
+ /* TAGS ----------------------------------------------------------------- */
2225
+ .sp-tag {
2226
+ display: inline-flex;
2227
+ align-items: center;
2228
+ gap: var(--sp-component-tag-gap);
2229
+ border-radius: var(--sp-component-tag-radius);
2230
+ font-family: var(--sp-component-tag-font);
2231
+ font-weight: var(--sp-component-tag-weight);
2232
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2233
+ font-size: var(--sp-font-sm-size);
2234
+ line-height: var(--sp-font-sm-line-height);
2235
+ border: var(--sp-component-border-width) solid transparent;
2236
+ white-space: nowrap;
2237
+ transition:
2238
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2239
+ color var(--sp-duration-fast) var(--sp-easing-out),
2240
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2241
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2242
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2243
+ }
2244
+
2245
+ .sp-tag--full {
2246
+ width: 100%;
2247
+ }
2248
+
2249
+ .sp-tag--default {
2250
+ background-color: var(--sp-component-tag-default-bg);
2251
+ color: var(--sp-component-tag-default-text);
2252
+ }
2253
+
2254
+ .sp-tag--primary {
2255
+ background-color: var(--sp-component-tag-primary-bg);
2256
+ color: var(--sp-component-tag-primary-text);
2257
+ }
2258
+
2259
+ .sp-tag--secondary {
2260
+ background-color: var(--sp-component-tag-secondary-bg);
2261
+ color: var(--sp-component-tag-secondary-text);
2262
+ }
2263
+
2264
+ .sp-tag--success {
2265
+ background-color: var(--sp-component-tag-success-bg);
2266
+ color: var(--sp-component-tag-success-text);
2267
+ }
2268
+
2269
+ .sp-tag--warning {
2270
+ background-color: var(--sp-component-tag-warning-bg);
2271
+ color: var(--sp-component-tag-warning-text);
2272
+ }
2273
+
2274
+ .sp-tag--danger {
2275
+ background-color: var(--sp-component-tag-danger-bg);
2276
+ color: var(--sp-component-tag-danger-text);
2277
+ }
2278
+
2279
+ .sp-tag--info {
2280
+ background-color: var(--sp-component-tag-info-bg);
2281
+ color: var(--sp-component-tag-info-text);
2282
+ }
2283
+
2284
+ .sp-tag--neutral {
2285
+ background-color: var(--sp-component-tag-neutral-bg);
2286
+ color: var(--sp-component-tag-neutral-text);
2287
+ }
2288
+
2289
+ .sp-tag--accent {
2290
+ background-color: var(--sp-component-tag-accent-bg);
2291
+ color: var(--sp-component-tag-accent-text);
2292
+ }
2293
+
2294
+ .sp-tag--cta {
2295
+ background-color: var(--sp-component-tag-cta-bg);
2296
+ color: var(--sp-component-tag-cta-text);
2297
+ }
2298
+
2299
+ .sp-tag--outline {
2300
+ background-color: var(--sp-component-tag-outline-bg);
2301
+ color: var(--sp-component-tag-outline-text);
2302
+ border-color: var(--sp-component-tag-outline-border);
2303
+ }
2304
+
2305
+ .sp-tag--selected {
2306
+ background-color: var(--sp-component-tag-selected-bg);
2307
+ color: var(--sp-component-tag-selected-text);
2308
+ border-color: transparent;
2309
+ }
2310
+
2311
+ .sp-tag--ghost {
2312
+ background-color: var(--sp-component-tag-ghost-bg);
2313
+ color: var(--sp-component-tag-ghost-text);
2314
+ }
2315
+
2316
+ .sp-tag--interactive {
2317
+ cursor: pointer;
2318
+ }
2319
+
2320
+ .sp-tag--interactive:hover,
2321
+ .sp-tag--hover,
2322
+ .sp-tag.is-hover {
2323
+ opacity: var(--sp-opacity-hover);
2324
+ }
2325
+
2326
+ .sp-tag--interactive:active,
2327
+ .sp-tag--active,
2328
+ .sp-tag.is-active {
2329
+ opacity: var(--sp-opacity-active);
2330
+ }
2331
+
2332
+ .sp-tag--interactive:focus-visible,
2333
+ .sp-tag--focus,
2334
+ .sp-tag.is-focus {
2335
+ outline: none;
2336
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2337
+ }
2338
+
2339
+ .sp-tag:disabled,
2340
+ .sp-tag[aria-disabled="true"],
2341
+ .sp-tag--disabled {
2342
+ opacity: var(--sp-opacity-disabled);
2343
+ pointer-events: none;
2344
+ cursor: not-allowed;
2345
+ }
2346
+
2347
+ .sp-tag--loading,
2348
+ .sp-tag[aria-busy="true"] {
2349
+ opacity: var(--sp-opacity-active);
2350
+ pointer-events: none;
2351
+ }
2352
+
2353
+ .sp-tag--sm {
2354
+ padding: var(--sp-component-tag-padding-y-sm) var(--sp-component-tag-padding-x-sm);
2355
+ font-size: var(--sp-font-xs-size);
2356
+ line-height: var(--sp-font-xs-line-height);
2357
+ }
2358
+
2359
+ .sp-tag--md {
2360
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2361
+ font-size: var(--sp-font-sm-size);
2362
+ line-height: var(--sp-font-sm-line-height);
2363
+ }
2364
+
2365
+ .sp-tag--lg {
2366
+ padding: var(--sp-component-tag-padding-y-lg) var(--sp-component-tag-padding-x-lg);
2367
+ font-size: var(--sp-font-md-size);
2368
+ line-height: var(--sp-font-md-line-height);
2369
+ }
2370
+
2371
+ .sp-tag--dismissible {
2372
+ gap: var(--sp-space-8);
2373
+ }
2374
+
2375
+ /* SPINNER -------------------------------------------------------------- */
2376
+
2377
+ @keyframes sp-spin {
2378
+ to {
2379
+ transform: rotate(360deg);
2380
+ }
2381
+ }
2382
+
2383
+ .sp-spinner {
2384
+ display: inline-block;
2385
+ border-radius: 50%;
2386
+ border: var(--sp-component-spinner-border-width) solid var(--sp-component-spinner-track-color);
2387
+ border-top-color: var(--sp-component-spinner-arc-color);
2388
+ animation: sp-spin var(--sp-component-spinner-duration) var(--sp-component-spinner-easing) infinite;
2389
+ }
2390
+
2391
+ .sp-spinner--sm {
2392
+ width: var(--sp-component-spinner-size-sm);
2393
+ height: var(--sp-component-spinner-size-sm);
2394
+ }
2395
+
2396
+ .sp-spinner--md {
2397
+ width: var(--sp-component-spinner-size-md);
2398
+ height: var(--sp-component-spinner-size-md);
2399
+ }
2400
+
2401
+ .sp-spinner--lg {
2402
+ width: var(--sp-component-spinner-size-lg);
2403
+ height: var(--sp-component-spinner-size-lg);
2404
+ }
1801
2405
  }
1802
2406
  @layer utilities {
1803
2407
  .sp-stack {