@phcdevworks/spectre-ui 1.8.0 → 1.9.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.
@@ -37,6 +37,41 @@
37
37
  --sp-icon-box-icon-success: #16a34a;
38
38
  --sp-icon-box-icon-warning: #d48806;
39
39
  --sp-icon-box-icon-danger: #dc2626;
40
+ --sp-nav-bg: #ffffff;
41
+ --sp-nav-text: #141b24;
42
+ --sp-nav-link: #374253;
43
+ --sp-nav-link-hover: #1f57db;
44
+ --sp-nav-link-active: #1946b4;
45
+ --sp-nav-border: #d9dfeb;
46
+ --sp-modal-bg: #ffffff;
47
+ --sp-modal-shadow: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
48
+ --sp-modal-border: #d9dfeb;
49
+ --sp-modal-overlay: rgba(0, 0, 0, 0.6);
50
+ --sp-toast-success-bg: #f0fdf4;
51
+ --sp-toast-success-text: #166534;
52
+ --sp-toast-success-border: #bbf7d0;
53
+ --sp-toast-success-icon: #16a34a;
54
+ --sp-toast-warning-bg: #fffbea;
55
+ --sp-toast-warning-text: #8f5200;
56
+ --sp-toast-warning-border: #ffe08a;
57
+ --sp-toast-warning-icon: #d48806;
58
+ --sp-toast-danger-bg: #fef2f2;
59
+ --sp-toast-danger-text: #991b1b;
60
+ --sp-toast-danger-border: #fecaca;
61
+ --sp-toast-danger-icon: #dc2626;
62
+ --sp-toast-info-bg: #f0f9ff;
63
+ --sp-toast-info-text: #0c4a6e;
64
+ --sp-toast-info-border: #bae6fd;
65
+ --sp-toast-info-icon: #0369a1;
66
+ --sp-tooltip-bg: #141b24;
67
+ --sp-tooltip-text: #ffffff;
68
+ --sp-tooltip-border: #374253;
69
+ --sp-dropdown-bg: #ffffff;
70
+ --sp-dropdown-border: #d9dfeb;
71
+ --sp-dropdown-item-default: transparent;
72
+ --sp-dropdown-item-hover: #eef1f6;
73
+ --sp-dropdown-item-active: #f0f9ff;
74
+ --sp-dropdown-item-text: #141b24;
40
75
  --sp-color-brand-50: #eef4ff;
41
76
  --sp-color-brand-100: #d9e7ff;
42
77
  --sp-color-brand-200: #b9d2ff;
@@ -228,6 +263,7 @@
228
263
  --sp-z-index-popover: 1500;
229
264
  --sp-z-index-tooltip: 1600;
230
265
  --sp-z-index-toast: 1700;
266
+ --sp-duration-reduced: 0.01ms;
231
267
  --sp-duration-instant: 75ms;
232
268
  --sp-duration-fast: 150ms;
233
269
  --sp-duration-base: 200ms;
@@ -255,6 +291,7 @@
255
291
  --sp-focus-ring-style: solid;
256
292
  --sp-min-touch-target: 44px;
257
293
  --sp-min-text-size: 16px;
294
+ --sp-reduced-motion: 0.01ms;
258
295
  --sp-button-primary-bg: #0369a1;
259
296
  --sp-button-primary-bghover: #075985;
260
297
  --sp-button-primary-bgactive: #0c4a6e;
@@ -355,6 +392,30 @@
355
392
  --sp-animation-pulse-duration: 1200ms;
356
393
  --sp-animation-pulse-easing: cubic-bezier(0.4, 0, 0.2, 1);
357
394
  --sp-animation-pulse-keyframes: pulse;
395
+ --sp-animation-reduced-motion-fadein-duration: 0.01ms;
396
+ --sp-animation-reduced-motion-fadein-easing: linear;
397
+ --sp-animation-reduced-motion-fadein-keyframes: fade-in;
398
+ --sp-animation-reduced-motion-fadeout-duration: 0.01ms;
399
+ --sp-animation-reduced-motion-fadeout-easing: linear;
400
+ --sp-animation-reduced-motion-fadeout-keyframes: fade-out;
401
+ --sp-animation-reduced-motion-slideup-duration: 0.01ms;
402
+ --sp-animation-reduced-motion-slideup-easing: linear;
403
+ --sp-animation-reduced-motion-slideup-keyframes: slide-up;
404
+ --sp-animation-reduced-motion-slidedown-duration: 0.01ms;
405
+ --sp-animation-reduced-motion-slidedown-easing: linear;
406
+ --sp-animation-reduced-motion-slidedown-keyframes: slide-down;
407
+ --sp-animation-reduced-motion-scalein-duration: 0.01ms;
408
+ --sp-animation-reduced-motion-scalein-easing: linear;
409
+ --sp-animation-reduced-motion-scalein-keyframes: scale-in;
410
+ --sp-animation-reduced-motion-bounce-duration: 0.01ms;
411
+ --sp-animation-reduced-motion-bounce-easing: linear;
412
+ --sp-animation-reduced-motion-bounce-keyframes: bounce;
413
+ --sp-animation-reduced-motion-shake-duration: 0.01ms;
414
+ --sp-animation-reduced-motion-shake-easing: linear;
415
+ --sp-animation-reduced-motion-shake-keyframes: shake;
416
+ --sp-animation-reduced-motion-pulse-duration: 0.01ms;
417
+ --sp-animation-reduced-motion-pulse-easing: linear;
418
+ --sp-animation-reduced-motion-pulse-keyframes: pulse;
358
419
  }
359
420
  :root[data-spectre-theme="dark"] {
360
421
  --sp-surface-page: #141b24;
@@ -395,6 +456,41 @@
395
456
  --sp-icon-box-icon-success: #4ade80;
396
457
  --sp-icon-box-icon-warning: #ffc21a;
397
458
  --sp-icon-box-icon-danger: #f87171;
459
+ --sp-nav-bg: #141b24;
460
+ --sp-nav-text: #f7f8fb;
461
+ --sp-nav-link: #b7c1d4;
462
+ --sp-nav-link-hover: #5a92ff;
463
+ --sp-nav-link-active: #8ab6ff;
464
+ --sp-nav-border: #374253;
465
+ --sp-modal-bg: #222b38;
466
+ --sp-modal-shadow: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
467
+ --sp-modal-border: #374253;
468
+ --sp-modal-overlay: rgba(0, 0, 0, 0.6);
469
+ --sp-toast-success-bg: #14532d;
470
+ --sp-toast-success-text: #dcfce7;
471
+ --sp-toast-success-border: #15803d;
472
+ --sp-toast-success-icon: #4ade80;
473
+ --sp-toast-warning-bg: #734000;
474
+ --sp-toast-warning-text: #fff1c2;
475
+ --sp-toast-warning-border: #ad6800;
476
+ --sp-toast-warning-icon: #ffc21a;
477
+ --sp-toast-danger-bg: #7f1d1d;
478
+ --sp-toast-danger-text: #fee2e2;
479
+ --sp-toast-danger-border: #b91c1c;
480
+ --sp-toast-danger-icon: #f87171;
481
+ --sp-toast-info-bg: #082f49;
482
+ --sp-toast-info-text: #e0f2fe;
483
+ --sp-toast-info-border: #075985;
484
+ --sp-toast-info-icon: #38bdf8;
485
+ --sp-tooltip-bg: #f7f8fb;
486
+ --sp-tooltip-text: #141b24;
487
+ --sp-tooltip-border: #b7c1d4;
488
+ --sp-dropdown-bg: #222b38;
489
+ --sp-dropdown-border: #374253;
490
+ --sp-dropdown-item-default: transparent;
491
+ --sp-dropdown-item-hover: #374253;
492
+ --sp-dropdown-item-active: #082f49;
493
+ --sp-dropdown-item-text: #eef1f6;
398
494
  }
399
495
  @layer components {
400
496
 
@@ -411,6 +507,7 @@
411
507
  --sp-component-button-primary-bg-disabled: var(--sp-button-primary-bgdisabled);
412
508
  --sp-component-button-primary-text: var(--sp-button-primary-text);
413
509
  --sp-component-button-primary-text-disabled: var(--sp-button-primary-textdisabled);
510
+ --sp-component-button-primary-focus-visible: var(--sp-button-primary-focusvisible);
414
511
  --sp-component-button-secondary-bg: var(--sp-button-secondary-bg);
415
512
  --sp-component-button-secondary-bg-hover: var(--sp-button-secondary-bghover);
416
513
  --sp-component-button-secondary-bg-active: var(--sp-button-secondary-bgactive);
@@ -419,12 +516,14 @@
419
516
  --sp-component-button-secondary-text-disabled: var(--sp-button-secondary-textdisabled);
420
517
  --sp-component-button-secondary-border: var(--sp-button-secondary-border);
421
518
  --sp-component-button-secondary-border-disabled: var(--sp-button-secondary-borderdisabled);
519
+ --sp-component-button-secondary-focus-visible: var(--sp-button-secondary-focusvisible);
422
520
  --sp-component-button-ghost-bg: var(--sp-button-ghost-bg);
423
521
  --sp-component-button-ghost-bg-hover: var(--sp-button-ghost-bghover);
424
522
  --sp-component-button-ghost-bg-active: var(--sp-button-ghost-bgactive);
425
523
  --sp-component-button-ghost-bg-disabled: var(--sp-button-ghost-bgdisabled);
426
524
  --sp-component-button-ghost-text: var(--sp-button-ghost-text);
427
525
  --sp-component-button-ghost-text-disabled: var(--sp-button-ghost-textdisabled);
526
+ --sp-component-button-ghost-focus-visible: var(--sp-button-ghost-focusvisible);
428
527
  --sp-component-button-danger-bg: var(--sp-button-danger-bg);
429
528
  --sp-component-button-danger-bg-hover: var(--sp-button-danger-bghover);
430
529
  --sp-component-button-danger-bg-active: var(--sp-button-danger-bgactive);
@@ -447,12 +546,14 @@
447
546
  --sp-component-button-cta-text: var(--sp-button-cta-text);
448
547
  --sp-component-button-cta-text-disabled: var(--sp-button-cta-textdisabled);
449
548
  --sp-component-button-cta-shadow: var(--sp-button-cta-shadow);
549
+ --sp-component-button-cta-focus-visible: var(--sp-button-cta-focusring);
450
550
  --sp-component-button-accent-bg: var(--sp-button-accent-bg);
451
551
  --sp-component-button-accent-bg-hover: var(--sp-button-accent-bghover);
452
552
  --sp-component-button-accent-bg-active: var(--sp-button-accent-bgactive);
453
553
  --sp-component-button-accent-bg-disabled: var(--sp-button-accent-bgdisabled);
454
554
  --sp-component-button-accent-text: var(--sp-button-accent-text);
455
555
  --sp-component-button-accent-text-disabled: var(--sp-button-accent-textdisabled);
556
+ --sp-component-button-accent-focus-visible: var(--sp-button-accent-focusvisible);
456
557
 
457
558
  /* card roles */
458
559
  --sp-component-card-bg: var(--sp-surface-card);
@@ -538,10 +639,12 @@
538
639
 
539
640
  /* icon box roles */
540
641
  --sp-component-iconbox-radius: var(--sp-radius-lg);
642
+ --sp-component-iconbox-size-xs: var(--sp-space-24);
541
643
  --sp-component-iconbox-size-sm: var(--sp-space-32);
542
644
  --sp-component-iconbox-size-md: var(--sp-space-48);
543
645
  --sp-component-iconbox-size-lg: var(--sp-space-64);
544
- --sp-component-iconbox-primary-bg: var(--sp-color-brand-50);
646
+ --sp-component-iconbox-primary-bg: var(--sp-icon-box-bg);
647
+ --sp-component-iconbox-border-color: var(--sp-icon-box-border);
545
648
  --sp-component-iconbox-primary-text: var(--sp-icon-box-icon-default);
546
649
  --sp-component-iconbox-success-bg: var(--sp-color-success-50);
547
650
  --sp-component-iconbox-success-text: var(--sp-icon-box-icon-success);
@@ -697,6 +800,75 @@
697
800
  --sp-component-spinner-cta-arc: var(--sp-button-cta-bg);
698
801
  --sp-component-spinner-duration: var(--sp-duration-long);
699
802
  --sp-component-spinner-easing: var(--sp-easing-linear);
803
+
804
+ /* nav roles */
805
+ --sp-component-nav-bg: var(--sp-nav-bg);
806
+ --sp-component-nav-text: var(--sp-nav-text);
807
+ --sp-component-nav-link: var(--sp-nav-link);
808
+ --sp-component-nav-link-hover: var(--sp-nav-link-hover);
809
+ --sp-component-nav-link-active: var(--sp-nav-link-active);
810
+ --sp-component-nav-border: var(--sp-nav-border);
811
+
812
+ /* toast roles */
813
+ --sp-component-toast-radius: var(--sp-radius-lg);
814
+ --sp-component-toast-padding-x: var(--sp-space-16);
815
+ --sp-component-toast-padding-y: var(--sp-space-12);
816
+ --sp-component-toast-gap: var(--sp-space-12);
817
+ --sp-component-toast-z-index: var(--sp-z-index-toast);
818
+ --sp-component-toast-info-bg: var(--sp-toast-info-bg);
819
+ --sp-component-toast-info-text: var(--sp-toast-info-text);
820
+ --sp-component-toast-info-border: var(--sp-toast-info-border);
821
+ --sp-component-toast-info-icon: var(--sp-toast-info-icon);
822
+ --sp-component-toast-success-bg: var(--sp-toast-success-bg);
823
+ --sp-component-toast-success-text: var(--sp-toast-success-text);
824
+ --sp-component-toast-success-border: var(--sp-toast-success-border);
825
+ --sp-component-toast-success-icon: var(--sp-toast-success-icon);
826
+ --sp-component-toast-warning-bg: var(--sp-toast-warning-bg);
827
+ --sp-component-toast-warning-text: var(--sp-toast-warning-text);
828
+ --sp-component-toast-warning-border: var(--sp-toast-warning-border);
829
+ --sp-component-toast-warning-icon: var(--sp-toast-warning-icon);
830
+ --sp-component-toast-danger-bg: var(--sp-toast-danger-bg);
831
+ --sp-component-toast-danger-text: var(--sp-toast-danger-text);
832
+ --sp-component-toast-danger-border: var(--sp-toast-danger-border);
833
+ --sp-component-toast-danger-icon: var(--sp-toast-danger-icon);
834
+
835
+ /* tooltip roles */
836
+ --sp-component-tooltip-bg: var(--sp-tooltip-bg);
837
+ --sp-component-tooltip-text: var(--sp-tooltip-text);
838
+ --sp-component-tooltip-border: var(--sp-tooltip-border);
839
+ --sp-component-tooltip-radius: var(--sp-radius-md);
840
+ --sp-component-tooltip-padding-x: var(--sp-space-8);
841
+ --sp-component-tooltip-padding-y: var(--sp-space-4);
842
+ --sp-component-tooltip-offset: var(--sp-space-8);
843
+ --sp-component-tooltip-opacity: var(--sp-opacity-tooltip);
844
+ --sp-component-tooltip-z-index: var(--sp-z-index-tooltip);
845
+
846
+ /* dropdown roles */
847
+ --sp-component-dropdown-bg: var(--sp-dropdown-bg);
848
+ --sp-component-dropdown-border: var(--sp-dropdown-border);
849
+ --sp-component-dropdown-item-default: var(--sp-dropdown-item-default);
850
+ --sp-component-dropdown-item-hover: var(--sp-dropdown-item-hover);
851
+ --sp-component-dropdown-item-active: var(--sp-dropdown-item-active);
852
+ --sp-component-dropdown-item-text: var(--sp-dropdown-item-text);
853
+ --sp-component-dropdown-radius: var(--sp-radius-lg);
854
+ --sp-component-dropdown-item-radius: var(--sp-radius-sm);
855
+ --sp-component-dropdown-shadow: var(--sp-shadow-md);
856
+ --sp-component-dropdown-padding: var(--sp-space-4);
857
+ --sp-component-dropdown-offset: var(--sp-space-4);
858
+ --sp-component-dropdown-item-padding-x: var(--sp-space-12);
859
+ --sp-component-dropdown-item-padding-y: var(--sp-space-8);
860
+ --sp-component-dropdown-item-gap: var(--sp-space-8);
861
+ --sp-component-dropdown-z-index: var(--sp-z-index-dropdown);
862
+
863
+ /* modal roles */
864
+ --sp-component-modal-bg: var(--sp-modal-bg);
865
+ --sp-component-modal-border: var(--sp-modal-border);
866
+ --sp-component-modal-shadow: var(--sp-modal-shadow);
867
+ --sp-component-modal-overlay: var(--sp-modal-overlay);
868
+ --sp-component-modal-radius: var(--sp-radius-lg);
869
+ --sp-component-modal-padding: var(--sp-space-24);
870
+ --sp-component-modal-gap: var(--sp-space-16);
871
+ --sp-component-modal-z-index: var(--sp-z-index-modal);
700
872
  }
701
873
 
702
874
  /* dark mode overrides mapped from Spectre token mode definitions */
@@ -708,7 +880,8 @@
708
880
  --sp-component-badge-neutral-bg-hover: var(--sp-color-neutral-600);
709
881
  --sp-component-badge-info-bg-hover: var(--sp-color-info-700);
710
882
 
711
- --sp-component-iconbox-primary-bg: var(--sp-color-neutral-800);
883
+ --sp-component-iconbox-primary-bg: var(--sp-icon-box-bg);
884
+ --sp-component-iconbox-border-color: var(--sp-icon-box-border);
712
885
  --sp-component-iconbox-primary-text: var(--sp-color-brand-400);
713
886
  --sp-component-iconbox-success-bg: var(--sp-color-neutral-800);
714
887
  --sp-component-iconbox-success-text: var(--sp-color-success-400);
@@ -853,6 +1026,12 @@
853
1026
  box-shadow: var(--sp-component-button-shadow);
854
1027
  }
855
1028
 
1029
+ .sp-btn--primary:focus-visible,
1030
+ .sp-btn--primary.sp-btn--focus,
1031
+ .sp-btn--primary.is-focus {
1032
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-primary-focus-visible);
1033
+ }
1034
+
856
1035
  .sp-btn--primary.sp-btn--hover,
857
1036
  .sp-btn--primary.is-hover,
858
1037
  .sp-btn--primary:hover {
@@ -880,6 +1059,12 @@
880
1059
  border-color: var(--sp-component-button-secondary-border);
881
1060
  }
882
1061
 
1062
+ .sp-btn--secondary:focus-visible,
1063
+ .sp-btn--secondary.sp-btn--focus,
1064
+ .sp-btn--secondary.is-focus {
1065
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-secondary-focus-visible);
1066
+ }
1067
+
883
1068
  .sp-btn--secondary.sp-btn--hover,
884
1069
  .sp-btn--secondary.is-hover,
885
1070
  .sp-btn--secondary:hover {
@@ -906,6 +1091,12 @@
906
1091
  color: var(--sp-component-button-ghost-text);
907
1092
  }
908
1093
 
1094
+ .sp-btn--ghost:focus-visible,
1095
+ .sp-btn--ghost.sp-btn--focus,
1096
+ .sp-btn--ghost.is-focus {
1097
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-ghost-focus-visible);
1098
+ }
1099
+
909
1100
  .sp-btn--ghost.sp-btn--hover,
910
1101
  .sp-btn--ghost.is-hover,
911
1102
  .sp-btn--ghost:hover {
@@ -994,6 +1185,12 @@
994
1185
  box-shadow: var(--sp-component-button-cta-shadow);
995
1186
  }
996
1187
 
1188
+ .sp-btn--cta:focus-visible,
1189
+ .sp-btn--cta.sp-btn--focus,
1190
+ .sp-btn--cta.is-focus {
1191
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-cta-focus-visible);
1192
+ }
1193
+
997
1194
  .sp-btn--cta.sp-btn--hover,
998
1195
  .sp-btn--cta.is-hover,
999
1196
  .sp-btn--cta:hover {
@@ -1020,6 +1217,12 @@
1020
1217
  color: var(--sp-component-button-accent-text);
1021
1218
  }
1022
1219
 
1220
+ .sp-btn--accent:focus-visible,
1221
+ .sp-btn--accent.sp-btn--focus,
1222
+ .sp-btn--accent.is-focus {
1223
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-accent-focus-visible);
1224
+ }
1225
+
1023
1226
  .sp-btn--accent.sp-btn--hover,
1024
1227
  .sp-btn--accent.is-hover,
1025
1228
  .sp-btn--accent:hover {
@@ -1143,7 +1346,8 @@
1143
1346
  }
1144
1347
 
1145
1348
  /* State styling should not force typed text to be red/green by default */
1146
- .sp-input--error {
1349
+ .sp-input--error,
1350
+ .sp-input[aria-invalid="true"] {
1147
1351
  border-color: var(--sp-component-input-role-border-error);
1148
1352
  background-color: var(--sp-component-input-role-bg-error);
1149
1353
  color: var(--sp-component-input-role-text);
@@ -1476,7 +1680,7 @@
1476
1680
  border-radius: var(--sp-component-iconbox-radius);
1477
1681
  color: var(--sp-component-iconbox-primary-text);
1478
1682
  background-color: var(--sp-component-iconbox-primary-bg);
1479
- border: var(--sp-component-border-width) solid transparent;
1683
+ border: var(--sp-component-border-width) solid var(--sp-component-iconbox-border-color);
1480
1684
  font-family: var(--sp-font-family-sans);
1481
1685
  font-weight: var(--sp-font-md-weight);
1482
1686
  transition:
@@ -1529,6 +1733,12 @@
1529
1733
  fill: currentColor;
1530
1734
  }
1531
1735
 
1736
+ .sp-iconbox--xs {
1737
+ width: var(--sp-component-iconbox-size-xs);
1738
+ height: var(--sp-component-iconbox-size-xs);
1739
+ font-size: var(--sp-font-xs-size);
1740
+ }
1741
+
1532
1742
  .sp-iconbox--sm {
1533
1743
  width: var(--sp-component-iconbox-size-sm);
1534
1744
  height: var(--sp-component-iconbox-size-sm);
@@ -1952,19 +2162,19 @@
1952
2162
 
1953
2163
  .sp-rating--interactive:hover,
1954
2164
  .sp-rating--hover,
1955
- .is-hover {
2165
+ .sp-rating.is-hover {
1956
2166
  opacity: var(--sp-opacity-hover);
1957
2167
  }
1958
2168
 
1959
2169
  .sp-rating--interactive:active,
1960
2170
  .sp-rating--active,
1961
- .is-active {
2171
+ .sp-rating.is-active {
1962
2172
  opacity: var(--sp-opacity-active);
1963
2173
  }
1964
2174
 
1965
2175
  .sp-rating--interactive:focus-visible,
1966
2176
  .sp-rating--focus,
1967
- .is-focus {
2177
+ .sp-rating.is-focus {
1968
2178
  outline: none;
1969
2179
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
1970
2180
  }
@@ -2442,4 +2652,335 @@
2442
2652
  width: var(--sp-component-spinner-size-lg);
2443
2653
  height: var(--sp-component-spinner-size-lg);
2444
2654
  }
2655
+
2656
+ /* nav */
2657
+ .sp-nav {
2658
+ display: flex;
2659
+ align-items: center;
2660
+ justify-content: space-between;
2661
+ gap: var(--sp-space-16);
2662
+ padding: var(--sp-space-12) var(--sp-space-16);
2663
+ background-color: var(--sp-component-nav-bg);
2664
+ color: var(--sp-component-nav-text);
2665
+ font-family: var(--sp-font-family-sans);
2666
+ transition:
2667
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2668
+ color var(--sp-duration-fast) var(--sp-easing-out),
2669
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
2670
+ }
2671
+
2672
+ .sp-nav--bordered {
2673
+ border-bottom: var(--sp-component-border-width) solid var(--sp-component-nav-border);
2674
+ }
2675
+
2676
+ .sp-nav--sticky {
2677
+ position: sticky;
2678
+ top: 0;
2679
+ z-index: var(--sp-z-index-sticky);
2680
+ }
2681
+
2682
+ .sp-nav--full {
2683
+ width: 100%;
2684
+ }
2685
+
2686
+ .sp-nav__links {
2687
+ display: flex;
2688
+ align-items: center;
2689
+ gap: var(--sp-space-16);
2690
+ }
2691
+
2692
+ .sp-nav__link {
2693
+ color: var(--sp-component-nav-link);
2694
+ font-size: var(--sp-font-sm-size);
2695
+ line-height: var(--sp-font-sm-line-height);
2696
+ font-weight: var(--sp-font-sm-weight);
2697
+ text-decoration: none;
2698
+ transition: color var(--sp-duration-fast) var(--sp-easing-out);
2699
+ }
2700
+
2701
+ .sp-nav__link:hover,
2702
+ .sp-nav__link--hover,
2703
+ .sp-nav__link.is-hover {
2704
+ color: var(--sp-component-nav-link-hover);
2705
+ }
2706
+
2707
+ .sp-nav__link:focus-visible,
2708
+ .sp-nav__link--focus,
2709
+ .sp-nav__link.is-focus {
2710
+ outline: none;
2711
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2712
+ }
2713
+
2714
+ .sp-nav__link--active,
2715
+ .sp-nav__link.is-active {
2716
+ color: var(--sp-component-nav-link-active);
2717
+ }
2718
+
2719
+ .sp-nav__link--disabled,
2720
+ .sp-nav__link[aria-disabled="true"] {
2721
+ pointer-events: none;
2722
+ opacity: var(--sp-opacity-disabled);
2723
+ }
2724
+
2725
+ /* TOASTS ----------------------------------------------------------------- */
2726
+ .sp-toast {
2727
+ display: flex;
2728
+ align-items: flex-start;
2729
+ gap: var(--sp-component-toast-gap);
2730
+ border-radius: var(--sp-component-toast-radius);
2731
+ border: var(--sp-component-border-width) solid transparent;
2732
+ padding: var(--sp-component-toast-padding-y) var(--sp-component-toast-padding-x);
2733
+ font-family: var(--sp-font-family-sans);
2734
+ font-size: var(--sp-font-sm-size);
2735
+ line-height: var(--sp-font-sm-line-height);
2736
+ z-index: var(--sp-component-toast-z-index);
2737
+ transition:
2738
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2739
+ color var(--sp-duration-fast) var(--sp-easing-out),
2740
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
2741
+ }
2742
+
2743
+ .sp-toast--dismissed {
2744
+ display: none;
2745
+ }
2746
+
2747
+ .sp-toast--full {
2748
+ width: 100%;
2749
+ }
2750
+
2751
+ .sp-toast--info {
2752
+ background-color: var(--sp-component-toast-info-bg);
2753
+ color: var(--sp-component-toast-info-text);
2754
+ border-color: var(--sp-component-toast-info-border);
2755
+ }
2756
+
2757
+ .sp-toast--success {
2758
+ background-color: var(--sp-component-toast-success-bg);
2759
+ color: var(--sp-component-toast-success-text);
2760
+ border-color: var(--sp-component-toast-success-border);
2761
+ }
2762
+
2763
+ .sp-toast--warning {
2764
+ background-color: var(--sp-component-toast-warning-bg);
2765
+ color: var(--sp-component-toast-warning-text);
2766
+ border-color: var(--sp-component-toast-warning-border);
2767
+ }
2768
+
2769
+ .sp-toast--danger {
2770
+ background-color: var(--sp-component-toast-danger-bg);
2771
+ color: var(--sp-component-toast-danger-text);
2772
+ border-color: var(--sp-component-toast-danger-border);
2773
+ }
2774
+
2775
+ .sp-toast__icon {
2776
+ flex-shrink: 0;
2777
+ line-height: var(--sp-font-sm-line-height);
2778
+ }
2779
+
2780
+ .sp-toast__icon--info {
2781
+ color: var(--sp-component-toast-info-icon);
2782
+ }
2783
+
2784
+ .sp-toast__icon--success {
2785
+ color: var(--sp-component-toast-success-icon);
2786
+ }
2787
+
2788
+ .sp-toast__icon--warning {
2789
+ color: var(--sp-component-toast-warning-icon);
2790
+ }
2791
+
2792
+ .sp-toast__icon--danger {
2793
+ color: var(--sp-component-toast-danger-icon);
2794
+ }
2795
+
2796
+ /* TOOLTIPS --------------------------------------------------------------- */
2797
+ .sp-tooltip {
2798
+ position: absolute;
2799
+ display: inline-flex;
2800
+ align-items: center;
2801
+ justify-content: center;
2802
+ border-radius: var(--sp-component-tooltip-radius);
2803
+ border: var(--sp-component-border-width) solid var(--sp-component-tooltip-border);
2804
+ background-color: var(--sp-component-tooltip-bg);
2805
+ color: var(--sp-component-tooltip-text);
2806
+ padding: var(--sp-component-tooltip-padding-y) var(--sp-component-tooltip-padding-x);
2807
+ font-family: var(--sp-font-family-sans);
2808
+ font-size: var(--sp-font-xs-size);
2809
+ line-height: var(--sp-font-xs-line-height);
2810
+ white-space: nowrap;
2811
+ opacity: var(--sp-component-tooltip-opacity);
2812
+ z-index: var(--sp-component-tooltip-z-index);
2813
+ pointer-events: none;
2814
+ visibility: hidden;
2815
+ transition:
2816
+ opacity var(--sp-duration-fast) var(--sp-easing-out),
2817
+ visibility var(--sp-duration-fast) var(--sp-easing-out);
2818
+ }
2819
+
2820
+ .sp-tooltip--visible {
2821
+ visibility: visible;
2822
+ }
2823
+
2824
+ .sp-tooltip--top {
2825
+ bottom: 100%;
2826
+ left: 50%;
2827
+ transform: translate(-50%, calc(-1 * var(--sp-component-tooltip-offset)));
2828
+ }
2829
+
2830
+ .sp-tooltip--bottom {
2831
+ top: 100%;
2832
+ left: 50%;
2833
+ transform: translate(-50%, var(--sp-component-tooltip-offset));
2834
+ }
2835
+
2836
+ .sp-tooltip--left {
2837
+ right: 100%;
2838
+ top: 50%;
2839
+ transform: translate(calc(-1 * var(--sp-component-tooltip-offset)), -50%);
2840
+ }
2841
+
2842
+ .sp-tooltip--right {
2843
+ left: 100%;
2844
+ top: 50%;
2845
+ transform: translate(var(--sp-component-tooltip-offset), -50%);
2846
+ }
2847
+
2848
+ /* DROPDOWNS ---------------------------------------------------------------- */
2849
+ .sp-dropdown {
2850
+ position: relative;
2851
+ display: inline-block;
2852
+ }
2853
+
2854
+ .sp-dropdown--full {
2855
+ display: block;
2856
+ width: 100%;
2857
+ }
2858
+
2859
+ .sp-dropdown__menu {
2860
+ position: absolute;
2861
+ display: none;
2862
+ flex-direction: column;
2863
+ min-width: 100%;
2864
+ padding: var(--sp-component-dropdown-padding);
2865
+ background-color: var(--sp-component-dropdown-bg);
2866
+ border: var(--sp-component-border-width) solid var(--sp-component-dropdown-border);
2867
+ border-radius: var(--sp-component-dropdown-radius);
2868
+ box-shadow: var(--sp-component-dropdown-shadow);
2869
+ z-index: var(--sp-component-dropdown-z-index);
2870
+ font-family: var(--sp-font-family-sans);
2871
+ }
2872
+
2873
+ .sp-dropdown__menu--open {
2874
+ display: flex;
2875
+ }
2876
+
2877
+ .sp-dropdown__menu--bottom-start {
2878
+ top: 100%;
2879
+ left: 0;
2880
+ margin-top: var(--sp-component-dropdown-offset);
2881
+ }
2882
+
2883
+ .sp-dropdown__menu--bottom-end {
2884
+ top: 100%;
2885
+ right: 0;
2886
+ margin-top: var(--sp-component-dropdown-offset);
2887
+ }
2888
+
2889
+ .sp-dropdown__menu--top-start {
2890
+ bottom: 100%;
2891
+ left: 0;
2892
+ margin-bottom: var(--sp-component-dropdown-offset);
2893
+ }
2894
+
2895
+ .sp-dropdown__menu--top-end {
2896
+ bottom: 100%;
2897
+ right: 0;
2898
+ margin-bottom: var(--sp-component-dropdown-offset);
2899
+ }
2900
+
2901
+ .sp-dropdown__item {
2902
+ display: flex;
2903
+ align-items: center;
2904
+ gap: var(--sp-component-dropdown-item-gap);
2905
+ padding: var(--sp-component-dropdown-item-padding-y) var(--sp-component-dropdown-item-padding-x);
2906
+ border-radius: var(--sp-component-dropdown-item-radius);
2907
+ background-color: var(--sp-component-dropdown-item-default);
2908
+ color: var(--sp-component-dropdown-item-text);
2909
+ font-size: var(--sp-font-sm-size);
2910
+ line-height: var(--sp-font-sm-line-height);
2911
+ text-decoration: none;
2912
+ cursor: pointer;
2913
+ transition:
2914
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2915
+ color var(--sp-duration-fast) var(--sp-easing-out),
2916
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2917
+ }
2918
+
2919
+ .sp-dropdown__item:hover,
2920
+ .sp-dropdown__item--hover,
2921
+ .sp-dropdown__item.is-hover {
2922
+ background-color: var(--sp-component-dropdown-item-hover);
2923
+ }
2924
+
2925
+ .sp-dropdown__item:focus-visible,
2926
+ .sp-dropdown__item--focus,
2927
+ .sp-dropdown__item.is-focus {
2928
+ outline: none;
2929
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2930
+ }
2931
+
2932
+ .sp-dropdown__item--active,
2933
+ .sp-dropdown__item.is-active {
2934
+ background-color: var(--sp-component-dropdown-item-active);
2935
+ }
2936
+
2937
+ .sp-dropdown__item--disabled,
2938
+ .sp-dropdown__item[aria-disabled="true"] {
2939
+ pointer-events: none;
2940
+ opacity: var(--sp-opacity-disabled);
2941
+ }
2942
+
2943
+ /* MODALS ------------------------------------------------------------------- */
2944
+ .sp-modal-overlay {
2945
+ position: fixed;
2946
+ inset: 0;
2947
+ display: none;
2948
+ align-items: center;
2949
+ justify-content: center;
2950
+ background-color: var(--sp-component-modal-overlay);
2951
+ z-index: var(--sp-component-modal-z-index);
2952
+ }
2953
+
2954
+ .sp-modal-overlay--open {
2955
+ display: flex;
2956
+ }
2957
+
2958
+ .sp-modal {
2959
+ display: flex;
2960
+ flex-direction: column;
2961
+ gap: var(--sp-component-modal-gap);
2962
+ max-width: 100%;
2963
+ max-height: 100%;
2964
+ overflow: auto;
2965
+ padding: var(--sp-component-modal-padding);
2966
+ background-color: var(--sp-component-modal-bg);
2967
+ border: var(--sp-component-border-width) solid var(--sp-component-modal-border);
2968
+ border-radius: var(--sp-component-modal-radius);
2969
+ box-shadow: var(--sp-component-modal-shadow);
2970
+ font-family: var(--sp-font-family-sans);
2971
+ opacity: 0;
2972
+ transform: scale(0.95);
2973
+ transition:
2974
+ opacity var(--sp-duration-fast) var(--sp-easing-out),
2975
+ transform var(--sp-duration-fast) var(--sp-easing-out);
2976
+ }
2977
+
2978
+ .sp-modal--open {
2979
+ opacity: 1;
2980
+ transform: scale(1);
2981
+ }
2982
+
2983
+ .sp-modal--full {
2984
+ width: 100%;
2985
+ }
2445
2986
  }