@telus-uds/components-base 0.0.2-prerelease.5 → 0.0.2-prerelease.9

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 (429) hide show
  1. package/.ultra.cache.json +1 -0
  2. package/CHANGELOG.md +65 -0
  3. package/__fixtures__/Accessible.js +33 -0
  4. package/__fixtures__/Accessible.native.js +32 -0
  5. package/__fixtures__/testTheme.js +871 -52
  6. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
  7. package/__tests__/Button/ButtonBase.test.jsx +3 -32
  8. package/__tests__/Button/ButtonGroup.test.jsx +2 -2
  9. package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
  10. package/__tests__/Checkbox/CheckboxGroup.test.jsx +247 -0
  11. package/__tests__/Icon/Icon.test.jsx +3 -3
  12. package/__tests__/IconButton/IconButton.test.jsx +52 -0
  13. package/__tests__/InputSupports/InputSupports.test.jsx +50 -0
  14. package/__tests__/List/List.test.jsx +60 -0
  15. package/__tests__/Modal/Modal.test.jsx +47 -0
  16. package/__tests__/Notification/Notification.test.jsx +20 -0
  17. package/__tests__/Pagination/Pagination.test.jsx +2 -2
  18. package/__tests__/Progress/Progress.test.jsx +79 -0
  19. package/__tests__/Radio/Radio.test.jsx +87 -0
  20. package/__tests__/Radio/RadioGroup.test.jsx +221 -0
  21. package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
  22. package/__tests__/RadioCard/RadioCardGroup.test.jsx +247 -0
  23. package/__tests__/Search/Search.test.jsx +72 -0
  24. package/__tests__/Select/Select.test.jsx +93 -0
  25. package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
  26. package/__tests__/StackView/StackView.test.jsx +0 -26
  27. package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
  28. package/__tests__/Tabs/Tabs.test.jsx +200 -0
  29. package/__tests__/Tags/Tags.test.jsx +328 -0
  30. package/__tests__/TextInput/TextArea.test.jsx +34 -0
  31. package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +20 -46
  32. package/__tests__/Tooltip/Tooltip.test.jsx +65 -0
  33. package/__tests__/Tooltip/getTooltipPosition.test.js +79 -0
  34. package/__tests__/utils/input.test.js +58 -0
  35. package/__tests__/utils/useCopy.test.js +42 -0
  36. package/__tests__/utils/useResponsiveProp.test.jsx +202 -0
  37. package/__tests__/utils/{spacing.test.jsx → useSpacingScale.test.jsx} +1 -1
  38. package/babel.config.js +20 -0
  39. package/jest.config.js +13 -4
  40. package/lib/A11yInfoProvider/index.js +54 -26
  41. package/lib/A11yText/index.js +37 -14
  42. package/lib/ActivityIndicator/Spinner.js +78 -0
  43. package/lib/ActivityIndicator/Spinner.native.js +121 -87
  44. package/lib/ActivityIndicator/index.js +28 -12
  45. package/lib/ActivityIndicator/shared.js +27 -12
  46. package/lib/BaseProvider/index.js +34 -11
  47. package/lib/Box/Box.js +54 -31
  48. package/lib/Box/index.js +13 -2
  49. package/lib/Button/Button.js +38 -10
  50. package/lib/Button/ButtonBase.js +115 -94
  51. package/lib/Button/ButtonGroup.js +94 -86
  52. package/lib/Button/ButtonLink.js +41 -13
  53. package/lib/Button/index.js +31 -4
  54. package/lib/Button/propTypes.js +32 -9
  55. package/lib/Card/Card.js +36 -41
  56. package/lib/Card/CardBase.js +78 -0
  57. package/lib/Card/PressableCardBase.js +137 -0
  58. package/lib/Card/index.js +40 -2
  59. package/lib/Checkbox/Checkbox.js +344 -0
  60. package/lib/Checkbox/CheckboxGroup.js +231 -0
  61. package/lib/Checkbox/CheckboxInput.js +74 -0
  62. package/lib/Checkbox/CheckboxInput.native.js +14 -0
  63. package/lib/Checkbox/index.js +21 -0
  64. package/lib/Divider/Divider.js +50 -24
  65. package/lib/Divider/index.js +13 -2
  66. package/lib/ExpandCollapse/Accordion.js +20 -7
  67. package/lib/ExpandCollapse/Control.js +50 -27
  68. package/lib/ExpandCollapse/ExpandCollapse.js +41 -24
  69. package/lib/ExpandCollapse/Panel.js +75 -37
  70. package/lib/ExpandCollapse/index.js +25 -7
  71. package/lib/Feedback/Feedback.js +85 -34
  72. package/lib/Feedback/index.js +13 -2
  73. package/lib/Fieldset/Fieldset.js +160 -0
  74. package/lib/Fieldset/FieldsetContainer.js +41 -0
  75. package/lib/Fieldset/FieldsetContainer.native.js +33 -0
  76. package/lib/Fieldset/Legend.js +33 -0
  77. package/lib/Fieldset/Legend.native.js +43 -0
  78. package/lib/Fieldset/cssReset.js +21 -0
  79. package/lib/Fieldset/index.js +13 -0
  80. package/lib/FlexGrid/Col/Col.js +67 -38
  81. package/lib/FlexGrid/Col/index.js +13 -2
  82. package/lib/FlexGrid/FlexGrid.js +70 -45
  83. package/lib/FlexGrid/Row/Row.js +48 -27
  84. package/lib/FlexGrid/Row/index.js +13 -2
  85. package/lib/FlexGrid/helpers/index.js +9 -1
  86. package/lib/FlexGrid/index.js +13 -2
  87. package/lib/FlexGrid/providers/GutterContext.js +15 -3
  88. package/lib/Icon/Icon.js +52 -47
  89. package/lib/Icon/IconText.js +100 -0
  90. package/lib/Icon/index.js +31 -3
  91. package/lib/IconButton/IconButton.js +135 -0
  92. package/lib/IconButton/index.js +13 -0
  93. package/lib/InputLabel/InputLabel.js +70 -34
  94. package/lib/InputLabel/LabelContent.js +31 -0
  95. package/lib/InputLabel/LabelContent.native.js +9 -1
  96. package/lib/InputLabel/index.js +13 -2
  97. package/lib/InputSupports/InputSupports.js +104 -0
  98. package/lib/InputSupports/index.js +13 -0
  99. package/lib/InputSupports/propTypes.js +66 -0
  100. package/lib/InputSupports/useInputSupports.js +41 -0
  101. package/lib/Link/ChevronLink.js +57 -15
  102. package/lib/Link/InlinePressable.js +50 -0
  103. package/lib/Link/InlinePressable.native.js +101 -0
  104. package/lib/Link/Link.js +30 -13
  105. package/lib/Link/LinkBase.js +114 -145
  106. package/lib/Link/TextButton.js +47 -17
  107. package/lib/Link/index.js +39 -4
  108. package/lib/List/List.js +80 -0
  109. package/lib/List/ListItem.js +237 -0
  110. package/lib/List/index.js +13 -0
  111. package/lib/Modal/Modal.js +226 -0
  112. package/lib/Modal/dictionary.js +16 -0
  113. package/lib/Modal/index.js +13 -0
  114. package/lib/Notification/Notification.js +200 -0
  115. package/lib/Notification/dictionary.js +15 -0
  116. package/lib/Notification/index.js +13 -0
  117. package/lib/Pagination/PageButton.js +45 -46
  118. package/lib/Pagination/Pagination.js +70 -40
  119. package/lib/Pagination/SideButton.js +74 -58
  120. package/lib/Pagination/dictionary.js +9 -2
  121. package/lib/Pagination/index.js +13 -2
  122. package/lib/Pagination/usePagination.js +12 -2
  123. package/lib/Progress/Progress.js +99 -0
  124. package/lib/Progress/ProgressBar.js +146 -0
  125. package/lib/Progress/ProgressBarBackground.js +57 -0
  126. package/lib/Progress/index.js +16 -0
  127. package/lib/Radio/Radio.js +292 -0
  128. package/lib/Radio/RadioButton.js +141 -0
  129. package/lib/Radio/RadioGroup.js +233 -0
  130. package/lib/Radio/RadioInput.js +76 -0
  131. package/lib/Radio/RadioInput.native.js +14 -0
  132. package/lib/Radio/index.js +21 -0
  133. package/lib/RadioCard/RadioCard.js +240 -0
  134. package/lib/RadioCard/RadioCardGroup.js +251 -0
  135. package/lib/RadioCard/index.js +21 -0
  136. package/lib/Search/Search.js +243 -0
  137. package/lib/Search/dictionary.js +19 -0
  138. package/lib/Search/index.js +13 -0
  139. package/lib/Select/Group.js +33 -0
  140. package/lib/Select/Group.native.js +25 -0
  141. package/lib/Select/Item.js +29 -0
  142. package/lib/Select/Item.native.js +19 -0
  143. package/lib/Select/Picker.js +79 -0
  144. package/lib/Select/Picker.native.js +115 -0
  145. package/lib/Select/Select.js +300 -0
  146. package/lib/Select/index.js +19 -0
  147. package/lib/SideNav/Item.js +54 -33
  148. package/lib/SideNav/ItemContent.js +41 -15
  149. package/lib/SideNav/ItemsGroup.js +46 -27
  150. package/lib/SideNav/SideNav.js +92 -69
  151. package/lib/SideNav/index.js +15 -1
  152. package/lib/Skeleton/Skeleton.js +137 -0
  153. package/lib/Skeleton/index.js +13 -0
  154. package/lib/Skeleton/skeleton.constant.js +12 -0
  155. package/lib/Skeleton/skeletonWebAnimation.js +27 -0
  156. package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
  157. package/lib/Spacer/Spacer.js +31 -12
  158. package/lib/Spacer/index.js +13 -2
  159. package/lib/StackView/StackView.js +57 -33
  160. package/lib/StackView/StackWrap.js +33 -10
  161. package/lib/StackView/StackWrap.native.js +13 -2
  162. package/lib/StackView/StackWrapBox.js +50 -23
  163. package/lib/StackView/StackWrapGap.js +45 -19
  164. package/lib/StackView/common.js +19 -4
  165. package/lib/StackView/getStackedContent.js +49 -19
  166. package/lib/StackView/index.js +29 -5
  167. package/lib/StepTracker/Step.js +245 -0
  168. package/lib/StepTracker/StepTracker.js +197 -0
  169. package/lib/StepTracker/dictionary.js +17 -0
  170. package/lib/StepTracker/index.js +13 -0
  171. package/lib/Tabs/HorizontalScroll.js +199 -0
  172. package/lib/Tabs/ScrollViewEnd.js +66 -0
  173. package/lib/Tabs/ScrollViewEnd.native.js +41 -0
  174. package/lib/Tabs/Tabs.js +117 -0
  175. package/lib/Tabs/TabsItem.js +234 -0
  176. package/lib/Tabs/TabsScrollButton.js +121 -0
  177. package/lib/Tabs/dictionary.js +18 -0
  178. package/lib/Tabs/index.js +13 -0
  179. package/lib/Tabs/itemPositions.js +128 -0
  180. package/lib/Tags/Tags.js +250 -0
  181. package/lib/Tags/index.js +13 -0
  182. package/lib/TextInput/TextArea.js +109 -0
  183. package/lib/TextInput/TextInput.js +41 -303
  184. package/lib/TextInput/TextInputBase.js +252 -0
  185. package/lib/TextInput/index.js +23 -2
  186. package/lib/TextInput/propTypes.js +42 -0
  187. package/lib/ThemeProvider/ThemeProvider.js +38 -14
  188. package/lib/ThemeProvider/index.js +61 -6
  189. package/lib/ThemeProvider/useSetTheme.js +14 -5
  190. package/lib/ThemeProvider/useTheme.js +13 -4
  191. package/lib/ThemeProvider/useThemeTokens.js +86 -19
  192. package/lib/ThemeProvider/utils/index.js +31 -2
  193. package/lib/ThemeProvider/utils/styles.js +52 -16
  194. package/lib/ThemeProvider/utils/theme-tokens.js +94 -16
  195. package/lib/ToggleSwitch/ToggleSwitch.js +76 -52
  196. package/lib/ToggleSwitch/index.js +13 -2
  197. package/lib/Tooltip/Backdrop.js +56 -0
  198. package/lib/Tooltip/Backdrop.native.js +59 -0
  199. package/lib/Tooltip/Tooltip.js +357 -0
  200. package/lib/Tooltip/dictionary.js +15 -0
  201. package/lib/Tooltip/getTooltipPosition.js +172 -0
  202. package/lib/Tooltip/index.js +13 -0
  203. package/lib/TooltipButton/TooltipButton.js +83 -0
  204. package/lib/TooltipButton/index.js +13 -0
  205. package/lib/Typography/Typography.js +58 -43
  206. package/lib/Typography/index.js +13 -2
  207. package/lib/ViewportProvider/ViewportProvider.js +46 -0
  208. package/lib/ViewportProvider/index.js +22 -38
  209. package/lib/ViewportProvider/useViewport.js +15 -0
  210. package/lib/ViewportProvider/useViewportListener.js +57 -0
  211. package/lib/index.js +518 -24
  212. package/lib/utils/a11y/index.js +18 -0
  213. package/lib/utils/a11y/textSize.js +49 -0
  214. package/lib/utils/animation/index.js +15 -2
  215. package/lib/utils/animation/useVerticalExpandAnimation.js +28 -11
  216. package/lib/utils/children.js +87 -0
  217. package/lib/utils/index.js +163 -4
  218. package/lib/utils/info/index.js +19 -0
  219. package/lib/utils/info/platform/index.js +23 -0
  220. package/lib/utils/info/platform/platform.android.js +8 -0
  221. package/lib/utils/info/platform/platform.ios.js +8 -0
  222. package/lib/utils/info/platform/platform.js +8 -0
  223. package/lib/utils/info/platform/platform.native.js +11 -0
  224. package/lib/utils/info/versions.js +16 -0
  225. package/lib/utils/input.js +51 -33
  226. package/lib/utils/pressability.js +120 -0
  227. package/lib/utils/propTypes.js +269 -116
  228. package/lib/utils/useCopy.js +51 -0
  229. package/lib/utils/useHash.js +48 -0
  230. package/lib/utils/useHash.native.js +15 -0
  231. package/lib/utils/useResponsiveProp.js +59 -0
  232. package/lib/utils/{spacing/useSpacingScale.js → useSpacingScale.js} +45 -12
  233. package/lib/utils/useUniqueId.js +13 -4
  234. package/package.json +12 -9
  235. package/release-context.json +4 -4
  236. package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +0 -0
  237. package/src/Box/Box.jsx +11 -4
  238. package/src/Button/Button.jsx +9 -5
  239. package/src/Button/ButtonBase.jsx +69 -69
  240. package/src/Button/ButtonGroup.jsx +11 -24
  241. package/src/Button/ButtonLink.jsx +14 -4
  242. package/src/Button/propTypes.js +12 -2
  243. package/src/Card/Card.jsx +4 -30
  244. package/src/Card/CardBase.jsx +57 -0
  245. package/src/Card/PressableCardBase.jsx +112 -0
  246. package/src/Card/index.js +3 -0
  247. package/src/Checkbox/Checkbox.jsx +274 -0
  248. package/src/Checkbox/CheckboxGroup.jsx +196 -0
  249. package/src/Checkbox/CheckboxInput.jsx +55 -0
  250. package/src/Checkbox/CheckboxInput.native.jsx +6 -0
  251. package/src/Checkbox/index.js +5 -0
  252. package/src/ExpandCollapse/Control.jsx +1 -1
  253. package/src/Feedback/Feedback.jsx +31 -22
  254. package/src/Fieldset/Fieldset.jsx +129 -0
  255. package/src/Fieldset/FieldsetContainer.jsx +22 -0
  256. package/src/Fieldset/FieldsetContainer.native.jsx +16 -0
  257. package/src/Fieldset/Legend.jsx +16 -0
  258. package/src/Fieldset/Legend.native.jsx +22 -0
  259. package/src/Fieldset/cssReset.js +14 -0
  260. package/src/Fieldset/index.js +3 -0
  261. package/src/Icon/Icon.jsx +21 -26
  262. package/src/Icon/IconText.jsx +63 -0
  263. package/src/Icon/index.js +3 -2
  264. package/src/IconButton/IconButton.jsx +107 -0
  265. package/src/IconButton/index.js +3 -0
  266. package/src/InputLabel/InputLabel.jsx +11 -4
  267. package/src/InputLabel/{LabelContent.web.jsx → LabelContent.jsx} +0 -0
  268. package/src/InputSupports/InputSupports.jsx +75 -0
  269. package/src/InputSupports/index.js +3 -0
  270. package/src/InputSupports/propTypes.js +44 -0
  271. package/src/InputSupports/useInputSupports.js +30 -0
  272. package/src/Link/ChevronLink.jsx +28 -7
  273. package/src/Link/InlinePressable.jsx +37 -0
  274. package/src/Link/InlinePressable.native.jsx +73 -0
  275. package/src/Link/Link.jsx +17 -13
  276. package/src/Link/LinkBase.jsx +67 -148
  277. package/src/Link/TextButton.jsx +25 -11
  278. package/src/Link/index.js +2 -1
  279. package/src/List/List.jsx +47 -0
  280. package/src/List/ListItem.jsx +187 -0
  281. package/src/List/index.js +3 -0
  282. package/src/Modal/Modal.jsx +185 -0
  283. package/src/Modal/dictionary.js +9 -0
  284. package/src/Modal/index.js +3 -0
  285. package/src/Notification/Notification.jsx +149 -0
  286. package/src/Notification/dictionary.js +8 -0
  287. package/src/Notification/index.js +3 -0
  288. package/src/Pagination/PageButton.jsx +3 -17
  289. package/src/Pagination/SideButton.jsx +27 -38
  290. package/src/Progress/Progress.jsx +77 -0
  291. package/src/Progress/ProgressBar.jsx +110 -0
  292. package/src/Progress/ProgressBarBackground.jsx +34 -0
  293. package/src/Progress/index.js +6 -0
  294. package/src/Radio/Radio.jsx +233 -0
  295. package/src/Radio/RadioButton.jsx +131 -0
  296. package/src/Radio/RadioGroup.jsx +198 -0
  297. package/src/Radio/RadioInput.jsx +57 -0
  298. package/src/Radio/RadioInput.native.jsx +6 -0
  299. package/src/Radio/index.js +5 -0
  300. package/src/RadioCard/RadioCard.jsx +191 -0
  301. package/src/RadioCard/RadioCardGroup.jsx +211 -0
  302. package/src/RadioCard/index.js +5 -0
  303. package/src/Search/Search.jsx +204 -0
  304. package/src/Search/dictionary.js +12 -0
  305. package/src/Search/index.js +3 -0
  306. package/src/Select/Group.jsx +15 -0
  307. package/src/Select/Group.native.jsx +14 -0
  308. package/src/Select/Item.jsx +11 -0
  309. package/src/Select/Item.native.jsx +10 -0
  310. package/src/Select/Picker.jsx +67 -0
  311. package/src/Select/Picker.native.jsx +95 -0
  312. package/src/Select/Select.jsx +255 -0
  313. package/src/Select/index.js +8 -0
  314. package/src/SideNav/Item.jsx +2 -2
  315. package/src/Skeleton/Skeleton.jsx +98 -0
  316. package/src/Skeleton/index.js +3 -0
  317. package/src/Skeleton/skeleton.constant.js +3 -0
  318. package/src/Skeleton/skeletonWebAnimation.js +13 -0
  319. package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
  320. package/src/StackView/StackView.jsx +25 -17
  321. package/src/StackView/StackWrap.jsx +9 -1
  322. package/src/StackView/StackWrapBox.jsx +19 -7
  323. package/src/StackView/StackWrapGap.jsx +15 -5
  324. package/src/StackView/getStackedContent.jsx +8 -2
  325. package/src/StepTracker/Step.jsx +202 -0
  326. package/src/StepTracker/StepTracker.jsx +163 -0
  327. package/src/StepTracker/dictionary.js +10 -0
  328. package/src/StepTracker/index.js +3 -0
  329. package/src/Tabs/HorizontalScroll.jsx +165 -0
  330. package/src/Tabs/ScrollViewEnd.jsx +53 -0
  331. package/src/Tabs/ScrollViewEnd.native.jsx +24 -0
  332. package/src/Tabs/Tabs.jsx +89 -0
  333. package/src/Tabs/TabsItem.jsx +204 -0
  334. package/src/Tabs/TabsScrollButton.jsx +100 -0
  335. package/src/Tabs/dictionary.js +11 -0
  336. package/src/Tabs/index.js +3 -0
  337. package/src/Tabs/itemPositions.js +101 -0
  338. package/src/Tags/Tags.jsx +207 -0
  339. package/src/Tags/index.js +3 -0
  340. package/src/TextInput/TextArea.jsx +78 -0
  341. package/src/TextInput/TextInput.jsx +17 -290
  342. package/src/TextInput/TextInputBase.jsx +210 -0
  343. package/src/TextInput/index.js +2 -1
  344. package/src/TextInput/propTypes.js +29 -0
  345. package/src/ThemeProvider/useThemeTokens.js +56 -5
  346. package/src/ThemeProvider/utils/styles.js +18 -5
  347. package/src/ThemeProvider/utils/theme-tokens.js +46 -5
  348. package/src/ToggleSwitch/ToggleSwitch.jsx +3 -4
  349. package/src/Tooltip/Backdrop.jsx +60 -0
  350. package/src/Tooltip/Backdrop.native.jsx +33 -0
  351. package/src/Tooltip/Tooltip.jsx +294 -0
  352. package/src/Tooltip/dictionary.js +8 -0
  353. package/src/Tooltip/getTooltipPosition.js +161 -0
  354. package/src/Tooltip/index.js +3 -0
  355. package/src/TooltipButton/TooltipButton.jsx +49 -0
  356. package/src/TooltipButton/index.js +3 -0
  357. package/src/Typography/Typography.jsx +10 -20
  358. package/src/ViewportProvider/ViewportProvider.jsx +21 -0
  359. package/src/ViewportProvider/index.jsx +2 -41
  360. package/src/ViewportProvider/useViewport.js +5 -0
  361. package/src/ViewportProvider/useViewportListener.js +43 -0
  362. package/src/index.js +31 -3
  363. package/src/utils/a11y/index.js +1 -0
  364. package/src/utils/a11y/textSize.js +30 -0
  365. package/src/utils/children.jsx +66 -0
  366. package/src/utils/index.js +11 -1
  367. package/src/utils/info/index.js +8 -0
  368. package/src/utils/info/platform/index.js +11 -0
  369. package/src/utils/info/platform/platform.android.js +1 -0
  370. package/src/utils/info/platform/platform.ios.js +1 -0
  371. package/src/utils/info/platform/platform.js +1 -0
  372. package/src/utils/info/platform/platform.native.js +4 -0
  373. package/src/utils/info/versions.js +6 -0
  374. package/src/utils/input.js +20 -12
  375. package/src/utils/pressability.js +96 -0
  376. package/src/utils/propTypes.js +195 -56
  377. package/src/utils/useCopy.js +39 -0
  378. package/src/utils/useHash.js +34 -0
  379. package/src/utils/useHash.native.js +6 -0
  380. package/src/utils/useResponsiveProp.js +50 -0
  381. package/src/utils/{spacing/useSpacingScale.js → useSpacingScale.js} +25 -10
  382. package/stories/A11yText/A11yText.stories.jsx +4 -8
  383. package/stories/Button/Button.stories.jsx +5 -0
  384. package/stories/Card/Card.stories.jsx +1 -1
  385. package/stories/Checkbox/Checkbox.stories.jsx +94 -0
  386. package/stories/Feedback/Feedback.stories.jsx +5 -6
  387. package/stories/Icon/Icon.stories.jsx +27 -7
  388. package/stories/IconButton/IconButton.stories.jsx +50 -0
  389. package/stories/InputLabel/InputLabel.stories.jsx +8 -3
  390. package/stories/Link/ChevronLink.stories.jsx +3 -3
  391. package/stories/Link/Link.stories.jsx +28 -18
  392. package/stories/List/List.stories.jsx +117 -0
  393. package/stories/Modal/Modal.stories.jsx +29 -0
  394. package/stories/Notification/Notification.stories.jsx +82 -0
  395. package/stories/Progress/Progress.stories.jsx +93 -0
  396. package/stories/Radio/Radio.stories.jsx +100 -0
  397. package/stories/RadioCard/RadioCard.stories.jsx +98 -0
  398. package/stories/Search/Search.stories.jsx +16 -0
  399. package/stories/Select/Select.stories.jsx +55 -0
  400. package/stories/Skeleton/Skeleton.stories.jsx +36 -0
  401. package/stories/Spacer/Spacer.stories.jsx +7 -2
  402. package/stories/StackView/StackView.stories.jsx +10 -0
  403. package/stories/StackView/StackWrap.stories.jsx +12 -0
  404. package/stories/StepTracker/StepTracker.stories.jsx +71 -0
  405. package/stories/Tabs/Tabs.stories.jsx +97 -0
  406. package/stories/Tags/Tags.stories.jsx +69 -0
  407. package/stories/TextInput/TextArea.stories.jsx +100 -0
  408. package/stories/Tooltip/Tooltip.stories.jsx +81 -0
  409. package/stories/TooltipButton/TooltipButton.stories.jsx +11 -0
  410. package/stories/{platform-supports.web.jsx → platform-supports.jsx} +0 -0
  411. package/stories/supports.jsx +36 -2
  412. package/__fixtures__/accessible.icon.svg +0 -6
  413. package/babel.config.json +0 -8
  414. package/docs/Contributing.stories.mdx +0 -9
  415. package/docs/Fonts.stories.mdx +0 -104
  416. package/docs/Icons.stories.mdx +0 -144
  417. package/docs/Introduction.stories.mdx +0 -9
  418. package/lib/ActivityIndicator/Spinner.web.js +0 -55
  419. package/lib/InputLabel/LabelContent.web.js +0 -17
  420. package/lib/Pagination/useCopy.js +0 -10
  421. package/lib/config/svgr-icons-web.js +0 -9
  422. package/lib/config/svgr-icons.js +0 -52
  423. package/lib/utils/spacing/index.js +0 -2
  424. package/lib/utils/spacing/utils.js +0 -32
  425. package/src/Pagination/useCopy.js +0 -7
  426. package/src/config/svgr-icons-web.js +0 -11
  427. package/src/config/svgr-icons.js +0 -46
  428. package/src/utils/spacing/index.js +0 -3
  429. package/src/utils/spacing/utils.js +0 -28
@@ -1,144 +0,0 @@
1
- import { Meta } from '@storybook/addon-docs/blocks'
2
-
3
- <Meta title="Guides/Icons" />
4
-
5
- # Icons
6
-
7
- Icons are available through their respective brand palettes as raw SVG resources.
8
- In order to use icons as React components we are using [SVGR](https://react-svgr.com/) to transform the SVG resources into components.
9
- In order to use UDS icons in your application you will need to apply the SVGR transform in your build pipeline (_e.g._ webpack config), instructions on how to do this are included for common use cases below.
10
-
11
- Using a build-time transform enables us to keep the rendering and theming React logic for icons in the same place as for all other components, and enable outcome teams to include only the icons which they need in their bundle.
12
-
13
- ## Configuring icon transforms
14
-
15
- SVGR supports [cosmiconfig](https://github.com/davidtheclark/cosmiconfig#readme). You can use any of the cosmiconfig methods for applying the SVGR configuration exposed at `@telus-uds/components-base/config/svgr-icons`.
16
- For example, you can create a `svgr.config.js` file at the root of your project, and add the following line to it:
17
-
18
- ```js
19
- module.exports = require(@telus-uds/components-base/config/svgr-icons)
20
- ```
21
-
22
- Once you have SVGR configuration in place, you will need to add a build step. Included below are example configurations for common use cases.
23
- If your use case isn't covered below, or you are having problems configuring icons for your application, get in touch with the core UDS team.
24
-
25
- The SVGR configuration is configured to transform SVGs into React Native components.
26
- To do this it relies on `react-native-svg`. You will need to include this as a production dependency in your project.
27
- We also offer a config preset for web-only builds to avoid this (see Webpack for web-only below). This is recommended for web projects to avoid the need to include an alias `react-native-svg`
28
-
29
- ### Standalone
30
-
31
- SVGR can be applied as a standalone transform, via its own [well-documented CLI](https://react-svgr.com/docs/cli/).
32
-
33
- ### Webpack
34
-
35
- For Webpack you will need to create a new Webpack loader rule to apply the SVGR using '@svgr/webpack' which you will need to include as a dev dependency in your project.
36
-
37
- ```js
38
- /* in your webpack.config.js */
39
- // create a new loader rule leveraging @svgr/webpack
40
- const iconLoaderRule = {
41
- test: /\.icon\.svg$/,
42
- exclude: /node_modules/,
43
- use: [
44
- {
45
- loader: '@svgr/webpack'
46
- }
47
- ]
48
- }
49
-
50
- // if you already have an svg loader rule, adjust it to avoid it matching icons
51
- const svgLoaderRule = config.module.rules.find((rule) => rule.test.test('.svg'))
52
- svgLoaderRule.exclude = iconLoaderRule.test
53
-
54
- // add your new rule
55
- config.module.rules.unshift(iconLoaderRule)
56
- ```
57
-
58
- **Note**: if your Webpack config is using a `oneOf` rule to apply file loaders, you may need to tweak the above to target that `oneOf`:
59
-
60
- ```js
61
- config.module.rules[1].oneOf.unshift(iconLoaderRule)
62
- ```
63
-
64
- With a oneOf rule, you don't need to worry about adjusting existing SVG loaders, as long as you place your icon loader rule at the head of the list (_e.g._ via `unshift`).
65
-
66
- ### Storybook
67
-
68
- Storybook uses Webpack under the hood, so the instructions are very similiar. You will again need to ensure that '@svgr/webpack' is included as a dev dependency.
69
-
70
- ```js
71
- /* in your .storybook/main.js file */
72
- // create a new loader rule leveraging @svgr/webpack
73
- const iconLoaderRule = {
74
- test: /\.icon\.svg$/,
75
- exclude: /node_modules/,
76
- use: [
77
- {
78
- loader: '@svgr/webpack'
79
- }
80
- ]
81
- }
82
-
83
- module.exports = {
84
- ...
85
- webpackFinal: async (config) => {
86
- // tweak existing rule to avoid matching *.icon.svg
87
- const fileLoaderRule = config.module.rules.find((rule) => rule.test.test('.svg'))
88
- fileLoaderRule.exclude = iconLoaderRule.test
89
-
90
- // Add icon loader rule
91
- config.module.rules.push(iconLoaderRule)
92
- return config
93
- }
94
- }
95
- ```
96
-
97
- ### Metro (React Native)
98
-
99
- For the Metro bundler the terminology is slightly different and we're applying a _transformer_ rather than a loader.
100
- The example below uses the expo default metro config, but you can switch `getDefaultConfig` out for any metro config generator.
101
- For Metro you will need to ensure you have `react-native-svg-transformer` installed as a dev dependency.
102
-
103
- ````js
104
- /* in your metro.config.js file */
105
- const { getDefaultConfig } = require("@expo/metro-config");
106
-
107
- module.exports = (async () => {
108
- const {
109
- resolver: { sourceExts, assetExts }
110
- } = await getDefaultConfig(__dirname);
111
- return {
112
- transformer: {
113
- // apply the SVGR transformer
114
- babelTransformerPath: require.resolve("react-native-svg-transformer")
115
- },
116
- resolver: {
117
- // ensure SVGs are *not* treated as assets...
118
- assetExts: assetExts.filter(ext => ext !== "svg"),
119
- // ...but instead as source files to be transformed
120
- sourceExts: [...sourceExts, "svg"]
121
- }
122
- };
123
- })();
124
-
125
-
126
- ### Webpack for web-only
127
- If you are only targeting the web platform, and want to avoid the dependency on `react-native-svg`, you can follow the Webpack instructions above, but replace the contents of your `svgr.config.js` file with:
128
-
129
- ```js
130
- module.exports = require(@telus-uds/components-base/config/svgr-icons-web)
131
- ````
132
-
133
- ## Using icons
134
-
135
- If you are using a standalone build you can use the generated files as you would any other React component.
136
- Assuming you are using Metro or Webpack and have applied the correct configuration as above, you can simply use your icons as components with
137
-
138
- ```js
139
- const MyIconComponent = require('path/to/my-icon.icon.svg')
140
-
141
- ...
142
-
143
- return <MyIconComponent />
144
- ```
@@ -1,9 +0,0 @@
1
- import { Meta } from '@storybook/addon-docs/blocks'
2
-
3
- <Meta title="Guides/Introduction" />
4
-
5
- # Welcome to the UDS workshop
6
-
7
- This is the storybook for developing and documenting Universal Design System (UDS) components.
8
-
9
- <!-- @TODO fill out -->
@@ -1,55 +0,0 @@
1
- import React from 'react';
2
- import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
3
- const SVG_RADIUS = 20;
4
- const SVG_CIRCUMFERENCE = SVG_RADIUS * 2 * Math.PI;
5
- const MIN_SVG_LENGTH = MIN_STROKE_ANGLE / 360 * SVG_CIRCUMFERENCE;
6
- const MAX_SVG_LENGTH = (1 - MIN_EMPTY_ANGLE / 360) * SVG_CIRCUMFERENCE;
7
- const animationProps = {
8
- begin: '0s',
9
- dur: `${DURATION}ms`,
10
- fill: 'freeze',
11
- repeatCount: 'indefinite'
12
- };
13
- const bezierProps = {
14
- calcMode: 'spline',
15
- keyTimes: '0; 0.5; 1',
16
- keySplines: `${BEZIER.join(', ')} ; ${BEZIER.join(', ')}`
17
- }; // We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
18
- // 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.
19
-
20
- const Spinner = ({
21
- size,
22
- color,
23
- thickness,
24
- label
25
- }) => /*#__PURE__*/React.createElement("svg", {
26
- width: `${size}px`,
27
- height: `${size}px`,
28
- viewBox: "0 0 48 48",
29
- "aria-valuetext": label,
30
- role: "progressbar",
31
- "aria-busy": true
32
- }, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("animateTransform", Object.assign({
33
- attributeName: "transform",
34
- type: "rotate",
35
- values: `-180 24 24;${360 + MIN_STROKE_ANGLE - 180} 24 24`
36
- }, animationProps)), /*#__PURE__*/React.createElement("circle", {
37
- fill: "none",
38
- stroke: color,
39
- strokeWidth: thickness * 48 / size,
40
- strokeLinecap: "round",
41
- cx: "24",
42
- cy: "24",
43
- r: "20",
44
- strokeDasharray: [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
45
- strokeDashoffset: 0
46
- }, /*#__PURE__*/React.createElement("animate", Object.assign({
47
- attributeName: "stroke-dashoffset",
48
- values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`
49
- }, animationProps, bezierProps)), /*#__PURE__*/React.createElement("animate", Object.assign({
50
- attributeName: "stroke-dasharray",
51
- values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`
52
- }, animationProps, bezierProps)))));
53
-
54
- Spinner.propTypes = propTypes;
55
- export default Spinner;
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
-
4
- function LabelContent({
5
- children,
6
- forId
7
- }) {
8
- return /*#__PURE__*/React.createElement("label", {
9
- htmlFor: forId
10
- }, children);
11
- }
12
-
13
- export default LabelContent;
14
- LabelContent.propTypes = {
15
- children: PropTypes.string,
16
- forId: PropTypes.string
17
- };
@@ -1,10 +0,0 @@
1
- function useCopy({
2
- dictionary,
3
- copy
4
- }) {
5
- const getCopy = key => dictionary[copy][key];
6
-
7
- return getCopy;
8
- }
9
-
10
- export default useCopy;
@@ -1,9 +0,0 @@
1
- const native = require('./svgr-icons');
2
-
3
- module.exports = { ...native,
4
- native: false,
5
- svgProps: { ...native.svgProps,
6
- role: '{title ? "img" : undefined }',
7
- 'aria-hidden': '{!title}'
8
- }
9
- };
@@ -1,52 +0,0 @@
1
- function themedTemplate({
2
- template
3
- }, opts, {
4
- imports,
5
- interfaces,
6
- componentName,
7
- jsx,
8
- exports
9
- }) {
10
- const plugins = ['jsx'];
11
- return template.smart({
12
- plugins
13
- }).ast`${imports}
14
- import { Icon, iconComponentPropTypes, iconSvgPropTypes } from '@telus-uds/components-base'
15
- ${interfaces}
16
-
17
- const IconSvg = ({ title, titleId, size, color }) => ${jsx}
18
- IconSvg.propTypes = iconSvgPropTypes
19
- const ${componentName} = (props) => <Icon {...props} IconSvg={IconSvg} />
20
- ${componentName}.propTypes = iconComponentPropTypes
21
-
22
- ${exports}
23
- `;
24
- }
25
-
26
- module.exports = {
27
- native: true,
28
- svgProps: {
29
- height: '{size}',
30
- width: '{size}',
31
- fill: '{color}' // @TODO figure out if we need any a11y props here for RN
32
-
33
- },
34
- expandProps: false,
35
- template: themedTemplate,
36
- titleProp: true,
37
- svgoConfig: {
38
- plugins: [{
39
- inlineStyles: {
40
- onlyMatchedOnce: false
41
- }
42
- }, {
43
- removeViewBox: false
44
- }, {
45
- removeUnknownsAndDefaults: false
46
- }, {
47
- convertColors: {
48
- currentColor: true
49
- }
50
- }]
51
- }
52
- };
@@ -1,2 +0,0 @@
1
- export { default as useSpacingScale } from './useSpacingScale';
2
- export * from './utils';
@@ -1,32 +0,0 @@
1
- import { viewports as systemViewports } from '@telus-uds/system-constants';
2
- export const resolveSpacingValue = (space, viewport) => {
3
- // If spacing value has been passed as undefined or nullish, get the 0-index
4
- if (!space) return 0; // Pass through simple non-responsive numbers (which may be in objects alongside options)
5
-
6
- if (typeof space === 'number') return space;
7
- if (typeof space.space === 'number') return space.space; // Get the appropriate space value for the current viewport.
8
- // If no viewports available (e.g. SSR), default to the smallest.
9
- // If no values are found (e.g. empty space object), default to 0.
10
-
11
- return (viewport && systemViewports.inherit(space)[viewport]) ?? space.xs ?? 0;
12
- };
13
- export const resolveSpacingOptions = space => {
14
- if (!space?.options) return {};
15
- const {
16
- size,
17
- variant,
18
- subtract = 0
19
- } = space.options;
20
- const overridden = typeof size === 'number'; // Might need an option that adapts the size value by current user's system font scale, so that
21
- // meaningful spacing between items doesn't disappear on the highest a11y font scale settings.
22
- // https://github.com/telus/universal-design-system/issues/583
23
-
24
- return {
25
- tokens: {
26
- size
27
- },
28
- variant,
29
- overridden,
30
- subtract
31
- };
32
- };
@@ -1,7 +0,0 @@
1
- function useCopy({ dictionary, copy }) {
2
- const getCopy = (key) => dictionary[copy][key]
3
-
4
- return getCopy
5
- }
6
-
7
- export default useCopy
@@ -1,11 +0,0 @@
1
- const native = require('./svgr-icons')
2
-
3
- module.exports = {
4
- ...native,
5
- native: false,
6
- svgProps: {
7
- ...native.svgProps,
8
- role: '{title ? "img" : undefined }',
9
- 'aria-hidden': '{!title}'
10
- }
11
- }
@@ -1,46 +0,0 @@
1
- function themedTemplate({ template }, opts, { imports, interfaces, componentName, jsx, exports }) {
2
- const plugins = ['jsx']
3
-
4
- return template.smart({ plugins }).ast`${imports}
5
- import { Icon, iconComponentPropTypes, iconSvgPropTypes } from '@telus-uds/components-base'
6
- ${interfaces}
7
-
8
- const IconSvg = ({ title, titleId, size, color }) => ${jsx}
9
- IconSvg.propTypes = iconSvgPropTypes
10
- const ${componentName} = (props) => <Icon {...props} IconSvg={IconSvg} />
11
- ${componentName}.propTypes = iconComponentPropTypes
12
-
13
- ${exports}
14
- `
15
- }
16
-
17
- module.exports = {
18
- native: true,
19
- svgProps: {
20
- height: '{size}',
21
- width: '{size}',
22
- fill: '{color}'
23
- // @TODO figure out if we need any a11y props here for RN
24
- },
25
- expandProps: false,
26
- template: themedTemplate,
27
- titleProp: true,
28
- svgoConfig: {
29
- plugins: [
30
- {
31
- inlineStyles: {
32
- onlyMatchedOnce: false
33
- }
34
- },
35
- {
36
- removeViewBox: false
37
- },
38
- {
39
- removeUnknownsAndDefaults: false
40
- },
41
- {
42
- convertColors: { currentColor: true }
43
- }
44
- ]
45
- }
46
- }
@@ -1,3 +0,0 @@
1
- export { default as useSpacingScale } from './useSpacingScale'
2
-
3
- export * from './utils'
@@ -1,28 +0,0 @@
1
- import { viewports as systemViewports } from '@telus-uds/system-constants'
2
-
3
- export const resolveSpacingValue = (space, viewport) => {
4
- // If spacing value has been passed as undefined or nullish, get the 0-index
5
- if (!space) return 0
6
-
7
- // Pass through simple non-responsive numbers (which may be in objects alongside options)
8
- if (typeof space === 'number') return space
9
- if (typeof space.space === 'number') return space.space
10
-
11
- // Get the appropriate space value for the current viewport.
12
- // If no viewports available (e.g. SSR), default to the smallest.
13
- // If no values are found (e.g. empty space object), default to 0.
14
- return (viewport && systemViewports.inherit(space)[viewport]) ?? space.xs ?? 0
15
- }
16
-
17
- export const resolveSpacingOptions = (space) => {
18
- if (!space?.options) return {}
19
-
20
- const { size, variant, subtract = 0 } = space.options
21
- const overridden = typeof size === 'number'
22
-
23
- // Might need an option that adapts the size value by current user's system font scale, so that
24
- // meaningful spacing between items doesn't disappear on the highest a11y font scale settings.
25
- // https://github.com/telus/universal-design-system/issues/583
26
-
27
- return { tokens: { size }, variant, overridden, subtract }
28
- }