@telus-uds/components-base 0.0.2-prerelease.6 → 1.0.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 (458) hide show
  1. package/.eslintrc.js +9 -0
  2. package/.ultra.cache.json +1 -1
  3. package/CHANGELOG.md +85 -0
  4. package/README.md +4 -2
  5. package/__fixtures__/Accessible.js +33 -0
  6. package/__fixtures__/Accessible.native.js +32 -0
  7. package/__fixtures__/test-utils.js +25 -0
  8. package/__fixtures__/testTheme.js +851 -57
  9. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
  10. package/__tests__/Button/ButtonBase.test.jsx +2 -31
  11. package/__tests__/Button/ButtonGroup.test.jsx +6 -7
  12. package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
  13. package/__tests__/Checkbox/CheckboxGroup.test.jsx +246 -0
  14. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
  15. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
  16. package/__tests__/Icon/Icon.test.jsx +3 -3
  17. package/__tests__/IconButton/IconButton.test.jsx +52 -0
  18. package/__tests__/InputSupports/InputSupports.test.jsx +50 -0
  19. package/__tests__/Link/LinkBase.test.jsx +0 -14
  20. package/__tests__/List/List.test.jsx +60 -0
  21. package/__tests__/Modal/Modal.test.jsx +47 -0
  22. package/__tests__/Notification/Notification.test.jsx +20 -0
  23. package/__tests__/Pagination/Pagination.test.jsx +2 -2
  24. package/__tests__/Progress/Progress.test.jsx +79 -0
  25. package/__tests__/Radio/Radio.test.jsx +87 -0
  26. package/__tests__/Radio/RadioGroup.test.jsx +220 -0
  27. package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
  28. package/__tests__/RadioCard/RadioCardGroup.test.jsx +246 -0
  29. package/__tests__/Search/Search.test.jsx +73 -0
  30. package/__tests__/Select/Select.test.jsx +94 -0
  31. package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
  32. package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
  33. package/__tests__/Tabs/Tabs.test.jsx +40 -0
  34. package/__tests__/Tags/Tags.test.jsx +327 -0
  35. package/__tests__/TextInput/TextArea.test.jsx +35 -0
  36. package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +29 -50
  37. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
  38. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +9 -5
  39. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
  40. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
  41. package/__tests__/utils/children.test.jsx +128 -0
  42. package/__tests__/utils/input.test.js +59 -1
  43. package/__tests__/utils/semantics.test.jsx +43 -0
  44. package/__tests__/utils/useCopy.test.js +14 -3
  45. package/babel.config.js +20 -0
  46. package/jest.config.js +8 -3
  47. package/lib/A11yInfoProvider/index.js +54 -26
  48. package/lib/A11yText/index.js +45 -17
  49. package/lib/ActivityIndicator/Spinner.js +81 -0
  50. package/lib/ActivityIndicator/Spinner.native.js +129 -91
  51. package/lib/ActivityIndicator/index.js +28 -12
  52. package/lib/ActivityIndicator/shared.js +27 -12
  53. package/lib/BaseProvider/index.js +34 -11
  54. package/lib/Box/Box.js +152 -35
  55. package/lib/Box/index.js +13 -2
  56. package/lib/Button/Button.js +41 -12
  57. package/lib/Button/ButtonBase.js +125 -97
  58. package/lib/Button/ButtonGroup.js +112 -89
  59. package/lib/Button/ButtonLink.js +48 -17
  60. package/lib/Button/index.js +31 -4
  61. package/lib/Button/propTypes.js +32 -9
  62. package/lib/Card/Card.js +38 -41
  63. package/lib/Card/CardBase.js +85 -0
  64. package/lib/Card/PressableCardBase.js +141 -0
  65. package/lib/Card/index.js +40 -2
  66. package/lib/Checkbox/Checkbox.js +355 -0
  67. package/lib/Checkbox/CheckboxGroup.js +241 -0
  68. package/lib/Checkbox/CheckboxInput.js +74 -0
  69. package/lib/Checkbox/CheckboxInput.native.js +14 -0
  70. package/lib/Checkbox/index.js +21 -0
  71. package/lib/Divider/Divider.js +59 -28
  72. package/lib/Divider/index.js +13 -2
  73. package/lib/ExpandCollapse/Accordion.js +26 -7
  74. package/lib/ExpandCollapse/Control.js +60 -31
  75. package/lib/ExpandCollapse/ExpandCollapse.js +50 -28
  76. package/lib/ExpandCollapse/Panel.js +83 -44
  77. package/lib/ExpandCollapse/index.js +25 -7
  78. package/lib/Feedback/Feedback.js +90 -39
  79. package/lib/Feedback/index.js +13 -2
  80. package/lib/Fieldset/Fieldset.js +165 -0
  81. package/lib/Fieldset/FieldsetContainer.js +46 -0
  82. package/lib/Fieldset/FieldsetContainer.native.js +38 -0
  83. package/lib/Fieldset/Legend.js +38 -0
  84. package/lib/Fieldset/Legend.native.js +48 -0
  85. package/lib/Fieldset/cssReset.js +21 -0
  86. package/lib/Fieldset/index.js +13 -0
  87. package/lib/FlexGrid/Col/Col.js +73 -41
  88. package/lib/FlexGrid/Col/index.js +13 -2
  89. package/lib/FlexGrid/FlexGrid.js +99 -49
  90. package/lib/FlexGrid/Row/Row.js +58 -30
  91. package/lib/FlexGrid/Row/index.js +13 -2
  92. package/lib/FlexGrid/helpers/index.js +9 -1
  93. package/lib/FlexGrid/index.js +13 -2
  94. package/lib/FlexGrid/providers/GutterContext.js +15 -3
  95. package/lib/HorizontalScroll/HorizontalScroll.js +200 -0
  96. package/lib/HorizontalScroll/HorizontalScrollButton.js +127 -0
  97. package/lib/HorizontalScroll/ScrollViewEnd.js +66 -0
  98. package/lib/HorizontalScroll/ScrollViewEnd.native.js +41 -0
  99. package/lib/HorizontalScroll/dictionary.js +18 -0
  100. package/lib/HorizontalScroll/index.js +35 -0
  101. package/lib/HorizontalScroll/itemPositions.js +128 -0
  102. package/lib/Icon/Icon.js +62 -50
  103. package/lib/Icon/IconText.js +101 -0
  104. package/lib/Icon/index.js +31 -3
  105. package/lib/IconButton/IconButton.js +140 -0
  106. package/lib/IconButton/index.js +13 -0
  107. package/lib/InputLabel/InputLabel.js +102 -40
  108. package/lib/InputLabel/LabelContent.js +41 -0
  109. package/lib/InputLabel/LabelContent.native.js +32 -6
  110. package/lib/InputLabel/index.js +13 -2
  111. package/lib/InputSupports/InputSupports.js +109 -0
  112. package/lib/InputSupports/index.js +13 -0
  113. package/lib/InputSupports/propTypes.js +66 -0
  114. package/lib/InputSupports/useInputSupports.js +41 -0
  115. package/lib/Link/ChevronLink.js +58 -31
  116. package/lib/Link/InlinePressable.js +56 -0
  117. package/lib/Link/InlinePressable.native.js +102 -0
  118. package/lib/Link/Link.js +39 -15
  119. package/lib/Link/LinkBase.js +126 -150
  120. package/lib/Link/TextButton.js +53 -18
  121. package/lib/Link/index.js +39 -4
  122. package/lib/List/List.js +81 -0
  123. package/lib/List/ListItem.js +245 -0
  124. package/lib/List/index.js +13 -0
  125. package/lib/Modal/Modal.js +231 -0
  126. package/lib/Modal/dictionary.js +16 -0
  127. package/lib/Modal/index.js +13 -0
  128. package/lib/Notification/Notification.js +216 -0
  129. package/lib/Notification/dictionary.js +15 -0
  130. package/lib/Notification/index.js +13 -0
  131. package/lib/Pagination/PageButton.js +58 -48
  132. package/lib/Pagination/Pagination.js +78 -43
  133. package/lib/Pagination/SideButton.js +79 -58
  134. package/lib/Pagination/dictionary.js +9 -2
  135. package/lib/Pagination/index.js +13 -2
  136. package/lib/Pagination/usePagination.js +12 -2
  137. package/lib/Progress/Progress.js +104 -0
  138. package/lib/Progress/ProgressBar.js +157 -0
  139. package/lib/Progress/ProgressBarBackground.js +61 -0
  140. package/lib/Progress/index.js +16 -0
  141. package/lib/Radio/Radio.js +293 -0
  142. package/lib/Radio/RadioButton.js +152 -0
  143. package/lib/Radio/RadioGroup.js +244 -0
  144. package/lib/Radio/RadioInput.js +76 -0
  145. package/lib/Radio/RadioInput.native.js +14 -0
  146. package/lib/Radio/index.js +21 -0
  147. package/lib/RadioCard/RadioCard.js +244 -0
  148. package/lib/RadioCard/RadioCardGroup.js +252 -0
  149. package/lib/RadioCard/index.js +21 -0
  150. package/lib/Search/Search.js +254 -0
  151. package/lib/Search/dictionary.js +19 -0
  152. package/lib/Search/index.js +13 -0
  153. package/lib/Select/Group.js +33 -0
  154. package/lib/Select/Group.native.js +25 -0
  155. package/lib/Select/Item.js +29 -0
  156. package/lib/Select/Item.native.js +19 -0
  157. package/lib/Select/Picker.js +84 -0
  158. package/lib/Select/Picker.native.js +130 -0
  159. package/lib/Select/Select.js +342 -0
  160. package/lib/Select/index.js +19 -0
  161. package/lib/SideNav/Item.js +63 -37
  162. package/lib/SideNav/ItemContent.js +41 -15
  163. package/lib/SideNav/ItemsGroup.js +55 -31
  164. package/lib/SideNav/SideNav.js +100 -73
  165. package/lib/SideNav/index.js +15 -1
  166. package/lib/Skeleton/Skeleton.js +137 -0
  167. package/lib/Skeleton/index.js +13 -0
  168. package/lib/Skeleton/skeleton.constant.js +12 -0
  169. package/lib/Skeleton/skeletonWebAnimation.js +27 -0
  170. package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
  171. package/lib/Spacer/Spacer.js +49 -18
  172. package/lib/Spacer/index.js +13 -2
  173. package/lib/StackView/StackView.js +71 -31
  174. package/lib/StackView/StackWrap.js +43 -13
  175. package/lib/StackView/StackWrap.native.js +13 -2
  176. package/lib/StackView/StackWrapBox.js +76 -29
  177. package/lib/StackView/StackWrapGap.js +56 -26
  178. package/lib/StackView/common.js +23 -6
  179. package/lib/StackView/getStackedContent.js +47 -17
  180. package/lib/StackView/index.js +29 -5
  181. package/lib/StepTracker/Step.js +245 -0
  182. package/lib/StepTracker/StepTracker.js +202 -0
  183. package/lib/StepTracker/dictionary.js +17 -0
  184. package/lib/StepTracker/index.js +13 -0
  185. package/lib/Tabs/Tabs.js +124 -0
  186. package/lib/Tabs/TabsItem.js +238 -0
  187. package/lib/Tabs/index.js +13 -0
  188. package/lib/Tags/Tags.js +266 -0
  189. package/lib/Tags/index.js +13 -0
  190. package/lib/TextInput/TextArea.js +111 -0
  191. package/lib/TextInput/TextInput.js +50 -304
  192. package/lib/TextInput/TextInputBase.js +256 -0
  193. package/lib/TextInput/index.js +23 -2
  194. package/lib/TextInput/propTypes.js +42 -0
  195. package/lib/ThemeProvider/ThemeProvider.js +46 -18
  196. package/lib/ThemeProvider/index.js +61 -6
  197. package/lib/ThemeProvider/useSetTheme.js +19 -5
  198. package/lib/ThemeProvider/useTheme.js +13 -4
  199. package/lib/ThemeProvider/useThemeTokens.js +86 -19
  200. package/lib/ThemeProvider/utils/index.js +31 -2
  201. package/lib/ThemeProvider/utils/styles.js +50 -14
  202. package/lib/ThemeProvider/utils/theme-tokens.js +121 -12
  203. package/lib/ToggleSwitch/ToggleSwitch.js +86 -57
  204. package/lib/ToggleSwitch/index.js +13 -2
  205. package/lib/Tooltip/{Backdrop.web.js → Backdrop.js} +20 -8
  206. package/lib/Tooltip/Backdrop.native.js +39 -15
  207. package/lib/Tooltip/Tooltip.js +117 -74
  208. package/lib/Tooltip/dictionary.js +9 -2
  209. package/lib/Tooltip/getTooltipPosition.js +9 -1
  210. package/lib/Tooltip/index.js +13 -2
  211. package/lib/TooltipButton/TooltipButton.js +57 -38
  212. package/lib/TooltipButton/index.js +13 -2
  213. package/lib/Typography/Typography.js +86 -55
  214. package/lib/Typography/index.js +13 -2
  215. package/lib/ViewportProvider/ViewportProvider.js +34 -13
  216. package/lib/ViewportProvider/index.js +28 -3
  217. package/lib/ViewportProvider/useViewport.js +15 -3
  218. package/lib/ViewportProvider/useViewportListener.js +24 -10
  219. package/lib/index.js +539 -26
  220. package/lib/utils/a11y/index.js +31 -0
  221. package/lib/utils/a11y/semantics.js +173 -0
  222. package/lib/utils/a11y/textSize.js +49 -0
  223. package/lib/utils/animation/index.js +15 -2
  224. package/lib/utils/animation/useVerticalExpandAnimation.js +27 -10
  225. package/lib/utils/children.js +134 -0
  226. package/lib/utils/index.js +163 -7
  227. package/lib/utils/info/index.js +19 -0
  228. package/lib/utils/info/platform/index.js +23 -0
  229. package/lib/utils/info/platform/platform.android.js +8 -0
  230. package/lib/utils/info/platform/platform.ios.js +8 -0
  231. package/lib/utils/info/platform/platform.js +8 -0
  232. package/lib/utils/info/platform/platform.native.js +11 -0
  233. package/lib/utils/info/versions.js +16 -0
  234. package/lib/utils/input.js +53 -25
  235. package/lib/utils/pressability.js +120 -0
  236. package/lib/utils/propTypes.js +338 -132
  237. package/lib/utils/useCopy.js +40 -5
  238. package/lib/utils/useHash.js +52 -0
  239. package/lib/utils/useHash.native.js +15 -0
  240. package/lib/utils/useResponsiveProp.js +21 -9
  241. package/lib/utils/useSpacingScale.js +19 -9
  242. package/lib/utils/useUniqueId.js +12 -3
  243. package/package.json +16 -10
  244. package/release-context.json +4 -4
  245. package/src/A11yText/index.jsx +6 -4
  246. package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +5 -3
  247. package/src/ActivityIndicator/Spinner.native.jsx +5 -3
  248. package/src/Box/Box.jsx +131 -39
  249. package/src/Button/Button.jsx +13 -6
  250. package/src/Button/ButtonBase.jsx +134 -125
  251. package/src/Button/ButtonGroup.jsx +85 -86
  252. package/src/Button/ButtonLink.jsx +22 -7
  253. package/src/Button/propTypes.js +12 -2
  254. package/src/Card/Card.jsx +5 -31
  255. package/src/Card/CardBase.jsx +58 -0
  256. package/src/Card/PressableCardBase.jsx +119 -0
  257. package/src/Card/index.js +3 -0
  258. package/src/Checkbox/Checkbox.jsx +284 -0
  259. package/src/Checkbox/CheckboxGroup.jsx +206 -0
  260. package/src/Checkbox/CheckboxInput.jsx +55 -0
  261. package/src/Checkbox/CheckboxInput.native.jsx +6 -0
  262. package/src/Checkbox/index.js +5 -0
  263. package/src/Divider/Divider.jsx +7 -4
  264. package/src/ExpandCollapse/Accordion.jsx +3 -2
  265. package/src/ExpandCollapse/Control.jsx +40 -43
  266. package/src/ExpandCollapse/ExpandCollapse.jsx +26 -23
  267. package/src/ExpandCollapse/Panel.jsx +69 -63
  268. package/src/Feedback/Feedback.jsx +42 -30
  269. package/src/Fieldset/Fieldset.jsx +136 -0
  270. package/src/Fieldset/FieldsetContainer.jsx +31 -0
  271. package/src/Fieldset/FieldsetContainer.native.jsx +19 -0
  272. package/src/Fieldset/Legend.jsx +21 -0
  273. package/src/Fieldset/Legend.native.jsx +27 -0
  274. package/src/Fieldset/cssReset.js +14 -0
  275. package/src/Fieldset/index.js +3 -0
  276. package/src/FlexGrid/Col/Col.jsx +139 -132
  277. package/src/FlexGrid/FlexGrid.jsx +79 -51
  278. package/src/FlexGrid/Row/Row.jsx +55 -48
  279. package/src/HorizontalScroll/HorizontalScroll.jsx +168 -0
  280. package/src/HorizontalScroll/HorizontalScrollButton.jsx +105 -0
  281. package/src/HorizontalScroll/ScrollViewEnd.jsx +53 -0
  282. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +24 -0
  283. package/src/HorizontalScroll/dictionary.js +11 -0
  284. package/src/HorizontalScroll/index.js +17 -0
  285. package/src/HorizontalScroll/itemPositions.js +101 -0
  286. package/src/Icon/Icon.jsx +46 -49
  287. package/src/Icon/IconText.jsx +68 -0
  288. package/src/Icon/index.js +3 -2
  289. package/src/IconButton/IconButton.jsx +114 -0
  290. package/src/IconButton/index.js +3 -0
  291. package/src/InputLabel/InputLabel.jsx +57 -35
  292. package/src/InputLabel/LabelContent.jsx +21 -0
  293. package/src/InputLabel/LabelContent.native.jsx +11 -2
  294. package/src/InputSupports/InputSupports.jsx +70 -0
  295. package/src/InputSupports/index.js +3 -0
  296. package/src/InputSupports/propTypes.js +44 -0
  297. package/src/InputSupports/useInputSupports.js +30 -0
  298. package/src/Link/ChevronLink.jsx +34 -21
  299. package/src/Link/InlinePressable.jsx +39 -0
  300. package/src/Link/InlinePressable.native.jsx +75 -0
  301. package/src/Link/Link.jsx +23 -13
  302. package/src/Link/LinkBase.jsx +98 -170
  303. package/src/Link/TextButton.jsx +37 -16
  304. package/src/Link/index.js +2 -1
  305. package/src/List/List.jsx +48 -0
  306. package/src/List/ListItem.jsx +182 -0
  307. package/src/List/index.js +3 -0
  308. package/src/Modal/Modal.jsx +190 -0
  309. package/src/Modal/dictionary.js +9 -0
  310. package/src/Modal/index.js +3 -0
  311. package/src/Notification/Notification.jsx +164 -0
  312. package/src/Notification/dictionary.js +8 -0
  313. package/src/Notification/index.js +3 -0
  314. package/src/Pagination/PageButton.jsx +42 -49
  315. package/src/Pagination/Pagination.jsx +88 -92
  316. package/src/Pagination/SideButton.jsx +58 -66
  317. package/src/Progress/Progress.jsx +78 -0
  318. package/src/Progress/ProgressBar.jsx +123 -0
  319. package/src/Progress/ProgressBarBackground.jsx +36 -0
  320. package/src/Progress/index.js +6 -0
  321. package/src/Radio/Radio.jsx +240 -0
  322. package/src/Radio/RadioButton.jsx +142 -0
  323. package/src/Radio/RadioGroup.jsx +209 -0
  324. package/src/Radio/RadioInput.jsx +57 -0
  325. package/src/Radio/RadioInput.native.jsx +6 -0
  326. package/src/Radio/index.js +5 -0
  327. package/src/RadioCard/RadioCard.jsx +198 -0
  328. package/src/RadioCard/RadioCardGroup.jsx +218 -0
  329. package/src/RadioCard/index.js +5 -0
  330. package/src/Search/Search.jsx +225 -0
  331. package/src/Search/dictionary.js +12 -0
  332. package/src/Search/index.js +3 -0
  333. package/src/Select/Group.jsx +15 -0
  334. package/src/Select/Group.native.jsx +14 -0
  335. package/src/Select/Item.jsx +11 -0
  336. package/src/Select/Item.native.jsx +10 -0
  337. package/src/Select/Picker.jsx +74 -0
  338. package/src/Select/Picker.native.jsx +102 -0
  339. package/src/Select/Select.jsx +298 -0
  340. package/src/Select/index.js +8 -0
  341. package/src/SideNav/Item.jsx +54 -47
  342. package/src/SideNav/ItemsGroup.jsx +50 -43
  343. package/src/SideNav/SideNav.jsx +68 -60
  344. package/src/Skeleton/Skeleton.jsx +94 -0
  345. package/src/Skeleton/index.js +3 -0
  346. package/src/Skeleton/skeleton.constant.js +3 -0
  347. package/src/Skeleton/skeletonWebAnimation.js +13 -0
  348. package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
  349. package/src/Spacer/Spacer.jsx +11 -4
  350. package/src/StackView/StackView.jsx +53 -23
  351. package/src/StackView/StackWrap.jsx +16 -7
  352. package/src/StackView/StackWrapBox.jsx +62 -28
  353. package/src/StackView/StackWrapGap.jsx +46 -24
  354. package/src/StackView/common.jsx +3 -2
  355. package/src/StackView/getStackedContent.jsx +8 -2
  356. package/src/StepTracker/Step.jsx +202 -0
  357. package/src/StepTracker/StepTracker.jsx +174 -0
  358. package/src/StepTracker/dictionary.js +10 -0
  359. package/src/StepTracker/index.js +3 -0
  360. package/src/Tabs/Tabs.jsx +97 -0
  361. package/src/Tabs/TabsItem.jsx +212 -0
  362. package/src/Tabs/index.js +3 -0
  363. package/src/Tags/Tags.jsx +219 -0
  364. package/src/Tags/index.js +3 -0
  365. package/src/TextInput/TextArea.jsx +79 -0
  366. package/src/TextInput/TextInput.jsx +18 -284
  367. package/src/TextInput/TextInputBase.jsx +217 -0
  368. package/src/TextInput/index.js +2 -1
  369. package/src/TextInput/propTypes.js +29 -0
  370. package/src/ThemeProvider/ThemeProvider.jsx +11 -7
  371. package/src/ThemeProvider/useSetTheme.js +4 -0
  372. package/src/ThemeProvider/useThemeTokens.js +56 -5
  373. package/src/ThemeProvider/utils/styles.js +18 -5
  374. package/src/ThemeProvider/utils/theme-tokens.js +74 -5
  375. package/src/ToggleSwitch/ToggleSwitch.jsx +51 -53
  376. package/src/Tooltip/{Backdrop.web.jsx → Backdrop.jsx} +0 -0
  377. package/src/Tooltip/Tooltip.jsx +135 -131
  378. package/src/TooltipButton/TooltipButton.jsx +23 -27
  379. package/src/Typography/Typography.jsx +72 -59
  380. package/src/index.js +31 -3
  381. package/src/utils/a11y/index.js +2 -0
  382. package/src/utils/a11y/semantics.js +162 -0
  383. package/src/utils/a11y/textSize.js +30 -0
  384. package/src/utils/children.jsx +119 -0
  385. package/src/utils/index.js +6 -0
  386. package/src/utils/info/index.js +8 -0
  387. package/src/utils/info/platform/index.js +11 -0
  388. package/src/utils/info/platform/platform.android.js +1 -0
  389. package/src/utils/info/platform/platform.ios.js +1 -0
  390. package/src/utils/info/platform/platform.js +1 -0
  391. package/src/utils/info/platform/platform.native.js +4 -0
  392. package/src/utils/info/versions.js +6 -0
  393. package/src/utils/input.js +36 -25
  394. package/src/utils/pressability.js +96 -0
  395. package/src/utils/propTypes.js +291 -90
  396. package/src/utils/useCopy.js +30 -4
  397. package/src/utils/useHash.js +39 -0
  398. package/src/utils/useHash.native.js +6 -0
  399. package/stories/A11yText/A11yText.stories.jsx +6 -10
  400. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +1 -1
  401. package/stories/Box/Box.stories.jsx +1 -1
  402. package/stories/Button/Button.stories.jsx +7 -2
  403. package/stories/Button/ButtonGroup.stories.jsx +1 -1
  404. package/stories/Button/ButtonLink.stories.jsx +1 -1
  405. package/stories/Card/Card.stories.jsx +1 -1
  406. package/stories/Checkbox/Checkbox.stories.jsx +94 -0
  407. package/stories/Divider/Divider.stories.jsx +1 -1
  408. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
  409. package/stories/Feedback/Feedback.stories.jsx +5 -6
  410. package/stories/FlexGrid/01 FlexGrid.stories.jsx +1 -1
  411. package/stories/FlexGrid/02 Row.stories.jsx +1 -1
  412. package/stories/FlexGrid/03 Col.stories.jsx +1 -1
  413. package/stories/Icon/Icon.stories.jsx +27 -7
  414. package/stories/IconButton/IconButton.stories.jsx +50 -0
  415. package/stories/InputLabel/InputLabel.stories.jsx +1 -1
  416. package/stories/Link/ChevronLink.stories.jsx +1 -1
  417. package/stories/Link/Link.stories.jsx +28 -18
  418. package/stories/Link/TextButton.stories.jsx +1 -1
  419. package/stories/List/List.stories.jsx +117 -0
  420. package/stories/Modal/Modal.stories.jsx +29 -0
  421. package/stories/Notification/Notification.stories.jsx +82 -0
  422. package/stories/Pagination/Pagination.stories.jsx +1 -1
  423. package/stories/Progress/Progress.stories.jsx +93 -0
  424. package/stories/Radio/Radio.stories.jsx +100 -0
  425. package/stories/RadioCard/RadioCard.stories.jsx +98 -0
  426. package/stories/Search/Search.stories.jsx +16 -0
  427. package/stories/Select/Select.stories.jsx +55 -0
  428. package/stories/SideNav/SideNav.stories.jsx +1 -1
  429. package/stories/SideNav/SideNavItem.stories.jsx +1 -1
  430. package/stories/SideNav/SideNavItemsGroup.stories.jsx +1 -1
  431. package/stories/Skeleton/Skeleton.stories.jsx +36 -0
  432. package/stories/Spacer/Spacer.stories.jsx +1 -1
  433. package/stories/StackView/StackView.stories.jsx +1 -1
  434. package/stories/StackView/StackWrap.stories.jsx +1 -1
  435. package/stories/StepTracker/StepTracker.stories.jsx +71 -0
  436. package/stories/Tabs/Tabs.stories.jsx +97 -0
  437. package/stories/Tags/Tags.stories.jsx +69 -0
  438. package/stories/TextInput/TextArea.stories.jsx +100 -0
  439. package/stories/TextInput/TextInput.stories.jsx +1 -1
  440. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +1 -1
  441. package/stories/Tooltip/Tooltip.stories.jsx +1 -1
  442. package/stories/TooltipButton/TooltipButton.stories.jsx +1 -1
  443. package/stories/Typography/Typography.stories.jsx +1 -1
  444. package/stories/{platform-supports.web.jsx → platform-supports.jsx} +1 -1
  445. package/stories/supports.jsx +38 -4
  446. package/__fixtures__/accessible.icon.svg +0 -6
  447. package/babel.config.json +0 -8
  448. package/docs/Contributing.stories.mdx +0 -9
  449. package/docs/Fonts.stories.mdx +0 -104
  450. package/docs/Icons.stories.mdx +0 -144
  451. package/docs/Introduction.stories.mdx +0 -9
  452. package/lib/ActivityIndicator/Spinner.web.js +0 -55
  453. package/lib/InputLabel/LabelContent.web.js +0 -17
  454. package/lib/config/svgr-icons-web.js +0 -9
  455. package/lib/config/svgr-icons.js +0 -52
  456. package/src/InputLabel/LabelContent.web.jsx +0 -13
  457. package/src/config/svgr-icons-web.js +0 -11
  458. package/src/config/svgr-icons.js +0 -46
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useRef, useState } from 'react'
1
+ import React, { forwardRef, useEffect, useRef, useState } from 'react'
2
2
  import { Dimensions, Platform, Pressable, StyleSheet, Text, View } from 'react-native'
3
3
 
4
4
  import PropTypes from 'prop-types'
@@ -81,7 +81,7 @@ const selectArrowStyles = (
81
81
 
82
82
  const selectTextStyles = (tokens) => applyTextStyles(selectTokens('Typography', tokens))
83
83
  const defaultControl = (pressableState, variant) => (
84
- <TooltipButton variant={{ ...pressableState, ...variant }} />
84
+ <TooltipButton pressableState={pressableState} variant={variant} />
85
85
  )
86
86
 
87
87
  /**
@@ -99,157 +99,161 @@ const defaultControl = (pressableState, variant) => (
99
99
  * - You may use one when the information is useful only to a small percentage of users (ie. tech savvy people wouldn't need this info).
100
100
  * - Tooltips may also be useful when vertical space is an issue.
101
101
  */
102
- const Tooltip = ({ children, content, position = 'auto', copy = 'en', tokens, variant }) => {
103
- const [isOpen, setIsOpen] = useState(false)
102
+ const Tooltip = forwardRef(
103
+ ({ children, content, position = 'auto', copy = 'en', tokens, variant }, ref) => {
104
+ const [isOpen, setIsOpen] = useState(false)
104
105
 
105
- const controlRef = useRef()
106
- const [controlLayout, setControlLayout] = useState(null)
107
- const [tooltipDimensions, setTooltipDimensions] = useState(null)
108
- const [windowDimensions, setWindowDimensions] = useState(Dimensions.get('window'))
109
- const [tooltipPosition, setTooltipPosition] = useState(null)
106
+ const controlRef = useRef()
107
+ const [controlLayout, setControlLayout] = useState(null)
108
+ const [tooltipDimensions, setTooltipDimensions] = useState(null)
109
+ const [windowDimensions, setWindowDimensions] = useState(Dimensions.get('window'))
110
+ const [tooltipPosition, setTooltipPosition] = useState(null)
110
111
 
111
- const getCopy = useCopy({ dictionary, copy })
112
- const themeTokens = useThemeTokens('Tooltip', tokens, variant)
112
+ const getCopy = useCopy({ dictionary, copy })
113
+ const themeTokens = useThemeTokens('Tooltip', tokens, variant)
113
114
 
114
- const { arrowWidth, arrowOffset } = themeTokens
115
+ const { arrowWidth, arrowOffset } = themeTokens
115
116
 
116
- useEffect(() => {
117
- const subscription = Dimensions.addEventListener('change', ({ window }) => {
118
- setWindowDimensions(window)
119
- })
117
+ useEffect(() => {
118
+ const subscription = Dimensions.addEventListener('change', ({ window }) => {
119
+ setWindowDimensions(window)
120
+ })
120
121
 
121
- return () => subscription?.remove()
122
- })
122
+ return () => subscription?.remove()
123
+ })
123
124
 
124
- const toggleIsOpen = () => setIsOpen(!isOpen)
125
- const close = () => setIsOpen(false)
125
+ const toggleIsOpen = () => setIsOpen(!isOpen)
126
+ const close = () => setIsOpen(false)
126
127
 
127
- const getPressableState = ({ pressed, hovered, focused }) => ({
128
- pressed,
129
- hover: hovered,
130
- focus: focused
131
- })
128
+ const getPressableState = ({ pressed, hovered, focused }) => ({
129
+ pressed,
130
+ hover: hovered,
131
+ focus: focused
132
+ })
132
133
 
133
- const onTooltipLayout = ({
134
- nativeEvent: {
135
- layout: { width, height }
136
- }
137
- }) => {
138
- if (
139
- tooltipDimensions === null ||
140
- tooltipDimensions.width !== width ||
141
- tooltipDimensions.height !== height
142
- ) {
143
- setTooltipDimensions({
144
- width: Platform.select({
145
- web: width + 0.3, // avoids often unnecessary line breaks due to subpixel rendering of fonts
146
- native: width
147
- }),
148
- height
149
- })
134
+ const onTooltipLayout = ({
135
+ nativeEvent: {
136
+ layout: { width, height }
137
+ }
138
+ }) => {
139
+ if (
140
+ tooltipDimensions === null ||
141
+ tooltipDimensions.width !== width ||
142
+ tooltipDimensions.height !== height
143
+ ) {
144
+ setTooltipDimensions({
145
+ width: Platform.select({
146
+ web: width + 0.3, // avoids often unnecessary line breaks due to subpixel rendering of fonts
147
+ native: width
148
+ }),
149
+ height
150
+ })
151
+ }
150
152
  }
151
- }
152
153
 
153
- useEffect(() => {
154
- if (isOpen) {
155
- controlRef.current.measureInWindow((x, y, width, height) => {
156
- setControlLayout({ x, y, width, height })
157
- })
158
- } else {
159
- setControlLayout(null)
160
- setTooltipDimensions(null)
161
- setTooltipPosition(null)
162
- }
163
- }, [isOpen])
154
+ useEffect(() => {
155
+ if (isOpen) {
156
+ controlRef.current.measureInWindow((x, y, width, height) => {
157
+ setControlLayout({ x, y, width, height })
158
+ })
159
+ } else {
160
+ setControlLayout(null)
161
+ setTooltipDimensions(null)
162
+ setTooltipPosition(null)
163
+ }
164
+ }, [isOpen])
164
165
 
165
- useEffect(() => {
166
- setIsOpen(false)
167
- }, [windowDimensions])
166
+ useEffect(() => {
167
+ setIsOpen(false)
168
+ }, [windowDimensions])
168
169
 
169
- useEffect(() => {
170
- if (
171
- (tooltipPosition !== null && !tooltipPosition?.isNormalized) ||
172
- !isOpen ||
173
- controlLayout === null ||
174
- tooltipDimensions == null
175
- ) {
176
- return
177
- }
170
+ useEffect(() => {
171
+ if (
172
+ (tooltipPosition !== null && !tooltipPosition?.isNormalized) ||
173
+ !isOpen ||
174
+ controlLayout === null ||
175
+ tooltipDimensions == null
176
+ ) {
177
+ return
178
+ }
178
179
 
179
- const updatedPosition = getTooltipPosition(position, {
180
- controlLayout,
180
+ const updatedPosition = getTooltipPosition(position, {
181
+ controlLayout,
182
+ tooltipDimensions,
183
+ windowDimensions,
184
+ arrowWidth,
185
+ arrowOffset
186
+ })
187
+
188
+ // avoid ending up in an infinite normalization loop
189
+ if (tooltipPosition?.isNormalized && updatedPosition.isNormalized) {
190
+ return
191
+ }
192
+
193
+ setTooltipPosition(updatedPosition)
194
+ }, [
195
+ isOpen,
196
+ position,
181
197
  tooltipDimensions,
198
+ controlLayout,
182
199
  windowDimensions,
183
200
  arrowWidth,
184
- arrowOffset
185
- })
201
+ arrowOffset,
202
+ tooltipPosition
203
+ ])
186
204
 
187
- // avoid ending up in an infinite normalization loop
188
- if (tooltipPosition?.isNormalized && updatedPosition.isNormalized) {
189
- return
190
- }
205
+ const control = children !== undefined ? children : defaultControl
206
+ const pressableStyles =
207
+ control === defaultControl ? Platform.select({ web: { outline: 'none' } }) : undefined
208
+ const pressableHitSlop =
209
+ control === defaultControl ? { top: 10, bottom: 10, left: 10, right: 10 } : undefined
191
210
 
192
- setTooltipPosition(updatedPosition)
193
- }, [
194
- isOpen,
195
- position,
196
- tooltipDimensions,
197
- controlLayout,
198
- windowDimensions,
199
- arrowWidth,
200
- arrowOffset,
201
- tooltipPosition
202
- ])
203
-
204
- const control = children !== undefined ? children : defaultControl
205
- const pressableStyles =
206
- control === defaultControl ? Platform.select({ web: { outline: 'none' } }) : undefined
207
- const pressableHitSlop =
208
- control === defaultControl ? { top: 10, bottom: 10, left: 10, right: 10 } : undefined
209
-
210
- return (
211
- <View style={staticStyles.container}>
212
- <Pressable
213
- onPress={toggleIsOpen}
214
- ref={controlRef}
215
- onBlur={close}
216
- style={pressableStyles}
217
- hitSlop={pressableHitSlop}
218
- accessibilityLabel={getCopy('a11yText')}
219
- accessibilityRole="button"
220
- >
221
- {typeof control === 'function'
222
- ? (pressableState) => control(getPressableState(pressableState), variant)
223
- : control}
224
- </Pressable>
225
- {isOpen && (
226
- <Backdrop onPress={close}>
227
- <View
228
- style={[
229
- staticStyles.tooltip,
230
- selectTooltipShadowStyles(themeTokens), // applied separately so that it doesn't cover the arrow
231
- tooltipPosition && selectTooltipPositionStyles(tooltipPosition),
232
- (tooltipPosition === null || tooltipPosition?.isNormalized) &&
233
- staticStyles.tooltipHidden // visually hide the tooltip until we have a final measurement
234
- ]}
235
- onLayout={onTooltipLayout}
236
- accessibilityRole="alert"
237
- >
211
+ return (
212
+ <View style={staticStyles.container}>
213
+ <Pressable
214
+ onPress={toggleIsOpen}
215
+ ref={controlRef}
216
+ onBlur={close}
217
+ style={pressableStyles}
218
+ hitSlop={pressableHitSlop}
219
+ accessibilityLabel={getCopy('a11yText')}
220
+ accessibilityRole="button"
221
+ >
222
+ {typeof control === 'function'
223
+ ? (pressableState) => control(getPressableState(pressableState), variant)
224
+ : control}
225
+ </Pressable>
226
+ {isOpen && (
227
+ <Backdrop onPress={close}>
238
228
  <View
229
+ ref={ref}
239
230
  style={[
240
- staticStyles.arrow,
241
- tooltipPosition && selectArrowStyles(themeTokens, tooltipPosition)
231
+ staticStyles.tooltip,
232
+ selectTooltipShadowStyles(themeTokens), // applied separately so that it doesn't cover the arrow
233
+ tooltipPosition && selectTooltipPositionStyles(tooltipPosition),
234
+ (tooltipPosition === null || tooltipPosition?.isNormalized) &&
235
+ staticStyles.tooltipHidden // visually hide the tooltip until we have a final measurement
242
236
  ]}
243
- />
244
- <View style={selectTooltipStyles(themeTokens)}>
245
- <Text style={selectTextStyles(themeTokens)}>{content}</Text>
237
+ onLayout={onTooltipLayout}
238
+ accessibilityRole="alert"
239
+ >
240
+ <View
241
+ style={[
242
+ staticStyles.arrow,
243
+ tooltipPosition && selectArrowStyles(themeTokens, tooltipPosition)
244
+ ]}
245
+ />
246
+ <View style={selectTooltipStyles(themeTokens)}>
247
+ <Text style={selectTextStyles(themeTokens)}>{content}</Text>
248
+ </View>
246
249
  </View>
247
- </View>
248
- </Backdrop>
249
- )}
250
- </View>
251
- )
252
- }
250
+ </Backdrop>
251
+ )}
252
+ </View>
253
+ )
254
+ }
255
+ )
256
+ Tooltip.displayName = 'Tooltip'
253
257
 
254
258
  Tooltip.propTypes = {
255
259
  /**
@@ -1,51 +1,47 @@
1
1
  import React from 'react'
2
2
  import { View } from 'react-native'
3
3
 
4
- import { useThemeTokens } from '../ThemeProvider'
4
+ import PropTypes from 'prop-types'
5
+ import { useThemeTokens, applyOuterBorder } from '../ThemeProvider'
5
6
  import { getTokensPropType, variantProp } from '../utils'
7
+ import Icon from '../Icon'
6
8
 
7
- const selectOuterContainerStyles = ({
8
- outerBorderColor,
9
- outerBorderWidth = 0,
10
- outerBorderGap = 0,
11
- outerBorderRadius
12
- }) => {
13
- const outerBorderOffset = -1 * (outerBorderWidth + outerBorderGap)
14
-
15
- return {
16
- marginTop: outerBorderOffset,
17
- marginLeft: outerBorderOffset,
18
- marginRight: outerBorderOffset,
19
- marginBottom: outerBorderOffset,
20
- borderColor: outerBorderColor,
21
- borderWidth: outerBorderWidth,
22
- padding: outerBorderGap,
23
- borderRadius: outerBorderRadius
24
- }
25
- }
26
9
  const selectInnerContainerStyles = ({ borderRadius, width }) => ({ borderRadius, width })
27
10
 
28
- const selectIconTokens = ({ iconSize, iconColor, iconScale = 1 }) => ({
11
+ const selectIconTokens = ({ iconSize, iconColor /* iconScale = 1 */ }) => ({
29
12
  size: iconSize,
30
- color: iconColor,
31
- scale: iconScale
13
+ color: iconColor
14
+ // scale: iconScale TODO re-enable with icon component
32
15
  })
33
16
 
34
- const TooltipButton = ({ tokens, variant }) => {
35
- const themeTokens = useThemeTokens('TooltipButton', tokens, variant)
17
+ /**
18
+ * `TooltipButton` is a helper component used as a default control for the `Tooltip` component.
19
+ * In fact though, it isn't actually a pressable - it's meant to be used as pressable's content.
20
+ * Due to this any interaction states (e.g. pressed, hover, etc.) has to be passed down to it as a prop.
21
+ */
22
+ const TooltipButton = ({ pressableState, tokens, variant }) => {
23
+ const themeTokens = useThemeTokens('TooltipButton', tokens, variant, pressableState)
36
24
 
37
25
  const { icon: IconComponent } = themeTokens
38
26
 
39
27
  return (
40
- <View style={selectOuterContainerStyles(themeTokens)}>
28
+ <View style={applyOuterBorder(themeTokens)}>
41
29
  <View style={selectInnerContainerStyles(themeTokens)}>
42
- {IconComponent && <IconComponent tokens={selectIconTokens(themeTokens)} />}
30
+ {IconComponent && <Icon icon={IconComponent} tokens={selectIconTokens(themeTokens)} />}
43
31
  </View>
44
32
  </View>
45
33
  )
46
34
  }
47
35
 
48
36
  TooltipButton.propTypes = {
37
+ /**
38
+ * Used as appearances when resolving theme tokens.
39
+ */
40
+ pressableState: PropTypes.shape({
41
+ pressed: PropTypes.bool,
42
+ hover: PropTypes.bool,
43
+ focus: PropTypes.bool
44
+ }),
49
45
  tokens: getTokensPropType('TooltipButton'),
50
46
  variant: variantProp.propType
51
47
  }
@@ -1,31 +1,22 @@
1
- import React from 'react'
1
+ import React, { forwardRef } from 'react'
2
2
  import PropTypes from 'prop-types'
3
- import { Platform, Text, View } from 'react-native'
3
+ import { Text, View } from 'react-native'
4
4
 
5
5
  import { useThemeTokens } from '../ThemeProvider'
6
6
  import { useViewport } from '../ViewportProvider'
7
7
  import { applyTextStyles } from '../ThemeProvider/utils'
8
- import { a11yProps, variantProp, getTokensPropType } from '../utils/propTypes'
9
-
10
- /**
11
- * If passed a string like 'h1', 'h2' etc, returns the heading number as a string,
12
- * else returns false
13
- */
14
- function getHeadingLevel(heading) {
15
- const match = typeof heading === 'string' && heading.match(/^h(\d)$/)
16
- return match && match[1]
17
- }
18
-
8
+ import {
9
+ a11yProps,
10
+ variantProp,
11
+ getTokensPropType,
12
+ getMaxFontMultiplier,
13
+ headingTags,
14
+ textTags,
15
+ getA11yPropsFromHtmlTag
16
+ } from '../utils'
19
17
  /**
20
- * Enforces `fontScaleCap` theme tokens as the maximum font size text can become
21
- * after iOS or Android font scaling, to give consistent accessible maximum sizes
22
- * that don't make the content unusable
18
+ * @typedef {import('../utils/a11y/semantics').TextTag} TextTag
23
19
  */
24
- function getMaxFontMultiplier({ fontSize, fontScaleCap }) {
25
- if (!fontScaleCap || !fontSize) return undefined
26
- if (fontScaleCap <= fontSize) return 1
27
- return fontScaleCap / fontSize
28
- }
29
20
 
30
21
  const selectTextStyles = ({
31
22
  fontWeight,
@@ -34,7 +25,8 @@ const selectTextStyles = ({
34
25
  lineHeight,
35
26
  fontName,
36
27
  textAlign,
37
- textTransform
28
+ textTransform,
29
+ letterSpacing
38
30
  }) =>
39
31
  applyTextStyles({
40
32
  fontWeight,
@@ -43,55 +35,76 @@ const selectTextStyles = ({
43
35
  lineHeight,
44
36
  fontName,
45
37
  textAlign,
46
- textTransform
38
+ textTransform,
39
+ letterSpacing
47
40
  })
48
41
 
49
42
  // General-purpose flexible theme-neutral base component for text
50
- const Typography = ({
51
- children,
52
- variant,
53
- heading,
54
- block = false,
55
- align = undefined,
56
- accessibilityRole = heading ? 'header' : 'text',
57
- tokens,
58
- ...rest
59
- }) => {
60
- const viewport = useViewport()
61
- const themeTokens = useThemeTokens('Typography', tokens, variant, { viewport })
62
- const textProps = {
63
- style: selectTextStyles(align ? { ...themeTokens, textAlign: align } : themeTokens)
64
- }
65
- if (Platform.OS !== 'web') textProps.maxFontSizeMultiplier = getMaxFontMultiplier(themeTokens)
43
+ const Typography = forwardRef(
44
+ (
45
+ {
46
+ children,
47
+ variant,
48
+ heading,
49
+ tag = typeof heading === 'string' ? heading : undefined,
50
+ accessibilityRole = heading === true ? 'header' : undefined,
51
+ block = false,
52
+ align = undefined,
53
+ tokens,
54
+ dataSet,
55
+ ...rest
56
+ },
57
+ ref
58
+ ) => {
59
+ const viewport = useViewport()
60
+ const themeTokens = useThemeTokens('Typography', tokens, variant, { viewport })
61
+ const textProps = {
62
+ style: selectTextStyles(align ? { ...themeTokens, textAlign: align } : themeTokens),
63
+ dataSet,
64
+ maxFontSizeMultiplier: getMaxFontMultiplier(themeTokens)
65
+ }
66
66
 
67
- const headingLevel = getHeadingLevel(heading)
68
- const a11y = {
69
- ...a11yProps.select(rest),
70
- accessibilityRole,
71
- // On React Native Web, `aria-level` controls which heading tag (h1, h2 etc) is used.
72
- // Must be hyphenated, not camel case; `accessibilityLevel` only works on RNW >=0.15.1
73
- [headingLevel && 'aria-level']: headingLevel
74
- }
67
+ const a11y = {
68
+ ...getA11yPropsFromHtmlTag(tag, accessibilityRole),
69
+ ...a11yProps.select(rest)
70
+ }
75
71
 
76
- return block ? (
77
- <View {...a11y}>
78
- <Text {...textProps}>{children}</Text>
79
- </View>
80
- ) : (
81
- <Text {...textProps} {...a11y}>
82
- {children}
83
- </Text>
84
- )
85
- }
72
+ return block ? (
73
+ <View ref={ref} {...a11y}>
74
+ <Text {...textProps}>{children}</Text>
75
+ </View>
76
+ ) : (
77
+ <Text ref={ref} {...textProps} {...a11y}>
78
+ {children}
79
+ </Text>
80
+ )
81
+ }
82
+ )
83
+ Typography.displayName = 'Typography'
86
84
 
87
85
  Typography.propTypes = {
88
86
  ...a11yProps.types,
89
87
  tokens: getTokensPropType('Typography'),
90
88
  variant: variantProp.propType,
91
89
  /**
92
- * If truthy, will render a heading; if a html heading tag is provided, uses that tag on Web
90
+ * Renders the text as a semantic heading. If a html heading tag is provided, uses that tag on Web.
91
+ *
92
+ * Does not affect styling: <Typography heading="h2"> will render a <h2> that looks like plain text.
93
+ * Use both `heading` and `variant` props to render semantic headings that look like headings.
94
+ *
95
+ * In native apps, if this is `true` or any html heading tag string and accessibilityRole prop
96
+ * is not defined, the accessibilityRole will default to "heading".
97
+ */
98
+ heading: PropTypes.oneOf([...headingTags, true]),
99
+ /**
100
+ * Optional semantic HTML tag, to apply to the text on web. Does not change styling.
101
+ *
102
+ * `tag` and `heading` props set the same thing, so shouldn't be used together (`tag` overrides `heading`).
103
+ *
104
+ * In native apps, if a header tag is provided ("h1", "h2" etc) and accessibilityRole prop
105
+ * is not defined, the accessibilityRole will default to "heading".
93
106
  */
94
- heading: PropTypes.oneOf([true, 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']),
107
+ tag: PropTypes.oneOf(textTags),
95
108
  /**
96
109
  * If true, forces the element to behave as a View block even if nested in other text
97
110
  */
package/src/index.js CHANGED
@@ -1,20 +1,42 @@
1
+ export { default as A11yText } from './A11yText'
1
2
  export { default as ActivityIndicator } from './ActivityIndicator'
2
3
  export { default as Box } from './Box'
3
4
  export * from './Button'
4
- export { default as Card } from './Card'
5
+ export { default as Card, PressableCardBase } from './Card'
6
+ export { default as Checkbox } from './Checkbox'
7
+ export * from './Checkbox'
5
8
  export { default as Divider } from './Divider'
6
9
  export { default as ExpandCollapse, Accordion } from './ExpandCollapse'
7
10
  export { default as Feedback } from './Feedback'
11
+ export { default as Fieldset } from './Fieldset'
8
12
  export { default as FlexGrid } from './FlexGrid'
13
+ export { default as HorizontalScroll } from './HorizontalScroll'
14
+ export * from './HorizontalScroll'
9
15
  export { default as Icon } from './Icon'
10
16
  export * from './Icon'
17
+ export { default as IconButton } from './IconButton'
18
+ export { default as InputLabel } from './InputLabel'
11
19
  export * from './Link'
20
+ export { default as List } from './List'
21
+ export { default as Modal } from './Modal'
22
+ export { default as Notification } from './Notification'
12
23
  export { default as Pagination } from './Pagination'
24
+ export { default as Progress } from './Progress'
25
+ export { default as Radio } from './Radio'
26
+ export * from './Radio'
27
+ export { default as RadioCard } from './RadioCard'
28
+ export * from './RadioCard'
29
+ export { default as Search } from './Search'
30
+ export { default as Select } from './Select'
13
31
  export { default as SideNav } from './SideNav'
32
+ export { default as Skeleton } from './Skeleton'
14
33
  export { default as Spacer } from './Spacer'
15
34
  export { default as StackView } from './StackView'
16
35
  export * from './StackView'
17
- export { default as TextInput } from './TextInput'
36
+ export { default as StepTracker } from './StepTracker'
37
+ export { default as Tabs } from './Tabs'
38
+ export { default as Tags } from './Tags'
39
+ export * from './TextInput'
18
40
  export { default as ToggleSwitch } from './ToggleSwitch'
19
41
  export { default as Tooltip } from './Tooltip'
20
42
  export { default as TooltipButton } from './TooltipButton'
@@ -23,6 +45,12 @@ export { default as Typography } from './Typography'
23
45
  export { default as A11yInfoProvider, useA11yInfo } from './A11yInfoProvider'
24
46
  export { default as BaseProvider } from './BaseProvider'
25
47
  export { default as ViewportProvider, useViewport } from './ViewportProvider'
26
- export { default as ThemeProvider, useTheme, useSetTheme, useThemeTokens } from './ThemeProvider'
48
+ export {
49
+ default as ThemeProvider,
50
+ useTheme,
51
+ useSetTheme,
52
+ useThemeTokens,
53
+ getThemeTokens
54
+ } from './ThemeProvider'
27
55
 
28
56
  export * from './utils'
@@ -0,0 +1,2 @@
1
+ export * from './textSize'
2
+ export * from './semantics'