@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,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ en: {
9
+ // English text from TDS Community `Tabs`
10
+ previousLabel: 'Move menu to the left',
11
+ nextLabel: 'Move menu to the right'
12
+ },
13
+ fr: {
14
+ previousLabel: 'Déplacer le menu vers la gauche',
15
+ nextLabel: 'Déplacer le menu vers la droite'
16
+ }
17
+ };
18
+ exports.default = _default;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "HorizontalScrollButton", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _HorizontalScrollButton.default;
10
+ }
11
+ });
12
+ exports.horizontalScrollUtils = exports.default = void 0;
13
+
14
+ var _HorizontalScroll = _interopRequireWildcard(require("./HorizontalScroll"));
15
+
16
+ var _itemPositions = require("./itemPositions");
17
+
18
+ var _HorizontalScrollButton = _interopRequireDefault(require("./HorizontalScrollButton"));
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
+
26
+ var _default = _HorizontalScroll.default;
27
+ exports.default = _default;
28
+ const horizontalScrollUtils = {
29
+ selectHorizontalScrollTokens: _HorizontalScroll.selectHorizontalScrollTokens,
30
+ useItemPositions: _itemPositions.useItemPositions,
31
+ getItemPositionScrollTarget: _itemPositions.getItemPositionScrollTarget,
32
+ getItemPositionLayoutHandler: _itemPositions.getItemPositionLayoutHandler,
33
+ itemPositionsPropType: _itemPositions.itemPositionsPropType
34
+ };
35
+ exports.horizontalScrollUtils = horizontalScrollUtils;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.itemPositionsPropType = exports.useItemPositions = exports.getItemPositionLayoutHandler = exports.getItemPositionScrollTarget = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ // Utilities to assist scrolling a parent so that it snaps neatly to an appropriate child.
15
+
16
+ /**
17
+ * @typedef ItemPositionPosition
18
+ * @property {number} [ItemPositionItem.start] - optional theme scale variants e.g. compact, wide
19
+ * @property {number} [ItemPositionItem.end] - optional override to force a particular pixel size
20
+ *
21
+ * @typedef {Object.<number, ItemPositionItem>} ItemPositionPositions - ref object of start/end coordinates
22
+ *
23
+ * @typedef ItemPositions
24
+ * @property {number} ItemPositions.contentWidth - current width of potentially-overflowing content inside scrollable
25
+ * @property {number} ItemPositions.containerWidth - current width of non-overflowing outer scroll container
26
+ * @property {number} ItemPositions.scrollOffset - current x position of the left edge of the visible section of the scrollable content
27
+ * @property {ItemPositionPositions} ItemPositions.positions - `{ start, end }` coordinates of each scrollable content item, by index
28
+ * @property {(targetX: number) => void)} ItemPositions.scrollTo - function to scroll to a co-ordinate, applying scrolling logic
29
+ * @property {() => void)} ItemPositions.setIsReady - function to call when layout has been calculated and itemPositions data is ready
30
+ */
31
+
32
+ /**
33
+ * Takes a desired scroll target coordinate and returns a valid coordinate
34
+ * that, when not scrolling to one end or another, snaps to the start of an item,
35
+ * making sure any "scroll back" button doesn't overlap the first item.
36
+ *
37
+ * @param {number} x - the intended coordinate to scroll to
38
+ * @param {number} scrollMax - the highest posible coordinate to scroll to
39
+ * @param {ItemPositionPositions} positions - positions list from `useItemPositions` ref
40
+ * @param {number} [buttonClearance] - offset to allow space for a button
41
+ * @returns {number}
42
+ */
43
+ const getItemPositionScrollTarget = (x, scrollMax, positions, buttonClearance = 0) => {
44
+ if (x <= 0) return 0;
45
+ if (x >= scrollMax) return scrollMax; // If not scrolling all the way to the start or end, stop
46
+ // where the first item is not coverred by the scroll previous button
47
+
48
+ const targetItem = Object.values(positions).find(({
49
+ start,
50
+ end
51
+ }) => start <= x && end > x); // If there's no target item we're landing at a gap between items
52
+
53
+ const targetX = targetItem ? targetItem.start : x;
54
+ return Math.max(0, targetX - buttonClearance);
55
+ };
56
+ /**
57
+ * Returns a handler for React Native's `onLayout` which updates the values of
58
+ * the ref object returned from `useItemPositions`.
59
+ *
60
+ * @param {ItemPositionPositions} positions
61
+ * @param {number} index
62
+ * @returns {function}
63
+ */
64
+
65
+
66
+ exports.getItemPositionScrollTarget = getItemPositionScrollTarget;
67
+
68
+ const getItemPositionLayoutHandler = (positions, index) => {
69
+ const handleLayout = ({
70
+ nativeEvent: {
71
+ layout: {
72
+ width,
73
+ x
74
+ }
75
+ }
76
+ }) => {
77
+ /* eslint-disable-next-line no-param-reassign */
78
+ positions[index] = {
79
+ start: x,
80
+ end: x + width
81
+ };
82
+ };
83
+
84
+ return handleLayout;
85
+ };
86
+ /**
87
+ * Wrapper for `useRef` which gives a mutable object in which item start/end coordinates,
88
+ * scrollTo method and content/container widths may be set and updated without causing a re-render.
89
+ *
90
+ * @returns {[ItemPositions, isReady: bool]} tuple array of:
91
+ * - current ref object `{ positions, contentWidth, containerWidth, scrollOffset, scrollTo, setIsReady }`
92
+ * - boolean that updates to `true` (causing a re-render) after the first time `setIsReady` is called
93
+ */
94
+
95
+
96
+ exports.getItemPositionLayoutHandler = getItemPositionLayoutHandler;
97
+
98
+ const useItemPositions = () => {
99
+ const [isReady, setIsReady] = (0, _react.useState)(false);
100
+ return [(0, _react.useRef)({
101
+ positions: {},
102
+ scrollTo: () => {},
103
+ contentWidth: 0,
104
+ containerWidth: 0,
105
+ scrollOffset: 0,
106
+ setIsReady
107
+ }).current, isReady];
108
+ };
109
+ /**
110
+ * PropType for the ref object returned by `useItemPositions`
111
+ */
112
+
113
+
114
+ exports.useItemPositions = useItemPositions;
115
+
116
+ const itemPositionsPropType = _propTypes.default.exact({
117
+ positions: _propTypes.default.objectOf(_propTypes.default.shape({
118
+ start: _propTypes.default.number,
119
+ end: _propTypes.default.number
120
+ })),
121
+ scrollTo: _propTypes.default.func,
122
+ contentWidth: _propTypes.default.number,
123
+ containerWidth: _propTypes.default.number,
124
+ scrollOffset: _propTypes.default.number,
125
+ setIsReady: _propTypes.default.func
126
+ });
127
+
128
+ exports.itemPositionsPropType = itemPositionsPropType;
package/lib/Icon/Icon.js CHANGED
@@ -1,72 +1,81 @@
1
- import React from 'react';
2
- import { Platform, View } from 'react-native';
3
- import PropTypes from 'prop-types';
4
- import { useThemeTokens } from '../ThemeProvider';
5
- import { getTokensPropType, scaleWithText, variantProp } from '../utils';
1
+ "use strict";
6
2
 
7
- const Icon = ({
8
- IconSvg,
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.iconComponentPropTypes = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
+
12
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _ThemeProvider = require("../ThemeProvider");
17
+
18
+ var _utils = require("../utils");
19
+
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ const Icon = /*#__PURE__*/(0, _react.forwardRef)(({
29
+ icon: IconComponent,
30
+ accessibilityLabel,
9
31
  variant,
10
- label,
11
- titleId,
12
32
  tokens,
13
- scalesWithText = false
14
- }) => {
15
- const themeTokens = useThemeTokens('Icon', tokens, variant);
16
- const size = scalesWithText ? scaleWithText(themeTokens.size) : themeTokens.size;
17
- const iconContent = /*#__PURE__*/React.createElement(IconSvg, {
18
- title: label,
19
- titleId: titleId,
33
+ scalesWithText = false,
34
+ dataSet
35
+ }, ref) => {
36
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('Icon', tokens, variant);
37
+ const size = scalesWithText ? (0, _utils.scaleWithText)(themeTokens.size) : themeTokens.size;
38
+ const iconContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
39
+ title: accessibilityLabel,
20
40
  size: size,
21
41
  color: themeTokens.color
22
42
  });
23
- return Platform.OS === 'web' ? /*#__PURE__*/React.createElement(View // eslint-disable-next-line react-native/no-inline-styles
24
- , {
43
+ return _Platform.default.OS === 'web' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
44
+ ref: ref // eslint-disable-next-line react-native/no-inline-styles
45
+ ,
25
46
  style: {
26
47
  // TODO: systematise animations.
27
48
  // https://github.com/telus/universal-design-system/issues/487
28
49
  transition: 'transform 200ms, color 200ms',
29
50
  transform: [themeTokens.scale ? `scale(${themeTokens.scale})` : '', themeTokens.translateX ? `translateX(${themeTokens.translateX}px)` : '', themeTokens.translateY ? `translateY(${themeTokens.translateY}px)` : ''].filter(exists => exists).join(' ')
30
- }
31
- }, iconContent) : iconContent;
32
- }; // Auto-generated SVG icon components wrap Icon and pass through these props:
33
-
34
-
35
- export const iconComponentPropTypes = {
36
- variant: variantProp.propType,
37
- tokens: getTokensPropType('Icon'),
51
+ },
52
+ dataSet: dataSet,
53
+ children: iconContent
54
+ }) : iconContent;
55
+ });
56
+ Icon.displayName = 'Icon';
57
+ const iconComponentPropTypes = {
58
+ variant: _utils.variantProp.propType,
59
+ tokens: (0, _utils.getTokensPropType)('Icon'),
38
60
 
39
61
  /**
40
62
  * Descriptive label used in web SVG title tag for accessibility
41
63
  */
42
- label: PropTypes.string,
43
-
44
- /**
45
- * On web, this unique id is applied to <SVG> title and aria-labelledby attr
46
- */
47
- titleId: PropTypes.string
48
- }; // Auto-generated SVG icon components contain an inner SVG component taking these props:
49
-
50
- export const iconSvgPropTypes = {
51
- title: iconComponentPropTypes.label,
52
- titleId: iconComponentPropTypes.titleId,
53
-
54
- /**
55
- * The size of the SVG icon after resolving tokens
56
- */
57
- size: PropTypes.number,
64
+ accessibilityLabel: _propTypes.default.string,
58
65
 
59
66
  /**
60
- * The color of the SVG icon after resolving tokens
67
+ * controls whether the icon size should be proportionate to any accessibility-related font scaling.
61
68
  */
62
- color: PropTypes.string
69
+ scalesWithText: _propTypes.default.bool
63
70
  };
71
+ exports.iconComponentPropTypes = iconComponentPropTypes;
64
72
  Icon.propTypes = { ...iconComponentPropTypes,
65
73
 
66
74
  /**
67
- * Function component containing this icon's SVG or native equivalent.
68
- * UDS's SVGR config turns static SVG files into components that pass this to <Icon>.
75
+ * A valid UDS icon component imported from a UDS palette
76
+ * (e.g.) `import { MyIcon } from @telus-uds/palette-<brand>/build/web/icons`
69
77
  */
70
- IconSvg: PropTypes.func.isRequired
78
+ icon: _propTypes.default.elementType.isRequired
71
79
  };
72
- export default Icon;
80
+ var _default = Icon;
81
+ exports.default = _default;
@@ -1,9 +1,32 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Platform, View } from 'react-native';
4
- import { iconComponentPropTypes } from './Icon';
5
- import { getStackedContent } from '../StackView';
6
- import { spacingProps } from '../utils';
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 _Icon = _interopRequireWildcard(require("./Icon"));
17
+
18
+ var _StackView = require("../StackView");
19
+
20
+ var _utils = require("../utils");
21
+
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
7
30
  /**
8
31
  * Returns an icon and some text with a sized gap between them. This is a utility component
9
32
  * intended for use when creating components, not intended for use in applications on its own.
@@ -12,61 +35,67 @@ import { spacingProps } from '../utils';
12
35
  * - inline within a <Text> element
13
36
  * - within a container with `flexDirection: 'row'`
14
37
  */
15
-
16
- const IconText = ({
38
+ const IconText = /*#__PURE__*/(0, _react.forwardRef)(({
17
39
  space,
18
40
  iconPosition = 'left',
19
41
  icon: IconComponent,
20
42
  iconProps,
21
43
  children
22
- }) => {
23
- const iconContent = IconComponent && /*#__PURE__*/React.createElement(IconComponent, Object.assign({
24
- scalesWithText: true
25
- }, iconProps)); // Inline images on Android are always baseline-aligned which makes them look misaligned - offset it.
44
+ }, ref) => {
45
+ var _iconProps$tokens;
46
+
47
+ const iconContent = IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
48
+ ref: ref,
49
+ icon: IconComponent,
50
+ scalesWithText: true,
51
+ ...iconProps
52
+ }); // Inline images on Android are always baseline-aligned which makes them look misaligned - offset it.
26
53
  // See abandoned issue https://github.com/facebook/react-native/issues/6529
27
54
 
28
- const size = iconProps?.tokens?.size;
29
- const iconAdjusted = Platform.OS === 'android' && iconContent && size ? /*#__PURE__*/React.createElement(View, {
55
+ const size = iconProps === null || iconProps === void 0 ? void 0 : (_iconProps$tokens = iconProps.tokens) === null || _iconProps$tokens === void 0 ? void 0 : _iconProps$tokens.size;
56
+ const iconAdjusted = _Platform.default.OS === 'android' && iconContent && size ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
30
57
  style: {
31
58
  transform: [{
32
59
  translateY: size * 0.2
33
60
  }]
34
- }
35
- }, iconContent) : iconContent;
36
- return getStackedContent(iconPosition === 'left' ? [iconAdjusted, children] : [children, iconAdjusted], {
61
+ },
62
+ children: iconContent
63
+ }) : iconContent;
64
+ return (0, _StackView.getStackedContent)(iconPosition === 'left' ? [iconAdjusted, children] : [children, iconAdjusted], {
37
65
  space,
38
66
  direction: 'row'
39
67
  });
40
- };
41
-
68
+ });
69
+ IconText.displayName = 'IconText';
42
70
  IconText.propTypes = {
43
71
  /**
44
72
  * Amount of space to separate the text content and icon. Uses the themes's spacing scale
45
73
  * (see useSpacingScale for more info).
46
74
  */
47
- space: spacingProps.types.spacingValue,
75
+ space: _utils.spacingProps.types.spacingValue,
48
76
 
49
77
  /**
50
78
  * Whether the icon should be to the left of the content or the right of the content.
51
79
  */
52
- iconPosition: PropTypes.oneOf(['left', 'right']),
80
+ iconPosition: _propTypes.default.oneOf(['left', 'right']),
53
81
 
54
82
  /**
55
83
  * A valid UDS icon component imported from a UDS palette.
56
84
  */
57
- icon: PropTypes.func,
85
+ icon: _propTypes.default.func,
58
86
 
59
87
  /**
60
88
  * Props that will be passed to the icon component. By default the icon's `scalesWithText`
61
89
  * prop will be set as "true" so that the icon continues to match the size of the text
62
90
  * if users use accessibility settings to increase text size.
63
91
  */
64
- iconProps: PropTypes.exact(iconComponentPropTypes),
92
+ iconProps: _propTypes.default.exact(_Icon.iconComponentPropTypes),
65
93
 
66
94
  /**
67
95
  * Content to be rendered alongside the Icon component. Usually this should be a
68
96
  * `<Typography>` component, or a component that renders `<Text>`.
69
97
  */
70
- children: PropTypes.node
98
+ children: _propTypes.default.node
71
99
  };
72
- export default IconText;
100
+ var _default = IconText;
101
+ exports.default = _default;
package/lib/Icon/index.js CHANGED
@@ -1,4 +1,31 @@
1
- import Icon, { iconComponentPropTypes, iconSvgPropTypes } from './Icon';
2
- import IconText from './IconText';
3
- export default Icon;
4
- export { iconComponentPropTypes, iconSvgPropTypes, IconText };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "iconComponentPropTypes", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Icon.iconComponentPropTypes;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "IconText", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _IconText.default;
16
+ }
17
+ });
18
+ exports.default = void 0;
19
+
20
+ var _Icon = _interopRequireWildcard(require("./Icon"));
21
+
22
+ var _IconText = _interopRequireDefault(require("./IconText"));
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ var _default = _Icon.default;
31
+ exports.default = _default;
@@ -0,0 +1,140 @@
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 _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
13
+
14
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
15
+
16
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
17
+
18
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
19
+
20
+ var _ThemeProvider = require("../ThemeProvider");
21
+
22
+ var _utils = require("../utils");
23
+
24
+ var _propTypes2 = require("../utils/propTypes");
25
+
26
+ var _Icon = _interopRequireDefault(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; }
35
+
36
+ const selectOuterStyle = ({
37
+ backgroundColor,
38
+ borderRadius,
39
+ outerBorderWidth,
40
+ outerBorderColor,
41
+ outerBorderGap,
42
+ shadow
43
+ }) => [{
44
+ backgroundColor,
45
+ ...(0, _ThemeProvider.applyShadowToken)(shadow),
46
+ ...(0, _ThemeProvider.applyOuterBorder)({
47
+ borderRadius,
48
+ outerBorderWidth,
49
+ outerBorderColor,
50
+ outerBorderGap
51
+ }),
52
+ ..._Platform.default.select({
53
+ web: {
54
+ outline: 'none',
55
+ display: 'inline-flex'
56
+ }
57
+ })
58
+ }, staticStyles.outer];
59
+
60
+ const selectInnerStyle = ({
61
+ borderColor,
62
+ borderWidth = 0,
63
+ borderRadius,
64
+ padding = 0
65
+ }) => ({
66
+ // Inner borders animate with the icon and should be treated like a themable feature of the icon
67
+ borderColor,
68
+ borderRadius,
69
+ borderWidth,
70
+ padding: Math.max(0, padding - borderWidth) // Stable size as border changes
71
+
72
+ });
73
+ /**
74
+ * A pressable themeless base component that handles pressable states and passes tokens
75
+ * based on these to an outer border and a base Card component. Not intended to be used in
76
+ * apps or sites directly: build themed components on top of this.
77
+ */
78
+
79
+
80
+ const IconButton = /*#__PURE__*/(0, _react.forwardRef)(({
81
+ tokens,
82
+ variant,
83
+ icon: IconComponent,
84
+ href,
85
+ hrefAttrs,
86
+ onPress,
87
+ accessibilityRole = href ? 'link' : 'button',
88
+ ...rest
89
+ }, ref) => {
90
+ const a11y = _propTypes2.a11yProps.select({ ...rest,
91
+ accessibilityRole
92
+ });
93
+
94
+ const handlePress = _utils.linkProps.handleHref({
95
+ href,
96
+ onPress
97
+ });
98
+
99
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('IconButton', tokens, variant);
100
+
101
+ const getOuterStyle = pressableState => selectOuterStyle(getTokens((0, _utils.resolvePressableState)(pressableState)));
102
+
103
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
104
+ ref: ref,
105
+ href: href,
106
+ onPress: handlePress,
107
+ hrefAttrs: hrefAttrs,
108
+ style: getOuterStyle,
109
+ ...a11y,
110
+ children: pressableState => {
111
+ const themeTokens = getTokens((0, _utils.resolvePressableState)(pressableState));
112
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
113
+ style: selectInnerStyle(themeTokens),
114
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
115
+ icon: IconComponent,
116
+ title: a11y.accessibilityLabel,
117
+ tokens: (0, _utils.selectTokens)('Icon', themeTokens, 'icon')
118
+ })
119
+ });
120
+ }
121
+ });
122
+ });
123
+ IconButton.displayName = 'IconButton';
124
+ IconButton.propTypes = { ..._propTypes2.a11yProps.types,
125
+ variant: _utils.variantProp.propType,
126
+ tokens: (0, _utils.getTokensPropType)('IconButton'),
127
+ icon: _propTypes.default.elementType.isRequired,
128
+ href: _propTypes.default.string,
129
+ hrefAttrs: _propTypes.default.shape(_utils.hrefAttrsProp.types),
130
+ onPress: _propTypes.default.func
131
+ };
132
+
133
+ const staticStyles = _StyleSheet.default.create({
134
+ outer: {
135
+ alignSelf: 'flex-start'
136
+ }
137
+ });
138
+
139
+ var _default = IconButton;
140
+ exports.default = _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _IconButton = _interopRequireDefault(require("./IconButton"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _IconButton.default;
13
+ exports.default = _default;