@enact/limestone 1.10.0 → 1.10.2

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 (133) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +1 -0
  2. package/ActionGuide/ActionGuide.d.ts +1 -1
  3. package/ActionGuide/ActionGuide.module.css +7 -0
  4. package/Alert/Alert.d.ts +9 -0
  5. package/Alert/Alert.js +63 -21
  6. package/Alert/Alert.module.css +41 -9
  7. package/Alert/AlertImage.module.css +5 -1
  8. package/Alert/tests/Alert-specs.js +6 -2
  9. package/BodyText/BodyText.d.ts +1 -1
  10. package/BodyText/BodyText.js +14 -9
  11. package/BodyText/BodyText.module.css +22 -1
  12. package/Button/Button.d.ts +3 -3
  13. package/Button/Button.module.css +81 -63
  14. package/CHANGELOG.md +87 -0
  15. package/Card/Card.d.ts +81 -9
  16. package/Card/Card.js +324 -84
  17. package/Card/Card.module.css +200 -25
  18. package/Card/tests/Card-specs.js +100 -0
  19. package/Checkbox/Checkbox.d.ts +2 -2
  20. package/Checkbox/Checkbox.module.css +2 -5
  21. package/CheckboxItem/CheckboxItem.d.ts +8 -1
  22. package/CheckboxItem/CheckboxItem.js +39 -12
  23. package/CheckboxItem/CheckboxItem.module.css +228 -4
  24. package/Chips/Chip.module.css +5 -2
  25. package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +2 -2
  26. package/ContextualPopupDecorator/ContextualPopup.module.css +1 -1
  27. package/ContextualPopupDecorator/ContextualPopupDecorator.js +2 -4
  28. package/ContextualPopupDecorator/tests/ContextualPopupDecorator-specs.js +39 -2
  29. package/Dropdown/Dropdown.d.ts +2 -2
  30. package/Dropdown/Dropdown.module.css +7 -7
  31. package/FixedPopupPanels/FixedPopupPanels.d.ts +2 -2
  32. package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +15 -3
  33. package/FlexiblePopupPanels/index.d.ts +2 -2
  34. package/FormCheckboxItem/FormCheckboxItem.d.ts +1 -1
  35. package/FormCheckboxItem/FormCheckboxItem.js +1 -0
  36. package/FormCheckboxItem/FormCheckboxItem.module.css +1 -1
  37. package/Heading/Heading.d.ts +2 -2
  38. package/Heading/Heading.module.css +16 -0
  39. package/Icon/Icon.d.ts +22 -1
  40. package/Icon/Icon.js +21 -0
  41. package/Icon/Icon.module.css +12 -0
  42. package/Icon/IconList.js +43 -1
  43. package/IconItem/IconItem.d.ts +2 -2
  44. package/IconItem/IconItem.module.css +27 -14
  45. package/Image/Image.d.ts +1 -1
  46. package/Image/Image.module.css +1 -1
  47. package/ImageItem/ImageItem.d.ts +2 -2
  48. package/ImageItem/ImageItem.js +3 -16
  49. package/ImageItem/ImageItem.module.css +122 -97
  50. package/ImageItem/tests/ImageItem-specs.js +6 -5
  51. package/Input/Input.module.css +33 -16
  52. package/Input/InputField.module.css +22 -4
  53. package/Input/index.d.ts +1 -1
  54. package/Input/tests/Input-specs.js +2 -2
  55. package/Input/tests/InputField-specs.js +1 -1
  56. package/Item/Item.d.ts +2 -2
  57. package/Item/Item.module.css +29 -16
  58. package/KeyGuide/KeyGuide.d.ts +2 -2
  59. package/KeyGuide/KeyGuide.module.css +10 -0
  60. package/MediaOverlay/MediaOverlay.d.ts +2 -2
  61. package/MediaOverlay/MediaOverlay.module.css +18 -9
  62. package/MediaPlayer/MediaControls.module.css +3 -0
  63. package/MediaPlayer/MediaSlider.module.css +1 -0
  64. package/MediaPlayer/Times.module.css +5 -1
  65. package/MediaPlayer/index.d.ts +2 -2
  66. package/PageViews/PageViews.module.css +6 -1
  67. package/Panels/Header.module.css +74 -56
  68. package/Panels/Panel.module.css +1 -1
  69. package/Panels/index.d.ts +1 -1
  70. package/Picker/Picker.d.ts +1 -1
  71. package/Popup/Popup.module.css +4 -1
  72. package/PopupTabLayout/PopupTabLayout.d.ts +6 -6
  73. package/PopupTabLayout/PopupTabLayout.module.css +24 -6
  74. package/ProgressBar/ProgressBar.d.ts +1 -1
  75. package/ProgressBar/ProgressBar.module.css +12 -12
  76. package/ProgressBar/ProgressBarTooltip.module.css +7 -7
  77. package/ProgressButton/ProgressButton.d.ts +2 -2
  78. package/QuickGuidePanels/QuickGuidePanels.module.css +1 -1
  79. package/RadioItem/RadioItem.d.ts +1 -1
  80. package/RadioItem/RadioItem.module.css +21 -18
  81. package/Scroller/EditableWrapper.js +2 -1
  82. package/Scroller/Scroller.d.ts +12 -0
  83. package/Scroller/Scroller.js +15 -0
  84. package/Scroller/Scroller.module.css +10 -0
  85. package/Scroller/tests/Scroller-specs.js +120 -2
  86. package/Scroller/useThemeScroller.js +25 -2
  87. package/Slider/Slider.d.ts +1 -1
  88. package/Slider/Slider.module.css +539 -303
  89. package/Spinner/Spinner.d.ts +1 -1
  90. package/Spinner/Spinner.module.css +2 -2
  91. package/Steps/Steps.d.ts +1 -1
  92. package/Steps/Steps.js +12 -6
  93. package/Steps/Steps.module.css +19 -2
  94. package/Switch/Switch.module.css +17 -6
  95. package/SwitchItem/SwitchItem.d.ts +1 -1
  96. package/TabLayout/RefocusDecorator.js +1 -1
  97. package/TabLayout/TabGroup.module.css +13 -7
  98. package/TabLayout/TabLayout.js +4 -0
  99. package/ThemeDecorator/ThemeDecorator.d.ts +1 -1
  100. package/ThemeDecorator/ThemeDecorator.module.css +22 -1
  101. package/TimePicker/TimePicker.module.css +3 -0
  102. package/TooltipDecorator/Tooltip.js +68 -7
  103. package/TooltipDecorator/Tooltip.module.css +44 -23
  104. package/TooltipDecorator/TooltipDecorator.d.ts +52 -0
  105. package/TooltipDecorator/TooltipDecorator.js +42 -0
  106. package/TooltipDecorator/TooltipLabel.js +67 -14
  107. package/TooltipDecorator/tests/TooltipDecorator-specs.js +46 -0
  108. package/TooltipDecorator/useTooltip.js +14 -2
  109. package/VideoPlayer/Feedback.module.css +3 -0
  110. package/VideoPlayer/FeedbackTooltip.module.css +7 -0
  111. package/VideoPlayer/MediaTitle.module.css +9 -1
  112. package/VirtualList/VirtualList.d.ts +24 -0
  113. package/VirtualList/VirtualList.js +30 -0
  114. package/VirtualList/tests/stickTo-specs.js +115 -0
  115. package/VirtualList/tests/useEvent-specs.js +39 -0
  116. package/VirtualList/useEvent.js +45 -10
  117. package/VirtualList/useThemeVirtualList.js +20 -2
  118. package/WizardPanels/WizardPanels.module.css +1 -1
  119. package/fonts/Limestone_Icons.ttf +0 -0
  120. package/internal/DateComponentPicker/DateComponentPicker.module.css +3 -3
  121. package/internal/DateTime/DateTime.module.css +3 -0
  122. package/internal/Picker/Picker.js +8 -10
  123. package/internal/Picker/Picker.module.css +92 -137
  124. package/package.json +14 -17
  125. package/styles/color-mixins.less +4 -60
  126. package/styles/colors-game.less +5 -5
  127. package/styles/colors.less +9 -10
  128. package/styles/mixins.less +0 -46
  129. package/styles/motion-mixins.less +16 -7
  130. package/styles/motions.less +2 -2
  131. package/styles/variables.less +186 -69
  132. package/useScroll/ScrollbarPlaceholder.js +8 -3
  133. package/useScroll/useScroll.js +3 -1
@@ -3,6 +3,7 @@
3
3
  * [ ] I have read and understand the [contribution guide](https://enactjs.com/docs/developer-guide/contributing/)
4
4
  * [ ] A [CHANGELOG entry](https://enactjs.com/docs/developer-guide/contributing/changelogs/) is included
5
5
  * [ ] At least one test case is included for this feature or bug fix
6
+ * [ ] I have run automated testing and it is passed
6
7
  * [ ] Documentation was added or is not needed
7
8
  * [ ] This is an API breaking change
8
9
 
@@ -1,6 +1,6 @@
1
1
  // Type definitions for limestone/ActionGuide
2
2
 
3
- import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
3
+ import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "@enact/limestone/Skinnable";
4
4
  import * as React from "react";
5
5
 
6
6
  type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
@@ -11,6 +11,9 @@
11
11
  min-width: 1.75rem;
12
12
  width: 1.75rem;
13
13
  }
14
+ .actionGuide .button.hasIcon.large {
15
+ padding: 0;
16
+ }
14
17
  .actionGuide .label {
15
18
  font-family: "Limestone";
16
19
  font-size: var(--primitive-font-size-48);
@@ -22,6 +25,10 @@
22
25
  font-family: "Limestone";
23
26
  font-size: var(--primitive-font-size-48);
24
27
  }
28
+ .actionGuide:global(.largeText) .label {
29
+ font-size: var(--primitive-font-size-60);
30
+ line-height: 1.45833rem;
31
+ }
25
32
  .actionGuide:global(.neutral) .icon .icon {
26
33
  color: var(--semantic-color-on-background-actionguide);
27
34
  }
package/Alert/Alert.d.ts CHANGED
@@ -102,6 +102,15 @@ corresponding internal elements and states of this component.
102
102
  | "center"
103
103
  | "top left"
104
104
  | "top right";
105
+ /**
106
+ * Size of the Alert when `type="overlay"` .
107
+ * * `small` - narrow width
108
+ * * `medium` - medium width
109
+ * * `large` - wide width, supports title
110
+ *
111
+ * When omitted, defaults to `medium` when there are exactly 2 buttons, otherwise `small` .
112
+ */
113
+ size?: "small" | "medium" | "large";
105
114
  /**
106
115
  * The primary text displayed.
107
116
  *
package/Alert/Alert.js CHANGED
@@ -24,7 +24,7 @@ var _Popup = _interopRequireDefault(require("../Popup"));
24
24
  var _AlertImage = _interopRequireDefault(require("./AlertImage"));
25
25
  var _AlertModule = _interopRequireDefault(require("./Alert.module.css"));
26
26
  var _jsxRuntime = require("react/jsx-runtime");
27
- var _excluded = ["buttonDirection", "buttons", "contentComponent", "children", "css", "id", "image", "overlayPosition", "title", "type", "style"];
27
+ var _excluded = ["buttonDirection", "buttons", "contentComponent", "children", "css", "id", "image", "overlayPosition", "size", "title", "type", "style"];
28
28
  /**
29
29
  * Limestone styled modal Alert components.
30
30
  *
@@ -160,6 +160,19 @@ var AlertBase = exports.AlertBase = (0, _kind["default"])({
160
160
  * @public
161
161
  */
162
162
  overlayPosition: _propTypes["default"].oneOf(['bottom left', 'bottom right', 'center', 'top left', 'top right']),
163
+ /**
164
+ * Size of the Alert when `type="overlay"`.
165
+ *
166
+ * * `small` - narrow width
167
+ * * `medium` - medium width
168
+ * * `large` - wide width, supports title
169
+ *
170
+ * When omitted, defaults to `medium` when there are exactly 2 buttons, otherwise `small`.
171
+ *
172
+ * @type {('small'|'medium'|'large')}
173
+ * @public
174
+ */
175
+ size: _propTypes["default"].oneOf(['small', 'medium', 'large']),
163
176
  /**
164
177
  * The primary text displayed.
165
178
  *
@@ -217,34 +230,51 @@ var AlertBase = exports.AlertBase = (0, _kind["default"])({
217
230
  }
218
231
  },
219
232
  className: function className(_ref3) {
220
- var image = _ref3.image,
233
+ var buttons = _ref3.buttons,
234
+ buttonDirection = _ref3.buttonDirection,
235
+ image = _ref3.image,
236
+ size = _ref3.size,
221
237
  type = _ref3.type,
222
238
  styler = _ref3.styler;
239
+ var buttonCount = _react.Children.toArray(buttons).filter(Boolean).length;
240
+ var resolvedSize = size || (buttonDirection !== 'vertical' && buttonCount === 2 ? 'medium' : 'small');
241
+ var resolvedButtonDirection = buttonDirection;
242
+ if (buttonDirection === 'auto') {
243
+ var useHorizontal = type === 'overlay' && buttonCount === 2 || type === 'fullscreen' && buttonCount < 4;
244
+ resolvedButtonDirection = useHorizontal ? 'horizontal' : 'vertical';
245
+ }
223
246
  return styler.append({
224
247
  noImage: !image
225
- }, type);
248
+ }, resolvedSize, type, resolvedButtonDirection);
249
+ },
250
+ size: function size(_ref4) {
251
+ var buttons = _ref4.buttons,
252
+ buttonDirection = _ref4.buttonDirection,
253
+ _size = _ref4.size;
254
+ return _size || (buttonDirection !== 'vertical' && _react.Children.toArray(buttons).filter(Boolean).length === 2 ? 'medium' : 'small');
226
255
  }
227
256
  },
228
- render: function render(_ref4) {
229
- var buttonDirection = _ref4.buttonDirection,
230
- buttons = _ref4.buttons,
231
- contentComponent = _ref4.contentComponent,
232
- children = _ref4.children,
233
- css = _ref4.css,
234
- id = _ref4.id,
235
- image = _ref4.image,
236
- overlayPosition = _ref4.overlayPosition,
237
- title = _ref4.title,
238
- type = _ref4.type,
239
- style = _ref4.style,
240
- rest = _objectWithoutProperties(_ref4, _excluded);
257
+ render: function render(_ref5) {
258
+ var buttonDirection = _ref5.buttonDirection,
259
+ buttons = _ref5.buttons,
260
+ contentComponent = _ref5.contentComponent,
261
+ children = _ref5.children,
262
+ css = _ref5.css,
263
+ id = _ref5.id,
264
+ image = _ref5.image,
265
+ overlayPosition = _ref5.overlayPosition,
266
+ size = _ref5.size,
267
+ title = _ref5.title,
268
+ type = _ref5.type,
269
+ style = _ref5.style,
270
+ rest = _objectWithoutProperties(_ref5, _excluded);
241
271
  var fullscreen = type === 'fullscreen';
242
272
  var position = type === 'overlay' ? overlayPosition : type;
243
- var showTitle = fullscreen && title;
244
273
  var buttonCount = _react.Children.toArray(buttons).filter(Boolean).length;
274
+ var showTitle = (fullscreen || size === 'large') && title;
245
275
  var resolvedButtonDirection = buttonDirection;
246
276
  if (buttonDirection === 'auto') {
247
- var useHorizontal = type === 'overlay' && buttonCount === 2 || type === 'fullscreen' && buttonCount < 3;
277
+ var useHorizontal = type === 'overlay' && buttonCount === 2 || type === 'fullscreen' && buttonCount < 4;
248
278
  resolvedButtonDirection = useHorizontal ? 'horizontal' : 'vertical';
249
279
  }
250
280
  var overlayHorizontalButtons = type === 'overlay' && resolvedButtonDirection === 'horizontal';
@@ -256,6 +286,9 @@ var AlertBase = exports.AlertBase = (0, _kind["default"])({
256
286
  });
257
287
  }
258
288
  var ariaLabelledBy = (showTitle ? "".concat(id, "_title ") : '') + "".concat(id, "_content ").concat(id, "_buttons");
289
+ var resolvedImage = (image === null || image === void 0 ? void 0 : image.props.type) === "thumbnail" ? /*#__PURE__*/(0, _react.cloneElement)(image, {
290
+ iconSize: !fullscreen && size === 'large' ? 'large' : 'small'
291
+ }) : null;
259
292
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
260
293
  "aria-owns": id,
261
294
  className: css.alertWrapper,
@@ -269,11 +302,20 @@ var AlertBase = exports.AlertBase = (0, _kind["default"])({
269
302
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Layout["default"], {
270
303
  align: "center center",
271
304
  orientation: "vertical",
272
- children: [image ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
305
+ children: [showTitle && !fullscreen ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
306
+ shrink: true,
307
+ align: "stretch",
308
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Heading["default"], {
309
+ size: "title",
310
+ className: css.title,
311
+ id: "".concat(id, "_title"),
312
+ children: title
313
+ })
314
+ }) : null, resolvedImage || image ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
273
315
  shrink: true,
274
316
  className: css.alertImage,
275
- children: image
276
- }) : null, showTitle ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
317
+ children: resolvedImage || image
318
+ }) : null, showTitle && fullscreen ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
277
319
  shrink: true,
278
320
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Heading["default"], {
279
321
  size: "title",
@@ -1,9 +1,22 @@
1
1
  .alertWrapper {
2
2
  display: inline;
3
3
  }
4
+ .alert .title {
5
+ font-family: "Limestone Title", "Limestone";
6
+ }
4
7
  .alert.noImage {
5
8
  /* Needed to prevent global class being added in the DOM */
6
9
  }
10
+ .alert.horizontal .button {
11
+ margin-top: 0;
12
+ margin-bottom: 0;
13
+ }
14
+ .alert.vertical .buttonCell:first-child .button {
15
+ margin-top: 0;
16
+ }
17
+ .alert.vertical .buttonCell:last-child .button {
18
+ margin-bottom: 0;
19
+ }
7
20
  .alert.fullscreen .alertImage {
8
21
  margin-bottom: var(--primitive-spacing-60);
9
22
  }
@@ -28,30 +41,30 @@
28
41
  font-size: var(--primitive-font-size-108);
29
42
  }
30
43
  .alert.fullscreen .buttonContainer {
31
- margin-top: var(--primitive-spacing-96);
44
+ margin-top: var(--primitive-spacing-120);
32
45
  }
33
46
  .alert.overlay {
34
47
  overflow: hidden;
35
48
  }
36
49
  .alert.overlay .alertImage {
37
50
  margin-bottom: var(--primitive-spacing-36);
38
- padding: 0 var(--primitive-spacing-84);
51
+ padding: 0 var(--primitive-spacing-90);
39
52
  }
40
53
  .alert.overlay .buttonContainer {
41
54
  box-sizing: border-box;
42
- margin-top: var(--primitive-spacing-36);
43
- padding: 0 var(--primitive-spacing-84);
55
+ margin-top: var(--primitive-spacing-72);
56
+ padding: 0 var(--primitive-spacing-90);
44
57
  }
45
58
  .alert.overlay .content {
46
59
  align-self: stretch;
47
60
  font-family: "Limestone";
48
- line-height: 1.75rem;
61
+ line-height: 1.34em;
49
62
  font-weight: var(--primitive-font-weight-semibold);
50
63
  font-size: var(--primitive-font-size-60);
51
64
  text-align: initial;
52
65
  overflow-wrap: break-word;
53
66
  word-break: keep-all;
54
- padding: 0 var(--primitive-spacing-84);
67
+ padding: 0 var(--primitive-spacing-90);
55
68
  margin: 0;
56
69
  max-width: var(--alert-overlay-content-max-width, 23.5rem);
57
70
  }
@@ -78,13 +91,24 @@
78
91
  overflow-wrap: normal;
79
92
  word-break: normal;
80
93
  }
94
+ .alert.overlay:global(.largeText) .content {
95
+ font-size: var(--primitive-font-size-72);
96
+ }
97
+ .alert.overlay.large .title {
98
+ margin: 0 0 var(--primitive-spacing-36) 0;
99
+ padding: 0 var(--primitive-spacing-90);
100
+ font-size: var(--primitive-font-size-90);
101
+ }
102
+ :global(.enact-locale-non-latin) .alert.overlay.large .title {
103
+ font-size: var(--primitive-font-size-108);
104
+ }
81
105
  .popup.overlay {
82
106
  box-sizing: border-box;
83
107
  --alert-overlay-horizontal-button-count: 1;
84
- --alert-overlay-horizontal-button-width: NaNrem + (2 * var(--primitive-spacing-36)));
108
+ --alert-overlay-horizontal-button-width: calc(840px + (2 * var(--primitive-spacing-36)));
85
109
  --alert-overlay-horizontal-buttons-total-width: calc(var(--alert-overlay-horizontal-button-width) * var(--alert-overlay-horizontal-button-count));
86
110
  --alert-overlay-width: max(1128px, var(--alert-overlay-horizontal-buttons-total-width));
87
- --alert-overlay-content-horizontal-padding: var(--primitive-spacing-84);
111
+ --alert-overlay-content-horizontal-padding: var(--primitive-spacing-90);
88
112
  --alert-overlay-content-max-width: calc(var(--alert-overlay-width) - (2 * var(--alert-overlay-content-horizontal-padding)));
89
113
  width: var(--alert-overlay-width);
90
114
  min-width: 23.5rem;
@@ -93,9 +117,17 @@
93
117
  margin-right: auto;
94
118
  }
95
119
  .popup.overlay .body {
96
- padding: var(--primitive-spacing-84) 0;
120
+ padding: var(--primitive-spacing-90) 0;
97
121
  max-height: 42.25rem;
98
122
  }
123
+ .popup.overlay.medium {
124
+ --alert-overlay-width: max(1656px, var(--alert-overlay-horizontal-buttons-total-width));
125
+ min-width: 34.5rem;
126
+ }
127
+ .popup.overlay.large {
128
+ --alert-overlay-width: max(2184px, var(--alert-overlay-horizontal-buttons-total-width));
129
+ min-width: 45.5rem;
130
+ }
99
131
  .popup:global(.neutral) {
100
132
  background-color: var(--semantic-color-background-full-default);
101
133
  }
@@ -1,7 +1,11 @@
1
1
  .alertImage {
2
2
  margin: 0;
3
3
  }
4
- .alertImage.thumbnail {
4
+ .alertImage.thumbnail.large {
5
+ width: 41.75rem;
6
+ height: 17.8125rem;
7
+ }
8
+ .alertImage.thumbnail.small {
5
9
  width: 20rem;
6
10
  height: 11.25rem;
7
11
  }
@@ -102,7 +102,7 @@ describe('Alert', function () {
102
102
  var expectedClass = 'thumbnail';
103
103
  expect(image).toHaveClass(expectedClass);
104
104
  });
105
- test('should align buttons horizontally by default in fullscreen when button count is less than 3', function () {
105
+ test('should align buttons horizontally by default in fullscreen when button count is less than 4', function () {
106
106
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
107
107
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.Alert, {
108
108
  open: true,
@@ -111,6 +111,8 @@ describe('Alert', function () {
111
111
  children: "yes"
112
112
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
113
113
  children: "no"
114
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
115
+ children: "maybe"
114
116
  })]
115
117
  })
116
118
  })
@@ -119,7 +121,7 @@ describe('Alert', function () {
119
121
  var buttonsLayout = alert.querySelector('[id$="_buttons"]');
120
122
  expect(buttonsLayout).toHaveClass('horizontal');
121
123
  });
122
- test('should align buttons vertically by default in fullscreen when button count is 3', function () {
124
+ test('should align buttons vertically by default in fullscreen when button count is 4', function () {
123
125
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
124
126
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.Alert, {
125
127
  open: true,
@@ -128,6 +130,8 @@ describe('Alert', function () {
128
130
  children: "yes"
129
131
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
130
132
  children: "no"
133
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
134
+ children: "maybe"
131
135
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
132
136
  children: "later"
133
137
  })]
@@ -1,6 +1,6 @@
1
1
  // Type definitions for limestone/BodyText
2
2
 
3
- import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
3
+ import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "@enact/limestone/Skinnable";
4
4
  import { BodyTextProps as ui_BodyText_BodyTextProps } from "@enact/ui/BodyText";
5
5
  import * as React from "react";
6
6
 
@@ -101,20 +101,25 @@ var BodyTextBase = exports.BodyTextBase = (0, _kind["default"])({
101
101
  publicClassNames: 'bodyText'
102
102
  },
103
103
  computed: {
104
- className: function className(_ref) {
105
- var noWrap = _ref.noWrap,
106
- size = _ref.size,
107
- styler = _ref.styler;
104
+ children: function children(_ref) {
105
+ var _children = _ref.children,
106
+ noWrap = _ref.noWrap;
107
+ return noWrap ? _children === null || _children === void 0 ? void 0 : _children.replaceAll('\n', ' ') : _children;
108
+ },
109
+ className: function className(_ref2) {
110
+ var noWrap = _ref2.noWrap,
111
+ size = _ref2.size,
112
+ styler = _ref2.styler;
108
113
  return styler.append(size, {
109
114
  noWrap: noWrap
110
115
  });
111
116
  }
112
117
  },
113
- render: function render(_ref2) {
114
- var centered = _ref2.centered,
115
- css = _ref2.css,
116
- noWrap = _ref2.noWrap,
117
- rest = _objectWithoutProperties(_ref2, _excluded);
118
+ render: function render(_ref3) {
119
+ var centered = _ref3.centered,
120
+ css = _ref3.css,
121
+ noWrap = _ref3.noWrap,
122
+ rest = _objectWithoutProperties(_ref3, _excluded);
118
123
  delete rest.size;
119
124
  if (noWrap) {
120
125
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(MarqueeBodyText, _objectSpread(_objectSpread({
@@ -3,7 +3,7 @@
3
3
  font-size: var(--primitive-font-size-60);
4
4
  font-style: normal;
5
5
  font-family: "Limestone";
6
- line-height: 1.4em;
6
+ line-height: 1.34em;
7
7
  margin: 0 var(--primitive-spacing-36) var(--primitive-font-size-60) var(--primitive-spacing-36);
8
8
  padding: 0;
9
9
  white-space: normal;
@@ -93,3 +93,24 @@
93
93
  :global(.enact-locale-ja) .bodyText {
94
94
  line-break: strict;
95
95
  }
96
+ .bodyText:global(.largeText) {
97
+ font-size: var(--primitive-font-size-72);
98
+ }
99
+ .bodyText:global(.largeText).small {
100
+ font-size: var(--primitive-font-size-66);
101
+ }
102
+ :global(.enact-locale-km) .bodyText:global(.largeText).small {
103
+ font-size: var(--primitive-font-size-60);
104
+ }
105
+ :global(.enact-locale-si) .bodyText:global(.largeText).small {
106
+ font-size: var(--primitive-font-size-60);
107
+ }
108
+ :global(.enact-locale-th) .bodyText:global(.largeText).small {
109
+ font-size: var(--primitive-font-size-60);
110
+ }
111
+ :global(.enact-locale-vi) .bodyText:global(.largeText).small {
112
+ font-size: var(--primitive-font-size-60);
113
+ }
114
+ :global(.enact-locale-non-latin) .bodyText:global(.largeText).small {
115
+ font-size: var(--primitive-font-size-60);
116
+ }
@@ -1,10 +1,10 @@
1
1
  // Type definitions for limestone/Button
2
2
 
3
- import { TooltipDecoratorProps as limestone_TooltipDecorator_TooltipDecoratorProps } from "limestone/TooltipDecorator";
4
- import { MarqueeDecoratorProps as limestone_Marquee_MarqueeDecoratorProps } from "limestone/Marquee";
3
+ import { TooltipDecoratorProps as limestone_TooltipDecorator_TooltipDecoratorProps } from "@enact/limestone/TooltipDecorator";
4
+ import { MarqueeDecoratorProps as limestone_Marquee_MarqueeDecoratorProps } from "@enact/limestone/Marquee";
5
5
  import { ButtonDecoratorProps as ui_Button_ButtonDecoratorProps } from "@enact/ui/Button";
6
6
  import { SpottableProps as spotlight_Spottable_SpottableProps } from "@enact/spotlight/Spottable";
7
- import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
7
+ import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "@enact/limestone/Skinnable";
8
8
  import { ButtonBaseProps as ui_Button_ButtonBaseProps } from "@enact/ui/Button";
9
9
  import * as React from "react";
10
10