@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.
@@ -116,17 +116,24 @@
116
116
  --sp-color-white: #ffffff;
117
117
  --sp-color-black: #000000;
118
118
  --sp-space-0: 0rem;
119
+ --sp-space-1: 0.0625rem;
120
+ --sp-space-2: 0.125rem;
119
121
  --sp-space-4: 0.25rem;
122
+ --sp-space-6: 0.375rem;
120
123
  --sp-space-8: 0.5rem;
124
+ --sp-space-10: 0.625rem;
121
125
  --sp-space-12: 0.75rem;
126
+ --sp-space-14: 0.875rem;
122
127
  --sp-space-16: 1rem;
123
128
  --sp-space-20: 1.25rem;
124
129
  --sp-space-24: 1.5rem;
130
+ --sp-space-28: 1.75rem;
125
131
  --sp-space-32: 2rem;
126
132
  --sp-space-40: 2.5rem;
127
133
  --sp-space-48: 3rem;
128
134
  --sp-space-56: 3.5rem;
129
135
  --sp-space-64: 4rem;
136
+ --sp-space-72: 4.5rem;
130
137
  --sp-space-80: 5rem;
131
138
  --sp-space-96: 6rem;
132
139
  --sp-layout-section-padding-sm: 1.5rem;
@@ -142,12 +149,21 @@
142
149
  --sp-layout-container-padding-inline-md: 1.5rem;
143
150
  --sp-layout-container-padding-inline-lg: 2rem;
144
151
  --sp-layout-container-max-width: 72rem;
152
+ --sp-border-width-none: 0;
145
153
  --sp-border-width-base: 1px;
146
154
  --sp-border-width-thick: 2px;
155
+ --sp-border-style-none: none;
156
+ --sp-border-style-solid: solid;
157
+ --sp-border-style-dashed: dashed;
158
+ --sp-border-style-dotted: dotted;
147
159
  --sp-radius-none: 0;
148
160
  --sp-radius-sm: 2px;
149
161
  --sp-radius-md: 4px;
150
162
  --sp-radius-lg: 8px;
163
+ --sp-radius-xl: 12px;
164
+ --sp-radius-2xl: 16px;
165
+ --sp-radius-3xl: 24px;
166
+ --sp-radius-4xl: 32px;
151
167
  --sp-radius-pill: 999px;
152
168
  --sp-font-family-sans: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
153
169
  --sp-font-family-serif: 'Times New Roman', Times, serif;
@@ -183,34 +199,21 @@
183
199
  --sp-font-6xl-line-height: 5rem;
184
200
  --sp-font-6xl-weight: 900;
185
201
  --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;
202
+ --sp-font-sm-letter-spacing: 0em;
203
+ --sp-font-md-letter-spacing: 0em;
204
+ --sp-font-lg-letter-spacing: 0em;
205
+ --sp-font-xl-letter-spacing: 0em;
206
+ --sp-font-2xl-letter-spacing: 0em;
207
+ --sp-font-3xl-letter-spacing: 0em;
208
+ --sp-font-4xl-letter-spacing: 0em;
209
+ --sp-font-5xl-letter-spacing: 0em;
210
+ --sp-font-6xl-letter-spacing: 0em;
210
211
  --sp-shadow-none: none;
211
212
  --sp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.06);
212
213
  --sp-shadow-md: 0 2px 6px -1px rgba(0, 0, 0, 0.08);
213
214
  --sp-shadow-lg: 0 6px 16px -4px rgba(0, 0, 0, 0.12);
215
+ --sp-shadow-xl: 0 12px 24px -6px rgba(0, 0, 0, 0.15);
216
+ --sp-shadow-2xl: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
214
217
  --sp-breakpoint-sm: 640px;
215
218
  --sp-breakpoint-md: 768px;
216
219
  --sp-breakpoint-lg: 1024px;
@@ -224,20 +227,26 @@
224
227
  --sp-z-index-modal: 1400;
225
228
  --sp-z-index-popover: 1500;
226
229
  --sp-z-index-tooltip: 1600;
230
+ --sp-z-index-toast: 1700;
227
231
  --sp-duration-instant: 75ms;
228
232
  --sp-duration-fast: 150ms;
229
233
  --sp-duration-base: 200ms;
234
+ --sp-duration-relaxed: 250ms;
230
235
  --sp-duration-moderate: 300ms;
231
236
  --sp-duration-slow: 500ms;
232
237
  --sp-duration-slower: 700ms;
238
+ --sp-duration-long: 1000ms;
239
+ --sp-duration-slowest: 1200ms;
233
240
  --sp-easing-linear: linear;
234
241
  --sp-easing-in: cubic-bezier(0.4, 0, 1, 1);
235
242
  --sp-easing-out: cubic-bezier(0, 0, 0.2, 1);
236
243
  --sp-easing-inout: cubic-bezier(0.4, 0, 0.2, 1);
237
244
  --sp-easing-spring: cubic-bezier(0.4, 0, 0.2, 1);
245
+ --sp-easing-overshoot: cubic-bezier(0.34, 1.56, 0.64, 1);
238
246
  --sp-opacity-disabled: 0.38;
239
247
  --sp-opacity-hover: 0.92;
240
248
  --sp-opacity-active: 0.84;
249
+ --sp-opacity-loading: 0.6;
241
250
  --sp-opacity-focus: 1;
242
251
  --sp-opacity-overlay: 0.5;
243
252
  --sp-opacity-tooltip: 0.95;
@@ -279,6 +288,7 @@
279
288
  --sp-button-danger-text: #ffffff;
280
289
  --sp-button-danger-textdisabled: #8a96ad;
281
290
  --sp-button-danger-focusring: rgba(239, 68, 68, 0.4);
291
+ --sp-button-danger-focusvisible: rgba(239, 68, 68, 0.4);
282
292
  --sp-button-success-bg: #15803d;
283
293
  --sp-button-success-bghover: #166534;
284
294
  --sp-button-success-bgactive: #14532d;
@@ -286,6 +296,7 @@
286
296
  --sp-button-success-text: #ffffff;
287
297
  --sp-button-success-textdisabled: #8a96ad;
288
298
  --sp-button-success-focusring: rgba(34, 197, 94, 0.4);
299
+ --sp-button-success-focusvisible: rgba(34, 197, 94, 0.4);
289
300
  --sp-button-cta-bg: #1f57db;
290
301
  --sp-button-cta-bghover: #1946b4;
291
302
  --sp-button-cta-bgactive: #173b8f;
@@ -369,7 +380,7 @@
369
380
  --sp-button-text-default: #eef1f6;
370
381
  --sp-button-text-on-primary: #ffffff;
371
382
  --sp-badge-neutral-bg: #374253;
372
- --sp-badge-neutral-text: #eef1f6;
383
+ --sp-badge-neutral-text: #f7f8fb;
373
384
  --sp-badge-info-bg: #0c4a6e;
374
385
  --sp-badge-info-text: #e0f2fe;
375
386
  --sp-badge-success-bg: #166534;
@@ -420,12 +431,14 @@
420
431
  --sp-component-button-danger-bg-disabled: var(--sp-button-danger-bgdisabled);
421
432
  --sp-component-button-danger-text: var(--sp-button-danger-text);
422
433
  --sp-component-button-danger-text-disabled: var(--sp-button-danger-textdisabled);
434
+ --sp-component-button-danger-focus-visible: var(--sp-button-danger-focusvisible);
423
435
  --sp-component-button-success-bg: var(--sp-button-success-bg);
424
436
  --sp-component-button-success-bg-hover: var(--sp-button-success-bghover);
425
437
  --sp-component-button-success-bg-active: var(--sp-button-success-bgactive);
426
438
  --sp-component-button-success-bg-disabled: var(--sp-button-success-bgdisabled);
427
439
  --sp-component-button-success-text: var(--sp-button-success-text);
428
440
  --sp-component-button-success-text-disabled: var(--sp-button-success-textdisabled);
441
+ --sp-component-button-success-focus-visible: var(--sp-button-success-focusvisible);
429
442
  /* CTA button alignment restored to official tokens as they now use the brand palette (Blue). */
430
443
  --sp-component-button-cta-bg: var(--sp-button-cta-bg);
431
444
  --sp-component-button-cta-bg-hover: var(--sp-button-cta-bghover);
@@ -496,6 +509,9 @@
496
509
  --sp-component-badge-info-text: var(--sp-badge-info-text);
497
510
  --sp-component-badge-ghost-bg: var(--sp-button-ghost-bg);
498
511
  --sp-component-badge-ghost-text: var(--sp-button-ghost-text);
512
+ --sp-component-badge-outline-bg: transparent;
513
+ --sp-component-badge-outline-text: var(--sp-badge-neutral-text);
514
+ --sp-component-badge-outline-border: var(--sp-button-secondary-border);
499
515
  --sp-component-badge-accent-bg: var(--sp-button-accent-bg);
500
516
  --sp-component-badge-accent-text: var(--sp-button-accent-text);
501
517
  --sp-component-badge-cta-bg: var(--sp-button-cta-bg);
@@ -546,6 +562,9 @@
546
562
  --sp-component-iconbox-accent-text: var(--sp-button-accent-text);
547
563
  --sp-component-iconbox-cta-bg: var(--sp-button-cta-bg);
548
564
  --sp-component-iconbox-cta-text: var(--sp-button-cta-text);
565
+ --sp-component-iconbox-outline-bg: transparent;
566
+ --sp-component-iconbox-outline-text: var(--sp-badge-neutral-text);
567
+ --sp-component-iconbox-outline-border: var(--sp-button-secondary-border);
549
568
 
550
569
  /* testimonial roles */
551
570
  --sp-component-testimonial-bg: var(--sp-surface-card);
@@ -585,6 +604,99 @@
585
604
  --sp-component-rating-size-sm: var(--sp-font-sm-size);
586
605
  --sp-component-rating-size-md: var(--sp-font-md-size);
587
606
  --sp-component-rating-size-lg: var(--sp-font-lg-size);
607
+
608
+ /* alert roles */
609
+ --sp-component-alert-radius: var(--sp-radius-lg);
610
+ --sp-component-alert-padding-x: var(--sp-space-16);
611
+ --sp-component-alert-padding-y-sm: var(--sp-space-8);
612
+ --sp-component-alert-padding-y-md: var(--sp-space-12);
613
+ --sp-component-alert-padding-y-lg: var(--sp-space-16);
614
+ --sp-component-alert-info-bg: var(--sp-badge-info-bg);
615
+ --sp-component-alert-info-text: var(--sp-badge-info-text);
616
+ --sp-component-alert-info-border: var(--sp-color-info-200);
617
+ --sp-component-alert-success-bg: var(--sp-badge-success-bg);
618
+ --sp-component-alert-success-text: var(--sp-badge-success-text);
619
+ --sp-component-alert-success-border: var(--sp-color-success-200);
620
+ --sp-component-alert-warning-bg: var(--sp-badge-warning-bg);
621
+ --sp-component-alert-warning-text: var(--sp-badge-warning-text);
622
+ --sp-component-alert-warning-border: var(--sp-color-warning-200);
623
+ --sp-component-alert-danger-bg: var(--sp-badge-danger-bg);
624
+ --sp-component-alert-danger-text: var(--sp-badge-danger-text);
625
+ --sp-component-alert-danger-border: var(--sp-color-error-200);
626
+ --sp-component-alert-neutral-bg: var(--sp-badge-neutral-bg);
627
+ --sp-component-alert-neutral-text: var(--sp-badge-neutral-text);
628
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-200);
629
+
630
+ /* avatar roles */
631
+ --sp-component-avatar-size-xs: var(--sp-space-24);
632
+ --sp-component-avatar-size-sm: var(--sp-space-32);
633
+ --sp-component-avatar-size-md: var(--sp-space-48);
634
+ --sp-component-avatar-size-lg: var(--sp-space-64);
635
+ --sp-component-avatar-size-xl: var(--sp-space-80);
636
+ --sp-component-avatar-bg: var(--sp-surface-alternate);
637
+ --sp-component-avatar-text: var(--sp-text-on-surface-default);
638
+ --sp-component-avatar-radius-circle: var(--sp-radius-pill);
639
+ --sp-component-avatar-radius-square: var(--sp-radius-lg);
640
+ --sp-component-avatar-font: var(--sp-font-family-sans);
641
+ --sp-component-avatar-weight: var(--sp-font-md-weight);
642
+
643
+ /* tag roles */
644
+ --sp-component-tag-radius: var(--sp-radius-pill);
645
+ --sp-component-tag-font: var(--sp-font-family-sans);
646
+ --sp-component-tag-weight: var(--sp-font-sm-weight);
647
+ --sp-component-tag-padding-x-sm: var(--sp-space-8);
648
+ --sp-component-tag-padding-x-md: var(--sp-space-12);
649
+ --sp-component-tag-padding-x-lg: var(--sp-space-16);
650
+ --sp-component-tag-default-bg: var(--sp-badge-neutral-bg);
651
+ --sp-component-tag-default-text: var(--sp-badge-neutral-text);
652
+ --sp-component-tag-primary-bg: var(--sp-button-primary-bg);
653
+ --sp-component-tag-primary-text: var(--sp-button-text-on-primary);
654
+ --sp-component-tag-secondary-bg: var(--sp-button-secondary-bg);
655
+ --sp-component-tag-secondary-text: var(--sp-button-secondary-text);
656
+ --sp-component-tag-success-bg: var(--sp-badge-success-bg);
657
+ --sp-component-tag-success-text: var(--sp-badge-success-text);
658
+ --sp-component-tag-warning-bg: var(--sp-badge-warning-bg);
659
+ --sp-component-tag-warning-text: var(--sp-badge-warning-text);
660
+ --sp-component-tag-danger-bg: var(--sp-badge-danger-bg);
661
+ --sp-component-tag-danger-text: var(--sp-badge-danger-text);
662
+ --sp-component-tag-info-bg: var(--sp-badge-info-bg);
663
+ --sp-component-tag-info-text: var(--sp-badge-info-text);
664
+ --sp-component-tag-neutral-bg: var(--sp-badge-neutral-bg);
665
+ --sp-component-tag-neutral-text: var(--sp-badge-neutral-text);
666
+ --sp-component-tag-accent-bg: var(--sp-button-accent-bg);
667
+ --sp-component-tag-accent-text: var(--sp-button-accent-text);
668
+ --sp-component-tag-cta-bg: var(--sp-button-cta-bg);
669
+ --sp-component-tag-cta-text: var(--sp-button-cta-text);
670
+ --sp-component-tag-outline-bg: transparent;
671
+ --sp-component-tag-outline-text: var(--sp-badge-neutral-text);
672
+ --sp-component-tag-outline-border: var(--sp-button-secondary-border);
673
+ --sp-component-tag-ghost-bg: var(--sp-button-ghost-bg);
674
+ --sp-component-tag-ghost-text: var(--sp-button-ghost-text);
675
+ --sp-component-tag-selected-bg: var(--sp-button-primary-bg);
676
+ --sp-component-tag-selected-text: var(--sp-button-primary-text);
677
+ --sp-component-tag-gap: var(--sp-space-4);
678
+ --sp-component-tag-padding-y-sm: var(--sp-space-4);
679
+ --sp-component-tag-padding-y-md: var(--sp-space-4);
680
+ --sp-component-tag-padding-y-lg: var(--sp-space-4);
681
+
682
+ /* spinner roles */
683
+ --sp-component-spinner-size-sm: var(--sp-space-16);
684
+ --sp-component-spinner-size-md: var(--sp-space-24);
685
+ --sp-component-spinner-size-lg: var(--sp-space-32);
686
+ --sp-component-spinner-border-width: var(--sp-border-width-thick);
687
+ --sp-component-spinner-track-color: var(--sp-color-neutral-200);
688
+ --sp-component-spinner-arc-color: var(--sp-button-primary-bg);
689
+ --sp-component-spinner-primary-arc: var(--sp-button-primary-bg);
690
+ --sp-component-spinner-secondary-arc: var(--sp-button-secondary-border);
691
+ --sp-component-spinner-success-arc: var(--sp-color-success-500);
692
+ --sp-component-spinner-warning-arc: var(--sp-color-warning-500);
693
+ --sp-component-spinner-danger-arc: var(--sp-color-error-500);
694
+ --sp-component-spinner-info-arc: var(--sp-color-info-500);
695
+ --sp-component-spinner-neutral-arc: var(--sp-color-neutral-500);
696
+ --sp-component-spinner-accent-arc: var(--sp-button-accent-bg);
697
+ --sp-component-spinner-cta-arc: var(--sp-button-cta-bg);
698
+ --sp-component-spinner-duration: var(--sp-duration-long);
699
+ --sp-component-spinner-easing: var(--sp-easing-linear);
588
700
  }
589
701
 
590
702
  /* dark mode overrides mapped from Spectre token mode definitions */
@@ -624,6 +736,34 @@
624
736
  --sp-component-rating-star-filled: var(--sp-color-warning-400);
625
737
  --sp-component-rating-star-empty: var(--sp-color-neutral-700);
626
738
  --sp-component-rating-text: var(--sp-color-neutral-400);
739
+
740
+ --sp-component-alert-info-bg: var(--sp-color-info-800);
741
+ --sp-component-alert-info-text: var(--sp-color-info-100);
742
+ --sp-component-alert-info-border: var(--sp-color-info-700);
743
+ --sp-component-alert-success-bg: var(--sp-color-success-800);
744
+ --sp-component-alert-success-text: var(--sp-color-success-100);
745
+ --sp-component-alert-success-border: var(--sp-color-success-700);
746
+ --sp-component-alert-warning-bg: var(--sp-color-warning-800);
747
+ --sp-component-alert-warning-text: var(--sp-color-warning-100);
748
+ --sp-component-alert-warning-border: var(--sp-color-warning-700);
749
+ --sp-component-alert-danger-bg: var(--sp-color-error-800);
750
+ --sp-component-alert-danger-text: var(--sp-color-error-100);
751
+ --sp-component-alert-danger-border: var(--sp-color-error-700);
752
+ --sp-component-alert-neutral-bg: var(--sp-color-neutral-700);
753
+ --sp-component-alert-neutral-text: var(--sp-color-neutral-100);
754
+ --sp-component-alert-neutral-border: var(--sp-color-neutral-600);
755
+
756
+ --sp-component-spinner-track-color: var(--sp-color-neutral-700);
757
+ --sp-component-spinner-arc-color: var(--sp-color-brand-400);
758
+ --sp-component-spinner-primary-arc: var(--sp-color-brand-400);
759
+ --sp-component-spinner-secondary-arc: var(--sp-color-neutral-400);
760
+ --sp-component-spinner-success-arc: var(--sp-color-success-400);
761
+ --sp-component-spinner-warning-arc: var(--sp-color-warning-400);
762
+ --sp-component-spinner-danger-arc: var(--sp-color-error-400);
763
+ --sp-component-spinner-info-arc: var(--sp-color-info-400);
764
+ --sp-component-spinner-neutral-arc: var(--sp-color-neutral-400);
765
+ --sp-component-spinner-accent-arc: var(--sp-color-brand-400);
766
+ --sp-component-spinner-cta-arc: var(--sp-color-brand-400);
627
767
  }
628
768
 
629
769
  /* BUTTONS -------------------------------------------------------------- */
@@ -658,7 +798,8 @@
658
798
  pointer-events: none;
659
799
  }
660
800
 
661
- .sp-btn--loading {
801
+ .sp-btn--loading,
802
+ .sp-btn[aria-busy="true"] {
662
803
  pointer-events: none;
663
804
  opacity: var(--sp-opacity-active);
664
805
  }
@@ -725,6 +866,7 @@
725
866
  }
726
867
 
727
868
  .sp-btn--primary.sp-btn--disabled,
869
+ .sp-btn--primary[aria-disabled="true"],
728
870
  .sp-btn--primary:disabled {
729
871
  background-color: var(--sp-component-button-primary-bg-disabled);
730
872
  color: var(--sp-component-button-primary-text-disabled);
@@ -751,6 +893,7 @@
751
893
  }
752
894
 
753
895
  .sp-btn--secondary.sp-btn--disabled,
896
+ .sp-btn--secondary[aria-disabled="true"],
754
897
  .sp-btn--secondary:disabled {
755
898
  background-color: var(--sp-component-button-secondary-bg-disabled);
756
899
  color: var(--sp-component-button-secondary-text-disabled);
@@ -776,6 +919,7 @@
776
919
  }
777
920
 
778
921
  .sp-btn--ghost.sp-btn--disabled,
922
+ .sp-btn--ghost[aria-disabled="true"],
779
923
  .sp-btn--ghost:disabled {
780
924
  color: var(--sp-component-button-ghost-text-disabled);
781
925
  background-color: var(--sp-component-button-ghost-bg-disabled);
@@ -800,11 +944,18 @@
800
944
  }
801
945
 
802
946
  .sp-btn--danger.sp-btn--disabled,
947
+ .sp-btn--danger[aria-disabled="true"],
803
948
  .sp-btn--danger:disabled {
804
949
  background-color: var(--sp-component-button-danger-bg-disabled);
805
950
  color: var(--sp-component-button-danger-text-disabled);
806
951
  }
807
952
 
953
+ .sp-btn--danger:focus-visible,
954
+ .sp-btn--danger.sp-btn--focus,
955
+ .sp-btn--danger.is-focus {
956
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-danger-focus-visible);
957
+ }
958
+
808
959
  /* success */
809
960
  .sp-btn--success {
810
961
  background-color: var(--sp-component-button-success-bg);
@@ -824,11 +975,18 @@
824
975
  }
825
976
 
826
977
  .sp-btn--success.sp-btn--disabled,
978
+ .sp-btn--success[aria-disabled="true"],
827
979
  .sp-btn--success:disabled {
828
980
  background-color: var(--sp-component-button-success-bg-disabled);
829
981
  color: var(--sp-component-button-success-text-disabled);
830
982
  }
831
983
 
984
+ .sp-btn--success:focus-visible,
985
+ .sp-btn--success.sp-btn--focus,
986
+ .sp-btn--success.is-focus {
987
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-success-focus-visible);
988
+ }
989
+
832
990
  /* cta */
833
991
  .sp-btn--cta {
834
992
  background-color: var(--sp-component-button-cta-bg);
@@ -849,6 +1007,7 @@
849
1007
  }
850
1008
 
851
1009
  .sp-btn--cta.sp-btn--disabled,
1010
+ .sp-btn--cta[aria-disabled="true"],
852
1011
  .sp-btn--cta:disabled {
853
1012
  background-color: var(--sp-component-button-cta-bg-disabled);
854
1013
  color: var(--sp-component-button-cta-text-disabled);
@@ -874,6 +1033,7 @@
874
1033
  }
875
1034
 
876
1035
  .sp-btn--accent.sp-btn--disabled,
1036
+ .sp-btn--accent[aria-disabled="true"],
877
1037
  .sp-btn--accent:disabled {
878
1038
  background-color: var(--sp-component-button-accent-bg-disabled);
879
1039
  color: var(--sp-component-button-accent-text-disabled);
@@ -1243,6 +1403,12 @@
1243
1403
  background-color: var(--sp-component-badge-ghost-bg-hover);
1244
1404
  }
1245
1405
 
1406
+ .sp-badge--outline {
1407
+ background-color: var(--sp-component-badge-outline-bg);
1408
+ color: var(--sp-component-badge-outline-text);
1409
+ border-color: var(--sp-component-badge-outline-border);
1410
+ }
1411
+
1246
1412
  .sp-badge--accent {
1247
1413
  background-color: var(--sp-component-badge-accent-bg);
1248
1414
  color: var(--sp-component-badge-accent-text);
@@ -1440,6 +1606,12 @@
1440
1606
  color: var(--sp-component-iconbox-cta-text);
1441
1607
  }
1442
1608
 
1609
+ .sp-iconbox--outline {
1610
+ background-color: var(--sp-component-iconbox-outline-bg);
1611
+ color: var(--sp-component-iconbox-outline-text);
1612
+ border-color: var(--sp-component-iconbox-outline-border);
1613
+ }
1614
+
1443
1615
  .sp-iconbox--interactive {
1444
1616
  cursor: pointer;
1445
1617
  }
@@ -1733,9 +1905,11 @@
1733
1905
  gap: var(--sp-space-8);
1734
1906
  font-size: var(--sp-component-rating-size-md);
1735
1907
  border-radius: var(--sp-radius-md);
1908
+ border: var(--sp-component-border-width) solid transparent;
1736
1909
  transition:
1737
1910
  opacity var(--sp-duration-fast) var(--sp-easing-out),
1738
- box-shadow var(--sp-duration-fast) var(--sp-easing-out);
1911
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
1912
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
1739
1913
  }
1740
1914
 
1741
1915
  .sp-rating--sm {
@@ -1766,7 +1940,8 @@
1766
1940
  cursor: not-allowed;
1767
1941
  }
1768
1942
 
1769
- .sp-rating--loading {
1943
+ .sp-rating--loading,
1944
+ .sp-rating[aria-busy="true"] {
1770
1945
  opacity: var(--sp-opacity-active);
1771
1946
  pointer-events: none;
1772
1947
  }
@@ -1776,20 +1951,20 @@
1776
1951
  }
1777
1952
 
1778
1953
  .sp-rating--interactive:hover,
1779
- .sp-rating--interactive.sp-rating--hover,
1780
- .sp-rating--interactive.is-hover {
1954
+ .sp-rating--hover,
1955
+ .is-hover {
1781
1956
  opacity: var(--sp-opacity-hover);
1782
1957
  }
1783
1958
 
1784
1959
  .sp-rating--interactive:active,
1785
- .sp-rating--interactive.sp-rating--active,
1786
- .sp-rating--interactive.is-active {
1960
+ .sp-rating--active,
1961
+ .is-active {
1787
1962
  opacity: var(--sp-opacity-active);
1788
1963
  }
1789
1964
 
1790
1965
  .sp-rating--interactive:focus-visible,
1791
- .sp-rating--interactive.sp-rating--focus,
1792
- .sp-rating--interactive.is-focus {
1966
+ .sp-rating--focus,
1967
+ .is-focus {
1793
1968
  outline: none;
1794
1969
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1795
1970
  }
@@ -1814,4 +1989,457 @@
1814
1989
  color: var(--sp-component-rating-text);
1815
1990
  font-size: var(--sp-font-sm-size);
1816
1991
  }
1992
+
1993
+ .sp-rating-text--disabled {
1994
+ opacity: var(--sp-opacity-disabled);
1995
+ }
1996
+
1997
+ /* ALERTS --------------------------------------------------------------- */
1998
+ .sp-alert {
1999
+ display: flex;
2000
+ align-items: flex-start;
2001
+ gap: var(--sp-space-12);
2002
+ border-radius: var(--sp-component-alert-radius);
2003
+ border: var(--sp-component-border-width) solid transparent;
2004
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
2005
+ font-family: var(--sp-font-family-sans);
2006
+ font-size: var(--sp-font-sm-size);
2007
+ line-height: var(--sp-font-sm-line-height);
2008
+ transition:
2009
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2010
+ color var(--sp-duration-fast) var(--sp-easing-out),
2011
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2012
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2013
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2014
+ }
2015
+
2016
+ .sp-alert--dismissed {
2017
+ display: none;
2018
+ }
2019
+
2020
+ .sp-alert--full {
2021
+ width: 100%;
2022
+ }
2023
+
2024
+ .sp-alert--sm {
2025
+ padding: var(--sp-component-alert-padding-y-sm) var(--sp-component-alert-padding-x);
2026
+ font-size: var(--sp-font-xs-size);
2027
+ line-height: var(--sp-font-xs-line-height);
2028
+ }
2029
+
2030
+ .sp-alert--md {
2031
+ padding: var(--sp-component-alert-padding-y-md) var(--sp-component-alert-padding-x);
2032
+ font-size: var(--sp-font-sm-size);
2033
+ line-height: var(--sp-font-sm-line-height);
2034
+ }
2035
+
2036
+ .sp-alert--lg {
2037
+ padding: var(--sp-component-alert-padding-y-lg) var(--sp-component-alert-padding-x);
2038
+ font-size: var(--sp-font-md-size);
2039
+ line-height: var(--sp-font-md-line-height);
2040
+ }
2041
+
2042
+ .sp-alert--info {
2043
+ background-color: var(--sp-component-alert-info-bg);
2044
+ color: var(--sp-component-alert-info-text);
2045
+ border-color: var(--sp-component-alert-info-border);
2046
+ }
2047
+
2048
+ .sp-alert--success {
2049
+ background-color: var(--sp-component-alert-success-bg);
2050
+ color: var(--sp-component-alert-success-text);
2051
+ border-color: var(--sp-component-alert-success-border);
2052
+ }
2053
+
2054
+ .sp-alert--warning {
2055
+ background-color: var(--sp-component-alert-warning-bg);
2056
+ color: var(--sp-component-alert-warning-text);
2057
+ border-color: var(--sp-component-alert-warning-border);
2058
+ }
2059
+
2060
+ .sp-alert--danger {
2061
+ background-color: var(--sp-component-alert-danger-bg);
2062
+ color: var(--sp-component-alert-danger-text);
2063
+ border-color: var(--sp-component-alert-danger-border);
2064
+ }
2065
+
2066
+ .sp-alert--neutral {
2067
+ background-color: var(--sp-component-alert-neutral-bg);
2068
+ color: var(--sp-component-alert-neutral-text);
2069
+ border-color: var(--sp-component-alert-neutral-border);
2070
+ }
2071
+
2072
+ .sp-alert--interactive {
2073
+ cursor: pointer;
2074
+ }
2075
+
2076
+ .sp-alert--interactive:hover,
2077
+ .sp-alert--hover,
2078
+ .sp-alert.is-hover {
2079
+ opacity: var(--sp-opacity-hover);
2080
+ }
2081
+
2082
+ .sp-alert--interactive:active,
2083
+ .sp-alert--active,
2084
+ .sp-alert.is-active {
2085
+ opacity: var(--sp-opacity-active);
2086
+ }
2087
+
2088
+ .sp-alert--interactive:focus-visible,
2089
+ .sp-alert--focus,
2090
+ .sp-alert.is-focus {
2091
+ outline: none;
2092
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2093
+ }
2094
+
2095
+ .sp-alert:disabled,
2096
+ .sp-alert[aria-disabled="true"],
2097
+ .sp-alert--disabled {
2098
+ opacity: var(--sp-opacity-disabled);
2099
+ pointer-events: none;
2100
+ cursor: not-allowed;
2101
+ }
2102
+
2103
+ .sp-alert--loading,
2104
+ .sp-alert[aria-busy="true"] {
2105
+ opacity: var(--sp-opacity-active);
2106
+ pointer-events: none;
2107
+ }
2108
+
2109
+ /* AVATARS -------------------------------------------------------------- */
2110
+ .sp-avatar {
2111
+ display: inline-flex;
2112
+ align-items: center;
2113
+ justify-content: center;
2114
+ overflow: hidden;
2115
+ flex-shrink: 0;
2116
+ background-color: var(--sp-component-avatar-bg);
2117
+ color: var(--sp-component-avatar-text);
2118
+ border: var(--sp-component-border-width) solid transparent;
2119
+ font-family: var(--sp-component-avatar-font);
2120
+ font-weight: var(--sp-component-avatar-weight);
2121
+ transition:
2122
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2123
+ color var(--sp-duration-fast) var(--sp-easing-out),
2124
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2125
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2126
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2127
+ }
2128
+
2129
+ .sp-avatar--xs {
2130
+ width: var(--sp-component-avatar-size-xs);
2131
+ height: var(--sp-component-avatar-size-xs);
2132
+ font-size: var(--sp-font-xs-size);
2133
+ line-height: var(--sp-font-xs-line-height);
2134
+ }
2135
+
2136
+ .sp-avatar--sm {
2137
+ width: var(--sp-component-avatar-size-sm);
2138
+ height: var(--sp-component-avatar-size-sm);
2139
+ font-size: var(--sp-font-xs-size);
2140
+ line-height: var(--sp-font-xs-line-height);
2141
+ }
2142
+
2143
+ .sp-avatar--md {
2144
+ width: var(--sp-component-avatar-size-md);
2145
+ height: var(--sp-component-avatar-size-md);
2146
+ font-size: var(--sp-font-sm-size);
2147
+ line-height: var(--sp-font-sm-line-height);
2148
+ }
2149
+
2150
+ .sp-avatar--lg {
2151
+ width: var(--sp-component-avatar-size-lg);
2152
+ height: var(--sp-component-avatar-size-lg);
2153
+ font-size: var(--sp-font-md-size);
2154
+ line-height: var(--sp-font-md-line-height);
2155
+ }
2156
+
2157
+ .sp-avatar--xl {
2158
+ width: var(--sp-component-avatar-size-xl);
2159
+ height: var(--sp-component-avatar-size-xl);
2160
+ font-size: var(--sp-font-lg-size);
2161
+ line-height: var(--sp-font-lg-line-height);
2162
+ }
2163
+
2164
+ .sp-avatar--circle {
2165
+ border-radius: var(--sp-component-avatar-radius-circle);
2166
+ }
2167
+
2168
+ .sp-avatar--square {
2169
+ border-radius: var(--sp-component-avatar-radius-square);
2170
+ }
2171
+
2172
+ .sp-avatar--full {
2173
+ width: 100%;
2174
+ }
2175
+
2176
+ .sp-avatar--interactive {
2177
+ cursor: pointer;
2178
+ }
2179
+
2180
+ .sp-avatar--interactive:hover,
2181
+ .sp-avatar--hover,
2182
+ .sp-avatar.is-hover {
2183
+ opacity: var(--sp-opacity-hover);
2184
+ }
2185
+
2186
+ .sp-avatar--interactive:active,
2187
+ .sp-avatar--active,
2188
+ .sp-avatar.is-active {
2189
+ opacity: var(--sp-opacity-active);
2190
+ }
2191
+
2192
+ .sp-avatar--interactive:focus-visible,
2193
+ .sp-avatar--focus,
2194
+ .sp-avatar.is-focus {
2195
+ outline: none;
2196
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2197
+ }
2198
+
2199
+ .sp-avatar:disabled,
2200
+ .sp-avatar[aria-disabled="true"],
2201
+ .sp-avatar--disabled {
2202
+ opacity: var(--sp-opacity-disabled);
2203
+ pointer-events: none;
2204
+ cursor: not-allowed;
2205
+ }
2206
+
2207
+ .sp-avatar--loading,
2208
+ .sp-avatar[aria-busy="true"] {
2209
+ opacity: var(--sp-opacity-active);
2210
+ pointer-events: none;
2211
+ }
2212
+
2213
+ .sp-avatar--placeholder {
2214
+ background-color: var(--sp-surface-alternate);
2215
+ color: var(--sp-text-on-surface-meta);
2216
+ }
2217
+
2218
+ /* TAGS ----------------------------------------------------------------- */
2219
+ .sp-tag {
2220
+ display: inline-flex;
2221
+ align-items: center;
2222
+ gap: var(--sp-component-tag-gap);
2223
+ border-radius: var(--sp-component-tag-radius);
2224
+ font-family: var(--sp-component-tag-font);
2225
+ font-weight: var(--sp-component-tag-weight);
2226
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2227
+ font-size: var(--sp-font-sm-size);
2228
+ line-height: var(--sp-font-sm-line-height);
2229
+ border: var(--sp-component-border-width) solid transparent;
2230
+ white-space: nowrap;
2231
+ transition:
2232
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2233
+ color var(--sp-duration-fast) var(--sp-easing-out),
2234
+ box-shadow var(--sp-duration-fast) var(--sp-easing-out),
2235
+ border-color var(--sp-duration-fast) var(--sp-easing-out),
2236
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2237
+ }
2238
+
2239
+ .sp-tag--full {
2240
+ width: 100%;
2241
+ }
2242
+
2243
+ .sp-tag--default {
2244
+ background-color: var(--sp-component-tag-default-bg);
2245
+ color: var(--sp-component-tag-default-text);
2246
+ }
2247
+
2248
+ .sp-tag--primary {
2249
+ background-color: var(--sp-component-tag-primary-bg);
2250
+ color: var(--sp-component-tag-primary-text);
2251
+ }
2252
+
2253
+ .sp-tag--secondary {
2254
+ background-color: var(--sp-component-tag-secondary-bg);
2255
+ color: var(--sp-component-tag-secondary-text);
2256
+ }
2257
+
2258
+ .sp-tag--success {
2259
+ background-color: var(--sp-component-tag-success-bg);
2260
+ color: var(--sp-component-tag-success-text);
2261
+ }
2262
+
2263
+ .sp-tag--warning {
2264
+ background-color: var(--sp-component-tag-warning-bg);
2265
+ color: var(--sp-component-tag-warning-text);
2266
+ }
2267
+
2268
+ .sp-tag--danger {
2269
+ background-color: var(--sp-component-tag-danger-bg);
2270
+ color: var(--sp-component-tag-danger-text);
2271
+ }
2272
+
2273
+ .sp-tag--info {
2274
+ background-color: var(--sp-component-tag-info-bg);
2275
+ color: var(--sp-component-tag-info-text);
2276
+ }
2277
+
2278
+ .sp-tag--neutral {
2279
+ background-color: var(--sp-component-tag-neutral-bg);
2280
+ color: var(--sp-component-tag-neutral-text);
2281
+ }
2282
+
2283
+ .sp-tag--accent {
2284
+ background-color: var(--sp-component-tag-accent-bg);
2285
+ color: var(--sp-component-tag-accent-text);
2286
+ }
2287
+
2288
+ .sp-tag--cta {
2289
+ background-color: var(--sp-component-tag-cta-bg);
2290
+ color: var(--sp-component-tag-cta-text);
2291
+ }
2292
+
2293
+ .sp-tag--outline {
2294
+ background-color: var(--sp-component-tag-outline-bg);
2295
+ color: var(--sp-component-tag-outline-text);
2296
+ border-color: var(--sp-component-tag-outline-border);
2297
+ }
2298
+
2299
+ .sp-tag--selected {
2300
+ background-color: var(--sp-component-tag-selected-bg);
2301
+ color: var(--sp-component-tag-selected-text);
2302
+ border-color: transparent;
2303
+ }
2304
+
2305
+ .sp-tag--ghost {
2306
+ background-color: var(--sp-component-tag-ghost-bg);
2307
+ color: var(--sp-component-tag-ghost-text);
2308
+ }
2309
+
2310
+ .sp-tag--interactive {
2311
+ cursor: pointer;
2312
+ }
2313
+
2314
+ .sp-tag--interactive:hover,
2315
+ .sp-tag--hover,
2316
+ .sp-tag.is-hover {
2317
+ opacity: var(--sp-opacity-hover);
2318
+ }
2319
+
2320
+ .sp-tag--interactive:active,
2321
+ .sp-tag--active,
2322
+ .sp-tag.is-active {
2323
+ opacity: var(--sp-opacity-active);
2324
+ }
2325
+
2326
+ .sp-tag--interactive:focus-visible,
2327
+ .sp-tag--focus,
2328
+ .sp-tag.is-focus {
2329
+ outline: none;
2330
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2331
+ }
2332
+
2333
+ .sp-tag:disabled,
2334
+ .sp-tag[aria-disabled="true"],
2335
+ .sp-tag--disabled {
2336
+ opacity: var(--sp-opacity-disabled);
2337
+ pointer-events: none;
2338
+ cursor: not-allowed;
2339
+ }
2340
+
2341
+ .sp-tag--loading,
2342
+ .sp-tag[aria-busy="true"] {
2343
+ opacity: var(--sp-opacity-active);
2344
+ pointer-events: none;
2345
+ }
2346
+
2347
+ .sp-tag--sm {
2348
+ padding: var(--sp-component-tag-padding-y-sm) var(--sp-component-tag-padding-x-sm);
2349
+ font-size: var(--sp-font-xs-size);
2350
+ line-height: var(--sp-font-xs-line-height);
2351
+ }
2352
+
2353
+ .sp-tag--md {
2354
+ padding: var(--sp-component-tag-padding-y-md) var(--sp-component-tag-padding-x-md);
2355
+ font-size: var(--sp-font-sm-size);
2356
+ line-height: var(--sp-font-sm-line-height);
2357
+ }
2358
+
2359
+ .sp-tag--lg {
2360
+ padding: var(--sp-component-tag-padding-y-lg) var(--sp-component-tag-padding-x-lg);
2361
+ font-size: var(--sp-font-md-size);
2362
+ line-height: var(--sp-font-md-line-height);
2363
+ }
2364
+
2365
+ .sp-tag--dismissible {
2366
+ gap: var(--sp-space-8);
2367
+ }
2368
+
2369
+ /* SPINNER -------------------------------------------------------------- */
2370
+
2371
+ @keyframes sp-spin {
2372
+ to {
2373
+ transform: rotate(360deg);
2374
+ }
2375
+ }
2376
+
2377
+ .sp-spinner {
2378
+ display: inline-block;
2379
+ border-radius: 50%;
2380
+ border: var(--sp-component-spinner-border-width) solid var(--sp-component-spinner-track-color);
2381
+ border-top-color: var(--sp-component-spinner-arc-color);
2382
+ animation: sp-spin var(--sp-component-spinner-duration) var(--sp-component-spinner-easing) infinite;
2383
+ transition: opacity var(--sp-duration-fast) var(--sp-easing-out);
2384
+ }
2385
+
2386
+ .sp-spinner--primary {
2387
+ border-top-color: var(--sp-component-spinner-primary-arc);
2388
+ }
2389
+
2390
+ .sp-spinner--secondary {
2391
+ border-top-color: var(--sp-component-spinner-secondary-arc);
2392
+ }
2393
+
2394
+ .sp-spinner--success {
2395
+ border-top-color: var(--sp-component-spinner-success-arc);
2396
+ }
2397
+
2398
+ .sp-spinner--warning {
2399
+ border-top-color: var(--sp-component-spinner-warning-arc);
2400
+ }
2401
+
2402
+ .sp-spinner--danger {
2403
+ border-top-color: var(--sp-component-spinner-danger-arc);
2404
+ }
2405
+
2406
+ .sp-spinner--info {
2407
+ border-top-color: var(--sp-component-spinner-info-arc);
2408
+ }
2409
+
2410
+ .sp-spinner--neutral {
2411
+ border-top-color: var(--sp-component-spinner-neutral-arc);
2412
+ }
2413
+
2414
+ .sp-spinner--accent {
2415
+ border-top-color: var(--sp-component-spinner-accent-arc);
2416
+ }
2417
+
2418
+ .sp-spinner--cta {
2419
+ border-top-color: var(--sp-component-spinner-cta-arc);
2420
+ }
2421
+
2422
+ .sp-spinner--disabled {
2423
+ opacity: var(--sp-opacity-disabled);
2424
+ }
2425
+
2426
+ .sp-spinner--loading,
2427
+ .sp-spinner[aria-busy="true"] {
2428
+ opacity: var(--sp-opacity-active);
2429
+ }
2430
+
2431
+ .sp-spinner--sm {
2432
+ width: var(--sp-component-spinner-size-sm);
2433
+ height: var(--sp-component-spinner-size-sm);
2434
+ }
2435
+
2436
+ .sp-spinner--md {
2437
+ width: var(--sp-component-spinner-size-md);
2438
+ height: var(--sp-component-spinner-size-md);
2439
+ }
2440
+
2441
+ .sp-spinner--lg {
2442
+ width: var(--sp-component-spinner-size-lg);
2443
+ height: var(--sp-component-spinner-size-lg);
2444
+ }
1817
2445
  }