@telus-uds/components-base 1.1.0 → 1.3.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 (432) hide show
  1. package/.turbo/turbo-build.log +8 -0
  2. package/CHANGELOG.json +38 -0
  3. package/CHANGELOG.md +35 -2
  4. package/__fixtures__/Accessible.js +4 -2
  5. package/__fixtures__/Accessible.native.js +5 -2
  6. package/__fixtures__/testTheme.js +9 -0
  7. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
  8. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
  9. package/__tests__/FlexGrid/Col.test.jsx +6 -10
  10. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +1 -0
  11. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +10 -0
  12. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +192 -0
  13. package/__tests__/utils/props.test.js +36 -0
  14. package/__tests__/utils/semantics.test.jsx +1 -10
  15. package/babel.config.js +27 -5
  16. package/component-docs.json +638 -1145
  17. package/generate-component-docs.js +3 -0
  18. package/lib/A11yText/index.js +6 -5
  19. package/lib/ActivityIndicator/Spinner.js +46 -37
  20. package/lib/ActivityIndicator/Spinner.native.js +26 -15
  21. package/lib/ActivityIndicator/index.js +3 -3
  22. package/lib/Box/Box.js +8 -8
  23. package/lib/Button/Button.js +2 -2
  24. package/lib/Button/ButtonBase.js +25 -12
  25. package/lib/Button/ButtonGroup.js +10 -12
  26. package/lib/Button/ButtonLink.js +4 -4
  27. package/lib/Button/propTypes.js +4 -2
  28. package/lib/Card/Card.js +6 -5
  29. package/lib/Card/CardBase.js +6 -9
  30. package/lib/Card/PressableCardBase.js +15 -14
  31. package/lib/Checkbox/Checkbox.js +4 -8
  32. package/lib/Divider/Divider.js +14 -13
  33. package/lib/ExpandCollapse/Control.js +7 -7
  34. package/lib/ExpandCollapse/ExpandCollapse.js +6 -2
  35. package/lib/ExpandCollapse/Panel.js +6 -7
  36. package/lib/Feedback/Feedback.js +6 -5
  37. package/lib/Fieldset/Fieldset.js +1 -3
  38. package/lib/FlexGrid/FlexGrid.js +4 -4
  39. package/lib/FlexGrid/helpers/index.js +1 -4
  40. package/lib/HorizontalScroll/HorizontalScroll.js +5 -6
  41. package/lib/IconButton/IconButton.js +14 -9
  42. package/lib/InputLabel/InputLabel.js +7 -2
  43. package/lib/InputSupports/InputSupports.js +2 -2
  44. package/lib/Link/LinkBase.js +21 -15
  45. package/lib/List/List.js +4 -6
  46. package/lib/List/ListItem.js +6 -2
  47. package/lib/Modal/Modal.js +6 -2
  48. package/lib/Notification/Notification.js +7 -2
  49. package/lib/Pagination/PageButton.js +3 -1
  50. package/lib/Pagination/Pagination.js +22 -5
  51. package/lib/Pagination/SideButton.js +3 -1
  52. package/lib/Progress/Progress.js +5 -4
  53. package/lib/Progress/ProgressBar.js +8 -7
  54. package/lib/Radio/Radio.js +4 -8
  55. package/lib/Radio/RadioButton.js +6 -3
  56. package/lib/Radio/RadioGroup.js +7 -2
  57. package/lib/RadioCard/RadioCard.js +4 -4
  58. package/lib/RadioCard/RadioCardGroup.js +9 -6
  59. package/lib/Search/Search.js +7 -2
  60. package/lib/Select/Select.js +10 -9
  61. package/lib/SideNav/Item.js +7 -7
  62. package/lib/SideNav/SideNav.js +7 -3
  63. package/lib/Skeleton/Skeleton.js +6 -2
  64. package/lib/Spacer/Spacer.js +9 -20
  65. package/lib/StackView/StackView.js +7 -7
  66. package/lib/StackView/StackWrapBox.js +6 -7
  67. package/lib/StackView/StackWrapGap.js +6 -5
  68. package/lib/StackView/getStackedContent.js +1 -1
  69. package/lib/StepTracker/Step.js +7 -3
  70. package/lib/StepTracker/StepTracker.js +7 -7
  71. package/lib/Tabs/Tabs.js +16 -4
  72. package/lib/Tabs/TabsItem.js +18 -11
  73. package/lib/Tags/Tags.js +11 -12
  74. package/lib/TextInput/TextArea.js +13 -14
  75. package/lib/TextInput/TextInput.js +13 -14
  76. package/lib/TextInput/TextInputBase.js +5 -3
  77. package/lib/ThemeProvider/useThemeTokens.js +3 -3
  78. package/lib/ThemeProvider/utils/theme-tokens.js +3 -3
  79. package/lib/ToggleSwitch/ToggleSwitch.js +106 -43
  80. package/lib/ToggleSwitch/ToggleSwitchGroup.js +228 -0
  81. package/lib/ToggleSwitch/index.js +14 -4
  82. package/lib/Tooltip/Tooltip.js +7 -2
  83. package/lib/TooltipButton/TooltipButton.js +7 -2
  84. package/lib/Typography/Typography.js +8 -6
  85. package/lib/index.js +20 -8
  86. package/lib/utils/a11y/semantics.js +4 -3
  87. package/lib/utils/children.js +5 -1
  88. package/lib/utils/index.js +28 -5
  89. package/lib/utils/pressability.js +2 -2
  90. package/lib/utils/props/a11yProps.js +153 -0
  91. package/lib/utils/props/clickProps.js +36 -0
  92. package/lib/utils/props/componentPropType.js +70 -0
  93. package/lib/utils/props/copyPropTypes.js +14 -0
  94. package/lib/utils/props/getPropSelector.js +13 -0
  95. package/lib/utils/props/hrefAttrsProp.js +41 -0
  96. package/lib/utils/props/index.js +158 -0
  97. package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
  98. package/lib/utils/props/linkProps.js +64 -0
  99. package/lib/utils/props/paddingProp.js +20 -0
  100. package/lib/utils/props/pressProps.js +57 -0
  101. package/lib/utils/props/rectProp.js +20 -0
  102. package/lib/utils/props/responsiveProps.js +40 -0
  103. package/lib/utils/props/selectSystemProps.js +31 -0
  104. package/lib/utils/props/spacingProps.js +71 -0
  105. package/lib/utils/props/tokens.js +145 -0
  106. package/lib/utils/props/variantProp.js +28 -0
  107. package/lib/utils/props/viewProps.js +34 -0
  108. package/lib/utils/ssr.js +51 -0
  109. package/lib/utils/useResponsiveProp.js +1 -1
  110. package/lib/utils/useSpacingScale.js +4 -4
  111. package/lib/utils/withLinkRouter.js +98 -0
  112. package/lib-module/A11yInfoProvider/index.js +62 -0
  113. package/lib-module/A11yText/index.js +55 -0
  114. package/lib-module/ActivityIndicator/Spinner.js +76 -0
  115. package/lib-module/ActivityIndicator/Spinner.native.js +143 -0
  116. package/lib-module/ActivityIndicator/index.js +40 -0
  117. package/lib-module/ActivityIndicator/shared.js +12 -0
  118. package/lib-module/BaseProvider/index.js +26 -0
  119. package/lib-module/Box/Box.js +243 -0
  120. package/lib-module/Box/index.js +2 -0
  121. package/lib-module/Button/Button.js +25 -0
  122. package/lib-module/Button/ButtonBase.js +254 -0
  123. package/lib-module/Button/ButtonGroup.js +164 -0
  124. package/lib-module/Button/ButtonLink.js +39 -0
  125. package/lib-module/Button/index.js +4 -0
  126. package/lib-module/Button/propTypes.js +36 -0
  127. package/lib-module/Card/Card.js +83 -0
  128. package/lib-module/Card/CardBase.js +62 -0
  129. package/lib-module/Card/PressableCardBase.js +113 -0
  130. package/lib-module/Card/index.js +4 -0
  131. package/lib-module/Checkbox/Checkbox.js +321 -0
  132. package/lib-module/Checkbox/CheckboxGroup.js +218 -0
  133. package/lib-module/Checkbox/CheckboxInput.js +58 -0
  134. package/lib-module/Checkbox/CheckboxInput.native.js +6 -0
  135. package/lib-module/Checkbox/index.js +3 -0
  136. package/lib-module/Divider/Divider.js +123 -0
  137. package/lib-module/Divider/index.js +2 -0
  138. package/lib-module/ExpandCollapse/Accordion.js +15 -0
  139. package/lib-module/ExpandCollapse/Control.js +130 -0
  140. package/lib-module/ExpandCollapse/ExpandCollapse.js +94 -0
  141. package/lib-module/ExpandCollapse/Panel.js +158 -0
  142. package/lib-module/ExpandCollapse/index.js +7 -0
  143. package/lib-module/Feedback/Feedback.js +144 -0
  144. package/lib-module/Feedback/index.js +2 -0
  145. package/lib-module/Fieldset/Fieldset.js +145 -0
  146. package/lib-module/Fieldset/FieldsetContainer.js +29 -0
  147. package/lib-module/Fieldset/FieldsetContainer.native.js +20 -0
  148. package/lib-module/Fieldset/Legend.js +21 -0
  149. package/lib-module/Fieldset/Legend.native.js +28 -0
  150. package/lib-module/Fieldset/cssReset.js +14 -0
  151. package/lib-module/Fieldset/index.js +2 -0
  152. package/lib-module/FlexGrid/Col/Col.js +265 -0
  153. package/lib-module/FlexGrid/Col/index.js +2 -0
  154. package/lib-module/FlexGrid/FlexGrid.js +147 -0
  155. package/lib-module/FlexGrid/Row/Row.js +177 -0
  156. package/lib-module/FlexGrid/Row/index.js +2 -0
  157. package/lib-module/FlexGrid/helpers/index.js +18 -0
  158. package/lib-module/FlexGrid/index.js +2 -0
  159. package/lib-module/FlexGrid/providers/GutterContext.js +3 -0
  160. package/lib-module/HorizontalScroll/HorizontalScroll.js +171 -0
  161. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +102 -0
  162. package/lib-module/HorizontalScroll/ScrollViewEnd.js +47 -0
  163. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +24 -0
  164. package/lib-module/HorizontalScroll/dictionary.js +11 -0
  165. package/lib-module/HorizontalScroll/index.js +11 -0
  166. package/lib-module/HorizontalScroll/itemPositions.js +106 -0
  167. package/lib-module/Icon/Icon.js +61 -0
  168. package/lib-module/Icon/IconText.js +81 -0
  169. package/lib-module/Icon/index.js +4 -0
  170. package/lib-module/IconButton/IconButton.js +115 -0
  171. package/lib-module/IconButton/index.js +2 -0
  172. package/lib-module/InputLabel/InputLabel.js +131 -0
  173. package/lib-module/InputLabel/LabelContent.js +24 -0
  174. package/lib-module/InputLabel/LabelContent.native.js +16 -0
  175. package/lib-module/InputLabel/index.js +2 -0
  176. package/lib-module/InputSupports/InputSupports.js +88 -0
  177. package/lib-module/InputSupports/index.js +2 -0
  178. package/lib-module/InputSupports/useInputSupports.js +31 -0
  179. package/lib-module/Link/ChevronLink.js +51 -0
  180. package/lib-module/Link/InlinePressable.js +37 -0
  181. package/lib-module/Link/InlinePressable.native.js +85 -0
  182. package/lib-module/Link/Link.js +27 -0
  183. package/lib-module/Link/LinkBase.js +210 -0
  184. package/lib-module/Link/TextButton.js +43 -0
  185. package/lib-module/Link/index.js +5 -0
  186. package/lib-module/List/List.js +55 -0
  187. package/lib-module/List/ListItem.js +213 -0
  188. package/lib-module/List/index.js +5 -0
  189. package/lib-module/Modal/Modal.js +208 -0
  190. package/lib-module/Modal/dictionary.js +9 -0
  191. package/lib-module/Modal/index.js +2 -0
  192. package/lib-module/Notification/Notification.js +196 -0
  193. package/lib-module/Notification/dictionary.js +8 -0
  194. package/lib-module/Notification/index.js +2 -0
  195. package/lib-module/Pagination/PageButton.js +65 -0
  196. package/lib-module/Pagination/Pagination.js +140 -0
  197. package/lib-module/Pagination/SideButton.js +103 -0
  198. package/lib-module/Pagination/dictionary.js +18 -0
  199. package/lib-module/Pagination/index.js +2 -0
  200. package/lib-module/Pagination/usePagination.js +72 -0
  201. package/lib-module/Progress/Progress.js +85 -0
  202. package/lib-module/Progress/ProgressBar.js +134 -0
  203. package/lib-module/Progress/ProgressBarBackground.js +41 -0
  204. package/lib-module/Progress/index.js +4 -0
  205. package/lib-module/Radio/Radio.js +263 -0
  206. package/lib-module/Radio/RadioButton.js +128 -0
  207. package/lib-module/Radio/RadioGroup.js +225 -0
  208. package/lib-module/Radio/RadioInput.js +60 -0
  209. package/lib-module/Radio/RadioInput.native.js +6 -0
  210. package/lib-module/Radio/index.js +3 -0
  211. package/lib-module/RadioCard/RadioCard.js +218 -0
  212. package/lib-module/RadioCard/RadioCardGroup.js +232 -0
  213. package/lib-module/RadioCard/index.js +3 -0
  214. package/lib-module/Search/Search.js +233 -0
  215. package/lib-module/Search/dictionary.js +12 -0
  216. package/lib-module/Search/index.js +2 -0
  217. package/lib-module/Select/Group.js +20 -0
  218. package/lib-module/Select/Group.native.js +14 -0
  219. package/lib-module/Select/Item.js +17 -0
  220. package/lib-module/Select/Item.native.js +9 -0
  221. package/lib-module/Select/Picker.js +67 -0
  222. package/lib-module/Select/Picker.native.js +110 -0
  223. package/lib-module/Select/Select.js +317 -0
  224. package/lib-module/Select/index.js +6 -0
  225. package/lib-module/SideNav/Item.js +139 -0
  226. package/lib-module/SideNav/ItemContent.js +45 -0
  227. package/lib-module/SideNav/ItemsGroup.js +115 -0
  228. package/lib-module/SideNav/SideNav.js +133 -0
  229. package/lib-module/SideNav/index.js +1 -0
  230. package/lib-module/Skeleton/Skeleton.js +117 -0
  231. package/lib-module/Skeleton/index.js +2 -0
  232. package/lib-module/Skeleton/skeleton.constant.js +3 -0
  233. package/lib-module/Skeleton/skeletonWebAnimation.js +18 -0
  234. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +24 -0
  235. package/lib-module/Spacer/Spacer.js +97 -0
  236. package/lib-module/Spacer/index.js +2 -0
  237. package/lib-module/StackView/StackView.js +124 -0
  238. package/lib-module/StackView/StackWrap.js +48 -0
  239. package/lib-module/StackView/StackWrap.native.js +3 -0
  240. package/lib-module/StackView/StackWrapBox.js +114 -0
  241. package/lib-module/StackView/StackWrapGap.js +58 -0
  242. package/lib-module/StackView/common.js +32 -0
  243. package/lib-module/StackView/getStackedContent.js +123 -0
  244. package/lib-module/StackView/index.js +5 -0
  245. package/lib-module/StepTracker/Step.js +229 -0
  246. package/lib-module/StepTracker/StepTracker.js +175 -0
  247. package/lib-module/StepTracker/dictionary.js +10 -0
  248. package/lib-module/StepTracker/index.js +2 -0
  249. package/lib-module/Tabs/Tabs.js +113 -0
  250. package/lib-module/Tabs/TabsItem.js +215 -0
  251. package/lib-module/Tabs/index.js +2 -0
  252. package/lib-module/Tags/Tags.js +238 -0
  253. package/lib-module/Tags/index.js +2 -0
  254. package/lib-module/TextInput/TextArea.js +88 -0
  255. package/lib-module/TextInput/TextInput.js +60 -0
  256. package/lib-module/TextInput/TextInputBase.js +233 -0
  257. package/lib-module/TextInput/index.js +3 -0
  258. package/lib-module/TextInput/propTypes.js +31 -0
  259. package/lib-module/ThemeProvider/ThemeProvider.js +35 -0
  260. package/lib-module/ThemeProvider/index.js +6 -0
  261. package/lib-module/ThemeProvider/useSetTheme.js +22 -0
  262. package/lib-module/ThemeProvider/useTheme.js +14 -0
  263. package/lib-module/ThemeProvider/useThemeTokens.js +105 -0
  264. package/lib-module/ThemeProvider/utils/index.js +2 -0
  265. package/lib-module/ThemeProvider/utils/styles.js +174 -0
  266. package/lib-module/ThemeProvider/utils/theme-tokens.js +151 -0
  267. package/lib-module/ToggleSwitch/ToggleSwitch.js +224 -0
  268. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +202 -0
  269. package/lib-module/ToggleSwitch/index.js +3 -0
  270. package/lib-module/Tooltip/Backdrop.js +52 -0
  271. package/lib-module/Tooltip/Backdrop.native.js +43 -0
  272. package/lib-module/Tooltip/Tooltip.js +332 -0
  273. package/lib-module/Tooltip/dictionary.js +8 -0
  274. package/lib-module/Tooltip/getTooltipPosition.js +164 -0
  275. package/lib-module/Tooltip/index.js +2 -0
  276. package/lib-module/TooltipButton/TooltipButton.js +71 -0
  277. package/lib-module/TooltipButton/index.js +2 -0
  278. package/lib-module/Typography/Typography.js +118 -0
  279. package/lib-module/Typography/index.js +2 -0
  280. package/lib-module/ViewportProvider/ViewportProvider.js +28 -0
  281. package/lib-module/ViewportProvider/index.js +3 -0
  282. package/lib-module/ViewportProvider/useViewport.js +3 -0
  283. package/lib-module/ViewportProvider/useViewportListener.js +43 -0
  284. package/lib-module/index.js +48 -0
  285. package/lib-module/utils/a11y/index.js +2 -0
  286. package/lib-module/utils/a11y/semantics.js +154 -0
  287. package/lib-module/utils/a11y/textSize.js +34 -0
  288. package/lib-module/utils/animation/index.js +2 -0
  289. package/lib-module/utils/animation/useVerticalExpandAnimation.js +49 -0
  290. package/lib-module/utils/children.js +118 -0
  291. package/lib-module/utils/index.js +15 -0
  292. package/lib-module/utils/info/index.js +7 -0
  293. package/lib-module/utils/info/platform/index.js +11 -0
  294. package/lib-module/utils/info/platform/platform.android.js +1 -0
  295. package/lib-module/utils/info/platform/platform.ios.js +1 -0
  296. package/lib-module/utils/info/platform/platform.js +1 -0
  297. package/lib-module/utils/info/platform/platform.native.js +4 -0
  298. package/lib-module/utils/info/versions.js +5 -0
  299. package/lib-module/utils/input.js +180 -0
  300. package/lib-module/utils/pressability.js +97 -0
  301. package/lib-module/utils/props/a11yProps.js +140 -0
  302. package/lib-module/utils/props/clickProps.js +25 -0
  303. package/lib-module/utils/props/componentPropType.js +63 -0
  304. package/lib-module/utils/props/copyPropTypes.js +2 -0
  305. package/lib-module/utils/props/getPropSelector.js +6 -0
  306. package/lib-module/utils/props/hrefAttrsProp.js +30 -0
  307. package/lib-module/utils/props/index.js +16 -0
  308. package/lib-module/utils/props/inputSupportsProps.js +54 -0
  309. package/lib-module/utils/props/linkProps.js +47 -0
  310. package/lib-module/utils/props/paddingProp.js +9 -0
  311. package/lib-module/utils/props/pressProps.js +42 -0
  312. package/lib-module/utils/props/rectProp.js +9 -0
  313. package/lib-module/utils/props/responsiveProps.js +30 -0
  314. package/lib-module/utils/props/selectSystemProps.js +24 -0
  315. package/lib-module/utils/props/spacingProps.js +56 -0
  316. package/lib-module/utils/props/tokens.js +120 -0
  317. package/lib-module/utils/props/variantProp.js +18 -0
  318. package/lib-module/utils/props/viewProps.js +22 -0
  319. package/lib-module/utils/ssr.js +35 -0
  320. package/lib-module/utils/useCopy.js +42 -0
  321. package/lib-module/utils/useHash.js +44 -0
  322. package/lib-module/utils/useHash.native.js +7 -0
  323. package/lib-module/utils/useResponsiveProp.js +47 -0
  324. package/lib-module/utils/useSpacingScale.js +123 -0
  325. package/lib-module/utils/useUniqueId.js +12 -0
  326. package/lib-module/utils/withLinkRouter.js +82 -0
  327. package/package.json +9 -5
  328. package/src/A11yText/index.jsx +7 -3
  329. package/src/ActivityIndicator/Spinner.jsx +56 -44
  330. package/src/ActivityIndicator/Spinner.native.jsx +20 -12
  331. package/src/ActivityIndicator/index.jsx +1 -1
  332. package/src/Box/Box.jsx +15 -13
  333. package/src/Button/Button.jsx +1 -1
  334. package/src/Button/ButtonBase.jsx +20 -12
  335. package/src/Button/ButtonGroup.jsx +17 -8
  336. package/src/Button/ButtonLink.jsx +1 -1
  337. package/src/Button/propTypes.js +2 -1
  338. package/src/Card/Card.jsx +7 -4
  339. package/src/Card/CardBase.jsx +6 -5
  340. package/src/Card/PressableCardBase.jsx +16 -14
  341. package/src/Checkbox/Checkbox.jsx +12 -7
  342. package/src/Divider/Divider.jsx +19 -12
  343. package/src/ExpandCollapse/Control.jsx +12 -7
  344. package/src/ExpandCollapse/ExpandCollapse.jsx +13 -3
  345. package/src/ExpandCollapse/Panel.jsx +15 -5
  346. package/src/Feedback/Feedback.jsx +13 -3
  347. package/src/Fieldset/Fieldset.jsx +1 -1
  348. package/src/FlexGrid/FlexGrid.jsx +11 -5
  349. package/src/FlexGrid/helpers/index.js +1 -3
  350. package/src/HorizontalScroll/HorizontalScroll.jsx +12 -5
  351. package/src/IconButton/IconButton.jsx +18 -12
  352. package/src/InputLabel/InputLabel.jsx +16 -2
  353. package/src/InputSupports/InputSupports.jsx +1 -1
  354. package/src/Link/LinkBase.jsx +15 -12
  355. package/src/List/List.jsx +12 -5
  356. package/src/List/ListItem.jsx +16 -2
  357. package/src/Modal/Modal.jsx +63 -50
  358. package/src/Notification/Notification.jsx +17 -3
  359. package/src/Pagination/PageButton.jsx +3 -2
  360. package/src/Pagination/Pagination.jsx +38 -4
  361. package/src/Pagination/SideButton.jsx +2 -2
  362. package/src/Progress/Progress.jsx +5 -3
  363. package/src/Progress/ProgressBar.jsx +8 -6
  364. package/src/Radio/Radio.jsx +13 -7
  365. package/src/Radio/RadioButton.jsx +13 -3
  366. package/src/Radio/RadioGroup.jsx +14 -2
  367. package/src/RadioCard/RadioCard.jsx +9 -6
  368. package/src/RadioCard/RadioCardGroup.jsx +16 -4
  369. package/src/Search/Search.jsx +15 -3
  370. package/src/Select/Select.jsx +21 -7
  371. package/src/SideNav/Item.jsx +15 -7
  372. package/src/SideNav/SideNav.jsx +13 -2
  373. package/src/Skeleton/Skeleton.jsx +55 -43
  374. package/src/Spacer/Spacer.jsx +10 -18
  375. package/src/StackView/StackView.jsx +13 -12
  376. package/src/StackView/StackWrapBox.jsx +12 -12
  377. package/src/StackView/StackWrapGap.jsx +9 -7
  378. package/src/StackView/getStackedContent.jsx +1 -1
  379. package/src/StepTracker/Step.jsx +7 -4
  380. package/src/StepTracker/StepTracker.jsx +8 -8
  381. package/src/Tabs/Tabs.jsx +63 -23
  382. package/src/Tabs/TabsItem.jsx +22 -14
  383. package/src/Tags/Tags.jsx +16 -7
  384. package/src/TextInput/TextArea.jsx +20 -8
  385. package/src/TextInput/TextInput.jsx +20 -8
  386. package/src/TextInput/TextInputBase.jsx +13 -3
  387. package/src/ThemeProvider/useThemeTokens.js +3 -3
  388. package/src/ThemeProvider/utils/theme-tokens.js +3 -3
  389. package/src/ToggleSwitch/ToggleSwitch.jsx +104 -41
  390. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +211 -0
  391. package/src/ToggleSwitch/index.js +2 -1
  392. package/src/Tooltip/Tooltip.jsx +13 -3
  393. package/src/TooltipButton/TooltipButton.jsx +6 -4
  394. package/src/Typography/Typography.jsx +10 -6
  395. package/src/index.js +2 -2
  396. package/src/utils/a11y/semantics.js +3 -2
  397. package/src/utils/children.jsx +2 -1
  398. package/src/utils/index.js +3 -1
  399. package/src/utils/pressability.js +1 -1
  400. package/src/utils/props/a11yProps.js +151 -0
  401. package/src/utils/props/clickProps.js +31 -0
  402. package/src/utils/props/componentPropType.js +67 -0
  403. package/src/utils/props/copyPropTypes.js +3 -0
  404. package/src/utils/props/getPropSelector.js +14 -0
  405. package/src/utils/props/hrefAttrsProp.js +25 -0
  406. package/src/utils/props/index.js +16 -0
  407. package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
  408. package/src/utils/props/linkProps.js +43 -0
  409. package/src/utils/props/paddingProp.js +10 -0
  410. package/src/utils/props/pressProps.js +45 -0
  411. package/src/utils/props/rectProp.js +10 -0
  412. package/src/utils/props/responsiveProps.js +30 -0
  413. package/src/utils/props/selectSystemProps.js +25 -0
  414. package/src/utils/props/spacingProps.js +58 -0
  415. package/src/utils/props/tokens.js +150 -0
  416. package/src/utils/props/variantProp.js +20 -0
  417. package/src/utils/props/viewProps.js +23 -0
  418. package/src/utils/ssr.js +35 -0
  419. package/src/utils/useResponsiveProp.js +1 -1
  420. package/src/utils/useSpacingScale.js +4 -4
  421. package/src/utils/withLinkRouter.jsx +68 -0
  422. package/stories/TextInput/TextArea.stories.jsx +1 -0
  423. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +5 -1
  424. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +81 -0
  425. package/.ultra.cache.json +0 -1
  426. package/lib/utils/a11y/propTypes.js +0 -61
  427. package/lib/utils/a11y/propTypes.native.js +0 -47
  428. package/lib/utils/propTypes.js +0 -541
  429. package/release-context.json +0 -7
  430. package/src/utils/a11y/propTypes.js +0 -61
  431. package/src/utils/a11y/propTypes.native.js +0 -39
  432. package/src/utils/propTypes.js +0 -531
@@ -0,0 +1,76 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
3
+ import { useA11yInfo } from '../A11yInfoProvider';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { Fragment as _Fragment } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
7
+ const SVG_RADIUS = 20;
8
+ const SVG_CIRCUMFERENCE = SVG_RADIUS * 2 * Math.PI;
9
+ const MIN_SVG_LENGTH = MIN_STROKE_ANGLE / 360 * SVG_CIRCUMFERENCE;
10
+ const MAX_SVG_LENGTH = (1 - MIN_EMPTY_ANGLE / 360) * SVG_CIRCUMFERENCE;
11
+ const animationProps = {
12
+ begin: '0s',
13
+ dur: `${DURATION}ms`,
14
+ fill: 'freeze',
15
+ repeatCount: 'indefinite'
16
+ };
17
+ const bezierProps = {
18
+ calcMode: 'spline',
19
+ keyTimes: '0; 0.5; 1',
20
+ keySplines: `${BEZIER.join(', ')} ; ${BEZIER.join(', ')}`
21
+ }; // We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
22
+ // It's possible to replicate this functionality with RNW animations, but it snags on chrome at least, see https://github.com/telus/universal-design-system/pull/477 for details.
23
+
24
+ const Spinner = /*#__PURE__*/forwardRef(({
25
+ size,
26
+ color,
27
+ thickness,
28
+ label
29
+ }, ref) => {
30
+ const {
31
+ reduceMotionEnabled
32
+ } = useA11yInfo();
33
+ return /*#__PURE__*/_jsx("svg", {
34
+ ref: ref,
35
+ width: `${size}px`,
36
+ height: `${size}px`,
37
+ viewBox: "0 0 48 48",
38
+ "aria-valuetext": label,
39
+ role: "progressbar",
40
+ "aria-busy": true,
41
+ children: /*#__PURE__*/_jsxs("g", {
42
+ children: [reduceMotionEnabled ? null : /*#__PURE__*/_jsx("animateTransform", {
43
+ attributeName: "transform",
44
+ type: "rotate",
45
+ values: `-180 24 24;${360 + MIN_STROKE_ANGLE - 180} 24 24`,
46
+ ...animationProps
47
+ }), /*#__PURE__*/_jsx("circle", {
48
+ fill: "none",
49
+ stroke: color,
50
+ strokeWidth: thickness * 48 / size,
51
+ strokeLinecap: "round",
52
+ cx: "24",
53
+ cy: "24",
54
+ r: "20",
55
+ strokeDasharray: reduceMotionEnabled ? MAX_SVG_LENGTH : [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
56
+ strokeDashoffset: 0,
57
+ children: reduceMotionEnabled ? null : /*#__PURE__*/_jsxs(_Fragment, {
58
+ children: [/*#__PURE__*/_jsx("animate", {
59
+ attributeName: "stroke-dashoffset",
60
+ values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`,
61
+ ...animationProps,
62
+ ...bezierProps
63
+ }), /*#__PURE__*/_jsx("animate", {
64
+ attributeName: "stroke-dasharray",
65
+ values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`,
66
+ ...animationProps,
67
+ ...bezierProps
68
+ })]
69
+ })
70
+ })]
71
+ })
72
+ });
73
+ });
74
+ Spinner.displayName = 'Spinner';
75
+ Spinner.propTypes = propTypes;
76
+ export default Spinner;
@@ -0,0 +1,143 @@
1
+ import React, { forwardRef } from 'react';
2
+ import Animated from "react-native-web/dist/exports/Animated";
3
+ import Easing from "react-native-web/dist/exports/Easing";
4
+ import StyleSheet from "react-native-web/dist/exports/StyleSheet";
5
+ import View from "react-native-web/dist/exports/View";
6
+ import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
7
+ import { useA11yInfo } from '../A11yInfoProvider';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const ea = MIN_EMPTY_ANGLE / 2;
10
+ const sa = MIN_STROKE_ANGLE / 2;
11
+ const Spinner = /*#__PURE__*/forwardRef(({
12
+ size,
13
+ color,
14
+ thickness,
15
+ label
16
+ }, ref) => {
17
+ const {
18
+ current: timer
19
+ } = React.useRef(new Animated.Value(0));
20
+ const {
21
+ reduceMotionEnabled
22
+ } = useA11yInfo();
23
+ React.useLayoutEffect(() => {
24
+ const loop = Animated.timing(timer, {
25
+ duration: DURATION,
26
+ easing: Easing.linear,
27
+ // Animated.loop does not work if useNativeDriver is true on web
28
+ useNativeDriver: true,
29
+ toValue: 1,
30
+ isInteraction: false
31
+ });
32
+ if (!reduceMotionEnabled) Animated.loop(loop).start();else loop.stop();
33
+ }, [timer, reduceMotionEnabled]);
34
+ const frames = 60 * DURATION / 1000;
35
+ const easing = Easing.bezier(...BEZIER);
36
+ const containerStyle = {
37
+ width: size,
38
+ height: size / (reduceMotionEnabled ? 1.5 : 2),
39
+ overflow: 'hidden'
40
+ };
41
+ const animationFrequency = reduceMotionEnabled ? [0] : [0, 1]; // Credit to https://github.com/n4kz/react-native-indicators and https://github.com/callstack/react-native-paper for this
42
+
43
+ return /*#__PURE__*/_jsx(View, {
44
+ ref: ref,
45
+ style: [styles.container],
46
+ accessible: true,
47
+ accessibilityLabel: label,
48
+ accessibilityRole: "progressbar",
49
+ accessibilityState: {
50
+ busy: true
51
+ },
52
+ children: /*#__PURE__*/_jsx(Animated.View, {
53
+ style: [{
54
+ width: size,
55
+ height: size
56
+ }],
57
+ collapsable: false,
58
+ children: animationFrequency.map(index => {
59
+ const inputRange = Array.from(new Array(frames), (_, frameIndex) => frameIndex / (frames - 1));
60
+ const outputRange = Array.from(new Array(frames), (_, frameIndex) => {
61
+ let progress = 2 * frameIndex / (frames - 1);
62
+ const rotation = index ? +(360 - sa) : -(180 - sa);
63
+
64
+ if (progress > 1.0) {
65
+ progress = 2.0 - progress;
66
+ }
67
+
68
+ const direction = index ? -1 : +1;
69
+ return `${direction * (180 - (sa + ea)) * easing(progress) + rotation}deg`;
70
+ });
71
+ const layerStyle = {
72
+ width: size,
73
+ height: size
74
+ };
75
+ const viewportStyle = {
76
+ width: size,
77
+ height: size
78
+ };
79
+
80
+ if (!reduceMotionEnabled) {
81
+ layerStyle.transform = [{
82
+ rotate: timer.interpolate({
83
+ inputRange: [0, 1],
84
+ outputRange: [`${0 + ea + sa}deg`, `${2 * 360 + ea + sa}deg`]
85
+ })
86
+ }];
87
+ viewportStyle.transform = [{
88
+ translateY: index ? -size / 2 : 0
89
+ }, {
90
+ rotate: timer.interpolate({
91
+ inputRange,
92
+ outputRange
93
+ })
94
+ }];
95
+ }
96
+
97
+ const offsetStyle = index ? {
98
+ top: size / 2
99
+ } : null;
100
+ const lineStyle = {
101
+ width: size,
102
+ height: size,
103
+ borderColor: color,
104
+ borderWidth: thickness,
105
+ borderRadius: size / 2
106
+ };
107
+ return /*#__PURE__*/_jsx(Animated.View, {
108
+ style: [styles.layer],
109
+ children: /*#__PURE__*/_jsx(Animated.View, {
110
+ style: layerStyle,
111
+ children: /*#__PURE__*/_jsx(Animated.View, {
112
+ style: [containerStyle, offsetStyle],
113
+ collapsable: false,
114
+ children: /*#__PURE__*/_jsx(Animated.View, {
115
+ style: viewportStyle,
116
+ children: /*#__PURE__*/_jsx(Animated.View, {
117
+ style: containerStyle,
118
+ collapsable: false,
119
+ children: /*#__PURE__*/_jsx(Animated.View, {
120
+ style: lineStyle
121
+ })
122
+ })
123
+ })
124
+ })
125
+ })
126
+ }, index);
127
+ })
128
+ })
129
+ });
130
+ });
131
+ Spinner.displayName = 'Spinner';
132
+ Spinner.propTypes = propTypes;
133
+ const styles = StyleSheet.create({
134
+ container: {
135
+ flexGrow: 0,
136
+ flexShrink: 0
137
+ },
138
+ layer: { ...StyleSheet.absoluteFillObject,
139
+ justifyContent: 'center',
140
+ alignItems: 'center'
141
+ }
142
+ });
143
+ export default Spinner;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useThemeTokens } from '../ThemeProvider';
4
+ import { getTokensPropType, variantProp } from '../utils/props';
5
+ import Spinner from './Spinner';
6
+ /**
7
+ * `ActivityIndicator` renders a visual loading state.
8
+ * It does not handle positioning or layout of that visual loader.
9
+ */
10
+
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+
13
+ const ActivityIndicator = ({
14
+ variant,
15
+ tokens,
16
+ label
17
+ }) => {
18
+ const {
19
+ size,
20
+ color,
21
+ thickness
22
+ } = useThemeTokens('ActivityIndicator', tokens, variant);
23
+ return /*#__PURE__*/_jsx(Spinner, {
24
+ size: size,
25
+ color: color,
26
+ thickness: thickness,
27
+ label: label
28
+ });
29
+ };
30
+
31
+ ActivityIndicator.propTypes = {
32
+ variant: variantProp.propType,
33
+ tokens: getTokensPropType('ActivityIndicator'),
34
+
35
+ /**
36
+ * A visually hidden accessible label describing the action taking place
37
+ */
38
+ label: PropTypes.string.isRequired
39
+ };
40
+ export default ActivityIndicator;
@@ -0,0 +1,12 @@
1
+ import PropTypes from 'prop-types'; // these could be specified by the theme
2
+
3
+ export const DURATION = 1800;
4
+ export const MIN_EMPTY_ANGLE = 60;
5
+ export const MIN_STROKE_ANGLE = 30;
6
+ export const BEZIER = [0.42, 0.0, 0.58, 1.0];
7
+ export const propTypes = {
8
+ color: PropTypes.string.isRequired,
9
+ label: PropTypes.string.isRequired,
10
+ size: PropTypes.number.isRequired,
11
+ thickness: PropTypes.number.isRequired
12
+ };
@@ -0,0 +1,26 @@
1
+ var _ThemeProvider$propTy;
2
+
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import A11yInfoProvider from '../A11yInfoProvider';
6
+ import ViewportProvider from '../ViewportProvider';
7
+ import ThemeProvider from '../ThemeProvider';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+
10
+ const BaseProvider = ({
11
+ defaultTheme,
12
+ children
13
+ }) => /*#__PURE__*/_jsx(A11yInfoProvider, {
14
+ children: /*#__PURE__*/_jsx(ViewportProvider, {
15
+ children: /*#__PURE__*/_jsx(ThemeProvider, {
16
+ defaultTheme: defaultTheme,
17
+ children: children
18
+ })
19
+ })
20
+ });
21
+
22
+ BaseProvider.propTypes = {
23
+ defaultTheme: (_ThemeProvider$propTy = ThemeProvider.propTypes) === null || _ThemeProvider$propTy === void 0 ? void 0 : _ThemeProvider$propTy.defaultTheme,
24
+ children: PropTypes.node.isRequired
25
+ };
26
+ export default BaseProvider;
@@ -0,0 +1,243 @@
1
+ import React, { forwardRef } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import View from "react-native-web/dist/exports/View";
4
+ import ScrollView from "react-native-web/dist/exports/ScrollView";
5
+ import { useThemeTokens } from '../ThemeProvider';
6
+ import { a11yProps, getA11yPropsFromHtmlTag, getTokensPropType, layoutTags, selectSystemProps, spacingProps, useSpacingScale, variantProp, viewProps } from '../utils';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
9
+ /**
10
+ * @typedef {import('../utils/props/spacingProps.js').SpacingValue} SpacingValue
11
+ * @typedef {import('../utils/props/spacingProps.js').SpacingIndex} SpacingIndex
12
+ * @typedef {import('../utils/props/spacingProps.js').SpacingObject} SpacingObject
13
+ * @typedef {import('../utils/props/spacingProps.js').SpacingOptions} SpacingOptions
14
+ */
15
+
16
+ const selectBoxStyles = tokens => {
17
+ const styles = {
18
+ backgroundColor: tokens.backgroundColor
19
+ };
20
+ const paddings = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom']; // Only set on styles if token provided because we spread this object after the spacing scale values
21
+
22
+ paddings.forEach(side => {
23
+ if (tokens[side]) {
24
+ styles[side] = tokens[side];
25
+ }
26
+ });
27
+ return styles;
28
+ };
29
+ /**
30
+ * A layout utility component. Use Box to create space (padding) around content.
31
+ *
32
+ * ## Spacing
33
+ *
34
+ * For most simple uses, pass a number to Box's `space` prop referring to an index in the theme's
35
+ * spacing scale. For example, for a box with the theme's smallest non-zero amount of padding on all sides:
36
+ *
37
+ * ```jsx
38
+ * <Box space={1}>
39
+ * ```
40
+ *
41
+ * #### Targetting specific sides
42
+ *
43
+ * Box allows spacing value props to be assigned to any side or all sides using the following props:
44
+ *
45
+ * - `space` sets the default for all sides, which is overridden by other props below
46
+ * - `horizontal` sets defaults for `left` and `right` (overriding `space` there if it is set)
47
+ * - `vertical` sets defaults for `top` and `bottom` (overriding `space` there if it is set)
48
+ * - `left` sets the left side padding, inside the box's bounds
49
+ * - `right` sets the right side padding, inside the box's bounds
50
+ * - `top` sets the top side padding, inside the box's bounds
51
+ * - `bottom` sets the bottom side padding, inside the box's bounds
52
+ *
53
+ * Box only controls spacing within its bounds. If space is needed around a box outside of its bounds,
54
+ * use `Spacer`, `StackView` or wrap the `Box` inside another `Box`.
55
+ *
56
+ * #### Viewport-specific spacing
57
+ *
58
+ * Responsive behaviours may be set by passing any of the above props an object keyed by viewports.
59
+ *
60
+ * For example, if a theme's spacing scale is [0, 4, 8...], this below will have padding of 4px on top,
61
+ * bottom, and right, and its left padding will be 0px on xs, sm and md viewports and 8px on lg and xl viewports:
62
+ *
63
+ * ```jsx
64
+ * <Box space={1} left={{ xs: 0, lg: 2 }} />`
65
+ * ```
66
+ *
67
+ * #### Subtracting from spacing
68
+ *
69
+ * A parent may sometimes need to reduce the spacing size on one or more sides of a `Box` by some variable.
70
+ * For example, the parent may have a border on one side and want to reduce the spacing of a child box
71
+ * by the width of that border on that side. This can be achieved using the `subtract` option of the
72
+ * spacing object, for example:
73
+ *
74
+ * ```jsx
75
+ * <Box space={2} left={{ space: 2, options: { subtract: themeTokens.borderWidthLeft } }} />`
76
+ * ```
77
+ *
78
+ * See `useSpacingScale` hook for other spacing value options and documentation.
79
+ *
80
+ * ## Theming
81
+ *
82
+ * Box is intended for layout, so minimal theming is supported. Use components like `Card` for
83
+ * more sophisticated theming.
84
+ *
85
+ * ## Scroll
86
+ *
87
+ * If passed, the box will be scrollable. If an object is passed, it will be passed to React Native's
88
+ * `ScrollView` component as props.
89
+ *
90
+ * When building native iOS and Android apps, it is important to remember to ensure any screen containing
91
+ * text content is inside a scrollable box, as screens are not scrollable by default and even very
92
+ * short text will require scrolling on small devices at the highest accessibility text scaling settings.
93
+ */
94
+
95
+
96
+ const Box = /*#__PURE__*/forwardRef(({
97
+ space,
98
+ horizontal = space,
99
+ vertical = space,
100
+ top = vertical,
101
+ bottom = vertical,
102
+ left = horizontal,
103
+ right = horizontal,
104
+ flex,
105
+ children,
106
+ variant,
107
+ tokens,
108
+ scroll,
109
+ tag,
110
+ accessibilityRole,
111
+ testID,
112
+ dataSet,
113
+ ...rest
114
+ }, ref) => {
115
+ const props = { ...getA11yPropsFromHtmlTag(tag, accessibilityRole),
116
+ ...selectProps(rest)
117
+ };
118
+ const themeTokens = useThemeTokens('Box', tokens, variant);
119
+ const styles = {
120
+ flex,
121
+ paddingLeft: useSpacingScale(left),
122
+ paddingRight: useSpacingScale(right),
123
+ paddingTop: useSpacingScale(top),
124
+ paddingBottom: useSpacingScale(bottom),
125
+ ...selectBoxStyles(themeTokens)
126
+ };
127
+
128
+ if (scroll) {
129
+ const scrollProps = typeof scroll === 'object' ? scroll : {};
130
+ scrollProps.contentContainerStyle = [styles, scrollProps.contentContainerStyle];
131
+ return /*#__PURE__*/_jsx(ScrollView, { ...scrollProps,
132
+ ...props,
133
+ testID: testID,
134
+ dataSet: dataSet,
135
+ ref: ref,
136
+ children: children
137
+ });
138
+ }
139
+
140
+ return /*#__PURE__*/_jsx(View, { ...props,
141
+ style: styles,
142
+ testID: testID,
143
+ dataSet: dataSet,
144
+ ref: ref,
145
+ children: children
146
+ });
147
+ });
148
+ Box.displayName = 'Box';
149
+ Box.propTypes = { ...selectedSystemPropTypes,
150
+ variant: variantProp.propType,
151
+ tokens: getTokensPropType('Box'),
152
+
153
+ /**
154
+ * Sets default padding on all sides of the box using the theme's spacing scale.
155
+ *
156
+ * @see {@link SpacingValue}
157
+ */
158
+ space: spacingProps.types.spacingValue,
159
+
160
+ /**
161
+ * Sets top and bottom padding using the theme's spacing scale.
162
+ *
163
+ * @see {@link SpacingValue}
164
+ */
165
+ vertical: spacingProps.types.spacingValue,
166
+
167
+ /**
168
+ * Sets left and right padding using the theme's spacing scale.
169
+ *
170
+ * @see {@link SpacingValue}
171
+ */
172
+ horizontal: spacingProps.types.spacingValue,
173
+
174
+ /**
175
+ * Sets bottom padding using the theme's spacing scale.
176
+ *
177
+ * @see {@link SpacingValue}
178
+ */
179
+ bottom: spacingProps.types.spacingValue,
180
+
181
+ /**
182
+ * Sets left padding using the theme's spacing scale.
183
+ *
184
+ * @see {@link SpacingValue}
185
+ */
186
+ left: spacingProps.types.spacingValue,
187
+
188
+ /**
189
+ * Sets right padding using the theme's spacing scale.
190
+ *
191
+ * @see {@link SpacingValue}
192
+ */
193
+ right: spacingProps.types.spacingValue,
194
+
195
+ /**
196
+ * Sets top padding using the theme's spacing scale.
197
+ *
198
+ * @see {@link SpacingValue}
199
+ */
200
+ top: spacingProps.types.spacingValue,
201
+
202
+ /**
203
+ * Sets the `flex` style, which controls `flexGrow`, `flexShrink` and `flexBasis` styles.
204
+ *
205
+ * Set as 1 for the box to stretch and grow to fit in the available space, or another number to share
206
+ * space disproportionately with siblings. See https://reactnative.dev/docs/flexbox#flex for details.
207
+ *
208
+ * With the default `0`, the box takes its minimum width from its content.
209
+ */
210
+ flex: PropTypes.number,
211
+
212
+ /**
213
+ * Renders a scrollable ScrollView instead of an unscrollable View.
214
+ *
215
+ * May take an object of ScrollView props which are passed to the rendered ScrollView.
216
+ */
217
+ scroll: PropTypes.oneOfType([PropTypes.bool, ScrollView.propTypes ? PropTypes.shape(ScrollView.propTypes) : PropTypes.object]),
218
+
219
+ /**
220
+ * Optional semantic HTML tag, to apply to the container on web. Does not change styling.
221
+ *
222
+ * In native apps, if a header tag is provided ("h1", "h2" etc) and accessibilityRole prop
223
+ * is not defined, the accessibilityRole will default to "heading".
224
+ */
225
+ tag: PropTypes.oneOf(layoutTags),
226
+
227
+ /**
228
+ * Use in tests if the box itself needs to be targetted and no other way of selecting the
229
+ * box is available (e.g. it cannot be targetted using an appropriate `accessibilityRole`).
230
+ */
231
+ testID: PropTypes.string,
232
+
233
+ /**
234
+ * @ignore
235
+ */
236
+ dataSet: PropTypes.object,
237
+
238
+ /**
239
+ * Box accepts any content as children.
240
+ */
241
+ children: PropTypes.node.isRequired
242
+ };
243
+ export default Box;
@@ -0,0 +1,2 @@
1
+ import Box from './Box';
2
+ export default Box;
@@ -0,0 +1,25 @@
1
+ import React, { forwardRef } from 'react';
2
+ import ButtonBase from './ButtonBase';
3
+ import buttonPropTypes, { textAndA11yText } from './propTypes';
4
+ import { useThemeTokensCallback } from '../ThemeProvider';
5
+ import { a11yProps } from '../utils/props';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const Button = /*#__PURE__*/forwardRef(({
8
+ accessibilityRole = 'button',
9
+ tokens,
10
+ variant,
11
+ ...props
12
+ }, ref) => {
13
+ const getTokens = useThemeTokensCallback('Button', tokens, variant);
14
+ return /*#__PURE__*/_jsx(ButtonBase, { ...props,
15
+ tokens: getTokens,
16
+ accessibilityRole: accessibilityRole,
17
+ ref: ref
18
+ });
19
+ });
20
+ Button.displayName = 'Button';
21
+ Button.propTypes = { ...a11yProps.types,
22
+ ...buttonPropTypes,
23
+ children: textAndA11yText
24
+ };
25
+ export default Button;