@phcdevworks/spectre-ui 1.6.0 → 1.8.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
@@ -120,17 +120,24 @@
120
120
  --sp-color-white: #ffffff;
121
121
  --sp-color-black: #000000;
122
122
  --sp-space-0: 0rem;
123
+ --sp-space-1: 0.0625rem;
124
+ --sp-space-2: 0.125rem;
123
125
  --sp-space-4: 0.25rem;
126
+ --sp-space-6: 0.375rem;
124
127
  --sp-space-8: 0.5rem;
128
+ --sp-space-10: 0.625rem;
125
129
  --sp-space-12: 0.75rem;
130
+ --sp-space-14: 0.875rem;
126
131
  --sp-space-16: 1rem;
127
132
  --sp-space-20: 1.25rem;
128
133
  --sp-space-24: 1.5rem;
134
+ --sp-space-28: 1.75rem;
129
135
  --sp-space-32: 2rem;
130
136
  --sp-space-40: 2.5rem;
131
137
  --sp-space-48: 3rem;
132
138
  --sp-space-56: 3.5rem;
133
139
  --sp-space-64: 4rem;
140
+ --sp-space-72: 4.5rem;
134
141
  --sp-space-80: 5rem;
135
142
  --sp-space-96: 6rem;
136
143
  --sp-layout-section-padding-sm: 1.5rem;
@@ -146,12 +153,21 @@
146
153
  --sp-layout-container-padding-inline-md: 1.5rem;
147
154
  --sp-layout-container-padding-inline-lg: 2rem;
148
155
  --sp-layout-container-max-width: 72rem;
156
+ --sp-border-width-none: 0;
149
157
  --sp-border-width-base: 1px;
150
158
  --sp-border-width-thick: 2px;
159
+ --sp-border-style-none: none;
160
+ --sp-border-style-solid: solid;
161
+ --sp-border-style-dashed: dashed;
162
+ --sp-border-style-dotted: dotted;
151
163
  --sp-radius-none: 0;
152
164
  --sp-radius-sm: 2px;
153
165
  --sp-radius-md: 4px;
154
166
  --sp-radius-lg: 8px;
167
+ --sp-radius-xl: 12px;
168
+ --sp-radius-2xl: 16px;
169
+ --sp-radius-3xl: 24px;
170
+ --sp-radius-4xl: 32px;
155
171
  --sp-radius-pill: 999px;
156
172
  --sp-font-family-sans: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
157
173
  --sp-font-family-serif: 'Times New Roman', Times, serif;
@@ -187,34 +203,21 @@
187
203
  --sp-font-6xl-line-height: 5rem;
188
204
  --sp-font-6xl-weight: 900;
189
205
  --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;
206
+ --sp-font-sm-letter-spacing: 0em;
207
+ --sp-font-md-letter-spacing: 0em;
208
+ --sp-font-lg-letter-spacing: 0em;
209
+ --sp-font-xl-letter-spacing: 0em;
210
+ --sp-font-2xl-letter-spacing: 0em;
211
+ --sp-font-3xl-letter-spacing: 0em;
212
+ --sp-font-4xl-letter-spacing: 0em;
213
+ --sp-font-5xl-letter-spacing: 0em;
214
+ --sp-font-6xl-letter-spacing: 0em;
214
215
  --sp-shadow-none: none;
215
216
  --sp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.06);
216
217
  --sp-shadow-md: 0 2px 6px -1px rgba(0, 0, 0, 0.08);
217
218
  --sp-shadow-lg: 0 6px 16px -4px rgba(0, 0, 0, 0.12);
219
+ --sp-shadow-xl: 0 12px 24px -6px rgba(0, 0, 0, 0.15);
220
+ --sp-shadow-2xl: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
218
221
  --sp-breakpoint-sm: 640px;
219
222
  --sp-breakpoint-md: 768px;
220
223
  --sp-breakpoint-lg: 1024px;
@@ -228,20 +231,26 @@
228
231
  --sp-z-index-modal: 1400;
229
232
  --sp-z-index-popover: 1500;
230
233
  --sp-z-index-tooltip: 1600;
234
+ --sp-z-index-toast: 1700;
231
235
  --sp-duration-instant: 75ms;
232
236
  --sp-duration-fast: 150ms;
233
237
  --sp-duration-base: 200ms;
238
+ --sp-duration-relaxed: 250ms;
234
239
  --sp-duration-moderate: 300ms;
235
240
  --sp-duration-slow: 500ms;
236
241
  --sp-duration-slower: 700ms;
242
+ --sp-duration-long: 1000ms;
243
+ --sp-duration-slowest: 1200ms;
237
244
  --sp-easing-linear: linear;
238
245
  --sp-easing-in: cubic-bezier(0.4, 0, 1, 1);
239
246
  --sp-easing-out: cubic-bezier(0, 0, 0.2, 1);
240
247
  --sp-easing-inout: cubic-bezier(0.4, 0, 0.2, 1);
241
248
  --sp-easing-spring: cubic-bezier(0.4, 0, 0.2, 1);
249
+ --sp-easing-overshoot: cubic-bezier(0.34, 1.56, 0.64, 1);
242
250
  --sp-opacity-disabled: 0.38;
243
251
  --sp-opacity-hover: 0.92;
244
252
  --sp-opacity-active: 0.84;
253
+ --sp-opacity-loading: 0.6;
245
254
  --sp-opacity-focus: 1;
246
255
  --sp-opacity-overlay: 0.5;
247
256
  --sp-opacity-tooltip: 0.95;
@@ -283,6 +292,7 @@
283
292
  --sp-button-danger-text: #ffffff;
284
293
  --sp-button-danger-textdisabled: #8a96ad;
285
294
  --sp-button-danger-focusring: rgba(239, 68, 68, 0.4);
295
+ --sp-button-danger-focusvisible: rgba(239, 68, 68, 0.4);
286
296
  --sp-button-success-bg: #15803d;
287
297
  --sp-button-success-bghover: #166534;
288
298
  --sp-button-success-bgactive: #14532d;
@@ -290,6 +300,7 @@
290
300
  --sp-button-success-text: #ffffff;
291
301
  --sp-button-success-textdisabled: #8a96ad;
292
302
  --sp-button-success-focusring: rgba(34, 197, 94, 0.4);
303
+ --sp-button-success-focusvisible: rgba(34, 197, 94, 0.4);
293
304
  --sp-button-cta-bg: #1f57db;
294
305
  --sp-button-cta-bghover: #1946b4;
295
306
  --sp-button-cta-bgactive: #173b8f;
@@ -373,7 +384,7 @@
373
384
  --sp-button-text-default: #eef1f6;
374
385
  --sp-button-text-on-primary: #ffffff;
375
386
  --sp-badge-neutral-bg: #374253;
376
- --sp-badge-neutral-text: #eef1f6;
387
+ --sp-badge-neutral-text: #f7f8fb;
377
388
  --sp-badge-info-bg: #0c4a6e;
378
389
  --sp-badge-info-text: #e0f2fe;
379
390
  --sp-badge-success-bg: #166534;
@@ -490,12 +501,14 @@
490
501
  --sp-component-button-danger-bg-disabled: var(--sp-button-danger-bgdisabled);
491
502
  --sp-component-button-danger-text: var(--sp-button-danger-text);
492
503
  --sp-component-button-danger-text-disabled: var(--sp-button-danger-textdisabled);
504
+ --sp-component-button-danger-focus-visible: var(--sp-button-danger-focusvisible);
493
505
  --sp-component-button-success-bg: var(--sp-button-success-bg);
494
506
  --sp-component-button-success-bg-hover: var(--sp-button-success-bghover);
495
507
  --sp-component-button-success-bg-active: var(--sp-button-success-bgactive);
496
508
  --sp-component-button-success-bg-disabled: var(--sp-button-success-bgdisabled);
497
509
  --sp-component-button-success-text: var(--sp-button-success-text);
498
510
  --sp-component-button-success-text-disabled: var(--sp-button-success-textdisabled);
511
+ --sp-component-button-success-focus-visible: var(--sp-button-success-focusvisible);
499
512
  /* CTA button alignment restored to official tokens as they now use the brand palette (Blue). */
500
513
  --sp-component-button-cta-bg: var(--sp-button-cta-bg);
501
514
  --sp-component-button-cta-bg-hover: var(--sp-button-cta-bghover);
@@ -566,6 +579,9 @@
566
579
  --sp-component-badge-info-text: var(--sp-badge-info-text);
567
580
  --sp-component-badge-ghost-bg: var(--sp-button-ghost-bg);
568
581
  --sp-component-badge-ghost-text: var(--sp-button-ghost-text);
582
+ --sp-component-badge-outline-bg: transparent;
583
+ --sp-component-badge-outline-text: var(--sp-badge-neutral-text);
584
+ --sp-component-badge-outline-border: var(--sp-button-secondary-border);
569
585
  --sp-component-badge-accent-bg: var(--sp-button-accent-bg);
570
586
  --sp-component-badge-accent-text: var(--sp-button-accent-text);
571
587
  --sp-component-badge-cta-bg: var(--sp-button-cta-bg);
@@ -616,6 +632,9 @@
616
632
  --sp-component-iconbox-accent-text: var(--sp-button-accent-text);
617
633
  --sp-component-iconbox-cta-bg: var(--sp-button-cta-bg);
618
634
  --sp-component-iconbox-cta-text: var(--sp-button-cta-text);
635
+ --sp-component-iconbox-outline-bg: transparent;
636
+ --sp-component-iconbox-outline-text: var(--sp-badge-neutral-text);
637
+ --sp-component-iconbox-outline-border: var(--sp-button-secondary-border);
619
638
 
620
639
  /* testimonial roles */
621
640
  --sp-component-testimonial-bg: var(--sp-surface-card);
@@ -655,6 +674,99 @@
655
674
  --sp-component-rating-size-sm: var(--sp-font-sm-size);
656
675
  --sp-component-rating-size-md: var(--sp-font-md-size);
657
676
  --sp-component-rating-size-lg: var(--sp-font-lg-size);
677
+
678
+ /* alert roles */
679
+ --sp-component-alert-radius: var(--sp-radius-lg);
680
+ --sp-component-alert-padding-x: var(--sp-space-16);
681
+ --sp-component-alert-padding-y-sm: var(--sp-space-8);
682
+ --sp-component-alert-padding-y-md: var(--sp-space-12);
683
+ --sp-component-alert-padding-y-lg: var(--sp-space-16);
684
+ --sp-component-alert-info-bg: var(--sp-badge-info-bg);
685
+ --sp-component-alert-info-text: var(--sp-badge-info-text);
686
+ --sp-component-alert-info-border: var(--sp-color-info-200);
687
+ --sp-component-alert-success-bg: var(--sp-badge-success-bg);
688
+ --sp-component-alert-success-text: var(--sp-badge-success-text);
689
+ --sp-component-alert-success-border: var(--sp-color-success-200);
690
+ --sp-component-alert-warning-bg: var(--sp-badge-warning-bg);
691
+ --sp-component-alert-warning-text: var(--sp-badge-warning-text);
692
+ --sp-component-alert-warning-border: var(--sp-color-warning-200);
693
+ --sp-component-alert-danger-bg: var(--sp-badge-danger-bg);
694
+ --sp-component-alert-danger-text: var(--sp-badge-danger-text);
695
+ --sp-component-alert-danger-border: var(--sp-color-error-200);
696
+ --sp-component-alert-neutral-bg: var(--sp-badge-neutral-bg);
697
+ --sp-component-alert-neutral-text: var(--sp-badge-neutral-text);
698
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-200);
699
+
700
+ /* avatar roles */
701
+ --sp-component-avatar-size-xs: var(--sp-space-24);
702
+ --sp-component-avatar-size-sm: var(--sp-space-32);
703
+ --sp-component-avatar-size-md: var(--sp-space-48);
704
+ --sp-component-avatar-size-lg: var(--sp-space-64);
705
+ --sp-component-avatar-size-xl: var(--sp-space-80);
706
+ --sp-component-avatar-bg: var(--sp-surface-alternate);
707
+ --sp-component-avatar-text: var(--sp-text-on-surface-default);
708
+ --sp-component-avatar-radius-circle: var(--sp-radius-pill);
709
+ --sp-component-avatar-radius-square: var(--sp-radius-lg);
710
+ --sp-component-avatar-font: var(--sp-font-family-sans);
711
+ --sp-component-avatar-weight: var(--sp-font-md-weight);
712
+
713
+ /* tag roles */
714
+ --sp-component-tag-radius: var(--sp-radius-pill);
715
+ --sp-component-tag-font: var(--sp-font-family-sans);
716
+ --sp-component-tag-weight: var(--sp-font-sm-weight);
717
+ --sp-component-tag-padding-x-sm: var(--sp-space-8);
718
+ --sp-component-tag-padding-x-md: var(--sp-space-12);
719
+ --sp-component-tag-padding-x-lg: var(--sp-space-16);
720
+ --sp-component-tag-default-bg: var(--sp-badge-neutral-bg);
721
+ --sp-component-tag-default-text: var(--sp-badge-neutral-text);
722
+ --sp-component-tag-primary-bg: var(--sp-button-primary-bg);
723
+ --sp-component-tag-primary-text: var(--sp-button-text-on-primary);
724
+ --sp-component-tag-secondary-bg: var(--sp-button-secondary-bg);
725
+ --sp-component-tag-secondary-text: var(--sp-button-secondary-text);
726
+ --sp-component-tag-success-bg: var(--sp-badge-success-bg);
727
+ --sp-component-tag-success-text: var(--sp-badge-success-text);
728
+ --sp-component-tag-warning-bg: var(--sp-badge-warning-bg);
729
+ --sp-component-tag-warning-text: var(--sp-badge-warning-text);
730
+ --sp-component-tag-danger-bg: var(--sp-badge-danger-bg);
731
+ --sp-component-tag-danger-text: var(--sp-badge-danger-text);
732
+ --sp-component-tag-info-bg: var(--sp-badge-info-bg);
733
+ --sp-component-tag-info-text: var(--sp-badge-info-text);
734
+ --sp-component-tag-neutral-bg: var(--sp-badge-neutral-bg);
735
+ --sp-component-tag-neutral-text: var(--sp-badge-neutral-text);
736
+ --sp-component-tag-accent-bg: var(--sp-button-accent-bg);
737
+ --sp-component-tag-accent-text: var(--sp-button-accent-text);
738
+ --sp-component-tag-cta-bg: var(--sp-button-cta-bg);
739
+ --sp-component-tag-cta-text: var(--sp-button-cta-text);
740
+ --sp-component-tag-outline-bg: transparent;
741
+ --sp-component-tag-outline-text: var(--sp-badge-neutral-text);
742
+ --sp-component-tag-outline-border: var(--sp-button-secondary-border);
743
+ --sp-component-tag-ghost-bg: var(--sp-button-ghost-bg);
744
+ --sp-component-tag-ghost-text: var(--sp-button-ghost-text);
745
+ --sp-component-tag-selected-bg: var(--sp-button-primary-bg);
746
+ --sp-component-tag-selected-text: var(--sp-button-primary-text);
747
+ --sp-component-tag-gap: var(--sp-space-4);
748
+ --sp-component-tag-padding-y-sm: var(--sp-space-4);
749
+ --sp-component-tag-padding-y-md: var(--sp-space-4);
750
+ --sp-component-tag-padding-y-lg: var(--sp-space-4);
751
+
752
+ /* spinner roles */
753
+ --sp-component-spinner-size-sm: var(--sp-space-16);
754
+ --sp-component-spinner-size-md: var(--sp-space-24);
755
+ --sp-component-spinner-size-lg: var(--sp-space-32);
756
+ --sp-component-spinner-border-width: var(--sp-border-width-thick);
757
+ --sp-component-spinner-track-color: var(--sp-color-neutral-200);
758
+ --sp-component-spinner-arc-color: var(--sp-button-primary-bg);
759
+ --sp-component-spinner-primary-arc: var(--sp-button-primary-bg);
760
+ --sp-component-spinner-secondary-arc: var(--sp-button-secondary-border);
761
+ --sp-component-spinner-success-arc: var(--sp-color-success-500);
762
+ --sp-component-spinner-warning-arc: var(--sp-color-warning-500);
763
+ --sp-component-spinner-danger-arc: var(--sp-color-error-500);
764
+ --sp-component-spinner-info-arc: var(--sp-color-info-500);
765
+ --sp-component-spinner-neutral-arc: var(--sp-color-neutral-500);
766
+ --sp-component-spinner-accent-arc: var(--sp-button-accent-bg);
767
+ --sp-component-spinner-cta-arc: var(--sp-button-cta-bg);
768
+ --sp-component-spinner-duration: var(--sp-duration-long);
769
+ --sp-component-spinner-easing: var(--sp-easing-linear);
658
770
  }
659
771
 
660
772
  /* dark mode overrides mapped from Spectre token mode definitions */
@@ -694,6 +806,34 @@
694
806
  --sp-component-rating-star-filled: var(--sp-color-warning-400);
695
807
  --sp-component-rating-star-empty: var(--sp-color-neutral-700);
696
808
  --sp-component-rating-text: var(--sp-color-neutral-400);
809
+
810
+ --sp-component-alert-info-bg: var(--sp-color-info-800);
811
+ --sp-component-alert-info-text: var(--sp-color-info-100);
812
+ --sp-component-alert-info-border: var(--sp-color-info-700);
813
+ --sp-component-alert-success-bg: var(--sp-color-success-800);
814
+ --sp-component-alert-success-text: var(--sp-color-success-100);
815
+ --sp-component-alert-success-border: var(--sp-color-success-700);
816
+ --sp-component-alert-warning-bg: var(--sp-color-warning-800);
817
+ --sp-component-alert-warning-text: var(--sp-color-warning-100);
818
+ --sp-component-alert-warning-border: var(--sp-color-warning-700);
819
+ --sp-component-alert-danger-bg: var(--sp-color-error-800);
820
+ --sp-component-alert-danger-text: var(--sp-color-error-100);
821
+ --sp-component-alert-danger-border: var(--sp-color-error-700);
822
+ --sp-component-alert-neutral-bg: var(--sp-color-neutral-700);
823
+ --sp-component-alert-neutral-text: var(--sp-color-neutral-100);
824
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-600);
825
+
826
+ --sp-component-spinner-track-color: var(--sp-color-neutral-700);
827
+ --sp-component-spinner-arc-color: var(--sp-color-brand-400);
828
+ --sp-component-spinner-primary-arc: var(--sp-color-brand-400);
829
+ --sp-component-spinner-secondary-arc: var(--sp-color-neutral-400);
830
+ --sp-component-spinner-success-arc: var(--sp-color-success-400);
831
+ --sp-component-spinner-warning-arc: var(--sp-color-warning-400);
832
+ --sp-component-spinner-danger-arc: var(--sp-color-error-400);
833
+ --sp-component-spinner-info-arc: var(--sp-color-info-400);
834
+ --sp-component-spinner-neutral-arc: var(--sp-color-neutral-400);
835
+ --sp-component-spinner-accent-arc: var(--sp-color-brand-400);
836
+ --sp-component-spinner-cta-arc: var(--sp-color-brand-400);
697
837
  }
698
838
 
699
839
  /* BUTTONS -------------------------------------------------------------- */
@@ -728,7 +868,8 @@
728
868
  pointer-events: none;
729
869
  }
730
870
 
731
- .sp-btn--loading {
871
+ .sp-btn--loading,
872
+ .sp-btn[aria-busy="true"] {
732
873
  pointer-events: none;
733
874
  opacity: var(--sp-opacity-active);
734
875
  }
@@ -795,6 +936,7 @@
795
936
  }
796
937
 
797
938
  .sp-btn--primary.sp-btn--disabled,
939
+ .sp-btn--primary[aria-disabled="true"],
798
940
  .sp-btn--primary:disabled {
799
941
  background-color: var(--sp-component-button-primary-bg-disabled);
800
942
  color: var(--sp-component-button-primary-text-disabled);
@@ -821,6 +963,7 @@
821
963
  }
822
964
 
823
965
  .sp-btn--secondary.sp-btn--disabled,
966
+ .sp-btn--secondary[aria-disabled="true"],
824
967
  .sp-btn--secondary:disabled {
825
968
  background-color: var(--sp-component-button-secondary-bg-disabled);
826
969
  color: var(--sp-component-button-secondary-text-disabled);
@@ -846,6 +989,7 @@
846
989
  }
847
990
 
848
991
  .sp-btn--ghost.sp-btn--disabled,
992
+ .sp-btn--ghost[aria-disabled="true"],
849
993
  .sp-btn--ghost:disabled {
850
994
  color: var(--sp-component-button-ghost-text-disabled);
851
995
  background-color: var(--sp-component-button-ghost-bg-disabled);
@@ -870,11 +1014,18 @@
870
1014
  }
871
1015
 
872
1016
  .sp-btn--danger.sp-btn--disabled,
1017
+ .sp-btn--danger[aria-disabled="true"],
873
1018
  .sp-btn--danger:disabled {
874
1019
  background-color: var(--sp-component-button-danger-bg-disabled);
875
1020
  color: var(--sp-component-button-danger-text-disabled);
876
1021
  }
877
1022
 
1023
+ .sp-btn--danger:focus-visible,
1024
+ .sp-btn--danger.sp-btn--focus,
1025
+ .sp-btn--danger.is-focus {
1026
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-danger-focus-visible);
1027
+ }
1028
+
878
1029
  /* success */
879
1030
  .sp-btn--success {
880
1031
  background-color: var(--sp-component-button-success-bg);
@@ -894,11 +1045,18 @@
894
1045
  }
895
1046
 
896
1047
  .sp-btn--success.sp-btn--disabled,
1048
+ .sp-btn--success[aria-disabled="true"],
897
1049
  .sp-btn--success:disabled {
898
1050
  background-color: var(--sp-component-button-success-bg-disabled);
899
1051
  color: var(--sp-component-button-success-text-disabled);
900
1052
  }
901
1053
 
1054
+ .sp-btn--success:focus-visible,
1055
+ .sp-btn--success.sp-btn--focus,
1056
+ .sp-btn--success.is-focus {
1057
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-success-focus-visible);
1058
+ }
1059
+
902
1060
  /* cta */
903
1061
  .sp-btn--cta {
904
1062
  background-color: var(--sp-component-button-cta-bg);
@@ -919,6 +1077,7 @@
919
1077
  }
920
1078
 
921
1079
  .sp-btn--cta.sp-btn--disabled,
1080
+ .sp-btn--cta[aria-disabled="true"],
922
1081
  .sp-btn--cta:disabled {
923
1082
  background-color: var(--sp-component-button-cta-bg-disabled);
924
1083
  color: var(--sp-component-button-cta-text-disabled);
@@ -944,6 +1103,7 @@
944
1103
  }
945
1104
 
946
1105
  .sp-btn--accent.sp-btn--disabled,
1106
+ .sp-btn--accent[aria-disabled="true"],
947
1107
  .sp-btn--accent:disabled {
948
1108
  background-color: var(--sp-component-button-accent-bg-disabled);
949
1109
  color: var(--sp-component-button-accent-text-disabled);
@@ -1313,6 +1473,12 @@
1313
1473
  background-color: var(--sp-component-badge-ghost-bg-hover);
1314
1474
  }
1315
1475
 
1476
+ .sp-badge--outline {
1477
+ background-color: var(--sp-component-badge-outline-bg);
1478
+ color: var(--sp-component-badge-outline-text);
1479
+ border-color: var(--sp-component-badge-outline-border);
1480
+ }
1481
+
1316
1482
  .sp-badge--accent {
1317
1483
  background-color: var(--sp-component-badge-accent-bg);
1318
1484
  color: var(--sp-component-badge-accent-text);
@@ -1510,6 +1676,12 @@
1510
1676
  color: var(--sp-component-iconbox-cta-text);
1511
1677
  }
1512
1678
 
1679
+ .sp-iconbox--outline {
1680
+ background-color: var(--sp-component-iconbox-outline-bg);
1681
+ color: var(--sp-component-iconbox-outline-text);
1682
+ border-color: var(--sp-component-iconbox-outline-border);
1683
+ }
1684
+
1513
1685
  .sp-iconbox--interactive {
1514
1686
  cursor: pointer;
1515
1687
  }
@@ -1803,9 +1975,11 @@
1803
1975
  gap: var(--sp-space-8);
1804
1976
  font-size: var(--sp-component-rating-size-md);
1805
1977
  border-radius: var(--sp-radius-md);
1978
+ border: var(--sp-component-border-width) solid transparent;
1806
1979
  transition:
1807
1980
  opacity var(--sp-duration-fast) var(--sp-easing-out),
1808
- box-shadow var(--sp-duration-fast) var(--sp-easing-out);
1981
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
1982
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
1809
1983
  }
1810
1984
 
1811
1985
  .sp-rating--sm {
@@ -1836,7 +2010,8 @@
1836
2010
  cursor: not-allowed;
1837
2011
  }
1838
2012
 
1839
- .sp-rating--loading {
2013
+ .sp-rating--loading,
2014
+ .sp-rating[aria-busy="true"] {
1840
2015
  opacity: var(--sp-opacity-active);
1841
2016
  pointer-events: none;
1842
2017
  }
@@ -1846,20 +2021,20 @@
1846
2021
  }
1847
2022
 
1848
2023
  .sp-rating--interactive:hover,
1849
- .sp-rating--interactive.sp-rating--hover,
1850
- .sp-rating--interactive.is-hover {
2024
+ .sp-rating--hover,
2025
+ .is-hover {
1851
2026
  opacity: var(--sp-opacity-hover);
1852
2027
  }
1853
2028
 
1854
2029
  .sp-rating--interactive:active,
1855
- .sp-rating--interactive.sp-rating--active,
1856
- .sp-rating--interactive.is-active {
2030
+ .sp-rating--active,
2031
+ .is-active {
1857
2032
  opacity: var(--sp-opacity-active);
1858
2033
  }
1859
2034
 
1860
2035
  .sp-rating--interactive:focus-visible,
1861
- .sp-rating--interactive.sp-rating--focus,
1862
- .sp-rating--interactive.is-focus {
2036
+ .sp-rating--focus,
2037
+ .is-focus {
1863
2038
  outline: none;
1864
2039
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1865
2040
  }
@@ -1884,6 +2059,459 @@
1884
2059
  color: var(--sp-component-rating-text);
1885
2060
  font-size: var(--sp-font-sm-size);
1886
2061
  }
2062
+
2063
+ .sp-rating-text--disabled {
2064
+ opacity: var(--sp-opacity-disabled);
2065
+ }
2066
+
2067
+ /* ALERTS --------------------------------------------------------------- */
2068
+ .sp-alert {
2069
+ display: flex;
2070
+ align-items: flex-start;
2071
+ gap: var(--sp-space-12);
2072
+ border-radius: var(--sp-component-alert-radius);
2073
+ border: var(--sp-component-border-width) solid transparent;
2074
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
2075
+ font-family: var(--sp-font-family-sans);
2076
+ font-size: var(--sp-font-sm-size);
2077
+ line-height: var(--sp-font-sm-line-height);
2078
+ transition:
2079
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2080
+ color var(--sp-duration-fast) var(--sp-easing-out),
2081
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2082
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2083
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2084
+ }
2085
+
2086
+ .sp-alert--dismissed {
2087
+ display: none;
2088
+ }
2089
+
2090
+ .sp-alert--full {
2091
+ width: 100%;
2092
+ }
2093
+
2094
+ .sp-alert--sm {
2095
+ padding: var(--sp-component-alert-padding-y-sm) var(--sp-component-alert-padding-x);
2096
+ font-size: var(--sp-font-xs-size);
2097
+ line-height: var(--sp-font-xs-line-height);
2098
+ }
2099
+
2100
+ .sp-alert--md {
2101
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
2102
+ font-size: var(--sp-font-sm-size);
2103
+ line-height: var(--sp-font-sm-line-height);
2104
+ }
2105
+
2106
+ .sp-alert--lg {
2107
+ padding: var(--sp-component-alert-padding-y-lg) var(--sp-component-alert-padding-x);
2108
+ font-size: var(--sp-font-md-size);
2109
+ line-height: var(--sp-font-md-line-height);
2110
+ }
2111
+
2112
+ .sp-alert--info {
2113
+ background-color: var(--sp-component-alert-info-bg);
2114
+ color: var(--sp-component-alert-info-text);
2115
+ border-color: var(--sp-component-alert-info-border);
2116
+ }
2117
+
2118
+ .sp-alert--success {
2119
+ background-color: var(--sp-component-alert-success-bg);
2120
+ color: var(--sp-component-alert-success-text);
2121
+ border-color: var(--sp-component-alert-success-border);
2122
+ }
2123
+
2124
+ .sp-alert--warning {
2125
+ background-color: var(--sp-component-alert-warning-bg);
2126
+ color: var(--sp-component-alert-warning-text);
2127
+ border-color: var(--sp-component-alert-warning-border);
2128
+ }
2129
+
2130
+ .sp-alert--danger {
2131
+ background-color: var(--sp-component-alert-danger-bg);
2132
+ color: var(--sp-component-alert-danger-text);
2133
+ border-color: var(--sp-component-alert-danger-border);
2134
+ }
2135
+
2136
+ .sp-alert--neutral {
2137
+ background-color: var(--sp-component-alert-neutral-bg);
2138
+ color: var(--sp-component-alert-neutral-text);
2139
+ border-color: var(--sp-component-alert-neutral-border);
2140
+ }
2141
+
2142
+ .sp-alert--interactive {
2143
+ cursor: pointer;
2144
+ }
2145
+
2146
+ .sp-alert--interactive:hover,
2147
+ .sp-alert--hover,
2148
+ .sp-alert.is-hover {
2149
+ opacity: var(--sp-opacity-hover);
2150
+ }
2151
+
2152
+ .sp-alert--interactive:active,
2153
+ .sp-alert--active,
2154
+ .sp-alert.is-active {
2155
+ opacity: var(--sp-opacity-active);
2156
+ }
2157
+
2158
+ .sp-alert--interactive:focus-visible,
2159
+ .sp-alert--focus,
2160
+ .sp-alert.is-focus {
2161
+ outline: none;
2162
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2163
+ }
2164
+
2165
+ .sp-alert:disabled,
2166
+ .sp-alert[aria-disabled="true"],
2167
+ .sp-alert--disabled {
2168
+ opacity: var(--sp-opacity-disabled);
2169
+ pointer-events: none;
2170
+ cursor: not-allowed;
2171
+ }
2172
+
2173
+ .sp-alert--loading,
2174
+ .sp-alert[aria-busy="true"] {
2175
+ opacity: var(--sp-opacity-active);
2176
+ pointer-events: none;
2177
+ }
2178
+
2179
+ /* AVATARS -------------------------------------------------------------- */
2180
+ .sp-avatar {
2181
+ display: inline-flex;
2182
+ align-items: center;
2183
+ justify-content: center;
2184
+ overflow: hidden;
2185
+ flex-shrink: 0;
2186
+ background-color: var(--sp-component-avatar-bg);
2187
+ color: var(--sp-component-avatar-text);
2188
+ border: var(--sp-component-border-width) solid transparent;
2189
+ font-family: var(--sp-component-avatar-font);
2190
+ font-weight: var(--sp-component-avatar-weight);
2191
+ transition:
2192
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2193
+ color var(--sp-duration-fast) var(--sp-easing-out),
2194
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2195
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2196
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2197
+ }
2198
+
2199
+ .sp-avatar--xs {
2200
+ width: var(--sp-component-avatar-size-xs);
2201
+ height: var(--sp-component-avatar-size-xs);
2202
+ font-size: var(--sp-font-xs-size);
2203
+ line-height: var(--sp-font-xs-line-height);
2204
+ }
2205
+
2206
+ .sp-avatar--sm {
2207
+ width: var(--sp-component-avatar-size-sm);
2208
+ height: var(--sp-component-avatar-size-sm);
2209
+ font-size: var(--sp-font-xs-size);
2210
+ line-height: var(--sp-font-xs-line-height);
2211
+ }
2212
+
2213
+ .sp-avatar--md {
2214
+ width: var(--sp-component-avatar-size-md);
2215
+ height: var(--sp-component-avatar-size-md);
2216
+ font-size: var(--sp-font-sm-size);
2217
+ line-height: var(--sp-font-sm-line-height);
2218
+ }
2219
+
2220
+ .sp-avatar--lg {
2221
+ width: var(--sp-component-avatar-size-lg);
2222
+ height: var(--sp-component-avatar-size-lg);
2223
+ font-size: var(--sp-font-md-size);
2224
+ line-height: var(--sp-font-md-line-height);
2225
+ }
2226
+
2227
+ .sp-avatar--xl {
2228
+ width: var(--sp-component-avatar-size-xl);
2229
+ height: var(--sp-component-avatar-size-xl);
2230
+ font-size: var(--sp-font-lg-size);
2231
+ line-height: var(--sp-font-lg-line-height);
2232
+ }
2233
+
2234
+ .sp-avatar--circle {
2235
+ border-radius: var(--sp-component-avatar-radius-circle);
2236
+ }
2237
+
2238
+ .sp-avatar--square {
2239
+ border-radius: var(--sp-component-avatar-radius-square);
2240
+ }
2241
+
2242
+ .sp-avatar--full {
2243
+ width: 100%;
2244
+ }
2245
+
2246
+ .sp-avatar--interactive {
2247
+ cursor: pointer;
2248
+ }
2249
+
2250
+ .sp-avatar--interactive:hover,
2251
+ .sp-avatar--hover,
2252
+ .sp-avatar.is-hover {
2253
+ opacity: var(--sp-opacity-hover);
2254
+ }
2255
+
2256
+ .sp-avatar--interactive:active,
2257
+ .sp-avatar--active,
2258
+ .sp-avatar.is-active {
2259
+ opacity: var(--sp-opacity-active);
2260
+ }
2261
+
2262
+ .sp-avatar--interactive:focus-visible,
2263
+ .sp-avatar--focus,
2264
+ .sp-avatar.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-avatar:disabled,
2270
+ .sp-avatar[aria-disabled="true"],
2271
+ .sp-avatar--disabled {
2272
+ opacity: var(--sp-opacity-disabled);
2273
+ pointer-events: none;
2274
+ cursor: not-allowed;
2275
+ }
2276
+
2277
+ .sp-avatar--loading,
2278
+ .sp-avatar[aria-busy="true"] {
2279
+ opacity: var(--sp-opacity-active);
2280
+ pointer-events: none;
2281
+ }
2282
+
2283
+ .sp-avatar--placeholder {
2284
+ background-color: var(--sp-surface-alternate);
2285
+ color: var(--sp-text-on-surface-meta);
2286
+ }
2287
+
2288
+ /* TAGS ----------------------------------------------------------------- */
2289
+ .sp-tag {
2290
+ display: inline-flex;
2291
+ align-items: center;
2292
+ gap: var(--sp-component-tag-gap);
2293
+ border-radius: var(--sp-component-tag-radius);
2294
+ font-family: var(--sp-component-tag-font);
2295
+ font-weight: var(--sp-component-tag-weight);
2296
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2297
+ font-size: var(--sp-font-sm-size);
2298
+ line-height: var(--sp-font-sm-line-height);
2299
+ border: var(--sp-component-border-width) solid transparent;
2300
+ white-space: nowrap;
2301
+ transition:
2302
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2303
+ color var(--sp-duration-fast) var(--sp-easing-out),
2304
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2305
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2306
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2307
+ }
2308
+
2309
+ .sp-tag--full {
2310
+ width: 100%;
2311
+ }
2312
+
2313
+ .sp-tag--default {
2314
+ background-color: var(--sp-component-tag-default-bg);
2315
+ color: var(--sp-component-tag-default-text);
2316
+ }
2317
+
2318
+ .sp-tag--primary {
2319
+ background-color: var(--sp-component-tag-primary-bg);
2320
+ color: var(--sp-component-tag-primary-text);
2321
+ }
2322
+
2323
+ .sp-tag--secondary {
2324
+ background-color: var(--sp-component-tag-secondary-bg);
2325
+ color: var(--sp-component-tag-secondary-text);
2326
+ }
2327
+
2328
+ .sp-tag--success {
2329
+ background-color: var(--sp-component-tag-success-bg);
2330
+ color: var(--sp-component-tag-success-text);
2331
+ }
2332
+
2333
+ .sp-tag--warning {
2334
+ background-color: var(--sp-component-tag-warning-bg);
2335
+ color: var(--sp-component-tag-warning-text);
2336
+ }
2337
+
2338
+ .sp-tag--danger {
2339
+ background-color: var(--sp-component-tag-danger-bg);
2340
+ color: var(--sp-component-tag-danger-text);
2341
+ }
2342
+
2343
+ .sp-tag--info {
2344
+ background-color: var(--sp-component-tag-info-bg);
2345
+ color: var(--sp-component-tag-info-text);
2346
+ }
2347
+
2348
+ .sp-tag--neutral {
2349
+ background-color: var(--sp-component-tag-neutral-bg);
2350
+ color: var(--sp-component-tag-neutral-text);
2351
+ }
2352
+
2353
+ .sp-tag--accent {
2354
+ background-color: var(--sp-component-tag-accent-bg);
2355
+ color: var(--sp-component-tag-accent-text);
2356
+ }
2357
+
2358
+ .sp-tag--cta {
2359
+ background-color: var(--sp-component-tag-cta-bg);
2360
+ color: var(--sp-component-tag-cta-text);
2361
+ }
2362
+
2363
+ .sp-tag--outline {
2364
+ background-color: var(--sp-component-tag-outline-bg);
2365
+ color: var(--sp-component-tag-outline-text);
2366
+ border-color: var(--sp-component-tag-outline-border);
2367
+ }
2368
+
2369
+ .sp-tag--selected {
2370
+ background-color: var(--sp-component-tag-selected-bg);
2371
+ color: var(--sp-component-tag-selected-text);
2372
+ border-color: transparent;
2373
+ }
2374
+
2375
+ .sp-tag--ghost {
2376
+ background-color: var(--sp-component-tag-ghost-bg);
2377
+ color: var(--sp-component-tag-ghost-text);
2378
+ }
2379
+
2380
+ .sp-tag--interactive {
2381
+ cursor: pointer;
2382
+ }
2383
+
2384
+ .sp-tag--interactive:hover,
2385
+ .sp-tag--hover,
2386
+ .sp-tag.is-hover {
2387
+ opacity: var(--sp-opacity-hover);
2388
+ }
2389
+
2390
+ .sp-tag--interactive:active,
2391
+ .sp-tag--active,
2392
+ .sp-tag.is-active {
2393
+ opacity: var(--sp-opacity-active);
2394
+ }
2395
+
2396
+ .sp-tag--interactive:focus-visible,
2397
+ .sp-tag--focus,
2398
+ .sp-tag.is-focus {
2399
+ outline: none;
2400
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2401
+ }
2402
+
2403
+ .sp-tag:disabled,
2404
+ .sp-tag[aria-disabled="true"],
2405
+ .sp-tag--disabled {
2406
+ opacity: var(--sp-opacity-disabled);
2407
+ pointer-events: none;
2408
+ cursor: not-allowed;
2409
+ }
2410
+
2411
+ .sp-tag--loading,
2412
+ .sp-tag[aria-busy="true"] {
2413
+ opacity: var(--sp-opacity-active);
2414
+ pointer-events: none;
2415
+ }
2416
+
2417
+ .sp-tag--sm {
2418
+ padding: var(--sp-component-tag-padding-y-sm) var(--sp-component-tag-padding-x-sm);
2419
+ font-size: var(--sp-font-xs-size);
2420
+ line-height: var(--sp-font-xs-line-height);
2421
+ }
2422
+
2423
+ .sp-tag--md {
2424
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2425
+ font-size: var(--sp-font-sm-size);
2426
+ line-height: var(--sp-font-sm-line-height);
2427
+ }
2428
+
2429
+ .sp-tag--lg {
2430
+ padding: var(--sp-component-tag-padding-y-lg) var(--sp-component-tag-padding-x-lg);
2431
+ font-size: var(--sp-font-md-size);
2432
+ line-height: var(--sp-font-md-line-height);
2433
+ }
2434
+
2435
+ .sp-tag--dismissible {
2436
+ gap: var(--sp-space-8);
2437
+ }
2438
+
2439
+ /* SPINNER -------------------------------------------------------------- */
2440
+
2441
+ @keyframes sp-spin {
2442
+ to {
2443
+ transform: rotate(360deg);
2444
+ }
2445
+ }
2446
+
2447
+ .sp-spinner {
2448
+ display: inline-block;
2449
+ border-radius: 50%;
2450
+ border: var(--sp-component-spinner-border-width) solid var(--sp-component-spinner-track-color);
2451
+ border-top-color: var(--sp-component-spinner-arc-color);
2452
+ animation: sp-spin var(--sp-component-spinner-duration) var(--sp-component-spinner-easing) infinite;
2453
+ transition: opacity var(--sp-duration-fast) var(--sp-easing-out);
2454
+ }
2455
+
2456
+ .sp-spinner--primary {
2457
+ border-top-color: var(--sp-component-spinner-primary-arc);
2458
+ }
2459
+
2460
+ .sp-spinner--secondary {
2461
+ border-top-color: var(--sp-component-spinner-secondary-arc);
2462
+ }
2463
+
2464
+ .sp-spinner--success {
2465
+ border-top-color: var(--sp-component-spinner-success-arc);
2466
+ }
2467
+
2468
+ .sp-spinner--warning {
2469
+ border-top-color: var(--sp-component-spinner-warning-arc);
2470
+ }
2471
+
2472
+ .sp-spinner--danger {
2473
+ border-top-color: var(--sp-component-spinner-danger-arc);
2474
+ }
2475
+
2476
+ .sp-spinner--info {
2477
+ border-top-color: var(--sp-component-spinner-info-arc);
2478
+ }
2479
+
2480
+ .sp-spinner--neutral {
2481
+ border-top-color: var(--sp-component-spinner-neutral-arc);
2482
+ }
2483
+
2484
+ .sp-spinner--accent {
2485
+ border-top-color: var(--sp-component-spinner-accent-arc);
2486
+ }
2487
+
2488
+ .sp-spinner--cta {
2489
+ border-top-color: var(--sp-component-spinner-cta-arc);
2490
+ }
2491
+
2492
+ .sp-spinner--disabled {
2493
+ opacity: var(--sp-opacity-disabled);
2494
+ }
2495
+
2496
+ .sp-spinner--loading,
2497
+ .sp-spinner[aria-busy="true"] {
2498
+ opacity: var(--sp-opacity-active);
2499
+ }
2500
+
2501
+ .sp-spinner--sm {
2502
+ width: var(--sp-component-spinner-size-sm);
2503
+ height: var(--sp-component-spinner-size-sm);
2504
+ }
2505
+
2506
+ .sp-spinner--md {
2507
+ width: var(--sp-component-spinner-size-md);
2508
+ height: var(--sp-component-spinner-size-md);
2509
+ }
2510
+
2511
+ .sp-spinner--lg {
2512
+ width: var(--sp-component-spinner-size-lg);
2513
+ height: var(--sp-component-spinner-size-lg);
2514
+ }
1887
2515
  }
1888
2516
  @layer utilities {
1889
2517
  .sp-stack {