@telus-uds/components-base 1.8.0 → 1.8.3

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 (495) hide show
  1. package/CHANGELOG.md +34 -2
  2. package/component-docs.json +710 -668
  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 +33 -31
  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 +27 -25
  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 +27 -23
  27. package/lib/Feedback/Feedback.js +48 -35
  28. package/lib/Fieldset/Fieldset.js +16 -15
  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 +37 -30
  46. package/lib/InputLabel/LabelContent.js +12 -9
  47. package/lib/InputLabel/LabelContent.native.js +9 -6
  48. package/lib/InputSupports/InputSupports.js +11 -10
  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 +12 -11
  57. package/lib/List/ListItem.js +103 -79
  58. package/lib/Modal/Modal.js +74 -60
  59. package/lib/Notification/Notification.js +46 -33
  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 +28 -26
  70. package/lib/Radio/RadioInput.js +12 -10
  71. package/lib/RadioCard/RadioCard.js +15 -14
  72. package/lib/RadioCard/RadioCardGroup.js +28 -26
  73. package/lib/Search/Search.js +51 -31
  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 +60 -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 +89 -73
  111. package/lib/ToggleSwitch/ToggleSwitchGroup.js +36 -34
  112. package/lib/Tooltip/Backdrop.js +4 -3
  113. package/lib/Tooltip/Backdrop.native.js +5 -4
  114. package/lib/Tooltip/Tooltip.js +81 -65
  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 +6 -5
  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 +15 -12
  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 +13 -11
  144. package/src/List/List.jsx +30 -19
  145. package/src/List/ListItem.jsx +12 -2
  146. package/src/Modal/Modal.jsx +2 -1
  147. package/src/Pagination/Pagination.jsx +3 -0
  148. package/src/Search/Search.jsx +11 -0
  149. package/src/Select/Item.native.jsx +0 -7
  150. package/.storybook/main.js +0 -11
  151. package/.storybook/preview.js +0 -37
  152. package/.turbo/turbo-build.log +0 -8
  153. package/.turbo/turbo-lint.log +0 -3
  154. package/CHANGELOG.json +0 -311
  155. package/__fixtures__/Accessible.js +0 -34
  156. package/__fixtures__/Accessible.native.js +0 -34
  157. package/__fixtures__/Theme.jsx +0 -13
  158. package/__fixtures__/Viewport.jsx +0 -17
  159. package/__fixtures__/test-utils.js +0 -25
  160. package/__fixtures__/testTheme.js +0 -1830
  161. package/__tests__/A11yText/A11yText.test.jsx +0 -34
  162. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  163. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
  164. package/__tests__/Box/Box.test.jsx +0 -111
  165. package/__tests__/Button/Button.test.jsx +0 -86
  166. package/__tests__/Button/ButtonBase.test.jsx +0 -82
  167. package/__tests__/Button/ButtonGroup.test.jsx +0 -347
  168. package/__tests__/Button/ButtonLink.test.jsx +0 -61
  169. package/__tests__/Card/Card.test.jsx +0 -63
  170. package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
  171. package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
  172. package/__tests__/Divider/Divider.test.jsx +0 -91
  173. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  174. package/__tests__/Feedback/Feedback.test.jsx +0 -42
  175. package/__tests__/FlexGrid/Col.test.jsx +0 -261
  176. package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
  177. package/__tests__/FlexGrid/Row.test.jsx +0 -273
  178. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  179. package/__tests__/Icon/Icon.test.jsx +0 -61
  180. package/__tests__/IconButton/IconButton.test.jsx +0 -52
  181. package/__tests__/InputLabel/InputLabel.test.jsx +0 -28
  182. package/__tests__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
  183. package/__tests__/InputSupports/InputSupports.test.jsx +0 -60
  184. package/__tests__/Link/Link.test.jsx +0 -63
  185. package/__tests__/Link/TextButton.test.jsx +0 -35
  186. package/__tests__/List/List.test.jsx +0 -60
  187. package/__tests__/Modal/Modal.test.jsx +0 -47
  188. package/__tests__/Notification/Notification.test.jsx +0 -20
  189. package/__tests__/Pagination/Pagination.test.jsx +0 -160
  190. package/__tests__/Progress/Progress.test.jsx +0 -79
  191. package/__tests__/Radio/Radio.test.jsx +0 -87
  192. package/__tests__/Radio/RadioGroup.test.jsx +0 -220
  193. package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
  194. package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
  195. package/__tests__/Search/Search.test.jsx +0 -73
  196. package/__tests__/Select/Select.test.jsx +0 -94
  197. package/__tests__/SideNav/SideNav.test.jsx +0 -110
  198. package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
  199. package/__tests__/Spacer/Spacer.test.jsx +0 -63
  200. package/__tests__/StackView/StackView.test.jsx +0 -216
  201. package/__tests__/StackView/StackWrap.test.jsx +0 -47
  202. package/__tests__/StackView/getStackedContent.test.jsx +0 -295
  203. package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
  204. package/__tests__/Tabs/Tabs.test.jsx +0 -40
  205. package/__tests__/Tags/Tags.test.jsx +0 -327
  206. package/__tests__/TextInput/TextArea.test.jsx +0 -35
  207. package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
  208. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
  209. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  210. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  211. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  212. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  213. package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
  214. package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
  215. package/__tests__/Typography/typography.test.jsx +0 -90
  216. package/__tests__/utils/children.test.jsx +0 -128
  217. package/__tests__/utils/containUniqueFields.test.js +0 -25
  218. package/__tests__/utils/input.test.js +0 -375
  219. package/__tests__/utils/props.test.js +0 -36
  220. package/__tests__/utils/semantics.test.jsx +0 -34
  221. package/__tests__/utils/useCopy.test.js +0 -42
  222. package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
  223. package/__tests__/utils/useSpacingScale.test.jsx +0 -273
  224. package/__tests__/utils/useUniqueId.test.js +0 -31
  225. package/babel.config.js +0 -35
  226. package/generate-component-docs.js +0 -72
  227. package/jest.config.js +0 -32
  228. package/lib-module/A11yInfoProvider/index.js +0 -62
  229. package/lib-module/A11yText/index.js +0 -55
  230. package/lib-module/ActivityIndicator/Spinner.js +0 -76
  231. package/lib-module/ActivityIndicator/Spinner.native.js +0 -143
  232. package/lib-module/ActivityIndicator/index.js +0 -40
  233. package/lib-module/ActivityIndicator/shared.js +0 -12
  234. package/lib-module/BaseProvider/index.js +0 -26
  235. package/lib-module/Box/Box.js +0 -243
  236. package/lib-module/Box/index.js +0 -2
  237. package/lib-module/Button/Button.js +0 -25
  238. package/lib-module/Button/ButtonBase.js +0 -254
  239. package/lib-module/Button/ButtonGroup.js +0 -245
  240. package/lib-module/Button/ButtonLink.js +0 -39
  241. package/lib-module/Button/index.js +0 -4
  242. package/lib-module/Button/propTypes.js +0 -36
  243. package/lib-module/Card/Card.js +0 -83
  244. package/lib-module/Card/CardBase.js +0 -62
  245. package/lib-module/Card/PressableCardBase.js +0 -113
  246. package/lib-module/Card/index.js +0 -4
  247. package/lib-module/Checkbox/Checkbox.js +0 -332
  248. package/lib-module/Checkbox/CheckboxGroup.js +0 -231
  249. package/lib-module/Checkbox/CheckboxInput.js +0 -58
  250. package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
  251. package/lib-module/Checkbox/index.js +0 -3
  252. package/lib-module/Divider/Divider.js +0 -123
  253. package/lib-module/Divider/index.js +0 -2
  254. package/lib-module/ExpandCollapse/Accordion.js +0 -15
  255. package/lib-module/ExpandCollapse/Control.js +0 -130
  256. package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -94
  257. package/lib-module/ExpandCollapse/Panel.js +0 -159
  258. package/lib-module/ExpandCollapse/index.js +0 -7
  259. package/lib-module/Feedback/Feedback.js +0 -144
  260. package/lib-module/Feedback/index.js +0 -2
  261. package/lib-module/Fieldset/Fieldset.js +0 -152
  262. package/lib-module/Fieldset/FieldsetContainer.js +0 -29
  263. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -20
  264. package/lib-module/Fieldset/Legend.js +0 -21
  265. package/lib-module/Fieldset/Legend.native.js +0 -28
  266. package/lib-module/Fieldset/cssReset.js +0 -14
  267. package/lib-module/Fieldset/index.js +0 -2
  268. package/lib-module/FlexGrid/Col/Col.js +0 -275
  269. package/lib-module/FlexGrid/Col/index.js +0 -2
  270. package/lib-module/FlexGrid/FlexGrid.js +0 -147
  271. package/lib-module/FlexGrid/Row/Row.js +0 -183
  272. package/lib-module/FlexGrid/Row/index.js +0 -2
  273. package/lib-module/FlexGrid/helpers/index.js +0 -18
  274. package/lib-module/FlexGrid/index.js +0 -2
  275. package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
  276. package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -170
  277. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -77
  278. package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -47
  279. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -24
  280. package/lib-module/HorizontalScroll/dictionary.js +0 -11
  281. package/lib-module/HorizontalScroll/index.js +0 -11
  282. package/lib-module/HorizontalScroll/itemPositions.js +0 -106
  283. package/lib-module/Icon/Icon.js +0 -61
  284. package/lib-module/Icon/IconText.js +0 -81
  285. package/lib-module/Icon/index.js +0 -4
  286. package/lib-module/IconButton/IconButton.js +0 -115
  287. package/lib-module/IconButton/index.js +0 -2
  288. package/lib-module/InputLabel/InputLabel.js +0 -141
  289. package/lib-module/InputLabel/LabelContent.js +0 -24
  290. package/lib-module/InputLabel/LabelContent.native.js +0 -16
  291. package/lib-module/InputLabel/index.js +0 -2
  292. package/lib-module/InputSupports/InputSupports.js +0 -95
  293. package/lib-module/InputSupports/index.js +0 -2
  294. package/lib-module/InputSupports/useInputSupports.js +0 -31
  295. package/lib-module/Link/ChevronLink.js +0 -51
  296. package/lib-module/Link/InlinePressable.js +0 -37
  297. package/lib-module/Link/InlinePressable.native.js +0 -85
  298. package/lib-module/Link/Link.js +0 -27
  299. package/lib-module/Link/LinkBase.js +0 -223
  300. package/lib-module/Link/TextButton.js +0 -34
  301. package/lib-module/Link/index.js +0 -5
  302. package/lib-module/List/List.js +0 -55
  303. package/lib-module/List/ListItem.js +0 -223
  304. package/lib-module/List/index.js +0 -5
  305. package/lib-module/Modal/Modal.js +0 -208
  306. package/lib-module/Modal/dictionary.js +0 -9
  307. package/lib-module/Modal/index.js +0 -2
  308. package/lib-module/Notification/Notification.js +0 -196
  309. package/lib-module/Notification/dictionary.js +0 -8
  310. package/lib-module/Notification/index.js +0 -2
  311. package/lib-module/Pagination/PageButton.js +0 -65
  312. package/lib-module/Pagination/Pagination.js +0 -140
  313. package/lib-module/Pagination/SideButton.js +0 -103
  314. package/lib-module/Pagination/dictionary.js +0 -18
  315. package/lib-module/Pagination/index.js +0 -2
  316. package/lib-module/Pagination/usePagination.js +0 -72
  317. package/lib-module/Progress/Progress.js +0 -85
  318. package/lib-module/Progress/ProgressBar.js +0 -134
  319. package/lib-module/Progress/ProgressBarBackground.js +0 -41
  320. package/lib-module/Progress/index.js +0 -4
  321. package/lib-module/Radio/Radio.js +0 -274
  322. package/lib-module/Radio/RadioButton.js +0 -128
  323. package/lib-module/Radio/RadioGroup.js +0 -241
  324. package/lib-module/Radio/RadioInput.js +0 -60
  325. package/lib-module/Radio/RadioInput.native.js +0 -6
  326. package/lib-module/Radio/index.js +0 -3
  327. package/lib-module/RadioCard/RadioCard.js +0 -218
  328. package/lib-module/RadioCard/RadioCardGroup.js +0 -248
  329. package/lib-module/RadioCard/index.js +0 -3
  330. package/lib-module/Search/Search.js +0 -241
  331. package/lib-module/Search/dictionary.js +0 -12
  332. package/lib-module/Search/index.js +0 -2
  333. package/lib-module/Select/Group.js +0 -20
  334. package/lib-module/Select/Group.native.js +0 -14
  335. package/lib-module/Select/Item.js +0 -17
  336. package/lib-module/Select/Item.native.js +0 -9
  337. package/lib-module/Select/Picker.js +0 -67
  338. package/lib-module/Select/Picker.native.js +0 -110
  339. package/lib-module/Select/Select.js +0 -316
  340. package/lib-module/Select/index.js +0 -6
  341. package/lib-module/SideNav/Item.js +0 -139
  342. package/lib-module/SideNav/ItemContent.js +0 -45
  343. package/lib-module/SideNav/ItemsGroup.js +0 -115
  344. package/lib-module/SideNav/SideNav.js +0 -133
  345. package/lib-module/SideNav/index.js +0 -1
  346. package/lib-module/Skeleton/Skeleton.js +0 -163
  347. package/lib-module/Skeleton/index.js +0 -2
  348. package/lib-module/Skeleton/skeleton.constant.js +0 -3
  349. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
  350. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -24
  351. package/lib-module/Spacer/Spacer.js +0 -97
  352. package/lib-module/Spacer/index.js +0 -2
  353. package/lib-module/StackView/StackView.js +0 -124
  354. package/lib-module/StackView/StackWrap.js +0 -48
  355. package/lib-module/StackView/StackWrap.native.js +0 -3
  356. package/lib-module/StackView/StackWrapBox.js +0 -114
  357. package/lib-module/StackView/StackWrapGap.js +0 -58
  358. package/lib-module/StackView/common.js +0 -32
  359. package/lib-module/StackView/getStackedContent.js +0 -123
  360. package/lib-module/StackView/index.js +0 -5
  361. package/lib-module/StepTracker/Step.js +0 -229
  362. package/lib-module/StepTracker/StepTracker.js +0 -175
  363. package/lib-module/StepTracker/dictionary.js +0 -10
  364. package/lib-module/StepTracker/index.js +0 -2
  365. package/lib-module/Tabs/Tabs.js +0 -113
  366. package/lib-module/Tabs/TabsItem.js +0 -215
  367. package/lib-module/Tabs/index.js +0 -2
  368. package/lib-module/Tags/Tags.js +0 -245
  369. package/lib-module/Tags/index.js +0 -2
  370. package/lib-module/TextInput/TextArea.js +0 -88
  371. package/lib-module/TextInput/TextInput.js +0 -68
  372. package/lib-module/TextInput/TextInputBase.js +0 -233
  373. package/lib-module/TextInput/index.js +0 -3
  374. package/lib-module/TextInput/propTypes.js +0 -37
  375. package/lib-module/ThemeProvider/ThemeProvider.js +0 -35
  376. package/lib-module/ThemeProvider/index.js +0 -6
  377. package/lib-module/ThemeProvider/useSetTheme.js +0 -22
  378. package/lib-module/ThemeProvider/useTheme.js +0 -14
  379. package/lib-module/ThemeProvider/useThemeTokens.js +0 -105
  380. package/lib-module/ThemeProvider/utils/index.js +0 -2
  381. package/lib-module/ThemeProvider/utils/styles.js +0 -174
  382. package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -151
  383. package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -234
  384. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -218
  385. package/lib-module/ToggleSwitch/index.js +0 -3
  386. package/lib-module/Tooltip/Backdrop.js +0 -52
  387. package/lib-module/Tooltip/Backdrop.native.js +0 -43
  388. package/lib-module/Tooltip/Tooltip.js +0 -332
  389. package/lib-module/Tooltip/dictionary.js +0 -8
  390. package/lib-module/Tooltip/getTooltipPosition.js +0 -164
  391. package/lib-module/Tooltip/index.js +0 -2
  392. package/lib-module/TooltipButton/TooltipButton.js +0 -71
  393. package/lib-module/TooltipButton/index.js +0 -2
  394. package/lib-module/Typography/Typography.js +0 -120
  395. package/lib-module/Typography/index.js +0 -2
  396. package/lib-module/ViewportProvider/ViewportProvider.js +0 -28
  397. package/lib-module/ViewportProvider/index.js +0 -3
  398. package/lib-module/ViewportProvider/useViewport.js +0 -3
  399. package/lib-module/ViewportProvider/useViewportListener.js +0 -43
  400. package/lib-module/index.js +0 -48
  401. package/lib-module/utils/a11y/index.js +0 -2
  402. package/lib-module/utils/a11y/semantics.js +0 -154
  403. package/lib-module/utils/a11y/textSize.js +0 -34
  404. package/lib-module/utils/animation/index.js +0 -2
  405. package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -61
  406. package/lib-module/utils/children.js +0 -118
  407. package/lib-module/utils/containUniqueFields.js +0 -26
  408. package/lib-module/utils/index.js +0 -16
  409. package/lib-module/utils/info/index.js +0 -7
  410. package/lib-module/utils/info/platform/index.js +0 -11
  411. package/lib-module/utils/info/platform/platform.android.js +0 -1
  412. package/lib-module/utils/info/platform/platform.ios.js +0 -1
  413. package/lib-module/utils/info/platform/platform.js +0 -1
  414. package/lib-module/utils/info/platform/platform.native.js +0 -4
  415. package/lib-module/utils/info/versions.js +0 -5
  416. package/lib-module/utils/input.js +0 -180
  417. package/lib-module/utils/pressability.js +0 -97
  418. package/lib-module/utils/props/a11yProps.js +0 -140
  419. package/lib-module/utils/props/clickProps.js +0 -25
  420. package/lib-module/utils/props/componentPropType.js +0 -63
  421. package/lib-module/utils/props/copyPropTypes.js +0 -2
  422. package/lib-module/utils/props/getPropSelector.js +0 -6
  423. package/lib-module/utils/props/handlerProps.js +0 -59
  424. package/lib-module/utils/props/hrefAttrsProp.js +0 -30
  425. package/lib-module/utils/props/index.js +0 -19
  426. package/lib-module/utils/props/inputSupportsProps.js +0 -59
  427. package/lib-module/utils/props/linkProps.js +0 -43
  428. package/lib-module/utils/props/paddingProp.js +0 -9
  429. package/lib-module/utils/props/pressProps.js +0 -42
  430. package/lib-module/utils/props/rectProp.js +0 -9
  431. package/lib-module/utils/props/responsiveProps.js +0 -30
  432. package/lib-module/utils/props/selectSystemProps.js +0 -24
  433. package/lib-module/utils/props/spacingProps.js +0 -56
  434. package/lib-module/utils/props/textInputProps.js +0 -194
  435. package/lib-module/utils/props/textProps.js +0 -59
  436. package/lib-module/utils/props/tokens.js +0 -120
  437. package/lib-module/utils/props/variantProp.js +0 -18
  438. package/lib-module/utils/props/viewProps.js +0 -22
  439. package/lib-module/utils/ssr.js +0 -35
  440. package/lib-module/utils/useCopy.js +0 -42
  441. package/lib-module/utils/useHash.js +0 -44
  442. package/lib-module/utils/useHash.native.js +0 -7
  443. package/lib-module/utils/useResponsiveProp.js +0 -47
  444. package/lib-module/utils/useSpacingScale.js +0 -123
  445. package/lib-module/utils/useUniqueId.js +0 -12
  446. package/lib-module/utils/withLinkRouter.js +0 -82
  447. package/stories/A11yText/A11yText.stories.jsx +0 -71
  448. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
  449. package/stories/Box/Box.stories.jsx +0 -143
  450. package/stories/Button/Button.stories.jsx +0 -72
  451. package/stories/Button/ButtonGroup.stories.jsx +0 -81
  452. package/stories/Button/ButtonLink.stories.jsx +0 -30
  453. package/stories/Card/Card.stories.jsx +0 -62
  454. package/stories/Checkbox/Checkbox.stories.jsx +0 -94
  455. package/stories/Divider/Divider.stories.jsx +0 -68
  456. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
  457. package/stories/Feedback/Feedback.stories.jsx +0 -96
  458. package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
  459. package/stories/FlexGrid/02 Row.stories.jsx +0 -41
  460. package/stories/FlexGrid/03 Col.stories.jsx +0 -141
  461. package/stories/Icon/Icon.stories.jsx +0 -79
  462. package/stories/IconButton/IconButton.stories.jsx +0 -50
  463. package/stories/InputLabel/InputLabel.stories.jsx +0 -39
  464. package/stories/Link/ChevronLink.stories.jsx +0 -48
  465. package/stories/Link/Link.stories.jsx +0 -90
  466. package/stories/Link/TextButton.stories.jsx +0 -79
  467. package/stories/List/List.stories.jsx +0 -117
  468. package/stories/Modal/Modal.stories.jsx +0 -54
  469. package/stories/Notification/Notification.stories.jsx +0 -82
  470. package/stories/Pagination/Pagination.stories.jsx +0 -64
  471. package/stories/Progress/Progress.stories.jsx +0 -93
  472. package/stories/Radio/Radio.stories.jsx +0 -100
  473. package/stories/RadioCard/RadioCard.stories.jsx +0 -98
  474. package/stories/Search/Search.stories.jsx +0 -66
  475. package/stories/Select/Select.stories.jsx +0 -55
  476. package/stories/SideNav/SideNav.stories.jsx +0 -42
  477. package/stories/SideNav/SideNavItem.stories.jsx +0 -9
  478. package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
  479. package/stories/Skeleton/Skeleton.stories.jsx +0 -36
  480. package/stories/Spacer/Spacer.stories.jsx +0 -38
  481. package/stories/StackView/StackView.stories.jsx +0 -75
  482. package/stories/StackView/StackWrap.stories.jsx +0 -64
  483. package/stories/StepTracker/StepTracker.stories.jsx +0 -71
  484. package/stories/Tabs/Tabs.stories.jsx +0 -98
  485. package/stories/Tags/Tags.stories.jsx +0 -69
  486. package/stories/TextInput/TextArea.stories.jsx +0 -101
  487. package/stories/TextInput/TextInput.stories.jsx +0 -141
  488. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
  489. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
  490. package/stories/Tooltip/Tooltip.stories.jsx +0 -81
  491. package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
  492. package/stories/Typography/Typography.stories.jsx +0 -49
  493. package/stories/platform-supports.jsx +0 -32
  494. package/stories/platform-supports.native.jsx +0 -3
  495. 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;