@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
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.selectPressableCardTokens = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
13
+
14
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
15
+
16
+ var _ViewportProvider = require("../ViewportProvider");
17
+
18
+ var _ThemeProvider = require("../ThemeProvider");
19
+
20
+ var _utils = require("../utils");
21
+
22
+ var _propTypes2 = require("../utils/propTypes");
23
+
24
+ var _CardBase = _interopRequireDefault(require("./CardBase"));
25
+
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ const tokenKeys = [...(0, _utils.getTokenNames)('Card'), // Outer border tokens. TODO: centralise common token sets like these as part of
31
+ // https://github.com/telus/universal-design-system/issues/782
32
+ 'outerBorderColor', 'outerBorderWidth', 'outerBorderGap'];
33
+
34
+ const selectPressableCardTokens = tokens => Object.fromEntries(tokenKeys.map(key => [key, tokens[key]]));
35
+ /**
36
+ * A pressable themeless base component that handles pressable states and passes tokens
37
+ * based on these to an outer border and a base Card component. Not intended to be used in
38
+ * apps or sites directly: build themed components on top of this.
39
+ */
40
+
41
+
42
+ exports.selectPressableCardTokens = selectPressableCardTokens;
43
+
44
+ const PressableCardBase = ({
45
+ children,
46
+ tokens,
47
+ checked,
48
+ validation,
49
+ inactive,
50
+ href,
51
+ hrefAttrs,
52
+ onPress,
53
+ accessibilityRole = href ? 'link' : undefined,
54
+ ...rest
55
+ }) => {
56
+ const viewport = (0, _ViewportProvider.useViewport)();
57
+
58
+ const a11y = _propTypes2.a11yProps.select({ ...rest,
59
+ accessibilityRole
60
+ });
61
+
62
+ const additionalState = {
63
+ checked,
64
+ validation,
65
+ inactive,
66
+ viewport
67
+ };
68
+
69
+ const getCardState = pressableState => (0, _utils.resolvePressableState)(pressableState, additionalState);
70
+
71
+ const getTokens = pressableState => (0, _ThemeProvider.validateThemeTokens)((0, _utils.resolvePressableTokens)(tokens, pressableState, additionalState), (0, _utils.getTokensSetPropType)(tokenKeys, {
72
+ requireAll: true
73
+ }), 'PressableCard');
74
+
75
+ const getCardTokens = pressableState => (0, _utils.selectTokens)('Card', getTokens(pressableState));
76
+
77
+ const getOuterBorderStyle = pressableState => {
78
+ const {
79
+ flex,
80
+ minWidth,
81
+ outerBorderColor,
82
+ outerBorderGap = 0,
83
+ outerBorderWidth = 0,
84
+ borderRadius
85
+ } = getTokens(pressableState);
86
+ return {
87
+ flex,
88
+ minWidth: minWidth + outerBorderGap + outerBorderWidth,
89
+ ...(0, _ThemeProvider.applyOuterBorder)({
90
+ outerBorderColor,
91
+ outerBorderGap,
92
+ outerBorderWidth,
93
+ borderRadius
94
+ }),
95
+ ..._Platform.default.select({
96
+ web: {
97
+ outline: 'none'
98
+ }
99
+ })
100
+ };
101
+ };
102
+
103
+ const handleChange = _utils.linkProps.handleHref({
104
+ href,
105
+ onPress
106
+ });
107
+
108
+ const handleKeyDown = e => {
109
+ // The expected keyboard shortcut for selecting a focused item is the Space key
110
+ if ((e === null || e === void 0 ? void 0 : e.key) === ' ') handleChange();
111
+ };
112
+
113
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
114
+ href: href,
115
+ onPress: handleChange,
116
+ onKeyDown: handleKeyDown,
117
+ hrefAttrs: hrefAttrs,
118
+ style: getOuterBorderStyle,
119
+ ...a11y,
120
+ children: pressableState => /*#__PURE__*/(0, _jsxRuntime.jsx)(_CardBase.default, {
121
+ tokens: getCardTokens(pressableState),
122
+ children: typeof children === 'function' ? children(getCardState(pressableState)) : children
123
+ })
124
+ });
125
+ };
126
+
127
+ PressableCardBase.propTypes = {
128
+ children: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
129
+ tokens: (0, _utils.getTokensSetPropType)(tokenKeys, {
130
+ requireAll: true,
131
+ allowFunction: true
132
+ }),
133
+ variant: _utils.variantProp.propType,
134
+ ..._propTypes2.a11yProps.types
135
+ };
136
+ var _default = PressableCardBase;
137
+ exports.default = _default;
package/lib/Card/index.js CHANGED
@@ -1,2 +1,40 @@
1
- import Card from './Card';
2
- export default Card;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ PressableCardBase: true
8
+ };
9
+ Object.defineProperty(exports, "PressableCardBase", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _PressableCardBase.default;
13
+ }
14
+ });
15
+ exports.default = void 0;
16
+
17
+ var _Card = _interopRequireDefault(require("./Card"));
18
+
19
+ var _PressableCardBase = _interopRequireWildcard(require("./PressableCardBase"));
20
+
21
+ Object.keys(_PressableCardBase).forEach(function (key) {
22
+ if (key === "default" || key === "__esModule") return;
23
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
24
+ if (key in exports && exports[key] === _PressableCardBase[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _PressableCardBase[key];
29
+ }
30
+ });
31
+ });
32
+
33
+ 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); }
34
+
35
+ 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; }
36
+
37
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38
+
39
+ var _default = _Card.default;
40
+ exports.default = _default;
@@ -0,0 +1,344 @@
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 _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
13
+
14
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
15
+
16
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
17
+
18
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
19
+
20
+ var _CheckboxInput = _interopRequireDefault(require("./CheckboxInput"));
21
+
22
+ var _LabelContent = _interopRequireDefault(require("../InputLabel/LabelContent"));
23
+
24
+ var _Feedback = _interopRequireDefault(require("../Feedback"));
25
+
26
+ var _StackView = _interopRequireDefault(require("../StackView"));
27
+
28
+ var _ThemeProvider = require("../ThemeProvider");
29
+
30
+ var _utils = require("../utils");
31
+
32
+ var _propTypes2 = require("../utils/propTypes");
33
+
34
+ var _useUniqueId = _interopRequireDefault(require("../utils/useUniqueId"));
35
+
36
+ var _jsxRuntime = require("react/jsx-runtime");
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+
40
+ // @todo move `LabelContent` outside of the `InputLabel` and fix
41
+ // the issue with the cursor not being pointer on Web
42
+ const selectInputStyles = ({
43
+ iconBackgroundColor,
44
+ inputBorderColor,
45
+ inputBorderRadius,
46
+ inputBorderWidth,
47
+ inputBackgroundColor,
48
+ inputHeight,
49
+ inputOutlineColor,
50
+ inputOutlineWidth,
51
+ inputShadow,
52
+ inputWidth
53
+ }, isChecked) => ({
54
+ borderColor: inputBorderColor,
55
+ borderWidth: inputBorderWidth,
56
+ borderRadius: inputBorderRadius,
57
+ backgroundColor: isChecked ? iconBackgroundColor : inputBackgroundColor,
58
+ outlineStyle: 'solid',
59
+ outlineColor: inputOutlineColor,
60
+ outlineWidth: inputOutlineWidth,
61
+ height: inputHeight,
62
+ width: inputWidth,
63
+ ...(0, _ThemeProvider.applyShadowToken)(inputShadow)
64
+ });
65
+
66
+ const selectLabelStyles = ({
67
+ labelColor,
68
+ labelFontName,
69
+ labelFontSize,
70
+ labelFontWeight,
71
+ labelMarginLeft,
72
+ labelLineHeight
73
+ }) => ({
74
+ marginLeft: labelMarginLeft,
75
+ ...(0, _ThemeProvider.applyTextStyles)({
76
+ color: labelColor,
77
+ fontName: labelFontName,
78
+ fontWeight: labelFontWeight,
79
+ fontSize: labelFontSize,
80
+ lineHeight: labelLineHeight
81
+ })
82
+ });
83
+
84
+ const selectIconTokens = ({
85
+ icon,
86
+ iconColor,
87
+ iconSize
88
+ }) => ({
89
+ icon,
90
+ color: iconColor,
91
+ size: iconSize
92
+ });
93
+
94
+ const selectFeedbackTokens = ({
95
+ feedbackMarginBottom,
96
+ feedbackMarginTop,
97
+ feedbackPosition
98
+ }) => ({
99
+ feedbackPosition,
100
+ feedbackMarginBottom,
101
+ feedbackMarginTop
102
+ });
103
+ /**
104
+ * Basic Checkbox component.
105
+ *
106
+ * ## Component API
107
+ *
108
+ * Use `label` prop to provide a label for the checkbox.
109
+ * For a disabled `Checkbox` set the `inactive` prop to `true`.
110
+ *
111
+ * ### Controlled version
112
+ *
113
+ * If the checkbox is controlled from outside, it needs to receive `checked` and `onChange` props.
114
+ *
115
+ * ### Uncontrolled version
116
+ *
117
+ * In case of uncontrolled checkbox you can use `defaultChecked` prop to provide the initial value.
118
+ * Whenever the checkbox gets toggled, it calls the `onChange` callback with the new value (boolean).
119
+ *
120
+ * ### Using within forms
121
+ *
122
+ * You can pass `name` and `value` props if you need a particular checkbox to be a part of a group of
123
+ * checkboxes on a form.
124
+ *
125
+ * ### Validation and feedback
126
+ *
127
+ * You can use the `feedback` prop to provide a comment related to the checkbox element. If the comment
128
+ * is related to a validation error, the checkbox and the feedback can be styled accordingly by setting
129
+ * the `error` prop to `true` (can also be done without feedback).
130
+ *
131
+ * ## A11y guidelines
132
+ *
133
+ * Checkbox component accepts all the common accessibility props, but also sets some defaults, including
134
+ * accessibility role `'checkbox'` and accessibility state that depends on the other props (`checked`, `inactive`)
135
+ * or the internal state in case of uncontrolled checkbox.
136
+ *
137
+ */
138
+
139
+
140
+ const Checkbox = ({
141
+ checked,
142
+ defaultChecked,
143
+ error = false,
144
+ feedback,
145
+ id,
146
+ inactive,
147
+ label,
148
+ name,
149
+ onChange,
150
+ tokens,
151
+ value,
152
+ variant,
153
+ ...rest
154
+ }) => {
155
+ const {
156
+ currentValue: isChecked,
157
+ setValue: setIsChecked,
158
+ isControlled
159
+ } = (0, _utils.useInputValue)({
160
+ value: checked,
161
+ initialValue: defaultChecked,
162
+ onChange
163
+ }, 'useCheckboxValue');
164
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Checkbox', tokens, {
165
+ checked: isChecked,
166
+ inactive,
167
+ error,
168
+ ...variant
169
+ });
170
+ const defaultTokens = getTokens();
171
+ const {
172
+ feedbackMarginBottom,
173
+ feedbackMarginTop,
174
+ feedbackPosition
175
+ } = selectFeedbackTokens(defaultTokens);
176
+
177
+ const styles = _StyleSheet.default.create({
178
+ feedbackContainer: {
179
+ marginTop: feedbackMarginTop,
180
+ marginBottom: feedbackMarginBottom
181
+ }
182
+ });
183
+
184
+ const handleChange = () => {
185
+ if (!inactive) {
186
+ setIsChecked(!isChecked);
187
+ }
188
+ };
189
+
190
+ const handleKeyDown = e => {
191
+ // The expected keyboard shortcut for activating a checkbox is the Space key
192
+ if ((e === null || e === void 0 ? void 0 : e.key) === ' ') handleChange();
193
+ };
194
+
195
+ const accessibilityProps = _propTypes2.a11yProps.select(rest);
196
+
197
+ const uniqueId = (0, _useUniqueId.default)('checkbox');
198
+ const inputId = id !== null && id !== void 0 ? id : uniqueId;
199
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
200
+ style: staticStyles.wrapper,
201
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
202
+ direction: feedbackPosition === 'top' ? 'column-reverse' : 'column',
203
+ space: 0,
204
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
205
+ disabled: inactive,
206
+ onKeyDown: handleKeyDown,
207
+ onPress: handleChange,
208
+ accessibilityRole: "checkbox",
209
+ accessibilityState: {
210
+ checked: isChecked,
211
+ disabled: inactive
212
+ },
213
+ ...accessibilityProps,
214
+ children: ({
215
+ focused: focus,
216
+ hovered: hover,
217
+ pressed
218
+ }) => {
219
+ const {
220
+ icon: IconComponent,
221
+ ...stateTokens
222
+ } = getTokens({
223
+ focus,
224
+ hover,
225
+ pressed
226
+ });
227
+ const iconTokens = selectIconTokens(stateTokens);
228
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
229
+ style: staticStyles.container,
230
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
231
+ style: _StyleSheet.default.flatten([staticStyles.defaultInputStyles, selectInputStyles(stateTokens, isChecked)]),
232
+ testID: "Checkbox-Input",
233
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_CheckboxInput.default, {
234
+ checked: isChecked,
235
+ defaultChecked: defaultChecked,
236
+ disabled: inactive,
237
+ id: inputId,
238
+ isControlled: isControlled,
239
+ name: name,
240
+ value: value
241
+ }), isChecked && IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, { ...iconTokens,
242
+ testID: "Checkbox-Icon"
243
+ })]
244
+ }), Boolean(label) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
245
+ style: selectLabelStyles(stateTokens),
246
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LabelContent.default, {
247
+ forId: inputId,
248
+ children: label
249
+ })
250
+ })]
251
+ });
252
+ }
253
+ }), Boolean(feedback) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
254
+ style: styles.feedbackContainer,
255
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Feedback.default, {
256
+ title: feedback,
257
+ variant: {
258
+ icon: error === true
259
+ },
260
+ validation: error === true ? 'error' : undefined
261
+ })
262
+ })]
263
+ })
264
+ });
265
+ };
266
+
267
+ Checkbox.propTypes = { ..._propTypes2.a11yProps.propTypes,
268
+
269
+ /**
270
+ * Use `checked` for controlled Checkbox. For uncontrolled Checkbox, use the `defaultChecked` prop.
271
+ */
272
+ checked: _propTypes.default.bool,
273
+
274
+ /**
275
+ * Use `defaultChecked` to provide the initial value for an uncontrolled Checkbox.
276
+ */
277
+ defaultChecked: _propTypes.default.bool,
278
+
279
+ /**
280
+ * A detailed description of related validation error or additional instructions (depending on the `error` prop).
281
+ */
282
+ feedback: _propTypes.default.string,
283
+
284
+ /**
285
+ * Checkbox ID.
286
+ */
287
+ id: _propTypes.default.string,
288
+
289
+ /**
290
+ * Whether the corresponding input is disabled or active.
291
+ */
292
+ inactive: _propTypes.default.bool,
293
+
294
+ /**
295
+ * The label.
296
+ */
297
+ label: _propTypes.default.string,
298
+
299
+ /**
300
+ * Associate this checkbox with a group (set as the name attribute).
301
+ */
302
+ name: _propTypes.default.string,
303
+
304
+ /**
305
+ * Whether the underlying input triggered a validation error or not.
306
+ */
307
+ error: _propTypes.default.bool,
308
+
309
+ /**
310
+ * The value. Must be unique within the group.
311
+ */
312
+ value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool]),
313
+
314
+ /**
315
+ * Callback called when a controlled checkbox gets interacted with.
316
+ */
317
+ onChange: _propTypes.default.func,
318
+
319
+ /**
320
+ * Checkbox tokens.
321
+ */
322
+ tokens: (0, _utils.getTokensPropType)('Checkbox'),
323
+
324
+ /**
325
+ * Checkbox variant.
326
+ */
327
+ variant: _utils.variantProp.propType
328
+ };
329
+ var _default = Checkbox;
330
+ exports.default = _default;
331
+
332
+ const staticStyles = _StyleSheet.default.create({
333
+ wrapper: {
334
+ backgroundColor: 'transparent'
335
+ },
336
+ container: {
337
+ flexDirection: 'row',
338
+ alignItems: 'center'
339
+ },
340
+ defaultInputStyles: {
341
+ alignItems: 'center',
342
+ justifyContent: 'center'
343
+ }
344
+ });