@phcdevworks/spectre-ui 1.1.1 → 1.2.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/README.md +47 -13
- package/dist/base.css +393 -0
- package/dist/components.css +538 -30
- package/dist/index.cjs +65 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +178 -45
- package/dist/index.d.cts +90 -18
- package/dist/index.d.ts +90 -18
- package/dist/index.js +65 -9
- package/dist/index.js.map +1 -1
- package/dist/tailwind/index.cjs +14 -12
- package/dist/tailwind/index.cjs.map +1 -1
- package/dist/tailwind/index.js +14 -12
- package/dist/tailwind/index.js.map +1 -1
- package/dist/utilities.css +393 -0
- package/package.json +34 -19
package/dist/index.css
CHANGED
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
--sp-text-on-surface-subtle: #657287;
|
|
18
18
|
--sp-text-on-surface-meta: #657287;
|
|
19
19
|
--sp-component-card-text: #141b24;
|
|
20
|
-
--sp-component-card-text-muted: #
|
|
20
|
+
--sp-component-card-text-muted: #4b576a;
|
|
21
21
|
--sp-component-input-text: #141b24;
|
|
22
|
-
--sp-component-input-placeholder: #
|
|
22
|
+
--sp-component-input-placeholder: #657287;
|
|
23
23
|
--sp-button-text-default: #141b24;
|
|
24
24
|
--sp-button-text-on-primary: #ffffff;
|
|
25
25
|
--sp-badge-neutral-bg: #eef1f6;
|
|
@@ -176,13 +176,25 @@
|
|
|
176
176
|
--sp-font-md-weight: 500;
|
|
177
177
|
--sp-font-lg-size: 1.25rem;
|
|
178
178
|
--sp-font-lg-line-height: 2rem;
|
|
179
|
-
--sp-font-lg-weight:
|
|
179
|
+
--sp-font-lg-weight: 600;
|
|
180
180
|
--sp-font-xl-size: 1.5rem;
|
|
181
181
|
--sp-font-xl-line-height: 2.125rem;
|
|
182
182
|
--sp-font-xl-weight: 600;
|
|
183
183
|
--sp-font-2xl-size: 1.875rem;
|
|
184
184
|
--sp-font-2xl-line-height: 2.5rem;
|
|
185
|
-
--sp-font-2xl-weight:
|
|
185
|
+
--sp-font-2xl-weight: 700;
|
|
186
|
+
--sp-font-3xl-size: 2.25rem;
|
|
187
|
+
--sp-font-3xl-line-height: 2.75rem;
|
|
188
|
+
--sp-font-3xl-weight: 700;
|
|
189
|
+
--sp-font-4xl-size: 3rem;
|
|
190
|
+
--sp-font-4xl-line-height: 3.5rem;
|
|
191
|
+
--sp-font-4xl-weight: 800;
|
|
192
|
+
--sp-font-5xl-size: 3.75rem;
|
|
193
|
+
--sp-font-5xl-line-height: 4.25rem;
|
|
194
|
+
--sp-font-5xl-weight: 800;
|
|
195
|
+
--sp-font-6xl-size: 4.5rem;
|
|
196
|
+
--sp-font-6xl-line-height: 5rem;
|
|
197
|
+
--sp-font-6xl-weight: 900;
|
|
186
198
|
--sp-font-xs-letter-spacing: 0.02em;
|
|
187
199
|
--sp-text-on-page-default: #141b24;
|
|
188
200
|
--sp-text-on-page-muted: #4b576a;
|
|
@@ -254,6 +266,7 @@
|
|
|
254
266
|
--sp-button-primary-text: #ffffff;
|
|
255
267
|
--sp-button-primary-textdisabled: #8a96ad;
|
|
256
268
|
--sp-button-primary-focusring: rgba(14, 165, 233, 0.4);
|
|
269
|
+
--sp-button-primary-focusvisible: {colors.info.500} / 0.4;
|
|
257
270
|
--sp-button-secondary-bg: #ffffff;
|
|
258
271
|
--sp-button-secondary-bghover: #f7f8fb;
|
|
259
272
|
--sp-button-secondary-bgactive: #eef1f6;
|
|
@@ -263,6 +276,7 @@
|
|
|
263
276
|
--sp-button-secondary-border: #075985;
|
|
264
277
|
--sp-button-secondary-borderdisabled: #d9dfeb;
|
|
265
278
|
--sp-button-secondary-focusring: rgba(14, 165, 233, 0.4);
|
|
279
|
+
--sp-button-secondary-focusvisible: {colors.info.500} / 0.4;
|
|
266
280
|
--sp-button-ghost-bg: transparent;
|
|
267
281
|
--sp-button-ghost-bghover: #f0f9ff;
|
|
268
282
|
--sp-button-ghost-bgactive: #e0f2fe;
|
|
@@ -270,6 +284,7 @@
|
|
|
270
284
|
--sp-button-ghost-text: #075985;
|
|
271
285
|
--sp-button-ghost-textdisabled: #8a96ad;
|
|
272
286
|
--sp-button-ghost-focusring: rgba(14, 165, 233, 0.4);
|
|
287
|
+
--sp-button-ghost-focusvisible: {colors.info.500} / 0.4;
|
|
273
288
|
--sp-button-danger-bg: #dc2626;
|
|
274
289
|
--sp-button-danger-bghover: #b91c1c;
|
|
275
290
|
--sp-button-danger-bgactive: #991b1b;
|
|
@@ -299,13 +314,16 @@
|
|
|
299
314
|
--sp-button-accent-text: #ffffff;
|
|
300
315
|
--sp-button-accent-textdisabled: #8a96ad;
|
|
301
316
|
--sp-button-accent-focusring: rgba(133, 79, 247, 0.4);
|
|
317
|
+
--sp-button-accent-focusvisible: {colors.accent.500} / 0.4;
|
|
302
318
|
--sp-form-default-bg: #ffffff;
|
|
303
319
|
--sp-form-default-border: #b7c1d4;
|
|
304
320
|
--sp-form-default-text: #141b24;
|
|
305
|
-
--sp-form-default-placeholder: #
|
|
321
|
+
--sp-form-default-placeholder: #657287;
|
|
306
322
|
--sp-form-hover-border: #0ea5e9;
|
|
307
323
|
--sp-form-focus-border: #0ea5e9;
|
|
308
324
|
--sp-form-focus-ring: #0ea5e9;
|
|
325
|
+
--sp-form-focusvisible-border: {colors.info.500};
|
|
326
|
+
--sp-form-focusvisible-ring: {colors.info.500};
|
|
309
327
|
--sp-form-valid-border: #22c55e;
|
|
310
328
|
--sp-form-valid-bg: #f0fdf4;
|
|
311
329
|
--sp-form-valid-text: #15803d;
|
|
@@ -347,22 +365,22 @@
|
|
|
347
365
|
--sp-surface-overlay: #222b38;
|
|
348
366
|
--sp-surface-hero: linear-gradient(135deg, #401f75 0%, #5d28b8 100%);
|
|
349
367
|
--sp-text-on-page-default: #f7f8fb;
|
|
350
|
-
--sp-text-on-page-muted: #
|
|
351
|
-
--sp-text-on-page-subtle: #
|
|
352
|
-
--sp-text-on-page-meta: #
|
|
368
|
+
--sp-text-on-page-muted: #b7c1d4;
|
|
369
|
+
--sp-text-on-page-subtle: #8a96ad;
|
|
370
|
+
--sp-text-on-page-meta: #8a96ad;
|
|
353
371
|
--sp-text-on-surface-default: #eef1f6;
|
|
354
|
-
--sp-text-on-surface-muted: #
|
|
355
|
-
--sp-text-on-surface-subtle: #
|
|
356
|
-
--sp-text-on-surface-meta: #
|
|
372
|
+
--sp-text-on-surface-muted: #b7c1d4;
|
|
373
|
+
--sp-text-on-surface-subtle: #8a96ad;
|
|
374
|
+
--sp-text-on-surface-meta: #8a96ad;
|
|
357
375
|
--sp-component-card-text: #eef1f6;
|
|
358
|
-
--sp-component-card-text-muted: #
|
|
376
|
+
--sp-component-card-text-muted: #b7c1d4;
|
|
359
377
|
--sp-component-input-text: #eef1f6;
|
|
360
|
-
--sp-component-input-placeholder: #
|
|
378
|
+
--sp-component-input-placeholder: #b7c1d4;
|
|
361
379
|
--sp-button-text-default: #eef1f6;
|
|
362
380
|
--sp-button-text-on-primary: #ffffff;
|
|
363
381
|
--sp-badge-neutral-bg: #374253;
|
|
364
382
|
--sp-badge-neutral-text: #eef1f6;
|
|
365
|
-
--sp-badge-info-bg: #
|
|
383
|
+
--sp-badge-info-bg: #0c4a6e;
|
|
366
384
|
--sp-badge-info-text: #e0f2fe;
|
|
367
385
|
--sp-badge-success-bg: #166534;
|
|
368
386
|
--sp-badge-success-text: #dcfce7;
|
|
@@ -372,7 +390,7 @@
|
|
|
372
390
|
--sp-badge-danger-text: #fee2e2;
|
|
373
391
|
--sp-icon-box-bg: #222b38;
|
|
374
392
|
--sp-icon-box-border: #374253;
|
|
375
|
-
--sp-icon-box-icon-default: #
|
|
393
|
+
--sp-icon-box-icon-default: #38bdf8;
|
|
376
394
|
--sp-icon-box-icon-success: #4ade80;
|
|
377
395
|
--sp-icon-box-icon-warning: #ffc21a;
|
|
378
396
|
--sp-icon-box-icon-danger: #f87171;
|
|
@@ -483,15 +501,14 @@
|
|
|
483
501
|
--sp-component-button-success-bg-disabled: var(--sp-button-success-bgdisabled);
|
|
484
502
|
--sp-component-button-success-text: var(--sp-button-success-text);
|
|
485
503
|
--sp-component-button-success-text-disabled: var(--sp-button-success-textdisabled);
|
|
486
|
-
/*
|
|
487
|
-
|
|
488
|
-
--sp-component-button-cta-bg: var(--sp-
|
|
489
|
-
--sp-component-button-cta-bg-
|
|
490
|
-
--sp-component-button-cta-bg-
|
|
491
|
-
--sp-component-button-cta-
|
|
492
|
-
--sp-component-button-cta-text: var(--sp-
|
|
493
|
-
--sp-component-button-cta-
|
|
494
|
-
--sp-component-button-cta-shadow: 0 4px 14px 0 var(--sp-color-accent-500) / 0.39;
|
|
504
|
+
/* CTA button alignment restored to official tokens as they now use the brand palette (Blue). */
|
|
505
|
+
--sp-component-button-cta-bg: var(--sp-button-cta-bg);
|
|
506
|
+
--sp-component-button-cta-bg-hover: var(--sp-button-cta-bghover);
|
|
507
|
+
--sp-component-button-cta-bg-active: var(--sp-button-cta-bgactive);
|
|
508
|
+
--sp-component-button-cta-bg-disabled: var(--sp-button-cta-bgdisabled);
|
|
509
|
+
--sp-component-button-cta-text: var(--sp-button-cta-text);
|
|
510
|
+
--sp-component-button-cta-text-disabled: var(--sp-button-cta-textdisabled);
|
|
511
|
+
--sp-component-button-cta-shadow: var(--sp-button-cta-shadow);
|
|
495
512
|
--sp-component-button-accent-bg: var(--sp-button-accent-bg);
|
|
496
513
|
--sp-component-button-accent-bg-hover: var(--sp-button-accent-bghover);
|
|
497
514
|
--sp-component-button-accent-bg-active: var(--sp-button-accent-bgactive);
|
|
@@ -520,6 +537,7 @@
|
|
|
520
537
|
--sp-component-input-role-bg: var(--sp-form-default-bg);
|
|
521
538
|
--sp-component-input-role-text: var(--sp-form-default-text);
|
|
522
539
|
--sp-component-input-role-placeholder: var(--sp-form-default-placeholder);
|
|
540
|
+
--sp-component-input-role-border-hover: var(--sp-form-hover-border);
|
|
523
541
|
--sp-component-input-role-border-focus: var(--sp-form-focus-border);
|
|
524
542
|
--sp-component-input-role-ring: var(--sp-form-focus-ring);
|
|
525
543
|
--sp-component-input-role-border-error: var(--sp-form-invalid-border);
|
|
@@ -553,7 +571,7 @@
|
|
|
553
571
|
--sp-component-badge-info-bg: var(--sp-badge-info-bg);
|
|
554
572
|
--sp-component-badge-info-text: var(--sp-badge-info-text);
|
|
555
573
|
|
|
556
|
-
/* badge hover states
|
|
574
|
+
/* badge hover states derived from Spectre token semantics */
|
|
557
575
|
--sp-component-badge-primary-bg-hover: var(--sp-button-primary-bghover);
|
|
558
576
|
--sp-component-badge-secondary-bg-hover: var(--sp-button-secondary-bghover);
|
|
559
577
|
--sp-component-badge-success-bg-hover: var(--sp-color-success-200);
|
|
@@ -596,10 +614,8 @@
|
|
|
596
614
|
/* pricing card roles */
|
|
597
615
|
--sp-component-pricing-card-bg: var(--sp-surface-card);
|
|
598
616
|
--sp-component-pricing-card-border: var(--sp-color-neutral-200);
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
--sp-component-pricing-card-featured-bg: var(--sp-color-neutral-900);
|
|
602
|
-
--sp-component-pricing-card-featured-text: var(--sp-color-neutral-50);
|
|
617
|
+
--sp-component-pricing-card-featured-bg: var(--sp-color-info-600);
|
|
618
|
+
--sp-component-pricing-card-featured-text: var(--sp-button-text-on-primary);
|
|
603
619
|
--sp-component-pricing-card-featured-badge-bg: var(--sp-color-warning-500);
|
|
604
620
|
--sp-component-pricing-card-featured-badge-text: var(--sp-color-neutral-900);
|
|
605
621
|
--sp-component-pricing-card-price: var(--sp-color-neutral-900);
|
|
@@ -610,22 +626,26 @@
|
|
|
610
626
|
--sp-component-rating-star-filled: var(--sp-color-warning-500);
|
|
611
627
|
--sp-component-rating-star-empty: var(--sp-color-neutral-200);
|
|
612
628
|
--sp-component-rating-text: var(--sp-color-neutral-500);
|
|
629
|
+
--sp-component-rating-size-sm: var(--sp-font-sm-size);
|
|
630
|
+
--sp-component-rating-size-md: var(--sp-font-md-size);
|
|
631
|
+
--sp-component-rating-size-lg: var(--sp-font-lg-size);
|
|
613
632
|
}
|
|
614
633
|
|
|
615
|
-
/* dark mode overrides
|
|
634
|
+
/* dark mode overrides mapped from Spectre token mode definitions */
|
|
616
635
|
:root[data-spectre-theme="dark"] {
|
|
617
636
|
--sp-component-testimonial-bg: var(--sp-color-neutral-800);
|
|
618
637
|
--sp-component-testimonial-border: var(--sp-color-neutral-700);
|
|
619
|
-
--sp-component-testimonial-text: var(--sp-color-neutral-
|
|
638
|
+
--sp-component-testimonial-text: var(--sp-color-neutral-200);
|
|
620
639
|
--sp-component-testimonial-author-name: var(--sp-color-neutral-100);
|
|
621
|
-
--sp-component-testimonial-author-title: var(--sp-color-neutral-
|
|
640
|
+
--sp-component-testimonial-author-title: var(--sp-color-neutral-300);
|
|
622
641
|
--sp-component-testimonial-quote-mark: var(--sp-color-neutral-600);
|
|
623
642
|
|
|
624
643
|
--sp-component-pricing-card-bg: var(--sp-color-neutral-800);
|
|
625
644
|
--sp-component-pricing-card-border: var(--sp-color-neutral-700);
|
|
626
645
|
--sp-component-pricing-card-price: var(--sp-color-neutral-100);
|
|
627
|
-
--sp-component-pricing-card-price-description: var(--sp-color-neutral-
|
|
646
|
+
--sp-component-pricing-card-price-description: var(--sp-color-neutral-300);
|
|
628
647
|
|
|
648
|
+
--sp-component-rating-star-filled: var(--sp-color-warning-400);
|
|
629
649
|
--sp-component-rating-star-empty: var(--sp-color-neutral-700);
|
|
630
650
|
--sp-component-rating-text: var(--sp-color-neutral-400);
|
|
631
651
|
|
|
@@ -637,14 +657,20 @@
|
|
|
637
657
|
--sp-component-badge-danger-text: var(--sp-color-error-100);
|
|
638
658
|
--sp-component-badge-neutral-bg: var(--sp-color-neutral-700);
|
|
639
659
|
--sp-component-badge-neutral-text: var(--sp-color-neutral-100);
|
|
640
|
-
--sp-component-badge-info-bg: var(--sp-color-info-
|
|
660
|
+
--sp-component-badge-info-bg: var(--sp-color-info-900);
|
|
641
661
|
--sp-component-badge-info-text: var(--sp-color-info-100);
|
|
642
662
|
|
|
643
663
|
--sp-component-badge-success-bg-hover: var(--sp-color-success-700);
|
|
644
|
-
--sp-component-badge-warning-bg-hover: var(--sp-color-warning-
|
|
664
|
+
--sp-component-badge-warning-bg-hover: var(--sp-color-warning-800);
|
|
645
665
|
--sp-component-badge-danger-bg-hover: var(--sp-color-error-700);
|
|
646
666
|
--sp-component-badge-neutral-bg-hover: var(--sp-color-neutral-600);
|
|
647
667
|
--sp-component-badge-info-bg-hover: var(--sp-color-info-700);
|
|
668
|
+
|
|
669
|
+
--sp-component-iconbox-primary-bg: var(--sp-color-brand-900);
|
|
670
|
+
--sp-component-iconbox-success-bg: var(--sp-color-success-900);
|
|
671
|
+
--sp-component-iconbox-warning-bg: var(--sp-color-warning-900);
|
|
672
|
+
--sp-component-iconbox-danger-bg: var(--sp-color-error-900);
|
|
673
|
+
--sp-component-iconbox-info-bg: var(--sp-color-info-900);
|
|
648
674
|
}
|
|
649
675
|
|
|
650
676
|
/* BUTTONS -------------------------------------------------------------- */
|
|
@@ -684,6 +710,13 @@
|
|
|
684
710
|
opacity: var(--sp-opacity-active);
|
|
685
711
|
}
|
|
686
712
|
|
|
713
|
+
.sp-btn:focus-visible,
|
|
714
|
+
.sp-btn--focus,
|
|
715
|
+
.sp-btn.is-focus {
|
|
716
|
+
outline: none;
|
|
717
|
+
box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
|
|
718
|
+
}
|
|
719
|
+
|
|
687
720
|
.sp-btn--full {
|
|
688
721
|
width: 100%;
|
|
689
722
|
}
|
|
@@ -968,8 +1001,14 @@
|
|
|
968
1001
|
border-radius: var(--sp-radius-pill);
|
|
969
1002
|
}
|
|
970
1003
|
|
|
1004
|
+
.sp-input:hover,
|
|
1005
|
+
.sp-input--hover {
|
|
1006
|
+
border-color: var(--sp-component-input-role-border-hover);
|
|
1007
|
+
}
|
|
1008
|
+
|
|
971
1009
|
.sp-input:focus,
|
|
972
|
-
.sp-input--focus
|
|
1010
|
+
.sp-input--focus,
|
|
1011
|
+
.sp-input.is-focus {
|
|
973
1012
|
border-color: var(--sp-component-input-role-border-focus);
|
|
974
1013
|
box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-component-input-role-ring);
|
|
975
1014
|
outline: none;
|
|
@@ -988,11 +1027,14 @@
|
|
|
988
1027
|
color: var(--sp-component-input-role-text);
|
|
989
1028
|
}
|
|
990
1029
|
|
|
1030
|
+
.sp-input:disabled,
|
|
1031
|
+
.sp-input[aria-disabled="true"],
|
|
991
1032
|
.sp-input--disabled {
|
|
992
1033
|
background-color: var(--sp-component-input-role-bg-disabled);
|
|
993
1034
|
color: var(--sp-component-input-role-text-disabled);
|
|
994
1035
|
border-color: var(--sp-component-input-role-border-disabled);
|
|
995
1036
|
cursor: not-allowed;
|
|
1037
|
+
pointer-events: none;
|
|
996
1038
|
}
|
|
997
1039
|
|
|
998
1040
|
.sp-input--disabled::placeholder {
|
|
@@ -1063,6 +1105,11 @@
|
|
|
1063
1105
|
pointer-events: none;
|
|
1064
1106
|
}
|
|
1065
1107
|
|
|
1108
|
+
.sp-card--loading {
|
|
1109
|
+
opacity: var(--sp-opacity-active);
|
|
1110
|
+
pointer-events: none;
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1066
1113
|
.sp-card--interactive {
|
|
1067
1114
|
cursor: pointer;
|
|
1068
1115
|
transition:
|
|
@@ -1072,7 +1119,11 @@
|
|
|
1072
1119
|
|
|
1073
1120
|
.sp-card--interactive:hover,
|
|
1074
1121
|
.sp-card--interactive:focus-visible,
|
|
1075
|
-
.sp-card--interactive:focus-within
|
|
1122
|
+
.sp-card--interactive:focus-within,
|
|
1123
|
+
.sp-card--interactive.sp-card--hover,
|
|
1124
|
+
.sp-card--interactive.is-hover,
|
|
1125
|
+
.sp-card--interactive.sp-card--focus,
|
|
1126
|
+
.sp-card--interactive.is-focus {
|
|
1076
1127
|
transform: translateY(calc(var(--sp-component-border-width) * -1));
|
|
1077
1128
|
box-shadow: var(--sp-component-card-shadow-elevated);
|
|
1078
1129
|
}
|
|
@@ -1117,7 +1168,9 @@
|
|
|
1117
1168
|
color: var(--sp-component-badge-primary-text);
|
|
1118
1169
|
}
|
|
1119
1170
|
|
|
1120
|
-
.sp-badge--primary.sp-badge--interactive:hover
|
|
1171
|
+
.sp-badge--primary.sp-badge--interactive:hover,
|
|
1172
|
+
.sp-badge--primary.sp-badge--interactive.sp-badge--hover,
|
|
1173
|
+
.sp-badge--primary.sp-badge--interactive.is-hover {
|
|
1121
1174
|
background-color: var(--sp-component-badge-primary-bg-hover);
|
|
1122
1175
|
}
|
|
1123
1176
|
|
|
@@ -1127,7 +1180,9 @@
|
|
|
1127
1180
|
border-color: var(--sp-component-badge-secondary-border);
|
|
1128
1181
|
}
|
|
1129
1182
|
|
|
1130
|
-
.sp-badge--secondary.sp-badge--interactive:hover
|
|
1183
|
+
.sp-badge--secondary.sp-badge--interactive:hover,
|
|
1184
|
+
.sp-badge--secondary.sp-badge--interactive.sp-badge--hover,
|
|
1185
|
+
.sp-badge--secondary.sp-badge--interactive.is-hover {
|
|
1131
1186
|
background-color: var(--sp-component-badge-secondary-bg-hover);
|
|
1132
1187
|
}
|
|
1133
1188
|
|
|
@@ -1136,7 +1191,9 @@
|
|
|
1136
1191
|
color: var(--sp-component-badge-success-text);
|
|
1137
1192
|
}
|
|
1138
1193
|
|
|
1139
|
-
.sp-badge--success.sp-badge--interactive:hover
|
|
1194
|
+
.sp-badge--success.sp-badge--interactive:hover,
|
|
1195
|
+
.sp-badge--success.sp-badge--interactive.sp-badge--hover,
|
|
1196
|
+
.sp-badge--success.sp-badge--interactive.is-hover {
|
|
1140
1197
|
background-color: var(--sp-component-badge-success-bg-hover);
|
|
1141
1198
|
}
|
|
1142
1199
|
|
|
@@ -1145,7 +1202,9 @@
|
|
|
1145
1202
|
color: var(--sp-component-badge-warning-text);
|
|
1146
1203
|
}
|
|
1147
1204
|
|
|
1148
|
-
.sp-badge--warning.sp-badge--interactive:hover
|
|
1205
|
+
.sp-badge--warning.sp-badge--interactive:hover,
|
|
1206
|
+
.sp-badge--warning.sp-badge--interactive.sp-badge--hover,
|
|
1207
|
+
.sp-badge--warning.sp-badge--interactive.is-hover {
|
|
1149
1208
|
background-color: var(--sp-component-badge-warning-bg-hover);
|
|
1150
1209
|
}
|
|
1151
1210
|
|
|
@@ -1154,7 +1213,9 @@
|
|
|
1154
1213
|
color: var(--sp-component-badge-danger-text);
|
|
1155
1214
|
}
|
|
1156
1215
|
|
|
1157
|
-
.sp-badge--danger.sp-badge--interactive:hover
|
|
1216
|
+
.sp-badge--danger.sp-badge--interactive:hover,
|
|
1217
|
+
.sp-badge--danger.sp-badge--interactive.sp-badge--hover,
|
|
1218
|
+
.sp-badge--danger.sp-badge--interactive.is-hover {
|
|
1158
1219
|
background-color: var(--sp-component-badge-danger-bg-hover);
|
|
1159
1220
|
}
|
|
1160
1221
|
|
|
@@ -1163,7 +1224,9 @@
|
|
|
1163
1224
|
color: var(--sp-component-badge-neutral-text);
|
|
1164
1225
|
}
|
|
1165
1226
|
|
|
1166
|
-
.sp-badge--neutral.sp-badge--interactive:hover
|
|
1227
|
+
.sp-badge--neutral.sp-badge--interactive:hover,
|
|
1228
|
+
.sp-badge--neutral.sp-badge--interactive.sp-badge--hover,
|
|
1229
|
+
.sp-badge--neutral.sp-badge--interactive.is-hover {
|
|
1167
1230
|
background-color: var(--sp-component-badge-neutral-bg-hover);
|
|
1168
1231
|
}
|
|
1169
1232
|
|
|
@@ -1172,13 +1235,33 @@
|
|
|
1172
1235
|
color: var(--sp-component-badge-info-text);
|
|
1173
1236
|
}
|
|
1174
1237
|
|
|
1175
|
-
.sp-badge--info.sp-badge--interactive:hover
|
|
1238
|
+
.sp-badge--info.sp-badge--interactive:hover,
|
|
1239
|
+
.sp-badge--info.sp-badge--interactive.sp-badge--hover,
|
|
1240
|
+
.sp-badge--info.sp-badge--interactive.is-hover {
|
|
1176
1241
|
background-color: var(--sp-component-badge-info-bg-hover);
|
|
1177
1242
|
}
|
|
1178
1243
|
|
|
1179
1244
|
.sp-badge--interactive {
|
|
1180
1245
|
cursor: pointer;
|
|
1181
|
-
transition:
|
|
1246
|
+
transition:
|
|
1247
|
+
background-color var(--sp-duration-fast) var(--sp-easing-out),
|
|
1248
|
+
color var(--sp-duration-fast) var(--sp-easing-out),
|
|
1249
|
+
box-shadow var(--sp-duration-fast) var(--sp-easing-out),
|
|
1250
|
+
border-color var(--sp-duration-fast) var(--sp-easing-out),
|
|
1251
|
+
opacity var(--sp-duration-fast) var(--sp-easing-out);
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
.sp-badge--interactive:active,
|
|
1255
|
+
.sp-badge--interactive.sp-badge--active,
|
|
1256
|
+
.sp-badge--interactive.is-active {
|
|
1257
|
+
opacity: var(--sp-opacity-active);
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
.sp-badge--interactive:focus-visible,
|
|
1261
|
+
.sp-badge--interactive.sp-badge--focus,
|
|
1262
|
+
.sp-badge--interactive.is-focus {
|
|
1263
|
+
outline: none;
|
|
1264
|
+
box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
|
|
1182
1265
|
}
|
|
1183
1266
|
|
|
1184
1267
|
.sp-badge--disabled {
|
|
@@ -1203,6 +1286,12 @@
|
|
|
1203
1286
|
font-family: var(--sp-font-family-sans);
|
|
1204
1287
|
font-weight: var(--sp-font-md-weight);
|
|
1205
1288
|
line-height: 0;
|
|
1289
|
+
transition:
|
|
1290
|
+
background-color var(--sp-duration-fast) var(--sp-easing-out),
|
|
1291
|
+
color var(--sp-duration-fast) var(--sp-easing-out),
|
|
1292
|
+
box-shadow var(--sp-duration-fast) var(--sp-easing-out),
|
|
1293
|
+
border-color var(--sp-duration-fast) var(--sp-easing-out),
|
|
1294
|
+
opacity var(--sp-duration-fast) var(--sp-easing-out);
|
|
1206
1295
|
}
|
|
1207
1296
|
|
|
1208
1297
|
/* Harden icon rendering:
|
|
@@ -1296,9 +1385,35 @@
|
|
|
1296
1385
|
color: var(--sp-component-iconbox-info-text);
|
|
1297
1386
|
}
|
|
1298
1387
|
|
|
1388
|
+
.sp-iconbox--interactive {
|
|
1389
|
+
cursor: pointer;
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1392
|
+
.sp-iconbox--interactive:hover,
|
|
1393
|
+
.sp-iconbox--interactive.sp-iconbox--hover,
|
|
1394
|
+
.sp-iconbox--interactive.is-hover {
|
|
1395
|
+
opacity: var(--sp-opacity-hover);
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
.sp-iconbox--interactive:active,
|
|
1399
|
+
.sp-iconbox--interactive.sp-iconbox--active,
|
|
1400
|
+
.sp-iconbox--interactive.is-active {
|
|
1401
|
+
opacity: var(--sp-opacity-active);
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
.sp-iconbox--interactive:focus-visible,
|
|
1405
|
+
.sp-iconbox--interactive.sp-iconbox--focus,
|
|
1406
|
+
.sp-iconbox--interactive.is-focus {
|
|
1407
|
+
outline: none;
|
|
1408
|
+
box-shadow: 0 0 0 calc(var(--sp-focus-ring-width) + var(--sp-component-border-width)) var(--sp-color-focus-primary);
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
.sp-iconbox:disabled,
|
|
1412
|
+
.sp-iconbox[aria-disabled="true"],
|
|
1299
1413
|
.sp-iconbox--disabled {
|
|
1300
1414
|
opacity: var(--sp-opacity-disabled);
|
|
1301
1415
|
pointer-events: none;
|
|
1416
|
+
cursor: not-allowed;
|
|
1302
1417
|
}
|
|
1303
1418
|
|
|
1304
1419
|
.sp-iconbox--loading {
|
|
@@ -1395,6 +1510,11 @@
|
|
|
1395
1510
|
pointer-events: none;
|
|
1396
1511
|
}
|
|
1397
1512
|
|
|
1513
|
+
.sp-pricing-card--loading {
|
|
1514
|
+
opacity: var(--sp-opacity-active);
|
|
1515
|
+
pointer-events: none;
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1398
1518
|
.sp-pricing-card-badge {
|
|
1399
1519
|
position: absolute;
|
|
1400
1520
|
top: var(--sp-space-16);
|
|
@@ -1439,6 +1559,19 @@
|
|
|
1439
1559
|
display: inline-flex;
|
|
1440
1560
|
align-items: center;
|
|
1441
1561
|
gap: var(--sp-space-8);
|
|
1562
|
+
font-size: var(--sp-component-rating-size-md);
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
.sp-rating--sm {
|
|
1566
|
+
font-size: var(--sp-component-rating-size-sm);
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
.sp-rating--md {
|
|
1570
|
+
font-size: var(--sp-component-rating-size-md);
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
.sp-rating--lg {
|
|
1574
|
+
font-size: var(--sp-component-rating-size-lg);
|
|
1442
1575
|
}
|
|
1443
1576
|
|
|
1444
1577
|
.sp-rating--disabled {
|
package/dist/index.d.cts
CHANGED
|
@@ -8,10 +8,22 @@ declare const spectreStyles: {
|
|
|
8
8
|
utilities: string;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
declare const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
declare const BUTTON_VARIANTS: {
|
|
12
|
+
readonly primary: true;
|
|
13
|
+
readonly secondary: true;
|
|
14
|
+
readonly ghost: true;
|
|
15
|
+
readonly danger: true;
|
|
16
|
+
readonly success: true;
|
|
17
|
+
readonly cta: true;
|
|
18
|
+
readonly accent: true;
|
|
19
|
+
};
|
|
20
|
+
declare const BUTTON_SIZES: {
|
|
21
|
+
readonly sm: true;
|
|
22
|
+
readonly md: true;
|
|
23
|
+
readonly lg: true;
|
|
24
|
+
};
|
|
25
|
+
type ButtonVariant = keyof typeof BUTTON_VARIANTS;
|
|
26
|
+
type ButtonSize = keyof typeof BUTTON_SIZES;
|
|
15
27
|
/**
|
|
16
28
|
* Generate classes for the Button component.
|
|
17
29
|
* @sync v2.x - Synced with latest design tokens, including CTA variants.
|
|
@@ -22,38 +34,73 @@ interface ButtonRecipeOptions {
|
|
|
22
34
|
fullWidth?: boolean;
|
|
23
35
|
loading?: boolean;
|
|
24
36
|
disabled?: boolean;
|
|
37
|
+
hovered?: boolean;
|
|
38
|
+
focused?: boolean;
|
|
39
|
+
active?: boolean;
|
|
25
40
|
iconOnly?: boolean;
|
|
26
41
|
pill?: boolean;
|
|
27
42
|
}
|
|
28
43
|
declare function getButtonClasses(opts?: ButtonRecipeOptions): string;
|
|
29
44
|
|
|
30
|
-
declare const
|
|
31
|
-
|
|
45
|
+
declare const CARD_VARIANTS: {
|
|
46
|
+
readonly elevated: true;
|
|
47
|
+
readonly flat: true;
|
|
48
|
+
readonly outline: true;
|
|
49
|
+
readonly ghost: true;
|
|
50
|
+
};
|
|
51
|
+
type CardVariant = keyof typeof CARD_VARIANTS;
|
|
32
52
|
interface CardRecipeOptions {
|
|
33
53
|
variant?: CardVariant;
|
|
34
54
|
interactive?: boolean;
|
|
35
55
|
padded?: boolean;
|
|
36
56
|
fullHeight?: boolean;
|
|
37
57
|
disabled?: boolean;
|
|
58
|
+
loading?: boolean;
|
|
59
|
+
hovered?: boolean;
|
|
60
|
+
focused?: boolean;
|
|
38
61
|
}
|
|
39
62
|
declare function getCardClasses(opts?: CardRecipeOptions): string;
|
|
40
63
|
|
|
41
|
-
declare const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
64
|
+
declare const INPUT_STATES: {
|
|
65
|
+
readonly default: true;
|
|
66
|
+
readonly error: true;
|
|
67
|
+
readonly success: true;
|
|
68
|
+
readonly disabled: true;
|
|
69
|
+
readonly loading: true;
|
|
70
|
+
};
|
|
71
|
+
declare const INPUT_SIZES: {
|
|
72
|
+
readonly sm: true;
|
|
73
|
+
readonly md: true;
|
|
74
|
+
readonly lg: true;
|
|
75
|
+
};
|
|
76
|
+
type InputState = keyof typeof INPUT_STATES;
|
|
77
|
+
type InputSize = keyof typeof INPUT_SIZES;
|
|
45
78
|
interface InputRecipeOptions {
|
|
46
79
|
state?: InputState;
|
|
47
80
|
size?: InputSize;
|
|
48
81
|
fullWidth?: boolean;
|
|
49
82
|
pill?: boolean;
|
|
83
|
+
focused?: boolean;
|
|
84
|
+
hovered?: boolean;
|
|
50
85
|
}
|
|
51
86
|
declare function getInputClasses(opts?: InputRecipeOptions): string;
|
|
52
87
|
|
|
53
|
-
declare const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
88
|
+
declare const BADGE_VARIANTS: {
|
|
89
|
+
readonly primary: true;
|
|
90
|
+
readonly secondary: true;
|
|
91
|
+
readonly success: true;
|
|
92
|
+
readonly warning: true;
|
|
93
|
+
readonly danger: true;
|
|
94
|
+
readonly neutral: true;
|
|
95
|
+
readonly info: true;
|
|
96
|
+
};
|
|
97
|
+
declare const BADGE_SIZES: {
|
|
98
|
+
readonly sm: true;
|
|
99
|
+
readonly md: true;
|
|
100
|
+
readonly lg: true;
|
|
101
|
+
};
|
|
102
|
+
type BadgeVariant = keyof typeof BADGE_VARIANTS;
|
|
103
|
+
type BadgeSize = keyof typeof BADGE_SIZES;
|
|
57
104
|
/**
|
|
58
105
|
* Generate classes for the Badge component.
|
|
59
106
|
* @sync v2.x - Synced with latest design tokens, including hover states.
|
|
@@ -62,20 +109,37 @@ interface BadgeRecipeOptions {
|
|
|
62
109
|
variant?: BadgeVariant;
|
|
63
110
|
size?: BadgeSize;
|
|
64
111
|
interactive?: boolean;
|
|
112
|
+
hovered?: boolean;
|
|
113
|
+
focused?: boolean;
|
|
114
|
+
active?: boolean;
|
|
65
115
|
disabled?: boolean;
|
|
66
116
|
loading?: boolean;
|
|
67
117
|
}
|
|
68
118
|
declare function getBadgeClasses(opts?: BadgeRecipeOptions): string;
|
|
69
119
|
|
|
70
|
-
declare const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
120
|
+
declare const ICONBOX_VARIANTS: {
|
|
121
|
+
readonly primary: true;
|
|
122
|
+
readonly success: true;
|
|
123
|
+
readonly warning: true;
|
|
124
|
+
readonly danger: true;
|
|
125
|
+
readonly info: true;
|
|
126
|
+
};
|
|
127
|
+
declare const ICONBOX_SIZES: {
|
|
128
|
+
readonly sm: true;
|
|
129
|
+
readonly md: true;
|
|
130
|
+
readonly lg: true;
|
|
131
|
+
};
|
|
132
|
+
type IconBoxVariant = keyof typeof ICONBOX_VARIANTS;
|
|
133
|
+
type IconBoxSize = keyof typeof ICONBOX_SIZES;
|
|
74
134
|
interface IconBoxRecipeOptions {
|
|
75
135
|
variant?: IconBoxVariant;
|
|
76
136
|
size?: IconBoxSize;
|
|
77
137
|
disabled?: boolean;
|
|
78
138
|
loading?: boolean;
|
|
139
|
+
interactive?: boolean;
|
|
140
|
+
hovered?: boolean;
|
|
141
|
+
focused?: boolean;
|
|
142
|
+
active?: boolean;
|
|
79
143
|
}
|
|
80
144
|
declare function getIconBoxClasses(opts?: IconBoxRecipeOptions): string;
|
|
81
145
|
|
|
@@ -101,6 +165,7 @@ declare function getTestimonialAuthorTitleClasses(): string;
|
|
|
101
165
|
interface PricingCardRecipeOptions {
|
|
102
166
|
featured?: boolean;
|
|
103
167
|
disabled?: boolean;
|
|
168
|
+
loading?: boolean;
|
|
104
169
|
}
|
|
105
170
|
declare function getPricingCardClasses(opts?: PricingCardRecipeOptions): string;
|
|
106
171
|
declare function getPricingCardBadgeClasses(): string;
|
|
@@ -108,11 +173,18 @@ declare function getPricingCardPriceContainerClasses(): string;
|
|
|
108
173
|
declare function getPricingCardPriceClasses(): string;
|
|
109
174
|
declare function getPricingCardDescriptionClasses(): string;
|
|
110
175
|
|
|
176
|
+
declare const RATING_SIZES: {
|
|
177
|
+
readonly sm: true;
|
|
178
|
+
readonly md: true;
|
|
179
|
+
readonly lg: true;
|
|
180
|
+
};
|
|
181
|
+
type RatingSize = keyof typeof RATING_SIZES;
|
|
111
182
|
/**
|
|
112
183
|
* Generate classes for the Rating component.
|
|
113
184
|
* @sync v2.x - Synced with latest design tokens.
|
|
114
185
|
*/
|
|
115
186
|
interface RatingRecipeOptions {
|
|
187
|
+
size?: RatingSize;
|
|
116
188
|
disabled?: boolean;
|
|
117
189
|
loading?: boolean;
|
|
118
190
|
}
|