@telus-uds/components-base 1.1.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/.turbo/turbo-build.log +8 -0
  2. package/CHANGELOG.json +38 -0
  3. package/CHANGELOG.md +35 -2
  4. package/__fixtures__/Accessible.js +4 -2
  5. package/__fixtures__/Accessible.native.js +5 -2
  6. package/__fixtures__/testTheme.js +9 -0
  7. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
  8. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
  9. package/__tests__/FlexGrid/Col.test.jsx +6 -10
  10. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +1 -0
  11. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +10 -0
  12. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +192 -0
  13. package/__tests__/utils/props.test.js +36 -0
  14. package/__tests__/utils/semantics.test.jsx +1 -10
  15. package/babel.config.js +27 -5
  16. package/component-docs.json +638 -1145
  17. package/generate-component-docs.js +3 -0
  18. package/lib/A11yText/index.js +6 -5
  19. package/lib/ActivityIndicator/Spinner.js +46 -37
  20. package/lib/ActivityIndicator/Spinner.native.js +26 -15
  21. package/lib/ActivityIndicator/index.js +3 -3
  22. package/lib/Box/Box.js +8 -8
  23. package/lib/Button/Button.js +2 -2
  24. package/lib/Button/ButtonBase.js +25 -12
  25. package/lib/Button/ButtonGroup.js +10 -12
  26. package/lib/Button/ButtonLink.js +4 -4
  27. package/lib/Button/propTypes.js +4 -2
  28. package/lib/Card/Card.js +6 -5
  29. package/lib/Card/CardBase.js +6 -9
  30. package/lib/Card/PressableCardBase.js +15 -14
  31. package/lib/Checkbox/Checkbox.js +4 -8
  32. package/lib/Divider/Divider.js +14 -13
  33. package/lib/ExpandCollapse/Control.js +7 -7
  34. package/lib/ExpandCollapse/ExpandCollapse.js +6 -2
  35. package/lib/ExpandCollapse/Panel.js +6 -7
  36. package/lib/Feedback/Feedback.js +6 -5
  37. package/lib/Fieldset/Fieldset.js +1 -3
  38. package/lib/FlexGrid/FlexGrid.js +4 -4
  39. package/lib/FlexGrid/helpers/index.js +1 -4
  40. package/lib/HorizontalScroll/HorizontalScroll.js +5 -6
  41. package/lib/IconButton/IconButton.js +14 -9
  42. package/lib/InputLabel/InputLabel.js +7 -2
  43. package/lib/InputSupports/InputSupports.js +2 -2
  44. package/lib/Link/LinkBase.js +21 -15
  45. package/lib/List/List.js +4 -6
  46. package/lib/List/ListItem.js +6 -2
  47. package/lib/Modal/Modal.js +6 -2
  48. package/lib/Notification/Notification.js +7 -2
  49. package/lib/Pagination/PageButton.js +3 -1
  50. package/lib/Pagination/Pagination.js +22 -5
  51. package/lib/Pagination/SideButton.js +3 -1
  52. package/lib/Progress/Progress.js +5 -4
  53. package/lib/Progress/ProgressBar.js +8 -7
  54. package/lib/Radio/Radio.js +4 -8
  55. package/lib/Radio/RadioButton.js +6 -3
  56. package/lib/Radio/RadioGroup.js +7 -2
  57. package/lib/RadioCard/RadioCard.js +4 -4
  58. package/lib/RadioCard/RadioCardGroup.js +9 -6
  59. package/lib/Search/Search.js +7 -2
  60. package/lib/Select/Select.js +10 -9
  61. package/lib/SideNav/Item.js +7 -7
  62. package/lib/SideNav/SideNav.js +7 -3
  63. package/lib/Skeleton/Skeleton.js +6 -2
  64. package/lib/Spacer/Spacer.js +9 -20
  65. package/lib/StackView/StackView.js +7 -7
  66. package/lib/StackView/StackWrapBox.js +6 -7
  67. package/lib/StackView/StackWrapGap.js +6 -5
  68. package/lib/StackView/getStackedContent.js +1 -1
  69. package/lib/StepTracker/Step.js +7 -3
  70. package/lib/StepTracker/StepTracker.js +7 -7
  71. package/lib/Tabs/Tabs.js +16 -4
  72. package/lib/Tabs/TabsItem.js +18 -11
  73. package/lib/Tags/Tags.js +11 -12
  74. package/lib/TextInput/TextArea.js +13 -14
  75. package/lib/TextInput/TextInput.js +13 -14
  76. package/lib/TextInput/TextInputBase.js +5 -3
  77. package/lib/ThemeProvider/useThemeTokens.js +3 -3
  78. package/lib/ThemeProvider/utils/theme-tokens.js +3 -3
  79. package/lib/ToggleSwitch/ToggleSwitch.js +106 -43
  80. package/lib/ToggleSwitch/ToggleSwitchGroup.js +228 -0
  81. package/lib/ToggleSwitch/index.js +14 -4
  82. package/lib/Tooltip/Tooltip.js +7 -2
  83. package/lib/TooltipButton/TooltipButton.js +7 -2
  84. package/lib/Typography/Typography.js +8 -6
  85. package/lib/index.js +20 -8
  86. package/lib/utils/a11y/semantics.js +4 -3
  87. package/lib/utils/children.js +5 -1
  88. package/lib/utils/index.js +28 -5
  89. package/lib/utils/pressability.js +2 -2
  90. package/lib/utils/props/a11yProps.js +153 -0
  91. package/lib/utils/props/clickProps.js +36 -0
  92. package/lib/utils/props/componentPropType.js +70 -0
  93. package/lib/utils/props/copyPropTypes.js +14 -0
  94. package/lib/utils/props/getPropSelector.js +13 -0
  95. package/lib/utils/props/hrefAttrsProp.js +41 -0
  96. package/lib/utils/props/index.js +158 -0
  97. package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
  98. package/lib/utils/props/linkProps.js +64 -0
  99. package/lib/utils/props/paddingProp.js +20 -0
  100. package/lib/utils/props/pressProps.js +57 -0
  101. package/lib/utils/props/rectProp.js +20 -0
  102. package/lib/utils/props/responsiveProps.js +40 -0
  103. package/lib/utils/props/selectSystemProps.js +31 -0
  104. package/lib/utils/props/spacingProps.js +71 -0
  105. package/lib/utils/props/tokens.js +145 -0
  106. package/lib/utils/props/variantProp.js +28 -0
  107. package/lib/utils/props/viewProps.js +34 -0
  108. package/lib/utils/ssr.js +51 -0
  109. package/lib/utils/useResponsiveProp.js +1 -1
  110. package/lib/utils/useSpacingScale.js +4 -4
  111. package/lib/utils/withLinkRouter.js +98 -0
  112. package/lib-module/A11yInfoProvider/index.js +62 -0
  113. package/lib-module/A11yText/index.js +55 -0
  114. package/lib-module/ActivityIndicator/Spinner.js +76 -0
  115. package/lib-module/ActivityIndicator/Spinner.native.js +143 -0
  116. package/lib-module/ActivityIndicator/index.js +40 -0
  117. package/lib-module/ActivityIndicator/shared.js +12 -0
  118. package/lib-module/BaseProvider/index.js +26 -0
  119. package/lib-module/Box/Box.js +243 -0
  120. package/lib-module/Box/index.js +2 -0
  121. package/lib-module/Button/Button.js +25 -0
  122. package/lib-module/Button/ButtonBase.js +254 -0
  123. package/lib-module/Button/ButtonGroup.js +164 -0
  124. package/lib-module/Button/ButtonLink.js +39 -0
  125. package/lib-module/Button/index.js +4 -0
  126. package/lib-module/Button/propTypes.js +36 -0
  127. package/lib-module/Card/Card.js +83 -0
  128. package/lib-module/Card/CardBase.js +62 -0
  129. package/lib-module/Card/PressableCardBase.js +113 -0
  130. package/lib-module/Card/index.js +4 -0
  131. package/lib-module/Checkbox/Checkbox.js +321 -0
  132. package/lib-module/Checkbox/CheckboxGroup.js +218 -0
  133. package/lib-module/Checkbox/CheckboxInput.js +58 -0
  134. package/lib-module/Checkbox/CheckboxInput.native.js +6 -0
  135. package/lib-module/Checkbox/index.js +3 -0
  136. package/lib-module/Divider/Divider.js +123 -0
  137. package/lib-module/Divider/index.js +2 -0
  138. package/lib-module/ExpandCollapse/Accordion.js +15 -0
  139. package/lib-module/ExpandCollapse/Control.js +130 -0
  140. package/lib-module/ExpandCollapse/ExpandCollapse.js +94 -0
  141. package/lib-module/ExpandCollapse/Panel.js +158 -0
  142. package/lib-module/ExpandCollapse/index.js +7 -0
  143. package/lib-module/Feedback/Feedback.js +144 -0
  144. package/lib-module/Feedback/index.js +2 -0
  145. package/lib-module/Fieldset/Fieldset.js +145 -0
  146. package/lib-module/Fieldset/FieldsetContainer.js +29 -0
  147. package/lib-module/Fieldset/FieldsetContainer.native.js +20 -0
  148. package/lib-module/Fieldset/Legend.js +21 -0
  149. package/lib-module/Fieldset/Legend.native.js +28 -0
  150. package/lib-module/Fieldset/cssReset.js +14 -0
  151. package/lib-module/Fieldset/index.js +2 -0
  152. package/lib-module/FlexGrid/Col/Col.js +265 -0
  153. package/lib-module/FlexGrid/Col/index.js +2 -0
  154. package/lib-module/FlexGrid/FlexGrid.js +147 -0
  155. package/lib-module/FlexGrid/Row/Row.js +177 -0
  156. package/lib-module/FlexGrid/Row/index.js +2 -0
  157. package/lib-module/FlexGrid/helpers/index.js +18 -0
  158. package/lib-module/FlexGrid/index.js +2 -0
  159. package/lib-module/FlexGrid/providers/GutterContext.js +3 -0
  160. package/lib-module/HorizontalScroll/HorizontalScroll.js +171 -0
  161. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +102 -0
  162. package/lib-module/HorizontalScroll/ScrollViewEnd.js +47 -0
  163. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +24 -0
  164. package/lib-module/HorizontalScroll/dictionary.js +11 -0
  165. package/lib-module/HorizontalScroll/index.js +11 -0
  166. package/lib-module/HorizontalScroll/itemPositions.js +106 -0
  167. package/lib-module/Icon/Icon.js +61 -0
  168. package/lib-module/Icon/IconText.js +81 -0
  169. package/lib-module/Icon/index.js +4 -0
  170. package/lib-module/IconButton/IconButton.js +115 -0
  171. package/lib-module/IconButton/index.js +2 -0
  172. package/lib-module/InputLabel/InputLabel.js +131 -0
  173. package/lib-module/InputLabel/LabelContent.js +24 -0
  174. package/lib-module/InputLabel/LabelContent.native.js +16 -0
  175. package/lib-module/InputLabel/index.js +2 -0
  176. package/lib-module/InputSupports/InputSupports.js +88 -0
  177. package/lib-module/InputSupports/index.js +2 -0
  178. package/lib-module/InputSupports/useInputSupports.js +31 -0
  179. package/lib-module/Link/ChevronLink.js +51 -0
  180. package/lib-module/Link/InlinePressable.js +37 -0
  181. package/lib-module/Link/InlinePressable.native.js +85 -0
  182. package/lib-module/Link/Link.js +27 -0
  183. package/lib-module/Link/LinkBase.js +210 -0
  184. package/lib-module/Link/TextButton.js +43 -0
  185. package/lib-module/Link/index.js +5 -0
  186. package/lib-module/List/List.js +55 -0
  187. package/lib-module/List/ListItem.js +213 -0
  188. package/lib-module/List/index.js +5 -0
  189. package/lib-module/Modal/Modal.js +208 -0
  190. package/lib-module/Modal/dictionary.js +9 -0
  191. package/lib-module/Modal/index.js +2 -0
  192. package/lib-module/Notification/Notification.js +196 -0
  193. package/lib-module/Notification/dictionary.js +8 -0
  194. package/lib-module/Notification/index.js +2 -0
  195. package/lib-module/Pagination/PageButton.js +65 -0
  196. package/lib-module/Pagination/Pagination.js +140 -0
  197. package/lib-module/Pagination/SideButton.js +103 -0
  198. package/lib-module/Pagination/dictionary.js +18 -0
  199. package/lib-module/Pagination/index.js +2 -0
  200. package/lib-module/Pagination/usePagination.js +72 -0
  201. package/lib-module/Progress/Progress.js +85 -0
  202. package/lib-module/Progress/ProgressBar.js +134 -0
  203. package/lib-module/Progress/ProgressBarBackground.js +41 -0
  204. package/lib-module/Progress/index.js +4 -0
  205. package/lib-module/Radio/Radio.js +263 -0
  206. package/lib-module/Radio/RadioButton.js +128 -0
  207. package/lib-module/Radio/RadioGroup.js +225 -0
  208. package/lib-module/Radio/RadioInput.js +60 -0
  209. package/lib-module/Radio/RadioInput.native.js +6 -0
  210. package/lib-module/Radio/index.js +3 -0
  211. package/lib-module/RadioCard/RadioCard.js +218 -0
  212. package/lib-module/RadioCard/RadioCardGroup.js +232 -0
  213. package/lib-module/RadioCard/index.js +3 -0
  214. package/lib-module/Search/Search.js +233 -0
  215. package/lib-module/Search/dictionary.js +12 -0
  216. package/lib-module/Search/index.js +2 -0
  217. package/lib-module/Select/Group.js +20 -0
  218. package/lib-module/Select/Group.native.js +14 -0
  219. package/lib-module/Select/Item.js +17 -0
  220. package/lib-module/Select/Item.native.js +9 -0
  221. package/lib-module/Select/Picker.js +67 -0
  222. package/lib-module/Select/Picker.native.js +110 -0
  223. package/lib-module/Select/Select.js +317 -0
  224. package/lib-module/Select/index.js +6 -0
  225. package/lib-module/SideNav/Item.js +139 -0
  226. package/lib-module/SideNav/ItemContent.js +45 -0
  227. package/lib-module/SideNav/ItemsGroup.js +115 -0
  228. package/lib-module/SideNav/SideNav.js +133 -0
  229. package/lib-module/SideNav/index.js +1 -0
  230. package/lib-module/Skeleton/Skeleton.js +117 -0
  231. package/lib-module/Skeleton/index.js +2 -0
  232. package/lib-module/Skeleton/skeleton.constant.js +3 -0
  233. package/lib-module/Skeleton/skeletonWebAnimation.js +18 -0
  234. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +24 -0
  235. package/lib-module/Spacer/Spacer.js +97 -0
  236. package/lib-module/Spacer/index.js +2 -0
  237. package/lib-module/StackView/StackView.js +124 -0
  238. package/lib-module/StackView/StackWrap.js +48 -0
  239. package/lib-module/StackView/StackWrap.native.js +3 -0
  240. package/lib-module/StackView/StackWrapBox.js +114 -0
  241. package/lib-module/StackView/StackWrapGap.js +58 -0
  242. package/lib-module/StackView/common.js +32 -0
  243. package/lib-module/StackView/getStackedContent.js +123 -0
  244. package/lib-module/StackView/index.js +5 -0
  245. package/lib-module/StepTracker/Step.js +229 -0
  246. package/lib-module/StepTracker/StepTracker.js +175 -0
  247. package/lib-module/StepTracker/dictionary.js +10 -0
  248. package/lib-module/StepTracker/index.js +2 -0
  249. package/lib-module/Tabs/Tabs.js +113 -0
  250. package/lib-module/Tabs/TabsItem.js +215 -0
  251. package/lib-module/Tabs/index.js +2 -0
  252. package/lib-module/Tags/Tags.js +238 -0
  253. package/lib-module/Tags/index.js +2 -0
  254. package/lib-module/TextInput/TextArea.js +88 -0
  255. package/lib-module/TextInput/TextInput.js +60 -0
  256. package/lib-module/TextInput/TextInputBase.js +233 -0
  257. package/lib-module/TextInput/index.js +3 -0
  258. package/lib-module/TextInput/propTypes.js +31 -0
  259. package/lib-module/ThemeProvider/ThemeProvider.js +35 -0
  260. package/lib-module/ThemeProvider/index.js +6 -0
  261. package/lib-module/ThemeProvider/useSetTheme.js +22 -0
  262. package/lib-module/ThemeProvider/useTheme.js +14 -0
  263. package/lib-module/ThemeProvider/useThemeTokens.js +105 -0
  264. package/lib-module/ThemeProvider/utils/index.js +2 -0
  265. package/lib-module/ThemeProvider/utils/styles.js +174 -0
  266. package/lib-module/ThemeProvider/utils/theme-tokens.js +151 -0
  267. package/lib-module/ToggleSwitch/ToggleSwitch.js +224 -0
  268. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +202 -0
  269. package/lib-module/ToggleSwitch/index.js +3 -0
  270. package/lib-module/Tooltip/Backdrop.js +52 -0
  271. package/lib-module/Tooltip/Backdrop.native.js +43 -0
  272. package/lib-module/Tooltip/Tooltip.js +332 -0
  273. package/lib-module/Tooltip/dictionary.js +8 -0
  274. package/lib-module/Tooltip/getTooltipPosition.js +164 -0
  275. package/lib-module/Tooltip/index.js +2 -0
  276. package/lib-module/TooltipButton/TooltipButton.js +71 -0
  277. package/lib-module/TooltipButton/index.js +2 -0
  278. package/lib-module/Typography/Typography.js +118 -0
  279. package/lib-module/Typography/index.js +2 -0
  280. package/lib-module/ViewportProvider/ViewportProvider.js +28 -0
  281. package/lib-module/ViewportProvider/index.js +3 -0
  282. package/lib-module/ViewportProvider/useViewport.js +3 -0
  283. package/lib-module/ViewportProvider/useViewportListener.js +43 -0
  284. package/lib-module/index.js +48 -0
  285. package/lib-module/utils/a11y/index.js +2 -0
  286. package/lib-module/utils/a11y/semantics.js +154 -0
  287. package/lib-module/utils/a11y/textSize.js +34 -0
  288. package/lib-module/utils/animation/index.js +2 -0
  289. package/lib-module/utils/animation/useVerticalExpandAnimation.js +49 -0
  290. package/lib-module/utils/children.js +118 -0
  291. package/lib-module/utils/index.js +15 -0
  292. package/lib-module/utils/info/index.js +7 -0
  293. package/lib-module/utils/info/platform/index.js +11 -0
  294. package/lib-module/utils/info/platform/platform.android.js +1 -0
  295. package/lib-module/utils/info/platform/platform.ios.js +1 -0
  296. package/lib-module/utils/info/platform/platform.js +1 -0
  297. package/lib-module/utils/info/platform/platform.native.js +4 -0
  298. package/lib-module/utils/info/versions.js +5 -0
  299. package/lib-module/utils/input.js +180 -0
  300. package/lib-module/utils/pressability.js +97 -0
  301. package/lib-module/utils/props/a11yProps.js +140 -0
  302. package/lib-module/utils/props/clickProps.js +25 -0
  303. package/lib-module/utils/props/componentPropType.js +63 -0
  304. package/lib-module/utils/props/copyPropTypes.js +2 -0
  305. package/lib-module/utils/props/getPropSelector.js +6 -0
  306. package/lib-module/utils/props/hrefAttrsProp.js +30 -0
  307. package/lib-module/utils/props/index.js +16 -0
  308. package/lib-module/utils/props/inputSupportsProps.js +54 -0
  309. package/lib-module/utils/props/linkProps.js +47 -0
  310. package/lib-module/utils/props/paddingProp.js +9 -0
  311. package/lib-module/utils/props/pressProps.js +42 -0
  312. package/lib-module/utils/props/rectProp.js +9 -0
  313. package/lib-module/utils/props/responsiveProps.js +30 -0
  314. package/lib-module/utils/props/selectSystemProps.js +24 -0
  315. package/lib-module/utils/props/spacingProps.js +56 -0
  316. package/lib-module/utils/props/tokens.js +120 -0
  317. package/lib-module/utils/props/variantProp.js +18 -0
  318. package/lib-module/utils/props/viewProps.js +22 -0
  319. package/lib-module/utils/ssr.js +35 -0
  320. package/lib-module/utils/useCopy.js +42 -0
  321. package/lib-module/utils/useHash.js +44 -0
  322. package/lib-module/utils/useHash.native.js +7 -0
  323. package/lib-module/utils/useResponsiveProp.js +47 -0
  324. package/lib-module/utils/useSpacingScale.js +123 -0
  325. package/lib-module/utils/useUniqueId.js +12 -0
  326. package/lib-module/utils/withLinkRouter.js +82 -0
  327. package/package.json +9 -5
  328. package/src/A11yText/index.jsx +7 -3
  329. package/src/ActivityIndicator/Spinner.jsx +56 -44
  330. package/src/ActivityIndicator/Spinner.native.jsx +20 -12
  331. package/src/ActivityIndicator/index.jsx +1 -1
  332. package/src/Box/Box.jsx +15 -13
  333. package/src/Button/Button.jsx +1 -1
  334. package/src/Button/ButtonBase.jsx +20 -12
  335. package/src/Button/ButtonGroup.jsx +17 -8
  336. package/src/Button/ButtonLink.jsx +1 -1
  337. package/src/Button/propTypes.js +2 -1
  338. package/src/Card/Card.jsx +7 -4
  339. package/src/Card/CardBase.jsx +6 -5
  340. package/src/Card/PressableCardBase.jsx +16 -14
  341. package/src/Checkbox/Checkbox.jsx +12 -7
  342. package/src/Divider/Divider.jsx +19 -12
  343. package/src/ExpandCollapse/Control.jsx +12 -7
  344. package/src/ExpandCollapse/ExpandCollapse.jsx +13 -3
  345. package/src/ExpandCollapse/Panel.jsx +15 -5
  346. package/src/Feedback/Feedback.jsx +13 -3
  347. package/src/Fieldset/Fieldset.jsx +1 -1
  348. package/src/FlexGrid/FlexGrid.jsx +11 -5
  349. package/src/FlexGrid/helpers/index.js +1 -3
  350. package/src/HorizontalScroll/HorizontalScroll.jsx +12 -5
  351. package/src/IconButton/IconButton.jsx +18 -12
  352. package/src/InputLabel/InputLabel.jsx +16 -2
  353. package/src/InputSupports/InputSupports.jsx +1 -1
  354. package/src/Link/LinkBase.jsx +15 -12
  355. package/src/List/List.jsx +12 -5
  356. package/src/List/ListItem.jsx +16 -2
  357. package/src/Modal/Modal.jsx +63 -50
  358. package/src/Notification/Notification.jsx +17 -3
  359. package/src/Pagination/PageButton.jsx +3 -2
  360. package/src/Pagination/Pagination.jsx +38 -4
  361. package/src/Pagination/SideButton.jsx +2 -2
  362. package/src/Progress/Progress.jsx +5 -3
  363. package/src/Progress/ProgressBar.jsx +8 -6
  364. package/src/Radio/Radio.jsx +13 -7
  365. package/src/Radio/RadioButton.jsx +13 -3
  366. package/src/Radio/RadioGroup.jsx +14 -2
  367. package/src/RadioCard/RadioCard.jsx +9 -6
  368. package/src/RadioCard/RadioCardGroup.jsx +16 -4
  369. package/src/Search/Search.jsx +15 -3
  370. package/src/Select/Select.jsx +21 -7
  371. package/src/SideNav/Item.jsx +15 -7
  372. package/src/SideNav/SideNav.jsx +13 -2
  373. package/src/Skeleton/Skeleton.jsx +55 -43
  374. package/src/Spacer/Spacer.jsx +10 -18
  375. package/src/StackView/StackView.jsx +13 -12
  376. package/src/StackView/StackWrapBox.jsx +12 -12
  377. package/src/StackView/StackWrapGap.jsx +9 -7
  378. package/src/StackView/getStackedContent.jsx +1 -1
  379. package/src/StepTracker/Step.jsx +7 -4
  380. package/src/StepTracker/StepTracker.jsx +8 -8
  381. package/src/Tabs/Tabs.jsx +63 -23
  382. package/src/Tabs/TabsItem.jsx +22 -14
  383. package/src/Tags/Tags.jsx +16 -7
  384. package/src/TextInput/TextArea.jsx +20 -8
  385. package/src/TextInput/TextInput.jsx +20 -8
  386. package/src/TextInput/TextInputBase.jsx +13 -3
  387. package/src/ThemeProvider/useThemeTokens.js +3 -3
  388. package/src/ThemeProvider/utils/theme-tokens.js +3 -3
  389. package/src/ToggleSwitch/ToggleSwitch.jsx +104 -41
  390. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +211 -0
  391. package/src/ToggleSwitch/index.js +2 -1
  392. package/src/Tooltip/Tooltip.jsx +13 -3
  393. package/src/TooltipButton/TooltipButton.jsx +6 -4
  394. package/src/Typography/Typography.jsx +10 -6
  395. package/src/index.js +2 -2
  396. package/src/utils/a11y/semantics.js +3 -2
  397. package/src/utils/children.jsx +2 -1
  398. package/src/utils/index.js +3 -1
  399. package/src/utils/pressability.js +1 -1
  400. package/src/utils/props/a11yProps.js +151 -0
  401. package/src/utils/props/clickProps.js +31 -0
  402. package/src/utils/props/componentPropType.js +67 -0
  403. package/src/utils/props/copyPropTypes.js +3 -0
  404. package/src/utils/props/getPropSelector.js +14 -0
  405. package/src/utils/props/hrefAttrsProp.js +25 -0
  406. package/src/utils/props/index.js +16 -0
  407. package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
  408. package/src/utils/props/linkProps.js +43 -0
  409. package/src/utils/props/paddingProp.js +10 -0
  410. package/src/utils/props/pressProps.js +45 -0
  411. package/src/utils/props/rectProp.js +10 -0
  412. package/src/utils/props/responsiveProps.js +30 -0
  413. package/src/utils/props/selectSystemProps.js +25 -0
  414. package/src/utils/props/spacingProps.js +58 -0
  415. package/src/utils/props/tokens.js +150 -0
  416. package/src/utils/props/variantProp.js +20 -0
  417. package/src/utils/props/viewProps.js +23 -0
  418. package/src/utils/ssr.js +35 -0
  419. package/src/utils/useResponsiveProp.js +1 -1
  420. package/src/utils/useSpacingScale.js +4 -4
  421. package/src/utils/withLinkRouter.jsx +68 -0
  422. package/stories/TextInput/TextArea.stories.jsx +1 -0
  423. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +5 -1
  424. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +81 -0
  425. package/.ultra.cache.json +0 -1
  426. package/lib/utils/a11y/propTypes.js +0 -61
  427. package/lib/utils/a11y/propTypes.native.js +0 -47
  428. package/lib/utils/propTypes.js +0 -541
  429. package/release-context.json +0 -7
  430. package/src/utils/a11y/propTypes.js +0 -61
  431. package/src/utils/a11y/propTypes.native.js +0 -39
  432. package/src/utils/propTypes.js +0 -531
@@ -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, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
38
39
  const {
39
40
  itemPositionsPropType,
40
41
  getItemPositionLayoutHandler
@@ -99,7 +100,6 @@ const selectContainerStyles = ({
99
100
 
100
101
 
101
102
  const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
102
- onPress,
103
103
  href,
104
104
  variant,
105
105
  tokens,
@@ -114,8 +114,14 @@ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
114
114
  } : {
115
115
  selected
116
116
  },
117
- ...rest
117
+ ...rawRest
118
118
  }, ref) => {
119
+ // Convert onClick etc to onPress etc if used in an integration
120
+ const {
121
+ onPress,
122
+ ...rest
123
+ } = _utils.clickProps.toPressProps(rawRest);
124
+
119
125
  const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('TabsItem', tokens, variant);
120
126
 
121
127
  const resolveTokens = pressableState => (0, _utils.resolvePressableTokens)(getTokens, pressableState, {
@@ -139,15 +145,15 @@ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
139
145
  href
140
146
  });
141
147
 
142
- const handlePress = onPress || openHref ? () => {
143
- if (onPress) onPress();
144
- if (openHref) openHref();
148
+ const handlePress = onPress || openHref ? (...args) => {
149
+ if (onPress) onPress(...args);
150
+ if (openHref) openHref(...args);
145
151
  } : undefined;
146
- const a11y = {
152
+ const selectedProps = selectProps({
147
153
  accessibilityRole,
148
154
  accessibilityState,
149
- ..._utils.a11yProps.select(rest)
150
- };
155
+ ...rest
156
+ });
151
157
  (0, _react.useEffect)(() => {
152
158
  // If this is selected while off-screen, scroll it into view
153
159
  if (selected) {
@@ -168,7 +174,7 @@ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
168
174
  href: href,
169
175
  style: getPressableStyle,
170
176
  onLayout: handleLayout,
171
- ...a11y,
177
+ ...selectedProps,
172
178
  children: pressableState => {
173
179
  const {
174
180
  space,
@@ -206,7 +212,7 @@ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
206
212
  });
207
213
  });
208
214
  TabsItem.displayName = 'TabsItem';
209
- TabsItem.propTypes = { ..._utils.a11yProps.propTypes,
215
+ TabsItem.propTypes = { ...selectedSystemPropTypes,
210
216
  tokens: (0, _utils.getTokensPropType)('TabsItem'),
211
217
  variant: _utils.variantProp.propType,
212
218
  onPress: _propTypes.default.func,
@@ -234,5 +240,6 @@ const staticStyles = _StyleSheet.default.create({
234
240
  }
235
241
  });
236
242
 
237
- var _default = TabsItem;
243
+ var _default = (0, _utils.withLinkRouter)(TabsItem);
244
+
238
245
  exports.default = _default;
package/lib/Tags/Tags.js CHANGED
@@ -27,7 +27,7 @@ var _ViewportProvider = require("../ViewportProvider");
27
27
 
28
28
  var _ThemeProvider = require("../ThemeProvider");
29
29
 
30
- var _propTypes2 = require("../utils/propTypes");
30
+ var _props = require("../utils/props");
31
31
 
32
32
  var _input = require("../utils/input");
33
33
 
@@ -41,6 +41,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
41
41
 
42
42
  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; }
43
43
 
44
+ const [selectProps, selectedSystemPropTypes] = (0, _props.selectSystemProps)([_props.a11yProps, _props.pressProps, _props.viewProps]);
45
+
44
46
  const selectIconTextTokens = ({
45
47
  icon,
46
48
  iconPosition,
@@ -97,14 +99,14 @@ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
97
99
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Tags', tokens, variant, {
98
100
  viewport
99
101
  });
100
- const stackTokens = (0, _propTypes2.selectTokens)('StackView', themeTokens);
102
+ const stackTokens = (0, _props.selectTokens)('StackView', themeTokens);
101
103
  const {
102
104
  direction,
103
105
  space
104
106
  } = themeTokens;
105
107
  const getItemTokens = (0, _ThemeProvider.useThemeTokensCallback)('TagsItem', tokens, variant);
106
108
 
107
- const getButtonTokens = buttonState => (0, _propTypes2.selectTokens)('Button', getItemTokens(buttonState));
109
+ const getButtonTokens = buttonState => (0, _props.selectTokens)('Button', getItemTokens(buttonState));
108
110
 
109
111
  const {
110
112
  currentValues,
@@ -116,16 +118,14 @@ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
116
118
  onChange,
117
119
  readOnly
118
120
  });
119
-
120
- const a11y = _propTypes2.a11yProps.select({
121
+ const selectedProps = selectProps({
121
122
  accessibilityRole,
122
123
  ...rest
123
124
  });
124
-
125
125
  const itemA11yRole = 'checkbox';
126
126
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, {
127
127
  ref: ref,
128
- ...a11y,
128
+ ...selectedProps,
129
129
  space: space,
130
130
  direction: direction,
131
131
  tokens: stackTokens,
@@ -154,7 +154,7 @@ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
154
154
  },
155
155
  accessibilityRole: itemA11yRole,
156
156
  accessibilityLabel,
157
- ..._propTypes2.a11yProps.getPositionInSet(items.length, index)
157
+ ..._props.a11yProps.getPositionInSet(items.length, index)
158
158
  };
159
159
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
160
160
  ref: itemRef,
@@ -202,10 +202,9 @@ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
202
202
  });
203
203
  });
204
204
  Tags.displayName = 'Tags';
205
- Tags.propTypes = { ..._propTypes2.a11yProps.propTypes,
206
- ..._propTypes2.pressProps.propTypes,
207
- tokens: (0, _propTypes2.getTokensPropType)('Tags'),
208
- variant: _propTypes2.variantProp.propType,
205
+ Tags.propTypes = { ...selectedSystemPropTypes,
206
+ tokens: (0, _props.getTokensPropType)('Tags'),
207
+ variant: _props.variantProp.propType,
209
208
 
210
209
  /**
211
210
  * If provided, sets a maximum number of items a user may select at once.
@@ -17,9 +17,7 @@ var _TextInputBase = _interopRequireDefault(require("./TextInputBase"));
17
17
 
18
18
  var _ThemeProvider = require("../ThemeProvider");
19
19
 
20
- var _propTypes = _interopRequireDefault(require("../InputSupports/propTypes"));
21
-
22
- var _propTypes2 = _interopRequireDefault(require("./propTypes"));
20
+ var _propTypes = _interopRequireDefault(require("./propTypes"));
23
21
 
24
22
  var _jsxRuntime = require("react/jsx-runtime");
25
23
 
@@ -29,6 +27,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
29
27
 
30
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
29
 
30
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.inputSupportsProps, _utils.viewProps]);
32
31
  /**
33
32
  * Use to collect long-form information such as product feedback or support queries.
34
33
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -53,10 +52,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
53
52
  * or an indicator that the field is optional.
54
53
  * It is a more usable and accessible option than the HTML `placeholder` attribute.
55
54
  */
55
+
56
56
  const TextArea = /*#__PURE__*/(0, _react.forwardRef)(({
57
57
  tokens,
58
58
  variant = {},
59
- ...remainingProps
59
+ ...rest
60
60
  }, ref) => {
61
61
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('TextArea', tokens, variant);
62
62
  const [inputHeight, setInputHeight] = (0, _react.useState)(); // adjust the text area's height as new lines are added to the content
@@ -76,10 +76,9 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)(({
76
76
 
77
77
  const {
78
78
  props: supportsProps,
79
- rest
80
- } = _propTypes.default.select(remainingProps);
81
-
82
- const inputProps = { ...rest,
79
+ ...selectedProps
80
+ } = selectProps(rest);
81
+ const inputProps = { ...selectedProps,
83
82
  variant: { ...variant,
84
83
  validation: supportsProps.validation
85
84
  },
@@ -90,19 +89,19 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)(({
90
89
  };
91
90
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, { ...supportsProps,
92
91
  children: ({
93
- a11yProps,
94
- inputId
92
+ inputId,
93
+ ...props
95
94
  }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
96
95
  ref: ref,
97
96
  ...inputProps,
98
- ...a11yProps,
99
- nativeID: inputId
97
+ nativeID: inputId,
98
+ ...props
100
99
  })
101
100
  });
102
101
  });
103
102
  TextArea.displayName = 'TextArea';
104
- TextArea.propTypes = { ..._propTypes.default.types,
105
- ..._propTypes2.default,
103
+ TextArea.propTypes = { ...selectedSystemPropTypes,
104
+ ..._propTypes.default,
106
105
  tokens: (0, _utils.getTokensPropType)('TextArea', 'TextInput'),
107
106
  // TODO: support both TextArea and TextInput tokens
108
107
  variant: _utils.variantProp.propType
@@ -13,9 +13,7 @@ var _InputSupports = _interopRequireDefault(require("../InputSupports"));
13
13
 
14
14
  var _TextInputBase = _interopRequireDefault(require("./TextInputBase"));
15
15
 
16
- var _propTypes = _interopRequireDefault(require("../InputSupports/propTypes"));
17
-
18
- var _propTypes2 = _interopRequireDefault(require("./propTypes"));
16
+ var _propTypes = _interopRequireDefault(require("./propTypes"));
19
17
 
20
18
  var _jsxRuntime = require("react/jsx-runtime");
21
19
 
@@ -25,6 +23,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
23
 
26
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
25
 
26
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.inputSupportsProps, _utils.viewProps]);
28
27
  /**
29
28
  * A basic text input component. Use in forms or individually to receive user's input.
30
29
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -43,17 +42,17 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
43
42
  * supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
44
43
  * their implementation on the web.
45
44
  */
45
+
46
46
  const TextInput = /*#__PURE__*/(0, _react.forwardRef)(({
47
47
  tokens,
48
48
  variant = {},
49
- ...remainingProps
49
+ ...rest
50
50
  }, ref) => {
51
51
  const {
52
52
  props: supportsProps,
53
- rest
54
- } = _propTypes.default.select(remainingProps);
55
-
56
- const inputProps = { ...rest,
53
+ ...selectedProps
54
+ } = selectProps(rest);
55
+ const inputProps = { ...selectedProps,
57
56
  tokens,
58
57
  variant: { ...variant,
59
58
  validation: supportsProps.validation
@@ -61,19 +60,19 @@ const TextInput = /*#__PURE__*/(0, _react.forwardRef)(({
61
60
  };
62
61
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, { ...supportsProps,
63
62
  children: ({
64
- a11yProps,
65
- inputId
63
+ inputId,
64
+ ...props
66
65
  }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
67
66
  ref: ref,
68
67
  ...inputProps,
69
- ...a11yProps,
70
- nativeID: inputId
68
+ nativeID: inputId,
69
+ ...props
71
70
  })
72
71
  });
73
72
  });
74
73
  TextInput.displayName = 'TextInput';
75
- TextInput.propTypes = { ..._propTypes.default.types,
76
- ..._propTypes2.default,
74
+ TextInput.propTypes = { ...selectedSystemPropTypes,
75
+ ..._propTypes.default,
77
76
  tokens: (0, _utils.getTokensPropType)('TextInput'),
78
77
  variant: _utils.variantProp.propType
79
78
  };
@@ -29,6 +29,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
29
29
 
30
30
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
31
 
32
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
33
+
32
34
  const selectInputStyles = ({
33
35
  backgroundColor,
34
36
  color,
@@ -144,7 +146,7 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)(({
144
146
  onMouseOut,
145
147
  tokens,
146
148
  variant = {},
147
- ...remainingProps
149
+ ...rest
148
150
  }, ref) => {
149
151
  const [isFocused, setIsFocused] = (0, _react.useState)(false);
150
152
 
@@ -198,7 +200,7 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)(({
198
200
  const {
199
201
  icon: IconComponent
200
202
  } = themeTokens;
201
- const inputProps = { ...remainingProps,
203
+ const inputProps = { ...selectProps(rest),
202
204
  editable: !inactive,
203
205
  onFocus: handleFocus,
204
206
  onBlur: handleBlur,
@@ -229,7 +231,7 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)(({
229
231
  });
230
232
  });
231
233
  TextInputBase.displayName = 'TextInputBase';
232
- TextInputBase.propTypes = {
234
+ TextInputBase.propTypes = { ...selectedSystemPropTypes,
233
235
  value: _propTypes.default.string,
234
236
  height: _propTypes.default.number,
235
237
  initialValue: _propTypes.default.string,
@@ -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
  /**
@@ -11,15 +11,19 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
13
13
 
14
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
15
+
14
16
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
15
17
 
16
- var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
18
+ var _InputLabel = _interopRequireDefault(require("../InputLabel"));
17
19
 
18
20
  var _ButtonBase = _interopRequireDefault(require("../Button/ButtonBase"));
19
21
 
22
+ var _StackView = _interopRequireDefault(require("../StackView"));
23
+
20
24
  var _ThemeProvider = require("../ThemeProvider");
21
25
 
22
- var _propTypes2 = require("../utils/propTypes");
26
+ var _utils = require("../utils");
23
27
 
24
28
  var _input = require("../utils/input");
25
29
 
@@ -31,7 +35,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
35
 
32
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; }
33
37
 
34
- 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,
35
41
  // Width tokens are applied to our inner track. Disable Button width token so it wraps our track width.
36
42
  width: null
37
43
  }); // Map and rename icon-specific tokens to name used within Icon
@@ -80,16 +86,42 @@ const selectSwitchStyles = ({
80
86
  })
81
87
  });
82
88
 
89
+ const selectLabelStyles = ({
90
+ labelMarginLeft
91
+ }) => ({
92
+ marginLeft: labelMarginLeft
93
+ });
94
+
95
+ const selectLabelTokens = ({
96
+ labelColor,
97
+ labelFontName,
98
+ labelFontSize,
99
+ labelFontWeight,
100
+ labelLineHeight
101
+ }) => ({
102
+ color: labelColor,
103
+ fontName: labelFontName,
104
+ fontWeight: labelFontWeight,
105
+ fontSize: labelFontSize,
106
+ lineHeight: labelLineHeight
107
+ });
108
+
83
109
  const ToggleSwitch = /*#__PURE__*/(0, _react.forwardRef)(({
84
110
  value,
85
111
  initialValue,
86
112
  onChange,
113
+ id,
114
+ label,
87
115
  inactive,
88
116
  tokens,
117
+ tooltip,
89
118
  variant,
90
- accessibilityRole = 'switch'
119
+ accessibilityRole = 'switch',
120
+ accessibilityLabel = label,
121
+ ...rest
91
122
  }, ref) => {
92
123
  const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('ToggleSwitch', tokens, variant);
124
+ const themeTokens = getTokens();
93
125
  const {
94
126
  currentValue,
95
127
  setValue
@@ -103,48 +135,64 @@ const ToggleSwitch = /*#__PURE__*/(0, _react.forwardRef)(({
103
135
 
104
136
  const getButtonTokens = buttonState => selectButtonTokens(getTokens(buttonState));
105
137
 
106
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
107
- ref: ref,
108
- selected: currentValue,
109
- inactive: inactive,
110
- tokens: getButtonTokens,
111
- accessibilityRole: accessibilityRole,
112
- accessibilityState: {
113
- checked: currentValue
114
- },
115
- onPress: handlePress,
116
- children: buttonState => {
117
- const themeTokens = getTokens(buttonState);
118
- const IconComponent = themeTokens.icon;
119
- const switchStyles = selectSwitchStyles(themeTokens);
120
- const trackStyles = selectTrackStyles(themeTokens);
121
- const iconTokens = selectIconTokens(themeTokens); // If drag-slide support is needed, use a PanResponder and apply these to an Animated value.
122
- // Use translate transforms for smoothest non-thread-blocking animations and to allow drag.
123
-
124
- const slideStart = 0;
125
- const slideEnd = themeTokens.width - themeTokens.switchSize - themeTokens.trackBorderWidth * 2;
126
- const switchOffset = buttonState.selected ? slideEnd : slideStart;
127
- const switchPositionStyle = {
128
- transform: [{
129
- translateX: switchOffset
130
- }]
131
- };
132
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
133
- style: [staticStyles.track, trackStyles],
134
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
135
- style: [staticStyles.switch, switchStyles, switchPositionStyle],
136
- children: IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, { ...iconTokens
138
+ const uniqueId = (0, _utils.useUniqueId)('toggleSwitch');
139
+ const inputId = id ?? uniqueId;
140
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
141
+ space: 2,
142
+ direction: "row",
143
+ children: [Boolean(label) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
144
+ style: selectLabelStyles(themeTokens),
145
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputLabel.default, {
146
+ forId: inputId,
147
+ label: label,
148
+ tokens: selectLabelTokens(themeTokens),
149
+ tooltip: tooltip
150
+ })
151
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
152
+ id: id,
153
+ ref: ref,
154
+ selected: currentValue,
155
+ inactive: inactive,
156
+ tokens: getButtonTokens,
157
+ accessibilityLabel: accessibilityLabel,
158
+ accessibilityRole: accessibilityRole,
159
+ accessibilityState: {
160
+ checked: currentValue
161
+ },
162
+ onPress: handlePress,
163
+ ...selectProps(rest),
164
+ children: buttonState => {
165
+ const stateTokens = getTokens(buttonState);
166
+ const IconComponent = stateTokens.icon;
167
+ const switchStyles = selectSwitchStyles(stateTokens);
168
+ const trackStyles = selectTrackStyles(stateTokens);
169
+ const iconTokens = selectIconTokens(stateTokens); // If drag-slide support is needed, use a PanResponder and apply these to an Animated value.
170
+ // Use translate transforms for smoothest non-thread-blocking animations and to allow drag.
171
+
172
+ const slideStart = 0;
173
+ const slideEnd = stateTokens.width - stateTokens.switchSize - stateTokens.trackBorderWidth * 2;
174
+ const switchOffset = buttonState.selected ? slideEnd : slideStart;
175
+ const switchPositionStyle = {
176
+ transform: [{
177
+ translateX: switchOffset
178
+ }]
179
+ };
180
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
181
+ style: [staticStyles.track, trackStyles],
182
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
183
+ style: [staticStyles.switch, switchStyles, switchPositionStyle],
184
+ children: IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, { ...iconTokens
185
+ })
137
186
  })
138
- })
139
- });
140
- }
187
+ });
188
+ }
189
+ })]
141
190
  });
142
191
  });
143
192
  ToggleSwitch.displayName = 'ToggleSwitch';
144
- ToggleSwitch.propTypes = { ..._propTypes2.a11yProps.propTypes,
145
- ..._propTypes2.pressProps.propTypes,
146
- tokens: (0, _propTypes2.getTokensPropType)('ToggleSwitch'),
147
- variant: _propTypes2.variantProp.propType,
193
+ ToggleSwitch.propTypes = { ...selectedSystemPropTypes,
194
+ tokens: (0, _utils.getTokensPropType)('ToggleSwitch'),
195
+ variant: _utils.variantProp.propType,
148
196
 
149
197
  /**
150
198
  * If this is a "controlled" component and a parent handles its selected state,
@@ -165,11 +213,26 @@ ToggleSwitch.propTypes = { ..._propTypes2.a11yProps.propTypes,
165
213
  */
166
214
  onChange: _propTypes.default.func,
167
215
 
216
+ /**
217
+ * Input ID.
218
+ */
219
+ id: _propTypes.default.string,
220
+
221
+ /**
222
+ * An optional label.
223
+ */
224
+ label: _propTypes.default.string,
225
+
168
226
  /**
169
227
  * If passed, the switch does not respond to user input and may recieve different
170
228
  * theme tokens if the theme supports inactive appearance.
171
229
  */
172
- inactive: _propTypes.default.bool
230
+ inactive: _propTypes.default.bool,
231
+
232
+ /**
233
+ * Content of an optional Tooltip. If set, a tooltip button will be shown next to the label.
234
+ */
235
+ tooltip: _propTypes.default.string
173
236
  };
174
237
 
175
238
  const staticStyles = _StyleSheet.default.create({