@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
@@ -14,9 +14,9 @@ var _utils = require("./utils");
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
16
  /**
17
- * @typedef {import('../utils/propTypes.js').AppearanceSet} AppearanceSet
18
- * @typedef {import('../utils/propTypes.js').TokensProp} TokensProp
19
- * @typedef {import('../utils/propTypes.js').TokensSet} TokensSet
17
+ * @typedef {import('../utils/props/variantProp.js').AppearanceSet} AppearanceSet
18
+ * @typedef {import('../utils/props/tokens.js').TokensProp} TokensProp
19
+ * @typedef {import('../utils/props/tokens.js').TokensSet} TokensSet
20
20
  */
21
21
 
22
22
  /**
@@ -14,9 +14,9 @@ var _package = _interopRequireDefault(require("../../../package.json"));
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
16
  /**
17
- * @typedef {import('../../utils/propTypes.js').AppearanceSet} AppearanceSet
18
- * @typedef {import('../../utils/propTypes.js').TokensProp} TokensProp
19
- * @typedef {import('../../utils/propTypes.js').TokensSet} TokensSet
17
+ * @typedef {import('../../utils/props/variantProp.js').AppearanceSet} AppearanceSet
18
+ * @typedef {import('../../utils/props/tokens.js').TokensProp} TokensProp
19
+ * @typedef {import('../../utils/props/tokens.js').TokensSet} TokensSet
20
20
  */
21
21
 
22
22
  /**
@@ -23,12 +23,10 @@ var _StackView = _interopRequireDefault(require("../StackView"));
23
23
 
24
24
  var _ThemeProvider = require("../ThemeProvider");
25
25
 
26
- var _propTypes2 = require("../utils/propTypes");
26
+ var _utils = require("../utils");
27
27
 
28
28
  var _input = require("../utils/input");
29
29
 
30
- var _utils = require("../utils");
31
-
32
30
  var _jsxRuntime = require("react/jsx-runtime");
33
31
 
34
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -37,7 +35,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
37
35
 
38
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; }
39
37
 
40
- const selectButtonTokens = tokens => (0, _propTypes2.selectTokens)('Button', { ...tokens,
38
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.pressProps, _utils.viewProps]);
39
+
40
+ const selectButtonTokens = tokens => (0, _utils.selectTokens)('Button', { ...tokens,
41
41
  // Width tokens are applied to our inner track. Disable Button width token so it wraps our track width.
42
42
  width: null
43
43
  }); // Map and rename icon-specific tokens to name used within Icon
@@ -117,7 +117,8 @@ const ToggleSwitch = /*#__PURE__*/(0, _react.forwardRef)(({
117
117
  tooltip,
118
118
  variant,
119
119
  accessibilityRole = 'switch',
120
- accessibilityLabel = label
120
+ accessibilityLabel = label,
121
+ ...rest
121
122
  }, ref) => {
122
123
  const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('ToggleSwitch', tokens, variant);
123
124
  const themeTokens = getTokens();
@@ -159,6 +160,7 @@ const ToggleSwitch = /*#__PURE__*/(0, _react.forwardRef)(({
159
160
  checked: currentValue
160
161
  },
161
162
  onPress: handlePress,
163
+ ...selectProps(rest),
162
164
  children: buttonState => {
163
165
  const stateTokens = getTokens(buttonState);
164
166
  const IconComponent = stateTokens.icon;
@@ -188,10 +190,9 @@ const ToggleSwitch = /*#__PURE__*/(0, _react.forwardRef)(({
188
190
  });
189
191
  });
190
192
  ToggleSwitch.displayName = 'ToggleSwitch';
191
- ToggleSwitch.propTypes = { ..._propTypes2.a11yProps.propTypes,
192
- ..._propTypes2.pressProps.propTypes,
193
- tokens: (0, _propTypes2.getTokensPropType)('ToggleSwitch'),
194
- variant: _propTypes2.variantProp.propType,
193
+ ToggleSwitch.propTypes = { ...selectedSystemPropTypes,
194
+ tokens: (0, _utils.getTokensPropType)('ToggleSwitch'),
195
+ variant: _utils.variantProp.propType,
195
196
 
196
197
  /**
197
198
  * If this is a "controlled" component and a parent handles its selected state,
@@ -23,7 +23,7 @@ var _ViewportProvider = require("../ViewportProvider");
23
23
 
24
24
  var _ThemeProvider = require("../ThemeProvider");
25
25
 
26
- var _propTypes2 = require("../utils/propTypes");
26
+ var _props = require("../utils/props");
27
27
 
28
28
  var _input = require("../utils/input");
29
29
 
@@ -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 ToggleSwitchGroup = /*#__PURE__*/(0, _react.forwardRef)(({
39
40
  variant,
40
41
  tokens,
@@ -76,13 +77,11 @@ const ToggleSwitchGroup = /*#__PURE__*/(0, _react.forwardRef)(({
76
77
  onChange,
77
78
  readOnly
78
79
  });
79
-
80
- const a11y = _propTypes2.a11yProps.select({
80
+ const selectedProps = selectProps({
81
81
  accessibilityRole,
82
82
  ...rest
83
83
  });
84
-
85
- const itemA11yRole = a11y.accessibilityRole === 'radiogroup' ? 'radio' : 'switch';
84
+ const itemA11yRole = selectedProps.accessibilityRole === 'radiogroup' ? 'radio' : 'switch';
86
85
  const toggleSwitches = items.map(({
87
86
  label,
88
87
  id = label,
@@ -104,7 +103,7 @@ const ToggleSwitchGroup = /*#__PURE__*/(0, _react.forwardRef)(({
104
103
  },
105
104
  accessibilityRole: itemA11yRole,
106
105
  accessibilityLabel,
107
- ..._propTypes2.a11yProps.getPositionInSet(items.length, index)
106
+ ..._props.a11yProps.getPositionInSet(items.length, index)
108
107
  };
109
108
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToggleSwitch.default, {
110
109
  id: id,
@@ -128,7 +127,7 @@ const ToggleSwitchGroup = /*#__PURE__*/(0, _react.forwardRef)(({
128
127
  feedback: feedback,
129
128
  inactive: inactive,
130
129
  validation: validation,
131
- ...a11y,
130
+ ...selectedProps,
132
131
  children: (0, _StackView.getStackedContent)(toggleSwitches, {
133
132
  space,
134
133
  direction: 'column'
@@ -136,10 +135,9 @@ const ToggleSwitchGroup = /*#__PURE__*/(0, _react.forwardRef)(({
136
135
  });
137
136
  });
138
137
  ToggleSwitchGroup.displayName = 'ToggleSwitchGroup';
139
- ToggleSwitchGroup.propTypes = { ..._propTypes2.a11yProps.propTypes,
140
- ..._propTypes2.pressProps.propTypes,
141
- tokens: (0, _propTypes2.getTokensPropType)('ToggleSwitchGroup'),
142
- variant: _propTypes2.variantProp.propType,
138
+ ToggleSwitchGroup.propTypes = { ...selectedSystemPropTypes,
139
+ tokens: (0, _props.getTokensPropType)('ToggleSwitchGroup'),
140
+ variant: _props.variantProp.propType,
143
141
 
144
142
  /**
145
143
  * The maximum number of items a user may select at once. Defaults to 1 and behaves
@@ -219,7 +217,7 @@ ToggleSwitchGroup.propTypes = { ..._propTypes2.a11yProps.propTypes,
219
217
  /**
220
218
  * Toggle switch token overrides.
221
219
  */
222
- toggleSwitchTokens: (0, _propTypes2.getTokensPropType)('ToggleSwitch'),
220
+ toggleSwitchTokens: (0, _props.getTokensPropType)('ToggleSwitch'),
223
221
 
224
222
  /**
225
223
  * Current validation status of the group, passed to the feedback element if there is one.
@@ -43,6 +43,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
43
43
 
44
44
  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; }
45
45
 
46
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
47
+
46
48
  const selectTooltipStyles = ({
47
49
  backgroundColor,
48
50
  paddingTop,
@@ -167,7 +169,8 @@ const Tooltip = /*#__PURE__*/(0, _react.forwardRef)(({
167
169
  position = 'auto',
168
170
  copy = 'en',
169
171
  tokens,
170
- variant
172
+ variant,
173
+ ...rest
171
174
  }, ref) => {
172
175
  const [isOpen, setIsOpen] = (0, _react.useState)(false);
173
176
  const controlRef = (0, _react.useRef)();
@@ -280,6 +283,7 @@ const Tooltip = /*#__PURE__*/(0, _react.forwardRef)(({
280
283
  } : undefined;
281
284
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
282
285
  style: staticStyles.container,
286
+ ...selectProps(rest),
283
287
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
284
288
  onPress: toggleIsOpen,
285
289
  ref: controlRef,
@@ -312,7 +316,8 @@ const Tooltip = /*#__PURE__*/(0, _react.forwardRef)(({
312
316
  });
313
317
  });
314
318
  Tooltip.displayName = 'Tooltip';
315
- Tooltip.propTypes = {
319
+ Tooltip.propTypes = { ...selectedSystemPropTypes,
320
+
316
321
  /**
317
322
  * Used to render the control (i.e. tooltip trigger). If a render function is used it will receive the
318
323
  * pressable state and tooltip variant as an argument.
@@ -21,6 +21,8 @@ var _jsxRuntime = require("react/jsx-runtime");
21
21
 
22
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
23
 
24
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
25
+
24
26
  const selectInnerContainerStyles = ({
25
27
  borderRadius,
26
28
  width
@@ -49,7 +51,8 @@ const selectIconTokens = ({
49
51
  const TooltipButton = ({
50
52
  pressableState,
51
53
  tokens,
52
- variant
54
+ variant,
55
+ ...rest
53
56
  }) => {
54
57
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('TooltipButton', tokens, variant, pressableState);
55
58
  const {
@@ -57,6 +60,7 @@ const TooltipButton = ({
57
60
  } = themeTokens;
58
61
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
59
62
  style: (0, _ThemeProvider.applyOuterBorder)(themeTokens),
63
+ ...selectProps(rest),
60
64
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
61
65
  style: selectInnerContainerStyles(themeTokens),
62
66
  children: IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
@@ -67,7 +71,8 @@ const TooltipButton = ({
67
71
  });
68
72
  };
69
73
 
70
- TooltipButton.propTypes = {
74
+ TooltipButton.propTypes = { ...selectedSystemPropTypes,
75
+
71
76
  /**
72
77
  * Used as appearances when resolving theme tokens.
73
78
  */
@@ -32,6 +32,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
32
32
  /**
33
33
  * @typedef {import('../utils/a11y/semantics').TextTag} TextTag
34
34
  */
35
+ const [selectProps, selectedSystemPropTypes] = (0, _utils2.selectSystemProps)([_utils2.a11yProps, _utils2.viewProps]);
36
+
35
37
  const selectTextStyles = ({
36
38
  fontWeight,
37
39
  fontSize,
@@ -76,24 +78,24 @@ const Typography = /*#__PURE__*/(0, _react.forwardRef)(({
76
78
  dataSet,
77
79
  maxFontSizeMultiplier: (0, _utils2.getMaxFontMultiplier)(themeTokens)
78
80
  };
79
- const a11y = { ...(0, _utils2.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
80
- ..._utils2.a11yProps.select(rest)
81
- };
81
+ const selectedProps = selectProps({ ...(0, _utils2.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
82
+ ...rest
83
+ });
82
84
  return block ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
83
85
  ref: ref,
84
- ...a11y,
86
+ ...selectedProps,
85
87
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, { ...textProps,
86
88
  children: children
87
89
  })
88
90
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
89
91
  ref: ref,
90
92
  ...textProps,
91
- ...a11y,
93
+ ...selectedProps,
92
94
  children: children
93
95
  });
94
96
  });
95
97
  Typography.displayName = 'Typography';
96
- Typography.propTypes = { ..._utils2.a11yProps.types,
98
+ Typography.propTypes = { ...selectedSystemPropTypes,
97
99
  tokens: (0, _utils2.getTokensPropType)('Typography'),
98
100
  variant: _utils2.variantProp.propType,
99
101
 
package/lib/index.js CHANGED
@@ -46,6 +46,7 @@ var _exportNames = {
46
46
  BaseProvider: true,
47
47
  ViewportProvider: true,
48
48
  useViewport: true,
49
+ ViewportContext: true,
49
50
  ThemeProvider: true,
50
51
  useTheme: true,
51
52
  useSetTheme: true,
@@ -304,6 +305,12 @@ Object.defineProperty(exports, "useViewport", {
304
305
  return _ViewportProvider.useViewport;
305
306
  }
306
307
  });
308
+ Object.defineProperty(exports, "ViewportContext", {
309
+ enumerable: true,
310
+ get: function () {
311
+ return _ViewportProvider.ViewportContext;
312
+ }
313
+ });
307
314
  Object.defineProperty(exports, "ThemeProvider", {
308
315
  enumerable: true,
309
316
  get: function () {
@@ -154,9 +154,10 @@ const getA11yPropsFromHtmlTag = (tag, nativeRole) => {
154
154
  };
155
155
 
156
156
  if (tag) {
157
- const accessibilityRole = tagsToRoles[tag];
158
- if (accessibilityRole) return {
159
- accessibilityRole
157
+ // aria roles don't have native counterparts and RN may throw an error if an unrecognised role is passed
158
+ const ariaRole = _Platform.default.OS === 'web' && tagsToRoles[tag];
159
+ if (ariaRole) return {
160
+ accessibilityRole: ariaRole
160
161
  };
161
162
  const accessibilityLevel = getHeadingLevel(tag);
162
163
  if (accessibilityLevel) return {
@@ -67,7 +67,11 @@ exports.unpackFragment = unpackFragment;
67
67
  const isStringOrNumber = child => typeof child === 'string' || typeof child === 'number'; // Wrap an A11yText with neighouring text strings so it doesn't split them into multiple <Text>s
68
68
 
69
69
 
70
- const isWrapable = child => isStringOrNumber(child) || child.type === _A11yText.default;
70
+ const isWrapable = child => {
71
+ var _child$type;
72
+
73
+ return isStringOrNumber(child) || child.type === _A11yText.default || ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name) === 'FootnoteLink';
74
+ };
71
75
 
72
76
  const combineKeys = childrenArray => childrenArray.reduce((newKey, child) => `${newKey}${child.key || ''}`, ''); // Group wrappable children for one `<Text>` parent, merging adjacent text nodes
73
77
 
@@ -125,16 +125,16 @@ Object.keys(_pressability).forEach(function (key) {
125
125
  });
126
126
  });
127
127
 
128
- var _propTypes = require("./propTypes");
128
+ var _props = require("./props");
129
129
 
130
- Object.keys(_propTypes).forEach(function (key) {
130
+ Object.keys(_props).forEach(function (key) {
131
131
  if (key === "default" || key === "__esModule") return;
132
132
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
133
- if (key in exports && exports[key] === _propTypes[key]) return;
133
+ if (key in exports && exports[key] === _props[key]) return;
134
134
  Object.defineProperty(exports, key, {
135
135
  enumerable: true,
136
136
  get: function () {
137
- return _propTypes[key];
137
+ return _props[key];
138
138
  }
139
139
  });
140
140
  });
@@ -165,6 +165,20 @@ var _useUniqueId = _interopRequireDefault(require("./useUniqueId"));
165
165
 
166
166
  var _withLinkRouter = _interopRequireDefault(require("./withLinkRouter"));
167
167
 
168
+ var _ssr = require("./ssr");
169
+
170
+ Object.keys(_ssr).forEach(function (key) {
171
+ if (key === "default" || key === "__esModule") return;
172
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
173
+ if (key in exports && exports[key] === _ssr[key]) return;
174
+ Object.defineProperty(exports, key, {
175
+ enumerable: true,
176
+ get: function () {
177
+ return _ssr[key];
178
+ }
179
+ });
180
+ });
181
+
168
182
  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); }
169
183
 
170
184
  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; }
@@ -9,7 +9,7 @@ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/export
9
9
 
10
10
  var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
11
11
 
12
- var _propTypes = require("./propTypes");
12
+ var _pressProps = _interopRequireDefault(require("./props/pressProps"));
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
@@ -108,7 +108,7 @@ const staticStyles = _StyleSheet.default.create(_Platform.default.select({
108
108
 
109
109
  const getPressHandlersWithArgs = (pressableProps = {}, args = []) => {
110
110
  // Allow handlers to be passed down for blur, hover, focus, pressIn, etc
111
- const pressHandlers = Object.fromEntries(Object.entries(_propTypes.pressProps.selectHandlers(pressableProps)).map(([key, handler]) => ({
111
+ const pressHandlers = Object.fromEntries(Object.entries(_pressProps.default.selectHandlers(pressableProps)).map(([key, handler]) => ({
112
112
  [key]: (...defaultArgs) => {
113
113
  // Pass each handler data on this button and current selection
114
114
  handler(...args, ...defaultArgs);
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
+
12
+ var _getPropSelector = _interopRequireDefault(require("./getPropSelector"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ // React Native exports a11y prop definitions as TypeScript Interfaces, but no longer exports PropTypes
17
+ // so we have to define them ourselves.
18
+ const nativeA11yPropTypes = {
19
+ accessible: _propTypes.default.bool,
20
+ focusable: _propTypes.default.bool,
21
+ accessibilityElementsHidden: _propTypes.default.bool,
22
+ accessibilityHint: _propTypes.default.string,
23
+ // react-native-web ignores `accessibilityHint`
24
+ accessibilityIgnoresInvertColors: _propTypes.default.bool,
25
+ accessibilityLabel: _propTypes.default.string,
26
+ accessibilityRole: _propTypes.default.string,
27
+ accessibilityActions: _propTypes.default.arrayOf(_propTypes.default.shape({
28
+ name: _propTypes.default.string.isRequired,
29
+ label: _propTypes.default.string
30
+ })),
31
+ accessibilityLiveRegion: _propTypes.default.oneOf(['none', 'polite', 'assertive']),
32
+ accessibilityState: _propTypes.default.shape({
33
+ disabled: _propTypes.default.bool,
34
+ selected: _propTypes.default.bool,
35
+ checked: _propTypes.default.oneOf([true, false, 'mixed']),
36
+ busy: _propTypes.default.bool,
37
+ expanded: _propTypes.default.bool
38
+ }),
39
+ accessibilityValue: _propTypes.default.shape({
40
+ min: _propTypes.default.number,
41
+ max: _propTypes.default.number,
42
+ now: _propTypes.default.number,
43
+ text: _propTypes.default.string
44
+ }),
45
+ accessibilityViewIsModal: _propTypes.default.bool,
46
+ importantForAccessibility: _propTypes.default.oneOf(['auto', 'yes', 'no', 'no-hide-descendants']),
47
+ onAccessibilityAction: _propTypes.default.func,
48
+ onAccessibilityEscape: _propTypes.default.func,
49
+ onAccessibilityTap: _propTypes.default.func
50
+ };
51
+ const a11yPropTypes = { ...nativeA11yPropTypes,
52
+ // React Native Web adds many a11y props that alias aria-* attributes
53
+ // Types based on https://necolas.github.io/react-native-web/docs/accessibility/
54
+ accessibilityActiveDescendant: _propTypes.default.string,
55
+ accessibilityAtomic: _propTypes.default.bool,
56
+ accessibilityAutoComplete: _propTypes.default.string,
57
+ accessibilityBusy: _propTypes.default.bool,
58
+ accessibilityChecked: _propTypes.default.oneOf([true, false, 'mixed']),
59
+ accessibilityColumnCount: _propTypes.default.number,
60
+ accessibilityColumnIndex: _propTypes.default.number,
61
+ accessibilityColumnSpan: _propTypes.default.number,
62
+ accessibilityControls: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
63
+ accessibilityCurrent: _propTypes.default.oneOf([true, false, 'page', 'step', 'location', 'date', 'time']),
64
+ accessibilityDescribedBy: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
65
+ accessibilityDetails: _propTypes.default.string,
66
+ accessibilityDisabled: _propTypes.default.bool,
67
+ accessibilityErrorMessage: _propTypes.default.string,
68
+ accessibilityExpanded: _propTypes.default.bool,
69
+ accessibilityFlowTo: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
70
+ accessibilityHasPopup: _propTypes.default.string,
71
+ accessibilityHidden: _propTypes.default.bool,
72
+ accessibilityInvalid: _propTypes.default.bool,
73
+ accessibilityKeyShortcuts: _propTypes.default.string,
74
+ accessibilityLabelledBy: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
75
+ accessibilityLevel: _propTypes.default.number,
76
+ accessibilityModal: _propTypes.default.bool,
77
+ accessibilityMultiline: _propTypes.default.bool,
78
+ accessibilityMultiSelectable: _propTypes.default.bool,
79
+ accessibilityOrientation: _propTypes.default.oneOf(['horizontal', 'vertical']),
80
+ accessibilityOwns: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
81
+ accessibilityPlaceholder: _propTypes.default.string,
82
+ accessibilityPosInSet: _propTypes.default.number,
83
+ accessibilityPressed: _propTypes.default.bool,
84
+ accessibilityReadOnly: _propTypes.default.bool,
85
+ accessibilityRequired: _propTypes.default.bool,
86
+ accessibilityRoleDescription: _propTypes.default.string,
87
+ accessibilityRowCount: _propTypes.default.number,
88
+ accessibilityRowIndex: _propTypes.default.number,
89
+ accessibilityRowSpan: _propTypes.default.number,
90
+ accessibilitySelected: _propTypes.default.bool,
91
+ accessibilitySetSize: _propTypes.default.number,
92
+ accessibilitySort: _propTypes.default.oneOf(['ascending', 'descending', 'none', 'other']),
93
+ accessibilityValueMax: _propTypes.default.number,
94
+ accessibilityValueMin: _propTypes.default.number,
95
+ accessibilityValueNow: _propTypes.default.number,
96
+ accessibilityValueText: _propTypes.default.string
97
+ };
98
+ var _default = {
99
+ /**
100
+ * Proptypes for recognised React Native accessiblity (a11y) props.
101
+ * Spread this in the propTypes of components that accept React Native a11y props.
102
+ */
103
+ types: a11yPropTypes,
104
+
105
+ /**
106
+ * Filters a props object, returning only recognised React Native accessiblity (a11y) props.
107
+ *
108
+ * Where components accept React Native a11y props, pass { ...rest } from its props to this,
109
+ * then spread the returned object into the component's props (usually its outer container).
110
+ */
111
+ select: (0, _getPropSelector.default)(a11yPropTypes, /^aria-/),
112
+
113
+ /**
114
+ * Use this to disable focus for elements which are visually hidden but still rendered.
115
+ */
116
+ nonFocusableProps: {
117
+ focusable: false,
118
+ // for android, and for keyboard nav in web
119
+ ..._Platform.default.select({
120
+ web: {
121
+ accessibilityHidden: true // web screenreaders
122
+
123
+ },
124
+ android: {
125
+ importantForAccessibility: 'no-hide-descendants'
126
+ },
127
+ ios: {
128
+ accessibilityElementsHidden: true
129
+ }
130
+ })
131
+ },
132
+
133
+ /**
134
+ * Generates an object of platform-appropriate a11y props describing an item that has an
135
+ * ordered position in a set. Examples of usage by accessibility tools includes screenreaders
136
+ * saying "Item X of Y" when this item is select.
137
+ *
138
+ * @param {number} itemsCount - the number of items in the set
139
+ * @param {number} index - the current item's index in the set
140
+ * @returns {object} - platform-applicable a11y props describing this position (if available)
141
+ */
142
+ getPositionInSet: (itemsCount, index) => _Platform.default.select({
143
+ web: {
144
+ // accessibilityPosInSet etc exists in React Native Web main branch
145
+ // but not in a release compatible with Expo etc; just use `aria-*`
146
+ 'aria-setsize': itemsCount,
147
+ 'aria-posinset': index + 1
148
+ },
149
+ // No equivalents exist on the native side
150
+ default: {}
151
+ })
152
+ };
153
+ exports.default = _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const clickHandlerMapping = {
13
+ onClick: 'onPress',
14
+ mouseDown: 'onPressIn',
15
+ mouseUp: 'onPressOut'
16
+ };
17
+ var _default = {
18
+ /**
19
+ * Web-oriented HTML click handlers that may be mapped to React Native press handlers
20
+ */
21
+ types: Object.fromEntries(Object.keys(clickHandlerMapping).map(mouseName => [mouseName, _propTypes.default.func])),
22
+
23
+ /**
24
+ * Takes a set of props and converts HTML mouse click oriented event handlers to closest
25
+ * equivalent React Native press event handler.
26
+ *
27
+ * Use this when a component that expects press-oriented props may need to support third-party
28
+ * web-oriented tooling that injects web-oriented event handlers directly. For example, for
29
+ * to support use with NextJS's 'next/link' component, which injects `onClick` prop into its child.
30
+ */
31
+ toPressProps: props => Object.fromEntries(Object.entries(props).map(([originalName, value]) => {
32
+ const translatedName = clickHandlerMapping[originalName];
33
+ return translatedName ? [translatedName, value] : [originalName, value];
34
+ }))
35
+ };
36
+ exports.default = _default;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = componentPropType;
7
+
8
+ /**
9
+ * Returns a prop type validator which checks whether a prop is either a component or an array of
10
+ * components of a given type, based on their `name` or `displayName` properties.
11
+ * Use an array of strings for `passedName` to accept more than one component type.
12
+ * For an array the validation fails on the first occurrence of an invalid element.
13
+ *
14
+ * @param {string|string[]} passedName
15
+ * @return {function}
16
+ */
17
+ function componentPropType(passedName) {
18
+ const passedNames = typeof passedName === 'string' ? [passedName] : passedName;
19
+
20
+ const checkProp = (props, propName, componentName) => {
21
+ var _props$propName$type, _props$propName$type2;
22
+
23
+ if (props[propName] === undefined || props[propName] === null) {
24
+ return undefined;
25
+ }
26
+
27
+ if (Array.isArray(props[propName])) {
28
+ // Iterates through every child and try to find the first element that does not match the passed name
29
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
30
+ return props[propName].map((_, index) => checkProp(props[propName], index, componentName)).find(Boolean);
31
+ }
32
+
33
+ const nameInProp = ((_props$propName$type = props[propName].type) === null || _props$propName$type === void 0 ? void 0 : _props$propName$type.displayName) || ((_props$propName$type2 = props[propName].type) === null || _props$propName$type2 === void 0 ? void 0 : _props$propName$type2.name);
34
+
35
+ if (!nameInProp || !passedNames.includes(nameInProp)) {
36
+ const propDescription = nameInProp ? `Component ${nameInProp}` : typeof props[propName];
37
+ return new Error(`${componentName}: ${propDescription} was passed to \`${propName}\` prop; should be ${passedNames.join(' or ')}`);
38
+ }
39
+
40
+ return undefined;
41
+ };
42
+
43
+ const checkRequired = (props, propName, componentName) => {
44
+ if (props[propName] === undefined) {
45
+ return new Error(`The prop \`${propName}\` is marked as required in \`${componentName}\`, but its value is ${props[propName]}.`);
46
+ }
47
+
48
+ return undefined;
49
+ };
50
+
51
+ const createValidate = isRequired => {
52
+ if (isRequired) {
53
+ return (props, propName, componentName) => {
54
+ const checkForError = checkProp(props, propName, componentName);
55
+
56
+ if (checkForError) {
57
+ return checkForError;
58
+ }
59
+
60
+ return checkRequired(props, propName, componentName);
61
+ };
62
+ }
63
+
64
+ return checkProp;
65
+ };
66
+
67
+ const validate = createValidate();
68
+ validate.isRequired = createValidate(true);
69
+ return validate;
70
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _propTypes.default.oneOf(['en', 'fr']);
13
+
14
+ exports.default = _default;