@putdotio/design 3.7.0 → 3.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.
@@ -454,7 +454,7 @@
454
454
  "cssName": "--input-bg",
455
455
  "type": "color",
456
456
  "mode": "light",
457
- "value": "hsl(0, 0%, 100%)",
457
+ "value": "hsl(0, 0%, 97.3%)",
458
458
  "originalValue": "{component.field.background}",
459
459
  "description": "Deprecated alias. Use --field-bg (component.field.background).",
460
460
  "deprecated": true
@@ -463,7 +463,7 @@
463
463
  "cssName": "--input-bg",
464
464
  "type": "color",
465
465
  "mode": "dark",
466
- "value": "hsl(0, 0%, 8.5%)",
466
+ "value": "hsl(0, 0%, 11.0%)",
467
467
  "originalValue": "{component.field.backgroundDark}",
468
468
  "description": "Deprecated alias. Use --field-bg (component.field.backgroundDark).",
469
469
  "deprecated": true
@@ -472,7 +472,7 @@
472
472
  "cssName": "--input-border",
473
473
  "type": "color",
474
474
  "mode": "light",
475
- "value": "hsl(0, 0%, 85.8%)",
475
+ "value": "hsl(0, 0%, 88.7%)",
476
476
  "originalValue": "{component.field.border}",
477
477
  "description": "Deprecated alias. Use --field-border (component.field.border).",
478
478
  "deprecated": true
@@ -481,7 +481,7 @@
481
481
  "cssName": "--input-border",
482
482
  "type": "color",
483
483
  "mode": "dark",
484
- "value": "hsl(0, 0%, 24.3%)",
484
+ "value": "hsl(0, 0%, 20.5%)",
485
485
  "originalValue": "{component.field.borderDark}",
486
486
  "description": "Deprecated alias. Use --field-border (component.field.borderDark).",
487
487
  "deprecated": true
@@ -517,7 +517,7 @@
517
517
  "cssName": "--input-border-focus",
518
518
  "type": "color",
519
519
  "mode": "light",
520
- "value": "hsl(0, 0%, 78.0%)",
520
+ "value": "hsl(0, 0%, 52.3%)",
521
521
  "originalValue": "{component.field.borderFocus}",
522
522
  "description": "Deprecated alias. Use --field-border-focus (component.field.borderFocus).",
523
523
  "deprecated": true
@@ -526,7 +526,7 @@
526
526
  "cssName": "--input-border-focus",
527
527
  "type": "color",
528
528
  "mode": "dark",
529
- "value": "hsl(0, 0%, 31.2%)",
529
+ "value": "hsl(0, 0%, 49.4%)",
530
530
  "originalValue": "{component.field.borderFocusDark}",
531
531
  "description": "Deprecated alias. Use --field-border-focus (component.field.borderFocusDark).",
532
532
  "deprecated": true
@@ -535,7 +535,7 @@
535
535
  "cssName": "--input-ring",
536
536
  "type": "string",
537
537
  "mode": "light",
538
- "value": "0 0 0 1px hsl(0, 0%, 78.0%)",
538
+ "value": "0 0 0 1px hsl(0, 0%, 52.3%)",
539
539
  "originalValue": "{component.field.ring}",
540
540
  "description": "Deprecated alias. Use --field-ring (component.field.ring).",
541
541
  "deprecated": true
@@ -544,7 +544,7 @@
544
544
  "cssName": "--input-ring",
545
545
  "type": "string",
546
546
  "mode": "dark",
547
- "value": "0 0 0 1px hsl(0, 0%, 31.2%)",
547
+ "value": "0 0 0 1px hsl(0, 0%, 49.4%)",
548
548
  "originalValue": "{component.field.ringDark}",
549
549
  "description": "Deprecated alias. Use --field-ring (component.field.ringDark).",
550
550
  "deprecated": true
@@ -589,48 +589,48 @@
589
589
  "cssName": "--field-bg",
590
590
  "type": "color",
591
591
  "mode": "light",
592
- "value": "hsl(0, 0%, 100%)",
593
- "originalValue": "{surface.light.appBg}",
594
- "description": "Form-control fill. Fields stay on the app background surface, even inside a raised panel."
592
+ "value": "hsl(0, 0%, 97.3%)",
593
+ "originalValue": "{color.neutral.light.bgSecondary}",
594
+ "description": "Form-control fill. Fields are filled so they read on the page background as well as inside panels."
595
595
  },
596
596
  "component.field.backgroundDark": {
597
597
  "cssName": "--field-bg",
598
598
  "type": "color",
599
599
  "mode": "dark",
600
- "value": "hsl(0, 0%, 8.5%)",
601
- "originalValue": "{surface.dark.appBg}",
600
+ "value": "hsl(0, 0%, 11.0%)",
601
+ "originalValue": "{color.neutral.dark.bgSecondary}",
602
602
  "description": "Dark-mode form-control fill."
603
603
  },
604
604
  "component.field.backgroundDisabled": {
605
605
  "cssName": "--field-bg-disabled",
606
606
  "type": "color",
607
607
  "mode": "light",
608
- "value": "hsl(0, 0%, 97.3%)",
609
- "originalValue": "{color.neutral.light.bgSecondary}",
610
- "description": "Disabled form-control fill."
608
+ "value": "hsl(0, 0%, 95.1%)",
609
+ "originalValue": "{color.neutral.light.componentBg}",
610
+ "description": "Disabled form-control fill, a step off the resting fill."
611
611
  },
612
612
  "component.field.backgroundDisabledDark": {
613
613
  "cssName": "--field-bg-disabled",
614
614
  "type": "color",
615
615
  "mode": "dark",
616
- "value": "hsl(0, 0%, 11.0%)",
617
- "originalValue": "{color.neutral.dark.bgSecondary}",
616
+ "value": "hsl(0, 0%, 13.6%)",
617
+ "originalValue": "{color.neutral.dark.componentBg}",
618
618
  "description": "Dark-mode disabled form-control fill."
619
619
  },
620
620
  "component.field.border": {
621
621
  "cssName": "--field-border",
622
622
  "type": "color",
623
623
  "mode": "light",
624
- "value": "hsl(0, 0%, 85.8%)",
625
- "originalValue": "{color.neutral.light.border}",
624
+ "value": "hsl(0, 0%, 88.7%)",
625
+ "originalValue": "{color.neutral.light.line}",
626
626
  "description": "Resting form-control border."
627
627
  },
628
628
  "component.field.borderDark": {
629
629
  "cssName": "--field-border",
630
630
  "type": "color",
631
631
  "mode": "dark",
632
- "value": "hsl(0, 0%, 24.3%)",
633
- "originalValue": "{color.neutral.dark.border}",
632
+ "value": "hsl(0, 0%, 20.5%)",
633
+ "originalValue": "{color.neutral.dark.line}",
634
634
  "description": "Dark-mode resting form-control border."
635
635
  },
636
636
  "component.field.borderHover": {
@@ -653,17 +653,17 @@
653
653
  "cssName": "--field-border-focus",
654
654
  "type": "color",
655
655
  "mode": "light",
656
- "value": "hsl(0, 0%, 78.0%)",
657
- "originalValue": "{color.neutral.light.borderHover}",
658
- "description": "Focused form-control border. Focus matches hover and does not use the yellow focus shadow."
656
+ "value": "hsl(0, 0%, 52.3%)",
657
+ "originalValue": "{color.neutral.light.solidHover}",
658
+ "description": "Focused form-control border, a step past hover; at least 3:1 against the fill, the page, and panels. Does not use the yellow focus shadow."
659
659
  },
660
660
  "component.field.borderFocusDark": {
661
661
  "cssName": "--field-border-focus",
662
662
  "type": "color",
663
663
  "mode": "dark",
664
- "value": "hsl(0, 0%, 31.2%)",
665
- "originalValue": "{color.neutral.dark.borderHover}",
666
- "description": "Dark-mode focused form-control border. Focus matches hover and does not use the yellow focus shadow."
664
+ "value": "hsl(0, 0%, 49.4%)",
665
+ "originalValue": "{color.neutral.dark.solidHover}",
666
+ "description": "Dark-mode focused form-control border, a step past hover; at least 3:1 against the fill, the page, and panels."
667
667
  },
668
668
  "component.field.text": {
669
669
  "cssName": "--field-text",
@@ -709,17 +709,17 @@
709
709
  "cssName": "--field-ring",
710
710
  "type": "string",
711
711
  "mode": "light",
712
- "value": "0 0 0 1px hsl(0, 0%, 78.0%)",
713
- "originalValue": "0 0 0 1px {color.neutral.light.borderHover}",
714
- "description": "Quiet field focus ring. Brand-yellow shadow focus is reserved for buttons, links, nav, and TV focus."
712
+ "value": "0 0 0 1px hsl(0, 0%, 52.3%)",
713
+ "originalValue": "0 0 0 1px {color.neutral.light.solidHover}",
714
+ "description": "Quiet field focus ring in the focus border colour. Buttons, links, and nav focus with --shadow-focus instead."
715
715
  },
716
716
  "component.field.ringDark": {
717
717
  "cssName": "--field-ring",
718
718
  "type": "string",
719
719
  "mode": "dark",
720
- "value": "0 0 0 1px hsl(0, 0%, 31.2%)",
721
- "originalValue": "0 0 0 1px {color.neutral.dark.borderHover}",
722
- "description": "Dark-mode quiet field focus ring. Brand-yellow shadow focus is reserved for buttons, links, nav, and TV focus."
720
+ "value": "0 0 0 1px hsl(0, 0%, 49.4%)",
721
+ "originalValue": "0 0 0 1px {color.neutral.dark.solidHover}",
722
+ "description": "Dark-mode quiet field focus ring. Buttons, links, and nav focus with --shadow-focus instead."
723
723
  },
724
724
  "component.panel.background": {
725
725
  "cssName": "--panel-bg",
@@ -1025,15 +1025,15 @@
1025
1025
  "cssName": "--input",
1026
1026
  "type": "color",
1027
1027
  "mode": "light",
1028
- "value": "hsl(0, 0%, 85.8%)",
1029
- "originalValue": "{color.neutral.light.border}"
1028
+ "value": "hsl(0, 0%, 88.7%)",
1029
+ "originalValue": "{component.field.border}"
1030
1030
  },
1031
1031
  "component.alias.inputDark": {
1032
1032
  "cssName": "--input",
1033
1033
  "type": "color",
1034
1034
  "mode": "dark",
1035
- "value": "hsl(0, 0%, 24.3%)",
1036
- "originalValue": "{color.neutral.dark.border}"
1035
+ "value": "hsl(0, 0%, 20.5%)",
1036
+ "originalValue": "{component.field.borderDark}"
1037
1037
  },
1038
1038
  "component.alias.ring": {
1039
1039
  "cssName": "--ring",
@@ -3234,9 +3234,18 @@
3234
3234
  "elevation.focus": {
3235
3235
  "cssName": "--shadow-focus",
3236
3236
  "type": "string",
3237
- "mode": "global",
3238
- "value": "0 0 0 3px hsla(47, 100%, 65%, 0.35)",
3239
- "originalValue": "0 0 0 3px {elevation.focusColor}"
3237
+ "mode": "light",
3238
+ "value": "0 0 0 2px hsl(0, 0%, 99.0%), 0 0 0 4px hsl(0, 0%, 52.3%)",
3239
+ "originalValue": "0 0 0 2px {color.neutral.light.bg}, 0 0 0 4px {color.neutral.light.solidHover}",
3240
+ "description": "Button, link, and nav focus: a 2px page-coloured gap, then a 2px opaque ring at least 3:1 against the page and panels."
3241
+ },
3242
+ "elevation.focusDark": {
3243
+ "cssName": "--shadow-focus",
3244
+ "type": "string",
3245
+ "mode": "dark",
3246
+ "value": "0 0 0 2px hsl(0, 0%, 8.5%), 0 0 0 4px hsl(0, 0%, 49.4%)",
3247
+ "originalValue": "0 0 0 2px {color.neutral.dark.bg}, 0 0 0 4px {color.neutral.dark.solidHover}",
3248
+ "description": "Dark-mode button, link, and nav focus ring."
3240
3249
  },
3241
3250
  "typography.fontFamily.sans": {
3242
3251
  "cssName": "--font-sans",
@@ -3557,6 +3566,13 @@
3557
3566
  "value": "120ms",
3558
3567
  "originalValue": "120ms"
3559
3568
  },
3569
+ "motion.duration.reveal": {
3570
+ "cssName": "--dur-reveal",
3571
+ "type": "duration",
3572
+ "mode": "global",
3573
+ "value": "180ms",
3574
+ "originalValue": "180ms"
3575
+ },
3560
3576
  "motion.duration.base": {
3561
3577
  "cssName": "--dur-base",
3562
3578
  "type": "duration",
package/dist/tokens.js CHANGED
@@ -456,7 +456,7 @@ export const tokens = {
456
456
  "cssName": "--input-bg",
457
457
  "type": "color",
458
458
  "mode": "light",
459
- "value": "hsl(0, 0%, 100%)",
459
+ "value": "hsl(0, 0%, 97.3%)",
460
460
  "originalValue": "{component.field.background}",
461
461
  "description": "Deprecated alias. Use --field-bg (component.field.background).",
462
462
  "deprecated": true
@@ -465,7 +465,7 @@ export const tokens = {
465
465
  "cssName": "--input-bg",
466
466
  "type": "color",
467
467
  "mode": "dark",
468
- "value": "hsl(0, 0%, 8.5%)",
468
+ "value": "hsl(0, 0%, 11.0%)",
469
469
  "originalValue": "{component.field.backgroundDark}",
470
470
  "description": "Deprecated alias. Use --field-bg (component.field.backgroundDark).",
471
471
  "deprecated": true
@@ -474,7 +474,7 @@ export const tokens = {
474
474
  "cssName": "--input-border",
475
475
  "type": "color",
476
476
  "mode": "light",
477
- "value": "hsl(0, 0%, 85.8%)",
477
+ "value": "hsl(0, 0%, 88.7%)",
478
478
  "originalValue": "{component.field.border}",
479
479
  "description": "Deprecated alias. Use --field-border (component.field.border).",
480
480
  "deprecated": true
@@ -483,7 +483,7 @@ export const tokens = {
483
483
  "cssName": "--input-border",
484
484
  "type": "color",
485
485
  "mode": "dark",
486
- "value": "hsl(0, 0%, 24.3%)",
486
+ "value": "hsl(0, 0%, 20.5%)",
487
487
  "originalValue": "{component.field.borderDark}",
488
488
  "description": "Deprecated alias. Use --field-border (component.field.borderDark).",
489
489
  "deprecated": true
@@ -519,7 +519,7 @@ export const tokens = {
519
519
  "cssName": "--input-border-focus",
520
520
  "type": "color",
521
521
  "mode": "light",
522
- "value": "hsl(0, 0%, 78.0%)",
522
+ "value": "hsl(0, 0%, 52.3%)",
523
523
  "originalValue": "{component.field.borderFocus}",
524
524
  "description": "Deprecated alias. Use --field-border-focus (component.field.borderFocus).",
525
525
  "deprecated": true
@@ -528,7 +528,7 @@ export const tokens = {
528
528
  "cssName": "--input-border-focus",
529
529
  "type": "color",
530
530
  "mode": "dark",
531
- "value": "hsl(0, 0%, 31.2%)",
531
+ "value": "hsl(0, 0%, 49.4%)",
532
532
  "originalValue": "{component.field.borderFocusDark}",
533
533
  "description": "Deprecated alias. Use --field-border-focus (component.field.borderFocusDark).",
534
534
  "deprecated": true
@@ -537,7 +537,7 @@ export const tokens = {
537
537
  "cssName": "--input-ring",
538
538
  "type": "string",
539
539
  "mode": "light",
540
- "value": "0 0 0 1px hsl(0, 0%, 78.0%)",
540
+ "value": "0 0 0 1px hsl(0, 0%, 52.3%)",
541
541
  "originalValue": "{component.field.ring}",
542
542
  "description": "Deprecated alias. Use --field-ring (component.field.ring).",
543
543
  "deprecated": true
@@ -546,7 +546,7 @@ export const tokens = {
546
546
  "cssName": "--input-ring",
547
547
  "type": "string",
548
548
  "mode": "dark",
549
- "value": "0 0 0 1px hsl(0, 0%, 31.2%)",
549
+ "value": "0 0 0 1px hsl(0, 0%, 49.4%)",
550
550
  "originalValue": "{component.field.ringDark}",
551
551
  "description": "Deprecated alias. Use --field-ring (component.field.ringDark).",
552
552
  "deprecated": true
@@ -591,48 +591,48 @@ export const tokens = {
591
591
  "cssName": "--field-bg",
592
592
  "type": "color",
593
593
  "mode": "light",
594
- "value": "hsl(0, 0%, 100%)",
595
- "originalValue": "{surface.light.appBg}",
596
- "description": "Form-control fill. Fields stay on the app background surface, even inside a raised panel."
594
+ "value": "hsl(0, 0%, 97.3%)",
595
+ "originalValue": "{color.neutral.light.bgSecondary}",
596
+ "description": "Form-control fill. Fields are filled so they read on the page background as well as inside panels."
597
597
  },
598
598
  "component.field.backgroundDark": {
599
599
  "cssName": "--field-bg",
600
600
  "type": "color",
601
601
  "mode": "dark",
602
- "value": "hsl(0, 0%, 8.5%)",
603
- "originalValue": "{surface.dark.appBg}",
602
+ "value": "hsl(0, 0%, 11.0%)",
603
+ "originalValue": "{color.neutral.dark.bgSecondary}",
604
604
  "description": "Dark-mode form-control fill."
605
605
  },
606
606
  "component.field.backgroundDisabled": {
607
607
  "cssName": "--field-bg-disabled",
608
608
  "type": "color",
609
609
  "mode": "light",
610
- "value": "hsl(0, 0%, 97.3%)",
611
- "originalValue": "{color.neutral.light.bgSecondary}",
612
- "description": "Disabled form-control fill."
610
+ "value": "hsl(0, 0%, 95.1%)",
611
+ "originalValue": "{color.neutral.light.componentBg}",
612
+ "description": "Disabled form-control fill, a step off the resting fill."
613
613
  },
614
614
  "component.field.backgroundDisabledDark": {
615
615
  "cssName": "--field-bg-disabled",
616
616
  "type": "color",
617
617
  "mode": "dark",
618
- "value": "hsl(0, 0%, 11.0%)",
619
- "originalValue": "{color.neutral.dark.bgSecondary}",
618
+ "value": "hsl(0, 0%, 13.6%)",
619
+ "originalValue": "{color.neutral.dark.componentBg}",
620
620
  "description": "Dark-mode disabled form-control fill."
621
621
  },
622
622
  "component.field.border": {
623
623
  "cssName": "--field-border",
624
624
  "type": "color",
625
625
  "mode": "light",
626
- "value": "hsl(0, 0%, 85.8%)",
627
- "originalValue": "{color.neutral.light.border}",
626
+ "value": "hsl(0, 0%, 88.7%)",
627
+ "originalValue": "{color.neutral.light.line}",
628
628
  "description": "Resting form-control border."
629
629
  },
630
630
  "component.field.borderDark": {
631
631
  "cssName": "--field-border",
632
632
  "type": "color",
633
633
  "mode": "dark",
634
- "value": "hsl(0, 0%, 24.3%)",
635
- "originalValue": "{color.neutral.dark.border}",
634
+ "value": "hsl(0, 0%, 20.5%)",
635
+ "originalValue": "{color.neutral.dark.line}",
636
636
  "description": "Dark-mode resting form-control border."
637
637
  },
638
638
  "component.field.borderHover": {
@@ -655,17 +655,17 @@ export const tokens = {
655
655
  "cssName": "--field-border-focus",
656
656
  "type": "color",
657
657
  "mode": "light",
658
- "value": "hsl(0, 0%, 78.0%)",
659
- "originalValue": "{color.neutral.light.borderHover}",
660
- "description": "Focused form-control border. Focus matches hover and does not use the yellow focus shadow."
658
+ "value": "hsl(0, 0%, 52.3%)",
659
+ "originalValue": "{color.neutral.light.solidHover}",
660
+ "description": "Focused form-control border, a step past hover; at least 3:1 against the fill, the page, and panels. Does not use the yellow focus shadow."
661
661
  },
662
662
  "component.field.borderFocusDark": {
663
663
  "cssName": "--field-border-focus",
664
664
  "type": "color",
665
665
  "mode": "dark",
666
- "value": "hsl(0, 0%, 31.2%)",
667
- "originalValue": "{color.neutral.dark.borderHover}",
668
- "description": "Dark-mode focused form-control border. Focus matches hover and does not use the yellow focus shadow."
666
+ "value": "hsl(0, 0%, 49.4%)",
667
+ "originalValue": "{color.neutral.dark.solidHover}",
668
+ "description": "Dark-mode focused form-control border, a step past hover; at least 3:1 against the fill, the page, and panels."
669
669
  },
670
670
  "component.field.text": {
671
671
  "cssName": "--field-text",
@@ -711,17 +711,17 @@ export const tokens = {
711
711
  "cssName": "--field-ring",
712
712
  "type": "string",
713
713
  "mode": "light",
714
- "value": "0 0 0 1px hsl(0, 0%, 78.0%)",
715
- "originalValue": "0 0 0 1px {color.neutral.light.borderHover}",
716
- "description": "Quiet field focus ring. Brand-yellow shadow focus is reserved for buttons, links, nav, and TV focus."
714
+ "value": "0 0 0 1px hsl(0, 0%, 52.3%)",
715
+ "originalValue": "0 0 0 1px {color.neutral.light.solidHover}",
716
+ "description": "Quiet field focus ring in the focus border colour. Buttons, links, and nav focus with --shadow-focus instead."
717
717
  },
718
718
  "component.field.ringDark": {
719
719
  "cssName": "--field-ring",
720
720
  "type": "string",
721
721
  "mode": "dark",
722
- "value": "0 0 0 1px hsl(0, 0%, 31.2%)",
723
- "originalValue": "0 0 0 1px {color.neutral.dark.borderHover}",
724
- "description": "Dark-mode quiet field focus ring. Brand-yellow shadow focus is reserved for buttons, links, nav, and TV focus."
722
+ "value": "0 0 0 1px hsl(0, 0%, 49.4%)",
723
+ "originalValue": "0 0 0 1px {color.neutral.dark.solidHover}",
724
+ "description": "Dark-mode quiet field focus ring. Buttons, links, and nav focus with --shadow-focus instead."
725
725
  },
726
726
  "component.panel.background": {
727
727
  "cssName": "--panel-bg",
@@ -1027,15 +1027,15 @@ export const tokens = {
1027
1027
  "cssName": "--input",
1028
1028
  "type": "color",
1029
1029
  "mode": "light",
1030
- "value": "hsl(0, 0%, 85.8%)",
1031
- "originalValue": "{color.neutral.light.border}"
1030
+ "value": "hsl(0, 0%, 88.7%)",
1031
+ "originalValue": "{component.field.border}"
1032
1032
  },
1033
1033
  "component.alias.inputDark": {
1034
1034
  "cssName": "--input",
1035
1035
  "type": "color",
1036
1036
  "mode": "dark",
1037
- "value": "hsl(0, 0%, 24.3%)",
1038
- "originalValue": "{color.neutral.dark.border}"
1037
+ "value": "hsl(0, 0%, 20.5%)",
1038
+ "originalValue": "{component.field.borderDark}"
1039
1039
  },
1040
1040
  "component.alias.ring": {
1041
1041
  "cssName": "--ring",
@@ -3236,9 +3236,18 @@ export const tokens = {
3236
3236
  "elevation.focus": {
3237
3237
  "cssName": "--shadow-focus",
3238
3238
  "type": "string",
3239
- "mode": "global",
3240
- "value": "0 0 0 3px hsla(47, 100%, 65%, 0.35)",
3241
- "originalValue": "0 0 0 3px {elevation.focusColor}"
3239
+ "mode": "light",
3240
+ "value": "0 0 0 2px hsl(0, 0%, 99.0%), 0 0 0 4px hsl(0, 0%, 52.3%)",
3241
+ "originalValue": "0 0 0 2px {color.neutral.light.bg}, 0 0 0 4px {color.neutral.light.solidHover}",
3242
+ "description": "Button, link, and nav focus: a 2px page-coloured gap, then a 2px opaque ring at least 3:1 against the page and panels."
3243
+ },
3244
+ "elevation.focusDark": {
3245
+ "cssName": "--shadow-focus",
3246
+ "type": "string",
3247
+ "mode": "dark",
3248
+ "value": "0 0 0 2px hsl(0, 0%, 8.5%), 0 0 0 4px hsl(0, 0%, 49.4%)",
3249
+ "originalValue": "0 0 0 2px {color.neutral.dark.bg}, 0 0 0 4px {color.neutral.dark.solidHover}",
3250
+ "description": "Dark-mode button, link, and nav focus ring."
3242
3251
  },
3243
3252
  "typography.fontFamily.sans": {
3244
3253
  "cssName": "--font-sans",
@@ -3559,6 +3568,13 @@ export const tokens = {
3559
3568
  "value": "120ms",
3560
3569
  "originalValue": "120ms"
3561
3570
  },
3571
+ "motion.duration.reveal": {
3572
+ "cssName": "--dur-reveal",
3573
+ "type": "duration",
3574
+ "mode": "global",
3575
+ "value": "180ms",
3576
+ "originalValue": "180ms"
3577
+ },
3562
3578
  "motion.duration.base": {
3563
3579
  "cssName": "--dur-base",
3564
3580
  "type": "duration",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@putdotio/design",
3
- "version": "3.7.0",
3
+ "version": "3.9.0",
4
4
  "description": "Public put.io design tokens, brand assets, and design-system guidance.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/system/README.md CHANGED
@@ -83,7 +83,7 @@ its cards use itself.
83
83
 
84
84
  ## Core rules
85
85
 
86
- - **Yellow** follows [Colors](../DESIGN.md#colors). Guide specifics: `--yellow-solid-hover` is the hover peer with one value in both modes, and button focus-visible rings use `--shadow-focus` (the yellow at 35% alpha, `--shadow-focus-color`). Form fields focus with the neutral `--field-ring` instead.
86
+ - **Yellow** follows [Colors](../DESIGN.md#colors). Guide specifics: `--yellow-solid-hover` is the hover peer with one value in both modes, and button focus-visible rings use `--shadow-focus`: a 2px `--bg` gap, then a 2px `--solid-hover` ring, at least 3:1 against the page and panels. `--shadow-focus-color` (the yellow at 35% alpha) stays only as shadcn's `--ring`. Form fields focus with `--field-ring` instead.
87
87
  - **Yellow as text on light** uses `--yellow-text-secondary` (≈5:1, AA); `--yellow-solid` is fill-only on light backgrounds.
88
88
  - **Labels on yellow** use `--primary-foreground`, a warm dark that passes AA on the yellow fill.
89
89
  - **One design, two modes.** Light and dark are the same markup and components with different token values. Toggle `.dark` on `<html>`; one page serves both modes. Components consume semantic tokens (`--bg`, `--text`, `--border`, `--accent`, …) instead of raw `#hex` or `hsl()`.
@@ -139,7 +139,7 @@ own, so the two name systems cannot drift.
139
139
  | `--accent` / `--accent-foreground` | `--component-bg` / `--text` |
140
140
  | `--card` / `--card-foreground` | `--component-bg` / `--text` |
141
141
  | `--popover` / `--popover-foreground` | `--component-bg` / `--text` |
142
- | `--input` | `--border` |
142
+ | `--input` | `--field-border` |
143
143
  | `--ring` | `--shadow-focus-color` |
144
144
  | `--background` / `--foreground` | `--bg` / `--text` |
145
145
 
@@ -172,10 +172,8 @@ directly.
172
172
 
173
173
  shadcn marks parts of compound components with `data-slot="card-header"`,
174
174
  `data-slot="card-title"`, and so on. put.io does the same on the folder picker
175
- (`data-slot="modal" / "modal-header" / "modal-body" / "modal-footer"`) and the
176
- auth cards in `web-p00c-auth-signin.html` and `web-p00d-auth-signup.html`
177
- (`data-slot="auth" / "auth-header" / "auth-body"`), so external CSS can target
178
- one part without nested class chains.
175
+ (`data-slot="modal" / "modal-header" / "modal-body" / "modal-footer"`), so
176
+ external CSS can target one part without nested class chains.
179
177
 
180
178
  ## Design variants
181
179