@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
package/lib/Box/Box.js CHANGED
@@ -1,15 +1,32 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { View, ScrollView } from 'react-native';
4
- import { useThemeTokens } from '../ThemeProvider';
5
- import { a11yProps, spacingProps, variantProp, getTokensPropType, useSpacingScale } from '../utils';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _ScrollView = _interopRequireDefault(require("react-native-web/dist/cjs/exports/ScrollView"));
15
+
16
+ var _ThemeProvider = require("../ThemeProvider");
17
+
18
+ var _utils = require("../utils");
19
+
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
6
24
  /**
7
25
  * @typedef {import('../utils/propTypes.js').SpacingValue} SpacingValue
8
26
  * @typedef {import('../utils/propTypes.js').SpacingIndex} SpacingIndex
9
27
  * @typedef {import('../utils/propTypes.js').SpacingObject} SpacingObject
10
28
  * @typedef {import('../utils/propTypes.js').SpacingOptions} SpacingOptions
11
29
  */
12
-
13
30
  const selectBoxStyles = tokens => {
14
31
  const styles = {
15
32
  backgroundColor: tokens.backgroundColor
@@ -105,42 +122,48 @@ const Box = ({
105
122
  testID,
106
123
  ...rest
107
124
  }) => {
108
- const a11y = a11yProps.select(rest);
109
- const themeTokens = useThemeTokens('Box', tokens, variant);
125
+ const props = { ..._utils.a11yProps.select(rest),
126
+ ..._utils.viewProps.select(rest)
127
+ };
128
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('Box', tokens, variant);
110
129
  const styles = {
111
- paddingLeft: useSpacingScale(left),
112
- paddingRight: useSpacingScale(right),
113
- paddingTop: useSpacingScale(top),
114
- paddingBottom: useSpacingScale(bottom),
130
+ paddingLeft: (0, _utils.useSpacingScale)(left),
131
+ paddingRight: (0, _utils.useSpacingScale)(right),
132
+ paddingTop: (0, _utils.useSpacingScale)(top),
133
+ paddingBottom: (0, _utils.useSpacingScale)(bottom),
115
134
  ...selectBoxStyles(themeTokens)
116
135
  };
117
136
 
118
137
  if (scroll) {
119
138
  const scrollProps = typeof scroll === 'object' ? scroll : {};
120
139
  scrollProps.contentContainerStyle = [styles, scrollProps.contentContainerStyle];
121
- return /*#__PURE__*/React.createElement(ScrollView, Object.assign({}, scrollProps, a11y, {
122
- testID: testID
123
- }), children);
140
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollView.default, { ...scrollProps,
141
+ ...props,
142
+ testID: testID,
143
+ children: children
144
+ });
124
145
  }
125
146
 
126
- return /*#__PURE__*/React.createElement(View, Object.assign({}, a11y, {
147
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, { ...props,
127
148
  style: styles,
128
- testID: testID
129
- }), children);
149
+ testID: testID,
150
+ children: children
151
+ });
130
152
  };
131
153
 
132
154
  Box.propTypes = {
133
- space: spacingProps.types.spacingValue,
134
- vertical: spacingProps.types.spacingValue,
135
- horizontal: spacingProps.types.spacingValue,
136
- bottom: spacingProps.types.spacingValue,
137
- left: spacingProps.types.spacingValue,
138
- right: spacingProps.types.spacingValue,
139
- top: spacingProps.types.spacingValue,
140
- scroll: PropTypes.oneOfType([PropTypes.bool, ScrollView.propTypes ? PropTypes.shape(ScrollView.propTypes) : PropTypes.object]),
141
- variant: variantProp.propType,
142
- tokens: getTokensPropType('Box'),
143
- testID: PropTypes.string,
144
- children: PropTypes.node.isRequired
155
+ space: _utils.spacingProps.types.spacingValue,
156
+ vertical: _utils.spacingProps.types.spacingValue,
157
+ horizontal: _utils.spacingProps.types.spacingValue,
158
+ bottom: _utils.spacingProps.types.spacingValue,
159
+ left: _utils.spacingProps.types.spacingValue,
160
+ right: _utils.spacingProps.types.spacingValue,
161
+ top: _utils.spacingProps.types.spacingValue,
162
+ scroll: _propTypes.default.oneOfType([_propTypes.default.bool, _ScrollView.default.propTypes ? _propTypes.default.shape(_ScrollView.default.propTypes) : _propTypes.default.object]),
163
+ variant: _utils.variantProp.propType,
164
+ tokens: (0, _utils.getTokensPropType)('Box'),
165
+ testID: _propTypes.default.string,
166
+ children: _propTypes.default.node.isRequired
145
167
  };
146
- export default Box;
168
+ var _default = Box;
169
+ exports.default = _default;
package/lib/Box/index.js CHANGED
@@ -1,2 +1,13 @@
1
- import Box from './Box';
2
- export default Box;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _Box = _interopRequireDefault(require("./Box"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _Box.default;
13
+ exports.default = _default;
@@ -1,16 +1,44 @@
1
- import React from 'react';
2
- import ButtonBase from './ButtonBase';
3
- import buttonPropTypes from './propTypes';
4
- import { a11yProps } from '../utils/propTypes';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _ButtonBase = _interopRequireDefault(require("./ButtonBase"));
11
+
12
+ var _propTypes = _interopRequireWildcard(require("./propTypes"));
13
+
14
+ var _ThemeProvider = require("../ThemeProvider");
15
+
16
+ var _propTypes2 = require("../utils/propTypes");
17
+
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
25
 
6
26
  const Button = ({
7
27
  accessibilityRole = 'button',
28
+ tokens,
29
+ variant,
8
30
  ...props
9
- }) => /*#__PURE__*/React.createElement(ButtonBase, Object.assign({}, props, {
10
- accessibilityRole: accessibilityRole
11
- }));
31
+ }) => {
32
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Button', tokens, variant);
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, { ...props,
34
+ tokens: getTokens,
35
+ accessibilityRole: accessibilityRole
36
+ });
37
+ };
12
38
 
13
- Button.propTypes = { ...a11yProps.types,
14
- ...buttonPropTypes
39
+ Button.propTypes = { ..._propTypes2.a11yProps.types,
40
+ ..._propTypes.default,
41
+ children: _propTypes.textAndA11yText
15
42
  };
16
- export default Button;
43
+ var _default = Button;
44
+ exports.default = _default;
@@ -1,17 +1,29 @@
1
- import React from 'react';
2
- import { Pressable, Text, View, StyleSheet, Platform } from 'react-native';
3
- import { useThemeTokensCallback } from '../ThemeProvider';
4
- import { applyTextStyles, applyShadowToken } from '../ThemeProvider/utils';
5
- import buttonPropTypes from './propTypes';
6
- import { a11yProps, hrefAttrsProp, linkProps } from '../utils/propTypes';
1
+ "use strict";
7
2
 
8
- const getCursorStyle = (inactive, accessibilityRole) => {
9
- if (inactive) return 'not-allowed'; // These roles should result in cursor: pointer but don't in current RNW releases
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
10
7
 
11
- if (['checkbox', 'radio', 'switch'].includes(accessibilityRole)) return 'pointer'; // For everything else, let React Native Web figure it out internally
8
+ var _react = _interopRequireDefault(require("react"));
12
9
 
13
- return undefined;
14
- };
10
+ var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
11
+
12
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
15
+
16
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
17
+
18
+ var _utils = require("../ThemeProvider/utils");
19
+
20
+ var _propTypes = _interopRequireDefault(require("./propTypes"));
21
+
22
+ var _utils2 = require("../utils");
23
+
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
27
 
16
28
  const getOuterBorderOffset = ({
17
29
  outerBorderGap = 0,
@@ -23,17 +35,19 @@ const selectOuterContainerStyles = ({
23
35
  opacity,
24
36
  outerBorderColor,
25
37
  outerBorderWidth,
26
- outerBorderGap = 0,
27
- outerBorderRadius = 0,
38
+ outerBorderGap,
39
+ borderRadius,
28
40
  outerBackgroundColor
29
41
  }) => ({
30
42
  alignSelf,
31
- padding: outerBorderGap,
32
- borderWidth: outerBorderWidth,
33
- borderColor: outerBorderColor,
34
- borderRadius: outerBorderRadius + outerBorderGap,
35
43
  backgroundColor: outerBackgroundColor,
36
- opacity
44
+ opacity,
45
+ ...(0, _utils.applyOuterBorder)({
46
+ outerBorderGap,
47
+ outerBorderWidth,
48
+ outerBorderColor,
49
+ borderRadius
50
+ })
37
51
  });
38
52
 
39
53
  const selectOuterWidthStyles = ({
@@ -47,14 +61,12 @@ const selectOuterWidthStyles = ({
47
61
  outerBorderGap,
48
62
  outerBorderWidth
49
63
  });
50
- const widthStyles = {
51
- margin: 0 - outerBorderOffset
52
- };
64
+ const widthStyles = {};
53
65
 
54
66
  if (!width) {
55
67
  return { ...widthStyles,
56
68
  // Wrap content, stopping a flex parent's default align-items: stretch stretching focus ring beyond content
57
- ...Platform.select({
69
+ ..._Platform.default.select({
58
70
  // width: fit-content isn't supported on Firefox; can't cascade props like CSS `width: fit-content; width: --moz-fit-content;`
59
71
  web: {
60
72
  display: 'inline-flex'
@@ -70,8 +82,8 @@ const selectOuterWidthStyles = ({
70
82
  } // Ensure the negative margin doesn't make element off-centre
71
83
 
72
84
 
73
- if (Platform.OS === 'web') {
74
- widthStyles.width = `calc(${width} + ${outerBorderOffset * 2}px)`;
85
+ if (_Platform.default.OS === 'web') {
86
+ widthStyles.width = "calc(".concat(width, " + ").concat(outerBorderOffset * 2, "px)");
75
87
  return widthStyles;
76
88
  } // Can't use calc() on native but (unlike on web) flexGrow fills the container width here
77
89
 
@@ -94,7 +106,8 @@ const selectInnerContainerStyles = ({
94
106
  paddingTop,
95
107
  paddingBottom,
96
108
  shadow,
97
- borderWidth
109
+ borderWidth,
110
+ minWidth
98
111
  }) => {
99
112
  // Subtract border width from padding so overall button width/height doesn't
100
113
  // jump around if the border width changes (avoiding NaN and negative padding)
@@ -106,7 +119,8 @@ const selectInnerContainerStyles = ({
106
119
  paddingTop: offsetBorder(paddingTop),
107
120
  paddingBottom: offsetBorder(paddingBottom),
108
121
  backgroundColor,
109
- ...applyShadowToken(shadow)
122
+ minWidth,
123
+ ...(0, _utils.applyShadowToken)(shadow)
110
124
  };
111
125
  };
112
126
 
@@ -127,7 +141,7 @@ const selectTextStyles = ({
127
141
  fontName,
128
142
  fontWeight,
129
143
  textAlign
130
- }) => applyTextStyles({
144
+ }) => (0, _utils.applyTextStyles)({
131
145
  fontSize,
132
146
  color,
133
147
  lineHeight,
@@ -138,104 +152,111 @@ const selectTextStyles = ({
138
152
 
139
153
  const selectWebOnlyStyles = (inactive, themeTokens, {
140
154
  accessibilityRole
141
- }) => Platform.OS === 'web' ? {
142
- // if it would overflow the container, wraps instead
143
- maxWidth: `calc(100% + ${getOuterBorderOffset(themeTokens) * 2}px)`,
144
- cursor: getCursorStyle(inactive, accessibilityRole),
145
- outline: 'none' // removes the default browser :focus outline
146
-
147
- } : {};
155
+ }) => {
156
+ return _Platform.default.select({
157
+ web: {
158
+ // if it would overflow the container, wraps instead
159
+ maxWidth: "calc(100% + ".concat(getOuterBorderOffset(themeTokens) * 2, "px)"),
160
+ outline: 'none',
161
+ // removes the default browser :focus outline
162
+ ...(0, _utils2.getCursorStyle)(inactive, accessibilityRole)
163
+ },
164
+ default: {}
165
+ });
166
+ };
148
167
 
149
168
  const ButtonBase = ({
150
169
  href,
151
170
  hrefAttrs,
152
171
  children,
153
- variant,
154
172
  onPress,
155
- tokens,
173
+ tokens = {},
156
174
  disabled = false,
157
175
  // alias for inactive
158
176
  inactive = disabled,
159
177
  selected = false,
160
178
  ...rest
161
179
  }) => {
162
- const getTokens = useThemeTokensCallback('Button', tokens, variant);
163
-
164
- const getButtonState = ({
165
- pressed,
166
- focused,
167
- hovered
168
- }) => ({
169
- pressed,
170
- focus: focused,
171
- hover: hovered,
180
+ const extraButtonState = {
172
181
  inactive,
173
182
  selected
174
- });
183
+ };
175
184
 
176
- const getTokensByPressableState = pressableState => getTokens(getButtonState(pressableState));
185
+ const resolveButtonTokens = pressableState => (0, _utils2.resolvePressableTokens)(tokens, pressableState, extraButtonState);
177
186
 
178
- const a11y = a11yProps.select(rest);
187
+ const a11y = _utils2.a11yProps.select(rest);
179
188
 
180
189
  const getPressableStyle = pressableState => {
181
- const themeTokens = getTokensByPressableState(pressableState);
182
- return [staticStyles.wrapper, selectWebOnlyStyles(inactive, themeTokens, a11y), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
190
+ const themeTokens = resolveButtonTokens(pressableState);
191
+ return [staticStyles.row, selectWebOnlyStyles(inactive, themeTokens, a11y), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
183
192
  };
184
193
 
185
- const handlePress = linkProps.handleHref({
186
- href,
187
- onPress
188
- });
189
- return /*#__PURE__*/React.createElement(Pressable, Object.assign({
190
- onPress: handlePress,
194
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
195
+ href: href,
196
+ onPress: _utils2.linkProps.handleHref({
197
+ href,
198
+ onPress
199
+ }),
191
200
  style: getPressableStyle,
192
201
  disabled: inactive,
193
- href: href
194
- }, hrefAttrsProp.spread(hrefAttrs), a11y), pressableState => {
195
- const themeTokens = getTokensByPressableState(pressableState);
196
- const containerStyles = selectInnerContainerStyles(themeTokens);
197
- const borderStyles = selectBorderStyles(themeTokens);
198
- const textStyles = { ...selectTextStyles(themeTokens),
199
- ...Platform.select({
200
- // TODO: https://github.com/telus/universal-design-system/issues/487
201
- web: {
202
- transition: 'color 200ms'
203
- }
204
- })
205
- }; // If the container has a width set, fill it instead of sizing from content.
206
- // If in future we support text alignments other than center, add here.
202
+ hrefAttrs: hrefAttrs,
203
+ ...a11y,
204
+ children: pressableState => {
205
+ const themeTokens = resolveButtonTokens(pressableState);
206
+ const containerStyles = selectInnerContainerStyles(themeTokens);
207
+ const borderStyles = selectBorderStyles(themeTokens);
208
+ const textStyles = [selectTextStyles(themeTokens), staticStyles.text]; // If the container has a width set, fill it instead of sizing from content.
209
+ // If in future we support text alignments other than center, add here.
207
210
 
208
- const stretchStyles = !!themeTokens.width && staticStyles.center;
209
- return /*#__PURE__*/React.createElement(View, {
210
- style: [containerStyles, borderStyles, stretchStyles, Platform.select({
211
- web: {
212
- maxWidth: '100%',
213
- // ensure overflowing content wraps
214
- // TODO: https://github.com/telus/universal-design-system/issues/487
215
- transition: 'background-color 200ms, border-color 200ms'
216
- }
217
- })]
218
- }, typeof children === 'function' ? children({ ...getButtonState(pressableState),
219
- textStyles
220
- }) : /*#__PURE__*/React.createElement(Text, {
221
- style: textStyles
222
- }, children));
211
+ const stretchStyles = themeTokens.width ? staticStyles.stretch : staticStyles.align;
212
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
213
+ style: [containerStyles, borderStyles, stretchStyles, staticStyles.row, _Platform.default.select({
214
+ web: {
215
+ maxWidth: '100%',
216
+ // ensure overflowing content wraps
217
+ // TODO: https://github.com/telus/universal-design-system/issues/487
218
+ transition: 'background-color 200ms, border-color 200ms'
219
+ }
220
+ })],
221
+ children: (0, _utils2.wrapStringsInText)(typeof children === 'function' ? children({ ...(0, _utils2.resolvePressableState)(pressableState, extraButtonState),
222
+ textStyles
223
+ }) : children, {
224
+ style: textStyles
225
+ })
226
+ });
227
+ }
223
228
  });
224
229
  };
225
230
 
226
- ButtonBase.propTypes = { ...a11yProps.types,
227
- ...buttonPropTypes,
228
- ...linkProps.types
231
+ ButtonBase.propTypes = { ..._utils2.a11yProps.types,
232
+ ..._propTypes.default,
233
+ ..._utils2.linkProps.types
229
234
  };
230
- const staticStyles = StyleSheet.create({
231
- wrapper: {
232
- flexDirection: 'row' // ensures alignSelf is horizontal
233
235
 
236
+ const staticStyles = _StyleSheet.default.create({
237
+ row: {
238
+ // Apply all button alignment horizontally; no vertical stacking within a button
239
+ flexDirection: 'row'
234
240
  },
235
- center: {
241
+ text: {
242
+ flexGrow: 1,
243
+ // On native but not web, flexShrink here wraps text prematurely
244
+ ..._Platform.default.select({
245
+ // TODO: https://github.com/telus/universal-design-system/issues/487
246
+ web: {
247
+ transition: 'color 200ms'
248
+ }
249
+ })
250
+ },
251
+ align: {
252
+ alignItems: 'center'
253
+ },
254
+ stretch: {
236
255
  flex: 1,
237
256
  alignItems: 'center',
238
257
  justifyContent: 'center'
239
258
  }
240
259
  });
241
- export default ButtonBase;
260
+
261
+ var _default = ButtonBase;
262
+ exports.default = _default;