@telus-uds/theme-public-mobile 2.13.0 → 2.14.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 (235) 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/schema.json +208 -142
  5. package/build/android/theme.json +61 -1
  6. package/build/ios/Footnote.json +2 -0
  7. package/build/ios/FootnoteLink.json +1 -0
  8. package/build/ios/TermsAndConditions.json +57 -0
  9. package/build/ios/schema.json +208 -142
  10. package/build/ios/theme.json +61 -1
  11. package/build/rn/ActivityIndicator.js +1 -1
  12. package/build/rn/Badge.js +1 -1
  13. package/build/rn/BlockQuote.js +1 -1
  14. package/build/rn/Box.js +1 -1
  15. package/build/rn/Breadcrumbs.js +1 -1
  16. package/build/rn/Button.js +3 -3
  17. package/build/rn/ButtonDropdown.js +3 -3
  18. package/build/rn/ButtonGroup.js +1 -1
  19. package/build/rn/ButtonGroupItem.js +3 -3
  20. package/build/rn/Callout.js +1 -1
  21. package/build/rn/Card.js +3 -3
  22. package/build/rn/Carousel.js +2 -2
  23. package/build/rn/CarouselTabsPanelItem.js +3 -3
  24. package/build/rn/CarouselThumbnail.js +3 -3
  25. package/build/rn/Checkbox.js +3 -3
  26. package/build/rn/CheckboxCard.js +3 -3
  27. package/build/rn/CheckboxCardGroup.js +1 -1
  28. package/build/rn/CheckboxGroup.js +1 -1
  29. package/build/rn/ChevronLink.js +3 -3
  30. package/build/rn/ColourToggle.js +3 -3
  31. package/build/rn/Countdown.js +1 -1
  32. package/build/rn/DatePicker.js +1 -1
  33. package/build/rn/Disclaimer.js +1 -1
  34. package/build/rn/Divider.js +1 -1
  35. package/build/rn/ExpandCollapse.js +1 -1
  36. package/build/rn/ExpandCollapseControl.js +3 -3
  37. package/build/rn/ExpandCollapseMini.js +1 -1
  38. package/build/rn/ExpandCollapseMiniControl.js +2 -2
  39. package/build/rn/ExpandCollapsePanel.js +1 -1
  40. package/build/rn/Feedback.js +1 -1
  41. package/build/rn/Fieldset.js +1 -1
  42. package/build/rn/Footnote.js +3 -1
  43. package/build/rn/FootnoteLink.js +2 -1
  44. package/build/rn/HorizontalScrollButton.js +3 -3
  45. package/build/rn/Icon.js +1 -1
  46. package/build/rn/IconButton.js +3 -3
  47. package/build/rn/Image.js +1 -1
  48. package/build/rn/InputLabel.js +1 -1
  49. package/build/rn/InputSupports.js +1 -1
  50. package/build/rn/Link.js +3 -3
  51. package/build/rn/List.js +1 -1
  52. package/build/rn/Listbox.js +3 -3
  53. package/build/rn/Modal.js +1 -1
  54. package/build/rn/MultiSelectFilter.js +1 -1
  55. package/build/rn/NavigationBar.js +3 -3
  56. package/build/rn/Notification.js +1 -1
  57. package/build/rn/OrderedList.js +1 -1
  58. package/build/rn/Pagination.js +1 -1
  59. package/build/rn/PaginationPageButton.js +3 -3
  60. package/build/rn/PaginationSideButton.js +3 -3
  61. package/build/rn/PreviewCard.js +4 -4
  62. package/build/rn/PriceLockup.js +1 -1
  63. package/build/rn/Progress.js +1 -1
  64. package/build/rn/ProgressBar.js +1 -1
  65. package/build/rn/QuantitySelector.js +1 -1
  66. package/build/rn/QuantitySelectorSideButton.js +1 -1
  67. package/build/rn/QuickLinks.js +1 -1
  68. package/build/rn/QuickLinksButton.js +3 -3
  69. package/build/rn/QuickLinksCard.js +1 -1
  70. package/build/rn/QuickLinksFeature.js +1 -1
  71. package/build/rn/QuickLinksFeatureItem.js +3 -3
  72. package/build/rn/QuickLinksList.js +3 -3
  73. package/build/rn/Radio.js +3 -3
  74. package/build/rn/RadioCard.js +3 -3
  75. package/build/rn/RadioCardGroup.js +1 -1
  76. package/build/rn/RadioGroup.js +1 -1
  77. package/build/rn/Ribbon.js +1 -1
  78. package/build/rn/Search.js +2 -2
  79. package/build/rn/SearchButton.js +3 -3
  80. package/build/rn/Select.js +2 -2
  81. package/build/rn/SideNav.js +1 -1
  82. package/build/rn/SideNavItem.js +3 -3
  83. package/build/rn/SideNavItemsGroup.js +1 -1
  84. package/build/rn/Skeleton.js +1 -1
  85. package/build/rn/SkipLink.js +2 -2
  86. package/build/rn/Spinner.js +1 -1
  87. package/build/rn/SplashButton.js +2 -2
  88. package/build/rn/SplashButtonWithDetails.js +2 -2
  89. package/build/rn/StackView.js +1 -1
  90. package/build/rn/StepTracker.js +1 -1
  91. package/build/rn/StoryCard.js +3 -3
  92. package/build/rn/Table.js +1 -1
  93. package/build/rn/Tabs.js +1 -1
  94. package/build/rn/TabsItem.js +3 -3
  95. package/build/rn/Tags.js +1 -1
  96. package/build/rn/TagsItem.js +3 -3
  97. package/build/rn/TermsAndConditions.js +54 -1
  98. package/build/rn/Testimonial.js +1 -1
  99. package/build/rn/TextArea.js +1 -1
  100. package/build/rn/TextInput.js +2 -2
  101. package/build/rn/Timeline.js +1 -1
  102. package/build/rn/Toast.js +1 -1
  103. package/build/rn/ToggleSwitch.js +3 -3
  104. package/build/rn/ToggleSwitchGroup.js +1 -1
  105. package/build/rn/Tooltip.js +1 -1
  106. package/build/rn/TooltipButton.js +3 -3
  107. package/build/rn/Typography.js +1 -1
  108. package/build/rn/Video.js +1 -1
  109. package/build/rn/VideoButton.js +1 -1
  110. package/build/rn/VideoControlBar.js +1 -1
  111. package/build/rn/VideoMenu.js +1 -1
  112. package/build/rn/VideoMiddleControlButton.js +1 -1
  113. package/build/rn/VideoPicker.js +1 -1
  114. package/build/rn/VideoPickerSlider.js +1 -1
  115. package/build/rn/VideoPickerThumbnail.js +3 -3
  116. package/build/rn/VideoProgressBar.js +1 -1
  117. package/build/rn/VideoVolumeSlider.js +1 -1
  118. package/build/rn/WaffleGrid.js +1 -1
  119. package/build/rn/schema.json +208 -142
  120. package/build/rn/spacingScale.js +1 -1
  121. package/build/rn/theme.js +131 -75
  122. package/build/web/ActivityIndicator.js +1 -1
  123. package/build/web/Badge.js +1 -1
  124. package/build/web/BlockQuote.js +1 -1
  125. package/build/web/Box.js +1 -1
  126. package/build/web/Breadcrumbs.js +1 -1
  127. package/build/web/Button.js +135 -1
  128. package/build/web/ButtonDropdown.js +49 -1
  129. package/build/web/ButtonGroup.js +1 -1
  130. package/build/web/ButtonGroupItem.js +47 -1
  131. package/build/web/Callout.js +1 -1
  132. package/build/web/Card.js +25 -2
  133. package/build/web/Carousel.js +7 -1
  134. package/build/web/CarouselTabsPanelItem.js +49 -1
  135. package/build/web/CarouselThumbnail.js +18 -1
  136. package/build/web/Checkbox.js +30 -1
  137. package/build/web/CheckboxCard.js +34 -1
  138. package/build/web/CheckboxCardGroup.js +1 -1
  139. package/build/web/CheckboxGroup.js +1 -1
  140. package/build/web/ChevronLink.js +49 -1
  141. package/build/web/ColourToggle.js +29 -1
  142. package/build/web/Countdown.js +1 -1
  143. package/build/web/DatePicker.js +1 -1
  144. package/build/web/Disclaimer.js +1 -1
  145. package/build/web/Divider.js +1 -1
  146. package/build/web/ExpandCollapse.js +1 -1
  147. package/build/web/ExpandCollapseControl.js +52 -1
  148. package/build/web/ExpandCollapseMini.js +1 -1
  149. package/build/web/ExpandCollapseMiniControl.js +7 -1
  150. package/build/web/ExpandCollapsePanel.js +1 -1
  151. package/build/web/Feedback.js +1 -1
  152. package/build/web/Fieldset.js +1 -1
  153. package/build/web/Footnote.js +3 -1
  154. package/build/web/FootnoteLink.js +2 -1
  155. package/build/web/HorizontalScrollButton.js +13 -1
  156. package/build/web/Icon.js +1 -1
  157. package/build/web/IconButton.js +78 -2
  158. package/build/web/Image.js +1 -1
  159. package/build/web/InputLabel.js +1 -1
  160. package/build/web/InputSupports.js +1 -1
  161. package/build/web/Link.js +83 -3
  162. package/build/web/List.js +1 -1
  163. package/build/web/Listbox.js +72 -2
  164. package/build/web/Modal.js +1 -1
  165. package/build/web/MultiSelectFilter.js +1 -1
  166. package/build/web/NavigationBar.js +41 -1
  167. package/build/web/Notification.js +1 -1
  168. package/build/web/OrderedList.js +1 -1
  169. package/build/web/Pagination.js +1 -1
  170. package/build/web/PaginationPageButton.js +29 -1
  171. package/build/web/PaginationSideButton.js +50 -2
  172. package/build/web/PreviewCard.js +33 -3
  173. package/build/web/PriceLockup.js +1 -1
  174. package/build/web/Progress.js +1 -1
  175. package/build/web/ProgressBar.js +1 -1
  176. package/build/web/QuantitySelector.js +1 -1
  177. package/build/web/QuantitySelectorSideButton.js +1 -1
  178. package/build/web/QuickLinks.js +1 -1
  179. package/build/web/QuickLinksButton.js +19 -1
  180. package/build/web/QuickLinksCard.js +1 -1
  181. package/build/web/QuickLinksFeature.js +1 -1
  182. package/build/web/QuickLinksFeatureItem.js +25 -1
  183. package/build/web/QuickLinksList.js +15 -1
  184. package/build/web/Radio.js +22 -1
  185. package/build/web/RadioCard.js +34 -1
  186. package/build/web/RadioCardGroup.js +1 -1
  187. package/build/web/RadioGroup.js +1 -1
  188. package/build/web/Ribbon.js +1 -1
  189. package/build/web/Search.js +11 -1
  190. package/build/web/SearchButton.js +30 -1
  191. package/build/web/Select.js +8 -1
  192. package/build/web/SideNav.js +1 -1
  193. package/build/web/SideNavItem.js +15 -1
  194. package/build/web/SideNavItemsGroup.js +1 -1
  195. package/build/web/Skeleton.js +1 -1
  196. package/build/web/SkipLink.js +13 -2
  197. package/build/web/Spinner.js +1 -1
  198. package/build/web/SplashButton.js +9 -2
  199. package/build/web/SplashButtonWithDetails.js +15 -3
  200. package/build/web/StackView.js +1 -1
  201. package/build/web/StepTracker.js +1 -1
  202. package/build/web/StoryCard.js +25 -2
  203. package/build/web/Table.js +1 -1
  204. package/build/web/Tabs.js +1 -1
  205. package/build/web/TabsItem.js +26 -1
  206. package/build/web/Tags.js +1 -1
  207. package/build/web/TagsItem.js +59 -1
  208. package/build/web/TermsAndConditions.js +54 -1
  209. package/build/web/Testimonial.js +1 -1
  210. package/build/web/TextArea.js +1 -1
  211. package/build/web/TextInput.js +15 -1
  212. package/build/web/Timeline.js +1 -1
  213. package/build/web/Toast.js +1 -1
  214. package/build/web/ToggleSwitch.js +58 -1
  215. package/build/web/ToggleSwitchGroup.js +1 -1
  216. package/build/web/Tooltip.js +1 -1
  217. package/build/web/TooltipButton.js +27 -1
  218. package/build/web/Typography.js +1 -1
  219. package/build/web/Video.js +1 -1
  220. package/build/web/VideoButton.js +1 -1
  221. package/build/web/VideoControlBar.js +1 -1
  222. package/build/web/VideoMenu.js +1 -1
  223. package/build/web/VideoMiddleControlButton.js +1 -1
  224. package/build/web/VideoPicker.js +1 -1
  225. package/build/web/VideoPickerSlider.js +1 -1
  226. package/build/web/VideoPickerThumbnail.js +25 -1
  227. package/build/web/VideoProgressBar.js +1 -1
  228. package/build/web/VideoVolumeSlider.js +1 -1
  229. package/build/web/WaffleGrid.js +1 -1
  230. package/build/web/index.js +1 -1
  231. package/build/web/schema.json +208 -142
  232. package/build/web/spacingScale.js +1 -1
  233. package/build/web/theme.js +1448 -23
  234. package/package.json +2 -2
  235. package/theme.json +54 -0
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  *
3
3
  * Do not edit directly
4
- * Generated on Mon, 08 Jan 2024 20:06:31 GMT
4
+ * Generated on Mon, 29 Jan 2024 18:23:31 GMT
5
5
  *
6
6
  */
7
7
 
@@ -324,6 +324,18 @@ const theme = {
324
324
  type: 'variant',
325
325
  values: [ true ]
326
326
  },
327
+ focus: {
328
+ 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.",
329
+ platforms: [ 'rn', 'web' ],
330
+ type: 'state',
331
+ values: [ true, false ]
332
+ },
333
+ hover: {
334
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
335
+ platforms: [ 'rn', 'web' ],
336
+ type: 'state',
337
+ values: [ true, false ]
338
+ },
327
339
  inactive: {
328
340
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
329
341
  type: 'state',
@@ -357,6 +369,7 @@ const theme = {
357
369
  }
358
370
  },
359
371
  rules: [
372
+ { if: { hover: true }, tokens: { backgroundColor: '#2b3145' } },
360
373
  {
361
374
  if: { priority: 'high' },
362
375
  tokens: {
@@ -373,6 +386,10 @@ const theme = {
373
386
  color: '#fefefc'
374
387
  }
375
388
  },
389
+ {
390
+ if: { focus: true },
391
+ tokens: { outerBorderColor: '#f39d80', outerBorderWidth: 4 }
392
+ },
376
393
  {
377
394
  if: { inverse: true },
378
395
  tokens: {
@@ -381,6 +398,24 @@ const theme = {
381
398
  borderWidth: 0
382
399
  }
383
400
  },
401
+ {
402
+ if: { hover: true, priority: 'high' },
403
+ tokens: {
404
+ backgroundColor: '#f6b5a0',
405
+ borderColor: '#636c8c',
406
+ color: '#394056'
407
+ }
408
+ },
409
+ {
410
+ if: { focus: true, pressed: true },
411
+ tokens: {
412
+ backgroundColor: '#636c8c',
413
+ borderColor: '#f39d80',
414
+ color: '#fefefc',
415
+ outerBorderColor: '#f39d80',
416
+ outerBorderWidth: 4
417
+ }
418
+ },
384
419
  {
385
420
  if: { inverse: true, priority: 'high' },
386
421
  tokens: {
@@ -389,6 +424,10 @@ const theme = {
389
424
  borderWidth: 0
390
425
  }
391
426
  },
427
+ {
428
+ if: { hover: true, inverse: true, priority: 'high' },
429
+ tokens: { backgroundColor: '#fcf8ee', borderColor: '#fcf8ee' }
430
+ },
392
431
  {
393
432
  if: { inverse: true, pressed: true },
394
433
  tokens: {
@@ -397,6 +436,16 @@ const theme = {
397
436
  color: '#394056'
398
437
  }
399
438
  },
439
+ {
440
+ if: { focus: true, inverse: true },
441
+ tokens: {
442
+ backgroundColor: '#fefefc',
443
+ borderColor: '#394056',
444
+ color: '#394056',
445
+ outerBorderColor: '#f39d80',
446
+ outerBorderWidth: 4
447
+ }
448
+ },
400
449
  {
401
450
  if: { danger: true },
402
451
  tokens: {
@@ -405,6 +454,14 @@ const theme = {
405
454
  color: '#bf1722'
406
455
  }
407
456
  },
457
+ {
458
+ if: { danger: true, hover: true },
459
+ tokens: {
460
+ backgroundColor: '#f9e8e9',
461
+ borderColor: '#bf1722',
462
+ color: '#bf1722'
463
+ }
464
+ },
408
465
  {
409
466
  if: { danger: true, priority: null },
410
467
  tokens: { borderColor: '#bf1722', color: '#bf1722' }
@@ -417,6 +474,16 @@ const theme = {
417
474
  color: '#bf1722'
418
475
  }
419
476
  },
477
+ {
478
+ if: { danger: true, focus: true, priority: null },
479
+ tokens: {
480
+ backgroundColor: '#fefefc',
481
+ borderColor: '#bf1722',
482
+ color: '#bf1722',
483
+ outerBorderColor: '#f39d80',
484
+ outerBorderWidth: 4
485
+ }
486
+ },
420
487
  {
421
488
  if: { danger: true, pressed: true, priority: null },
422
489
  tokens: {
@@ -425,6 +492,16 @@ const theme = {
425
492
  color: '#fefefc'
426
493
  }
427
494
  },
495
+ {
496
+ if: { danger: true, focus: true, pressed: true, priority: null },
497
+ tokens: {
498
+ backgroundColor: '#bf1722',
499
+ borderColor: 'rgba(0, 0, 0, 0)',
500
+ color: '#fefefc',
501
+ outerBorderColor: '#f39d80',
502
+ outerBorderWidth: 4
503
+ }
504
+ },
428
505
  { if: { width: 'full' }, tokens: { width: '100%' } },
429
506
  {
430
507
  if: { size: 'small' },
@@ -460,6 +537,10 @@ const theme = {
460
537
  textLine: 'underline'
461
538
  }
462
539
  },
540
+ {
541
+ if: { hover: true, text: true },
542
+ tokens: { textLine: 'none' }
543
+ },
463
544
  {
464
545
  if: { priority: 'high', text: true },
465
546
  tokens: { color: '#636c8c' }
@@ -468,10 +549,42 @@ const theme = {
468
549
  if: { priority: 'low', text: true },
469
550
  tokens: { color: '#394056' }
470
551
  },
552
+ {
553
+ if: { focus: true, text: true },
554
+ tokens: {
555
+ color: '#636c8c',
556
+ outerBorderColor: '#f39d80',
557
+ outerBorderWidth: 2
558
+ }
559
+ },
560
+ {
561
+ if: { hover: true, priority: 'high', text: true },
562
+ tokens: { color: '#394056' }
563
+ },
564
+ {
565
+ if: { hover: true, priority: null, text: true },
566
+ tokens: { color: '#636c8c' }
567
+ },
568
+ {
569
+ if: { hover: true, priority: 'low', text: true },
570
+ tokens: { color: '#636c8c' }
571
+ },
572
+ {
573
+ if: { danger: true, hover: true, text: true },
574
+ tokens: { color: '#394056' }
575
+ },
471
576
  {
472
577
  if: { pressed: true, text: true },
473
578
  tokens: { color: '#2b3145' }
474
579
  },
580
+ {
581
+ if: { focus: true, pressed: true, text: true },
582
+ tokens: {
583
+ color: '#2b3145',
584
+ outerBorderColor: '#f39d80',
585
+ outerBorderWidth: 4
586
+ }
587
+ },
475
588
  {
476
589
  if: { inactive: true, text: true },
477
590
  tokens: { color: '#cdcfd5' }
@@ -480,6 +593,22 @@ const theme = {
480
593
  if: { inverse: true, text: true },
481
594
  tokens: { color: '#f9f2dd' }
482
595
  },
596
+ {
597
+ if: { focus: true, inverse: true, text: true },
598
+ tokens: {
599
+ color: '#f9f2dd',
600
+ outerBorderColor: '#f39d80',
601
+ outerBorderWidth: 4
602
+ }
603
+ },
604
+ {
605
+ if: { focus: true, inverse: true, pressed: true, text: true },
606
+ tokens: {
607
+ color: '#f9f2dd',
608
+ outerBorderColor: '#f9f2dd',
609
+ outerBorderWidth: 2
610
+ }
611
+ },
483
612
  {
484
613
  if: { inactive: true, inverse: true, text: true },
485
614
  tokens: { color: '#cdcfd5' }
@@ -492,6 +621,14 @@ const theme = {
492
621
  color: '#394056'
493
622
  }
494
623
  },
624
+ {
625
+ if: { focus: true, priority: 'high' },
626
+ tokens: { outerBorderColor: '#f9cebf', outerBorderWidth: 4 }
627
+ },
628
+ {
629
+ if: { hover: true, inverse: true },
630
+ tokens: { backgroundColor: '#fcf8ee', borderColor: '#fcf8ee' }
631
+ },
495
632
  {
496
633
  if: { danger: true, inverse: true },
497
634
  tokens: {
@@ -551,6 +688,18 @@ const theme = {
551
688
  },
552
689
  ButtonDropdown: {
553
690
  appearances: {
691
+ focus: {
692
+ 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.",
693
+ platforms: [ 'rn', 'web' ],
694
+ type: 'state',
695
+ values: [ true, false ]
696
+ },
697
+ hover: {
698
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
699
+ platforms: [ 'rn', 'web' ],
700
+ type: 'state',
701
+ values: [ true, false ]
702
+ },
554
703
  inactive: {
555
704
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
556
705
  type: 'state',
@@ -577,6 +726,26 @@ const theme = {
577
726
  if: { open: true },
578
727
  tokens: { icon: PaletteIconChevronUp }
579
728
  },
729
+ {
730
+ if: { focus: true },
731
+ tokens: {
732
+ backgroundColor: '#d8dae2',
733
+ borderColor: '#636c8c',
734
+ color: '#394056',
735
+ iconColor: '#394056',
736
+ outerBorderColor: '#f9cebf',
737
+ outerBorderGap: 0,
738
+ outerBorderWidth: 3
739
+ }
740
+ },
741
+ {
742
+ if: { hover: true },
743
+ tokens: {
744
+ backgroundColor: '#636c8c',
745
+ color: '#ffffff',
746
+ iconColor: '#ffffff'
747
+ }
748
+ },
580
749
  {
581
750
  if: { pressed: true },
582
751
  tokens: {
@@ -606,6 +775,22 @@ const theme = {
606
775
  color: '#ffffff',
607
776
  iconColor: '#ffffff'
608
777
  }
778
+ },
779
+ {
780
+ if: { hover: true, selected: true },
781
+ tokens: { backgroundColor: '#636c8c', iconColor: '#ffffff' }
782
+ },
783
+ {
784
+ if: { focus: true, selected: true },
785
+ tokens: {
786
+ backgroundColor: '#394056',
787
+ borderColor: '#636c8c',
788
+ color: '#ffffff',
789
+ iconColor: '#ffffff',
790
+ outerBorderColor: '#f9cebf',
791
+ outerBorderGap: 0,
792
+ outerBorderWidth: 3
793
+ }
609
794
  }
610
795
  ],
611
796
  tokens: {
@@ -679,6 +864,18 @@ const theme = {
679
864
  },
680
865
  ButtonGroupItem: {
681
866
  appearances: {
867
+ focus: {
868
+ 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.",
869
+ platforms: [ 'rn', 'web' ],
870
+ type: 'state',
871
+ values: [ true, false ]
872
+ },
873
+ hover: {
874
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
875
+ platforms: [ 'rn', 'web' ],
876
+ type: 'state',
877
+ values: [ true, false ]
878
+ },
682
879
  iconPosition: {
683
880
  description: 'Theme styles to be applied to icon links depending on where the icon is in relation to the link text',
684
881
  type: 'state',
@@ -714,6 +911,32 @@ const theme = {
714
911
  color: '#ffffff'
715
912
  }
716
913
  },
914
+ {
915
+ if: { focus: true },
916
+ tokens: {
917
+ borderColor: null,
918
+ outerBorderColor: '#f9cebf',
919
+ outerBorderWidth: 3
920
+ }
921
+ },
922
+ {
923
+ if: { hover: true },
924
+ tokens: {
925
+ backgroundColor: '#636c8c',
926
+ borderColor: '#636c8c',
927
+ color: '#ffffff'
928
+ }
929
+ },
930
+ {
931
+ if: { focus: true, hover: true, pressed: true },
932
+ tokens: {
933
+ backgroundColor: '#2b3145',
934
+ borderColor: '#636c8c',
935
+ color: '#ffffff',
936
+ outerBorderColor: '#f9cebf',
937
+ outerBorderWidth: 3
938
+ }
939
+ },
717
940
  {
718
941
  if: { selected: true },
719
942
  tokens: {
@@ -722,6 +945,14 @@ const theme = {
722
945
  color: '#ffffff'
723
946
  }
724
947
  },
948
+ {
949
+ if: { hover: true, selected: true },
950
+ tokens: {
951
+ backgroundColor: '#636c8c',
952
+ borderColor: '#636c8c',
953
+ color: '#ffffff'
954
+ }
955
+ },
725
956
  {
726
957
  if: { pressed: true, selected: true },
727
958
  tokens: {
@@ -800,6 +1031,18 @@ const theme = {
800
1031
  values: [ 'alternative', 'subtle', 'grid', 'image', 'feature' ]
801
1032
  },
802
1033
  borderRadius: { type: 'variant', values: [ 'none', 'small', 'large' ] },
1034
+ focus: {
1035
+ 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.",
1036
+ platforms: [ 'rn', 'web' ],
1037
+ type: 'state',
1038
+ values: [ true, false ]
1039
+ },
1040
+ hover: {
1041
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1042
+ platforms: [ 'rn', 'web' ],
1043
+ type: 'state',
1044
+ values: [ true, false ]
1045
+ },
803
1046
  interactive: { type: 'variant', values: [ true ] },
804
1047
  padding: {
805
1048
  type: 'variant',
@@ -904,9 +1147,20 @@ const theme = {
904
1147
  }
905
1148
  },
906
1149
  {
907
- if: { interactive: true, pressed: false },
1150
+ if: { focus: false, interactive: true, pressed: false },
908
1151
  tokens: { borderColor: '#ffffff', borderWidth: 2 }
909
1152
  },
1153
+ {
1154
+ if: { hover: true, interactive: true },
1155
+ tokens: {
1156
+ backgroundColor: 'rgba(0, 0, 0, 0.1)',
1157
+ borderColor: 'transparent'
1158
+ }
1159
+ },
1160
+ {
1161
+ if: { focus: true, interactive: true },
1162
+ tokens: { borderColor: '#394056', borderWidth: 2 }
1163
+ },
910
1164
  {
911
1165
  if: { interactive: true, pressed: true },
912
1166
  tokens: {
@@ -937,6 +1191,12 @@ const theme = {
937
1191
  },
938
1192
  Carousel: {
939
1193
  appearances: {
1194
+ hover: {
1195
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1196
+ platforms: [ 'rn', 'web' ],
1197
+ type: 'state',
1198
+ values: [ true, false ]
1199
+ },
940
1200
  viewport: {
941
1201
  description: 'The size label for the current screen viewport based on the current screen width',
942
1202
  type: 'state',
@@ -963,6 +1223,18 @@ const theme = {
963
1223
  },
964
1224
  CarouselTabsPanelItem: {
965
1225
  appearances: {
1226
+ focus: {
1227
+ 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.",
1228
+ platforms: [ 'rn', 'web' ],
1229
+ type: 'state',
1230
+ values: [ true, false ]
1231
+ },
1232
+ hover: {
1233
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1234
+ platforms: [ 'rn', 'web' ],
1235
+ type: 'state',
1236
+ values: [ true, false ]
1237
+ },
966
1238
  inactive: {
967
1239
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
968
1240
  type: 'state',
@@ -981,6 +1253,22 @@ const theme = {
981
1253
  }
982
1254
  },
983
1255
  rules: [
1256
+ {
1257
+ if: { hover: true },
1258
+ tokens: {
1259
+ borderBottomColor: '#394056',
1260
+ borderBottomWidth: 2,
1261
+ color: '#394056'
1262
+ }
1263
+ },
1264
+ {
1265
+ if: { focus: true },
1266
+ tokens: {
1267
+ borderBottomColor: '#394056',
1268
+ borderBottomWidth: 4,
1269
+ color: '#394056'
1270
+ }
1271
+ },
984
1272
  {
985
1273
  if: { pressed: true },
986
1274
  tokens: {
@@ -989,6 +1277,10 @@ const theme = {
989
1277
  color: '#f6b5a0'
990
1278
  }
991
1279
  },
1280
+ {
1281
+ if: { focus: true, pressed: true },
1282
+ tokens: { borderBottomWidth: 4 }
1283
+ },
992
1284
  {
993
1285
  if: { inactive: true },
994
1286
  tokens: {
@@ -1006,6 +1298,22 @@ const theme = {
1006
1298
  }
1007
1299
  },
1008
1300
  { if: { inverse: true }, tokens: { color: '#f9f2dd' } },
1301
+ {
1302
+ if: { hover: true, inverse: true },
1303
+ tokens: {
1304
+ borderBottomColor: '#f9cebf',
1305
+ borderBottomWidth: 2,
1306
+ color: '#f9cebf'
1307
+ }
1308
+ },
1309
+ {
1310
+ if: { focus: true, inverse: true },
1311
+ tokens: {
1312
+ borderBottomColor: '#f9f2dd',
1313
+ borderBottomWidth: 4,
1314
+ color: '#f9f2dd'
1315
+ }
1316
+ },
1009
1317
  {
1010
1318
  if: { inverse: true, pressed: true },
1011
1319
  tokens: {
@@ -1053,6 +1361,18 @@ const theme = {
1053
1361
  },
1054
1362
  CarouselThumbnail: {
1055
1363
  appearances: {
1364
+ focus: {
1365
+ 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.",
1366
+ platforms: [ 'rn', 'web' ],
1367
+ type: 'state',
1368
+ values: [ true, false ]
1369
+ },
1370
+ hover: {
1371
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1372
+ platforms: [ 'rn', 'web' ],
1373
+ type: 'state',
1374
+ values: [ true, false ]
1375
+ },
1056
1376
  pressed: {
1057
1377
  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.',
1058
1378
  type: 'state',
@@ -1069,6 +1389,11 @@ const theme = {
1069
1389
  if: { viewport: [ 'xs', 'sm' ] },
1070
1390
  tokens: { alignItems: 'flex-start', size: 48 }
1071
1391
  },
1392
+ { if: { hover: true }, tokens: { borderColor: '#2b3145' } },
1393
+ {
1394
+ if: { focus: true },
1395
+ tokens: { borderColor: '#394056', borderWidth: 2 }
1396
+ },
1072
1397
  {
1073
1398
  if: { pressed: true },
1074
1399
  tokens: { borderColor: '#2b3145', borderWidth: 2 }
@@ -1095,6 +1420,18 @@ const theme = {
1095
1420
  values: [ true ]
1096
1421
  },
1097
1422
  error: { type: 'state', values: [ true ] },
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
+ },
1098
1435
  inactive: {
1099
1436
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1100
1437
  type: 'state',
@@ -1106,6 +1443,10 @@ const theme = {
1106
1443
  if: { error: true },
1107
1444
  tokens: { inputBorderColor: '#bf1722' }
1108
1445
  },
1446
+ {
1447
+ if: { focus: true },
1448
+ tokens: { inputOutlineColor: '#f39d80', inputOutlineWidth: 2 }
1449
+ },
1109
1450
  {
1110
1451
  if: { inactive: true },
1111
1452
  tokens: {
@@ -1114,6 +1455,19 @@ const theme = {
1114
1455
  inputBackgroundColor: '#cdcfd5',
1115
1456
  inputBorderColor: '#9c9faa'
1116
1457
  }
1458
+ },
1459
+ {
1460
+ if: { hover: true },
1461
+ tokens: { inputBackgroundColor: '#d8dae2' }
1462
+ },
1463
+ {
1464
+ if: { checked: true, focus: true },
1465
+ tokens: {
1466
+ inputBorderColor: '#394056',
1467
+ inputBorderWidth: 2,
1468
+ inputOutlineColor: '#f39d80',
1469
+ inputOutlineWidth: 3
1470
+ }
1117
1471
  }
1118
1472
  ],
1119
1473
  tokens: {
@@ -1151,6 +1505,18 @@ const theme = {
1151
1505
  values: [ true ]
1152
1506
  },
1153
1507
  error: { type: 'state', values: [ true ] },
1508
+ focus: {
1509
+ 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.",
1510
+ platforms: [ 'rn', 'web' ],
1511
+ type: 'state',
1512
+ values: [ true, false ]
1513
+ },
1514
+ hover: {
1515
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1516
+ platforms: [ 'rn', 'web' ],
1517
+ type: 'state',
1518
+ values: [ true, false ]
1519
+ },
1154
1520
  inactive: {
1155
1521
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1156
1522
  type: 'state',
@@ -1186,6 +1552,27 @@ const theme = {
1186
1552
  checkboxOuterBorderGap: 2
1187
1553
  }
1188
1554
  },
1555
+ {
1556
+ if: { hover: true },
1557
+ tokens: {
1558
+ borderColor: '#9c9faa',
1559
+ checkboxInputBackgroundColor: '#fce6df',
1560
+ checkboxInputBorderColor: '#394056',
1561
+ outerBorderColor: '#cdcfd5'
1562
+ }
1563
+ },
1564
+ {
1565
+ if: { focus: true },
1566
+ tokens: {
1567
+ borderColor: '#cdcfd5',
1568
+ checkboxInputBackgroundColor: 'rgba(0, 0, 0, 0)',
1569
+ checkboxInputBorderColor: '#394056',
1570
+ checkboxInputOutlineColor: '#f39d80',
1571
+ checkboxInputOutlineWidth: 2,
1572
+ outerBorderColor: '#6a7080',
1573
+ outerBorderGap: 2
1574
+ }
1575
+ },
1189
1576
  {
1190
1577
  if: { pressed: true },
1191
1578
  tokens: {
@@ -1312,6 +1699,18 @@ const theme = {
1312
1699
  ChevronLink: {
1313
1700
  appearances: {
1314
1701
  alternative: { type: 'variant', values: [ true ] },
1702
+ focus: {
1703
+ 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.",
1704
+ platforms: [ 'rn', 'web' ],
1705
+ type: 'state',
1706
+ values: [ true, false ]
1707
+ },
1708
+ hover: {
1709
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1710
+ platforms: [ 'rn', 'web' ],
1711
+ type: 'state',
1712
+ values: [ true, false ]
1713
+ },
1315
1714
  inverse: { type: 'variant', values: [ true ] },
1316
1715
  pressed: {
1317
1716
  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.',
@@ -1325,17 +1724,53 @@ const theme = {
1325
1724
  }
1326
1725
  },
1327
1726
  rules: [
1727
+ {
1728
+ if: { hover: true },
1729
+ tokens: { color: '#394056', iconDisplace: 4 }
1730
+ },
1328
1731
  { if: { pressed: true }, tokens: { color: '#2b3145' } },
1732
+ {
1733
+ if: { focus: true },
1734
+ tokens: { color: '#636c8c', outerBorderColor: '#636c8c' }
1735
+ },
1736
+ {
1737
+ if: { focus: true, pressed: true },
1738
+ tokens: { color: '#394056', outerBorderColor: '#394056' }
1739
+ },
1329
1740
  { if: { alternative: true }, tokens: { color: '#394056' } },
1741
+ {
1742
+ if: { alternative: true, hover: true },
1743
+ tokens: { color: '#636c8c' }
1744
+ },
1330
1745
  {
1331
1746
  if: { alternative: true, pressed: true },
1332
1747
  tokens: { color: '#2b3145' }
1333
1748
  },
1749
+ {
1750
+ if: { alternative: true, focus: true },
1751
+ tokens: { color: '#394056', outerBorderColor: '#394056' }
1752
+ },
1753
+ {
1754
+ if: { alternative: true, focus: true, pressed: true },
1755
+ tokens: { color: '#2b3145', outerBorderColor: '#2b3145' }
1756
+ },
1334
1757
  { if: { inverse: true }, tokens: { color: '#f9f2dd' } },
1758
+ {
1759
+ if: { hover: true, inverse: true },
1760
+ tokens: { color: '#f9cebf' }
1761
+ },
1335
1762
  {
1336
1763
  if: { inverse: true, pressed: true },
1337
1764
  tokens: { color: '#f39d80' }
1338
1765
  },
1766
+ {
1767
+ if: { focus: true, inverse: true },
1768
+ tokens: { color: '#f9f2dd', outerBorderColor: '#f9f2dd' }
1769
+ },
1770
+ {
1771
+ if: { focus: true, inverse: true, pressed: true },
1772
+ tokens: { color: '#f39d80', outerBorderColor: '#f39d80' }
1773
+ },
1339
1774
  {
1340
1775
  if: { size: 'large' },
1341
1776
  tokens: { blockLineHeight: 1.4, fontSize: 20, iconSize: 20 }
@@ -1368,6 +1803,18 @@ const theme = {
1368
1803
  },
1369
1804
  ColourToggle: {
1370
1805
  appearances: {
1806
+ focus: {
1807
+ 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.",
1808
+ platforms: [ 'rn', 'web' ],
1809
+ type: 'state',
1810
+ values: [ true, false ]
1811
+ },
1812
+ hover: {
1813
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1814
+ platforms: [ 'rn', 'web' ],
1815
+ type: 'state',
1816
+ values: [ true, false ]
1817
+ },
1371
1818
  pressed: {
1372
1819
  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.',
1373
1820
  type: 'state',
@@ -1380,6 +1827,22 @@ const theme = {
1380
1827
  }
1381
1828
  },
1382
1829
  rules: [
1830
+ {
1831
+ if: { hover: true },
1832
+ tokens: {
1833
+ bubbleBorderColor: '#cdcfd5',
1834
+ bubbleBorderRadius: 45,
1835
+ bubbleBorderWidth: 1
1836
+ }
1837
+ },
1838
+ {
1839
+ if: { focus: true },
1840
+ tokens: {
1841
+ bubbleBorderColor: '#6a7080',
1842
+ bubbleBorderRadius: 45,
1843
+ bubbleBorderWidth: 1
1844
+ }
1845
+ },
1383
1846
  {
1384
1847
  if: { pressed: true },
1385
1848
  tokens: {
@@ -1596,6 +2059,18 @@ const theme = {
1596
2059
  type: 'state',
1597
2060
  values: [ true, false ]
1598
2061
  },
2062
+ focus: {
2063
+ 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.",
2064
+ platforms: [ 'rn', 'web' ],
2065
+ type: 'state',
2066
+ values: [ true, false ]
2067
+ },
2068
+ hover: {
2069
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2070
+ platforms: [ 'rn', 'web' ],
2071
+ type: 'state',
2072
+ values: [ true, false ]
2073
+ },
1599
2074
  mini: { type: 'variant', values: [ true ] },
1600
2075
  pressed: {
1601
2076
  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.',
@@ -1627,9 +2102,48 @@ const theme = {
1627
2102
  paddingTop: 0
1628
2103
  }
1629
2104
  },
2105
+ {
2106
+ if: { focus: true },
2107
+ tokens: {
2108
+ backgroundColor: 'rgba(0, 0, 0, 0)',
2109
+ borderColor: '#394056',
2110
+ borderWidth: 3,
2111
+ textLine: 'underline'
2112
+ }
2113
+ },
2114
+ {
2115
+ if: { expanded: false, hover: true },
2116
+ tokens: {
2117
+ borderBottomLeftRadius: 4,
2118
+ borderBottomRightRadius: 4,
2119
+ borderTopLeftRadius: 4,
2120
+ borderTopRightRadius: 4
2121
+ }
2122
+ },
2123
+ {
2124
+ if: { expanded: true, hover: true },
2125
+ tokens: {
2126
+ borderBottomLeftRadius: 0,
2127
+ borderBottomRightRadius: 0,
2128
+ borderTopLeftRadius: 4,
2129
+ borderTopRightRadius: 4
2130
+ }
2131
+ },
2132
+ {
2133
+ if: { hover: true, mini: null },
2134
+ tokens: { backgroundColor: '#f9f2dd' }
2135
+ },
2136
+ {
2137
+ if: { hover: true, mini: true },
2138
+ tokens: { backgroundColor: 'rgba(0, 0, 0, 0)' }
2139
+ },
1630
2140
  {
1631
2141
  if: { pressed: true },
1632
2142
  tokens: { backgroundColor: '#cdcfd5', textLine: 'underline' }
2143
+ },
2144
+ {
2145
+ if: { focus: true, pressed: true },
2146
+ tokens: { backgroundColor: '#394056' }
1633
2147
  }
1634
2148
  ],
1635
2149
  tokens: {
@@ -1668,6 +2182,12 @@ const theme = {
1668
2182
  type: 'state',
1669
2183
  values: [ true, false ]
1670
2184
  },
2185
+ focus: {
2186
+ 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.",
2187
+ platforms: [ 'rn', 'web' ],
2188
+ type: 'state',
2189
+ values: [ true, false ]
2190
+ },
1671
2191
  inverse: {
1672
2192
  description: 'Replaces the default colour with white.',
1673
2193
  type: 'variant',
@@ -1922,7 +2442,9 @@ const theme = {
1922
2442
  headerLineHeight: 1.5,
1923
2443
  headerMargin: 16,
1924
2444
  listItemColor: '#394056',
2445
+ listItemFontName: 'SofiaPro',
1925
2446
  listItemFontSize: 16,
2447
+ listItemFontWeight: '400',
1926
2448
  listItemLineHeight: 1.5,
1927
2449
  listItemMarkerFontSize: 16,
1928
2450
  listItemMarkerLineHeight: 1.5,
@@ -1936,6 +2458,7 @@ const theme = {
1936
2458
  tokens: {
1937
2459
  color: null,
1938
2460
  fontName: 'SofiaPro',
2461
+ fontSize: 16,
1939
2462
  fontWeight: '400',
1940
2463
  lineHeight: 1,
1941
2464
  paddingLeft: 2,
@@ -1944,6 +2467,18 @@ const theme = {
1944
2467
  },
1945
2468
  HorizontalScrollButton: {
1946
2469
  appearances: {
2470
+ focus: {
2471
+ 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.",
2472
+ platforms: [ 'rn', 'web' ],
2473
+ type: 'state',
2474
+ values: [ true, false ]
2475
+ },
2476
+ hover: {
2477
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2478
+ platforms: [ 'rn', 'web' ],
2479
+ type: 'state',
2480
+ values: [ true, false ]
2481
+ },
1947
2482
  pressed: {
1948
2483
  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.',
1949
2484
  type: 'state',
@@ -2024,6 +2559,18 @@ const theme = {
2024
2559
  type: 'variant',
2025
2560
  values: [ true ]
2026
2561
  },
2562
+ focus: {
2563
+ 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.",
2564
+ platforms: [ 'rn', 'web' ],
2565
+ type: 'state',
2566
+ values: [ true, false ]
2567
+ },
2568
+ hover: {
2569
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2570
+ platforms: [ 'rn', 'web' ],
2571
+ type: 'state',
2572
+ values: [ true, false ]
2573
+ },
2027
2574
  inactive: {
2028
2575
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
2029
2576
  type: 'state',
@@ -2122,10 +2669,51 @@ const theme = {
2122
2669
  if: { inverse: true },
2123
2670
  tokens: { borderColor: '#f9f2dd', iconColor: '#f9f2dd' }
2124
2671
  },
2672
+ {
2673
+ if: { hover: true },
2674
+ tokens: {
2675
+ borderColor: '#394056',
2676
+ iconColor: '#394056',
2677
+ iconScale: 1.1
2678
+ }
2679
+ },
2680
+ {
2681
+ if: { hover: true, inactive: true },
2682
+ tokens: { iconScale: 1 }
2683
+ },
2684
+ {
2685
+ if: { hover: true, password: true },
2686
+ tokens: {
2687
+ backgroundColor: '#394056',
2688
+ borderColor: '#394056',
2689
+ iconColor: '#ffffff'
2690
+ }
2691
+ },
2125
2692
  {
2126
2693
  if: { password: true },
2127
2694
  tokens: { borderColor: 'rgba(0, 0, 0, 0)' }
2128
2695
  },
2696
+ {
2697
+ if: { hover: true, inverse: true },
2698
+ tokens: { borderColor: '#f9cebf', iconColor: '#f9cebf' }
2699
+ },
2700
+ {
2701
+ if: { focus: true },
2702
+ tokens: {
2703
+ outerBorderColor: '#636c8c',
2704
+ outerBorderGap: 2,
2705
+ outerBorderWidth: 2
2706
+ }
2707
+ },
2708
+ {
2709
+ if: { focus: true, inverse: true },
2710
+ tokens: {
2711
+ borderColor: '#f9f2dd',
2712
+ iconColor: '#f9f2dd',
2713
+ outerBorderColor: '#f9f2dd',
2714
+ outerBorderWidth: 3
2715
+ }
2716
+ },
2129
2717
  {
2130
2718
  if: { pressed: true },
2131
2719
  tokens: {
@@ -2157,6 +2745,14 @@ const theme = {
2157
2745
  outerBorderWidth: 0
2158
2746
  }
2159
2747
  },
2748
+ {
2749
+ if: { focus: true, password: true, pressed: false },
2750
+ tokens: {
2751
+ outerBorderColor: '#636c8c',
2752
+ outerBorderGap: 0,
2753
+ outerBorderWidth: 1
2754
+ }
2755
+ },
2160
2756
  {
2161
2757
  if: { inverse: true, pressed: true },
2162
2758
  tokens: {
@@ -2218,7 +2814,33 @@ const theme = {
2218
2814
  outerBorderWidth: 0
2219
2815
  }
2220
2816
  },
2221
- { if: { compact: true }, tokens: { outerBorderGap: 0 } }
2817
+ {
2818
+ if: { focus: true, pressed: true, raised: true },
2819
+ tokens: {
2820
+ backgroundColor: '#636c8c',
2821
+ borderColor: '#636c8c',
2822
+ borderWidth: 0,
2823
+ iconColor: '#ffffff',
2824
+ outerBorderColor: '#636c8c'
2825
+ }
2826
+ },
2827
+ {
2828
+ if: { hover: true, pressed: false, raised: true },
2829
+ tokens: { borderColor: '#394056', borderWidth: 3 }
2830
+ },
2831
+ {
2832
+ if: { focus: true, pressed: false, raised: true },
2833
+ tokens: {
2834
+ borderColor: '#636c8c',
2835
+ borderWidth: 4,
2836
+ iconColor: '#636c8c'
2837
+ }
2838
+ },
2839
+ { if: { compact: true }, tokens: { outerBorderGap: 0 } },
2840
+ {
2841
+ if: { hover: true, password: true },
2842
+ tokens: { iconColor: '#9c9faa', outerBorderWidth: 0 }
2843
+ }
2222
2844
  ],
2223
2845
  tokens: {
2224
2846
  backgroundColor: 'transparent',
@@ -2270,6 +2892,18 @@ const theme = {
2270
2892
  Link: {
2271
2893
  appearances: {
2272
2894
  alternative: { type: 'variant', values: [ true ] },
2895
+ focus: {
2896
+ 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.",
2897
+ platforms: [ 'rn', 'web' ],
2898
+ type: 'state',
2899
+ values: [ true, false ]
2900
+ },
2901
+ hover: {
2902
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2903
+ platforms: [ 'rn', 'web' ],
2904
+ type: 'state',
2905
+ values: [ true, false ]
2906
+ },
2273
2907
  iconPosition: {
2274
2908
  description: 'Theme styles to be applied to icon links depending on where the icon is in relation to the link text',
2275
2909
  type: 'state',
@@ -2295,23 +2929,89 @@ const theme = {
2295
2929
  rules: [
2296
2930
  { if: { iconPosition: 'left' }, tokens: { iconSpace: 2 } },
2297
2931
  {
2298
- if: { pressed: true },
2299
- tokens: { color: '#2b3145', textLine: 'none' }
2932
+ if: { focus: true },
2933
+ tokens: {
2934
+ color: '#636c8c',
2935
+ outerBorderColor: '#636c8c',
2936
+ outerBorderOutline: 'none'
2937
+ }
2938
+ },
2939
+ {
2940
+ if: { hover: true },
2941
+ tokens: { color: '#394056', textLine: 'none' }
2942
+ },
2943
+ {
2944
+ if: { pressed: true },
2945
+ tokens: { color: '#2b3145', textLine: 'none' }
2946
+ },
2947
+ { if: { alternative: true }, tokens: { color: '#394056' } },
2948
+ {
2949
+ if: { alternative: true, hover: true },
2950
+ tokens: { color: '#2b3145' }
2951
+ },
2952
+ {
2953
+ if: { alternative: true, pressed: true },
2954
+ tokens: { color: '#2b3145', outerBorderWidth: 0 }
2955
+ },
2956
+ {
2957
+ if: { alternative: true, focus: true, pressed: true },
2958
+ tokens: { color: '#2b3145' }
2959
+ },
2960
+ {
2961
+ if: { alternative: true, focus: true },
2962
+ tokens: { color: '#394056', outerBorderColor: '#394056' }
2963
+ },
2964
+ {
2965
+ if: { alternative: true, focus: false, pressed: true },
2966
+ tokens: { color: '#2b3145' }
2967
+ },
2968
+ {
2969
+ if: {
2970
+ alternative: true,
2971
+ focus: true,
2972
+ hover: true,
2973
+ pressed: true
2974
+ },
2975
+ tokens: { color: '#2b3145', outerBorderColor: '#2b3145' }
2976
+ },
2977
+ {
2978
+ if: {
2979
+ alternative: true,
2980
+ focus: false,
2981
+ hover: true,
2982
+ pressed: false
2983
+ },
2984
+ tokens: { color: '#636c8c' }
2300
2985
  },
2301
- { if: { alternative: true }, tokens: { color: '#394056' } },
2302
2986
  {
2303
- if: { alternative: true, pressed: true },
2304
- tokens: { color: '#2b3145', outerBorderWidth: 0 }
2987
+ if: { alternative: true, focus: true, pressed: true },
2988
+ tokens: { color: '#636c8c' }
2305
2989
  },
2306
2990
  {
2307
- if: { alternative: true, pressed: true },
2308
- tokens: { color: '#2b3145' }
2991
+ if: { alternative: true, focus: true },
2992
+ tokens: {
2993
+ color: '#636c8c',
2994
+ outerBorderColor: '#636c8c',
2995
+ outerBorderWidth: 1
2996
+ }
2309
2997
  },
2310
2998
  {
2311
2999
  if: { alternative: true, pressed: true },
2312
3000
  tokens: { color: '#2b3145' }
2313
3001
  },
2314
3002
  { if: { inverse: true }, tokens: { color: '#f9f2dd' } },
3003
+ {
3004
+ if: { focus: true, inverse: true },
3005
+ tokens: { color: '#f9f2dd', outerBorderColor: '#f9f2dd' }
3006
+ },
3007
+ {
3008
+ if: { focus: true, inverse: true, pressed: true },
3009
+ tokens: { color: '#f39d80', outerBorderColor: '#f39d80' }
3010
+ },
3011
+ {
3012
+ if: { hover: true, inverse: true },
3013
+ tokens: { color: '#f9cebf' }
3014
+ },
2315
3015
  {
2316
3016
  if: { inverse: true, pressed: true },
2317
3017
  tokens: { color: '#f39d80' }
@@ -2334,7 +3034,19 @@ const theme = {
2334
3034
  if: { size: 'large' },
2335
3035
  tokens: { blockFontSize: 20, blockLineHeight: 1.4, iconSize: 24 }
2336
3036
  },
2337
- { if: { quiet: true }, tokens: { textLine: 'none' } }
3037
+ { if: { quiet: true }, tokens: { textLine: 'none' } },
3038
+ {
3039
+ if: { hover: true, quiet: true },
3040
+ tokens: { color: '#394056', textLine: 'underline' }
3041
+ },
3042
+ {
3043
+ if: { alternative: true, hover: true, quiet: true },
3044
+ tokens: { color: '#2b3145', textLine: 'underline' }
3045
+ },
3046
+ {
3047
+ if: { hover: true, inverse: true, quiet: true },
3048
+ tokens: { color: '#f9cebf', textLine: 'underline' }
3049
+ }
2338
3050
  ],
2339
3051
  tokens: {
2340
3052
  alignSelf: 'flex-start',
@@ -2435,6 +3147,18 @@ const theme = {
2435
3147
  type: 'state',
2436
3148
  values: [ true, false ]
2437
3149
  },
3150
+ focus: {
3151
+ 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.",
3152
+ platforms: [ 'rn', 'web' ],
3153
+ type: 'state',
3154
+ values: [ true, false ]
3155
+ },
3156
+ hover: {
3157
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3158
+ platforms: [ 'rn', 'web' ],
3159
+ type: 'state',
3160
+ values: [ true, false ]
3161
+ },
2438
3162
  isChild: {
2439
3163
  description: 'when the item is child of another child',
2440
3164
  type: 'state',
@@ -2447,6 +3171,47 @@ const theme = {
2447
3171
  }
2448
3172
  },
2449
3173
  rules: [
3174
+ {
3175
+ if: { focus: true, hover: true, pressed: true },
3176
+ tokens: {
3177
+ groupBackgroundColor: '#636c8c',
3178
+ groupBorderColor: 'rgba(0, 0, 0, 0)',
3179
+ groupColor: '#f9f2dd',
3180
+ itemBackgroundColor: '#636c8c',
3181
+ itemColor: '#f9f2dd'
3182
+ }
3183
+ },
3184
+ {
3185
+ if: { focus: false, hover: true, pressed: false },
3186
+ tokens: {
3187
+ groupBackgroundColor: '#fce6df',
3188
+ groupColor: '#394056',
3189
+ itemBackgroundColor: '#fce6df',
3190
+ itemColor: '#394056'
3191
+ }
3192
+ },
3193
+ {
3194
+ if: { focus: true, hover: true, isChild: true, pressed: true },
3195
+ tokens: {
3196
+ itemBackgroundColor: '#636c8c',
3197
+ itemBorderLeftColor: '#636c8c',
3198
+ itemColor: '#f9f2dd'
3199
+ }
3200
+ },
3201
+ {
3202
+ if: { focus: true, pressed: false },
3203
+ tokens: {
3204
+ groupBackgroundColor: 'rgba(0, 0, 0, 0)',
3205
+ groupBorderColor: '#394056',
3206
+ groupBorderWidth: 1,
3207
+ groupColor: '#394056',
3208
+ itemBorderBottomColor: '#394056',
3209
+ itemBorderLeftColor: '#394056',
3210
+ itemBorderRightColor: '#394056',
3211
+ itemBorderTopColor: '#394056',
3212
+ itemColor: '#394056'
3213
+ }
3214
+ },
2450
3215
  {
2451
3216
  if: { current: true, isChild: false },
2452
3217
  tokens: {
@@ -2457,7 +3222,7 @@ const theme = {
2457
3222
  }
2458
3223
  },
2459
3224
  {
2460
- if: { current: true, isChild: true },
3225
+ if: { current: true, focus: false, isChild: true },
2461
3226
  tokens: {
2462
3227
  itemBackgroundColor: 'rgba(0, 0, 0, 0)',
2463
3228
  itemBorderBottomWidth: 0,
@@ -2485,6 +3250,23 @@ const theme = {
2485
3250
  itemBorderTopWidth: 0
2486
3251
  }
2487
3252
  },
3253
+ {
3254
+ if: { focus: true, isChild: true, pressed: false },
3255
+ tokens: {
3256
+ itemBorderBottomColor: '#394056',
3257
+ itemBorderBottomWidth: 1,
3258
+ itemBorderLeftColor: '#394056',
3259
+ itemBorderLeftWidth: 4,
3260
+ itemBorderRightColor: '#394056',
3261
+ itemBorderRightWidth: 1,
3262
+ itemBorderTopColor: '#394056',
3263
+ itemBorderTopWidth: 1
3264
+ }
3265
+ },
3266
+ {
3267
+ if: { hover: true, isChild: true, pressed: false },
3268
+ tokens: { itemBorderLeftColor: '#394056' }
3269
+ },
2488
3270
  {
2489
3271
  if: { expanded: true },
2490
3272
  tokens: { groupIcon: PaletteIconChevronUp }
@@ -2735,6 +3517,18 @@ const theme = {
2735
3517
  type: 'state',
2736
3518
  values: [ true, false ]
2737
3519
  },
3520
+ focus: {
3521
+ 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.",
3522
+ platforms: [ 'rn', 'web' ],
3523
+ type: 'state',
3524
+ values: [ true, false ]
3525
+ },
3526
+ hover: {
3527
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3528
+ platforms: [ 'rn', 'web' ],
3529
+ type: 'state',
3530
+ values: [ true, false ]
3531
+ },
2738
3532
  pressed: {
2739
3533
  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.',
2740
3534
  type: 'state',
@@ -2762,6 +3556,34 @@ const theme = {
2762
3556
  fontWeight: '400'
2763
3557
  }
2764
3558
  },
3559
+ {
3560
+ if: { focus: true },
3561
+ tokens: {
3562
+ backgroundColor: '#d8dae2',
3563
+ borderColor: '#636c8c',
3564
+ borderWidth: 1,
3565
+ color: '#394056',
3566
+ outerBorderColor: '#f9cebf',
3567
+ outerBorderGap: 0,
3568
+ outerBorderWidth: 4
3569
+ }
3570
+ },
3571
+ {
3572
+ if: { focus: true, pressed: true },
3573
+ tokens: {
3574
+ backgroundColor: '#f39d80',
3575
+ borderColor: '#f39d80',
3576
+ color: '#ffffff'
3577
+ }
3578
+ },
3579
+ {
3580
+ if: { hover: true },
3581
+ tokens: {
3582
+ backgroundColor: '#636c8c',
3583
+ borderColor: '#636c8c',
3584
+ color: '#ffffff'
3585
+ }
3586
+ },
2765
3587
  {
2766
3588
  if: { pressed: true },
2767
3589
  tokens: {
@@ -3002,6 +3824,18 @@ const theme = {
3002
3824
  },
3003
3825
  PaginationPageButton: {
3004
3826
  appearances: {
3827
+ focus: {
3828
+ 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.",
3829
+ platforms: [ 'rn', 'web' ],
3830
+ type: 'state',
3831
+ values: [ true, false ]
3832
+ },
3833
+ hover: {
3834
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3835
+ platforms: [ 'rn', 'web' ],
3836
+ type: 'state',
3837
+ values: [ true, false ]
3838
+ },
3005
3839
  pressed: {
3006
3840
  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.',
3007
3841
  type: 'state',
@@ -3014,6 +3848,18 @@ const theme = {
3014
3848
  }
3015
3849
  },
3016
3850
  rules: [
3851
+ { if: { hover: true }, tokens: { backgroundColor: '#fce6df' } },
3852
+ {
3853
+ if: { focus: true },
3854
+ tokens: {
3855
+ backgroundColor: 'rgba(0, 0, 0, 0)',
3856
+ borderBottomWidth: 2,
3857
+ borderLeftWidth: 2,
3858
+ borderRightWidth: 3,
3859
+ borderTopWidth: 2,
3860
+ textLine: 'underline'
3861
+ }
3862
+ },
3017
3863
  {
3018
3864
  if: { selected: true },
3019
3865
  tokens: { backgroundColor: '#f39d80' }
@@ -3021,6 +3867,10 @@ const theme = {
3021
3867
  {
3022
3868
  if: { pressed: true },
3023
3869
  tokens: { backgroundColor: '#636c8c', color: '#f9f2dd' }
3870
+ },
3871
+ {
3872
+ if: { focus: true, pressed: true },
3873
+ tokens: { backgroundColor: '#636c8c', textLine: 'none' }
3024
3874
  }
3025
3875
  ],
3026
3876
  tokens: {
@@ -3061,6 +3911,18 @@ const theme = {
3061
3911
  type: 'state',
3062
3912
  values: [ 'previous', 'next' ]
3063
3913
  },
3914
+ focus: {
3915
+ 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.",
3916
+ platforms: [ 'rn', 'web' ],
3917
+ type: 'state',
3918
+ values: [ true, false ]
3919
+ },
3920
+ hover: {
3921
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
3922
+ platforms: [ 'rn', 'web' ],
3923
+ type: 'state',
3924
+ values: [ true, false ]
3925
+ },
3064
3926
  pressed: {
3065
3927
  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.',
3066
3928
  type: 'state',
@@ -3118,6 +3980,24 @@ const theme = {
3118
3980
  width: 48
3119
3981
  }
3120
3982
  },
3983
+ {
3984
+ if: { hover: true },
3985
+ tokens: {
3986
+ backgroundColor: '#fce6df',
3987
+ borderColor: '#636c8c',
3988
+ iconDisplace: 4
3989
+ }
3990
+ },
3991
+ {
3992
+ if: { focus: true },
3993
+ tokens: {
3994
+ borderBottomWidth: 2,
3995
+ borderColor: '#394056',
3996
+ borderLeftWidth: 3,
3997
+ borderRightWidth: 3,
3998
+ borderTopWidth: 2
3999
+ }
4000
+ },
3121
4001
  {
3122
4002
  if: { selected: true },
3123
4003
  tokens: { backgroundColor: '#394056', color: '#f9f2dd' }
@@ -3126,7 +4006,25 @@ const theme = {
3126
4006
  if: { pressed: true },
3127
4007
  tokens: { backgroundColor: '#636c8c', color: '#f9f2dd' }
3128
4008
  },
3129
- { if: { direction: 'next' }, tokens: { borderRightWidth: 1 } }
4009
+ { if: { direction: 'next' }, tokens: { borderRightWidth: 1 } },
4010
+ {
4011
+ if: { direction: 'next', focus: true },
4012
+ tokens: {
4013
+ borderBottomWidth: 2,
4014
+ borderLeftWidth: 2,
4015
+ borderRightWidth: 3,
4016
+ borderTopWidth: 2
4017
+ }
4018
+ },
4019
+ {
4020
+ if: { direction: 'previous', focus: true },
4021
+ tokens: {
4022
+ borderBottomWidth: 2,
4023
+ borderLeftWidth: 2,
4024
+ borderRightWidth: 3,
4025
+ borderTopWidth: 2
4026
+ }
4027
+ }
3130
4028
  ],
3131
4029
  tokens: {
3132
4030
  backgroundColor: 'rgba(0, 0, 0, 0)',
@@ -3158,8 +4056,41 @@ const theme = {
3158
4056
  }
3159
4057
  },
3160
4058
  PreviewCard: {
3161
- appearances: {},
3162
- rules: [],
4059
+ appearances: {
4060
+ focus: {
4061
+ 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.",
4062
+ platforms: [ 'rn', 'web' ],
4063
+ type: 'state',
4064
+ values: [ true, false ]
4065
+ },
4066
+ hover: {
4067
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4068
+ platforms: [ 'rn', 'web' ],
4069
+ type: 'state',
4070
+ values: [ true, false ]
4071
+ },
4072
+ pressed: {
4073
+ 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.",
4074
+ platforms: [ 'rn', 'web' ],
4075
+ type: 'state',
4076
+ values: [ true, false ]
4077
+ }
4078
+ },
4079
+ rules: [
4080
+ { if: { hover: true }, tokens: { borderWidth: 2 } },
4081
+ {
4082
+ if: { pressed: true },
4083
+ tokens: { backgroundColor: '#cdcfd5' }
4084
+ },
4085
+ {
4086
+ if: { focus: true },
4087
+ tokens: {
4088
+ outerBorderColor: '#9c9faa',
4089
+ outerBorderGap: 2,
4090
+ outerBorderWidth: 2
4091
+ }
4092
+ }
4093
+ ],
3163
4094
  tokens: {
3164
4095
  backgroundColor: '#ffffff',
3165
4096
  borderColor: '#cdcfd5',
@@ -3469,6 +4400,18 @@ const theme = {
3469
4400
  },
3470
4401
  QuickLinksButton: {
3471
4402
  appearances: {
4403
+ focus: {
4404
+ 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.",
4405
+ platforms: [ 'rn', 'web' ],
4406
+ type: 'state',
4407
+ values: [ true, false ]
4408
+ },
4409
+ hover: {
4410
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4411
+ platforms: [ 'rn', 'web' ],
4412
+ type: 'state',
4413
+ values: [ true, false ]
4414
+ },
3472
4415
  pressed: {
3473
4416
  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.',
3474
4417
  type: 'state',
@@ -3476,6 +4419,7 @@ const theme = {
3476
4419
  }
3477
4420
  },
3478
4421
  rules: [
4422
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
3479
4423
  {
3480
4424
  if: { pressed: true },
3481
4425
  tokens: {
@@ -3485,6 +4429,14 @@ const theme = {
3485
4429
  color: '#9c9faa',
3486
4430
  iconColor: '#9c9faa'
3487
4431
  }
4432
+ },
4433
+ {
4434
+ if: { focus: true },
4435
+ tokens: { outerBorderColor: '#394056' }
4436
+ },
4437
+ {
4438
+ if: { focus: true, pressed: true },
4439
+ tokens: { borderWidth: 1, outerBorderColor: '#9c9faa' }
3488
4440
  }
3489
4441
  ],
3490
4442
  tokens: {
@@ -3541,6 +4493,18 @@ const theme = {
3541
4493
  },
3542
4494
  QuickLinksFeatureItem: {
3543
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
+ },
3544
4508
  pressed: {
3545
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.',
3546
4510
  type: 'state',
@@ -3557,6 +4521,22 @@ const theme = {
3557
4521
  if: { viewport: 'xl' },
3558
4522
  tokens: { contentMaxDimension: 168, imageDimension: 168 }
3559
4523
  },
4524
+ {
4525
+ if: { hover: true },
4526
+ tokens: {
4527
+ color: '#394056',
4528
+ imageDimension: 140,
4529
+ textLine: 'underline'
4530
+ }
4531
+ },
4532
+ {
4533
+ if: { focus: true },
4534
+ tokens: {
4535
+ color: '#636c8c',
4536
+ outerBorderColor: '#636c8c',
4537
+ textLine: 'underline'
4538
+ }
4539
+ },
3560
4540
  {
3561
4541
  if: { pressed: true },
3562
4542
  tokens: {
@@ -3584,6 +4564,18 @@ const theme = {
3584
4564
  },
3585
4565
  QuickLinksList: {
3586
4566
  appearances: {
4567
+ focus: {
4568
+ 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.",
4569
+ platforms: [ 'rn', 'web' ],
4570
+ type: 'state',
4571
+ values: [ true, false ]
4572
+ },
4573
+ hover: {
4574
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4575
+ platforms: [ 'rn', 'web' ],
4576
+ type: 'state',
4577
+ values: [ true, false ]
4578
+ },
3587
4579
  pressed: {
3588
4580
  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
4581
  type: 'state',
@@ -3591,6 +4583,8 @@ const theme = {
3591
4583
  }
3592
4584
  },
3593
4585
  rules: [
4586
+ { if: { hover: true }, tokens: { backgroundColor: '#fce6df' } },
4587
+ { if: { focus: true }, tokens: { backgroundColor: '#f9cebf' } },
3594
4588
  {
3595
4589
  if: { pressed: true },
3596
4590
  tokens: {
@@ -3635,6 +4629,18 @@ const theme = {
3635
4629
  values: [ true ]
3636
4630
  },
3637
4631
  error: { type: 'state', values: [ true ] },
4632
+ focus: {
4633
+ 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.",
4634
+ platforms: [ 'rn', 'web' ],
4635
+ type: 'state',
4636
+ values: [ true, false ]
4637
+ },
4638
+ hover: {
4639
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4640
+ platforms: [ 'rn', 'web' ],
4641
+ type: 'state',
4642
+ values: [ true, false ]
4643
+ },
3638
4644
  inactive: {
3639
4645
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
3640
4646
  type: 'state',
@@ -3643,6 +4649,18 @@ const theme = {
3643
4649
  },
3644
4650
  rules: [
3645
4651
  { if: { error: true }, tokens: {} },
4652
+ {
4653
+ if: { hover: true },
4654
+ tokens: { inputBackgroundColor: '#fce6df' }
4655
+ },
4656
+ {
4657
+ if: { checked: true, hover: true },
4658
+ tokens: { inputBorderColor: '#394056' }
4659
+ },
4660
+ {
4661
+ if: { focus: true },
4662
+ tokens: { inputOutlineColor: '#f39d80' }
4663
+ },
3646
4664
  {
3647
4665
  if: { inactive: true },
3648
4666
  tokens: {
@@ -3698,6 +4716,18 @@ const theme = {
3698
4716
  values: [ true ]
3699
4717
  },
3700
4718
  error: { type: 'state', values: [ true ] },
4719
+ focus: {
4720
+ 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.",
4721
+ platforms: [ 'rn', 'web' ],
4722
+ type: 'state',
4723
+ values: [ true, false ]
4724
+ },
4725
+ hover: {
4726
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4727
+ platforms: [ 'rn', 'web' ],
4728
+ type: 'state',
4729
+ values: [ true, false ]
4730
+ },
3701
4731
  inactive: {
3702
4732
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
3703
4733
  type: 'state',
@@ -3726,11 +4756,32 @@ const theme = {
3726
4756
  }
3727
4757
  },
3728
4758
  {
3729
- if: { checked: true },
4759
+ if: { checked: true },
4760
+ tokens: {
4761
+ radioInputBorderColor: '#394056',
4762
+ radioInputBorderWidth: 2,
4763
+ radioOuterBorderGap: 2
4764
+ }
4765
+ },
4766
+ {
4767
+ if: { hover: true },
4768
+ tokens: {
4769
+ borderColor: '#9c9faa',
4770
+ outerBorderColor: '#cdcfd5',
4771
+ radioInputBackgroundColor: '#fce6df',
4772
+ radioInputBorderColor: '#394056'
4773
+ }
4774
+ },
4775
+ {
4776
+ if: { focus: true },
3730
4777
  tokens: {
4778
+ borderColor: '#cdcfd5',
4779
+ outerBorderColor: '#6a7080',
4780
+ outerBorderGap: 2,
4781
+ radioInputBackgroundColor: 'rgba(0, 0, 0, 0)',
3731
4782
  radioInputBorderColor: '#394056',
3732
- radioInputBorderWidth: 2,
3733
- radioOuterBorderGap: 2
4783
+ radioInputOutlineColor: '#f39d80',
4784
+ radioInputOutlineWidth: 2
3734
4785
  }
3735
4786
  },
3736
4787
  {
@@ -3913,6 +4964,12 @@ const theme = {
3913
4964
  type: 'state',
3914
4965
  values: [ true ]
3915
4966
  },
4967
+ hover: {
4968
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
4969
+ platforms: [ 'rn', 'web' ],
4970
+ type: 'state',
4971
+ values: [ true, false ]
4972
+ },
3916
4973
  inactive: {
3917
4974
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
3918
4975
  type: 'state',
@@ -3920,6 +4977,10 @@ const theme = {
3920
4977
  }
3921
4978
  },
3922
4979
  rules: [
4980
+ {
4981
+ if: { hover: true, inactive: null },
4982
+ tokens: { outerBorderColor: '#cdcfd5', outerBorderWidth: 2 }
4983
+ },
3923
4984
  {
3924
4985
  if: { focus: true },
3925
4986
  tokens: { outerBorderColor: '#f39d80', outerBorderWidth: 3 }
@@ -3960,6 +5021,18 @@ const theme = {
3960
5021
  },
3961
5022
  SearchButton: {
3962
5023
  appearances: {
5024
+ focus: {
5025
+ 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.",
5026
+ platforms: [ 'rn', 'web' ],
5027
+ type: 'state',
5028
+ values: [ true, false ]
5029
+ },
5030
+ hover: {
5031
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5032
+ platforms: [ 'rn', 'web' ],
5033
+ type: 'state',
5034
+ values: [ true, false ]
5035
+ },
3963
5036
  inactive: {
3964
5037
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
3965
5038
  type: 'state',
@@ -3977,6 +5050,23 @@ const theme = {
3977
5050
  if: { priority: 'high' },
3978
5051
  tokens: { backgroundColor: '#394056', iconColor: '#ffffff' }
3979
5052
  },
5053
+ {
5054
+ if: { hover: true },
5055
+ tokens: {
5056
+ backgroundColor: '#636c8c',
5057
+ borderWidth: 0,
5058
+ iconColor: '#ffffff'
5059
+ }
5060
+ },
5061
+ {
5062
+ if: { focus: true },
5063
+ tokens: {
5064
+ backgroundColor: 'transparent',
5065
+ borderColor: '#636c8c',
5066
+ borderWidth: 3,
5067
+ iconColor: '#636c8c'
5068
+ }
5069
+ },
3980
5070
  {
3981
5071
  if: { pressed: true },
3982
5072
  tokens: {
@@ -4023,6 +5113,12 @@ const theme = {
4023
5113
  type: 'state',
4024
5114
  values: [ true ]
4025
5115
  },
5116
+ hover: {
5117
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5118
+ platforms: [ 'rn', 'web' ],
5119
+ type: 'state',
5120
+ values: [ true, false ]
5121
+ },
4026
5122
  inactive: {
4027
5123
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
4028
5124
  type: 'state',
@@ -4035,6 +5131,10 @@ const theme = {
4035
5131
  }
4036
5132
  },
4037
5133
  rules: [
5134
+ {
5135
+ if: { hover: true },
5136
+ tokens: { outerBorderColor: '#cdcfd5' }
5137
+ },
4038
5138
  {
4039
5139
  if: { focus: true },
4040
5140
  tokens: { outerBorderColor: '#f39d80', outerBorderWidth: 3 }
@@ -4108,6 +5208,18 @@ const theme = {
4108
5208
  type: 'state',
4109
5209
  values: [ true, false ]
4110
5210
  },
5211
+ focus: {
5212
+ 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.",
5213
+ platforms: [ 'rn', 'web' ],
5214
+ type: 'state',
5215
+ values: [ true, false ]
5216
+ },
5217
+ hover: {
5218
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5219
+ platforms: [ 'rn', 'web' ],
5220
+ type: 'state',
5221
+ values: [ true, false ]
5222
+ },
4111
5223
  type: {
4112
5224
  description: '`parent` being the toggle button for an ItemsGroup, and `child` an element of the ItemGroup',
4113
5225
  type: 'state',
@@ -4123,6 +5235,8 @@ const theme = {
4123
5235
  fontWeight: '400'
4124
5236
  }
4125
5237
  },
5238
+ { if: { hover: true }, tokens: { backgroundColor: '#fce6df' } },
5239
+ { if: { focus: true }, tokens: { backgroundColor: '#fce6df' } },
4126
5240
  {
4127
5241
  if: { active: true, type: 'child' },
4128
5242
  tokens: {
@@ -4216,13 +5330,24 @@ const theme = {
4216
5330
  },
4217
5331
  SkipLink: {
4218
5332
  appearances: {
5333
+ focus: {
5334
+ 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.",
5335
+ platforms: [ 'rn', 'web' ],
5336
+ type: 'state',
5337
+ values: [ true, false ]
5338
+ },
4219
5339
  pressed: {
4220
5340
  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.',
4221
5341
  type: 'state',
4222
5342
  values: [ true, false ]
4223
5343
  }
4224
5344
  },
4225
- rules: [],
5345
+ rules: [
5346
+ {
5347
+ if: { focus: true, pressed: true },
5348
+ tokens: { color: '#2b3145', outlineColor: '#2b3145' }
5349
+ }
5350
+ ],
4226
5351
  tokens: {
4227
5352
  backgroundColor: '#ffffff',
4228
5353
  borderRadius: 4,
@@ -4250,7 +5375,14 @@ const theme = {
4250
5375
  }
4251
5376
  },
4252
5377
  SplashButton: {
4253
- appearances: {},
5378
+ appearances: {
5379
+ hover: {
5380
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5381
+ platforms: [ 'rn', 'web' ],
5382
+ type: 'state',
5383
+ values: [ true, false ]
5384
+ }
5385
+ },
4254
5386
  rules: [],
4255
5387
  tokens: {
4256
5388
  buttonContentBackground: null,
@@ -4260,8 +5392,20 @@ const theme = {
4260
5392
  }
4261
5393
  },
4262
5394
  SplashButtonWithDetails: {
4263
- appearances: {},
4264
- rules: [],
5395
+ appearances: {
5396
+ hover: {
5397
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5398
+ platforms: [ 'rn', 'web' ],
5399
+ type: 'state',
5400
+ values: [ true, false ]
5401
+ }
5402
+ },
5403
+ rules: [
5404
+ {
5405
+ if: { hover: true },
5406
+ tokens: { buttonContentChildrenBackground: null }
5407
+ }
5408
+ ],
4265
5409
  tokens: {
4266
5410
  buttonBackground: '#ffffff',
4267
5411
  buttonBorderColor: null,
@@ -4381,6 +5525,18 @@ const theme = {
4381
5525
  },
4382
5526
  StoryCard: {
4383
5527
  appearances: {
5528
+ focus: {
5529
+ 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.",
5530
+ platforms: [ 'rn', 'web' ],
5531
+ type: 'state',
5532
+ values: [ true, false ]
5533
+ },
5534
+ hover: {
5535
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5536
+ platforms: [ 'rn', 'web' ],
5537
+ type: 'state',
5538
+ values: [ true, false ]
5539
+ },
4384
5540
  pressed: {
4385
5541
  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.',
4386
5542
  type: 'state',
@@ -4388,9 +5544,18 @@ const theme = {
4388
5544
  }
4389
5545
  },
4390
5546
  rules: [
5547
+ { if: { hover: true }, tokens: { borderWidth: 2 } },
4391
5548
  {
4392
5549
  if: { pressed: true },
4393
5550
  tokens: { backgroundColor: '#cdcfd5' }
5551
+ },
5552
+ {
5553
+ if: { focus: true },
5554
+ tokens: {
5555
+ outerBorderColor: '#9c9faa',
5556
+ outerBorderGap: 2,
5557
+ outerBorderWidth: 2
5558
+ }
4394
5559
  }
4395
5560
  ],
4396
5561
  tokens: {
@@ -4545,6 +5710,18 @@ const theme = {
4545
5710
  type: 'variant',
4546
5711
  values: [ true ]
4547
5712
  },
5713
+ focus: {
5714
+ 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.",
5715
+ platforms: [ 'rn', 'web' ],
5716
+ type: 'state',
5717
+ values: [ true, false ]
5718
+ },
5719
+ hover: {
5720
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5721
+ platforms: [ 'rn', 'web' ],
5722
+ type: 'state',
5723
+ values: [ true, false ]
5724
+ },
4548
5725
  inverse: { type: 'variant', values: [ true ] },
4549
5726
  pressed: {
4550
5727
  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.',
@@ -4567,6 +5744,11 @@ const theme = {
4567
5744
  highlightColor: '#f39d80'
4568
5745
  }
4569
5746
  },
5747
+ { if: { hover: true }, tokens: { color: '#636c8c' } },
5748
+ {
5749
+ if: { focus: true },
5750
+ tokens: { borderColor: '#394056', borderWidth: 1, color: '#394056' }
5751
+ },
4570
5752
  {
4571
5753
  if: { pressed: true },
4572
5754
  tokens: { borderWidth: 0, color: '#2b3145' }
@@ -4584,6 +5766,14 @@ const theme = {
4584
5766
  highlightColor: '#f9f2dd'
4585
5767
  }
4586
5768
  },
5769
+ {
5770
+ if: { hover: true, inverse: true },
5771
+ tokens: { color: '#f9cebf' }
5772
+ },
5773
+ {
5774
+ if: { focus: true, inverse: true },
5775
+ tokens: { borderColor: '#f9f2dd', color: '#f9f2dd' }
5776
+ },
4587
5777
  {
4588
5778
  if: { inverse: true, pressed: true },
4589
5779
  tokens: { color: '#f39d80' }
@@ -4635,6 +5825,18 @@ const theme = {
4635
5825
  },
4636
5826
  TagsItem: {
4637
5827
  appearances: {
5828
+ focus: {
5829
+ 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.",
5830
+ platforms: [ 'rn', 'web' ],
5831
+ type: 'state',
5832
+ values: [ true, false ]
5833
+ },
5834
+ hover: {
5835
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
5836
+ platforms: [ 'rn', 'web' ],
5837
+ type: 'state',
5838
+ values: [ true, false ]
5839
+ },
4638
5840
  inactive: {
4639
5841
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
4640
5842
  type: 'state',
@@ -4652,6 +5854,28 @@ const theme = {
4652
5854
  }
4653
5855
  },
4654
5856
  rules: [
5857
+ {
5858
+ if: { focus: true },
5859
+ tokens: {
5860
+ backgroundColor: '#fcf8ee',
5861
+ borderColor: '#636c8c',
5862
+ color: '#394056',
5863
+ outerBorderColor: '#f9cebf',
5864
+ outerBorderGap: 0,
5865
+ outerBorderWidth: 3
5866
+ }
5867
+ },
5868
+ {
5869
+ if: { hover: true },
5870
+ tokens: {
5871
+ backgroundColor: 'rgba(0, 0, 0, 0)',
5872
+ borderColor: '#636c8c',
5873
+ borderWidth: 1,
5874
+ color: '#394056',
5875
+ iconBackground: '#2b3145',
5876
+ iconColor: '#f39d80'
5877
+ }
5878
+ },
4655
5879
  {
4656
5880
  if: { selected: true },
4657
5881
  tokens: {
@@ -4665,6 +5889,30 @@ const theme = {
4665
5889
  outerBorderWidth: 0
4666
5890
  }
4667
5891
  },
5892
+ {
5893
+ if: { hover: true, selected: true },
5894
+ tokens: {
5895
+ backgroundColor: 'rgba(0, 0, 0, 0)',
5896
+ borderColor: '#636c8c',
5897
+ borderWidth: 1,
5898
+ color: '#394056',
5899
+ iconBackground: '#2b3145',
5900
+ iconColor: '#f39d80'
5901
+ }
5902
+ },
5903
+ {
5904
+ if: { focus: true, selected: true },
5905
+ tokens: {
5906
+ backgroundColor: '#f9f2dd',
5907
+ borderColor: '#636c8c',
5908
+ color: '#394056',
5909
+ iconBackground: '#2b3145',
5910
+ iconColor: '#f9f2dd',
5911
+ outerBorderColor: '#f9cebf',
5912
+ outerBorderGap: 0,
5913
+ outerBorderWidth: 3
5914
+ }
5915
+ },
4668
5916
  {
4669
5917
  if: { pressed: true, selected: true },
4670
5918
  tokens: {
@@ -4746,6 +5994,23 @@ const theme = {
4746
5994
  type: 'state',
4747
5995
  values: [ true, false ]
4748
5996
  },
5997
+ focus: {
5998
+ 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.",
5999
+ platforms: [ 'rn', 'web' ],
6000
+ type: 'state',
6001
+ values: [ true, false ]
6002
+ },
6003
+ hover: {
6004
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6005
+ platforms: [ 'rn', 'web' ],
6006
+ type: 'state',
6007
+ values: [ true, false ]
6008
+ },
6009
+ pressed: {
6010
+ 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.',
6011
+ type: 'state',
6012
+ values: [ true, false ]
6013
+ },
4749
6014
  viewport: {
4750
6015
  description: 'The size label for the current screen viewport based on the current screen width',
4751
6016
  type: 'state',
@@ -4764,6 +6029,36 @@ const theme = {
4764
6029
  {
4765
6030
  if: { expanded: true },
4766
6031
  tokens: { icon: PaletteIconChevronUp }
6032
+ },
6033
+ {
6034
+ if: { hover: true },
6035
+ tokens: { iconColor: '#394056', iconOuterBorderColor: '#394056' }
6036
+ },
6037
+ {
6038
+ if: { pressed: true },
6039
+ tokens: {
6040
+ iconBackgroundColor: '#636c8c',
6041
+ iconBorderColor: '#fefefc',
6042
+ iconColor: '#fefefc',
6043
+ iconOuterBorderGap: 4
6044
+ }
6045
+ },
6046
+ {
6047
+ if: { focus: true },
6048
+ tokens: {
6049
+ iconOuterBorderColor: '#636c8c',
6050
+ iconOuterBorderGap: 4,
6051
+ iconOuterBorderWidth: 1
6052
+ }
6053
+ },
6054
+ {
6055
+ if: { focus: true, pressed: true },
6056
+ tokens: {
6057
+ iconBackgroundColor: '#636c8c',
6058
+ iconBorderColor: '#fefefc',
6059
+ iconColor: '#fefefc',
6060
+ iconOuterBorderGap: 4
6061
+ }
4767
6062
  }
4768
6063
  ],
4769
6064
  tokens: {
@@ -4797,6 +6092,12 @@ const theme = {
4797
6092
  expandTitlePaddingLeft: 0,
4798
6093
  expandTitleUnderline: 'none',
4799
6094
  icon: PaletteIconChevronDown,
6095
+ iconBackgroundColor: 'rgba(0, 0, 0, 0)',
6096
+ iconBorderColor: '#636c8c',
6097
+ iconColor: '#636c8c',
6098
+ iconOuterBorderColor: 'rgba(0, 0, 0, 0)',
6099
+ iconOuterBorderGap: 0,
6100
+ iconOuterBorderWidth: 0,
4800
6101
  listColor: '#394056',
4801
6102
  listFontName: 'SofiaPro',
4802
6103
  listFontSize: 16,
@@ -4858,6 +6159,12 @@ const theme = {
4858
6159
  type: 'state',
4859
6160
  values: [ true ]
4860
6161
  },
6162
+ hover: {
6163
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6164
+ platforms: [ 'rn', 'web' ],
6165
+ type: 'state',
6166
+ values: [ true, false ]
6167
+ },
4861
6168
  inactive: {
4862
6169
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
4863
6170
  type: 'state',
@@ -4880,6 +6187,14 @@ const theme = {
4880
6187
  }
4881
6188
  },
4882
6189
  rules: [
6190
+ {
6191
+ if: { hover: true, inactive: null },
6192
+ tokens: {
6193
+ outerBackgroundColor: '#cdcfd5',
6194
+ outerBorderColor: '#cdcfd5',
6195
+ outerBorderWidth: 1
6196
+ }
6197
+ },
4883
6198
  {
4884
6199
  if: { validation: 'success' },
4885
6200
  tokens: {
@@ -5035,6 +6350,18 @@ const theme = {
5035
6350
  },
5036
6351
  ToggleSwitch: {
5037
6352
  appearances: {
6353
+ focus: {
6354
+ 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.",
6355
+ platforms: [ 'rn', 'web' ],
6356
+ type: 'state',
6357
+ values: [ true, false ]
6358
+ },
6359
+ hover: {
6360
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6361
+ platforms: [ 'rn', 'web' ],
6362
+ type: 'state',
6363
+ values: [ true, false ]
6364
+ },
5038
6365
  inactive: {
5039
6366
  description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
5040
6367
  type: 'state',
@@ -5052,10 +6379,25 @@ const theme = {
5052
6379
  }
5053
6380
  },
5054
6381
  rules: [
6382
+ {
6383
+ if: { hover: true },
6384
+ tokens: { backgroundColor: '#9c9faa', switchColor: '#394056' }
6385
+ },
5055
6386
  {
5056
6387
  if: { pressed: true },
5057
6388
  tokens: { backgroundColor: '#6a7080', switchColor: '#2b3145' }
5058
6389
  },
6390
+ {
6391
+ if: { focus: true },
6392
+ tokens: {
6393
+ backgroundColor: '#cdcfd5',
6394
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
6395
+ outerBorderColor: '#f39d80',
6396
+ outerBorderGap: 3,
6397
+ outerBorderWidth: 1,
6398
+ switchColor: '#6a7080'
6399
+ }
6400
+ },
5059
6401
  {
5060
6402
  if: { selected: true },
5061
6403
  tokens: {
@@ -5065,10 +6407,40 @@ const theme = {
5065
6407
  switchColor: '#2b3145'
5066
6408
  }
5067
6409
  },
6410
+ {
6411
+ if: { hover: true, selected: true },
6412
+ tokens: {
6413
+ backgroundColor: '#f6b5a0',
6414
+ iconColor: '#394056',
6415
+ switchColor: '#394056'
6416
+ }
6417
+ },
5068
6418
  {
5069
6419
  if: { pressed: true, selected: true },
5070
6420
  tokens: { backgroundColor: '#6a7080', iconColor: '#6a7080' }
5071
6421
  },
6422
+ {
6423
+ if: { focus: true, selected: true },
6424
+ tokens: {
6425
+ iconColor: '#394056',
6426
+ outerBorderColor: '#f39d80',
6427
+ outerBorderWidth: 1,
6428
+ switchColor: '#394056'
6429
+ }
6430
+ },
6431
+ {
6432
+ if: { focus: true, pressed: true },
6433
+ tokens: {
6434
+ backgroundColor: '#6a7080',
6435
+ outerBorderColor: '#f39d80',
6436
+ outerBorderWidth: 1,
6437
+ switchColor: '#2b3145'
6438
+ }
6439
+ },
6440
+ {
6441
+ if: { focus: true, pressed: true, selected: true },
6442
+ tokens: { outerBorderColor: '#f39d80', outerBorderWidth: 1 }
6443
+ },
5072
6444
  {
5073
6445
  if: { inactive: true },
5074
6446
  tokens: {
@@ -5188,6 +6560,18 @@ const theme = {
5188
6560
  },
5189
6561
  TooltipButton: {
5190
6562
  appearances: {
6563
+ focus: {
6564
+ 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.",
6565
+ platforms: [ 'rn', 'web' ],
6566
+ type: 'state',
6567
+ values: [ true, false ]
6568
+ },
6569
+ hover: {
6570
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6571
+ platforms: [ 'rn', 'web' ],
6572
+ type: 'state',
6573
+ values: [ true, false ]
6574
+ },
5191
6575
  inverse: { type: 'variant', values: [ true ] },
5192
6576
  pressed: {
5193
6577
  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.',
@@ -5197,10 +6581,27 @@ const theme = {
5197
6581
  },
5198
6582
  rules: [
5199
6583
  { if: { inverse: true }, tokens: { iconColor: '#f5f5f7' } },
6584
+ { if: { hover: true }, tokens: { iconScale: 1.25 } },
5200
6585
  { if: { pressed: true }, tokens: { iconColor: '#6a7080' } },
5201
6586
  {
5202
6587
  if: { inverse: true, pressed: true },
5203
6588
  tokens: { iconColor: '#f5f5f7' }
6589
+ },
6590
+ {
6591
+ if: { focus: true },
6592
+ tokens: { outerBorderColor: '#f39d80' }
6593
+ },
6594
+ {
6595
+ if: { focus: true, inverse: true },
6596
+ tokens: { iconColor: '#f5f5f7', outerBorderColor: '#cdcfd5' }
6597
+ },
6598
+ {
6599
+ if: { focus: true, inverse: true, pressed: true },
6600
+ tokens: { iconColor: '#cdcfd5', outerBorderColor: '#cdcfd5' }
6601
+ },
6602
+ {
6603
+ if: { focus: true, pressed: true },
6604
+ tokens: { iconColor: '#6a7080', outerBorderColor: '#6a7080' }
5204
6605
  }
5205
6606
  ],
5206
6607
  tokens: {
@@ -5547,6 +6948,18 @@ const theme = {
5547
6948
  },
5548
6949
  VideoPickerThumbnail: {
5549
6950
  appearances: {
6951
+ focus: {
6952
+ 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.",
6953
+ platforms: [ 'rn', 'web' ],
6954
+ type: 'state',
6955
+ values: [ true, false ]
6956
+ },
6957
+ hover: {
6958
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
6959
+ platforms: [ 'rn', 'web' ],
6960
+ type: 'state',
6961
+ values: [ true, false ]
6962
+ },
5550
6963
  pressed: {
5551
6964
  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.',
5552
6965
  type: 'state',
@@ -5559,10 +6972,22 @@ const theme = {
5559
6972
  }
5560
6973
  },
5561
6974
  rules: [
6975
+ {
6976
+ if: { hover: true },
6977
+ tokens: { borderColor: '#cdcfd5', borderWidth: 3 }
6978
+ },
5562
6979
  {
5563
6980
  if: { pressed: true },
5564
6981
  tokens: { borderColor: '#6a7080', borderWidth: 3 }
5565
6982
  },
6983
+ {
6984
+ if: { focus: true },
6985
+ tokens: {
6986
+ borderColor: '#6a7080',
6987
+ borderWidth: 1,
6988
+ outerBorderColor: '#6a7080'
6989
+ }
6990
+ },
5566
6991
  {
5567
6992
  if: { selected: true },
5568
6993
  tokens: {
@@ -5676,6 +7101,6 @@ const theme = {
5676
7101
  tokens: { size: 80 }
5677
7102
  }
5678
7103
  },
5679
- metadata: { name: 'theme-public-mobile', themeTokensVersion: '2.49.0' }
7104
+ metadata: { name: 'theme-public-mobile', themeTokensVersion: '2.50.1' }
5680
7105
  }
5681
7106
  export default theme