@telus-uds/components-base 0.0.2-prerelease.6 → 1.0.0

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 (458) hide show
  1. package/.eslintrc.js +9 -0
  2. package/.ultra.cache.json +1 -1
  3. package/CHANGELOG.md +85 -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 +851 -57
  9. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
  10. package/__tests__/Button/ButtonBase.test.jsx +2 -31
  11. package/__tests__/Button/ButtonGroup.test.jsx +6 -7
  12. package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
  13. package/__tests__/Checkbox/CheckboxGroup.test.jsx +246 -0
  14. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
  15. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
  16. package/__tests__/Icon/Icon.test.jsx +3 -3
  17. package/__tests__/IconButton/IconButton.test.jsx +52 -0
  18. package/__tests__/InputSupports/InputSupports.test.jsx +50 -0
  19. package/__tests__/Link/LinkBase.test.jsx +0 -14
  20. package/__tests__/List/List.test.jsx +60 -0
  21. package/__tests__/Modal/Modal.test.jsx +47 -0
  22. package/__tests__/Notification/Notification.test.jsx +20 -0
  23. package/__tests__/Pagination/Pagination.test.jsx +2 -2
  24. package/__tests__/Progress/Progress.test.jsx +79 -0
  25. package/__tests__/Radio/Radio.test.jsx +87 -0
  26. package/__tests__/Radio/RadioGroup.test.jsx +220 -0
  27. package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
  28. package/__tests__/RadioCard/RadioCardGroup.test.jsx +246 -0
  29. package/__tests__/Search/Search.test.jsx +73 -0
  30. package/__tests__/Select/Select.test.jsx +94 -0
  31. package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
  32. package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
  33. package/__tests__/Tabs/Tabs.test.jsx +40 -0
  34. package/__tests__/Tags/Tags.test.jsx +327 -0
  35. package/__tests__/TextInput/TextArea.test.jsx +35 -0
  36. package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +29 -50
  37. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
  38. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +9 -5
  39. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
  40. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
  41. package/__tests__/utils/children.test.jsx +128 -0
  42. package/__tests__/utils/input.test.js +59 -1
  43. package/__tests__/utils/semantics.test.jsx +43 -0
  44. package/__tests__/utils/useCopy.test.js +14 -3
  45. package/babel.config.js +20 -0
  46. package/jest.config.js +8 -3
  47. package/lib/A11yInfoProvider/index.js +54 -26
  48. package/lib/A11yText/index.js +45 -17
  49. package/lib/ActivityIndicator/Spinner.js +81 -0
  50. package/lib/ActivityIndicator/Spinner.native.js +129 -91
  51. package/lib/ActivityIndicator/index.js +28 -12
  52. package/lib/ActivityIndicator/shared.js +27 -12
  53. package/lib/BaseProvider/index.js +34 -11
  54. package/lib/Box/Box.js +152 -35
  55. package/lib/Box/index.js +13 -2
  56. package/lib/Button/Button.js +41 -12
  57. package/lib/Button/ButtonBase.js +125 -97
  58. package/lib/Button/ButtonGroup.js +112 -89
  59. package/lib/Button/ButtonLink.js +48 -17
  60. package/lib/Button/index.js +31 -4
  61. package/lib/Button/propTypes.js +32 -9
  62. package/lib/Card/Card.js +38 -41
  63. package/lib/Card/CardBase.js +85 -0
  64. package/lib/Card/PressableCardBase.js +141 -0
  65. package/lib/Card/index.js +40 -2
  66. package/lib/Checkbox/Checkbox.js +355 -0
  67. package/lib/Checkbox/CheckboxGroup.js +241 -0
  68. package/lib/Checkbox/CheckboxInput.js +74 -0
  69. package/lib/Checkbox/CheckboxInput.native.js +14 -0
  70. package/lib/Checkbox/index.js +21 -0
  71. package/lib/Divider/Divider.js +59 -28
  72. package/lib/Divider/index.js +13 -2
  73. package/lib/ExpandCollapse/Accordion.js +26 -7
  74. package/lib/ExpandCollapse/Control.js +60 -31
  75. package/lib/ExpandCollapse/ExpandCollapse.js +50 -28
  76. package/lib/ExpandCollapse/Panel.js +83 -44
  77. package/lib/ExpandCollapse/index.js +25 -7
  78. package/lib/Feedback/Feedback.js +90 -39
  79. package/lib/Feedback/index.js +13 -2
  80. package/lib/Fieldset/Fieldset.js +165 -0
  81. package/lib/Fieldset/FieldsetContainer.js +46 -0
  82. package/lib/Fieldset/FieldsetContainer.native.js +38 -0
  83. package/lib/Fieldset/Legend.js +38 -0
  84. package/lib/Fieldset/Legend.native.js +48 -0
  85. package/lib/Fieldset/cssReset.js +21 -0
  86. package/lib/Fieldset/index.js +13 -0
  87. package/lib/FlexGrid/Col/Col.js +73 -41
  88. package/lib/FlexGrid/Col/index.js +13 -2
  89. package/lib/FlexGrid/FlexGrid.js +99 -49
  90. package/lib/FlexGrid/Row/Row.js +58 -30
  91. package/lib/FlexGrid/Row/index.js +13 -2
  92. package/lib/FlexGrid/helpers/index.js +9 -1
  93. package/lib/FlexGrid/index.js +13 -2
  94. package/lib/FlexGrid/providers/GutterContext.js +15 -3
  95. package/lib/HorizontalScroll/HorizontalScroll.js +200 -0
  96. package/lib/HorizontalScroll/HorizontalScrollButton.js +127 -0
  97. package/lib/HorizontalScroll/ScrollViewEnd.js +66 -0
  98. package/lib/HorizontalScroll/ScrollViewEnd.native.js +41 -0
  99. package/lib/HorizontalScroll/dictionary.js +18 -0
  100. package/lib/HorizontalScroll/index.js +35 -0
  101. package/lib/HorizontalScroll/itemPositions.js +128 -0
  102. package/lib/Icon/Icon.js +62 -50
  103. package/lib/Icon/IconText.js +101 -0
  104. package/lib/Icon/index.js +31 -3
  105. package/lib/IconButton/IconButton.js +140 -0
  106. package/lib/IconButton/index.js +13 -0
  107. package/lib/InputLabel/InputLabel.js +102 -40
  108. package/lib/InputLabel/LabelContent.js +41 -0
  109. package/lib/InputLabel/LabelContent.native.js +32 -6
  110. package/lib/InputLabel/index.js +13 -2
  111. package/lib/InputSupports/InputSupports.js +109 -0
  112. package/lib/InputSupports/index.js +13 -0
  113. package/lib/InputSupports/propTypes.js +66 -0
  114. package/lib/InputSupports/useInputSupports.js +41 -0
  115. package/lib/Link/ChevronLink.js +58 -31
  116. package/lib/Link/InlinePressable.js +56 -0
  117. package/lib/Link/InlinePressable.native.js +102 -0
  118. package/lib/Link/Link.js +39 -15
  119. package/lib/Link/LinkBase.js +126 -150
  120. package/lib/Link/TextButton.js +53 -18
  121. package/lib/Link/index.js +39 -4
  122. package/lib/List/List.js +81 -0
  123. package/lib/List/ListItem.js +245 -0
  124. package/lib/List/index.js +13 -0
  125. package/lib/Modal/Modal.js +231 -0
  126. package/lib/Modal/dictionary.js +16 -0
  127. package/lib/Modal/index.js +13 -0
  128. package/lib/Notification/Notification.js +216 -0
  129. package/lib/Notification/dictionary.js +15 -0
  130. package/lib/Notification/index.js +13 -0
  131. package/lib/Pagination/PageButton.js +58 -48
  132. package/lib/Pagination/Pagination.js +78 -43
  133. package/lib/Pagination/SideButton.js +79 -58
  134. package/lib/Pagination/dictionary.js +9 -2
  135. package/lib/Pagination/index.js +13 -2
  136. package/lib/Pagination/usePagination.js +12 -2
  137. package/lib/Progress/Progress.js +104 -0
  138. package/lib/Progress/ProgressBar.js +157 -0
  139. package/lib/Progress/ProgressBarBackground.js +61 -0
  140. package/lib/Progress/index.js +16 -0
  141. package/lib/Radio/Radio.js +293 -0
  142. package/lib/Radio/RadioButton.js +152 -0
  143. package/lib/Radio/RadioGroup.js +244 -0
  144. package/lib/Radio/RadioInput.js +76 -0
  145. package/lib/Radio/RadioInput.native.js +14 -0
  146. package/lib/Radio/index.js +21 -0
  147. package/lib/RadioCard/RadioCard.js +244 -0
  148. package/lib/RadioCard/RadioCardGroup.js +252 -0
  149. package/lib/RadioCard/index.js +21 -0
  150. package/lib/Search/Search.js +254 -0
  151. package/lib/Search/dictionary.js +19 -0
  152. package/lib/Search/index.js +13 -0
  153. package/lib/Select/Group.js +33 -0
  154. package/lib/Select/Group.native.js +25 -0
  155. package/lib/Select/Item.js +29 -0
  156. package/lib/Select/Item.native.js +19 -0
  157. package/lib/Select/Picker.js +84 -0
  158. package/lib/Select/Picker.native.js +130 -0
  159. package/lib/Select/Select.js +342 -0
  160. package/lib/Select/index.js +19 -0
  161. package/lib/SideNav/Item.js +63 -37
  162. package/lib/SideNav/ItemContent.js +41 -15
  163. package/lib/SideNav/ItemsGroup.js +55 -31
  164. package/lib/SideNav/SideNav.js +100 -73
  165. package/lib/SideNav/index.js +15 -1
  166. package/lib/Skeleton/Skeleton.js +137 -0
  167. package/lib/Skeleton/index.js +13 -0
  168. package/lib/Skeleton/skeleton.constant.js +12 -0
  169. package/lib/Skeleton/skeletonWebAnimation.js +27 -0
  170. package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
  171. package/lib/Spacer/Spacer.js +49 -18
  172. package/lib/Spacer/index.js +13 -2
  173. package/lib/StackView/StackView.js +71 -31
  174. package/lib/StackView/StackWrap.js +43 -13
  175. package/lib/StackView/StackWrap.native.js +13 -2
  176. package/lib/StackView/StackWrapBox.js +76 -29
  177. package/lib/StackView/StackWrapGap.js +56 -26
  178. package/lib/StackView/common.js +23 -6
  179. package/lib/StackView/getStackedContent.js +47 -17
  180. package/lib/StackView/index.js +29 -5
  181. package/lib/StepTracker/Step.js +245 -0
  182. package/lib/StepTracker/StepTracker.js +202 -0
  183. package/lib/StepTracker/dictionary.js +17 -0
  184. package/lib/StepTracker/index.js +13 -0
  185. package/lib/Tabs/Tabs.js +124 -0
  186. package/lib/Tabs/TabsItem.js +238 -0
  187. package/lib/Tabs/index.js +13 -0
  188. package/lib/Tags/Tags.js +266 -0
  189. package/lib/Tags/index.js +13 -0
  190. package/lib/TextInput/TextArea.js +111 -0
  191. package/lib/TextInput/TextInput.js +50 -304
  192. package/lib/TextInput/TextInputBase.js +256 -0
  193. package/lib/TextInput/index.js +23 -2
  194. package/lib/TextInput/propTypes.js +42 -0
  195. package/lib/ThemeProvider/ThemeProvider.js +46 -18
  196. package/lib/ThemeProvider/index.js +61 -6
  197. package/lib/ThemeProvider/useSetTheme.js +19 -5
  198. package/lib/ThemeProvider/useTheme.js +13 -4
  199. package/lib/ThemeProvider/useThemeTokens.js +86 -19
  200. package/lib/ThemeProvider/utils/index.js +31 -2
  201. package/lib/ThemeProvider/utils/styles.js +50 -14
  202. package/lib/ThemeProvider/utils/theme-tokens.js +121 -12
  203. package/lib/ToggleSwitch/ToggleSwitch.js +86 -57
  204. package/lib/ToggleSwitch/index.js +13 -2
  205. package/lib/Tooltip/{Backdrop.web.js → Backdrop.js} +20 -8
  206. package/lib/Tooltip/Backdrop.native.js +39 -15
  207. package/lib/Tooltip/Tooltip.js +117 -74
  208. package/lib/Tooltip/dictionary.js +9 -2
  209. package/lib/Tooltip/getTooltipPosition.js +9 -1
  210. package/lib/Tooltip/index.js +13 -2
  211. package/lib/TooltipButton/TooltipButton.js +57 -38
  212. package/lib/TooltipButton/index.js +13 -2
  213. package/lib/Typography/Typography.js +86 -55
  214. package/lib/Typography/index.js +13 -2
  215. package/lib/ViewportProvider/ViewportProvider.js +34 -13
  216. package/lib/ViewportProvider/index.js +28 -3
  217. package/lib/ViewportProvider/useViewport.js +15 -3
  218. package/lib/ViewportProvider/useViewportListener.js +24 -10
  219. package/lib/index.js +539 -26
  220. package/lib/utils/a11y/index.js +31 -0
  221. package/lib/utils/a11y/semantics.js +173 -0
  222. package/lib/utils/a11y/textSize.js +49 -0
  223. package/lib/utils/animation/index.js +15 -2
  224. package/lib/utils/animation/useVerticalExpandAnimation.js +27 -10
  225. package/lib/utils/children.js +134 -0
  226. package/lib/utils/index.js +163 -7
  227. package/lib/utils/info/index.js +19 -0
  228. package/lib/utils/info/platform/index.js +23 -0
  229. package/lib/utils/info/platform/platform.android.js +8 -0
  230. package/lib/utils/info/platform/platform.ios.js +8 -0
  231. package/lib/utils/info/platform/platform.js +8 -0
  232. package/lib/utils/info/platform/platform.native.js +11 -0
  233. package/lib/utils/info/versions.js +16 -0
  234. package/lib/utils/input.js +53 -25
  235. package/lib/utils/pressability.js +120 -0
  236. package/lib/utils/propTypes.js +338 -132
  237. package/lib/utils/useCopy.js +40 -5
  238. package/lib/utils/useHash.js +52 -0
  239. package/lib/utils/useHash.native.js +15 -0
  240. package/lib/utils/useResponsiveProp.js +21 -9
  241. package/lib/utils/useSpacingScale.js +19 -9
  242. package/lib/utils/useUniqueId.js +12 -3
  243. package/package.json +16 -10
  244. package/release-context.json +4 -4
  245. package/src/A11yText/index.jsx +6 -4
  246. package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +5 -3
  247. package/src/ActivityIndicator/Spinner.native.jsx +5 -3
  248. package/src/Box/Box.jsx +131 -39
  249. package/src/Button/Button.jsx +13 -6
  250. package/src/Button/ButtonBase.jsx +134 -125
  251. package/src/Button/ButtonGroup.jsx +85 -86
  252. package/src/Button/ButtonLink.jsx +22 -7
  253. package/src/Button/propTypes.js +12 -2
  254. package/src/Card/Card.jsx +5 -31
  255. package/src/Card/CardBase.jsx +58 -0
  256. package/src/Card/PressableCardBase.jsx +119 -0
  257. package/src/Card/index.js +3 -0
  258. package/src/Checkbox/Checkbox.jsx +284 -0
  259. package/src/Checkbox/CheckboxGroup.jsx +206 -0
  260. package/src/Checkbox/CheckboxInput.jsx +55 -0
  261. package/src/Checkbox/CheckboxInput.native.jsx +6 -0
  262. package/src/Checkbox/index.js +5 -0
  263. package/src/Divider/Divider.jsx +7 -4
  264. package/src/ExpandCollapse/Accordion.jsx +3 -2
  265. package/src/ExpandCollapse/Control.jsx +40 -43
  266. package/src/ExpandCollapse/ExpandCollapse.jsx +26 -23
  267. package/src/ExpandCollapse/Panel.jsx +69 -63
  268. package/src/Feedback/Feedback.jsx +42 -30
  269. package/src/Fieldset/Fieldset.jsx +136 -0
  270. package/src/Fieldset/FieldsetContainer.jsx +31 -0
  271. package/src/Fieldset/FieldsetContainer.native.jsx +19 -0
  272. package/src/Fieldset/Legend.jsx +21 -0
  273. package/src/Fieldset/Legend.native.jsx +27 -0
  274. package/src/Fieldset/cssReset.js +14 -0
  275. package/src/Fieldset/index.js +3 -0
  276. package/src/FlexGrid/Col/Col.jsx +139 -132
  277. package/src/FlexGrid/FlexGrid.jsx +79 -51
  278. package/src/FlexGrid/Row/Row.jsx +55 -48
  279. package/src/HorizontalScroll/HorizontalScroll.jsx +168 -0
  280. package/src/HorizontalScroll/HorizontalScrollButton.jsx +105 -0
  281. package/src/HorizontalScroll/ScrollViewEnd.jsx +53 -0
  282. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +24 -0
  283. package/src/HorizontalScroll/dictionary.js +11 -0
  284. package/src/HorizontalScroll/index.js +17 -0
  285. package/src/HorizontalScroll/itemPositions.js +101 -0
  286. package/src/Icon/Icon.jsx +46 -49
  287. package/src/Icon/IconText.jsx +68 -0
  288. package/src/Icon/index.js +3 -2
  289. package/src/IconButton/IconButton.jsx +114 -0
  290. package/src/IconButton/index.js +3 -0
  291. package/src/InputLabel/InputLabel.jsx +57 -35
  292. package/src/InputLabel/LabelContent.jsx +21 -0
  293. package/src/InputLabel/LabelContent.native.jsx +11 -2
  294. package/src/InputSupports/InputSupports.jsx +70 -0
  295. package/src/InputSupports/index.js +3 -0
  296. package/src/InputSupports/propTypes.js +44 -0
  297. package/src/InputSupports/useInputSupports.js +30 -0
  298. package/src/Link/ChevronLink.jsx +34 -21
  299. package/src/Link/InlinePressable.jsx +39 -0
  300. package/src/Link/InlinePressable.native.jsx +75 -0
  301. package/src/Link/Link.jsx +23 -13
  302. package/src/Link/LinkBase.jsx +98 -170
  303. package/src/Link/TextButton.jsx +37 -16
  304. package/src/Link/index.js +2 -1
  305. package/src/List/List.jsx +48 -0
  306. package/src/List/ListItem.jsx +182 -0
  307. package/src/List/index.js +3 -0
  308. package/src/Modal/Modal.jsx +190 -0
  309. package/src/Modal/dictionary.js +9 -0
  310. package/src/Modal/index.js +3 -0
  311. package/src/Notification/Notification.jsx +164 -0
  312. package/src/Notification/dictionary.js +8 -0
  313. package/src/Notification/index.js +3 -0
  314. package/src/Pagination/PageButton.jsx +42 -49
  315. package/src/Pagination/Pagination.jsx +88 -92
  316. package/src/Pagination/SideButton.jsx +58 -66
  317. package/src/Progress/Progress.jsx +78 -0
  318. package/src/Progress/ProgressBar.jsx +123 -0
  319. package/src/Progress/ProgressBarBackground.jsx +36 -0
  320. package/src/Progress/index.js +6 -0
  321. package/src/Radio/Radio.jsx +240 -0
  322. package/src/Radio/RadioButton.jsx +142 -0
  323. package/src/Radio/RadioGroup.jsx +209 -0
  324. package/src/Radio/RadioInput.jsx +57 -0
  325. package/src/Radio/RadioInput.native.jsx +6 -0
  326. package/src/Radio/index.js +5 -0
  327. package/src/RadioCard/RadioCard.jsx +198 -0
  328. package/src/RadioCard/RadioCardGroup.jsx +218 -0
  329. package/src/RadioCard/index.js +5 -0
  330. package/src/Search/Search.jsx +225 -0
  331. package/src/Search/dictionary.js +12 -0
  332. package/src/Search/index.js +3 -0
  333. package/src/Select/Group.jsx +15 -0
  334. package/src/Select/Group.native.jsx +14 -0
  335. package/src/Select/Item.jsx +11 -0
  336. package/src/Select/Item.native.jsx +10 -0
  337. package/src/Select/Picker.jsx +74 -0
  338. package/src/Select/Picker.native.jsx +102 -0
  339. package/src/Select/Select.jsx +298 -0
  340. package/src/Select/index.js +8 -0
  341. package/src/SideNav/Item.jsx +54 -47
  342. package/src/SideNav/ItemsGroup.jsx +50 -43
  343. package/src/SideNav/SideNav.jsx +68 -60
  344. package/src/Skeleton/Skeleton.jsx +94 -0
  345. package/src/Skeleton/index.js +3 -0
  346. package/src/Skeleton/skeleton.constant.js +3 -0
  347. package/src/Skeleton/skeletonWebAnimation.js +13 -0
  348. package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
  349. package/src/Spacer/Spacer.jsx +11 -4
  350. package/src/StackView/StackView.jsx +53 -23
  351. package/src/StackView/StackWrap.jsx +16 -7
  352. package/src/StackView/StackWrapBox.jsx +62 -28
  353. package/src/StackView/StackWrapGap.jsx +46 -24
  354. package/src/StackView/common.jsx +3 -2
  355. package/src/StackView/getStackedContent.jsx +8 -2
  356. package/src/StepTracker/Step.jsx +202 -0
  357. package/src/StepTracker/StepTracker.jsx +174 -0
  358. package/src/StepTracker/dictionary.js +10 -0
  359. package/src/StepTracker/index.js +3 -0
  360. package/src/Tabs/Tabs.jsx +97 -0
  361. package/src/Tabs/TabsItem.jsx +212 -0
  362. package/src/Tabs/index.js +3 -0
  363. package/src/Tags/Tags.jsx +219 -0
  364. package/src/Tags/index.js +3 -0
  365. package/src/TextInput/TextArea.jsx +79 -0
  366. package/src/TextInput/TextInput.jsx +18 -284
  367. package/src/TextInput/TextInputBase.jsx +217 -0
  368. package/src/TextInput/index.js +2 -1
  369. package/src/TextInput/propTypes.js +29 -0
  370. package/src/ThemeProvider/ThemeProvider.jsx +11 -7
  371. package/src/ThemeProvider/useSetTheme.js +4 -0
  372. package/src/ThemeProvider/useThemeTokens.js +56 -5
  373. package/src/ThemeProvider/utils/styles.js +18 -5
  374. package/src/ThemeProvider/utils/theme-tokens.js +74 -5
  375. package/src/ToggleSwitch/ToggleSwitch.jsx +51 -53
  376. package/src/Tooltip/{Backdrop.web.jsx → Backdrop.jsx} +0 -0
  377. package/src/Tooltip/Tooltip.jsx +135 -131
  378. package/src/TooltipButton/TooltipButton.jsx +23 -27
  379. package/src/Typography/Typography.jsx +72 -59
  380. package/src/index.js +31 -3
  381. package/src/utils/a11y/index.js +2 -0
  382. package/src/utils/a11y/semantics.js +162 -0
  383. package/src/utils/a11y/textSize.js +30 -0
  384. package/src/utils/children.jsx +119 -0
  385. package/src/utils/index.js +6 -0
  386. package/src/utils/info/index.js +8 -0
  387. package/src/utils/info/platform/index.js +11 -0
  388. package/src/utils/info/platform/platform.android.js +1 -0
  389. package/src/utils/info/platform/platform.ios.js +1 -0
  390. package/src/utils/info/platform/platform.js +1 -0
  391. package/src/utils/info/platform/platform.native.js +4 -0
  392. package/src/utils/info/versions.js +6 -0
  393. package/src/utils/input.js +36 -25
  394. package/src/utils/pressability.js +96 -0
  395. package/src/utils/propTypes.js +291 -90
  396. package/src/utils/useCopy.js +30 -4
  397. package/src/utils/useHash.js +39 -0
  398. package/src/utils/useHash.native.js +6 -0
  399. package/stories/A11yText/A11yText.stories.jsx +6 -10
  400. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +1 -1
  401. package/stories/Box/Box.stories.jsx +1 -1
  402. package/stories/Button/Button.stories.jsx +7 -2
  403. package/stories/Button/ButtonGroup.stories.jsx +1 -1
  404. package/stories/Button/ButtonLink.stories.jsx +1 -1
  405. package/stories/Card/Card.stories.jsx +1 -1
  406. package/stories/Checkbox/Checkbox.stories.jsx +94 -0
  407. package/stories/Divider/Divider.stories.jsx +1 -1
  408. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
  409. package/stories/Feedback/Feedback.stories.jsx +5 -6
  410. package/stories/FlexGrid/01 FlexGrid.stories.jsx +1 -1
  411. package/stories/FlexGrid/02 Row.stories.jsx +1 -1
  412. package/stories/FlexGrid/03 Col.stories.jsx +1 -1
  413. package/stories/Icon/Icon.stories.jsx +27 -7
  414. package/stories/IconButton/IconButton.stories.jsx +50 -0
  415. package/stories/InputLabel/InputLabel.stories.jsx +1 -1
  416. package/stories/Link/ChevronLink.stories.jsx +1 -1
  417. package/stories/Link/Link.stories.jsx +28 -18
  418. package/stories/Link/TextButton.stories.jsx +1 -1
  419. package/stories/List/List.stories.jsx +117 -0
  420. package/stories/Modal/Modal.stories.jsx +29 -0
  421. package/stories/Notification/Notification.stories.jsx +82 -0
  422. package/stories/Pagination/Pagination.stories.jsx +1 -1
  423. package/stories/Progress/Progress.stories.jsx +93 -0
  424. package/stories/Radio/Radio.stories.jsx +100 -0
  425. package/stories/RadioCard/RadioCard.stories.jsx +98 -0
  426. package/stories/Search/Search.stories.jsx +16 -0
  427. package/stories/Select/Select.stories.jsx +55 -0
  428. package/stories/SideNav/SideNav.stories.jsx +1 -1
  429. package/stories/SideNav/SideNavItem.stories.jsx +1 -1
  430. package/stories/SideNav/SideNavItemsGroup.stories.jsx +1 -1
  431. package/stories/Skeleton/Skeleton.stories.jsx +36 -0
  432. package/stories/Spacer/Spacer.stories.jsx +1 -1
  433. package/stories/StackView/StackView.stories.jsx +1 -1
  434. package/stories/StackView/StackWrap.stories.jsx +1 -1
  435. package/stories/StepTracker/StepTracker.stories.jsx +71 -0
  436. package/stories/Tabs/Tabs.stories.jsx +97 -0
  437. package/stories/Tags/Tags.stories.jsx +69 -0
  438. package/stories/TextInput/TextArea.stories.jsx +100 -0
  439. package/stories/TextInput/TextInput.stories.jsx +1 -1
  440. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +1 -1
  441. package/stories/Tooltip/Tooltip.stories.jsx +1 -1
  442. package/stories/TooltipButton/TooltipButton.stories.jsx +1 -1
  443. package/stories/Typography/Typography.stories.jsx +1 -1
  444. package/stories/{platform-supports.web.jsx → platform-supports.jsx} +1 -1
  445. package/stories/supports.jsx +38 -4
  446. package/__fixtures__/accessible.icon.svg +0 -6
  447. package/babel.config.json +0 -8
  448. package/docs/Contributing.stories.mdx +0 -9
  449. package/docs/Fonts.stories.mdx +0 -104
  450. package/docs/Icons.stories.mdx +0 -144
  451. package/docs/Introduction.stories.mdx +0 -9
  452. package/lib/ActivityIndicator/Spinner.web.js +0 -55
  453. package/lib/InputLabel/LabelContent.web.js +0 -17
  454. package/lib/config/svgr-icons-web.js +0 -9
  455. package/lib/config/svgr-icons.js +0 -52
  456. package/src/InputLabel/LabelContent.web.jsx +0 -13
  457. package/src/config/svgr-icons-web.js +0 -11
  458. package/src/config/svgr-icons.js +0 -46
@@ -1,12 +1,32 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { StyleSheet, View } from 'react-native';
4
- import { useSpacingScale, spacingProps } from '../utils';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
13
+
14
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
15
+
16
+ var _utils = require("../utils");
17
+
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
5
26
  /**
6
27
  * @typedef {import('../utils/propTypes.js').SpacingValue} SpacingValue
7
28
  * @typedef {import('../utils/propTypes.js').SpacingObject} SpacingObject
8
29
  */
9
-
10
30
  const selectSizeStyle = (size, direction) => ({
11
31
  // Only apply space in one direction at a time, else large spacers will increase the
12
32
  // 'across' size of the parent and mess up siblings with styles like `alignItems: stretch`.
@@ -54,26 +74,29 @@ const selectSizeStyle = (size, direction) => ({
54
74
  */
55
75
 
56
76
 
57
- const Spacer = ({
77
+ const Spacer = /*#__PURE__*/(0, _react.forwardRef)(({
58
78
  space = 1,
59
79
  direction = 'column',
60
- testID
61
- }) => {
62
- const size = useSpacingScale(space);
80
+ testID,
81
+ dataSet
82
+ }, ref) => {
83
+ const size = (0, _utils.useSpacingScale)(space);
63
84
  const sizeStyle = selectSizeStyle(size, direction);
64
- return /*#__PURE__*/React.createElement(View, {
85
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
86
+ ref: ref,
65
87
  testID: testID,
66
- style: [staticStyles.stretch, sizeStyle]
88
+ style: [staticStyles.stretch, sizeStyle],
89
+ dataSet: dataSet
67
90
  });
68
- };
69
-
91
+ });
92
+ Spacer.displayName = 'Spacer';
70
93
  Spacer.propTypes = {
71
94
  /**
72
95
  * The size of the spacer according to the theme's spacing scale.
73
96
  * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
74
97
  * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
75
98
  */
76
- space: spacingProps.types.spacingValue,
99
+ space: _utils.spacingProps.types.spacingValue,
77
100
 
78
101
  /**
79
102
  * The spacer applies space in only one direction, which is controlled by the `direction` prop:
@@ -81,18 +104,26 @@ Spacer.propTypes = {
81
104
  * - `'column'` (default) applies space vertically; has a fixed height and not width.
82
105
  * - `'row'` applies space horizontally; has a fixed width and not height.
83
106
  */
84
- direction: PropTypes.oneOf(['column', 'row']),
107
+ direction: _propTypes.default.oneOf(['column', 'row']),
108
+
109
+ /**
110
+ * @ignore
111
+ */
112
+ dataSet: _propTypes.default.object,
85
113
 
86
114
  /**
87
115
  * @ignore
88
116
  * In tests, the only way to select Spacers is with testID prop and getByTestId, since they have no content,
89
117
  * no accessibility role, and there is no equivalent of nextSibling in React Native Testing Library.
90
118
  */
91
- testID: PropTypes.string
119
+ testID: _propTypes.default.string
92
120
  };
93
- const staticStyles = StyleSheet.create({
121
+
122
+ const staticStyles = _StyleSheet.default.create({
94
123
  stretch: {
95
124
  alignSelf: 'stretch'
96
125
  }
97
126
  });
98
- export default Spacer;
127
+
128
+ var _default = Spacer;
129
+ exports.default = _default;
@@ -1,2 +1,13 @@
1
- import Spacer from './Spacer';
2
- export default Spacer;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _Spacer = _interopRequireDefault(require("./Spacer"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _Spacer.default;
13
+ exports.default = _default;
@@ -1,12 +1,36 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { View } from 'react-native';
4
- import Divider from '../Divider';
5
- import { spacingProps, a11yProps, responsiveProps, variantProp, useResponsiveProp } from '../utils';
6
- import { useThemeTokens } from '../ThemeProvider';
7
- import { useViewport } from '../ViewportProvider';
8
- import getStackedContent from './getStackedContent';
9
- import { staticStyles, selectFlexStyles } from './common';
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 _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _Divider = _interopRequireDefault(require("../Divider"));
15
+
16
+ var _utils = require("../utils");
17
+
18
+ var _ThemeProvider = require("../ThemeProvider");
19
+
20
+ var _ViewportProvider = require("../ViewportProvider");
21
+
22
+ var _getStackedContent = _interopRequireDefault(require("./getStackedContent"));
23
+
24
+ var _common = require("./common");
25
+
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
10
34
  /**
11
35
  * StackView evenly spaces its children, by default placing `Spacer` components between them.
12
36
  *
@@ -49,59 +73,75 @@ import { staticStyles, selectFlexStyles } from './common';
49
73
  * It applies no accessibility props of its own, unless `divider` prop is passed (`Divider` has a
50
74
  * semantic role but only on web, not within native apps).
51
75
  */
52
-
53
- const StackView = ({
76
+ const StackView = /*#__PURE__*/(0, _react.forwardRef)(({
54
77
  space = 1,
55
78
  divider,
56
79
  direction: directionProp = 'column',
57
80
  children,
58
81
  variant,
59
82
  tokens,
83
+ tag,
84
+ accessibilityRole,
60
85
  ...rest
61
- }) => {
62
- const viewport = useViewport();
63
- const direction = useResponsiveProp(directionProp, 'column');
64
- const a11y = a11yProps.select({ ...rest
65
- });
66
- const content = getStackedContent(children, {
86
+ }, ref) => {
87
+ const viewport = (0, _ViewportProvider.useViewport)();
88
+ const direction = (0, _utils.useResponsiveProp)(directionProp, 'column');
89
+ const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
90
+ ..._utils.a11yProps.select(rest),
91
+ ..._utils.viewProps.select(rest)
92
+ };
93
+ const content = (0, _getStackedContent.default)(children, {
67
94
  direction,
68
95
  divider,
69
96
  space
70
97
  });
71
- const themeTokens = useThemeTokens('StackView', tokens, variant, {
98
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
72
99
  viewport
73
100
  });
74
- const flexStyles = selectFlexStyles(themeTokens);
75
- return /*#__PURE__*/React.createElement(View, Object.assign({}, a11y, {
76
- style: [flexStyles, staticStyles[direction]]
77
- }), content);
78
- };
79
-
80
- StackView.propTypes = { ...a11yProps.propTypes,
81
- variant: variantProp.propType,
101
+ const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
102
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
103
+ ref: ref,
104
+ ...props,
105
+ style: [flexStyles, _common.staticStyles[direction]],
106
+ children: content
107
+ });
108
+ });
109
+ StackView.displayName = 'StackView';
110
+ StackView.propTypes = { ..._utils.a11yProps.propTypes,
111
+ tokens: (0, _utils.getTokensPropType)('StackView'),
112
+ variant: _utils.variantProp.propType,
82
113
 
83
114
  /**
84
115
  * Sets the `flexDirection` of the container and, if `divider` is used, gives the Divider the appropriate direction.
85
116
  */
86
- direction: responsiveProps.getTypeOptionallyByViewport(PropTypes.oneOf(['column', 'row', 'column-reverse', 'row-reverse'])),
117
+ direction: _utils.responsiveProps.getTypeOptionallyByViewport(_propTypes.default.oneOf(['column', 'row', 'column-reverse', 'row-reverse'])),
87
118
 
88
119
  /**
89
120
  * If true, renders a UDS `Divider` component between each item. If an object is passed,
90
121
  * this object is passes as props to each Divider.
91
122
  */
92
- divider: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape(Divider.propTypes)]),
123
+ divider: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.shape(_Divider.default.propTypes)]),
93
124
 
94
125
  /**
95
126
  * The size of the spacer according to the theme's spacing scale.
96
127
  * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
97
128
  * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
98
129
  */
99
- space: spacingProps.types.spacingValue,
130
+ space: _utils.spacingProps.types.spacingValue,
131
+
132
+ /**
133
+ * Optional semantic HTML tag, to apply to the container on web. Does not change styling.
134
+ *
135
+ * In native apps, if a header tag is provided ("h1", "h2" etc) and accessibilityRole prop
136
+ * is not defined, the accessibilityRole will default to "heading".
137
+ */
138
+ tag: _propTypes.default.oneOf(_utils.layoutTags),
100
139
 
101
140
  /**
102
141
  * A StackView may take any children, but will have no effect if it is only passed one child or is passed children
103
142
  * wrapped in a component. If necessary, children may be wrapped in one React Fragment.
104
143
  */
105
- children: PropTypes.node
144
+ children: _propTypes.default.node
106
145
  };
107
- export default StackView;
146
+ var _default = StackView;
147
+ exports.default = _default;
@@ -1,8 +1,28 @@
1
- import React from 'react';
2
- import StackWrapBox from './StackWrapBox';
3
- import StackWrapGap from './StackWrapGap'; // CSS.supports needs an example of the type of value you intend to use.
4
- // Will be an integer appended `px` after hooks and JSX styles are resolved.
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 _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
+
12
+ var _StackWrapBox = _interopRequireDefault(require("./StackWrapBox"));
13
+
14
+ var _StackWrapGap = _interopRequireDefault(require("./StackWrapGap"));
15
+
16
+ var _jsxRuntime = require("react/jsx-runtime");
5
17
 
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
24
+ // CSS.supports needs an example of the type of value you intend to use.
25
+ // Will be an integer appended `px` after hooks and JSX styles are resolved.
6
26
  const exampleGapValue = '1px';
7
27
  /**
8
28
  * StackWrap is an alternative to StackView where the spaced items are allowed to wrap.
@@ -12,21 +32,31 @@ const exampleGapValue = '1px';
12
32
  * If a different spacing is desired between wrapped lines, pass a spacing value to the `gap` prop.
13
33
  */
14
34
 
15
- const StackWrap = props => {
35
+ const StackWrap = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
36
+ var _CSS;
37
+
16
38
  const {
17
39
  space
18
40
  } = props; // Don't apply separate gap if `null` or `undefined`, so can be unset in Storybook etc
19
- // eslint-disable-next-line react/destructuring-assignment
20
41
 
21
42
  const gap = props.gap ?? space;
22
- return gap === space && CSS?.supports('gap', exampleGapValue) ?
43
+ const canUseCSSGap = _Platform.default.OS === 'web' && gap === space && // In Jest/CI, global CSS isn't always available and doesn't always have .supports method
44
+ typeof ((_CSS = CSS) === null || _CSS === void 0 ? void 0 : _CSS.supports) === 'function' && CSS.supports('gap', exampleGapValue);
45
+ return canUseCSSGap ?
23
46
  /*#__PURE__*/
24
47
  // If possible, use the cleaner implementation that applies CSS `gap` styles to the container.
25
- React.createElement(StackWrapGap, props) :
48
+ (0, _jsxRuntime.jsx)(_StackWrapGap.default, {
49
+ ref: ref,
50
+ ...props
51
+ }) :
26
52
  /*#__PURE__*/
27
53
  // Else, use the fallback implementation which renders a `Box` component around each child.
28
- React.createElement(StackWrapBox, props);
29
- };
30
-
31
- StackWrap.propTypes = StackWrapBox.propTypes;
32
- export default StackWrap;
54
+ (0, _jsxRuntime.jsx)(_StackWrapBox.default, {
55
+ ref: ref,
56
+ ...props
57
+ });
58
+ });
59
+ StackWrap.displayName = 'StackWrap';
60
+ StackWrap.propTypes = _StackWrapBox.default.propTypes;
61
+ var _default = StackWrap;
62
+ exports.default = _default;
@@ -1,3 +1,14 @@
1
- import StackWrapBox from './StackWrapBox'; // No support for CSS `gap` on React Native, so always use the fallback "box" implementation.
1
+ "use strict";
2
2
 
3
- export default StackWrapBox;
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _StackWrapBox = _interopRequireDefault(require("./StackWrapBox"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ // No support for CSS `gap` on React Native, so always use the fallback "box" implementation.
13
+ var _default = _StackWrapBox.default;
14
+ exports.default = _default;
@@ -1,11 +1,34 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { View } from 'react-native';
4
- import { spacingProps, a11yProps, responsiveProps, useSpacingScale, useResponsiveProp } from '../utils';
5
- import { useThemeTokens } from '../ThemeProvider';
6
- import { useViewport } from '../ViewportProvider';
7
- import getStackedContent from './getStackedContent';
8
- import { staticStyles, selectFlexStyles } from './common';
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 _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
13
+
14
+ var _utils = require("../utils");
15
+
16
+ var _ThemeProvider = require("../ThemeProvider");
17
+
18
+ var _ViewportProvider = require("../ViewportProvider");
19
+
20
+ var _getStackedContent = _interopRequireDefault(require("./getStackedContent"));
21
+
22
+ var _common = require("./common");
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; }
31
+
9
32
  const offsetSides = {
10
33
  row: 'marginBottom',
11
34
  column: 'marginRight'
@@ -31,25 +54,29 @@ const spaceSides = {
31
54
  * between the container and the stacked children, and requires a negative margin on the container.
32
55
  */
33
56
 
34
- const StackWrapBox = ({
57
+ const StackWrapBox = /*#__PURE__*/(0, _react.forwardRef)(({
35
58
  space = 1,
36
59
  gap = space,
37
60
  direction: directionProp = 'row',
38
61
  children,
39
62
  tokens,
40
63
  variant,
64
+ tag,
65
+ accessibilityRole,
41
66
  ...rest
42
- }) => {
43
- const viewport = useViewport();
44
- const direction = useResponsiveProp(directionProp, 'row');
45
- const themeTokens = useThemeTokens('StackView', tokens, variant, {
67
+ }, ref) => {
68
+ const viewport = (0, _ViewportProvider.useViewport)();
69
+ const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
70
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
46
71
  viewport
47
72
  });
48
- const flexStyles = selectFlexStyles(themeTokens);
49
- const a11y = a11yProps.select({ ...rest
50
- }); // Mimic CSS `gap` using box spacing on the side after a wrapped row then offsetting it on the last row.
73
+ const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
74
+ const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
75
+ ..._utils.a11yProps.select(rest),
76
+ ..._utils.viewProps.select(rest)
77
+ }; // Mimic CSS `gap` using box spacing on the side after a wrapped row then offsetting it on the last row.
51
78
 
52
- const gapSize = useSpacingScale(gap);
79
+ const gapSize = (0, _utils.useSpacingScale)(gap);
53
80
  const offsetStyle = {
54
81
  [offsetSides[direction]]: -1 * gapSize
55
82
  };
@@ -57,34 +84,54 @@ const StackWrapBox = ({
57
84
  [gapSides[direction]]: gap,
58
85
  [spaceSides[direction]]: space
59
86
  };
60
- const content = getStackedContent(children, {
87
+ const content = (0, _getStackedContent.default)(children, {
61
88
  direction,
62
89
  space: 0,
63
90
  box: boxProps
64
91
  });
65
- return /*#__PURE__*/React.createElement(View, Object.assign({}, a11y, {
66
- style: [flexStyles, staticStyles.wrap, staticStyles[direction], offsetStyle]
67
- }), content);
68
- };
69
-
70
- StackWrapBox.propTypes = { ...a11yProps.propTypes,
92
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
93
+ ref: ref,
94
+ ...props,
95
+ style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], offsetStyle],
96
+ children: content
97
+ });
98
+ });
99
+ StackWrapBox.displayName = 'StackWrapBox';
100
+ StackWrapBox.propTypes = { ..._utils.a11yProps.propTypes,
101
+ tokens: (0, _utils.getTokensPropType)('StackView'),
71
102
 
72
103
  /**
73
104
  * Sets the `flexDirection` of the container
74
105
  */
75
- direction: responsiveProps.getTypeOptionallyByViewport(PropTypes.oneOf(['column', 'row', 'row-reverse', 'column-reverse'])),
106
+ direction: _utils.responsiveProps.getTypeOptionallyByViewport(_propTypes.default.oneOf(['column', 'row', 'row-reverse', 'column-reverse'])),
107
+
108
+ /**
109
+ * The size of the space between items according to the theme's spacing scale.
110
+ * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
111
+ * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
112
+ */
113
+ space: _utils.spacingProps.types.spacingValue,
76
114
 
77
115
  /**
78
- * The size of the spacer according to the theme's spacing scale.
116
+ * The size of the space between lines of content, according to the theme's spacing scale. By default, matches `space`.
79
117
  * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
80
118
  * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
81
119
  */
82
- space: spacingProps.types.spacingValue,
120
+ gap: _utils.spacingProps.types.spacingValue,
121
+
122
+ /**
123
+ * Optional semantic HTML tag, to apply to the container on web. Does not change styling.
124
+ *
125
+ * In native apps, if a header tag is provided ("h1", "h2" etc) and accessibilityRole prop
126
+ * is not defined, the accessibilityRole will default to "heading".
127
+ */
128
+ tag: _propTypes.default.oneOf(_utils.layoutTags),
83
129
 
84
130
  /**
85
131
  * A StackWrap may take any children, but will have no effect if it is only passed one child or is passed children
86
132
  * wrapped in a component. If necessary, children may be wrapped in one React Fragment.
87
133
  */
88
- children: PropTypes.node
134
+ children: _propTypes.default.node
89
135
  };
90
- export default StackWrapBox;
136
+ var _default = StackWrapBox;
137
+ exports.default = _default;
@@ -1,11 +1,34 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import StackWrapBox from './StackWrapBox';
4
- import { a11yProps, useSpacingScale, useResponsiveProp } from '../utils';
5
- import { useThemeTokens } from '../ThemeProvider';
6
- import { useViewport } from '../ViewportProvider';
7
- import getStackedContent from './getStackedContent';
8
- import { staticStyles, selectFlexStyles } from './common';
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 _StackWrapBox = _interopRequireDefault(require("./StackWrapBox"));
13
+
14
+ var _utils = require("../utils");
15
+
16
+ var _ThemeProvider = require("../ThemeProvider");
17
+
18
+ var _ViewportProvider = require("../ViewportProvider");
19
+
20
+ var _getStackedContent = _interopRequireDefault(require("./getStackedContent"));
21
+
22
+ var _common = require("./common");
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; }
31
+
9
32
  /**
10
33
  * The primary implementation of StackWrap.
11
34
  *
@@ -16,35 +39,42 @@ import { staticStyles, selectFlexStyles } from './common';
16
39
  * - The `space` between items is the same as the `gap` between wrapped rows (this is the
17
40
  * default if `gap` prop is undefined)
18
41
  */
19
-
20
- const StackWrapGap = ({
42
+ const StackWrapGap = /*#__PURE__*/(0, _react.forwardRef)(({
21
43
  space = 1,
22
44
  tokens,
23
45
  variant,
24
46
  direction: directionProp = 'row',
25
47
  children,
48
+ tag,
49
+ accessibilityRole,
26
50
  ...rest
27
- }) => {
28
- const viewport = useViewport();
29
- const direction = useResponsiveProp(directionProp, 'row');
30
- const themeTokens = useThemeTokens('StackView', tokens, variant, {
51
+ }, ref) => {
52
+ const viewport = (0, _ViewportProvider.useViewport)();
53
+ const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
54
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
31
55
  viewport
32
56
  });
33
- const flexStyles = selectFlexStyles(themeTokens);
34
- const a11y = a11yProps.select({ ...rest
35
- });
36
- const size = useSpacingScale(space);
57
+ const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
58
+ const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
59
+ ..._utils.a11yProps.select(rest),
60
+ ..._utils.viewProps.select(rest)
61
+ };
62
+ const size = (0, _utils.useSpacingScale)(space);
37
63
  const gapStyle = {
38
64
  gap: size
39
65
  };
40
- const content = getStackedContent(children, {
66
+ const content = (0, _getStackedContent.default)(children, {
41
67
  direction,
42
68
  space: 0
43
69
  });
44
- return /*#__PURE__*/React.createElement(View, Object.assign({}, a11y, {
45
- style: [flexStyles, staticStyles.wrap, staticStyles[direction], gapStyle]
46
- }), content);
47
- };
48
-
49
- StackWrapGap.propTypes = StackWrapBox.propTypes;
50
- export default StackWrapGap;
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
71
+ ref: ref,
72
+ ...props,
73
+ style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], gapStyle],
74
+ children: content
75
+ });
76
+ });
77
+ StackWrapGap.displayName = 'StackWrapGap';
78
+ StackWrapGap.propTypes = _StackWrapBox.default.propTypes;
79
+ var _default = StackWrapGap;
80
+ exports.default = _default;
@@ -1,14 +1,29 @@
1
- import { StyleSheet } from 'react-native';
2
- export const selectFlexStyles = ({
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.staticStyles = exports.selectFlexStyles = void 0;
7
+
8
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const selectFlexStyles = ({
3
13
  alignItems,
4
14
  justifyContent,
5
- flexGrow
15
+ flexGrow,
16
+ flexShrink
6
17
  }) => ({
7
18
  alignItems,
8
19
  justifyContent,
9
- flexGrow
20
+ flexGrow,
21
+ flexShrink
10
22
  });
11
- export const staticStyles = StyleSheet.create({
23
+
24
+ exports.selectFlexStyles = selectFlexStyles;
25
+
26
+ const staticStyles = _StyleSheet.default.create({
12
27
  wrap: {
13
28
  flexShrink: 1,
14
29
  flexWrap: 'wrap'
@@ -27,4 +42,6 @@ export const staticStyles = StyleSheet.create({
27
42
  'column-reverse': {
28
43
  flexDirection: 'column-reverse'
29
44
  }
30
- });
45
+ });
46
+
47
+ exports.staticStyles = staticStyles;