@telus-uds/components-base 0.0.2-prerelease.7 → 1.0.1

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 (445) hide show
  1. package/.eslintrc.js +9 -0
  2. package/.ultra.cache.json +1 -1
  3. package/CHANGELOG.md +71 -0
  4. package/README.md +4 -2
  5. package/__fixtures__/Accessible.js +33 -0
  6. package/__fixtures__/Accessible.native.js +32 -0
  7. package/__fixtures__/test-utils.js +25 -0
  8. package/__fixtures__/testTheme.js +438 -31
  9. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
  10. package/__tests__/Button/ButtonGroup.test.jsx +6 -7
  11. package/__tests__/Checkbox/Checkbox.test.jsx +2 -2
  12. package/__tests__/Checkbox/CheckboxGroup.test.jsx +246 -0
  13. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
  14. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
  15. package/__tests__/Icon/Icon.test.jsx +3 -3
  16. package/__tests__/IconButton/IconButton.test.jsx +52 -0
  17. package/__tests__/Link/LinkBase.test.jsx +0 -14
  18. package/__tests__/Modal/Modal.test.jsx +47 -0
  19. package/__tests__/Notification/Notification.test.jsx +20 -0
  20. package/__tests__/Pagination/Pagination.test.jsx +2 -2
  21. package/__tests__/Progress/Progress.test.jsx +79 -0
  22. package/__tests__/Radio/Radio.test.jsx +2 -2
  23. package/__tests__/Radio/RadioGroup.test.jsx +220 -0
  24. package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
  25. package/__tests__/RadioCard/RadioCardGroup.test.jsx +246 -0
  26. package/__tests__/Search/Search.test.jsx +73 -0
  27. package/__tests__/Select/Select.test.jsx +3 -2
  28. package/__tests__/Skeleton/Skeleton.test.jsx +1 -1
  29. package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
  30. package/__tests__/Tabs/Tabs.test.jsx +40 -0
  31. package/__tests__/Tags/Tags.test.jsx +5 -6
  32. package/__tests__/TextInput/TextArea.test.jsx +3 -2
  33. package/__tests__/TextInput/TextInputBase.test.jsx +10 -5
  34. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
  35. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +9 -5
  36. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
  37. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
  38. package/__tests__/utils/children.test.jsx +128 -0
  39. package/__tests__/utils/input.test.js +59 -1
  40. package/__tests__/utils/semantics.test.jsx +43 -0
  41. package/__tests__/utils/useCopy.test.js +14 -3
  42. package/babel.config.js +20 -0
  43. package/jest.config.js +6 -3
  44. package/lib/A11yInfoProvider/index.js +54 -26
  45. package/lib/A11yText/index.js +45 -17
  46. package/lib/ActivityIndicator/Spinner.js +81 -0
  47. package/lib/ActivityIndicator/Spinner.native.js +129 -91
  48. package/lib/ActivityIndicator/index.js +28 -12
  49. package/lib/ActivityIndicator/shared.js +27 -12
  50. package/lib/BaseProvider/index.js +34 -11
  51. package/lib/Box/Box.js +153 -35
  52. package/lib/Box/index.js +13 -2
  53. package/lib/Button/Button.js +38 -16
  54. package/lib/Button/ButtonBase.js +93 -79
  55. package/lib/Button/ButtonGroup.js +112 -73
  56. package/lib/Button/ButtonLink.js +45 -19
  57. package/lib/Button/index.js +31 -4
  58. package/lib/Button/propTypes.js +32 -9
  59. package/lib/Card/Card.js +38 -41
  60. package/lib/Card/CardBase.js +86 -0
  61. package/lib/Card/PressableCardBase.js +141 -0
  62. package/lib/Card/index.js +40 -2
  63. package/lib/Checkbox/Checkbox.js +158 -111
  64. package/lib/Checkbox/CheckboxGroup.js +241 -0
  65. package/lib/Checkbox/CheckboxInput.js +74 -0
  66. package/lib/Checkbox/CheckboxInput.native.js +9 -1
  67. package/lib/Checkbox/index.js +21 -2
  68. package/lib/Divider/Divider.js +59 -28
  69. package/lib/Divider/index.js +13 -2
  70. package/lib/ExpandCollapse/Accordion.js +26 -7
  71. package/lib/ExpandCollapse/Control.js +60 -31
  72. package/lib/ExpandCollapse/ExpandCollapse.js +50 -28
  73. package/lib/ExpandCollapse/Panel.js +83 -44
  74. package/lib/ExpandCollapse/index.js +25 -7
  75. package/lib/Feedback/Feedback.js +77 -43
  76. package/lib/Feedback/index.js +13 -2
  77. package/lib/Fieldset/Fieldset.js +165 -0
  78. package/lib/Fieldset/FieldsetContainer.js +46 -0
  79. package/lib/Fieldset/FieldsetContainer.native.js +38 -0
  80. package/lib/Fieldset/Legend.js +38 -0
  81. package/lib/Fieldset/Legend.native.js +48 -0
  82. package/lib/Fieldset/cssReset.js +21 -0
  83. package/lib/Fieldset/index.js +13 -0
  84. package/lib/FlexGrid/Col/Col.js +73 -41
  85. package/lib/FlexGrid/Col/index.js +13 -2
  86. package/lib/FlexGrid/FlexGrid.js +99 -49
  87. package/lib/FlexGrid/Row/Row.js +58 -30
  88. package/lib/FlexGrid/Row/index.js +13 -2
  89. package/lib/FlexGrid/helpers/index.js +9 -1
  90. package/lib/FlexGrid/index.js +13 -2
  91. package/lib/FlexGrid/providers/GutterContext.js +15 -3
  92. package/lib/HorizontalScroll/HorizontalScroll.js +200 -0
  93. package/lib/HorizontalScroll/HorizontalScrollButton.js +127 -0
  94. package/lib/HorizontalScroll/ScrollViewEnd.js +66 -0
  95. package/lib/HorizontalScroll/ScrollViewEnd.native.js +41 -0
  96. package/lib/HorizontalScroll/dictionary.js +18 -0
  97. package/lib/HorizontalScroll/index.js +35 -0
  98. package/lib/HorizontalScroll/itemPositions.js +128 -0
  99. package/lib/Icon/Icon.js +57 -48
  100. package/lib/Icon/IconText.js +54 -25
  101. package/lib/Icon/index.js +31 -4
  102. package/lib/IconButton/IconButton.js +140 -0
  103. package/lib/IconButton/index.js +13 -0
  104. package/lib/InputLabel/InputLabel.js +102 -40
  105. package/lib/InputLabel/LabelContent.js +41 -0
  106. package/lib/InputLabel/LabelContent.native.js +32 -6
  107. package/lib/InputLabel/index.js +13 -2
  108. package/lib/InputSupports/InputSupports.js +71 -52
  109. package/lib/InputSupports/index.js +13 -2
  110. package/lib/InputSupports/propTypes.js +19 -8
  111. package/lib/InputSupports/useInputSupports.js +41 -0
  112. package/lib/Link/ChevronLink.js +44 -20
  113. package/lib/Link/InlinePressable.js +56 -0
  114. package/lib/Link/InlinePressable.native.js +39 -15
  115. package/lib/Link/Link.js +36 -13
  116. package/lib/Link/LinkBase.js +98 -61
  117. package/lib/Link/TextButton.js +41 -17
  118. package/lib/Link/index.js +39 -5
  119. package/lib/List/List.js +55 -26
  120. package/lib/List/ListItem.js +79 -41
  121. package/lib/List/index.js +13 -2
  122. package/lib/Modal/Modal.js +231 -0
  123. package/lib/Modal/dictionary.js +16 -0
  124. package/lib/Modal/index.js +13 -0
  125. package/lib/Notification/Notification.js +216 -0
  126. package/lib/Notification/dictionary.js +15 -0
  127. package/lib/Notification/index.js +13 -0
  128. package/lib/Pagination/PageButton.js +61 -28
  129. package/lib/Pagination/Pagination.js +78 -43
  130. package/lib/Pagination/SideButton.js +73 -42
  131. package/lib/Pagination/dictionary.js +9 -2
  132. package/lib/Pagination/index.js +13 -2
  133. package/lib/Pagination/usePagination.js +12 -2
  134. package/lib/Progress/Progress.js +104 -0
  135. package/lib/Progress/ProgressBar.js +157 -0
  136. package/lib/Progress/ProgressBarBackground.js +61 -0
  137. package/lib/Progress/index.js +16 -0
  138. package/lib/Radio/Radio.js +116 -114
  139. package/lib/Radio/RadioButton.js +152 -0
  140. package/lib/Radio/RadioGroup.js +244 -0
  141. package/lib/Radio/RadioInput.js +76 -0
  142. package/lib/Radio/RadioInput.native.js +9 -1
  143. package/lib/Radio/index.js +21 -2
  144. package/lib/RadioCard/RadioCard.js +244 -0
  145. package/lib/RadioCard/RadioCardGroup.js +252 -0
  146. package/lib/RadioCard/index.js +21 -0
  147. package/lib/Search/Search.js +254 -0
  148. package/lib/Search/dictionary.js +19 -0
  149. package/lib/Search/index.js +13 -0
  150. package/lib/Select/Group.js +33 -0
  151. package/lib/Select/Group.native.js +16 -5
  152. package/lib/Select/Item.js +29 -0
  153. package/lib/Select/Item.native.js +14 -4
  154. package/lib/Select/Picker.js +84 -0
  155. package/lib/Select/Picker.native.js +73 -30
  156. package/lib/Select/Select.js +155 -85
  157. package/lib/Select/index.js +19 -6
  158. package/lib/SideNav/Item.js +63 -37
  159. package/lib/SideNav/ItemContent.js +41 -15
  160. package/lib/SideNav/ItemsGroup.js +55 -31
  161. package/lib/SideNav/SideNav.js +100 -73
  162. package/lib/SideNav/index.js +15 -1
  163. package/lib/Skeleton/Skeleton.js +64 -46
  164. package/lib/Skeleton/index.js +13 -2
  165. package/lib/Skeleton/skeleton.constant.js +12 -0
  166. package/lib/Skeleton/skeletonWebAnimation.js +27 -0
  167. package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
  168. package/lib/Spacer/Spacer.js +49 -18
  169. package/lib/Spacer/index.js +13 -2
  170. package/lib/StackView/StackView.js +72 -31
  171. package/lib/StackView/StackWrap.js +43 -13
  172. package/lib/StackView/StackWrap.native.js +13 -2
  173. package/lib/StackView/StackWrapBox.js +77 -29
  174. package/lib/StackView/StackWrapGap.js +56 -26
  175. package/lib/StackView/common.js +23 -6
  176. package/lib/StackView/getStackedContent.js +47 -17
  177. package/lib/StackView/index.js +29 -5
  178. package/lib/StepTracker/Step.js +245 -0
  179. package/lib/StepTracker/StepTracker.js +202 -0
  180. package/lib/StepTracker/dictionary.js +17 -0
  181. package/lib/StepTracker/index.js +13 -0
  182. package/lib/Tabs/Tabs.js +124 -0
  183. package/lib/Tabs/TabsItem.js +238 -0
  184. package/lib/Tabs/index.js +13 -0
  185. package/lib/Tags/Tags.js +148 -99
  186. package/lib/Tags/index.js +13 -2
  187. package/lib/TextInput/TextArea.js +57 -28
  188. package/lib/TextInput/TextInput.js +50 -23
  189. package/lib/TextInput/TextInputBase.js +90 -63
  190. package/lib/TextInput/index.js +23 -3
  191. package/lib/TextInput/propTypes.js +18 -7
  192. package/lib/ThemeProvider/ThemeProvider.js +46 -18
  193. package/lib/ThemeProvider/index.js +61 -6
  194. package/lib/ThemeProvider/useSetTheme.js +19 -5
  195. package/lib/ThemeProvider/useTheme.js +13 -4
  196. package/lib/ThemeProvider/useThemeTokens.js +32 -16
  197. package/lib/ThemeProvider/utils/index.js +31 -2
  198. package/lib/ThemeProvider/utils/styles.js +50 -14
  199. package/lib/ThemeProvider/utils/theme-tokens.js +121 -12
  200. package/lib/ToggleSwitch/ToggleSwitch.js +85 -56
  201. package/lib/ToggleSwitch/index.js +13 -2
  202. package/lib/Tooltip/{Backdrop.web.js → Backdrop.js} +20 -8
  203. package/lib/Tooltip/Backdrop.native.js +39 -15
  204. package/lib/Tooltip/Tooltip.js +117 -74
  205. package/lib/Tooltip/dictionary.js +9 -2
  206. package/lib/Tooltip/getTooltipPosition.js +9 -1
  207. package/lib/Tooltip/index.js +13 -2
  208. package/lib/TooltipButton/TooltipButton.js +57 -38
  209. package/lib/TooltipButton/index.js +13 -2
  210. package/lib/Typography/Typography.js +87 -41
  211. package/lib/Typography/index.js +13 -2
  212. package/lib/ViewportProvider/ViewportProvider.js +34 -13
  213. package/lib/ViewportProvider/index.js +28 -3
  214. package/lib/ViewportProvider/useViewport.js +15 -3
  215. package/lib/ViewportProvider/useViewportListener.js +24 -10
  216. package/lib/index.js +539 -33
  217. package/lib/utils/a11y/index.js +31 -1
  218. package/lib/utils/a11y/semantics.js +173 -0
  219. package/lib/utils/a11y/textSize.js +23 -7
  220. package/lib/utils/animation/index.js +15 -2
  221. package/lib/utils/animation/useVerticalExpandAnimation.js +27 -10
  222. package/lib/utils/children.js +134 -0
  223. package/lib/utils/index.js +163 -10
  224. package/lib/utils/info/index.js +18 -6
  225. package/lib/utils/info/platform/index.js +19 -7
  226. package/lib/utils/info/platform/platform.android.js +8 -1
  227. package/lib/utils/info/platform/platform.ios.js +8 -1
  228. package/lib/utils/info/platform/platform.js +8 -0
  229. package/lib/utils/info/platform/platform.native.js +8 -1
  230. package/lib/utils/info/versions.js +15 -4
  231. package/lib/utils/input.js +53 -25
  232. package/lib/utils/pressability.js +38 -10
  233. package/lib/utils/propTypes.js +287 -141
  234. package/lib/utils/useCopy.js +40 -5
  235. package/lib/utils/useHash.js +52 -0
  236. package/lib/utils/useHash.native.js +15 -0
  237. package/lib/utils/useResponsiveProp.js +21 -9
  238. package/lib/utils/useSpacingScale.js +19 -9
  239. package/lib/utils/useUniqueId.js +12 -3
  240. package/package.json +14 -9
  241. package/release-context.json +4 -4
  242. package/src/A11yText/index.jsx +6 -4
  243. package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +5 -3
  244. package/src/ActivityIndicator/Spinner.native.jsx +5 -3
  245. package/src/Box/Box.jsx +132 -39
  246. package/src/Button/Button.jsx +10 -6
  247. package/src/Button/ButtonBase.jsx +99 -99
  248. package/src/Button/ButtonGroup.jsx +81 -69
  249. package/src/Button/ButtonLink.jsx +21 -15
  250. package/src/Button/propTypes.js +12 -2
  251. package/src/Card/Card.jsx +5 -31
  252. package/src/Card/CardBase.jsx +59 -0
  253. package/src/Card/PressableCardBase.jsx +119 -0
  254. package/src/Card/index.js +3 -0
  255. package/src/Checkbox/Checkbox.jsx +121 -112
  256. package/src/Checkbox/CheckboxGroup.jsx +206 -0
  257. package/src/Checkbox/{CheckboxInput.web.jsx → CheckboxInput.jsx} +0 -0
  258. package/src/Checkbox/index.js +2 -0
  259. package/src/Divider/Divider.jsx +7 -4
  260. package/src/ExpandCollapse/Accordion.jsx +3 -2
  261. package/src/ExpandCollapse/Control.jsx +40 -43
  262. package/src/ExpandCollapse/ExpandCollapse.jsx +26 -23
  263. package/src/ExpandCollapse/Panel.jsx +69 -63
  264. package/src/Feedback/Feedback.jsx +36 -33
  265. package/src/Fieldset/Fieldset.jsx +136 -0
  266. package/src/Fieldset/FieldsetContainer.jsx +31 -0
  267. package/src/Fieldset/FieldsetContainer.native.jsx +19 -0
  268. package/src/Fieldset/Legend.jsx +21 -0
  269. package/src/Fieldset/Legend.native.jsx +27 -0
  270. package/src/Fieldset/cssReset.js +14 -0
  271. package/src/Fieldset/index.js +3 -0
  272. package/src/FlexGrid/Col/Col.jsx +139 -132
  273. package/src/FlexGrid/FlexGrid.jsx +79 -51
  274. package/src/FlexGrid/Row/Row.jsx +55 -48
  275. package/src/HorizontalScroll/HorizontalScroll.jsx +168 -0
  276. package/src/HorizontalScroll/HorizontalScrollButton.jsx +105 -0
  277. package/src/HorizontalScroll/ScrollViewEnd.jsx +53 -0
  278. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +24 -0
  279. package/src/HorizontalScroll/dictionary.js +11 -0
  280. package/src/HorizontalScroll/index.js +17 -0
  281. package/src/HorizontalScroll/itemPositions.js +101 -0
  282. package/src/Icon/Icon.jsx +43 -50
  283. package/src/Icon/IconText.jsx +23 -18
  284. package/src/Icon/index.js +2 -2
  285. package/src/IconButton/IconButton.jsx +114 -0
  286. package/src/IconButton/index.js +3 -0
  287. package/src/InputLabel/InputLabel.jsx +57 -35
  288. package/src/InputLabel/LabelContent.jsx +21 -0
  289. package/src/InputLabel/LabelContent.native.jsx +11 -2
  290. package/src/InputSupports/InputSupports.jsx +29 -45
  291. package/src/InputSupports/useInputSupports.js +30 -0
  292. package/src/Link/ChevronLink.jsx +26 -16
  293. package/src/Link/{InlinePressable.web.jsx → InlinePressable.jsx} +5 -3
  294. package/src/Link/InlinePressable.native.jsx +5 -3
  295. package/src/Link/Link.jsx +22 -16
  296. package/src/Link/LinkBase.jsx +76 -65
  297. package/src/Link/TextButton.jsx +30 -23
  298. package/src/List/List.jsx +5 -4
  299. package/src/List/ListItem.jsx +77 -82
  300. package/src/Modal/Modal.jsx +190 -0
  301. package/src/Modal/dictionary.js +9 -0
  302. package/src/Modal/index.js +3 -0
  303. package/src/Notification/Notification.jsx +164 -0
  304. package/src/Notification/dictionary.js +8 -0
  305. package/src/Notification/index.js +3 -0
  306. package/src/Pagination/PageButton.jsx +42 -35
  307. package/src/Pagination/Pagination.jsx +88 -92
  308. package/src/Pagination/SideButton.jsx +44 -41
  309. package/src/Progress/Progress.jsx +78 -0
  310. package/src/Progress/ProgressBar.jsx +123 -0
  311. package/src/Progress/ProgressBarBackground.jsx +36 -0
  312. package/src/Progress/index.js +6 -0
  313. package/src/Radio/Radio.jsx +82 -112
  314. package/src/Radio/RadioButton.jsx +142 -0
  315. package/src/Radio/RadioGroup.jsx +209 -0
  316. package/src/Radio/{RadioInput.web.jsx → RadioInput.jsx} +0 -0
  317. package/src/Radio/index.js +2 -0
  318. package/src/RadioCard/RadioCard.jsx +198 -0
  319. package/src/RadioCard/RadioCardGroup.jsx +218 -0
  320. package/src/RadioCard/index.js +5 -0
  321. package/src/Search/Search.jsx +225 -0
  322. package/src/Search/dictionary.js +12 -0
  323. package/src/Search/index.js +3 -0
  324. package/src/Select/{Group.web.jsx → Group.jsx} +0 -0
  325. package/src/Select/{Item.web.jsx → Item.jsx} +0 -0
  326. package/src/Select/Picker.jsx +74 -0
  327. package/src/Select/Picker.native.jsx +56 -49
  328. package/src/Select/Select.jsx +125 -92
  329. package/src/SideNav/Item.jsx +54 -47
  330. package/src/SideNav/ItemsGroup.jsx +50 -43
  331. package/src/SideNav/SideNav.jsx +68 -60
  332. package/src/Skeleton/Skeleton.jsx +25 -32
  333. package/src/Skeleton/skeleton.constant.js +3 -0
  334. package/src/Skeleton/skeletonWebAnimation.js +13 -0
  335. package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
  336. package/src/Spacer/Spacer.jsx +11 -4
  337. package/src/StackView/StackView.jsx +54 -23
  338. package/src/StackView/StackWrap.jsx +16 -7
  339. package/src/StackView/StackWrapBox.jsx +63 -28
  340. package/src/StackView/StackWrapGap.jsx +46 -24
  341. package/src/StackView/common.jsx +3 -2
  342. package/src/StackView/getStackedContent.jsx +8 -2
  343. package/src/StepTracker/Step.jsx +202 -0
  344. package/src/StepTracker/StepTracker.jsx +174 -0
  345. package/src/StepTracker/dictionary.js +10 -0
  346. package/src/StepTracker/index.js +3 -0
  347. package/src/Tabs/Tabs.jsx +97 -0
  348. package/src/Tabs/TabsItem.jsx +212 -0
  349. package/src/Tabs/index.js +3 -0
  350. package/src/Tags/Tags.jsx +115 -102
  351. package/src/TextInput/TextArea.jsx +5 -4
  352. package/src/TextInput/TextInput.jsx +5 -4
  353. package/src/TextInput/TextInputBase.jsx +95 -98
  354. package/src/ThemeProvider/ThemeProvider.jsx +11 -7
  355. package/src/ThemeProvider/useSetTheme.js +4 -0
  356. package/src/ThemeProvider/useThemeTokens.js +2 -2
  357. package/src/ThemeProvider/utils/styles.js +18 -5
  358. package/src/ThemeProvider/utils/theme-tokens.js +74 -5
  359. package/src/ToggleSwitch/ToggleSwitch.jsx +50 -52
  360. package/src/Tooltip/{Backdrop.web.jsx → Backdrop.jsx} +0 -0
  361. package/src/Tooltip/Tooltip.jsx +135 -131
  362. package/src/TooltipButton/TooltipButton.jsx +23 -27
  363. package/src/Typography/Typography.jsx +71 -47
  364. package/src/index.js +23 -2
  365. package/src/utils/a11y/index.js +1 -0
  366. package/src/utils/a11y/semantics.js +162 -0
  367. package/src/utils/children.jsx +119 -0
  368. package/src/utils/index.js +3 -0
  369. package/src/utils/info/platform/platform.js +1 -0
  370. package/src/utils/info/versions.js +2 -2
  371. package/src/utils/input.js +36 -25
  372. package/src/utils/pressability.js +4 -0
  373. package/src/utils/propTypes.js +199 -72
  374. package/src/utils/useCopy.js +30 -4
  375. package/src/utils/useHash.js +39 -0
  376. package/src/utils/useHash.native.js +6 -0
  377. package/stories/A11yText/A11yText.stories.jsx +6 -10
  378. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +1 -1
  379. package/stories/Box/Box.stories.jsx +1 -1
  380. package/stories/Button/Button.stories.jsx +2 -2
  381. package/stories/Button/ButtonGroup.stories.jsx +1 -1
  382. package/stories/Button/ButtonLink.stories.jsx +1 -1
  383. package/stories/Card/Card.stories.jsx +1 -1
  384. package/stories/Checkbox/Checkbox.stories.jsx +24 -1
  385. package/stories/Divider/Divider.stories.jsx +1 -1
  386. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
  387. package/stories/Feedback/Feedback.stories.jsx +1 -1
  388. package/stories/FlexGrid/01 FlexGrid.stories.jsx +1 -1
  389. package/stories/FlexGrid/02 Row.stories.jsx +1 -1
  390. package/stories/FlexGrid/03 Col.stories.jsx +1 -1
  391. package/stories/Icon/Icon.stories.jsx +27 -7
  392. package/stories/IconButton/IconButton.stories.jsx +50 -0
  393. package/stories/InputLabel/InputLabel.stories.jsx +1 -1
  394. package/stories/Link/ChevronLink.stories.jsx +1 -1
  395. package/stories/Link/Link.stories.jsx +17 -21
  396. package/stories/Link/TextButton.stories.jsx +1 -1
  397. package/stories/List/List.stories.jsx +1 -1
  398. package/stories/Modal/Modal.stories.jsx +29 -0
  399. package/stories/Notification/Notification.stories.jsx +82 -0
  400. package/stories/Pagination/Pagination.stories.jsx +1 -1
  401. package/stories/Progress/Progress.stories.jsx +93 -0
  402. package/stories/Radio/Radio.stories.jsx +23 -36
  403. package/stories/RadioCard/RadioCard.stories.jsx +98 -0
  404. package/stories/Search/Search.stories.jsx +16 -0
  405. package/stories/Select/Select.stories.jsx +1 -1
  406. package/stories/SideNav/SideNav.stories.jsx +1 -1
  407. package/stories/SideNav/SideNavItem.stories.jsx +1 -1
  408. package/stories/SideNav/SideNavItemsGroup.stories.jsx +1 -1
  409. package/stories/Skeleton/Skeleton.stories.jsx +2 -2
  410. package/stories/Spacer/Spacer.stories.jsx +1 -1
  411. package/stories/StackView/StackView.stories.jsx +1 -1
  412. package/stories/StackView/StackWrap.stories.jsx +1 -1
  413. package/stories/StepTracker/StepTracker.stories.jsx +71 -0
  414. package/stories/Tabs/Tabs.stories.jsx +97 -0
  415. package/stories/Tags/Tags.stories.jsx +1 -1
  416. package/stories/TextInput/TextArea.stories.jsx +1 -1
  417. package/stories/TextInput/TextInput.stories.jsx +1 -1
  418. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +1 -1
  419. package/stories/Tooltip/Tooltip.stories.jsx +1 -1
  420. package/stories/TooltipButton/TooltipButton.stories.jsx +1 -1
  421. package/stories/Typography/Typography.stories.jsx +1 -1
  422. package/stories/{platform-supports.web.jsx → platform-supports.jsx} +1 -1
  423. package/stories/supports.jsx +37 -3
  424. package/__fixtures__/accessible.icon.svg +0 -6
  425. package/babel.config.json +0 -8
  426. package/docs/Contributing.stories.mdx +0 -9
  427. package/docs/Fonts.stories.mdx +0 -104
  428. package/docs/Icons.stories.mdx +0 -144
  429. package/docs/Introduction.stories.mdx +0 -9
  430. package/lib/ActivityIndicator/Spinner.web.js +0 -55
  431. package/lib/Checkbox/CheckboxInput.web.js +0 -57
  432. package/lib/InputLabel/LabelContent.web.js +0 -17
  433. package/lib/Link/InlinePressable.web.js +0 -32
  434. package/lib/Radio/RadioInput.web.js +0 -59
  435. package/lib/Select/Group.web.js +0 -18
  436. package/lib/Select/Item.web.js +0 -15
  437. package/lib/Select/Picker.web.js +0 -63
  438. package/lib/config/svgr-icons-web.js +0 -9
  439. package/lib/config/svgr-icons.js +0 -52
  440. package/lib/utils/info/platform/platform.web.js +0 -1
  441. package/src/InputLabel/LabelContent.web.jsx +0 -13
  442. package/src/Select/Picker.web.jsx +0 -67
  443. package/src/config/svgr-icons-web.js +0 -11
  444. package/src/config/svgr-icons.js +0 -46
  445. package/src/utils/info/platform/platform.web.js +0 -1
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
11
+
12
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
13
+
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ 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); }
19
+
20
+ 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; }
21
+
22
+ /**
23
+ * @typedef {import('react-native').PressableProps} PressableProps
24
+ */
25
+
26
+ /**
27
+ * InlinePressable is an alternative to React Native's Pressable that works better when nested
28
+ * inline inside Text. It accepts the same props as React Native's Pressable.
29
+ *
30
+ * On Web it simply passes its props to Pressable and defaults to `inline-flex` instead of `flex`.
31
+ *
32
+ * @param {PressableProps} PressableProps
33
+ */
34
+ // React Native exports prop Types but not propTypes, use JSDoc types here rather than duplicate RN
35
+ // eslint-disable-next-line react/prop-types
36
+ const InlinePressable = /*#__PURE__*/(0, _react.forwardRef)(({
37
+ children,
38
+ style,
39
+ ...props
40
+ }, ref) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
41
+ ref: ref,
42
+ style: pressState => [staticStyles.inline, typeof style === 'function' ? style(pressState) : style],
43
+ ...props,
44
+ children: pressState => typeof children === 'function' ? children(pressState) : children
45
+ }));
46
+ InlinePressable.displayName = 'InlinePressable';
47
+
48
+ const staticStyles = _StyleSheet.default.create({
49
+ inline: {
50
+ // Stop Pressable defaulting to (block) flex
51
+ display: 'inline-flex'
52
+ }
53
+ });
54
+
55
+ var _default = InlinePressable;
56
+ exports.default = _default;
@@ -1,11 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
11
+
12
+ var _TouchableWithoutFeedback = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TouchableWithoutFeedback"));
13
+
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ 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); }
19
+
20
+ 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; }
21
+
1
22
  /* eslint-disable camelcase */
2
- import React, { useState } from 'react';
3
- import { Text, TouchableWithoutFeedback } from 'react-native';
23
+
4
24
  /**
5
25
  * @typedef {import('react-native').PressableProps} PressableProps
6
26
  */
7
27
  // TouchableWithoutFeedback and Pressable have similar but not identical props APIs
8
-
9
28
  const pressablePropsToTouchable = ({
10
29
  unstable_pressDelay,
11
30
  android_disableSound,
@@ -38,19 +57,19 @@ const pressablePropsToTouchable = ({
38
57
  // eslint-disable-next-line react/prop-types
39
58
 
40
59
 
41
- const InlinePressable = ({
60
+ const InlinePressable = /*#__PURE__*/(0, _react.forwardRef)(({
42
61
  onPress,
43
62
  children,
44
63
  style,
45
64
  ...rest
46
- }) => {
47
- const [isFocused, setIsFocused] = useState(false);
65
+ }, ref) => {
66
+ const [isFocused, setIsFocused] = (0, _react.useState)(false);
48
67
 
49
68
  const handleFocus = () => setIsFocused(true);
50
69
 
51
70
  const handleBlur = () => setIsFocused(false);
52
71
 
53
- const [isPressed, setIsPressed] = useState(false);
72
+ const [isPressed, setIsPressed] = (0, _react.useState)(false);
54
73
 
55
74
  const handlePressIn = () => setIsPressed(true);
56
75
 
@@ -64,15 +83,20 @@ const InlinePressable = ({
64
83
 
65
84
  };
66
85
  const currentStyle = typeof style === 'function' ? style(pressState) : style;
67
- return /*#__PURE__*/React.createElement(TouchableWithoutFeedback, Object.assign({
86
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TouchableWithoutFeedback.default, {
68
87
  onPress: onPress,
69
88
  onPressIn: handlePressIn,
70
89
  onPressOut: handlePressOut,
71
90
  onFocus: handleFocus,
72
- onBlur: handleBlur
73
- }, pressablePropsToTouchable(rest)), /*#__PURE__*/React.createElement(Text, {
74
- style: currentStyle
75
- }, typeof children === 'function' ? children(pressState) : children));
76
- };
77
-
78
- export default InlinePressable;
91
+ onBlur: handleBlur,
92
+ ref: ref,
93
+ ...pressablePropsToTouchable(rest),
94
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
95
+ style: currentStyle,
96
+ children: typeof children === 'function' ? children(pressState) : children
97
+ })
98
+ });
99
+ });
100
+ InlinePressable.displayName = 'InlinePressable';
101
+ var _default = InlinePressable;
102
+ exports.default = _default;
package/lib/Link/Link.js CHANGED
@@ -1,22 +1,45 @@
1
- import React from 'react';
2
- import { useThemeTokensCallback } from '../ThemeProvider';
3
- import LinkBase from './LinkBase';
1
+ "use strict";
4
2
 
5
- const Link = ({
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _ThemeProvider = require("../ThemeProvider");
11
+
12
+ var _LinkBase = _interopRequireDefault(require("./LinkBase"));
13
+
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ 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); }
19
+
20
+ 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; }
21
+
22
+ const Link = /*#__PURE__*/(0, _react.forwardRef)(({
6
23
  href,
7
24
  children,
8
25
  accessibilityRole = 'link',
9
26
  variant = {},
10
27
  tokens,
28
+ dataSet,
11
29
  ...linkProps
12
- }) => {
13
- const getTokens = useThemeTokensCallback('Link', tokens, variant);
14
- return /*#__PURE__*/React.createElement(LinkBase, Object.assign({
30
+ }, ref) => {
31
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Link', tokens, variant);
32
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkBase.default, {
15
33
  href: href,
16
34
  accessibilityRole: accessibilityRole,
17
- tokens: getTokens
18
- }, linkProps), children);
19
- };
20
-
21
- Link.propTypes = LinkBase.propTypes;
22
- export default Link;
35
+ tokens: getTokens,
36
+ ref: ref,
37
+ dataSet: dataSet,
38
+ ...linkProps,
39
+ children: children
40
+ });
41
+ });
42
+ Link.displayName = 'Link';
43
+ Link.propTypes = _LinkBase.default.propTypes;
44
+ var _default = Link;
45
+ exports.default = _default;
@@ -1,28 +1,55 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Text, Platform, StyleSheet } from 'react-native';
4
- import { a11yProps, hrefAttrsProp, variantProp, linkProps, getTokensPropType } from '../utils/propTypes';
5
- import { resolvePressableTokens } from '../utils/pressability';
6
- import InlinePressable from './InlinePressable';
7
- import { applyTextStyles } from '../ThemeProvider';
8
- import { IconText, iconComponentPropTypes } from '../Icon';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
13
+
14
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
15
+
16
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
17
+
18
+ var _propTypes2 = require("../utils/propTypes");
19
+
20
+ var _pressability = require("../utils/pressability");
21
+
22
+ var _InlinePressable = _interopRequireDefault(require("./InlinePressable"));
23
+
24
+ var _ThemeProvider = require("../ThemeProvider");
25
+
26
+ var _Icon = require("../Icon");
27
+
28
+ var _jsxRuntime = require("react/jsx-runtime");
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+
32
+ 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); }
33
+
34
+ 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; }
9
35
 
10
36
  const selectOuterBorderStyles = ({
11
37
  outerBorderColor,
12
38
  outerBorderWidth,
13
39
  outerBorderGap,
14
- outerBorderRadius,
40
+ borderRadius,
15
41
  outerBorderOutline
16
42
  }) => // A view wrapper with a border on native messes up inline text alignment
17
43
  // so for now make focus styles strictly web-only
18
- Platform.OS === 'web' ? {
19
- margin: -1 * (outerBorderGap + outerBorderWidth) || 0,
20
- padding: outerBorderGap,
44
+ _Platform.default.OS === 'web' ? {
21
45
  // Allow theme to define outline, or, turn off outline and use border if rounded corners required
22
46
  outline: outerBorderOutline,
23
- borderWidth: outerBorderWidth,
24
- borderColor: outerBorderColor,
25
- borderRadius: outerBorderRadius,
47
+ ...(0, _ThemeProvider.applyOuterBorder)({
48
+ outerBorderColor,
49
+ outerBorderWidth,
50
+ outerBorderGap,
51
+ borderRadius
52
+ }),
26
53
  // Stops focus ring stretching horizontally if parent has display: block
27
54
  // width: fit-content isn't supported on Firefox; can't cascade props like CSS `width: fit-content; width: --moz-fit-content;`
28
55
  display: 'inline-flex'
@@ -36,7 +63,7 @@ const selectTextStyles = ({
36
63
  color,
37
64
  textDecorationLine: textLine,
38
65
  textDecorationStyle: textLineStyle,
39
- ...Platform.select({
66
+ ..._Platform.default.select({
40
67
  web: {
41
68
  // TODO: https://github.com/telus/universal-design-system/issues/487
42
69
  transition: 'color 200ms'
@@ -49,7 +76,7 @@ const selectBlockStyles = ({
49
76
  blockFontSize,
50
77
  blockLineHeight,
51
78
  blockFontName
52
- }) => applyTextStyles({
79
+ }) => (0, _ThemeProvider.applyTextStyles)({
53
80
  fontWeight: blockFontWeight,
54
81
  fontSize: blockFontSize,
55
82
  lineHeight: blockLineHeight,
@@ -91,7 +118,7 @@ const selectIconTokens = ({
91
118
  */
92
119
 
93
120
 
94
- const LinkBase = ({
121
+ const LinkBase = /*#__PURE__*/(0, _react.forwardRef)(({
95
122
  href,
96
123
  onPress,
97
124
  icon,
@@ -101,88 +128,96 @@ const LinkBase = ({
101
128
  tokens = {},
102
129
  children,
103
130
  accessibilityRole = 'link',
131
+ dataSet,
104
132
  ...props
105
- }) => {
133
+ }, ref) => {
106
134
  const {
107
135
  hrefAttrs,
108
136
  rest
109
- } = hrefAttrsProp.bundle(props);
110
- const linkPropSet = linkProps.select({
137
+ } = _propTypes2.hrefAttrsProp.bundle(props);
138
+
139
+ const linkPropSet = _propTypes2.linkProps.select({
111
140
  accessibilityRole,
112
141
  href,
113
- onPress: linkProps.handleHref({
142
+ onPress: _propTypes2.linkProps.handleHref({
114
143
  href,
115
144
  onPress
116
145
  }),
117
- ...hrefAttrsProp.spread(hrefAttrs),
146
+ hrefAttrs,
118
147
  ...rest
119
148
  });
120
149
 
121
- const resolveTokens = pressState => resolvePressableTokens(tokens, pressState, {
150
+ const resolveLinkTokens = pressState => (0, _pressability.resolvePressableTokens)(tokens, pressState, {
122
151
  iconPosition
123
152
  }); // On web, this makes focus rings wrap only the link, not the entire block
124
153
 
125
154
 
126
- const blockLeftStyle = Platform.OS === 'web' && staticStyles.blockLeft;
127
- return /*#__PURE__*/React.createElement(InlinePressable, Object.assign({}, linkPropSet, {
155
+ const blockLeftStyle = _Platform.default.OS === 'web' && staticStyles.blockLeft;
156
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InlinePressable.default, { ...linkPropSet,
157
+ ref: ref,
158
+ dataSet: dataSet,
128
159
  style: linkState => {
129
- const themeTokens = resolveTokens(linkState);
160
+ const themeTokens = resolveLinkTokens(linkState);
130
161
  const outerBorderStyles = selectOuterBorderStyles(themeTokens);
131
162
  const hasIcon = Boolean(icon || themeTokens.icon);
132
163
  return [outerBorderStyles, blockLeftStyle, hasIcon && staticStyles.rowContainer];
164
+ },
165
+ children: linkState => {
166
+ const themeTokens = resolveLinkTokens(linkState);
167
+ const textStyles = selectTextStyles(themeTokens);
168
+ const iconTokens = selectIconTokens(themeTokens); // TODO: may need to apply some smarter text inheritance here if inline to avoid native
169
+ // issues like double-application of line heights breaking align-items: baseline
170
+
171
+ const blockTextStyles = selectBlockStyles(themeTokens);
172
+ const IconComponent = icon || themeTokens.icon;
173
+ const {
174
+ iconSpace
175
+ } = themeTokens;
176
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.IconText, {
177
+ icon: IconComponent,
178
+ iconPosition: iconPosition,
179
+ space: iconSpace,
180
+ iconProps: { ...iconProps,
181
+ tokens: iconTokens
182
+ },
183
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
184
+ style: [textStyles, blockTextStyles, staticStyles.baseline],
185
+ children: children
186
+ })
187
+ });
133
188
  }
134
- }), linkState => {
135
- const themeTokens = resolveTokens(linkState);
136
- const textStyles = selectTextStyles(themeTokens);
137
- const iconTokens = selectIconTokens(themeTokens); // TODO: may need to apply some smarter text inheritance here if inline to avoid native
138
- // issues like double-application of line heights breaking align-items: baseline
139
-
140
- const blockTextStyles = selectBlockStyles(themeTokens);
141
- const IconComponent = icon || themeTokens.icon;
142
- const {
143
- iconSpace
144
- } = themeTokens;
145
- return /*#__PURE__*/React.createElement(IconText, {
146
- icon: IconComponent,
147
- iconPosition: iconPosition,
148
- space: iconSpace,
149
- iconProps: { ...iconProps,
150
- tokens: iconTokens
151
- }
152
- }, /*#__PURE__*/React.createElement(Text, {
153
- style: [textStyles, blockTextStyles, staticStyles.baseline]
154
- }, children));
155
189
  });
156
- };
157
-
158
- LinkBase.propTypes = { ...a11yProps.types,
159
- ...linkProps.types,
160
- tokens: getTokensPropType('Link'),
161
- variant: variantProp.propType,
190
+ });
191
+ LinkBase.displayName = 'LinkBase';
192
+ LinkBase.propTypes = { ..._propTypes2.a11yProps.types,
193
+ ..._propTypes2.linkProps.types,
194
+ tokens: (0, _propTypes2.getTokensPropType)('Link'),
195
+ variant: _propTypes2.variantProp.propType,
162
196
 
163
197
  /**
164
198
  * Optional variant that may be passed down to the link's icon if there is one
165
199
  */
166
- iconProps: PropTypes.exact(iconComponentPropTypes),
200
+ iconProps: _propTypes.default.exact(_Icon.iconComponentPropTypes),
167
201
 
168
202
  /**
169
203
  * A function component for an SVG icon to render inside the link. Inherits size and color from
170
204
  * the link and any Typography the link is nested inside.
171
205
  */
172
- icon: PropTypes.func,
206
+ icon: _propTypes.default.func,
173
207
 
174
208
  /**
175
209
  * When `icon` is provided, use `iconPosition` to place the Icon to the left or right side of Link.
176
210
  */
177
- iconPosition: PropTypes.oneOf(['left', 'right']),
211
+ iconPosition: _propTypes.default.oneOf(['left', 'right']),
178
212
 
179
213
  /**
180
214
  * On Web if href is passed, React Native Web maps this object's props to
181
- * `rel`, `target` and (>= RNW 0.15.0) `download` attrs.
215
+ * `rel`, `target` and `download` attrs.
182
216
  */
183
- hrefAttrs: PropTypes.shape(hrefAttrsProp.types)
217
+ hrefAttrs: _propTypes.default.shape(_propTypes2.hrefAttrsProp.types)
184
218
  };
185
- const staticStyles = StyleSheet.create({
219
+
220
+ const staticStyles = _StyleSheet.default.create({
186
221
  blockLeft: {
187
222
  alignSelf: 'flex-start'
188
223
  },
@@ -195,4 +230,6 @@ const staticStyles = StyleSheet.create({
195
230
  alignSelf: 'baseline'
196
231
  }
197
232
  });
198
- export default LinkBase;
233
+
234
+ var _default = LinkBase;
235
+ exports.default = _default;
@@ -1,14 +1,34 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { useThemeTokensCallback } from '../ThemeProvider';
4
- import LinkBase from './LinkBase';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _ThemeProvider = require("../ThemeProvider");
13
+
14
+ var _LinkBase = _interopRequireDefault(require("./LinkBase"));
15
+
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+
18
+ var _TextButton$propTypes;
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ 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); }
23
+
24
+ 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; }
25
+
5
26
  /**
6
27
  * `TextButton` is a button that looks like a Link. It uses the same theming and variants as
7
28
  * Link but has the accessibility role of a `Button`. It should be used for actions that
8
29
  * take place on the current page, or for navigation within an app.
9
30
  */
10
-
11
- const TextButton = ({
31
+ const TextButton = /*#__PURE__*/(0, _react.forwardRef)(({
12
32
  onPress,
13
33
  children,
14
34
  variant,
@@ -17,21 +37,25 @@ const TextButton = ({
17
37
  // `onPress` in an omniplatform app that uses React Navigation's useLinkProps for internal nav.
18
38
  accessibilityRole = 'button',
19
39
  ...linkProps
20
- }) => {
21
- const getTokens = useThemeTokensCallback('Link', tokens, variant);
22
- return /*#__PURE__*/React.createElement(LinkBase, Object.assign({
40
+ }, ref) => {
41
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Link', tokens, variant);
42
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkBase.default, {
23
43
  onPress: onPress,
24
44
  accessibilityRole: accessibilityRole,
25
- tokens: getTokens
26
- }, linkProps), children);
27
- };
28
-
29
- TextButton.propTypes = { ...LinkBase.propTypes,
30
- onPress: PropTypes.func.isRequired
45
+ tokens: getTokens,
46
+ ref: ref,
47
+ ...linkProps,
48
+ children: children
49
+ });
50
+ });
51
+ TextButton.displayName = 'TextButton';
52
+ TextButton.propTypes = { ..._LinkBase.default.propTypes,
53
+ onPress: _propTypes.default.func.isRequired
31
54
  }; // Remove incompatible Link prop (if this build includes propTypes)
32
55
  // TODO: test if this works with web navigation in omniplatform React Navigation
33
56
  // https://github.com/telus/universal-design-system/issues/665
34
57
  // eslint-disable-next-line react/forbid-foreign-prop-types
35
58
 
36
- if (TextButton.propTypes?.href) delete TextButton.propTypes.href;
37
- export default TextButton;
59
+ if ((_TextButton$propTypes = TextButton.propTypes) !== null && _TextButton$propTypes !== void 0 && _TextButton$propTypes.href) delete TextButton.propTypes.href;
60
+ var _default = TextButton;
61
+ exports.default = _default;
package/lib/Link/index.js CHANGED
@@ -1,5 +1,39 @@
1
- import ChevronLink from './ChevronLink';
2
- import Link from './Link';
3
- import LinkBase from './LinkBase';
4
- import TextButton from './TextButton';
5
- export { ChevronLink, Link, LinkBase, TextButton };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ChevronLink", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _ChevronLink.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Link", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _Link.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "LinkBase", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _LinkBase.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "TextButton", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _TextButton.default;
28
+ }
29
+ });
30
+
31
+ var _ChevronLink = _interopRequireDefault(require("./ChevronLink"));
32
+
33
+ var _Link = _interopRequireDefault(require("./Link"));
34
+
35
+ var _LinkBase = _interopRequireDefault(require("./LinkBase"));
36
+
37
+ var _TextButton = _interopRequireDefault(require("./TextButton"));
38
+
39
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }