@telus-uds/components-base 0.0.2-prerelease.1 → 0.0.2-prerelease.10

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