@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,238 @@
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 _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
15
+
16
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
17
+
18
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
19
+
20
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
21
+
22
+ var _ThemeProvider = require("../ThemeProvider");
23
+
24
+ var _utils = require("../utils");
25
+
26
+ var _Spacer = _interopRequireDefault(require("../Spacer"));
27
+
28
+ var _HorizontalScroll = require("../HorizontalScroll");
29
+
30
+ var _jsxRuntime = require("react/jsx-runtime");
31
+
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+
34
+ 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); }
35
+
36
+ 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; }
37
+
38
+ const {
39
+ itemPositionsPropType,
40
+ getItemPositionLayoutHandler
41
+ } = _HorizontalScroll.horizontalScrollUtils;
42
+
43
+ const selectHighlightBarStyles = ({
44
+ highlightColor,
45
+ highlightBarBorderRadius = 0,
46
+ highlightBarBorderWidth = 0,
47
+ highlightBarHeight = 0
48
+ }) => ({
49
+ backgroundColor: highlightColor,
50
+ borderColor: highlightColor,
51
+ height: highlightBarHeight + highlightBarBorderWidth * 2,
52
+ borderRadius: highlightBarBorderRadius,
53
+ borderWidth: highlightBarBorderWidth,
54
+ bottom: -1 * (highlightBarHeight + highlightBarBorderWidth),
55
+ left: -1 * highlightBarBorderWidth,
56
+ right: -1 * highlightBarBorderWidth,
57
+ zIndex: 1 + highlightBarBorderWidth
58
+ });
59
+
60
+ const selectHighlightTriangleStyles = ({
61
+ highlightColor,
62
+ highlightTriangleSize
63
+ }) => ({
64
+ container: {
65
+ bottom: 0 - highlightTriangleSize * 2
66
+ },
67
+ triangle: {
68
+ height: 0,
69
+ width: 0,
70
+ borderWidth: highlightTriangleSize,
71
+ borderTopColor: highlightColor,
72
+ borderBottomColor: 'transparent',
73
+ borderLeftColor: 'transparent',
74
+ borderRightColor: 'transparent'
75
+ }
76
+ });
77
+
78
+ const selectContainerStyles = ({
79
+ backgroundColor,
80
+ borderColor,
81
+ borderWidth = 0,
82
+ borderRadius,
83
+ paddingHorizontal = 0,
84
+ paddingVertical = 0
85
+ }) => ({
86
+ backgroundColor,
87
+ borderColor,
88
+ borderWidth,
89
+ borderRadius,
90
+ paddingHorizontal: paddingHorizontal - borderWidth,
91
+ paddingVertical: paddingVertical - borderWidth
92
+ });
93
+ /**
94
+ * Item within a Tabs component representing one tab of content. May be rendered as a link
95
+ * or as a "menuitem" button depending on whether 'href' is passed.
96
+ *
97
+ * This is rendered automatically by `Tabs` and isn't intended be used directly.
98
+ */
99
+
100
+
101
+ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
102
+ onPress,
103
+ href,
104
+ variant,
105
+ tokens,
106
+ selected,
107
+ itemPositions,
108
+ index,
109
+ children,
110
+ accessibilityRole = href ? 'link' : 'tab',
111
+ accessibilityState = _Platform.default.OS === 'web' && accessibilityRole === 'link' ? // Web links can't be aria-selected but can be aria-current
112
+ {
113
+ current: selected ? 'page' : false
114
+ } : {
115
+ selected
116
+ },
117
+ ...rest
118
+ }, ref) => {
119
+ const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('TabsItem', tokens, variant);
120
+
121
+ const resolveTokens = pressableState => (0, _utils.resolvePressableTokens)(getTokens, pressableState, {
122
+ selected
123
+ });
124
+
125
+ const getPressableStyle = pressableState => {
126
+ const {
127
+ maxWidth
128
+ } = resolveTokens(pressableState);
129
+ return [{
130
+ maxWidth
131
+ }, _Platform.default.OS === 'web' && {
132
+ outline: 'none'
133
+ }];
134
+ };
135
+
136
+ const handleLayout = getItemPositionLayoutHandler(itemPositions.positions, index); // On press, update the selection, call any press handler, and open any href in platform-appropriate way
137
+
138
+ const openHref = href && _utils.linkProps.handleHref({
139
+ href
140
+ });
141
+
142
+ const handlePress = onPress || openHref ? () => {
143
+ if (onPress) onPress();
144
+ if (openHref) openHref();
145
+ } : undefined;
146
+ const a11y = {
147
+ accessibilityRole,
148
+ accessibilityState,
149
+ ..._utils.a11yProps.select(rest)
150
+ };
151
+ (0, _react.useEffect)(() => {
152
+ // If this is selected while off-screen, scroll it into view
153
+ if (selected) {
154
+ const position = itemPositions.positions[index];
155
+ const scrollEnd = itemPositions.scrollOffset + itemPositions.containerWidth;
156
+
157
+ if ( // is off the right edge, or
158
+ scrollEnd && (position === null || position === void 0 ? void 0 : position.end) > scrollEnd || // is off the left edge
159
+ typeof (position === null || position === void 0 ? void 0 : position.start) === 'number' && position.start < itemPositions.scrollOffset) {
160
+ itemPositions.scrollTo(position.start);
161
+ }
162
+ } // itemPositions is a ref object so this should only re-run when `selected` (or `index`) change
163
+
164
+ }, [selected, index, itemPositions]);
165
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
166
+ ref: ref,
167
+ onPress: handlePress,
168
+ href: href,
169
+ style: getPressableStyle,
170
+ onLayout: handleLayout,
171
+ ...a11y,
172
+ children: pressableState => {
173
+ const {
174
+ space,
175
+ textAlign,
176
+ ...themeTokens
177
+ } = resolveTokens(pressableState);
178
+ const hasHighlightBar = Boolean(themeTokens.highlightBarHeight);
179
+ const highlightBarStyle = hasHighlightBar && selectHighlightBarStyles(themeTokens);
180
+ const hasHighlightTriangle = Boolean(themeTokens.highlightTriangleSize);
181
+ const highlightTriangleStyle = hasHighlightTriangle && selectHighlightTriangleStyles(themeTokens);
182
+ const containerStyles = selectContainerStyles(themeTokens);
183
+ const textStyles = (0, _ThemeProvider.applyTextStyles)({ ...(0, _utils.selectTokens)('Typography', themeTokens),
184
+ textAlign
185
+ });
186
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
187
+ style: staticStyles.container,
188
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
189
+ style: containerStyles,
190
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
191
+ style: textStyles,
192
+ children: children
193
+ })
194
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
195
+ space: space
196
+ }), hasHighlightBar && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
197
+ style: [staticStyles.absolute, highlightBarStyle]
198
+ }), hasHighlightTriangle && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
199
+ style: [staticStyles.absolute, highlightTriangleStyle.container],
200
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
201
+ style: highlightTriangleStyle.triangle
202
+ })
203
+ })]
204
+ });
205
+ }
206
+ });
207
+ });
208
+ TabsItem.displayName = 'TabsItem';
209
+ TabsItem.propTypes = { ..._utils.a11yProps.propTypes,
210
+ tokens: (0, _utils.getTokensPropType)('TabsItem'),
211
+ variant: _utils.variantProp.propType,
212
+ onPress: _propTypes.default.func,
213
+ href: _propTypes.default.string,
214
+ index: _propTypes.default.number,
215
+ selected: _propTypes.default.bool,
216
+ itemPositions: itemPositionsPropType,
217
+ children: _propTypes.default.string
218
+ };
219
+
220
+ const staticStyles = _StyleSheet.default.create({
221
+ center: {
222
+ alignItems: 'center'
223
+ },
224
+ absolute: {
225
+ position: 'absolute',
226
+ alignItems: 'center',
227
+ left: 0,
228
+ right: 0
229
+ },
230
+ container: {
231
+ flexGrow: 1,
232
+ alignItems: 'center',
233
+ justifyContent: 'center'
234
+ }
235
+ });
236
+
237
+ var _default = TabsItem;
238
+ 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 _Tabs = _interopRequireDefault(require("./Tabs"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _Tabs.default;
13
+ exports.default = _default;
package/lib/Tags/Tags.js CHANGED
@@ -1,13 +1,45 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Platform, Text, View } from 'react-native';
4
- import ButtonBase from '../Button/ButtonBase';
5
- import { StackWrap, getStackedContent } from '../StackView';
6
- import { useViewport } from '../ViewportProvider';
7
- import { useThemeTokens, useThemeTokensCallback } from '../ThemeProvider';
8
- import { a11yProps, pressProps, variantProp, getTokensPropType, selectTokens } from '../utils/propTypes';
9
- import { useMultipleInputValues } from '../utils/input';
10
- import { getPressHandlersWithArgs } from '../utils/pressability';
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 _airbnbPropTypes = _interopRequireDefault(require("airbnb-prop-types"));
13
+
14
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
15
+
16
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
17
+
18
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
19
+
20
+ var _ButtonBase = _interopRequireDefault(require("../Button/ButtonBase"));
21
+
22
+ var _Icon = _interopRequireDefault(require("../Icon"));
23
+
24
+ var _StackView = require("../StackView");
25
+
26
+ var _ViewportProvider = require("../ViewportProvider");
27
+
28
+ var _ThemeProvider = require("../ThemeProvider");
29
+
30
+ var _propTypes2 = require("../utils/propTypes");
31
+
32
+ var _input = require("../utils/input");
33
+
34
+ var _pressability = require("../utils/pressability");
35
+
36
+ var _jsxRuntime = require("react/jsx-runtime");
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+
40
+ 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); }
41
+
42
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
43
 
12
44
  const selectIconTextTokens = ({
13
45
  icon,
@@ -30,7 +62,7 @@ const selectIconTextTokens = ({
30
62
  borderRadius: iconBorderRadius,
31
63
  alignSelf: iconAlignSelf,
32
64
  padding: iconPadding,
33
- ...Platform.select({
65
+ ..._Platform.default.select({
34
66
  // TODO: https://github.com/telus/universal-design-system/issues/487
35
67
  web: {
36
68
  transition: 'color 200ms, background 200ms'
@@ -45,7 +77,7 @@ const selectIconTextTokens = ({
45
77
  }
46
78
  });
47
79
 
48
- const Tags = ({
80
+ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
49
81
  variant,
50
82
  tokens,
51
83
  items = [],
@@ -55,149 +87,165 @@ const Tags = ({
55
87
  onChange,
56
88
  readOnly = false,
57
89
  inactive = false,
58
- accessibilityRole = Platform.select({
90
+ accessibilityRole = _Platform.default.select({
59
91
  web: 'group',
60
92
  default: 'none'
61
93
  }),
62
94
  ...rest
63
- }) => {
64
- const viewport = useViewport();
65
- const themeTokens = useThemeTokens('Tags', tokens, variant, {
95
+ }, ref) => {
96
+ const viewport = (0, _ViewportProvider.useViewport)();
97
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('Tags', tokens, variant, {
66
98
  viewport
67
99
  });
68
- const stackTokens = selectTokens('StackView', themeTokens);
100
+ const stackTokens = (0, _propTypes2.selectTokens)('StackView', themeTokens);
69
101
  const {
70
102
  direction,
71
103
  space
72
104
  } = themeTokens;
73
- const getItemTokens = useThemeTokensCallback('TagsItem', tokens, variant);
105
+ const getItemTokens = (0, _ThemeProvider.useThemeTokensCallback)('TagsItem', tokens, variant);
74
106
 
75
- const getButtonTokens = buttonState => selectTokens('Button', getItemTokens(buttonState));
107
+ const getButtonTokens = buttonState => (0, _propTypes2.selectTokens)('Button', getItemTokens(buttonState));
76
108
 
77
109
  const {
78
110
  currentValues,
79
111
  toggleOneValue
80
- } = useMultipleInputValues({
112
+ } = (0, _input.useMultipleInputValues)({
81
113
  initialValues,
82
114
  values,
83
115
  maxValues,
84
116
  onChange,
85
117
  readOnly
86
118
  });
87
- const a11y = a11yProps.select({
119
+
120
+ const a11y = _propTypes2.a11yProps.select({
88
121
  accessibilityRole,
89
122
  ...rest
90
123
  });
124
+
91
125
  const itemA11yRole = 'checkbox';
92
- return /*#__PURE__*/React.createElement(StackWrap, Object.assign({}, a11y, {
126
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, {
127
+ ref: ref,
128
+ ...a11y,
93
129
  space: space,
94
130
  direction: direction,
95
- tokens: stackTokens
96
- }), items.map(({
97
- label,
98
- id = label,
99
- accessibilityLabel
100
- }, index) => {
101
- const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
102
-
103
- const pressHandlers = getPressHandlersWithArgs(rest, [{
104
- id,
131
+ tokens: stackTokens,
132
+ children: items.map(({
105
133
  label,
106
- currentValues
107
- }]);
108
-
109
- const handlePress = () => {
110
- if (pressHandlers.onPress) pressHandlers.onPress();
111
- toggleOneValue(id);
112
- };
113
-
114
- const itemA11y = {
115
- accessibilityState: {
116
- checked: isSelected
117
- },
118
- accessibilityRole: itemA11yRole,
134
+ id = label,
119
135
  accessibilityLabel,
120
- ...a11yProps.getPositionInSet(items.length, index)
121
- };
122
- return /*#__PURE__*/React.createElement(ButtonBase, Object.assign({
123
- key: id
124
- }, pressHandlers, {
125
- onPress: handlePress,
126
- tokens: getButtonTokens,
127
- selected: isSelected,
128
- inactive: inactive
129
- }, itemA11y), ({
130
- textStyles,
131
- ...buttonState
132
- }) => {
133
- // TODO: once Icon/IconButton designs are stable, see if this sort of styling around
134
- // an icon should go in Icon itself, or possibly via an IconText token set. Related issues:
135
- // - Icon: https://github.com/telus/universal-design-system/issues/327
136
- // - IconButton: https://github.com/telus/universal-design-system/issues/281
137
- // - Token sets: https://github.com/telus/universal-design-system/issues/782
138
- const itemTokens = getItemTokens(buttonState);
139
- const {
140
- iconTokens,
141
- iconPosition,
142
- iconSpace,
143
- iconWrapperStyle,
144
- icon: IconComponent
145
- } = selectIconTextTokens(itemTokens);
146
- const iconContent = IconComponent ? /*#__PURE__*/React.createElement(View, {
147
- style: iconWrapperStyle
148
- }, /*#__PURE__*/React.createElement(IconComponent, {
149
- tokens: iconTokens
150
- })) : null;
151
- const textContent = /*#__PURE__*/React.createElement(Text, {
152
- style: textStyles
153
- }, label);
154
- return getStackedContent(iconPosition === 'left' ? [iconContent, textContent] : [textContent, iconContent], {
155
- space: iconSpace,
156
- direction: 'row'
157
- });
158
- });
159
- }));
160
- };
136
+ ref: itemRef
137
+ }, index) => {
138
+ const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
139
+
140
+ const pressHandlers = (0, _pressability.getPressHandlersWithArgs)(rest, [{
141
+ id,
142
+ label,
143
+ currentValues
144
+ }]);
161
145
 
162
- Tags.propTypes = { ...a11yProps.propTypes,
163
- ...pressProps.propTypes,
164
- tokens: getTokensPropType('Tags'),
165
- variant: variantProp.propType,
146
+ const handlePress = event => {
147
+ if (pressHandlers.onPress) pressHandlers.onPress();
148
+ toggleOneValue(id, event);
149
+ };
150
+
151
+ const itemA11y = {
152
+ accessibilityState: {
153
+ checked: isSelected
154
+ },
155
+ accessibilityRole: itemA11yRole,
156
+ accessibilityLabel,
157
+ ..._propTypes2.a11yProps.getPositionInSet(items.length, index)
158
+ };
159
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
160
+ ref: itemRef,
161
+ ...pressHandlers,
162
+ onPress: handlePress,
163
+ tokens: getButtonTokens,
164
+ selected: isSelected,
165
+ inactive: inactive,
166
+ ...itemA11y,
167
+ children: ({
168
+ textStyles,
169
+ ...buttonState
170
+ }) => {
171
+ // TODO: once Icon/IconButton designs are stable, see if this sort of styling around
172
+ // an icon should go in Icon itself, or possibly via an IconText token set. Related issues:
173
+ // - Icon: https://github.com/telus/universal-design-system/issues/327
174
+ // - IconButton: https://github.com/telus/universal-design-system/issues/281
175
+ // - Token sets: https://github.com/telus/universal-design-system/issues/782
176
+ const itemTokens = getItemTokens(buttonState);
177
+ const {
178
+ iconTokens,
179
+ iconPosition,
180
+ iconSpace,
181
+ iconWrapperStyle,
182
+ icon: IconComponent
183
+ } = selectIconTextTokens(itemTokens);
184
+ const iconContent = IconComponent ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
185
+ style: iconWrapperStyle,
186
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
187
+ icon: IconComponent,
188
+ tokens: iconTokens
189
+ })
190
+ }) : null;
191
+ const textContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
192
+ style: textStyles,
193
+ children: label
194
+ });
195
+ return (0, _StackView.getStackedContent)(iconPosition === 'left' ? [iconContent, textContent] : [textContent, iconContent], {
196
+ space: iconSpace,
197
+ direction: 'row'
198
+ });
199
+ }
200
+ }, id);
201
+ })
202
+ });
203
+ });
204
+ Tags.displayName = 'Tags';
205
+ Tags.propTypes = { ..._propTypes2.a11yProps.propTypes,
206
+ ..._propTypes2.pressProps.propTypes,
207
+ tokens: (0, _propTypes2.getTokensPropType)('Tags'),
208
+ variant: _propTypes2.variantProp.propType,
166
209
 
167
210
  /**
168
211
  * If provided, sets a maximum number of items a user may select at once.
169
212
  */
170
- maxValues: PropTypes.number,
213
+ maxValues: _propTypes.default.number,
171
214
 
172
215
  /**
173
216
  * The options a user may select
174
217
  */
175
- items: PropTypes.arrayOf(PropTypes.shape({
218
+ items: _propTypes.default.arrayOf(_propTypes.default.shape({
176
219
  /**
177
220
  * The text displayed to the user in the button, describing this option,
178
221
  * passed to the button as its child.
179
222
  */
180
- label: PropTypes.string.isRequired,
223
+ label: _propTypes.default.string.isRequired,
181
224
 
182
225
  /**
183
226
  * An optional accessibility label may be passed to ButtonGroup Buttons
184
227
  * which is applied as normal for a React Native accessibilityLabel prop.
185
228
  */
186
- accessibilityLabel: PropTypes.string,
229
+ accessibilityLabel: _propTypes.default.string,
187
230
 
188
231
  /**
189
232
  * An optional unique string may be provided to identify this option,
190
233
  * which will be used in code and passed to any onChange function.
191
234
  * If not provided, the label is used.
192
235
  */
193
- id: PropTypes.string
236
+ id: _propTypes.default.string,
237
+
238
+ /**
239
+ * An optional ref for one individual Tag button in the tags
240
+ */
241
+ ref: _airbnbPropTypes.default.ref()
194
242
  })),
195
243
 
196
244
  /**
197
245
  * If provided, this function is called when the current selection is changed
198
246
  * and is passed an array of the `id`s of all currently selected `items`.
199
247
  */
200
- onChange: PropTypes.func,
248
+ onChange: _propTypes.default.func,
201
249
 
202
250
  /**
203
251
  * If the selected item(s) in the button group are to be controlled externally by
@@ -205,13 +253,14 @@ Tags.propTypes = { ...a11yProps.propTypes,
205
253
  * Passing an array for "values" makes the ButtonGroup a "controlled" component that
206
254
  * expects its state to be handled via `onChange` and so doesn't handle it itself.
207
255
  */
208
- values: PropTypes.arrayOf(PropTypes.string),
256
+ values: _propTypes.default.arrayOf(_propTypes.default.string),
209
257
 
210
258
  /**
211
259
  * If `values` is not passed, making the ButtonGroup an "uncontrolled" component
212
260
  * managing its own selected state, a default set of selections may be provided.
213
261
  * Changing the `initialValues` does not change the user's selections.
214
262
  */
215
- initialValues: PropTypes.arrayOf(PropTypes.string)
263
+ initialValues: _propTypes.default.arrayOf(_propTypes.default.string)
216
264
  };
217
- export default Tags;
265
+ var _default = Tags;
266
+ exports.default = _default;
package/lib/Tags/index.js CHANGED
@@ -1,2 +1,13 @@
1
- import Tags from './Tags';
2
- export default Tags;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _Tags = _interopRequireDefault(require("./Tags"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _Tags.default;
13
+ exports.default = _default;