@telus-uds/components-base 1.2.0 → 1.4.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 (415) hide show
  1. package/.turbo/turbo-build.log +8 -0
  2. package/CHANGELOG.json +61 -0
  3. package/CHANGELOG.md +45 -2
  4. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
  5. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
  6. package/__tests__/FlexGrid/Col.test.jsx +6 -10
  7. package/__tests__/utils/props.test.js +36 -0
  8. package/__tests__/utils/semantics.test.jsx +1 -10
  9. package/babel.config.js +27 -5
  10. package/component-docs.json +170 -494
  11. package/generate-component-docs.js +3 -0
  12. package/lib/A11yText/index.js +6 -5
  13. package/lib/ActivityIndicator/Spinner.js +46 -37
  14. package/lib/ActivityIndicator/Spinner.native.js +26 -15
  15. package/lib/ActivityIndicator/index.js +3 -3
  16. package/lib/Box/Box.js +8 -8
  17. package/lib/Button/Button.js +2 -2
  18. package/lib/Button/ButtonBase.js +7 -8
  19. package/lib/Button/ButtonGroup.js +10 -12
  20. package/lib/Button/ButtonLink.js +4 -4
  21. package/lib/Button/propTypes.js +4 -2
  22. package/lib/Card/Card.js +6 -5
  23. package/lib/Card/CardBase.js +6 -9
  24. package/lib/Card/PressableCardBase.js +6 -11
  25. package/lib/Checkbox/Checkbox.js +4 -6
  26. package/lib/Divider/Divider.js +14 -13
  27. package/lib/ExpandCollapse/Control.js +7 -7
  28. package/lib/ExpandCollapse/ExpandCollapse.js +6 -2
  29. package/lib/ExpandCollapse/Panel.js +6 -7
  30. package/lib/Feedback/Feedback.js +6 -5
  31. package/lib/Fieldset/Fieldset.js +1 -3
  32. package/lib/FlexGrid/FlexGrid.js +4 -4
  33. package/lib/FlexGrid/helpers/index.js +1 -4
  34. package/lib/HorizontalScroll/HorizontalScroll.js +5 -6
  35. package/lib/IconButton/IconButton.js +6 -6
  36. package/lib/InputLabel/InputLabel.js +7 -2
  37. package/lib/InputSupports/InputSupports.js +2 -2
  38. package/lib/Link/LinkBase.js +12 -13
  39. package/lib/List/List.js +4 -6
  40. package/lib/List/ListItem.js +6 -2
  41. package/lib/Modal/Modal.js +6 -2
  42. package/lib/Notification/Notification.js +12 -8
  43. package/lib/Pagination/Pagination.js +8 -3
  44. package/lib/Progress/Progress.js +5 -4
  45. package/lib/Progress/ProgressBar.js +8 -7
  46. package/lib/Radio/Radio.js +4 -6
  47. package/lib/Radio/RadioButton.js +6 -3
  48. package/lib/Radio/RadioGroup.js +7 -2
  49. package/lib/RadioCard/RadioCard.js +4 -4
  50. package/lib/RadioCard/RadioCardGroup.js +9 -6
  51. package/lib/Search/Search.js +7 -2
  52. package/lib/Select/Select.js +10 -9
  53. package/lib/SideNav/Item.js +7 -7
  54. package/lib/SideNav/SideNav.js +7 -3
  55. package/lib/Skeleton/Skeleton.js +6 -2
  56. package/lib/Spacer/Spacer.js +9 -20
  57. package/lib/StackView/StackView.js +7 -7
  58. package/lib/StackView/StackWrapBox.js +6 -7
  59. package/lib/StackView/StackWrapGap.js +6 -5
  60. package/lib/StackView/getStackedContent.js +1 -1
  61. package/lib/StepTracker/Step.js +7 -3
  62. package/lib/StepTracker/StepTracker.js +7 -7
  63. package/lib/Tabs/Tabs.js +6 -2
  64. package/lib/Tabs/TabsItem.js +6 -5
  65. package/lib/Tags/Tags.js +11 -12
  66. package/lib/TextInput/TextArea.js +13 -14
  67. package/lib/TextInput/TextInput.js +13 -14
  68. package/lib/TextInput/TextInputBase.js +5 -3
  69. package/lib/ThemeProvider/useThemeTokens.js +3 -3
  70. package/lib/ThemeProvider/utils/theme-tokens.js +3 -3
  71. package/lib/ToggleSwitch/ToggleSwitch.js +10 -9
  72. package/lib/ToggleSwitch/ToggleSwitchGroup.js +10 -12
  73. package/lib/Tooltip/Tooltip.js +7 -2
  74. package/lib/TooltipButton/TooltipButton.js +7 -2
  75. package/lib/Typography/Typography.js +8 -6
  76. package/lib/index.js +7 -0
  77. package/lib/utils/a11y/semantics.js +4 -3
  78. package/lib/utils/children.js +5 -1
  79. package/lib/utils/index.js +18 -4
  80. package/lib/utils/pressability.js +2 -2
  81. package/lib/utils/props/a11yProps.js +153 -0
  82. package/lib/utils/props/clickProps.js +36 -0
  83. package/lib/utils/props/componentPropType.js +70 -0
  84. package/lib/utils/props/copyPropTypes.js +14 -0
  85. package/lib/utils/props/getPropSelector.js +13 -0
  86. package/lib/utils/props/hrefAttrsProp.js +41 -0
  87. package/lib/utils/props/index.js +158 -0
  88. package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
  89. package/lib/utils/props/linkProps.js +64 -0
  90. package/lib/utils/props/paddingProp.js +20 -0
  91. package/lib/utils/props/pressProps.js +57 -0
  92. package/lib/utils/props/rectProp.js +20 -0
  93. package/lib/utils/props/responsiveProps.js +40 -0
  94. package/lib/utils/props/selectSystemProps.js +31 -0
  95. package/lib/utils/props/spacingProps.js +71 -0
  96. package/lib/utils/props/tokens.js +145 -0
  97. package/lib/utils/props/variantProp.js +28 -0
  98. package/lib/utils/props/viewProps.js +34 -0
  99. package/lib/utils/ssr.js +51 -0
  100. package/lib/utils/useResponsiveProp.js +1 -1
  101. package/lib/utils/useSpacingScale.js +4 -4
  102. package/lib-module/A11yInfoProvider/index.js +62 -0
  103. package/lib-module/A11yText/index.js +55 -0
  104. package/lib-module/ActivityIndicator/Spinner.js +76 -0
  105. package/lib-module/ActivityIndicator/Spinner.native.js +143 -0
  106. package/lib-module/ActivityIndicator/index.js +40 -0
  107. package/lib-module/ActivityIndicator/shared.js +12 -0
  108. package/lib-module/BaseProvider/index.js +26 -0
  109. package/lib-module/Box/Box.js +243 -0
  110. package/lib-module/Box/index.js +2 -0
  111. package/lib-module/Button/Button.js +25 -0
  112. package/lib-module/Button/ButtonBase.js +254 -0
  113. package/lib-module/Button/ButtonGroup.js +164 -0
  114. package/lib-module/Button/ButtonLink.js +39 -0
  115. package/lib-module/Button/index.js +4 -0
  116. package/lib-module/Button/propTypes.js +36 -0
  117. package/lib-module/Card/Card.js +83 -0
  118. package/lib-module/Card/CardBase.js +62 -0
  119. package/lib-module/Card/PressableCardBase.js +113 -0
  120. package/lib-module/Card/index.js +4 -0
  121. package/lib-module/Checkbox/Checkbox.js +321 -0
  122. package/lib-module/Checkbox/CheckboxGroup.js +218 -0
  123. package/lib-module/Checkbox/CheckboxInput.js +58 -0
  124. package/lib-module/Checkbox/CheckboxInput.native.js +6 -0
  125. package/lib-module/Checkbox/index.js +3 -0
  126. package/lib-module/Divider/Divider.js +123 -0
  127. package/lib-module/Divider/index.js +2 -0
  128. package/lib-module/ExpandCollapse/Accordion.js +15 -0
  129. package/lib-module/ExpandCollapse/Control.js +130 -0
  130. package/lib-module/ExpandCollapse/ExpandCollapse.js +94 -0
  131. package/lib-module/ExpandCollapse/Panel.js +158 -0
  132. package/lib-module/ExpandCollapse/index.js +7 -0
  133. package/lib-module/Feedback/Feedback.js +144 -0
  134. package/lib-module/Feedback/index.js +2 -0
  135. package/lib-module/Fieldset/Fieldset.js +145 -0
  136. package/lib-module/Fieldset/FieldsetContainer.js +29 -0
  137. package/lib-module/Fieldset/FieldsetContainer.native.js +20 -0
  138. package/lib-module/Fieldset/Legend.js +21 -0
  139. package/lib-module/Fieldset/Legend.native.js +28 -0
  140. package/lib-module/Fieldset/cssReset.js +14 -0
  141. package/lib-module/Fieldset/index.js +2 -0
  142. package/lib-module/FlexGrid/Col/Col.js +265 -0
  143. package/lib-module/FlexGrid/Col/index.js +2 -0
  144. package/lib-module/FlexGrid/FlexGrid.js +147 -0
  145. package/lib-module/FlexGrid/Row/Row.js +177 -0
  146. package/lib-module/FlexGrid/Row/index.js +2 -0
  147. package/lib-module/FlexGrid/helpers/index.js +18 -0
  148. package/lib-module/FlexGrid/index.js +2 -0
  149. package/lib-module/FlexGrid/providers/GutterContext.js +3 -0
  150. package/lib-module/HorizontalScroll/HorizontalScroll.js +171 -0
  151. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +102 -0
  152. package/lib-module/HorizontalScroll/ScrollViewEnd.js +47 -0
  153. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +24 -0
  154. package/lib-module/HorizontalScroll/dictionary.js +11 -0
  155. package/lib-module/HorizontalScroll/index.js +11 -0
  156. package/lib-module/HorizontalScroll/itemPositions.js +106 -0
  157. package/lib-module/Icon/Icon.js +61 -0
  158. package/lib-module/Icon/IconText.js +81 -0
  159. package/lib-module/Icon/index.js +4 -0
  160. package/lib-module/IconButton/IconButton.js +115 -0
  161. package/lib-module/IconButton/index.js +2 -0
  162. package/lib-module/InputLabel/InputLabel.js +131 -0
  163. package/lib-module/InputLabel/LabelContent.js +24 -0
  164. package/lib-module/InputLabel/LabelContent.native.js +16 -0
  165. package/lib-module/InputLabel/index.js +2 -0
  166. package/lib-module/InputSupports/InputSupports.js +88 -0
  167. package/lib-module/InputSupports/index.js +2 -0
  168. package/lib-module/InputSupports/useInputSupports.js +31 -0
  169. package/lib-module/Link/ChevronLink.js +51 -0
  170. package/lib-module/Link/InlinePressable.js +37 -0
  171. package/lib-module/Link/InlinePressable.native.js +85 -0
  172. package/lib-module/Link/Link.js +27 -0
  173. package/lib-module/Link/LinkBase.js +210 -0
  174. package/lib-module/Link/TextButton.js +43 -0
  175. package/lib-module/Link/index.js +5 -0
  176. package/lib-module/List/List.js +55 -0
  177. package/lib-module/List/ListItem.js +213 -0
  178. package/lib-module/List/index.js +5 -0
  179. package/lib-module/Modal/Modal.js +208 -0
  180. package/lib-module/Modal/dictionary.js +9 -0
  181. package/lib-module/Modal/index.js +2 -0
  182. package/lib-module/Notification/Notification.js +196 -0
  183. package/lib-module/Notification/dictionary.js +8 -0
  184. package/lib-module/Notification/index.js +2 -0
  185. package/lib-module/Pagination/PageButton.js +65 -0
  186. package/lib-module/Pagination/Pagination.js +140 -0
  187. package/lib-module/Pagination/SideButton.js +103 -0
  188. package/lib-module/Pagination/dictionary.js +18 -0
  189. package/lib-module/Pagination/index.js +2 -0
  190. package/lib-module/Pagination/usePagination.js +72 -0
  191. package/lib-module/Progress/Progress.js +85 -0
  192. package/lib-module/Progress/ProgressBar.js +134 -0
  193. package/lib-module/Progress/ProgressBarBackground.js +41 -0
  194. package/lib-module/Progress/index.js +4 -0
  195. package/lib-module/Radio/Radio.js +263 -0
  196. package/lib-module/Radio/RadioButton.js +128 -0
  197. package/lib-module/Radio/RadioGroup.js +225 -0
  198. package/lib-module/Radio/RadioInput.js +60 -0
  199. package/lib-module/Radio/RadioInput.native.js +6 -0
  200. package/lib-module/Radio/index.js +3 -0
  201. package/lib-module/RadioCard/RadioCard.js +218 -0
  202. package/lib-module/RadioCard/RadioCardGroup.js +232 -0
  203. package/lib-module/RadioCard/index.js +3 -0
  204. package/lib-module/Search/Search.js +233 -0
  205. package/lib-module/Search/dictionary.js +12 -0
  206. package/lib-module/Search/index.js +2 -0
  207. package/lib-module/Select/Group.js +20 -0
  208. package/lib-module/Select/Group.native.js +14 -0
  209. package/lib-module/Select/Item.js +17 -0
  210. package/lib-module/Select/Item.native.js +9 -0
  211. package/lib-module/Select/Picker.js +67 -0
  212. package/lib-module/Select/Picker.native.js +110 -0
  213. package/lib-module/Select/Select.js +317 -0
  214. package/lib-module/Select/index.js +6 -0
  215. package/lib-module/SideNav/Item.js +139 -0
  216. package/lib-module/SideNav/ItemContent.js +45 -0
  217. package/lib-module/SideNav/ItemsGroup.js +115 -0
  218. package/lib-module/SideNav/SideNav.js +133 -0
  219. package/lib-module/SideNav/index.js +1 -0
  220. package/lib-module/Skeleton/Skeleton.js +117 -0
  221. package/lib-module/Skeleton/index.js +2 -0
  222. package/lib-module/Skeleton/skeleton.constant.js +3 -0
  223. package/lib-module/Skeleton/skeletonWebAnimation.js +18 -0
  224. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +24 -0
  225. package/lib-module/Spacer/Spacer.js +97 -0
  226. package/lib-module/Spacer/index.js +2 -0
  227. package/lib-module/StackView/StackView.js +124 -0
  228. package/lib-module/StackView/StackWrap.js +48 -0
  229. package/lib-module/StackView/StackWrap.native.js +3 -0
  230. package/lib-module/StackView/StackWrapBox.js +114 -0
  231. package/lib-module/StackView/StackWrapGap.js +58 -0
  232. package/lib-module/StackView/common.js +32 -0
  233. package/lib-module/StackView/getStackedContent.js +123 -0
  234. package/lib-module/StackView/index.js +5 -0
  235. package/lib-module/StepTracker/Step.js +229 -0
  236. package/lib-module/StepTracker/StepTracker.js +175 -0
  237. package/lib-module/StepTracker/dictionary.js +10 -0
  238. package/lib-module/StepTracker/index.js +2 -0
  239. package/lib-module/Tabs/Tabs.js +113 -0
  240. package/lib-module/Tabs/TabsItem.js +215 -0
  241. package/lib-module/Tabs/index.js +2 -0
  242. package/lib-module/Tags/Tags.js +238 -0
  243. package/lib-module/Tags/index.js +2 -0
  244. package/lib-module/TextInput/TextArea.js +88 -0
  245. package/lib-module/TextInput/TextInput.js +60 -0
  246. package/lib-module/TextInput/TextInputBase.js +233 -0
  247. package/lib-module/TextInput/index.js +3 -0
  248. package/lib-module/TextInput/propTypes.js +31 -0
  249. package/lib-module/ThemeProvider/ThemeProvider.js +35 -0
  250. package/lib-module/ThemeProvider/index.js +6 -0
  251. package/lib-module/ThemeProvider/useSetTheme.js +22 -0
  252. package/lib-module/ThemeProvider/useTheme.js +14 -0
  253. package/lib-module/ThemeProvider/useThemeTokens.js +105 -0
  254. package/lib-module/ThemeProvider/utils/index.js +2 -0
  255. package/lib-module/ThemeProvider/utils/styles.js +174 -0
  256. package/lib-module/ThemeProvider/utils/theme-tokens.js +151 -0
  257. package/lib-module/ToggleSwitch/ToggleSwitch.js +224 -0
  258. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +202 -0
  259. package/lib-module/ToggleSwitch/index.js +3 -0
  260. package/lib-module/Tooltip/Backdrop.js +52 -0
  261. package/lib-module/Tooltip/Backdrop.native.js +43 -0
  262. package/lib-module/Tooltip/Tooltip.js +332 -0
  263. package/lib-module/Tooltip/dictionary.js +8 -0
  264. package/lib-module/Tooltip/getTooltipPosition.js +164 -0
  265. package/lib-module/Tooltip/index.js +2 -0
  266. package/lib-module/TooltipButton/TooltipButton.js +71 -0
  267. package/lib-module/TooltipButton/index.js +2 -0
  268. package/lib-module/Typography/Typography.js +118 -0
  269. package/lib-module/Typography/index.js +2 -0
  270. package/lib-module/ViewportProvider/ViewportProvider.js +28 -0
  271. package/lib-module/ViewportProvider/index.js +3 -0
  272. package/lib-module/ViewportProvider/useViewport.js +3 -0
  273. package/lib-module/ViewportProvider/useViewportListener.js +43 -0
  274. package/lib-module/index.js +48 -0
  275. package/lib-module/utils/a11y/index.js +2 -0
  276. package/lib-module/utils/a11y/semantics.js +154 -0
  277. package/lib-module/utils/a11y/textSize.js +34 -0
  278. package/lib-module/utils/animation/index.js +2 -0
  279. package/lib-module/utils/animation/useVerticalExpandAnimation.js +49 -0
  280. package/lib-module/utils/children.js +118 -0
  281. package/lib-module/utils/index.js +15 -0
  282. package/lib-module/utils/info/index.js +7 -0
  283. package/lib-module/utils/info/platform/index.js +11 -0
  284. package/lib-module/utils/info/platform/platform.android.js +1 -0
  285. package/lib-module/utils/info/platform/platform.ios.js +1 -0
  286. package/lib-module/utils/info/platform/platform.js +1 -0
  287. package/lib-module/utils/info/platform/platform.native.js +4 -0
  288. package/lib-module/utils/info/versions.js +5 -0
  289. package/lib-module/utils/input.js +180 -0
  290. package/lib-module/utils/pressability.js +97 -0
  291. package/lib-module/utils/props/a11yProps.js +140 -0
  292. package/lib-module/utils/props/clickProps.js +25 -0
  293. package/lib-module/utils/props/componentPropType.js +63 -0
  294. package/lib-module/utils/props/copyPropTypes.js +2 -0
  295. package/lib-module/utils/props/getPropSelector.js +6 -0
  296. package/lib-module/utils/props/hrefAttrsProp.js +30 -0
  297. package/lib-module/utils/props/index.js +16 -0
  298. package/lib-module/utils/props/inputSupportsProps.js +54 -0
  299. package/lib-module/utils/props/linkProps.js +47 -0
  300. package/lib-module/utils/props/paddingProp.js +9 -0
  301. package/lib-module/utils/props/pressProps.js +42 -0
  302. package/lib-module/utils/props/rectProp.js +9 -0
  303. package/lib-module/utils/props/responsiveProps.js +30 -0
  304. package/lib-module/utils/props/selectSystemProps.js +24 -0
  305. package/lib-module/utils/props/spacingProps.js +56 -0
  306. package/lib-module/utils/props/tokens.js +120 -0
  307. package/lib-module/utils/props/variantProp.js +18 -0
  308. package/lib-module/utils/props/viewProps.js +22 -0
  309. package/lib-module/utils/ssr.js +35 -0
  310. package/lib-module/utils/useCopy.js +42 -0
  311. package/lib-module/utils/useHash.js +44 -0
  312. package/lib-module/utils/useHash.native.js +7 -0
  313. package/lib-module/utils/useResponsiveProp.js +47 -0
  314. package/lib-module/utils/useSpacingScale.js +123 -0
  315. package/lib-module/utils/useUniqueId.js +12 -0
  316. package/lib-module/utils/withLinkRouter.js +82 -0
  317. package/package.json +9 -5
  318. package/src/A11yText/index.jsx +7 -3
  319. package/src/ActivityIndicator/Spinner.jsx +56 -44
  320. package/src/ActivityIndicator/Spinner.native.jsx +20 -12
  321. package/src/ActivityIndicator/index.jsx +1 -1
  322. package/src/Box/Box.jsx +15 -13
  323. package/src/Button/Button.jsx +1 -1
  324. package/src/Button/ButtonBase.jsx +9 -8
  325. package/src/Button/ButtonGroup.jsx +17 -8
  326. package/src/Button/ButtonLink.jsx +1 -1
  327. package/src/Button/propTypes.js +2 -1
  328. package/src/Card/Card.jsx +7 -4
  329. package/src/Card/CardBase.jsx +6 -5
  330. package/src/Card/PressableCardBase.jsx +12 -12
  331. package/src/Checkbox/Checkbox.jsx +12 -5
  332. package/src/Divider/Divider.jsx +19 -12
  333. package/src/ExpandCollapse/Control.jsx +12 -7
  334. package/src/ExpandCollapse/ExpandCollapse.jsx +13 -3
  335. package/src/ExpandCollapse/Panel.jsx +15 -5
  336. package/src/Feedback/Feedback.jsx +13 -3
  337. package/src/Fieldset/Fieldset.jsx +1 -1
  338. package/src/FlexGrid/FlexGrid.jsx +11 -5
  339. package/src/FlexGrid/helpers/index.js +1 -3
  340. package/src/HorizontalScroll/HorizontalScroll.jsx +12 -5
  341. package/src/IconButton/IconButton.jsx +12 -8
  342. package/src/InputLabel/InputLabel.jsx +16 -2
  343. package/src/InputSupports/InputSupports.jsx +1 -1
  344. package/src/Link/LinkBase.jsx +11 -10
  345. package/src/List/List.jsx +12 -5
  346. package/src/List/ListItem.jsx +16 -2
  347. package/src/Modal/Modal.jsx +63 -50
  348. package/src/Notification/Notification.jsx +23 -6
  349. package/src/Pagination/Pagination.jsx +10 -3
  350. package/src/Progress/Progress.jsx +5 -3
  351. package/src/Progress/ProgressBar.jsx +8 -6
  352. package/src/Radio/Radio.jsx +13 -5
  353. package/src/Radio/RadioButton.jsx +13 -3
  354. package/src/Radio/RadioGroup.jsx +14 -2
  355. package/src/RadioCard/RadioCard.jsx +9 -6
  356. package/src/RadioCard/RadioCardGroup.jsx +16 -4
  357. package/src/Search/Search.jsx +15 -3
  358. package/src/Select/Select.jsx +21 -7
  359. package/src/SideNav/Item.jsx +15 -7
  360. package/src/SideNav/SideNav.jsx +13 -2
  361. package/src/Skeleton/Skeleton.jsx +55 -43
  362. package/src/Spacer/Spacer.jsx +10 -18
  363. package/src/StackView/StackView.jsx +13 -12
  364. package/src/StackView/StackWrapBox.jsx +12 -12
  365. package/src/StackView/StackWrapGap.jsx +9 -7
  366. package/src/StackView/getStackedContent.jsx +1 -1
  367. package/src/StepTracker/Step.jsx +7 -4
  368. package/src/StepTracker/StepTracker.jsx +8 -8
  369. package/src/Tabs/Tabs.jsx +16 -3
  370. package/src/Tabs/TabsItem.jsx +13 -9
  371. package/src/Tags/Tags.jsx +16 -7
  372. package/src/TextInput/TextArea.jsx +20 -8
  373. package/src/TextInput/TextInput.jsx +20 -8
  374. package/src/TextInput/TextInputBase.jsx +13 -3
  375. package/src/ThemeProvider/useThemeTokens.js +3 -3
  376. package/src/ThemeProvider/utils/theme-tokens.js +3 -3
  377. package/src/ToggleSwitch/ToggleSwitch.jsx +12 -7
  378. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +14 -6
  379. package/src/Tooltip/Tooltip.jsx +13 -3
  380. package/src/TooltipButton/TooltipButton.jsx +6 -4
  381. package/src/Typography/Typography.jsx +10 -6
  382. package/src/index.js +1 -1
  383. package/src/utils/a11y/semantics.js +3 -2
  384. package/src/utils/children.jsx +2 -1
  385. package/src/utils/index.js +2 -1
  386. package/src/utils/pressability.js +1 -1
  387. package/src/utils/props/a11yProps.js +151 -0
  388. package/src/utils/props/clickProps.js +31 -0
  389. package/src/utils/props/componentPropType.js +67 -0
  390. package/src/utils/props/copyPropTypes.js +3 -0
  391. package/src/utils/props/getPropSelector.js +14 -0
  392. package/src/utils/props/hrefAttrsProp.js +25 -0
  393. package/src/utils/props/index.js +16 -0
  394. package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
  395. package/src/utils/props/linkProps.js +43 -0
  396. package/src/utils/props/paddingProp.js +10 -0
  397. package/src/utils/props/pressProps.js +45 -0
  398. package/src/utils/props/rectProp.js +10 -0
  399. package/src/utils/props/responsiveProps.js +30 -0
  400. package/src/utils/props/selectSystemProps.js +25 -0
  401. package/src/utils/props/spacingProps.js +58 -0
  402. package/src/utils/props/tokens.js +150 -0
  403. package/src/utils/props/variantProp.js +20 -0
  404. package/src/utils/props/viewProps.js +23 -0
  405. package/src/utils/ssr.js +35 -0
  406. package/src/utils/useResponsiveProp.js +1 -1
  407. package/src/utils/useSpacingScale.js +4 -4
  408. package/.ultra.cache.json +0 -1
  409. package/lib/utils/a11y/propTypes.js +0 -61
  410. package/lib/utils/a11y/propTypes.native.js +0 -47
  411. package/lib/utils/propTypes.js +0 -566
  412. package/release-context.json +0 -7
  413. package/src/utils/a11y/propTypes.js +0 -61
  414. package/src/utils/a11y/propTypes.native.js +0 -39
  415. package/src/utils/propTypes.js +0 -561
@@ -0,0 +1,8 @@
1
+ @telus-uds/components-base:build: cache hit, replaying output 875a557dac68c9fc
2
+ @telus-uds/components-base:build: $ yarn build:code && yarn build:docs
3
+ @telus-uds/components-base:build: $ yarn build:main && yarn build:module
4
+ @telus-uds/components-base:build: $ babel src -d lib
5
+ @telus-uds/components-base:build: Successfully compiled 215 files with Babel (7019ms).
6
+ @telus-uds/components-base:build: $ babel src -d lib-module --env-name module
7
+ @telus-uds/components-base:build: Successfully compiled 215 files with Babel (5391ms).
8
+ @telus-uds/components-base:build: $ babel-node --plugins=react-docgen-alpha generate-component-docs.js
package/CHANGELOG.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@telus-uds/components-base",
3
+ "entries": [
4
+ {
5
+ "date": "Fri, 01 Apr 2022 14:15:14 GMT",
6
+ "tag": "@telus-uds/components-base_v1.4.0",
7
+ "version": "1.4.0",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "simon.lawrence@nearform.com",
12
+ "package": "@telus-uds/components-base",
13
+ "commit": "05e43b4642997ec461094b5d8a439bfef1abaab8",
14
+ "comment": "Refactor children wrapping in the notifications"
15
+ }
16
+ ],
17
+ "minor": [
18
+ {
19
+ "author": "beachball",
20
+ "package": "@telus-uds/components-base",
21
+ "comment": "Bump @telus-uds/system-theme-tokens to v1.3.0",
22
+ "commit": "05e43b4642997ec461094b5d8a439bfef1abaab8"
23
+ }
24
+ ]
25
+ }
26
+ },
27
+ {
28
+ "date": "Wed, 30 Mar 2022 09:49:18 GMT",
29
+ "tag": "@telus-uds/components-base_v1.3.1",
30
+ "version": "1.3.1",
31
+ "comments": {
32
+ "patch": [
33
+ {
34
+ "author": "cody.zuschlag@nearform.com",
35
+ "package": "@telus-uds/components-base",
36
+ "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e",
37
+ "comment": "post monorepo reorganization release"
38
+ },
39
+ {
40
+ "author": "beachball",
41
+ "package": "@telus-uds/components-base",
42
+ "comment": "Bump @telus-uds/system-constants to v1.0.2",
43
+ "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e"
44
+ },
45
+ {
46
+ "author": "beachball",
47
+ "package": "@telus-uds/components-base",
48
+ "comment": "Bump @telus-uds/system-theme-tokens to v1.2.2",
49
+ "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e"
50
+ },
51
+ {
52
+ "author": "beachball",
53
+ "package": "@telus-uds/components-base",
54
+ "comment": "Bump @telus-uds/browserslist-config to v1.0.1",
55
+ "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e"
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ ]
61
+ }
package/CHANGELOG.md CHANGED
@@ -1,6 +1,49 @@
1
- # Changelog
1
+ # Change Log - @telus-uds/components-base
2
2
 
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
3
+ This log was last generated on Fri, 01 Apr 2022 14:15:14 GMT and should not be manually modified.
4
+
5
+ <!-- Start content -->
6
+
7
+ ## 1.4.0
8
+
9
+ Fri, 01 Apr 2022 14:15:14 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - Bump @telus-uds/system-theme-tokens to v1.3.0
14
+
15
+ ### Patches
16
+
17
+ - Refactor children wrapping in the notifications (simon.lawrence@nearform.com)
18
+
19
+ ## 1.3.1
20
+
21
+ Wed, 30 Mar 2022 09:49:18 GMT
22
+
23
+ ### Patches
24
+
25
+ - post monorepo reorganization release (cody.zuschlag@nearform.com)
26
+ - Bump @telus-uds/system-constants to v1.0.2
27
+ - Bump @telus-uds/system-theme-tokens to v1.2.2
28
+ - Bump @telus-uds/browserslist-config to v1.0.1
29
+ - Export viewport context
30
+ - Unify system props handling
31
+ - Reduced motion support for ActivityIndicator component
32
+ - Include FootnoteLink in list of wrappable children
33
+ - Add a module build target
34
+ - Add SSR util functions
35
+
36
+ ## [1.3.0](https://github.com/telus/universal-design-system/compare/@telus-uds/components-base/v1.2.0...@telus-uds/components-base/v1.3.0) (2022-03-21)
37
+
38
+ ### Features
39
+
40
+ - **components-base:** add common system props handler and restructure props-related utils ([#1444](https://github.com/telus/universal-design-system/issues/1444)) ([ab655ec](https://github.com/telus/universal-design-system/commit/ab655ec61796b6a6d7094c2c42ceef8b5197c634))
41
+ - **docs:** add tokens override documentation ([#1330](https://github.com/telus/universal-design-system/issues/1330)) ([49092e5](https://github.com/telus/universal-design-system/commit/49092e5d5f6c2d3a85de930a74a03afff8a60062))
42
+
43
+ ### Bug Fixes
44
+
45
+ - **base:** inherit FlexGrid.Col responsive size if 0 ([#1419](https://github.com/telus/universal-design-system/issues/1419)) ([9defeb0](https://github.com/telus/universal-design-system/commit/9defeb0da08099afb83df9e7ee902f037cb4de02))
46
+ - **ds-allium:** fix some errors in RN builds ([#1448](https://github.com/telus/universal-design-system/issues/1448)) ([8bc4778](https://github.com/telus/universal-design-system/commit/8bc477890f0183584fdc1009d7929b71d23820a3))
4
47
 
5
48
  ## [1.2.0](https://github.com/telus/universal-design-system/compare/@telus-uds/components-base/v1.1.0...@telus-uds/components-base/v1.2.0) (2022-03-02)
6
49
 
@@ -1,7 +1,9 @@
1
1
  import React from 'react'
2
+ import { Platform } from 'react-native'
2
3
  import { render as baseRender } from '@testing-library/react-native'
3
4
  import Theme from '../../__fixtures__/Theme'
4
5
  import ActivityIndicator from '../../src/ActivityIndicator'
6
+ import * as A11yInfoProvider from '../../src/A11yInfoProvider'
5
7
 
6
8
  // Used to remove the "Animated: `useNativeDriver` is not supported because the native animated module is missing." warnings
7
9
  jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper')
@@ -30,4 +32,37 @@ describe('ActivityIndicator', () => {
30
32
  const { getByText } = render(<ActivityIndicator label="I'm a loader" />)
31
33
  expect(() => getByText("I'm a loader")).toThrow()
32
34
  })
35
+
36
+ it("doesn't animate when reduced motion is enabled", async () => {
37
+ jest
38
+ .spyOn(A11yInfoProvider, 'useA11yInfo')
39
+ .mockImplementation(() => ({ reduceMotionEnabled: true }))
40
+ // TODO: this won't be called until cross-platform Jest tests are configured
41
+ // see https://github.com/telus/universal-design-system/issues/319
42
+ if (Platform.OS === 'web') {
43
+ const { container } = render(<ActivityIndicator label="I'm a loader" />)
44
+ expect(container.querySelector('[attributeName="transform"]')).not.toBeInTheDocument()
45
+ expect(container.querySelector('[attributeName="stroke-dashoffset"]')).not.toBeInTheDocument()
46
+ expect(container.querySelector('[attributeName="stroke-dasharray"]')).not.toBeInTheDocument()
47
+ } else {
48
+ const component = render(<ActivityIndicator label="I'm a loader" />)
49
+ expect(component).toMatchSnapshot()
50
+ }
51
+ })
52
+ it("animates when reduced motion isn't enabled", async () => {
53
+ jest
54
+ .spyOn(A11yInfoProvider, 'useA11yInfo')
55
+ .mockImplementation(() => ({ reduceMotionEnabled: false }))
56
+ // TODO: this won't be called until cross-platform Jest tests are configured
57
+ // see https://github.com/telus/universal-design-system/issues/319
58
+ if (Platform.OS === 'web') {
59
+ const { container } = render(<ActivityIndicator label="I'm a loader" />)
60
+ expect(container.querySelector('[attributeName="transform"]')).toBeInTheDocument()
61
+ expect(container.querySelector('[attributeName="stroke-dashoffset"]')).toBeInTheDocument()
62
+ expect(container.querySelector('[attributeName="stroke-dasharray"]')).toBeInTheDocument()
63
+ } else {
64
+ const component = render(<ActivityIndicator label="I'm a loader" />)
65
+ expect(component).toMatchSnapshot()
66
+ }
67
+ })
33
68
  })
@@ -0,0 +1,287 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ActivityIndicator animates when reduced motion isn't enabled 1`] = `
4
+ <View
5
+ accessibilityLabel="I'm a loader"
6
+ accessibilityRole="progressbar"
7
+ accessibilityState={
8
+ Object {
9
+ "busy": true,
10
+ }
11
+ }
12
+ accessible={true}
13
+ style={
14
+ Array [
15
+ Object {
16
+ "flexGrow": 0,
17
+ "flexShrink": 0,
18
+ },
19
+ ]
20
+ }
21
+ >
22
+ <View
23
+ collapsable={false}
24
+ style={
25
+ Object {
26
+ "height": 24,
27
+ "width": 24,
28
+ }
29
+ }
30
+ >
31
+ <View
32
+ style={
33
+ Object {
34
+ "alignItems": "center",
35
+ "bottom": 0,
36
+ "justifyContent": "center",
37
+ "left": 0,
38
+ "position": "absolute",
39
+ "right": 0,
40
+ "top": 0,
41
+ }
42
+ }
43
+ >
44
+ <View
45
+ style={
46
+ Object {
47
+ "height": 24,
48
+ "transform": Array [
49
+ Object {
50
+ "rotate": "45deg",
51
+ },
52
+ ],
53
+ "width": 24,
54
+ }
55
+ }
56
+ >
57
+ <View
58
+ collapsable={false}
59
+ style={
60
+ Object {
61
+ "height": 12,
62
+ "overflow": "hidden",
63
+ "width": 24,
64
+ }
65
+ }
66
+ >
67
+ <View
68
+ style={
69
+ Object {
70
+ "height": 24,
71
+ "transform": Array [
72
+ Object {
73
+ "translateY": 0,
74
+ },
75
+ Object {
76
+ "rotate": "-165deg",
77
+ },
78
+ ],
79
+ "width": 24,
80
+ }
81
+ }
82
+ >
83
+ <View
84
+ collapsable={false}
85
+ style={
86
+ Object {
87
+ "height": 12,
88
+ "overflow": "hidden",
89
+ "width": 24,
90
+ }
91
+ }
92
+ >
93
+ <View
94
+ style={
95
+ Object {
96
+ "borderColor": "#0e6ac8",
97
+ "borderRadius": 12,
98
+ "borderWidth": 2,
99
+ "height": 24,
100
+ "width": 24,
101
+ }
102
+ }
103
+ />
104
+ </View>
105
+ </View>
106
+ </View>
107
+ </View>
108
+ </View>
109
+ <View
110
+ style={
111
+ Object {
112
+ "alignItems": "center",
113
+ "bottom": 0,
114
+ "justifyContent": "center",
115
+ "left": 0,
116
+ "position": "absolute",
117
+ "right": 0,
118
+ "top": 0,
119
+ }
120
+ }
121
+ >
122
+ <View
123
+ style={
124
+ Object {
125
+ "height": 24,
126
+ "transform": Array [
127
+ Object {
128
+ "rotate": "45deg",
129
+ },
130
+ ],
131
+ "width": 24,
132
+ }
133
+ }
134
+ >
135
+ <View
136
+ collapsable={false}
137
+ style={
138
+ Object {
139
+ "height": 12,
140
+ "overflow": "hidden",
141
+ "top": 12,
142
+ "width": 24,
143
+ }
144
+ }
145
+ >
146
+ <View
147
+ style={
148
+ Object {
149
+ "height": 24,
150
+ "transform": Array [
151
+ Object {
152
+ "translateY": -12,
153
+ },
154
+ Object {
155
+ "rotate": "345deg",
156
+ },
157
+ ],
158
+ "width": 24,
159
+ }
160
+ }
161
+ >
162
+ <View
163
+ collapsable={false}
164
+ style={
165
+ Object {
166
+ "height": 12,
167
+ "overflow": "hidden",
168
+ "width": 24,
169
+ }
170
+ }
171
+ >
172
+ <View
173
+ style={
174
+ Object {
175
+ "borderColor": "#0e6ac8",
176
+ "borderRadius": 12,
177
+ "borderWidth": 2,
178
+ "height": 24,
179
+ "width": 24,
180
+ }
181
+ }
182
+ />
183
+ </View>
184
+ </View>
185
+ </View>
186
+ </View>
187
+ </View>
188
+ </View>
189
+ </View>
190
+ `;
191
+
192
+ exports[`ActivityIndicator doesn't animate when reduced motion is enabled 1`] = `
193
+ <View
194
+ accessibilityLabel="I'm a loader"
195
+ accessibilityRole="progressbar"
196
+ accessibilityState={
197
+ Object {
198
+ "busy": true,
199
+ }
200
+ }
201
+ accessible={true}
202
+ style={
203
+ Array [
204
+ Object {
205
+ "flexGrow": 0,
206
+ "flexShrink": 0,
207
+ },
208
+ ]
209
+ }
210
+ >
211
+ <View
212
+ collapsable={false}
213
+ style={
214
+ Object {
215
+ "height": 24,
216
+ "width": 24,
217
+ }
218
+ }
219
+ >
220
+ <View
221
+ style={
222
+ Object {
223
+ "alignItems": "center",
224
+ "bottom": 0,
225
+ "justifyContent": "center",
226
+ "left": 0,
227
+ "position": "absolute",
228
+ "right": 0,
229
+ "top": 0,
230
+ }
231
+ }
232
+ >
233
+ <View
234
+ style={
235
+ Object {
236
+ "height": 24,
237
+ "width": 24,
238
+ }
239
+ }
240
+ >
241
+ <View
242
+ collapsable={false}
243
+ style={
244
+ Object {
245
+ "height": 16,
246
+ "overflow": "hidden",
247
+ "width": 24,
248
+ }
249
+ }
250
+ >
251
+ <View
252
+ style={
253
+ Object {
254
+ "height": 24,
255
+ "width": 24,
256
+ }
257
+ }
258
+ >
259
+ <View
260
+ collapsable={false}
261
+ style={
262
+ Object {
263
+ "height": 16,
264
+ "overflow": "hidden",
265
+ "width": 24,
266
+ }
267
+ }
268
+ >
269
+ <View
270
+ style={
271
+ Object {
272
+ "borderColor": "#0e6ac8",
273
+ "borderRadius": 12,
274
+ "borderWidth": 2,
275
+ "height": 24,
276
+ "width": 24,
277
+ }
278
+ }
279
+ />
280
+ </View>
281
+ </View>
282
+ </View>
283
+ </View>
284
+ </View>
285
+ </View>
286
+ </View>
287
+ `;
@@ -48,7 +48,6 @@ describe('FlexGrid.Col offsets', () => {
48
48
  )
49
49
  const expectIfOffsetExpected = (propViewport) => {
50
50
  const target = getByText(`${propViewport}Offset`).parent
51
- // eslint-disable-next-line jest/valid-expect
52
51
  return expected[propViewport] ? expect(target) : expect(target).not
53
52
  }
54
53
  expectIfOffsetExpected('xs').toHaveStyle(getOffsetStyle('xs'))
@@ -104,7 +103,6 @@ describe('FlexGrid.Col sizes', () => {
104
103
 
105
104
  const expectIfSizeExpected = (propViewport) => {
106
105
  const target = getByText(propViewport).parent
107
- // eslint-disable-next-line jest/valid-expect
108
106
  return expected[propViewport] ? expect(target) : expect(target).not
109
107
  }
110
108
  expectIfSizeExpected('xs').toHaveStyle(getNumericSizeStyle('xs'))
@@ -154,7 +152,6 @@ describe('FlexGrid.Col sizes', () => {
154
152
 
155
153
  const expectIfSizeExpected = (text) => {
156
154
  const target = getByText(text).parent
157
- // eslint-disable-next-line jest/valid-expect
158
155
  return expected[text] ? expect(target) : expect(target).not
159
156
  }
160
157
  expectIfSizeExpected('xs-md').toHaveStyle(getNumericSizeStyle('xs'))
@@ -166,16 +163,17 @@ describe('FlexGrid.Col sizes', () => {
166
163
  })
167
164
 
168
165
  // Testing special "hiding" case on passing xs, sm, md, lg, xl props as 0.
169
- // Doesn't inherit like other values for these props, only applies to the given prop
166
+ // Should inherit like other values for these props, confirmed in:
167
+ // https://github.com/telus/universal-design-system/pull/364#discussion_r671382300
170
168
  it.each(
171
169
  // true here indicates hiding styles should apply
172
170
  // Align expected results like a table so they're easier to read
173
171
  /* prettier-ignore */ [
174
172
  ['xs', { xs: true, sm: false, md: false, lg: false, xl: false }],
175
- ['sm', { xs: false, sm: true, md: false, lg: false, xl: false }],
176
- ['md', { xs: false, sm: false, md: true, lg: false, xl: false }],
177
- ['lg', { xs: false, sm: false, md: false, lg: true, xl: false }],
178
- ['xl', { xs: false, sm: false, md: false, lg: false, xl: true }]
173
+ ['sm', { xs: true, sm: true, md: false, lg: false, xl: false }],
174
+ ['md', { xs: true, sm: true, md: true, lg: false, xl: false }],
175
+ ['lg', { xs: true, sm: true, md: true, lg: true, xl: false }],
176
+ ['xl', { xs: true, sm: true, md: true, lg: true, xl: true }]
179
177
  ]
180
178
  )('applies hiding styles from one prop at viewport "%s"', (viewport, expected) => {
181
179
  const hidingStyle = { display: 'none' }
@@ -199,7 +197,6 @@ describe('FlexGrid.Col sizes', () => {
199
197
  )
200
198
  const expectIfHidingExpected = (propViewport) => {
201
199
  const target = getByText(propViewport).parent
202
- // eslint-disable-next-line jest/valid-expect
203
200
  return expected[propViewport] ? expect(target) : expect(target).not
204
201
  }
205
202
  expectIfHidingExpected('xs').toHaveStyle(hidingStyle)
@@ -248,7 +245,6 @@ describe('FlexGrid.Col horizontalAlign', () => {
248
245
 
249
246
  const expectIfAlignExpected = (propViewport) => {
250
247
  const target = getByText(propViewport).parent
251
- // eslint-disable-next-line jest/valid-expect
252
248
  return expected[propViewport] ? expect(target) : expect(target).not
253
249
  }
254
250
  expectIfAlignExpected('xs').toHaveStyle(alignRightStyle)
@@ -0,0 +1,36 @@
1
+ import { selectSystemProps } from '../../src/utils'
2
+
3
+ describe('selectSystemProps', () => {
4
+ it('reduces the selectors and the types correctly', () => {
5
+ const somePropNames = ['a', 'b']
6
+ const someTypes = { a: 1, b: 2 }
7
+ const someOtherPropNames = ['c', 'd']
8
+ const someOtherTypes = { c: 3, d: 4 }
9
+ const reducer = (props) => (acc, allowedPropName) =>
10
+ allowedPropName in props ? { ...acc, [allowedPropName]: props[allowedPropName] } : acc
11
+ const exampleProps = { a: 'a', c: 'c', e: 'e' }
12
+ const [selectProps, selectedPropTypes] = selectSystemProps([
13
+ { select: (props) => somePropNames.reduce(reducer(props), {}), types: someTypes },
14
+ { select: (props) => someOtherPropNames.reduce(reducer(props), {}), types: someOtherTypes }
15
+ ])
16
+ expect(selectProps(exampleProps)).toEqual({ a: 'a', c: 'c' })
17
+ expect(selectedPropTypes).toEqual({ a: 1, b: 2, c: 3, d: 4 })
18
+ })
19
+
20
+ it('returns selector throwing if one of the prop helpers does not have any valid prop selectors', () => {
21
+ const [selectProps] = selectSystemProps([{ types: {} }])
22
+ expect(() => {
23
+ selectProps({ someProp: 'some value' })
24
+ }).toThrowError(
25
+ "An invalid system prop helper has been passed to 'selectSystemProps': prop selector ('.select') is missing in"
26
+ )
27
+ })
28
+
29
+ it('throws if one of the prop helpers does not have any valid prop types selectors', () => {
30
+ expect(() => {
31
+ selectSystemProps([{ select: () => {} }])
32
+ }).toThrowError(
33
+ "An invalid system prop helper has been passed to 'selectSystemProps': types selector ('.types') is missing in"
34
+ )
35
+ })
36
+ })
@@ -1,6 +1,6 @@
1
1
  import { Platform } from 'react-native'
2
2
 
3
- import { getA11yPropsFromHtmlTag, tagsToRoles, supportedTags } from '../../src'
3
+ import { getA11yPropsFromHtmlTag, supportedTags } from '../../src'
4
4
 
5
5
  // Note that currently all tests run as ios so only native logic can be tested here
6
6
  // until cross-platform tests are set up. See issue:
@@ -8,16 +8,7 @@ import { getA11yPropsFromHtmlTag, tagsToRoles, supportedTags } from '../../src'
8
8
 
9
9
  // As a temporary measure, there are tests on web-context HTML output for Box component
10
10
  // in @telus-uds/ds-allium which test the actual output when the tags are rendered.
11
-
12
- // These tests will therefore just test the values returned in a native context.
13
11
  describe('getA11yPropsFromHtmlTag', () => {
14
- it.each(Object.entries(tagsToRoles))(
15
- 'responds to tag "%s" with accessibilityRole "%s"',
16
- (tag, role) => {
17
- expect(getA11yPropsFromHtmlTag(tag)).toEqual({ accessibilityRole: role })
18
- }
19
- )
20
-
21
12
  it.each([
22
13
  [1, 'h1'],
23
14
  [2, 'h2'],
package/babel.config.js CHANGED
@@ -1,13 +1,35 @@
1
1
  module.exports = (api) => {
2
- const env = api.cache(() => process.env.NODE_ENV)
3
- if (env === 'test') {
4
- // configuration for jest
2
+ // configuration for jest
3
+ if (api.env('test')) {
5
4
  return {
6
5
  presets: ['module:metro-react-native-babel-preset']
7
6
  }
8
7
  }
8
+
9
+ // Default to CJS for docs generators etc; build as ESM modules when requested.
10
+ const isModule = api.env('module')
11
+
9
12
  return {
10
- presets: ['@babel/preset-env', ['@babel/preset-react', { runtime: 'automatic' }]],
11
- plugins: [['react-native-web', { commonjs: true }]]
13
+ presets: [
14
+ ['@babel/preset-react', { runtime: 'automatic' }],
15
+ [
16
+ '@babel/preset-env',
17
+ {
18
+ // `false` in babel env options means preserve ESM import / export syntax
19
+ // https://babeljs.io/docs/en/babel-preset-env#modules
20
+ modules: isModule ? false : 'cjs'
21
+ }
22
+ ]
23
+ ],
24
+ plugins: [
25
+ [
26
+ 'react-native-web',
27
+ {
28
+ // Use the build of React Native Web that matches our build. ESM prefered, for treeshaking etc.
29
+ // Be careful not to have both RNW builds in an app as init will run twice, shuffling styles.
30
+ commonjs: !isModule
31
+ }
32
+ ]
33
+ ]
12
34
  }
13
35
  }