@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
@@ -1,12 +1,37 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Platform, View, StyleSheet } from 'react-native';
4
- import ButtonBase from '../Button/ButtonBase';
5
- import { useThemeTokensCallback, applyShadowToken } from '../ThemeProvider';
6
- import { a11yProps, pressProps, variantProp, getTokensPropType, selectTokens } from '../utils/propTypes';
7
- import { useInputValue } from '../utils/input';
8
-
9
- const selectButtonTokens = tokens => selectTokens('Button', { ...tokens,
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 _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
13
+
14
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
15
+
16
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
17
+
18
+ var _ButtonBase = _interopRequireDefault(require("../Button/ButtonBase"));
19
+
20
+ var _ThemeProvider = require("../ThemeProvider");
21
+
22
+ var _propTypes2 = require("../utils/propTypes");
23
+
24
+ var _input = require("../utils/input");
25
+
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
34
+ const selectButtonTokens = tokens => (0, _propTypes2.selectTokens)('Button', { ...tokens,
10
35
  // Width tokens are applied to our inner track. Disable Button width token so it wraps our track width.
11
36
  width: null
12
37
  }); // Map and rename icon-specific tokens to name used within Icon
@@ -14,10 +39,8 @@ const selectButtonTokens = tokens => selectTokens('Button', { ...tokens,
14
39
 
15
40
  const selectIconTokens = ({
16
41
  iconSize,
17
- iconColor,
18
- iconOpacity
42
+ iconColor
19
43
  }) => ({
20
- opacity: iconOpacity,
21
44
  size: iconSize,
22
45
  color: iconColor
23
46
  });
@@ -48,8 +71,8 @@ const selectSwitchStyles = ({
48
71
  borderWidth: switchBorderWidth,
49
72
  borderColor: switchBorderColor,
50
73
  borderRadius: switchBorderRadius,
51
- ...applyShadowToken(switchShadow),
52
- ...Platform.select({
74
+ ...(0, _ThemeProvider.applyShadowToken)(switchShadow),
75
+ ..._Platform.default.select({
53
76
  // TODO: https://github.com/telus/universal-design-system/issues/487
54
77
  web: {
55
78
  transition: 'transform 200ms'
@@ -57,7 +80,7 @@ const selectSwitchStyles = ({
57
80
  })
58
81
  });
59
82
 
60
- const ToggleSwitch = ({
83
+ const ToggleSwitch = /*#__PURE__*/(0, _react.forwardRef)(({
61
84
  value,
62
85
  initialValue,
63
86
  onChange,
@@ -65,22 +88,23 @@ const ToggleSwitch = ({
65
88
  tokens,
66
89
  variant,
67
90
  accessibilityRole = 'switch'
68
- }) => {
69
- const getTokens = useThemeTokensCallback('ToggleSwitch', tokens, variant);
91
+ }, ref) => {
92
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('ToggleSwitch', tokens, variant);
70
93
  const {
71
94
  currentValue,
72
95
  setValue
73
- } = useInputValue({
96
+ } = (0, _input.useInputValue)({
74
97
  value,
75
98
  initialValue,
76
99
  onChange
77
100
  });
78
101
 
79
- const handlePress = () => setValue(!currentValue);
102
+ const handlePress = event => setValue(!currentValue, event);
80
103
 
81
104
  const getButtonTokens = buttonState => selectButtonTokens(getTokens(buttonState));
82
105
 
83
- return /*#__PURE__*/React.createElement(ButtonBase, {
106
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
107
+ ref: ref,
84
108
  selected: currentValue,
85
109
  inactive: inactive,
86
110
  tokens: getButtonTokens,
@@ -88,64 +112,67 @@ const ToggleSwitch = ({
88
112
  accessibilityState: {
89
113
  checked: currentValue
90
114
  },
91
- onPress: handlePress
92
- }, buttonState => {
93
- const themeTokens = getTokens(buttonState);
94
- const IconComponent = themeTokens.icon;
95
- const switchStyles = selectSwitchStyles(themeTokens);
96
- const trackStyles = selectTrackStyles(themeTokens);
97
- const iconTokens = selectIconTokens(themeTokens); // If drag-slide support is needed, use a PanResponder and apply these to an Animated value.
98
- // Use translate transforms for smoothest non-thread-blocking animations and to allow drag.
99
-
100
- const slideStart = 0;
101
- const slideEnd = themeTokens.width - themeTokens.switchSize - themeTokens.trackBorderWidth * 2;
102
- const switchOffset = buttonState.selected ? slideEnd : slideStart;
103
- const switchPositionStyle = {
104
- transform: [{
105
- translateX: switchOffset
106
- }]
107
- };
108
- return /*#__PURE__*/React.createElement(View, {
109
- style: [staticStyles.track, trackStyles]
110
- }, /*#__PURE__*/React.createElement(View, {
111
- style: [staticStyles.switch, switchStyles, switchPositionStyle]
112
- }, IconComponent && /*#__PURE__*/React.createElement(IconComponent, {
113
- tokens: iconTokens
114
- })));
115
- });
116
- };
115
+ onPress: handlePress,
116
+ children: buttonState => {
117
+ const themeTokens = getTokens(buttonState);
118
+ const IconComponent = themeTokens.icon;
119
+ const switchStyles = selectSwitchStyles(themeTokens);
120
+ const trackStyles = selectTrackStyles(themeTokens);
121
+ const iconTokens = selectIconTokens(themeTokens); // If drag-slide support is needed, use a PanResponder and apply these to an Animated value.
122
+ // Use translate transforms for smoothest non-thread-blocking animations and to allow drag.
117
123
 
118
- ToggleSwitch.propTypes = { ...a11yProps.propTypes,
119
- ...pressProps.propTypes,
120
- tokens: getTokensPropType('ToggleSwitch'),
121
- variant: variantProp.propType,
124
+ const slideStart = 0;
125
+ const slideEnd = themeTokens.width - themeTokens.switchSize - themeTokens.trackBorderWidth * 2;
126
+ const switchOffset = buttonState.selected ? slideEnd : slideStart;
127
+ const switchPositionStyle = {
128
+ transform: [{
129
+ translateX: switchOffset
130
+ }]
131
+ };
132
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
133
+ style: [staticStyles.track, trackStyles],
134
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
135
+ style: [staticStyles.switch, switchStyles, switchPositionStyle],
136
+ children: IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, { ...iconTokens
137
+ })
138
+ })
139
+ });
140
+ }
141
+ });
142
+ });
143
+ ToggleSwitch.displayName = 'ToggleSwitch';
144
+ ToggleSwitch.propTypes = { ..._propTypes2.a11yProps.propTypes,
145
+ ..._propTypes2.pressProps.propTypes,
146
+ tokens: (0, _propTypes2.getTokensPropType)('ToggleSwitch'),
147
+ variant: _propTypes2.variantProp.propType,
122
148
 
123
149
  /**
124
150
  * If this is a "controlled" component and a parent handles its selected state,
125
151
  * tells the switch if it is on (true) or off (false).
126
152
  */
127
- value: PropTypes.bool,
153
+ value: _propTypes.default.bool,
128
154
 
129
155
  /**
130
156
  * If this is an "uncontrolled" component that handles its own selected state,
131
157
  * optionally tells the switch if it should default to on (true) or off (false).
132
158
  */
133
- initialValue: PropTypes.bool,
159
+ initialValue: _propTypes.default.bool,
134
160
 
135
161
  /**
136
162
  * Function called when the switch is toggled, with one boolean argument that is the
137
163
  * new position of the switch, on (true) or off (false). For "controlled" components,
138
164
  * this should always be passed and used to control the state of the switch.
139
165
  */
140
- onChange: PropTypes.func,
166
+ onChange: _propTypes.default.func,
141
167
 
142
168
  /**
143
169
  * If passed, the switch does not respond to user input and may recieve different
144
170
  * theme tokens if the theme supports inactive appearance.
145
171
  */
146
- inactive: PropTypes.bool
172
+ inactive: _propTypes.default.bool
147
173
  };
148
- const staticStyles = StyleSheet.create({
174
+
175
+ const staticStyles = _StyleSheet.default.create({
149
176
  track: {
150
177
  flexGrow: 1,
151
178
  alignSelf: 'stretch',
@@ -156,4 +183,6 @@ const staticStyles = StyleSheet.create({
156
183
  justifyContent: 'center'
157
184
  }
158
185
  });
159
- export default ToggleSwitch;
186
+
187
+ var _default = ToggleSwitch;
188
+ exports.default = _default;
@@ -1,2 +1,13 @@
1
- import ToggleSwitch from './ToggleSwitch';
2
- export default ToggleSwitch;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ToggleSwitch = _interopRequireDefault(require("./ToggleSwitch"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _ToggleSwitch.default;
13
+ exports.default = _default;
@@ -1,6 +1,17 @@
1
- import { useEffect, useState } from 'react';
2
- import ReactDOM from 'react-dom';
3
- import PropTypes from 'prop-types';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _reactDom = _interopRequireDefault(require("react-dom"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4
15
 
5
16
  function createPortalNode(nodeId) {
6
17
  const node = document.createElement('div');
@@ -34,8 +45,8 @@ function removePortalNode(nodeId) {
34
45
  function Backdrop({
35
46
  children
36
47
  }) {
37
- const [portalNode, setPortalNode] = useState();
38
- useEffect(() => {
48
+ const [portalNode, setPortalNode] = (0, _react.useState)();
49
+ (0, _react.useEffect)(() => {
39
50
  const nodeId = `tooltip-backdrop-${Date.now()}`;
40
51
  const node = createPortalNode(nodeId);
41
52
  setPortalNode(node);
@@ -43,10 +54,11 @@ function Backdrop({
43
54
  removePortalNode(nodeId);
44
55
  };
45
56
  }, []);
46
- return portalNode ? /*#__PURE__*/ReactDOM.createPortal(children, portalNode) : null;
57
+ return portalNode ? /*#__PURE__*/_reactDom.default.createPortal(children, portalNode) : null;
47
58
  }
48
59
 
49
60
  Backdrop.propTypes = {
50
- children: PropTypes.node
61
+ children: _propTypes.default.node
51
62
  };
52
- export default Backdrop;
63
+ var _default = Backdrop;
64
+ exports.default = _default;
@@ -1,32 +1,56 @@
1
- import React from 'react';
2
- import { TouchableWithoutFeedback, Modal, StyleSheet, View } from 'react-native';
3
- import PropTypes from 'prop-types';
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 _TouchableWithoutFeedback = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TouchableWithoutFeedback"));
11
+
12
+ var _Modal = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Modal"));
13
+
14
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
15
+
16
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
17
+
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
4
24
  /**
5
25
  * The Native version of Backdrop utilizes React Native's Modal component for overlaying
6
26
  * the app's content, since this is the only reliable to do it. The only drawback of this
7
27
  * approach is that a press on the Backdrop will actually stop the press event from propagating,
8
28
  * i.e. anything rendered beneath the Backdrop can't be pressed until the Backdrop is closed.
9
29
  */
10
-
11
30
  function Backdrop({
12
31
  onPress,
13
32
  children
14
33
  }) {
15
- return /*#__PURE__*/React.createElement(Modal, {
16
- transparent: true
17
- }, /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
18
- onPress: onPress
19
- }, /*#__PURE__*/React.createElement(View, {
20
- style: staticStyles.backdrop
21
- }, children)));
34
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Modal.default, {
35
+ transparent: true,
36
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TouchableWithoutFeedback.default, {
37
+ onPress: onPress,
38
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
39
+ style: staticStyles.backdrop,
40
+ children: children
41
+ })
42
+ })
43
+ });
22
44
  }
23
45
 
24
- export default Backdrop;
46
+ var _default = Backdrop;
47
+ exports.default = _default;
25
48
  Backdrop.propTypes = {
26
- onPress: PropTypes.func,
27
- children: PropTypes.node
49
+ onPress: _propTypes.default.func,
50
+ children: _propTypes.default.node
28
51
  };
29
- const staticStyles = StyleSheet.create({
52
+
53
+ const staticStyles = _StyleSheet.default.create({
30
54
  backdrop: {
31
55
  flexBasis: '100%',
32
56
  backgroundColor: 'rgba(255, 255, 255, 0.5)' // to visually mark that the content beneath is not pressable
@@ -1,13 +1,47 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import { Dimensions, Platform, Pressable, StyleSheet, Text, View } from 'react-native';
3
- import PropTypes from 'prop-types';
4
- import { applyShadowToken, applyTextStyles, useThemeTokens } from '../ThemeProvider';
5
- import { getTokensPropType, selectTokens, variantProp } from '../utils';
6
- import Backdrop from './Backdrop';
7
- import getTooltipPosition from './getTooltipPosition';
8
- import TooltipButton from '../TooltipButton';
9
- import useCopy from '../utils/useCopy';
10
- import dictionary from './dictionary';
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 _Dimensions = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Dimensions"));
11
+
12
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
13
+
14
+ var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
15
+
16
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
17
+
18
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
19
+
20
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _ThemeProvider = require("../ThemeProvider");
25
+
26
+ var _utils = require("../utils");
27
+
28
+ var _Backdrop = _interopRequireDefault(require("./Backdrop"));
29
+
30
+ var _getTooltipPosition = _interopRequireDefault(require("./getTooltipPosition"));
31
+
32
+ var _TooltipButton = _interopRequireDefault(require("../TooltipButton"));
33
+
34
+ var _useCopy = _interopRequireDefault(require("../utils/useCopy"));
35
+
36
+ var _dictionary = _interopRequireDefault(require("./dictionary"));
37
+
38
+ var _jsxRuntime = require("react/jsx-runtime");
39
+
40
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
+
42
+ 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); }
43
+
44
+ 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; }
11
45
 
12
46
  const selectTooltipStyles = ({
13
47
  backgroundColor,
@@ -30,7 +64,7 @@ const selectTooltipShadowStyles = ({
30
64
  borderRadius
31
65
  }) => ({
32
66
  borderRadius,
33
- ...applyShadowToken(shadow)
67
+ ...(0, _ThemeProvider.applyShadowToken)(shadow)
34
68
  });
35
69
 
36
70
  const selectTooltipPositionStyles = ({
@@ -99,17 +133,16 @@ const selectArrowStyles = ({
99
133
  height: rectangleSide,
100
134
  borderBottomRightRadius: arrowBorderRadius,
101
135
  // this corner will be the arrow tip after rotation
102
- ...applyShadowToken(shadow),
136
+ ...(0, _ThemeProvider.applyShadowToken)(shadow),
103
137
  ...directionalStyles[position]
104
138
  };
105
139
  };
106
140
 
107
- const selectTextStyles = tokens => applyTextStyles(selectTokens('Typography', tokens));
141
+ const selectTextStyles = tokens => (0, _ThemeProvider.applyTextStyles)((0, _utils.selectTokens)('Typography', tokens));
108
142
 
109
- const defaultControl = (pressableState, variant) => /*#__PURE__*/React.createElement(TooltipButton, {
110
- variant: { ...pressableState,
111
- ...variant
112
- }
143
+ const defaultControl = (pressableState, variant) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TooltipButton.default, {
144
+ pressableState: pressableState,
145
+ variant: variant
113
146
  });
114
147
  /**
115
148
  * Tooltip provides a descriptive and detailed explanation or instructions. It can be used next to an input label
@@ -128,36 +161,37 @@ const defaultControl = (pressableState, variant) => /*#__PURE__*/React.createEle
128
161
  */
129
162
 
130
163
 
131
- const Tooltip = ({
164
+ const Tooltip = /*#__PURE__*/(0, _react.forwardRef)(({
132
165
  children,
133
166
  content,
134
167
  position = 'auto',
135
168
  copy = 'en',
136
169
  tokens,
137
170
  variant
138
- }) => {
139
- const [isOpen, setIsOpen] = useState(false);
140
- const controlRef = useRef();
141
- const [controlLayout, setControlLayout] = useState(null);
142
- const [tooltipDimensions, setTooltipDimensions] = useState(null);
143
- const [windowDimensions, setWindowDimensions] = useState(Dimensions.get('window'));
144
- const [tooltipPosition, setTooltipPosition] = useState(null);
145
- const getCopy = useCopy({
146
- dictionary,
171
+ }, ref) => {
172
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
173
+ const controlRef = (0, _react.useRef)();
174
+ const [controlLayout, setControlLayout] = (0, _react.useState)(null);
175
+ const [tooltipDimensions, setTooltipDimensions] = (0, _react.useState)(null);
176
+ const [windowDimensions, setWindowDimensions] = (0, _react.useState)(_Dimensions.default.get('window'));
177
+ const [tooltipPosition, setTooltipPosition] = (0, _react.useState)(null);
178
+ const getCopy = (0, _useCopy.default)({
179
+ dictionary: _dictionary.default,
147
180
  copy
148
181
  });
149
- const themeTokens = useThemeTokens('Tooltip', tokens, variant);
182
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('Tooltip', tokens, variant);
150
183
  const {
151
184
  arrowWidth,
152
185
  arrowOffset
153
186
  } = themeTokens;
154
- useEffect(() => {
155
- const subscription = Dimensions.addEventListener('change', ({
187
+ (0, _react.useEffect)(() => {
188
+ const subscription = _Dimensions.default.addEventListener('change', ({
156
189
  window
157
190
  }) => {
158
191
  setWindowDimensions(window);
159
192
  });
160
- return () => subscription?.remove();
193
+
194
+ return () => subscription === null || subscription === void 0 ? void 0 : subscription.remove();
161
195
  });
162
196
 
163
197
  const toggleIsOpen = () => setIsOpen(!isOpen);
@@ -184,7 +218,7 @@ const Tooltip = ({
184
218
  }) => {
185
219
  if (tooltipDimensions === null || tooltipDimensions.width !== width || tooltipDimensions.height !== height) {
186
220
  setTooltipDimensions({
187
- width: Platform.select({
221
+ width: _Platform.default.select({
188
222
  web: width + 0.3,
189
223
  // avoids often unnecessary line breaks due to subpixel rendering of fonts
190
224
  native: width
@@ -194,7 +228,7 @@ const Tooltip = ({
194
228
  }
195
229
  };
196
230
 
197
- useEffect(() => {
231
+ (0, _react.useEffect)(() => {
198
232
  if (isOpen) {
199
233
  controlRef.current.measureInWindow((x, y, width, height) => {
200
234
  setControlLayout({
@@ -210,15 +244,15 @@ const Tooltip = ({
210
244
  setTooltipPosition(null);
211
245
  }
212
246
  }, [isOpen]);
213
- useEffect(() => {
247
+ (0, _react.useEffect)(() => {
214
248
  setIsOpen(false);
215
249
  }, [windowDimensions]);
216
- useEffect(() => {
217
- if (tooltipPosition !== null && !tooltipPosition?.isNormalized || !isOpen || controlLayout === null || tooltipDimensions == null) {
250
+ (0, _react.useEffect)(() => {
251
+ if (tooltipPosition !== null && !(tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized) || !isOpen || controlLayout === null || tooltipDimensions == null) {
218
252
  return;
219
253
  }
220
254
 
221
- const updatedPosition = getTooltipPosition(position, {
255
+ const updatedPosition = (0, _getTooltipPosition.default)(position, {
222
256
  controlLayout,
223
257
  tooltipDimensions,
224
258
  windowDimensions,
@@ -226,14 +260,14 @@ const Tooltip = ({
226
260
  arrowOffset
227
261
  }); // avoid ending up in an infinite normalization loop
228
262
 
229
- if (tooltipPosition?.isNormalized && updatedPosition.isNormalized) {
263
+ if (tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized && updatedPosition.isNormalized) {
230
264
  return;
231
265
  }
232
266
 
233
267
  setTooltipPosition(updatedPosition);
234
268
  }, [isOpen, position, tooltipDimensions, controlLayout, windowDimensions, arrowWidth, arrowOffset, tooltipPosition]);
235
269
  const control = children !== undefined ? children : defaultControl;
236
- const pressableStyles = control === defaultControl ? Platform.select({
270
+ const pressableStyles = control === defaultControl ? _Platform.default.select({
237
271
  web: {
238
272
  outline: 'none'
239
273
  }
@@ -244,59 +278,68 @@ const Tooltip = ({
244
278
  left: 10,
245
279
  right: 10
246
280
  } : undefined;
247
- return /*#__PURE__*/React.createElement(View, {
248
- style: staticStyles.container
249
- }, /*#__PURE__*/React.createElement(Pressable, {
250
- onPress: toggleIsOpen,
251
- ref: controlRef,
252
- onBlur: close,
253
- style: pressableStyles,
254
- hitSlop: pressableHitSlop,
255
- accessibilityLabel: getCopy('a11yText'),
256
- accessibilityRole: "button"
257
- }, typeof control === 'function' ? pressableState => control(getPressableState(pressableState), variant) : control), isOpen && /*#__PURE__*/React.createElement(Backdrop, {
258
- onPress: close
259
- }, /*#__PURE__*/React.createElement(View, {
260
- style: [staticStyles.tooltip, selectTooltipShadowStyles(themeTokens), // applied separately so that it doesn't cover the arrow
261
- tooltipPosition && selectTooltipPositionStyles(tooltipPosition), (tooltipPosition === null || tooltipPosition?.isNormalized) && staticStyles.tooltipHidden // visually hide the tooltip until we have a final measurement
262
- ],
263
- onLayout: onTooltipLayout,
264
- accessibilityRole: "alert"
265
- }, /*#__PURE__*/React.createElement(View, {
266
- style: [staticStyles.arrow, tooltipPosition && selectArrowStyles(themeTokens, tooltipPosition)]
267
- }), /*#__PURE__*/React.createElement(View, {
268
- style: selectTooltipStyles(themeTokens)
269
- }, /*#__PURE__*/React.createElement(Text, {
270
- style: selectTextStyles(themeTokens)
271
- }, content)))));
272
- };
273
-
281
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
282
+ style: staticStyles.container,
283
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
284
+ onPress: toggleIsOpen,
285
+ ref: controlRef,
286
+ onBlur: close,
287
+ style: pressableStyles,
288
+ hitSlop: pressableHitSlop,
289
+ accessibilityLabel: getCopy('a11yText'),
290
+ accessibilityRole: "button",
291
+ children: typeof control === 'function' ? pressableState => control(getPressableState(pressableState), variant) : control
292
+ }), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Backdrop.default, {
293
+ onPress: close,
294
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
295
+ ref: ref,
296
+ style: [staticStyles.tooltip, selectTooltipShadowStyles(themeTokens), // applied separately so that it doesn't cover the arrow
297
+ tooltipPosition && selectTooltipPositionStyles(tooltipPosition), (tooltipPosition === null || (tooltipPosition === null || tooltipPosition === void 0 ? void 0 : tooltipPosition.isNormalized)) && staticStyles.tooltipHidden // visually hide the tooltip until we have a final measurement
298
+ ],
299
+ onLayout: onTooltipLayout,
300
+ accessibilityRole: "alert",
301
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
302
+ style: [staticStyles.arrow, tooltipPosition && selectArrowStyles(themeTokens, tooltipPosition)]
303
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
304
+ style: selectTooltipStyles(themeTokens),
305
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
306
+ style: selectTextStyles(themeTokens),
307
+ children: content
308
+ })
309
+ })]
310
+ })
311
+ })]
312
+ });
313
+ });
314
+ Tooltip.displayName = 'Tooltip';
274
315
  Tooltip.propTypes = {
275
316
  /**
276
317
  * Used to render the control (i.e. tooltip trigger). If a render function is used it will receive the
277
318
  * pressable state and tooltip variant as an argument.
278
319
  */
279
- children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
320
+ children: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
280
321
 
281
322
  /**
282
323
  * The message. Can be raw text or text components.
283
324
  */
284
- content: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
325
+ content: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
285
326
 
286
327
  /**
287
328
  * Select english or french copy for the accessible label.
288
329
  */
289
- copy: PropTypes.oneOf(['en', 'fr']),
330
+ copy: _propTypes.default.oneOf(['en', 'fr']),
290
331
 
291
332
  /**
292
333
  * Use to place the tooltip in a specific location (only if it fits within viewport).
293
334
  */
294
- position: PropTypes.oneOf(['auto', 'above', 'right', 'below', 'left']),
295
- tokens: getTokensPropType('Tooltip'),
296
- variant: variantProp.propType
335
+ position: _propTypes.default.oneOf(['auto', 'above', 'right', 'below', 'left']),
336
+ tokens: (0, _utils.getTokensPropType)('Tooltip'),
337
+ variant: _utils.variantProp.propType
297
338
  };
298
- export default Tooltip;
299
- const staticStyles = StyleSheet.create({
339
+ var _default = Tooltip;
340
+ exports.default = _default;
341
+
342
+ const staticStyles = _StyleSheet.default.create({
300
343
  container: {
301
344
  alignItems: 'flex-start'
302
345
  },