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