@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.
package/dist/index.css CHANGED
@@ -41,6 +41,41 @@
41
41
  --sp-icon-box-icon-success: #16a34a;
42
42
  --sp-icon-box-icon-warning: #d48806;
43
43
  --sp-icon-box-icon-danger: #dc2626;
44
+ --sp-nav-bg: #ffffff;
45
+ --sp-nav-text: #141b24;
46
+ --sp-nav-link: #374253;
47
+ --sp-nav-link-hover: #1f57db;
48
+ --sp-nav-link-active: #1946b4;
49
+ --sp-nav-border: #d9dfeb;
50
+ --sp-modal-bg: #ffffff;
51
+ --sp-modal-shadow: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
52
+ --sp-modal-border: #d9dfeb;
53
+ --sp-modal-overlay: rgba(0, 0, 0, 0.6);
54
+ --sp-toast-success-bg: #f0fdf4;
55
+ --sp-toast-success-text: #166534;
56
+ --sp-toast-success-border: #bbf7d0;
57
+ --sp-toast-success-icon: #16a34a;
58
+ --sp-toast-warning-bg: #fffbea;
59
+ --sp-toast-warning-text: #8f5200;
60
+ --sp-toast-warning-border: #ffe08a;
61
+ --sp-toast-warning-icon: #d48806;
62
+ --sp-toast-danger-bg: #fef2f2;
63
+ --sp-toast-danger-text: #991b1b;
64
+ --sp-toast-danger-border: #fecaca;
65
+ --sp-toast-danger-icon: #dc2626;
66
+ --sp-toast-info-bg: #f0f9ff;
67
+ --sp-toast-info-text: #0c4a6e;
68
+ --sp-toast-info-border: #bae6fd;
69
+ --sp-toast-info-icon: #0369a1;
70
+ --sp-tooltip-bg: #141b24;
71
+ --sp-tooltip-text: #ffffff;
72
+ --sp-tooltip-border: #374253;
73
+ --sp-dropdown-bg: #ffffff;
74
+ --sp-dropdown-border: #d9dfeb;
75
+ --sp-dropdown-item-default: transparent;
76
+ --sp-dropdown-item-hover: #eef1f6;
77
+ --sp-dropdown-item-active: #f0f9ff;
78
+ --sp-dropdown-item-text: #141b24;
44
79
  --sp-color-brand-50: #eef4ff;
45
80
  --sp-color-brand-100: #d9e7ff;
46
81
  --sp-color-brand-200: #b9d2ff;
@@ -232,6 +267,7 @@
232
267
  --sp-z-index-popover: 1500;
233
268
  --sp-z-index-tooltip: 1600;
234
269
  --sp-z-index-toast: 1700;
270
+ --sp-duration-reduced: 0.01ms;
235
271
  --sp-duration-instant: 75ms;
236
272
  --sp-duration-fast: 150ms;
237
273
  --sp-duration-base: 200ms;
@@ -259,6 +295,7 @@
259
295
  --sp-focus-ring-style: solid;
260
296
  --sp-min-touch-target: 44px;
261
297
  --sp-min-text-size: 16px;
298
+ --sp-reduced-motion: 0.01ms;
262
299
  --sp-button-primary-bg: #0369a1;
263
300
  --sp-button-primary-bghover: #075985;
264
301
  --sp-button-primary-bgactive: #0c4a6e;
@@ -359,6 +396,30 @@
359
396
  --sp-animation-pulse-duration: 1200ms;
360
397
  --sp-animation-pulse-easing: cubic-bezier(0.4, 0, 0.2, 1);
361
398
  --sp-animation-pulse-keyframes: pulse;
399
+ --sp-animation-reduced-motion-fadein-duration: 0.01ms;
400
+ --sp-animation-reduced-motion-fadein-easing: linear;
401
+ --sp-animation-reduced-motion-fadein-keyframes: fade-in;
402
+ --sp-animation-reduced-motion-fadeout-duration: 0.01ms;
403
+ --sp-animation-reduced-motion-fadeout-easing: linear;
404
+ --sp-animation-reduced-motion-fadeout-keyframes: fade-out;
405
+ --sp-animation-reduced-motion-slideup-duration: 0.01ms;
406
+ --sp-animation-reduced-motion-slideup-easing: linear;
407
+ --sp-animation-reduced-motion-slideup-keyframes: slide-up;
408
+ --sp-animation-reduced-motion-slidedown-duration: 0.01ms;
409
+ --sp-animation-reduced-motion-slidedown-easing: linear;
410
+ --sp-animation-reduced-motion-slidedown-keyframes: slide-down;
411
+ --sp-animation-reduced-motion-scalein-duration: 0.01ms;
412
+ --sp-animation-reduced-motion-scalein-easing: linear;
413
+ --sp-animation-reduced-motion-scalein-keyframes: scale-in;
414
+ --sp-animation-reduced-motion-bounce-duration: 0.01ms;
415
+ --sp-animation-reduced-motion-bounce-easing: linear;
416
+ --sp-animation-reduced-motion-bounce-keyframes: bounce;
417
+ --sp-animation-reduced-motion-shake-duration: 0.01ms;
418
+ --sp-animation-reduced-motion-shake-easing: linear;
419
+ --sp-animation-reduced-motion-shake-keyframes: shake;
420
+ --sp-animation-reduced-motion-pulse-duration: 0.01ms;
421
+ --sp-animation-reduced-motion-pulse-easing: linear;
422
+ --sp-animation-reduced-motion-pulse-keyframes: pulse;
362
423
  }
363
424
  :root[data-spectre-theme="dark"] {
364
425
  --sp-surface-page: #141b24;
@@ -399,6 +460,41 @@
399
460
  --sp-icon-box-icon-success: #4ade80;
400
461
  --sp-icon-box-icon-warning: #ffc21a;
401
462
  --sp-icon-box-icon-danger: #f87171;
463
+ --sp-nav-bg: #141b24;
464
+ --sp-nav-text: #f7f8fb;
465
+ --sp-nav-link: #b7c1d4;
466
+ --sp-nav-link-hover: #5a92ff;
467
+ --sp-nav-link-active: #8ab6ff;
468
+ --sp-nav-border: #374253;
469
+ --sp-modal-bg: #222b38;
470
+ --sp-modal-shadow: 0 20px 48px -12px rgba(0, 0, 0, 0.20);
471
+ --sp-modal-border: #374253;
472
+ --sp-modal-overlay: rgba(0, 0, 0, 0.6);
473
+ --sp-toast-success-bg: #14532d;
474
+ --sp-toast-success-text: #dcfce7;
475
+ --sp-toast-success-border: #15803d;
476
+ --sp-toast-success-icon: #4ade80;
477
+ --sp-toast-warning-bg: #734000;
478
+ --sp-toast-warning-text: #fff1c2;
479
+ --sp-toast-warning-border: #ad6800;
480
+ --sp-toast-warning-icon: #ffc21a;
481
+ --sp-toast-danger-bg: #7f1d1d;
482
+ --sp-toast-danger-text: #fee2e2;
483
+ --sp-toast-danger-border: #b91c1c;
484
+ --sp-toast-danger-icon: #f87171;
485
+ --sp-toast-info-bg: #082f49;
486
+ --sp-toast-info-text: #e0f2fe;
487
+ --sp-toast-info-border: #075985;
488
+ --sp-toast-info-icon: #38bdf8;
489
+ --sp-tooltip-bg: #f7f8fb;
490
+ --sp-tooltip-text: #141b24;
491
+ --sp-tooltip-border: #b7c1d4;
492
+ --sp-dropdown-bg: #222b38;
493
+ --sp-dropdown-border: #374253;
494
+ --sp-dropdown-item-default: transparent;
495
+ --sp-dropdown-item-hover: #374253;
496
+ --sp-dropdown-item-active: #082f49;
497
+ --sp-dropdown-item-text: #eef1f6;
402
498
  }
403
499
  @layer base {
404
500
 
@@ -481,6 +577,7 @@
481
577
  --sp-component-button-primary-bg-disabled: var(--sp-button-primary-bgdisabled);
482
578
  --sp-component-button-primary-text: var(--sp-button-primary-text);
483
579
  --sp-component-button-primary-text-disabled: var(--sp-button-primary-textdisabled);
580
+ --sp-component-button-primary-focus-visible: var(--sp-button-primary-focusvisible);
484
581
  --sp-component-button-secondary-bg: var(--sp-button-secondary-bg);
485
582
  --sp-component-button-secondary-bg-hover: var(--sp-button-secondary-bghover);
486
583
  --sp-component-button-secondary-bg-active: var(--sp-button-secondary-bgactive);
@@ -489,12 +586,14 @@
489
586
  --sp-component-button-secondary-text-disabled: var(--sp-button-secondary-textdisabled);
490
587
  --sp-component-button-secondary-border: var(--sp-button-secondary-border);
491
588
  --sp-component-button-secondary-border-disabled: var(--sp-button-secondary-borderdisabled);
589
+ --sp-component-button-secondary-focus-visible: var(--sp-button-secondary-focusvisible);
492
590
  --sp-component-button-ghost-bg: var(--sp-button-ghost-bg);
493
591
  --sp-component-button-ghost-bg-hover: var(--sp-button-ghost-bghover);
494
592
  --sp-component-button-ghost-bg-active: var(--sp-button-ghost-bgactive);
495
593
  --sp-component-button-ghost-bg-disabled: var(--sp-button-ghost-bgdisabled);
496
594
  --sp-component-button-ghost-text: var(--sp-button-ghost-text);
497
595
  --sp-component-button-ghost-text-disabled: var(--sp-button-ghost-textdisabled);
596
+ --sp-component-button-ghost-focus-visible: var(--sp-button-ghost-focusvisible);
498
597
  --sp-component-button-danger-bg: var(--sp-button-danger-bg);
499
598
  --sp-component-button-danger-bg-hover: var(--sp-button-danger-bghover);
500
599
  --sp-component-button-danger-bg-active: var(--sp-button-danger-bgactive);
@@ -517,12 +616,14 @@
517
616
  --sp-component-button-cta-text: var(--sp-button-cta-text);
518
617
  --sp-component-button-cta-text-disabled: var(--sp-button-cta-textdisabled);
519
618
  --sp-component-button-cta-shadow: var(--sp-button-cta-shadow);
619
+ --sp-component-button-cta-focus-visible: var(--sp-button-cta-focusring);
520
620
  --sp-component-button-accent-bg: var(--sp-button-accent-bg);
521
621
  --sp-component-button-accent-bg-hover: var(--sp-button-accent-bghover);
522
622
  --sp-component-button-accent-bg-active: var(--sp-button-accent-bgactive);
523
623
  --sp-component-button-accent-bg-disabled: var(--sp-button-accent-bgdisabled);
524
624
  --sp-component-button-accent-text: var(--sp-button-accent-text);
525
625
  --sp-component-button-accent-text-disabled: var(--sp-button-accent-textdisabled);
626
+ --sp-component-button-accent-focus-visible: var(--sp-button-accent-focusvisible);
526
627
 
527
628
  /* card roles */
528
629
  --sp-component-card-bg: var(--sp-surface-card);
@@ -608,10 +709,12 @@
608
709
 
609
710
  /* icon box roles */
610
711
  --sp-component-iconbox-radius: var(--sp-radius-lg);
712
+ --sp-component-iconbox-size-xs: var(--sp-space-24);
611
713
  --sp-component-iconbox-size-sm: var(--sp-space-32);
612
714
  --sp-component-iconbox-size-md: var(--sp-space-48);
613
715
  --sp-component-iconbox-size-lg: var(--sp-space-64);
614
- --sp-component-iconbox-primary-bg: var(--sp-color-brand-50);
716
+ --sp-component-iconbox-primary-bg: var(--sp-icon-box-bg);
717
+ --sp-component-iconbox-border-color: var(--sp-icon-box-border);
615
718
  --sp-component-iconbox-primary-text: var(--sp-icon-box-icon-default);
616
719
  --sp-component-iconbox-success-bg: var(--sp-color-success-50);
617
720
  --sp-component-iconbox-success-text: var(--sp-icon-box-icon-success);
@@ -767,6 +870,75 @@
767
870
  --sp-component-spinner-cta-arc: var(--sp-button-cta-bg);
768
871
  --sp-component-spinner-duration: var(--sp-duration-long);
769
872
  --sp-component-spinner-easing: var(--sp-easing-linear);
873
+
874
+ /* nav roles */
875
+ --sp-component-nav-bg: var(--sp-nav-bg);
876
+ --sp-component-nav-text: var(--sp-nav-text);
877
+ --sp-component-nav-link: var(--sp-nav-link);
878
+ --sp-component-nav-link-hover: var(--sp-nav-link-hover);
879
+ --sp-component-nav-link-active: var(--sp-nav-link-active);
880
+ --sp-component-nav-border: var(--sp-nav-border);
881
+
882
+ /* toast roles */
883
+ --sp-component-toast-radius: var(--sp-radius-lg);
884
+ --sp-component-toast-padding-x: var(--sp-space-16);
885
+ --sp-component-toast-padding-y: var(--sp-space-12);
886
+ --sp-component-toast-gap: var(--sp-space-12);
887
+ --sp-component-toast-z-index: var(--sp-z-index-toast);
888
+ --sp-component-toast-info-bg: var(--sp-toast-info-bg);
889
+ --sp-component-toast-info-text: var(--sp-toast-info-text);
890
+ --sp-component-toast-info-border: var(--sp-toast-info-border);
891
+ --sp-component-toast-info-icon: var(--sp-toast-info-icon);
892
+ --sp-component-toast-success-bg: var(--sp-toast-success-bg);
893
+ --sp-component-toast-success-text: var(--sp-toast-success-text);
894
+ --sp-component-toast-success-border: var(--sp-toast-success-border);
895
+ --sp-component-toast-success-icon: var(--sp-toast-success-icon);
896
+ --sp-component-toast-warning-bg: var(--sp-toast-warning-bg);
897
+ --sp-component-toast-warning-text: var(--sp-toast-warning-text);
898
+ --sp-component-toast-warning-border: var(--sp-toast-warning-border);
899
+ --sp-component-toast-warning-icon: var(--sp-toast-warning-icon);
900
+ --sp-component-toast-danger-bg: var(--sp-toast-danger-bg);
901
+ --sp-component-toast-danger-text: var(--sp-toast-danger-text);
902
+ --sp-component-toast-danger-border: var(--sp-toast-danger-border);
903
+ --sp-component-toast-danger-icon: var(--sp-toast-danger-icon);
904
+
905
+ /* tooltip roles */
906
+ --sp-component-tooltip-bg: var(--sp-tooltip-bg);
907
+ --sp-component-tooltip-text: var(--sp-tooltip-text);
908
+ --sp-component-tooltip-border: var(--sp-tooltip-border);
909
+ --sp-component-tooltip-radius: var(--sp-radius-md);
910
+ --sp-component-tooltip-padding-x: var(--sp-space-8);
911
+ --sp-component-tooltip-padding-y: var(--sp-space-4);
912
+ --sp-component-tooltip-offset: var(--sp-space-8);
913
+ --sp-component-tooltip-opacity: var(--sp-opacity-tooltip);
914
+ --sp-component-tooltip-z-index: var(--sp-z-index-tooltip);
915
+
916
+ /* dropdown roles */
917
+ --sp-component-dropdown-bg: var(--sp-dropdown-bg);
918
+ --sp-component-dropdown-border: var(--sp-dropdown-border);
919
+ --sp-component-dropdown-item-default: var(--sp-dropdown-item-default);
920
+ --sp-component-dropdown-item-hover: var(--sp-dropdown-item-hover);
921
+ --sp-component-dropdown-item-active: var(--sp-dropdown-item-active);
922
+ --sp-component-dropdown-item-text: var(--sp-dropdown-item-text);
923
+ --sp-component-dropdown-radius: var(--sp-radius-lg);
924
+ --sp-component-dropdown-item-radius: var(--sp-radius-sm);
925
+ --sp-component-dropdown-shadow: var(--sp-shadow-md);
926
+ --sp-component-dropdown-padding: var(--sp-space-4);
927
+ --sp-component-dropdown-offset: var(--sp-space-4);
928
+ --sp-component-dropdown-item-padding-x: var(--sp-space-12);
929
+ --sp-component-dropdown-item-padding-y: var(--sp-space-8);
930
+ --sp-component-dropdown-item-gap: var(--sp-space-8);
931
+ --sp-component-dropdown-z-index: var(--sp-z-index-dropdown);
932
+
933
+ /* modal roles */
934
+ --sp-component-modal-bg: var(--sp-modal-bg);
935
+ --sp-component-modal-border: var(--sp-modal-border);
936
+ --sp-component-modal-shadow: var(--sp-modal-shadow);
937
+ --sp-component-modal-overlay: var(--sp-modal-overlay);
938
+ --sp-component-modal-radius: var(--sp-radius-lg);
939
+ --sp-component-modal-padding: var(--sp-space-24);
940
+ --sp-component-modal-gap: var(--sp-space-16);
941
+ --sp-component-modal-z-index: var(--sp-z-index-modal);
770
942
  }
771
943
 
772
944
  /* dark mode overrides mapped from Spectre token mode definitions */
@@ -778,7 +950,8 @@
778
950
  --sp-component-badge-neutral-bg-hover: var(--sp-color-neutral-600);
779
951
  --sp-component-badge-info-bg-hover: var(--sp-color-info-700);
780
952
 
781
- --sp-component-iconbox-primary-bg: var(--sp-color-neutral-800);
953
+ --sp-component-iconbox-primary-bg: var(--sp-icon-box-bg);
954
+ --sp-component-iconbox-border-color: var(--sp-icon-box-border);
782
955
  --sp-component-iconbox-primary-text: var(--sp-color-brand-400);
783
956
  --sp-component-iconbox-success-bg: var(--sp-color-neutral-800);
784
957
  --sp-component-iconbox-success-text: var(--sp-color-success-400);
@@ -923,6 +1096,12 @@
923
1096
  box-shadow: var(--sp-component-button-shadow);
924
1097
  }
925
1098
 
1099
+ .sp-btn--primary:focus-visible,
1100
+ .sp-btn--primary.sp-btn--focus,
1101
+ .sp-btn--primary.is-focus {
1102
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-primary-focus-visible);
1103
+ }
1104
+
926
1105
  .sp-btn--primary.sp-btn--hover,
927
1106
  .sp-btn--primary.is-hover,
928
1107
  .sp-btn--primary:hover {
@@ -950,6 +1129,12 @@
950
1129
  border-color: var(--sp-component-button-secondary-border);
951
1130
  }
952
1131
 
1132
+ .sp-btn--secondary:focus-visible,
1133
+ .sp-btn--secondary.sp-btn--focus,
1134
+ .sp-btn--secondary.is-focus {
1135
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-secondary-focus-visible);
1136
+ }
1137
+
953
1138
  .sp-btn--secondary.sp-btn--hover,
954
1139
  .sp-btn--secondary.is-hover,
955
1140
  .sp-btn--secondary:hover {
@@ -976,6 +1161,12 @@
976
1161
  color: var(--sp-component-button-ghost-text);
977
1162
  }
978
1163
 
1164
+ .sp-btn--ghost:focus-visible,
1165
+ .sp-btn--ghost.sp-btn--focus,
1166
+ .sp-btn--ghost.is-focus {
1167
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-ghost-focus-visible);
1168
+ }
1169
+
979
1170
  .sp-btn--ghost.sp-btn--hover,
980
1171
  .sp-btn--ghost.is-hover,
981
1172
  .sp-btn--ghost:hover {
@@ -1064,6 +1255,12 @@
1064
1255
  box-shadow: var(--sp-component-button-cta-shadow);
1065
1256
  }
1066
1257
 
1258
+ .sp-btn--cta:focus-visible,
1259
+ .sp-btn--cta.sp-btn--focus,
1260
+ .sp-btn--cta.is-focus {
1261
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-cta-focus-visible);
1262
+ }
1263
+
1067
1264
  .sp-btn--cta.sp-btn--hover,
1068
1265
  .sp-btn--cta.is-hover,
1069
1266
  .sp-btn--cta:hover {
@@ -1090,6 +1287,12 @@
1090
1287
  color: var(--sp-component-button-accent-text);
1091
1288
  }
1092
1289
 
1290
+ .sp-btn--accent:focus-visible,
1291
+ .sp-btn--accent.sp-btn--focus,
1292
+ .sp-btn--accent.is-focus {
1293
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-button-accent-focus-visible);
1294
+ }
1295
+
1093
1296
  .sp-btn--accent.sp-btn--hover,
1094
1297
  .sp-btn--accent.is-hover,
1095
1298
  .sp-btn--accent:hover {
@@ -1213,7 +1416,8 @@
1213
1416
  }
1214
1417
 
1215
1418
  /* State styling should not force typed text to be red/green by default */
1216
- .sp-input--error {
1419
+ .sp-input--error,
1420
+ .sp-input[aria-invalid="true"] {
1217
1421
  border-color: var(--sp-component-input-role-border-error);
1218
1422
  background-color: var(--sp-component-input-role-bg-error);
1219
1423
  color: var(--sp-component-input-role-text);
@@ -1546,7 +1750,7 @@
1546
1750
  border-radius: var(--sp-component-iconbox-radius);
1547
1751
  color: var(--sp-component-iconbox-primary-text);
1548
1752
  background-color: var(--sp-component-iconbox-primary-bg);
1549
- border: var(--sp-component-border-width) solid transparent;
1753
+ border: var(--sp-component-border-width) solid var(--sp-component-iconbox-border-color);
1550
1754
  font-family: var(--sp-font-family-sans);
1551
1755
  font-weight: var(--sp-font-md-weight);
1552
1756
  transition:
@@ -1599,6 +1803,12 @@
1599
1803
  fill: currentColor;
1600
1804
  }
1601
1805
 
1806
+ .sp-iconbox--xs {
1807
+ width: var(--sp-component-iconbox-size-xs);
1808
+ height: var(--sp-component-iconbox-size-xs);
1809
+ font-size: var(--sp-font-xs-size);
1810
+ }
1811
+
1602
1812
  .sp-iconbox--sm {
1603
1813
  width: var(--sp-component-iconbox-size-sm);
1604
1814
  height: var(--sp-component-iconbox-size-sm);
@@ -2022,19 +2232,19 @@
2022
2232
 
2023
2233
  .sp-rating--interactive:hover,
2024
2234
  .sp-rating--hover,
2025
- .is-hover {
2235
+ .sp-rating.is-hover {
2026
2236
  opacity: var(--sp-opacity-hover);
2027
2237
  }
2028
2238
 
2029
2239
  .sp-rating--interactive:active,
2030
2240
  .sp-rating--active,
2031
- .is-active {
2241
+ .sp-rating.is-active {
2032
2242
  opacity: var(--sp-opacity-active);
2033
2243
  }
2034
2244
 
2035
2245
  .sp-rating--interactive:focus-visible,
2036
2246
  .sp-rating--focus,
2037
- .is-focus {
2247
+ .sp-rating.is-focus {
2038
2248
  outline: none;
2039
2249
  box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2040
2250
  }
@@ -2512,6 +2722,337 @@
2512
2722
  width: var(--sp-component-spinner-size-lg);
2513
2723
  height: var(--sp-component-spinner-size-lg);
2514
2724
  }
2725
+
2726
+ /* nav */
2727
+ .sp-nav {
2728
+ display: flex;
2729
+ align-items: center;
2730
+ justify-content: space-between;
2731
+ gap: var(--sp-space-16);
2732
+ padding: var(--sp-space-12) var(--sp-space-16);
2733
+ background-color: var(--sp-component-nav-bg);
2734
+ color: var(--sp-component-nav-text);
2735
+ font-family: var(--sp-font-family-sans);
2736
+ transition:
2737
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2738
+ color var(--sp-duration-fast) var(--sp-easing-out),
2739
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
2740
+ }
2741
+
2742
+ .sp-nav--bordered {
2743
+ border-bottom: var(--sp-component-border-width) solid var(--sp-component-nav-border);
2744
+ }
2745
+
2746
+ .sp-nav--sticky {
2747
+ position: sticky;
2748
+ top: 0;
2749
+ z-index: var(--sp-z-index-sticky);
2750
+ }
2751
+
2752
+ .sp-nav--full {
2753
+ width: 100%;
2754
+ }
2755
+
2756
+ .sp-nav__links {
2757
+ display: flex;
2758
+ align-items: center;
2759
+ gap: var(--sp-space-16);
2760
+ }
2761
+
2762
+ .sp-nav__link {
2763
+ color: var(--sp-component-nav-link);
2764
+ font-size: var(--sp-font-sm-size);
2765
+ line-height: var(--sp-font-sm-line-height);
2766
+ font-weight: var(--sp-font-sm-weight);
2767
+ text-decoration: none;
2768
+ transition: color var(--sp-duration-fast) var(--sp-easing-out);
2769
+ }
2770
+
2771
+ .sp-nav__link:hover,
2772
+ .sp-nav__link--hover,
2773
+ .sp-nav__link.is-hover {
2774
+ color: var(--sp-component-nav-link-hover);
2775
+ }
2776
+
2777
+ .sp-nav__link:focus-visible,
2778
+ .sp-nav__link--focus,
2779
+ .sp-nav__link.is-focus {
2780
+ outline: none;
2781
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
2782
+ }
2783
+
2784
+ .sp-nav__link--active,
2785
+ .sp-nav__link.is-active {
2786
+ color: var(--sp-component-nav-link-active);
2787
+ }
2788
+
2789
+ .sp-nav__link--disabled,
2790
+ .sp-nav__link[aria-disabled="true"] {
2791
+ pointer-events: none;
2792
+ opacity: var(--sp-opacity-disabled);
2793
+ }
2794
+
2795
+ /* TOASTS ----------------------------------------------------------------- */
2796
+ .sp-toast {
2797
+ display: flex;
2798
+ align-items: flex-start;
2799
+ gap: var(--sp-component-toast-gap);
2800
+ border-radius: var(--sp-component-toast-radius);
2801
+ border: var(--sp-component-border-width) solid transparent;
2802
+ padding: var(--sp-component-toast-padding-y) var(--sp-component-toast-padding-x);
2803
+ font-family: var(--sp-font-family-sans);
2804
+ font-size: var(--sp-font-sm-size);
2805
+ line-height: var(--sp-font-sm-line-height);
2806
+ z-index: var(--sp-component-toast-z-index);
2807
+ transition:
2808
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2809
+ color var(--sp-duration-fast) var(--sp-easing-out),
2810
+ border-color var(--sp-duration-fast) var(--sp-easing-out);
2811
+ }
2812
+
2813
+ .sp-toast--dismissed {
2814
+ display: none;
2815
+ }
2816
+
2817
+ .sp-toast--full {
2818
+ width: 100%;
2819
+ }
2820
+
2821
+ .sp-toast--info {
2822
+ background-color: var(--sp-component-toast-info-bg);
2823
+ color: var(--sp-component-toast-info-text);
2824
+ border-color: var(--sp-component-toast-info-border);
2825
+ }
2826
+
2827
+ .sp-toast--success {
2828
+ background-color: var(--sp-component-toast-success-bg);
2829
+ color: var(--sp-component-toast-success-text);
2830
+ border-color: var(--sp-component-toast-success-border);
2831
+ }
2832
+
2833
+ .sp-toast--warning {
2834
+ background-color: var(--sp-component-toast-warning-bg);
2835
+ color: var(--sp-component-toast-warning-text);
2836
+ border-color: var(--sp-component-toast-warning-border);
2837
+ }
2838
+
2839
+ .sp-toast--danger {
2840
+ background-color: var(--sp-component-toast-danger-bg);
2841
+ color: var(--sp-component-toast-danger-text);
2842
+ border-color: var(--sp-component-toast-danger-border);
2843
+ }
2844
+
2845
+ .sp-toast__icon {
2846
+ flex-shrink: 0;
2847
+ line-height: var(--sp-font-sm-line-height);
2848
+ }
2849
+
2850
+ .sp-toast__icon--info {
2851
+ color: var(--sp-component-toast-info-icon);
2852
+ }
2853
+
2854
+ .sp-toast__icon--success {
2855
+ color: var(--sp-component-toast-success-icon);
2856
+ }
2857
+
2858
+ .sp-toast__icon--warning {
2859
+ color: var(--sp-component-toast-warning-icon);
2860
+ }
2861
+
2862
+ .sp-toast__icon--danger {
2863
+ color: var(--sp-component-toast-danger-icon);
2864
+ }
2865
+
2866
+ /* TOOLTIPS --------------------------------------------------------------- */
2867
+ .sp-tooltip {
2868
+ position: absolute;
2869
+ display: inline-flex;
2870
+ align-items: center;
2871
+ justify-content: center;
2872
+ border-radius: var(--sp-component-tooltip-radius);
2873
+ border: var(--sp-component-border-width) solid var(--sp-component-tooltip-border);
2874
+ background-color: var(--sp-component-tooltip-bg);
2875
+ color: var(--sp-component-tooltip-text);
2876
+ padding: var(--sp-component-tooltip-padding-y) var(--sp-component-tooltip-padding-x);
2877
+ font-family: var(--sp-font-family-sans);
2878
+ font-size: var(--sp-font-xs-size);
2879
+ line-height: var(--sp-font-xs-line-height);
2880
+ white-space: nowrap;
2881
+ opacity: var(--sp-component-tooltip-opacity);
2882
+ z-index: var(--sp-component-tooltip-z-index);
2883
+ pointer-events: none;
2884
+ visibility: hidden;
2885
+ transition:
2886
+ opacity var(--sp-duration-fast) var(--sp-easing-out),
2887
+ visibility var(--sp-duration-fast) var(--sp-easing-out);
2888
+ }
2889
+
2890
+ .sp-tooltip--visible {
2891
+ visibility: visible;
2892
+ }
2893
+
2894
+ .sp-tooltip--top {
2895
+ bottom: 100%;
2896
+ left: 50%;
2897
+ transform: translate(-50%, calc(-1 * var(--sp-component-tooltip-offset)));
2898
+ }
2899
+
2900
+ .sp-tooltip--bottom {
2901
+ top: 100%;
2902
+ left: 50%;
2903
+ transform: translate(-50%, var(--sp-component-tooltip-offset));
2904
+ }
2905
+
2906
+ .sp-tooltip--left {
2907
+ right: 100%;
2908
+ top: 50%;
2909
+ transform: translate(calc(-1 * var(--sp-component-tooltip-offset)), -50%);
2910
+ }
2911
+
2912
+ .sp-tooltip--right {
2913
+ left: 100%;
2914
+ top: 50%;
2915
+ transform: translate(var(--sp-component-tooltip-offset), -50%);
2916
+ }
2917
+
2918
+ /* DROPDOWNS ---------------------------------------------------------------- */
2919
+ .sp-dropdown {
2920
+ position: relative;
2921
+ display: inline-block;
2922
+ }
2923
+
2924
+ .sp-dropdown--full {
2925
+ display: block;
2926
+ width: 100%;
2927
+ }
2928
+
2929
+ .sp-dropdown__menu {
2930
+ position: absolute;
2931
+ display: none;
2932
+ flex-direction: column;
2933
+ min-width: 100%;
2934
+ padding: var(--sp-component-dropdown-padding);
2935
+ background-color: var(--sp-component-dropdown-bg);
2936
+ border: var(--sp-component-border-width) solid var(--sp-component-dropdown-border);
2937
+ border-radius: var(--sp-component-dropdown-radius);
2938
+ box-shadow: var(--sp-component-dropdown-shadow);
2939
+ z-index: var(--sp-component-dropdown-z-index);
2940
+ font-family: var(--sp-font-family-sans);
2941
+ }
2942
+
2943
+ .sp-dropdown__menu--open {
2944
+ display: flex;
2945
+ }
2946
+
2947
+ .sp-dropdown__menu--bottom-start {
2948
+ top: 100%;
2949
+ left: 0;
2950
+ margin-top: var(--sp-component-dropdown-offset);
2951
+ }
2952
+
2953
+ .sp-dropdown__menu--bottom-end {
2954
+ top: 100%;
2955
+ right: 0;
2956
+ margin-top: var(--sp-component-dropdown-offset);
2957
+ }
2958
+
2959
+ .sp-dropdown__menu--top-start {
2960
+ bottom: 100%;
2961
+ left: 0;
2962
+ margin-bottom: var(--sp-component-dropdown-offset);
2963
+ }
2964
+
2965
+ .sp-dropdown__menu--top-end {
2966
+ bottom: 100%;
2967
+ right: 0;
2968
+ margin-bottom: var(--sp-component-dropdown-offset);
2969
+ }
2970
+
2971
+ .sp-dropdown__item {
2972
+ display: flex;
2973
+ align-items: center;
2974
+ gap: var(--sp-component-dropdown-item-gap);
2975
+ padding: var(--sp-component-dropdown-item-padding-y) var(--sp-component-dropdown-item-padding-x);
2976
+ border-radius: var(--sp-component-dropdown-item-radius);
2977
+ background-color: var(--sp-component-dropdown-item-default);
2978
+ color: var(--sp-component-dropdown-item-text);
2979
+ font-size: var(--sp-font-sm-size);
2980
+ line-height: var(--sp-font-sm-line-height);
2981
+ text-decoration: none;
2982
+ cursor: pointer;
2983
+ transition:
2984
+ background-color var(--sp-duration-fast) var(--sp-easing-out),
2985
+ color var(--sp-duration-fast) var(--sp-easing-out),
2986
+ opacity var(--sp-duration-fast) var(--sp-easing-out);
2987
+ }
2988
+
2989
+ .sp-dropdown__item:hover,
2990
+ .sp-dropdown__item--hover,
2991
+ .sp-dropdown__item.is-hover {
2992
+ background-color: var(--sp-component-dropdown-item-hover);
2993
+ }
2994
+
2995
+ .sp-dropdown__item:focus-visible,
2996
+ .sp-dropdown__item--focus,
2997
+ .sp-dropdown__item.is-focus {
2998
+ outline: none;
2999
+ box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
3000
+ }
3001
+
3002
+ .sp-dropdown__item--active,
3003
+ .sp-dropdown__item.is-active {
3004
+ background-color: var(--sp-component-dropdown-item-active);
3005
+ }
3006
+
3007
+ .sp-dropdown__item--disabled,
3008
+ .sp-dropdown__item[aria-disabled="true"] {
3009
+ pointer-events: none;
3010
+ opacity: var(--sp-opacity-disabled);
3011
+ }
3012
+
3013
+ /* MODALS ------------------------------------------------------------------- */
3014
+ .sp-modal-overlay {
3015
+ position: fixed;
3016
+ inset: 0;
3017
+ display: none;
3018
+ align-items: center;
3019
+ justify-content: center;
3020
+ background-color: var(--sp-component-modal-overlay);
3021
+ z-index: var(--sp-component-modal-z-index);
3022
+ }
3023
+
3024
+ .sp-modal-overlay--open {
3025
+ display: flex;
3026
+ }
3027
+
3028
+ .sp-modal {
3029
+ display: flex;
3030
+ flex-direction: column;
3031
+ gap: var(--sp-component-modal-gap);
3032
+ max-width: 100%;
3033
+ max-height: 100%;
3034
+ overflow: auto;
3035
+ padding: var(--sp-component-modal-padding);
3036
+ background-color: var(--sp-component-modal-bg);
3037
+ border: var(--sp-component-border-width) solid var(--sp-component-modal-border);
3038
+ border-radius: var(--sp-component-modal-radius);
3039
+ box-shadow: var(--sp-component-modal-shadow);
3040
+ font-family: var(--sp-font-family-sans);
3041
+ opacity: 0;
3042
+ transform: scale(0.95);
3043
+ transition:
3044
+ opacity var(--sp-duration-fast) var(--sp-easing-out),
3045
+ transform var(--sp-duration-fast) var(--sp-easing-out);
3046
+ }
3047
+
3048
+ .sp-modal--open {
3049
+ opacity: 1;
3050
+ transform: scale(1);
3051
+ }
3052
+
3053
+ .sp-modal--full {
3054
+ width: 100%;
3055
+ }
2515
3056
  }
2516
3057
  @layer utilities {
2517
3058
  .sp-stack {