@telus-uds/components-base 0.0.2-prerelease.5 → 0.0.2-prerelease.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/.ultra.cache.json +1 -0
  2. package/CHANGELOG.md +65 -0
  3. package/__fixtures__/Accessible.js +33 -0
  4. package/__fixtures__/Accessible.native.js +32 -0
  5. package/__fixtures__/testTheme.js +871 -52
  6. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
  7. package/__tests__/Button/ButtonBase.test.jsx +3 -32
  8. package/__tests__/Button/ButtonGroup.test.jsx +2 -2
  9. package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
  10. package/__tests__/Checkbox/CheckboxGroup.test.jsx +247 -0
  11. package/__tests__/Icon/Icon.test.jsx +3 -3
  12. package/__tests__/IconButton/IconButton.test.jsx +52 -0
  13. package/__tests__/InputSupports/InputSupports.test.jsx +50 -0
  14. package/__tests__/List/List.test.jsx +60 -0
  15. package/__tests__/Modal/Modal.test.jsx +47 -0
  16. package/__tests__/Notification/Notification.test.jsx +20 -0
  17. package/__tests__/Pagination/Pagination.test.jsx +2 -2
  18. package/__tests__/Progress/Progress.test.jsx +79 -0
  19. package/__tests__/Radio/Radio.test.jsx +87 -0
  20. package/__tests__/Radio/RadioGroup.test.jsx +221 -0
  21. package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
  22. package/__tests__/RadioCard/RadioCardGroup.test.jsx +247 -0
  23. package/__tests__/Search/Search.test.jsx +72 -0
  24. package/__tests__/Select/Select.test.jsx +93 -0
  25. package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
  26. package/__tests__/StackView/StackView.test.jsx +0 -26
  27. package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
  28. package/__tests__/Tabs/Tabs.test.jsx +200 -0
  29. package/__tests__/Tags/Tags.test.jsx +328 -0
  30. package/__tests__/TextInput/TextArea.test.jsx +34 -0
  31. package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +20 -46
  32. package/__tests__/Tooltip/Tooltip.test.jsx +65 -0
  33. package/__tests__/Tooltip/getTooltipPosition.test.js +79 -0
  34. package/__tests__/utils/input.test.js +58 -0
  35. package/__tests__/utils/useCopy.test.js +42 -0
  36. package/__tests__/utils/useResponsiveProp.test.jsx +202 -0
  37. package/__tests__/utils/{spacing.test.jsx → useSpacingScale.test.jsx} +1 -1
  38. package/babel.config.js +20 -0
  39. package/jest.config.js +13 -4
  40. package/lib/A11yInfoProvider/index.js +54 -26
  41. package/lib/A11yText/index.js +37 -14
  42. package/lib/ActivityIndicator/Spinner.js +78 -0
  43. package/lib/ActivityIndicator/Spinner.native.js +121 -87
  44. package/lib/ActivityIndicator/index.js +28 -12
  45. package/lib/ActivityIndicator/shared.js +27 -12
  46. package/lib/BaseProvider/index.js +34 -11
  47. package/lib/Box/Box.js +54 -31
  48. package/lib/Box/index.js +13 -2
  49. package/lib/Button/Button.js +38 -10
  50. package/lib/Button/ButtonBase.js +115 -94
  51. package/lib/Button/ButtonGroup.js +94 -86
  52. package/lib/Button/ButtonLink.js +41 -13
  53. package/lib/Button/index.js +31 -4
  54. package/lib/Button/propTypes.js +32 -9
  55. package/lib/Card/Card.js +36 -41
  56. package/lib/Card/CardBase.js +78 -0
  57. package/lib/Card/PressableCardBase.js +137 -0
  58. package/lib/Card/index.js +40 -2
  59. package/lib/Checkbox/Checkbox.js +344 -0
  60. package/lib/Checkbox/CheckboxGroup.js +231 -0
  61. package/lib/Checkbox/CheckboxInput.js +74 -0
  62. package/lib/Checkbox/CheckboxInput.native.js +14 -0
  63. package/lib/Checkbox/index.js +21 -0
  64. package/lib/Divider/Divider.js +50 -24
  65. package/lib/Divider/index.js +13 -2
  66. package/lib/ExpandCollapse/Accordion.js +20 -7
  67. package/lib/ExpandCollapse/Control.js +50 -27
  68. package/lib/ExpandCollapse/ExpandCollapse.js +41 -24
  69. package/lib/ExpandCollapse/Panel.js +75 -37
  70. package/lib/ExpandCollapse/index.js +25 -7
  71. package/lib/Feedback/Feedback.js +85 -34
  72. package/lib/Feedback/index.js +13 -2
  73. package/lib/Fieldset/Fieldset.js +160 -0
  74. package/lib/Fieldset/FieldsetContainer.js +41 -0
  75. package/lib/Fieldset/FieldsetContainer.native.js +33 -0
  76. package/lib/Fieldset/Legend.js +33 -0
  77. package/lib/Fieldset/Legend.native.js +43 -0
  78. package/lib/Fieldset/cssReset.js +21 -0
  79. package/lib/Fieldset/index.js +13 -0
  80. package/lib/FlexGrid/Col/Col.js +67 -38
  81. package/lib/FlexGrid/Col/index.js +13 -2
  82. package/lib/FlexGrid/FlexGrid.js +70 -45
  83. package/lib/FlexGrid/Row/Row.js +48 -27
  84. package/lib/FlexGrid/Row/index.js +13 -2
  85. package/lib/FlexGrid/helpers/index.js +9 -1
  86. package/lib/FlexGrid/index.js +13 -2
  87. package/lib/FlexGrid/providers/GutterContext.js +15 -3
  88. package/lib/Icon/Icon.js +52 -47
  89. package/lib/Icon/IconText.js +100 -0
  90. package/lib/Icon/index.js +31 -3
  91. package/lib/IconButton/IconButton.js +135 -0
  92. package/lib/IconButton/index.js +13 -0
  93. package/lib/InputLabel/InputLabel.js +70 -34
  94. package/lib/InputLabel/LabelContent.js +31 -0
  95. package/lib/InputLabel/LabelContent.native.js +9 -1
  96. package/lib/InputLabel/index.js +13 -2
  97. package/lib/InputSupports/InputSupports.js +104 -0
  98. package/lib/InputSupports/index.js +13 -0
  99. package/lib/InputSupports/propTypes.js +66 -0
  100. package/lib/InputSupports/useInputSupports.js +41 -0
  101. package/lib/Link/ChevronLink.js +57 -15
  102. package/lib/Link/InlinePressable.js +50 -0
  103. package/lib/Link/InlinePressable.native.js +101 -0
  104. package/lib/Link/Link.js +30 -13
  105. package/lib/Link/LinkBase.js +114 -145
  106. package/lib/Link/TextButton.js +47 -17
  107. package/lib/Link/index.js +39 -4
  108. package/lib/List/List.js +80 -0
  109. package/lib/List/ListItem.js +237 -0
  110. package/lib/List/index.js +13 -0
  111. package/lib/Modal/Modal.js +226 -0
  112. package/lib/Modal/dictionary.js +16 -0
  113. package/lib/Modal/index.js +13 -0
  114. package/lib/Notification/Notification.js +200 -0
  115. package/lib/Notification/dictionary.js +15 -0
  116. package/lib/Notification/index.js +13 -0
  117. package/lib/Pagination/PageButton.js +45 -46
  118. package/lib/Pagination/Pagination.js +70 -40
  119. package/lib/Pagination/SideButton.js +74 -58
  120. package/lib/Pagination/dictionary.js +9 -2
  121. package/lib/Pagination/index.js +13 -2
  122. package/lib/Pagination/usePagination.js +12 -2
  123. package/lib/Progress/Progress.js +99 -0
  124. package/lib/Progress/ProgressBar.js +146 -0
  125. package/lib/Progress/ProgressBarBackground.js +57 -0
  126. package/lib/Progress/index.js +16 -0
  127. package/lib/Radio/Radio.js +292 -0
  128. package/lib/Radio/RadioButton.js +141 -0
  129. package/lib/Radio/RadioGroup.js +233 -0
  130. package/lib/Radio/RadioInput.js +76 -0
  131. package/lib/Radio/RadioInput.native.js +14 -0
  132. package/lib/Radio/index.js +21 -0
  133. package/lib/RadioCard/RadioCard.js +240 -0
  134. package/lib/RadioCard/RadioCardGroup.js +251 -0
  135. package/lib/RadioCard/index.js +21 -0
  136. package/lib/Search/Search.js +243 -0
  137. package/lib/Search/dictionary.js +19 -0
  138. package/lib/Search/index.js +13 -0
  139. package/lib/Select/Group.js +33 -0
  140. package/lib/Select/Group.native.js +25 -0
  141. package/lib/Select/Item.js +29 -0
  142. package/lib/Select/Item.native.js +19 -0
  143. package/lib/Select/Picker.js +79 -0
  144. package/lib/Select/Picker.native.js +115 -0
  145. package/lib/Select/Select.js +300 -0
  146. package/lib/Select/index.js +19 -0
  147. package/lib/SideNav/Item.js +54 -33
  148. package/lib/SideNav/ItemContent.js +41 -15
  149. package/lib/SideNav/ItemsGroup.js +46 -27
  150. package/lib/SideNav/SideNav.js +92 -69
  151. package/lib/SideNav/index.js +15 -1
  152. package/lib/Skeleton/Skeleton.js +137 -0
  153. package/lib/Skeleton/index.js +13 -0
  154. package/lib/Skeleton/skeleton.constant.js +12 -0
  155. package/lib/Skeleton/skeletonWebAnimation.js +27 -0
  156. package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
  157. package/lib/Spacer/Spacer.js +31 -12
  158. package/lib/Spacer/index.js +13 -2
  159. package/lib/StackView/StackView.js +57 -33
  160. package/lib/StackView/StackWrap.js +33 -10
  161. package/lib/StackView/StackWrap.native.js +13 -2
  162. package/lib/StackView/StackWrapBox.js +50 -23
  163. package/lib/StackView/StackWrapGap.js +45 -19
  164. package/lib/StackView/common.js +19 -4
  165. package/lib/StackView/getStackedContent.js +49 -19
  166. package/lib/StackView/index.js +29 -5
  167. package/lib/StepTracker/Step.js +245 -0
  168. package/lib/StepTracker/StepTracker.js +197 -0
  169. package/lib/StepTracker/dictionary.js +17 -0
  170. package/lib/StepTracker/index.js +13 -0
  171. package/lib/Tabs/HorizontalScroll.js +199 -0
  172. package/lib/Tabs/ScrollViewEnd.js +66 -0
  173. package/lib/Tabs/ScrollViewEnd.native.js +41 -0
  174. package/lib/Tabs/Tabs.js +117 -0
  175. package/lib/Tabs/TabsItem.js +234 -0
  176. package/lib/Tabs/TabsScrollButton.js +121 -0
  177. package/lib/Tabs/dictionary.js +18 -0
  178. package/lib/Tabs/index.js +13 -0
  179. package/lib/Tabs/itemPositions.js +128 -0
  180. package/lib/Tags/Tags.js +250 -0
  181. package/lib/Tags/index.js +13 -0
  182. package/lib/TextInput/TextArea.js +109 -0
  183. package/lib/TextInput/TextInput.js +41 -303
  184. package/lib/TextInput/TextInputBase.js +252 -0
  185. package/lib/TextInput/index.js +23 -2
  186. package/lib/TextInput/propTypes.js +42 -0
  187. package/lib/ThemeProvider/ThemeProvider.js +38 -14
  188. package/lib/ThemeProvider/index.js +61 -6
  189. package/lib/ThemeProvider/useSetTheme.js +14 -5
  190. package/lib/ThemeProvider/useTheme.js +13 -4
  191. package/lib/ThemeProvider/useThemeTokens.js +86 -19
  192. package/lib/ThemeProvider/utils/index.js +31 -2
  193. package/lib/ThemeProvider/utils/styles.js +52 -16
  194. package/lib/ThemeProvider/utils/theme-tokens.js +94 -16
  195. package/lib/ToggleSwitch/ToggleSwitch.js +76 -52
  196. package/lib/ToggleSwitch/index.js +13 -2
  197. package/lib/Tooltip/Backdrop.js +56 -0
  198. package/lib/Tooltip/Backdrop.native.js +59 -0
  199. package/lib/Tooltip/Tooltip.js +357 -0
  200. package/lib/Tooltip/dictionary.js +15 -0
  201. package/lib/Tooltip/getTooltipPosition.js +172 -0
  202. package/lib/Tooltip/index.js +13 -0
  203. package/lib/TooltipButton/TooltipButton.js +83 -0
  204. package/lib/TooltipButton/index.js +13 -0
  205. package/lib/Typography/Typography.js +58 -43
  206. package/lib/Typography/index.js +13 -2
  207. package/lib/ViewportProvider/ViewportProvider.js +46 -0
  208. package/lib/ViewportProvider/index.js +22 -38
  209. package/lib/ViewportProvider/useViewport.js +15 -0
  210. package/lib/ViewportProvider/useViewportListener.js +57 -0
  211. package/lib/index.js +518 -24
  212. package/lib/utils/a11y/index.js +18 -0
  213. package/lib/utils/a11y/textSize.js +49 -0
  214. package/lib/utils/animation/index.js +15 -2
  215. package/lib/utils/animation/useVerticalExpandAnimation.js +28 -11
  216. package/lib/utils/children.js +87 -0
  217. package/lib/utils/index.js +163 -4
  218. package/lib/utils/info/index.js +19 -0
  219. package/lib/utils/info/platform/index.js +23 -0
  220. package/lib/utils/info/platform/platform.android.js +8 -0
  221. package/lib/utils/info/platform/platform.ios.js +8 -0
  222. package/lib/utils/info/platform/platform.js +8 -0
  223. package/lib/utils/info/platform/platform.native.js +11 -0
  224. package/lib/utils/info/versions.js +16 -0
  225. package/lib/utils/input.js +51 -33
  226. package/lib/utils/pressability.js +120 -0
  227. package/lib/utils/propTypes.js +269 -116
  228. package/lib/utils/useCopy.js +51 -0
  229. package/lib/utils/useHash.js +48 -0
  230. package/lib/utils/useHash.native.js +15 -0
  231. package/lib/utils/useResponsiveProp.js +59 -0
  232. package/lib/utils/{spacing/useSpacingScale.js → useSpacingScale.js} +45 -12
  233. package/lib/utils/useUniqueId.js +13 -4
  234. package/package.json +12 -9
  235. package/release-context.json +4 -4
  236. package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +0 -0
  237. package/src/Box/Box.jsx +11 -4
  238. package/src/Button/Button.jsx +9 -5
  239. package/src/Button/ButtonBase.jsx +69 -69
  240. package/src/Button/ButtonGroup.jsx +11 -24
  241. package/src/Button/ButtonLink.jsx +14 -4
  242. package/src/Button/propTypes.js +12 -2
  243. package/src/Card/Card.jsx +4 -30
  244. package/src/Card/CardBase.jsx +57 -0
  245. package/src/Card/PressableCardBase.jsx +112 -0
  246. package/src/Card/index.js +3 -0
  247. package/src/Checkbox/Checkbox.jsx +274 -0
  248. package/src/Checkbox/CheckboxGroup.jsx +196 -0
  249. package/src/Checkbox/CheckboxInput.jsx +55 -0
  250. package/src/Checkbox/CheckboxInput.native.jsx +6 -0
  251. package/src/Checkbox/index.js +5 -0
  252. package/src/ExpandCollapse/Control.jsx +1 -1
  253. package/src/Feedback/Feedback.jsx +31 -22
  254. package/src/Fieldset/Fieldset.jsx +129 -0
  255. package/src/Fieldset/FieldsetContainer.jsx +22 -0
  256. package/src/Fieldset/FieldsetContainer.native.jsx +16 -0
  257. package/src/Fieldset/Legend.jsx +16 -0
  258. package/src/Fieldset/Legend.native.jsx +22 -0
  259. package/src/Fieldset/cssReset.js +14 -0
  260. package/src/Fieldset/index.js +3 -0
  261. package/src/Icon/Icon.jsx +21 -26
  262. package/src/Icon/IconText.jsx +63 -0
  263. package/src/Icon/index.js +3 -2
  264. package/src/IconButton/IconButton.jsx +107 -0
  265. package/src/IconButton/index.js +3 -0
  266. package/src/InputLabel/InputLabel.jsx +11 -4
  267. package/src/InputLabel/{LabelContent.web.jsx → LabelContent.jsx} +0 -0
  268. package/src/InputSupports/InputSupports.jsx +75 -0
  269. package/src/InputSupports/index.js +3 -0
  270. package/src/InputSupports/propTypes.js +44 -0
  271. package/src/InputSupports/useInputSupports.js +30 -0
  272. package/src/Link/ChevronLink.jsx +28 -7
  273. package/src/Link/InlinePressable.jsx +37 -0
  274. package/src/Link/InlinePressable.native.jsx +73 -0
  275. package/src/Link/Link.jsx +17 -13
  276. package/src/Link/LinkBase.jsx +67 -148
  277. package/src/Link/TextButton.jsx +25 -11
  278. package/src/Link/index.js +2 -1
  279. package/src/List/List.jsx +47 -0
  280. package/src/List/ListItem.jsx +187 -0
  281. package/src/List/index.js +3 -0
  282. package/src/Modal/Modal.jsx +185 -0
  283. package/src/Modal/dictionary.js +9 -0
  284. package/src/Modal/index.js +3 -0
  285. package/src/Notification/Notification.jsx +149 -0
  286. package/src/Notification/dictionary.js +8 -0
  287. package/src/Notification/index.js +3 -0
  288. package/src/Pagination/PageButton.jsx +3 -17
  289. package/src/Pagination/SideButton.jsx +27 -38
  290. package/src/Progress/Progress.jsx +77 -0
  291. package/src/Progress/ProgressBar.jsx +110 -0
  292. package/src/Progress/ProgressBarBackground.jsx +34 -0
  293. package/src/Progress/index.js +6 -0
  294. package/src/Radio/Radio.jsx +233 -0
  295. package/src/Radio/RadioButton.jsx +131 -0
  296. package/src/Radio/RadioGroup.jsx +198 -0
  297. package/src/Radio/RadioInput.jsx +57 -0
  298. package/src/Radio/RadioInput.native.jsx +6 -0
  299. package/src/Radio/index.js +5 -0
  300. package/src/RadioCard/RadioCard.jsx +191 -0
  301. package/src/RadioCard/RadioCardGroup.jsx +211 -0
  302. package/src/RadioCard/index.js +5 -0
  303. package/src/Search/Search.jsx +204 -0
  304. package/src/Search/dictionary.js +12 -0
  305. package/src/Search/index.js +3 -0
  306. package/src/Select/Group.jsx +15 -0
  307. package/src/Select/Group.native.jsx +14 -0
  308. package/src/Select/Item.jsx +11 -0
  309. package/src/Select/Item.native.jsx +10 -0
  310. package/src/Select/Picker.jsx +67 -0
  311. package/src/Select/Picker.native.jsx +95 -0
  312. package/src/Select/Select.jsx +255 -0
  313. package/src/Select/index.js +8 -0
  314. package/src/SideNav/Item.jsx +2 -2
  315. package/src/Skeleton/Skeleton.jsx +98 -0
  316. package/src/Skeleton/index.js +3 -0
  317. package/src/Skeleton/skeleton.constant.js +3 -0
  318. package/src/Skeleton/skeletonWebAnimation.js +13 -0
  319. package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
  320. package/src/StackView/StackView.jsx +25 -17
  321. package/src/StackView/StackWrap.jsx +9 -1
  322. package/src/StackView/StackWrapBox.jsx +19 -7
  323. package/src/StackView/StackWrapGap.jsx +15 -5
  324. package/src/StackView/getStackedContent.jsx +8 -2
  325. package/src/StepTracker/Step.jsx +202 -0
  326. package/src/StepTracker/StepTracker.jsx +163 -0
  327. package/src/StepTracker/dictionary.js +10 -0
  328. package/src/StepTracker/index.js +3 -0
  329. package/src/Tabs/HorizontalScroll.jsx +165 -0
  330. package/src/Tabs/ScrollViewEnd.jsx +53 -0
  331. package/src/Tabs/ScrollViewEnd.native.jsx +24 -0
  332. package/src/Tabs/Tabs.jsx +89 -0
  333. package/src/Tabs/TabsItem.jsx +204 -0
  334. package/src/Tabs/TabsScrollButton.jsx +100 -0
  335. package/src/Tabs/dictionary.js +11 -0
  336. package/src/Tabs/index.js +3 -0
  337. package/src/Tabs/itemPositions.js +101 -0
  338. package/src/Tags/Tags.jsx +207 -0
  339. package/src/Tags/index.js +3 -0
  340. package/src/TextInput/TextArea.jsx +78 -0
  341. package/src/TextInput/TextInput.jsx +17 -290
  342. package/src/TextInput/TextInputBase.jsx +210 -0
  343. package/src/TextInput/index.js +2 -1
  344. package/src/TextInput/propTypes.js +29 -0
  345. package/src/ThemeProvider/useThemeTokens.js +56 -5
  346. package/src/ThemeProvider/utils/styles.js +18 -5
  347. package/src/ThemeProvider/utils/theme-tokens.js +46 -5
  348. package/src/ToggleSwitch/ToggleSwitch.jsx +3 -4
  349. package/src/Tooltip/Backdrop.jsx +60 -0
  350. package/src/Tooltip/Backdrop.native.jsx +33 -0
  351. package/src/Tooltip/Tooltip.jsx +294 -0
  352. package/src/Tooltip/dictionary.js +8 -0
  353. package/src/Tooltip/getTooltipPosition.js +161 -0
  354. package/src/Tooltip/index.js +3 -0
  355. package/src/TooltipButton/TooltipButton.jsx +49 -0
  356. package/src/TooltipButton/index.js +3 -0
  357. package/src/Typography/Typography.jsx +10 -20
  358. package/src/ViewportProvider/ViewportProvider.jsx +21 -0
  359. package/src/ViewportProvider/index.jsx +2 -41
  360. package/src/ViewportProvider/useViewport.js +5 -0
  361. package/src/ViewportProvider/useViewportListener.js +43 -0
  362. package/src/index.js +31 -3
  363. package/src/utils/a11y/index.js +1 -0
  364. package/src/utils/a11y/textSize.js +30 -0
  365. package/src/utils/children.jsx +66 -0
  366. package/src/utils/index.js +11 -1
  367. package/src/utils/info/index.js +8 -0
  368. package/src/utils/info/platform/index.js +11 -0
  369. package/src/utils/info/platform/platform.android.js +1 -0
  370. package/src/utils/info/platform/platform.ios.js +1 -0
  371. package/src/utils/info/platform/platform.js +1 -0
  372. package/src/utils/info/platform/platform.native.js +4 -0
  373. package/src/utils/info/versions.js +6 -0
  374. package/src/utils/input.js +20 -12
  375. package/src/utils/pressability.js +96 -0
  376. package/src/utils/propTypes.js +195 -56
  377. package/src/utils/useCopy.js +39 -0
  378. package/src/utils/useHash.js +34 -0
  379. package/src/utils/useHash.native.js +6 -0
  380. package/src/utils/useResponsiveProp.js +50 -0
  381. package/src/utils/{spacing/useSpacingScale.js → useSpacingScale.js} +25 -10
  382. package/stories/A11yText/A11yText.stories.jsx +4 -8
  383. package/stories/Button/Button.stories.jsx +5 -0
  384. package/stories/Card/Card.stories.jsx +1 -1
  385. package/stories/Checkbox/Checkbox.stories.jsx +94 -0
  386. package/stories/Feedback/Feedback.stories.jsx +5 -6
  387. package/stories/Icon/Icon.stories.jsx +27 -7
  388. package/stories/IconButton/IconButton.stories.jsx +50 -0
  389. package/stories/InputLabel/InputLabel.stories.jsx +8 -3
  390. package/stories/Link/ChevronLink.stories.jsx +3 -3
  391. package/stories/Link/Link.stories.jsx +28 -18
  392. package/stories/List/List.stories.jsx +117 -0
  393. package/stories/Modal/Modal.stories.jsx +29 -0
  394. package/stories/Notification/Notification.stories.jsx +82 -0
  395. package/stories/Progress/Progress.stories.jsx +93 -0
  396. package/stories/Radio/Radio.stories.jsx +100 -0
  397. package/stories/RadioCard/RadioCard.stories.jsx +98 -0
  398. package/stories/Search/Search.stories.jsx +16 -0
  399. package/stories/Select/Select.stories.jsx +55 -0
  400. package/stories/Skeleton/Skeleton.stories.jsx +36 -0
  401. package/stories/Spacer/Spacer.stories.jsx +7 -2
  402. package/stories/StackView/StackView.stories.jsx +10 -0
  403. package/stories/StackView/StackWrap.stories.jsx +12 -0
  404. package/stories/StepTracker/StepTracker.stories.jsx +71 -0
  405. package/stories/Tabs/Tabs.stories.jsx +97 -0
  406. package/stories/Tags/Tags.stories.jsx +69 -0
  407. package/stories/TextInput/TextArea.stories.jsx +100 -0
  408. package/stories/Tooltip/Tooltip.stories.jsx +81 -0
  409. package/stories/TooltipButton/TooltipButton.stories.jsx +11 -0
  410. package/stories/{platform-supports.web.jsx → platform-supports.jsx} +0 -0
  411. package/stories/supports.jsx +36 -2
  412. package/__fixtures__/accessible.icon.svg +0 -6
  413. package/babel.config.json +0 -8
  414. package/docs/Contributing.stories.mdx +0 -9
  415. package/docs/Fonts.stories.mdx +0 -104
  416. package/docs/Icons.stories.mdx +0 -144
  417. package/docs/Introduction.stories.mdx +0 -9
  418. package/lib/ActivityIndicator/Spinner.web.js +0 -55
  419. package/lib/InputLabel/LabelContent.web.js +0 -17
  420. package/lib/Pagination/useCopy.js +0 -10
  421. package/lib/config/svgr-icons-web.js +0 -9
  422. package/lib/config/svgr-icons.js +0 -52
  423. package/lib/utils/spacing/index.js +0 -2
  424. package/lib/utils/spacing/utils.js +0 -32
  425. package/src/Pagination/useCopy.js +0 -7
  426. package/src/config/svgr-icons-web.js +0 -11
  427. package/src/config/svgr-icons.js +0 -46
  428. package/src/utils/spacing/index.js +0 -3
  429. package/src/utils/spacing/utils.js +0 -28
@@ -1,9 +1,27 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { View, StyleSheet } from 'react-native';
4
- import { viewports } from '@telus-uds/system-constants';
5
- import { useViewport } from '../../ViewportProvider';
6
- import applyInheritance from '../helpers';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
15
+
16
+ var _systemConstants = require("@telus-uds/system-constants");
17
+
18
+ var _ViewportProvider = require("../../ViewportProvider");
19
+
20
+ var _helpers = _interopRequireDefault(require("../helpers"));
21
+
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
25
 
8
26
  const horizontalAlignStyles = horizontalAlign => {
9
27
  switch (horizontalAlign) {
@@ -81,41 +99,42 @@ const Row = ({
81
99
  children,
82
100
  ...rest
83
101
  }) => {
84
- const viewPort = useViewport();
85
- const reverseLevel = applyInheritance([xsReverse, smReverse, mdReverse, lgReverse, xlReverse]);
102
+ const viewPort = (0, _ViewportProvider.useViewport)();
103
+ const reverseLevel = (0, _helpers.default)([xsReverse, smReverse, mdReverse, lgReverse, xlReverse]);
86
104
  let flexDirection = '';
87
105
 
88
- if (viewPort === viewports.xs) {
106
+ if (viewPort === _systemConstants.viewports.xs) {
89
107
  flexDirection = reverseLevel[0] ? 'row-reverse' : 'row';
90
108
  }
91
109
 
92
- if (viewPort === viewports.sm) {
110
+ if (viewPort === _systemConstants.viewports.sm) {
93
111
  flexDirection = reverseLevel[1] ? 'row-reverse' : 'row';
94
112
  }
95
113
 
96
- if (viewPort === viewports.md) {
114
+ if (viewPort === _systemConstants.viewports.md) {
97
115
  flexDirection = reverseLevel[2] ? 'row-reverse' : 'row';
98
116
  }
99
117
 
100
- if (viewPort === viewports.lg) {
118
+ if (viewPort === _systemConstants.viewports.lg) {
101
119
  flexDirection = reverseLevel[3] ? 'row-reverse' : 'row';
102
120
  }
103
121
 
104
- if (viewPort === viewports.xl) {
122
+ if (viewPort === _systemConstants.viewports.xl) {
105
123
  flexDirection = reverseLevel[4] ? 'row-reverse' : 'row';
106
124
  }
107
125
 
108
- return /*#__PURE__*/React.createElement(View, Object.assign({}, rest, {
126
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, { ...rest,
109
127
  style: [styles.row, {
110
128
  flexDirection,
111
129
  ...horizontalAlignStyles(horizontalAlign),
112
130
  ...verticalAlignStyles(verticalAlign),
113
131
  ...distributeStyles(distribute)
114
- }]
115
- }), children);
132
+ }],
133
+ children: children
134
+ });
116
135
  };
117
136
 
118
- const styles = StyleSheet.create({
137
+ const styles = _StyleSheet.default.create({
119
138
  row: {
120
139
  width: '100%',
121
140
  marginVertical: 0,
@@ -127,46 +146,48 @@ const styles = StyleSheet.create({
127
146
  flexWrap: 'wrap'
128
147
  }
129
148
  });
149
+
130
150
  Row.propTypes = {
131
151
  /**
132
152
  * Align columns horizontally within their row.
133
153
  */
134
- horizontalAlign: PropTypes.oneOf(['start', 'center', 'end']),
154
+ horizontalAlign: _propTypes.default.oneOf(['start', 'center', 'end']),
135
155
 
136
156
  /**
137
157
  * Align columns vertically within their row.
138
158
  */
139
- verticalAlign: PropTypes.oneOf(['top', 'middle', 'bottom']),
159
+ verticalAlign: _propTypes.default.oneOf(['top', 'middle', 'bottom']),
140
160
 
141
161
  /**
142
162
  * Distribute empty space around columns.
143
163
  */
144
- distribute: PropTypes.oneOf(['around', 'between']),
164
+ distribute: _propTypes.default.oneOf(['around', 'between']),
145
165
 
146
166
  /**
147
167
  * Choose if the item order should be reversed from the 'xs' breakpoint. When you pass in false, the order will be normal from the xs breakpoint. By default, it inherits the behaviour set by the preceding prop.
148
168
  */
149
- xsReverse: PropTypes.bool,
169
+ xsReverse: _propTypes.default.bool,
150
170
 
151
171
  /**
152
172
  * Choose if the item order should be reversed from the 'sm' breakpoint. When you pass in false, the order will be normal from the sm breakpoint. By default, it inherits the behaviour set by the preceding prop.
153
173
  */
154
- smReverse: PropTypes.bool,
174
+ smReverse: _propTypes.default.bool,
155
175
 
156
176
  /**
157
177
  * Choose if the item order should be reversed from the 'md' breakpoint. When you pass in false, the order will be normal from the md breakpoint. By default, it inherits the behaviour set by the preceding prop.
158
178
  */
159
- mdReverse: PropTypes.bool,
179
+ mdReverse: _propTypes.default.bool,
160
180
 
161
181
  /**
162
182
  * Choose if the item order should be reversed from the 'lg' breakpoint. When you pass in false, the order will be normal from the lg breakpoint. By default, it inherits the behaviour set by the preceding prop.
163
183
  */
164
- lgReverse: PropTypes.bool,
184
+ lgReverse: _propTypes.default.bool,
165
185
 
166
186
  /**
167
187
  * Choose if the item order should be reversed from the 'xl' breakpoint. When you pass in false, the order will be normal from the xl breakpoint. By default, it inherits the behaviour set by the preceding prop.
168
188
  */
169
- xlReverse: PropTypes.bool,
170
- children: PropTypes.node.isRequired
189
+ xlReverse: _propTypes.default.bool,
190
+ children: _propTypes.default.node.isRequired
171
191
  };
172
- export default Row;
192
+ var _default = Row;
193
+ exports.default = _default;
@@ -1,2 +1,13 @@
1
- import Row from './Row';
2
- export default Row;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _Row = _interopRequireDefault(require("./Row"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _Row.default;
13
+ exports.default = _default;
@@ -1,3 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
1
8
  const applyInheritance = sizes => {
2
9
  let prevSize;
3
10
  return sizes.map((size, index) => {
@@ -18,4 +25,5 @@ const applyInheritance = sizes => {
18
25
  });
19
26
  };
20
27
 
21
- export default applyInheritance;
28
+ var _default = applyInheritance;
29
+ exports.default = _default;
@@ -1,2 +1,13 @@
1
- import FlexGrid from './FlexGrid';
2
- export default FlexGrid;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _FlexGrid = _interopRequireDefault(require("./FlexGrid"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _FlexGrid.default;
13
+ exports.default = _default;
@@ -1,3 +1,15 @@
1
- import React from 'react';
2
- const GutterContext = /*#__PURE__*/React.createContext(false);
3
- export default GutterContext;
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
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const GutterContext = /*#__PURE__*/_react.default.createContext(false);
13
+
14
+ var _default = GutterContext;
15
+ exports.default = _default;
package/lib/Icon/Icon.js CHANGED
@@ -1,69 +1,74 @@
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, variantProp } from '../utils/propTypes';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.iconComponentPropTypes = void 0;
7
+
8
+ var _react = _interopRequireDefault(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 }; }
6
23
 
7
24
  const Icon = ({
8
- IconSvg,
25
+ icon: IconComponent,
26
+ accessibilityLabel,
9
27
  variant,
10
- label,
11
- titleId,
12
- tokens = {}
28
+ tokens,
29
+ scalesWithText = false
13
30
  }) => {
14
- const themeTokens = useThemeTokens('Icon', tokens, variant);
15
- const iconContent = /*#__PURE__*/React.createElement(IconSvg, {
16
- title: label,
17
- titleId: titleId,
18
- size: themeTokens.size,
31
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('Icon', tokens, variant);
32
+ const size = scalesWithText ? (0, _utils.scaleWithText)(themeTokens.size) : themeTokens.size;
33
+ const iconContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
34
+ title: accessibilityLabel,
35
+ size: size,
19
36
  color: themeTokens.color
20
37
  });
21
- return Platform.OS === 'web' ? /*#__PURE__*/React.createElement(View // eslint-disable-next-line react-native/no-inline-styles
38
+ return _Platform.default.OS === 'web' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default // eslint-disable-next-line react-native/no-inline-styles
22
39
  , {
23
40
  style: {
24
- // TODO: https://github.com/telus/universal-design-system/issues/487
25
- transition: 'transform 200ms',
26
- transform: [themeTokens.scale ? `scale(${themeTokens.scale})` : '', themeTokens.translateX ? `translateX(${themeTokens.translateX}px)` : '', themeTokens.translateY ? `translateY(${themeTokens.translateY}px)` : ''].filter(exists => exists).join(' ')
27
- }
28
- }, iconContent) : iconContent;
29
- }; // Auto-generated SVG icon components wrap Icon and pass through these props:
30
-
41
+ // TODO: systematise animations.
42
+ // https://github.com/telus/universal-design-system/issues/487
43
+ transition: 'transform 200ms, color 200ms',
44
+ transform: [themeTokens.scale ? "scale(".concat(themeTokens.scale, ")") : '', themeTokens.translateX ? "translateX(".concat(themeTokens.translateX, "px)") : '', themeTokens.translateY ? "translateY(".concat(themeTokens.translateY, "px)") : ''].filter(exists => exists).join(' ')
45
+ },
46
+ children: iconContent
47
+ }) : iconContent;
48
+ };
31
49
 
32
- export const iconComponentPropTypes = {
33
- variant: variantProp.propType,
34
- tokens: getTokensPropType('Icon'),
50
+ const iconComponentPropTypes = {
51
+ variant: _utils.variantProp.propType,
52
+ tokens: (0, _utils.getTokensPropType)('Icon'),
35
53
 
36
54
  /**
37
55
  * Descriptive label used in web SVG title tag for accessibility
38
56
  */
39
- label: PropTypes.string,
40
-
41
- /**
42
- * On web, this unique id is applied to <SVG> title and aria-labelledby attr
43
- */
44
- titleId: PropTypes.string
45
- }; // Auto-generated SVG icon components contain an inner SVG component taking these props:
46
-
47
- export const iconSvgPropTypes = {
48
- title: iconComponentPropTypes.label,
49
- titleId: iconComponentPropTypes.titleId,
50
-
51
- /**
52
- * The size of the SVG icon after resolving tokens
53
- */
54
- size: PropTypes.number,
57
+ accessibilityLabel: _propTypes.default.string,
55
58
 
56
59
  /**
57
- * The color of the SVG icon after resolving tokens
60
+ * controls whether the icon size should be proportionate to any accessibility-related font scaling.
58
61
  */
59
- color: PropTypes.string
62
+ scalesWithText: _propTypes.default.bool
60
63
  };
64
+ exports.iconComponentPropTypes = iconComponentPropTypes;
61
65
  Icon.propTypes = { ...iconComponentPropTypes,
62
66
 
63
67
  /**
64
- * Function component containing this icon's SVG or native equivalent.
65
- * UDS's SVGR config turns static SVG files into components that pass this to <Icon>.
68
+ * A valid UDS icon component imported from a UDS palette
69
+ * (e.g.) `import { MyIcon } from @telus-uds/palette-<brand>/build/web/icons`
66
70
  */
67
- IconSvg: PropTypes.func.isRequired
71
+ icon: _propTypes.default.elementType.isRequired
68
72
  };
69
- export default Icon;
73
+ var _default = Icon;
74
+ exports.default = _default;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _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 _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
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ /**
31
+ * Returns an icon and some text with a sized gap between them. This is a utility component
32
+ * intended for use when creating components, not intended for use in applications on its own.
33
+ *
34
+ * IconText does not wrap its children, so should be used either:
35
+ * - inline within a <Text> element
36
+ * - within a container with `flexDirection: 'row'`
37
+ */
38
+ const IconText = ({
39
+ space,
40
+ iconPosition = 'left',
41
+ icon: IconComponent,
42
+ iconProps,
43
+ children
44
+ }) => {
45
+ var _iconProps$tokens;
46
+
47
+ const iconContent = IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
48
+ icon: IconComponent,
49
+ scalesWithText: true,
50
+ ...iconProps
51
+ }); // Inline images on Android are always baseline-aligned which makes them look misaligned - offset it.
52
+ // See abandoned issue https://github.com/facebook/react-native/issues/6529
53
+
54
+ const size = iconProps === null || iconProps === void 0 ? void 0 : (_iconProps$tokens = iconProps.tokens) === null || _iconProps$tokens === void 0 ? void 0 : _iconProps$tokens.size;
55
+ const iconAdjusted = _Platform.default.OS === 'android' && iconContent && size ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
56
+ style: {
57
+ transform: [{
58
+ translateY: size * 0.2
59
+ }]
60
+ },
61
+ children: iconContent
62
+ }) : iconContent;
63
+ return (0, _StackView.getStackedContent)(iconPosition === 'left' ? [iconAdjusted, children] : [children, iconAdjusted], {
64
+ space,
65
+ direction: 'row'
66
+ });
67
+ };
68
+
69
+ IconText.propTypes = {
70
+ /**
71
+ * Amount of space to separate the text content and icon. Uses the themes's spacing scale
72
+ * (see useSpacingScale for more info).
73
+ */
74
+ space: _utils.spacingProps.types.spacingValue,
75
+
76
+ /**
77
+ * Whether the icon should be to the left of the content or the right of the content.
78
+ */
79
+ iconPosition: _propTypes.default.oneOf(['left', 'right']),
80
+
81
+ /**
82
+ * A valid UDS icon component imported from a UDS palette.
83
+ */
84
+ icon: _propTypes.default.func,
85
+
86
+ /**
87
+ * Props that will be passed to the icon component. By default the icon's `scalesWithText`
88
+ * prop will be set as "true" so that the icon continues to match the size of the text
89
+ * if users use accessibility settings to increase text size.
90
+ */
91
+ iconProps: _propTypes.default.exact(_Icon.iconComponentPropTypes),
92
+
93
+ /**
94
+ * Content to be rendered alongside the Icon component. Usually this should be a
95
+ * `<Typography>` component, or a component that renders `<Text>`.
96
+ */
97
+ children: _propTypes.default.node
98
+ };
99
+ var _default = IconText;
100
+ exports.default = _default;
package/lib/Icon/index.js CHANGED
@@ -1,3 +1,31 @@
1
- import Icon, { iconComponentPropTypes, iconSvgPropTypes } from './Icon';
2
- export default Icon;
3
- export { iconComponentPropTypes, iconSvgPropTypes };
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,135 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
13
+
14
+ var _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
+ const selectOuterStyle = ({
33
+ backgroundColor,
34
+ borderRadius,
35
+ outerBorderWidth,
36
+ outerBorderColor,
37
+ outerBorderGap,
38
+ shadow
39
+ }) => [{
40
+ backgroundColor,
41
+ ...(0, _ThemeProvider.applyShadowToken)(shadow),
42
+ ...(0, _ThemeProvider.applyOuterBorder)({
43
+ borderRadius,
44
+ outerBorderWidth,
45
+ outerBorderColor,
46
+ outerBorderGap
47
+ }),
48
+ ..._Platform.default.select({
49
+ web: {
50
+ outline: 'none',
51
+ display: 'inline-flex'
52
+ }
53
+ })
54
+ }, staticStyles.outer];
55
+
56
+ const selectInnerStyle = ({
57
+ borderColor,
58
+ borderWidth = 0,
59
+ borderRadius,
60
+ padding = 0
61
+ }) => ({
62
+ // Inner borders animate with the icon and should be treated like a themable feature of the icon
63
+ borderColor,
64
+ borderRadius,
65
+ borderWidth,
66
+ padding: Math.max(0, padding - borderWidth) // Stable size as border changes
67
+
68
+ });
69
+ /**
70
+ * A pressable themeless base component that handles pressable states and passes tokens
71
+ * based on these to an outer border and a base Card component. Not intended to be used in
72
+ * apps or sites directly: build themed components on top of this.
73
+ */
74
+
75
+
76
+ const IconButton = ({
77
+ tokens,
78
+ variant,
79
+ icon: IconComponent,
80
+ href,
81
+ hrefAttrs,
82
+ onPress,
83
+ accessibilityRole = href ? 'link' : 'button',
84
+ ...rest
85
+ }) => {
86
+ const a11y = _propTypes2.a11yProps.select({ ...rest,
87
+ accessibilityRole
88
+ });
89
+
90
+ const handlePress = _utils.linkProps.handleHref({
91
+ href,
92
+ onPress
93
+ });
94
+
95
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('IconButton', tokens, variant);
96
+
97
+ const getOuterStyle = pressableState => selectOuterStyle(getTokens((0, _utils.resolvePressableState)(pressableState)));
98
+
99
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
100
+ href: href,
101
+ onPress: handlePress,
102
+ hrefAttrs: hrefAttrs,
103
+ style: getOuterStyle,
104
+ ...a11y,
105
+ children: pressableState => {
106
+ const themeTokens = getTokens((0, _utils.resolvePressableState)(pressableState));
107
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
108
+ style: selectInnerStyle(themeTokens),
109
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
110
+ icon: IconComponent,
111
+ title: a11y.accessibilityLabel,
112
+ tokens: (0, _utils.selectTokens)('Icon', themeTokens, 'icon')
113
+ })
114
+ });
115
+ }
116
+ });
117
+ };
118
+
119
+ IconButton.propTypes = { ..._propTypes2.a11yProps.types,
120
+ variant: _utils.variantProp.propType,
121
+ tokens: (0, _utils.getTokensPropType)('IconButton'),
122
+ icon: _propTypes.default.elementType.isRequired,
123
+ href: _propTypes.default.string,
124
+ hrefAttrs: _propTypes.default.shape(_utils.hrefAttrsProp.types),
125
+ onPress: _propTypes.default.func
126
+ };
127
+
128
+ const staticStyles = _StyleSheet.default.create({
129
+ outer: {
130
+ alignSelf: 'flex-start'
131
+ }
132
+ });
133
+
134
+ var _default = IconButton;
135
+ 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;