@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
@@ -40,6 +40,9 @@ const parseComponentDocs = (name, generated) => {
40
40
  const components = {}
41
41
 
42
42
  Object.entries(allExports).forEach(([name, exp]) => {
43
+ // fail fast with meaningful error on typos, missing exports, etc
44
+ if (!exp) throw new Error(`components-base export "${name}" is ${exp} (typeof ${typeof exp})`)
45
+
43
46
  if (exp.__docgenInfo) {
44
47
  // populated by babel-plugin-react-docgen
45
48
  components[name] = parseComponentDocs(name, exp.__docgenInfo)
@@ -15,7 +15,7 @@ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Vi
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
- var _propTypes2 = require("../utils/propTypes");
18
+ var _props = require("../utils/props");
19
19
 
20
20
  var _jsxRuntime = require("react/jsx-runtime");
21
21
 
@@ -25,18 +25,20 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
25
 
26
26
  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; }
27
27
 
28
+ const [selectProps, selectedSystemPropTypes] = (0, _props.selectSystemProps)([_props.a11yProps, _props.viewProps]);
28
29
  /**
29
30
  * A11yText is a zero-size invisible element that adds text to be read by screen readers.
30
31
  *
31
32
  * It should be used to add selectable screen-reader-only text to the main document flow,
32
33
  * as a sibling to blocks of text like paragraphs and interactive elements like buttons.
33
34
  */
35
+
34
36
  const A11yText = /*#__PURE__*/(0, _react.forwardRef)(({
35
37
  text,
36
38
  heading,
37
39
  ...rest
38
40
  }, ref) => {
39
- const a11y = _propTypes2.a11yProps.select({
41
+ const selectedProps = selectProps({
40
42
  // On iOS, needs `accessible` to be true to be focusable without non-a11y content.
41
43
  // On Web, `accessible` causes RNW to set attributes that may make the element be treated as a group.
42
44
  // On Android, may cause this to be skipped when with `<Text>` siblings in an `accessible` View,
@@ -46,15 +48,14 @@ const A11yText = /*#__PURE__*/(0, _react.forwardRef)(({
46
48
  accessibilityRole: heading ? 'header' : 'text',
47
49
  ...rest
48
50
  });
49
-
50
51
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
51
52
  style: styles.invisible,
52
53
  ref: ref,
53
- ...a11y
54
+ ...selectedProps
54
55
  });
55
56
  });
56
57
  A11yText.displayName = 'A11yText';
57
- A11yText.propTypes = {
58
+ A11yText.propTypes = { ...selectedSystemPropTypes,
58
59
  text: _propTypes.default.string.isRequired,
59
60
  heading: _propTypes.default.bool
60
61
  };
@@ -9,6 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _shared = require("./shared");
11
11
 
12
+ var _A11yInfoProvider = require("../A11yInfoProvider");
13
+
12
14
  var _jsxRuntime = require("react/jsx-runtime");
13
15
 
14
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -37,44 +39,51 @@ const Spinner = /*#__PURE__*/(0, _react.forwardRef)(({
37
39
  color,
38
40
  thickness,
39
41
  label
40
- }, ref) => /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
41
- ref: ref,
42
- width: `${size}px`,
43
- height: `${size}px`,
44
- viewBox: "0 0 48 48",
45
- "aria-valuetext": label,
46
- role: "progressbar",
47
- "aria-busy": true,
48
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
49
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("animateTransform", {
50
- attributeName: "transform",
51
- type: "rotate",
52
- values: `-180 24 24;${360 + _shared.MIN_STROKE_ANGLE - 180} 24 24`,
53
- ...animationProps
54
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("circle", {
55
- fill: "none",
56
- stroke: color,
57
- strokeWidth: thickness * 48 / size,
58
- strokeLinecap: "round",
59
- cx: "24",
60
- cy: "24",
61
- r: "20",
62
- strokeDasharray: [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
63
- strokeDashoffset: 0,
64
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("animate", {
65
- attributeName: "stroke-dashoffset",
66
- values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`,
67
- ...animationProps,
68
- ...bezierProps
69
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("animate", {
70
- attributeName: "stroke-dasharray",
71
- values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`,
72
- ...animationProps,
73
- ...bezierProps
42
+ }, ref) => {
43
+ const {
44
+ reduceMotionEnabled
45
+ } = (0, _A11yInfoProvider.useA11yInfo)();
46
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
47
+ ref: ref,
48
+ width: `${size}px`,
49
+ height: `${size}px`,
50
+ viewBox: "0 0 48 48",
51
+ "aria-valuetext": label,
52
+ role: "progressbar",
53
+ "aria-busy": true,
54
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
55
+ children: [reduceMotionEnabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)("animateTransform", {
56
+ attributeName: "transform",
57
+ type: "rotate",
58
+ values: `-180 24 24;${360 + _shared.MIN_STROKE_ANGLE - 180} 24 24`,
59
+ ...animationProps
60
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("circle", {
61
+ fill: "none",
62
+ stroke: color,
63
+ strokeWidth: thickness * 48 / size,
64
+ strokeLinecap: "round",
65
+ cx: "24",
66
+ cy: "24",
67
+ r: "20",
68
+ strokeDasharray: reduceMotionEnabled ? MAX_SVG_LENGTH : [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
69
+ strokeDashoffset: 0,
70
+ children: reduceMotionEnabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("animate", {
72
+ attributeName: "stroke-dashoffset",
73
+ values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`,
74
+ ...animationProps,
75
+ ...bezierProps
76
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("animate", {
77
+ attributeName: "stroke-dasharray",
78
+ values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`,
79
+ ...animationProps,
80
+ ...bezierProps
81
+ })]
82
+ })
74
83
  })]
75
- })]
76
- })
77
- }));
84
+ })
85
+ });
86
+ });
78
87
  Spinner.displayName = 'Spinner';
79
88
  Spinner.propTypes = _shared.propTypes;
80
89
  var _default = Spinner;
@@ -17,6 +17,8 @@ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Vi
17
17
 
18
18
  var _shared = require("./shared");
19
19
 
20
+ var _A11yInfoProvider = require("../A11yInfoProvider");
21
+
20
22
  var _jsxRuntime = require("react/jsx-runtime");
21
23
 
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -37,6 +39,10 @@ const Spinner = /*#__PURE__*/(0, _react.forwardRef)(({
37
39
  current: timer
38
40
  } = _react.default.useRef(new _Animated.default.Value(0));
39
41
 
42
+ const {
43
+ reduceMotionEnabled
44
+ } = (0, _A11yInfoProvider.useA11yInfo)();
45
+
40
46
  _react.default.useLayoutEffect(() => {
41
47
  const loop = _Animated.default.timing(timer, {
42
48
  duration: _shared.DURATION,
@@ -47,8 +53,8 @@ const Spinner = /*#__PURE__*/(0, _react.forwardRef)(({
47
53
  isInteraction: false
48
54
  });
49
55
 
50
- _Animated.default.loop(loop).start();
51
- }, [timer]);
56
+ if (!reduceMotionEnabled) _Animated.default.loop(loop).start();else loop.stop();
57
+ }, [timer, reduceMotionEnabled]);
52
58
 
53
59
  const frames = 60 * _shared.DURATION / 1000;
54
60
 
@@ -56,9 +62,10 @@ const Spinner = /*#__PURE__*/(0, _react.forwardRef)(({
56
62
 
57
63
  const containerStyle = {
58
64
  width: size,
59
- height: size / 2,
65
+ height: size / (reduceMotionEnabled ? 1.5 : 2),
60
66
  overflow: 'hidden'
61
- }; // Credit to https://github.com/n4kz/react-native-indicators and https://github.com/callstack/react-native-paper for this
67
+ };
68
+ 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
62
69
 
63
70
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
64
71
  ref: ref,
@@ -75,7 +82,7 @@ const Spinner = /*#__PURE__*/(0, _react.forwardRef)(({
75
82
  height: size
76
83
  }],
77
84
  collapsable: false,
78
- children: [0, 1].map(index => {
85
+ children: animationFrequency.map(index => {
79
86
  const inputRange = Array.from(new Array(frames), (_, frameIndex) => frameIndex / (frames - 1));
80
87
  const outputRange = Array.from(new Array(frames), (_, frameIndex) => {
81
88
  let progress = 2 * frameIndex / (frames - 1);
@@ -90,26 +97,30 @@ const Spinner = /*#__PURE__*/(0, _react.forwardRef)(({
90
97
  });
91
98
  const layerStyle = {
92
99
  width: size,
93
- height: size,
94
- transform: [{
100
+ height: size
101
+ };
102
+ const viewportStyle = {
103
+ width: size,
104
+ height: size
105
+ };
106
+
107
+ if (!reduceMotionEnabled) {
108
+ layerStyle.transform = [{
95
109
  rotate: timer.interpolate({
96
110
  inputRange: [0, 1],
97
111
  outputRange: [`${0 + ea + sa}deg`, `${2 * 360 + ea + sa}deg`]
98
112
  })
99
- }]
100
- };
101
- const viewportStyle = {
102
- width: size,
103
- height: size,
104
- transform: [{
113
+ }];
114
+ viewportStyle.transform = [{
105
115
  translateY: index ? -size / 2 : 0
106
116
  }, {
107
117
  rotate: timer.interpolate({
108
118
  inputRange,
109
119
  outputRange
110
120
  })
111
- }]
112
- };
121
+ }];
122
+ }
123
+
113
124
  const offsetStyle = index ? {
114
125
  top: size / 2
115
126
  } : null;
@@ -11,7 +11,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _ThemeProvider = require("../ThemeProvider");
13
13
 
14
- var _propTypes2 = require("../utils/propTypes");
14
+ var _props = require("../utils/props");
15
15
 
16
16
  var _Spinner = _interopRequireDefault(require("./Spinner"));
17
17
 
@@ -42,8 +42,8 @@ const ActivityIndicator = ({
42
42
  };
43
43
 
44
44
  ActivityIndicator.propTypes = {
45
- variant: _propTypes2.variantProp.propType,
46
- tokens: (0, _propTypes2.getTokensPropType)('ActivityIndicator'),
45
+ variant: _props.variantProp.propType,
46
+ tokens: (0, _props.getTokensPropType)('ActivityIndicator'),
47
47
 
48
48
  /**
49
49
  * A visually hidden accessible label describing the action taking place
package/lib/Box/Box.js CHANGED
@@ -25,12 +25,14 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
25
 
26
26
  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; }
27
27
 
28
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
28
29
  /**
29
- * @typedef {import('../utils/propTypes.js').SpacingValue} SpacingValue
30
- * @typedef {import('../utils/propTypes.js').SpacingIndex} SpacingIndex
31
- * @typedef {import('../utils/propTypes.js').SpacingObject} SpacingObject
32
- * @typedef {import('../utils/propTypes.js').SpacingOptions} SpacingOptions
30
+ * @typedef {import('../utils/props/spacingProps.js').SpacingValue} SpacingValue
31
+ * @typedef {import('../utils/props/spacingProps.js').SpacingIndex} SpacingIndex
32
+ * @typedef {import('../utils/props/spacingProps.js').SpacingObject} SpacingObject
33
+ * @typedef {import('../utils/props/spacingProps.js').SpacingOptions} SpacingOptions
33
34
  */
35
+
34
36
  const selectBoxStyles = tokens => {
35
37
  const styles = {
36
38
  backgroundColor: tokens.backgroundColor
@@ -131,8 +133,7 @@ const Box = /*#__PURE__*/(0, _react.forwardRef)(({
131
133
  ...rest
132
134
  }, ref) => {
133
135
  const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
134
- ..._utils.a11yProps.select(rest),
135
- ..._utils.viewProps.select(rest)
136
+ ...selectProps(rest)
136
137
  };
137
138
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Box', tokens, variant);
138
139
  const styles = {
@@ -165,8 +166,7 @@ const Box = /*#__PURE__*/(0, _react.forwardRef)(({
165
166
  });
166
167
  });
167
168
  Box.displayName = 'Box';
168
- Box.propTypes = { ..._utils.a11yProps.propTypes,
169
- ..._utils.viewProps.types,
169
+ Box.propTypes = { ...selectedSystemPropTypes,
170
170
  variant: _utils.variantProp.propType,
171
171
  tokens: (0, _utils.getTokensPropType)('Box'),
172
172
 
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireWildcard(require("./propTypes"));
13
13
 
14
14
  var _ThemeProvider = require("../ThemeProvider");
15
15
 
16
- var _propTypes2 = require("../utils/propTypes");
16
+ var _props = require("../utils/props");
17
17
 
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
19
 
@@ -37,7 +37,7 @@ const Button = /*#__PURE__*/(0, _react.forwardRef)(({
37
37
  });
38
38
  });
39
39
  Button.displayName = 'Button';
40
- Button.propTypes = { ..._propTypes2.a11yProps.types,
40
+ Button.propTypes = { ..._props.a11yProps.types,
41
41
  ..._propTypes.default,
42
42
  children: _propTypes.textAndA11yText
43
43
  };
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
10
12
  var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
11
13
 
12
14
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
@@ -17,7 +19,7 @@ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/export
17
19
 
18
20
  var _utils = require("../ThemeProvider/utils");
19
21
 
20
- var _propTypes = _interopRequireDefault(require("./propTypes"));
22
+ var _propTypes2 = _interopRequireDefault(require("./propTypes"));
21
23
 
22
24
  var _utils2 = require("../utils");
23
25
 
@@ -29,6 +31,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
29
31
 
30
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; }
31
33
 
34
+ const [selectProps, selectedSystemPropTypes] = (0, _utils2.selectSystemProps)([_utils2.a11yProps, _utils2.linkProps, _utils2.viewProps]);
35
+
32
36
  const getOuterBorderOffset = ({
33
37
  outerBorderGap = 0,
34
38
  outerBorderWidth = 0
@@ -170,18 +174,22 @@ const selectWebOnlyStyles = (inactive, themeTokens, {
170
174
  };
171
175
 
172
176
  const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
177
+ id,
173
178
  href,
174
179
  hrefAttrs,
175
180
  children,
176
- onPress,
177
181
  tokens = {},
178
182
  disabled = false,
179
183
  // alias for inactive
180
184
  inactive = disabled,
181
185
  selected = false,
182
- dataSet,
183
- ...rest
186
+ ...rawRest
184
187
  }, ref) => {
188
+ const {
189
+ onPress,
190
+ ...rest
191
+ } = _utils2.clickProps.toPressProps(rawRest);
192
+
185
193
  const extraButtonState = {
186
194
  inactive,
187
195
  selected
@@ -189,11 +197,11 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
189
197
 
190
198
  const resolveButtonTokens = pressableState => (0, _utils2.resolvePressableTokens)(tokens, pressableState, extraButtonState);
191
199
 
192
- const a11y = _utils2.a11yProps.select(rest);
200
+ const systemProps = selectProps(rest);
193
201
 
194
202
  const getPressableStyle = pressableState => {
195
203
  const themeTokens = resolveButtonTokens(pressableState);
196
- return [staticStyles.row, selectWebOnlyStyles(inactive, themeTokens, a11y), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
204
+ return [staticStyles.row, selectWebOnlyStyles(inactive, themeTokens, systemProps), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
197
205
  };
198
206
 
199
207
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
@@ -205,9 +213,8 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
205
213
  }),
206
214
  style: getPressableStyle,
207
215
  disabled: inactive,
208
- dataSet: dataSet,
209
216
  hrefAttrs: hrefAttrs,
210
- ...a11y,
217
+ ...systemProps,
211
218
  children: pressableState => {
212
219
  const themeTokens = resolveButtonTokens(pressableState);
213
220
  const containerStyles = selectInnerContainerStyles(themeTokens);
@@ -217,6 +224,7 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
217
224
 
218
225
  const stretchStyles = themeTokens.width ? staticStyles.stretch : staticStyles.align;
219
226
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
227
+ id: id,
220
228
  style: [containerStyles, borderStyles, stretchStyles, staticStyles.row, _Platform.default.select({
221
229
  web: {
222
230
  maxWidth: '100%',
@@ -235,9 +243,13 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
235
243
  });
236
244
  });
237
245
  ButtonBase.displayName = 'ButtonBase';
238
- ButtonBase.propTypes = { ..._utils2.a11yProps.types,
239
- ..._propTypes.default,
240
- ..._utils2.linkProps.types
246
+ ButtonBase.propTypes = {
247
+ id: _propTypes.default.string,
248
+ ...selectedSystemPropTypes,
249
+ ..._propTypes2.default
250
+ };
251
+ ButtonBase.defaultProps = {
252
+ id: undefined
241
253
  };
242
254
 
243
255
  const staticStyles = _StyleSheet.default.create({
@@ -265,5 +277,6 @@ const staticStyles = _StyleSheet.default.create({
265
277
  }
266
278
  });
267
279
 
268
- var _default = ButtonBase;
280
+ var _default = (0, _utils2.withLinkRouter)(ButtonBase);
281
+
269
282
  exports.default = _default;
@@ -21,7 +21,7 @@ var _ViewportProvider = require("../ViewportProvider");
21
21
 
22
22
  var _ThemeProvider = require("../ThemeProvider");
23
23
 
24
- var _propTypes2 = require("../utils/propTypes");
24
+ var _props = require("../utils/props");
25
25
 
26
26
  var _input = require("../utils/input");
27
27
 
@@ -35,6 +35,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
35
35
 
36
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
37
 
38
+ const [selectProps, selectedSystemPropTypes] = (0, _props.selectSystemProps)([_props.a11yProps, _props.pressProps, _props.viewProps]);
38
39
  const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)(({
39
40
  variant,
40
41
  tokens,
@@ -56,7 +57,7 @@ const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)(({
56
57
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('ButtonGroup', tokens, variant, {
57
58
  viewport
58
59
  });
59
- const stackTokens = (0, _propTypes2.selectTokens)('StackView', themeTokens);
60
+ const stackTokens = (0, _props.selectTokens)('StackView', themeTokens);
60
61
  const {
61
62
  direction,
62
63
  space
@@ -72,14 +73,12 @@ const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)(({
72
73
  onChange,
73
74
  readOnly
74
75
  });
75
-
76
- const a11y = _propTypes2.a11yProps.select({
76
+ const systemProps = selectProps({
77
77
  accessibilityRole,
78
78
  ...rest
79
79
  });
80
-
81
- const itemA11yRole = a11y.accessibilityRole === 'radiogroup' ? 'radio' : 'checkbox';
82
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, { ...a11y,
80
+ const itemA11yRole = systemProps.accessibilityRole === 'radiogroup' ? 'radio' : 'checkbox';
81
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, { ...systemProps,
83
82
  space: space,
84
83
  direction: direction,
85
84
  tokens: stackTokens,
@@ -109,7 +108,7 @@ const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)(({
109
108
  },
110
109
  accessibilityRole: itemA11yRole,
111
110
  accessibilityLabel,
112
- ..._propTypes2.a11yProps.getPositionInSet(items.length, index)
111
+ ..._props.a11yProps.getPositionInSet(items.length, index)
113
112
  }; // Ensure button is direct child of group as MacOS voiceover only applies "X of Y" to
114
113
  // "radio" if it's a direct child of "radiogroup", even if aria-posinset etc exists
115
114
 
@@ -127,10 +126,9 @@ const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)(({
127
126
  });
128
127
  });
129
128
  ButtonGroup.displayName = 'ButtonGroup';
130
- ButtonGroup.propTypes = { ..._propTypes2.a11yProps.propTypes,
131
- ..._propTypes2.pressProps.propTypes,
132
- tokens: (0, _propTypes2.getTokensPropType)('ButtonGroup'),
133
- variant: _propTypes2.variantProp.propType,
129
+ ButtonGroup.propTypes = { ...selectedSystemPropTypes,
130
+ tokens: (0, _props.getTokensPropType)('ButtonGroup'),
131
+ variant: _props.variantProp.propType,
134
132
 
135
133
  /**
136
134
  * The maximum number of items a user may select at once. Defaults to 1 and behaves
@@ -11,7 +11,7 @@ var _ButtonBase = _interopRequireDefault(require("./ButtonBase"));
11
11
 
12
12
  var _propTypes = _interopRequireWildcard(require("./propTypes"));
13
13
 
14
- var _propTypes2 = require("../utils/propTypes");
14
+ var _props = require("../utils/props");
15
15
 
16
16
  var _ThemeProvider = require("../ThemeProvider");
17
17
 
@@ -37,7 +37,7 @@ const ButtonLink = /*#__PURE__*/(0, _react.forwardRef)(({
37
37
  const {
38
38
  hrefAttrs,
39
39
  rest
40
- } = _propTypes2.hrefAttrsProp.bundle(props);
40
+ } = _props.hrefAttrsProp.bundle(props);
41
41
 
42
42
  const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Button', tokens, variant);
43
43
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
@@ -50,9 +50,9 @@ const ButtonLink = /*#__PURE__*/(0, _react.forwardRef)(({
50
50
  });
51
51
  });
52
52
  ButtonLink.displayName = 'ButtonLink';
53
- ButtonLink.propTypes = { ..._propTypes2.a11yProps.types,
53
+ ButtonLink.propTypes = { ..._props.a11yProps.types,
54
54
  ..._propTypes.default,
55
- ..._propTypes2.linkProps.types,
55
+ ..._props.linkProps.types,
56
56
  children: _propTypes.textAndA11yText
57
57
  };
58
58
  var _default = ButtonLink;
@@ -9,7 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
10
10
  var _airbnbPropTypes = _interopRequireDefault(require("airbnb-prop-types"));
11
11
 
12
- var _propTypes2 = require("../utils/propTypes");
12
+ var _props = require("../utils/props");
13
13
 
14
14
  var _A11yText = _interopRequireDefault(require("../A11yText"));
15
15
 
@@ -19,6 +19,8 @@ const textAndA11yText = _airbnbPropTypes.default.childrenOf(_propTypes.default.o
19
19
 
20
20
  exports.textAndA11yText = textAndA11yText;
21
21
  const buttonPropTypes = {
22
+ tokens: (0, _props.getTokensPropType)('Button'),
23
+
22
24
  /**
23
25
  * If true, prevents the button from being pressed, changes the cursor (on web) and accessibility
24
26
  * attributes to communicate this to the user, and applies `inactive: true` appearances from the theme
@@ -44,7 +46,7 @@ const buttonPropTypes = {
44
46
  * Function called when the button is pressed. Required unless the button has a href.
45
47
  */
46
48
  onPress: _propTypes.default.func,
47
- variant: _propTypes2.variantProp.propType
49
+ variant: _props.variantProp.propType
48
50
  };
49
51
  var _default = buttonPropTypes;
50
52
  exports.default = _default;
package/lib/Card/Card.js CHANGED
@@ -15,7 +15,7 @@ var _utils = require("../utils");
15
15
 
16
16
  var _ViewportProvider = require("../ViewportProvider");
17
17
 
18
- var _propTypes2 = require("../utils/propTypes");
18
+ var _props = require("../utils/props");
19
19
 
20
20
  var _CardBase = _interopRequireDefault(require("./CardBase"));
21
21
 
@@ -23,6 +23,7 @@ var _jsxRuntime = require("react/jsx-runtime");
23
23
 
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
 
26
+ const [selectProps, selectedSystemPropTypes] = (0, _props.selectSystemProps)([_props.a11yProps, _props.viewProps]);
26
27
  /**
27
28
  * A basic card component, unstyled by default.
28
29
  *
@@ -71,6 +72,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
71
72
  * you automatically make inaccessible its children, which may or may not be appropriate
72
73
  * depending on what you are trying to achieve.
73
74
  */
75
+
74
76
  const Card = ({
75
77
  children,
76
78
  tokens,
@@ -85,16 +87,15 @@ const Card = ({
85
87
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CardBase.default, {
86
88
  tokens: themeTokens,
87
89
  dataSet: dataSet,
88
- ...rest,
90
+ ...selectProps(rest),
89
91
  children: children
90
92
  });
91
93
  };
92
94
 
93
- Card.propTypes = {
95
+ Card.propTypes = { ...selectedSystemPropTypes,
94
96
  children: _propTypes.default.node,
95
97
  tokens: (0, _utils.getTokensPropType)('Card'),
96
- variant: _utils.variantProp.propType,
97
- ..._propTypes2.a11yProps.types
98
+ variant: _utils.variantProp.propType
98
99
  };
99
100
  var _default = Card;
100
101
  exports.default = _default;
@@ -15,7 +15,7 @@ var _ThemeProvider = require("../ThemeProvider");
15
15
 
16
16
  var _utils = require("../utils");
17
17
 
18
- var _propTypes2 = require("../utils/propTypes");
18
+ var _props = require("../utils/props");
19
19
 
20
20
  var _jsxRuntime = require("react/jsx-runtime");
21
21
 
@@ -25,7 +25,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
25
 
26
26
  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; }
27
27
 
28
- // Ensure explicit selection of tokens
28
+ const [selectProps, selectedSystemPropTypes] = (0, _props.selectSystemProps)([_props.a11yProps, _props.viewProps]); // Ensure explicit selection of tokens
29
+
29
30
  const selectStyles = ({
30
31
  flex,
31
32
  backgroundColor,
@@ -64,9 +65,7 @@ const CardBase = /*#__PURE__*/(0, _react.forwardRef)(({
64
65
  ...rest
65
66
  }, ref) => {
66
67
  const cardStyle = selectStyles(typeof tokens === 'function' ? tokens() : tokens);
67
- const props = { ..._propTypes2.a11yProps.select(rest),
68
- ..._propTypes2.viewProps.select(rest)
69
- };
68
+ const props = selectProps(rest);
70
69
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
71
70
  style: cardStyle,
72
71
  dataSet: dataSet,
@@ -76,11 +75,9 @@ const CardBase = /*#__PURE__*/(0, _react.forwardRef)(({
76
75
  });
77
76
  });
78
77
  CardBase.displayName = 'CardBase';
79
- CardBase.propTypes = {
78
+ CardBase.propTypes = { ...selectedSystemPropTypes,
80
79
  children: _propTypes.default.node,
81
- tokens: (0, _utils.getTokensPropType)('Card'),
82
- ..._propTypes2.viewProps.types,
83
- ..._propTypes2.a11yProps.types
80
+ tokens: (0, _utils.getTokensPropType)('Card')
84
81
  };
85
82
  var _default = CardBase;
86
83
  exports.default = _default;