@enact/limestone 1.9.3 → 1.10.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 (120) hide show
  1. package/.github/workflows/ci-reusable.yml +2 -2
  2. package/ActionGuide/ActionGuide.module.css +4 -0
  3. package/Alert/Alert.d.ts +9 -0
  4. package/Alert/Alert.js +35 -4
  5. package/Alert/Alert.module.css +12 -1
  6. package/Alert/tests/Alert-specs.js +91 -0
  7. package/BodyText/BodyText.module.css +21 -0
  8. package/Button/Button.module.css +72 -40
  9. package/Button/tests/Button-specs.js +26 -0
  10. package/CHANGELOG.md +74 -0
  11. package/Card/Card.d.ts +4 -4
  12. package/Card/Card.js +10 -8
  13. package/Card/Card.module.css +31 -7
  14. package/Card/tests/Card-specs.js +39 -5
  15. package/Checkbox/Checkbox.module.css +4 -0
  16. package/CheckboxItem/CheckboxItem.js +6 -4
  17. package/Chips/Chip.js +12 -6
  18. package/Chips/Chip.module.css +3 -0
  19. package/Chips/Chips.js +12 -6
  20. package/Chips/tests/Chip-specs.js +25 -5
  21. package/Chips/tests/Chips-specs.js +12 -2
  22. package/ColorPicker/ColorPicker.js +27 -25
  23. package/ContextualPopupDecorator/ContextualPopupDecorator.js +32 -22
  24. package/DayPicker/DaySelectorDecorator.js +12 -7
  25. package/Dropdown/Dropdown.module.css +4 -0
  26. package/Dropdown/DropdownList.js +74 -53
  27. package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
  28. package/Heading/Heading.d.ts +1 -1
  29. package/Heading/Heading.js +2 -2
  30. package/Heading/Heading.module.css +16 -0
  31. package/Icon/Icon.d.ts +1 -0
  32. package/Icon/Icon.js +1 -0
  33. package/Icon/Icon.module.css +12 -0
  34. package/Icon/IconList.js +2 -0
  35. package/IconItem/IconItem.module.css +19 -3
  36. package/IconItem/tests/IconItem-specs.js +30 -1
  37. package/Image/Image.js +6 -4
  38. package/ImageItem/ImageItem.module.css +17 -0
  39. package/Input/Input.js +12 -1
  40. package/Input/Input.module.css +25 -9
  41. package/Input/InputField.js +75 -24
  42. package/Input/InputField.module.css +280 -45
  43. package/Input/InputFieldDecoratorIcon.js +1 -0
  44. package/Input/InputFieldSpotlightDecorator.js +53 -8
  45. package/Input/index.d.ts +105 -93
  46. package/Input/tests/Input-specs.js +26 -0
  47. package/Input/tests/InputField-specs.js +149 -3
  48. package/Input/tests/InputPopup-specs.js +1 -1
  49. package/Item/Item.module.css +2 -1
  50. package/KeyGuide/KeyGuide.js +29 -27
  51. package/KeyGuide/KeyGuide.module.css +10 -0
  52. package/MediaOverlay/MediaOverlay.module.css +16 -4
  53. package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
  54. package/MediaPlayer/MediaControls.module.css +3 -0
  55. package/MediaPlayer/Times.module.css +4 -0
  56. package/MediaPlayer/tests/util-specs.js +4 -1
  57. package/PageViews/PageViews.js +134 -69
  58. package/PageViews/PageViews.module.css +7 -0
  59. package/PageViews/PageViewsRouter.js +91 -42
  60. package/PageViews/tests/PageViews-specs.js +87 -0
  61. package/Panels/Header.js +6 -4
  62. package/Panels/Header.module.css +37 -31
  63. package/Popup/Popup.js +5 -4
  64. package/PopupTabLayout/PopupTabLayout.js +11 -9
  65. package/PopupTabLayout/PopupTabLayout.module.css +18 -0
  66. package/RadioItem/RadioItem.js +7 -5
  67. package/RadioItem/RadioItem.module.css +5 -0
  68. package/Scroller/EditableWrapper.js +19 -15
  69. package/Scroller/Scroller.js +11 -10
  70. package/Scroller/Scroller.module.css +10 -0
  71. package/Scroller/tests/Scroller-specs.js +91 -2
  72. package/Scroller/useThemeScroller.js +6 -3
  73. package/Slider/Slider.d.ts +4 -0
  74. package/Slider/Slider.js +40 -16
  75. package/Slider/Slider.module.css +150 -3
  76. package/Slider/SliderBehaviorDecorator.js +16 -14
  77. package/Slider/tests/Slider-specs.js +51 -0
  78. package/Slider/utils.js +23 -7
  79. package/Spinner/Spinner.js +10 -8
  80. package/Steps/Steps.module.css +3 -0
  81. package/Switch/Switch.module.css +15 -1
  82. package/TabLayout/RefocusDecorator.js +14 -12
  83. package/TabLayout/TabGroup.module.css +1 -1
  84. package/TabLayout/tests/TabGroup-specs.js +1 -1
  85. package/ThemeDecorator/AccessibilityDecorator.js +12 -11
  86. package/ThemeDecorator/I18nFontDecorator.js +6 -4
  87. package/ThemeDecorator/ThemeDecorator.d.ts +7 -0
  88. package/ThemeDecorator/ThemeDecorator.js +24 -9
  89. package/TimePicker/TimePicker.module.css +3 -0
  90. package/TimePicker/TimePickerBase.js +5 -3
  91. package/TooltipDecorator/Tooltip.module.css +4 -0
  92. package/TooltipDecorator/TooltipDecorator.js +12 -7
  93. package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
  94. package/VideoPlayer/Feedback.module.css +3 -0
  95. package/VideoPlayer/FeedbackTooltip.module.css +7 -0
  96. package/VideoPlayer/MediaTitle.module.css +8 -0
  97. package/VideoPlayer/VideoPlayer.js +25 -24
  98. package/VirtualList/VirtualList.js +20 -18
  99. package/VirtualList/useSpotlight.js +1 -1
  100. package/fonts/Limestone_Icons.ttf +0 -0
  101. package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
  102. package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
  103. package/internal/DateTime/DateTime.module.css +3 -0
  104. package/internal/DateTime/DateTimeDecorator.js +5 -4
  105. package/internal/Panels/PanelsRouter.js +35 -29
  106. package/internal/Panels/useAutoFocus.js +10 -6
  107. package/internal/Panels/useFocusOnTransition.js +4 -3
  108. package/internal/Picker/Picker.js +7 -5
  109. package/internal/Picker/Picker.module.css +22 -0
  110. package/internal/Picker/SpottablePicker.js +15 -13
  111. package/internal/SharedStateDecorator/SharedStateDecorator.js +6 -4
  112. package/package.json +15 -12
  113. package/styles/colors.less +1 -0
  114. package/styles/variables.less +118 -26
  115. package/useScroll/HoverToScroll.js +15 -12
  116. package/useScroll/Scrollbar.js +14 -10
  117. package/useScroll/ScrollbarPlaceholder.js +4 -1
  118. package/useScroll/ScrollbarTrack.js +7 -5
  119. package/useScroll/useEvent.js +7 -2
  120. package/useScroll/useScroll.js +10 -2
@@ -169,9 +169,6 @@ Motion Mixins
169
169
  .slider.horizontal .minMax {
170
170
  margin-top: var(--primitive-spacing-24);
171
171
  }
172
- .slider.horizontal:global(.largeText) {
173
- padding: 0.25rem 0.375rem;
174
- }
175
172
  .slider.vertical {
176
173
  padding: 0.375rem 0.5rem;
177
174
  min-height: 5rem;
@@ -341,6 +338,31 @@ Motion Mixins
341
338
  :global(.spotlight-input-touch) .slider:global(.neutral).noFill:global(.spottable):active.pressed .fill {
342
339
  background-color: transparent;
343
340
  }
341
+ .slider:global(.neutral).colorPicker .bar,
342
+ .slider:global(.neutral).colorPicker .fill,
343
+ .slider:global(.neutral).colorPicker .load {
344
+ background-color: transparent;
345
+ }
346
+ :global(.spotlight-input-key) .slider:global(.neutral).colorPicker:global(.spottable):focus .bar,
347
+ :global(.spotlight-input-mouse) .slider:global(.neutral).colorPicker:global(.spottable):focus .bar,
348
+ :global(.spotlight-input-key) .slider:global(.neutral).colorPicker:global(.spottable):focus .fill,
349
+ :global(.spotlight-input-mouse) .slider:global(.neutral).colorPicker:global(.spottable):focus .fill,
350
+ :global(.spotlight-input-key) .slider:global(.neutral).colorPicker:global(.spottable):focus .load,
351
+ :global(.spotlight-input-mouse) .slider:global(.neutral).colorPicker:global(.spottable):focus .load {
352
+ background-color: transparent;
353
+ }
354
+ :global(.spotlight-input-key) .slider:global(.neutral).colorPicker:global(.spottable):focus .knob::before,
355
+ :global(.spotlight-input-mouse) .slider:global(.neutral).colorPicker:global(.spottable):focus .knob::before {
356
+ border-color: var(--semantic-color-surface-white);
357
+ }
358
+ :global(.spotlight-input-touch) .slider:global(.neutral).colorPicker:global(.spottable):active .bar,
359
+ :global(.spotlight-input-touch) .slider:global(.neutral).colorPicker:global(.spottable):active .fill,
360
+ :global(.spotlight-input-touch) .slider:global(.neutral).colorPicker:global(.spottable):active .load {
361
+ background-color: transparent;
362
+ }
363
+ :global(.spotlight-input-touch) .slider:global(.neutral).colorPicker:global(.spottable):active .knob::before {
364
+ border-color: var(--semantic-color-surface-white);
365
+ }
344
366
  .slider:global(.neutral).showAnchor .progressBar::after {
345
367
  background-color: color(from var(--semantic-color-surface-default-track) srgb r g b / 0.7);
346
368
  }
@@ -486,6 +508,31 @@ Motion Mixins
486
508
  :global(.spotlight-input-touch) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).noFill:global(.spottable):active.pressed .fill {
487
509
  background-color: transparent;
488
510
  }
511
+ :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker .bar,
512
+ :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker .fill,
513
+ :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker .load {
514
+ background-color: transparent;
515
+ }
516
+ :global(.spotlight-input-key) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .bar,
517
+ :global(.spotlight-input-mouse) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .bar,
518
+ :global(.spotlight-input-key) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .fill,
519
+ :global(.spotlight-input-mouse) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .fill,
520
+ :global(.spotlight-input-key) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .load,
521
+ :global(.spotlight-input-mouse) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .load {
522
+ background-color: transparent;
523
+ }
524
+ :global(.spotlight-input-key) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .knob::before,
525
+ :global(.spotlight-input-mouse) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):focus .knob::before {
526
+ border-color: var(--semantic-color-surface-white);
527
+ }
528
+ :global(.spotlight-input-touch) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):active .bar,
529
+ :global(.spotlight-input-touch) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):active .fill,
530
+ :global(.spotlight-input-touch) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):active .load {
531
+ background-color: transparent;
532
+ }
533
+ :global(.spotlight-input-touch) :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).colorPicker:global(.spottable):active .knob::before {
534
+ border-color: var(--semantic-color-surface-white);
535
+ }
489
536
  :global(.enact-a11y-high-contrast) .slider:global(.neutral):global(.highContrast).showAnchor .progressBar::after {
490
537
  background-color: color(from var(--semantic-color-surface-default-track) srgb r g b / 0.7);
491
538
  }
@@ -631,6 +678,31 @@ Motion Mixins
631
678
  :global(.spotlight-input-touch) .slider:global(.light).noFill:global(.spottable):active.pressed .fill {
632
679
  background-color: transparent;
633
680
  }
681
+ .slider:global(.light).colorPicker .bar,
682
+ .slider:global(.light).colorPicker .fill,
683
+ .slider:global(.light).colorPicker .load {
684
+ background-color: transparent;
685
+ }
686
+ :global(.spotlight-input-key) .slider:global(.light).colorPicker:global(.spottable):focus .bar,
687
+ :global(.spotlight-input-mouse) .slider:global(.light).colorPicker:global(.spottable):focus .bar,
688
+ :global(.spotlight-input-key) .slider:global(.light).colorPicker:global(.spottable):focus .fill,
689
+ :global(.spotlight-input-mouse) .slider:global(.light).colorPicker:global(.spottable):focus .fill,
690
+ :global(.spotlight-input-key) .slider:global(.light).colorPicker:global(.spottable):focus .load,
691
+ :global(.spotlight-input-mouse) .slider:global(.light).colorPicker:global(.spottable):focus .load {
692
+ background-color: transparent;
693
+ }
694
+ :global(.spotlight-input-key) .slider:global(.light).colorPicker:global(.spottable):focus .knob::before,
695
+ :global(.spotlight-input-mouse) .slider:global(.light).colorPicker:global(.spottable):focus .knob::before {
696
+ border-color: var(--semantic-color-surface-white);
697
+ }
698
+ :global(.spotlight-input-touch) .slider:global(.light).colorPicker:global(.spottable):active .bar,
699
+ :global(.spotlight-input-touch) .slider:global(.light).colorPicker:global(.spottable):active .fill,
700
+ :global(.spotlight-input-touch) .slider:global(.light).colorPicker:global(.spottable):active .load {
701
+ background-color: transparent;
702
+ }
703
+ :global(.spotlight-input-touch) .slider:global(.light).colorPicker:global(.spottable):active .knob::before {
704
+ border-color: var(--semantic-color-surface-white);
705
+ }
634
706
  .slider:global(.light).showAnchor .progressBar::after {
635
707
  background-color: color(from var(--semantic-color-surface-default-track) srgb r g b / 0.7);
636
708
  }
@@ -781,6 +853,31 @@ Motion Mixins
781
853
  :global(.spotlight-input-touch) .slider:global(.game).noFill:global(.spottable):active.pressed .fill {
782
854
  background-color: transparent;
783
855
  }
856
+ .slider:global(.game).colorPicker .bar,
857
+ .slider:global(.game).colorPicker .fill,
858
+ .slider:global(.game).colorPicker .load {
859
+ background-color: transparent;
860
+ }
861
+ :global(.spotlight-input-key) .slider:global(.game).colorPicker:global(.spottable):focus .bar,
862
+ :global(.spotlight-input-mouse) .slider:global(.game).colorPicker:global(.spottable):focus .bar,
863
+ :global(.spotlight-input-key) .slider:global(.game).colorPicker:global(.spottable):focus .fill,
864
+ :global(.spotlight-input-mouse) .slider:global(.game).colorPicker:global(.spottable):focus .fill,
865
+ :global(.spotlight-input-key) .slider:global(.game).colorPicker:global(.spottable):focus .load,
866
+ :global(.spotlight-input-mouse) .slider:global(.game).colorPicker:global(.spottable):focus .load {
867
+ background-color: transparent;
868
+ }
869
+ :global(.spotlight-input-key) .slider:global(.game).colorPicker:global(.spottable):focus .knob::before,
870
+ :global(.spotlight-input-mouse) .slider:global(.game).colorPicker:global(.spottable):focus .knob::before {
871
+ border-color: var(--semantic-color-surface-white);
872
+ }
873
+ :global(.spotlight-input-touch) .slider:global(.game).colorPicker:global(.spottable):active .bar,
874
+ :global(.spotlight-input-touch) .slider:global(.game).colorPicker:global(.spottable):active .fill,
875
+ :global(.spotlight-input-touch) .slider:global(.game).colorPicker:global(.spottable):active .load {
876
+ background-color: transparent;
877
+ }
878
+ :global(.spotlight-input-touch) .slider:global(.game).colorPicker:global(.spottable):active .knob::before {
879
+ border-color: var(--semantic-color-surface-white);
880
+ }
784
881
  .slider:global(.game).showAnchor .progressBar::after {
785
882
  background-color: color(from var(--semantic-color-surface-default-track) srgb r g b / 0.7);
786
883
  }
@@ -930,6 +1027,31 @@ Motion Mixins
930
1027
  :global(.spotlight-input-touch) :global(.green) .slider:global(.game).noFill:global(.spottable):active.pressed .fill {
931
1028
  background-color: transparent;
932
1029
  }
1030
+ :global(.green) .slider:global(.game).colorPicker .bar,
1031
+ :global(.green) .slider:global(.game).colorPicker .fill,
1032
+ :global(.green) .slider:global(.game).colorPicker .load {
1033
+ background-color: transparent;
1034
+ }
1035
+ :global(.spotlight-input-key) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .bar,
1036
+ :global(.spotlight-input-mouse) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .bar,
1037
+ :global(.spotlight-input-key) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .fill,
1038
+ :global(.spotlight-input-mouse) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .fill,
1039
+ :global(.spotlight-input-key) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .load,
1040
+ :global(.spotlight-input-mouse) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .load {
1041
+ background-color: transparent;
1042
+ }
1043
+ :global(.spotlight-input-key) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .knob::before,
1044
+ :global(.spotlight-input-mouse) :global(.green) .slider:global(.game).colorPicker:global(.spottable):focus .knob::before {
1045
+ border-color: var(--semantic-color-surface-white);
1046
+ }
1047
+ :global(.spotlight-input-touch) :global(.green) .slider:global(.game).colorPicker:global(.spottable):active .bar,
1048
+ :global(.spotlight-input-touch) :global(.green) .slider:global(.game).colorPicker:global(.spottable):active .fill,
1049
+ :global(.spotlight-input-touch) :global(.green) .slider:global(.game).colorPicker:global(.spottable):active .load {
1050
+ background-color: transparent;
1051
+ }
1052
+ :global(.spotlight-input-touch) :global(.green) .slider:global(.game).colorPicker:global(.spottable):active .knob::before {
1053
+ border-color: var(--semantic-color-surface-white);
1054
+ }
933
1055
  :global(.green) .slider:global(.game).showAnchor .progressBar::after {
934
1056
  background-color: color(from var(--semantic-color-surface-default-track) srgb r g b / 0.7);
935
1057
  }
@@ -1079,6 +1201,31 @@ Motion Mixins
1079
1201
  :global(.spotlight-input-touch) :global(.orange) .slider:global(.game).noFill:global(.spottable):active.pressed .fill {
1080
1202
  background-color: transparent;
1081
1203
  }
1204
+ :global(.orange) .slider:global(.game).colorPicker .bar,
1205
+ :global(.orange) .slider:global(.game).colorPicker .fill,
1206
+ :global(.orange) .slider:global(.game).colorPicker .load {
1207
+ background-color: transparent;
1208
+ }
1209
+ :global(.spotlight-input-key) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .bar,
1210
+ :global(.spotlight-input-mouse) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .bar,
1211
+ :global(.spotlight-input-key) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .fill,
1212
+ :global(.spotlight-input-mouse) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .fill,
1213
+ :global(.spotlight-input-key) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .load,
1214
+ :global(.spotlight-input-mouse) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .load {
1215
+ background-color: transparent;
1216
+ }
1217
+ :global(.spotlight-input-key) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .knob::before,
1218
+ :global(.spotlight-input-mouse) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):focus .knob::before {
1219
+ border-color: var(--semantic-color-surface-white);
1220
+ }
1221
+ :global(.spotlight-input-touch) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):active .bar,
1222
+ :global(.spotlight-input-touch) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):active .fill,
1223
+ :global(.spotlight-input-touch) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):active .load {
1224
+ background-color: transparent;
1225
+ }
1226
+ :global(.spotlight-input-touch) :global(.orange) .slider:global(.game).colorPicker:global(.spottable):active .knob::before {
1227
+ border-color: var(--semantic-color-surface-white);
1228
+ }
1082
1229
  :global(.orange) .slider:global(.game).showAnchor .progressBar::after {
1083
1230
  background-color: color(from var(--semantic-color-surface-default-track) srgb r g b / 0.7);
1084
1231
  }
@@ -56,8 +56,9 @@ var SliderBehaviorDecorator = exports.SliderBehaviorDecorator = (0, _hoc["defaul
56
56
  var emitSpotlightEvents = config.emitSpotlightEvents;
57
57
 
58
58
  // eslint-disable-next-line no-shadow
59
- var SliderBehaviorDecorator = function SliderBehaviorDecorator(props) {
59
+ var _SliderBehaviorDecorator = function SliderBehaviorDecorator(props) {
60
60
  var sliderBehaviorProps = (0, _util.setDefaultProps)(props, sliderBehaviorDefaultProps);
61
+ (0, _util.checkPropTypes)(_SliderBehaviorDecorator, sliderBehaviorProps);
61
62
  var paused = (0, _react.useMemo)(function () {
62
63
  return new _Pause["default"]();
63
64
  }, []);
@@ -81,12 +82,10 @@ var SliderBehaviorDecorator = exports.SliderBehaviorDecorator = (0, _hoc["defaul
81
82
  _useState0 = _slicedToArray(_useState9, 2),
82
83
  prevValue = _useState0[0],
83
84
  setPrevValue = _useState0[1];
84
- (0, _react.useEffect)(function () {
85
- if (sliderBehaviorProps.value !== prevValue) {
86
- setUseHintText(false);
87
- setPrevValue(sliderBehaviorProps.value);
88
- }
89
- }, [prevValue, sliderBehaviorProps.value]);
85
+ if (sliderBehaviorProps.value && sliderBehaviorProps.value !== prevValue) {
86
+ setUseHintText(false);
87
+ setPrevValue(sliderBehaviorProps.value);
88
+ }
90
89
  (0, _react.useEffect)(function () {
91
90
  return function () {
92
91
  paused.resume();
@@ -95,19 +94,22 @@ var SliderBehaviorDecorator = exports.SliderBehaviorDecorator = (0, _hoc["defaul
95
94
 
96
95
  var getValueText = (0, _react.useCallback)(function () {
97
96
  var ariaValueText = sliderBehaviorProps['aria-valuetext'],
97
+ colorPicker = sliderBehaviorProps.colorPicker,
98
98
  max = sliderBehaviorProps.max,
99
99
  min = sliderBehaviorProps.min,
100
100
  orientation = sliderBehaviorProps.orientation,
101
101
  _sliderBehaviorProps$ = sliderBehaviorProps.value,
102
102
  value = _sliderBehaviorProps$ === void 0 ? min : _sliderBehaviorProps$;
103
+ var sliderMax = colorPicker ? 360 : max;
104
+ var sliderMin = colorPicker ? 0 : min;
103
105
  var valueText = ariaValueText != null ? ariaValueText : value;
104
106
  var verticalHint = "".concat(new _IString["default"]((0, _$L["default"])('From {startValue} to {lastValue}')).format({
105
- startValue: min,
106
- lastValue: max
107
+ startValue: sliderMin,
108
+ lastValue: sliderMax
107
109
  }), " ").concat(valueText, " ").concat((0, _$L["default"])('change a value with up down button'));
108
110
  var horizontalHint = "".concat(new _IString["default"]((0, _$L["default"])('From {startValue} to {lastValue}')).format({
109
- startValue: min,
110
- lastValue: max
111
+ startValue: sliderMin,
112
+ lastValue: sliderMax
111
113
  }), " ").concat(valueText, " ").concat((0, _$L["default"])('change a value with left right button'));
112
114
  if (useHintText) {
113
115
  return orientation === 'horizontal' ? horizontalHint : verticalHint;
@@ -170,8 +172,8 @@ var SliderBehaviorDecorator = exports.SliderBehaviorDecorator = (0, _hoc["defaul
170
172
  onFocus: handleFocus
171
173
  }));
172
174
  };
173
- SliderBehaviorDecorator.displayName = 'SliderBehaviorDecorator';
174
- SliderBehaviorDecorator.propTypes = {
175
+ _SliderBehaviorDecorator.displayName = 'SliderBehaviorDecorator';
176
+ _SliderBehaviorDecorator.propTypes = {
175
177
  activateOnSelect: _propTypes["default"].bool,
176
178
  'aria-valuetext': _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
177
179
  max: _propTypes["default"].number,
@@ -179,6 +181,6 @@ var SliderBehaviorDecorator = exports.SliderBehaviorDecorator = (0, _hoc["defaul
179
181
  orientation: _propTypes["default"].string,
180
182
  value: _propTypes["default"].number
181
183
  };
182
- return SliderBehaviorDecorator;
184
+ return _SliderBehaviorDecorator;
183
185
  });
184
186
  var _default = exports["default"] = SliderBehaviorDecorator;
@@ -111,6 +111,32 @@ describe('Slider', function () {
111
111
  var expectedValue = '11';
112
112
  expect(slider).toHaveAttribute(expectedAttribute, expectedValue);
113
113
  });
114
+ test('should be pressed when selected', function () {
115
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Slider["default"], {}));
116
+ var slider = _react.screen.getByRole('slider');
117
+
118
+ // Select by key
119
+ _react.fireEvent.keyDown(slider, {
120
+ key: 'Enter',
121
+ code: 'Enter',
122
+ keyCode: 13,
123
+ which: 13
124
+ });
125
+ expect(slider).toHaveClass('pressed');
126
+ _react.fireEvent.keyUp(slider, {
127
+ key: 'Enter',
128
+ code: 'Enter',
129
+ keyCode: 13,
130
+ which: 13
131
+ });
132
+ expect(slider).not.toHaveClass('pressed');
133
+
134
+ // Select by pointer
135
+ _react.fireEvent.mouseDown(slider);
136
+ expect(slider).toHaveClass('pressed');
137
+ _react.fireEvent.mouseUp(slider);
138
+ expect(slider).not.toHaveClass('pressed');
139
+ });
114
140
  test('should activate the slider on enter keyup', function () {
115
141
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Slider["default"], {
116
142
  activateOnSelect: true
@@ -571,4 +597,29 @@ describe('Slider', function () {
571
597
  var tooltip = _react.screen.queryByText('0');
572
598
  expect(tooltip).toBeNull();
573
599
  });
600
+ test('should apply `colorPicker`', function () {
601
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Slider["default"], {
602
+ colorPicker: true
603
+ }));
604
+ var slider = _react.screen.getByRole('slider');
605
+ var expected = 'colorPicker';
606
+ expect(slider).toHaveClass(expected);
607
+ });
608
+ test('should fire `onChange` with `onChange` type when value changed for `colorPicker`', function () {
609
+ var handleChange = jest.fn();
610
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Slider["default"], {
611
+ activateOnSelect: true,
612
+ colorPicker: true,
613
+ defaultValue: 50,
614
+ onChange: handleChange
615
+ }));
616
+ var slider = _react.screen.getByRole('slider');
617
+ activate(slider);
618
+ leftKeyDown(slider);
619
+ var expected = {
620
+ type: 'onChange'
621
+ };
622
+ var actual = handleChange.mock.calls.length && handleChange.mock.calls[0][0];
623
+ expect(actual).toMatchObject(expected);
624
+ });
574
625
  });
package/Slider/utils.js CHANGED
@@ -3,11 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.handleIncrementByWheel = exports.handleIncrement = exports.handleDecrementByWheel = exports.handleDecrement = exports.forwardSpotlightEvents = exports.emitChange = void 0;
6
+ exports.hueGradient = exports.handleIncrementByWheel = exports.handleIncrement = exports.handleDecrementByWheel = exports.handleDecrement = exports.forwardSpotlightEvents = exports.emitChange = void 0;
7
7
  var _handle = require("@enact/core/handle");
8
8
  var _keymap = require("@enact/core/keymap");
9
9
  var _util = require("@enact/core/util");
10
10
  var _utils = require("@enact/ui/Slider/utils");
11
+ var hueGradient = exports.hueGradient = function hueGradient(orientation) {
12
+ return "linear-gradient(".concat(orientation === 'horizontal' ? 'to right' : 'to top', ", \n\thsla(0, 100%, 50%, 1),\n\thsla(10, 100%, 50%, 1),\n\thsla(20, 100%, 50%, 1),\n\thsla(30, 100%, 50%, 1),\n\thsla(40, 100%, 50%, 1),\n\thsla(50, 100%, 50%, 1),\n\thsla(60, 100%, 50%, 1),\n\thsla(70, 100%, 50%, 1),\n\thsla(80, 100%, 50%, 1),\n\thsla(90, 100%, 50%, 1),\n\thsla(100, 100%, 50%, 1),\n\thsla(110, 100%, 50%, 1),\n\thsla(120, 100%, 50%, 1),\n\thsla(130, 100%, 50%, 1),\n\thsla(140, 100%, 50%, 1),\n\thsla(150, 100%, 50%, 1),\n\thsla(160, 100%, 50%, 1),\n\thsla(170, 100%, 50%, 1),\n\thsla(180, 100%, 50%, 1),\n\thsla(190, 100%, 50%, 1),\n\thsla(200, 100%, 50%, 1),\n\thsla(210, 100%, 50%, 1),\n\thsla(220, 100%, 50%, 1),\n\thsla(230, 100%, 50%, 1),\n\thsla(240, 100%, 50%, 1),\n\thsla(250, 100%, 50%, 1),\n\thsla(260, 100%, 50%, 1),\n\thsla(270, 100%, 50%, 1),\n\thsla(280, 100%, 50%, 1),\n\thsla(290, 100%, 50%, 1),\n\thsla(300, 100%, 50%, 1),\n\thsla(310, 100%, 50%, 1),\n\thsla(320, 100%, 50%, 1),\n\thsla(330, 100%, 50%, 1),\n\thsla(340, 100%, 50%, 1),\n\thsla(350, 100%, 50%, 1),\n\thsla(360, 100%, 50%, 1))");
13
+ };
11
14
  var nop = function nop() {};
12
15
  var handleAcceleratedKeyDown = function handleAcceleratedKeyDown(ev, prop, _ref) {
13
16
  var spotlightAccelerator = _ref.current;
@@ -73,17 +76,30 @@ var checkInterval = function checkInterval(ev, _ref0, context) {
73
76
  };
74
77
  var emitChange = exports.emitChange = function emitChange(direction) {
75
78
  return (0, _handle.forwardCustom)('onChange', function (ev, _ref1) {
76
- var knobStep = _ref1.knobStep,
79
+ var colorPicker = _ref1.colorPicker,
80
+ knobStep = _ref1.knobStep,
77
81
  max = _ref1.max,
78
82
  min = _ref1.min,
79
83
  step = _ref1.step,
80
84
  _ref1$value = _ref1.value,
81
85
  value = _ref1$value === void 0 ? min : _ref1$value;
82
- var newValue = (0, _util.clamp)(min, max, value + calcStep(knobStep, step) * direction);
83
- return {
84
- value: newValue,
85
- proportion: (0, _utils.calcProportion)(min, max, newValue)
86
- };
86
+ if (colorPicker) {
87
+ var newValue = (0, _util.clamp)(0, 360, value + calcStep(knobStep, step) * direction);
88
+ return {
89
+ value: newValue,
90
+ proportion: (0, _utils.calcProportion)(min, max, newValue),
91
+ color: {
92
+ hex: (0, _utils.hslToHex)(value),
93
+ hsl: "hsla(".concat(value, ", 100%, 50%, 1)")
94
+ }
95
+ };
96
+ } else {
97
+ var _newValue = (0, _util.clamp)(min, max, value + calcStep(knobStep, step) * direction);
98
+ return {
99
+ value: _newValue,
100
+ proportion: (0, _utils.calcProportion)(min, max, _newValue)
101
+ };
102
+ }
87
103
  });
88
104
  };
89
105
  var isActive = function isActive(ev, props) {
@@ -6,13 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = exports.SpinnerDecorator = exports.SpinnerBase = exports.Spinner = void 0;
7
7
  var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
8
  var _hoc = _interopRequireDefault(require("@enact/core/hoc"));
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _util = require("@enact/core/util");
10
+ var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
11
+ var _Pause = _interopRequireDefault(require("@enact/spotlight/Pause"));
10
12
  var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
13
+ var _Spinner = _interopRequireDefault(require("@enact/ui/Spinner"));
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
15
  var _compose = _interopRequireDefault(require("ramda/src/compose"));
12
16
  var _react = require("react");
13
- var _Pause = _interopRequireDefault(require("@enact/spotlight/Pause"));
14
- var _Spinner = _interopRequireDefault(require("@enact/ui/Spinner"));
15
- var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
16
17
  var _$L = _interopRequireDefault(require("../internal/$L"));
17
18
  var _Marquee = _interopRequireDefault(require("../Marquee"));
18
19
  var _Skinnable = _interopRequireDefault(require("../Skinnable"));
@@ -191,7 +192,8 @@ var SpinnerBase = exports.SpinnerBase = (0, _kind["default"])({
191
192
  * @private
192
193
  */
193
194
  var SpinnerSpotlightDecorator = (0, _hoc["default"])(function (config, Wrapped) {
194
- var SpinnerSpotlight = function SpinnerSpotlight(props) {
195
+ var _SpinnerSpotlight = function SpinnerSpotlight(props) {
196
+ (0, _util.checkPropTypes)(_SpinnerSpotlight, props);
195
197
  var paused = (0, _react.useMemo)(function () {
196
198
  return new _Pause["default"]('Spinner');
197
199
  }, []);
@@ -213,8 +215,8 @@ var SpinnerSpotlightDecorator = (0, _hoc["default"])(function (config, Wrapped)
213
215
  }, [blockClickOn, paused]);
214
216
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread({}, props));
215
217
  };
216
- SpinnerSpotlight.displayName = 'SpinnerSpotlightDecorator';
217
- SpinnerSpotlight.propTypes = /** @lends limestone/Spinner.Spinner.prototype */{
218
+ _SpinnerSpotlight.displayName = 'SpinnerSpotlightDecorator';
219
+ _SpinnerSpotlight.propTypes = /** @lends limestone/Spinner.Spinner.prototype */{
218
220
  /**
219
221
  * Determines how far the click-blocking should extend.
220
222
  *
@@ -227,7 +229,7 @@ var SpinnerSpotlightDecorator = (0, _hoc["default"])(function (config, Wrapped)
227
229
  */
228
230
  blockClickOn: _propTypes["default"].oneOf(['screen', 'container', null])
229
231
  };
230
- return SpinnerSpotlight;
232
+ return _SpinnerSpotlight;
231
233
  });
232
234
 
233
235
  /**
@@ -5,6 +5,9 @@
5
5
  font-size: var(--primitive-font-size-48);
6
6
  font-weight: var(--primitive-font-weight-semibold);
7
7
  }
8
+ .steps .step.numbers:global(.largeText) {
9
+ font-size: var(--primitive-font-size-58);
10
+ }
8
11
  .steps .step.highlightCurrentOnly.future {
9
12
  opacity: 1;
10
13
  }
@@ -86,7 +86,7 @@ Motion Mixins
86
86
  position: relative;
87
87
  }
88
88
  .switch .client {
89
- border-radius: var(--primitive-radius-30);
89
+ border-radius: var(--primitive-radius-999);
90
90
  width: 2.5rem;
91
91
  height: 1.25rem;
92
92
  position: relative;
@@ -106,9 +106,23 @@ Motion Mixins
106
106
  top: 0.125rem;
107
107
  left: 0.125rem;
108
108
  }
109
+ .switch:global(.largeText) .client {
110
+ width: 3rem;
111
+ height: 1.5rem;
112
+ }
113
+ .switch:global(.largeText) .icon {
114
+ height: 1.1875rem;
115
+ width: 1.1875rem;
116
+ line-height: 1.5rem;
117
+ top: 0.15625rem;
118
+ left: 0.15625rem;
119
+ }
109
120
  .switch.selected .icon {
110
121
  left: 1.375rem;
111
122
  }
123
+ .switch.selected:global(.largeText) .icon {
124
+ left: 1.65625rem;
125
+ }
112
126
  .switch.animated .client {
113
127
  transition: background-color 200ms;
114
128
  }
@@ -5,13 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getNavigableFilter = exports["default"] = exports.RefocusDecorator = void 0;
7
7
  exports.getTabsSpotlightId = getTabsSpotlightId;
8
+ var _util = require("@enact/core/util");
8
9
  var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
9
10
  var _IdProvider = require("@enact/ui/internal/IdProvider");
10
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
12
  var _react = require("react");
12
13
  var _TabGroupModule = _interopRequireDefault(require("./TabGroup.module.css"));
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
- var _excluded = ["blockCollapseOnPortrait", "blockExpandOnLandscape", "collapsed", "index", "onCollapse", "onExpand", "onTabAnimationEnd", "orientation", "spotlightId"];
15
+ var _excluded = ["blockCollapseOnPortrait", "blockExpandOnLandscape", "collapsed", "index", "onCollapse", "onExpand", "onTabAnimationEnd", "orientation"];
15
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
16
17
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
18
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -60,17 +61,18 @@ function useScreenOrientation() {
60
61
  }
61
62
  var RefocusDecorator = exports.RefocusDecorator = function RefocusDecorator(Wrapped) {
62
63
  // eslint-disable-next-line no-shadow
63
- function RefocusDecorator(_ref) {
64
- var blockCollapseOnPortrait = _ref.blockCollapseOnPortrait,
65
- blockExpandOnLandscape = _ref.blockExpandOnLandscape,
66
- collapsed = _ref.collapsed,
67
- index = _ref.index,
68
- onCollapse = _ref.onCollapse,
69
- onExpand = _ref.onExpand,
70
- onTabAnimationEnd = _ref.onTabAnimationEnd,
71
- orientation = _ref.orientation,
72
- spotlightId = _ref.spotlightId,
73
- rest = _objectWithoutProperties(_ref, _excluded);
64
+ function RefocusDecorator(props) {
65
+ (0, _util.checkPropTypes)(RefocusDecorator, props);
66
+ var blockCollapseOnPortrait = props.blockCollapseOnPortrait,
67
+ blockExpandOnLandscape = props.blockExpandOnLandscape,
68
+ collapsed = props.collapsed,
69
+ index = props.index,
70
+ onCollapse = props.onCollapse,
71
+ onExpand = props.onExpand,
72
+ onTabAnimationEnd = props.onTabAnimationEnd,
73
+ orientation = props.orientation,
74
+ rest = _objectWithoutProperties(props, _excluded);
75
+ var spotlightId = props.spotlightId;
74
76
  var _useId = (0, _IdProvider.useId)({
75
77
  prefix: 'lime-tablayout-'
76
78
  }),
@@ -49,7 +49,7 @@
49
49
  margin-right: 0;
50
50
  }
51
51
  .tab.vertical.button:global(.largeText) {
52
- font-size: var(--primitive-font-size-60);
52
+ font-size: var(--primitive-font-size-72);
53
53
  min-width: 2.75rem;
54
54
  }
55
55
  .tab.vertical .client {
@@ -181,7 +181,7 @@ describe('TabGroup specs', function () {
181
181
  expect(handleFocusTab).toHaveBeenCalled();
182
182
  });
183
183
  test('should set the size for all tabs in horizontal orientation', function () {
184
- var size = 456;
184
+ var size = 'small';
185
185
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_TabGroup["default"], {
186
186
  orientation: "horizontal",
187
187
  size: size,
@@ -35,14 +35,15 @@ var accessibilityDecoratorDefaultProps = {
35
35
  */
36
36
  var AccessibilityDecorator = exports.AccessibilityDecorator = (0, _hoc["default"])(function (config, Wrapped) {
37
37
  // eslint-disable-next-line no-shadow
38
- var AccessibilityDecorator = function AccessibilityDecorator(props) {
39
- var _setDefaultProps = (0, _util.setDefaultProps)(props, accessibilityDecoratorDefaultProps),
40
- className = _setDefaultProps.className,
41
- focusRing = _setDefaultProps.focusRing,
42
- highContrast = _setDefaultProps.highContrast,
43
- skinVariants = _setDefaultProps.skinVariants,
44
- textSize = _setDefaultProps.textSize,
45
- rest = _objectWithoutProperties(_setDefaultProps, _excluded);
38
+ var _AccessibilityDecorator = function AccessibilityDecorator(props) {
39
+ var accessibilityDecoratorProps = (0, _util.setDefaultProps)(props, accessibilityDecoratorDefaultProps);
40
+ (0, _util.checkPropTypes)(_AccessibilityDecorator, accessibilityDecoratorProps);
41
+ var className = accessibilityDecoratorProps.className,
42
+ focusRing = accessibilityDecoratorProps.focusRing,
43
+ highContrast = accessibilityDecoratorProps.highContrast,
44
+ skinVariants = accessibilityDecoratorProps.skinVariants,
45
+ textSize = accessibilityDecoratorProps.textSize,
46
+ rest = _objectWithoutProperties(accessibilityDecoratorProps, _excluded);
46
47
  var accessibilityClassName = highContrast ? "enact-a11y-high-contrast enact-text-".concat(textSize) : "enact-text-".concat(textSize);
47
48
  accessibilityClassName = focusRing ? "enact-a11y-focus-ring ".concat(accessibilityClassName) : "".concat(accessibilityClassName);
48
49
  var combinedClassName = className ? "".concat(className, " ").concat(accessibilityClassName) : accessibilityClassName;
@@ -75,8 +76,8 @@ var AccessibilityDecorator = exports.AccessibilityDecorator = (0, _hoc["default"
75
76
  }, rest))
76
77
  });
77
78
  };
78
- AccessibilityDecorator.displayName = 'AccessibilityDecorator';
79
- AccessibilityDecorator.propTypes = {
79
+ _AccessibilityDecorator.displayName = 'AccessibilityDecorator';
80
+ _AccessibilityDecorator.propTypes = {
80
81
  /** @lends limestone/ThemeDecorator.AccessibilityDecorator.prototype */
81
82
  /**
82
83
  * Enables additional features to help users visually differentiate components.
@@ -146,6 +147,6 @@ var AccessibilityDecorator = exports.AccessibilityDecorator = (0, _hoc["default"
146
147
  */
147
148
  textSize: _propTypes["default"].oneOf(['normal', 'large'])
148
149
  };
149
- return AccessibilityDecorator;
150
+ return _AccessibilityDecorator;
150
151
  });
151
152
  var _default = exports["default"] = AccessibilityDecorator;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = exports.I18nFontDecorator = void 0;
7
7
  var _hoc = _interopRequireDefault(require("@enact/core/hoc"));
8
+ var _util = require("@enact/core/util");
8
9
  var _i18n = _interopRequireDefault(require("@enact/i18n"));
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
11
  var _react = require("react");
@@ -17,17 +18,18 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
17
18
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
19
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
20
  var I18nFontDecorator = exports.I18nFontDecorator = (0, _hoc["default"])(function (config, Wrapped) {
20
- var I18nDecorator = function I18nDecorator(props) {
21
+ var _I18nDecorator = function I18nDecorator(props) {
22
+ (0, _util.checkPropTypes)(_I18nDecorator, props);
21
23
  var ilibLocale = _i18n["default"].getLocale();
22
24
  (0, _react.useEffect)(function () {
23
25
  (0, _fontGenerator.fontOverrideGenerator)(props.locale || ilibLocale);
24
26
  }, [ilibLocale, props.locale]);
25
27
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread({}, props));
26
28
  };
27
- I18nDecorator.displayName = 'I18nFontDecorator';
28
- I18nDecorator.propTypes = {
29
+ _I18nDecorator.displayName = 'I18nFontDecorator';
30
+ _I18nDecorator.propTypes = {
29
31
  locale: _propTypes["default"].string
30
32
  };
31
- return I18nDecorator;
33
+ return _I18nDecorator;
32
34
  });
33
35
  var _default = exports["default"] = I18nFontDecorator;
@@ -77,6 +77,13 @@ export interface ThemeDecoratorConfig extends Object {
77
77
  * Disables use of full screen.
78
78
  */
79
79
  disableFullscreen?: boolean;
80
+ /**
81
+ * A CSS class name to apply globally to every spottable component when it receives spotlight focus.
82
+ *
83
+ * This is the declarative equivalent of calling `setFocusEffectClass` imperatively. It acts as
84
+ an app-wide default.
85
+ */
86
+ focusEffectClass?: string;
80
87
  /**
81
88
  * Enables a floating layer for popup components.
82
89
  *