@telus-uds/components-base 1.96.0 → 1.97.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (749) hide show
  1. package/CHANGELOG.md +30 -2
  2. package/babel.config.cjs +35 -0
  3. package/{jest.config-android.js → jest.config-android.cjs} +1 -1
  4. package/{jest.config-ios.js → jest.config-ios.cjs} +1 -1
  5. package/{jest.config-web.js → jest.config-web.cjs} +1 -1
  6. package/jest.config.cjs +40 -0
  7. package/lib/A11yInfoProvider/index.js +29 -35
  8. package/lib/A11yText/index.js +16 -24
  9. package/lib/ActionCard/ActionCard.js +47 -55
  10. package/lib/ActionCard/index.js +2 -10
  11. package/lib/ActivityIndicator/Spinner.js +20 -28
  12. package/lib/ActivityIndicator/Spinner.native.js +32 -40
  13. package/lib/ActivityIndicator/index.js +18 -22
  14. package/lib/ActivityIndicator/shared.js +12 -23
  15. package/lib/Autocomplete/Autocomplete.js +90 -99
  16. package/lib/Autocomplete/Loading.js +14 -22
  17. package/lib/Autocomplete/Suggestions.js +23 -31
  18. package/lib/Autocomplete/constants.js +4 -14
  19. package/lib/Autocomplete/dictionary.js +2 -9
  20. package/lib/Autocomplete/index.js +2 -10
  21. package/lib/Badge/Badge.js +18 -26
  22. package/lib/Badge/index.js +2 -10
  23. package/lib/BaseProvider/HydrationContext.js +13 -23
  24. package/lib/BaseProvider/index.js +24 -29
  25. package/lib/Box/Box.js +60 -68
  26. package/lib/Box/backgroundImageStylesMap.js +2 -9
  27. package/lib/Box/index.js +2 -10
  28. package/lib/Button/Button.js +15 -25
  29. package/lib/Button/ButtonBase.js +37 -46
  30. package/lib/Button/ButtonDropdown.js +37 -47
  31. package/lib/Button/ButtonGroup.js +53 -61
  32. package/lib/Button/ButtonLink.js +21 -29
  33. package/lib/Button/index.js +5 -34
  34. package/lib/Button/propTypes.js +16 -25
  35. package/lib/Card/Card.js +47 -55
  36. package/lib/Card/CardBase.js +27 -35
  37. package/lib/Card/PressableCardBase.js +26 -35
  38. package/lib/Card/index.js +4 -33
  39. package/lib/CardGroup/CardGroup.js +45 -55
  40. package/lib/CardGroup/dictionary.js +2 -9
  41. package/lib/CardGroup/index.js +2 -10
  42. package/lib/Carousel/Carousel.js +138 -146
  43. package/lib/Carousel/CarouselContext.js +19 -27
  44. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +15 -22
  45. package/lib/Carousel/CarouselItem/CarouselItem.js +44 -56
  46. package/lib/Carousel/CarouselItem/index.js +2 -10
  47. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +12 -20
  48. package/lib/Carousel/CarouselStepTracker/index.js +2 -10
  49. package/lib/Carousel/CarouselTabs/CarouselTabs.js +16 -23
  50. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +20 -28
  51. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +23 -31
  52. package/lib/Carousel/CarouselTabs/index.js +2 -10
  53. package/lib/Carousel/CarouselThumbnail.js +19 -27
  54. package/lib/Carousel/CarouselThumbnailNavigation.js +22 -30
  55. package/lib/Carousel/dictionary.js +2 -9
  56. package/lib/Carousel/index.js +3 -36
  57. package/lib/Checkbox/Checkbox.js +52 -60
  58. package/lib/Checkbox/CheckboxButton.js +32 -41
  59. package/lib/Checkbox/CheckboxGroup.js +41 -49
  60. package/lib/Checkbox/CheckboxInput.js +15 -21
  61. package/lib/Checkbox/CheckboxInput.native.js +1 -8
  62. package/lib/Checkbox/index.js +3 -17
  63. package/lib/CheckboxCard/CheckboxCard.js +45 -55
  64. package/lib/CheckboxCard/index.js +2 -10
  65. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +42 -52
  66. package/lib/CheckboxCardGroup/index.js +2 -10
  67. package/lib/ColourToggle/ColourBubble.js +23 -31
  68. package/lib/ColourToggle/ColourToggle.js +27 -35
  69. package/lib/ColourToggle/index.js +2 -10
  70. package/lib/Divider/Divider.js +23 -31
  71. package/lib/Divider/index.js +2 -10
  72. package/lib/DownloadApp/DownloadApp.js +32 -40
  73. package/lib/DownloadApp/dictionary.js +2 -9
  74. package/lib/DownloadApp/index.js +2 -10
  75. package/lib/ExpandCollapse/Accordion.js +7 -13
  76. package/lib/ExpandCollapse/Control.js +26 -34
  77. package/lib/ExpandCollapse/ExpandCollapse.js +22 -30
  78. package/lib/ExpandCollapse/Panel.js +43 -51
  79. package/lib/ExpandCollapse/dictionary.js +2 -9
  80. package/lib/ExpandCollapse/index.js +7 -20
  81. package/lib/Feedback/Feedback.js +33 -41
  82. package/lib/Feedback/index.js +2 -10
  83. package/lib/Fieldset/Fieldset.js +37 -43
  84. package/lib/Fieldset/FieldsetContainer.js +17 -25
  85. package/lib/Fieldset/FieldsetContainer.native.js +12 -20
  86. package/lib/Fieldset/Legend.js +10 -16
  87. package/lib/Fieldset/Legend.native.js +11 -17
  88. package/lib/Fieldset/cssReset.js +2 -9
  89. package/lib/Fieldset/index.js +2 -10
  90. package/lib/FileUpload/FileUpload.js +50 -58
  91. package/lib/FileUpload/NotificationContent.js +12 -18
  92. package/lib/FileUpload/dictionary.js +2 -9
  93. package/lib/FileUpload/index.js +2 -10
  94. package/lib/FlexGrid/Col/Col.js +35 -43
  95. package/lib/FlexGrid/Col/index.js +2 -10
  96. package/lib/FlexGrid/FlexGrid.js +38 -46
  97. package/lib/FlexGrid/Row/Row.js +24 -32
  98. package/lib/FlexGrid/Row/index.js +2 -10
  99. package/lib/FlexGrid/helpers/index.js +1 -8
  100. package/lib/FlexGrid/index.js +2 -10
  101. package/lib/FlexGrid/providers/GutterContext.js +3 -11
  102. package/lib/Footnote/Footnote.js +63 -71
  103. package/lib/Footnote/FootnoteLink.js +30 -38
  104. package/lib/Footnote/dictionary.js +2 -9
  105. package/lib/Footnote/index.js +4 -12
  106. package/lib/HorizontalScroll/HorizontalScroll.js +32 -41
  107. package/lib/HorizontalScroll/HorizontalScrollButton.js +25 -33
  108. package/lib/HorizontalScroll/ScrollViewEnd.js +12 -20
  109. package/lib/HorizontalScroll/ScrollViewEnd.native.js +9 -16
  110. package/lib/HorizontalScroll/dictionary.js +2 -9
  111. package/lib/HorizontalScroll/index.js +11 -28
  112. package/lib/HorizontalScroll/itemPositions.js +17 -27
  113. package/lib/Icon/Icon.js +21 -30
  114. package/lib/Icon/IconText.js +29 -39
  115. package/lib/Icon/index.js +4 -25
  116. package/lib/IconButton/IconButton.js +35 -42
  117. package/lib/IconButton/index.js +2 -10
  118. package/lib/InputLabel/InputLabel.js +38 -47
  119. package/lib/InputLabel/LabelContent.js +8 -16
  120. package/lib/InputLabel/LabelContent.native.js +8 -17
  121. package/lib/InputLabel/index.js +2 -10
  122. package/lib/InputSupports/InputSupports.js +27 -35
  123. package/lib/InputSupports/index.js +2 -10
  124. package/lib/InputSupports/useInputSupports.js +5 -13
  125. package/lib/Link/ChevronLink.js +22 -28
  126. package/lib/Link/InlinePressable.js +13 -19
  127. package/lib/Link/InlinePressable.native.js +14 -23
  128. package/lib/Link/Link.js +9 -17
  129. package/lib/Link/LinkBase.js +40 -48
  130. package/lib/Link/TextButton.js +16 -22
  131. package/lib/Link/index.js +5 -34
  132. package/lib/List/List.js +22 -30
  133. package/lib/List/ListItem.js +12 -18
  134. package/lib/List/ListItemBase.js +33 -40
  135. package/lib/List/ListItemContent.js +22 -31
  136. package/lib/List/ListItemMark.js +24 -33
  137. package/lib/List/PressableListItemBase.js +32 -40
  138. package/lib/List/index.js +5 -24
  139. package/lib/Listbox/GroupControl.js +29 -33
  140. package/lib/Listbox/Listbox.js +40 -50
  141. package/lib/Listbox/ListboxContext.js +4 -12
  142. package/lib/Listbox/ListboxGroup.js +31 -40
  143. package/lib/Listbox/ListboxItem.js +23 -31
  144. package/lib/Listbox/ListboxOverlay.js +26 -35
  145. package/lib/Listbox/PressableItem.js +22 -30
  146. package/lib/Listbox/index.js +2 -10
  147. package/lib/Modal/Modal.js +75 -85
  148. package/lib/Modal/ModalContent.js +51 -58
  149. package/lib/Modal/WebModal.js +15 -23
  150. package/lib/Modal/dictionary.js +2 -9
  151. package/lib/Modal/index.js +2 -10
  152. package/lib/MultiSelectFilter/ModalOverlay.js +45 -53
  153. package/lib/MultiSelectFilter/MultiSelectFilter.js +110 -118
  154. package/lib/MultiSelectFilter/dictionary.js +2 -9
  155. package/lib/MultiSelectFilter/index.js +2 -10
  156. package/lib/Notification/Notification.js +59 -67
  157. package/lib/Notification/dictionary.js +2 -9
  158. package/lib/Notification/index.js +2 -10
  159. package/lib/OrderedList/Item.js +31 -39
  160. package/lib/OrderedList/ItemBase.js +13 -22
  161. package/lib/OrderedList/OrderedList.js +17 -25
  162. package/lib/OrderedList/OrderedListBase.js +12 -21
  163. package/lib/OrderedList/index.js +2 -10
  164. package/lib/Pagination/PageButton.js +22 -32
  165. package/lib/Pagination/Pagination.js +48 -51
  166. package/lib/Pagination/SideButton.js +25 -32
  167. package/lib/Pagination/constants.js +3 -0
  168. package/lib/Pagination/dictionary.js +2 -9
  169. package/lib/Pagination/index.js +2 -10
  170. package/lib/Pagination/usePagination.js +14 -12
  171. package/lib/Portal/Portal.js +8 -15
  172. package/lib/Portal/Portal.native.js +2 -9
  173. package/lib/Portal/index.js +2 -10
  174. package/lib/PriceLockup/PriceLockup.js +37 -45
  175. package/lib/PriceLockup/index.js +2 -10
  176. package/lib/PriceLockup/utils/renderFootnoteContent.js +20 -28
  177. package/lib/PriceLockup/utils/renderFootnoteLinks.js +5 -13
  178. package/lib/PriceLockup/utils/renderPrice.js +30 -38
  179. package/lib/PriceLockup/utils/renderTypography.js +5 -13
  180. package/lib/ProductCard/ProductCard.js +62 -70
  181. package/lib/ProductCard/dictionary.js +2 -9
  182. package/lib/ProductCard/index.js +2 -10
  183. package/lib/ProductCardGroup/ProductCardGroup.js +20 -28
  184. package/lib/ProductCardGroup/index.js +2 -10
  185. package/lib/Progress/Progress.js +15 -23
  186. package/lib/Progress/ProgressBar.js +23 -31
  187. package/lib/Progress/ProgressBarBackground.js +10 -18
  188. package/lib/Progress/index.js +4 -12
  189. package/lib/QuickLinks/QuickLinks.js +23 -29
  190. package/lib/QuickLinks/QuickLinksCard.js +14 -20
  191. package/lib/QuickLinks/QuickLinksItem.js +22 -28
  192. package/lib/QuickLinks/index.js +4 -12
  193. package/lib/QuickLinksFeature/QuickLinksFeature.js +20 -27
  194. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +31 -38
  195. package/lib/QuickLinksFeature/index.js +4 -12
  196. package/lib/Radio/Radio.js +43 -53
  197. package/lib/Radio/RadioButton.js +34 -43
  198. package/lib/Radio/RadioGroup.js +43 -51
  199. package/lib/Radio/RadioInput.js +15 -21
  200. package/lib/Radio/RadioInput.native.js +1 -8
  201. package/lib/Radio/index.js +3 -17
  202. package/lib/RadioCard/RadioCard.js +43 -53
  203. package/lib/RadioCard/RadioCardGroup.js +42 -52
  204. package/lib/RadioCard/index.js +3 -17
  205. package/lib/Responsive/Responsive.js +16 -22
  206. package/lib/Responsive/ResponsiveProp.js +13 -21
  207. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +15 -23
  208. package/lib/Responsive/index.js +2 -10
  209. package/lib/Search/Search.js +47 -55
  210. package/lib/Search/dictionary.js +2 -9
  211. package/lib/Search/index.js +2 -10
  212. package/lib/Select/Group.js +9 -17
  213. package/lib/Select/Group.native.js +5 -13
  214. package/lib/Select/Item.js +8 -16
  215. package/lib/Select/Item.native.js +1 -8
  216. package/lib/Select/Picker.js +27 -35
  217. package/lib/Select/Picker.native.js +34 -41
  218. package/lib/Select/Select.js +45 -54
  219. package/lib/Select/constants.js +4 -14
  220. package/lib/Select/index.js +6 -14
  221. package/lib/SideNav/Item.js +29 -37
  222. package/lib/SideNav/ItemContent.js +17 -26
  223. package/lib/SideNav/ItemsGroup.js +25 -32
  224. package/lib/SideNav/SideNav.js +28 -38
  225. package/lib/SideNav/index.js +1 -13
  226. package/lib/Skeleton/Skeleton.js +32 -40
  227. package/lib/Skeleton/index.js +2 -10
  228. package/lib/Skeleton/skeleton.constant.js +2 -10
  229. package/lib/Skeleton/skeletonWebAnimation.js +1 -8
  230. package/lib/Skeleton/useSkeletonNativeAnimation.js +14 -22
  231. package/lib/SkipLink/SkipLink.js +24 -33
  232. package/lib/SkipLink/index.js +2 -10
  233. package/lib/Spacer/Spacer.js +15 -21
  234. package/lib/Spacer/index.js +2 -10
  235. package/lib/StackView/StackView.js +28 -36
  236. package/lib/StackView/StackWrap.js +14 -21
  237. package/lib/StackView/StackWrap.native.js +2 -9
  238. package/lib/StackView/StackWrapBox.js +27 -35
  239. package/lib/StackView/StackWrapGap.js +22 -30
  240. package/lib/StackView/common.js +4 -13
  241. package/lib/StackView/getStackedContent.js +14 -22
  242. package/lib/StackView/index.js +5 -24
  243. package/lib/Status/Status.js +27 -35
  244. package/lib/Status/index.js +2 -10
  245. package/lib/StepTracker/Step.js +35 -43
  246. package/lib/StepTracker/StepTracker.js +38 -46
  247. package/lib/StepTracker/dictionary.js +2 -9
  248. package/lib/StepTracker/index.js +2 -10
  249. package/lib/TabBar/TabBar.js +28 -36
  250. package/lib/TabBar/TabBarItem.js +33 -42
  251. package/lib/TabBar/index.js +2 -10
  252. package/lib/Tabs/Tabs.js +38 -48
  253. package/lib/Tabs/TabsItem.js +45 -53
  254. package/lib/Tabs/index.js +2 -10
  255. package/lib/Tags/Tags.js +47 -55
  256. package/lib/Tags/index.js +2 -10
  257. package/lib/TextInput/TextArea.js +19 -27
  258. package/lib/TextInput/TextInput.js +18 -26
  259. package/lib/TextInput/TextInputBase.js +64 -73
  260. package/lib/TextInput/dictionary.js +2 -9
  261. package/lib/TextInput/index.js +3 -20
  262. package/lib/TextInput/propTypes.js +8 -15
  263. package/lib/ThemeProvider/ThemeProvider.js +25 -36
  264. package/lib/ThemeProvider/index.js +7 -60
  265. package/lib/ThemeProvider/useResponsiveThemeTokens.js +10 -18
  266. package/lib/ThemeProvider/useSetTheme.js +5 -12
  267. package/lib/ThemeProvider/useTheme.js +4 -11
  268. package/lib/ThemeProvider/useThemeTokens.js +15 -24
  269. package/lib/ThemeProvider/utils/index.js +2 -27
  270. package/lib/ThemeProvider/utils/styles.js +12 -24
  271. package/lib/ThemeProvider/utils/theme-tokens.js +19 -34
  272. package/lib/Timeline/Timeline.js +28 -34
  273. package/lib/Timeline/index.js +2 -10
  274. package/lib/ToggleSwitch/ToggleSwitch.js +40 -48
  275. package/lib/ToggleSwitch/ToggleSwitchGroup.js +43 -51
  276. package/lib/ToggleSwitch/index.js +3 -20
  277. package/lib/Tooltip/Backdrop.js +8 -16
  278. package/lib/Tooltip/Backdrop.native.js +16 -22
  279. package/lib/Tooltip/Tooltip.js +42 -50
  280. package/lib/Tooltip/Tooltip.native.js +80 -61
  281. package/lib/Tooltip/dictionary.js +2 -9
  282. package/lib/Tooltip/getTooltipPosition.js +1 -9
  283. package/lib/Tooltip/index.js +5 -13
  284. package/lib/Tooltip/shared.js +17 -20
  285. package/lib/TooltipButton/TooltipButton.js +25 -33
  286. package/lib/TooltipButton/index.js +2 -10
  287. package/lib/Typography/Typography.js +39 -46
  288. package/lib/Typography/index.js +2 -10
  289. package/lib/Validator/Validator.js +42 -50
  290. package/lib/Validator/index.js +2 -10
  291. package/lib/ViewportProvider/ViewportProvider.js +13 -19
  292. package/lib/ViewportProvider/index.js +3 -23
  293. package/lib/ViewportProvider/useViewport.js +3 -11
  294. package/lib/ViewportProvider/useViewportListener.js +10 -17
  295. package/lib/index.js +71 -772
  296. package/lib/server.js +4 -40
  297. package/lib/utils/BaseView/BaseView.js +14 -20
  298. package/lib/utils/BaseView/BaseView.native.js +2 -10
  299. package/lib/utils/BaseView/index.js +2 -10
  300. package/lib/utils/a11y/index.js +2 -27
  301. package/lib/utils/a11y/semantics.js +11 -35
  302. package/lib/utils/a11y/textSize.js +7 -16
  303. package/lib/utils/animation/index.js +2 -13
  304. package/lib/utils/animation/useVerticalExpandAnimation.js +19 -26
  305. package/lib/utils/children.js +12 -20
  306. package/lib/utils/containUniqueFields.js +1 -8
  307. package/lib/utils/convertFromMegaByteToByte.js +1 -7
  308. package/lib/utils/floating-ui/index.js +1 -42
  309. package/lib/utils/floating-ui/index.native.js +1 -42
  310. package/lib/utils/formatImageSource.js +1 -8
  311. package/lib/utils/hasOwnProperty.js +1 -7
  312. package/lib/utils/htmlAttrs.js +11 -19
  313. package/lib/utils/index.js +25 -245
  314. package/lib/utils/info/index.js +6 -13
  315. package/lib/utils/info/platform/index.js +8 -13
  316. package/lib/utils/info/platform/platform.android.js +1 -8
  317. package/lib/utils/info/platform/platform.ios.js +1 -8
  318. package/lib/utils/info/platform/platform.js +1 -8
  319. package/lib/utils/info/platform/platform.native.js +1 -8
  320. package/lib/utils/info/versions.js +4 -11
  321. package/lib/utils/input.js +13 -21
  322. package/lib/utils/pressability.js +14 -22
  323. package/lib/utils/props/a11yProps.js +90 -98
  324. package/lib/utils/props/clickProps.js +4 -12
  325. package/lib/utils/props/componentPropType.js +1 -7
  326. package/lib/utils/props/copyPropTypes.js +2 -10
  327. package/lib/utils/props/getPropSelector.js +6 -11
  328. package/lib/utils/props/handlerProps.js +23 -31
  329. package/lib/utils/props/hrefAttrsProp.js +6 -13
  330. package/lib/utils/props/index.js +19 -168
  331. package/lib/utils/props/inputSupportsProps.js +12 -20
  332. package/lib/utils/props/linkProps.js +16 -24
  333. package/lib/utils/props/paddingProp.js +8 -16
  334. package/lib/utils/props/pressProps.js +22 -31
  335. package/lib/utils/props/rectProp.js +8 -16
  336. package/lib/utils/props/responsiveProps.js +5 -13
  337. package/lib/utils/props/selectSystemProps.js +1 -7
  338. package/lib/utils/props/spacingProps.js +12 -19
  339. package/lib/utils/props/textInputProps.js +56 -62
  340. package/lib/utils/props/textProps.js +18 -24
  341. package/lib/utils/props/tokens.js +16 -26
  342. package/lib/utils/props/variantProp.js +4 -11
  343. package/lib/utils/props/viewProps.js +10 -18
  344. package/lib/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +8 -16
  345. package/lib/utils/ssr-media-query/create-stylesheet/index.android.js +2 -10
  346. package/lib/utils/ssr-media-query/create-stylesheet/index.ios.js +2 -10
  347. package/lib/utils/ssr-media-query/create-stylesheet/index.js +12 -20
  348. package/lib/utils/ssr-media-query/hash.js +1 -7
  349. package/lib/utils/ssr-media-query/index.js +4 -17
  350. package/lib/utils/ssr-media-query/utils/common.js +1 -12
  351. package/lib/utils/ssr-media-query/utils/create-declaration-block.js +6 -14
  352. package/lib/utils/ssr-media-query/utils/create-media-query-styles.js +5 -12
  353. package/lib/utils/ssr-media-query/utils/hyphenate-style-name.js +1 -8
  354. package/lib/utils/ssr-media-query/utils/inject.js +8 -18
  355. package/lib/utils/ssr.js +19 -28
  356. package/lib/utils/transformGradient.js +3 -11
  357. package/lib/utils/useCopy.js +2 -10
  358. package/lib/utils/useHash.js +7 -14
  359. package/lib/utils/useHash.native.js +1 -8
  360. package/lib/utils/useOverlaidPosition.js +17 -25
  361. package/lib/utils/useResponsiveProp.js +10 -19
  362. package/lib/utils/useSafeLayoutEffect.js +6 -13
  363. package/lib/utils/useScrollBlocking.js +10 -17
  364. package/lib/utils/useScrollBlocking.native.js +1 -8
  365. package/lib/utils/useSpacingScale.js +7 -14
  366. package/lib/utils/useUniqueId.js +3 -10
  367. package/lib/utils/withLinkRouter.js +13 -19
  368. package/package.json +20 -25
  369. package/src/A11yInfoProvider/index.jsx +5 -2
  370. package/src/ActivityIndicator/index.jsx +12 -3
  371. package/src/BaseProvider/index.jsx +5 -2
  372. package/src/Carousel/Carousel.jsx +1 -1
  373. package/src/Carousel/CarouselItem/CarouselItem.jsx +16 -22
  374. package/src/Icon/IconText.jsx +0 -1
  375. package/src/InputLabel/InputLabel.jsx +2 -3
  376. package/src/List/ListItemBase.jsx +6 -1
  377. package/src/Listbox/GroupControl.jsx +6 -1
  378. package/src/Modal/ModalContent.jsx +3 -2
  379. package/src/Pagination/Pagination.jsx +9 -2
  380. package/src/Pagination/constants.js +3 -0
  381. package/src/Pagination/usePagination.js +14 -3
  382. package/src/TextInput/TextInputBase.jsx +1 -1
  383. package/src/Timeline/Timeline.jsx +6 -2
  384. package/src/Tooltip/Tooltip.native.jsx +31 -3
  385. package/src/Tooltip/shared.js +5 -0
  386. package/src/index.js +9 -10
  387. package/src/utils/a11y/semantics.js +0 -7
  388. package/types/FileUpload.d.ts +40 -0
  389. package/types/index.d.ts +3 -0
  390. package/lib-module/A11yInfoProvider/index.js +0 -62
  391. package/lib-module/A11yText/index.js +0 -68
  392. package/lib-module/ActionCard/ActionCard.js +0 -343
  393. package/lib-module/ActionCard/index.js +0 -2
  394. package/lib-module/ActivityIndicator/Spinner.js +0 -80
  395. package/lib-module/ActivityIndicator/Spinner.native.js +0 -144
  396. package/lib-module/ActivityIndicator/index.js +0 -44
  397. package/lib-module/ActivityIndicator/shared.js +0 -14
  398. package/lib-module/Autocomplete/Autocomplete.js +0 -481
  399. package/lib-module/Autocomplete/Loading.js +0 -36
  400. package/lib-module/Autocomplete/Suggestions.js +0 -66
  401. package/lib-module/Autocomplete/constants.js +0 -4
  402. package/lib-module/Autocomplete/dictionary.js +0 -12
  403. package/lib-module/Autocomplete/index.js +0 -2
  404. package/lib-module/Badge/Badge.js +0 -102
  405. package/lib-module/Badge/index.js +0 -2
  406. package/lib-module/BaseProvider/HydrationContext.js +0 -48
  407. package/lib-module/BaseProvider/index.js +0 -38
  408. package/lib-module/Box/Box.js +0 -379
  409. package/lib-module/Box/backgroundImageStylesMap.js +0 -94
  410. package/lib-module/Box/index.js +0 -2
  411. package/lib-module/Button/Button.js +0 -34
  412. package/lib-module/Button/ButtonBase.js +0 -347
  413. package/lib-module/Button/ButtonDropdown.js +0 -173
  414. package/lib-module/Button/ButtonGroup.js +0 -272
  415. package/lib-module/Button/ButtonLink.js +0 -50
  416. package/lib-module/Button/index.js +0 -5
  417. package/lib-module/Button/propTypes.js +0 -46
  418. package/lib-module/Card/Card.js +0 -330
  419. package/lib-module/Card/CardBase.js +0 -114
  420. package/lib-module/Card/PressableCardBase.js +0 -112
  421. package/lib-module/Card/index.js +0 -4
  422. package/lib-module/CardGroup/CardGroup.js +0 -210
  423. package/lib-module/CardGroup/dictionary.js +0 -8
  424. package/lib-module/CardGroup/index.js +0 -2
  425. package/lib-module/Carousel/Carousel.js +0 -894
  426. package/lib-module/Carousel/CarouselContext.js +0 -51
  427. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +0 -53
  428. package/lib-module/Carousel/CarouselItem/CarouselItem.js +0 -150
  429. package/lib-module/Carousel/CarouselItem/index.js +0 -2
  430. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -54
  431. package/lib-module/Carousel/CarouselStepTracker/index.js +0 -2
  432. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +0 -50
  433. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +0 -89
  434. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +0 -118
  435. package/lib-module/Carousel/CarouselTabs/index.js +0 -2
  436. package/lib-module/Carousel/CarouselThumbnail.js +0 -113
  437. package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -71
  438. package/lib-module/Carousel/dictionary.js +0 -22
  439. package/lib-module/Carousel/index.js +0 -3
  440. package/lib-module/Checkbox/Checkbox.js +0 -343
  441. package/lib-module/Checkbox/CheckboxButton.js +0 -164
  442. package/lib-module/Checkbox/CheckboxGroup.js +0 -240
  443. package/lib-module/Checkbox/CheckboxInput.js +0 -50
  444. package/lib-module/Checkbox/CheckboxInput.native.js +0 -5
  445. package/lib-module/Checkbox/index.js +0 -3
  446. package/lib-module/CheckboxCard/CheckboxCard.js +0 -183
  447. package/lib-module/CheckboxCard/index.js +0 -2
  448. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +0 -206
  449. package/lib-module/CheckboxCardGroup/index.js +0 -2
  450. package/lib-module/ColourToggle/ColourBubble.js +0 -126
  451. package/lib-module/ColourToggle/ColourToggle.js +0 -92
  452. package/lib-module/ColourToggle/index.js +0 -2
  453. package/lib-module/Divider/Divider.js +0 -133
  454. package/lib-module/Divider/index.js +0 -2
  455. package/lib-module/DownloadApp/DownloadApp.js +0 -160
  456. package/lib-module/DownloadApp/dictionary.js +0 -10
  457. package/lib-module/DownloadApp/index.js +0 -2
  458. package/lib-module/ExpandCollapse/Accordion.js +0 -15
  459. package/lib-module/ExpandCollapse/Control.js +0 -165
  460. package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -98
  461. package/lib-module/ExpandCollapse/Panel.js +0 -242
  462. package/lib-module/ExpandCollapse/dictionary.js +0 -10
  463. package/lib-module/ExpandCollapse/index.js +0 -7
  464. package/lib-module/Feedback/Feedback.js +0 -161
  465. package/lib-module/Feedback/index.js +0 -2
  466. package/lib-module/Fieldset/Fieldset.js +0 -194
  467. package/lib-module/Fieldset/FieldsetContainer.js +0 -48
  468. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -32
  469. package/lib-module/Fieldset/Legend.js +0 -24
  470. package/lib-module/Fieldset/Legend.native.js +0 -31
  471. package/lib-module/Fieldset/cssReset.js +0 -14
  472. package/lib-module/Fieldset/index.js +0 -2
  473. package/lib-module/FileUpload/FileUpload.js +0 -329
  474. package/lib-module/FileUpload/NotificationContent.js +0 -55
  475. package/lib-module/FileUpload/dictionary.js +0 -40
  476. package/lib-module/FileUpload/index.js +0 -2
  477. package/lib-module/FlexGrid/Col/Col.js +0 -257
  478. package/lib-module/FlexGrid/Col/index.js +0 -2
  479. package/lib-module/FlexGrid/FlexGrid.js +0 -158
  480. package/lib-module/FlexGrid/Row/Row.js +0 -181
  481. package/lib-module/FlexGrid/Row/index.js +0 -2
  482. package/lib-module/FlexGrid/helpers/index.js +0 -15
  483. package/lib-module/FlexGrid/index.js +0 -2
  484. package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
  485. package/lib-module/Footnote/Footnote.js +0 -317
  486. package/lib-module/Footnote/FootnoteLink.js +0 -107
  487. package/lib-module/Footnote/dictionary.js +0 -12
  488. package/lib-module/Footnote/index.js +0 -4
  489. package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -165
  490. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -79
  491. package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -46
  492. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -26
  493. package/lib-module/HorizontalScroll/dictionary.js +0 -11
  494. package/lib-module/HorizontalScroll/index.js +0 -11
  495. package/lib-module/HorizontalScroll/itemPositions.js +0 -113
  496. package/lib-module/Icon/Icon.js +0 -93
  497. package/lib-module/Icon/IconText.js +0 -114
  498. package/lib-module/Icon/index.js +0 -4
  499. package/lib-module/IconButton/IconButton.js +0 -203
  500. package/lib-module/IconButton/index.js +0 -2
  501. package/lib-module/InputLabel/InputLabel.js +0 -146
  502. package/lib-module/InputLabel/LabelContent.js +0 -28
  503. package/lib-module/InputLabel/LabelContent.native.js +0 -18
  504. package/lib-module/InputLabel/index.js +0 -2
  505. package/lib-module/InputSupports/InputSupports.js +0 -108
  506. package/lib-module/InputSupports/index.js +0 -2
  507. package/lib-module/InputSupports/useInputSupports.js +0 -31
  508. package/lib-module/Link/ChevronLink.js +0 -68
  509. package/lib-module/Link/InlinePressable.js +0 -48
  510. package/lib-module/Link/InlinePressable.native.js +0 -87
  511. package/lib-module/Link/Link.js +0 -28
  512. package/lib-module/Link/LinkBase.js +0 -269
  513. package/lib-module/Link/TextButton.js +0 -43
  514. package/lib-module/Link/index.js +0 -5
  515. package/lib-module/List/List.js +0 -77
  516. package/lib-module/List/ListItem.js +0 -32
  517. package/lib-module/List/ListItemBase.js +0 -164
  518. package/lib-module/List/ListItemContent.js +0 -73
  519. package/lib-module/List/ListItemMark.js +0 -126
  520. package/lib-module/List/PressableListItemBase.js +0 -112
  521. package/lib-module/List/index.js +0 -5
  522. package/lib-module/Listbox/GroupControl.js +0 -102
  523. package/lib-module/Listbox/Listbox.js +0 -172
  524. package/lib-module/Listbox/ListboxContext.js +0 -4
  525. package/lib-module/Listbox/ListboxGroup.js +0 -125
  526. package/lib-module/Listbox/ListboxItem.js +0 -76
  527. package/lib-module/Listbox/ListboxOverlay.js +0 -78
  528. package/lib-module/Listbox/PressableItem.js +0 -140
  529. package/lib-module/Listbox/index.js +0 -2
  530. package/lib-module/Modal/Modal.js +0 -373
  531. package/lib-module/Modal/ModalContent.js +0 -179
  532. package/lib-module/Modal/WebModal.js +0 -76
  533. package/lib-module/Modal/dictionary.js +0 -9
  534. package/lib-module/Modal/index.js +0 -2
  535. package/lib-module/MultiSelectFilter/ModalOverlay.js +0 -156
  536. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +0 -526
  537. package/lib-module/MultiSelectFilter/dictionary.js +0 -12
  538. package/lib-module/MultiSelectFilter/index.js +0 -2
  539. package/lib-module/Notification/Notification.js +0 -429
  540. package/lib-module/Notification/dictionary.js +0 -8
  541. package/lib-module/Notification/index.js +0 -2
  542. package/lib-module/OrderedList/Item.js +0 -160
  543. package/lib-module/OrderedList/ItemBase.js +0 -43
  544. package/lib-module/OrderedList/OrderedList.js +0 -64
  545. package/lib-module/OrderedList/OrderedListBase.js +0 -36
  546. package/lib-module/OrderedList/index.js +0 -2
  547. package/lib-module/Pagination/PageButton.js +0 -74
  548. package/lib-module/Pagination/Pagination.js +0 -211
  549. package/lib-module/Pagination/SideButton.js +0 -113
  550. package/lib-module/Pagination/dictionary.js +0 -18
  551. package/lib-module/Pagination/index.js +0 -2
  552. package/lib-module/Pagination/usePagination.js +0 -69
  553. package/lib-module/Portal/Portal.js +0 -50
  554. package/lib-module/Portal/Portal.native.js +0 -2
  555. package/lib-module/Portal/index.js +0 -2
  556. package/lib-module/PriceLockup/PriceLockup.js +0 -225
  557. package/lib-module/PriceLockup/index.js +0 -2
  558. package/lib-module/PriceLockup/utils/renderFootnoteContent.js +0 -87
  559. package/lib-module/PriceLockup/utils/renderFootnoteLinks.js +0 -28
  560. package/lib-module/PriceLockup/utils/renderPrice.js +0 -141
  561. package/lib-module/PriceLockup/utils/renderTypography.js +0 -23
  562. package/lib-module/ProductCard/ProductCard.js +0 -232
  563. package/lib-module/ProductCard/dictionary.js +0 -38
  564. package/lib-module/ProductCard/index.js +0 -2
  565. package/lib-module/ProductCardGroup/ProductCardGroup.js +0 -70
  566. package/lib-module/ProductCardGroup/index.js +0 -2
  567. package/lib-module/Progress/Progress.js +0 -88
  568. package/lib-module/Progress/ProgressBar.js +0 -133
  569. package/lib-module/Progress/ProgressBarBackground.js +0 -40
  570. package/lib-module/Progress/index.js +0 -4
  571. package/lib-module/QuickLinks/QuickLinks.js +0 -78
  572. package/lib-module/QuickLinks/QuickLinksCard.js +0 -33
  573. package/lib-module/QuickLinks/QuickLinksItem.js +0 -51
  574. package/lib-module/QuickLinks/index.js +0 -4
  575. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +0 -69
  576. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +0 -147
  577. package/lib-module/QuickLinksFeature/index.js +0 -4
  578. package/lib-module/Radio/Radio.js +0 -283
  579. package/lib-module/Radio/RadioButton.js +0 -184
  580. package/lib-module/Radio/RadioGroup.js +0 -255
  581. package/lib-module/Radio/RadioInput.js +0 -50
  582. package/lib-module/Radio/RadioInput.native.js +0 -5
  583. package/lib-module/Radio/index.js +0 -3
  584. package/lib-module/RadioCard/RadioCard.js +0 -211
  585. package/lib-module/RadioCard/RadioCardGroup.js +0 -257
  586. package/lib-module/RadioCard/index.js +0 -3
  587. package/lib-module/Responsive/Responsive.js +0 -65
  588. package/lib-module/Responsive/ResponsiveProp.js +0 -39
  589. package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +0 -68
  590. package/lib-module/Responsive/index.js +0 -2
  591. package/lib-module/Search/Search.js +0 -242
  592. package/lib-module/Search/dictionary.js +0 -12
  593. package/lib-module/Search/index.js +0 -2
  594. package/lib-module/Select/Group.js +0 -24
  595. package/lib-module/Select/Group.native.js +0 -16
  596. package/lib-module/Select/Item.js +0 -23
  597. package/lib-module/Select/Item.native.js +0 -2
  598. package/lib-module/Select/Picker.js +0 -97
  599. package/lib-module/Select/Picker.native.js +0 -120
  600. package/lib-module/Select/Select.js +0 -337
  601. package/lib-module/Select/constants.js +0 -5
  602. package/lib-module/Select/index.js +0 -6
  603. package/lib-module/SideNav/Item.js +0 -143
  604. package/lib-module/SideNav/ItemContent.js +0 -50
  605. package/lib-module/SideNav/ItemsGroup.js +0 -121
  606. package/lib-module/SideNav/SideNav.js +0 -131
  607. package/lib-module/SideNav/index.js +0 -1
  608. package/lib-module/Skeleton/Skeleton.js +0 -177
  609. package/lib-module/Skeleton/index.js +0 -2
  610. package/lib-module/Skeleton/skeleton.constant.js +0 -2
  611. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -14
  612. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -28
  613. package/lib-module/SkipLink/SkipLink.js +0 -190
  614. package/lib-module/SkipLink/index.js +0 -2
  615. package/lib-module/Spacer/Spacer.js +0 -95
  616. package/lib-module/Spacer/index.js +0 -2
  617. package/lib-module/StackView/StackView.js +0 -126
  618. package/lib-module/StackView/StackWrap.js +0 -51
  619. package/lib-module/StackView/StackWrap.native.js +0 -4
  620. package/lib-module/StackView/StackWrapBox.js +0 -114
  621. package/lib-module/StackView/StackWrapGap.js +0 -61
  622. package/lib-module/StackView/common.js +0 -35
  623. package/lib-module/StackView/getStackedContent.js +0 -123
  624. package/lib-module/StackView/index.js +0 -5
  625. package/lib-module/Status/Status.js +0 -167
  626. package/lib-module/Status/index.js +0 -2
  627. package/lib-module/StepTracker/Step.js +0 -265
  628. package/lib-module/StepTracker/StepTracker.js +0 -208
  629. package/lib-module/StepTracker/dictionary.js +0 -30
  630. package/lib-module/StepTracker/index.js +0 -2
  631. package/lib-module/TabBar/TabBar.js +0 -125
  632. package/lib-module/TabBar/TabBarItem.js +0 -177
  633. package/lib-module/TabBar/index.js +0 -2
  634. package/lib-module/Tabs/Tabs.js +0 -179
  635. package/lib-module/Tabs/TabsItem.js +0 -239
  636. package/lib-module/Tabs/index.js +0 -2
  637. package/lib-module/Tags/Tags.js +0 -245
  638. package/lib-module/Tags/index.js +0 -2
  639. package/lib-module/TextInput/TextArea.js +0 -97
  640. package/lib-module/TextInput/TextInput.js +0 -80
  641. package/lib-module/TextInput/TextInputBase.js +0 -436
  642. package/lib-module/TextInput/dictionary.js +0 -12
  643. package/lib-module/TextInput/index.js +0 -3
  644. package/lib-module/TextInput/propTypes.js +0 -34
  645. package/lib-module/ThemeProvider/ThemeProvider.js +0 -84
  646. package/lib-module/ThemeProvider/index.js +0 -7
  647. package/lib-module/ThemeProvider/useResponsiveThemeTokens.js +0 -81
  648. package/lib-module/ThemeProvider/useSetTheme.js +0 -24
  649. package/lib-module/ThemeProvider/useTheme.js +0 -11
  650. package/lib-module/ThemeProvider/useThemeTokens.js +0 -109
  651. package/lib-module/ThemeProvider/utils/index.js +0 -2
  652. package/lib-module/ThemeProvider/utils/styles.js +0 -198
  653. package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -160
  654. package/lib-module/Timeline/Timeline.js +0 -168
  655. package/lib-module/Timeline/index.js +0 -2
  656. package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -280
  657. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -208
  658. package/lib-module/ToggleSwitch/index.js +0 -3
  659. package/lib-module/Tooltip/Backdrop.js +0 -50
  660. package/lib-module/Tooltip/Backdrop.native.js +0 -41
  661. package/lib-module/Tooltip/Tooltip.js +0 -280
  662. package/lib-module/Tooltip/Tooltip.native.js +0 -328
  663. package/lib-module/Tooltip/dictionary.js +0 -8
  664. package/lib-module/Tooltip/getTooltipPosition.js +0 -170
  665. package/lib-module/Tooltip/index.js +0 -5
  666. package/lib-module/Tooltip/shared.js +0 -36
  667. package/lib-module/TooltipButton/TooltipButton.js +0 -90
  668. package/lib-module/TooltipButton/index.js +0 -2
  669. package/lib-module/Typography/Typography.js +0 -254
  670. package/lib-module/Typography/index.js +0 -2
  671. package/lib-module/Validator/Validator.js +0 -222
  672. package/lib-module/Validator/index.js +0 -2
  673. package/lib-module/ViewportProvider/ViewportProvider.js +0 -27
  674. package/lib-module/ViewportProvider/index.js +0 -3
  675. package/lib-module/ViewportProvider/useViewport.js +0 -3
  676. package/lib-module/ViewportProvider/useViewportListener.js +0 -37
  677. package/lib-module/index.js +0 -76
  678. package/lib-module/server.js +0 -4
  679. package/lib-module/utils/BaseView/BaseView.js +0 -42
  680. package/lib-module/utils/BaseView/BaseView.native.js +0 -5
  681. package/lib-module/utils/BaseView/index.js +0 -2
  682. package/lib-module/utils/a11y/index.js +0 -2
  683. package/lib-module/utils/a11y/semantics.js +0 -144
  684. package/lib-module/utils/a11y/textSize.js +0 -35
  685. package/lib-module/utils/animation/index.js +0 -2
  686. package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -86
  687. package/lib-module/utils/children.js +0 -117
  688. package/lib-module/utils/containUniqueFields.js +0 -24
  689. package/lib-module/utils/convertFromMegaByteToByte.js +0 -10
  690. package/lib-module/utils/floating-ui/index.js +0 -1
  691. package/lib-module/utils/floating-ui/index.native.js +0 -1
  692. package/lib-module/utils/formatImageSource.js +0 -27
  693. package/lib-module/utils/hasOwnProperty.js +0 -11
  694. package/lib-module/utils/htmlAttrs.js +0 -23
  695. package/lib-module/utils/index.js +0 -25
  696. package/lib-module/utils/info/index.js +0 -8
  697. package/lib-module/utils/info/platform/index.js +0 -14
  698. package/lib-module/utils/info/platform/platform.android.js +0 -1
  699. package/lib-module/utils/info/platform/platform.ios.js +0 -1
  700. package/lib-module/utils/info/platform/platform.js +0 -1
  701. package/lib-module/utils/info/platform/platform.native.js +0 -4
  702. package/lib-module/utils/info/versions.js +0 -6
  703. package/lib-module/utils/input.js +0 -185
  704. package/lib-module/utils/pressability.js +0 -112
  705. package/lib-module/utils/props/a11yProps.js +0 -310
  706. package/lib-module/utils/props/clickProps.js +0 -25
  707. package/lib-module/utils/props/componentPropType.js +0 -50
  708. package/lib-module/utils/props/copyPropTypes.js +0 -2
  709. package/lib-module/utils/props/getPropSelector.js +0 -52
  710. package/lib-module/utils/props/handlerProps.js +0 -105
  711. package/lib-module/utils/props/hrefAttrsProp.js +0 -33
  712. package/lib-module/utils/props/index.js +0 -19
  713. package/lib-module/utils/props/inputSupportsProps.js +0 -68
  714. package/lib-module/utils/props/linkProps.js +0 -43
  715. package/lib-module/utils/props/paddingProp.js +0 -9
  716. package/lib-module/utils/props/pressProps.js +0 -42
  717. package/lib-module/utils/props/rectProp.js +0 -9
  718. package/lib-module/utils/props/responsiveProps.js +0 -28
  719. package/lib-module/utils/props/selectSystemProps.js +0 -23
  720. package/lib-module/utils/props/spacingProps.js +0 -57
  721. package/lib-module/utils/props/textInputProps.js +0 -188
  722. package/lib-module/utils/props/textProps.js +0 -61
  723. package/lib-module/utils/props/tokens.js +0 -130
  724. package/lib-module/utils/props/variantProp.js +0 -18
  725. package/lib-module/utils/props/viewProps.js +0 -21
  726. package/lib-module/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +0 -48
  727. package/lib-module/utils/ssr-media-query/create-stylesheet/index.android.js +0 -2
  728. package/lib-module/utils/ssr-media-query/create-stylesheet/index.ios.js +0 -2
  729. package/lib-module/utils/ssr-media-query/create-stylesheet/index.js +0 -36
  730. package/lib-module/utils/ssr-media-query/hash.js +0 -13
  731. package/lib-module/utils/ssr-media-query/index.js +0 -6
  732. package/lib-module/utils/ssr-media-query/utils/common.js +0 -33
  733. package/lib-module/utils/ssr-media-query/utils/create-declaration-block.js +0 -16
  734. package/lib-module/utils/ssr-media-query/utils/create-media-query-styles.js +0 -60
  735. package/lib-module/utils/ssr-media-query/utils/hyphenate-style-name.js +0 -12
  736. package/lib-module/utils/ssr-media-query/utils/inject.js +0 -39
  737. package/lib-module/utils/ssr.js +0 -142
  738. package/lib-module/utils/transformGradient.js +0 -15
  739. package/lib-module/utils/useCopy.js +0 -42
  740. package/lib-module/utils/useHash.js +0 -41
  741. package/lib-module/utils/useHash.native.js +0 -6
  742. package/lib-module/utils/useOverlaidPosition.js +0 -214
  743. package/lib-module/utils/useResponsiveProp.js +0 -45
  744. package/lib-module/utils/useSafeLayoutEffect.js +0 -28
  745. package/lib-module/utils/useScrollBlocking.js +0 -51
  746. package/lib-module/utils/useScrollBlocking.native.js +0 -2
  747. package/lib-module/utils/useSpacingScale.js +0 -123
  748. package/lib-module/utils/useUniqueId.js +0 -11
  749. package/lib-module/utils/withLinkRouter.js +0 -84
@@ -1,894 +0,0 @@
1
- import React from 'react';
2
- import View from "react-native-web/dist/exports/View";
3
- import Animated from "react-native-web/dist/exports/Animated";
4
- import PanResponder from "react-native-web/dist/exports/PanResponder";
5
- import StyleSheet from "react-native-web/dist/exports/StyleSheet";
6
- import Platform from "react-native-web/dist/exports/Platform";
7
- import Dimensions from "react-native-web/dist/exports/Dimensions";
8
- import PropTypes from 'prop-types';
9
- import { useThemeTokens } from '../ThemeProvider';
10
- import { useViewport } from '../ViewportProvider';
11
- import { getTokensPropType, getA11yPropsFromHtmlTag, layoutTags, variantProp, selectSystemProps, a11yProps, viewProps, useCopy, unpackFragment } from '../utils';
12
- import { useA11yInfo } from '../A11yInfoProvider';
13
- import { CarouselProvider } from './CarouselContext';
14
- import CarouselItem from './CarouselItem';
15
- import IconButton from '../IconButton';
16
- import SkipLink from '../SkipLink';
17
- import A11yText from '../A11yText';
18
- import CarouselStepTracker from './CarouselStepTracker';
19
- import CarouselThumbnailNavigation from './CarouselThumbnailNavigation';
20
- import CarouselTabsPanel from './CarouselTabs/CarouselTabsPanel';
21
- import CarouselTabsPanelItem from './CarouselTabs/CarouselTabsPanelItem';
22
- import dictionary from './dictionary';
23
- import { jsx as _jsx } from "react/jsx-runtime";
24
- import { jsxs as _jsxs } from "react/jsx-runtime";
25
- const TRANSITION_MODES = {
26
- MANUAL: 'manual',
27
- AUTOMATIC: 'automatic',
28
- SWIPE: 'swipe'
29
- };
30
- const staticStyles = StyleSheet.create({
31
- root: {
32
- backgroundColor: 'transparent',
33
- justifyContent: 'center',
34
- alignItems: 'center',
35
- position: 'relative',
36
- top: 0,
37
- left: 0
38
- },
39
- animationControlButton: {
40
- position: 'absolute',
41
- zIndex: 1,
42
- right: Platform.OS === 'web' ? undefined : 40,
43
- top: 40
44
- }
45
- });
46
- const selectContainerStyles = width => ({
47
- backgroundColor: 'transparent',
48
- overflow: 'hidden',
49
- width
50
- });
51
- const selectSwipeAreaStyles = (count, width, enablePeeking) => ({
52
- width: width * count,
53
- justifyContent: enablePeeking ? 'flex-start' : 'space-between',
54
- flexDirection: 'row'
55
- });
56
- const getDynamicPositionProperty = areStylesAppliedOnPreviousButton => areStylesAppliedOnPreviousButton ? 'left' : 'right';
57
- const selectControlButtonPositionStyles = _ref => {
58
- let {
59
- positionVariant,
60
- buttonWidth,
61
- positionProperty = getDynamicPositionProperty(),
62
- spaceBetweenSlideAndButton,
63
- enablePeeking
64
- } = _ref;
65
- const styles = {};
66
- if (positionVariant === 'edge') {
67
- styles[positionProperty] = -1 * (buttonWidth / 2);
68
- } else if (positionVariant === 'inside') {
69
- styles[positionProperty] = 0;
70
- } else if (positionVariant === 'outside') {
71
- if (enablePeeking) {
72
- styles[positionProperty] = 0;
73
- } else {
74
- styles[positionProperty] = -1 * (spaceBetweenSlideAndButton + buttonWidth);
75
- }
76
- }
77
- return styles;
78
- };
79
- const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton, enablePeeking) => {
80
- const styles = {
81
- zIndex: 1,
82
- position: 'absolute'
83
- };
84
- if (isFirstSlide) {
85
- styles.visibility = areStylesAppliedOnPreviousButton ? 'hidden' : 'visible';
86
- } else if (isLastSlide) {
87
- styles.visibility = areStylesAppliedOnPreviousButton ? 'visible' : 'hidden';
88
- } else {
89
- styles.visibility = 'visible';
90
- }
91
- return {
92
- ...styles,
93
- ...selectControlButtonPositionStyles({
94
- positionVariant: previousNextNavigationPosition,
95
- buttonWidth: previousNextNavigationButtonWidth,
96
- positionProperty: getDynamicPositionProperty(areStylesAppliedOnPreviousButton),
97
- spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation,
98
- enablePeeking
99
- })
100
- };
101
- };
102
- const getPeekingProps = viewport => {
103
- if (viewport === 'xs' || viewport === 'sm') {
104
- return {
105
- peekingFirstSpace: 48,
106
- peekingGap: 16,
107
- peekingLastSpace: 48,
108
- peekingMarginLeft: 24,
109
- peekingMarginRight: 24,
110
- peekingMiddleSpace: 28
111
- };
112
- }
113
- return {
114
- peekingFirstSpace: 48,
115
- peekingGap: 16,
116
- peekingLastSpace: 48,
117
- peekingMarginLeft: 16,
118
- peekingMarginRight: 16,
119
- peekingMiddleSpace: 24
120
- };
121
- };
122
- const selectIconStyles = _ref2 => {
123
- let {
124
- iconBackgroundColor
125
- } = _ref2;
126
- return {
127
- backgroundColor: iconBackgroundColor
128
- };
129
- };
130
- const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
131
-
132
- /**
133
- * Carousel is a general-purpose content slider that can be used to render content in terms of slides.
134
-
135
- ## Usage
136
- - `Carousel` is a top-level export from `@telus-uds/components-base` which is used to render a Carousel
137
- - Immediately within `Carousel`, individual slides are wrapped in `Carousel.Item` for the top-level `Carousel` to know how to identify an individual slide
138
- - You can use any UDS component or other platform-specific component, (based on the platform you're rendering) to achieve any desired layout
139
- - By default, Carousel takea all the `width` available to it and the `height` is determined based on the content in the slide with more content
140
- - You may want to wrap Carousel in other layout components like `Box`, `FlexGrid` etc, to achieve a responsive layout of your need
141
-
142
- ## `useCarousel` custom hook
143
-
144
- ```jsx
145
- import { useCarousel } from '@telus-uds/components-base'
146
-
147
- const SomeComponentWithinCarouselItem = () => {
148
- const {
149
- activeIndex,
150
- totalItems,
151
- width,
152
- goTo
153
- } = useCarousel()
154
- return <Text>Hi!</Text>
155
- }
156
- ```
157
-
158
- You can use `useCarousel` to hook into internal state of the Carousel component like:
159
- - `activeIndex`: Index of the current slide
160
- - `totalItems`: Total number of items/slides passed to the Carousel
161
- - `width`: Width of the individual carousel slide
162
- - `goTo`: A function to go to a particular slide by passing the index of that slide, e.g: goTo(0) where `0` is the index of the first slide
163
-
164
- ## Accessibility
165
-
166
- - Top-level `Carousel` and `Carousel.Item` can take all possible React Native's `View` and `a11y` props
167
- - If your slide contains input elements like buttons, you may want to configure them to be only focusable when `activeIndex` is equal to the current slide index in order to avoid tabbing going between slides
168
-
169
- ## Platform considerations
170
- The component is available on both native platforms and web.
171
-
172
- ## Other considerations
173
- - You may want to use the same kind of layout in all your slides to avoid visual and height differences
174
- - `previous` and `next` navigation buttons are automatically removed in `sm` and `xs` viewports, as these smaller viewports offers swipe functionality
175
-
176
- ## Tokens
177
-
178
- You can override the following tokens in exceptional circumstances:
179
- - `previousIcon` - Icon of the previous button
180
- - `nextIcon` - Icon of the next button
181
- - `showPreviousNextNavigation` - If you want to show/hide the previous/next navigation
182
- - `showPanelNavigation` - If you want to show/hide the panel navigation
183
- - `spaceBetweenSlideAndPreviousNextNavigation` - Horizontal space between slide and previous/next navigational buttons
184
- - `spaceBetweenSlideAndPanelNavigation` - Vertical space between slide area and panel navigation area
185
- */
186
- const Carousel = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
187
- let {
188
- tokens,
189
- variant,
190
- children,
191
- itemLabel = 'item',
192
- previousNextNavigationPosition = 'inside',
193
- stepTrackerVariant,
194
- previousNextIconSize = 'default',
195
- minDistanceToCapture = 5,
196
- minDistanceForAction = 0.2,
197
- onAnimationStart,
198
- onAnimationEnd,
199
- onIndexChanged,
200
- skipLinkHref,
201
- tabs,
202
- refocus = Boolean(tabs),
203
- title = 'carousel',
204
- springConfig = undefined,
205
- thumbnails = undefined,
206
- panelNavigation = thumbnails ? /*#__PURE__*/_jsx(CarouselThumbnailNavigation, {
207
- thumbnails: thumbnails
208
- }) : /*#__PURE__*/_jsx(CarouselStepTracker, {
209
- variant: stepTrackerVariant
210
- }),
211
- tag = 'ul',
212
- accessibilityRole,
213
- accessibilityLabel,
214
- accessibilityLiveRegion = 'polite',
215
- copy,
216
- slideDuration = 0,
217
- transitionDuration = 0,
218
- autoPlay = false,
219
- enablePeeking = false,
220
- ...rest
221
- } = _ref3;
222
- let childrenArray = unpackFragment(children);
223
- const autoPlayFeatureEnabled = autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1;
224
- // if `Carousel` only has one `Carousel.Item`, convert this to a single-item array
225
- if (!Array.isArray(childrenArray)) {
226
- childrenArray = [childrenArray];
227
- }
228
- const getCopy = useCopy({
229
- dictionary,
230
- copy
231
- });
232
- const viewport = useViewport();
233
- const themeTokens = useThemeTokens('Carousel', tokens, variant, {
234
- viewport
235
- });
236
- const {
237
- previousIcon,
238
- nextIcon,
239
- playIcon,
240
- pauseIcon,
241
- showPreviousNextNavigation,
242
- showPanelNavigation,
243
- showPanelTabs,
244
- spaceBetweenSlideAndPreviousNextNavigation
245
- } = themeTokens;
246
- const [activeIndex, setActiveIndex] = React.useState(0);
247
- const activeIndexRef = React.useRef(activeIndex);
248
- const {
249
- reduceMotionEnabled
250
- } = useA11yInfo();
251
- const reduceMotionRef = React.useRef(reduceMotionEnabled);
252
- const [containerLayout, setContainerLayout] = React.useState({
253
- x: 0,
254
- y: 0,
255
- width: 0
256
- });
257
- const containerLayoutRef = React.useRef(containerLayout);
258
- const [previousNextNavigationButtonWidth, setPreviousNextNavigationButtonWidth] = React.useState(0);
259
- const firstFocusRef = React.useRef(null);
260
- const pan = React.useRef(new Animated.ValueXY()).current;
261
- const animatedX = React.useRef(0);
262
- const animatedY = React.useRef(0);
263
- const [isAnimating, setIsAnimating] = React.useState(false);
264
- /**
265
- * While having the same starting point, `isAutoPlayEnabled` and `isCarouselPlaying` are different states
266
- *
267
- * `isAutoPlayEnabled` is a state to determine if the autoplay feature is enabled or disabled
268
- * `isCarouselPlaying` is a state to determine if the carousel is currently playing or paused
269
- */
270
- const [isAutoPlayEnabled, setIsAutoPlayEnabled] = React.useState(autoPlayFeatureEnabled);
271
- const [isCarouselPlaying, setisCarouselPlaying] = React.useState(autoPlayFeatureEnabled);
272
- const isSwiping = React.useRef(false);
273
- const autoPlayRef = React.useRef(null);
274
- const isFirstSlide = !activeIndex;
275
- const isLastSlide = activeIndex + 1 >= childrenArray.length;
276
- const handleAnimationStart = React.useCallback(function () {
277
- if (typeof onAnimationStart === 'function') onAnimationStart(...arguments);
278
- setIsAnimating(true);
279
- }, [onAnimationStart]);
280
- const handleAnimationEnd = React.useCallback(function () {
281
- if (typeof onAnimationEnd === 'function') onAnimationEnd(...arguments);
282
- setIsAnimating(false);
283
- }, [onAnimationEnd]);
284
- const updateOffset = React.useCallback(() => {
285
- animatedX.current = containerLayoutRef.current.width * activeIndexRef.current * -1;
286
- animatedY.current = 0;
287
- pan.setOffset({
288
- x: animatedX.current,
289
- y: animatedY.current
290
- });
291
- pan.setValue({
292
- x: 0,
293
- y: 0
294
- });
295
- }, [pan, animatedX]);
296
- const animate = React.useCallback((toValue, toIndex) => {
297
- const handleAnimationEndToIndex = function () {
298
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
299
- args[_key] = arguments[_key];
300
- }
301
- return handleAnimationEnd(toIndex, ...args);
302
- };
303
- if (reduceMotionRef.current || isSwiping.current) {
304
- Animated.timing(pan, {
305
- toValue,
306
- duration: 1,
307
- useNativeDriver: false
308
- }).start(handleAnimationEndToIndex);
309
- } else if (isAutoPlayEnabled) {
310
- Animated.timing(pan, {
311
- ...springConfig,
312
- toValue,
313
- useNativeDriver: false,
314
- duration: transitionDuration * 1000
315
- }).start(handleAnimationEndToIndex);
316
- } else if (enablePeeking) {
317
- Animated.timing(pan, {
318
- ...springConfig,
319
- toValue,
320
- useNativeDriver: false,
321
- duration: transitionDuration ? transitionDuration * 1000 : 1000
322
- }).start(handleAnimationEndToIndex);
323
- } else {
324
- Animated.spring(pan, {
325
- ...springConfig,
326
- toValue,
327
- useNativeDriver: false
328
- }).start(handleAnimationEndToIndex);
329
- }
330
- }, [pan, springConfig, handleAnimationEnd, transitionDuration, isAutoPlayEnabled, enablePeeking]);
331
- const stopAutoplay = React.useCallback(() => {
332
- if (autoPlayRef !== null && autoPlayRef !== void 0 && autoPlayRef.current) {
333
- clearTimeout(autoPlayRef === null || autoPlayRef === void 0 ? void 0 : autoPlayRef.current);
334
- }
335
- }, []);
336
- const triggerRefocus = React.useCallback(() => {
337
- if (refocus && Platform.OS === 'web') {
338
- var _firstFocusRef$curren;
339
- (_firstFocusRef$curren = firstFocusRef.current) === null || _firstFocusRef$curren === void 0 ? void 0 : _firstFocusRef$curren.focus({
340
- preventScroll: true,
341
- focusVisible: false
342
- });
343
- }
344
- }, [refocus, firstFocusRef]);
345
- const updateIndex = React.useCallback(function () {
346
- let delta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
347
- let transitionMode = arguments.length > 1 ? arguments[1] : undefined;
348
- const toValue = {
349
- x: 0,
350
- y: 0
351
- };
352
- let skipChanges = !delta;
353
- let calcDelta = delta;
354
- if (activeIndexRef.current <= 0 && delta < 0) {
355
- skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
356
- calcDelta = childrenArray.length + delta;
357
- } else if (activeIndexRef.current + 1 >= childrenArray.length && delta > 0) {
358
- skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
359
- calcDelta = -1 * activeIndexRef.current + delta - 1;
360
- }
361
- const index = activeIndexRef.current + calcDelta;
362
- if (skipChanges) {
363
- animate(toValue, index);
364
- return calcDelta;
365
- }
366
- stopAutoplay();
367
- setActiveIndex(index);
368
- toValue.x = containerLayoutRef.current.width * -1 * calcDelta;
369
- animate(toValue, index);
370
- if (isCarouselPlaying) {
371
- stopAutoplay();
372
- if (index === 0 && activeIndexRef.current + 1 === childrenArray.length && transitionMode === TRANSITION_MODES.AUTOMATIC) {
373
- setisCarouselPlaying(false);
374
- } else if (isAutoPlayEnabled) {
375
- autoPlayRef.current = setTimeout(() => {
376
- updateOffset();
377
- handleAnimationStart(activeIndexRef.current);
378
- updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
379
- triggerRefocus();
380
- }, Math.abs(slideDuration) * 1000);
381
- }
382
- }
383
- if (onIndexChanged) onIndexChanged(calcDelta, index);
384
- return calcDelta;
385
- }, [handleAnimationStart, triggerRefocus, slideDuration, updateOffset, animate, childrenArray.length, onIndexChanged, isCarouselPlaying, stopAutoplay, isAutoPlayEnabled]);
386
- const startAutoplay = React.useCallback(() => {
387
- stopAutoplay();
388
- if (isAutoPlayEnabled) {
389
- autoPlayRef.current = setTimeout(() => {
390
- updateOffset();
391
- handleAnimationStart(activeIndexRef.current);
392
- updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
393
- triggerRefocus();
394
- }, Math.abs(slideDuration) * 1000);
395
- }
396
- }, [handleAnimationStart, triggerRefocus, updateIndex, updateOffset, slideDuration, stopAutoplay, isAutoPlayEnabled]);
397
- const fixOffsetAndGo = React.useCallback((delta, transitionMode) => {
398
- updateOffset();
399
- handleAnimationStart(activeIndexRef.current);
400
- updateIndex(delta, transitionMode);
401
- triggerRefocus();
402
- }, [updateIndex, updateOffset, handleAnimationStart, triggerRefocus]);
403
- const goToNeighboring = React.useCallback(function () {
404
- let toPrev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
405
- let transitionMode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TRANSITION_MODES.MANUAL;
406
- fixOffsetAndGo(toPrev ? -1 : 1, transitionMode);
407
- }, [fixOffsetAndGo]);
408
- React.useEffect(() => {
409
- activeIndexRef.current = activeIndex;
410
- }, [activeIndex]);
411
- React.useEffect(() => {
412
- reduceMotionRef.current = reduceMotionEnabled;
413
- }, [reduceMotionEnabled]);
414
- React.useEffect(() => {
415
- containerLayoutRef.current = containerLayout;
416
- }, [containerLayout]);
417
- React.useEffect(() => {
418
- pan.x.addListener(_ref4 => {
419
- let {
420
- value
421
- } = _ref4;
422
- animatedX.current = value;
423
- });
424
- pan.y.addListener(_ref5 => {
425
- let {
426
- value
427
- } = _ref5;
428
- animatedY.current = value;
429
- });
430
- if (isCarouselPlaying) {
431
- startAutoplay();
432
- }
433
- return () => {
434
- stopAutoplay();
435
- pan.x.removeAllListeners();
436
- pan.y.removeAllListeners();
437
- };
438
- }, [pan.x, pan.y, startAutoplay, stopAutoplay, isCarouselPlaying]);
439
- React.useEffect(() => {
440
- const subscription = Dimensions.addEventListener('change', () => {
441
- updateOffset();
442
- });
443
- return () => {
444
- if (subscription.remove) {
445
- subscription.remove();
446
- } else {
447
- Dimensions.removeEventListener('change', updateOffset);
448
- }
449
- };
450
- }, [updateOffset]);
451
- React.useEffect(() => {
452
- setIsAutoPlayEnabled(autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1);
453
- }, [autoPlay, slideDuration, transitionDuration, childrenArray.length]);
454
- React.useEffect(() => {
455
- return () => {
456
- stopAutoplay();
457
- };
458
- }, [stopAutoplay]);
459
- const onContainerLayout = _ref6 => {
460
- let {
461
- nativeEvent: {
462
- layout: {
463
- x,
464
- y,
465
- width
466
- }
467
- }
468
- } = _ref6;
469
- return setContainerLayout(prevState => ({
470
- ...prevState,
471
- x,
472
- y,
473
- width
474
- }));
475
- };
476
- const onPreviousNextNavigationButtonLayout = _ref7 => {
477
- let {
478
- nativeEvent: {
479
- layout: {
480
- width
481
- }
482
- }
483
- } = _ref7;
484
- return setPreviousNextNavigationButtonWidth(width);
485
- };
486
- const isSwipeAllowed = React.useCallback(() => {
487
- if (childrenArray.length === 1) {
488
- return false;
489
- }
490
- if (Platform.OS === 'web') {
491
- return !!(viewport === 'xs' || viewport === 'sm');
492
- }
493
- return true;
494
- }, [viewport, childrenArray.length]);
495
- const panResponder = React.useMemo(() => PanResponder.create({
496
- onPanResponderTerminationRequest: () => false,
497
- onMoveShouldSetResponderCapture: () => true,
498
- onMoveShouldSetPanResponderCapture: (_, gestureState) => {
499
- if (!isSwipeAllowed()) {
500
- return false;
501
- }
502
- handleAnimationStart(activeIndexRef.current);
503
- const allow = Math.abs(gestureState.dx) > minDistanceToCapture;
504
- if (allow) {
505
- isSwiping.current = true;
506
- stopAutoplay();
507
- }
508
- return allow;
509
- },
510
- onPanResponderGrant: () => {
511
- updateOffset();
512
- },
513
- onPanResponderMove: Animated.event([null, {
514
- dx: pan.x
515
- }], {
516
- useNativeDriver: false
517
- }),
518
- onPanResponderRelease: (_, gesture) => {
519
- if (isCarouselPlaying) {
520
- startAutoplay();
521
- }
522
- const correction = gesture.moveX - gesture.x0;
523
- if (Math.abs(correction) < containerLayoutRef.current.width * minDistanceForAction) {
524
- animate({
525
- x: 0,
526
- y: 0
527
- }, 0);
528
- } else {
529
- const delta = correction > 0 ? -1 : 1;
530
- updateIndex(delta, TRANSITION_MODES.SWIPE);
531
- }
532
- isSwiping.current = false;
533
- }
534
- }), [updateIndex, updateOffset, animate, isSwipeAllowed, minDistanceForAction, handleAnimationStart, minDistanceToCapture, pan.x, startAutoplay, stopAutoplay, isCarouselPlaying]);
535
- const goToNext = React.useCallback(() => {
536
- goToNeighboring();
537
- }, [goToNeighboring]);
538
- const goToPrev = React.useCallback(() => {
539
- goToNeighboring(true);
540
- }, [goToNeighboring]);
541
- const goTo = React.useCallback(function () {
542
- let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
543
- const delta = index - activeIndexRef.current;
544
- if (delta) {
545
- fixOffsetAndGo(delta, TRANSITION_MODES.MANUAL);
546
- }
547
- }, [fixOffsetAndGo]);
548
-
549
- // @TODO: - these are Allium-theme variants and won't have any effect in themes that don't implement them.
550
- // Normally we avoid setting variants of subcomponents, however this could be re-considered.
551
- // Related discussion - https://github.com/telus/universal-design-system/issues/1549
552
- const previousNextIconButtonVariants = {
553
- size: previousNextIconSize,
554
- raised: !(variant !== null && variant !== void 0 && variant.inverse) && true,
555
- inverse: variant === null || variant === void 0 ? void 0 : variant.inverse
556
- };
557
- const getCopyWithPlaceholders = React.useCallback(copyKey => {
558
- const copyText = getCopy(copyKey).replace(/%\{title\}/g, title).replace(/%\{itemLabel\}/g, itemLabel).replace(/%\{stepNumber\}/g, activeIndex + 1).replace(/%\{stepCount\}/g, childrenArray.length);
559
-
560
- // First word might be a lowercase placeholder: capitalize the first letter
561
- return `${copyText[0].toUpperCase()}${copyText.slice(1)}`;
562
- }, [activeIndex, childrenArray.length, itemLabel, getCopy, title]);
563
- const activePanelNavigation = tabs && showPanelTabs ? /*#__PURE__*/_jsx(CarouselTabsPanel, {
564
- items: tabs
565
- }) : panelNavigation;
566
- const isFirstFocusContainer = Boolean(refocus && !skipLinkHref);
567
- const containerRef = element => {
568
- // Apply both firstFocusRef to the container
569
- firstFocusRef.current = element;
570
- // Also apply forwarded ref if there is one (which could be a function ref)
571
- if (ref) {
572
- if (typeof ref === 'object') {
573
- // eslint-disable-next-line no-param-reassign
574
- ref.current = element;
575
- } else if (typeof ref === 'function') {
576
- ref(element);
577
- }
578
- }
579
- };
580
- const systemProps = selectProps({
581
- ...rest,
582
- accessibilityRole,
583
- accessibilityLabel
584
- });
585
-
586
- // If container isn't used for focus, give it a label of title if none is passed in,
587
- // otherwise read the current position on focus
588
- const containerAccessibilityLabel = systemProps.accessibilityLabel ?? isFirstFocusContainer ? `${title ? `${title} ` : ''}${getCopyWithPlaceholders('stepTrackerLabel')}` : title;
589
- const containerProps = {
590
- accessibilityLabel: containerAccessibilityLabel,
591
- // If used for focus, attach the ref and draw a focus box around the whole carousel
592
- ...(isFirstFocusContainer && {
593
- ref: containerRef,
594
- focusable: true
595
- })
596
- };
597
- const onAnimationControlButtonPress = React.useCallback(() => {
598
- if (isCarouselPlaying) {
599
- stopAutoplay();
600
- } else {
601
- startAutoplay();
602
- }
603
- setisCarouselPlaying(prevState => !prevState);
604
- }, [isCarouselPlaying, stopAutoplay, startAutoplay]);
605
- return /*#__PURE__*/_jsxs(CarouselProvider, {
606
- activeIndex: activeIndex,
607
- goTo: goTo,
608
- getCopyWithPlaceholders: getCopyWithPlaceholders,
609
- itemLabel: itemLabel,
610
- totalItems: childrenArray.length,
611
- themeTokens: themeTokens,
612
- firstFocusRef: firstFocusRef,
613
- refocus: refocus,
614
- width: containerLayout.width,
615
- children: [/*#__PURE__*/_jsxs(View, {
616
- style: [staticStyles.root, {
617
- ...Platform.select({
618
- web: {
619
- outline: 'none'
620
- }
621
- })
622
- }],
623
- onLayout: onContainerLayout,
624
- ref: ref,
625
- ...systemProps,
626
- ...containerProps,
627
- children: [isAutoPlayEnabled ? /*#__PURE__*/_jsx(View, {
628
- style: [staticStyles.animationControlButton, selectControlButtonPositionStyles({
629
- positionVariant: previousNextNavigationPosition,
630
- buttonWidth: previousNextNavigationButtonWidth,
631
- positionProperty: getDynamicPositionProperty(),
632
- spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation,
633
- enablePeeking
634
- })],
635
- children: /*#__PURE__*/_jsx(IconButton, {
636
- icon: isCarouselPlaying ? pauseIcon : playIcon,
637
- accessibilityLabel: isCarouselPlaying ? getCopy('pauseButtonLabel') : getCopy('playButtonLabel'),
638
- variant: previousNextIconButtonVariants,
639
- onPress: onAnimationControlButtonPress
640
- })
641
- }) : null, showPreviousNextNavigation && childrenArray.length > 1 ? /*#__PURE__*/_jsx(View, {
642
- style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true, enablePeeking),
643
- testID: "previous-button-container",
644
- children: /*#__PURE__*/_jsx(IconButton, {
645
- onLayout: onPreviousNextNavigationButtonLayout,
646
- icon: previousIcon,
647
- onPress: goToPrev,
648
- variant: previousNextIconButtonVariants,
649
- accessibilityLabel: getCopyWithPlaceholders('iconButtonLabel').replace('%{targetStep}', activeIndex),
650
- tokens: selectIconStyles(themeTokens)
651
- })
652
- }) : null, Boolean(skipLinkHref) && /*#__PURE__*/_jsx(SkipLink, {
653
- ref: firstFocusRef,
654
- href: skipLinkHref,
655
- children: getCopyWithPlaceholders('skipLink')
656
- }), !isFirstFocusContainer && /*#__PURE__*/_jsx(A11yText
657
- // Read the current slide position to screen readers on slide.
658
- // If it's set to refocus and doesn't have a SkipLink to focus to, focus this.
659
- , {
660
- accessibilityLiveRegion: !skipLinkHref && refocus ? undefined : 'polite',
661
- text: getCopyWithPlaceholders('stepTrackerLabel')
662
- }), /*#__PURE__*/_jsx(View, {
663
- style: selectContainerStyles(containerLayout.width),
664
- children: /*#__PURE__*/_jsx(Animated.View, {
665
- style: StyleSheet.flatten([selectSwipeAreaStyles(childrenArray.length, containerLayout.width, enablePeeking), {
666
- transform: [{
667
- translateX: pan.x
668
- }, {
669
- translateY: pan.y
670
- }]
671
- }]),
672
- ...panResponder.panHandlers,
673
- ...getA11yPropsFromHtmlTag(tag),
674
- // In iframes on Mac (e.g. in Storybook), this content may be misread or read twice.
675
- // This is a known Voiceover bug: https://github.com/phetsims/a11y-research/issues/132
676
- accessibilityLiveRegion: accessibilityLiveRegion,
677
- children: childrenArray.map((element, index) => {
678
- const hidden = !isAnimating && index !== activeIndex;
679
- const clonedElement = /*#__PURE__*/React.cloneElement(element, {
680
- elementIndex: index,
681
- hidden: enablePeeking ? false : hidden,
682
- enablePeeking,
683
- peekingProps: getPeekingProps(viewport)
684
- });
685
- return /*#__PURE__*/_jsx(React.Fragment, {
686
- children: clonedElement
687
- }, index.toFixed(2));
688
- })
689
- })
690
- }), showPreviousNextNavigation && childrenArray.length > 1 ? /*#__PURE__*/_jsx(View, {
691
- style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, false, enablePeeking),
692
- testID: "next-button-container",
693
- children: /*#__PURE__*/_jsx(IconButton, {
694
- onLayout: onPreviousNextNavigationButtonLayout,
695
- icon: nextIcon,
696
- onPress: goToNext,
697
- variant: previousNextIconButtonVariants,
698
- accessibilityLabel: getCopyWithPlaceholders('iconButtonLabel').replace('%{targetStep}', activeIndex + 2),
699
- tokens: selectIconStyles(themeTokens)
700
- })
701
- }) : null]
702
- }), showPanelNavigation ? activePanelNavigation : null]
703
- });
704
- });
705
- Carousel.propTypes = {
706
- ...selectedSystemPropTypes,
707
- tokens: getTokensPropType('Carousel'),
708
- variant: variantProp.propType,
709
- /**
710
- * Prop related to StepTracker Variants
711
- */
712
- stepTrackerVariant: variantProp.propType,
713
- /**
714
- * Slides to render in Carousel. Wrap individual slides in `Carousel.Item`
715
- */
716
- children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
717
- /**
718
- * Lowercase language-appropriate user-facing description of what each Carousel slide represents.
719
- * This is used when generating item labels. For example, if a carousel contains offers,
720
- * pass itemLabel="summer offer" (or copy="fr" and an appropriate French translation) to genereate
721
- * accessible labels such as "Summer offer 1 of 3" and "Show summer offer 2 of 3".
722
- */
723
- itemLabel: PropTypes.string,
724
- /**
725
- * `inside` renders the previous and next buttons inside the slide
726
- * `outside` renders the previous and next buttons outside the slide
727
- * `edge` renders the previous and next buttons at the edge of the slide
728
- */
729
- previousNextNavigationPosition: PropTypes.oneOf(['inside', 'outside', 'edge']),
730
- /**
731
- * Defines the size of the `IconButton` which is being used to render next and previous buttons
732
- */
733
- previousNextIconSize: PropTypes.oneOf(['default', 'small', 'large']),
734
- /**
735
- * Carousel uses `Animated.spring` to animate slide changes, use this option to pass custom animation configuration
736
- */
737
- springConfig: PropTypes.object,
738
- /**
739
- * An array of objects containing information on the thumbnails to be rendered as navigation panel
740
- */
741
- thumbnails: PropTypes.arrayOf(PropTypes.shape({
742
- accessibilityLabel: PropTypes.string,
743
- alt: PropTypes.string,
744
- src: PropTypes.string
745
- })),
746
- /**
747
- * Minimal part of slide width must be swiped for changing index.
748
- * Otherwise animation restore current slide. Default value 0.2 means that 20% must be swiped for change index
749
- */
750
- minDistanceForAction: PropTypes.number,
751
- /**
752
- * Initiate animation after swipe this distance.
753
- */
754
- minDistanceToCapture: PropTypes.number,
755
- /**
756
- * Called when active index changed
757
- * This function is also provided with a parameter indicating changed index (either 1, or -1)
758
- * Use it as follows:
759
- * ```js
760
- * const onIndexChangedCallback = React.useCallback((changedIndex, currentActiveIndex) => {
761
- * console.log(changedIndex)
762
- * }, []) // pass local dependencies as per your component
763
- * <Carousel
764
- * onIndexChanged={onIndexChangedCallback}
765
- * >
766
- * <Carousel.Item>First Slide</Carousel.Item>
767
- * </Carousel>
768
- * ```
769
- * Caution: Always consider wrapping your callback for `onIndexChanged` in `React.useCallback` in order to avoid bugs and performance issues
770
- */
771
- onIndexChanged: PropTypes.func,
772
- /**
773
- * If this is a complex carousel with a lot of focusable content, pass a href for a skip link. Typically, this will be an anchor link
774
- * with the ID of a focusable element immediately after the Carousel, e.g. `'#section-2-heading'`.
775
- */
776
- skipLinkHref: PropTypes.string,
777
- /**
778
- * If provided, defaults the navigation panel to a CarouselTabsPanel element passing each item as props for one tab.
779
- *
780
- * Be careful to ensure that the order of each element in the items array matches the order of each child in the Carousel.
781
- */
782
- tabs: PropTypes.arrayOf(PropTypes.shape(CarouselTabsPanelItem.propTypes || {})),
783
- /**
784
- * If true, whenever a new slide comes into view, the focus of the Carousel switches to the start.
785
- *
786
- * Pass this as true when using carousel items that contain interactive content, so a user can easily tab into that content.
787
- *
788
- * If skipLinkHref is passed, the focus target will be the SkipLink; if not, it'll be an empty element before the slide content.
789
- */
790
- refocus: PropTypes.bool,
791
- /**
792
- * Use this to render a custom panel navigation element instead of the default StepTracker's based navigation
793
- * You can make use of `useCarousel` within your custom panel navigation component to hook into various Carousel states such as:
794
- * - activeIndex: index of current slide
795
- * - totalItems: total number of slides
796
- * Use it as follows:
797
- * ```js
798
- * <Carousel
799
- * panelNavigation={<CustomPanelNavigation />}
800
- * >
801
- * <Carousel.Item>First Slide</Carousel.Item>
802
- * </Carousel>
803
- * ```
804
- */
805
- panelNavigation: PropTypes.element,
806
- /**
807
- * When slide animation start
808
- * This function is also provided with a parameter indicating the current slide index before animation starts
809
- * Use it as follows:
810
- * ```js
811
- * const onAnimationStartCallback = React.useCallback((currentIndex) => {
812
- * console.log(currentIndex)
813
- * }, []) // pass local dependencies as per your component
814
- * <Carousel
815
- * onAnimationStart={onAnimationStartCallback}
816
- * >
817
- * <Carousel.Item>First Slide</Carousel.Item>
818
- * </Carousel>
819
- * ```
820
- * Caution: Always consider wrapping your callback for `onAnimationStart` in `React.useCallback` in order to avoid bugs and performance issues
821
- */
822
- onAnimationStart: PropTypes.func,
823
- /**
824
- * When slide animation end with parameter of current index (after animation ends)
825
- * This function is also provided with a parameter indicating the updated slide index after animation ends
826
- * Use it as follows:
827
- * ```js
828
- * const onAnimationEndCallback = React.useCallback((changedIndex) => {
829
- * console.log(changedIndex)
830
- * }, []) // pass local dependencies as per your component
831
- * <Carousel
832
- * onAnimationEnd={onAnimationEndCallback}
833
- * >
834
- * <Carousel.Item>First Slide</Carousel.Item>
835
- * </Carousel>
836
- * ```
837
- * Caution: Always consider wrapping your callback for `onAnimationEnd` in `React.useCallback` in order to avoid bugs and performance issues
838
- */
839
- onAnimationEnd: PropTypes.func,
840
- /**
841
- * Use this to override the default text for panel navigation
842
- */
843
- panelNavigationTextDictionary: PropTypes.shape({
844
- en: PropTypes.shape({
845
- stepTrackerLabel: PropTypes.string.isRequired
846
- }),
847
- fr: PropTypes.shape({
848
- stepTrackerLabel: PropTypes.string.isRequired
849
- })
850
- }),
851
- /**
852
- * Provide custom accessibilityRole for Carousel container
853
- */
854
- accessibilityRole: PropTypes.string,
855
- /**
856
- * Provide custom accessibilityLabel for Carousel container
857
- */
858
- accessibilityLabel: PropTypes.string,
859
- /**
860
- * HTML tag to use for the Carousel item's immediate parent. Defaults to `'ul'` so that
861
- * assistive technology tools know to intepret the carousel as a list.
862
- *
863
- * Note that if the immediate Carousel children do not all render as `'li'` elements,
864
- * this should be changed (e.g. pass tag="div") because only 'li' is a valid child of 'ul'.
865
- */
866
- tag: PropTypes.oneOf(layoutTags),
867
- /**
868
- * If set to `true`, the Carousel will automatically transition between slides
869
- * and show the play/pause button
870
- * - Default value is `false`
871
- * - `slideDuration` and `transitionDuration` are required to be set for this to work
872
- */
873
- autoPlay: PropTypes.bool,
874
- /**
875
- * Duration of the time in seconds spent on each slide
876
- * - Default value is `0`
877
- * - `autoPlay` and `transitionDuration` are required to be set for this to work
878
- */
879
- slideDuration: PropTypes.number,
880
- /**
881
- * Duration of the time in seconds between each slide transition
882
- * - Default value is `0`
883
- * - `autoPlay` and `slideDuration` are required to be set for this to work
884
- */
885
- transitionDuration: PropTypes.number,
886
- /**
887
- * If set to `true`, the Carousel will show the previous and next slides
888
- * - Default value is `false`
889
- */
890
- enablePeeking: PropTypes.bool
891
- };
892
- Carousel.Item = CarouselItem;
893
- Carousel.displayName = 'Carousel';
894
- export default Carousel;