@telus-uds/components-base 0.0.2-prerelease.7 → 0.0.2-prerelease.8

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 (349) hide show
  1. package/.ultra.cache.json +1 -1
  2. package/CHANGELOG.md +27 -0
  3. package/__fixtures__/Accessible.js +33 -0
  4. package/__fixtures__/Accessible.native.js +32 -0
  5. package/__fixtures__/testTheme.js +429 -29
  6. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
  7. package/__tests__/Button/ButtonGroup.test.jsx +2 -2
  8. package/__tests__/Checkbox/CheckboxGroup.test.jsx +247 -0
  9. package/__tests__/Icon/Icon.test.jsx +3 -3
  10. package/__tests__/Modal/Modal.test.jsx +47 -0
  11. package/__tests__/Notification/Notification.test.jsx +20 -0
  12. package/__tests__/Pagination/Pagination.test.jsx +2 -2
  13. package/__tests__/Progress/Progress.test.jsx +79 -0
  14. package/__tests__/Radio/RadioGroup.test.jsx +221 -0
  15. package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
  16. package/__tests__/RadioCard/RadioCardGroup.test.jsx +247 -0
  17. package/__tests__/Search/Search.test.jsx +72 -0
  18. package/__tests__/Skeleton/Skeleton.test.jsx +1 -1
  19. package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
  20. package/__tests__/Tabs/Tabs.test.jsx +200 -0
  21. package/__tests__/Tags/Tags.test.jsx +1 -1
  22. package/__tests__/utils/input.test.js +58 -0
  23. package/__tests__/utils/useCopy.test.js +14 -3
  24. package/babel.config.js +20 -0
  25. package/jest.config.js +1 -1
  26. package/lib/A11yInfoProvider/index.js +54 -26
  27. package/lib/A11yText/index.js +37 -14
  28. package/lib/ActivityIndicator/Spinner.js +78 -0
  29. package/lib/ActivityIndicator/Spinner.native.js +121 -87
  30. package/lib/ActivityIndicator/index.js +28 -12
  31. package/lib/ActivityIndicator/shared.js +27 -12
  32. package/lib/BaseProvider/index.js +34 -11
  33. package/lib/Box/Box.js +54 -31
  34. package/lib/Box/index.js +13 -2
  35. package/lib/Button/Button.js +32 -11
  36. package/lib/Button/ButtonBase.js +85 -78
  37. package/lib/Button/ButtonGroup.js +94 -70
  38. package/lib/Button/ButtonLink.js +38 -15
  39. package/lib/Button/index.js +31 -4
  40. package/lib/Button/propTypes.js +32 -9
  41. package/lib/Card/Card.js +36 -41
  42. package/lib/Card/CardBase.js +78 -0
  43. package/lib/Card/PressableCardBase.js +137 -0
  44. package/lib/Card/index.js +40 -2
  45. package/lib/Checkbox/Checkbox.js +139 -103
  46. package/lib/Checkbox/CheckboxGroup.js +231 -0
  47. package/lib/Checkbox/CheckboxInput.js +74 -0
  48. package/lib/Checkbox/CheckboxInput.native.js +9 -1
  49. package/lib/Checkbox/index.js +21 -2
  50. package/lib/Divider/Divider.js +50 -24
  51. package/lib/Divider/index.js +13 -2
  52. package/lib/ExpandCollapse/Accordion.js +20 -7
  53. package/lib/ExpandCollapse/Control.js +50 -27
  54. package/lib/ExpandCollapse/ExpandCollapse.js +41 -24
  55. package/lib/ExpandCollapse/Panel.js +75 -37
  56. package/lib/ExpandCollapse/index.js +25 -7
  57. package/lib/Feedback/Feedback.js +69 -40
  58. package/lib/Feedback/index.js +13 -2
  59. package/lib/Fieldset/Fieldset.js +160 -0
  60. package/lib/Fieldset/FieldsetContainer.js +41 -0
  61. package/lib/Fieldset/FieldsetContainer.native.js +33 -0
  62. package/lib/Fieldset/Legend.js +33 -0
  63. package/lib/Fieldset/Legend.native.js +43 -0
  64. package/lib/Fieldset/cssReset.js +21 -0
  65. package/lib/Fieldset/index.js +13 -0
  66. package/lib/FlexGrid/Col/Col.js +67 -38
  67. package/lib/FlexGrid/Col/index.js +13 -2
  68. package/lib/FlexGrid/FlexGrid.js +70 -45
  69. package/lib/FlexGrid/Row/Row.js +48 -27
  70. package/lib/FlexGrid/Row/index.js +13 -2
  71. package/lib/FlexGrid/helpers/index.js +9 -1
  72. package/lib/FlexGrid/index.js +13 -2
  73. package/lib/FlexGrid/providers/GutterContext.js +15 -3
  74. package/lib/Icon/Icon.js +46 -44
  75. package/lib/Icon/IconText.js +49 -21
  76. package/lib/Icon/index.js +31 -4
  77. package/lib/InputLabel/InputLabel.js +70 -36
  78. package/lib/InputLabel/LabelContent.js +31 -0
  79. package/lib/InputLabel/LabelContent.native.js +9 -1
  80. package/lib/InputLabel/index.js +13 -2
  81. package/lib/InputSupports/InputSupports.js +62 -48
  82. package/lib/InputSupports/index.js +13 -2
  83. package/lib/InputSupports/propTypes.js +19 -8
  84. package/lib/InputSupports/useInputSupports.js +41 -0
  85. package/lib/Link/ChevronLink.js +33 -16
  86. package/lib/Link/InlinePressable.js +50 -0
  87. package/lib/Link/InlinePressable.native.js +34 -11
  88. package/lib/Link/Link.js +25 -9
  89. package/lib/Link/LinkBase.js +87 -57
  90. package/lib/Link/TextButton.js +32 -13
  91. package/lib/Link/index.js +39 -5
  92. package/lib/List/List.js +51 -23
  93. package/lib/List/ListItem.js +70 -40
  94. package/lib/List/index.js +13 -2
  95. package/lib/Modal/Modal.js +226 -0
  96. package/lib/Modal/dictionary.js +16 -0
  97. package/lib/Modal/index.js +13 -0
  98. package/lib/Notification/Notification.js +200 -0
  99. package/lib/Notification/dictionary.js +15 -0
  100. package/lib/Notification/index.js +13 -0
  101. package/lib/Pagination/PageButton.js +47 -25
  102. package/lib/Pagination/Pagination.js +70 -40
  103. package/lib/Pagination/SideButton.js +63 -37
  104. package/lib/Pagination/dictionary.js +9 -2
  105. package/lib/Pagination/index.js +13 -2
  106. package/lib/Pagination/usePagination.js +12 -2
  107. package/lib/Progress/Progress.js +99 -0
  108. package/lib/Progress/ProgressBar.js +146 -0
  109. package/lib/Progress/ProgressBarBackground.js +57 -0
  110. package/lib/Progress/index.js +16 -0
  111. package/lib/Radio/Radio.js +110 -109
  112. package/lib/Radio/RadioButton.js +141 -0
  113. package/lib/Radio/RadioGroup.js +233 -0
  114. package/lib/Radio/RadioInput.js +76 -0
  115. package/lib/Radio/RadioInput.native.js +9 -1
  116. package/lib/Radio/index.js +21 -2
  117. package/lib/RadioCard/RadioCard.js +240 -0
  118. package/lib/RadioCard/RadioCardGroup.js +251 -0
  119. package/lib/RadioCard/index.js +21 -0
  120. package/lib/Search/Search.js +243 -0
  121. package/lib/Search/dictionary.js +19 -0
  122. package/lib/Search/index.js +13 -0
  123. package/lib/Select/Group.js +33 -0
  124. package/lib/Select/Group.native.js +16 -5
  125. package/lib/Select/Item.js +29 -0
  126. package/lib/Select/Item.native.js +14 -4
  127. package/lib/Select/Picker.js +79 -0
  128. package/lib/Select/Picker.native.js +52 -24
  129. package/lib/Select/Select.js +110 -82
  130. package/lib/Select/index.js +19 -6
  131. package/lib/SideNav/Item.js +54 -33
  132. package/lib/SideNav/ItemContent.js +41 -15
  133. package/lib/SideNav/ItemsGroup.js +46 -27
  134. package/lib/SideNav/SideNav.js +92 -69
  135. package/lib/SideNav/index.js +15 -1
  136. package/lib/Skeleton/Skeleton.js +55 -37
  137. package/lib/Skeleton/index.js +13 -2
  138. package/lib/Skeleton/skeleton.constant.js +12 -0
  139. package/lib/Skeleton/skeletonWebAnimation.js +27 -0
  140. package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
  141. package/lib/Spacer/Spacer.js +31 -12
  142. package/lib/Spacer/index.js +13 -2
  143. package/lib/StackView/StackView.js +49 -27
  144. package/lib/StackView/StackWrap.js +33 -10
  145. package/lib/StackView/StackWrap.native.js +13 -2
  146. package/lib/StackView/StackWrapBox.js +46 -24
  147. package/lib/StackView/StackWrapGap.js +43 -22
  148. package/lib/StackView/common.js +19 -4
  149. package/lib/StackView/getStackedContent.js +49 -19
  150. package/lib/StackView/index.js +29 -5
  151. package/lib/StepTracker/Step.js +245 -0
  152. package/lib/StepTracker/StepTracker.js +197 -0
  153. package/lib/StepTracker/dictionary.js +17 -0
  154. package/lib/StepTracker/index.js +13 -0
  155. package/lib/Tabs/HorizontalScroll.js +199 -0
  156. package/lib/Tabs/ScrollViewEnd.js +66 -0
  157. package/lib/Tabs/ScrollViewEnd.native.js +41 -0
  158. package/lib/Tabs/Tabs.js +117 -0
  159. package/lib/Tabs/TabsItem.js +234 -0
  160. package/lib/Tabs/TabsScrollButton.js +121 -0
  161. package/lib/Tabs/dictionary.js +18 -0
  162. package/lib/Tabs/index.js +13 -0
  163. package/lib/Tabs/itemPositions.js +128 -0
  164. package/lib/Tags/Tags.js +130 -97
  165. package/lib/Tags/index.js +13 -2
  166. package/lib/TextInput/TextArea.js +51 -24
  167. package/lib/TextInput/TextInput.js +40 -19
  168. package/lib/TextInput/TextInputBase.js +78 -55
  169. package/lib/TextInput/index.js +23 -3
  170. package/lib/TextInput/propTypes.js +18 -7
  171. package/lib/ThemeProvider/ThemeProvider.js +38 -14
  172. package/lib/ThemeProvider/index.js +61 -6
  173. package/lib/ThemeProvider/useSetTheme.js +14 -5
  174. package/lib/ThemeProvider/useTheme.js +13 -4
  175. package/lib/ThemeProvider/useThemeTokens.js +32 -16
  176. package/lib/ThemeProvider/utils/index.js +31 -2
  177. package/lib/ThemeProvider/utils/styles.js +52 -16
  178. package/lib/ThemeProvider/utils/theme-tokens.js +94 -16
  179. package/lib/ToggleSwitch/ToggleSwitch.js +75 -51
  180. package/lib/ToggleSwitch/index.js +13 -2
  181. package/lib/Tooltip/{Backdrop.web.js → Backdrop.js} +22 -18
  182. package/lib/Tooltip/Backdrop.native.js +39 -15
  183. package/lib/Tooltip/Tooltip.js +112 -70
  184. package/lib/Tooltip/dictionary.js +9 -2
  185. package/lib/Tooltip/getTooltipPosition.js +9 -1
  186. package/lib/Tooltip/index.js +13 -2
  187. package/lib/TooltipButton/TooltipButton.js +57 -38
  188. package/lib/TooltipButton/index.js +13 -2
  189. package/lib/Typography/Typography.js +57 -27
  190. package/lib/Typography/index.js +13 -2
  191. package/lib/ViewportProvider/ViewportProvider.js +34 -13
  192. package/lib/ViewportProvider/index.js +28 -3
  193. package/lib/ViewportProvider/useViewport.js +15 -3
  194. package/lib/ViewportProvider/useViewportListener.js +24 -10
  195. package/lib/index.js +509 -33
  196. package/lib/utils/a11y/index.js +18 -1
  197. package/lib/utils/a11y/textSize.js +23 -7
  198. package/lib/utils/animation/index.js +15 -2
  199. package/lib/utils/animation/useVerticalExpandAnimation.js +28 -11
  200. package/lib/utils/children.js +87 -0
  201. package/lib/utils/index.js +163 -10
  202. package/lib/utils/info/index.js +18 -6
  203. package/lib/utils/info/platform/index.js +19 -7
  204. package/lib/utils/info/platform/platform.android.js +8 -1
  205. package/lib/utils/info/platform/platform.ios.js +8 -1
  206. package/lib/utils/info/platform/platform.js +8 -0
  207. package/lib/utils/info/platform/platform.native.js +8 -1
  208. package/lib/utils/info/versions.js +15 -4
  209. package/lib/utils/input.js +51 -33
  210. package/lib/utils/pressability.js +38 -10
  211. package/lib/utils/propTypes.js +217 -125
  212. package/lib/utils/useCopy.js +40 -5
  213. package/lib/utils/useHash.js +48 -0
  214. package/lib/utils/useHash.native.js +15 -0
  215. package/lib/utils/useResponsiveProp.js +21 -9
  216. package/lib/utils/useSpacingScale.js +21 -9
  217. package/lib/utils/useUniqueId.js +13 -4
  218. package/package.json +7 -6
  219. package/release-context.json +4 -4
  220. package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +0 -0
  221. package/src/Box/Box.jsx +11 -4
  222. package/src/Button/Button.jsx +3 -2
  223. package/src/Button/ButtonBase.jsx +27 -36
  224. package/src/Button/ButtonGroup.jsx +2 -2
  225. package/src/Button/ButtonLink.jsx +3 -2
  226. package/src/Button/propTypes.js +12 -2
  227. package/src/Card/Card.jsx +4 -30
  228. package/src/Card/CardBase.jsx +57 -0
  229. package/src/Card/PressableCardBase.jsx +112 -0
  230. package/src/Card/index.js +3 -0
  231. package/src/Checkbox/Checkbox.jsx +10 -11
  232. package/src/Checkbox/CheckboxGroup.jsx +196 -0
  233. package/src/Checkbox/{CheckboxInput.web.jsx → CheckboxInput.jsx} +0 -0
  234. package/src/Checkbox/index.js +2 -0
  235. package/src/ExpandCollapse/Control.jsx +1 -1
  236. package/src/Feedback/Feedback.jsx +1 -1
  237. package/src/Fieldset/Fieldset.jsx +129 -0
  238. package/src/Fieldset/FieldsetContainer.jsx +22 -0
  239. package/src/Fieldset/FieldsetContainer.native.jsx +16 -0
  240. package/src/Fieldset/Legend.jsx +16 -0
  241. package/src/Fieldset/Legend.native.jsx +22 -0
  242. package/src/Fieldset/cssReset.js +14 -0
  243. package/src/Fieldset/index.js +3 -0
  244. package/src/Icon/Icon.jsx +14 -23
  245. package/src/Icon/IconText.jsx +2 -2
  246. package/src/Icon/index.js +2 -2
  247. package/src/InputLabel/InputLabel.jsx +9 -2
  248. package/src/InputLabel/{LabelContent.web.jsx → LabelContent.jsx} +0 -0
  249. package/src/InputSupports/InputSupports.jsx +7 -18
  250. package/src/InputSupports/useInputSupports.js +30 -0
  251. package/src/Link/{InlinePressable.web.jsx → InlinePressable.jsx} +0 -0
  252. package/src/Link/LinkBase.jsx +14 -12
  253. package/src/Modal/Modal.jsx +185 -0
  254. package/src/Modal/dictionary.js +9 -0
  255. package/src/Modal/index.js +3 -0
  256. package/src/Notification/Notification.jsx +149 -0
  257. package/src/Notification/dictionary.js +8 -0
  258. package/src/Notification/index.js +3 -0
  259. package/src/Progress/Progress.jsx +77 -0
  260. package/src/Progress/ProgressBar.jsx +110 -0
  261. package/src/Progress/ProgressBarBackground.jsx +34 -0
  262. package/src/Progress/index.js +6 -0
  263. package/src/Radio/Radio.jsx +19 -56
  264. package/src/Radio/RadioButton.jsx +131 -0
  265. package/src/Radio/RadioGroup.jsx +198 -0
  266. package/src/Radio/{RadioInput.web.jsx → RadioInput.jsx} +0 -0
  267. package/src/Radio/index.js +2 -0
  268. package/src/RadioCard/RadioCard.jsx +191 -0
  269. package/src/RadioCard/RadioCardGroup.jsx +211 -0
  270. package/src/RadioCard/index.js +5 -0
  271. package/src/Search/Search.jsx +204 -0
  272. package/src/Search/dictionary.js +12 -0
  273. package/src/Search/index.js +3 -0
  274. package/src/Select/{Group.web.jsx → Group.jsx} +0 -0
  275. package/src/Select/{Item.web.jsx → Item.jsx} +0 -0
  276. package/src/Select/{Picker.web.jsx → Picker.jsx} +0 -0
  277. package/src/Select/Select.jsx +12 -22
  278. package/src/SideNav/Item.jsx +2 -2
  279. package/src/Skeleton/Skeleton.jsx +17 -20
  280. package/src/Skeleton/skeleton.constant.js +3 -0
  281. package/src/Skeleton/skeletonWebAnimation.js +13 -0
  282. package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
  283. package/src/StackView/StackView.jsx +10 -3
  284. package/src/StackView/StackWrap.jsx +9 -1
  285. package/src/StackView/StackWrapBox.jsx +4 -3
  286. package/src/StackView/StackWrapGap.jsx +3 -3
  287. package/src/StackView/getStackedContent.jsx +8 -2
  288. package/src/StepTracker/Step.jsx +202 -0
  289. package/src/StepTracker/StepTracker.jsx +163 -0
  290. package/src/StepTracker/dictionary.js +10 -0
  291. package/src/StepTracker/index.js +3 -0
  292. package/src/Tabs/HorizontalScroll.jsx +165 -0
  293. package/src/Tabs/ScrollViewEnd.jsx +53 -0
  294. package/src/Tabs/ScrollViewEnd.native.jsx +24 -0
  295. package/src/Tabs/Tabs.jsx +89 -0
  296. package/src/Tabs/TabsItem.jsx +204 -0
  297. package/src/Tabs/TabsScrollButton.jsx +100 -0
  298. package/src/Tabs/dictionary.js +11 -0
  299. package/src/Tabs/index.js +3 -0
  300. package/src/Tabs/itemPositions.js +101 -0
  301. package/src/Tags/Tags.jsx +2 -1
  302. package/src/TextInput/TextInputBase.jsx +12 -22
  303. package/src/ThemeProvider/useThemeTokens.js +2 -2
  304. package/src/ThemeProvider/utils/styles.js +18 -5
  305. package/src/ThemeProvider/utils/theme-tokens.js +46 -5
  306. package/src/ToggleSwitch/ToggleSwitch.jsx +2 -3
  307. package/src/Tooltip/{Backdrop.web.jsx → Backdrop.jsx} +0 -0
  308. package/src/Tooltip/Tooltip.jsx +1 -1
  309. package/src/TooltipButton/TooltipButton.jsx +23 -27
  310. package/src/Typography/Typography.jsx +6 -5
  311. package/src/index.js +20 -2
  312. package/src/utils/children.jsx +66 -0
  313. package/src/utils/index.js +3 -0
  314. package/src/utils/info/platform/platform.js +1 -0
  315. package/src/utils/info/versions.js +2 -2
  316. package/src/utils/input.js +20 -12
  317. package/src/utils/pressability.js +4 -0
  318. package/src/utils/propTypes.js +98 -34
  319. package/src/utils/useCopy.js +30 -4
  320. package/src/utils/useHash.js +34 -0
  321. package/src/utils/useHash.native.js +6 -0
  322. package/stories/A11yText/A11yText.stories.jsx +4 -8
  323. package/stories/Checkbox/Checkbox.stories.jsx +24 -1
  324. package/stories/Icon/Icon.stories.jsx +6 -5
  325. package/stories/Modal/Modal.stories.jsx +29 -0
  326. package/stories/Notification/Notification.stories.jsx +82 -0
  327. package/stories/Progress/Progress.stories.jsx +93 -0
  328. package/stories/Radio/Radio.stories.jsx +23 -36
  329. package/stories/RadioCard/RadioCard.stories.jsx +98 -0
  330. package/stories/Search/Search.stories.jsx +16 -0
  331. package/stories/StepTracker/StepTracker.stories.jsx +71 -0
  332. package/stories/Tabs/Tabs.stories.jsx +97 -0
  333. package/stories/{platform-supports.web.jsx → platform-supports.jsx} +0 -0
  334. package/__fixtures__/accessible.icon.svg +0 -6
  335. package/babel.config.json +0 -8
  336. package/lib/ActivityIndicator/Spinner.web.js +0 -55
  337. package/lib/Checkbox/CheckboxInput.web.js +0 -57
  338. package/lib/InputLabel/LabelContent.web.js +0 -17
  339. package/lib/Link/InlinePressable.web.js +0 -32
  340. package/lib/Radio/RadioInput.web.js +0 -59
  341. package/lib/Select/Group.web.js +0 -18
  342. package/lib/Select/Item.web.js +0 -15
  343. package/lib/Select/Picker.web.js +0 -63
  344. package/lib/config/svgr-icons-web.js +0 -9
  345. package/lib/config/svgr-icons.js +0 -52
  346. package/lib/utils/info/platform/platform.web.js +0 -1
  347. package/src/config/svgr-icons-web.js +0 -11
  348. package/src/config/svgr-icons.js +0 -46
  349. package/src/utils/info/platform/platform.web.js +0 -1
@@ -1,12 +1,28 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { StyleSheet, View } from 'react-native';
4
- import { useSpacingScale, spacingProps } from '../utils';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
13
+
14
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
15
+
16
+ var _utils = require("../utils");
17
+
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
5
22
  /**
6
23
  * @typedef {import('../utils/propTypes.js').SpacingValue} SpacingValue
7
24
  * @typedef {import('../utils/propTypes.js').SpacingObject} SpacingObject
8
25
  */
9
-
10
26
  const selectSizeStyle = (size, direction) => ({
11
27
  // Only apply space in one direction at a time, else large spacers will increase the
12
28
  // 'across' size of the parent and mess up siblings with styles like `alignItems: stretch`.
@@ -59,9 +75,9 @@ const Spacer = ({
59
75
  direction = 'column',
60
76
  testID
61
77
  }) => {
62
- const size = useSpacingScale(space);
78
+ const size = (0, _utils.useSpacingScale)(space);
63
79
  const sizeStyle = selectSizeStyle(size, direction);
64
- return /*#__PURE__*/React.createElement(View, {
80
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
65
81
  testID: testID,
66
82
  style: [staticStyles.stretch, sizeStyle]
67
83
  });
@@ -73,7 +89,7 @@ Spacer.propTypes = {
73
89
  * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
74
90
  * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
75
91
  */
76
- space: spacingProps.types.spacingValue,
92
+ space: _utils.spacingProps.types.spacingValue,
77
93
 
78
94
  /**
79
95
  * The spacer applies space in only one direction, which is controlled by the `direction` prop:
@@ -81,18 +97,21 @@ Spacer.propTypes = {
81
97
  * - `'column'` (default) applies space vertically; has a fixed height and not width.
82
98
  * - `'row'` applies space horizontally; has a fixed width and not height.
83
99
  */
84
- direction: PropTypes.oneOf(['column', 'row']),
100
+ direction: _propTypes.default.oneOf(['column', 'row']),
85
101
 
86
102
  /**
87
103
  * @ignore
88
104
  * In tests, the only way to select Spacers is with testID prop and getByTestId, since they have no content,
89
105
  * no accessibility role, and there is no equivalent of nextSibling in React Native Testing Library.
90
106
  */
91
- testID: PropTypes.string
107
+ testID: _propTypes.default.string
92
108
  };
93
- const staticStyles = StyleSheet.create({
109
+
110
+ const staticStyles = _StyleSheet.default.create({
94
111
  stretch: {
95
112
  alignSelf: 'stretch'
96
113
  }
97
114
  });
98
- export default Spacer;
115
+
116
+ var _default = Spacer;
117
+ exports.default = _default;
@@ -1,2 +1,13 @@
1
- import Spacer from './Spacer';
2
- export default Spacer;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _Spacer = _interopRequireDefault(require("./Spacer"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _Spacer.default;
13
+ exports.default = _default;
@@ -1,12 +1,32 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { View } from 'react-native';
4
- import Divider from '../Divider';
5
- import { spacingProps, a11yProps, responsiveProps, variantProp, useResponsiveProp } from '../utils';
6
- import { useThemeTokens } from '../ThemeProvider';
7
- import { useViewport } from '../ViewportProvider';
8
- import getStackedContent from './getStackedContent';
9
- import { staticStyles, selectFlexStyles } from './common';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _Divider = _interopRequireDefault(require("../Divider"));
15
+
16
+ var _utils = require("../utils");
17
+
18
+ var _ThemeProvider = require("../ThemeProvider");
19
+
20
+ var _ViewportProvider = require("../ViewportProvider");
21
+
22
+ var _getStackedContent = _interopRequireDefault(require("./getStackedContent"));
23
+
24
+ var _common = require("./common");
25
+
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
10
30
  /**
11
31
  * StackView evenly spaces its children, by default placing `Spacer` components between them.
12
32
  *
@@ -49,7 +69,6 @@ import { staticStyles, selectFlexStyles } from './common';
49
69
  * It applies no accessibility props of its own, unless `divider` prop is passed (`Divider` has a
50
70
  * semantic role but only on web, not within native apps).
51
71
  */
52
-
53
72
  const StackView = ({
54
73
  space = 1,
55
74
  divider,
@@ -59,49 +78,52 @@ const StackView = ({
59
78
  tokens,
60
79
  ...rest
61
80
  }) => {
62
- const viewport = useViewport();
63
- const direction = useResponsiveProp(directionProp, 'column');
64
- const a11y = a11yProps.select({ ...rest
65
- });
66
- const content = getStackedContent(children, {
81
+ const viewport = (0, _ViewportProvider.useViewport)();
82
+ const direction = (0, _utils.useResponsiveProp)(directionProp, 'column');
83
+ const props = { ..._utils.a11yProps.select(rest),
84
+ ..._utils.viewProps.select(rest)
85
+ };
86
+ const content = (0, _getStackedContent.default)(children, {
67
87
  direction,
68
88
  divider,
69
89
  space
70
90
  });
71
- const themeTokens = useThemeTokens('StackView', tokens, variant, {
91
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
72
92
  viewport
73
93
  });
74
- const flexStyles = selectFlexStyles(themeTokens);
75
- return /*#__PURE__*/React.createElement(View, Object.assign({}, a11y, {
76
- style: [flexStyles, staticStyles[direction]]
77
- }), content);
94
+ const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
95
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, { ...props,
96
+ style: [flexStyles, _common.staticStyles[direction]],
97
+ children: content
98
+ });
78
99
  };
79
100
 
80
- StackView.propTypes = { ...a11yProps.propTypes,
81
- variant: variantProp.propType,
101
+ StackView.propTypes = { ..._utils.a11yProps.propTypes,
102
+ variant: _utils.variantProp.propType,
82
103
 
83
104
  /**
84
105
  * Sets the `flexDirection` of the container and, if `divider` is used, gives the Divider the appropriate direction.
85
106
  */
86
- direction: responsiveProps.getTypeOptionallyByViewport(PropTypes.oneOf(['column', 'row', 'column-reverse', 'row-reverse'])),
107
+ direction: _utils.responsiveProps.getTypeOptionallyByViewport(_propTypes.default.oneOf(['column', 'row', 'column-reverse', 'row-reverse'])),
87
108
 
88
109
  /**
89
110
  * If true, renders a UDS `Divider` component between each item. If an object is passed,
90
111
  * this object is passes as props to each Divider.
91
112
  */
92
- divider: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape(Divider.propTypes)]),
113
+ divider: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.shape(_Divider.default.propTypes)]),
93
114
 
94
115
  /**
95
116
  * The size of the spacer according to the theme's spacing scale.
96
117
  * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
97
118
  * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
98
119
  */
99
- space: spacingProps.types.spacingValue,
120
+ space: _utils.spacingProps.types.spacingValue,
100
121
 
101
122
  /**
102
123
  * A StackView may take any children, but will have no effect if it is only passed one child or is passed children
103
124
  * wrapped in a component. If necessary, children may be wrapped in one React Fragment.
104
125
  */
105
- children: PropTypes.node
126
+ children: _propTypes.default.node
106
127
  };
107
- export default StackView;
128
+ var _default = StackView;
129
+ exports.default = _default;
@@ -1,8 +1,24 @@
1
- import React from 'react';
2
- import StackWrapBox from './StackWrapBox';
3
- import StackWrapGap from './StackWrapGap'; // CSS.supports needs an example of the type of value you intend to use.
4
- // Will be an integer appended `px` after hooks and JSX styles are resolved.
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
+
12
+ var _StackWrapBox = _interopRequireDefault(require("./StackWrapBox"));
5
13
 
14
+ var _StackWrapGap = _interopRequireDefault(require("./StackWrapGap"));
15
+
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ // CSS.supports needs an example of the type of value you intend to use.
21
+ // Will be an integer appended `px` after hooks and JSX styles are resolved.
6
22
  const exampleGapValue = '1px';
7
23
  /**
8
24
  * StackWrap is an alternative to StackView where the spaced items are allowed to wrap.
@@ -13,20 +29,27 @@ const exampleGapValue = '1px';
13
29
  */
14
30
 
15
31
  const StackWrap = props => {
32
+ var _props$gap, _CSS;
33
+
16
34
  const {
17
35
  space
18
36
  } = props; // Don't apply separate gap if `null` or `undefined`, so can be unset in Storybook etc
19
37
  // eslint-disable-next-line react/destructuring-assignment
20
38
 
21
- const gap = props.gap ?? space;
22
- return gap === space && CSS?.supports('gap', exampleGapValue) ?
39
+ const gap = (_props$gap = props.gap) !== null && _props$gap !== void 0 ? _props$gap : space;
40
+ const canUseCSSGap = _Platform.default.OS === 'web' && gap === space && // In Jest/CI, global CSS isn't always available and doesn't always have .supports method
41
+ typeof ((_CSS = CSS) === null || _CSS === void 0 ? void 0 : _CSS.supports) === 'function' && CSS.supports('gap', exampleGapValue);
42
+ return canUseCSSGap ?
23
43
  /*#__PURE__*/
24
44
  // If possible, use the cleaner implementation that applies CSS `gap` styles to the container.
25
- React.createElement(StackWrapGap, props) :
45
+ (0, _jsxRuntime.jsx)(_StackWrapGap.default, { ...props
46
+ }) :
26
47
  /*#__PURE__*/
27
48
  // Else, use the fallback implementation which renders a `Box` component around each child.
28
- React.createElement(StackWrapBox, props);
49
+ (0, _jsxRuntime.jsx)(_StackWrapBox.default, { ...props
50
+ });
29
51
  };
30
52
 
31
- StackWrap.propTypes = StackWrapBox.propTypes;
32
- export default StackWrap;
53
+ StackWrap.propTypes = _StackWrapBox.default.propTypes;
54
+ var _default = StackWrap;
55
+ exports.default = _default;
@@ -1,3 +1,14 @@
1
- import StackWrapBox from './StackWrapBox'; // No support for CSS `gap` on React Native, so always use the fallback "box" implementation.
1
+ "use strict";
2
2
 
3
- export default StackWrapBox;
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _StackWrapBox = _interopRequireDefault(require("./StackWrapBox"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ // No support for CSS `gap` on React Native, so always use the fallback "box" implementation.
13
+ var _default = _StackWrapBox.default;
14
+ exports.default = _default;
@@ -1,11 +1,30 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { View } from 'react-native';
4
- import { spacingProps, a11yProps, responsiveProps, useSpacingScale, useResponsiveProp } from '../utils';
5
- import { useThemeTokens } from '../ThemeProvider';
6
- import { useViewport } from '../ViewportProvider';
7
- import getStackedContent from './getStackedContent';
8
- import { staticStyles, selectFlexStyles } from './common';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _utils = require("../utils");
15
+
16
+ var _ThemeProvider = require("../ThemeProvider");
17
+
18
+ var _ViewportProvider = require("../ViewportProvider");
19
+
20
+ var _getStackedContent = _interopRequireDefault(require("./getStackedContent"));
21
+
22
+ var _common = require("./common");
23
+
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
9
28
  const offsetSides = {
10
29
  row: 'marginBottom',
11
30
  column: 'marginRight'
@@ -40,16 +59,17 @@ const StackWrapBox = ({
40
59
  variant,
41
60
  ...rest
42
61
  }) => {
43
- const viewport = useViewport();
44
- const direction = useResponsiveProp(directionProp, 'row');
45
- const themeTokens = useThemeTokens('StackView', tokens, variant, {
62
+ const viewport = (0, _ViewportProvider.useViewport)();
63
+ const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
64
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
46
65
  viewport
47
66
  });
48
- const flexStyles = selectFlexStyles(themeTokens);
49
- const a11y = a11yProps.select({ ...rest
50
- }); // Mimic CSS `gap` using box spacing on the side after a wrapped row then offsetting it on the last row.
67
+ const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
68
+ const props = { ..._utils.a11yProps.select(rest),
69
+ ..._utils.viewProps.select(rest)
70
+ }; // Mimic CSS `gap` using box spacing on the side after a wrapped row then offsetting it on the last row.
51
71
 
52
- const gapSize = useSpacingScale(gap);
72
+ const gapSize = (0, _utils.useSpacingScale)(gap);
53
73
  const offsetStyle = {
54
74
  [offsetSides[direction]]: -1 * gapSize
55
75
  };
@@ -57,34 +77,36 @@ const StackWrapBox = ({
57
77
  [gapSides[direction]]: gap,
58
78
  [spaceSides[direction]]: space
59
79
  };
60
- const content = getStackedContent(children, {
80
+ const content = (0, _getStackedContent.default)(children, {
61
81
  direction,
62
82
  space: 0,
63
83
  box: boxProps
64
84
  });
65
- return /*#__PURE__*/React.createElement(View, Object.assign({}, a11y, {
66
- style: [flexStyles, staticStyles.wrap, staticStyles[direction], offsetStyle]
67
- }), content);
85
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, { ...props,
86
+ style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], offsetStyle],
87
+ children: content
88
+ });
68
89
  };
69
90
 
70
- StackWrapBox.propTypes = { ...a11yProps.propTypes,
91
+ StackWrapBox.propTypes = { ..._utils.a11yProps.propTypes,
71
92
 
72
93
  /**
73
94
  * Sets the `flexDirection` of the container
74
95
  */
75
- direction: responsiveProps.getTypeOptionallyByViewport(PropTypes.oneOf(['column', 'row', 'row-reverse', 'column-reverse'])),
96
+ direction: _utils.responsiveProps.getTypeOptionallyByViewport(_propTypes.default.oneOf(['column', 'row', 'row-reverse', 'column-reverse'])),
76
97
 
77
98
  /**
78
99
  * The size of the spacer according to the theme's spacing scale.
79
100
  * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
80
101
  * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
81
102
  */
82
- space: spacingProps.types.spacingValue,
103
+ space: _utils.spacingProps.types.spacingValue,
83
104
 
84
105
  /**
85
106
  * A StackWrap may take any children, but will have no effect if it is only passed one child or is passed children
86
107
  * wrapped in a component. If necessary, children may be wrapped in one React Fragment.
87
108
  */
88
- children: PropTypes.node
109
+ children: _propTypes.default.node
89
110
  };
90
- export default StackWrapBox;
111
+ var _default = StackWrapBox;
112
+ exports.default = _default;
@@ -1,11 +1,30 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import StackWrapBox from './StackWrapBox';
4
- import { a11yProps, useSpacingScale, useResponsiveProp } from '../utils';
5
- import { useThemeTokens } from '../ThemeProvider';
6
- import { useViewport } from '../ViewportProvider';
7
- import getStackedContent from './getStackedContent';
8
- import { staticStyles, selectFlexStyles } from './common';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
11
+
12
+ var _StackWrapBox = _interopRequireDefault(require("./StackWrapBox"));
13
+
14
+ var _utils = require("../utils");
15
+
16
+ var _ThemeProvider = require("../ThemeProvider");
17
+
18
+ var _ViewportProvider = require("../ViewportProvider");
19
+
20
+ var _getStackedContent = _interopRequireDefault(require("./getStackedContent"));
21
+
22
+ var _common = require("./common");
23
+
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
9
28
  /**
10
29
  * The primary implementation of StackWrap.
11
30
  *
@@ -16,7 +35,6 @@ import { staticStyles, selectFlexStyles } from './common';
16
35
  * - The `space` between items is the same as the `gap` between wrapped rows (this is the
17
36
  * default if `gap` prop is undefined)
18
37
  */
19
-
20
38
  const StackWrapGap = ({
21
39
  space = 1,
22
40
  tokens,
@@ -25,26 +43,29 @@ const StackWrapGap = ({
25
43
  children,
26
44
  ...rest
27
45
  }) => {
28
- const viewport = useViewport();
29
- const direction = useResponsiveProp(directionProp, 'row');
30
- const themeTokens = useThemeTokens('StackView', tokens, variant, {
46
+ const viewport = (0, _ViewportProvider.useViewport)();
47
+ const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
48
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
31
49
  viewport
32
50
  });
33
- const flexStyles = selectFlexStyles(themeTokens);
34
- const a11y = a11yProps.select({ ...rest
35
- });
36
- const size = useSpacingScale(space);
51
+ const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
52
+ const props = { ..._utils.a11yProps.select(rest),
53
+ ..._utils.viewProps.select(rest)
54
+ };
55
+ const size = (0, _utils.useSpacingScale)(space);
37
56
  const gapStyle = {
38
57
  gap: size
39
58
  };
40
- const content = getStackedContent(children, {
59
+ const content = (0, _getStackedContent.default)(children, {
41
60
  direction,
42
61
  space: 0
43
62
  });
44
- return /*#__PURE__*/React.createElement(View, Object.assign({}, a11y, {
45
- style: [flexStyles, staticStyles.wrap, staticStyles[direction], gapStyle]
46
- }), content);
63
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, { ...props,
64
+ style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], gapStyle],
65
+ children: content
66
+ });
47
67
  };
48
68
 
49
- StackWrapGap.propTypes = StackWrapBox.propTypes;
50
- export default StackWrapGap;
69
+ StackWrapGap.propTypes = _StackWrapBox.default.propTypes;
70
+ var _default = StackWrapGap;
71
+ exports.default = _default;
@@ -1,5 +1,15 @@
1
- import { StyleSheet } from 'react-native';
2
- export const selectFlexStyles = ({
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.staticStyles = exports.selectFlexStyles = void 0;
7
+
8
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const selectFlexStyles = ({
3
13
  alignItems,
4
14
  justifyContent,
5
15
  flexGrow
@@ -8,7 +18,10 @@ export const selectFlexStyles = ({
8
18
  justifyContent,
9
19
  flexGrow
10
20
  });
11
- export const staticStyles = StyleSheet.create({
21
+
22
+ exports.selectFlexStyles = selectFlexStyles;
23
+
24
+ const staticStyles = _StyleSheet.default.create({
12
25
  wrap: {
13
26
  flexShrink: 1,
14
27
  flexWrap: 'wrap'
@@ -27,4 +40,6 @@ export const staticStyles = StyleSheet.create({
27
40
  'column-reverse': {
28
41
  flexDirection: 'column-reverse'
29
42
  }
30
- });
43
+ });
44
+
45
+ exports.staticStyles = staticStyles;
@@ -1,7 +1,26 @@
1
- import React, { Children, Fragment } from 'react';
2
- import Box from '../Box';
3
- import Divider from '../Divider';
4
- import Spacer from '../Spacer';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _Box = _interopRequireDefault(require("../Box"));
11
+
12
+ var _Divider = _interopRequireDefault(require("../Divider"));
13
+
14
+ var _Spacer = _interopRequireDefault(require("../Spacer"));
15
+
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
5
24
  /**
6
25
  * @typedef {import('react').ReactChildren} ReactChildren
7
26
  * @typedef {import('react').ReactElement} ReactElement
@@ -21,46 +40,54 @@ import Spacer from '../Spacer';
21
40
  * - `direction`: if 'row' or 'row-reverse', applies space horizontally, if 'column' or 'column-reverse', applies space vertically
22
41
  * - `box`: if truthy, wraps each valid child in a Box component; if an object, passes it to Box as props
23
42
  * - `divider`: if truthy, inserts Divider components; if an object, passes it to Divider as props
43
+ * - `preserveFragments`: if true, adds no space between top-level elements that were passed inside a nested fragment
24
44
  * @param {SpacingValue} [options.space]
25
45
  * @param {boolean | object} [options.divider]
26
46
  * @param {"row" | "column" | "row-reverse" | "column-reverse"} [options.direction]
47
+ * @param {boolean} [options.preserveFragments]
27
48
  * @returns {ReactElement[]}
28
49
  */
29
-
30
50
  const getStackedContent = (children, {
31
51
  divider,
32
52
  space,
33
53
  direction = 'column',
34
- box
54
+ box,
55
+ preserveFragments = false
35
56
  }) => {
36
57
  const boxProps = box && typeof box === 'object' ? box : {
37
58
  space
38
59
  };
39
60
  const dividerProps = divider && typeof divider === 'object' ? divider : {}; // Avoid surprises if children contains comments, nulls, or is a variable wrapped as a fragment
40
61
 
41
- const validChildren = Children.toArray(unpackFragment(children)).filter(Boolean);
62
+ const topLevelChildren = preserveFragments ? children : unpackFragment(children);
63
+
64
+ const validChildren = _react.Children.toArray(topLevelChildren).filter(Boolean);
65
+
42
66
  const content = validChildren.reduce((newChildren, child, index) => {
43
- const boxID = `Stack-Box-${index}`;
67
+ const boxID = "Stack-Box-".concat(index);
44
68
  const item = box ?
45
69
  /*#__PURE__*/
46
70
  // If wrapped in Box, that Box needs a key.
47
71
  // If possible, use an existing content key; use an index-based key only if necessary.
48
- React.createElement(Box, Object.assign({}, boxProps, {
72
+ (0, _react.createElement)(_Box.default, { ...boxProps,
49
73
  key: child.key || boxID,
50
74
  testID: boxID
51
- }), child) : child;
75
+ }, child) : child;
52
76
  if (!index || !space && !divider) return [...newChildren, item];
53
- const testID = `Stack-${divider ? 'Divider' : 'Spacer'}-${index}`;
77
+ const testID = "Stack-".concat(divider ? 'Divider' : 'Spacer', "-").concat(index);
54
78
  const commonProps = {
55
79
  testID,
56
80
  key: testID,
57
81
  space
58
82
  };
59
- const separator = divider ? /*#__PURE__*/React.createElement(Divider, Object.assign({
60
- vertical: direction.startsWith('row')
61
- }, dividerProps, commonProps)) : /*#__PURE__*/React.createElement(Spacer, Object.assign({
62
- direction: direction.startsWith('row') ? 'row' : 'column'
63
- }, commonProps));
83
+ const separator = divider ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {
84
+ vertical: direction.startsWith('row'),
85
+ ...dividerProps,
86
+ ...commonProps
87
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
88
+ direction: direction.startsWith('row') ? 'row' : 'column',
89
+ ...commonProps
90
+ });
64
91
  return [...newChildren, separator, item];
65
92
  }, []);
66
93
  return content;
@@ -100,12 +127,15 @@ const getStackedContent = (children, {
100
127
 
101
128
 
102
129
  const unpackFragment = child => {
130
+ var _child$props;
131
+
103
132
  // If this level is a set of top-level siblings rather than one child, check each in turn
104
- if (Children.count(child) > 1) return Children.map(child, unpackFragment); // When a fragment is found, unpack its children to the top level and check them
133
+ if (_react.Children.count(child) > 1) return _react.Children.map(child, unpackFragment); // When a fragment is found, unpack its children to the top level and check them
105
134
 
106
- if (child?.type === Fragment) return unpackFragment(child.props?.children); // Stop unpacking as soon as any non-fragment child is found
135
+ if ((child === null || child === void 0 ? void 0 : child.type) === _react.Fragment) return unpackFragment((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children); // Stop unpacking as soon as any non-fragment child is found
107
136
 
108
137
  return child;
109
138
  };
110
139
 
111
- export default getStackedContent;
140
+ var _default = getStackedContent;
141
+ exports.default = _default;