@telus-uds/components-web 3.4.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/.eslintrc.cjs +7 -1
  2. package/CHANGELOG.md +38 -2
  3. package/jest.config.cjs +1 -1
  4. package/lib/cjs/Badge/Badge.js +128 -0
  5. package/lib/cjs/Badge/index.js +9 -0
  6. package/lib/cjs/BlockQuote/BlockQuote.js +256 -0
  7. package/lib/cjs/BlockQuote/index.js +9 -0
  8. package/lib/cjs/Breadcrumbs/Breadcrumbs.js +264 -0
  9. package/lib/cjs/Breadcrumbs/Item/Item.js +180 -0
  10. package/lib/cjs/Breadcrumbs/index.js +13 -0
  11. package/lib/cjs/Callout/Callout.js +141 -0
  12. package/lib/cjs/Callout/index.js +9 -0
  13. package/lib/cjs/Card/Card.js +257 -0
  14. package/lib/cjs/Card/CardContent.js +97 -0
  15. package/lib/cjs/Card/CardFooter.js +85 -0
  16. package/lib/cjs/Card/index.js +9 -0
  17. package/lib/cjs/Countdown/Countdown.js +268 -0
  18. package/lib/cjs/Countdown/Segment.js +108 -0
  19. package/lib/cjs/Countdown/constants.js +10 -0
  20. package/lib/cjs/Countdown/dictionary.js +28 -0
  21. package/lib/cjs/Countdown/index.js +9 -0
  22. package/lib/cjs/Countdown/types.js +31 -0
  23. package/lib/cjs/Countdown/useCountdown.js +32 -0
  24. package/lib/cjs/DatePicker/CalendarContainer.js +214 -0
  25. package/lib/cjs/DatePicker/DatePicker.js +525 -0
  26. package/lib/cjs/DatePicker/dictionary.js +125 -0
  27. package/lib/cjs/DatePicker/index.js +9 -0
  28. package/lib/cjs/DatePicker/reactDatesCss.js +9 -0
  29. package/lib/cjs/Disclaimer/Disclaimer.js +61 -0
  30. package/lib/cjs/Disclaimer/index.js +13 -0
  31. package/lib/cjs/Footnote/Footnote.js +637 -0
  32. package/lib/cjs/Footnote/FootnoteLink.js +125 -0
  33. package/lib/cjs/Footnote/dictionary.js +18 -0
  34. package/lib/cjs/Footnote/index.js +11 -0
  35. package/lib/cjs/IconButton/IconButton.js +62 -0
  36. package/lib/cjs/IconButton/index.js +9 -0
  37. package/lib/cjs/Image/Image.js +90 -0
  38. package/lib/cjs/Image/index.js +20 -0
  39. package/lib/cjs/Image/server.js +11 -0
  40. package/lib/cjs/List/List.js +8 -0
  41. package/lib/cjs/List/ListItem.js +34 -0
  42. package/lib/cjs/List/index.js +11 -0
  43. package/lib/cjs/NavigationBar/NavigationBar.js +282 -0
  44. package/lib/cjs/NavigationBar/NavigationItem.js +94 -0
  45. package/lib/cjs/NavigationBar/NavigationSubMenu.js +164 -0
  46. package/lib/cjs/NavigationBar/collapseItems.js +43 -0
  47. package/lib/cjs/NavigationBar/index.js +11 -0
  48. package/lib/cjs/NavigationBar/resolveItemSelection.js +22 -0
  49. package/lib/cjs/OptimizeImage/OptimizeImage.js +99 -0
  50. package/lib/cjs/OptimizeImage/index.js +9 -0
  51. package/lib/cjs/OptimizeImage/utils/getFallbackUrl.js +14 -0
  52. package/lib/cjs/OptimizeImage/utils/getImageUrls.js +19 -0
  53. package/lib/cjs/OptimizeImage/utils/getOptimizedUrl.js +24 -0
  54. package/lib/cjs/OptimizeImage/utils/hasWebpSupport.js +34 -0
  55. package/lib/cjs/OptimizeImage/utils/index.js +34 -0
  56. package/lib/cjs/OptimizeImage/utils/isSvgUrl.js +9 -0
  57. package/lib/cjs/OrderedList/Item.js +151 -0
  58. package/lib/cjs/OrderedList/ItemBase.js +34 -0
  59. package/lib/cjs/OrderedList/OrderedList.js +92 -0
  60. package/lib/cjs/OrderedList/OrderedListBase.js +52 -0
  61. package/lib/cjs/OrderedList/constants.js +8 -0
  62. package/lib/cjs/OrderedList/index.js +11 -0
  63. package/lib/cjs/Paragraph/Paragraph.js +97 -0
  64. package/lib/cjs/Paragraph/index.js +9 -0
  65. package/lib/cjs/PreviewCard/AuthorDate.js +63 -0
  66. package/lib/cjs/PreviewCard/PreviewCard.js +215 -0
  67. package/lib/cjs/PreviewCard/index.js +9 -0
  68. package/lib/cjs/PriceLockup/PriceLockup.js +398 -0
  69. package/lib/cjs/PriceLockup/dictionary.js +18 -0
  70. package/lib/cjs/PriceLockup/index.js +9 -0
  71. package/lib/cjs/PriceLockup/tokens.js +66 -0
  72. package/lib/cjs/Progress/ProgressBar.js +99 -0
  73. package/lib/cjs/Progress/index.js +11 -0
  74. package/lib/cjs/QuantitySelector/QuantitySelector.js +267 -0
  75. package/lib/cjs/QuantitySelector/SideButton.js +77 -0
  76. package/lib/cjs/QuantitySelector/dictionary.js +32 -0
  77. package/lib/cjs/QuantitySelector/index.js +9 -0
  78. package/lib/cjs/QuantitySelector/styles.js +16 -0
  79. package/lib/cjs/ResponsiveImage/ResponsiveImage.js +107 -0
  80. package/lib/cjs/ResponsiveImage/index.js +9 -0
  81. package/lib/cjs/Ribbon/Ribbon.js +222 -0
  82. package/lib/cjs/Ribbon/index.js +9 -0
  83. package/lib/cjs/SkeletonProvider/SkeletonImage.js +45 -0
  84. package/lib/cjs/SkeletonProvider/SkeletonProvider.js +63 -0
  85. package/lib/cjs/SkeletonProvider/SkeletonTypography.js +44 -0
  86. package/lib/cjs/SkeletonProvider/index.js +9 -0
  87. package/lib/cjs/Span/Span.js +79 -0
  88. package/lib/cjs/Span/index.js +9 -0
  89. package/lib/cjs/Spinner/Spinner.js +221 -0
  90. package/lib/cjs/Spinner/SpinnerContent.js +100 -0
  91. package/lib/cjs/Spinner/constants.js +10 -0
  92. package/lib/cjs/Spinner/index.js +9 -0
  93. package/lib/cjs/StoryCard/StoryCard.js +219 -0
  94. package/lib/cjs/StoryCard/index.js +9 -0
  95. package/lib/cjs/Table/Body.js +24 -0
  96. package/lib/cjs/Table/Cell.js +196 -0
  97. package/lib/cjs/Table/Header.js +32 -0
  98. package/lib/cjs/Table/Row.js +74 -0
  99. package/lib/cjs/Table/SubHeading.js +30 -0
  100. package/lib/cjs/Table/Table.js +124 -0
  101. package/lib/cjs/Table/index.js +19 -0
  102. package/lib/cjs/TermsAndConditions/ExpandCollapse.js +160 -0
  103. package/lib/cjs/TermsAndConditions/TermsAndConditions.js +283 -0
  104. package/lib/cjs/TermsAndConditions/dictionary.js +22 -0
  105. package/lib/cjs/TermsAndConditions/index.js +13 -0
  106. package/lib/cjs/Testimonial/Testimonial.js +240 -0
  107. package/lib/cjs/Testimonial/index.js +9 -0
  108. package/lib/cjs/Toast/Toast.js +165 -0
  109. package/lib/cjs/Toast/index.js +9 -0
  110. package/lib/cjs/Video/ControlBar/ControlBar.js +294 -0
  111. package/lib/cjs/Video/ControlBar/Controls/VideoButton/VideoButton.js +76 -0
  112. package/lib/cjs/Video/ControlBar/Controls/VideoMenu/VideoMenu.js +169 -0
  113. package/lib/cjs/Video/ControlBar/Controls/VideoProgressBar/VideoProgressBar.js +211 -0
  114. package/lib/cjs/Video/ControlBar/Controls/VolumeSlider/VolumeSlider.js +197 -0
  115. package/lib/cjs/Video/MiddleControlButton/MiddleControlButton.js +78 -0
  116. package/lib/cjs/Video/Video.js +964 -0
  117. package/lib/cjs/Video/index.js +9 -0
  118. package/lib/cjs/Video/videoText.js +61 -0
  119. package/lib/cjs/VideoPicker/VideoPicker.js +197 -0
  120. package/lib/cjs/VideoPicker/VideoPickerPlayer.js +54 -0
  121. package/lib/cjs/VideoPicker/VideoPickerThumbnail.js +223 -0
  122. package/lib/cjs/VideoPicker/VideoSlider.js +88 -0
  123. package/lib/cjs/VideoPicker/index.js +9 -0
  124. package/lib/cjs/VideoPicker/videoPropType.js +17 -0
  125. package/lib/cjs/WaffleGrid/WaffleGrid.js +164 -0
  126. package/lib/cjs/WaffleGrid/index.js +9 -0
  127. package/lib/cjs/WebVideo/WebVideo.js +197 -0
  128. package/lib/cjs/WebVideo/index.js +9 -0
  129. package/lib/cjs/WebVideo/utils/index.js +57 -0
  130. package/lib/cjs/baseExports.js +438 -0
  131. package/lib/cjs/index.js +317 -0
  132. package/lib/cjs/server.js +13 -0
  133. package/lib/cjs/shared/ConditionalWrapper/ConditionalWrapper.js +29 -0
  134. package/lib/cjs/shared/ConditionalWrapper/index.js +9 -0
  135. package/lib/cjs/shared/FullBleedContent/FullBleedContent.js +108 -0
  136. package/lib/cjs/shared/FullBleedContent/getFullBleedBorderRadius.js +61 -0
  137. package/lib/cjs/shared/FullBleedContent/index.js +23 -0
  138. package/lib/cjs/shared/FullBleedContent/useFullBleedContentProps.js +61 -0
  139. package/lib/cjs/shared/VideoSplash/SplashButton/SplashButton.js +91 -0
  140. package/lib/cjs/shared/VideoSplash/SplashButtonWithDetails/SplashButtonWithDetails.js +229 -0
  141. package/lib/cjs/shared/VideoSplash/VideoSplash.js +72 -0
  142. package/lib/cjs/shared/VideoSplash/helpers.js +32 -0
  143. package/lib/cjs/utils/index.js +88 -0
  144. package/lib/cjs/utils/isElementFocusable.js +14 -0
  145. package/lib/cjs/utils/logger.js +24 -0
  146. package/lib/cjs/utils/media.js +45 -0
  147. package/lib/cjs/utils/renderStructuredContent.js +71 -0
  148. package/lib/cjs/utils/scrollToAnchor.js +25 -0
  149. package/lib/cjs/utils/ssr.js +50 -0
  150. package/lib/cjs/utils/theming/get-theme-from-server.js +24 -0
  151. package/lib/cjs/utils/theming/with-client-theme.js +31 -0
  152. package/lib/cjs/utils/theming/with-server-theme.js +33 -0
  153. package/lib/cjs/utils/transforms.js +11 -0
  154. package/lib/cjs/utils/useOverlaidPosition.js +222 -0
  155. package/lib/cjs/utils/useTypographyTheme.js +30 -0
  156. package/lib/{Badge → esm/Badge}/Badge.js +11 -21
  157. package/lib/{BlockQuote → esm/BlockQuote}/BlockQuote.js +17 -31
  158. package/lib/{Breadcrumbs → esm/Breadcrumbs}/Breadcrumbs.js +6 -5
  159. package/lib/{Breadcrumbs → esm/Breadcrumbs}/Item/Item.js +10 -6
  160. package/lib/{Callout → esm/Callout}/Callout.js +6 -5
  161. package/lib/{Card → esm/Card}/Card.js +5 -5
  162. package/lib/{Card → esm/Card}/CardContent.js +6 -5
  163. package/lib/{Card → esm/Card}/CardFooter.js +6 -5
  164. package/lib/{Countdown → esm/Countdown}/Countdown.js +53 -32
  165. package/lib/{Countdown → esm/Countdown}/Segment.js +6 -6
  166. package/lib/{DatePicker → esm/DatePicker}/CalendarContainer.js +5 -5
  167. package/lib/{DatePicker → esm/DatePicker}/DatePicker.js +18 -12
  168. package/lib/esm/DatePicker/reactDatesCss.js +3 -0
  169. package/lib/{Disclaimer → esm/Disclaimer}/Disclaimer.js +6 -5
  170. package/lib/{Footnote → esm/Footnote}/Footnote.js +39 -15
  171. package/lib/{Footnote → esm/Footnote}/FootnoteLink.js +6 -5
  172. package/lib/{NavigationBar → esm/NavigationBar}/NavigationBar.js +6 -5
  173. package/lib/{NavigationBar → esm/NavigationBar}/NavigationItem.js +6 -5
  174. package/lib/{OrderedList → esm/OrderedList}/Item.js +10 -6
  175. package/lib/{OrderedList → esm/OrderedList}/ItemBase.js +5 -5
  176. package/lib/{OrderedList → esm/OrderedList}/OrderedList.js +6 -5
  177. package/lib/{OrderedList → esm/OrderedList}/OrderedListBase.js +5 -5
  178. package/lib/{Paragraph → esm/Paragraph}/Paragraph.js +8 -16
  179. package/lib/{PreviewCard → esm/PreviewCard}/PreviewCard.js +10 -7
  180. package/lib/{PriceLockup → esm/PriceLockup}/PriceLockup.js +103 -71
  181. package/lib/esm/PriceLockup/dictionary.js +12 -0
  182. package/lib/{Progress → esm/Progress}/ProgressBar.js +6 -6
  183. package/lib/esm/QuantitySelector/styles.js +9 -0
  184. package/lib/{Ribbon → esm/Ribbon}/Ribbon.js +31 -57
  185. package/lib/{Span → esm/Span}/Span.js +7 -6
  186. package/lib/{Spinner → esm/Spinner}/Spinner.js +18 -8
  187. package/lib/{Spinner → esm/Spinner}/SpinnerContent.js +6 -5
  188. package/lib/{StoryCard → esm/StoryCard}/StoryCard.js +10 -7
  189. package/lib/{Table → esm/Table}/Cell.js +25 -45
  190. package/lib/esm/Table/Row.js +67 -0
  191. package/lib/{Table → esm/Table}/Table.js +16 -17
  192. package/lib/{TermsAndConditions → esm/TermsAndConditions}/ExpandCollapse.js +13 -7
  193. package/lib/{TermsAndConditions → esm/TermsAndConditions}/TermsAndConditions.js +22 -9
  194. package/lib/{Testimonial → esm/Testimonial}/Testimonial.js +26 -10
  195. package/lib/{Toast → esm/Toast}/Toast.js +13 -64
  196. package/lib/{Video → esm/Video}/ControlBar/ControlBar.js +18 -8
  197. package/lib/{Video → esm/Video}/ControlBar/Controls/VideoButton/VideoButton.js +6 -5
  198. package/lib/{Video → esm/Video}/ControlBar/Controls/VideoMenu/VideoMenu.js +14 -7
  199. package/lib/{Video → esm/Video}/ControlBar/Controls/VideoProgressBar/VideoProgressBar.js +14 -7
  200. package/lib/{Video → esm/Video}/ControlBar/Controls/VolumeSlider/VolumeSlider.js +10 -6
  201. package/lib/{Video → esm/Video}/MiddleControlButton/MiddleControlButton.js +6 -5
  202. package/lib/{Video → esm/Video}/Video.js +26 -10
  203. package/lib/{VideoPicker → esm/VideoPicker}/VideoPicker.js +20 -44
  204. package/lib/{VideoPicker → esm/VideoPicker}/VideoPickerThumbnail.js +18 -52
  205. package/lib/{WaffleGrid → esm/WaffleGrid}/WaffleGrid.js +14 -7
  206. package/lib/{WebVideo → esm/WebVideo}/WebVideo.js +14 -9
  207. package/lib/{index.js → esm/index.js} +1 -1
  208. package/lib/{shared → esm/shared}/FullBleedContent/FullBleedContent.js +5 -5
  209. package/lib/{shared → esm/shared}/VideoSplash/SplashButton/SplashButton.js +9 -6
  210. package/lib/{shared → esm/shared}/VideoSplash/SplashButtonWithDetails/SplashButtonWithDetails.js +17 -8
  211. package/lib/{shared → esm/shared}/VideoSplash/VideoSplash.js +6 -5
  212. package/lib/{utils → esm/utils}/index.js +1 -2
  213. package/lib/{utils → esm/utils}/ssr.js +1 -4
  214. package/package.json +17 -16
  215. package/src/Badge/Badge.jsx +2 -3
  216. package/src/BlockQuote/BlockQuote.jsx +2 -3
  217. package/src/Breadcrumbs/Breadcrumbs.jsx +2 -3
  218. package/src/Breadcrumbs/Item/Item.jsx +2 -3
  219. package/src/Callout/Callout.jsx +2 -4
  220. package/src/Card/Card.jsx +1 -3
  221. package/src/Card/CardContent.jsx +2 -3
  222. package/src/Card/CardFooter.jsx +2 -3
  223. package/src/Countdown/Countdown.jsx +62 -36
  224. package/src/Countdown/Segment.jsx +1 -3
  225. package/src/DatePicker/CalendarContainer.jsx +1 -3
  226. package/src/DatePicker/DatePicker.jsx +2 -3
  227. package/src/DatePicker/reactDatesCss.js +1 -3
  228. package/src/Disclaimer/Disclaimer.jsx +2 -3
  229. package/src/Footnote/Footnote.jsx +2 -10
  230. package/src/Footnote/FootnoteLink.jsx +2 -3
  231. package/src/NavigationBar/NavigationBar.jsx +2 -3
  232. package/src/NavigationBar/NavigationItem.jsx +2 -3
  233. package/src/OrderedList/Item.jsx +2 -3
  234. package/src/OrderedList/ItemBase.jsx +1 -3
  235. package/src/OrderedList/OrderedList.jsx +2 -3
  236. package/src/OrderedList/OrderedListBase.jsx +1 -3
  237. package/src/Paragraph/Paragraph.jsx +2 -4
  238. package/src/PreviewCard/PreviewCard.jsx +1 -3
  239. package/src/PriceLockup/PriceLockup.jsx +59 -10
  240. package/src/PriceLockup/dictionary.js +12 -0
  241. package/src/Progress/ProgressBar.jsx +1 -3
  242. package/src/QuantitySelector/styles.js +1 -3
  243. package/src/Ribbon/Ribbon.jsx +2 -3
  244. package/src/Span/Span.jsx +2 -4
  245. package/src/Spinner/Spinner.jsx +2 -3
  246. package/src/Spinner/SpinnerContent.jsx +2 -3
  247. package/src/StoryCard/StoryCard.jsx +1 -3
  248. package/src/Table/Cell.jsx +17 -5
  249. package/src/Table/Row.jsx +27 -3
  250. package/src/Table/Table.jsx +14 -5
  251. package/src/TermsAndConditions/ExpandCollapse.jsx +1 -3
  252. package/src/TermsAndConditions/TermsAndConditions.jsx +2 -3
  253. package/src/Testimonial/Testimonial.jsx +2 -3
  254. package/src/Toast/Toast.jsx +2 -3
  255. package/src/Video/ControlBar/ControlBar.jsx +2 -4
  256. package/src/Video/ControlBar/Controls/VideoButton/VideoButton.jsx +2 -4
  257. package/src/Video/ControlBar/Controls/VideoMenu/VideoMenu.jsx +2 -4
  258. package/src/Video/ControlBar/Controls/VideoProgressBar/VideoProgressBar.jsx +2 -4
  259. package/src/Video/ControlBar/Controls/VolumeSlider/VolumeSlider.jsx +2 -4
  260. package/src/Video/MiddleControlButton/MiddleControlButton.jsx +2 -4
  261. package/src/Video/Video.jsx +2 -4
  262. package/src/VideoPicker/VideoPicker.jsx +2 -4
  263. package/src/VideoPicker/VideoPickerThumbnail.jsx +1 -3
  264. package/src/WaffleGrid/WaffleGrid.jsx +2 -3
  265. package/src/WebVideo/WebVideo.jsx +3 -4
  266. package/src/index.js +1 -1
  267. package/src/shared/FullBleedContent/FullBleedContent.jsx +1 -3
  268. package/src/shared/VideoSplash/SplashButton/SplashButton.jsx +1 -3
  269. package/src/shared/VideoSplash/SplashButtonWithDetails/SplashButtonWithDetails.jsx +1 -4
  270. package/src/shared/VideoSplash/VideoSplash.jsx +2 -3
  271. package/src/utils/index.js +1 -3
  272. package/src/utils/ssr.js +1 -2
  273. package/types/Listbox.d.ts +67 -0
  274. package/types/index.d.ts +3 -0
  275. package/lib/DatePicker/reactDatesCss.js +0 -830
  276. package/lib/QuantitySelector/styles.js +0 -18
  277. package/lib/Table/Row.js +0 -19
  278. package/lib/utils/theming/styled-components.js +0 -26
  279. package/src/utils/theming/styled-components.js +0 -23
  280. /package/lib/{Badge → esm/Badge}/index.js +0 -0
  281. /package/lib/{BlockQuote → esm/BlockQuote}/index.js +0 -0
  282. /package/lib/{Breadcrumbs → esm/Breadcrumbs}/index.js +0 -0
  283. /package/lib/{Callout → esm/Callout}/index.js +0 -0
  284. /package/lib/{Card → esm/Card}/index.js +0 -0
  285. /package/lib/{Countdown → esm/Countdown}/constants.js +0 -0
  286. /package/lib/{Countdown → esm/Countdown}/dictionary.js +0 -0
  287. /package/lib/{Countdown → esm/Countdown}/index.js +0 -0
  288. /package/lib/{Countdown → esm/Countdown}/types.js +0 -0
  289. /package/lib/{Countdown → esm/Countdown}/useCountdown.js +0 -0
  290. /package/lib/{DatePicker → esm/DatePicker}/dictionary.js +0 -0
  291. /package/lib/{DatePicker → esm/DatePicker}/index.js +0 -0
  292. /package/lib/{Disclaimer → esm/Disclaimer}/index.js +0 -0
  293. /package/lib/{Footnote → esm/Footnote}/dictionary.js +0 -0
  294. /package/lib/{Footnote → esm/Footnote}/index.js +0 -0
  295. /package/lib/{IconButton → esm/IconButton}/IconButton.js +0 -0
  296. /package/lib/{IconButton → esm/IconButton}/index.js +0 -0
  297. /package/lib/{Image → esm/Image}/Image.js +0 -0
  298. /package/lib/{Image → esm/Image}/index.js +0 -0
  299. /package/lib/{Image → esm/Image}/server.js +0 -0
  300. /package/lib/{List → esm/List}/List.js +0 -0
  301. /package/lib/{List → esm/List}/ListItem.js +0 -0
  302. /package/lib/{List → esm/List}/index.js +0 -0
  303. /package/lib/{NavigationBar → esm/NavigationBar}/NavigationSubMenu.js +0 -0
  304. /package/lib/{NavigationBar → esm/NavigationBar}/collapseItems.js +0 -0
  305. /package/lib/{NavigationBar → esm/NavigationBar}/index.js +0 -0
  306. /package/lib/{NavigationBar → esm/NavigationBar}/resolveItemSelection.js +0 -0
  307. /package/lib/{OptimizeImage → esm/OptimizeImage}/OptimizeImage.js +0 -0
  308. /package/lib/{OptimizeImage → esm/OptimizeImage}/index.js +0 -0
  309. /package/lib/{OptimizeImage → esm/OptimizeImage}/utils/getFallbackUrl.js +0 -0
  310. /package/lib/{OptimizeImage → esm/OptimizeImage}/utils/getImageUrls.js +0 -0
  311. /package/lib/{OptimizeImage → esm/OptimizeImage}/utils/getOptimizedUrl.js +0 -0
  312. /package/lib/{OptimizeImage → esm/OptimizeImage}/utils/hasWebpSupport.js +0 -0
  313. /package/lib/{OptimizeImage → esm/OptimizeImage}/utils/index.js +0 -0
  314. /package/lib/{OptimizeImage → esm/OptimizeImage}/utils/isSvgUrl.js +0 -0
  315. /package/lib/{OrderedList → esm/OrderedList}/constants.js +0 -0
  316. /package/lib/{OrderedList → esm/OrderedList}/index.js +0 -0
  317. /package/lib/{Paragraph → esm/Paragraph}/index.js +0 -0
  318. /package/lib/{PreviewCard → esm/PreviewCard}/AuthorDate.js +0 -0
  319. /package/lib/{PreviewCard → esm/PreviewCard}/index.js +0 -0
  320. /package/lib/{PriceLockup → esm/PriceLockup}/index.js +0 -0
  321. /package/lib/{PriceLockup → esm/PriceLockup}/tokens.js +0 -0
  322. /package/lib/{Progress → esm/Progress}/index.js +0 -0
  323. /package/lib/{QuantitySelector → esm/QuantitySelector}/QuantitySelector.js +0 -0
  324. /package/lib/{QuantitySelector → esm/QuantitySelector}/SideButton.js +0 -0
  325. /package/lib/{QuantitySelector → esm/QuantitySelector}/dictionary.js +0 -0
  326. /package/lib/{QuantitySelector → esm/QuantitySelector}/index.js +0 -0
  327. /package/lib/{ResponsiveImage → esm/ResponsiveImage}/ResponsiveImage.js +0 -0
  328. /package/lib/{ResponsiveImage → esm/ResponsiveImage}/index.js +0 -0
  329. /package/lib/{Ribbon → esm/Ribbon}/index.js +0 -0
  330. /package/lib/{SkeletonProvider → esm/SkeletonProvider}/SkeletonImage.js +0 -0
  331. /package/lib/{SkeletonProvider → esm/SkeletonProvider}/SkeletonProvider.js +0 -0
  332. /package/lib/{SkeletonProvider → esm/SkeletonProvider}/SkeletonTypography.js +0 -0
  333. /package/lib/{SkeletonProvider → esm/SkeletonProvider}/index.js +0 -0
  334. /package/lib/{Span → esm/Span}/index.js +0 -0
  335. /package/lib/{Spinner → esm/Spinner}/constants.js +0 -0
  336. /package/lib/{Spinner → esm/Spinner}/index.js +0 -0
  337. /package/lib/{StoryCard → esm/StoryCard}/index.js +0 -0
  338. /package/lib/{Table → esm/Table}/Body.js +0 -0
  339. /package/lib/{Table → esm/Table}/Header.js +0 -0
  340. /package/lib/{Table → esm/Table}/SubHeading.js +0 -0
  341. /package/lib/{Table → esm/Table}/index.js +0 -0
  342. /package/lib/{TermsAndConditions → esm/TermsAndConditions}/dictionary.js +0 -0
  343. /package/lib/{TermsAndConditions → esm/TermsAndConditions}/index.js +0 -0
  344. /package/lib/{Testimonial → esm/Testimonial}/index.js +0 -0
  345. /package/lib/{Toast → esm/Toast}/index.js +0 -0
  346. /package/lib/{Video → esm/Video}/index.js +0 -0
  347. /package/lib/{Video → esm/Video}/videoText.js +0 -0
  348. /package/lib/{VideoPicker → esm/VideoPicker}/VideoPickerPlayer.js +0 -0
  349. /package/lib/{VideoPicker → esm/VideoPicker}/VideoSlider.js +0 -0
  350. /package/lib/{VideoPicker → esm/VideoPicker}/index.js +0 -0
  351. /package/lib/{VideoPicker → esm/VideoPicker}/videoPropType.js +0 -0
  352. /package/lib/{WaffleGrid → esm/WaffleGrid}/index.js +0 -0
  353. /package/lib/{WebVideo → esm/WebVideo}/index.js +0 -0
  354. /package/lib/{WebVideo → esm/WebVideo}/utils/index.js +0 -0
  355. /package/lib/{baseExports.js → esm/baseExports.js} +0 -0
  356. /package/lib/{server.js → esm/server.js} +0 -0
  357. /package/lib/{shared → esm/shared}/ConditionalWrapper/ConditionalWrapper.js +0 -0
  358. /package/lib/{shared → esm/shared}/ConditionalWrapper/index.js +0 -0
  359. /package/lib/{shared → esm/shared}/FullBleedContent/getFullBleedBorderRadius.js +0 -0
  360. /package/lib/{shared → esm/shared}/FullBleedContent/index.js +0 -0
  361. /package/lib/{shared → esm/shared}/FullBleedContent/useFullBleedContentProps.js +0 -0
  362. /package/lib/{shared → esm/shared}/VideoSplash/helpers.js +0 -0
  363. /package/lib/{utils → esm/utils}/isElementFocusable.js +0 -0
  364. /package/lib/{utils → esm/utils}/logger.js +0 -0
  365. /package/lib/{utils → esm/utils}/media.js +0 -0
  366. /package/lib/{utils → esm/utils}/renderStructuredContent.js +0 -0
  367. /package/lib/{utils → esm/utils}/scrollToAnchor.js +0 -0
  368. /package/lib/{utils → esm/utils}/theming/get-theme-from-server.js +0 -0
  369. /package/lib/{utils → esm/utils}/theming/with-client-theme.js +0 -0
  370. /package/lib/{utils → esm/utils}/theming/with-server-theme.js +0 -0
  371. /package/lib/{utils → esm/utils}/transforms.js +0 -0
  372. /package/lib/{utils → esm/utils}/useOverlaidPosition.js +0 -0
  373. /package/lib/{utils → esm/utils}/useTypographyTheme.js +0 -0
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _lodash = _interopRequireDefault(require("lodash.omit"));
10
+ var _componentsBase = require("@telus-uds/components-base");
11
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+ var _FullBleedContent = _interopRequireWildcard(require("../shared/FullBleedContent"));
13
+ var _AuthorDate = _interopRequireDefault(require("./AuthorDate"));
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ // Passes React Native-oriented system props through UDS PressableCardBase
19
+ const [selectProps, selectedSystemPropTypes] = (0, _componentsBase.selectSystemProps)([_componentsBase.a11yProps, _componentsBase.focusHandlerProps, _componentsBase.viewProps]);
20
+
21
+ // Stop changes to the card's inner border width causing the size and
22
+ // apparent position of the full bleed image to change.
23
+ const FullBleedOffsetOuter = /*#__PURE__*/_styledComponents.default.div.withConfig({
24
+ displayName: "PreviewCard__FullBleedOffsetOuter",
25
+ componentId: "components-web__sc-1yfz4de-0"
26
+ })(_ref => {
27
+ let {
28
+ borderOffset
29
+ } = _ref;
30
+ return {
31
+ overflow: 'hidden',
32
+ marginTop: borderOffset * 2
33
+ };
34
+ });
35
+ const FullBleedOffsetInner = /*#__PURE__*/_styledComponents.default.div.withConfig({
36
+ displayName: "PreviewCard__FullBleedOffsetInner",
37
+ componentId: "components-web__sc-1yfz4de-1"
38
+ })(_ref2 => {
39
+ let {
40
+ borderOffset
41
+ } = _ref2;
42
+ return {
43
+ position: 'relative',
44
+ margin: 0 - borderOffset
45
+ };
46
+ });
47
+ const defaultTokens = {
48
+ minWidth: 0,
49
+ shadow: null,
50
+ contentAlignItems: 'stretch',
51
+ contentJustifyContent: 'flex-start',
52
+ contentFlexGrow: 0,
53
+ contentFlexShrink: 0
54
+ };
55
+
56
+ /**
57
+ * Showcase and guide users to another page, with a preview containing title and a footer.
58
+ * Whole card is interactive, width expands based on column or container.
59
+ *
60
+ * - Use `tag` to show category of content
61
+ * - Use `title` to show title of the story
62
+ * - Use `footer` to show text such as the author / date
63
+ * - Use `href` to set the target URL
64
+ * - Use `fullBleedContent` to set the thumbnail image
65
+ */
66
+ const PreviewCard = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
67
+ let {
68
+ tag,
69
+ title,
70
+ footer,
71
+ fullBleedImage,
72
+ fullBleedContent = fullBleedImage,
73
+ onPress,
74
+ href,
75
+ ...rest
76
+ } = _ref3;
77
+ const {
78
+ fullBleedContentPosition,
79
+ contentStackDirection,
80
+ fullBleedContentProps
81
+ } = (0, _FullBleedContent.useFullBleedContentProps)({
82
+ ...fullBleedContent,
83
+ position: 'bottom'
84
+ });
85
+ const {
86
+ components: {
87
+ PreviewCard: theme
88
+ }
89
+ } = (0, _componentsBase.useTheme)();
90
+ const getPressableCardTokens = cardState => ({
91
+ ...(0, _lodash.default)((0, _componentsBase.getThemeTokens)(theme, {}, {}, cardState), 'separatorColor'),
92
+ ...defaultTokens
93
+ });
94
+ const {
95
+ hrefAttrs,
96
+ rest: unusedRest
97
+ } = _componentsBase.hrefAttrsProp.bundle(rest);
98
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.PressableCardBase, {
99
+ onPress: onPress,
100
+ href: href,
101
+ hrefAttrs: hrefAttrs,
102
+ tokens: getPressableCardTokens,
103
+ ref: ref,
104
+ ...selectProps(unusedRest),
105
+ children: cardState => {
106
+ const {
107
+ borderRadius,
108
+ borderWidth
109
+ } = getPressableCardTokens(cardState);
110
+ // Stop content jumping around as border size changes
111
+ const borderOffset = borderWidth - theme.tokens.borderWidth;
112
+ const fullBleedBorderRadius = (0, _FullBleedContent.getFullBleedBorderRadius)(borderRadius + borderOffset, fullBleedContentPosition);
113
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_componentsBase.StackView, {
114
+ direction: contentStackDirection,
115
+ tokens: {
116
+ justifyContent: 'space-between',
117
+ flexGrow: 1
118
+ },
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_componentsBase.Box, {
120
+ horizontal: {
121
+ xs: 4,
122
+ lg: 5,
123
+ options: {
124
+ subtract: borderOffset
125
+ }
126
+ },
127
+ vertical: {
128
+ xs: 5,
129
+ lg: 7,
130
+ options: {
131
+ subtract: borderOffset
132
+ }
133
+ },
134
+ children: [Boolean(tag) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
135
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Typography, {
136
+ variant: {
137
+ size: 'eyebrow'
138
+ },
139
+ children: tag
140
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Spacer, {
141
+ space: 2
142
+ })]
143
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Typography, {
144
+ variant: {
145
+ size: 'h4'
146
+ },
147
+ children: title
148
+ }), Boolean(footer) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
149
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Spacer, {
150
+ space: 2
151
+ }), typeof footer === 'string' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Typography, {
152
+ variant: {
153
+ size: 'small'
154
+ },
155
+ children: footer
156
+ }) : footer]
157
+ })]
158
+ }), Boolean(fullBleedContentProps.src || fullBleedContentProps.content) && /*#__PURE__*/(0, _jsxRuntime.jsx)(FullBleedOffsetOuter, {
159
+ borderOffset: borderOffset,
160
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(FullBleedOffsetInner, {
161
+ borderOffset: borderOffset,
162
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FullBleedContent.default, {
163
+ borderRadius: fullBleedBorderRadius,
164
+ ...fullBleedContentProps
165
+ })
166
+ })
167
+ })]
168
+ });
169
+ }
170
+ });
171
+ });
172
+ PreviewCard.displayName = 'PreviewCard';
173
+
174
+ // Provide standard author/date footer as a preset with the export
175
+ PreviewCard.AuthorDate = _AuthorDate.default;
176
+ PreviewCard.propTypes = {
177
+ ...selectedSystemPropTypes,
178
+ tokens: (0, _componentsBase.getTokensPropType)('PreviewCard'),
179
+ /**
180
+ * The URL of the story to be navigated to. Note that `Video` component does not play well when used within
181
+ * a `PreviewCard` with `href` prop set (the volume and progress sliders can be clicked but are not draggable).
182
+ * Please use `onPress` prop instead `href` to organize navigation in cases like this.
183
+ *
184
+ * @see https://github.com/telus/allium-design-system/issues/6
185
+ */
186
+ href: _propTypes.default.string,
187
+ /**
188
+ * Optional function to be called on press e.g. for within-page navigation.
189
+ */
190
+ onPress: _propTypes.default.func,
191
+ /**
192
+ * Text stating the category of the content.
193
+ */
194
+ tag: _propTypes.default.string,
195
+ /**
196
+ * Section containing additional information, such as author and date.
197
+ * Use `<PreviewCard.AuthorDate author={...} date={...} />` here for author and date.
198
+ */
199
+ footer: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.string]),
200
+ /**
201
+ * Text stating the title or headline of the story.
202
+ */
203
+ title: _propTypes.default.string.isRequired,
204
+ /**
205
+ * Full bleed image to be placed on the card, deprecated in favor of `fullBleedContent`.
206
+ *
207
+ * @deprecated
208
+ */
209
+ fullBleedImage: _propTypes.default.exact(_FullBleedContent.default.propTypes || {}),
210
+ /**
211
+ * Full bleed content to be placed on the card.
212
+ */
213
+ fullBleedContent: _propTypes.default.exact(_FullBleedContent.default.propTypes || {})
214
+ };
215
+ var _default = exports.default = (0, _componentsBase.withLinkRouter)(PreviewCard);
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _PreviewCard = _interopRequireDefault(require("./PreviewCard"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = _PreviewCard.default;
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _componentsBase = require("@telus-uds/components-base");
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+ var _FootnoteLink = _interopRequireDefault(require("../Footnote/FootnoteLink"));
12
+ var _tokens = _interopRequireDefault(require("./tokens"));
13
+ var _utils = require("../utils");
14
+ var _dictionary = _interopRequireDefault(require("./dictionary"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ const [selectProps, selectedSystemPropTypes] = (0, _componentsBase.selectSystemProps)([_utils.htmlAttrs, _componentsBase.a11yProps]);
18
+ const PriceLockupContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
19
+ displayName: "PriceLockup__PriceLockupContainer",
20
+ componentId: "components-web__sc-1x6duay-0"
21
+ })(["align-items:", ";display:flex;flex-direction:column;width:fit-content;"], _ref => {
22
+ let {
23
+ alignItemsText
24
+ } = _ref;
25
+ return alignItemsText;
26
+ });
27
+ const PriceContainer = /*#__PURE__*/_styledComponents.default.div.attrs({
28
+ 'aria-hidden': 'true'
29
+ }).withConfig({
30
+ displayName: "PriceLockup__PriceContainer",
31
+ componentId: "components-web__sc-1x6duay-1"
32
+ })(["display:flex;margin-bottom:", ";"], _ref2 => {
33
+ let {
34
+ priceMarginBottom
35
+ } = _ref2;
36
+ return priceMarginBottom;
37
+ });
38
+ const FootnoteContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
39
+ displayName: "PriceLockup__FootnoteContainer",
40
+ componentId: "components-web__sc-1x6duay-2"
41
+ })(["display:flex;margin-top:", ";gap:", ";"], _ref3 => {
42
+ let {
43
+ footnoteMarginTop
44
+ } = _ref3;
45
+ return footnoteMarginTop;
46
+ }, _ref4 => {
47
+ let {
48
+ footnoteGap
49
+ } = _ref4;
50
+ return footnoteGap;
51
+ });
52
+ const BottomTextContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
53
+ displayName: "PriceLockup__BottomTextContainer",
54
+ componentId: "components-web__sc-1x6duay-3"
55
+ })(["margin-top:", ";"], _ref5 => {
56
+ let {
57
+ bottomTextMarginTop
58
+ } = _ref5;
59
+ return bottomTextMarginTop;
60
+ });
61
+ const BottomLinksContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
62
+ displayName: "PriceLockup__BottomLinksContainer",
63
+ componentId: "components-web__sc-1x6duay-4"
64
+ })(["align-self:center;margin-left:", ";"], _ref6 => {
65
+ let {
66
+ bottomLinksMarginLeft
67
+ } = _ref6;
68
+ return bottomLinksMarginLeft;
69
+ });
70
+ const TopTextContainer = /*#__PURE__*/_styledComponents.default.div.attrs({
71
+ 'aria-hidden': 'true'
72
+ }).withConfig({
73
+ displayName: "PriceLockup__TopTextContainer",
74
+ componentId: "components-web__sc-1x6duay-5"
75
+ })(["margin-bottom:", ";"], _ref7 => {
76
+ let {
77
+ topTextMarginBottom
78
+ } = _ref7;
79
+ return topTextMarginBottom;
80
+ });
81
+ const PriceTextContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
82
+ displayName: "PriceLockup__PriceTextContainer",
83
+ componentId: "components-web__sc-1x6duay-6"
84
+ })(["display:flex;flex-direction:", ";"], _ref8 => {
85
+ let {
86
+ ratePosition
87
+ } = _ref8;
88
+ return ratePosition === 'bottom' ? 'column' : 'row';
89
+ });
90
+ const RateContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
91
+ displayName: "PriceLockup__RateContainer",
92
+ componentId: "components-web__sc-1x6duay-7"
93
+ })(["display:flex;"]);
94
+ const RateTextContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
95
+ displayName: "PriceLockup__RateTextContainer",
96
+ componentId: "components-web__sc-1x6duay-8"
97
+ })(["align-self:", ";"], _ref9 => {
98
+ let {
99
+ ratePosition
100
+ } = _ref9;
101
+ return ratePosition === 'bottom' ? 'flex-start' : 'flex-end';
102
+ });
103
+ const StrikeThroughContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
104
+ displayName: "PriceLockup__StrikeThroughContainer",
105
+ componentId: "components-web__sc-1x6duay-9"
106
+ })(["display:flex;position:relative;align-items:center;::before{content:'';width:100%;top:", ";height:", ";background:", ";position:absolute;}"], _ref10 => {
107
+ let {
108
+ strikeThroughPosition
109
+ } = _ref10;
110
+ return `${strikeThroughPosition}px`;
111
+ }, _ref11 => {
112
+ let {
113
+ strikeThroughHeight
114
+ } = _ref11;
115
+ return `${strikeThroughHeight}px`;
116
+ }, _ref12 => {
117
+ let {
118
+ strikeThroughColor
119
+ } = _ref12;
120
+ return strikeThroughColor;
121
+ });
122
+ const TypographyContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
123
+ displayName: "PriceLockup__TypographyContainer",
124
+ componentId: "components-web__sc-1x6duay-10"
125
+ })(["display:flex;padding-top:", ";"], _ref13 => {
126
+ let {
127
+ paddingTop
128
+ } = _ref13;
129
+ return `${paddingTop || 0}px`;
130
+ });
131
+ const selectFootnoteLinkStyles = _ref14 => {
132
+ let {
133
+ footnoteLinkColor,
134
+ footnoteLinkFontName,
135
+ footnoteLinkFontWeight,
136
+ footnoteLinkLineHeight
137
+ } = _ref14;
138
+ return {
139
+ color: footnoteLinkColor,
140
+ fontName: footnoteLinkFontName,
141
+ fontWeight: footnoteLinkFontWeight,
142
+ lineHeight: footnoteLinkLineHeight
143
+ };
144
+ };
145
+ const selectStrikeThroughTokens = _ref15 => {
146
+ let {
147
+ strikeThroughPosition,
148
+ strikeThroughHeight,
149
+ strikeThroughColor
150
+ } = _ref15;
151
+ return {
152
+ strikeThroughHeight,
153
+ strikeThroughPosition,
154
+ strikeThroughColor
155
+ };
156
+ };
157
+ const PriceLockup = /*#__PURE__*/_react.default.forwardRef((_ref16, ref) => {
158
+ let {
159
+ size = 'medium',
160
+ signDirection = 'left',
161
+ footnoteLinks = [],
162
+ topText,
163
+ price,
164
+ currencySymbol = '$',
165
+ rateText,
166
+ ratePosition = 'right',
167
+ bottomText,
168
+ onClickFootnote,
169
+ strikeThrough,
170
+ a11yText,
171
+ tokens: priceLockupTokens,
172
+ variant = {},
173
+ copy = 'en',
174
+ dictionary = _dictionary.default,
175
+ ...rest
176
+ } = _ref16;
177
+ const viewport = (0, _componentsBase.useViewport)();
178
+ const {
179
+ footnoteMarginTop,
180
+ footnoteGap,
181
+ bottomTextMarginTop,
182
+ priceMarginBottom,
183
+ bottomLinksMarginLeft,
184
+ topTextMarginBottom,
185
+ fontColor,
186
+ dividerColor,
187
+ footnoteLinkFontSize,
188
+ alignItemsText,
189
+ ...themeTokens
190
+ } = (0, _componentsBase.useThemeTokens)('PriceLockup', priceLockupTokens, {
191
+ ...variant,
192
+ size
193
+ }, {
194
+ viewport,
195
+ strikeThrough
196
+ });
197
+ const typographyTokens = (0, _tokens.default)(themeTokens);
198
+ const priceString = String(price);
199
+ const lastDotPosition = priceString.lastIndexOf('.');
200
+ const lastCommaPosition = priceString.lastIndexOf(',');
201
+ const [separator, separatorPosition] = lastDotPosition > lastCommaPosition ? ['.', lastDotPosition] : [',', lastCommaPosition];
202
+
203
+ // If the separator is at the fourth character from the end of the string or more, it's most probably
204
+ // a part of the amount, and the cents are not included in the price string
205
+ const hasCents = separatorPosition !== -1 && separatorPosition >= priceString.length - 3;
206
+ const amount = hasCents ? priceString.substring(0, separatorPosition) : priceString;
207
+ const cents = hasCents ? priceString.substring(separatorPosition + 1) : null;
208
+ const renderTypography = (value, tokens, position) => {
209
+ const {
210
+ paddingTop,
211
+ ...restOfTokens
212
+ } = tokens;
213
+ const customProps = position === 'bottom' ? {
214
+ variant: {
215
+ size: 'micro'
216
+ },
217
+ tokens: {
218
+ color: fontColor
219
+ }
220
+ } : {
221
+ tokens: {
222
+ ...restOfTokens,
223
+ color: fontColor
224
+ }
225
+ };
226
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TypographyContainer, {
227
+ paddingTop: paddingTop,
228
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Typography, {
229
+ ...customProps,
230
+ children: value
231
+ })
232
+ });
233
+ };
234
+ const renderCurrencySymbol = () => renderTypography(`${currencySymbol}`, typographyTokens.dollarSign);
235
+ const renderFootnoteLinks = () => footnoteLinks && footnoteLinks.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_FootnoteLink.default, {
236
+ fontSize: footnoteLinkFontSize,
237
+ tokens: selectFootnoteLinkStyles(themeTokens),
238
+ number: footnoteLinks,
239
+ onClick: onClickFootnote
240
+ }) : null;
241
+ const renderAmount = () => {
242
+ const amountComponent = renderTypography(amount, typographyTokens.amount);
243
+ if (strikeThrough) {
244
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
245
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.A11yText, {
246
+ text: a11yText
247
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(StrikeThroughContainer, {
248
+ ...selectStrikeThroughTokens(themeTokens),
249
+ children: amountComponent
250
+ })]
251
+ });
252
+ }
253
+ return amountComponent;
254
+ };
255
+ const renderPrice = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
256
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(PriceContainer, {
257
+ priceMarginBottom: `${priceMarginBottom}px`,
258
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(PriceTextContainer, {
259
+ ratePosition: ratePosition,
260
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(RateContainer, {
261
+ children: [signDirection === 'left' && renderCurrencySymbol(), renderAmount(), cents && renderTypography(`${separator}${cents}`, typographyTokens.cents), signDirection === 'right' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
262
+ children: ["\xA0", renderCurrencySymbol()]
263
+ })]
264
+ }), rateText && /*#__PURE__*/(0, _jsxRuntime.jsx)(RateTextContainer, {
265
+ ratePosition: ratePosition,
266
+ children: renderTypography(rateText, typographyTokens.rate, ratePosition)
267
+ })]
268
+ }), !bottomText && footnoteLinks.length <= 3 && /*#__PURE__*/(0, _jsxRuntime.jsx)(BottomLinksContainer, {
269
+ bottomLinksMarginLeft: `${bottomLinksMarginLeft}px`,
270
+ children: renderFootnoteLinks()
271
+ })]
272
+ }), !bottomText && footnoteLinks.length > 3 && renderFootnoteLinks()]
273
+ });
274
+ const renderFootnoteContent = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
275
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(FootnoteContainer, {
276
+ footnoteMarginTop: `${footnoteMarginTop}px`,
277
+ footnoteGap: `${footnoteGap}px`,
278
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BottomTextContainer, {
279
+ bottomTextMarginTop: `${bottomTextMarginTop}px`,
280
+ children: renderTypography(bottomText, typographyTokens.bottomText)
281
+ }), footnoteLinks.length <= 3 && renderFootnoteLinks()]
282
+ }), footnoteLinks.length > 3 && renderFootnoteLinks()]
283
+ });
284
+ if (strikeThrough && !a11yText) {
285
+ (0, _utils.warn)('PriceLockup', 'a11yText must be provided with strikethrough pricing');
286
+ }
287
+ const getAriaContent = () => {
288
+ const {
289
+ dictionaryPrice = price,
290
+ priceWithCents,
291
+ rate
292
+ } = dictionary[copy];
293
+ let ariaLabel = hasCents ? priceWithCents.replace('%{amount}', amount).replace('%{cents}', cents).replace('%{currency}', currencySymbol) : dictionaryPrice.replace('%{amount}', amount).replace('%{currency}', currencySymbol);
294
+ if (!ariaLabel.includes(currencySymbol)) {
295
+ ariaLabel = `${ariaLabel} ${currencySymbol}`;
296
+ }
297
+ if (rateText) {
298
+ ariaLabel += ` ${rate.replace('%{rateText}', rateText.replace('/', ''))}`;
299
+ }
300
+ return ariaLabel;
301
+ };
302
+ const ariaLabel = selectProps(rest)['aria-label'] ?? getAriaContent();
303
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(PriceLockupContainer, {
304
+ ...selectProps(rest),
305
+ alignItemsText: alignItemsText,
306
+ ref: ref,
307
+ role: "group",
308
+ "aria-label": ariaLabel,
309
+ children: [topText && /*#__PURE__*/(0, _jsxRuntime.jsx)(TopTextContainer, {
310
+ topTextMarginBottom: `${topTextMarginBottom}px`,
311
+ children: renderTypography(topText, typographyTokens.topText)
312
+ }), renderPrice(), bottomText && /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Divider, {
313
+ testID: "price-lockup-divider",
314
+ role: "separator",
315
+ tokens: {
316
+ color: dividerColor ?? 'rgba(0, 0, 0, 0)'
317
+ }
318
+ }), bottomText && renderFootnoteContent()]
319
+ });
320
+ });
321
+ PriceLockup.displayName = 'PriceLockup';
322
+
323
+ // If a language dictionary entry is provided, it must contain every key
324
+ const dictionaryContentShape = _propTypes.default.shape({
325
+ price: _propTypes.default.string.isRequired,
326
+ priceWithCents: _propTypes.default.string.isRequired,
327
+ rate: _propTypes.default.string.isRequired
328
+ });
329
+ PriceLockup.propTypes = {
330
+ ...selectedSystemPropTypes,
331
+ /**
332
+ * Size of the component
333
+ *
334
+ * Micro for mini cart pricing, small for pricing in product catalogue pages, medium for pricing in product comparison cards and large for pricing in banners and promo cards
335
+ */
336
+ size: _propTypes.default.oneOf(['micro', 'small', 'medium', 'large']),
337
+ /**
338
+ * If currency symbol other than `$` to be used
339
+ */
340
+ currencySymbol: _propTypes.default.string,
341
+ /**
342
+ * Shows additional info above the price
343
+ */
344
+ topText: _propTypes.default.string,
345
+ /**
346
+ * Monetary value (including decimals separated by ".")
347
+ */
348
+ price: _propTypes.default.string.isRequired,
349
+ /**
350
+ * Shows month/year unit
351
+ */
352
+ rateText: _propTypes.default.string,
353
+ /**
354
+ * Shows additional info below the price with a `Divider`
355
+ */
356
+ bottomText: _propTypes.default.string,
357
+ /**
358
+ * Displays which side the currency should apperar (left, right)
359
+ */
360
+ signDirection: _propTypes.default.oneOf(['right', 'left']),
361
+ /**
362
+ * Displays where the rate should apperar (bottom, right)
363
+ */
364
+ ratePosition: _propTypes.default.oneOf(['right', 'bottom']),
365
+ /**
366
+ * Shows additional link for context
367
+ */
368
+ footnoteLinks: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])),
369
+ /**
370
+ * Function to be called when a footnote link is clicked
371
+ */
372
+ onClickFootnote: _propTypes.default.func,
373
+ /**
374
+ * To show price savings comparison
375
+ */
376
+ strikeThrough: _propTypes.default.bool,
377
+ /**
378
+ * To provide a11y text for `PriceLockup` component
379
+ *
380
+ * **Note:** a11yText will override strikethrough price, so it must include price (ie. "was 50 dollars per month")
381
+ */
382
+ a11yText: _propTypes.default.string,
383
+ /**
384
+ * Select English or French copy for the accessible label.
385
+ */
386
+ copy: _propTypes.default.oneOf(['en', 'fr']),
387
+ /* Custom dictionary containing the labels
388
+ */
389
+ dictionary: _propTypes.default.shape({
390
+ en: dictionaryContentShape,
391
+ fr: dictionaryContentShape
392
+ }),
393
+ /**
394
+ * `PriceLockup` tokens
395
+ */
396
+ tokens: (0, _componentsBase.getTokensPropType)('PriceLockup')
397
+ };
398
+ var _default = exports.default = PriceLockup;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = exports.default = {
8
+ en: {
9
+ price: '%{amount} %{currency}',
10
+ priceWithCents: '%{amount} %{currency} and %{cents} cents',
11
+ rate: 'per %{rateText}'
12
+ },
13
+ fr: {
14
+ price: '%{amount} %{currency}',
15
+ priceWithCents: '%{amount} %{currency} et %{cents} centimes',
16
+ rate: 'par %{rateText}'
17
+ }
18
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _PriceLockup = _interopRequireDefault(require("./PriceLockup"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = _PriceLockup.default;