@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
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
+
12
+ var _utils = require("../utils");
13
+
14
+ var _InputSupports = _interopRequireDefault(require("../InputSupports"));
15
+
16
+ var _TextInputBase = _interopRequireDefault(require("./TextInputBase"));
17
+
18
+ var _ThemeProvider = require("../ThemeProvider");
19
+
20
+ var _propTypes = _interopRequireDefault(require("../InputSupports/propTypes"));
21
+
22
+ var _propTypes2 = _interopRequireDefault(require("./propTypes"));
23
+
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
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
+
32
+ /**
33
+ * Use to collect long-form information such as product feedback or support queries.
34
+ * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
35
+ * The `TextArea` height will automatically increase when new lines are added - this behavior can be limited within the theme.
36
+ *
37
+ * ## Controlled component
38
+ * If it is required that the state of the `TextArea` be controlled by the application or other external methods,
39
+ * `value` and `onChange` props must be passed to the `TextArea`.
40
+ * If the `TextArea` value should not be changed by user input, a `readOnly` prop must be provided.
41
+ *
42
+ * ## Uncontrolled component
43
+ * If it is not necessary to control the `TextArea` state, you can create one without a value prop.
44
+ * In this case its value can be accessed within the `onChange` callback.
45
+ *
46
+ * ## Getting feedback for entered values
47
+ * Use the `feedback` prop to give the user feedback regarding their input.
48
+ * You can affirm that the user's input was correct, or highlight errors that must be corrected, using the `validation` prop.
49
+ * Keep feedback text as brief as possible, should be limited to text and links.
50
+ *
51
+ * ## Supplying a hint
52
+ * Use the `hint` prop to succinctly clarify attributes of the expected input data, such as the expected format,
53
+ * or an indicator that the field is optional.
54
+ * It is a more usable and accessible option than the HTML `placeholder` attribute.
55
+ */
56
+ const TextArea = /*#__PURE__*/(0, _react.forwardRef)(({
57
+ tokens,
58
+ variant = {},
59
+ ...remainingProps
60
+ }, ref) => {
61
+ const themeTokens = (0, _ThemeProvider.useThemeTokens)('TextArea', tokens, variant);
62
+ const [inputHeight, setInputHeight] = (0, _react.useState)(); // adjust the text area's height as new lines are added to the content
63
+
64
+ const onHeightChange = ({
65
+ nativeEvent: {
66
+ contentSize: {
67
+ height
68
+ }
69
+ }
70
+ }) => {
71
+ // on native this is happens out of the box
72
+ if (_Platform.default.OS === 'web') {
73
+ setInputHeight(height);
74
+ }
75
+ };
76
+
77
+ const {
78
+ props: supportsProps,
79
+ rest
80
+ } = _propTypes.default.select(remainingProps);
81
+
82
+ const inputProps = { ...rest,
83
+ variant: { ...variant,
84
+ validation: supportsProps.validation
85
+ },
86
+ multiline: true,
87
+ onContentSizeChange: onHeightChange,
88
+ height: inputHeight,
89
+ tokens: themeTokens
90
+ };
91
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, { ...supportsProps,
92
+ children: ({
93
+ a11yProps,
94
+ inputId
95
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
96
+ ref: ref,
97
+ ...inputProps,
98
+ ...a11yProps,
99
+ nativeID: inputId
100
+ })
101
+ });
102
+ });
103
+ TextArea.displayName = 'TextArea';
104
+ TextArea.propTypes = { ..._propTypes.default.types,
105
+ ..._propTypes2.default,
106
+ tokens: (0, _utils.getTokensPropType)('TextArea', 'TextInput'),
107
+ // TODO: support both TextArea and TextInput tokens
108
+ variant: _utils.variantProp.propType
109
+ };
110
+ var _default = TextArea;
111
+ exports.default = _default;
@@ -1,93 +1,30 @@
1
- import React, { useState } from 'react';
2
- import { Platform, StyleSheet, TextInput as NativeTextInput, View } from 'react-native';
3
- import PropTypes from 'prop-types';
4
- import { applyTextStyles, useThemeTokens } from '../ThemeProvider';
5
- import { getTokensPropType, useInputValue, variantProp } from '../utils';
6
- import InputLabel from '../InputLabel';
7
- import Feedback from '../Feedback';
8
- import useUniqueId from '../utils/useUniqueId';
9
- import StackView from '../StackView';
1
+ "use strict";
10
2
 
11
- const selectInputStyles = ({
12
- backgroundColor,
13
- color,
14
- borderWidth,
15
- borderColor,
16
- borderRadius,
17
- paddingTop,
18
- paddingBottom,
19
- paddingLeft,
20
- paddingRight = 0,
21
- fontName,
22
- fontSize,
23
- fontWeight,
24
- lineHeight,
25
- icon,
26
- iconSize = 0
27
- }, inactive) => {
28
- // Subtract border width from padding so overall input width/height doesn't
29
- // jump around if the border width changes (avoiding NaN and negative padding)
30
- const offsetBorder = value => typeof value === 'number' && typeof borderWidth === 'number' ? Math.max(0, value - borderWidth) : value;
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
31
7
 
32
- const textStyles = applyTextStyles({
33
- fontName,
34
- fontSize,
35
- lineHeight,
36
- fontWeight
37
- });
38
- const webStyles = Platform.select({
39
- web: {
40
- outline: 'none',
41
- cursor: inactive ? 'not-allowed' : undefined
42
- }
43
- });
44
- const paddingWithIcon = iconSize + paddingRight;
45
- return {
46
- backgroundColor,
47
- color,
48
- borderWidth,
49
- borderColor,
50
- borderRadius,
51
- paddingLeft: offsetBorder(paddingLeft),
52
- paddingRight: icon ? offsetBorder(paddingWithIcon) : offsetBorder(paddingRight),
53
- paddingTop: offsetBorder(paddingTop),
54
- paddingBottom: offsetBorder(paddingBottom),
55
- ...textStyles,
56
- ...webStyles
57
- };
58
- };
8
+ var _react = _interopRequireWildcard(require("react"));
59
9
 
60
- const selectOuterBorderStyles = ({
61
- outerBackgroundColor,
62
- outerBorderWidth = 0,
63
- outerBorderColor,
64
- outerBorderRadius = 0
65
- }) => {
66
- // Use negative margins so that the outer border doesn't expand the input's bounding box
67
- const margin = -1 * outerBorderWidth; // Account for the border width since we style it as an outline
10
+ var _utils = require("../utils");
68
11
 
69
- const borderRadius = outerBorderRadius + outerBorderWidth;
70
- return {
71
- background: outerBackgroundColor,
72
- borderWidth: outerBorderWidth,
73
- borderColor: outerBorderColor,
74
- borderRadius,
75
- marginTop: margin,
76
- marginBottom: margin,
77
- marginLeft: margin,
78
- marginRight: margin
79
- };
80
- };
12
+ var _InputSupports = _interopRequireDefault(require("../InputSupports"));
81
13
 
82
- const selectIconTokens = ({
83
- iconSize,
84
- iconColor
85
- }) => ({
86
- size: iconSize,
87
- color: iconColor
88
- });
14
+ var _TextInputBase = _interopRequireDefault(require("./TextInputBase"));
15
+
16
+ var _propTypes = _interopRequireDefault(require("../InputSupports/propTypes"));
17
+
18
+ var _propTypes2 = _interopRequireDefault(require("./propTypes"));
19
+
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
89
27
 
90
- const joinDefined = array => array.filter(item => item !== undefined).join(' ');
91
28
  /**
92
29
  * A basic text input component. Use in forms or individually to receive user's input.
93
30
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -106,230 +43,39 @@ const joinDefined = array => array.filter(item => item !== undefined).join(' ');
106
43
  * supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
107
44
  * their implementation on the web.
108
45
  */
109
-
110
-
111
- function TextInput({
112
- value,
113
- initialValue,
114
- label,
115
- hint,
116
- hintPosition = 'inline',
117
- feedback,
118
- tooltip,
119
- validation,
120
- inactive,
121
- readOnly,
122
- onChange,
123
- onChangeText,
124
- onFocus,
125
- onBlur,
126
- onMouseOver,
127
- onMouseOut,
46
+ const TextInput = /*#__PURE__*/(0, _react.forwardRef)(({
128
47
  tokens,
129
48
  variant = {},
130
49
  ...remainingProps
131
- }) {
132
- const inputId = useUniqueId('text-input');
133
- const hintId = useUniqueId('text-input-hint');
134
- const feedbackId = useUniqueId('text-input-feedback');
135
- const [isFocused, setIsFocused] = useState(false);
136
-
137
- const handleFocus = event => {
138
- setIsFocused(true);
139
- if (typeof onFocus === 'function') onFocus(event);
140
- };
141
-
142
- const handleBlur = event => {
143
- setIsFocused(false);
144
- if (typeof onBlur === 'function') onBlur(event);
145
- };
146
-
147
- const [isHovered, setIsHovered] = useState(false);
148
-
149
- const handleMouseOver = event => {
150
- setIsHovered(true);
151
- if (typeof onMouseOver === 'function') onMouseOver(event);
152
- };
153
-
154
- const handleMouseOut = event => {
155
- setIsHovered(false);
156
- if (typeof onMouseOut === 'function') onMouseOut(event);
157
- };
158
-
50
+ }, ref) => {
159
51
  const {
160
- currentValue,
161
- setValue,
162
- isControlled
163
- } = useInputValue({
164
- value,
165
- initialValue,
166
- onChange,
167
- readOnly
168
- });
169
-
170
- const handleChangeText = text => {
171
- setValue(text);
172
- if (typeof onChangeText === 'function') onChangeText(text);
173
- };
174
-
175
- const states = {
176
- focus: isFocused,
177
- hover: isHovered,
178
- inactive
179
- };
180
- const themeTokens = useThemeTokens('TextInput', tokens, { ...variant,
181
- validation
182
- }, states);
183
- const {
184
- icon: IconComponent,
185
- space
186
- } = themeTokens;
187
- const hasValidationError = validation === 'error';
188
- const inputProps = { ...remainingProps,
189
- editable: !inactive,
190
- onFocus: handleFocus,
191
- onBlur: handleBlur,
192
- onMouseOver: handleMouseOver,
193
- onMouseOut: handleMouseOut,
194
- onChangeText: handleChangeText,
195
- accessibilityLabel: label,
196
- accessibilityHint: joinDefined([!hasValidationError && feedback, hint]),
197
- // native only -> replaced with describedBy on web
198
- accessibilityDescribedBy: joinDefined([!hasValidationError && feedback && feedbackId, // feedback receives a11yRole=alert, so there's no need to include it here
199
- hint && hintId]),
200
- // introduced in RNW 0.15.0
201
- accessibilityInvalid: hasValidationError,
202
- // introduced in RNW 0.15.0
203
- nativeID: inputId,
204
- defaultValue: initialValue,
205
- // currentValue is being updated even if the input is not controlled, passing it down to the
206
- // Input could lead to changing its state from uncontrolled to controlled
207
- value: isControlled ? currentValue : undefined
52
+ props: supportsProps,
53
+ rest
54
+ } = _propTypes.default.select(remainingProps);
55
+
56
+ const inputProps = { ...rest,
57
+ tokens,
58
+ variant: { ...variant,
59
+ validation: supportsProps.validation
60
+ }
208
61
  };
209
- const feedbackVariant = {};
210
-
211
- if (hasValidationError) {
212
- feedbackVariant.state = 'error';
213
- } else if (validation === 'success') {
214
- feedbackVariant.state = 'success';
215
- }
216
-
217
- return /*#__PURE__*/React.createElement(StackView, {
218
- space: space
219
- }, label && /*#__PURE__*/React.createElement(InputLabel, {
220
- label: label,
221
- hint: hint,
222
- hintPosition: hintPosition,
223
- hintId: hintId,
224
- tooltip: tooltip,
225
- forId: inputId
226
- }), /*#__PURE__*/React.createElement(View, {
227
- style: selectOuterBorderStyles(themeTokens)
228
- }, /*#__PURE__*/React.createElement(NativeTextInput, Object.assign({
229
- style: selectInputStyles(themeTokens, inactive)
230
- }, inputProps)), IconComponent && /*#__PURE__*/React.createElement(View, {
231
- pointerEvents: "none" // avoid hijacking input press events
232
- ,
233
- style: [staticStyles.iconContainer, selectIconContainerStyles(themeTokens)]
234
- }, /*#__PURE__*/React.createElement(IconComponent, {
235
- tokens: selectIconTokens(themeTokens)
236
- }))), feedback && /*#__PURE__*/React.createElement(Feedback, {
237
- title: feedback,
238
- variant: feedbackVariant,
239
- accessibilityRole: hasValidationError ? 'alert' : undefined
240
- }));
241
- }
242
-
243
- const selectIconContainerStyles = ({
244
- paddingRight
245
- }) => ({
246
- paddingRight
62
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, { ...supportsProps,
63
+ children: ({
64
+ a11yProps,
65
+ inputId
66
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
67
+ ref: ref,
68
+ ...inputProps,
69
+ ...a11yProps,
70
+ nativeID: inputId
71
+ })
72
+ });
247
73
  });
248
-
249
- TextInput.propTypes = {
250
- /**
251
- * The input label.
252
- */
253
- label: PropTypes.string,
254
-
255
- /**
256
- * If the `TextInput's` state is to be controlled by a parent component, use this prop
257
- * together with the `onChange` to pass down and update the lifted state.
258
- */
259
- value: PropTypes.string,
260
-
261
- /**
262
- * Use this to set the initial value of an uncontrolled `TextInput`.
263
- * Updating `initialValue` will **not** update the actual value.
264
- */
265
- initialValue: PropTypes.string,
266
-
267
- /**
268
- * A short description of the expected input.
269
- */
270
- hint: PropTypes.string,
271
-
272
- /**
273
- * Position of the hint relative to label.
274
- */
275
- hintPosition: PropTypes.oneOf(['inline', 'below']),
276
-
277
- /**
278
- * A detailed description of validation error/success or additional instructions.
279
- * Visual variant is determined based on the `validation` prop.
280
- */
281
- feedback: PropTypes.string,
282
-
283
- /**
284
- * Content of an optional `Tooltip`. If set, a tooltip button will be shown next to the label.
285
- */
286
- tooltip: PropTypes.string,
287
-
288
- /**
289
- * Use to visually mark an input as valid or invalid.
290
- */
291
- validation: PropTypes.oneOf(['error', 'success']),
292
-
293
- /**
294
- * Disables all user interactions with the input.
295
- */
296
- inactive: PropTypes.bool,
297
-
298
- /**
299
- * Makes it impossible to change the input's value.
300
- */
301
- readOnly: PropTypes.bool,
302
-
303
- /**
304
- * Use to react upon input's value changes. Required when the `value` prop is set.
305
- * Will receive the input's value as an argument.
306
- */
307
- onChange: PropTypes.func,
308
-
309
- /** @ignore */
310
- onChangeText: PropTypes.func,
311
-
312
- /** @ignore */
313
- onFocus: PropTypes.func,
314
-
315
- /** @ignore */
316
- onBlur: PropTypes.func,
317
-
318
- /** @ignore */
319
- onMouseOver: PropTypes.func,
320
-
321
- /** @ignore */
322
- onMouseOut: PropTypes.func,
323
- tokens: getTokensPropType('TextInput'),
324
- variant: variantProp.propType
74
+ TextInput.displayName = 'TextInput';
75
+ TextInput.propTypes = { ..._propTypes.default.types,
76
+ ..._propTypes2.default,
77
+ tokens: (0, _utils.getTokensPropType)('TextInput'),
78
+ variant: _utils.variantProp.propType
325
79
  };
326
- export default TextInput;
327
- const staticStyles = StyleSheet.create({
328
- iconContainer: {
329
- position: 'absolute',
330
- right: 0,
331
- top: 0,
332
- bottom: 0,
333
- justifyContent: 'center'
334
- }
335
- });
80
+ var _default = TextInput;
81
+ exports.default = _default;