@telus-uds/theme-allium 4.22.0 → 4.23.1

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.
Files changed (237) hide show
  1. package/build/android/Footnote.json +2 -0
  2. package/build/android/FootnoteLink.json +1 -0
  3. package/build/android/TermsAndConditions.json +57 -0
  4. package/build/android/Typography.json +3 -3
  5. package/build/android/schema.json +1026 -960
  6. package/build/android/theme.json +64 -4
  7. package/build/ios/Footnote.json +2 -0
  8. package/build/ios/FootnoteLink.json +1 -0
  9. package/build/ios/TermsAndConditions.json +57 -0
  10. package/build/ios/Typography.json +3 -3
  11. package/build/ios/schema.json +1026 -960
  12. package/build/ios/theme.json +64 -4
  13. package/build/rn/ActivityIndicator.js +1 -1
  14. package/build/rn/Badge.js +1 -1
  15. package/build/rn/BlockQuote.js +1 -1
  16. package/build/rn/Box.js +1 -1
  17. package/build/rn/Breadcrumbs.js +1 -1
  18. package/build/rn/Button.js +3 -3
  19. package/build/rn/ButtonDropdown.js +3 -3
  20. package/build/rn/ButtonGroup.js +1 -1
  21. package/build/rn/ButtonGroupItem.js +3 -3
  22. package/build/rn/Callout.js +1 -1
  23. package/build/rn/Card.js +3 -3
  24. package/build/rn/Carousel.js +1 -1
  25. package/build/rn/CarouselTabsPanelItem.js +3 -3
  26. package/build/rn/CarouselThumbnail.js +3 -3
  27. package/build/rn/Checkbox.js +3 -3
  28. package/build/rn/CheckboxCard.js +3 -3
  29. package/build/rn/CheckboxCardGroup.js +1 -1
  30. package/build/rn/CheckboxGroup.js +1 -1
  31. package/build/rn/ChevronLink.js +3 -3
  32. package/build/rn/ColourToggle.js +3 -3
  33. package/build/rn/Countdown.js +1 -1
  34. package/build/rn/DatePicker.js +1 -1
  35. package/build/rn/Disclaimer.js +1 -1
  36. package/build/rn/Divider.js +1 -1
  37. package/build/rn/ExpandCollapse.js +1 -1
  38. package/build/rn/ExpandCollapseControl.js +1 -1
  39. package/build/rn/ExpandCollapseMini.js +1 -1
  40. package/build/rn/ExpandCollapseMiniControl.js +1 -1
  41. package/build/rn/ExpandCollapsePanel.js +1 -1
  42. package/build/rn/Feedback.js +1 -1
  43. package/build/rn/Fieldset.js +1 -1
  44. package/build/rn/Footnote.js +3 -1
  45. package/build/rn/FootnoteLink.js +2 -1
  46. package/build/rn/HorizontalScrollButton.js +3 -3
  47. package/build/rn/Icon.js +1 -1
  48. package/build/rn/IconButton.js +3 -3
  49. package/build/rn/Image.js +1 -1
  50. package/build/rn/InputLabel.js +1 -1
  51. package/build/rn/InputSupports.js +1 -1
  52. package/build/rn/Link.js +3 -3
  53. package/build/rn/List.js +1 -1
  54. package/build/rn/Listbox.js +3 -3
  55. package/build/rn/Modal.js +1 -1
  56. package/build/rn/MultiSelectFilter.js +1 -1
  57. package/build/rn/NavigationBar.js +3 -3
  58. package/build/rn/Notification.js +1 -1
  59. package/build/rn/OrderedList.js +1 -1
  60. package/build/rn/Pagination.js +1 -1
  61. package/build/rn/PaginationPageButton.js +3 -3
  62. package/build/rn/PaginationSideButton.js +3 -3
  63. package/build/rn/PreviewCard.js +4 -4
  64. package/build/rn/PriceLockup.js +1 -1
  65. package/build/rn/Progress.js +1 -1
  66. package/build/rn/ProgressBar.js +1 -1
  67. package/build/rn/QuantitySelector.js +1 -1
  68. package/build/rn/QuantitySelectorSideButton.js +1 -1
  69. package/build/rn/QuickLinks.js +1 -1
  70. package/build/rn/QuickLinksButton.js +3 -3
  71. package/build/rn/QuickLinksCard.js +1 -1
  72. package/build/rn/QuickLinksFeature.js +1 -1
  73. package/build/rn/QuickLinksFeatureItem.js +3 -3
  74. package/build/rn/QuickLinksList.js +3 -3
  75. package/build/rn/Radio.js +3 -3
  76. package/build/rn/RadioCard.js +3 -3
  77. package/build/rn/RadioCardGroup.js +1 -1
  78. package/build/rn/RadioGroup.js +1 -1
  79. package/build/rn/Ribbon.js +1 -1
  80. package/build/rn/Search.js +2 -2
  81. package/build/rn/SearchButton.js +3 -3
  82. package/build/rn/Select.js +2 -2
  83. package/build/rn/SideNav.js +1 -1
  84. package/build/rn/SideNavItem.js +3 -3
  85. package/build/rn/SideNavItemsGroup.js +1 -1
  86. package/build/rn/Skeleton.js +1 -1
  87. package/build/rn/SkipLink.js +2 -2
  88. package/build/rn/Spinner.js +1 -1
  89. package/build/rn/SplashButton.js +2 -2
  90. package/build/rn/SplashButtonWithDetails.js +2 -2
  91. package/build/rn/StackView.js +1 -1
  92. package/build/rn/StepTracker.js +1 -1
  93. package/build/rn/StoryCard.js +3 -3
  94. package/build/rn/Table.js +1 -1
  95. package/build/rn/Tabs.js +1 -1
  96. package/build/rn/TabsItem.js +1 -1
  97. package/build/rn/Tags.js +1 -1
  98. package/build/rn/TagsItem.js +3 -3
  99. package/build/rn/TermsAndConditions.js +36 -2
  100. package/build/rn/Testimonial.js +1 -1
  101. package/build/rn/TextArea.js +1 -1
  102. package/build/rn/TextInput.js +2 -2
  103. package/build/rn/Timeline.js +1 -1
  104. package/build/rn/Toast.js +1 -1
  105. package/build/rn/ToggleSwitch.js +3 -3
  106. package/build/rn/ToggleSwitchGroup.js +1 -1
  107. package/build/rn/Tooltip.js +1 -1
  108. package/build/rn/TooltipButton.js +3 -3
  109. package/build/rn/Typography.js +2 -2
  110. package/build/rn/Video.js +1 -1
  111. package/build/rn/VideoButton.js +1 -1
  112. package/build/rn/VideoControlBar.js +1 -1
  113. package/build/rn/VideoMenu.js +1 -1
  114. package/build/rn/VideoMiddleControlButton.js +1 -1
  115. package/build/rn/VideoPicker.js +1 -1
  116. package/build/rn/VideoPickerSlider.js +1 -1
  117. package/build/rn/VideoPickerThumbnail.js +3 -3
  118. package/build/rn/VideoProgressBar.js +1 -1
  119. package/build/rn/VideoVolumeSlider.js +1 -1
  120. package/build/rn/WaffleGrid.js +1 -1
  121. package/build/rn/schema.json +1026 -960
  122. package/build/rn/spacingScale.js +1 -1
  123. package/build/rn/theme.js +107 -70
  124. package/build/web/ActivityIndicator.js +1 -1
  125. package/build/web/Badge.js +1 -1
  126. package/build/web/BlockQuote.js +1 -1
  127. package/build/web/Box.js +1 -1
  128. package/build/web/Breadcrumbs.js +1 -1
  129. package/build/web/Button.js +94 -1
  130. package/build/web/ButtonDropdown.js +36 -1
  131. package/build/web/ButtonGroup.js +1 -1
  132. package/build/web/ButtonGroupItem.js +35 -1
  133. package/build/web/Callout.js +1 -1
  134. package/build/web/Card.js +25 -2
  135. package/build/web/Carousel.js +1 -1
  136. package/build/web/CarouselTabsPanelItem.js +57 -1
  137. package/build/web/CarouselThumbnail.js +18 -1
  138. package/build/web/Checkbox.js +30 -1
  139. package/build/web/CheckboxCard.js +35 -1
  140. package/build/web/CheckboxCardGroup.js +1 -1
  141. package/build/web/CheckboxGroup.js +1 -1
  142. package/build/web/ChevronLink.js +38 -1
  143. package/build/web/ColourToggle.js +29 -1
  144. package/build/web/Countdown.js +1 -1
  145. package/build/web/DatePicker.js +1 -1
  146. package/build/web/Disclaimer.js +1 -1
  147. package/build/web/Divider.js +1 -1
  148. package/build/web/ExpandCollapse.js +1 -1
  149. package/build/web/ExpandCollapseControl.js +1 -1
  150. package/build/web/ExpandCollapseMini.js +1 -1
  151. package/build/web/ExpandCollapseMiniControl.js +1 -1
  152. package/build/web/ExpandCollapsePanel.js +1 -1
  153. package/build/web/Feedback.js +1 -1
  154. package/build/web/Fieldset.js +1 -1
  155. package/build/web/Footnote.js +3 -1
  156. package/build/web/FootnoteLink.js +2 -1
  157. package/build/web/HorizontalScrollButton.js +17 -1
  158. package/build/web/Icon.js +1 -1
  159. package/build/web/IconButton.js +76 -1
  160. package/build/web/Image.js +1 -1
  161. package/build/web/InputLabel.js +1 -1
  162. package/build/web/InputSupports.js +1 -1
  163. package/build/web/Link.js +70 -2
  164. package/build/web/List.js +1 -1
  165. package/build/web/Listbox.js +61 -1
  166. package/build/web/Modal.js +1 -1
  167. package/build/web/MultiSelectFilter.js +1 -1
  168. package/build/web/NavigationBar.js +40 -1
  169. package/build/web/Notification.js +1 -1
  170. package/build/web/OrderedList.js +1 -1
  171. package/build/web/Pagination.js +1 -1
  172. package/build/web/PaginationPageButton.js +27 -1
  173. package/build/web/PaginationSideButton.js +26 -1
  174. package/build/web/PreviewCard.js +33 -3
  175. package/build/web/PriceLockup.js +1 -1
  176. package/build/web/Progress.js +1 -1
  177. package/build/web/ProgressBar.js +1 -1
  178. package/build/web/QuantitySelector.js +1 -1
  179. package/build/web/QuantitySelectorSideButton.js +1 -1
  180. package/build/web/QuickLinks.js +1 -1
  181. package/build/web/QuickLinksButton.js +17 -2
  182. package/build/web/QuickLinksCard.js +1 -1
  183. package/build/web/QuickLinksFeature.js +1 -1
  184. package/build/web/QuickLinksFeatureItem.js +29 -1
  185. package/build/web/QuickLinksList.js +29 -1
  186. package/build/web/Radio.js +18 -1
  187. package/build/web/RadioCard.js +35 -1
  188. package/build/web/RadioCardGroup.js +1 -1
  189. package/build/web/RadioGroup.js +1 -1
  190. package/build/web/Ribbon.js +1 -1
  191. package/build/web/Search.js +11 -1
  192. package/build/web/SearchButton.js +30 -1
  193. package/build/web/Select.js +8 -1
  194. package/build/web/SideNav.js +1 -1
  195. package/build/web/SideNavItem.js +30 -1
  196. package/build/web/SideNavItemsGroup.js +1 -1
  197. package/build/web/Skeleton.js +1 -1
  198. package/build/web/SkipLink.js +13 -2
  199. package/build/web/Spinner.js +1 -1
  200. package/build/web/SplashButton.js +15 -3
  201. package/build/web/SplashButtonWithDetails.js +15 -3
  202. package/build/web/StackView.js +1 -1
  203. package/build/web/StepTracker.js +1 -1
  204. package/build/web/StoryCard.js +25 -2
  205. package/build/web/Table.js +1 -1
  206. package/build/web/Tabs.js +1 -1
  207. package/build/web/TabsItem.js +1 -1
  208. package/build/web/Tags.js +1 -1
  209. package/build/web/TagsItem.js +35 -1
  210. package/build/web/TermsAndConditions.js +36 -2
  211. package/build/web/Testimonial.js +1 -1
  212. package/build/web/TextArea.js +1 -1
  213. package/build/web/TextInput.js +11 -1
  214. package/build/web/Timeline.js +1 -1
  215. package/build/web/Toast.js +1 -1
  216. package/build/web/ToggleSwitch.js +42 -1
  217. package/build/web/ToggleSwitchGroup.js +1 -1
  218. package/build/web/Tooltip.js +1 -1
  219. package/build/web/TooltipButton.js +19 -1
  220. package/build/web/Typography.js +2 -2
  221. package/build/web/Video.js +1 -1
  222. package/build/web/VideoButton.js +1 -1
  223. package/build/web/VideoControlBar.js +1 -1
  224. package/build/web/VideoMenu.js +1 -1
  225. package/build/web/VideoMiddleControlButton.js +1 -1
  226. package/build/web/VideoPicker.js +1 -1
  227. package/build/web/VideoPickerSlider.js +1 -1
  228. package/build/web/VideoPickerThumbnail.js +21 -1
  229. package/build/web/VideoProgressBar.js +1 -1
  230. package/build/web/VideoVolumeSlider.js +1 -1
  231. package/build/web/WaffleGrid.js +1 -1
  232. package/build/web/index.js +1 -1
  233. package/build/web/schema.json +1026 -960
  234. package/build/web/spacingScale.js +1 -1
  235. package/build/web/theme.js +1203 -18
  236. package/package.json +5 -5
  237. package/theme.json +33 -1
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  *
3
3
  * Do not edit directly
4
- * Generated on Mon, 08 Jan 2024 20:07:10 GMT
4
+ * Generated on Mon, 29 Jan 2024 18:24:29 GMT
5
5
  *
6
6
  */
7
7
 
@@ -461,6 +461,18 @@ const theme = {
461
461
  type: 'variant',
462
462
  values: [ true ]
463
463
  },
464
+ focus: {
465
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
466
+ platforms: [ 'rn', 'web' ],
467
+ type: 'state',
468
+ values: [ true, false ]
469
+ },
470
+ hover: {
471
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
472
+ platforms: [ 'rn', 'web' ],
473
+ type: 'state',
474
+ values: [ true, false ]
475
+ },
464
476
  inactive: {
465
477
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
466
478
  type: 'state',
@@ -499,6 +511,15 @@ const theme = {
499
511
  }
500
512
  },
501
513
  rules: [
514
+ {
515
+ if: { hover: true },
516
+ tokens: {
517
+ borderBottomWidth: 3,
518
+ borderLeftWidth: 3,
519
+ borderRightWidth: 3,
520
+ borderTopWidth: 3
521
+ }
522
+ },
502
523
  {
503
524
  if: { priority: 'high' },
504
525
  tokens: {
@@ -516,6 +537,10 @@ const theme = {
516
537
  color: '#ffffff'
517
538
  }
518
539
  },
540
+ {
541
+ if: { focus: true },
542
+ tokens: { outerBorderColor: '#2b8000' }
543
+ },
519
544
  {
520
545
  if: { inverse: true },
521
546
  tokens: {
@@ -524,10 +549,22 @@ const theme = {
524
549
  color: '#ffffff'
525
550
  }
526
551
  },
552
+ {
553
+ if: { hover: true, priority: 'high' },
554
+ tokens: { backgroundColor: '#1f5c09' }
555
+ },
556
+ {
557
+ if: { focus: true, pressed: true },
558
+ tokens: { outerBorderColor: '#163e06' }
559
+ },
527
560
  {
528
561
  if: { inverse: true, priority: 'high' },
529
562
  tokens: { backgroundColor: '#ffffff', color: '#414547' }
530
563
  },
564
+ {
565
+ if: { hover: true, inverse: true, priority: 'high' },
566
+ tokens: { backgroundColor: 'rgba(255, 255, 255, 0.8)' }
567
+ },
531
568
  {
532
569
  if: { inverse: true, pressed: true },
533
570
  tokens: {
@@ -536,6 +573,10 @@ const theme = {
536
573
  color: '#414547'
537
574
  }
538
575
  },
576
+ {
577
+ if: { focus: true, inverse: true },
578
+ tokens: { outerBorderColor: '#ffffff' }
579
+ },
539
580
  {
540
581
  if: { danger: true, priority: null },
541
582
  tokens: { borderColor: '#e12339', color: '#e12339' }
@@ -544,6 +585,10 @@ const theme = {
544
585
  if: { danger: true, inverse: true, priority: null },
545
586
  tokens: { backgroundColor: '#ffffff' }
546
587
  },
588
+ {
589
+ if: { danger: true, focus: true, priority: null },
590
+ tokens: { outerBorderColor: '#e12339' }
591
+ },
547
592
  {
548
593
  if: { danger: true, pressed: true, priority: null },
549
594
  tokens: {
@@ -552,6 +597,10 @@ const theme = {
552
597
  color: '#ffffff'
553
598
  }
554
599
  },
600
+ {
601
+ if: { danger: true, focus: true, pressed: true, priority: null },
602
+ tokens: { outerBorderColor: '#c12335' }
603
+ },
555
604
  { if: { width: 'full' }, tokens: { width: '100%' } },
556
605
  {
557
606
  if: { viewport: [ 'xs' ], width: 'responsive' },
@@ -592,6 +641,10 @@ const theme = {
592
641
  textLine: 'underline'
593
642
  }
594
643
  },
644
+ {
645
+ if: { hover: true, text: true },
646
+ tokens: { textLine: 'none' }
647
+ },
595
648
  {
596
649
  if: { priority: 'high', text: true },
597
650
  tokens: { color: '#2b8000' }
@@ -600,6 +653,31 @@ const theme = {
600
653
  if: { priority: 'low', text: true },
601
654
  tokens: { color: '#414547' }
602
655
  },
656
+ {
657
+ if: { focus: true, text: true },
658
+ tokens: {
659
+ borderColor: 'rgba(0, 0, 0, 0)',
660
+ borderRadius: 0,
661
+ color: '#2b8000',
662
+ outerBorderColor: '#2b8000'
663
+ }
664
+ },
665
+ {
666
+ if: { hover: true, priority: 'high', text: true },
667
+ tokens: { color: '#1f5c09' }
668
+ },
669
+ {
670
+ if: { hover: true, priority: null, text: true },
671
+ tokens: { color: '#1f5c09' }
672
+ },
673
+ {
674
+ if: { hover: true, priority: 'low', text: true },
675
+ tokens: { color: '#414547' }
676
+ },
677
+ {
678
+ if: { danger: true, hover: true, text: true },
679
+ tokens: { color: '#c12335' }
680
+ },
603
681
  {
604
682
  if: { pressed: true, text: true },
605
683
  tokens: {
@@ -609,6 +687,15 @@ const theme = {
609
687
  textLine: 'none'
610
688
  }
611
689
  },
690
+ {
691
+ if: { focus: true, pressed: true, text: true },
692
+ tokens: {
693
+ borderColor: 'rgba(0, 0, 0, 0)',
694
+ color: '#163e06',
695
+ outerBorderColor: '#163e06',
696
+ textLine: 'none'
697
+ }
698
+ },
612
699
  {
613
700
  if: { inactive: true, text: true },
614
701
  tokens: {
@@ -622,6 +709,21 @@ const theme = {
622
709
  if: { inverse: true, text: true },
623
710
  tokens: { borderRadius: 0, color: '#ffffff' }
624
711
  },
712
+ {
713
+ if: { focus: true, inverse: true, text: true },
714
+ tokens: {
715
+ borderColor: 'rgba(0, 0, 0, 0)',
716
+ outerBorderColor: '#ffffff'
717
+ }
718
+ },
719
+ {
720
+ if: { focus: true, inverse: true, pressed: true, text: true },
721
+ tokens: {
722
+ borderColor: 'rgba(0, 0, 0, 0)',
723
+ color: '#b2b9bf',
724
+ outerBorderColor: '#b2b9bf'
725
+ }
726
+ },
625
727
  {
626
728
  if: { inactive: true, inverse: true, text: true },
627
729
  tokens: {
@@ -668,6 +770,18 @@ const theme = {
668
770
  },
669
771
  ButtonDropdown: {
670
772
  appearances: {
773
+ focus: {
774
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
775
+ platforms: [ 'rn', 'web' ],
776
+ type: 'state',
777
+ values: [ true, false ]
778
+ },
779
+ hover: {
780
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
781
+ platforms: [ 'rn', 'web' ],
782
+ type: 'state',
783
+ values: [ true, false ]
784
+ },
671
785
  inactive: {
672
786
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
673
787
  type: 'state',
@@ -691,6 +805,16 @@ const theme = {
691
805
  },
692
806
  rules: [
693
807
  { if: { open: true }, tokens: { icon: PaletteIconCaretUp } },
808
+ {
809
+ if: { focus: true },
810
+ tokens: {
811
+ borderColor: '#676e73',
812
+ color: '#414547',
813
+ outerBorderColor: '#676e73',
814
+ outerBorderGap: 2,
815
+ outerBorderWidth: 2
816
+ }
817
+ },
694
818
  {
695
819
  if: { pressed: true },
696
820
  tokens: {
@@ -700,6 +824,7 @@ const theme = {
700
824
  iconColor: '#ffffff'
701
825
  }
702
826
  },
827
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
703
828
  {
704
829
  if: { inactive: true },
705
830
  tokens: {
@@ -720,9 +845,21 @@ const theme = {
720
845
  iconColor: '#ffffff'
721
846
  }
722
847
  },
848
+ {
849
+ if: { hover: true, selected: true },
850
+ tokens: { backgroundColor: '#7c53a5', iconBackground: '#613889' }
851
+ },
852
+ {
853
+ if: { focus: true, selected: true },
854
+ tokens: { outerBorderColor: '#4b286d' }
855
+ },
723
856
  {
724
857
  if: { pressed: true, selected: true },
725
858
  tokens: { backgroundColor: '#3f2a54', iconBackground: '#613889' }
859
+ },
860
+ {
861
+ if: { focus: true, pressed: true, selected: true },
862
+ tokens: { outerBorderGap: 2, outerBorderWidth: 2 }
726
863
  }
727
864
  ],
728
865
  tokens: {
@@ -796,6 +933,18 @@ const theme = {
796
933
  },
797
934
  ButtonGroupItem: {
798
935
  appearances: {
936
+ focus: {
937
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
938
+ platforms: [ 'rn', 'web' ],
939
+ type: 'state',
940
+ values: [ true, false ]
941
+ },
942
+ hover: {
943
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
944
+ platforms: [ 'rn', 'web' ],
945
+ type: 'state',
946
+ values: [ true, false ]
947
+ },
799
948
  iconPosition: {
800
949
  description: 'Theme styles to be applied to icon links depending on where the icon is in relation to the link text',
801
950
  type: 'state',
@@ -832,6 +981,16 @@ const theme = {
832
981
  color: '#ffffff'
833
982
  }
834
983
  },
984
+ {
985
+ if: { focus: true },
986
+ tokens: {
987
+ borderColor: '#676e73',
988
+ outerBorderColor: '#676e73',
989
+ outerBorderGap: 2,
990
+ outerBorderWidth: 2
991
+ }
992
+ },
993
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
835
994
  {
836
995
  if: { selected: true },
837
996
  tokens: {
@@ -840,10 +999,22 @@ const theme = {
840
999
  color: '#ffffff'
841
1000
  }
842
1001
  },
1002
+ {
1003
+ if: { hover: true, selected: true },
1004
+ tokens: { backgroundColor: '#7c53a5' }
1005
+ },
843
1006
  {
844
1007
  if: { pressed: true, selected: true },
845
1008
  tokens: { backgroundColor: '#3f2a54' }
846
1009
  },
1010
+ {
1011
+ if: { focus: true, selected: true },
1012
+ tokens: { outerBorderColor: '#4b286d' }
1013
+ },
1014
+ {
1015
+ if: { focus: true, pressed: true, selected: true },
1016
+ tokens: { outerBorderColor: '#3f2a54' }
1017
+ },
847
1018
  {
848
1019
  if: { inactive: true },
849
1020
  tokens: {
@@ -914,6 +1085,18 @@ const theme = {
914
1085
  values: [ 'alternative', 'subtle', 'grid', 'feature' ]
915
1086
  },
916
1087
  borderRadius: { type: 'variant', values: [ 'none', 'small', 'large' ] },
1088
+ focus: {
1089
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1090
+ platforms: [ 'rn', 'web' ],
1091
+ type: 'state',
1092
+ values: [ true, false ]
1093
+ },
1094
+ hover: {
1095
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1096
+ platforms: [ 'rn', 'web' ],
1097
+ type: 'state',
1098
+ values: [ true, false ]
1099
+ },
917
1100
  interactive: { type: 'variant', values: [ true ] },
918
1101
  padding: {
919
1102
  type: 'variant',
@@ -1025,9 +1208,20 @@ const theme = {
1025
1208
  }
1026
1209
  },
1027
1210
  {
1028
- if: { interactive: true, pressed: false },
1211
+ if: { focus: false, interactive: true, pressed: false },
1029
1212
  tokens: { borderColor: '#ffffff', borderWidth: 2 }
1030
1213
  },
1214
+ {
1215
+ if: { hover: true, interactive: true },
1216
+ tokens: {
1217
+ backgroundColor: 'rgba(0, 0, 0, 0.05)',
1218
+ borderColor: 'transparent'
1219
+ }
1220
+ },
1221
+ {
1222
+ if: { focus: true, interactive: true },
1223
+ tokens: { borderColor: '#4b286d', borderWidth: 2 }
1224
+ },
1031
1225
  {
1032
1226
  if: { interactive: true, pressed: true },
1033
1227
  tokens: {
@@ -1084,6 +1278,18 @@ const theme = {
1084
1278
  },
1085
1279
  CarouselTabsPanelItem: {
1086
1280
  appearances: {
1281
+ focus: {
1282
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1283
+ platforms: [ 'rn', 'web' ],
1284
+ type: 'state',
1285
+ values: [ true, false ]
1286
+ },
1287
+ hover: {
1288
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1289
+ platforms: [ 'rn', 'web' ],
1290
+ type: 'state',
1291
+ values: [ true, false ]
1292
+ },
1087
1293
  inactive: {
1088
1294
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1089
1295
  type: 'state',
@@ -1102,6 +1308,22 @@ const theme = {
1102
1308
  }
1103
1309
  },
1104
1310
  rules: [
1311
+ {
1312
+ if: { hover: true },
1313
+ tokens: {
1314
+ borderBottomColor: '#2b8000',
1315
+ borderBottomWidth: 2,
1316
+ color: '#2b8000'
1317
+ }
1318
+ },
1319
+ {
1320
+ if: { focus: true },
1321
+ tokens: {
1322
+ borderBottomColor: '#2b8000',
1323
+ borderBottomWidth: 4,
1324
+ color: '#2b8000'
1325
+ }
1326
+ },
1105
1327
  {
1106
1328
  if: { pressed: true },
1107
1329
  tokens: {
@@ -1110,6 +1332,10 @@ const theme = {
1110
1332
  color: '#1f5c09'
1111
1333
  }
1112
1334
  },
1335
+ {
1336
+ if: { focus: true, pressed: true },
1337
+ tokens: { borderBottomWidth: 4 }
1338
+ },
1113
1339
  {
1114
1340
  if: { inactive: true },
1115
1341
  tokens: {
@@ -1129,6 +1355,14 @@ const theme = {
1129
1355
  }
1130
1356
  },
1131
1357
  { if: { inverse: true }, tokens: { color: '#ffffff' } },
1358
+ {
1359
+ if: { hover: true, inverse: true },
1360
+ tokens: {
1361
+ borderBottomColor: '#ffffff',
1362
+ borderBottomWidth: 2,
1363
+ color: '#ffffff'
1364
+ }
1365
+ },
1132
1366
  {
1133
1367
  if: { inverse: true, pressed: true },
1134
1368
  tokens: {
@@ -1137,6 +1371,22 @@ const theme = {
1137
1371
  color: '#676e73'
1138
1372
  }
1139
1373
  },
1374
+ {
1375
+ if: { focus: true, inverse: true },
1376
+ tokens: {
1377
+ borderBottomColor: '#ffffff',
1378
+ borderBottomWidth: 4,
1379
+ color: '#ffffff'
1380
+ }
1381
+ },
1382
+ {
1383
+ if: { focus: true, inverse: true, pressed: true },
1384
+ tokens: {
1385
+ borderBottomColor: '#676e73',
1386
+ borderBottomWidth: 4,
1387
+ color: '#676e73'
1388
+ }
1389
+ },
1140
1390
  {
1141
1391
  if: { inverse: true, selected: true },
1142
1392
  tokens: {
@@ -1170,6 +1420,18 @@ const theme = {
1170
1420
  },
1171
1421
  CarouselThumbnail: {
1172
1422
  appearances: {
1423
+ focus: {
1424
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1425
+ platforms: [ 'rn', 'web' ],
1426
+ type: 'state',
1427
+ values: [ true, false ]
1428
+ },
1429
+ hover: {
1430
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1431
+ platforms: [ 'rn', 'web' ],
1432
+ type: 'state',
1433
+ values: [ true, false ]
1434
+ },
1173
1435
  pressed: {
1174
1436
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
1175
1437
  type: 'state',
@@ -1186,6 +1448,11 @@ const theme = {
1186
1448
  if: { viewport: [ 'xs', 'sm' ] },
1187
1449
  tokens: { alignItems: 'flex-start', size: 48 }
1188
1450
  },
1451
+ { if: { hover: true }, tokens: { borderColor: '#2b8000' } },
1452
+ {
1453
+ if: { focus: true },
1454
+ tokens: { borderColor: '#2b8000', borderWidth: 2 }
1455
+ },
1189
1456
  {
1190
1457
  if: { pressed: true },
1191
1458
  tokens: { borderColor: '#1f5c09', borderWidth: 2 }
@@ -1212,6 +1479,18 @@ const theme = {
1212
1479
  values: [ true ]
1213
1480
  },
1214
1481
  error: { type: 'state', values: [ true ] },
1482
+ focus: {
1483
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1484
+ platforms: [ 'rn', 'web' ],
1485
+ type: 'state',
1486
+ values: [ true, false ]
1487
+ },
1488
+ hover: {
1489
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1490
+ platforms: [ 'rn', 'web' ],
1491
+ type: 'state',
1492
+ values: [ true, false ]
1493
+ },
1215
1494
  inactive: {
1216
1495
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1217
1496
  type: 'state',
@@ -1223,6 +1502,10 @@ const theme = {
1223
1502
  if: { error: true },
1224
1503
  tokens: { inputBorderColor: '#e12339' }
1225
1504
  },
1505
+ {
1506
+ if: { focus: true },
1507
+ tokens: { inputBorderColor: '#7c53a5', inputBorderWidth: 3 }
1508
+ },
1226
1509
  {
1227
1510
  if: { inactive: true },
1228
1511
  tokens: {
@@ -1232,6 +1515,19 @@ const theme = {
1232
1515
  inputBorderColor: 'rgba(0, 0, 0, 0)',
1233
1516
  labelColor: '#676e73'
1234
1517
  }
1518
+ },
1519
+ {
1520
+ if: { hover: true },
1521
+ tokens: { inputOutlineColor: '#e3e6e8', inputOutlineWidth: 2 }
1522
+ },
1523
+ {
1524
+ if: { checked: true, focus: true },
1525
+ tokens: {
1526
+ inputBorderColor: '#ffffff',
1527
+ inputBorderWidth: 2,
1528
+ inputOutlineColor: '#7c53a5',
1529
+ inputOutlineWidth: 3
1530
+ }
1235
1531
  }
1236
1532
  ],
1237
1533
  tokens: {
@@ -1269,6 +1565,18 @@ const theme = {
1269
1565
  values: [ true ]
1270
1566
  },
1271
1567
  error: { type: 'state', values: [ true ] },
1568
+ focus: {
1569
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1570
+ platforms: [ 'rn', 'web' ],
1571
+ type: 'state',
1572
+ values: [ true, false ]
1573
+ },
1574
+ hover: {
1575
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1576
+ platforms: [ 'rn', 'web' ],
1577
+ type: 'state',
1578
+ values: [ true, false ]
1579
+ },
1272
1580
  inactive: {
1273
1581
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1274
1582
  type: 'state',
@@ -1297,6 +1605,24 @@ const theme = {
1297
1605
  paddingTop: 16
1298
1606
  }
1299
1607
  },
1608
+ {
1609
+ if: { hover: true },
1610
+ tokens: {
1611
+ borderColor: '#676e73',
1612
+ checkboxOuterBorderColor: '#e3e6e8',
1613
+ checkboxOuterBorderWidth: 2,
1614
+ outerBorderColor: '#e3e6e8'
1615
+ }
1616
+ },
1617
+ {
1618
+ if: { focus: true },
1619
+ tokens: {
1620
+ checkboxInputBorderColor: '#7c53a5',
1621
+ checkboxInputBorderWidth: 3,
1622
+ outerBorderColor: '#676e73',
1623
+ outerBorderGap: 2
1624
+ }
1625
+ },
1300
1626
  {
1301
1627
  description: 'Pressed state matches hover state plus light grey background',
1302
1628
  if: { pressed: true },
@@ -1312,6 +1638,10 @@ const theme = {
1312
1638
  }
1313
1639
  },
1314
1640
  { if: { checked: true }, tokens: { borderColor: '#7c53a5' } },
1641
+ {
1642
+ if: { checked: true, hover: true },
1643
+ tokens: { borderColor: '#4b286d' }
1644
+ },
1315
1645
  {
1316
1646
  if: { error: true },
1317
1647
  tokens: {
@@ -1431,6 +1761,18 @@ const theme = {
1431
1761
  ChevronLink: {
1432
1762
  appearances: {
1433
1763
  alternative: { type: 'variant', values: [ true ] },
1764
+ focus: {
1765
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1766
+ platforms: [ 'rn', 'web' ],
1767
+ type: 'state',
1768
+ values: [ true, false ]
1769
+ },
1770
+ hover: {
1771
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1772
+ platforms: [ 'rn', 'web' ],
1773
+ type: 'state',
1774
+ values: [ true, false ]
1775
+ },
1434
1776
  inverse: { type: 'variant', values: [ true ] },
1435
1777
  pressed: {
1436
1778
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
@@ -1444,13 +1786,25 @@ const theme = {
1444
1786
  }
1445
1787
  },
1446
1788
  rules: [
1789
+ {
1790
+ if: { hover: true },
1791
+ tokens: { color: '#1f5c09', iconDisplace: 4 }
1792
+ },
1447
1793
  { if: { pressed: true }, tokens: { color: '#163e06' } },
1448
1794
  { if: { alternative: true }, tokens: { color: '#414547' } },
1795
+ {
1796
+ if: { alternative: true, hover: true },
1797
+ tokens: { color: '#2c2e30' }
1798
+ },
1449
1799
  {
1450
1800
  if: { alternative: true, pressed: true },
1451
1801
  tokens: { color: '#2c2e30' }
1452
1802
  },
1453
1803
  { if: { inverse: true }, tokens: { color: '#ffffff' } },
1804
+ {
1805
+ if: { hover: true, inverse: true },
1806
+ tokens: { color: '#f4f4f7' }
1807
+ },
1454
1808
  {
1455
1809
  if: { inverse: true, pressed: true },
1456
1810
  tokens: { color: '#e3e6e8' }
@@ -1474,6 +1828,22 @@ const theme = {
1474
1828
  fontSize: 12,
1475
1829
  iconSize: 16
1476
1830
  }
1831
+ },
1832
+ {
1833
+ if: { focus: true },
1834
+ tokens: { outerBorderColor: '#2b8000' }
1835
+ },
1836
+ {
1837
+ if: { focus: true, pressed: true },
1838
+ tokens: { outerBorderColor: '#163e06' }
1839
+ },
1840
+ {
1841
+ if: { focus: true, inverse: true },
1842
+ tokens: { outerBorderColor: '#ffffff' }
1843
+ },
1844
+ {
1845
+ if: { alternative: true, focus: true },
1846
+ tokens: { color: '#414547', outerBorderColor: '#414547' }
1477
1847
  }
1478
1848
  ],
1479
1849
  tokens: {
@@ -1491,6 +1861,18 @@ const theme = {
1491
1861
  },
1492
1862
  ColourToggle: {
1493
1863
  appearances: {
1864
+ focus: {
1865
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1866
+ platforms: [ 'rn', 'web' ],
1867
+ type: 'state',
1868
+ values: [ true, false ]
1869
+ },
1870
+ hover: {
1871
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1872
+ platforms: [ 'rn', 'web' ],
1873
+ type: 'state',
1874
+ values: [ true, false ]
1875
+ },
1494
1876
  pressed: {
1495
1877
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
1496
1878
  type: 'state',
@@ -1503,6 +1885,22 @@ const theme = {
1503
1885
  }
1504
1886
  },
1505
1887
  rules: [
1888
+ {
1889
+ if: { hover: true },
1890
+ tokens: {
1891
+ bubbleBorderColor: '#b2b9bf',
1892
+ bubbleBorderRadius: 45,
1893
+ bubbleBorderWidth: 1
1894
+ }
1895
+ },
1896
+ {
1897
+ if: { focus: true },
1898
+ tokens: {
1899
+ bubbleBorderColor: '#676e73',
1900
+ bubbleBorderRadius: 45,
1901
+ bubbleBorderWidth: 1
1902
+ }
1903
+ },
1506
1904
  {
1507
1905
  if: { pressed: true },
1508
1906
  tokens: {
@@ -2030,7 +2428,9 @@ const theme = {
2030
2428
  headerLineHeight: 1.5,
2031
2429
  headerMargin: 16,
2032
2430
  listItemColor: '#414547',
2431
+ listItemFontName: 'HelveticaNow',
2033
2432
  listItemFontSize: 16,
2433
+ listItemFontWeight: '400',
2034
2434
  listItemLineHeight: 1.5,
2035
2435
  listItemMarkerFontSize: 16,
2036
2436
  listItemMarkerLineHeight: 1.5,
@@ -2044,6 +2444,7 @@ const theme = {
2044
2444
  tokens: {
2045
2445
  color: null,
2046
2446
  fontName: 'HelveticaNow',
2447
+ fontSize: 16,
2047
2448
  fontWeight: '400',
2048
2449
  lineHeight: 1,
2049
2450
  paddingLeft: 2,
@@ -2052,6 +2453,18 @@ const theme = {
2052
2453
  },
2053
2454
  HorizontalScrollButton: {
2054
2455
  appearances: {
2456
+ focus: {
2457
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2458
+ platforms: [ 'rn', 'web' ],
2459
+ type: 'state',
2460
+ values: [ true, false ]
2461
+ },
2462
+ hover: {
2463
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2464
+ platforms: [ 'rn', 'web' ],
2465
+ type: 'state',
2466
+ values: [ true, false ]
2467
+ },
2055
2468
  pressed: {
2056
2469
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2057
2470
  type: 'state',
@@ -2059,6 +2472,10 @@ const theme = {
2059
2472
  }
2060
2473
  },
2061
2474
  rules: [
2475
+ {
2476
+ if: { hover: true },
2477
+ tokens: { borderColor: '#414547', iconColor: '#414547' }
2478
+ },
2062
2479
  {
2063
2480
  if: { pressed: true },
2064
2481
  tokens: { backgroundColor: '#676e73', iconColor: '#ffffff' }
@@ -2144,6 +2561,18 @@ const theme = {
2144
2561
  type: 'variant',
2145
2562
  values: [ true ]
2146
2563
  },
2564
+ focus: {
2565
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2566
+ platforms: [ 'rn', 'web' ],
2567
+ type: 'state',
2568
+ values: [ true, false ]
2569
+ },
2570
+ hover: {
2571
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2572
+ platforms: [ 'rn', 'web' ],
2573
+ type: 'state',
2574
+ values: [ true, false ]
2575
+ },
2147
2576
  inactive: {
2148
2577
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
2149
2578
  type: 'state',
@@ -2235,16 +2664,67 @@ const theme = {
2235
2664
  tokens: { icon: PaletteIconChevronRight }
2236
2665
  },
2237
2666
  {
2238
- if: { action: 'play' },
2239
- tokens: { icon: PaletteIconPlayVideo }
2667
+ if: { action: 'play' },
2668
+ tokens: { icon: PaletteIconPlayVideo }
2669
+ },
2670
+ {
2671
+ if: { inverse: true },
2672
+ tokens: { borderColor: '#ffffff', iconColor: '#ffffff' }
2673
+ },
2674
+ {
2675
+ if: { hover: true },
2676
+ tokens: {
2677
+ borderColor: '#414547',
2678
+ iconColor: '#414547',
2679
+ iconScale: 1.1
2680
+ }
2681
+ },
2682
+ { if: { hover: true }, tokens: { iconScale: 1 } },
2683
+ {
2684
+ if: { hover: true, password: true },
2685
+ tokens: {
2686
+ backgroundColor: '#7c53a5',
2687
+ borderColor: '#7c53a5',
2688
+ iconColor: '#ffffff'
2689
+ }
2690
+ },
2691
+ {
2692
+ if: { password: true },
2693
+ tokens: { borderColor: 'transparent' }
2694
+ },
2695
+ {
2696
+ if: { focus: true, password: true },
2697
+ tokens: { borderColor: '#4b286d' }
2698
+ },
2699
+ {
2700
+ if: { hover: true, inverse: true },
2701
+ tokens: { borderColor: '#ffffff', iconColor: '#ffffff' }
2702
+ },
2703
+ {
2704
+ if: { focus: true },
2705
+ tokens: {
2706
+ outerBorderColor: '#676e73',
2707
+ outerBorderGap: 4,
2708
+ outerBorderWidth: 1
2709
+ }
2240
2710
  },
2241
2711
  {
2242
- if: { inverse: true },
2243
- tokens: { borderColor: '#ffffff', iconColor: '#ffffff' }
2712
+ if: { focus: true, password: true },
2713
+ tokens: {
2714
+ borderWidth: 3,
2715
+ outerBorderColor: '#3f2a54',
2716
+ outerBorderWidth: 0
2717
+ }
2244
2718
  },
2245
2719
  {
2246
- if: { password: true },
2247
- tokens: { borderColor: 'transparent' }
2720
+ if: { focus: true, inverse: true },
2721
+ tokens: {
2722
+ backgroundColor: 'transparent',
2723
+ borderColor: '#ffffff',
2724
+ iconColor: '#ffffff',
2725
+ outerBorderColor: '#ffffff',
2726
+ outerBorderWidth: 1
2727
+ }
2248
2728
  },
2249
2729
  {
2250
2730
  if: { pressed: true },
@@ -2318,6 +2798,26 @@ const theme = {
2318
2798
  outerBorderColor: 'rgba(0, 0, 0, 0)'
2319
2799
  }
2320
2800
  },
2801
+ {
2802
+ if: { hover: true, raised: true },
2803
+ tokens: { borderColor: '#b2b9bf', borderWidth: 3 }
2804
+ },
2805
+ {
2806
+ if: { focus: true, raised: true },
2807
+ tokens: {
2808
+ borderColor: '#4b286d',
2809
+ borderWidth: 3,
2810
+ iconColor: '#4b286d'
2811
+ }
2812
+ },
2813
+ {
2814
+ if: { focus: true, pressed: true, raised: true },
2815
+ tokens: {
2816
+ backgroundColor: '#4b286d',
2817
+ borderWidth: 0,
2818
+ iconColor: '#ffffff'
2819
+ }
2820
+ },
2321
2821
  { if: { compact: true }, tokens: { outerBorderGap: 0 } }
2322
2822
  ],
2323
2823
  tokens: {
@@ -2374,6 +2874,18 @@ const theme = {
2374
2874
  type: 'variant',
2375
2875
  values: [ true ]
2376
2876
  },
2877
+ focus: {
2878
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2879
+ platforms: [ 'rn', 'web' ],
2880
+ type: 'state',
2881
+ values: [ true, false ]
2882
+ },
2883
+ hover: {
2884
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2885
+ platforms: [ 'rn', 'web' ],
2886
+ type: 'state',
2887
+ values: [ true, false ]
2888
+ },
2377
2889
  iconPosition: {
2378
2890
  description: 'Theme styles to be applied to icon links depending on where the icon is in relation to the link text',
2379
2891
  type: 'state',
@@ -2407,10 +2919,22 @@ const theme = {
2407
2919
  },
2408
2920
  rules: [
2409
2921
  { if: { iconPosition: 'left' }, tokens: { iconSpace: 2 } },
2922
+ {
2923
+ if: { focus: true },
2924
+ tokens: { outerBorderColor: '#2b8000', outerBorderOutline: 'none' }
2925
+ },
2926
+ {
2927
+ if: { hover: true },
2928
+ tokens: { color: '#1f5c09', textLine: 'none' }
2929
+ },
2410
2930
  {
2411
2931
  if: { pressed: true },
2412
2932
  tokens: { color: '#163e06', textLine: 'none' }
2413
2933
  },
2934
+ {
2935
+ if: { focus: true, pressed: true },
2936
+ tokens: { outerBorderColor: '#163e06' }
2937
+ },
2414
2938
  {
2415
2939
  if: { size: 'large' },
2416
2940
  tokens: { blockFontSize: 20, blockLineHeight: 1.25, iconSize: 24 }
@@ -2430,17 +2954,61 @@ const theme = {
2430
2954
  }
2431
2955
  },
2432
2956
  { if: { alternative: true }, tokens: { color: '#2c2e30' } },
2957
+ {
2958
+ if: { alternative: true, focus: true },
2959
+ tokens: { color: '#414547', outerBorderColor: '#414547' }
2960
+ },
2961
+ {
2962
+ if: { alternative: true, hover: true },
2963
+ tokens: { color: '#2c2e30' }
2964
+ },
2433
2965
  {
2434
2966
  if: { alternative: true, pressed: true },
2435
2967
  tokens: { color: '#2c2e30' }
2436
2968
  },
2437
2969
  { if: { inverse: true }, tokens: { color: '#ffffff' } },
2970
+ {
2971
+ if: { hover: true, inverse: true },
2972
+ tokens: { color: '#f4f4f7' }
2973
+ },
2974
+ {
2975
+ if: { focus: true, inverse: true },
2976
+ tokens: { outerBorderColor: '#ffffff', outerBorderOutline: 'none' }
2977
+ },
2438
2978
  {
2439
2979
  if: { inverse: true, pressed: true },
2440
2980
  tokens: { color: '#e3e6e8' }
2441
2981
  },
2982
+ {
2983
+ if: { focus: true, inverse: true, pressed: true },
2984
+ tokens: { color: '#e3e6e8', outerBorderColor: '#e3e6e8' }
2985
+ },
2442
2986
  { if: { light: true }, tokens: { color: '#676e73' } },
2443
- { if: { quiet: true }, tokens: { textLine: 'none' } }
2987
+ {
2988
+ if: { focus: true, light: true },
2989
+ tokens: { color: '#676e73', outerBorderColor: '#676e73' }
2990
+ },
2991
+ {
2992
+ if: { hover: true, light: true },
2993
+ tokens: { color: '#414547', textLine: 'none' }
2994
+ },
2995
+ { if: { quiet: true }, tokens: { textLine: 'none' } },
2996
+ {
2997
+ if: { hover: true, quiet: true },
2998
+ tokens: { color: '#1f5c09', textLine: 'underline' }
2999
+ },
3000
+ {
3001
+ if: { alternative: true, hover: true, quiet: true },
3002
+ tokens: { color: '#2c2e30', textLine: 'underline' }
3003
+ },
3004
+ {
3005
+ if: { hover: true, inverse: true, quiet: true },
3006
+ tokens: { color: '#f4f4f7', textLine: 'underline' }
3007
+ },
3008
+ {
3009
+ if: { hover: true, light: true, quiet: true },
3010
+ tokens: { color: '#414547', textLine: 'underline' }
3011
+ }
2444
3012
  ],
2445
3013
  tokens: {
2446
3014
  alignSelf: 'flex-start',
@@ -2541,6 +3109,18 @@ const theme = {
2541
3109
  type: 'state',
2542
3110
  values: [ true, false ]
2543
3111
  },
3112
+ focus: {
3113
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
3114
+ platforms: [ 'rn', 'web' ],
3115
+ type: 'state',
3116
+ values: [ true, false ]
3117
+ },
3118
+ hover: {
3119
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3120
+ platforms: [ 'rn', 'web' ],
3121
+ type: 'state',
3122
+ values: [ true, false ]
3123
+ },
2544
3124
  isChild: {
2545
3125
  description: 'when the item is child of another child',
2546
3126
  type: 'state',
@@ -2553,6 +3133,38 @@ const theme = {
2553
3133
  }
2554
3134
  },
2555
3135
  rules: [
3136
+ {
3137
+ if: { focus: true, hover: true, pressed: true },
3138
+ tokens: {
3139
+ groupBackgroundColor: '#e3e6e8',
3140
+ groupBorderColor: 'rgba(0, 0, 0, 0)',
3141
+ groupColor: '#676e73',
3142
+ itemBackgroundColor: '#e3e6e8',
3143
+ itemColor: '#676e73'
3144
+ }
3145
+ },
3146
+ {
3147
+ if: { focus: false, hover: true, pressed: false },
3148
+ tokens: {
3149
+ groupBackgroundColor: '#f4f4f7',
3150
+ groupColor: '#4b286d',
3151
+ itemBackgroundColor: '#f4f4f7',
3152
+ itemColor: '#4b286d'
3153
+ }
3154
+ },
3155
+ {
3156
+ if: { focus: true, pressed: false },
3157
+ tokens: {
3158
+ groupBorderColor: '#4b286d',
3159
+ groupBorderWidth: 1,
3160
+ groupColor: '#4b286d',
3161
+ itemBorderBottomColor: '#4b286d',
3162
+ itemBorderLeftColor: '#4b286d',
3163
+ itemBorderRightColor: '#4b286d',
3164
+ itemBorderTopColor: '#4b286d',
3165
+ itemColor: '#4b286d'
3166
+ }
3167
+ },
2556
3168
  {
2557
3169
  if: { expanded: true },
2558
3170
  tokens: { groupIcon: PaletteIconCaretUp }
@@ -2589,6 +3201,22 @@ const theme = {
2589
3201
  itemBorderTopWidth: 0
2590
3202
  }
2591
3203
  },
3204
+ {
3205
+ if: { focus: true, isChild: true },
3206
+ tokens: {
3207
+ itemBorderBottomColor: '#4b286d',
3208
+ itemBorderBottomWidth: 1,
3209
+ itemBorderLeftColor: '#4b286d',
3210
+ itemBorderRightColor: '#4b286d',
3211
+ itemBorderRightWidth: 1,
3212
+ itemBorderTopColor: '#4b286d',
3213
+ itemBorderTopWidth: 1
3214
+ }
3215
+ },
3216
+ {
3217
+ if: { hover: true, isChild: true },
3218
+ tokens: { itemBorderLeftColor: '#4b286d' }
3219
+ },
2592
3220
  {
2593
3221
  if: { current: true, isChild: true },
2594
3222
  tokens: { itemBorderLeftColor: '#4b286d' }
@@ -2851,6 +3479,18 @@ const theme = {
2851
3479
  type: 'state',
2852
3480
  values: [ true, false ]
2853
3481
  },
3482
+ focus: {
3483
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
3484
+ platforms: [ 'rn', 'web' ],
3485
+ type: 'state',
3486
+ values: [ true, false ]
3487
+ },
3488
+ hover: {
3489
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3490
+ platforms: [ 'rn', 'web' ],
3491
+ type: 'state',
3492
+ values: [ true, false ]
3493
+ },
2854
3494
  pressed: {
2855
3495
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2856
3496
  type: 'state',
@@ -2878,6 +3518,33 @@ const theme = {
2878
3518
  fontWeight: '700'
2879
3519
  }
2880
3520
  },
3521
+ {
3522
+ if: { focus: true },
3523
+ tokens: {
3524
+ backgroundColor: '#f4f4f7',
3525
+ borderColor: '#4b286d',
3526
+ borderWidth: 2,
3527
+ color: '#4b286d',
3528
+ outerBorderColor: '#4b286d',
3529
+ outerBorderWidth: 2
3530
+ }
3531
+ },
3532
+ {
3533
+ if: { focus: true, pressed: true },
3534
+ tokens: {
3535
+ backgroundColor: '#4b286d',
3536
+ borderColor: '#4b286d',
3537
+ color: '#ffffff'
3538
+ }
3539
+ },
3540
+ {
3541
+ if: { hover: true },
3542
+ tokens: {
3543
+ backgroundColor: '#f4f4f7',
3544
+ borderColor: '#7c53a5',
3545
+ color: '#4b286d'
3546
+ }
3547
+ },
2881
3548
  {
2882
3549
  if: { pressed: true },
2883
3550
  tokens: {
@@ -3114,6 +3781,18 @@ const theme = {
3114
3781
  },
3115
3782
  PaginationPageButton: {
3116
3783
  appearances: {
3784
+ focus: {
3785
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
3786
+ platforms: [ 'rn', 'web' ],
3787
+ type: 'state',
3788
+ values: [ true, false ]
3789
+ },
3790
+ hover: {
3791
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3792
+ platforms: [ 'rn', 'web' ],
3793
+ type: 'state',
3794
+ values: [ true, false ]
3795
+ },
3117
3796
  pressed: {
3118
3797
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
3119
3798
  type: 'state',
@@ -3126,6 +3805,20 @@ const theme = {
3126
3805
  }
3127
3806
  },
3128
3807
  rules: [
3808
+ {
3809
+ if: { hover: true },
3810
+ tokens: { borderColor: '#676e73', textLine: 'none' }
3811
+ },
3812
+ {
3813
+ if: { focus: true },
3814
+ tokens: {
3815
+ borderBottomWidth: 3,
3816
+ borderColor: '#676e73',
3817
+ borderLeftWidth: 3,
3818
+ borderRightWidth: 3,
3819
+ borderTopWidth: 3
3820
+ }
3821
+ },
3129
3822
  {
3130
3823
  if: { selected: true },
3131
3824
  tokens: {
@@ -3177,6 +3870,18 @@ const theme = {
3177
3870
  type: 'state',
3178
3871
  values: [ 'previous', 'next' ]
3179
3872
  },
3873
+ focus: {
3874
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
3875
+ platforms: [ 'rn', 'web' ],
3876
+ type: 'state',
3877
+ values: [ true, false ]
3878
+ },
3879
+ hover: {
3880
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3881
+ platforms: [ 'rn', 'web' ],
3882
+ type: 'state',
3883
+ values: [ true, false ]
3884
+ },
3180
3885
  pressed: {
3181
3886
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
3182
3887
  type: 'state',
@@ -3205,6 +3910,19 @@ const theme = {
3205
3910
  width: 32
3206
3911
  }
3207
3912
  },
3913
+ {
3914
+ if: { hover: true },
3915
+ tokens: {
3916
+ iconDisplace: 4,
3917
+ outerBorderColor: '#676e73',
3918
+ outerBorderWidth: 1,
3919
+ textLine: 'none'
3920
+ }
3921
+ },
3922
+ {
3923
+ if: { focus: true },
3924
+ tokens: { outerBorderColor: '#676e73', outerBorderWidth: 3 }
3925
+ },
3208
3926
  {
3209
3927
  if: { selected: true },
3210
3928
  tokens: {
@@ -3256,8 +3974,41 @@ const theme = {
3256
3974
  }
3257
3975
  },
3258
3976
  PreviewCard: {
3259
- appearances: {},
3260
- rules: [],
3977
+ appearances: {
3978
+ focus: {
3979
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
3980
+ platforms: [ 'rn', 'web' ],
3981
+ type: 'state',
3982
+ values: [ true, false ]
3983
+ },
3984
+ hover: {
3985
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3986
+ platforms: [ 'rn', 'web' ],
3987
+ type: 'state',
3988
+ values: [ true, false ]
3989
+ },
3990
+ pressed: {
3991
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
3992
+ platforms: [ 'rn', 'web' ],
3993
+ type: 'state',
3994
+ values: [ true, false ]
3995
+ }
3996
+ },
3997
+ rules: [
3998
+ { if: { hover: true }, tokens: { borderWidth: 2 } },
3999
+ {
4000
+ if: { pressed: true },
4001
+ tokens: { backgroundColor: '#f4f4f7' }
4002
+ },
4003
+ {
4004
+ if: { focus: true },
4005
+ tokens: {
4006
+ outerBorderColor: '#676e73',
4007
+ outerBorderGap: 2,
4008
+ outerBorderWidth: 2
4009
+ }
4010
+ }
4011
+ ],
3261
4012
  tokens: {
3262
4013
  backgroundColor: '#ffffff',
3263
4014
  borderColor: '#e3e6e8',
@@ -3584,6 +4335,18 @@ const theme = {
3584
4335
  },
3585
4336
  QuickLinksButton: {
3586
4337
  appearances: {
4338
+ focus: {
4339
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
4340
+ platforms: [ 'rn', 'web' ],
4341
+ type: 'state',
4342
+ values: [ true, false ]
4343
+ },
4344
+ hover: {
4345
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4346
+ platforms: [ 'rn', 'web' ],
4347
+ type: 'state',
4348
+ values: [ true, false ]
4349
+ },
3587
4350
  pressed: {
3588
4351
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
3589
4352
  type: 'state',
@@ -3591,9 +4354,18 @@ const theme = {
3591
4354
  }
3592
4355
  },
3593
4356
  rules: [
4357
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
3594
4358
  {
3595
4359
  if: { pressed: true },
3596
4360
  tokens: { backgroundColor: '#b2b9bf', borderWidth: 3 }
4361
+ },
4362
+ {
4363
+ if: { focus: true },
4364
+ tokens: { outerBorderColor: '#676e73' }
4365
+ },
4366
+ {
4367
+ if: { focus: true, pressed: true },
4368
+ tokens: { borderWidth: 1 }
3597
4369
  }
3598
4370
  ],
3599
4371
  tokens: {
@@ -3650,6 +4422,18 @@ const theme = {
3650
4422
  },
3651
4423
  QuickLinksFeatureItem: {
3652
4424
  appearances: {
4425
+ focus: {
4426
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
4427
+ platforms: [ 'rn', 'web' ],
4428
+ type: 'state',
4429
+ values: [ true, false ]
4430
+ },
4431
+ hover: {
4432
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4433
+ platforms: [ 'rn', 'web' ],
4434
+ type: 'state',
4435
+ values: [ true, false ]
4436
+ },
3653
4437
  pressed: {
3654
4438
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
3655
4439
  type: 'state',
@@ -3666,9 +4450,29 @@ const theme = {
3666
4450
  if: { viewport: 'xl' },
3667
4451
  tokens: { contentMaxDimension: 184, imageDimension: 168 }
3668
4452
  },
4453
+ {
4454
+ if: { focus: true },
4455
+ tokens: { outerBorderColor: '#2b8000', textLine: 'none' }
4456
+ },
4457
+ {
4458
+ if: { hover: true },
4459
+ tokens: {
4460
+ color: '#2b8000',
4461
+ imageDimension: 140,
4462
+ textLine: 'underline'
4463
+ }
4464
+ },
4465
+ {
4466
+ if: { hover: true, viewport: 'xl' },
4467
+ tokens: { imageDimension: 184 }
4468
+ },
3669
4469
  {
3670
4470
  if: { pressed: true },
3671
4471
  tokens: { color: '#1f5c09', textLine: 'none' }
4472
+ },
4473
+ {
4474
+ if: { focus: true, pressed: true },
4475
+ tokens: { color: '#1f5c09', outerBorderColor: '#1f5c09' }
3672
4476
  }
3673
4477
  ],
3674
4478
  tokens: {
@@ -3689,6 +4493,18 @@ const theme = {
3689
4493
  },
3690
4494
  QuickLinksList: {
3691
4495
  appearances: {
4496
+ focus: {
4497
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
4498
+ platforms: [ 'rn', 'web' ],
4499
+ type: 'state',
4500
+ values: [ true, false ]
4501
+ },
4502
+ hover: {
4503
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4504
+ platforms: [ 'rn', 'web' ],
4505
+ type: 'state',
4506
+ values: [ true, false ]
4507
+ },
3692
4508
  pressed: {
3693
4509
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
3694
4510
  type: 'state',
@@ -3696,6 +4512,22 @@ const theme = {
3696
4512
  }
3697
4513
  },
3698
4514
  rules: [
4515
+ {
4516
+ if: { hover: true },
4517
+ tokens: {
4518
+ backgroundColor: '#f4f4f7',
4519
+ itemFontColor: '#4b286d',
4520
+ itemUnderline: 'underline'
4521
+ }
4522
+ },
4523
+ {
4524
+ if: { focus: true },
4525
+ tokens: {
4526
+ backgroundColor: '#e3e6e8',
4527
+ itemFontColor: '#414547',
4528
+ itemUnderline: 'underline'
4529
+ }
4530
+ },
3699
4531
  {
3700
4532
  if: { pressed: true },
3701
4533
  tokens: {
@@ -3742,6 +4574,18 @@ const theme = {
3742
4574
  values: [ true ]
3743
4575
  },
3744
4576
  error: { type: 'state', values: [ true ] },
4577
+ focus: {
4578
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
4579
+ platforms: [ 'rn', 'web' ],
4580
+ type: 'state',
4581
+ values: [ true, false ]
4582
+ },
4583
+ hover: {
4584
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4585
+ platforms: [ 'rn', 'web' ],
4586
+ type: 'state',
4587
+ values: [ true, false ]
4588
+ },
3745
4589
  inactive: {
3746
4590
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
3747
4591
  type: 'state',
@@ -3750,6 +4594,14 @@ const theme = {
3750
4594
  },
3751
4595
  rules: [
3752
4596
  { if: { error: true }, tokens: {} },
4597
+ {
4598
+ if: { hover: true },
4599
+ tokens: { outerBorderColor: '#e3e6e8' }
4600
+ },
4601
+ {
4602
+ if: { focus: true },
4603
+ tokens: { inputBorderColor: '#7c53a5', inputBorderWidth: 3 }
4604
+ },
3753
4605
  {
3754
4606
  if: { inactive: true },
3755
4607
  tokens: {
@@ -3809,6 +4661,18 @@ const theme = {
3809
4661
  values: [ true ]
3810
4662
  },
3811
4663
  error: { type: 'state', values: [ true ] },
4664
+ focus: {
4665
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
4666
+ platforms: [ 'rn', 'web' ],
4667
+ type: 'state',
4668
+ values: [ true, false ]
4669
+ },
4670
+ hover: {
4671
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4672
+ platforms: [ 'rn', 'web' ],
4673
+ type: 'state',
4674
+ values: [ true, false ]
4675
+ },
3812
4676
  inactive: {
3813
4677
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
3814
4678
  type: 'state',
@@ -3837,6 +4701,24 @@ const theme = {
3837
4701
  paddingTop: 16
3838
4702
  }
3839
4703
  },
4704
+ {
4705
+ if: { hover: true },
4706
+ tokens: {
4707
+ borderColor: '#676e73',
4708
+ outerBorderColor: '#e3e6e8',
4709
+ radioOuterBorderColor: '#e3e6e8',
4710
+ radioOuterBorderWidth: 2
4711
+ }
4712
+ },
4713
+ {
4714
+ if: { focus: true },
4715
+ tokens: {
4716
+ outerBorderColor: '#676e73',
4717
+ outerBorderGap: 2,
4718
+ radioInputBorderColor: '#7c53a5',
4719
+ radioInputBorderWidth: 3
4720
+ }
4721
+ },
3840
4722
  {
3841
4723
  description: 'Pressed state matches hover state plus light grey background',
3842
4724
  if: { pressed: true },
@@ -3852,6 +4734,10 @@ const theme = {
3852
4734
  }
3853
4735
  },
3854
4736
  { if: { checked: true }, tokens: { borderColor: '#7c53a5' } },
4737
+ {
4738
+ if: { checked: true, hover: true },
4739
+ tokens: { borderColor: '#4b286d' }
4740
+ },
3855
4741
  {
3856
4742
  if: { error: true },
3857
4743
  tokens: {
@@ -4039,6 +4925,12 @@ const theme = {
4039
4925
  type: 'state',
4040
4926
  values: [ true ]
4041
4927
  },
4928
+ hover: {
4929
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4930
+ platforms: [ 'rn', 'web' ],
4931
+ type: 'state',
4932
+ values: [ true, false ]
4933
+ },
4042
4934
  inactive: {
4043
4935
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
4044
4936
  type: 'state',
@@ -4046,6 +4938,10 @@ const theme = {
4046
4938
  }
4047
4939
  },
4048
4940
  rules: [
4941
+ {
4942
+ if: { hover: true, inactive: null },
4943
+ tokens: { outerBorderWidth: 2 }
4944
+ },
4049
4945
  {
4050
4946
  if: { focus: true },
4051
4947
  tokens: {
@@ -4090,6 +4986,18 @@ const theme = {
4090
4986
  },
4091
4987
  SearchButton: {
4092
4988
  appearances: {
4989
+ focus: {
4990
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
4991
+ platforms: [ 'rn', 'web' ],
4992
+ type: 'state',
4993
+ values: [ true, false ]
4994
+ },
4995
+ hover: {
4996
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4997
+ platforms: [ 'rn', 'web' ],
4998
+ type: 'state',
4999
+ values: [ true, false ]
5000
+ },
4093
5001
  inactive: {
4094
5002
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
4095
5003
  type: 'state',
@@ -4107,6 +5015,23 @@ const theme = {
4107
5015
  if: { priority: 'high' },
4108
5016
  tokens: { backgroundColor: '#4b286d', iconColor: '#ffffff' }
4109
5017
  },
5018
+ {
5019
+ if: { hover: true },
5020
+ tokens: {
5021
+ backgroundColor: '#7c53a5',
5022
+ borderWidth: 0,
5023
+ iconColor: '#ffffff'
5024
+ }
5025
+ },
5026
+ {
5027
+ if: { focus: true },
5028
+ tokens: {
5029
+ backgroundColor: 'transparent',
5030
+ borderColor: '#4b286d',
5031
+ borderWidth: 3,
5032
+ iconColor: '#4b286d'
5033
+ }
5034
+ },
4110
5035
  {
4111
5036
  if: { pressed: true },
4112
5037
  tokens: {
@@ -4153,6 +5078,12 @@ const theme = {
4153
5078
  type: 'state',
4154
5079
  values: [ true ]
4155
5080
  },
5081
+ hover: {
5082
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5083
+ platforms: [ 'rn', 'web' ],
5084
+ type: 'state',
5085
+ values: [ true, false ]
5086
+ },
4156
5087
  inactive: {
4157
5088
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
4158
5089
  type: 'state',
@@ -4165,6 +5096,10 @@ const theme = {
4165
5096
  }
4166
5097
  },
4167
5098
  rules: [
5099
+ {
5100
+ if: { hover: true },
5101
+ tokens: { outerBorderColor: '#e3e6e8' }
5102
+ },
4168
5103
  {
4169
5104
  if: { focus: true },
4170
5105
  tokens: { borderColor: '#7c53a5', borderWidth: 3 }
@@ -4240,6 +5175,18 @@ const theme = {
4240
5175
  type: 'state',
4241
5176
  values: [ true, false ]
4242
5177
  },
5178
+ focus: {
5179
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
5180
+ platforms: [ 'rn', 'web' ],
5181
+ type: 'state',
5182
+ values: [ true, false ]
5183
+ },
5184
+ hover: {
5185
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5186
+ platforms: [ 'rn', 'web' ],
5187
+ type: 'state',
5188
+ values: [ true, false ]
5189
+ },
4243
5190
  type: {
4244
5191
  description: '`parent` being the toggle button for an ItemsGroup, and `child` an element of the ItemGroup',
4245
5192
  type: 'state',
@@ -4283,6 +5230,14 @@ const theme = {
4283
5230
  paddingLeft: 16
4284
5231
  }
4285
5232
  },
5233
+ {
5234
+ if: { hover: true },
5235
+ tokens: { backgroundColor: '#f4f4f7', color: '#4b286d' }
5236
+ },
5237
+ {
5238
+ if: { focus: true },
5239
+ tokens: { backgroundColor: '#f4f4f7', color: '#4b286d' }
5240
+ },
4286
5241
  {
4287
5242
  if: { active: true, type: 'child' },
4288
5243
  tokens: {
@@ -4290,6 +5245,15 @@ const theme = {
4290
5245
  accentPadding: 16,
4291
5246
  backgroundColor: '#f4f4f7'
4292
5247
  }
5248
+ },
5249
+ {
5250
+ if: { active: false, hover: true, type: 'child' },
5251
+ tokens: {
5252
+ accentBackgroundColor: '#ffffff',
5253
+ accentOffset: 0,
5254
+ accentWidth: 16,
5255
+ color: '#414547'
5256
+ }
4293
5257
  }
4294
5258
  ],
4295
5259
  tokens: {
@@ -4360,13 +5324,24 @@ const theme = {
4360
5324
  },
4361
5325
  SkipLink: {
4362
5326
  appearances: {
5327
+ focus: {
5328
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
5329
+ platforms: [ 'rn', 'web' ],
5330
+ type: 'state',
5331
+ values: [ true, false ]
5332
+ },
4363
5333
  pressed: {
4364
5334
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
4365
5335
  type: 'state',
4366
5336
  values: [ true, false ]
4367
5337
  }
4368
5338
  },
4369
- rules: [],
5339
+ rules: [
5340
+ {
5341
+ if: { focus: true, pressed: true },
5342
+ tokens: { color: '#163e06', outlineColor: '#163e06' }
5343
+ }
5344
+ ],
4370
5345
  tokens: {
4371
5346
  backgroundColor: 'rgba(0, 0, 0, 0)',
4372
5347
  borderRadius: 4,
@@ -4394,8 +5369,20 @@ const theme = {
4394
5369
  }
4395
5370
  },
4396
5371
  SplashButton: {
4397
- appearances: {},
4398
- rules: [],
5372
+ appearances: {
5373
+ hover: {
5374
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5375
+ platforms: [ 'rn', 'web' ],
5376
+ type: 'state',
5377
+ values: [ true, false ]
5378
+ }
5379
+ },
5380
+ rules: [
5381
+ {
5382
+ if: { hover: true },
5383
+ tokens: { buttonContentChildrenBackground: 'rgba(0, 0, 0, 0.8)' }
5384
+ }
5385
+ ],
4399
5386
  tokens: {
4400
5387
  buttonContentBackground: 'rgba(0, 0, 0, 0.6)',
4401
5388
  buttonContentChildrenBackground: null,
@@ -4404,8 +5391,22 @@ const theme = {
4404
5391
  }
4405
5392
  },
4406
5393
  SplashButtonWithDetails: {
4407
- appearances: {},
4408
- rules: [],
5394
+ appearances: {
5395
+ hover: {
5396
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5397
+ platforms: [ 'rn', 'web' ],
5398
+ type: 'state',
5399
+ values: [ true, false ]
5400
+ }
5401
+ },
5402
+ rules: [
5403
+ {
5404
+ if: { hover: true },
5405
+ tokens: {
5406
+ buttonContentChildrenBackground: 'rgba(255, 255, 255, 0.8)'
5407
+ }
5408
+ }
5409
+ ],
4409
5410
  tokens: {
4410
5411
  buttonBackground: '#ffffff',
4411
5412
  buttonBorderColor: '#e3e6e8',
@@ -4525,6 +5526,18 @@ const theme = {
4525
5526
  },
4526
5527
  StoryCard: {
4527
5528
  appearances: {
5529
+ focus: {
5530
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
5531
+ platforms: [ 'rn', 'web' ],
5532
+ type: 'state',
5533
+ values: [ true, false ]
5534
+ },
5535
+ hover: {
5536
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5537
+ platforms: [ 'rn', 'web' ],
5538
+ type: 'state',
5539
+ values: [ true, false ]
5540
+ },
4528
5541
  pressed: {
4529
5542
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
4530
5543
  type: 'state',
@@ -4532,9 +5545,18 @@ const theme = {
4532
5545
  }
4533
5546
  },
4534
5547
  rules: [
5548
+ { if: { hover: true }, tokens: { borderWidth: 2 } },
4535
5549
  {
4536
5550
  if: { pressed: true },
4537
5551
  tokens: { backgroundColor: '#f4f4f7' }
5552
+ },
5553
+ {
5554
+ if: { focus: true },
5555
+ tokens: {
5556
+ outerBorderColor: '#676e73',
5557
+ outerBorderGap: 2,
5558
+ outerBorderWidth: 2
5559
+ }
4538
5560
  }
4539
5561
  ],
4540
5562
  tokens: {
@@ -4861,6 +5883,18 @@ const theme = {
4861
5883
  },
4862
5884
  TagsItem: {
4863
5885
  appearances: {
5886
+ focus: {
5887
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
5888
+ platforms: [ 'rn', 'web' ],
5889
+ type: 'state',
5890
+ values: [ true, false ]
5891
+ },
5892
+ hover: {
5893
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5894
+ platforms: [ 'rn', 'web' ],
5895
+ type: 'state',
5896
+ values: [ true, false ]
5897
+ },
4864
5898
  inactive: {
4865
5899
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
4866
5900
  type: 'state',
@@ -4889,6 +5923,16 @@ const theme = {
4889
5923
  iconColor: '#ffffff'
4890
5924
  }
4891
5925
  },
5926
+ {
5927
+ if: { focus: true },
5928
+ tokens: {
5929
+ borderColor: '#676e73',
5930
+ outerBorderColor: '#676e73',
5931
+ outerBorderGap: 2,
5932
+ outerBorderWidth: 2
5933
+ }
5934
+ },
5935
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
4892
5936
  {
4893
5937
  if: { selected: true },
4894
5938
  tokens: {
@@ -4900,10 +5944,22 @@ const theme = {
4900
5944
  iconColor: '#ffffff'
4901
5945
  }
4902
5946
  },
5947
+ {
5948
+ if: { hover: true, selected: true },
5949
+ tokens: { backgroundColor: '#7c53a5', iconBackground: '#4b286d' }
5950
+ },
4903
5951
  {
4904
5952
  if: { pressed: true, selected: true },
4905
5953
  tokens: { backgroundColor: '#3f2a54', iconBackground: '#7c53a5' }
4906
5954
  },
5955
+ {
5956
+ if: { focus: true, selected: true },
5957
+ tokens: { outerBorderColor: '#4b286d' }
5958
+ },
5959
+ {
5960
+ if: { focus: true, pressed: true, selected: true },
5961
+ tokens: { iconBackground: '#7c53a5', outerBorderColor: '#3f2a54' }
5962
+ },
4907
5963
  {
4908
5964
  if: { inactive: true },
4909
5965
  tokens: {
@@ -4958,6 +6014,17 @@ const theme = {
4958
6014
  type: 'state',
4959
6015
  values: [ true, false ]
4960
6016
  },
6017
+ focus: {
6018
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
6019
+ platforms: [ 'rn', 'web' ],
6020
+ type: 'state',
6021
+ values: [ true, false ]
6022
+ },
6023
+ pressed: {
6024
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
6025
+ type: 'state',
6026
+ values: [ true, false ]
6027
+ },
4961
6028
  viewport: {
4962
6029
  description: 'The size label for the current screen viewport based on the current screen width',
4963
6030
  type: 'state',
@@ -4976,6 +6043,23 @@ const theme = {
4976
6043
  {
4977
6044
  if: { expanded: true },
4978
6045
  tokens: { icon: PaletteIconCaretUp }
6046
+ },
6047
+ {
6048
+ if: { focus: true },
6049
+ tokens: {
6050
+ iconOuterBorderColor: '#414547',
6051
+ iconOuterBorderGap: 4,
6052
+ iconOuterBorderWidth: 1
6053
+ }
6054
+ },
6055
+ {
6056
+ if: { pressed: true },
6057
+ tokens: {
6058
+ iconBackgroundColor: '#414547',
6059
+ iconBorderColor: '#ffffff',
6060
+ iconColor: '#ffffff',
6061
+ iconOuterBorderGap: 4
6062
+ }
4979
6063
  }
4980
6064
  ],
4981
6065
  tokens: {
@@ -5009,6 +6093,12 @@ const theme = {
5009
6093
  expandTitlePaddingLeft: 0,
5010
6094
  expandTitleUnderline: 'none',
5011
6095
  icon: PaletteIconCaretDown,
6096
+ iconBackgroundColor: 'transparent',
6097
+ iconBorderColor: '#676e73',
6098
+ iconColor: '#676e73',
6099
+ iconOuterBorderColor: 'transparent',
6100
+ iconOuterBorderGap: 0,
6101
+ iconOuterBorderWidth: null,
5012
6102
  listColor: '#414547',
5013
6103
  listFontName: 'HelveticaNow',
5014
6104
  listFontSize: 14,
@@ -5086,6 +6176,12 @@ const theme = {
5086
6176
  type: 'state',
5087
6177
  values: [ true ]
5088
6178
  },
6179
+ hover: {
6180
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6181
+ platforms: [ 'rn', 'web' ],
6182
+ type: 'state',
6183
+ values: [ true, false ]
6184
+ },
5089
6185
  inactive: {
5090
6186
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
5091
6187
  type: 'state',
@@ -5108,6 +6204,13 @@ const theme = {
5108
6204
  }
5109
6205
  },
5110
6206
  rules: [
6207
+ {
6208
+ if: { hover: true, inactive: null },
6209
+ tokens: {
6210
+ outerBackgroundColor: '#e3e6e8',
6211
+ outerBorderColor: '#e3e6e8'
6212
+ }
6213
+ },
5111
6214
  {
5112
6215
  if: { validation: 'success' },
5113
6216
  tokens: {
@@ -5254,6 +6357,18 @@ const theme = {
5254
6357
  },
5255
6358
  ToggleSwitch: {
5256
6359
  appearances: {
6360
+ focus: {
6361
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
6362
+ platforms: [ 'rn', 'web' ],
6363
+ type: 'state',
6364
+ values: [ true, false ]
6365
+ },
6366
+ hover: {
6367
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6368
+ platforms: [ 'rn', 'web' ],
6369
+ type: 'state',
6370
+ values: [ true, false ]
6371
+ },
5257
6372
  inactive: {
5258
6373
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
5259
6374
  type: 'state',
@@ -5271,10 +6386,27 @@ const theme = {
5271
6386
  }
5272
6387
  },
5273
6388
  rules: [
6389
+ { if: { hover: true }, tokens: { backgroundColor: '#414547' } },
5274
6390
  {
5275
6391
  if: { pressed: true },
5276
6392
  tokens: { backgroundColor: '#2c2e30' }
5277
6393
  },
6394
+ {
6395
+ if: { focus: true },
6396
+ tokens: {
6397
+ outerBorderColor: '#676e73',
6398
+ outerBorderGap: 3,
6399
+ outerBorderWidth: 2
6400
+ }
6401
+ },
6402
+ {
6403
+ if: { focus: true, pressed: true },
6404
+ tokens: {
6405
+ outerBorderColor: '#2c2e30',
6406
+ outerBorderGap: 3,
6407
+ outerBorderWidth: 2
6408
+ }
6409
+ },
5278
6410
  {
5279
6411
  if: { selected: true },
5280
6412
  tokens: {
@@ -5283,10 +6415,22 @@ const theme = {
5283
6415
  iconColor: '#2b8000'
5284
6416
  }
5285
6417
  },
6418
+ {
6419
+ if: { hover: true, selected: true },
6420
+ tokens: { backgroundColor: '#1f5c09', iconColor: '#1f5c09' }
6421
+ },
5286
6422
  {
5287
6423
  if: { pressed: true, selected: true },
5288
6424
  tokens: { backgroundColor: '#163e06', iconColor: '#163e06' }
5289
6425
  },
6426
+ {
6427
+ if: { focus: true, selected: true },
6428
+ tokens: { outerBorderColor: '#676e73', outerBorderWidth: 2 }
6429
+ },
6430
+ {
6431
+ if: { focus: true, pressed: true, selected: true },
6432
+ tokens: { outerBorderColor: '#163e06', outerBorderWidth: 2 }
6433
+ },
5290
6434
  {
5291
6435
  if: { inactive: true },
5292
6436
  tokens: {
@@ -5405,6 +6549,18 @@ const theme = {
5405
6549
  },
5406
6550
  TooltipButton: {
5407
6551
  appearances: {
6552
+ focus: {
6553
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
6554
+ platforms: [ 'rn', 'web' ],
6555
+ type: 'state',
6556
+ values: [ true, false ]
6557
+ },
6558
+ hover: {
6559
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6560
+ platforms: [ 'rn', 'web' ],
6561
+ type: 'state',
6562
+ values: [ true, false ]
6563
+ },
5408
6564
  inverse: { type: 'variant', values: [ true ] },
5409
6565
  pressed: {
5410
6566
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
@@ -5414,10 +6570,19 @@ const theme = {
5414
6570
  },
5415
6571
  rules: [
5416
6572
  { if: { inverse: true }, tokens: { iconColor: '#ffffff' } },
6573
+ { if: { hover: true }, tokens: { iconScale: 1.25 } },
5417
6574
  { if: { pressed: true }, tokens: { iconColor: '#676e73' } },
5418
6575
  {
5419
6576
  if: { inverse: true, pressed: true },
5420
6577
  tokens: { iconColor: '#b2b9bf' }
6578
+ },
6579
+ {
6580
+ if: { focus: true },
6581
+ tokens: { outerBorderColor: '#676e73' }
6582
+ },
6583
+ {
6584
+ if: { focus: true, inverse: true },
6585
+ tokens: { outerBorderColor: '#b2b9bf' }
5421
6586
  }
5422
6587
  ],
5423
6588
  tokens: {
@@ -5764,7 +6929,7 @@ const theme = {
5764
6929
  }
5765
6930
  ],
5766
6931
  tokens: {
5767
- color: '#2c2e30',
6932
+ color: '#414547',
5768
6933
  fontName: 'HelveticaNow',
5769
6934
  fontScaleCap: 64,
5770
6935
  fontSize: 16,
@@ -5869,6 +7034,18 @@ const theme = {
5869
7034
  },
5870
7035
  VideoPickerThumbnail: {
5871
7036
  appearances: {
7037
+ focus: {
7038
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
7039
+ platforms: [ 'rn', 'web' ],
7040
+ type: 'state',
7041
+ values: [ true, false ]
7042
+ },
7043
+ hover: {
7044
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
7045
+ platforms: [ 'rn', 'web' ],
7046
+ type: 'state',
7047
+ values: [ true, false ]
7048
+ },
5872
7049
  pressed: {
5873
7050
  description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
5874
7051
  type: 'state',
@@ -5881,6 +7058,14 @@ const theme = {
5881
7058
  }
5882
7059
  },
5883
7060
  rules: [
7061
+ {
7062
+ if: { focus: true },
7063
+ tokens: { borderColor: '#b2b9bf', outerBorderColor: '#b2b9bf' }
7064
+ },
7065
+ {
7066
+ if: { hover: true },
7067
+ tokens: { borderColor: '#e3e6e8', borderWidth: 3 }
7068
+ },
5884
7069
  {
5885
7070
  if: { pressed: true },
5886
7071
  tokens: { borderColor: '#676e73', borderWidth: 3 }
@@ -6022,6 +7207,6 @@ const theme = {
6022
7207
  tokens: { size: 96 }
6023
7208
  }
6024
7209
  },
6025
- metadata: { name: 'theme-allium', themeTokensVersion: '2.49.0' }
7210
+ metadata: { name: 'theme-allium', themeTokensVersion: '2.50.1' }
6026
7211
  }
6027
7212
  export default theme