@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,7 +1,26 @@
1
- import React, { Children, Fragment } from 'react';
2
- import Box from '../Box';
3
- import Divider from '../Divider';
4
- import Spacer from '../Spacer';
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 _Box = _interopRequireDefault(require("../Box"));
11
+
12
+ var _Divider = _interopRequireDefault(require("../Divider"));
13
+
14
+ var _Spacer = _interopRequireDefault(require("../Spacer"));
15
+
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
5
24
  /**
6
25
  * @typedef {import('react').ReactChildren} ReactChildren
7
26
  * @typedef {import('react').ReactElement} ReactElement
@@ -21,34 +40,39 @@ import Spacer from '../Spacer';
21
40
  * - `direction`: if 'row' or 'row-reverse', applies space horizontally, if 'column' or 'column-reverse', applies space vertically
22
41
  * - `box`: if truthy, wraps each valid child in a Box component; if an object, passes it to Box as props
23
42
  * - `divider`: if truthy, inserts Divider components; if an object, passes it to Divider as props
43
+ * - `preserveFragments`: if true, adds no space between top-level elements that were passed inside a nested fragment
24
44
  * @param {SpacingValue} [options.space]
25
45
  * @param {boolean | object} [options.divider]
26
46
  * @param {"row" | "column" | "row-reverse" | "column-reverse"} [options.direction]
47
+ * @param {boolean} [options.preserveFragments]
27
48
  * @returns {ReactElement[]}
28
49
  */
29
-
30
50
  const getStackedContent = (children, {
31
51
  divider,
32
52
  space,
33
53
  direction = 'column',
34
- box
54
+ box,
55
+ preserveFragments = false
35
56
  }) => {
36
57
  const boxProps = box && typeof box === 'object' ? box : {
37
58
  space
38
59
  };
39
60
  const dividerProps = divider && typeof divider === 'object' ? divider : {}; // Avoid surprises if children contains comments, nulls, or is a variable wrapped as a fragment
40
61
 
41
- const validChildren = Children.toArray(unpackFragment(children)).filter(Boolean);
62
+ const topLevelChildren = preserveFragments ? children : unpackFragment(children);
63
+
64
+ const validChildren = _react.Children.toArray(topLevelChildren).filter(Boolean);
65
+
42
66
  const content = validChildren.reduce((newChildren, child, index) => {
43
67
  const boxID = `Stack-Box-${index}`;
44
68
  const item = box ?
45
69
  /*#__PURE__*/
46
70
  // If wrapped in Box, that Box needs a key.
47
71
  // If possible, use an existing content key; use an index-based key only if necessary.
48
- React.createElement(Box, Object.assign({}, boxProps, {
72
+ (0, _react.createElement)(_Box.default, { ...boxProps,
49
73
  key: child.key || boxID,
50
74
  testID: boxID
51
- }), child) : child;
75
+ }, child) : child;
52
76
  if (!index || !space && !divider) return [...newChildren, item];
53
77
  const testID = `Stack-${divider ? 'Divider' : 'Spacer'}-${index}`;
54
78
  const commonProps = {
@@ -56,11 +80,14 @@ const getStackedContent = (children, {
56
80
  key: testID,
57
81
  space
58
82
  };
59
- const separator = divider ? /*#__PURE__*/React.createElement(Divider, Object.assign({
60
- vertical: direction.startsWith('row')
61
- }, dividerProps, commonProps)) : /*#__PURE__*/React.createElement(Spacer, Object.assign({
62
- direction: direction.startsWith('row') ? 'row' : 'column'
63
- }, commonProps));
83
+ const separator = divider ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {
84
+ vertical: direction.startsWith('row'),
85
+ ...dividerProps,
86
+ ...commonProps
87
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
88
+ direction: direction.startsWith('row') ? 'row' : 'column',
89
+ ...commonProps
90
+ });
64
91
  return [...newChildren, separator, item];
65
92
  }, []);
66
93
  return content;
@@ -100,12 +127,15 @@ const getStackedContent = (children, {
100
127
 
101
128
 
102
129
  const unpackFragment = child => {
130
+ var _child$props;
131
+
103
132
  // If this level is a set of top-level siblings rather than one child, check each in turn
104
- if (Children.count(child) > 1) return Children.map(child, unpackFragment); // When a fragment is found, unpack its children to the top level and check them
133
+ if (_react.Children.count(child) > 1) return _react.Children.map(child, unpackFragment); // When a fragment is found, unpack its children to the top level and check them
105
134
 
106
- if (child?.type === Fragment) return unpackFragment(child.props?.children); // Stop unpacking as soon as any non-fragment child is found
135
+ if ((child === null || child === void 0 ? void 0 : child.type) === _react.Fragment) return unpackFragment((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children); // Stop unpacking as soon as any non-fragment child is found
107
136
 
108
137
  return child;
109
138
  };
110
139
 
111
- export default getStackedContent;
140
+ var _default = getStackedContent;
141
+ exports.default = _default;
@@ -1,5 +1,29 @@
1
- import StackView from './StackView';
2
- import StackWrap from './StackWrap';
3
- export default StackView;
4
- export { StackWrap };
5
- export { default as getStackedContent } from './getStackedContent';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "StackWrap", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _StackWrap.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "getStackedContent", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _getStackedContent.default;
16
+ }
17
+ });
18
+ exports.default = void 0;
19
+
20
+ var _StackView = _interopRequireDefault(require("./StackView"));
21
+
22
+ var _StackWrap = _interopRequireDefault(require("./StackWrap"));
23
+
24
+ var _getStackedContent = _interopRequireDefault(require("./getStackedContent"));
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ var _default = _StackView.default;
29
+ exports.default = _default;
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
13
+
14
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
15
+
16
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
17
+
18
+ var _StackView = _interopRequireDefault(require("../StackView"));
19
+
20
+ var _Icon = _interopRequireDefault(require("../Icon"));
21
+
22
+ var _utils = require("../utils");
23
+
24
+ var _ThemeProvider = require("../ThemeProvider");
25
+
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ const selectCompletedIconTokens = ({
31
+ completedIconColor,
32
+ completedIconSize
33
+ }) => ({
34
+ size: completedIconSize,
35
+ color: completedIconColor
36
+ });
37
+
38
+ const selectConnectorStyles = ({
39
+ connectorColor,
40
+ connectorHeight,
41
+ connectorMinWidth,
42
+ connectorCompletedHeight,
43
+ connectorCompletedColor
44
+ }, isCompleted) => ({
45
+ backgroundColor: connectorColor,
46
+ height: connectorHeight,
47
+ minWidth: connectorMinWidth,
48
+ ...(isCompleted && {
49
+ height: connectorCompletedHeight,
50
+ backgroundColor: connectorCompletedColor
51
+ })
52
+ });
53
+
54
+ const selectCurrentInnerStyles = ({
55
+ knobCurrentInnerColor,
56
+ knobCurrentInnerSize
57
+ }) => ({
58
+ backgroundColor: knobCurrentInnerColor,
59
+ borderRadius: knobCurrentInnerSize / 2,
60
+ height: knobCurrentInnerSize,
61
+ width: knobCurrentInnerSize
62
+ });
63
+
64
+ const selectKnobStyles = ({
65
+ knobBackgroundColor,
66
+ knobBorderColor,
67
+ knobBorderWidth,
68
+ knobCompletedBackgroundColor,
69
+ knobCompletedBorderColor,
70
+ knobCompletedPaddingLeft,
71
+ knobCompletedPaddingTop,
72
+ knobCurrentBackgroundColor,
73
+ knobCurrentBorderColor,
74
+ knobCurrentBorderWidth,
75
+ knobCurrentPaddingLeft,
76
+ knobCurrentPaddingTop,
77
+ knobSize
78
+ }, isCompleted, isCurrent) => ({
79
+ backgroundColor: knobBackgroundColor,
80
+ borderColor: knobBorderColor,
81
+ borderRadius: knobSize / 2,
82
+ borderWidth: knobBorderWidth,
83
+ height: knobSize,
84
+ width: knobSize,
85
+ ...(isCompleted && {
86
+ backgroundColor: knobCompletedBackgroundColor,
87
+ borderColor: knobCompletedBorderColor,
88
+ paddingLeft: knobCompletedPaddingLeft,
89
+ paddingTop: knobCompletedPaddingTop
90
+ }),
91
+ ...(isCurrent && {
92
+ backgroundColor: knobCurrentBackgroundColor,
93
+ borderColor: knobCurrentBorderColor,
94
+ borderWidth: knobCurrentBorderWidth,
95
+ paddingLeft: knobCurrentPaddingLeft,
96
+ paddingTop: knobCurrentPaddingTop
97
+ })
98
+ });
99
+
100
+ const selectLabelContainerStyles = ({
101
+ labelDirection,
102
+ labelGap,
103
+ labelMarginTop,
104
+ labelPaddingLeft,
105
+ labelPaddingRight
106
+ }) => ({
107
+ marginTop: labelMarginTop,
108
+ paddingLeft: labelPaddingLeft,
109
+ paddingRight: labelPaddingRight,
110
+ flexDirection: labelDirection,
111
+ gap: labelGap
112
+ });
113
+
114
+ const selectLabelStyles = ({
115
+ labelColor,
116
+ labelCurrentColor,
117
+ labelCurrentFontWeight,
118
+ labelFontSize,
119
+ labelFontWeight,
120
+ labelFontName,
121
+ labelLineHeight
122
+ }, isCurrent) => (0, _ThemeProvider.applyTextStyles)({
123
+ color: isCurrent ? labelCurrentColor : labelColor,
124
+ fontSize: labelFontSize,
125
+ lineHeight: labelLineHeight,
126
+ fontWeight: isCurrent ? labelCurrentFontWeight : labelFontWeight,
127
+ fontName: labelFontName
128
+ });
129
+
130
+ const getStepTestID = (isCompleted, isCurrent) => {
131
+ let testID = 'StepTracker-Step';
132
+
133
+ if (isCompleted) {
134
+ testID += '-Completed';
135
+ } else if (isCurrent) {
136
+ testID += '-Current';
137
+ }
138
+
139
+ return testID;
140
+ };
141
+ /**
142
+ * A single step of a StepTracker.
143
+ */
144
+
145
+
146
+ const Step = ({
147
+ label,
148
+ name,
149
+ status = 0,
150
+ stepCount = 0,
151
+ stepIndex = 0,
152
+ tokens
153
+ }) => {
154
+ const {
155
+ completedIcon,
156
+ showStepLabel,
157
+ showStepName,
158
+ ...themeTokens
159
+ } = tokens;
160
+ const isFirst = stepIndex === 0;
161
+ const isLast = stepIndex === stepCount - 1;
162
+ const isCompleted = status > stepIndex;
163
+ const isCurrent = status === stepIndex;
164
+ const isActive = isCompleted || isCurrent;
165
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
166
+ space: 0,
167
+ tokens: {
168
+ alignItems: 'stretch',
169
+ flexGrow: 1
170
+ },
171
+ accessibilityLabel: label,
172
+ accessibilityLevel: 2,
173
+ accessibilityCurrent: status === stepIndex ? 'true' : 'false',
174
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
175
+ direction: "row",
176
+ space: 0,
177
+ tokens: {
178
+ alignItems: 'center',
179
+ flexGrow: 0
180
+ },
181
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
182
+ style: [staticStyles.connector, !isFirst && selectConnectorStyles(themeTokens, isActive)]
183
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
184
+ style: [staticStyles.knob, selectKnobStyles(themeTokens, isCompleted, isCurrent)],
185
+ testID: getStepTestID(isCompleted, isCurrent),
186
+ children: [isCompleted && completedIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
187
+ icon: completedIcon,
188
+ tokens: selectCompletedIconTokens(themeTokens)
189
+ }), isCurrent && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
190
+ style: selectCurrentInnerStyles(themeTokens)
191
+ })]
192
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
193
+ style: [staticStyles.connector, !isLast && selectConnectorStyles(themeTokens, isCompleted)]
194
+ })]
195
+ }), showStepLabel && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
196
+ style: [staticStyles.stepLabelContainer, selectLabelContainerStyles(tokens)],
197
+ children: [showStepName && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
198
+ style: [staticStyles.centeredText, selectLabelStyles(tokens, isCurrent)],
199
+ children: name
200
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.default, {
201
+ direction: "row",
202
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
203
+ style: [staticStyles.centeredText, tokens.labelDirection === 'column' && staticStyles.wrappingLabel, selectLabelStyles(tokens, isCurrent)],
204
+ children: label
205
+ })
206
+ })]
207
+ })]
208
+ });
209
+ };
210
+
211
+ Step.propTypes = {
212
+ label: _propTypes.default.string.isRequired,
213
+ name: _propTypes.default.string.isRequired,
214
+ status: _propTypes.default.number.isRequired,
215
+ stepCount: _propTypes.default.number.isRequired,
216
+ stepIndex: _propTypes.default.number.isRequired,
217
+ tokens: (0, _utils.getTokensPropType)('StepTracker'),
218
+ variant: _utils.variantProp.propType
219
+ };
220
+ var _default = Step;
221
+ exports.default = _default;
222
+
223
+ const staticStyles = _StyleSheet.default.create({
224
+ centeredText: {
225
+ textAlign: 'center'
226
+ },
227
+ connector: {
228
+ flex: 1,
229
+ height: 1
230
+ },
231
+ completedKnob: {
232
+ backgroundColor: 'transparent',
233
+ textAlign: 'center'
234
+ },
235
+ knob: {
236
+ borderWidth: 1
237
+ },
238
+ stepLabelContainer: {
239
+ justifyContent: 'center'
240
+ },
241
+ wrappingLabel: {
242
+ width: 0,
243
+ flex: 1
244
+ }
245
+ });
@@ -0,0 +1,202 @@
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 _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
13
+
14
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
15
+
16
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
17
+
18
+ var _StackView = _interopRequireDefault(require("../StackView"));
19
+
20
+ var _ThemeProvider = require("../ThemeProvider");
21
+
22
+ var _utils = require("../utils");
23
+
24
+ var _propTypes2 = require("../utils/propTypes");
25
+
26
+ var _ViewportProvider = require("../ViewportProvider");
27
+
28
+ var _useCopy = _interopRequireDefault(require("../utils/useCopy"));
29
+
30
+ var _Step = _interopRequireDefault(require("./Step"));
31
+
32
+ var _dictionary = _interopRequireDefault(require("./dictionary"));
33
+
34
+ var _jsxRuntime = require("react/jsx-runtime");
35
+
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+
38
+ 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); }
39
+
40
+ 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; }
41
+
42
+ const selectContainerStyles = ({
43
+ containerPaddingBottom,
44
+ containerPaddingLeft,
45
+ containerPaddingRight,
46
+ containerPaddingTop
47
+ }) => ({
48
+ paddingBottom: containerPaddingBottom,
49
+ paddingLeft: containerPaddingLeft,
50
+ paddingRight: containerPaddingRight,
51
+ paddingTop: containerPaddingTop
52
+ });
53
+
54
+ const selectStepTrackerLabelContainerStyles = ({
55
+ labelMarginTop
56
+ }) => ({
57
+ marginTop: labelMarginTop
58
+ });
59
+
60
+ const selectStepTrackerLabelStyles = ({
61
+ labelColor,
62
+ labelFontSize,
63
+ labelFontWeight,
64
+ labelFontName,
65
+ labelLineHeight
66
+ }) => (0, _ThemeProvider.applyTextStyles)({
67
+ color: labelColor,
68
+ fontSize: labelFontSize,
69
+ lineHeight: labelLineHeight,
70
+ fontWeight: labelFontWeight,
71
+ fontName: labelFontName
72
+ });
73
+ /**
74
+ * StepTracker component shows the current position in a sequence of steps.
75
+ *
76
+ * ## Component API
77
+ *
78
+ * - `current` prop allows to control the current step, 0-based number;
79
+ * - use `copy` and `dictionary` props to internationalize the labels;
80
+ * - `steps` is and array of strings defining step titles;
81
+ * - tokens and variant props define the appearance of the `StepTracker`:
82
+ *
83
+ * ## Usability and A11y guidelines
84
+ *
85
+ * Keep in mind that in its current implementation this is not an interactive
86
+ * component and can’t be used to navigate between steps. The application
87
+ * must provide its own navigation mechanism and state control. That is the
88
+ * main reason the component assumes the `progressbar` role in terms of
89
+ * accessibility. This also makes it extremely important to make sure you
90
+ * set a11y on controls used to modify the state of the step tracker.
91
+ *
92
+ * You can pass standard a11y props to the `StepTracker` component, including
93
+ * the ones that are specific to the `progressbar` role. By default the
94
+ * following props are used:
95
+ *
96
+ * - `accessibilityRole` (`role`): `progressbar`,
97
+ * - `accessibilityLabel` (`aria-label`): `Step I of N: <Current Step Label>`,
98
+ * - `accessibilityLevel` (`aria-level`): 1,
99
+ * - `accessibilityValue.min` (`aria-valuemin`): `0`,
100
+ * - `accessibilityValue.max` (`aria-valuemax`): `steps.length - 1`,
101
+ * - `accessibilityValue.now` (`aria-valuenow`): `current`,
102
+ * - `accessibilityValue.text` (`aria-valuetext`): `<Current Step Label>`,
103
+ *
104
+ */
105
+
106
+
107
+ const StepTracker = /*#__PURE__*/(0, _react.forwardRef)(({
108
+ current = 0,
109
+ copy = 'en',
110
+ dictionary = _dictionary.default,
111
+ steps = [],
112
+ tokens,
113
+ variant,
114
+ ...rest
115
+ }, ref) => {
116
+ const viewport = (0, _ViewportProvider.useViewport)();
117
+ const {
118
+ showStepTrackerLabel,
119
+ ...themeTokens
120
+ } = (0, _ThemeProvider.useThemeTokens)('StepTracker', tokens, variant, {
121
+ viewport
122
+ });
123
+ const getCopy = (0, _useCopy.default)({
124
+ dictionary,
125
+ copy
126
+ });
127
+ const stepTrackerLabel = getCopy('stepTrackerLabel').replace('%{stepNumber}', current < steps.length ? current + 1 : steps.length).replace('%{stepCount}', steps.length).replace('%{stepLabel}', current < steps.length ? steps[current] : steps[steps.length - 1]);
128
+ if (!steps.length) return null;
129
+ const accessibilityProps = {
130
+ accessibilityLabel: stepTrackerLabel,
131
+ accessibilityLevel: 1,
132
+ accessibilityRole: 'progressbar',
133
+ accessibilityValue: {
134
+ min: 0,
135
+ max: steps.length - 1,
136
+ now: current,
137
+ text: steps[current]
138
+ },
139
+ ..._propTypes2.a11yProps.select(rest)
140
+ };
141
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
142
+ ref: ref,
143
+ style: selectContainerStyles(themeTokens),
144
+ ...accessibilityProps,
145
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
146
+ space: 0,
147
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
148
+ style: staticStyles.stepsContainer,
149
+ children: steps.map((label, index) => {
150
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Step.default, {
151
+ status: current,
152
+ label: label,
153
+ name: getCopy('stepLabel').replace('%{stepNumber}', index + 1),
154
+ stepIndex: index,
155
+ stepCount: steps.length,
156
+ tokens: themeTokens
157
+ }, label);
158
+ })
159
+ }), showStepTrackerLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
160
+ style: [staticStyles.stepTrackerLabelContainer, selectStepTrackerLabelContainerStyles(themeTokens)],
161
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
162
+ style: selectStepTrackerLabelStyles(themeTokens),
163
+ children: stepTrackerLabel
164
+ })
165
+ })]
166
+ })
167
+ });
168
+ });
169
+ StepTracker.displayName = 'StepTracker';
170
+ StepTracker.propTypes = {
171
+ current: _propTypes.default.number,
172
+ copy: _propTypes.default.oneOf(['en', 'fr']),
173
+ dictionary: _propTypes.default.shape({
174
+ en: _propTypes.default.shape({
175
+ stepLabel: _propTypes.default.string,
176
+ stepTrackerLabel: _propTypes.default.string
177
+ }),
178
+ fr: _propTypes.default.shape({
179
+ stepLabel: _propTypes.default.string,
180
+ stepTrackerLabel: _propTypes.default.string
181
+ })
182
+ }),
183
+ steps: _propTypes.default.arrayOf(_propTypes.default.string),
184
+ tokens: (0, _utils.getTokensPropType)('StepTracker'),
185
+ variant: _utils.variantProp.propType
186
+ };
187
+ var _default = StepTracker;
188
+ exports.default = _default;
189
+
190
+ const staticStyles = _StyleSheet.default.create({
191
+ stepsContainer: {
192
+ alignItems: 'flex-start',
193
+ flexDirection: 'row',
194
+ justifyContent: 'space-evenly',
195
+ flexGrow: 1
196
+ },
197
+ stepTrackerLabelContainer: {
198
+ textAlign: 'center',
199
+ flexDirection: 'row',
200
+ justifyContent: 'center'
201
+ }
202
+ });
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ en: {
9
+ stepLabel: 'Step %{stepNumber}',
10
+ stepTrackerLabel: 'Step %{stepNumber} of %{stepCount}: %{stepLabel}'
11
+ },
12
+ fr: {
13
+ stepLabel: 'Étape %{stepNumber}',
14
+ stepTrackerLabel: 'Étape %{stepNumber} sur %{stepCount}: %{stepLabel}'
15
+ }
16
+ };
17
+ exports.default = _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _StepTracker = _interopRequireDefault(require("./StepTracker"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _StepTracker.default;
13
+ exports.default = _default;