@telus-uds/components-base 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/.turbo/turbo-build.log +8 -0
  2. package/CHANGELOG.json +61 -0
  3. package/CHANGELOG.md +45 -2
  4. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
  5. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
  6. package/__tests__/FlexGrid/Col.test.jsx +6 -10
  7. package/__tests__/utils/props.test.js +36 -0
  8. package/__tests__/utils/semantics.test.jsx +1 -10
  9. package/babel.config.js +27 -5
  10. package/component-docs.json +170 -494
  11. package/generate-component-docs.js +3 -0
  12. package/lib/A11yText/index.js +6 -5
  13. package/lib/ActivityIndicator/Spinner.js +46 -37
  14. package/lib/ActivityIndicator/Spinner.native.js +26 -15
  15. package/lib/ActivityIndicator/index.js +3 -3
  16. package/lib/Box/Box.js +8 -8
  17. package/lib/Button/Button.js +2 -2
  18. package/lib/Button/ButtonBase.js +7 -8
  19. package/lib/Button/ButtonGroup.js +10 -12
  20. package/lib/Button/ButtonLink.js +4 -4
  21. package/lib/Button/propTypes.js +4 -2
  22. package/lib/Card/Card.js +6 -5
  23. package/lib/Card/CardBase.js +6 -9
  24. package/lib/Card/PressableCardBase.js +6 -11
  25. package/lib/Checkbox/Checkbox.js +4 -6
  26. package/lib/Divider/Divider.js +14 -13
  27. package/lib/ExpandCollapse/Control.js +7 -7
  28. package/lib/ExpandCollapse/ExpandCollapse.js +6 -2
  29. package/lib/ExpandCollapse/Panel.js +6 -7
  30. package/lib/Feedback/Feedback.js +6 -5
  31. package/lib/Fieldset/Fieldset.js +1 -3
  32. package/lib/FlexGrid/FlexGrid.js +4 -4
  33. package/lib/FlexGrid/helpers/index.js +1 -4
  34. package/lib/HorizontalScroll/HorizontalScroll.js +5 -6
  35. package/lib/IconButton/IconButton.js +6 -6
  36. package/lib/InputLabel/InputLabel.js +7 -2
  37. package/lib/InputSupports/InputSupports.js +2 -2
  38. package/lib/Link/LinkBase.js +12 -13
  39. package/lib/List/List.js +4 -6
  40. package/lib/List/ListItem.js +6 -2
  41. package/lib/Modal/Modal.js +6 -2
  42. package/lib/Notification/Notification.js +12 -8
  43. package/lib/Pagination/Pagination.js +8 -3
  44. package/lib/Progress/Progress.js +5 -4
  45. package/lib/Progress/ProgressBar.js +8 -7
  46. package/lib/Radio/Radio.js +4 -6
  47. package/lib/Radio/RadioButton.js +6 -3
  48. package/lib/Radio/RadioGroup.js +7 -2
  49. package/lib/RadioCard/RadioCard.js +4 -4
  50. package/lib/RadioCard/RadioCardGroup.js +9 -6
  51. package/lib/Search/Search.js +7 -2
  52. package/lib/Select/Select.js +10 -9
  53. package/lib/SideNav/Item.js +7 -7
  54. package/lib/SideNav/SideNav.js +7 -3
  55. package/lib/Skeleton/Skeleton.js +6 -2
  56. package/lib/Spacer/Spacer.js +9 -20
  57. package/lib/StackView/StackView.js +7 -7
  58. package/lib/StackView/StackWrapBox.js +6 -7
  59. package/lib/StackView/StackWrapGap.js +6 -5
  60. package/lib/StackView/getStackedContent.js +1 -1
  61. package/lib/StepTracker/Step.js +7 -3
  62. package/lib/StepTracker/StepTracker.js +7 -7
  63. package/lib/Tabs/Tabs.js +6 -2
  64. package/lib/Tabs/TabsItem.js +6 -5
  65. package/lib/Tags/Tags.js +11 -12
  66. package/lib/TextInput/TextArea.js +13 -14
  67. package/lib/TextInput/TextInput.js +13 -14
  68. package/lib/TextInput/TextInputBase.js +5 -3
  69. package/lib/ThemeProvider/useThemeTokens.js +3 -3
  70. package/lib/ThemeProvider/utils/theme-tokens.js +3 -3
  71. package/lib/ToggleSwitch/ToggleSwitch.js +10 -9
  72. package/lib/ToggleSwitch/ToggleSwitchGroup.js +10 -12
  73. package/lib/Tooltip/Tooltip.js +7 -2
  74. package/lib/TooltipButton/TooltipButton.js +7 -2
  75. package/lib/Typography/Typography.js +8 -6
  76. package/lib/index.js +7 -0
  77. package/lib/utils/a11y/semantics.js +4 -3
  78. package/lib/utils/children.js +5 -1
  79. package/lib/utils/index.js +18 -4
  80. package/lib/utils/pressability.js +2 -2
  81. package/lib/utils/props/a11yProps.js +153 -0
  82. package/lib/utils/props/clickProps.js +36 -0
  83. package/lib/utils/props/componentPropType.js +70 -0
  84. package/lib/utils/props/copyPropTypes.js +14 -0
  85. package/lib/utils/props/getPropSelector.js +13 -0
  86. package/lib/utils/props/hrefAttrsProp.js +41 -0
  87. package/lib/utils/props/index.js +158 -0
  88. package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
  89. package/lib/utils/props/linkProps.js +64 -0
  90. package/lib/utils/props/paddingProp.js +20 -0
  91. package/lib/utils/props/pressProps.js +57 -0
  92. package/lib/utils/props/rectProp.js +20 -0
  93. package/lib/utils/props/responsiveProps.js +40 -0
  94. package/lib/utils/props/selectSystemProps.js +31 -0
  95. package/lib/utils/props/spacingProps.js +71 -0
  96. package/lib/utils/props/tokens.js +145 -0
  97. package/lib/utils/props/variantProp.js +28 -0
  98. package/lib/utils/props/viewProps.js +34 -0
  99. package/lib/utils/ssr.js +51 -0
  100. package/lib/utils/useResponsiveProp.js +1 -1
  101. package/lib/utils/useSpacingScale.js +4 -4
  102. package/lib-module/A11yInfoProvider/index.js +62 -0
  103. package/lib-module/A11yText/index.js +55 -0
  104. package/lib-module/ActivityIndicator/Spinner.js +76 -0
  105. package/lib-module/ActivityIndicator/Spinner.native.js +143 -0
  106. package/lib-module/ActivityIndicator/index.js +40 -0
  107. package/lib-module/ActivityIndicator/shared.js +12 -0
  108. package/lib-module/BaseProvider/index.js +26 -0
  109. package/lib-module/Box/Box.js +243 -0
  110. package/lib-module/Box/index.js +2 -0
  111. package/lib-module/Button/Button.js +25 -0
  112. package/lib-module/Button/ButtonBase.js +254 -0
  113. package/lib-module/Button/ButtonGroup.js +164 -0
  114. package/lib-module/Button/ButtonLink.js +39 -0
  115. package/lib-module/Button/index.js +4 -0
  116. package/lib-module/Button/propTypes.js +36 -0
  117. package/lib-module/Card/Card.js +83 -0
  118. package/lib-module/Card/CardBase.js +62 -0
  119. package/lib-module/Card/PressableCardBase.js +113 -0
  120. package/lib-module/Card/index.js +4 -0
  121. package/lib-module/Checkbox/Checkbox.js +321 -0
  122. package/lib-module/Checkbox/CheckboxGroup.js +218 -0
  123. package/lib-module/Checkbox/CheckboxInput.js +58 -0
  124. package/lib-module/Checkbox/CheckboxInput.native.js +6 -0
  125. package/lib-module/Checkbox/index.js +3 -0
  126. package/lib-module/Divider/Divider.js +123 -0
  127. package/lib-module/Divider/index.js +2 -0
  128. package/lib-module/ExpandCollapse/Accordion.js +15 -0
  129. package/lib-module/ExpandCollapse/Control.js +130 -0
  130. package/lib-module/ExpandCollapse/ExpandCollapse.js +94 -0
  131. package/lib-module/ExpandCollapse/Panel.js +158 -0
  132. package/lib-module/ExpandCollapse/index.js +7 -0
  133. package/lib-module/Feedback/Feedback.js +144 -0
  134. package/lib-module/Feedback/index.js +2 -0
  135. package/lib-module/Fieldset/Fieldset.js +145 -0
  136. package/lib-module/Fieldset/FieldsetContainer.js +29 -0
  137. package/lib-module/Fieldset/FieldsetContainer.native.js +20 -0
  138. package/lib-module/Fieldset/Legend.js +21 -0
  139. package/lib-module/Fieldset/Legend.native.js +28 -0
  140. package/lib-module/Fieldset/cssReset.js +14 -0
  141. package/lib-module/Fieldset/index.js +2 -0
  142. package/lib-module/FlexGrid/Col/Col.js +265 -0
  143. package/lib-module/FlexGrid/Col/index.js +2 -0
  144. package/lib-module/FlexGrid/FlexGrid.js +147 -0
  145. package/lib-module/FlexGrid/Row/Row.js +177 -0
  146. package/lib-module/FlexGrid/Row/index.js +2 -0
  147. package/lib-module/FlexGrid/helpers/index.js +18 -0
  148. package/lib-module/FlexGrid/index.js +2 -0
  149. package/lib-module/FlexGrid/providers/GutterContext.js +3 -0
  150. package/lib-module/HorizontalScroll/HorizontalScroll.js +171 -0
  151. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +102 -0
  152. package/lib-module/HorizontalScroll/ScrollViewEnd.js +47 -0
  153. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +24 -0
  154. package/lib-module/HorizontalScroll/dictionary.js +11 -0
  155. package/lib-module/HorizontalScroll/index.js +11 -0
  156. package/lib-module/HorizontalScroll/itemPositions.js +106 -0
  157. package/lib-module/Icon/Icon.js +61 -0
  158. package/lib-module/Icon/IconText.js +81 -0
  159. package/lib-module/Icon/index.js +4 -0
  160. package/lib-module/IconButton/IconButton.js +115 -0
  161. package/lib-module/IconButton/index.js +2 -0
  162. package/lib-module/InputLabel/InputLabel.js +131 -0
  163. package/lib-module/InputLabel/LabelContent.js +24 -0
  164. package/lib-module/InputLabel/LabelContent.native.js +16 -0
  165. package/lib-module/InputLabel/index.js +2 -0
  166. package/lib-module/InputSupports/InputSupports.js +88 -0
  167. package/lib-module/InputSupports/index.js +2 -0
  168. package/lib-module/InputSupports/useInputSupports.js +31 -0
  169. package/lib-module/Link/ChevronLink.js +51 -0
  170. package/lib-module/Link/InlinePressable.js +37 -0
  171. package/lib-module/Link/InlinePressable.native.js +85 -0
  172. package/lib-module/Link/Link.js +27 -0
  173. package/lib-module/Link/LinkBase.js +210 -0
  174. package/lib-module/Link/TextButton.js +43 -0
  175. package/lib-module/Link/index.js +5 -0
  176. package/lib-module/List/List.js +55 -0
  177. package/lib-module/List/ListItem.js +213 -0
  178. package/lib-module/List/index.js +5 -0
  179. package/lib-module/Modal/Modal.js +208 -0
  180. package/lib-module/Modal/dictionary.js +9 -0
  181. package/lib-module/Modal/index.js +2 -0
  182. package/lib-module/Notification/Notification.js +196 -0
  183. package/lib-module/Notification/dictionary.js +8 -0
  184. package/lib-module/Notification/index.js +2 -0
  185. package/lib-module/Pagination/PageButton.js +65 -0
  186. package/lib-module/Pagination/Pagination.js +140 -0
  187. package/lib-module/Pagination/SideButton.js +103 -0
  188. package/lib-module/Pagination/dictionary.js +18 -0
  189. package/lib-module/Pagination/index.js +2 -0
  190. package/lib-module/Pagination/usePagination.js +72 -0
  191. package/lib-module/Progress/Progress.js +85 -0
  192. package/lib-module/Progress/ProgressBar.js +134 -0
  193. package/lib-module/Progress/ProgressBarBackground.js +41 -0
  194. package/lib-module/Progress/index.js +4 -0
  195. package/lib-module/Radio/Radio.js +263 -0
  196. package/lib-module/Radio/RadioButton.js +128 -0
  197. package/lib-module/Radio/RadioGroup.js +225 -0
  198. package/lib-module/Radio/RadioInput.js +60 -0
  199. package/lib-module/Radio/RadioInput.native.js +6 -0
  200. package/lib-module/Radio/index.js +3 -0
  201. package/lib-module/RadioCard/RadioCard.js +218 -0
  202. package/lib-module/RadioCard/RadioCardGroup.js +232 -0
  203. package/lib-module/RadioCard/index.js +3 -0
  204. package/lib-module/Search/Search.js +233 -0
  205. package/lib-module/Search/dictionary.js +12 -0
  206. package/lib-module/Search/index.js +2 -0
  207. package/lib-module/Select/Group.js +20 -0
  208. package/lib-module/Select/Group.native.js +14 -0
  209. package/lib-module/Select/Item.js +17 -0
  210. package/lib-module/Select/Item.native.js +9 -0
  211. package/lib-module/Select/Picker.js +67 -0
  212. package/lib-module/Select/Picker.native.js +110 -0
  213. package/lib-module/Select/Select.js +317 -0
  214. package/lib-module/Select/index.js +6 -0
  215. package/lib-module/SideNav/Item.js +139 -0
  216. package/lib-module/SideNav/ItemContent.js +45 -0
  217. package/lib-module/SideNav/ItemsGroup.js +115 -0
  218. package/lib-module/SideNav/SideNav.js +133 -0
  219. package/lib-module/SideNav/index.js +1 -0
  220. package/lib-module/Skeleton/Skeleton.js +117 -0
  221. package/lib-module/Skeleton/index.js +2 -0
  222. package/lib-module/Skeleton/skeleton.constant.js +3 -0
  223. package/lib-module/Skeleton/skeletonWebAnimation.js +18 -0
  224. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +24 -0
  225. package/lib-module/Spacer/Spacer.js +97 -0
  226. package/lib-module/Spacer/index.js +2 -0
  227. package/lib-module/StackView/StackView.js +124 -0
  228. package/lib-module/StackView/StackWrap.js +48 -0
  229. package/lib-module/StackView/StackWrap.native.js +3 -0
  230. package/lib-module/StackView/StackWrapBox.js +114 -0
  231. package/lib-module/StackView/StackWrapGap.js +58 -0
  232. package/lib-module/StackView/common.js +32 -0
  233. package/lib-module/StackView/getStackedContent.js +123 -0
  234. package/lib-module/StackView/index.js +5 -0
  235. package/lib-module/StepTracker/Step.js +229 -0
  236. package/lib-module/StepTracker/StepTracker.js +175 -0
  237. package/lib-module/StepTracker/dictionary.js +10 -0
  238. package/lib-module/StepTracker/index.js +2 -0
  239. package/lib-module/Tabs/Tabs.js +113 -0
  240. package/lib-module/Tabs/TabsItem.js +215 -0
  241. package/lib-module/Tabs/index.js +2 -0
  242. package/lib-module/Tags/Tags.js +238 -0
  243. package/lib-module/Tags/index.js +2 -0
  244. package/lib-module/TextInput/TextArea.js +88 -0
  245. package/lib-module/TextInput/TextInput.js +60 -0
  246. package/lib-module/TextInput/TextInputBase.js +233 -0
  247. package/lib-module/TextInput/index.js +3 -0
  248. package/lib-module/TextInput/propTypes.js +31 -0
  249. package/lib-module/ThemeProvider/ThemeProvider.js +35 -0
  250. package/lib-module/ThemeProvider/index.js +6 -0
  251. package/lib-module/ThemeProvider/useSetTheme.js +22 -0
  252. package/lib-module/ThemeProvider/useTheme.js +14 -0
  253. package/lib-module/ThemeProvider/useThemeTokens.js +105 -0
  254. package/lib-module/ThemeProvider/utils/index.js +2 -0
  255. package/lib-module/ThemeProvider/utils/styles.js +174 -0
  256. package/lib-module/ThemeProvider/utils/theme-tokens.js +151 -0
  257. package/lib-module/ToggleSwitch/ToggleSwitch.js +224 -0
  258. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +202 -0
  259. package/lib-module/ToggleSwitch/index.js +3 -0
  260. package/lib-module/Tooltip/Backdrop.js +52 -0
  261. package/lib-module/Tooltip/Backdrop.native.js +43 -0
  262. package/lib-module/Tooltip/Tooltip.js +332 -0
  263. package/lib-module/Tooltip/dictionary.js +8 -0
  264. package/lib-module/Tooltip/getTooltipPosition.js +164 -0
  265. package/lib-module/Tooltip/index.js +2 -0
  266. package/lib-module/TooltipButton/TooltipButton.js +71 -0
  267. package/lib-module/TooltipButton/index.js +2 -0
  268. package/lib-module/Typography/Typography.js +118 -0
  269. package/lib-module/Typography/index.js +2 -0
  270. package/lib-module/ViewportProvider/ViewportProvider.js +28 -0
  271. package/lib-module/ViewportProvider/index.js +3 -0
  272. package/lib-module/ViewportProvider/useViewport.js +3 -0
  273. package/lib-module/ViewportProvider/useViewportListener.js +43 -0
  274. package/lib-module/index.js +48 -0
  275. package/lib-module/utils/a11y/index.js +2 -0
  276. package/lib-module/utils/a11y/semantics.js +154 -0
  277. package/lib-module/utils/a11y/textSize.js +34 -0
  278. package/lib-module/utils/animation/index.js +2 -0
  279. package/lib-module/utils/animation/useVerticalExpandAnimation.js +49 -0
  280. package/lib-module/utils/children.js +118 -0
  281. package/lib-module/utils/index.js +15 -0
  282. package/lib-module/utils/info/index.js +7 -0
  283. package/lib-module/utils/info/platform/index.js +11 -0
  284. package/lib-module/utils/info/platform/platform.android.js +1 -0
  285. package/lib-module/utils/info/platform/platform.ios.js +1 -0
  286. package/lib-module/utils/info/platform/platform.js +1 -0
  287. package/lib-module/utils/info/platform/platform.native.js +4 -0
  288. package/lib-module/utils/info/versions.js +5 -0
  289. package/lib-module/utils/input.js +180 -0
  290. package/lib-module/utils/pressability.js +97 -0
  291. package/lib-module/utils/props/a11yProps.js +140 -0
  292. package/lib-module/utils/props/clickProps.js +25 -0
  293. package/lib-module/utils/props/componentPropType.js +63 -0
  294. package/lib-module/utils/props/copyPropTypes.js +2 -0
  295. package/lib-module/utils/props/getPropSelector.js +6 -0
  296. package/lib-module/utils/props/hrefAttrsProp.js +30 -0
  297. package/lib-module/utils/props/index.js +16 -0
  298. package/lib-module/utils/props/inputSupportsProps.js +54 -0
  299. package/lib-module/utils/props/linkProps.js +47 -0
  300. package/lib-module/utils/props/paddingProp.js +9 -0
  301. package/lib-module/utils/props/pressProps.js +42 -0
  302. package/lib-module/utils/props/rectProp.js +9 -0
  303. package/lib-module/utils/props/responsiveProps.js +30 -0
  304. package/lib-module/utils/props/selectSystemProps.js +24 -0
  305. package/lib-module/utils/props/spacingProps.js +56 -0
  306. package/lib-module/utils/props/tokens.js +120 -0
  307. package/lib-module/utils/props/variantProp.js +18 -0
  308. package/lib-module/utils/props/viewProps.js +22 -0
  309. package/lib-module/utils/ssr.js +35 -0
  310. package/lib-module/utils/useCopy.js +42 -0
  311. package/lib-module/utils/useHash.js +44 -0
  312. package/lib-module/utils/useHash.native.js +7 -0
  313. package/lib-module/utils/useResponsiveProp.js +47 -0
  314. package/lib-module/utils/useSpacingScale.js +123 -0
  315. package/lib-module/utils/useUniqueId.js +12 -0
  316. package/lib-module/utils/withLinkRouter.js +82 -0
  317. package/package.json +9 -5
  318. package/src/A11yText/index.jsx +7 -3
  319. package/src/ActivityIndicator/Spinner.jsx +56 -44
  320. package/src/ActivityIndicator/Spinner.native.jsx +20 -12
  321. package/src/ActivityIndicator/index.jsx +1 -1
  322. package/src/Box/Box.jsx +15 -13
  323. package/src/Button/Button.jsx +1 -1
  324. package/src/Button/ButtonBase.jsx +9 -8
  325. package/src/Button/ButtonGroup.jsx +17 -8
  326. package/src/Button/ButtonLink.jsx +1 -1
  327. package/src/Button/propTypes.js +2 -1
  328. package/src/Card/Card.jsx +7 -4
  329. package/src/Card/CardBase.jsx +6 -5
  330. package/src/Card/PressableCardBase.jsx +12 -12
  331. package/src/Checkbox/Checkbox.jsx +12 -5
  332. package/src/Divider/Divider.jsx +19 -12
  333. package/src/ExpandCollapse/Control.jsx +12 -7
  334. package/src/ExpandCollapse/ExpandCollapse.jsx +13 -3
  335. package/src/ExpandCollapse/Panel.jsx +15 -5
  336. package/src/Feedback/Feedback.jsx +13 -3
  337. package/src/Fieldset/Fieldset.jsx +1 -1
  338. package/src/FlexGrid/FlexGrid.jsx +11 -5
  339. package/src/FlexGrid/helpers/index.js +1 -3
  340. package/src/HorizontalScroll/HorizontalScroll.jsx +12 -5
  341. package/src/IconButton/IconButton.jsx +12 -8
  342. package/src/InputLabel/InputLabel.jsx +16 -2
  343. package/src/InputSupports/InputSupports.jsx +1 -1
  344. package/src/Link/LinkBase.jsx +11 -10
  345. package/src/List/List.jsx +12 -5
  346. package/src/List/ListItem.jsx +16 -2
  347. package/src/Modal/Modal.jsx +63 -50
  348. package/src/Notification/Notification.jsx +23 -6
  349. package/src/Pagination/Pagination.jsx +10 -3
  350. package/src/Progress/Progress.jsx +5 -3
  351. package/src/Progress/ProgressBar.jsx +8 -6
  352. package/src/Radio/Radio.jsx +13 -5
  353. package/src/Radio/RadioButton.jsx +13 -3
  354. package/src/Radio/RadioGroup.jsx +14 -2
  355. package/src/RadioCard/RadioCard.jsx +9 -6
  356. package/src/RadioCard/RadioCardGroup.jsx +16 -4
  357. package/src/Search/Search.jsx +15 -3
  358. package/src/Select/Select.jsx +21 -7
  359. package/src/SideNav/Item.jsx +15 -7
  360. package/src/SideNav/SideNav.jsx +13 -2
  361. package/src/Skeleton/Skeleton.jsx +55 -43
  362. package/src/Spacer/Spacer.jsx +10 -18
  363. package/src/StackView/StackView.jsx +13 -12
  364. package/src/StackView/StackWrapBox.jsx +12 -12
  365. package/src/StackView/StackWrapGap.jsx +9 -7
  366. package/src/StackView/getStackedContent.jsx +1 -1
  367. package/src/StepTracker/Step.jsx +7 -4
  368. package/src/StepTracker/StepTracker.jsx +8 -8
  369. package/src/Tabs/Tabs.jsx +16 -3
  370. package/src/Tabs/TabsItem.jsx +13 -9
  371. package/src/Tags/Tags.jsx +16 -7
  372. package/src/TextInput/TextArea.jsx +20 -8
  373. package/src/TextInput/TextInput.jsx +20 -8
  374. package/src/TextInput/TextInputBase.jsx +13 -3
  375. package/src/ThemeProvider/useThemeTokens.js +3 -3
  376. package/src/ThemeProvider/utils/theme-tokens.js +3 -3
  377. package/src/ToggleSwitch/ToggleSwitch.jsx +12 -7
  378. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +14 -6
  379. package/src/Tooltip/Tooltip.jsx +13 -3
  380. package/src/TooltipButton/TooltipButton.jsx +6 -4
  381. package/src/Typography/Typography.jsx +10 -6
  382. package/src/index.js +1 -1
  383. package/src/utils/a11y/semantics.js +3 -2
  384. package/src/utils/children.jsx +2 -1
  385. package/src/utils/index.js +2 -1
  386. package/src/utils/pressability.js +1 -1
  387. package/src/utils/props/a11yProps.js +151 -0
  388. package/src/utils/props/clickProps.js +31 -0
  389. package/src/utils/props/componentPropType.js +67 -0
  390. package/src/utils/props/copyPropTypes.js +3 -0
  391. package/src/utils/props/getPropSelector.js +14 -0
  392. package/src/utils/props/hrefAttrsProp.js +25 -0
  393. package/src/utils/props/index.js +16 -0
  394. package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
  395. package/src/utils/props/linkProps.js +43 -0
  396. package/src/utils/props/paddingProp.js +10 -0
  397. package/src/utils/props/pressProps.js +45 -0
  398. package/src/utils/props/rectProp.js +10 -0
  399. package/src/utils/props/responsiveProps.js +30 -0
  400. package/src/utils/props/selectSystemProps.js +25 -0
  401. package/src/utils/props/spacingProps.js +58 -0
  402. package/src/utils/props/tokens.js +150 -0
  403. package/src/utils/props/variantProp.js +20 -0
  404. package/src/utils/props/viewProps.js +23 -0
  405. package/src/utils/ssr.js +35 -0
  406. package/src/utils/useResponsiveProp.js +1 -1
  407. package/src/utils/useSpacingScale.js +4 -4
  408. package/.ultra.cache.json +0 -1
  409. package/lib/utils/a11y/propTypes.js +0 -61
  410. package/lib/utils/a11y/propTypes.native.js +0 -47
  411. package/lib/utils/propTypes.js +0 -566
  412. package/release-context.json +0 -7
  413. package/src/utils/a11y/propTypes.js +0 -61
  414. package/src/utils/a11y/propTypes.native.js +0 -39
  415. package/src/utils/propTypes.js +0 -561
@@ -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
  };
@@ -31,6 +31,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
31
 
32
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
33
 
34
+ const [selectProps, selectedSystemPropTypes] = (0, _utils2.selectSystemProps)([_utils2.a11yProps, _utils2.linkProps, _utils2.viewProps]);
35
+
34
36
  const getOuterBorderOffset = ({
35
37
  outerBorderGap = 0,
36
38
  outerBorderWidth = 0
@@ -181,7 +183,6 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
181
183
  // alias for inactive
182
184
  inactive = disabled,
183
185
  selected = false,
184
- dataSet,
185
186
  ...rawRest
186
187
  }, ref) => {
187
188
  const {
@@ -196,11 +197,11 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
196
197
 
197
198
  const resolveButtonTokens = pressableState => (0, _utils2.resolvePressableTokens)(tokens, pressableState, extraButtonState);
198
199
 
199
- const a11y = _utils2.a11yProps.select(rest);
200
+ const systemProps = selectProps(rest);
200
201
 
201
202
  const getPressableStyle = pressableState => {
202
203
  const themeTokens = resolveButtonTokens(pressableState);
203
- return [staticStyles.row, selectWebOnlyStyles(inactive, themeTokens, a11y), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
204
+ return [staticStyles.row, selectWebOnlyStyles(inactive, themeTokens, systemProps), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
204
205
  };
205
206
 
206
207
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
@@ -212,9 +213,8 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
212
213
  }),
213
214
  style: getPressableStyle,
214
215
  disabled: inactive,
215
- dataSet: dataSet,
216
216
  hrefAttrs: hrefAttrs,
217
- ...a11y,
217
+ ...systemProps,
218
218
  children: pressableState => {
219
219
  const themeTokens = resolveButtonTokens(pressableState);
220
220
  const containerStyles = selectInnerContainerStyles(themeTokens);
@@ -245,9 +245,8 @@ const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
245
245
  ButtonBase.displayName = 'ButtonBase';
246
246
  ButtonBase.propTypes = {
247
247
  id: _propTypes.default.string,
248
- ..._utils2.a11yProps.types,
249
- ..._propTypes2.default,
250
- ..._utils2.linkProps.types
248
+ ...selectedSystemPropTypes,
249
+ ..._propTypes2.default
251
250
  };
252
251
  ButtonBase.defaultProps = {
253
252
  id: undefined
@@ -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;
@@ -19,8 +19,6 @@ var _ThemeProvider = require("../ThemeProvider");
19
19
 
20
20
  var _utils = require("../utils");
21
21
 
22
- var _propTypes2 = require("../utils/propTypes");
23
-
24
22
  var _CardBase = _interopRequireDefault(require("./CardBase"));
25
23
 
26
24
  var _jsxRuntime = require("react/jsx-runtime");
@@ -31,6 +29,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
29
 
32
30
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
31
 
32
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
34
33
  const tokenKeys = [...(0, _utils.getTokenNames)('Card'), // Outer border tokens. TODO: centralise common token sets like these as part of
35
34
  // https://github.com/telus/universal-design-system/issues/782
36
35
  'outerBorderColor', 'outerBorderWidth', 'outerBorderGap'];
@@ -61,11 +60,6 @@ const PressableCardBase = /*#__PURE__*/(0, _react.forwardRef)(({
61
60
  } = _utils.clickProps.toPressProps(rawRest);
62
61
 
63
62
  const viewport = (0, _ViewportProvider.useViewport)();
64
-
65
- const a11y = _propTypes2.a11yProps.select({ ...rest,
66
- accessibilityRole
67
- });
68
-
69
63
  const additionalState = {
70
64
  checked,
71
65
  validation,
@@ -124,7 +118,9 @@ const PressableCardBase = /*#__PURE__*/(0, _react.forwardRef)(({
124
118
  onKeyDown: handleKeyDown,
125
119
  hrefAttrs: hrefAttrs,
126
120
  style: getOuterBorderStyle,
127
- ...a11y,
121
+ ...selectProps({ ...rest,
122
+ accessibilityRole
123
+ }),
128
124
  children: pressableState => /*#__PURE__*/(0, _jsxRuntime.jsx)(_CardBase.default, {
129
125
  tokens: getCardTokens(pressableState),
130
126
  children: typeof children === 'function' ? children(getCardState(pressableState)) : children
@@ -132,14 +128,13 @@ const PressableCardBase = /*#__PURE__*/(0, _react.forwardRef)(({
132
128
  });
133
129
  });
134
130
  PressableCardBase.displayName = 'PressableCardBase';
135
- PressableCardBase.propTypes = {
131
+ PressableCardBase.propTypes = { ...selectedSystemPropTypes,
136
132
  children: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
137
133
  tokens: (0, _utils.getTokensSetPropType)(tokenKeys, {
138
134
  requireAll: true,
139
135
  allowFunction: true
140
136
  }),
141
- variant: _utils.variantProp.propType,
142
- ..._propTypes2.a11yProps.types
137
+ variant: _utils.variantProp.propType
143
138
  };
144
139
 
145
140
  var _default = (0, _utils.withLinkRouter)(PressableCardBase);