@telus-uds/components-base 1.7.1 → 1.8.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 (509) hide show
  1. package/CHANGELOG.md +41 -2
  2. package/component-docs.json +944 -691
  3. package/lib/A11yInfoProvider/index.js +4 -3
  4. package/lib/A11yText/index.js +6 -5
  5. package/lib/ActivityIndicator/Spinner.js +7 -6
  6. package/lib/ActivityIndicator/Spinner.native.js +8 -6
  7. package/lib/ActivityIndicator/index.js +6 -5
  8. package/lib/ActivityIndicator/shared.js +1 -1
  9. package/lib/BaseProvider/index.js +13 -10
  10. package/lib/Box/Box.js +20 -19
  11. package/lib/Button/Button.js +7 -6
  12. package/lib/Button/ButtonBase.js +95 -77
  13. package/lib/Button/ButtonGroup.js +140 -65
  14. package/lib/Button/ButtonLink.js +9 -7
  15. package/lib/Button/index.js +4 -4
  16. package/lib/Button/propTypes.js +1 -1
  17. package/lib/Card/Card.js +8 -7
  18. package/lib/Card/CardBase.js +35 -31
  19. package/lib/Card/PressableCardBase.js +14 -12
  20. package/lib/Checkbox/Checkbox.js +96 -82
  21. package/lib/Checkbox/CheckboxGroup.js +30 -28
  22. package/lib/Checkbox/CheckboxInput.js +12 -10
  23. package/lib/Divider/Divider.js +8 -7
  24. package/lib/ExpandCollapse/Control.js +42 -36
  25. package/lib/ExpandCollapse/ExpandCollapse.js +11 -10
  26. package/lib/ExpandCollapse/Panel.js +29 -24
  27. package/lib/Feedback/Feedback.js +48 -35
  28. package/lib/Fieldset/Fieldset.js +22 -14
  29. package/lib/Fieldset/FieldsetContainer.js +16 -13
  30. package/lib/Fieldset/FieldsetContainer.native.js +11 -8
  31. package/lib/Fieldset/Legend.js +10 -7
  32. package/lib/Fieldset/Legend.native.js +10 -7
  33. package/lib/FlexGrid/Col/Col.js +17 -16
  34. package/lib/FlexGrid/FlexGrid.js +15 -14
  35. package/lib/FlexGrid/Row/Row.js +13 -12
  36. package/lib/HorizontalScroll/HorizontalScroll.js +25 -20
  37. package/lib/HorizontalScroll/HorizontalScrollButton.js +18 -14
  38. package/lib/HorizontalScroll/ScrollViewEnd.js +6 -5
  39. package/lib/HorizontalScroll/ScrollViewEnd.native.js +12 -9
  40. package/lib/HorizontalScroll/itemPositions.js +19 -13
  41. package/lib/Icon/Icon.js +10 -9
  42. package/lib/Icon/IconText.js +8 -7
  43. package/lib/Icon/index.js +5 -5
  44. package/lib/IconButton/IconButton.js +50 -42
  45. package/lib/InputLabel/InputLabel.js +44 -30
  46. package/lib/InputLabel/LabelContent.js +12 -9
  47. package/lib/InputLabel/LabelContent.native.js +9 -6
  48. package/lib/InputSupports/InputSupports.js +17 -9
  49. package/lib/InputSupports/useInputSupports.js +7 -6
  50. package/lib/Link/ChevronLink.js +9 -8
  51. package/lib/Link/InlinePressable.js +13 -10
  52. package/lib/Link/InlinePressable.native.js +20 -16
  53. package/lib/Link/Link.js +10 -9
  54. package/lib/Link/LinkBase.js +96 -78
  55. package/lib/Link/TextButton.js +9 -8
  56. package/lib/List/List.js +9 -7
  57. package/lib/List/ListItem.js +99 -74
  58. package/lib/Modal/Modal.js +72 -59
  59. package/lib/Notification/Notification.js +47 -34
  60. package/lib/Pagination/PageButton.js +11 -10
  61. package/lib/Pagination/Pagination.js +39 -28
  62. package/lib/Pagination/SideButton.js +21 -18
  63. package/lib/Pagination/usePagination.js +5 -4
  64. package/lib/Progress/Progress.js +23 -19
  65. package/lib/Progress/ProgressBar.js +23 -19
  66. package/lib/Progress/ProgressBarBackground.js +4 -3
  67. package/lib/Radio/Radio.js +79 -68
  68. package/lib/Radio/RadioButton.js +63 -53
  69. package/lib/Radio/RadioGroup.js +39 -30
  70. package/lib/Radio/RadioInput.js +12 -10
  71. package/lib/RadioCard/RadioCard.js +15 -14
  72. package/lib/RadioCard/RadioCardGroup.js +34 -25
  73. package/lib/Search/Search.js +52 -32
  74. package/lib/Select/Group.js +5 -4
  75. package/lib/Select/Group.native.js +4 -3
  76. package/lib/Select/Item.js +10 -7
  77. package/lib/Select/Item.native.js +1 -9
  78. package/lib/Select/Picker.js +16 -15
  79. package/lib/Select/Picker.native.js +49 -38
  80. package/lib/Select/Select.js +134 -113
  81. package/lib/SideNav/Item.js +39 -33
  82. package/lib/SideNav/ItemContent.js +15 -12
  83. package/lib/SideNav/ItemsGroup.js +13 -11
  84. package/lib/SideNav/SideNav.js +19 -16
  85. package/lib/Skeleton/Skeleton.js +106 -44
  86. package/lib/Skeleton/skeleton.constant.js +1 -1
  87. package/lib/Spacer/Spacer.js +6 -5
  88. package/lib/StackView/StackView.js +12 -11
  89. package/lib/StackView/StackWrap.js +2 -2
  90. package/lib/StackView/StackWrapBox.js +12 -11
  91. package/lib/StackView/StackWrapGap.js +11 -10
  92. package/lib/StackView/common.js +14 -11
  93. package/lib/StackView/getStackedContent.js +8 -7
  94. package/lib/StackView/index.js +1 -1
  95. package/lib/StepTracker/Step.js +122 -103
  96. package/lib/StepTracker/StepTracker.js +48 -38
  97. package/lib/Tabs/Tabs.js +29 -24
  98. package/lib/Tabs/TabsItem.js +79 -68
  99. package/lib/Tags/Tags.js +67 -61
  100. package/lib/TextInput/TextArea.js +26 -20
  101. package/lib/TextInput/TextInput.js +20 -15
  102. package/lib/TextInput/TextInputBase.js +74 -62
  103. package/lib/TextInput/index.js +4 -4
  104. package/lib/ThemeProvider/ThemeProvider.js +6 -5
  105. package/lib/ThemeProvider/index.js +5 -5
  106. package/lib/ThemeProvider/useSetTheme.js +6 -3
  107. package/lib/ThemeProvider/useThemeTokens.js +7 -2
  108. package/lib/ThemeProvider/utils/styles.js +48 -41
  109. package/lib/ThemeProvider/utils/theme-tokens.js +26 -12
  110. package/lib/ToggleSwitch/ToggleSwitch.js +95 -72
  111. package/lib/ToggleSwitch/ToggleSwitchGroup.js +42 -33
  112. package/lib/Tooltip/Backdrop.js +4 -3
  113. package/lib/Tooltip/Backdrop.native.js +5 -4
  114. package/lib/Tooltip/Tooltip.js +82 -66
  115. package/lib/Tooltip/getTooltipPosition.js +29 -18
  116. package/lib/TooltipButton/TooltipButton.js +28 -21
  117. package/lib/Typography/Typography.js +37 -33
  118. package/lib/ViewportProvider/ViewportProvider.js +4 -3
  119. package/lib/ViewportProvider/useViewportListener.js +6 -3
  120. package/lib/index.js +54 -54
  121. package/lib/utils/a11y/semantics.js +5 -2
  122. package/lib/utils/a11y/textSize.js +8 -6
  123. package/lib/utils/animation/useVerticalExpandAnimation.js +32 -18
  124. package/lib/utils/children.js +2 -1
  125. package/lib/utils/index.js +10 -10
  126. package/lib/utils/input.js +22 -17
  127. package/lib/utils/pressability.js +36 -22
  128. package/lib/utils/props/clickProps.js +2 -1
  129. package/lib/utils/props/getPropSelector.js +6 -3
  130. package/lib/utils/props/handlerProps.js +25 -19
  131. package/lib/utils/props/hrefAttrsProp.js +14 -11
  132. package/lib/utils/props/index.js +12 -12
  133. package/lib/utils/props/inputSupportsProps.js +21 -11
  134. package/lib/utils/props/linkProps.js +7 -6
  135. package/lib/utils/props/pressProps.js +1 -1
  136. package/lib/utils/props/tokens.js +27 -13
  137. package/lib/utils/ssr.js +6 -2
  138. package/lib/utils/useCopy.js +6 -4
  139. package/lib/utils/useHash.js +2 -1
  140. package/lib/utils/useResponsiveProp.js +1 -1
  141. package/lib/utils/useUniqueId.js +2 -1
  142. package/lib/utils/withLinkRouter.js +6 -5
  143. package/package.json +18 -12
  144. package/src/Button/ButtonGroup.jsx +106 -41
  145. package/src/Checkbox/Checkbox.jsx +7 -4
  146. package/src/Checkbox/CheckboxGroup.jsx +3 -3
  147. package/src/ExpandCollapse/Panel.jsx +3 -1
  148. package/src/Fieldset/Fieldset.jsx +6 -0
  149. package/src/InputLabel/InputLabel.jsx +17 -2
  150. package/src/InputSupports/InputSupports.jsx +9 -1
  151. package/src/Notification/Notification.jsx +1 -1
  152. package/src/Pagination/Pagination.jsx +3 -0
  153. package/src/Radio/Radio.jsx +5 -1
  154. package/src/Radio/RadioGroup.jsx +11 -5
  155. package/src/RadioCard/RadioCard.jsx +5 -1
  156. package/src/RadioCard/RadioCardGroup.jsx +6 -0
  157. package/src/Search/Search.jsx +12 -1
  158. package/src/Select/Item.native.jsx +0 -7
  159. package/src/Skeleton/Skeleton.jsx +56 -3
  160. package/src/ToggleSwitch/ToggleSwitch.jsx +6 -0
  161. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +6 -0
  162. package/src/Tooltip/Tooltip.jsx +1 -1
  163. package/src/utils/animation/useVerticalExpandAnimation.js +25 -12
  164. package/src/utils/props/inputSupportsProps.js +6 -1
  165. package/src/utils/props/tokens.js +21 -19
  166. package/.storybook/main.js +0 -4
  167. package/.storybook/preview.js +0 -37
  168. package/.turbo/turbo-build.log +0 -8
  169. package/.turbo/turbo-lint.log +0 -13
  170. package/CHANGELOG.json +0 -250
  171. package/__fixtures__/Accessible.js +0 -35
  172. package/__fixtures__/Accessible.native.js +0 -35
  173. package/__fixtures__/Theme.jsx +0 -13
  174. package/__fixtures__/Viewport.jsx +0 -17
  175. package/__fixtures__/test-utils.js +0 -25
  176. package/__fixtures__/testTheme.js +0 -1830
  177. package/__tests__/A11yText/A11yText.test.jsx +0 -34
  178. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  179. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
  180. package/__tests__/Box/Box.test.jsx +0 -111
  181. package/__tests__/Button/Button.test.jsx +0 -86
  182. package/__tests__/Button/ButtonBase.test.jsx +0 -82
  183. package/__tests__/Button/ButtonGroup.test.jsx +0 -347
  184. package/__tests__/Button/ButtonLink.test.jsx +0 -61
  185. package/__tests__/Card/Card.test.jsx +0 -63
  186. package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
  187. package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
  188. package/__tests__/Divider/Divider.test.jsx +0 -91
  189. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  190. package/__tests__/Feedback/Feedback.test.jsx +0 -42
  191. package/__tests__/FlexGrid/Col.test.jsx +0 -256
  192. package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
  193. package/__tests__/FlexGrid/Row.test.jsx +0 -273
  194. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  195. package/__tests__/Icon/Icon.test.jsx +0 -61
  196. package/__tests__/IconButton/IconButton.test.jsx +0 -52
  197. package/__tests__/InputSupports/InputSupports.test.jsx +0 -50
  198. package/__tests__/Link/Link.test.jsx +0 -63
  199. package/__tests__/Link/TextButton.test.jsx +0 -35
  200. package/__tests__/List/List.test.jsx +0 -60
  201. package/__tests__/Modal/Modal.test.jsx +0 -47
  202. package/__tests__/Notification/Notification.test.jsx +0 -20
  203. package/__tests__/Pagination/Pagination.test.jsx +0 -160
  204. package/__tests__/Progress/Progress.test.jsx +0 -79
  205. package/__tests__/Radio/Radio.test.jsx +0 -87
  206. package/__tests__/Radio/RadioGroup.test.jsx +0 -220
  207. package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
  208. package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
  209. package/__tests__/Search/Search.test.jsx +0 -73
  210. package/__tests__/Select/Select.test.jsx +0 -94
  211. package/__tests__/SideNav/SideNav.test.jsx +0 -110
  212. package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
  213. package/__tests__/Spacer/Spacer.test.jsx +0 -63
  214. package/__tests__/StackView/StackView.test.jsx +0 -216
  215. package/__tests__/StackView/StackWrap.test.jsx +0 -47
  216. package/__tests__/StackView/getStackedContent.test.jsx +0 -295
  217. package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
  218. package/__tests__/Tabs/Tabs.test.jsx +0 -40
  219. package/__tests__/Tags/Tags.test.jsx +0 -327
  220. package/__tests__/TextInput/TextArea.test.jsx +0 -35
  221. package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
  222. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
  223. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  224. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  225. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  226. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  227. package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
  228. package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
  229. package/__tests__/Typography/typography.test.jsx +0 -90
  230. package/__tests__/utils/children.test.jsx +0 -128
  231. package/__tests__/utils/containUniqueFields.test.js +0 -25
  232. package/__tests__/utils/input.test.js +0 -375
  233. package/__tests__/utils/props.test.js +0 -36
  234. package/__tests__/utils/semantics.test.jsx +0 -34
  235. package/__tests__/utils/useCopy.test.js +0 -42
  236. package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
  237. package/__tests__/utils/useSpacingScale.test.jsx +0 -273
  238. package/__tests__/utils/useUniqueId.test.js +0 -31
  239. package/babel.config.js +0 -35
  240. package/generate-component-docs.js +0 -72
  241. package/jest.config.js +0 -32
  242. package/lib-module/A11yInfoProvider/index.js +0 -62
  243. package/lib-module/A11yText/index.js +0 -55
  244. package/lib-module/ActivityIndicator/Spinner.js +0 -76
  245. package/lib-module/ActivityIndicator/Spinner.native.js +0 -143
  246. package/lib-module/ActivityIndicator/index.js +0 -40
  247. package/lib-module/ActivityIndicator/shared.js +0 -12
  248. package/lib-module/BaseProvider/index.js +0 -26
  249. package/lib-module/Box/Box.js +0 -243
  250. package/lib-module/Box/index.js +0 -2
  251. package/lib-module/Button/Button.js +0 -25
  252. package/lib-module/Button/ButtonBase.js +0 -254
  253. package/lib-module/Button/ButtonGroup.js +0 -173
  254. package/lib-module/Button/ButtonLink.js +0 -39
  255. package/lib-module/Button/index.js +0 -4
  256. package/lib-module/Button/propTypes.js +0 -36
  257. package/lib-module/Card/Card.js +0 -83
  258. package/lib-module/Card/CardBase.js +0 -62
  259. package/lib-module/Card/PressableCardBase.js +0 -113
  260. package/lib-module/Card/index.js +0 -4
  261. package/lib-module/Checkbox/Checkbox.js +0 -332
  262. package/lib-module/Checkbox/CheckboxGroup.js +0 -231
  263. package/lib-module/Checkbox/CheckboxInput.js +0 -58
  264. package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
  265. package/lib-module/Checkbox/index.js +0 -3
  266. package/lib-module/Divider/Divider.js +0 -123
  267. package/lib-module/Divider/index.js +0 -2
  268. package/lib-module/ExpandCollapse/Accordion.js +0 -15
  269. package/lib-module/ExpandCollapse/Control.js +0 -130
  270. package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -94
  271. package/lib-module/ExpandCollapse/Panel.js +0 -158
  272. package/lib-module/ExpandCollapse/index.js +0 -7
  273. package/lib-module/Feedback/Feedback.js +0 -144
  274. package/lib-module/Feedback/index.js +0 -2
  275. package/lib-module/Fieldset/Fieldset.js +0 -145
  276. package/lib-module/Fieldset/FieldsetContainer.js +0 -29
  277. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -20
  278. package/lib-module/Fieldset/Legend.js +0 -21
  279. package/lib-module/Fieldset/Legend.native.js +0 -28
  280. package/lib-module/Fieldset/cssReset.js +0 -14
  281. package/lib-module/Fieldset/index.js +0 -2
  282. package/lib-module/FlexGrid/Col/Col.js +0 -275
  283. package/lib-module/FlexGrid/Col/index.js +0 -2
  284. package/lib-module/FlexGrid/FlexGrid.js +0 -147
  285. package/lib-module/FlexGrid/Row/Row.js +0 -183
  286. package/lib-module/FlexGrid/Row/index.js +0 -2
  287. package/lib-module/FlexGrid/helpers/index.js +0 -18
  288. package/lib-module/FlexGrid/index.js +0 -2
  289. package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
  290. package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -170
  291. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -77
  292. package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -47
  293. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -24
  294. package/lib-module/HorizontalScroll/dictionary.js +0 -11
  295. package/lib-module/HorizontalScroll/index.js +0 -11
  296. package/lib-module/HorizontalScroll/itemPositions.js +0 -106
  297. package/lib-module/Icon/Icon.js +0 -61
  298. package/lib-module/Icon/IconText.js +0 -81
  299. package/lib-module/Icon/index.js +0 -4
  300. package/lib-module/IconButton/IconButton.js +0 -115
  301. package/lib-module/IconButton/index.js +0 -2
  302. package/lib-module/InputLabel/InputLabel.js +0 -134
  303. package/lib-module/InputLabel/LabelContent.js +0 -24
  304. package/lib-module/InputLabel/LabelContent.native.js +0 -16
  305. package/lib-module/InputLabel/index.js +0 -2
  306. package/lib-module/InputSupports/InputSupports.js +0 -88
  307. package/lib-module/InputSupports/index.js +0 -2
  308. package/lib-module/InputSupports/useInputSupports.js +0 -31
  309. package/lib-module/Link/ChevronLink.js +0 -51
  310. package/lib-module/Link/InlinePressable.js +0 -37
  311. package/lib-module/Link/InlinePressable.native.js +0 -85
  312. package/lib-module/Link/Link.js +0 -27
  313. package/lib-module/Link/LinkBase.js +0 -223
  314. package/lib-module/Link/TextButton.js +0 -34
  315. package/lib-module/Link/index.js +0 -5
  316. package/lib-module/List/List.js +0 -55
  317. package/lib-module/List/ListItem.js +0 -223
  318. package/lib-module/List/index.js +0 -5
  319. package/lib-module/Modal/Modal.js +0 -208
  320. package/lib-module/Modal/dictionary.js +0 -9
  321. package/lib-module/Modal/index.js +0 -2
  322. package/lib-module/Notification/Notification.js +0 -196
  323. package/lib-module/Notification/dictionary.js +0 -8
  324. package/lib-module/Notification/index.js +0 -2
  325. package/lib-module/Pagination/PageButton.js +0 -65
  326. package/lib-module/Pagination/Pagination.js +0 -140
  327. package/lib-module/Pagination/SideButton.js +0 -103
  328. package/lib-module/Pagination/dictionary.js +0 -18
  329. package/lib-module/Pagination/index.js +0 -2
  330. package/lib-module/Pagination/usePagination.js +0 -72
  331. package/lib-module/Progress/Progress.js +0 -85
  332. package/lib-module/Progress/ProgressBar.js +0 -134
  333. package/lib-module/Progress/ProgressBarBackground.js +0 -41
  334. package/lib-module/Progress/index.js +0 -4
  335. package/lib-module/Radio/Radio.js +0 -274
  336. package/lib-module/Radio/RadioButton.js +0 -128
  337. package/lib-module/Radio/RadioGroup.js +0 -234
  338. package/lib-module/Radio/RadioInput.js +0 -60
  339. package/lib-module/Radio/RadioInput.native.js +0 -6
  340. package/lib-module/Radio/index.js +0 -3
  341. package/lib-module/RadioCard/RadioCard.js +0 -218
  342. package/lib-module/RadioCard/RadioCardGroup.js +0 -241
  343. package/lib-module/RadioCard/index.js +0 -3
  344. package/lib-module/Search/Search.js +0 -241
  345. package/lib-module/Search/dictionary.js +0 -12
  346. package/lib-module/Search/index.js +0 -2
  347. package/lib-module/Select/Group.js +0 -20
  348. package/lib-module/Select/Group.native.js +0 -14
  349. package/lib-module/Select/Item.js +0 -17
  350. package/lib-module/Select/Item.native.js +0 -9
  351. package/lib-module/Select/Picker.js +0 -67
  352. package/lib-module/Select/Picker.native.js +0 -110
  353. package/lib-module/Select/Select.js +0 -316
  354. package/lib-module/Select/index.js +0 -6
  355. package/lib-module/SideNav/Item.js +0 -139
  356. package/lib-module/SideNav/ItemContent.js +0 -45
  357. package/lib-module/SideNav/ItemsGroup.js +0 -115
  358. package/lib-module/SideNav/SideNav.js +0 -133
  359. package/lib-module/SideNav/index.js +0 -1
  360. package/lib-module/Skeleton/Skeleton.js +0 -117
  361. package/lib-module/Skeleton/index.js +0 -2
  362. package/lib-module/Skeleton/skeleton.constant.js +0 -3
  363. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
  364. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -24
  365. package/lib-module/Spacer/Spacer.js +0 -97
  366. package/lib-module/Spacer/index.js +0 -2
  367. package/lib-module/StackView/StackView.js +0 -124
  368. package/lib-module/StackView/StackWrap.js +0 -48
  369. package/lib-module/StackView/StackWrap.native.js +0 -3
  370. package/lib-module/StackView/StackWrapBox.js +0 -114
  371. package/lib-module/StackView/StackWrapGap.js +0 -58
  372. package/lib-module/StackView/common.js +0 -32
  373. package/lib-module/StackView/getStackedContent.js +0 -123
  374. package/lib-module/StackView/index.js +0 -5
  375. package/lib-module/StepTracker/Step.js +0 -229
  376. package/lib-module/StepTracker/StepTracker.js +0 -175
  377. package/lib-module/StepTracker/dictionary.js +0 -10
  378. package/lib-module/StepTracker/index.js +0 -2
  379. package/lib-module/Tabs/Tabs.js +0 -113
  380. package/lib-module/Tabs/TabsItem.js +0 -215
  381. package/lib-module/Tabs/index.js +0 -2
  382. package/lib-module/Tags/Tags.js +0 -245
  383. package/lib-module/Tags/index.js +0 -2
  384. package/lib-module/TextInput/TextArea.js +0 -88
  385. package/lib-module/TextInput/TextInput.js +0 -68
  386. package/lib-module/TextInput/TextInputBase.js +0 -233
  387. package/lib-module/TextInput/index.js +0 -3
  388. package/lib-module/TextInput/propTypes.js +0 -37
  389. package/lib-module/ThemeProvider/ThemeProvider.js +0 -35
  390. package/lib-module/ThemeProvider/index.js +0 -6
  391. package/lib-module/ThemeProvider/useSetTheme.js +0 -22
  392. package/lib-module/ThemeProvider/useTheme.js +0 -14
  393. package/lib-module/ThemeProvider/useThemeTokens.js +0 -105
  394. package/lib-module/ThemeProvider/utils/index.js +0 -2
  395. package/lib-module/ThemeProvider/utils/styles.js +0 -174
  396. package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -151
  397. package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -227
  398. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -211
  399. package/lib-module/ToggleSwitch/index.js +0 -3
  400. package/lib-module/Tooltip/Backdrop.js +0 -52
  401. package/lib-module/Tooltip/Backdrop.native.js +0 -43
  402. package/lib-module/Tooltip/Tooltip.js +0 -332
  403. package/lib-module/Tooltip/dictionary.js +0 -8
  404. package/lib-module/Tooltip/getTooltipPosition.js +0 -164
  405. package/lib-module/Tooltip/index.js +0 -2
  406. package/lib-module/TooltipButton/TooltipButton.js +0 -71
  407. package/lib-module/TooltipButton/index.js +0 -2
  408. package/lib-module/Typography/Typography.js +0 -120
  409. package/lib-module/Typography/index.js +0 -2
  410. package/lib-module/ViewportProvider/ViewportProvider.js +0 -28
  411. package/lib-module/ViewportProvider/index.js +0 -3
  412. package/lib-module/ViewportProvider/useViewport.js +0 -3
  413. package/lib-module/ViewportProvider/useViewportListener.js +0 -43
  414. package/lib-module/index.js +0 -48
  415. package/lib-module/utils/a11y/index.js +0 -2
  416. package/lib-module/utils/a11y/semantics.js +0 -154
  417. package/lib-module/utils/a11y/textSize.js +0 -34
  418. package/lib-module/utils/animation/index.js +0 -2
  419. package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -49
  420. package/lib-module/utils/children.js +0 -118
  421. package/lib-module/utils/containUniqueFields.js +0 -26
  422. package/lib-module/utils/index.js +0 -16
  423. package/lib-module/utils/info/index.js +0 -7
  424. package/lib-module/utils/info/platform/index.js +0 -11
  425. package/lib-module/utils/info/platform/platform.android.js +0 -1
  426. package/lib-module/utils/info/platform/platform.ios.js +0 -1
  427. package/lib-module/utils/info/platform/platform.js +0 -1
  428. package/lib-module/utils/info/platform/platform.native.js +0 -4
  429. package/lib-module/utils/info/versions.js +0 -5
  430. package/lib-module/utils/input.js +0 -180
  431. package/lib-module/utils/pressability.js +0 -97
  432. package/lib-module/utils/props/a11yProps.js +0 -140
  433. package/lib-module/utils/props/clickProps.js +0 -25
  434. package/lib-module/utils/props/componentPropType.js +0 -63
  435. package/lib-module/utils/props/copyPropTypes.js +0 -2
  436. package/lib-module/utils/props/getPropSelector.js +0 -6
  437. package/lib-module/utils/props/handlerProps.js +0 -59
  438. package/lib-module/utils/props/hrefAttrsProp.js +0 -30
  439. package/lib-module/utils/props/index.js +0 -19
  440. package/lib-module/utils/props/inputSupportsProps.js +0 -52
  441. package/lib-module/utils/props/linkProps.js +0 -43
  442. package/lib-module/utils/props/paddingProp.js +0 -9
  443. package/lib-module/utils/props/pressProps.js +0 -42
  444. package/lib-module/utils/props/rectProp.js +0 -9
  445. package/lib-module/utils/props/responsiveProps.js +0 -30
  446. package/lib-module/utils/props/selectSystemProps.js +0 -24
  447. package/lib-module/utils/props/spacingProps.js +0 -56
  448. package/lib-module/utils/props/textInputProps.js +0 -194
  449. package/lib-module/utils/props/textProps.js +0 -59
  450. package/lib-module/utils/props/tokens.js +0 -120
  451. package/lib-module/utils/props/variantProp.js +0 -18
  452. package/lib-module/utils/props/viewProps.js +0 -22
  453. package/lib-module/utils/ssr.js +0 -35
  454. package/lib-module/utils/useCopy.js +0 -42
  455. package/lib-module/utils/useHash.js +0 -44
  456. package/lib-module/utils/useHash.native.js +0 -7
  457. package/lib-module/utils/useResponsiveProp.js +0 -47
  458. package/lib-module/utils/useSpacingScale.js +0 -123
  459. package/lib-module/utils/useUniqueId.js +0 -12
  460. package/lib-module/utils/withLinkRouter.js +0 -82
  461. package/stories/A11yText/A11yText.stories.jsx +0 -71
  462. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
  463. package/stories/Box/Box.stories.jsx +0 -143
  464. package/stories/Button/Button.stories.jsx +0 -72
  465. package/stories/Button/ButtonGroup.stories.jsx +0 -81
  466. package/stories/Button/ButtonLink.stories.jsx +0 -30
  467. package/stories/Card/Card.stories.jsx +0 -62
  468. package/stories/Checkbox/Checkbox.stories.jsx +0 -94
  469. package/stories/Divider/Divider.stories.jsx +0 -68
  470. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
  471. package/stories/Feedback/Feedback.stories.jsx +0 -96
  472. package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
  473. package/stories/FlexGrid/02 Row.stories.jsx +0 -41
  474. package/stories/FlexGrid/03 Col.stories.jsx +0 -141
  475. package/stories/Icon/Icon.stories.jsx +0 -79
  476. package/stories/IconButton/IconButton.stories.jsx +0 -50
  477. package/stories/InputLabel/InputLabel.stories.jsx +0 -39
  478. package/stories/Link/ChevronLink.stories.jsx +0 -48
  479. package/stories/Link/Link.stories.jsx +0 -90
  480. package/stories/Link/TextButton.stories.jsx +0 -79
  481. package/stories/List/List.stories.jsx +0 -117
  482. package/stories/Modal/Modal.stories.jsx +0 -54
  483. package/stories/Notification/Notification.stories.jsx +0 -82
  484. package/stories/Pagination/Pagination.stories.jsx +0 -64
  485. package/stories/Progress/Progress.stories.jsx +0 -93
  486. package/stories/Radio/Radio.stories.jsx +0 -100
  487. package/stories/RadioCard/RadioCard.stories.jsx +0 -98
  488. package/stories/Search/Search.stories.jsx +0 -66
  489. package/stories/Select/Select.stories.jsx +0 -55
  490. package/stories/SideNav/SideNav.stories.jsx +0 -42
  491. package/stories/SideNav/SideNavItem.stories.jsx +0 -9
  492. package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
  493. package/stories/Skeleton/Skeleton.stories.jsx +0 -36
  494. package/stories/Spacer/Spacer.stories.jsx +0 -38
  495. package/stories/StackView/StackView.stories.jsx +0 -75
  496. package/stories/StackView/StackWrap.stories.jsx +0 -64
  497. package/stories/StepTracker/StepTracker.stories.jsx +0 -71
  498. package/stories/Tabs/Tabs.stories.jsx +0 -97
  499. package/stories/Tags/Tags.stories.jsx +0 -69
  500. package/stories/TextInput/TextArea.stories.jsx +0 -101
  501. package/stories/TextInput/TextInput.stories.jsx +0 -141
  502. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
  503. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
  504. package/stories/Tooltip/Tooltip.stories.jsx +0 -81
  505. package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
  506. package/stories/Typography/Typography.stories.jsx +0 -49
  507. package/stories/platform-supports.jsx +0 -32
  508. package/stories/platform-supports.native.jsx +0 -3
  509. package/stories/supports.jsx +0 -236
@@ -1,273 +0,0 @@
1
- import React from 'react'
2
- import { renderHook } from '@testing-library/react-hooks'
3
- import { useSpacingScale } from '../../src/utils'
4
- import Theme from '../../__fixtures__/Theme'
5
- import Viewport from '../../__fixtures__/Viewport'
6
-
7
- describe('useSpacingScale', () => {
8
- // values from testTheme.js
9
- const expectedDefaultScale = [0, 4, 8, 16, 24, 32, 36]
10
- const expectedCompactScale = [0, 2, 4, 6, 8, 10, 12]
11
- const expectedResponsiveScale = {
12
- xs: [0, 1, 2, 3, 4, 5, 6],
13
- sm: [0, 3, 4, 5, 6, 7, 8],
14
- md: [0, 3, 4, 5, 6, 7, 8],
15
- lg: [0, 7, 8, 9, 10, 11, 12],
16
- xl: [0, 7, 8, 9, 10, 11, 12]
17
- }
18
-
19
- const wrapper = ({ children, viewport }) => (
20
- <Viewport viewport={viewport}>
21
- <Theme>{children}</Theme>
22
- </Viewport>
23
- )
24
-
25
- it.each(expectedDefaultScale.map((item, index) => [item, index]))(
26
- 'returns the expected size index %# from the theme spacing scale',
27
- (expectedSize, index) => {
28
- const { result } = renderHook(() => useSpacingScale(index), {
29
- wrapper
30
- })
31
- expect(result.current).toBe(expectedSize)
32
- }
33
- )
34
- it.each(expectedCompactScale.map((item, index) => [item, index]))(
35
- 'returns the expected size index %# from the theme spacing scale in a variant',
36
- (expectedSize, index) => {
37
- const { result } = renderHook(
38
- () => useSpacingScale({ space: index, options: { variant: { compact: true } } }),
39
- {
40
- wrapper
41
- }
42
- )
43
- expect(result.current).toBe(expectedSize)
44
- }
45
- )
46
- it.each(Object.entries(expectedResponsiveScale))(
47
- 'returns appropriate sizes from a responsive theme variant at %p viewport',
48
- (viewport, expectedValues) => {
49
- const { result, rerender } = renderHook(({ spacingValue }) => useSpacingScale(spacingValue), {
50
- wrapper
51
- })
52
- expectedValues.forEach((expectedSize, index) => {
53
- rerender({
54
- viewport,
55
- spacingValue: { space: index, options: { variant: { responsive: true } } }
56
- })
57
- expect(result.current).toBe(expectedSize)
58
- })
59
- }
60
- )
61
-
62
- it('returns the 0 index when passed a nullish spacing value', () => {
63
- const { result, rerender } = renderHook((spacingValue) => useSpacingScale(spacingValue), {
64
- wrapper
65
- })
66
- // implicit undefined
67
- expect(result.current).toBe(expectedDefaultScale[0])
68
- // explicit undefined
69
- rerender(undefined)
70
- expect(result.current).toBe(expectedDefaultScale[0])
71
- rerender(null)
72
- expect(result.current).toBe(expectedDefaultScale[0])
73
-
74
- // confim this test isn't a false positive misuing rerender etc
75
- rerender(1)
76
- expect(result.current).toBe(expectedDefaultScale[1])
77
- })
78
- it('returns the 0 index when passed a nullish spacing value in a variant', () => {
79
- const { result, rerender } = renderHook((spacingValue) => useSpacingScale(spacingValue), {
80
- wrapper,
81
- initialProps: { options: { variant: { compact: true } } }
82
- })
83
- // implicit undefined
84
- expect(result.current).toBe(expectedCompactScale[0])
85
- // explicit undefined
86
- rerender({ space: undefined, options: { variant: { compact: true } } })
87
- expect(result.current).toBe(expectedCompactScale[0])
88
- rerender({ space: null, options: { variant: { compact: true } } })
89
- expect(result.current).toBe(expectedCompactScale[0])
90
-
91
- // confim this test isn't a false positive misuing rerender etc
92
- rerender({ space: 1, options: { variant: { compact: true } } })
93
- expect(result.current).toBe(expectedCompactScale[1])
94
- })
95
-
96
- it('returns the highest index when passed an out-of-bounds spacing index', () => {
97
- const { result } = renderHook(() => useSpacingScale(99), {
98
- wrapper
99
- })
100
- expect(result.current).toBe(expectedDefaultScale[expectedDefaultScale.length - 1])
101
- })
102
- it('returns the highest index when passed an out-of-bounds spacing index in a variant', () => {
103
- const { result } = renderHook(
104
- () => useSpacingScale({ space: 99, options: { variant: { compact: true } } }),
105
- {
106
- wrapper
107
- }
108
- )
109
- expect(result.current).toBe(expectedCompactScale[expectedDefaultScale.length - 1])
110
- })
111
-
112
- it('returns viewport indexes that explicitly match current viewport', () => {
113
- const spacingValue = { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }
114
- const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
115
- wrapper,
116
- initialProps: { viewport: 'xs', spacingValue }
117
- })
118
- expect(result.current).toBe(expectedDefaultScale[1])
119
- rerender({ viewport: 'sm', spacingValue })
120
- expect(result.current).toBe(expectedDefaultScale[2])
121
- rerender({ viewport: 'md', spacingValue })
122
- expect(result.current).toBe(expectedDefaultScale[3])
123
- rerender({ viewport: 'lg', spacingValue })
124
- expect(result.current).toBe(expectedDefaultScale[4])
125
- rerender({ viewport: 'xl', spacingValue })
126
- expect(result.current).toBe(expectedDefaultScale[5])
127
- })
128
- it('returns viewport indexes that explicitly match current viewport in a variant', () => {
129
- const spacingValue = {
130
- xs: 1,
131
- sm: 2,
132
- md: 3,
133
- lg: 4,
134
- xl: 5,
135
- options: { variant: { compact: true } }
136
- }
137
- const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
138
- wrapper,
139
- initialProps: { viewport: 'xs', spacingValue }
140
- })
141
- expect(result.current).toBe(expectedCompactScale[1])
142
- rerender({ viewport: 'sm', spacingValue })
143
- expect(result.current).toBe(expectedCompactScale[2])
144
- rerender({ viewport: 'md', spacingValue })
145
- expect(result.current).toBe(expectedCompactScale[3])
146
- rerender({ viewport: 'lg', spacingValue })
147
- expect(result.current).toBe(expectedCompactScale[4])
148
- rerender({ viewport: 'xl', spacingValue })
149
- expect(result.current).toBe(expectedCompactScale[5])
150
- })
151
-
152
- it('returns viewport indexes that implicitly match current viewport', () => {
153
- const spacingValue = { xs: 1, md: 3 }
154
- const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
155
- wrapper,
156
- initialProps: { viewport: 'xs', spacingValue }
157
- })
158
- expect(result.current).toBe(expectedDefaultScale[1])
159
- rerender({ viewport: 'sm', spacingValue })
160
- expect(result.current).toBe(expectedDefaultScale[1])
161
- rerender({ viewport: 'md', spacingValue })
162
- expect(result.current).toBe(expectedDefaultScale[3])
163
- rerender({ viewport: 'lg', spacingValue })
164
- expect(result.current).toBe(expectedDefaultScale[3])
165
- rerender({ viewport: 'xl', spacingValue })
166
- expect(result.current).toBe(expectedDefaultScale[3])
167
- })
168
- it('returns viewport indexes that implicitly match current viewport in a variant', () => {
169
- const spacingValue = { xs: 1, md: 3, options: { variant: { compact: true } } }
170
- const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
171
- wrapper,
172
- initialProps: { viewport: 'xs', spacingValue }
173
- })
174
- expect(result.current).toBe(expectedCompactScale[1])
175
- rerender({ viewport: 'sm', spacingValue })
176
- expect(result.current).toBe(expectedCompactScale[1])
177
- rerender({ viewport: 'md', spacingValue })
178
- expect(result.current).toBe(expectedCompactScale[3])
179
- rerender({ viewport: 'lg', spacingValue })
180
- expect(result.current).toBe(expectedCompactScale[3])
181
- rerender({ viewport: 'xl', spacingValue })
182
- expect(result.current).toBe(expectedCompactScale[3])
183
- })
184
-
185
- it('chooses smallest provided viewport index if viewport is unavailable', () => {
186
- const spacingValue = { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }
187
- const { result } = renderHook((args) => useSpacingScale(args.spacingValue), {
188
- wrapper,
189
- initialProps: { viewport: null, spacingValue }
190
- })
191
- expect(result.current).toBe(expectedDefaultScale[1])
192
- })
193
- it('chooses 0 index if current viewport matches no provided index', () => {
194
- const spacingValue = { lg: 4 }
195
- const { result, rerender } = renderHook((args) => useSpacingScale(args.spacingValue), {
196
- wrapper,
197
- initialProps: { viewport: 'xs', spacingValue }
198
- })
199
- expect(result.current).toBe(expectedDefaultScale[0])
200
- rerender({ viewport: 'sm', spacingValue })
201
- expect(result.current).toBe(expectedDefaultScale[0])
202
- rerender({ viewport: 'md', spacingValue })
203
- expect(result.current).toBe(expectedDefaultScale[0])
204
- rerender({ viewport: 'lg', spacingValue })
205
- expect(result.current).toBe(expectedDefaultScale[4])
206
- rerender({ viewport: 'xl', spacingValue })
207
- expect(result.current).toBe(expectedDefaultScale[4])
208
- })
209
-
210
- it('subtracts a provided value from a spacing scale value', () => {
211
- const spacingValue = { viewport: 'xs', space: 2, options: { subtract: 3 } }
212
- const { result } = renderHook(() => useSpacingScale(spacingValue), {
213
- wrapper
214
- })
215
- expect(result.current).toBe(expectedDefaultScale[2] - 3)
216
- })
217
- it('subtracts a provided value from a spacing scale value in a variant', () => {
218
- const spacingValue = {
219
- space: 4,
220
- options: { subtract: 3, variant: { compact: true } }
221
- }
222
- const { result } = renderHook(() => useSpacingScale(spacingValue), {
223
- wrapper
224
- })
225
- expect(result.current).toBe(expectedCompactScale[4] - 3)
226
- })
227
- it('returns 0 if a subtraction would result in a negative number', () => {
228
- const spacingValue = { space: 2, options: { subtract: 999 } }
229
- const { result } = renderHook((args) => useSpacingScale(args.spacingValue), {
230
- wrapper,
231
- initialProps: { spacingValue }
232
- })
233
- expect(result.current).toBe(0)
234
- })
235
-
236
- it('gives an exact amount if `size` option is passed', () => {
237
- const size = 123456
238
- const spacingValue = { xs: 1, sm: 2, md: 3, lg: 4, xl: 5, options: { size } }
239
- const compactSpacingValue = { ...spacingValue, options: { size, variant: { compact: true } } }
240
- const { result, rerender } = renderHook((args) => useSpacingScale(args.spacingValue), {
241
- wrapper,
242
- initialProps: { viewport: 'xs', spacingValue }
243
- })
244
- expect(result.current).toBe(size)
245
- rerender({ viewport: 'sm', spacingValue })
246
- expect(result.current).toBe(size)
247
- rerender({ viewport: 'md', spacingValue })
248
- expect(result.current).toBe(size)
249
- rerender({ viewport: 'lg', spacingValue })
250
- expect(result.current).toBe(size)
251
- rerender({ viewport: 'xl', spacingValue })
252
- expect(result.current).toBe(size)
253
- rerender({ viewport: 'xs', spacingValue: compactSpacingValue })
254
- expect(result.current).toBe(size)
255
- rerender({ viewport: 'sm', spacingValue: compactSpacingValue })
256
- expect(result.current).toBe(size)
257
- rerender({ viewport: 'md', spacingValue: compactSpacingValue })
258
- expect(result.current).toBe(size)
259
- rerender({ viewport: 'lg', spacingValue: compactSpacingValue })
260
- expect(result.current).toBe(size)
261
- rerender({ viewport: 'xl', spacingValue: compactSpacingValue })
262
- expect(result.current).toBe(size)
263
- })
264
- it('subtracts from size if `subtract` and `size` options are provided', () => {
265
- const size = 123456
266
- const subtract = 12345
267
- const spacingValue = { options: { size, subtract } }
268
- const { result } = renderHook(() => useSpacingScale(spacingValue), {
269
- wrapper
270
- })
271
- expect(result.current).toBe(size - subtract)
272
- })
273
- })
@@ -1,31 +0,0 @@
1
- import { renderHook } from '@testing-library/react-hooks'
2
- import useUniqueId from '../../lib/utils/useUniqueId'
3
-
4
- describe('useUniqueId hook', () => {
5
- it('returns the same id for each re-render, but a different id for a new instance', () => {
6
- const { result, rerender } = renderHook(() => useUniqueId('prefix'))
7
-
8
- expect(result.current).toBe('prefix-1')
9
-
10
- rerender()
11
-
12
- expect(result.current).toBe('prefix-1')
13
-
14
- // has to be done within the same test case, as we can't ensure order in which tests are being run in parallel
15
- const { result: result2, rerender: rerender2 } = renderHook(() => useUniqueId('prefix'))
16
-
17
- expect(result.current).toBe('prefix-1')
18
- expect(result2.current).toBe('prefix-2')
19
-
20
- // ensure that instances' rerendering doesn't affect one another
21
- rerender2()
22
-
23
- expect(result.current).toBe('prefix-1')
24
- expect(result2.current).toBe('prefix-2')
25
-
26
- rerender()
27
-
28
- expect(result.current).toBe('prefix-1')
29
- expect(result2.current).toBe('prefix-2')
30
- })
31
- })
package/babel.config.js DELETED
@@ -1,35 +0,0 @@
1
- module.exports = (api) => {
2
- // configuration for jest
3
- if (api.env('test')) {
4
- return {
5
- presets: ['module:metro-react-native-babel-preset']
6
- }
7
- }
8
-
9
- // Default to CJS for docs generators etc; build as ESM modules when requested.
10
- const isModule = api.env('module')
11
-
12
- return {
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
- ]
34
- }
35
- }
@@ -1,72 +0,0 @@
1
- const fs = require('fs')
2
- const schema = require('@telus-uds/system-theme-tokens')
3
- const allExports = require('./src')
4
-
5
- const { a11yProps } = allExports
6
- const a11yPropTypes = Object.keys(a11yProps.types)
7
-
8
- const parseComponentDocs = (name, generated) => {
9
- const { description } = generated // TODO parse markdown and split by heading
10
- const props = {} // store derived prop data
11
- const attributes = {
12
- // any other computed attributes
13
- acceptsRNA11yProps: a11yPropTypes.every((key) => key in generated.props)
14
- }
15
-
16
- Object.entries(generated.props).forEach(([propName, prop]) => {
17
- if (prop.description?.includes('@ignore')) {
18
- return // remove ignored props
19
- }
20
- if (attributes.acceptsRNA11yProps && a11yPropTypes.includes(propName)) {
21
- return // remove a11y props if all supported (there are 30+, instead we have the above attribute to show this)
22
- }
23
-
24
- const out = { ...prop }
25
-
26
- // check if this prop references the tokens schema;
27
- // this regex extracts unquoted parameter strings from function
28
- // calls like `getTokensPropType('ChevronLink', 'Link')` with the result
29
- // being an array: `['ChevronLink', 'Link']`
30
- const tokensProp = out.type?.raw?.match(/(?<=getTokensPropType\(.*)(\w+)+(?=.*\))/gs)
31
-
32
- // if so, try and read the schema from the base components
33
- if (tokensProp && tokensProp.length > 0) {
34
- let raw = {}
35
-
36
- tokensProp.forEach((componentName) => {
37
- if (!schema.components[componentName]) {
38
- // this would be a run-time error in the base components
39
- throw new Error(
40
- `Unknown schema component reference: ${componentName} from component: ${name}`
41
- )
42
- }
43
- raw = { ...raw, ...schema.components[componentName] }
44
- })
45
- out.type = { ...out.type, raw }
46
- }
47
- props[propName] = out
48
- })
49
-
50
- return { docs: { description, props, attributes } }
51
- }
52
-
53
- const components = {}
54
-
55
- Object.entries(allExports).forEach(([name, exp]) => {
56
- // fail fast with meaningful error on typos, missing exports, etc
57
- if (!exp) throw new Error(`components-base export "${name}" is ${exp} (typeof ${typeof exp})`)
58
-
59
- if (exp.__docgenInfo) {
60
- // populated by babel-plugin-react-docgen
61
- components[name] = parseComponentDocs(name, exp.__docgenInfo)
62
-
63
- // check for second-level components e.g List.Item (can only be on a component)
64
- Object.entries(exp).forEach(([subComponentName, prop]) => {
65
- if (prop.__docgenInfo) {
66
- components[name][subComponentName] = parseComponentDocs(subComponentName, prop.__docgenInfo)
67
- }
68
- })
69
- }
70
- }, {})
71
-
72
- fs.writeFileSync('./component-docs.json', JSON.stringify({ schema, components }, null, 2))
package/jest.config.js DELETED
@@ -1,32 +0,0 @@
1
- const preset = require('react-native/jest-preset')
2
- const name = require('./package.json').name.split('@telus-uds/').pop()
3
-
4
- // cherry-pick the bits of the preset we want to avoid it overriding the fix we have on L14
5
- module.exports = {
6
- haste: preset.haste,
7
- displayName: {
8
- name,
9
- color: 'blue'
10
- },
11
- setupFiles: preset.setupFiles,
12
- transform: {
13
- // Use babel-jest instead of react-native/jest/preprocessor.js so that the coverage report is correct as per:
14
- // https://github.com/facebook/react-native/issues/20404#issuecomment-593392763
15
- // https://kulshekhar.github.io/ts-jest/docs/guides/react-native/#jest-config
16
- // __dirname here tells babel to look in components-base for babel root when running from monorepo root
17
- '\\.(js|jsx)$': ['babel-jest', { cwd: __dirname }]
18
- },
19
- setupFilesAfterEnv: [
20
- '@testing-library/jest-native/extend-expect',
21
- // Fail tests that use console.error or console.warn
22
- '<rootDir>/../../jest-no-console'
23
- ],
24
- moduleNameMapper: {
25
- '.+\\.(otf|svg|png|jpg)$': 'identity-obj-proxy'
26
- },
27
- transformIgnorePatterns: [
28
- 'node_modules/(?!(jest-)?react-native|@react-native|@react-native-community|@react-native-picker)'
29
- ],
30
- // Count everything in src when calculating coverage
31
- collectCoverageFrom: ['src/**/*.{js,jsx}']
32
- }
@@ -1,62 +0,0 @@
1
- import React, { createContext, useContext, useEffect, useState } from 'react';
2
- import PropTypes from 'prop-types';
3
- import AccessibilityInfo from "react-native-web/dist/exports/AccessibilityInfo";
4
- import Platform from "react-native-web/dist/exports/Platform";
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- const ScreenReaderContext = /*#__PURE__*/createContext(false);
7
- const ReducedMotionContext = /*#__PURE__*/createContext(false);
8
-
9
- const A11yInfoProvider = ({
10
- children
11
- }) => {
12
- const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false);
13
- const [screenReaderEnabled, setScreenReaderEnabled] = useState(false);
14
- useEffect(() => {
15
- if (process.env.NODE_ENV === 'test') {
16
- // On Jest these effects do nothing but can cause `act` state change warnings
17
- // and "...after the Jest environment has been torn down" errors, so skip them.
18
- return () => {};
19
- }
20
-
21
- AccessibilityInfo.addEventListener('reduceMotionChanged', setReduceMotionEnabled);
22
- AccessibilityInfo.addEventListener('screenReaderChanged', setScreenReaderEnabled);
23
-
24
- const setInitialA11yInfo = async () => {
25
- const [initialReduceMotionEnabled, initialScreenReaderEnabled] = await Promise.all([AccessibilityInfo.isReduceMotionEnabled(), AccessibilityInfo.isScreenReaderEnabled()]); // Browsers can't detect screen readers; in RNW isScreenReaderEnabled() is always `true`
26
- // https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/AccessibilityInfo/index.js#L14
27
-
28
- setScreenReaderEnabled(Platform.OS !== 'web' && !!initialScreenReaderEnabled); // RNW does support isReduceMotionEnabled looking for 'prefers-reduced-motion' state
29
-
30
- setReduceMotionEnabled(!!initialReduceMotionEnabled);
31
- };
32
-
33
- if (AccessibilityInfo.isReduceMotionEnabled && AccessibilityInfo.isScreenReaderEnabled) {
34
- setInitialA11yInfo();
35
- }
36
-
37
- return () => {
38
- AccessibilityInfo.removeEventListener('reduceMotionChanged', setReduceMotionEnabled);
39
- AccessibilityInfo.removeEventListener('screenReaderChanged', setScreenReaderEnabled);
40
- };
41
- }, []);
42
- return /*#__PURE__*/_jsx(ReducedMotionContext.Provider, {
43
- value: reduceMotionEnabled,
44
- children: /*#__PURE__*/_jsx(ScreenReaderContext.Provider, {
45
- value: screenReaderEnabled,
46
- children: children
47
- })
48
- });
49
- };
50
-
51
- A11yInfoProvider.propTypes = {
52
- children: PropTypes.node.isRequired
53
- };
54
- export default A11yInfoProvider;
55
- export const useA11yInfo = () => {
56
- const screenReaderEnabled = useContext(ScreenReaderContext);
57
- const reduceMotionEnabled = useContext(ReducedMotionContext);
58
- return {
59
- reduceMotionEnabled,
60
- screenReaderEnabled
61
- };
62
- };
@@ -1,55 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
- import Platform from "react-native-web/dist/exports/Platform";
3
- import StyleSheet from "react-native-web/dist/exports/StyleSheet";
4
- import View from "react-native-web/dist/exports/View";
5
- import PropTypes from 'prop-types';
6
- import { a11yProps, selectSystemProps, viewProps } from '../utils/props';
7
- import { jsx as _jsx } from "react/jsx-runtime";
8
- const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
9
- /**
10
- * A11yText is a zero-size invisible element that adds text to be read by screen readers.
11
- *
12
- * It should be used to add selectable screen-reader-only text to the main document flow,
13
- * as a sibling to blocks of text like paragraphs and interactive elements like buttons.
14
- */
15
-
16
- const A11yText = /*#__PURE__*/forwardRef(({
17
- text,
18
- heading,
19
- ...rest
20
- }, ref) => {
21
- const selectedProps = selectProps({
22
- // On iOS, needs `accessible` to be true to be focusable without non-a11y content.
23
- // On Web, `accessible` causes RNW to set attributes that may make the element be treated as a group.
24
- // On Android, may cause this to be skipped when with `<Text>` siblings in an `accessible` View,
25
- // see https://github.com/facebook/react-native/issues/30851#issuecomment-790165489
26
- accessible: Platform.OS === 'ios',
27
- accessibilityLabel: text,
28
- accessibilityRole: heading ? 'header' : 'text',
29
- ...rest
30
- });
31
- return /*#__PURE__*/_jsx(View, {
32
- style: styles.invisible,
33
- ref: ref,
34
- ...selectedProps
35
- });
36
- });
37
- A11yText.displayName = 'A11yText';
38
- A11yText.propTypes = { ...selectedSystemPropTypes,
39
- text: PropTypes.string.isRequired,
40
- heading: PropTypes.bool
41
- };
42
- const styles = StyleSheet.create({
43
- invisible: {
44
- // Without width or height it is not shown
45
- minHeight: 1,
46
- minWidth: 1,
47
- // Ensures it doesn't occupy space
48
- // position: 'absolute' causes it to be read first in its container
49
- marginEnd: -1,
50
- marginBottom: -1,
51
- // Ensures it is in the correct position on Native
52
- top: -1
53
- }
54
- });
55
- export default A11yText;
@@ -1,76 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
- import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
3
- import { useA11yInfo } from '../A11yInfoProvider';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- import { Fragment as _Fragment } from "react/jsx-runtime";
6
- import { jsxs as _jsxs } from "react/jsx-runtime";
7
- const SVG_RADIUS = 20;
8
- const SVG_CIRCUMFERENCE = SVG_RADIUS * 2 * Math.PI;
9
- const MIN_SVG_LENGTH = MIN_STROKE_ANGLE / 360 * SVG_CIRCUMFERENCE;
10
- const MAX_SVG_LENGTH = (1 - MIN_EMPTY_ANGLE / 360) * SVG_CIRCUMFERENCE;
11
- const animationProps = {
12
- begin: '0s',
13
- dur: `${DURATION}ms`,
14
- fill: 'freeze',
15
- repeatCount: 'indefinite'
16
- };
17
- const bezierProps = {
18
- calcMode: 'spline',
19
- keyTimes: '0; 0.5; 1',
20
- keySplines: `${BEZIER.join(', ')} ; ${BEZIER.join(', ')}`
21
- }; // We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
22
- // It's possible to replicate this functionality with RNW animations, but it snags on chrome at least, see https://github.com/telus/universal-design-system/pull/477 for details.
23
-
24
- const Spinner = /*#__PURE__*/forwardRef(({
25
- size,
26
- color,
27
- thickness,
28
- label
29
- }, ref) => {
30
- const {
31
- reduceMotionEnabled
32
- } = useA11yInfo();
33
- return /*#__PURE__*/_jsx("svg", {
34
- ref: ref,
35
- width: `${size}px`,
36
- height: `${size}px`,
37
- viewBox: "0 0 48 48",
38
- "aria-valuetext": label,
39
- role: "progressbar",
40
- "aria-busy": true,
41
- children: /*#__PURE__*/_jsxs("g", {
42
- children: [reduceMotionEnabled ? null : /*#__PURE__*/_jsx("animateTransform", {
43
- attributeName: "transform",
44
- type: "rotate",
45
- values: `-180 24 24;${360 + MIN_STROKE_ANGLE - 180} 24 24`,
46
- ...animationProps
47
- }), /*#__PURE__*/_jsx("circle", {
48
- fill: "none",
49
- stroke: color,
50
- strokeWidth: thickness * 48 / size,
51
- strokeLinecap: "round",
52
- cx: "24",
53
- cy: "24",
54
- r: "20",
55
- strokeDasharray: reduceMotionEnabled ? MAX_SVG_LENGTH : [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
56
- strokeDashoffset: 0,
57
- children: reduceMotionEnabled ? null : /*#__PURE__*/_jsxs(_Fragment, {
58
- children: [/*#__PURE__*/_jsx("animate", {
59
- attributeName: "stroke-dashoffset",
60
- values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`,
61
- ...animationProps,
62
- ...bezierProps
63
- }), /*#__PURE__*/_jsx("animate", {
64
- attributeName: "stroke-dasharray",
65
- values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`,
66
- ...animationProps,
67
- ...bezierProps
68
- })]
69
- })
70
- })]
71
- })
72
- });
73
- });
74
- Spinner.displayName = 'Spinner';
75
- Spinner.propTypes = propTypes;
76
- export default Spinner;