@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
package/lib/List/List.js CHANGED
@@ -1,31 +1,55 @@
1
- import React, { cloneElement, Children } from 'react';
2
- import { View, Platform } from 'react-native';
3
- import PropTypes from 'prop-types';
4
- import { getTokensPropType, variantProp, componentPropType } from '../utils';
5
- import { a11yProps } from '../utils/propTypes';
6
- import ListItem from './ListItem';
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
+
7
30
  /**
8
31
  * A Unordered List component has a child a ListItem that
9
32
  * allows icon, dividers and customized typography
10
33
  */
11
-
12
- const List = ({
34
+ const List = /*#__PURE__*/(0, _react.forwardRef)(({
13
35
  children,
14
36
  showDivider,
15
37
  tokens,
16
38
  variant,
17
39
  ...rest
18
- }) => {
19
- const accessibilityRole = Platform.select({
40
+ }, ref) => {
41
+ const accessibilityRole = _Platform.default.select({
20
42
  web: 'list',
21
43
  default: 'none'
22
44
  });
23
- const a11y = a11yProps.select(rest);
24
- const items = Children.map(children, (child, index) => {
25
- if (child.type.name === ListItem.name) {
26
- return /*#__PURE__*/cloneElement(child, {
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, {
27
51
  showDivider,
28
- isLastItem: index + 1 === Children.count(children),
52
+ isLastItem: index + 1 === _react.Children.count(children),
29
53
  tokens,
30
54
  variant
31
55
  });
@@ -33,20 +57,25 @@ const List = ({
33
57
 
34
58
  return child;
35
59
  });
36
- return /*#__PURE__*/React.createElement(View, Object.assign({
37
- accessibilityRole: accessibilityRole
38
- }, a11y), items);
39
- };
40
60
 
41
- List.Item = ListItem;
42
- List.propTypes = { ...a11yProps.types,
43
- tokens: getTokensPropType('List'),
44
- variant: variantProp.propType,
45
- children: componentPropType('ListItem'),
61
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
62
+ ref: ref,
63
+ accessibilityRole: accessibilityRole,
64
+ ...a11y,
65
+ children: items
66
+ });
67
+ });
68
+ List.displayName = 'List';
69
+ List.Item = _ListItem.default;
70
+ List.propTypes = { ..._propTypes2.a11yProps.types,
71
+ tokens: (0, _utils.getTokensPropType)('List'),
72
+ variant: _utils.variantProp.propType,
73
+ children: (0, _utils.componentPropType)('ListItem'),
46
74
 
47
75
  /**
48
76
  * In case it is not the last item allow display divider
49
77
  */
50
- showDivider: PropTypes.bool
78
+ showDivider: _propTypes.default.bool
51
79
  };
52
- export default List;
80
+ var _default = List;
81
+ exports.default = _default;
@@ -1,8 +1,33 @@
1
- import React from 'react';
2
- import { View, Platform, Text, StyleSheet } from 'react-native';
3
- import PropTypes from 'prop-types';
4
- import { useThemeTokens, applyTextStyles } from '../ThemeProvider';
5
- import { getTokensPropType, variantProp } from '../utils';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _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 _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
15
+
16
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
17
+
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
20
+ var _ThemeProvider = require("../ThemeProvider");
21
+
22
+ var _utils = require("../utils");
23
+
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ 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); }
29
+
30
+ 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; }
6
31
 
7
32
  const selectBulletStyles = ({
8
33
  itemBulletWidth,
@@ -43,7 +68,7 @@ const selectItemStyles = ({
43
68
  itemFontSize,
44
69
  itemLineHeight,
45
70
  itemFontName
46
- }) => applyTextStyles({
71
+ }) => (0, _ThemeProvider.applyTextStyles)({
47
72
  fontWeight: itemFontWeight,
48
73
  fontSize: itemFontSize,
49
74
  lineHeight: itemLineHeight,
@@ -71,7 +96,7 @@ const selectDividerStyles = ({
71
96
  */
72
97
 
73
98
 
74
- const ListItem = ({
99
+ const ListItem = /*#__PURE__*/(0, _react.forwardRef)(({
75
100
  tokens,
76
101
  variant,
77
102
  icon,
@@ -80,8 +105,8 @@ const ListItem = ({
80
105
  showDivider,
81
106
  children,
82
107
  isLastItem
83
- }) => {
84
- const themeTokens = useThemeTokens('List', tokens, variant);
108
+ }, ref) => {
109
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('List', tokens, variant);
85
110
  const itemStyles = selectItemStyles(themeTokens);
86
111
  const itemBlockStyles = selectItemBlockStyles(themeTokens);
87
112
  const dividerStyles = selectDividerStyles(themeTokens);
@@ -89,7 +114,8 @@ const ListItem = ({
89
114
  const itemBulletStyles = selectBulletStyles(themeTokens);
90
115
  const iconTokens = selectItemIconTokens(themeTokens);
91
116
  const sideItemContainerStyles = selectSideItemContainerStyles(themeTokens);
92
- const accessibilityRole = Platform.select({
117
+
118
+ const accessibilityRole = _Platform.default.select({
93
119
  web: 'listitem',
94
120
  default: 'item'
95
121
  });
@@ -104,12 +130,16 @@ const ListItem = ({
104
130
 
105
131
  const renderItem = () => {
106
132
  if (areChildrenStrings()) {
107
- return /*#__PURE__*/React.createElement(Text, {
108
- style: itemStyles
109
- }, children);
133
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
134
+ style: itemStyles,
135
+ children: children
136
+ });
110
137
  }
111
138
 
112
- return /*#__PURE__*/React.createElement(View, null, children);
139
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
140
+ style: staticStyles.wrap,
141
+ children: children
142
+ });
113
143
  };
114
144
  /**
115
145
  * Function responsible returning styling, in case the item is the last shouldn't
@@ -137,71 +167,79 @@ const ListItem = ({
137
167
 
138
168
 
139
169
  const renderMarker = () => {
140
- const IconComponent = icon || /*#__PURE__*/React.createElement(React.Fragment, null);
170
+ const IconComponent = icon || /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
141
171
 
142
172
  if (icon) {
143
- return /*#__PURE__*/React.createElement(View, {
144
- style: [sideItemContainerStyles, areChildrenStrings() ? staticStyles.centeredIcons : undefined]
145
- }, /*#__PURE__*/React.createElement(IconComponent, {
146
- tokens: { ...iconTokens,
173
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
174
+ style: [sideItemContainerStyles, areChildrenStrings() ? staticStyles.centeredIcons : undefined],
175
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
147
176
  size: iconSize || iconTokens.size,
148
177
  color: iconColor || iconTokens.color
149
- }
150
- }));
178
+ })
179
+ });
151
180
  }
152
181
 
153
- return /*#__PURE__*/React.createElement(View, {
154
- style: [sideItemContainerStyles, itemBulletContainerStyles]
155
- }, /*#__PURE__*/React.createElement(View, {
156
- style: itemBulletStyles,
157
- testID: "unordered-item-bullet"
158
- }));
182
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
183
+ style: [sideItemContainerStyles, itemBulletContainerStyles],
184
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
185
+ style: itemBulletStyles,
186
+ testID: "unordered-item-bullet"
187
+ })
188
+ });
159
189
  };
160
190
 
161
- return /*#__PURE__*/React.createElement(View, {
191
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
192
+ ref: ref,
162
193
  style: [staticStyles.itemContainer, getContainerStyle()],
163
- accessibilityRole: accessibilityRole
164
- }, renderMarker(), renderItem());
165
- };
194
+ accessibilityRole: accessibilityRole,
195
+ children: [renderMarker(), renderItem()]
196
+ });
197
+ });
198
+ ListItem.displayName = 'ListItem';
166
199
 
167
- const staticStyles = StyleSheet.create({
200
+ const staticStyles = _StyleSheet.default.create({
168
201
  itemContainer: {
169
202
  flexDirection: 'row'
170
203
  },
171
204
  centeredIcons: {
172
205
  justifyContent: 'center'
206
+ },
207
+ wrap: {
208
+ flex: 1
173
209
  }
174
210
  });
211
+
175
212
  ListItem.propTypes = {
176
- tokens: getTokensPropType('List'),
177
- variant: variantProp.propType,
178
- children: PropTypes.node.isRequired,
213
+ tokens: (0, _utils.getTokensPropType)('List'),
214
+ variant: _utils.variantProp.propType,
215
+ children: _propTypes.default.node.isRequired,
179
216
 
180
217
  /**
181
218
  * Renders side item icon
182
219
  */
183
- icon: PropTypes.func,
220
+ icon: _propTypes.default.func,
184
221
 
185
222
  /**
186
223
  * Will set display icon color
187
224
  */
188
- iconColor: PropTypes.string,
225
+ iconColor: _propTypes.default.string,
189
226
 
190
227
  /**
191
228
  * Allow the user define the icon size if not defined the theme's file
192
229
  */
193
- iconSize: PropTypes.number,
230
+ iconSize: _propTypes.default.number,
194
231
 
195
232
  /**
196
233
  * @ignore
197
234
  * Defined by parent if it's last item on the list
198
235
  */
199
- isLastItem: PropTypes.bool,
236
+ isLastItem: _propTypes.default.bool,
200
237
 
201
238
  /**
202
239
  * @ignore
203
240
  * In case it is not the last item allow display divider
204
241
  */
205
- showDivider: PropTypes.bool
242
+ showDivider: _propTypes.default.bool
206
243
  };
207
- export default ListItem;
244
+ var _default = ListItem;
245
+ exports.default = _default;
package/lib/List/index.js CHANGED
@@ -1,2 +1,13 @@
1
- import List from './List';
2
- export default List;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _List = _interopRequireDefault(require("./List"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _List.default;
13
+ exports.default = _default;
@@ -0,0 +1,231 @@
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 _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
11
+
12
+ var _TouchableWithoutFeedback = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TouchableWithoutFeedback"));
13
+
14
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
15
+
16
+ var _Modal = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Modal"));
17
+
18
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _ThemeProvider = require("../ThemeProvider");
23
+
24
+ var _utils = require("../utils");
25
+
26
+ var _ViewportProvider = require("../ViewportProvider");
27
+
28
+ var _ButtonBase = _interopRequireDefault(require("../Button/ButtonBase"));
29
+
30
+ var _dictionary = _interopRequireDefault(require("./dictionary"));
31
+
32
+ var _jsxRuntime = require("react/jsx-runtime");
33
+
34
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
+
36
+ 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); }
37
+
38
+ 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; }
39
+
40
+ const selectContainerStyles = ({
41
+ containerPaddingLeft,
42
+ containerPaddingRight,
43
+ containerPaddingTop,
44
+ containerPaddingBottom,
45
+ maxWidth,
46
+ height
47
+ }) => ({
48
+ height,
49
+ maxWidth,
50
+ paddingLeft: containerPaddingLeft,
51
+ paddingRight: containerPaddingRight,
52
+ paddingTop: containerPaddingTop,
53
+ paddingBottom: containerPaddingBottom
54
+ });
55
+
56
+ const selectModalStyles = ({
57
+ backgroundColor,
58
+ borderRadius,
59
+ height,
60
+ paddingLeft,
61
+ paddingRight,
62
+ paddingTop,
63
+ paddingBottom,
64
+ shadow
65
+ }) => ({
66
+ backgroundColor,
67
+ borderRadius,
68
+ height,
69
+ paddingLeft,
70
+ paddingRight,
71
+ paddingTop,
72
+ paddingBottom,
73
+ ...(0, _ThemeProvider.applyShadowToken)(shadow)
74
+ });
75
+
76
+ const selectBackdropStyles = ({
77
+ backdropColor,
78
+ backdropOpacity
79
+ }) => ({
80
+ backgroundColor: backdropColor,
81
+ opacity: backdropOpacity
82
+ });
83
+
84
+ const selectCloseButtonContainerStyles = ({
85
+ paddingRight,
86
+ paddingTop
87
+ }) => ({
88
+ paddingRight,
89
+ paddingTop
90
+ });
91
+
92
+ const selectCloseIconProps = ({
93
+ closeIconSize,
94
+ closeIconColor
95
+ }) => ({
96
+ size: closeIconSize,
97
+ color: closeIconColor
98
+ });
99
+ /**
100
+ * A modal window is a secondary window that opens on top of the main one.
101
+ * Users have to interact with it before they can carry out their task and return to the main window.
102
+ * Use to reveal additional information to a user after they have performed an explicit interaction.
103
+ * They are a strongly discouraged pattern; it's preferred to have all relevant information within a page,
104
+ * and irrelevant information either linked externally or omitted.
105
+ *
106
+ * - Must only appear after a customer interaction, not on page load or any other circumstance
107
+ * - Open a modal based on explicit customer action e.g. clicking on a button/link/form field
108
+ * - Only one modal should be "current" at any time
109
+ * - Read [WebAIM's documentation](https://www.w3.org/TR/wai-aria-practices/examples/dialog-modal/dialog.html) to create accessible modals
110
+ * - Don’t use modals to reinforce or repeat information already available in the parent page or view
111
+ * - Don’t use modals consecutively
112
+ */
113
+
114
+
115
+ const Modal = /*#__PURE__*/(0, _react.forwardRef)(({
116
+ children,
117
+ isOpen,
118
+ onClose,
119
+ maxWidth,
120
+ tokens,
121
+ variant,
122
+ copy
123
+ }, ref) => {
124
+ const viewport = (0, _ViewportProvider.useViewport)();
125
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('Modal', tokens, variant, {
126
+ viewport,
127
+ maxWidth
128
+ });
129
+ const {
130
+ closeIcon: CloseIconComponent
131
+ } = themeTokens;
132
+ const getCopy = (0, _utils.useCopy)({
133
+ dictionary: _dictionary.default,
134
+ copy
135
+ });
136
+ const closeLabel = getCopy('closeButton');
137
+
138
+ const handleClose = () => {
139
+ if (typeof onClose === 'function') onClose();
140
+ };
141
+
142
+ const handleKeyUp = event => {
143
+ if (event.key === 'Escape') onClose();
144
+ };
145
+
146
+ if (!isOpen) {
147
+ return null;
148
+ } // TODO: replace the close button with IconButton when implemented (https://github.com/telus/universal-design-system/issues/281)
149
+
150
+
151
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Modal.default, {
152
+ transparent: true,
153
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
154
+ style: [staticStyles.positioningContainer],
155
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
156
+ style: [staticStyles.sizingContainer, selectContainerStyles(themeTokens)],
157
+ pointerEvents: "box-none" // don't capture backdrop press events
158
+ ,
159
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
160
+ ref: ref,
161
+ style: [staticStyles.modal, selectModalStyles(themeTokens)],
162
+ onKeyUp: handleKeyUp,
163
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
164
+ style: [staticStyles.closeButtonContainer, selectCloseButtonContainerStyles(themeTokens)],
165
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
166
+ onPress: handleClose,
167
+ accessibilityRole: "button",
168
+ accessibilityLabel: closeLabel,
169
+ children: // TODO: add close button interactive states after IconButton is done
170
+ () => /*#__PURE__*/(0, _jsxRuntime.jsx)(CloseIconComponent, { ...selectCloseIconProps(themeTokens)
171
+ })
172
+ })
173
+ }), children]
174
+ })
175
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TouchableWithoutFeedback.default, {
176
+ onPress: handleClose,
177
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
178
+ style: [staticStyles.backdrop, selectBackdropStyles(themeTokens)]
179
+ })
180
+ })]
181
+ })
182
+ });
183
+ });
184
+ Modal.displayName = 'Modal';
185
+ Modal.propTypes = {
186
+ children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)]),
187
+ copy: _utils.copyPropTypes,
188
+ isOpen: _propTypes.default.bool,
189
+ onClose: _propTypes.default.func,
190
+ maxWidth: _propTypes.default.bool,
191
+ tokens: (0, _utils.getTokensPropType)('Modal'),
192
+ variant: _utils.variantProp.propType
193
+ };
194
+ var _default = Modal;
195
+ exports.default = _default;
196
+
197
+ const staticStyles = _StyleSheet.default.create({
198
+ backdrop: {
199
+ position: 'absolute',
200
+ top: 0,
201
+ left: 0,
202
+ right: 0,
203
+ bottom: 0,
204
+ zIndex: -1,
205
+ ..._Platform.default.select({
206
+ web: {
207
+ cursor: 'pointer'
208
+ }
209
+ })
210
+ },
211
+ positioningContainer: {
212
+ flexBasis: '100%',
213
+ alignItems: 'center',
214
+ justifyContent: 'center'
215
+ },
216
+ sizingContainer: {
217
+ maxHeight: '100%',
218
+ // so that the container can expand up to the full viewport height
219
+ width: '100%' // ensure that the modal actually expands to the set maxWidth
220
+
221
+ },
222
+ modal: {
223
+ maxHeight: '100%' // so that the modal can expand vertically up to the sizing container's height (exclusive of its vertical padding)
224
+
225
+ },
226
+ closeButtonContainer: {
227
+ position: 'absolute',
228
+ top: 0,
229
+ right: 0
230
+ }
231
+ });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ en: {
9
+ // English text from TDS Community `Modal`
10
+ closeButton: 'Close'
11
+ },
12
+ fr: {
13
+ closeButton: 'Fermer'
14
+ }
15
+ };
16
+ 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 _Modal = _interopRequireDefault(require("./Modal"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _Modal.default;
13
+ exports.default = _default;