@telus-uds/theme-allium 4.23.0 → 4.24.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.
Files changed (233) hide show
  1. package/build/android/CarouselThumbnail.json +2 -2
  2. package/build/android/TermsAndConditions.json +57 -0
  3. package/build/android/schema.json +1004 -959
  4. package/build/android/theme.json +60 -3
  5. package/build/ios/CarouselThumbnail.json +2 -2
  6. package/build/ios/TermsAndConditions.json +57 -0
  7. package/build/ios/schema.json +1004 -959
  8. package/build/ios/theme.json +60 -3
  9. package/build/rn/ActivityIndicator.js +1 -1
  10. package/build/rn/Badge.js +1 -1
  11. package/build/rn/BlockQuote.js +1 -1
  12. package/build/rn/Box.js +1 -1
  13. package/build/rn/Breadcrumbs.js +1 -1
  14. package/build/rn/Button.js +3 -3
  15. package/build/rn/ButtonDropdown.js +3 -3
  16. package/build/rn/ButtonGroup.js +1 -1
  17. package/build/rn/ButtonGroupItem.js +3 -3
  18. package/build/rn/Callout.js +1 -1
  19. package/build/rn/Card.js +3 -3
  20. package/build/rn/Carousel.js +1 -1
  21. package/build/rn/CarouselTabsPanelItem.js +3 -3
  22. package/build/rn/CarouselThumbnail.js +5 -5
  23. package/build/rn/Checkbox.js +3 -3
  24. package/build/rn/CheckboxCard.js +3 -3
  25. package/build/rn/CheckboxCardGroup.js +1 -1
  26. package/build/rn/CheckboxGroup.js +1 -1
  27. package/build/rn/ChevronLink.js +3 -3
  28. package/build/rn/ColourToggle.js +3 -3
  29. package/build/rn/Countdown.js +1 -1
  30. package/build/rn/DatePicker.js +1 -1
  31. package/build/rn/Disclaimer.js +1 -1
  32. package/build/rn/Divider.js +1 -1
  33. package/build/rn/ExpandCollapse.js +1 -1
  34. package/build/rn/ExpandCollapseControl.js +1 -1
  35. package/build/rn/ExpandCollapseMini.js +1 -1
  36. package/build/rn/ExpandCollapseMiniControl.js +1 -1
  37. package/build/rn/ExpandCollapsePanel.js +1 -1
  38. package/build/rn/Feedback.js +1 -1
  39. package/build/rn/Fieldset.js +1 -1
  40. package/build/rn/Footnote.js +1 -1
  41. package/build/rn/FootnoteLink.js +1 -1
  42. package/build/rn/HorizontalScrollButton.js +3 -3
  43. package/build/rn/Icon.js +1 -1
  44. package/build/rn/IconButton.js +3 -3
  45. package/build/rn/Image.js +1 -1
  46. package/build/rn/InputLabel.js +1 -1
  47. package/build/rn/InputSupports.js +1 -1
  48. package/build/rn/Link.js +3 -3
  49. package/build/rn/List.js +1 -1
  50. package/build/rn/Listbox.js +3 -3
  51. package/build/rn/Modal.js +1 -1
  52. package/build/rn/MultiSelectFilter.js +1 -1
  53. package/build/rn/NavigationBar.js +3 -3
  54. package/build/rn/Notification.js +1 -1
  55. package/build/rn/OrderedList.js +1 -1
  56. package/build/rn/Pagination.js +1 -1
  57. package/build/rn/PaginationPageButton.js +3 -3
  58. package/build/rn/PaginationSideButton.js +3 -3
  59. package/build/rn/PreviewCard.js +4 -4
  60. package/build/rn/PriceLockup.js +1 -1
  61. package/build/rn/Progress.js +1 -1
  62. package/build/rn/ProgressBar.js +1 -1
  63. package/build/rn/QuantitySelector.js +1 -1
  64. package/build/rn/QuantitySelectorSideButton.js +1 -1
  65. package/build/rn/QuickLinks.js +1 -1
  66. package/build/rn/QuickLinksButton.js +3 -3
  67. package/build/rn/QuickLinksCard.js +1 -1
  68. package/build/rn/QuickLinksFeature.js +1 -1
  69. package/build/rn/QuickLinksFeatureItem.js +3 -3
  70. package/build/rn/QuickLinksList.js +3 -3
  71. package/build/rn/Radio.js +3 -3
  72. package/build/rn/RadioCard.js +3 -3
  73. package/build/rn/RadioCardGroup.js +1 -1
  74. package/build/rn/RadioGroup.js +1 -1
  75. package/build/rn/Ribbon.js +1 -1
  76. package/build/rn/Search.js +2 -2
  77. package/build/rn/SearchButton.js +3 -3
  78. package/build/rn/Select.js +2 -2
  79. package/build/rn/SideNav.js +1 -1
  80. package/build/rn/SideNavItem.js +3 -3
  81. package/build/rn/SideNavItemsGroup.js +1 -1
  82. package/build/rn/Skeleton.js +1 -1
  83. package/build/rn/SkipLink.js +2 -2
  84. package/build/rn/Spinner.js +1 -1
  85. package/build/rn/SplashButton.js +2 -2
  86. package/build/rn/SplashButtonWithDetails.js +2 -2
  87. package/build/rn/StackView.js +1 -1
  88. package/build/rn/StepTracker.js +1 -1
  89. package/build/rn/StoryCard.js +3 -3
  90. package/build/rn/Table.js +1 -1
  91. package/build/rn/Tabs.js +1 -1
  92. package/build/rn/TabsItem.js +1 -1
  93. package/build/rn/Tags.js +1 -1
  94. package/build/rn/TagsItem.js +3 -3
  95. package/build/rn/TermsAndConditions.js +36 -2
  96. package/build/rn/Testimonial.js +1 -1
  97. package/build/rn/TextArea.js +1 -1
  98. package/build/rn/TextInput.js +2 -2
  99. package/build/rn/Timeline.js +1 -1
  100. package/build/rn/Toast.js +1 -1
  101. package/build/rn/ToggleSwitch.js +3 -3
  102. package/build/rn/ToggleSwitchGroup.js +1 -1
  103. package/build/rn/Tooltip.js +1 -1
  104. package/build/rn/TooltipButton.js +3 -3
  105. package/build/rn/Typography.js +1 -1
  106. package/build/rn/Video.js +1 -1
  107. package/build/rn/VideoButton.js +1 -1
  108. package/build/rn/VideoControlBar.js +1 -1
  109. package/build/rn/VideoMenu.js +1 -1
  110. package/build/rn/VideoMiddleControlButton.js +1 -1
  111. package/build/rn/VideoPicker.js +1 -1
  112. package/build/rn/VideoPickerSlider.js +1 -1
  113. package/build/rn/VideoPickerThumbnail.js +3 -3
  114. package/build/rn/VideoProgressBar.js +1 -1
  115. package/build/rn/VideoVolumeSlider.js +1 -1
  116. package/build/rn/WaffleGrid.js +1 -1
  117. package/build/rn/schema.json +1004 -959
  118. package/build/rn/spacingScale.js +1 -1
  119. package/build/rn/theme.js +105 -71
  120. package/build/web/ActivityIndicator.js +1 -1
  121. package/build/web/Badge.js +1 -1
  122. package/build/web/BlockQuote.js +1 -1
  123. package/build/web/Box.js +1 -1
  124. package/build/web/Breadcrumbs.js +1 -1
  125. package/build/web/Button.js +94 -1
  126. package/build/web/ButtonDropdown.js +36 -1
  127. package/build/web/ButtonGroup.js +1 -1
  128. package/build/web/ButtonGroupItem.js +35 -1
  129. package/build/web/Callout.js +1 -1
  130. package/build/web/Card.js +25 -2
  131. package/build/web/Carousel.js +1 -1
  132. package/build/web/CarouselTabsPanelItem.js +57 -1
  133. package/build/web/CarouselThumbnail.js +20 -3
  134. package/build/web/Checkbox.js +30 -1
  135. package/build/web/CheckboxCard.js +35 -1
  136. package/build/web/CheckboxCardGroup.js +1 -1
  137. package/build/web/CheckboxGroup.js +1 -1
  138. package/build/web/ChevronLink.js +38 -1
  139. package/build/web/ColourToggle.js +29 -1
  140. package/build/web/Countdown.js +1 -1
  141. package/build/web/DatePicker.js +1 -1
  142. package/build/web/Disclaimer.js +1 -1
  143. package/build/web/Divider.js +1 -1
  144. package/build/web/ExpandCollapse.js +1 -1
  145. package/build/web/ExpandCollapseControl.js +1 -1
  146. package/build/web/ExpandCollapseMini.js +1 -1
  147. package/build/web/ExpandCollapseMiniControl.js +1 -1
  148. package/build/web/ExpandCollapsePanel.js +1 -1
  149. package/build/web/Feedback.js +1 -1
  150. package/build/web/Fieldset.js +1 -1
  151. package/build/web/Footnote.js +1 -1
  152. package/build/web/FootnoteLink.js +1 -1
  153. package/build/web/HorizontalScrollButton.js +17 -1
  154. package/build/web/Icon.js +1 -1
  155. package/build/web/IconButton.js +76 -1
  156. package/build/web/Image.js +1 -1
  157. package/build/web/InputLabel.js +1 -1
  158. package/build/web/InputSupports.js +1 -1
  159. package/build/web/Link.js +70 -2
  160. package/build/web/List.js +1 -1
  161. package/build/web/Listbox.js +61 -1
  162. package/build/web/Modal.js +1 -1
  163. package/build/web/MultiSelectFilter.js +1 -1
  164. package/build/web/NavigationBar.js +40 -1
  165. package/build/web/Notification.js +1 -1
  166. package/build/web/OrderedList.js +1 -1
  167. package/build/web/Pagination.js +1 -1
  168. package/build/web/PaginationPageButton.js +27 -1
  169. package/build/web/PaginationSideButton.js +26 -1
  170. package/build/web/PreviewCard.js +33 -3
  171. package/build/web/PriceLockup.js +1 -1
  172. package/build/web/Progress.js +1 -1
  173. package/build/web/ProgressBar.js +1 -1
  174. package/build/web/QuantitySelector.js +1 -1
  175. package/build/web/QuantitySelectorSideButton.js +1 -1
  176. package/build/web/QuickLinks.js +1 -1
  177. package/build/web/QuickLinksButton.js +17 -2
  178. package/build/web/QuickLinksCard.js +1 -1
  179. package/build/web/QuickLinksFeature.js +1 -1
  180. package/build/web/QuickLinksFeatureItem.js +29 -1
  181. package/build/web/QuickLinksList.js +29 -1
  182. package/build/web/Radio.js +18 -1
  183. package/build/web/RadioCard.js +35 -1
  184. package/build/web/RadioCardGroup.js +1 -1
  185. package/build/web/RadioGroup.js +1 -1
  186. package/build/web/Ribbon.js +1 -1
  187. package/build/web/Search.js +11 -1
  188. package/build/web/SearchButton.js +30 -1
  189. package/build/web/Select.js +8 -1
  190. package/build/web/SideNav.js +1 -1
  191. package/build/web/SideNavItem.js +30 -1
  192. package/build/web/SideNavItemsGroup.js +1 -1
  193. package/build/web/Skeleton.js +1 -1
  194. package/build/web/SkipLink.js +13 -2
  195. package/build/web/Spinner.js +1 -1
  196. package/build/web/SplashButton.js +15 -3
  197. package/build/web/SplashButtonWithDetails.js +15 -3
  198. package/build/web/StackView.js +1 -1
  199. package/build/web/StepTracker.js +1 -1
  200. package/build/web/StoryCard.js +25 -2
  201. package/build/web/Table.js +1 -1
  202. package/build/web/Tabs.js +1 -1
  203. package/build/web/TabsItem.js +1 -1
  204. package/build/web/Tags.js +1 -1
  205. package/build/web/TagsItem.js +35 -1
  206. package/build/web/TermsAndConditions.js +36 -2
  207. package/build/web/Testimonial.js +1 -1
  208. package/build/web/TextArea.js +1 -1
  209. package/build/web/TextInput.js +11 -1
  210. package/build/web/Timeline.js +1 -1
  211. package/build/web/Toast.js +1 -1
  212. package/build/web/ToggleSwitch.js +42 -1
  213. package/build/web/ToggleSwitchGroup.js +1 -1
  214. package/build/web/Tooltip.js +1 -1
  215. package/build/web/TooltipButton.js +19 -1
  216. package/build/web/Typography.js +1 -1
  217. package/build/web/Video.js +1 -1
  218. package/build/web/VideoButton.js +1 -1
  219. package/build/web/VideoControlBar.js +1 -1
  220. package/build/web/VideoMenu.js +1 -1
  221. package/build/web/VideoMiddleControlButton.js +1 -1
  222. package/build/web/VideoPicker.js +1 -1
  223. package/build/web/VideoPickerSlider.js +1 -1
  224. package/build/web/VideoPickerThumbnail.js +21 -1
  225. package/build/web/VideoProgressBar.js +1 -1
  226. package/build/web/VideoVolumeSlider.js +1 -1
  227. package/build/web/WaffleGrid.js +1 -1
  228. package/build/web/index.js +1 -1
  229. package/build/web/schema.json +1004 -959
  230. package/build/web/spacingScale.js +1 -1
  231. package/build/web/theme.js +1203 -21
  232. package/package.json +5 -5
  233. package/theme.json +31 -2
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  *
3
3
  * Do not edit directly
4
- * Generated on Thu, 18 Jan 2024 22:42:16 GMT
4
+ * Generated on Wed, 07 Feb 2024 19:08:45 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',
@@ -1184,7 +1446,12 @@ const theme = {
1184
1446
  rules: [
1185
1447
  {
1186
1448
  if: { viewport: [ 'xs', 'sm' ] },
1187
- tokens: { alignItems: 'flex-start', size: 48 }
1449
+ tokens: { alignItems: 'flex-start', size: 32 }
1450
+ },
1451
+ { if: { hover: true }, tokens: { borderColor: '#2b8000' } },
1452
+ {
1453
+ if: { focus: true },
1454
+ tokens: { borderColor: '#2b8000', borderWidth: 2 }
1188
1455
  },
1189
1456
  {
1190
1457
  if: { pressed: true },
@@ -1201,7 +1468,7 @@ const theme = {
1201
1468
  padding: 8,
1202
1469
  selectedBorderColor: '#676e73',
1203
1470
  selectedBorderWidth: 2,
1204
- size: 72
1471
+ size: 56
1205
1472
  }
1206
1473
  },
1207
1474
  Checkbox: {
@@ -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: {
@@ -2055,6 +2453,18 @@ const theme = {
2055
2453
  },
2056
2454
  HorizontalScrollButton: {
2057
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
+ },
2058
2468
  pressed: {
2059
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.',
2060
2470
  type: 'state',
@@ -2062,6 +2472,10 @@ const theme = {
2062
2472
  }
2063
2473
  },
2064
2474
  rules: [
2475
+ {
2476
+ if: { hover: true },
2477
+ tokens: { borderColor: '#414547', iconColor: '#414547' }
2478
+ },
2065
2479
  {
2066
2480
  if: { pressed: true },
2067
2481
  tokens: { backgroundColor: '#676e73', iconColor: '#ffffff' }
@@ -2147,6 +2561,18 @@ const theme = {
2147
2561
  type: 'variant',
2148
2562
  values: [ true ]
2149
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
+ },
2150
2576
  inactive: {
2151
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.',
2152
2578
  type: 'state',
@@ -2234,20 +2660,71 @@ const theme = {
2234
2660
  tokens: { icon: PaletteIconChevronLeft }
2235
2661
  },
2236
2662
  {
2237
- if: { action: 'moveRight' },
2238
- tokens: { icon: PaletteIconChevronRight }
2663
+ if: { action: 'moveRight' },
2664
+ tokens: { icon: PaletteIconChevronRight }
2665
+ },
2666
+ {
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' }
2239
2702
  },
2240
2703
  {
2241
- if: { action: 'play' },
2242
- tokens: { icon: PaletteIconPlayVideo }
2704
+ if: { focus: true },
2705
+ tokens: {
2706
+ outerBorderColor: '#676e73',
2707
+ outerBorderGap: 4,
2708
+ outerBorderWidth: 1
2709
+ }
2243
2710
  },
2244
2711
  {
2245
- if: { inverse: true },
2246
- tokens: { borderColor: '#ffffff', iconColor: '#ffffff' }
2712
+ if: { focus: true, password: true },
2713
+ tokens: {
2714
+ borderWidth: 3,
2715
+ outerBorderColor: '#3f2a54',
2716
+ outerBorderWidth: 0
2717
+ }
2247
2718
  },
2248
2719
  {
2249
- if: { password: true },
2250
- 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
+ }
2251
2728
  },
2252
2729
  {
2253
2730
  if: { pressed: true },
@@ -2321,6 +2798,26 @@ const theme = {
2321
2798
  outerBorderColor: 'rgba(0, 0, 0, 0)'
2322
2799
  }
2323
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
+ },
2324
2821
  { if: { compact: true }, tokens: { outerBorderGap: 0 } }
2325
2822
  ],
2326
2823
  tokens: {
@@ -2377,6 +2874,18 @@ const theme = {
2377
2874
  type: 'variant',
2378
2875
  values: [ true ]
2379
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
+ },
2380
2889
  iconPosition: {
2381
2890
  description: 'Theme styles to be applied to icon links depending on where the icon is in relation to the link text',
2382
2891
  type: 'state',
@@ -2410,10 +2919,22 @@ const theme = {
2410
2919
  },
2411
2920
  rules: [
2412
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
+ },
2413
2930
  {
2414
2931
  if: { pressed: true },
2415
2932
  tokens: { color: '#163e06', textLine: 'none' }
2416
2933
  },
2934
+ {
2935
+ if: { focus: true, pressed: true },
2936
+ tokens: { outerBorderColor: '#163e06' }
2937
+ },
2417
2938
  {
2418
2939
  if: { size: 'large' },
2419
2940
  tokens: { blockFontSize: 20, blockLineHeight: 1.25, iconSize: 24 }
@@ -2433,17 +2954,61 @@ const theme = {
2433
2954
  }
2434
2955
  },
2435
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
+ },
2436
2965
  {
2437
2966
  if: { alternative: true, pressed: true },
2438
2967
  tokens: { color: '#2c2e30' }
2439
2968
  },
2440
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
+ },
2441
2978
  {
2442
2979
  if: { inverse: true, pressed: true },
2443
2980
  tokens: { color: '#e3e6e8' }
2444
2981
  },
2982
+ {
2983
+ if: { focus: true, inverse: true, pressed: true },
2984
+ tokens: { color: '#e3e6e8', outerBorderColor: '#e3e6e8' }
2985
+ },
2445
2986
  { if: { light: true }, tokens: { color: '#676e73' } },
2446
- { 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
+ }
2447
3012
  ],
2448
3013
  tokens: {
2449
3014
  alignSelf: 'flex-start',
@@ -2544,6 +3109,18 @@ const theme = {
2544
3109
  type: 'state',
2545
3110
  values: [ true, false ]
2546
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
+ },
2547
3124
  isChild: {
2548
3125
  description: 'when the item is child of another child',
2549
3126
  type: 'state',
@@ -2556,6 +3133,38 @@ const theme = {
2556
3133
  }
2557
3134
  },
2558
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
+ },
2559
3168
  {
2560
3169
  if: { expanded: true },
2561
3170
  tokens: { groupIcon: PaletteIconCaretUp }
@@ -2592,6 +3201,22 @@ const theme = {
2592
3201
  itemBorderTopWidth: 0
2593
3202
  }
2594
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
+ },
2595
3220
  {
2596
3221
  if: { current: true, isChild: true },
2597
3222
  tokens: { itemBorderLeftColor: '#4b286d' }
@@ -2854,6 +3479,18 @@ const theme = {
2854
3479
  type: 'state',
2855
3480
  values: [ true, false ]
2856
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
+ },
2857
3494
  pressed: {
2858
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.',
2859
3496
  type: 'state',
@@ -2881,6 +3518,33 @@ const theme = {
2881
3518
  fontWeight: '700'
2882
3519
  }
2883
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
+ },
2884
3548
  {
2885
3549
  if: { pressed: true },
2886
3550
  tokens: {
@@ -3117,6 +3781,18 @@ const theme = {
3117
3781
  },
3118
3782
  PaginationPageButton: {
3119
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
+ },
3120
3796
  pressed: {
3121
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.',
3122
3798
  type: 'state',
@@ -3129,6 +3805,20 @@ const theme = {
3129
3805
  }
3130
3806
  },
3131
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
+ },
3132
3822
  {
3133
3823
  if: { selected: true },
3134
3824
  tokens: {
@@ -3180,6 +3870,18 @@ const theme = {
3180
3870
  type: 'state',
3181
3871
  values: [ 'previous', 'next' ]
3182
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
+ },
3183
3885
  pressed: {
3184
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.',
3185
3887
  type: 'state',
@@ -3208,6 +3910,19 @@ const theme = {
3208
3910
  width: 32
3209
3911
  }
3210
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
+ },
3211
3926
  {
3212
3927
  if: { selected: true },
3213
3928
  tokens: {
@@ -3259,8 +3974,41 @@ const theme = {
3259
3974
  }
3260
3975
  },
3261
3976
  PreviewCard: {
3262
- appearances: {},
3263
- 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
+ ],
3264
4012
  tokens: {
3265
4013
  backgroundColor: '#ffffff',
3266
4014
  borderColor: '#e3e6e8',
@@ -3587,6 +4335,18 @@ const theme = {
3587
4335
  },
3588
4336
  QuickLinksButton: {
3589
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
+ },
3590
4350
  pressed: {
3591
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.',
3592
4352
  type: 'state',
@@ -3594,9 +4354,18 @@ const theme = {
3594
4354
  }
3595
4355
  },
3596
4356
  rules: [
4357
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
3597
4358
  {
3598
4359
  if: { pressed: true },
3599
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 }
3600
4369
  }
3601
4370
  ],
3602
4371
  tokens: {
@@ -3653,6 +4422,18 @@ const theme = {
3653
4422
  },
3654
4423
  QuickLinksFeatureItem: {
3655
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
+ },
3656
4437
  pressed: {
3657
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.',
3658
4439
  type: 'state',
@@ -3669,9 +4450,29 @@ const theme = {
3669
4450
  if: { viewport: 'xl' },
3670
4451
  tokens: { contentMaxDimension: 184, imageDimension: 168 }
3671
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
+ },
3672
4469
  {
3673
4470
  if: { pressed: true },
3674
4471
  tokens: { color: '#1f5c09', textLine: 'none' }
4472
+ },
4473
+ {
4474
+ if: { focus: true, pressed: true },
4475
+ tokens: { color: '#1f5c09', outerBorderColor: '#1f5c09' }
3675
4476
  }
3676
4477
  ],
3677
4478
  tokens: {
@@ -3692,6 +4493,18 @@ const theme = {
3692
4493
  },
3693
4494
  QuickLinksList: {
3694
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
+ },
3695
4508
  pressed: {
3696
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.',
3697
4510
  type: 'state',
@@ -3699,6 +4512,22 @@ const theme = {
3699
4512
  }
3700
4513
  },
3701
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
+ },
3702
4531
  {
3703
4532
  if: { pressed: true },
3704
4533
  tokens: {
@@ -3745,6 +4574,18 @@ const theme = {
3745
4574
  values: [ true ]
3746
4575
  },
3747
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
+ },
3748
4589
  inactive: {
3749
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.',
3750
4591
  type: 'state',
@@ -3753,6 +4594,14 @@ const theme = {
3753
4594
  },
3754
4595
  rules: [
3755
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
+ },
3756
4605
  {
3757
4606
  if: { inactive: true },
3758
4607
  tokens: {
@@ -3812,6 +4661,18 @@ const theme = {
3812
4661
  values: [ true ]
3813
4662
  },
3814
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
+ },
3815
4676
  inactive: {
3816
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.',
3817
4678
  type: 'state',
@@ -3840,6 +4701,24 @@ const theme = {
3840
4701
  paddingTop: 16
3841
4702
  }
3842
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
+ },
3843
4722
  {
3844
4723
  description: 'Pressed state matches hover state plus light grey background',
3845
4724
  if: { pressed: true },
@@ -3855,6 +4734,10 @@ const theme = {
3855
4734
  }
3856
4735
  },
3857
4736
  { if: { checked: true }, tokens: { borderColor: '#7c53a5' } },
4737
+ {
4738
+ if: { checked: true, hover: true },
4739
+ tokens: { borderColor: '#4b286d' }
4740
+ },
3858
4741
  {
3859
4742
  if: { error: true },
3860
4743
  tokens: {
@@ -4042,6 +4925,12 @@ const theme = {
4042
4925
  type: 'state',
4043
4926
  values: [ true ]
4044
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
+ },
4045
4934
  inactive: {
4046
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.',
4047
4936
  type: 'state',
@@ -4049,6 +4938,10 @@ const theme = {
4049
4938
  }
4050
4939
  },
4051
4940
  rules: [
4941
+ {
4942
+ if: { hover: true, inactive: null },
4943
+ tokens: { outerBorderWidth: 2 }
4944
+ },
4052
4945
  {
4053
4946
  if: { focus: true },
4054
4947
  tokens: {
@@ -4093,6 +4986,18 @@ const theme = {
4093
4986
  },
4094
4987
  SearchButton: {
4095
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
+ },
4096
5001
  inactive: {
4097
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.',
4098
5003
  type: 'state',
@@ -4110,6 +5015,23 @@ const theme = {
4110
5015
  if: { priority: 'high' },
4111
5016
  tokens: { backgroundColor: '#4b286d', iconColor: '#ffffff' }
4112
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
+ },
4113
5035
  {
4114
5036
  if: { pressed: true },
4115
5037
  tokens: {
@@ -4156,6 +5078,12 @@ const theme = {
4156
5078
  type: 'state',
4157
5079
  values: [ true ]
4158
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
+ },
4159
5087
  inactive: {
4160
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.',
4161
5089
  type: 'state',
@@ -4168,6 +5096,10 @@ const theme = {
4168
5096
  }
4169
5097
  },
4170
5098
  rules: [
5099
+ {
5100
+ if: { hover: true },
5101
+ tokens: { outerBorderColor: '#e3e6e8' }
5102
+ },
4171
5103
  {
4172
5104
  if: { focus: true },
4173
5105
  tokens: { borderColor: '#7c53a5', borderWidth: 3 }
@@ -4243,6 +5175,18 @@ const theme = {
4243
5175
  type: 'state',
4244
5176
  values: [ true, false ]
4245
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
+ },
4246
5190
  type: {
4247
5191
  description: '`parent` being the toggle button for an ItemsGroup, and `child` an element of the ItemGroup',
4248
5192
  type: 'state',
@@ -4286,6 +5230,14 @@ const theme = {
4286
5230
  paddingLeft: 16
4287
5231
  }
4288
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
+ },
4289
5241
  {
4290
5242
  if: { active: true, type: 'child' },
4291
5243
  tokens: {
@@ -4293,6 +5245,15 @@ const theme = {
4293
5245
  accentPadding: 16,
4294
5246
  backgroundColor: '#f4f4f7'
4295
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
+ }
4296
5257
  }
4297
5258
  ],
4298
5259
  tokens: {
@@ -4363,13 +5324,24 @@ const theme = {
4363
5324
  },
4364
5325
  SkipLink: {
4365
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
+ },
4366
5333
  pressed: {
4367
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.',
4368
5335
  type: 'state',
4369
5336
  values: [ true, false ]
4370
5337
  }
4371
5338
  },
4372
- rules: [],
5339
+ rules: [
5340
+ {
5341
+ if: { focus: true, pressed: true },
5342
+ tokens: { color: '#163e06', outlineColor: '#163e06' }
5343
+ }
5344
+ ],
4373
5345
  tokens: {
4374
5346
  backgroundColor: 'rgba(0, 0, 0, 0)',
4375
5347
  borderRadius: 4,
@@ -4397,8 +5369,20 @@ const theme = {
4397
5369
  }
4398
5370
  },
4399
5371
  SplashButton: {
4400
- appearances: {},
4401
- 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
+ ],
4402
5386
  tokens: {
4403
5387
  buttonContentBackground: 'rgba(0, 0, 0, 0.6)',
4404
5388
  buttonContentChildrenBackground: null,
@@ -4407,8 +5391,22 @@ const theme = {
4407
5391
  }
4408
5392
  },
4409
5393
  SplashButtonWithDetails: {
4410
- appearances: {},
4411
- 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
+ ],
4412
5410
  tokens: {
4413
5411
  buttonBackground: '#ffffff',
4414
5412
  buttonBorderColor: '#e3e6e8',
@@ -4528,6 +5526,18 @@ const theme = {
4528
5526
  },
4529
5527
  StoryCard: {
4530
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
+ },
4531
5541
  pressed: {
4532
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.',
4533
5543
  type: 'state',
@@ -4535,9 +5545,18 @@ const theme = {
4535
5545
  }
4536
5546
  },
4537
5547
  rules: [
5548
+ { if: { hover: true }, tokens: { borderWidth: 2 } },
4538
5549
  {
4539
5550
  if: { pressed: true },
4540
5551
  tokens: { backgroundColor: '#f4f4f7' }
5552
+ },
5553
+ {
5554
+ if: { focus: true },
5555
+ tokens: {
5556
+ outerBorderColor: '#676e73',
5557
+ outerBorderGap: 2,
5558
+ outerBorderWidth: 2
5559
+ }
4541
5560
  }
4542
5561
  ],
4543
5562
  tokens: {
@@ -4864,6 +5883,18 @@ const theme = {
4864
5883
  },
4865
5884
  TagsItem: {
4866
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
+ },
4867
5898
  inactive: {
4868
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.',
4869
5900
  type: 'state',
@@ -4892,6 +5923,16 @@ const theme = {
4892
5923
  iconColor: '#ffffff'
4893
5924
  }
4894
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 } },
4895
5936
  {
4896
5937
  if: { selected: true },
4897
5938
  tokens: {
@@ -4903,10 +5944,22 @@ const theme = {
4903
5944
  iconColor: '#ffffff'
4904
5945
  }
4905
5946
  },
5947
+ {
5948
+ if: { hover: true, selected: true },
5949
+ tokens: { backgroundColor: '#7c53a5', iconBackground: '#4b286d' }
5950
+ },
4906
5951
  {
4907
5952
  if: { pressed: true, selected: true },
4908
5953
  tokens: { backgroundColor: '#3f2a54', iconBackground: '#7c53a5' }
4909
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
+ },
4910
5963
  {
4911
5964
  if: { inactive: true },
4912
5965
  tokens: {
@@ -4961,6 +6014,17 @@ const theme = {
4961
6014
  type: 'state',
4962
6015
  values: [ true, false ]
4963
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
+ },
4964
6028
  viewport: {
4965
6029
  description: 'The size label for the current screen viewport based on the current screen width',
4966
6030
  type: 'state',
@@ -4979,6 +6043,23 @@ const theme = {
4979
6043
  {
4980
6044
  if: { expanded: true },
4981
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
+ }
4982
6063
  }
4983
6064
  ],
4984
6065
  tokens: {
@@ -5012,6 +6093,12 @@ const theme = {
5012
6093
  expandTitlePaddingLeft: 0,
5013
6094
  expandTitleUnderline: 'none',
5014
6095
  icon: PaletteIconCaretDown,
6096
+ iconBackgroundColor: 'transparent',
6097
+ iconBorderColor: '#676e73',
6098
+ iconColor: '#676e73',
6099
+ iconOuterBorderColor: 'transparent',
6100
+ iconOuterBorderGap: 0,
6101
+ iconOuterBorderWidth: null,
5015
6102
  listColor: '#414547',
5016
6103
  listFontName: 'HelveticaNow',
5017
6104
  listFontSize: 14,
@@ -5089,6 +6176,12 @@ const theme = {
5089
6176
  type: 'state',
5090
6177
  values: [ true ]
5091
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
+ },
5092
6185
  inactive: {
5093
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.',
5094
6187
  type: 'state',
@@ -5111,6 +6204,13 @@ const theme = {
5111
6204
  }
5112
6205
  },
5113
6206
  rules: [
6207
+ {
6208
+ if: { hover: true, inactive: null },
6209
+ tokens: {
6210
+ outerBackgroundColor: '#e3e6e8',
6211
+ outerBorderColor: '#e3e6e8'
6212
+ }
6213
+ },
5114
6214
  {
5115
6215
  if: { validation: 'success' },
5116
6216
  tokens: {
@@ -5257,6 +6357,18 @@ const theme = {
5257
6357
  },
5258
6358
  ToggleSwitch: {
5259
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
+ },
5260
6372
  inactive: {
5261
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.',
5262
6374
  type: 'state',
@@ -5274,10 +6386,27 @@ const theme = {
5274
6386
  }
5275
6387
  },
5276
6388
  rules: [
6389
+ { if: { hover: true }, tokens: { backgroundColor: '#414547' } },
5277
6390
  {
5278
6391
  if: { pressed: true },
5279
6392
  tokens: { backgroundColor: '#2c2e30' }
5280
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
+ },
5281
6410
  {
5282
6411
  if: { selected: true },
5283
6412
  tokens: {
@@ -5286,10 +6415,22 @@ const theme = {
5286
6415
  iconColor: '#2b8000'
5287
6416
  }
5288
6417
  },
6418
+ {
6419
+ if: { hover: true, selected: true },
6420
+ tokens: { backgroundColor: '#1f5c09', iconColor: '#1f5c09' }
6421
+ },
5289
6422
  {
5290
6423
  if: { pressed: true, selected: true },
5291
6424
  tokens: { backgroundColor: '#163e06', iconColor: '#163e06' }
5292
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
+ },
5293
6434
  {
5294
6435
  if: { inactive: true },
5295
6436
  tokens: {
@@ -5408,6 +6549,18 @@ const theme = {
5408
6549
  },
5409
6550
  TooltipButton: {
5410
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
+ },
5411
6564
  inverse: { type: 'variant', values: [ true ] },
5412
6565
  pressed: {
5413
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.',
@@ -5417,10 +6570,19 @@ const theme = {
5417
6570
  },
5418
6571
  rules: [
5419
6572
  { if: { inverse: true }, tokens: { iconColor: '#ffffff' } },
6573
+ { if: { hover: true }, tokens: { iconScale: 1.25 } },
5420
6574
  { if: { pressed: true }, tokens: { iconColor: '#676e73' } },
5421
6575
  {
5422
6576
  if: { inverse: true, pressed: true },
5423
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' }
5424
6586
  }
5425
6587
  ],
5426
6588
  tokens: {
@@ -5872,6 +7034,18 @@ const theme = {
5872
7034
  },
5873
7035
  VideoPickerThumbnail: {
5874
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
+ },
5875
7049
  pressed: {
5876
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.',
5877
7051
  type: 'state',
@@ -5884,6 +7058,14 @@ const theme = {
5884
7058
  }
5885
7059
  },
5886
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
+ },
5887
7069
  {
5888
7070
  if: { pressed: true },
5889
7071
  tokens: { borderColor: '#676e73', borderWidth: 3 }
@@ -6025,6 +7207,6 @@ const theme = {
6025
7207
  tokens: { size: 96 }
6026
7208
  }
6027
7209
  },
6028
- metadata: { name: 'theme-allium', themeTokensVersion: '2.50.0' }
7210
+ metadata: { name: 'theme-allium', themeTokensVersion: '2.50.1' }
6029
7211
  }
6030
7212
  export default theme