@enact/limestone 1.3.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/.github/workflows/ci-branch.yml +21 -0
  2. package/.github/workflows/ci-pull-request.yml +16 -0
  3. package/.github/workflows/ci-reusable.yml +73 -0
  4. package/ActionGuide/ActionGuide.d.ts +5 -4
  5. package/ActionGuide/ActionGuide.module.css +1 -1
  6. package/Alert/Alert.d.ts +13 -2
  7. package/Alert/Alert.js +39 -5
  8. package/Alert/Alert.module.css +48 -1
  9. package/Alert/tests/Alert-specs.js +91 -0
  10. package/BodyText/BodyText.d.ts +5 -4
  11. package/BodyText/BodyText.module.css +7 -7
  12. package/Button/Button.d.ts +17 -12
  13. package/Button/Button.js +1 -1
  14. package/Button/Button.module.css +195 -268
  15. package/Button/tests/Button-specs.js +26 -0
  16. package/CHANGELOG.md +254 -0
  17. package/Card/Card.d.ts +40 -12
  18. package/Card/Card.js +164 -28
  19. package/Card/Card.module.css +277 -58
  20. package/Card/tests/Card-specs.js +67 -3
  21. package/Checkbox/Checkbox.d.ts +8 -7
  22. package/Checkbox/Checkbox.js +3 -1
  23. package/Checkbox/Checkbox.module.css +213 -120
  24. package/Checkbox/tests/Checkbox-specs.js +1 -1
  25. package/CheckboxItem/CheckboxItem.d.ts +22 -7
  26. package/CheckboxItem/CheckboxItem.js +71 -4
  27. package/Chips/Chip.js +72 -13
  28. package/Chips/Chip.module.css +3 -3
  29. package/Chips/Chips.js +37 -17
  30. package/Chips/Chips.module.css +1 -1
  31. package/Chips/tests/Chip-specs.js +43 -13
  32. package/Chips/tests/Chips-specs.js +31 -21
  33. package/ColorPicker/ColorPicker.js +27 -25
  34. package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +4 -5
  35. package/ContextualPopupDecorator/ContextualPopup.module.css +34 -34
  36. package/ContextualPopupDecorator/ContextualPopupDecorator.js +567 -549
  37. package/DatePicker/DatePicker.d.ts +4 -5
  38. package/DayPicker/DayPicker.d.ts +8 -7
  39. package/DayPicker/DaySelectorDecorator.js +12 -7
  40. package/Dropdown/Dropdown.d.ts +11 -13
  41. package/Dropdown/Dropdown.module.css +13 -9
  42. package/Dropdown/DropdownList.js +80 -54
  43. package/FixedPopupPanels/FixedPopupPanels.d.ts +4 -2
  44. package/FixedPopupPanels/FixedPopupPanels.module.css +18 -18
  45. package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +23 -23
  46. package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
  47. package/FormCheckboxItem/FormCheckboxItem.d.ts +5 -4
  48. package/Heading/Heading.d.ts +9 -8
  49. package/Heading/Heading.js +2 -2
  50. package/Heading/Heading.module.css +5 -5
  51. package/Icon/Icon.d.ts +15 -4
  52. package/Icon/Icon.js +49 -2
  53. package/Icon/Icon.module.css +1 -1
  54. package/Icon/IconList.js +27 -1
  55. package/IconItem/IconItem.d.ts +13 -12
  56. package/IconItem/IconItem.js +15 -0
  57. package/IconItem/IconItem.module.css +107 -1
  58. package/IconItem/tests/IconItem-specs.js +30 -1
  59. package/Image/Image.d.ts +5 -4
  60. package/Image/Image.js +6 -4
  61. package/ImageItem/ImageItem.d.ts +11 -10
  62. package/ImageItem/ImageItem.js +37 -31
  63. package/ImageItem/ImageItem.module.css +30 -30
  64. package/ImageItem/tests/ImageItem-specs.js +3 -10
  65. package/Input/Input.js +21 -3
  66. package/Input/Input.module.css +37 -8
  67. package/Input/InputField.js +79 -24
  68. package/Input/InputField.module.css +273 -41
  69. package/Input/InputFieldDecoratorIcon.js +1 -0
  70. package/Input/InputFieldSpotlightDecorator.js +257 -228
  71. package/Input/index.d.ts +120 -111
  72. package/Input/tests/Input-specs.js +26 -0
  73. package/Input/tests/InputField-specs.js +170 -3
  74. package/Input/tests/InputPopup-specs.js +1 -1
  75. package/Item/Item.d.ts +16 -9
  76. package/Item/Item.js +20 -2
  77. package/Item/Item.module.css +1 -1
  78. package/KeyGuide/KeyGuide.d.ts +8 -7
  79. package/KeyGuide/KeyGuide.js +29 -27
  80. package/KeyGuide/KeyGuide.module.css +25 -1
  81. package/Marquee/Marquee.d.ts +2 -4
  82. package/MediaOverlay/MediaOverlay.d.ts +12 -11
  83. package/MediaOverlay/MediaOverlay.js +43 -21
  84. package/MediaOverlay/MediaOverlay.module.css +114 -15
  85. package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
  86. package/MediaPlayer/MediaControls.js +195 -13
  87. package/MediaPlayer/MediaControls.module.css +3 -2
  88. package/MediaPlayer/MediaSlider.module.css +7 -20
  89. package/MediaPlayer/index.d.ts +59 -7
  90. package/MediaPlayer/tests/util-specs.js +4 -1
  91. package/PageViews/PageViews.js +232 -82
  92. package/PageViews/PageViews.module.css +3 -0
  93. package/PageViews/PageViewsRouter.js +100 -42
  94. package/PageViews/tests/PageViews-specs.js +171 -0
  95. package/Panels/Header.js +54 -34
  96. package/Panels/Header.module.css +83 -31
  97. package/Panels/Panel.module.css +1 -1
  98. package/Panels/index.d.ts +7 -8
  99. package/Picker/Picker.d.ts +4 -5
  100. package/Picker/Picker.module.css +2 -2
  101. package/Popup/Popup.js +245 -242
  102. package/Popup/Popup.module.css +24 -24
  103. package/PopupTabLayout/PopupTabLayout.d.ts +5 -7
  104. package/PopupTabLayout/PopupTabLayout.js +26 -18
  105. package/PopupTabLayout/PopupTabLayout.module.css +53 -16
  106. package/PopupTabLayout/PopupTabLayoutStateContext.js +8 -0
  107. package/ProgressBar/ProgressBar.d.ts +5 -4
  108. package/ProgressBar/ProgressBarTooltip.module.css +12 -12
  109. package/ProgressButton/ProgressButton.d.ts +4 -5
  110. package/QuickGuidePanels/QuickGuidePanels.module.css +2 -2
  111. package/RadioItem/RadioItem.d.ts +18 -5
  112. package/RadioItem/RadioItem.js +69 -2
  113. package/RadioItem/RadioItem.module.css +36 -36
  114. package/RangePicker/RangePicker.module.css +2 -2
  115. package/Scroller/EditableWrapper.js +28 -18
  116. package/Scroller/Scroller.d.ts +20 -16
  117. package/Scroller/Scroller.js +20 -13
  118. package/Scroller/Scroller.module.css +4 -4
  119. package/Scroller/useThemeScroller.js +3 -3
  120. package/Slider/Slider.d.ts +20 -14
  121. package/Slider/Slider.js +71 -14
  122. package/Slider/Slider.module.css +464 -91
  123. package/Slider/SliderBehaviorDecorator.js +16 -14
  124. package/Slider/tests/Slider-specs.js +53 -1
  125. package/Slider/utils.js +23 -7
  126. package/Spinner/Spinner.d.ts +5 -4
  127. package/Spinner/Spinner.js +10 -8
  128. package/Spinner/Spinner.module.css +9 -9
  129. package/Steps/Steps.d.ts +5 -4
  130. package/Steps/Steps.js +9 -5
  131. package/Switch/Switch.d.ts +8 -7
  132. package/Switch/Switch.module.css +100 -13
  133. package/SwitchItem/SwitchItem.d.ts +9 -6
  134. package/TabLayout/RefocusDecorator.js +26 -18
  135. package/TabLayout/TabGroup.js +3 -2
  136. package/TabLayout/TabGroup.module.css +2 -2
  137. package/TabLayout/TabLayout.d.ts +6 -0
  138. package/TabLayout/TabLayout.js +11 -1
  139. package/TabLayout/TabLayout.module.css +18 -0
  140. package/TabLayout/tests/TabGroup-specs.js +1 -1
  141. package/TabLayout/tests/TabLayout-specs.js +52 -0
  142. package/ThemeDecorator/AccessibilityDecorator.js +12 -11
  143. package/ThemeDecorator/I18nFontDecorator.js +6 -4
  144. package/ThemeDecorator/ThemeDecorator.d.ts +16 -10
  145. package/ThemeDecorator/ThemeDecorator.js +24 -9
  146. package/ThemeDecorator/fontGenerator.js +1 -1
  147. package/ThemeDecorator/screenTypes.json +1 -0
  148. package/TimePicker/TimePicker.module.css +1 -1
  149. package/TimePicker/TimePickerBase.js +5 -3
  150. package/TooltipDecorator/Tooltip.module.css +1 -2
  151. package/TooltipDecorator/TooltipDecorator.js +12 -7
  152. package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
  153. package/TooltipDecorator/tests/util-specs.js +12 -0
  154. package/TooltipDecorator/useTooltip.js +1 -1
  155. package/TooltipDecorator/util.js +18 -11
  156. package/VideoPlayer/Feedback.js +3 -0
  157. package/VideoPlayer/Feedback.module.css +5 -9
  158. package/VideoPlayer/FeedbackIcons.js +1 -1
  159. package/VideoPlayer/FeedbackTooltip.module.css +55 -11
  160. package/VideoPlayer/VideoPlayer.d.ts +44 -18
  161. package/VideoPlayer/VideoPlayer.js +153 -47
  162. package/VideoPlayer/VideoPlayer.module.css +28 -11
  163. package/VirtualList/VirtualList.d.ts +9 -2
  164. package/VirtualList/VirtualList.js +51 -24
  165. package/VirtualList/tests/VirtualGridList-translate-specs.js +3 -0
  166. package/VirtualList/tests/VirtualList-specs.js +28 -1
  167. package/VirtualList/tests/VirtualList-translate-specs.js +4 -1
  168. package/VirtualList/useSpotlight.js +1 -1
  169. package/WizardPanels/WizardPanels.module.css +2 -2
  170. package/WizardPanels/index.d.ts +4 -2
  171. package/fonts/Limestone_Icons.ttf +0 -0
  172. package/internal/$L/$L.js +3 -3
  173. package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
  174. package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
  175. package/internal/DateComponentPicker/DateComponentPicker.module.css +2 -2
  176. package/internal/DateTime/DateTime.module.css +1 -0
  177. package/internal/DateTime/DateTimeDecorator.js +5 -4
  178. package/internal/Panels/PanelsRouter.js +48 -31
  179. package/internal/Panels/useAutoFocus.js +10 -6
  180. package/internal/Panels/useFocusOnTransition.js +4 -3
  181. package/internal/Picker/Picker.js +7 -5
  182. package/internal/Picker/Picker.module.css +2 -2
  183. package/internal/Picker/SpottablePicker.js +15 -13
  184. package/internal/SharedStateDecorator/SharedStateDecorator.js +78 -99
  185. package/internal/validators/validators.js +21 -2
  186. package/package.json +18 -15
  187. package/styles/colors-highcontrast.less +9 -1
  188. package/styles/colors.less +12 -7
  189. package/styles/motion-mixins.less +66 -0
  190. package/styles/motions.less +78 -0
  191. package/styles/variables.less +176 -150
  192. package/useScroll/HoverToScroll.js +23 -17
  193. package/useScroll/Scrollbar.js +14 -10
  194. package/useScroll/ScrollbarPlaceholder.js +3 -5
  195. package/useScroll/ScrollbarTrack.js +7 -5
  196. package/useScroll/ScrollbarTrack.module.css +8 -8
  197. package/useScroll/useEvent.js +14 -3
  198. package/useScroll/useScroll.js +12 -2
  199. package/useScroll/useScroll.module.css +6 -6
  200. package/.travis.yml +0 -40
@@ -2,14 +2,14 @@
2
2
  height: 100%;
3
3
  max-height: 100%;
4
4
  max-width: 100%;
5
- border-radius: 0.5rem;
5
+ border-radius: var(--primitive-radius-24);
6
6
  }
7
7
  .popup .body {
8
8
  font-family: "Limestone";
9
9
  font-weight: normal;
10
10
  font-size: var(--primitive-font-size-60);
11
11
  line-height: 1.4em;
12
- padding: 1rem 1.5rem;
12
+ padding: var(--primitive-spacing-48) var(--primitive-spacing-72);
13
13
  box-sizing: border-box;
14
14
  pointer-events: auto;
15
15
  }
@@ -30,7 +30,7 @@
30
30
  line-height: 1.7em;
31
31
  }
32
32
  :global(.enact-locale-right-to-left) .popup .body {
33
- padding: 1rem 1.5rem 1rem 1.5rem;
33
+ padding: var(--primitive-spacing-48) var(--primitive-spacing-72) var(--primitive-spacing-48) var(--primitive-spacing-72);
34
34
  }
35
35
  :global(.enact-locale-ja) .popup .body {
36
36
  line-break: strict;
@@ -44,26 +44,26 @@
44
44
  height: 100%;
45
45
  }
46
46
  .popup.top {
47
- margin: 3.125rem 2.5rem 1.625rem 2.5rem;
47
+ margin: 3.125rem var(--primitive-spacing-120) 1.625rem var(--primitive-spacing-120);
48
48
  }
49
49
  .popup.top.left,
50
50
  .popup.top.right {
51
- margin: 1.25rem;
51
+ margin: var(--primitive-spacing-60);
52
52
  }
53
53
  .popup.right {
54
- margin: 2.5rem 1.25rem 2.5rem 0.75rem;
55
- max-height: calc(100% - 5rem );
54
+ margin: var(--primitive-spacing-120) var(--primitive-spacing-60) var(--primitive-spacing-120) var(--primitive-spacing-36);
55
+ max-height: calc(100% - (var(--primitive-spacing-120) + var(--primitive-spacing-120)));
56
56
  }
57
57
  .popup.bottom {
58
- margin: 0 2.5rem 3.125rem 2.5rem;
58
+ margin: 0 var(--primitive-spacing-120) 3.125rem var(--primitive-spacing-120);
59
59
  }
60
60
  .popup.bottom.left,
61
61
  .popup.bottom.right {
62
- margin: 1.25rem;
62
+ margin: var(--primitive-spacing-60);
63
63
  }
64
64
  .popup.left {
65
- margin: 2.5rem 0.75rem 2.5rem 1.25rem;
66
- max-height: calc(100% - 5rem );
65
+ margin: var(--primitive-spacing-120) var(--primitive-spacing-36) var(--primitive-spacing-120) var(--primitive-spacing-60);
66
+ max-height: calc(100% - (var(--primitive-spacing-120) + var(--primitive-spacing-120)));
67
67
  }
68
68
  .popup.center {
69
69
  position: absolute;
@@ -85,17 +85,17 @@
85
85
  .popup:global(.neutral).outline {
86
86
  outline-color: var(--semantic-color-stroke-overlay-default);
87
87
  outline-style: solid;
88
- outline-width: 0.021rem;
89
- outline-offset: -0.021rem;
88
+ outline-width: 0.063rem;
89
+ outline-offset: -0.063rem;
90
90
  }
91
91
  :global(.enact-a11y-high-contrast) .popup:global(.neutral):global(.highContrast) {
92
92
  background-color: var(--semantic-color-background-overlay-default);
93
93
  }
94
94
  :global(.enact-a11y-high-contrast) .popup:global(.neutral):global(.highContrast).outline {
95
- outline-color: #7c848b;
95
+ outline-color: var(--semantic-color-stroke-main);
96
96
  outline-style: solid;
97
- outline-width: 0.021rem;
98
- outline-offset: -0.021rem;
97
+ outline-width: 0.063rem;
98
+ outline-offset: -0.063rem;
99
99
  }
100
100
  .popup:global(.light) {
101
101
  background-color: color(from var(--semantic-color-background-overlay-default) srgb r g b / 0.9);
@@ -103,8 +103,8 @@
103
103
  .popup:global(.light).outline {
104
104
  outline-color: var(--semantic-color-stroke-overlay-default);
105
105
  outline-style: solid;
106
- outline-width: 0.021rem;
107
- outline-offset: -0.021rem;
106
+ outline-width: 0.063rem;
107
+ outline-offset: -0.063rem;
108
108
  }
109
109
  .popup:global(.game) {
110
110
  --semantic-color-surface-default: #2d224c;
@@ -115,8 +115,8 @@
115
115
  .popup:global(.game).outline {
116
116
  outline-color: var(--semantic-color-stroke-overlay-default);
117
117
  outline-style: solid;
118
- outline-width: 0.021rem;
119
- outline-offset: -0.021rem;
118
+ outline-width: 0.063rem;
119
+ outline-offset: -0.063rem;
120
120
  }
121
121
  :global(.green) .popup:global(.game) {
122
122
  --semantic-color-surface-default: #1F2C24;
@@ -126,8 +126,8 @@
126
126
  :global(.green) .popup:global(.game).outline {
127
127
  outline-color: var(--semantic-color-stroke-overlay-default);
128
128
  outline-style: solid;
129
- outline-width: 0.021rem;
130
- outline-offset: -0.021rem;
129
+ outline-width: 0.063rem;
130
+ outline-offset: -0.063rem;
131
131
  }
132
132
  :global(.orange) .popup:global(.game) {
133
133
  --semantic-color-surface-default: #422923;
@@ -137,8 +137,8 @@
137
137
  :global(.orange) .popup:global(.game).outline {
138
138
  outline-color: var(--semantic-color-stroke-overlay-default);
139
139
  outline-style: solid;
140
- outline-width: 0.021rem;
141
- outline-offset: -0.021rem;
140
+ outline-width: 0.063rem;
141
+ outline-offset: -0.063rem;
142
142
  }
143
143
  .popupTransitionContainer {
144
144
  position: absolute;
@@ -11,11 +11,10 @@ import { TabLayoutProps as limestone_TabLayout_TabLayoutProps } from "limestone/
11
11
  type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
12
12
  type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
13
13
 
14
- export interface PopupTabLayoutBaseProps
15
- extends Merge<
16
- limestone_Popup_PopupProps,
17
- limestone_TabLayout_TabLayoutProps
18
- > {
14
+ export interface PopupTabLayoutBaseProps extends Merge<
15
+ limestone_Popup_PopupProps,
16
+ limestone_TabLayout_TabLayoutProps
17
+ > {
19
18
  /**
20
19
  * Collection of to render.
21
20
  */
@@ -99,8 +98,7 @@ export class PopupTabLayoutBase extends React.Component<
99
98
  Merge<React.HTMLProps<HTMLElement>, PopupTabLayoutBaseProps>
100
99
  > {}
101
100
 
102
- export interface PopupTabLayoutDecoratorProps
103
- extends limestone_Skinnable_SkinnableProps {}
101
+ export interface PopupTabLayoutDecoratorProps extends limestone_Skinnable_SkinnableProps {}
104
102
  export function PopupTabLayoutDecorator<P>(
105
103
  Component: React.ComponentType<P> | string,
106
104
  ): React.ComponentType<P & PopupTabLayoutDecoratorProps>;
@@ -30,6 +30,7 @@ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
30
30
  var _Panels = _interopRequireWildcard(require("../Panels"));
31
31
  var _TabLayout = _interopRequireWildcard(require("../TabLayout"));
32
32
  var _Popup = _interopRequireDefault(require("../Popup"));
33
+ var _PopupTabLayoutStateContext = require("./PopupTabLayoutStateContext");
33
34
  var _PopupTabLayoutModule = _interopRequireDefault(require("./PopupTabLayout.module.css"));
34
35
  var _jsxRuntime = require("react/jsx-runtime");
35
36
  var _excluded = ["children", "css", "optimized", "PopupComponent"],
@@ -327,15 +328,20 @@ var PopupTabLayoutBase = exports.PopupTabLayoutBase = (0, _kind["default"])({
327
328
  delete popupProps.onShow;
328
329
  delete popupProps.scrimType;
329
330
  }
330
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(PopupComponent, _objectSpread(_objectSpread({}, popupProps), {}, {
331
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabLayout["default"], _objectSpread(_objectSpread({}, rest), {}, {
332
- css: css,
333
- align: "start",
334
- anchorTo: "left",
335
- type: "popup",
336
- children: children
331
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayoutStateContext.PopupTabLayoutStateContext, {
332
+ value: {
333
+ type: 'popupTabLayout'
334
+ },
335
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PopupComponent, _objectSpread(_objectSpread({}, popupProps), {}, {
336
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabLayout["default"], _objectSpread(_objectSpread({}, rest), {}, {
337
+ css: css,
338
+ align: "start",
339
+ anchorTo: "left",
340
+ type: "popup",
341
+ children: children
342
+ }))
337
343
  }))
338
- }));
344
+ });
339
345
  }
340
346
  });
341
347
  var OptimizedFocusDecorator = (0, _hoc["default"])(function (config, Wrapped) {
@@ -385,7 +391,7 @@ var OptimizedFocusDecorator = (0, _hoc["default"])(function (config, Wrapped) {
385
391
  }
386
392
  }
387
393
  }]);
388
- }(_react.Component), _Class.displayName = 'OptimizedFocusDecorator', _Class.propTypes = /** @lends sandstone/PopupTabLayout.OptimizedFocusDecorator.prototype */{
394
+ }(_react.Component), _Class.displayName = 'OptimizedFocusDecorator', _Class.propTypes = /** @lends limestone/PopupTabLayout.OptimizedFocusDecorator.prototype */{
389
395
  /**
390
396
  * Controls the visibility of the PopupTabLayout.
391
397
  *
@@ -521,9 +527,10 @@ var tabPanelsHandlers = {
521
527
  * @ui
522
528
  * @public
523
529
  */
524
- var TabPanelsBase = exports.TabPanelsBase = function TabPanelsBase(_ref9) {
525
- var rtl = _ref9.rtl,
526
- rest = _objectWithoutProperties(_ref9, _excluded2);
530
+ var _TabPanelsBase = exports.TabPanelsBase = function TabPanelsBase(props) {
531
+ (0, _util.checkPropTypes)(_TabPanelsBase, props);
532
+ var rtl = props.rtl,
533
+ rest = _objectWithoutProperties(props, _excluded2);
527
534
  var onTransition = (0, _react.use)(_TabLayout.TabLayoutContext);
528
535
  var handlers = (0, _useHandlers["default"])(tabPanelsHandlers, _objectSpread({
529
536
  rtl: rtl
@@ -536,7 +543,7 @@ var TabPanelsBase = exports.TabPanelsBase = function TabPanelsBase(_ref9) {
536
543
  css: _PopupTabLayoutModule["default"]
537
544
  }, handlers));
538
545
  };
539
- TabPanelsBase.propTypes = {
546
+ _TabPanelsBase.propTypes = {
540
547
  rtl: _propTypes["default"].bool
541
548
  };
542
549
 
@@ -551,7 +558,7 @@ TabPanelsBase.propTypes = {
551
558
  */
552
559
  var TabPanels = exports.TabPanels = (0, _I18nDecorator.I18nContextDecorator)({
553
560
  rtlProp: 'rtl'
554
- }, TabPanelsBase);
561
+ }, _TabPanelsBase);
555
562
 
556
563
  /**
557
564
  * Omits the close button.
@@ -579,9 +586,10 @@ var TabPanels = exports.TabPanels = (0, _I18nDecorator.I18nContextDecorator)({
579
586
  * @ui
580
587
  * @public
581
588
  */
582
- var TabPanel = exports.TabPanel = function TabPanel(_ref0) {
583
- var spotlightId = _ref0.spotlightId,
584
- rest = _objectWithoutProperties(_ref0, _excluded3);
589
+ var _TabPanel = exports.TabPanel = function TabPanel(props) {
590
+ (0, _util.checkPropTypes)(_TabPanel, props);
591
+ var spotlightId = props.spotlightId,
592
+ rest = _objectWithoutProperties(props, _excluded3);
585
593
  (0, _react.useEffect)(function () {
586
594
  _spotlight["default"].set(spotlightId, {
587
595
  partition: true
@@ -593,7 +601,7 @@ var TabPanel = exports.TabPanel = function TabPanel(_ref0) {
593
601
  spotlightId: spotlightId
594
602
  }));
595
603
  };
596
- TabPanel.propTypes = {
604
+ _TabPanel.propTypes = {
597
605
  /**
598
606
  * The container id for {@link spotlight/SpotlightContainerDecorator/#SpotlightContainerDecorator.spotlightId|Spotlight container}.
599
607
  *
@@ -1,7 +1,7 @@
1
1
  .popupTabLayout.popup,
2
2
  .popupTabLayout.optimized {
3
- margin: 1.25rem auto 2.75rem 1.25rem;
4
- max-height: calc(100vh - 4rem );
3
+ margin: var(--primitive-spacing-60) auto var(--primitive-spacing-132) var(--primitive-spacing-60);
4
+ max-height: calc(100vh - (var(--primitive-spacing-60) + var(--primitive-spacing-132)));
5
5
  }
6
6
  .popupTabLayout .tabLayout .tabs {
7
7
  bottom: auto;
@@ -54,9 +54,15 @@
54
54
  background-color: var(--semantic-color-background-overlay-default);
55
55
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
56
56
  outline-color: var(--semantic-color-stroke-overlay-default);
57
- outline-width: 0.021rem;
57
+ outline-width: 0.063rem;
58
58
  outline-style: solid;
59
- outline-offset: -0.021rem;
59
+ outline-offset: -0.063rem;
60
+ }
61
+ .popupTabLayout:global(.neutral) .tabGroup {
62
+ background-color: var(--semantic-color-background-overlay-default);
63
+ }
64
+ .popupTabLayout:global(.neutral) .tabGroup .tab .icon {
65
+ --icon-size: 2rem;
60
66
  }
61
67
  :global(.noAnimation) .popupTabLayout:global(.neutral) .tabs,
62
68
  :global(.noAnimation) .popupTabLayout:global(.neutral) .content .panels::before {
@@ -75,10 +81,16 @@
75
81
  :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
76
82
  background-color: var(--semantic-color-background-overlay-default);
77
83
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
78
- outline-color: #7c848b;
79
- outline-width: 0.021rem;
84
+ outline-color: var(--semantic-color-stroke-main);
85
+ outline-width: 0.063rem;
80
86
  outline-style: solid;
81
- outline-offset: -0.021rem;
87
+ outline-offset: -0.063rem;
88
+ }
89
+ :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabGroup {
90
+ background-color: var(--semantic-color-background-overlay-default);
91
+ }
92
+ :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabGroup .tab .icon {
93
+ --icon-size: 2rem;
82
94
  }
83
95
  :global(.noAnimation) :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabs,
84
96
  :global(.noAnimation) :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
@@ -98,9 +110,15 @@
98
110
  background-color: var(--semantic-color-background-overlay-default);
99
111
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
100
112
  outline-color: var(--semantic-color-stroke-overlay-default);
101
- outline-width: 0.021rem;
113
+ outline-width: 0.063rem;
102
114
  outline-style: solid;
103
- outline-offset: -0.021rem;
115
+ outline-offset: -0.063rem;
116
+ }
117
+ .popupTabLayout:global(.light) .tabGroup {
118
+ background-color: var(--semantic-color-background-overlay-default);
119
+ }
120
+ .popupTabLayout:global(.light) .tabGroup .tab .icon {
121
+ --icon-size: 2rem;
104
122
  }
105
123
  :global(.noAnimation) .popupTabLayout:global(.light) .tabs,
106
124
  :global(.noAnimation) .popupTabLayout:global(.light) .content .panels::before {
@@ -123,9 +141,15 @@
123
141
  background-color: var(--semantic-color-background-overlay-default);
124
142
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
125
143
  outline-color: var(--semantic-color-stroke-overlay-default);
126
- outline-width: 0.021rem;
144
+ outline-width: 0.063rem;
127
145
  outline-style: solid;
128
- outline-offset: -0.021rem;
146
+ outline-offset: -0.063rem;
147
+ }
148
+ .popupTabLayout:global(.game) .tabGroup {
149
+ background-color: var(--semantic-color-background-overlay-default);
150
+ }
151
+ .popupTabLayout:global(.game) .tabGroup .tab .icon {
152
+ --icon-size: 2rem;
129
153
  }
130
154
  :global(.noAnimation) .popupTabLayout:global(.game) .tabs,
131
155
  :global(.noAnimation) .popupTabLayout:global(.game) .content .panels::before {
@@ -147,9 +171,15 @@
147
171
  background-color: var(--semantic-color-background-overlay-default);
148
172
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
149
173
  outline-color: var(--semantic-color-stroke-overlay-default);
150
- outline-width: 0.021rem;
174
+ outline-width: 0.063rem;
151
175
  outline-style: solid;
152
- outline-offset: -0.021rem;
176
+ outline-offset: -0.063rem;
177
+ }
178
+ :global(.green) .popupTabLayout:global(.game) .tabGroup {
179
+ background-color: var(--semantic-color-background-overlay-default);
180
+ }
181
+ :global(.green) .popupTabLayout:global(.game) .tabGroup .tab .icon {
182
+ --icon-size: 2rem;
153
183
  }
154
184
  :global(.noAnimation) :global(.green) .popupTabLayout:global(.game) .tabs,
155
185
  :global(.noAnimation) :global(.green) .popupTabLayout:global(.game) .content .panels::before {
@@ -171,9 +201,15 @@
171
201
  background-color: var(--semantic-color-background-overlay-default);
172
202
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
173
203
  outline-color: var(--semantic-color-stroke-overlay-default);
174
- outline-width: 0.021rem;
204
+ outline-width: 0.063rem;
175
205
  outline-style: solid;
176
- outline-offset: -0.021rem;
206
+ outline-offset: -0.063rem;
207
+ }
208
+ :global(.orange) .popupTabLayout:global(.game) .tabGroup {
209
+ background-color: var(--semantic-color-background-overlay-default);
210
+ }
211
+ :global(.orange) .popupTabLayout:global(.game) .tabGroup .tab .icon {
212
+ --icon-size: 2rem;
177
213
  }
178
214
  :global(.noAnimation) :global(.orange) .popupTabLayout:global(.game) .tabs,
179
215
  :global(.noAnimation) :global(.orange) .popupTabLayout:global(.game) .content .panels::before {
@@ -206,7 +242,8 @@
206
242
  }
207
243
  .panel {
208
244
  padding: 0;
209
- max-height: calc(100vh - 4rem );
245
+ max-height: calc(100vh - (var(--primitive-spacing-60) + var(--primitive-spacing-132)));
246
+ min-height: 20.75rem;
210
247
  }
211
248
  .panel > .body {
212
249
  display: flex;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PopupTabLayoutStateContext = void 0;
7
+ var _react = require("react");
8
+ var PopupTabLayoutStateContext = exports.PopupTabLayoutStateContext = /*#__PURE__*/(0, _react.createContext)({});
@@ -152,14 +152,15 @@ export class ProgressBarTooltip extends React.Component<
152
152
  Merge<React.HTMLProps<HTMLElement>, ProgressBarTooltipProps>
153
153
  > {}
154
154
 
155
- export interface ProgressBarDecoratorProps
156
- extends limestone_Skinnable_SkinnableProps {}
155
+ export interface ProgressBarDecoratorProps extends limestone_Skinnable_SkinnableProps {}
157
156
  export function ProgressBarDecorator<P>(
158
157
  Component: React.ComponentType<P> | string,
159
158
  ): React.ComponentType<P & ProgressBarDecoratorProps>;
160
159
 
161
- export interface ProgressBarProps
162
- extends Merge<ProgressBarBaseProps, ProgressBarDecoratorProps> {}
160
+ export interface ProgressBarProps extends Merge<
161
+ ProgressBarBaseProps,
162
+ ProgressBarDecoratorProps
163
+ > {}
163
164
  /**
164
165
  * The ready-to-use Limestone-styled ProgressBar.
165
166
  */
@@ -6,10 +6,10 @@
6
6
  left: var(--tooltip-progress-percent);
7
7
  }
8
8
  .tooltip.horizontal.above {
9
- bottom: 0.5rem;
9
+ bottom: calc(var(--primitive-spacing-12) + 12px);
10
10
  }
11
11
  .tooltip.horizontal.below {
12
- top: 0.5rem;
12
+ top: calc(var(--primitive-spacing-12) + 12px);
13
13
  }
14
14
  .tooltip.vertical {
15
15
  bottom: var(--tooltip-progress-percent);
@@ -17,12 +17,12 @@
17
17
  .tooltip.vertical.left,
18
18
  .tooltip.vertical.before,
19
19
  :global(.enact-locale-right-to-left) .tooltip.vertical.after {
20
- right: 0.5rem;
20
+ right: calc(var(--primitive-spacing-12) + 12px);
21
21
  }
22
22
  .tooltip.vertical.right,
23
23
  .tooltip.vertical.after,
24
24
  :global(.enact-locale-right-to-left) .tooltip.vertical.before {
25
- left: 0.5rem;
25
+ left: calc(var(--primitive-spacing-12) + 12px);
26
26
  }
27
27
  .tooltip.radial {
28
28
  left: 50%;
@@ -49,38 +49,38 @@
49
49
  left: 50%;
50
50
  }
51
51
  .tooltip.radial.center.above {
52
- bottom: calc(100% + 0.5rem );
52
+ bottom: calc(100% + calc(var(--primitive-spacing-12) + 12px) );
53
53
  }
54
54
  .tooltip.radial.center.below {
55
- top: calc(100% + 0.5rem );
55
+ top: calc(100% + calc(var(--primitive-spacing-12) + 12px) );
56
56
  }
57
57
  .tooltip.radial.left,
58
58
  .tooltip.radial.before,
59
59
  :global(.enact-locale-right-to-left) .tooltip.radial.after {
60
- left: -0.5rem;
60
+ left: calc(calc(var(--primitive-spacing-12) + 12px) * -1);
61
61
  }
62
62
  .tooltip.radial.left.above,
63
63
  .tooltip.radial.before.above,
64
64
  :global(.enact-locale-right-to-left) .tooltip.radial.after.above {
65
- bottom: calc(100% + 0.5rem );
65
+ bottom: calc(100% + calc(var(--primitive-spacing-12) + 12px) );
66
66
  }
67
67
  .tooltip.radial.left.below,
68
68
  .tooltip.radial.before.below,
69
69
  :global(.enact-locale-right-to-left) .tooltip.radial.after.below {
70
- top: calc(100% + 0.5rem );
70
+ top: calc(100% + calc(var(--primitive-spacing-12) + 12px) );
71
71
  }
72
72
  .tooltip.radial.right,
73
73
  .tooltip.radial.after,
74
74
  :global(.enact-locale-right-to-left) .tooltip.radial.before {
75
- left: calc(100% + 0.5rem );
75
+ left: calc(100% + calc(var(--primitive-spacing-12) + 12px) );
76
76
  }
77
77
  .tooltip.radial.right.above,
78
78
  .tooltip.radial.after.above,
79
79
  :global(.enact-locale-right-to-left) .tooltip.radial.before.above {
80
- bottom: calc(100% + 0.5rem );
80
+ bottom: calc(100% + calc(var(--primitive-spacing-12) + 12px) );
81
81
  }
82
82
  .tooltip.radial.right.below,
83
83
  .tooltip.radial.after.below,
84
84
  :global(.enact-locale-right-to-left) .tooltip.radial.before.below {
85
- top: calc(100% + 0.5rem );
85
+ top: calc(100% + calc(var(--primitive-spacing-12) + 12px) );
86
86
  }
@@ -7,11 +7,10 @@ import { ProgressBarProps as limestone_ProgressBar_ProgressBarProps } from "lime
7
7
  type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
8
8
  type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
9
9
 
10
- export interface ProgressButtonBaseProps
11
- extends Merge<
12
- limestone_Button_ButtonBaseProps,
13
- limestone_ProgressBar_ProgressBarProps
14
- > {
10
+ export interface ProgressButtonBaseProps extends Merge<
11
+ limestone_Button_ButtonBaseProps,
12
+ limestone_ProgressBar_ProgressBarProps
13
+ > {
15
14
  /**
16
15
  * Customizes the component by mapping the supplied collection of CSS class names to the
17
16
  corresponding internal elements and states of this component.
@@ -7,7 +7,7 @@
7
7
  justify-content: center;
8
8
  align-items: center;
9
9
  width: 100%;
10
- margin-top: 1.875rem;
10
+ margin-top: var(--primitive-spacing-90);
11
11
  min-height: 1rem;
12
12
  }
13
13
  .quickGuidePanels .contentHeader .close {
@@ -22,5 +22,5 @@
22
22
  z-index: 10;
23
23
  }
24
24
  .quickGuidePanels .navigationButtonContainer .navigationButton {
25
- margin: 0 0.25rem;
25
+ margin: 0 var(--primitive-spacing-12);
26
26
  }
@@ -1,8 +1,8 @@
1
1
  // Type definitions for limestone/RadioItem
2
2
 
3
3
  import { ToggleableProps as ui_Toggleable_ToggleableProps } from "@enact/ui/Toggleable";
4
- import { ItemProps as limestone_Item_ItemProps } from "limestone/Item";
5
4
  import * as React from "react";
5
+ import { ItemProps as limestone_Item_ItemProps } from "limestone/Item";
6
6
 
7
7
  type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
8
8
  type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
@@ -19,8 +19,10 @@ export class RadioItemBase extends React.Component<
19
19
  Merge<React.HTMLProps<HTMLElement>, RadioItemBaseProps>
20
20
  > {}
21
21
 
22
- export interface RadioItemProps
23
- extends Merge<RadioItemBaseProps, RadioItemDecoratorProps> {
22
+ export interface RadioItemProps extends Merge<
23
+ RadioItemBaseProps,
24
+ RadioItemDecoratorProps
25
+ > {
24
26
  /**
25
27
  * Customizes the component by mapping the supplied collection of CSS class names to the
26
28
  corresponding internal elements and states of this component.
@@ -50,10 +52,21 @@ export class RadioItem extends React.Component<
50
52
  Merge<React.HTMLProps<HTMLElement>, RadioItemProps>
51
53
  > {}
52
54
 
53
- export interface RadioItemDecoratorProps
54
- extends ui_Toggleable_ToggleableProps {}
55
+ export interface RadioItemDecoratorProps extends ui_Toggleable_ToggleableProps {}
55
56
  export function RadioItemDecorator<P>(
56
57
  Component: React.ComponentType<P> | string,
57
58
  ): React.ComponentType<P & RadioItemDecoratorProps>;
58
59
 
60
+ export interface RadioItemGroupProps {}
61
+ /**
62
+ * A container that surrounds multiple RadioItems.
63
+ *
64
+ * A list of multiple RadioItems wrapped with a RadioItemGroup component gets
65
+ required audio guidance.
66
+ */
67
+
68
+ export class RadioItemGroup extends React.Component<
69
+ Merge<React.HTMLProps<HTMLElement>, RadioItemGroupProps>
70
+ > {}
71
+
59
72
  export default RadioItem;
@@ -3,18 +3,24 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.RadioItemDecorator = exports.RadioItemBase = exports.RadioItem = void 0;
6
+ exports["default"] = exports.RadioItemGroup = exports.RadioItemDecorator = exports.RadioItemBase = exports.RadioItem = void 0;
7
7
  var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
+ var _util = require("@enact/core/util");
9
+ var _Group = _interopRequireDefault(require("@enact/ui/Group"));
8
10
  var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
9
11
  var _Slottable = _interopRequireDefault(require("@enact/ui/Slottable"));
10
12
  var _Toggleable = _interopRequireDefault(require("@enact/ui/Toggleable"));
13
+ var _IString = _interopRequireDefault(require("ilib/lib/IString"));
11
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
15
  var _compose = _interopRequireDefault(require("ramda/src/compose"));
13
16
  var _Icon = _interopRequireDefault(require("../Icon"));
17
+ var _$L = _interopRequireDefault(require("../internal/$L"));
14
18
  var _Item = require("../Item");
15
19
  var _RadioItemModule = _interopRequireDefault(require("./RadioItem.module.css"));
16
20
  var _jsxRuntime = require("react/jsx-runtime");
17
- var _excluded = ["children", "css", "icon", "selected", "slotBefore"];
21
+ var _excluded = ["children", "css", "icon", "selected", "slotBefore"],
22
+ _excluded2 = ["children", "groupId", "itemProps"],
23
+ _excluded3 = ["children"];
18
24
  /**
19
25
  * Provides a Limestone-themed Item component with an interactive radio toggle icon.
20
26
  *
@@ -143,4 +149,65 @@ var RadioItemDecorator = exports.RadioItemDecorator = (0, _compose["default"])((
143
149
  * @public
144
150
  */
145
151
  var RadioItem = exports.RadioItem = (0, _Pure["default"])(RadioItemDecorator(RadioItemBase));
152
+
153
+ /**
154
+ * A container that surrounds multiple RadioItems.
155
+ *
156
+ * A list of multiple RadioItems wrapped with a RadioItemGroup component gets
157
+ * required audio guidance.
158
+ *
159
+ * @class RadioItemGroup
160
+ * @memberof limestone/RadioItem
161
+ * @ui
162
+ * @public
163
+ */
164
+ var _RadioItemGroup = exports.RadioItemGroup = function RadioItemGroup(props) {
165
+ (0, _util.checkPropTypes)(_RadioItemGroup, props);
166
+ var children = props.children,
167
+ groupId = props.groupId,
168
+ itemProps = props.itemProps,
169
+ rest = _objectWithoutProperties(props, _excluded2);
170
+ if (typeof children[0] === 'string') {
171
+ // The case of multiple radio items are represented by string array instead of `RadioItem` components using `ui/Group`
172
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
173
+ role: "region",
174
+ "aria-labelledby": groupId || "radioItemGroup",
175
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Group["default"], _objectSpread(_objectSpread({}, rest), {}, {
176
+ id: groupId || "radioItemGroup",
177
+ "aria-label": new _IString["default"]((0, _$L["default"])('{total} items in total')).format({
178
+ 'total': children.length
179
+ }),
180
+ childComponent: RadioItem,
181
+ childSelect: "onToggle",
182
+ itemProps: _objectSpread({}, itemProps),
183
+ children: children
184
+ }))
185
+ });
186
+ } else {
187
+ // The case of multiple radio items are represented by `RadioItem` components
188
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
189
+ role: "region",
190
+ "aria-labelledby": groupId || "radioItemGroup",
191
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({}, rest), {}, {
192
+ role: "group",
193
+ id: groupId || "radioItemGroup",
194
+ "aria-label": new _IString["default"]((0, _$L["default"])('{total} items in total')).format({
195
+ 'total': children.length
196
+ }),
197
+ children: children.map(function (child, index) {
198
+ var _child$props = child.props,
199
+ itemValue = _child$props.children,
200
+ childRest = _objectWithoutProperties(_child$props, _excluded3);
201
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(RadioItem, _objectSpread(_objectSpread(_objectSpread({}, childRest), itemProps), {}, {
202
+ children: itemValue
203
+ }), index);
204
+ })
205
+ }))
206
+ });
207
+ }
208
+ };
209
+ _RadioItemGroup.propTypes = {
210
+ groupId: _propTypes["default"].string,
211
+ itemProps: _propTypes["default"].object
212
+ };
146
213
  var _default = exports["default"] = RadioItem;