@primer/react-brand 0.72.0-rc.f8b72452 → 0.72.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 (506) hide show
  1. package/docs/components/ButtonGroup/react.md +29 -8
  2. package/docs/components/Hero/react.md +82 -18
  3. package/docs/components/River/react.md +46 -13
  4. package/docs/components/index.md +1 -1
  5. package/docs/getting-started/index.md +9 -3
  6. package/docs/index.md +3 -3
  7. package/esm/ActionMenu/ActionMenu.d.ts +1 -1
  8. package/esm/ActionMenu/ActionMenu.d.ts.map +1 -1
  9. package/esm/ActionMenu/ActionMenu.js +60 -60
  10. package/esm/ActionMenu/ActionMenu.js.map +1 -1
  11. package/esm/AnchorNav/AnchorNav.js +20 -20
  12. package/esm/Avatar/Avatar.module-DUQdD7On.css +1 -0
  13. package/esm/Avatar/Avatar.module.js +1 -1
  14. package/esm/Avatar/Avatar.module.js.map +1 -1
  15. package/esm/BreakoutBanner/{BreakoutBanner.module-DGBSJFNJ.css → BreakoutBanner.module-gfmzcUSU.css} +1 -1
  16. package/esm/BreakoutBanner/BreakoutBanner.module.js +1 -1
  17. package/esm/BreakoutBanner/BreakoutBanner.module.js.map +1 -1
  18. package/esm/ButtonGroup/ButtonGroup.d.ts +3 -1
  19. package/esm/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  20. package/esm/ButtonGroup/ButtonGroup.js +24 -16
  21. package/esm/ButtonGroup/ButtonGroup.js.map +1 -1
  22. package/esm/CTABanner/CTABanner.js +6 -6
  23. package/esm/CTABanner/CTABanner.module-CDLOww8c.css +1 -0
  24. package/esm/CTABanner/CTABanner.module.js +1 -1
  25. package/esm/CTABanner/CTABanner.module.js.map +1 -1
  26. package/esm/Card/Card.js +5 -5
  27. package/esm/EyebrowBanner/EyebrowBanner.module-DYeTmaU9.css +1 -0
  28. package/esm/EyebrowBanner/EyebrowBanner.module.js +1 -1
  29. package/esm/EyebrowBanner/EyebrowBanner.module.js.map +1 -1
  30. package/esm/Hero/Hero.d.ts +17 -4
  31. package/esm/Hero/Hero.d.ts.map +1 -1
  32. package/esm/Hero/Hero.js +103 -98
  33. package/esm/Hero/Hero.js.map +1 -1
  34. package/esm/Hero/Hero.module-BfrAFYlo.css +1 -0
  35. package/esm/Hero/Hero.module.js +8 -5
  36. package/esm/Hero/Hero.module.js.map +1 -1
  37. package/esm/Hero/HeroContext.d.ts +7 -5
  38. package/esm/Hero/HeroContext.d.ts.map +1 -1
  39. package/esm/Hero/HeroContext.js +3 -9
  40. package/esm/Hero/HeroContext.js.map +1 -1
  41. package/esm/Hero/sub-components/HeroButtonGroup.d.ts +5 -0
  42. package/esm/Hero/sub-components/HeroButtonGroup.d.ts.map +1 -0
  43. package/esm/Hero/sub-components/HeroButtonGroup.js +28 -0
  44. package/esm/Hero/sub-components/HeroButtonGroup.js.map +1 -0
  45. package/esm/Hero/sub-components/HeroImage.d.ts +7 -4
  46. package/esm/Hero/sub-components/HeroImage.d.ts.map +1 -1
  47. package/esm/Hero/sub-components/HeroImage.js +6 -6
  48. package/esm/Hero/sub-components/HeroImage.js.map +1 -1
  49. package/esm/Hero/sub-components/HeroVideo.d.ts +16 -4
  50. package/esm/Hero/sub-components/HeroVideo.d.ts.map +1 -1
  51. package/esm/Hero/sub-components/HeroVideo.js +15 -15
  52. package/esm/Hero/sub-components/HeroVideo.js.map +1 -1
  53. package/esm/Hero/sub-components/index.d.ts +2 -0
  54. package/esm/Hero/sub-components/index.d.ts.map +1 -1
  55. package/esm/Link/Link.js +5 -5
  56. package/esm/LogoSuite/LogoSuite.js +11 -11
  57. package/esm/LogoSuite/LogoSuite.module-BCbX-lfy.css +1 -0
  58. package/esm/LogoSuite/LogoSuite.module.js +1 -1
  59. package/esm/LogoSuite/LogoSuite.module.js.map +1 -1
  60. package/esm/MinimalFooter/MinimalFooter.js +6 -6
  61. package/esm/MinimalFooter/{MinimalFooter.module-DPMYigso.css → MinimalFooter.module-Cl2g38SO.css} +1 -1
  62. package/esm/MinimalFooter/MinimalFooter.module.js +1 -1
  63. package/esm/MinimalFooter/MinimalFooter.module.js.map +1 -1
  64. package/esm/PricingOptions/PricingOptions.js +18 -18
  65. package/esm/PricingOptions/{PricingOptions.module-Cm3Oq9u6.css → PricingOptions.module-CgPKaZAm.css} +1 -1
  66. package/esm/PricingOptions/PricingOptions.module.js +1 -1
  67. package/esm/PricingOptions/PricingOptions.module.js.map +1 -1
  68. package/esm/SectionIntro/SectionIntro.module-BbIW9pPO.css +1 -0
  69. package/esm/SectionIntro/SectionIntro.module.js +1 -1
  70. package/esm/SectionIntro/SectionIntro.module.js.map +1 -1
  71. package/esm/Statistic/Statistic.d.ts.map +1 -1
  72. package/esm/Statistic/Statistic.js +1 -1
  73. package/esm/Statistic/Statistic.js.map +1 -1
  74. package/esm/Statistic/{Statistic.module-Dqb6n1GX.css → Statistic.module-DvdiSbXk.css} +1 -1
  75. package/esm/Statistic/Statistic.module.js +2 -1
  76. package/esm/Statistic/Statistic.module.js.map +1 -1
  77. package/esm/SubNav/SubNav.js +30 -30
  78. package/esm/SubdomainNavBar/NavigationVisbilityObserver.js +21 -21
  79. package/esm/SubdomainNavBar/SubdomainNavBar.js +83 -83
  80. package/esm/Testimonial/Testimonial.js +1 -1
  81. package/esm/Testimonial/Testimonial.js.map +1 -1
  82. package/esm/Testimonial/Testimonial.module-BEBpUSD7.css +1 -0
  83. package/esm/Testimonial/Testimonial.module.js +2 -1
  84. package/esm/Testimonial/Testimonial.module.js.map +1 -1
  85. package/esm/VideoPlayer/VideoPlayer.js +4 -4
  86. package/esm/css/reset-CSgu34_f.css +1 -0
  87. package/esm/css/stylesheets.js +1 -1
  88. package/esm/index.esm.js +68 -68
  89. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/colors/global-with-modes-Bdet_nBw.css +1 -0
  90. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-DHn1_SEa.css +1 -0
  91. package/esm/river/River/River.d.ts +17 -3
  92. package/esm/river/River/River.d.ts.map +1 -1
  93. package/esm/river/River/River.js +30 -11
  94. package/esm/river/River/River.js.map +1 -1
  95. package/esm/river/River/index.d.ts +2 -2
  96. package/esm/river/River/index.d.ts.map +1 -1
  97. package/esm/river/RiverAccordion/RiverAccordion.js +1 -1
  98. package/esm/river/RiverBreakout/RiverBreakout.d.ts +2 -2
  99. package/esm/river/RiverBreakout/RiverBreakout.d.ts.map +1 -1
  100. package/esm/river/RiverBreakout/RiverBreakout.js +18 -18
  101. package/esm/river/RiverBreakout/RiverBreakout.js.map +1 -1
  102. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts +3 -3
  103. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts.map +1 -1
  104. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js +2 -2
  105. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js.map +1 -1
  106. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module-CB2SZhbE.css +1 -0
  107. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module.js +1 -1
  108. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module.js.map +1 -1
  109. package/esm/river/RiverStoryScroll/RiverStoryScroll.module-kez68wMZ.css +1 -0
  110. package/esm/river/RiverStoryScroll/RiverStoryScroll.module.js +1 -1
  111. package/esm/river/RiverStoryScroll/RiverStoryScroll.module.js.map +1 -1
  112. package/esm/river/river-shared.module-5fefR7ip.css +1 -0
  113. package/esm/river/river-shared.module.js +10 -2
  114. package/esm/river/river-shared.module.js.map +1 -1
  115. package/lib/ActionMenu/ActionMenu.d.ts +1 -1
  116. package/lib/ButtonGroup/ButtonGroup.d.ts +3 -1
  117. package/lib/Hero/Hero.d.ts +17 -4
  118. package/lib/Hero/HeroContext.d.ts +7 -5
  119. package/lib/Hero/sub-components/HeroButtonGroup.d.ts +4 -0
  120. package/lib/Hero/sub-components/HeroImage.d.ts +7 -4
  121. package/lib/Hero/sub-components/HeroVideo.d.ts +16 -4
  122. package/lib/Hero/sub-components/index.d.ts +2 -0
  123. package/lib/css/main.css +5733 -5548
  124. package/lib/design-tokens/css/tokens/base/colors/color-scales-with-modes.css +1 -1
  125. package/lib/design-tokens/css/tokens/base/colors/light.css +1 -1
  126. package/lib/design-tokens/css/tokens/base/size/size.css +1 -1
  127. package/lib/design-tokens/css/tokens/base/typography/typography.css +1 -1
  128. package/lib/design-tokens/css/tokens/functional/animation/base.css +1 -1
  129. package/lib/design-tokens/css/tokens/functional/colors/global-with-modes.css +4 -4
  130. package/lib/design-tokens/css/tokens/functional/colors/global.css +3 -3
  131. package/lib/design-tokens/css/tokens/functional/components/accordion/colors-with-modes.css +1 -1
  132. package/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css +1 -1
  133. package/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css +1 -1
  134. package/lib/design-tokens/css/tokens/functional/components/bento/base.css +1 -1
  135. package/lib/design-tokens/css/tokens/functional/components/blinking-cursor/colors-with-modes.css +1 -1
  136. package/lib/design-tokens/css/tokens/functional/components/breadcrumbs/colors-with-modes.css +1 -1
  137. package/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes.css +1 -1
  138. package/lib/design-tokens/css/tokens/functional/components/card/base.css +1 -1
  139. package/lib/design-tokens/css/tokens/functional/components/card/colors-with-modes.css +1 -1
  140. package/lib/design-tokens/css/tokens/functional/components/card/colors.css +1 -1
  141. package/lib/design-tokens/css/tokens/functional/components/comparison-table/colors-with-modes.css +1 -1
  142. package/lib/design-tokens/css/tokens/functional/components/comparison-table/comparison-table.css +1 -1
  143. package/lib/design-tokens/css/tokens/functional/components/control/colors-with-modes.css +1 -1
  144. package/lib/design-tokens/css/tokens/functional/components/cta-banner/colors-with-modes.css +1 -1
  145. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/colors-with-modes.css +1 -1
  146. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/eyebrow-banner.css +1 -1
  147. package/lib/design-tokens/css/tokens/functional/components/faq/base.css +1 -1
  148. package/lib/design-tokens/css/tokens/functional/components/faq/colors-with-modes.css +1 -1
  149. package/lib/design-tokens/css/tokens/functional/components/faq/colors.css +1 -1
  150. package/lib/design-tokens/css/tokens/functional/components/faq/faq.css +1 -1
  151. package/lib/design-tokens/css/tokens/functional/components/footer/colors-with-modes.css +1 -1
  152. package/lib/design-tokens/css/tokens/functional/components/footer/colors.css +1 -1
  153. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/base.css +1 -1
  154. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/colors-with-modes.css +1 -1
  155. package/lib/design-tokens/css/tokens/functional/components/grid/colors-with-modes.css +1 -1
  156. package/lib/design-tokens/css/tokens/functional/components/grid/colors.css +1 -1
  157. package/lib/design-tokens/css/tokens/functional/components/grid/grid.css +1 -1
  158. package/lib/design-tokens/css/tokens/functional/components/hero/base.css +1 -1
  159. package/lib/design-tokens/css/tokens/functional/components/icon/colors-with-modes.css +1 -1
  160. package/lib/design-tokens/css/tokens/functional/components/icon/colors.css +1 -1
  161. package/lib/design-tokens/css/tokens/functional/components/ide/base.css +1 -1
  162. package/lib/design-tokens/css/tokens/functional/components/ide/colors-with-modes.css +1 -1
  163. package/lib/design-tokens/css/tokens/functional/components/image/base.css +1 -1
  164. package/lib/design-tokens/css/tokens/functional/components/inline-link/base.css +1 -1
  165. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors-with-modes.css +1 -1
  166. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors.css +1 -1
  167. package/lib/design-tokens/css/tokens/functional/components/label/colors-with-modes.css +1 -1
  168. package/lib/design-tokens/css/tokens/functional/components/label/colors.css +1 -1
  169. package/lib/design-tokens/css/tokens/functional/components/link/colors-with-modes.css +1 -1
  170. package/lib/design-tokens/css/tokens/functional/components/link/colors.css +1 -1
  171. package/lib/design-tokens/css/tokens/functional/components/logosuite/base.css +1 -1
  172. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors-with-modes.css +1 -1
  173. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors.css +1 -1
  174. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors-with-modes.css +1 -1
  175. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors.css +1 -1
  176. package/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes.css +1 -1
  177. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors-with-modes.css +1 -1
  178. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors.css +1 -1
  179. package/lib/design-tokens/css/tokens/functional/components/pricing-options/pricing-options.css +1 -1
  180. package/lib/design-tokens/css/tokens/functional/components/prose/base.css +1 -1
  181. package/lib/design-tokens/css/tokens/functional/components/prose/colors-with-modes.css +1 -1
  182. package/lib/design-tokens/css/tokens/functional/components/river/base.css +1 -1
  183. package/lib/design-tokens/css/tokens/functional/components/river/river.css +8 -1
  184. package/lib/design-tokens/css/tokens/functional/components/river-story-scroll/colors-with-modes.css +1 -1
  185. package/lib/design-tokens/css/tokens/functional/components/section/section.css +1 -1
  186. package/lib/design-tokens/css/tokens/functional/components/statistic/base.css +1 -1
  187. package/lib/design-tokens/css/tokens/functional/components/sub-nav/base.css +1 -1
  188. package/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes.css +1 -1
  189. package/lib/design-tokens/css/tokens/functional/components/subdomain-nav-bar/colors-with-modes.css +1 -1
  190. package/lib/design-tokens/css/tokens/functional/components/tabs/base.css +1 -1
  191. package/lib/design-tokens/css/tokens/functional/components/tabs/colors-with-modes.css +1 -1
  192. package/lib/design-tokens/css/tokens/functional/components/tabs/colors.css +1 -1
  193. package/lib/design-tokens/css/tokens/functional/components/testimonial/base.css +1 -1
  194. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css +1 -1
  195. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors.css +1 -1
  196. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes.css +1 -1
  197. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors.css +1 -1
  198. package/lib/design-tokens/css/tokens/functional/components/tiles/colors-with-modes.css +1 -1
  199. package/lib/design-tokens/css/tokens/functional/components/timeline/base.css +1 -1
  200. package/lib/design-tokens/css/tokens/functional/components/timeline/colors-with-modes.css +1 -1
  201. package/lib/design-tokens/css/tokens/functional/components/timeline/colors.css +1 -1
  202. package/lib/design-tokens/css/tokens/functional/components/token/colors-with-modes.css +1 -1
  203. package/lib/design-tokens/css/tokens/functional/components/token/colors.css +1 -1
  204. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors-with-modes.css +1 -1
  205. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors.css +1 -1
  206. package/lib/design-tokens/css/tokens/functional/components/video-player/base.css +1 -1
  207. package/lib/design-tokens/css/tokens/functional/components/video-player/colors-with-modes.css +1 -1
  208. package/lib/design-tokens/css/tokens/functional/size/border.css +1 -1
  209. package/lib/design-tokens/css/tokens/functional/size/breakpoints.css +1 -1
  210. package/lib/design-tokens/css/tokens/functional/size/size-coarse.css +1 -1
  211. package/lib/design-tokens/css/tokens/functional/size/size-fine.css +1 -1
  212. package/lib/design-tokens/css/tokens/functional/size/size.css +1 -1
  213. package/lib/design-tokens/css/tokens/functional/size/viewport.css +1 -1
  214. package/lib/design-tokens/css/tokens/functional/typography/typography-responsive.css +1 -1
  215. package/lib/design-tokens/css/tokens/functional/typography/typography.css +1 -1
  216. package/lib/design-tokens/js/module/tokens/base/colors/light.js +1 -1
  217. package/lib/design-tokens/js/module/tokens/base/size/size.js +1 -1
  218. package/lib/design-tokens/js/module/tokens/base/typography/typography.js +1 -1
  219. package/lib/design-tokens/js/module/tokens/functional/animation/base.js +1 -1
  220. package/lib/design-tokens/js/module/tokens/functional/colors/global.js +4 -4
  221. package/lib/design-tokens/js/module/tokens/functional/components/bento/base.js +1 -1
  222. package/lib/design-tokens/js/module/tokens/functional/components/card/base.js +1 -1
  223. package/lib/design-tokens/js/module/tokens/functional/components/card/colors.js +1 -1
  224. package/lib/design-tokens/js/module/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  225. package/lib/design-tokens/js/module/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  226. package/lib/design-tokens/js/module/tokens/functional/components/faq/base.js +1 -1
  227. package/lib/design-tokens/js/module/tokens/functional/components/faq/colors.js +1 -1
  228. package/lib/design-tokens/js/module/tokens/functional/components/faq/faq.js +1 -1
  229. package/lib/design-tokens/js/module/tokens/functional/components/footer/colors.js +1 -1
  230. package/lib/design-tokens/js/module/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  231. package/lib/design-tokens/js/module/tokens/functional/components/grid/colors.js +1 -1
  232. package/lib/design-tokens/js/module/tokens/functional/components/grid/grid.js +1 -1
  233. package/lib/design-tokens/js/module/tokens/functional/components/hero/base.js +1 -1
  234. package/lib/design-tokens/js/module/tokens/functional/components/icon/colors.js +1 -1
  235. package/lib/design-tokens/js/module/tokens/functional/components/ide/base.js +1 -1
  236. package/lib/design-tokens/js/module/tokens/functional/components/image/base.js +1 -1
  237. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/base.js +1 -1
  238. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/colors.js +1 -1
  239. package/lib/design-tokens/js/module/tokens/functional/components/label/colors.js +1 -1
  240. package/lib/design-tokens/js/module/tokens/functional/components/link/colors.js +1 -1
  241. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/base.js +1 -1
  242. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/colors.js +1 -1
  243. package/lib/design-tokens/js/module/tokens/functional/components/media-playlist/colors.js +1 -1
  244. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/colors.js +1 -1
  245. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  246. package/lib/design-tokens/js/module/tokens/functional/components/prose/base.js +1 -1
  247. package/lib/design-tokens/js/module/tokens/functional/components/river/base.js +1 -1
  248. package/lib/design-tokens/js/module/tokens/functional/components/river/river.js +4 -1
  249. package/lib/design-tokens/js/module/tokens/functional/components/section/section.js +1 -1
  250. package/lib/design-tokens/js/module/tokens/functional/components/statistic/base.js +1 -1
  251. package/lib/design-tokens/js/module/tokens/functional/components/sub-nav/base.js +1 -1
  252. package/lib/design-tokens/js/module/tokens/functional/components/tabs/base.js +1 -1
  253. package/lib/design-tokens/js/module/tokens/functional/components/tabs/colors.js +1 -1
  254. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/base.js +1 -1
  255. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/colors.js +1 -1
  256. package/lib/design-tokens/js/module/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  257. package/lib/design-tokens/js/module/tokens/functional/components/timeline/base.js +1 -1
  258. package/lib/design-tokens/js/module/tokens/functional/components/timeline/colors.js +1 -1
  259. package/lib/design-tokens/js/module/tokens/functional/components/token/colors.js +1 -1
  260. package/lib/design-tokens/js/module/tokens/functional/components/tooltip/colors.js +1 -1
  261. package/lib/design-tokens/js/module/tokens/functional/components/video-player/base.js +1 -1
  262. package/lib/design-tokens/js/module/tokens/functional/size/border.js +1 -1
  263. package/lib/design-tokens/js/module/tokens/functional/size/breakpoints.js +1 -1
  264. package/lib/design-tokens/js/module/tokens/functional/size/size-coarse.js +1 -1
  265. package/lib/design-tokens/js/module/tokens/functional/size/size-fine.js +1 -1
  266. package/lib/design-tokens/js/module/tokens/functional/size/size.js +1 -1
  267. package/lib/design-tokens/js/module/tokens/functional/size/viewport.js +1 -1
  268. package/lib/design-tokens/js/module/tokens/functional/typography/typography-responsive.js +1 -1
  269. package/lib/design-tokens/js/module/tokens/functional/typography/typography.js +1 -1
  270. package/lib/design-tokens/js/tokens/base/colors/light.js +1 -1
  271. package/lib/design-tokens/js/tokens/base/size/size.js +1 -1
  272. package/lib/design-tokens/js/tokens/base/typography/typography.js +1 -1
  273. package/lib/design-tokens/js/tokens/functional/animation/base.js +1 -1
  274. package/lib/design-tokens/js/tokens/functional/colors/global.js +3 -3
  275. package/lib/design-tokens/js/tokens/functional/components/bento/base.js +1 -1
  276. package/lib/design-tokens/js/tokens/functional/components/card/base.js +1 -1
  277. package/lib/design-tokens/js/tokens/functional/components/card/colors.js +1 -1
  278. package/lib/design-tokens/js/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  279. package/lib/design-tokens/js/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  280. package/lib/design-tokens/js/tokens/functional/components/faq/base.js +1 -1
  281. package/lib/design-tokens/js/tokens/functional/components/faq/colors.js +1 -1
  282. package/lib/design-tokens/js/tokens/functional/components/faq/faq.js +1 -1
  283. package/lib/design-tokens/js/tokens/functional/components/footer/colors.js +1 -1
  284. package/lib/design-tokens/js/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  285. package/lib/design-tokens/js/tokens/functional/components/grid/colors.js +1 -1
  286. package/lib/design-tokens/js/tokens/functional/components/grid/grid.js +1 -1
  287. package/lib/design-tokens/js/tokens/functional/components/hero/base.js +1 -1
  288. package/lib/design-tokens/js/tokens/functional/components/icon/colors.js +1 -1
  289. package/lib/design-tokens/js/tokens/functional/components/ide/base.js +1 -1
  290. package/lib/design-tokens/js/tokens/functional/components/image/base.js +1 -1
  291. package/lib/design-tokens/js/tokens/functional/components/inline-link/base.js +1 -1
  292. package/lib/design-tokens/js/tokens/functional/components/inline-link/colors.js +1 -1
  293. package/lib/design-tokens/js/tokens/functional/components/label/colors.js +1 -1
  294. package/lib/design-tokens/js/tokens/functional/components/link/colors.js +1 -1
  295. package/lib/design-tokens/js/tokens/functional/components/logosuite/base.js +1 -1
  296. package/lib/design-tokens/js/tokens/functional/components/logosuite/colors.js +1 -1
  297. package/lib/design-tokens/js/tokens/functional/components/media-playlist/colors.js +1 -1
  298. package/lib/design-tokens/js/tokens/functional/components/pricing-options/colors.js +1 -1
  299. package/lib/design-tokens/js/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  300. package/lib/design-tokens/js/tokens/functional/components/prose/base.js +1 -1
  301. package/lib/design-tokens/js/tokens/functional/components/river/base.js +1 -1
  302. package/lib/design-tokens/js/tokens/functional/components/river/river.js +2 -1
  303. package/lib/design-tokens/js/tokens/functional/components/section/section.js +1 -1
  304. package/lib/design-tokens/js/tokens/functional/components/statistic/base.js +1 -1
  305. package/lib/design-tokens/js/tokens/functional/components/sub-nav/base.js +1 -1
  306. package/lib/design-tokens/js/tokens/functional/components/tabs/base.js +1 -1
  307. package/lib/design-tokens/js/tokens/functional/components/tabs/colors.js +1 -1
  308. package/lib/design-tokens/js/tokens/functional/components/testimonial/base.js +1 -1
  309. package/lib/design-tokens/js/tokens/functional/components/testimonial/colors.js +1 -1
  310. package/lib/design-tokens/js/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  311. package/lib/design-tokens/js/tokens/functional/components/timeline/base.js +1 -1
  312. package/lib/design-tokens/js/tokens/functional/components/timeline/colors.js +1 -1
  313. package/lib/design-tokens/js/tokens/functional/components/token/colors.js +1 -1
  314. package/lib/design-tokens/js/tokens/functional/components/tooltip/colors.js +1 -1
  315. package/lib/design-tokens/js/tokens/functional/components/video-player/base.js +1 -1
  316. package/lib/design-tokens/js/tokens/functional/size/border.js +1 -1
  317. package/lib/design-tokens/js/tokens/functional/size/breakpoints.js +1 -1
  318. package/lib/design-tokens/js/tokens/functional/size/size-coarse.js +1 -1
  319. package/lib/design-tokens/js/tokens/functional/size/size-fine.js +1 -1
  320. package/lib/design-tokens/js/tokens/functional/size/size.js +1 -1
  321. package/lib/design-tokens/js/tokens/functional/size/viewport.js +1 -1
  322. package/lib/design-tokens/js/tokens/functional/typography/typography-responsive.js +1 -1
  323. package/lib/design-tokens/js/tokens/functional/typography/typography.js +1 -1
  324. package/lib/design-tokens/json/colors.json +2 -2
  325. package/lib/design-tokens/scss/tokens/base/colors/light.scss +1 -1
  326. package/lib/design-tokens/scss/tokens/base/size/size.scss +1 -1
  327. package/lib/design-tokens/scss/tokens/base/typography/typography.scss +1 -1
  328. package/lib/design-tokens/scss/tokens/functional/animation/base.scss +1 -1
  329. package/lib/design-tokens/scss/tokens/functional/colors/global.scss +3 -3
  330. package/lib/design-tokens/scss/tokens/functional/components/bento/base.scss +1 -1
  331. package/lib/design-tokens/scss/tokens/functional/components/card/base.scss +1 -1
  332. package/lib/design-tokens/scss/tokens/functional/components/card/colors.scss +1 -1
  333. package/lib/design-tokens/scss/tokens/functional/components/comparison-table/comparison-table.scss +1 -1
  334. package/lib/design-tokens/scss/tokens/functional/components/eyebrow-banner/eyebrow-banner.scss +1 -1
  335. package/lib/design-tokens/scss/tokens/functional/components/faq/base.scss +1 -1
  336. package/lib/design-tokens/scss/tokens/functional/components/faq/colors.scss +1 -1
  337. package/lib/design-tokens/scss/tokens/functional/components/faq/faq.scss +1 -1
  338. package/lib/design-tokens/scss/tokens/functional/components/footer/colors.scss +1 -1
  339. package/lib/design-tokens/scss/tokens/functional/components/frosted-glass-vfx/base.scss +1 -1
  340. package/lib/design-tokens/scss/tokens/functional/components/grid/colors.scss +1 -1
  341. package/lib/design-tokens/scss/tokens/functional/components/grid/grid.scss +1 -1
  342. package/lib/design-tokens/scss/tokens/functional/components/hero/base.scss +1 -1
  343. package/lib/design-tokens/scss/tokens/functional/components/icon/colors.scss +1 -1
  344. package/lib/design-tokens/scss/tokens/functional/components/ide/base.scss +1 -1
  345. package/lib/design-tokens/scss/tokens/functional/components/image/base.scss +1 -1
  346. package/lib/design-tokens/scss/tokens/functional/components/inline-link/base.scss +1 -1
  347. package/lib/design-tokens/scss/tokens/functional/components/inline-link/colors.scss +1 -1
  348. package/lib/design-tokens/scss/tokens/functional/components/label/colors.scss +1 -1
  349. package/lib/design-tokens/scss/tokens/functional/components/link/colors.scss +1 -1
  350. package/lib/design-tokens/scss/tokens/functional/components/logosuite/base.scss +1 -1
  351. package/lib/design-tokens/scss/tokens/functional/components/logosuite/colors.scss +1 -1
  352. package/lib/design-tokens/scss/tokens/functional/components/media-playlist/colors.scss +1 -1
  353. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/colors.scss +1 -1
  354. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/pricing-options.scss +1 -1
  355. package/lib/design-tokens/scss/tokens/functional/components/prose/base.scss +1 -1
  356. package/lib/design-tokens/scss/tokens/functional/components/river/base.scss +1 -1
  357. package/lib/design-tokens/scss/tokens/functional/components/river/river.scss +2 -1
  358. package/lib/design-tokens/scss/tokens/functional/components/section/section.scss +1 -1
  359. package/lib/design-tokens/scss/tokens/functional/components/statistic/base.scss +1 -1
  360. package/lib/design-tokens/scss/tokens/functional/components/sub-nav/base.scss +1 -1
  361. package/lib/design-tokens/scss/tokens/functional/components/tabs/base.scss +1 -1
  362. package/lib/design-tokens/scss/tokens/functional/components/tabs/colors.scss +1 -1
  363. package/lib/design-tokens/scss/tokens/functional/components/testimonial/base.scss +1 -1
  364. package/lib/design-tokens/scss/tokens/functional/components/testimonial/colors.scss +1 -1
  365. package/lib/design-tokens/scss/tokens/functional/components/text-cursor-animation/colors.scss +1 -1
  366. package/lib/design-tokens/scss/tokens/functional/components/timeline/base.scss +1 -1
  367. package/lib/design-tokens/scss/tokens/functional/components/timeline/colors.scss +1 -1
  368. package/lib/design-tokens/scss/tokens/functional/components/token/colors.scss +1 -1
  369. package/lib/design-tokens/scss/tokens/functional/components/tooltip/colors.scss +1 -1
  370. package/lib/design-tokens/scss/tokens/functional/components/video-player/base.scss +1 -1
  371. package/lib/design-tokens/scss/tokens/functional/size/border.scss +1 -1
  372. package/lib/design-tokens/scss/tokens/functional/size/breakpoints.scss +1 -1
  373. package/lib/design-tokens/scss/tokens/functional/size/size-coarse.scss +1 -1
  374. package/lib/design-tokens/scss/tokens/functional/size/size-fine.scss +1 -1
  375. package/lib/design-tokens/scss/tokens/functional/size/size.scss +1 -1
  376. package/lib/design-tokens/scss/tokens/functional/size/viewport.scss +1 -1
  377. package/lib/design-tokens/scss/tokens/functional/typography/typography-responsive.scss +1 -1
  378. package/lib/design-tokens/scss/tokens/functional/typography/typography.scss +1 -1
  379. package/lib/design-tokens/ts/tokens/base/colors/light.d.ts +1 -1
  380. package/lib/design-tokens/ts/tokens/base/colors/light.js +1 -1
  381. package/lib/design-tokens/ts/tokens/base/size/size.d.ts +1 -1
  382. package/lib/design-tokens/ts/tokens/base/size/size.js +1 -1
  383. package/lib/design-tokens/ts/tokens/base/typography/typography.d.ts +1 -1
  384. package/lib/design-tokens/ts/tokens/base/typography/typography.js +1 -1
  385. package/lib/design-tokens/ts/tokens/functional/animation/base.d.ts +1 -1
  386. package/lib/design-tokens/ts/tokens/functional/animation/base.js +1 -1
  387. package/lib/design-tokens/ts/tokens/functional/colors/global.d.ts +1 -1
  388. package/lib/design-tokens/ts/tokens/functional/colors/global.js +3 -3
  389. package/lib/design-tokens/ts/tokens/functional/components/bento/base.d.ts +1 -1
  390. package/lib/design-tokens/ts/tokens/functional/components/bento/base.js +1 -1
  391. package/lib/design-tokens/ts/tokens/functional/components/card/base.d.ts +1 -1
  392. package/lib/design-tokens/ts/tokens/functional/components/card/base.js +1 -1
  393. package/lib/design-tokens/ts/tokens/functional/components/card/colors.d.ts +1 -1
  394. package/lib/design-tokens/ts/tokens/functional/components/card/colors.js +1 -1
  395. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.d.ts +1 -1
  396. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  397. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.d.ts +1 -1
  398. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  399. package/lib/design-tokens/ts/tokens/functional/components/faq/base.d.ts +1 -1
  400. package/lib/design-tokens/ts/tokens/functional/components/faq/base.js +1 -1
  401. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.d.ts +1 -1
  402. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.js +1 -1
  403. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.d.ts +1 -1
  404. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.js +1 -1
  405. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.d.ts +1 -1
  406. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.js +1 -1
  407. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.d.ts +1 -1
  408. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  409. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.d.ts +1 -1
  410. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.js +1 -1
  411. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.d.ts +1 -1
  412. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.js +1 -1
  413. package/lib/design-tokens/ts/tokens/functional/components/hero/base.d.ts +1 -1
  414. package/lib/design-tokens/ts/tokens/functional/components/hero/base.js +1 -1
  415. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.d.ts +1 -1
  416. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.js +1 -1
  417. package/lib/design-tokens/ts/tokens/functional/components/ide/base.d.ts +1 -1
  418. package/lib/design-tokens/ts/tokens/functional/components/ide/base.js +1 -1
  419. package/lib/design-tokens/ts/tokens/functional/components/image/base.d.ts +1 -1
  420. package/lib/design-tokens/ts/tokens/functional/components/image/base.js +1 -1
  421. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.d.ts +1 -1
  422. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.js +1 -1
  423. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.d.ts +1 -1
  424. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.js +1 -1
  425. package/lib/design-tokens/ts/tokens/functional/components/label/colors.d.ts +1 -1
  426. package/lib/design-tokens/ts/tokens/functional/components/label/colors.js +1 -1
  427. package/lib/design-tokens/ts/tokens/functional/components/link/colors.d.ts +1 -1
  428. package/lib/design-tokens/ts/tokens/functional/components/link/colors.js +1 -1
  429. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.d.ts +1 -1
  430. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.js +1 -1
  431. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.d.ts +1 -1
  432. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.js +1 -1
  433. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.d.ts +1 -1
  434. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.js +1 -1
  435. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.d.ts +1 -1
  436. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.js +1 -1
  437. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.d.ts +1 -1
  438. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  439. package/lib/design-tokens/ts/tokens/functional/components/prose/base.d.ts +1 -1
  440. package/lib/design-tokens/ts/tokens/functional/components/prose/base.js +1 -1
  441. package/lib/design-tokens/ts/tokens/functional/components/river/base.d.ts +1 -1
  442. package/lib/design-tokens/ts/tokens/functional/components/river/base.js +1 -1
  443. package/lib/design-tokens/ts/tokens/functional/components/river/river.d.ts +4 -1
  444. package/lib/design-tokens/ts/tokens/functional/components/river/river.js +4 -1
  445. package/lib/design-tokens/ts/tokens/functional/components/section/section.d.ts +1 -1
  446. package/lib/design-tokens/ts/tokens/functional/components/section/section.js +1 -1
  447. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.d.ts +1 -1
  448. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.js +1 -1
  449. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.d.ts +1 -1
  450. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.js +1 -1
  451. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.d.ts +1 -1
  452. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.js +1 -1
  453. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.d.ts +1 -1
  454. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.js +1 -1
  455. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.d.ts +1 -1
  456. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.js +1 -1
  457. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.d.ts +1 -1
  458. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.js +1 -1
  459. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.d.ts +1 -1
  460. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  461. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.d.ts +1 -1
  462. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.js +1 -1
  463. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.d.ts +1 -1
  464. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.js +1 -1
  465. package/lib/design-tokens/ts/tokens/functional/components/token/colors.d.ts +1 -1
  466. package/lib/design-tokens/ts/tokens/functional/components/token/colors.js +1 -1
  467. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.d.ts +1 -1
  468. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.js +1 -1
  469. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.d.ts +1 -1
  470. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.js +1 -1
  471. package/lib/design-tokens/ts/tokens/functional/size/border.d.ts +1 -1
  472. package/lib/design-tokens/ts/tokens/functional/size/border.js +1 -1
  473. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.d.ts +1 -1
  474. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.js +1 -1
  475. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.d.ts +1 -1
  476. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.js +1 -1
  477. package/lib/design-tokens/ts/tokens/functional/size/size-fine.d.ts +1 -1
  478. package/lib/design-tokens/ts/tokens/functional/size/size-fine.js +1 -1
  479. package/lib/design-tokens/ts/tokens/functional/size/size.d.ts +1 -1
  480. package/lib/design-tokens/ts/tokens/functional/size/size.js +1 -1
  481. package/lib/design-tokens/ts/tokens/functional/size/viewport.d.ts +1 -1
  482. package/lib/design-tokens/ts/tokens/functional/size/viewport.js +1 -1
  483. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.d.ts +1 -1
  484. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.js +1 -1
  485. package/lib/design-tokens/ts/tokens/functional/typography/typography.d.ts +1 -1
  486. package/lib/design-tokens/ts/tokens/functional/typography/typography.js +1 -1
  487. package/lib/index.js +1 -1
  488. package/lib/river/River/River.d.ts +17 -3
  489. package/lib/river/River/index.d.ts +2 -2
  490. package/lib/river/RiverBreakout/RiverBreakout.d.ts +2 -2
  491. package/lib/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts +3 -3
  492. package/llms.txt +3 -3
  493. package/package.json +1 -1
  494. package/esm/Avatar/Avatar.module-DzfWmLu4.css +0 -1
  495. package/esm/CTABanner/CTABanner.module-DZUT186Y.css +0 -1
  496. package/esm/EyebrowBanner/EyebrowBanner.module-C8hfGfYx.css +0 -1
  497. package/esm/Hero/Hero.module-DjsgFkIQ.css +0 -1
  498. package/esm/LogoSuite/LogoSuite.module-69Mthqju.css +0 -1
  499. package/esm/SectionIntro/SectionIntro.module-CiRymbla.css +0 -1
  500. package/esm/Testimonial/Testimonial.module-DRCosU_J.css +0 -1
  501. package/esm/css/reset-PKNIUbst.css +0 -1
  502. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/colors/global-with-modes-tpdcmiok.css +0 -1
  503. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-QteO10lt.css +0 -1
  504. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module-CH8jehnx.css +0 -1
  505. package/esm/river/RiverStoryScroll/RiverStoryScroll.module-D8dFaLHq.css +0 -1
  506. package/esm/river/river-shared.module-Bf_bNlTd.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"River.js","names":[],"sources":["../../../src/river/River/River.tsx"],"sourcesContent":["import React, {forwardRef, PropsWithChildren, useMemo, type Ref} from 'react'\nimport {clsx} from 'clsx'\nimport {Heading, type HeadingProps} from '../../Heading'\nimport {Text, type TextProps} from '../../Text'\nimport {Link, type LinkProps} from '../../Link'\nimport {Label, type LabelProps} from '../../Label'\nimport {EyebrowText} from '../../EyebrowText'\nimport {useAnimation} from '../../animation'\nimport type {BaseProps} from '../../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/river.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from '../river-shared.module.css'\nimport gridlineStyles from '../../component-helpers/shared.module.css'\n\nexport const RiverVariants = ['default', 'gridline'] as const\nexport const BorderedGrid = 'gridline' as const\nexport const GridLine = 'gridline' as const\nexport type RiverVariant = (typeof RiverVariants)[number]\n\nexport const RiverContentAlignValues = ['center', 'block-end'] as const\nexport type RiverContentAlign = (typeof RiverContentAlignValues)[number]\n\nexport type RiverProps = {\n /**\n * Only specific children are valid.\n * These include: `River.Visual` and `River.Content`.\n * The declarative order of the children will be ignored in the rendered output\n * to enforce correct HTML semantics.\n */\n children: React.ReactElement<RiverVisualProps | RiverContentProps>[]\n /**\n * Apply an alternative image to text column ratio. The default is `50:50`.\n */\n imageTextRatio?: '60:40' | '50:50'\n /**\n * Adjust the order of the `Content` column. The default is `start`.\n */\n align?: 'start' | 'end' | 'center'\n /**\n * Apply a visual variant. The default is `default`.\n * `gridline` applies lateral spacing for use in bordered grid layouts.\n */\n variant?: RiverVariant\n} & BaseProps<HTMLElement> &\n React.HTMLAttributes<HTMLElement>\n\nexport const defaultRiverImageTextRatio = '50:50'\nexport const defaultRiverAlign = 'start'\nexport const defaultRiverVariant: RiverVariant = 'default'\n\ntype ValidRootChildren = {\n Visual: React.ReactElement<RiverVisualProps> | null\n Content: React.ReactElement<RiverContentProps> | null\n}\n\nconst Root = forwardRef(\n (\n {\n animate,\n imageTextRatio = defaultRiverImageTextRatio,\n align = defaultRiverAlign,\n variant = defaultRiverVariant,\n className,\n children,\n style,\n ...rest\n }: RiverProps,\n ref: Ref<HTMLElement>,\n ) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const {Visual: VisualChild, Content: ContentChild} = React.Children.toArray(children).reduce<ValidRootChildren>(\n (acc, child) => {\n if (React.isValidElement(child) && typeof child.type !== 'string') {\n if (child.type === Visual) {\n acc.Visual = child as React.ReactElement<RiverVisualProps>\n }\n if (child.type === RiverContent) {\n acc.Content = child as React.ReactElement<RiverContentProps>\n }\n }\n return acc\n },\n {Visual: null, Content: null},\n )\n\n const VisualChildWithVariantStyles = VisualChild\n ? React.cloneElement(VisualChild, {\n className: clsx(\n VisualChild.props.className,\n variant === 'gridline' && styles['River__visual--has-background'],\n ),\n })\n : null\n\n return (\n <section\n ref={ref}\n className={clsx(\n styles.River,\n styles[`River--${imageTextRatio.replace(':', '-')}`],\n styles[`River--align-${align}`],\n styles[`River--variant-${variant}`],\n variant === 'gridline' && gridlineStyles.gridline,\n animationClasses,\n className,\n )}\n style={{...animationInlineStyles, ...style}}\n {...rest}\n >\n {ContentChild}\n {VisualChildWithVariantStyles}\n </section>\n )\n },\n)\n\nexport type RiverContentProps = BaseProps<HTMLDivElement> & {\n /**\n * Aligns the content vertically within its container.\n */\n align?: RiverContentAlign\n /**\n * Escape-hatch for inserting custom React components.\n * Warning:\n * This prop isn't advertised in our docs but remains part of the public API for edge-cases.\n * Need to use this prop? Please check in with #primer-brand first to confirm correct usage.\n */\n trailingComponent?: React.FunctionComponent\n /**\n * When `true`, a divider will be rendered between the standard river and optional trailing content.\n */\n trailingComponentDivider?: boolean\n /**\n * Escape-hatch for inserting custom React components.\n * Warning:\n * This prop isn't advertised in our docs but remains part of the public API for edge-cases.\n * Need to use this prop? Please check in with #primer-brand first to confirm correct usage.\n */\n leadingComponent?: React.FunctionComponent\n /**\n * Only valid children are allowed.\n * These include: `Heading`, `Text` and `Link`.\n * The declarative order of the children will be ignored in the rendered output\n * to enforce correct HTML semantics.\n */\n children: React.ReactElement<TextProps> | React.ReactElement<HeadingProps | TextProps | LinkProps>[]\n} & React.HTMLAttributes<HTMLDivElement>\n\nexport const RiverContent = forwardRef(\n (\n {\n align = 'center',\n animate,\n children,\n className,\n leadingComponent: LeadingComponent,\n trailingComponent: TrailingComponent,\n trailingComponentDivider = false,\n style,\n ...rest\n }: RiverContentProps,\n ref: Ref<HTMLDivElement>,\n ) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const Children = useMemo(() => React.Children.toArray(children), [children])\n\n const HeadingChild = Children.find(child => React.isValidElement(child) && child.type === Heading)\n\n const TextChild = Children.find(child => React.isValidElement(child) && child.type === Text)\n\n const LinkChild = Children.find(child => React.isValidElement(child) && child.type === Link)\n\n const LabelChild = Children.find(child => React.isValidElement(child) && child.type === Label)\n\n const EyebrowTextChild = Children.find(child => React.isValidElement(child) && child.type === EyebrowText)\n\n return (\n <div\n ref={ref}\n className={clsx(animationClasses, styles.River__content, styles[`River__content--align-${align}`], className)}\n style={{...animationInlineStyles, ...style}}\n {...rest}\n >\n {React.isValidElement(LabelChild) && !LeadingComponent && (\n <div className={styles.River__label}>\n {React.cloneElement(LabelChild as React.ReactElement<LabelProps>, {})}\n </div>\n )}\n\n {!LabelChild && React.isValidElement(EyebrowTextChild) && !LeadingComponent && (\n <div className={styles.River__label}>{EyebrowTextChild}</div>\n )}\n\n {!LabelChild && !EyebrowTextChild && LeadingComponent && (\n <div>\n <LeadingComponent />\n </div>\n )}\n\n {React.isValidElement<HeadingProps>(HeadingChild) && (\n <div className={styles.River__heading}>\n {React.cloneElement(HeadingChild as React.ReactElement<HeadingProps>, {\n // as uses h3 default, but can be overridden\n as: HeadingChild.props.as || 'h3',\n size: HeadingChild.props.size || '5',\n weight: HeadingChild.props.weight,\n className: clsx(HeadingChild.props.className, styles['River__heading-inner']),\n })}\n </div>\n )}\n\n {React.isValidElement<TextProps>(TextChild) && (\n <div className={styles['River__body-text']}>\n {React.cloneElement(TextChild as React.ReactElement<TextProps>, {\n variant: 'muted',\n as: 'p',\n className: clsx(styles.River__text, TextChild.props.className),\n })}\n </div>\n )}\n {React.isValidElement<LinkProps>(LinkChild) && (\n <div className={styles['River__call-to-action']}>\n {React.cloneElement(LinkChild as React.ReactElement<LinkProps>, {\n size: 'medium',\n variant: LinkChild.props.variant || 'accent',\n })}\n </div>\n )}\n {TrailingComponent && (\n <div\n className={clsx(\n styles.River__trailingComponent,\n trailingComponentDivider && styles['River__trailingComponent--divider'],\n )}\n >\n <TrailingComponent />\n </div>\n )}\n </div>\n )\n },\n)\n\nexport type RiverVisualProps = BaseProps<HTMLDivElement> &\n React.HtmlHTMLAttributes<HTMLDivElement> &\n PropsWithChildren<{\n /**\n * Applies automatic size constraints to child images and video.\n * This can be disabled by setting this prop to `false`.\n */\n fillMedia?: boolean\n /**\n * `img` and `video` elements will apply a shadow by default.\n * This can be disabled by setting this prop to `false`.\n */\n hasShadow?: boolean\n /**\n * Enables rounded corners.\n * Can optionally be disabled.\n */\n rounded?: boolean\n }>\n\nexport const Visual = forwardRef(\n (\n {\n fillMedia = true,\n children,\n className,\n hasShadow = false,\n rounded = true,\n ...rest\n }: PropsWithChildren<RiverVisualProps>,\n ref: Ref<HTMLDivElement>,\n ) => {\n return (\n <div\n ref={ref}\n className={clsx(\n styles.River__visual,\n hasShadow && styles['River__visual--has-shadow'],\n fillMedia && styles['River__visual--fill-media'],\n rounded && styles['River__visual--rounded'],\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n )\n },\n)\n\n/**\n * Alternating text and image pairs.\n */\nexport const River = Object.assign(Root, {Visual, Content: RiverContent})\n"],"mappings":"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"}
1
+ {"version":3,"file":"River.js","names":[],"sources":["../../../src/river/River/River.tsx"],"sourcesContent":["import React, {forwardRef, PropsWithChildren, useMemo, type Ref} from 'react'\nimport {clsx} from 'clsx'\nimport {Heading, type HeadingProps} from '../../Heading'\nimport {Text, type TextProps} from '../../Text'\nimport {Link, type LinkProps} from '../../Link'\nimport {Label, type LabelProps} from '../../Label'\nimport {EyebrowText} from '../../EyebrowText'\nimport {useAnimation} from '../../animation'\nimport type {BaseProps} from '../../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/river.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from '../river-shared.module.css'\nimport gridlineStyles from '../../component-helpers/shared.module.css'\n\nexport const RiverVariants = ['default', 'gridline'] as const\nexport const BorderedGrid = 'gridline' as const\nexport const GridLine = 'gridline' as const\nexport type RiverVariant = (typeof RiverVariants)[number]\n\nexport const RiverContentAlignValues = ['center', 'block-end'] as const\nexport type RiverContentAlign = (typeof RiverContentAlignValues)[number]\n\nexport type RiverProps = {\n /**\n * Only specific children are valid.\n * These include: `River.Visual` and `River.Content`.\n * The declarative order of the children will be ignored in the rendered output\n * to enforce correct HTML semantics.\n */\n children: React.ReactElement<RiverVisualProps | RiverContentProps>[]\n /**\n * Apply an alternative image to text column ratio. The default is `50:50`.\n */\n imageTextRatio?: '60:40' | '50:50'\n /**\n * Adjust the order of the `Content` column. The default is `start`.\n */\n align?: 'start' | 'end' | 'center'\n /**\n * Apply a visual variant. The default is `default`.\n * `gridline` applies lateral spacing for use in bordered grid layouts.\n */\n variant?: RiverVariant\n} & BaseProps<HTMLElement> &\n React.HTMLAttributes<HTMLElement>\n\nexport const defaultRiverImageTextRatio = '50:50'\nexport const defaultRiverAlign = 'start'\nexport const defaultRiverVariant: RiverVariant = 'default'\n\ntype ValidRootChildren = {\n Visual: React.ReactElement<RiverVisualProps> | null\n Content: React.ReactElement<RiverContentProps> | null\n}\n\nconst Root = forwardRef(\n (\n {\n animate,\n imageTextRatio = defaultRiverImageTextRatio,\n align = defaultRiverAlign,\n variant = defaultRiverVariant,\n className,\n children,\n style,\n ...rest\n }: RiverProps,\n ref: Ref<HTMLElement>,\n ) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const {Visual: VisualChild, Content: ContentChild} = React.Children.toArray(children).reduce<ValidRootChildren>(\n (acc, child) => {\n if (React.isValidElement(child) && typeof child.type !== 'string') {\n if (child.type === Visual) {\n acc.Visual = child as React.ReactElement<RiverVisualProps>\n }\n if (child.type === RiverContent) {\n acc.Content = child as React.ReactElement<RiverContentProps>\n }\n }\n return acc\n },\n {Visual: null, Content: null},\n )\n\n const visualPosition = VisualChild?.props.position ?? 'default'\n const visualPadding = VisualChild?.props.padding ?? 'default'\n const hasNonDefaultPosition = visualPosition !== 'default'\n const hasNonDefaultPadding = visualPadding !== 'default'\n const hasVisualLayoutOverrides = hasNonDefaultPosition || hasNonDefaultPadding\n const supportsVisualLayoutOverrides = variant === 'gridline'\n\n if (\n hasVisualLayoutOverrides &&\n !supportsVisualLayoutOverrides &&\n (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test')\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n `River: River.Visual position and padding are only supported when River uses variant=\"gridline\"; ignoring position=\"${visualPosition}\" and padding=\"${visualPadding}\".`,\n )\n }\n\n const VisualChildWithVariantStyles = VisualChild\n ? React.cloneElement(VisualChild, {\n className: clsx(\n VisualChild.props.className,\n variant === 'gridline' && styles['River__visual--has-background'],\n ),\n })\n : null\n\n return (\n <section\n ref={ref}\n className={clsx(\n styles.River,\n styles[`River--${imageTextRatio.replace(':', '-')}`],\n styles[`River--align-${align}`],\n styles[`River--variant-${variant}`],\n variant === 'gridline' && gridlineStyles.gridline,\n animationClasses,\n className,\n )}\n style={{...animationInlineStyles, ...style}}\n {...rest}\n >\n {ContentChild}\n {VisualChildWithVariantStyles}\n </section>\n )\n },\n)\n\nexport type RiverContentProps = BaseProps<HTMLDivElement> & {\n /**\n * Aligns the content vertically within its container.\n */\n align?: RiverContentAlign\n /**\n * Escape-hatch for inserting custom React components.\n * Warning:\n * This prop isn't advertised in our docs but remains part of the public API for edge-cases.\n * Need to use this prop? Please check in with #primer-brand first to confirm correct usage.\n */\n trailingComponent?: React.FunctionComponent\n /**\n * When `true`, a divider will be rendered between the standard river and optional trailing content.\n */\n trailingComponentDivider?: boolean\n /**\n * Escape-hatch for inserting custom React components.\n * Warning:\n * This prop isn't advertised in our docs but remains part of the public API for edge-cases.\n * Need to use this prop? Please check in with #primer-brand first to confirm correct usage.\n */\n leadingComponent?: React.FunctionComponent\n /**\n * Only valid children are allowed.\n * These include: `Heading`, `Text` and `Link`.\n * The declarative order of the children will be ignored in the rendered output\n * to enforce correct HTML semantics.\n */\n children: React.ReactElement<TextProps> | React.ReactElement<HeadingProps | TextProps | LinkProps>[]\n} & React.HTMLAttributes<HTMLDivElement>\n\nexport const RiverContent = forwardRef(\n (\n {\n align = 'center',\n animate,\n children,\n className,\n leadingComponent: LeadingComponent,\n trailingComponent: TrailingComponent,\n trailingComponentDivider = false,\n style,\n ...rest\n }: RiverContentProps,\n ref: Ref<HTMLDivElement>,\n ) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const Children = useMemo(() => React.Children.toArray(children), [children])\n\n const HeadingChild = Children.find(child => React.isValidElement(child) && child.type === Heading)\n\n const TextChild = Children.find(child => React.isValidElement(child) && child.type === Text)\n\n const LinkChild = Children.find(child => React.isValidElement(child) && child.type === Link)\n\n const LabelChild = Children.find(child => React.isValidElement(child) && child.type === Label)\n\n const EyebrowTextChild = Children.find(child => React.isValidElement(child) && child.type === EyebrowText)\n\n return (\n <div\n ref={ref}\n className={clsx(animationClasses, styles.River__content, styles[`River__content--align-${align}`], className)}\n style={{...animationInlineStyles, ...style}}\n {...rest}\n >\n {React.isValidElement(LabelChild) && !LeadingComponent && (\n <div className={styles.River__label}>\n {React.cloneElement(LabelChild as React.ReactElement<LabelProps>, {})}\n </div>\n )}\n\n {!LabelChild && React.isValidElement(EyebrowTextChild) && !LeadingComponent && (\n <div className={styles.River__label}>{EyebrowTextChild}</div>\n )}\n\n {!LabelChild && !EyebrowTextChild && LeadingComponent && (\n <div className={styles.River__leadingComponent}>\n <LeadingComponent />\n </div>\n )}\n\n {React.isValidElement<HeadingProps>(HeadingChild) && (\n <div className={styles.River__heading}>\n {React.cloneElement(HeadingChild as React.ReactElement<HeadingProps>, {\n // as uses h3 default, but can be overridden\n as: HeadingChild.props.as || 'h3',\n size: HeadingChild.props.size || '5',\n weight: HeadingChild.props.weight,\n className: clsx(HeadingChild.props.className, styles['River__heading-inner']),\n })}\n </div>\n )}\n\n {React.isValidElement<TextProps>(TextChild) && (\n <div className={styles['River__body-text']}>\n {React.cloneElement(TextChild as React.ReactElement<TextProps>, {\n variant: 'muted',\n as: 'p',\n className: clsx(styles.River__text, TextChild.props.className),\n })}\n </div>\n )}\n {React.isValidElement<LinkProps>(LinkChild) && (\n <div className={styles['River__call-to-action']}>\n {React.cloneElement(LinkChild as React.ReactElement<LinkProps>, {\n size: 'medium',\n variant: LinkChild.props.variant || 'accent',\n })}\n </div>\n )}\n {TrailingComponent && (\n <div\n className={clsx(\n styles.River__trailingComponent,\n trailingComponentDivider && styles['River__trailingComponent--divider'],\n )}\n >\n <TrailingComponent />\n </div>\n )}\n </div>\n )\n },\n)\n\nexport const RiverVisualPositionOptions = [\n 'default',\n 'center',\n 'block-end',\n 'block-end-inline-start',\n 'block-end-inline-end',\n] as const\nexport type RiverVisualPosition = (typeof RiverVisualPositionOptions)[number]\n\nexport const RiverVisualPaddingOptions = ['default', 'none', 'all'] as const\nexport type RiverVisualPadding = (typeof RiverVisualPaddingOptions)[number]\n\nexport type RiverVisualBaseProps = BaseProps<HTMLDivElement> &\n React.HtmlHTMLAttributes<HTMLDivElement> &\n PropsWithChildren<{\n /**\n * Applies automatic size constraints to child images and video.\n * This can be disabled by setting this prop to `false`.\n */\n fillMedia?: boolean\n /**\n * `img` and `video` elements will apply a shadow by default.\n * This can be disabled by setting this prop to `false`.\n */\n hasShadow?: boolean\n /**\n * Enables rounded corners.\n * Can optionally be disabled.\n */\n rounded?: boolean\n }>\n\nexport type RiverVisualProps = RiverVisualBaseProps & {\n /**\n * Positions media within the visual region in the gridline variant.\n */\n position?: RiverVisualPosition\n /**\n * Controls media padding within the visual region in the gridline variant.\n */\n padding?: RiverVisualPadding\n}\n\nexport const RiverVisualBase = forwardRef<HTMLDivElement, RiverVisualBaseProps>(\n (\n {fillMedia = true, children, className, hasShadow = false, rounded = true, ...rest}: RiverVisualBaseProps,\n ref: Ref<HTMLDivElement>,\n ) => {\n return (\n <div\n ref={ref}\n className={clsx(\n styles.River__visual,\n hasShadow && styles['River__visual--has-shadow'],\n fillMedia && styles['River__visual--fill-media'],\n rounded && styles['River__visual--rounded'],\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n )\n },\n)\n\nconst Visual = forwardRef<HTMLDivElement, RiverVisualProps>(\n ({className, position = 'default', padding = 'default', ...rest}, ref) => (\n <RiverVisualBase\n ref={ref}\n className={clsx(\n position !== 'default' && styles[`River__visual--position-${position}`],\n padding !== 'default' && styles[`River__visual--padding-${padding}`],\n className,\n )}\n {...rest}\n />\n ),\n)\n\n/**\n * Alternating text and image pairs.\n */\nexport const River = Object.assign(Root, {Visual, Content: RiverContent})\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export { River, defaultRiverImageTextRatio, defaultRiverAlign, defaultRiverVariant } from './River';
2
- export type { RiverProps, RiverContentProps, RiverVisualProps } from './River';
1
+ export { River, defaultRiverImageTextRatio, defaultRiverAlign, defaultRiverVariant, RiverVisualPositionOptions, RiverVisualPaddingOptions, } from './River';
2
+ export type { RiverProps, RiverContentProps, RiverVisualProps, RiverVisualPosition, RiverVisualPadding } from './River';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/river/River/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAA;AACjG,YAAY,EAAC,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/river/River/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,SAAS,CAAA;AAChB,YAAY,EAAC,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAA"}
@@ -4,7 +4,7 @@ import { useProvidedRefOrCreate as n } from "../../hooks/useRef.js";
4
4
  import { Text as r } from "../../Text/Text.js";
5
5
  import { Heading as i } from "../../Heading/Heading.js";
6
6
  import { TriangleDownIcon as a, TriangleUpIcon as o } from "../../node_modules/@primer/octicons-react/dist/index.esm.js";
7
- import '../../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-QteO10lt.css';/* empty css */
7
+ import '../../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-DHn1_SEa.css';/* empty css */
8
8
  import s from "./RiverAccordion.module.js";
9
9
  import c from "../../component-helpers/shared.module.js";
10
10
  import { Link as l } from "../../Link/Link.js";
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { RiverProps } from '../River';
3
- import { type RiverVisualProps } from '../River/River';
3
+ import { type RiverVisualBaseProps } from '../River/River';
4
4
  export declare const RiverBreakoutVariants: readonly ["default", "gridline"];
5
5
  export type RiverBreakoutVariant = (typeof RiverBreakoutVariants)[number];
6
6
  type RiverBreakoutProps = Omit<RiverProps, 'align' | 'imageTextRatio'> & {
@@ -11,7 +11,7 @@ type RiverBreakoutProps = Omit<RiverProps, 'align' | 'imageTextRatio'> & {
11
11
  variant?: RiverBreakoutVariant;
12
12
  };
13
13
  export declare const RiverBreakout: React.ForwardRefExoticComponent<Omit<RiverBreakoutProps, "ref"> & React.RefAttributes<HTMLElement>> & {
14
- Visual: React.ForwardRefExoticComponent<Omit<RiverVisualProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
14
+ Visual: React.ForwardRefExoticComponent<Omit<RiverVisualBaseProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
15
  Content: React.ForwardRefExoticComponent<Omit<import("..").RiverContentProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
16
  A11yHeading: ({ as, children }: React.PropsWithChildren<{
17
17
  as?: "h2" | "h3";
@@ -1 +1 @@
1
- {"version":3,"file":"RiverBreakout.d.ts","sourceRoot":"","sources":["../../../src/river/RiverBreakout/RiverBreakout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAA;AAE5C,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAA;AACnC,OAAO,EAAsC,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAA;AAQzF,eAAO,MAAM,qBAAqB,kCAAmC,CAAA;AACrE,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzE,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,CAAC,GAAG;IACvE;;;OAGG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B,CAAA;AA2DD,eAAO,MAAM,aAAa;;;oCAVkB,KAAK,CAAC,iBAAiB,CAAC;QAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;CAUO,CAAA"}
1
+ {"version":3,"file":"RiverBreakout.d.ts","sourceRoot":"","sources":["../../../src/river/RiverBreakout/RiverBreakout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAA;AAE5C,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAA;AACnC,OAAO,EAAgC,KAAK,oBAAoB,EAAC,MAAM,gBAAgB,CAAA;AAQvF,eAAO,MAAM,qBAAqB,kCAAmC,CAAA;AACrE,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzE,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,CAAC,GAAG;IACvE;;;OAGG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B,CAAA;AAiDD,eAAO,MAAM,aAAa;;;oCAVkB,KAAK,CAAC,iBAAiB,CAAC;QAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;CAUO,CAAA"}
@@ -3,37 +3,37 @@ import { useAnimation as t } from "../../animation/useAnimation.js";
3
3
  import { Heading as n } from "../../Heading/Heading.js";
4
4
  import r from "../../component-helpers/shared.module.js";
5
5
  import i from "../river-shared.module.js";
6
- import { RiverContent as a, Visual as o } from "../River/River.js";
6
+ import { RiverContent as a, RiverVisualBase as o } from "../River/River.js";
7
7
  import s from "../../findElementInChildren.js";
8
- import c, { forwardRef as l } from "react";
9
- import { jsx as u } from "react/jsx-runtime";
8
+ import { forwardRef as c } from "react";
9
+ import { jsx as l } from "react/jsx-runtime";
10
10
  //#region src/river/RiverBreakout/RiverBreakout.tsx
11
- var d = ["default", "gridline"], f = l(({ animate: n, className: a, children: o, style: l, variant: d = "default", ...f }, h) => {
12
- let { classes: g, styles: _ } = t(n), v = c.Children.map(o, (t) => c.isValidElement(t) && t.type === m ? c.cloneElement(t, { className: e(t.props.className, d === "gridline" && i["River__visual--has-background"]) }) : t), y = s(o, "b") || s(o, "em") ? "muted" : "default";
13
- return s(o, p) || (process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && console.warn("RiverBreakout: A11yHeading child is required. This element will not be visible, only read by screenreaders."), /* @__PURE__ */ u("section", {
14
- ref: h,
15
- className: e(i.RiverBreakout, d === "gridline" && i["RiverBreakout--variant-gridline"], d === "gridline" && r.gridline, y === "muted" && i["RiverBreakout--muted"], g, a),
11
+ var u = ["default", "gridline"], d = c(({ animate: n, className: a, children: o, style: c, variant: u = "default", ...d }, p) => {
12
+ let { classes: m, styles: h } = t(n), g = s(o, "b") || s(o, "em") ? "muted" : "default";
13
+ return s(o, f) || (process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && console.warn("RiverBreakout: A11yHeading child is required. This element will not be visible, only read by screenreaders."), /* @__PURE__ */ l("section", {
14
+ ref: p,
15
+ className: e(i.RiverBreakout, u === "gridline" && i["RiverBreakout--variant-gridline"], u === "gridline" && r.gridline, g === "muted" && i["RiverBreakout--muted"], m, a),
16
16
  style: {
17
- ..._,
18
- ...l
17
+ ...h,
18
+ ...c
19
19
  },
20
- ...f,
21
- children: v
20
+ ...d,
21
+ children: o
22
22
  });
23
- }), p = ({ as: e = "h3", children: t }) => /* @__PURE__ */ u(n, {
23
+ }), f = ({ as: e = "h3", children: t }) => /* @__PURE__ */ l(n, {
24
24
  className: "visually-hidden",
25
25
  as: e,
26
26
  children: t
27
- }), m = l(({ className: e, ...t }, n) => /* @__PURE__ */ u(o, {
27
+ }), p = c(({ className: e, ...t }, n) => /* @__PURE__ */ l(o, {
28
28
  ref: n,
29
29
  className: e,
30
30
  ...t
31
- })), h = Object.assign(f, {
32
- Visual: m,
31
+ })), m = Object.assign(d, {
32
+ Visual: p,
33
33
  Content: a,
34
- A11yHeading: p
34
+ A11yHeading: f
35
35
  });
36
36
  //#endregion
37
- export { h as RiverBreakout, d as RiverBreakoutVariants };
37
+ export { m as RiverBreakout, u as RiverBreakoutVariants };
38
38
 
39
39
  //# sourceMappingURL=RiverBreakout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RiverBreakout.js","names":[],"sources":["../../../src/river/RiverBreakout/RiverBreakout.tsx"],"sourcesContent":["import React, {Ref, forwardRef} from 'react'\nimport {clsx} from 'clsx'\nimport {RiverProps} from '../River'\nimport {Visual as RiverVisual, RiverContent, type RiverVisualProps} from '../River/River'\nimport {useAnimation} from '../../animation'\nimport findElementInChildren from '../../findElementInChildren'\nimport {Heading} from '../../Heading'\n\nimport styles from '../river-shared.module.css'\nimport gridlineStyles from '../../component-helpers/shared.module.css'\n\nexport const RiverBreakoutVariants = ['default', 'gridline'] as const\nexport type RiverBreakoutVariant = (typeof RiverBreakoutVariants)[number]\n\ntype RiverBreakoutProps = Omit<RiverProps, 'align' | 'imageTextRatio'> & {\n /**\n * Apply a visual variant. The default is `default`.\n * `gridline` adds horizontal border lines and lateral spacing.\n */\n variant?: RiverBreakoutVariant\n}\n\nconst Root = forwardRef(\n ({animate, className, children, style, variant = 'default', ...rest}: RiverBreakoutProps, ref: Ref<HTMLElement>) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const Children = React.Children.map(children, child => {\n if (React.isValidElement<RiverVisualProps>(child) && child.type === Visual) {\n return React.cloneElement(child, {\n className: clsx(child.props.className, variant === 'gridline' && styles['River__visual--has-background']),\n })\n }\n\n return child\n })\n\n // TODO: when Firefox supports :has() selector, we should use that instead of JS\n const defaultColor =\n findElementInChildren(children, 'b') || findElementInChildren(children, 'em') ? 'muted' : 'default'\n\n if (!findElementInChildren(children, A11yHeading)) {\n if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {\n // eslint-disable-next-line no-console\n console.warn(\n 'RiverBreakout: A11yHeading child is required. This element will not be visible, only read by screenreaders.',\n )\n }\n }\n\n return (\n <section\n ref={ref}\n className={clsx(\n styles.RiverBreakout,\n variant === 'gridline' && styles['RiverBreakout--variant-gridline'],\n variant === 'gridline' && gridlineStyles.gridline,\n defaultColor === 'muted' && styles['RiverBreakout--muted'],\n animationClasses,\n className,\n )}\n style={{...animationInlineStyles, ...style}}\n {...rest}\n >\n {Children}\n </section>\n )\n },\n)\n\nconst A11yHeading = ({as = 'h3', children}: React.PropsWithChildren<{as?: 'h2' | 'h3'}>) => (\n <Heading className=\"visually-hidden\" as={as}>\n {children}\n </Heading>\n)\n\nconst Visual = forwardRef<HTMLDivElement, RiverVisualProps>(({className, ...props}, ref) => (\n <RiverVisual ref={ref} className={className} {...props} />\n))\n\nexport const RiverBreakout = Object.assign(Root, {Visual, Content: RiverContent, A11yHeading})\n"],"mappings":";;;;;;;;;;AAWA,IAAa,IAAwB,CAAC,WAAW,WAAW,EAWtD,IAAO,GACV,EAAC,YAAS,cAAW,aAAU,UAAO,aAAU,WAAW,GAAG,KAA2B,MAA0B;CAClH,IAAM,EAAC,SAAS,GAAkB,QAAQ,MAAyB,EAAa,EAAQ,EAElF,IAAW,EAAM,SAAS,IAAI,IAAU,MACxC,EAAM,eAAiC,EAAM,IAAI,EAAM,SAAS,IAC3D,EAAM,aAAa,GAAO,EAC/B,WAAW,EAAK,EAAM,MAAM,WAAW,MAAY,cAAc,EAAO,iCAAiC,EAC1G,CAAC,GAGG,EACP,EAGI,IACJ,EAAsB,GAAU,IAAI,IAAI,EAAsB,GAAU,KAAK,GAAG,UAAU;AAW5F,QATK,EAAsB,GAAU,EAAY,8BAClB,iBAAA,QAAA,IAAA,aAA0C,WAErE,QAAQ,KACN,8GACD,EAKH,kBAAC,WAAD;EACO;EACL,WAAW,EACT,EAAO,eACP,MAAY,cAAc,EAAO,oCACjC,MAAY,cAAc,EAAe,UACzC,MAAiB,WAAW,EAAO,yBACnC,GACA,EACD;EACD,OAAO;GAAC,GAAG;GAAuB,GAAG;GAAM;EAC3C,GAAI;YAEH;EACO,CAAA;EAGf,EAEK,KAAe,EAAC,QAAK,MAAM,kBAC/B,kBAAC,GAAD;CAAS,WAAU;CAAsB;CACtC;CACO,CAAA,EAGN,IAAS,GAA8C,EAAC,cAAW,GAAG,KAAQ,MAClF,kBAAC,GAAD;CAAkB;CAAgB;CAAW,GAAI;CAAS,CAAA,CAC1D,EAEW,IAAgB,OAAO,OAAO,GAAM;CAAC;CAAQ,SAAS;CAAc;CAAY,CAAC"}
1
+ {"version":3,"file":"RiverBreakout.js","names":[],"sources":["../../../src/river/RiverBreakout/RiverBreakout.tsx"],"sourcesContent":["import React, {Ref, forwardRef} from 'react'\nimport {clsx} from 'clsx'\nimport {RiverProps} from '../River'\nimport {RiverVisualBase, RiverContent, type RiverVisualBaseProps} from '../River/River'\nimport {useAnimation} from '../../animation'\nimport findElementInChildren from '../../findElementInChildren'\nimport {Heading} from '../../Heading'\n\nimport styles from '../river-shared.module.css'\nimport gridlineStyles from '../../component-helpers/shared.module.css'\n\nexport const RiverBreakoutVariants = ['default', 'gridline'] as const\nexport type RiverBreakoutVariant = (typeof RiverBreakoutVariants)[number]\n\ntype RiverBreakoutProps = Omit<RiverProps, 'align' | 'imageTextRatio'> & {\n /**\n * Apply a visual variant. The default is `default`.\n * `gridline` adds horizontal border lines and lateral spacing.\n */\n variant?: RiverBreakoutVariant\n}\n\nconst Root = forwardRef(\n ({animate, className, children, style, variant = 'default', ...rest}: RiverBreakoutProps, ref: Ref<HTMLElement>) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n // TODO: when Firefox supports :has() selector, we should use that instead of JS\n const defaultColor =\n findElementInChildren(children, 'b') || findElementInChildren(children, 'em') ? 'muted' : 'default'\n\n if (!findElementInChildren(children, A11yHeading)) {\n if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {\n // eslint-disable-next-line no-console\n console.warn(\n 'RiverBreakout: A11yHeading child is required. This element will not be visible, only read by screenreaders.',\n )\n }\n }\n\n return (\n <section\n ref={ref}\n className={clsx(\n styles.RiverBreakout,\n variant === 'gridline' && styles['RiverBreakout--variant-gridline'],\n variant === 'gridline' && gridlineStyles.gridline,\n defaultColor === 'muted' && styles['RiverBreakout--muted'],\n animationClasses,\n className,\n )}\n style={{...animationInlineStyles, ...style}}\n {...rest}\n >\n {children}\n </section>\n )\n },\n)\n\nconst A11yHeading = ({as = 'h3', children}: React.PropsWithChildren<{as?: 'h2' | 'h3'}>) => (\n <Heading className=\"visually-hidden\" as={as}>\n {children}\n </Heading>\n)\n\nconst Visual = forwardRef<HTMLDivElement, RiverVisualBaseProps>(({className, ...props}, ref) => (\n <RiverVisualBase ref={ref} className={className} {...props} />\n))\n\nexport const RiverBreakout = Object.assign(Root, {Visual, Content: RiverContent, A11yHeading})\n"],"mappings":";;;;;;;;;;AAWA,IAAa,IAAwB,CAAC,WAAW,WAAW,EAWtD,IAAO,GACV,EAAC,YAAS,cAAW,aAAU,UAAO,aAAU,WAAW,GAAG,KAA2B,MAA0B;CAClH,IAAM,EAAC,SAAS,GAAkB,QAAQ,MAAyB,EAAa,EAAQ,EAGlF,IACJ,EAAsB,GAAU,IAAI,IAAI,EAAsB,GAAU,KAAK,GAAG,UAAU;AAW5F,QATK,EAAsB,GAAU,EAAY,8BAClB,iBAAA,QAAA,IAAA,aAA0C,WAErE,QAAQ,KACN,8GACD,EAKH,kBAAC,WAAD;EACO;EACL,WAAW,EACT,EAAO,eACP,MAAY,cAAc,EAAO,oCACjC,MAAY,cAAc,EAAe,UACzC,MAAiB,WAAW,EAAO,yBACnC,GACA,EACD;EACD,OAAO;GAAC,GAAG;GAAuB,GAAG;GAAM;EAC3C,GAAI;EAEH;EACO,CAAA;EAGf,EAEK,KAAe,EAAC,QAAK,MAAM,kBAC/B,kBAAC,GAAD;CAAS,WAAU;CAAsB;CACtC;CACO,CAAA,EAGN,IAAS,GAAkD,EAAC,cAAW,GAAG,KAAQ,MACtF,kBAAC,GAAD;CAAsB;CAAgB;CAAW,GAAI;CAAS,CAAA,CAC9D,EAEW,IAAgB,OAAO,OAAO,GAAM;CAAC;CAAQ,SAAS;CAAc;CAAY,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type HeadingProps } from '../..';
3
3
  import { type IconProps } from '../../Icon';
4
- import { type RiverVisualProps } from '../River/River';
4
+ import { type RiverVisualBaseProps } from '../River/River';
5
5
  /**
6
6
  * Design tokens
7
7
  */
@@ -35,7 +35,7 @@ export type RiverBreakoutTabsA11yHeadingProps = React.PropsWithChildren<{
35
35
  export type RiverBreakoutTabsHeadingProps = HeadingProps;
36
36
  export type RiverBreakoutTabsContentProps = React.HTMLAttributes<HTMLDivElement>;
37
37
  export type RiverBreakoutTabsIconProps = IconProps;
38
- export type RiverBreakoutTabsVisualProps = RiverVisualProps;
38
+ export type RiverBreakoutTabsVisualProps = RiverVisualBaseProps;
39
39
  /**
40
40
  * Use RiverBreakoutTabs to showcase multiple feature stories within a single immersive surface.
41
41
  */
@@ -64,6 +64,6 @@ export declare const RiverBreakoutTabs: React.ForwardRefExoticComponent<{
64
64
  Heading: ({ as, children, className, size, weight, ...props }: RiverBreakoutTabsHeadingProps) => import("react/jsx-runtime").JSX.Element;
65
65
  Icon: ({ color, ...props }: RiverBreakoutTabsIconProps) => import("react/jsx-runtime").JSX.Element;
66
66
  Item: ({ children }: RiverBreakoutTabsItemProps) => import("react/jsx-runtime").JSX.Element;
67
- Visual: React.ForwardRefExoticComponent<Omit<RiverVisualProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
67
+ Visual: React.ForwardRefExoticComponent<Omit<RiverVisualBaseProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
68
68
  };
69
69
  //# sourceMappingURL=RiverBreakoutTabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RiverBreakoutTabs.d.ts","sourceRoot":"","sources":["../../../src/river/RiverBreakoutTabs/RiverBreakoutTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoF,MAAM,OAAO,CAAA;AAGxG,OAAO,EAAiC,KAAK,YAAY,EAAC,MAAM,OAAO,CAAA;AACvE,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAwB,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAA;AAO3E;;GAEG;AACH,OAAO,4FAA4F,CAAA;AACnG,OAAO,6FAA6F,CAAA;AAUpG,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC3D,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAA;IACtC;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACpC,CAAC,GACA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAA;AAErD,MAAM,MAAM,0BAA0B,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAC,CAAA;AAEF,MAAM,MAAM,iCAAiC,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACtE,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAC,CAAA;AAEF,MAAM,MAAM,6BAA6B,GAAG,YAAY,CAAA;AAExD,MAAM,MAAM,6BAA6B,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;AAEhF,MAAM,MAAM,0BAA0B,GAAG,SAAS,CAAA;AAElD,MAAM,MAAM,4BAA4B,GAAG,gBAAgB,CAAA;AAmc3D;;GAEG;AACH,eAAO,MAAM,iBAAiB;2BAxeL,MAAM;oBACb,MAAM;eACX,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI;IAC1C;;;OAGG;uBACgB,KAAK,CAAC,SAAS;IAClC;;OAEG;oBACa,QAAQ,GAAG,WAAW;IACtC;;OAEG;gCACyB,OAAO;;;;wCA0C4B,iCAAiC;iDA6B/B,6BAA6B;mEAZ7F,6BAA6B;gCAX4B,0BAA0B;yBAR3C,0BAA0B;;CAwbnE,CAAA"}
1
+ {"version":3,"file":"RiverBreakoutTabs.d.ts","sourceRoot":"","sources":["../../../src/river/RiverBreakoutTabs/RiverBreakoutTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoF,MAAM,OAAO,CAAA;AAGxG,OAAO,EAAiC,KAAK,YAAY,EAAC,MAAM,OAAO,CAAA;AACvE,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAkB,KAAK,oBAAoB,EAAC,MAAM,gBAAgB,CAAA;AAOzE;;GAEG;AACH,OAAO,4FAA4F,CAAA;AACnG,OAAO,6FAA6F,CAAA;AAUpG,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC3D,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAA;IACtC;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACpC,CAAC,GACA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAA;AAErD,MAAM,MAAM,0BAA0B,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAC,CAAA;AAEF,MAAM,MAAM,iCAAiC,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACtE,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAC,CAAA;AAEF,MAAM,MAAM,6BAA6B,GAAG,YAAY,CAAA;AAExD,MAAM,MAAM,6BAA6B,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;AAEhF,MAAM,MAAM,0BAA0B,GAAG,SAAS,CAAA;AAElD,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,CAAA;AAmc/D;;GAEG;AACH,eAAO,MAAM,iBAAiB;2BAxeL,MAAM;oBACb,MAAM;eACX,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI;IAC1C;;;OAGG;uBACgB,KAAK,CAAC,SAAS;IAClC;;OAEG;oBACa,QAAQ,GAAG,WAAW;IACtC;;OAEG;gCACyB,OAAO;;;;wCA0C4B,iCAAiC;iDA6B/B,6BAA6B;mEAZ7F,6BAA6B;gCAX4B,0BAA0B;yBAR3C,0BAA0B;;CAwbnE,CAAA"}
@@ -2,12 +2,12 @@ import e from "../../node_modules/clsx/dist/clsx.js";
2
2
  import { useId as t } from "../../hooks/useId.js";
3
3
  import { Text as n } from "../../Text/Text.js";
4
4
  import { Heading as r } from "../../Heading/Heading.js";
5
- import '../../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-QteO10lt.css';import '../../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/base-Ue-p74RC.css';/* empty css */
5
+ import '../../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-DHn1_SEa.css';import '../../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/base-Ue-p74RC.css';/* empty css */
6
6
  import i from "../../component-helpers/shared.module.js";
7
7
  import { Link as a } from "../../Link/Link.js";
8
8
  /* empty css */
9
9
  import o from "../river-shared.module.js";
10
- import { Visual as s } from "../River/River.js";
10
+ import { RiverVisualBase as s } from "../River/River.js";
11
11
  import { Icon as c } from "../../Icon/Icon.js";
12
12
  import { useTabs as l } from "../../hooks/useTabs.js";
13
13
  import { useWindowSize as u } from "../../hooks/useWindowSize.js";
@@ -1 +1 @@
1
- {"version":3,"file":"RiverBreakoutTabs.js","names":[],"sources":["../../../src/river/RiverBreakoutTabs/RiverBreakoutTabs.tsx"],"sourcesContent":["import React, {cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {clsx} from 'clsx'\n\nimport {Accordion, Heading, Link, Text, type HeadingProps} from '../..'\nimport {Icon, type IconProps} from '../../Icon'\nimport {Visual as RiverVisual, type RiverVisualProps} from '../River/River'\nimport {useId} from '../../hooks/useId'\nimport {useTabs} from '../../hooks/useTabs'\nimport {useWindowSize} from '../../hooks/useWindowSize'\nimport riverStyles from '../river-shared.module.css'\nimport gridlineStyles from '../../component-helpers/shared.module.css'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/river.css'\n\n/** Main Stylesheet (as a CSS Module) */\nimport styles from './RiverBreakoutTabs.module.css'\n\nconst createComponentTypeGuard =\n <T,>(componentType: React.ComponentType<T>) =>\n (element: unknown): element is React.ReactElement<T> =>\n React.isValidElement<T>(element) && element.type === componentType\n\nexport type RiverBreakoutTabsProps = React.PropsWithChildren<{\n defaultSelectedIndex?: number\n selectedIndex?: number\n onChange?: (selectedIndex: number) => void\n /**\n * Decorative background rendered behind the visual and persisted across tab\n * changes. Must not contain interactive and remain purely decorative.\n */\n backgroundVisual?: React.ReactNode\n /**\n * Alignment of media within the visual container when `backgroundVisual` is provided\n */\n imagePosition?: 'center' | 'block-end'\n /**\n * When `true`, the `backgroundVisual` bleeds out to the gridline edges instead of being inset within them\n */\n backgroundVisualFullBleed?: boolean\n}> &\n Omit<React.HTMLAttributes<HTMLElement>, 'onChange'>\n\nexport type RiverBreakoutTabsItemProps = React.PropsWithChildren<{\n className?: string\n}>\n\nexport type RiverBreakoutTabsA11yHeadingProps = React.PropsWithChildren<{\n as?: 'h2' | 'h3'\n id?: string\n}>\n\nexport type RiverBreakoutTabsHeadingProps = HeadingProps\n\nexport type RiverBreakoutTabsContentProps = React.HTMLAttributes<HTMLDivElement>\n\nexport type RiverBreakoutTabsIconProps = IconProps\n\nexport type RiverBreakoutTabsVisualProps = RiverVisualProps\n\ntype RiverBreakoutTabsItemChild =\n | React.ReactElement<RiverBreakoutTabsIconProps>\n | React.ReactElement<RiverBreakoutTabsHeadingProps>\n | React.ReactElement<RiverBreakoutTabsContentProps>\n | React.ReactElement<RiverBreakoutTabsVisualProps>\n\ntype ExtractedItemParts = {\n icon: React.ReactElement<RiverBreakoutTabsIconProps> | null\n heading: React.ReactElement<RiverBreakoutTabsHeadingProps> | null\n content: React.ReactElement<RiverBreakoutTabsContentProps> | null\n visual: React.ReactElement<RiverBreakoutTabsVisualProps> | null\n className?: string\n}\n\ntype ExtractedContentParts = {\n action: React.ReactElement<React.ComponentProps<typeof Link>> | null\n body: React.ReactNode[]\n}\n\nconst RiverBreakoutTabsItem = ({children}: RiverBreakoutTabsItemProps) => <>{children}</>\n\nconst RiverBreakoutTabsA11yHeading = ({as = 'h3', children, id}: RiverBreakoutTabsA11yHeadingProps) => (\n <Heading as={as} id={id} className=\"visually-hidden\">\n {children}\n </Heading>\n)\n\nconst RiverBreakoutTabsIcon = ({color = 'green', ...props}: RiverBreakoutTabsIconProps) => (\n <Icon color={color} {...props} />\n)\n\nconst RiverBreakoutTabsHeading = ({\n as = 'h3',\n children,\n className,\n size = 'subhead-large',\n weight = 'normal',\n ...props\n}: RiverBreakoutTabsHeadingProps) => (\n <Heading\n as={as}\n className={clsx(styles.RiverBreakoutTabs__heading, className)}\n size={size}\n weight={weight}\n {...props}\n >\n {children}\n </Heading>\n)\n\nconst RiverBreakoutTabsContent = ({children, className, ...props}: RiverBreakoutTabsContentProps) => {\n const Children = useMemo(\n () =>\n React.Children.toArray(children).map(child => {\n if (isTextChild(child)) {\n return cloneElement(child, {\n as: child.props.as ?? 'p',\n variant: child.props.variant ?? 'muted',\n })\n }\n\n if (isLinkChild(child)) {\n return cloneElement(child, {\n className: clsx(child.props.className, styles.RiverBreakoutTabs__link),\n size: child.props.size ?? 'medium',\n variant: child.props.variant ?? 'accent',\n })\n }\n\n return child\n }),\n [children],\n )\n\n return (\n <div className={clsx(styles.RiverBreakoutTabs__content, className)} {...props}>\n {Children}\n </div>\n )\n}\n\nconst RiverBreakoutTabsVisual = forwardRef<HTMLDivElement, RiverBreakoutTabsVisualProps>(\n ({className, ...props}, ref) => <RiverVisual ref={ref} className={className} {...props} />,\n)\n\nconst isItem = createComponentTypeGuard(RiverBreakoutTabsItem)\nconst isA11yHeading = createComponentTypeGuard(RiverBreakoutTabsA11yHeading)\nconst isIcon = createComponentTypeGuard(RiverBreakoutTabsIcon)\nconst isHeading = createComponentTypeGuard(RiverBreakoutTabsHeading)\nconst isContent = createComponentTypeGuard(RiverBreakoutTabsContent)\nconst isVisual = createComponentTypeGuard(RiverBreakoutTabsVisual)\n\nconst isTextChild = (child: React.ReactNode): child is React.ReactElement<React.ComponentProps<typeof Text>> =>\n React.isValidElement<React.ComponentProps<typeof Text>>(child) && child.type === Text\n\nconst isLinkChild = (child: React.ReactNode): child is React.ReactElement<React.ComponentProps<typeof Link>> =>\n React.isValidElement<React.ComponentProps<typeof Link>>(child) && child.type === Link\n\nconst extractItemParts = (item: React.ReactElement<RiverBreakoutTabsItemProps>): ExtractedItemParts => {\n const Children = React.Children.toArray(item.props.children) as RiverBreakoutTabsItemChild[]\n\n return Children.reduce<ExtractedItemParts>(\n (acc, child) => {\n if (isIcon(child)) {\n acc.icon = child\n }\n\n if (isHeading(child)) {\n acc.heading = child\n }\n\n if (isContent(child)) {\n acc.content = child\n }\n\n if (isVisual(child)) {\n acc.visual = child\n }\n\n return acc\n },\n {icon: null, heading: null, content: null, visual: null, className: item.props.className},\n )\n}\n\nconst extractWideTabListContentParts = (\n content: React.ReactElement<RiverBreakoutTabsContentProps> | null,\n): ExtractedContentParts => {\n if (!content) {\n return {action: null, body: []}\n }\n\n const Children = React.Children.toArray(content.props.children).map(child => {\n if (isTextChild(child)) {\n return cloneElement(child, {\n as: child.props.as ?? 'p',\n variant: child.props.variant ?? 'muted',\n })\n }\n\n if (isLinkChild(child)) {\n return cloneElement(child, {\n className: clsx(child.props.className, styles.RiverBreakoutTabs__link),\n size: child.props.size ?? 'medium',\n variant: child.props.variant ?? 'accent',\n })\n }\n\n return child\n })\n\n return Children.reduce<ExtractedContentParts>(\n (acc, child) => {\n if (isLinkChild(child)) {\n if (!acc.action) {\n acc.action = child\n }\n\n return acc\n }\n\n acc.body.push(child)\n return acc\n },\n {action: null, body: []},\n )\n}\n\nconst clampIndex = (index: number, length: number) => {\n if (length === 0) return -1\n\n const normalizedIndex = Number.isFinite(index) ? Math.trunc(index) : 0\n return Math.min(Math.max(normalizedIndex, 0), length - 1)\n}\n\nconst RiverBreakoutTabsRoot = forwardRef<HTMLElement, RiverBreakoutTabsProps>(\n (\n {\n children,\n className,\n defaultSelectedIndex = 0,\n onChange,\n selectedIndex,\n backgroundVisual,\n imagePosition = 'center',\n backgroundVisualFullBleed = false,\n ...props\n },\n ref,\n ) => {\n const instanceId = useId()\n const {isLarge} = useWindowSize()\n\n const Children = useMemo(() => React.Children.toArray(children), [children])\n\n const A11yHeadingChild = Children.find(isA11yHeading) ?? null\n const Items = Children.filter(isItem)\n .map(extractItemParts)\n .filter(item => item.heading && item.content && item.visual)\n\n const defaultActiveIndex = clampIndex(defaultSelectedIndex, Items.length)\n const controlledActiveIndex =\n typeof selectedIndex === 'number' && Number.isFinite(selectedIndex)\n ? clampIndex(selectedIndex, Items.length)\n : null\n const initialActiveIndex = controlledActiveIndex ?? defaultActiveIndex\n const headingId = A11yHeadingChild?.props.id ?? `${instanceId}-heading`\n const wideTabListColumns = Math.min(Math.max(Items.length, 1), 3)\n const initialActiveTab = initialActiveIndex >= 0 ? String(initialActiveIndex) : undefined\n const isWideTabList = isLarge === true\n const suppressOnTabActivateRef = useRef(false)\n\n const handleTabActivate = useCallback(\n (id: string) => {\n if (suppressOnTabActivateRef.current) {\n suppressOnTabActivateRef.current = false\n return\n }\n\n if (!onChange) return\n\n const nextIndex = Number(id)\n if (!Number.isNaN(nextIndex)) {\n onChange(nextIndex)\n }\n },\n [onChange],\n )\n\n const {activeTab, activateTab, getTabListProps, getTabPanelProps, getTabProps} = useTabs({\n defaultTab: initialActiveTab,\n onTabActivate: handleTabActivate,\n })\n\n const [activeAccordionIndex, setActiveAccordionIndex] = useState(initialActiveIndex)\n\n useEffect(() => {\n if (activeTab === null) return\n\n const nextIndex = Number(activeTab)\n if (!Number.isNaN(nextIndex)) {\n setActiveAccordionIndex(nextIndex)\n }\n }, [activeTab])\n\n useEffect(() => {\n if (controlledActiveIndex === null || controlledActiveIndex < 0) return\n\n const controlledTab = String(controlledActiveIndex)\n if (activeTab !== controlledTab) {\n suppressOnTabActivateRef.current = true\n activateTab(controlledTab)\n }\n\n setActiveAccordionIndex(controlledActiveIndex)\n }, [activateTab, activeTab, controlledActiveIndex])\n\n if (!A11yHeadingChild && (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test')) {\n // eslint-disable-next-line no-console\n console.warn(\n 'RiverBreakoutTabs: A11yHeading child is required. This element will not be visible, only read by screenreaders.',\n )\n }\n\n const handleAccordionOpen = (index: number) => (isOpen: boolean) => {\n if (isOpen) {\n setActiveAccordionIndex(index)\n if (activeTab !== String(index)) {\n activateTab(String(index))\n }\n }\n }\n\n const handleAccordionToggle: React.ReactEventHandler<HTMLDetailsElement> = event => {\n const toggledIndex = Number(event.currentTarget.getAttribute('data-index'))\n\n if (!event.currentTarget.open && activeAccordionIndex === toggledIndex) {\n event.currentTarget.open = true\n }\n }\n\n const tabListProps = A11yHeadingChild\n ? getTabListProps({labelledBy: headingId})\n : getTabListProps({label: 'River breakout tabs'})\n const WideTabListContentParts = useMemo(\n () => Items.map(item => extractWideTabListContentParts(item.content)),\n [Items],\n )\n\n const BackgroundVisualLayer =\n backgroundVisual != null ? (\n <div className={styles.RiverBreakoutTabs__backgroundVisual} aria-hidden=\"true\">\n {backgroundVisual}\n </div>\n ) : null\n\n return (\n <section\n ref={ref}\n className={clsx(\n riverStyles.RiverBreakout,\n riverStyles['RiverBreakout--variant-gridline'],\n gridlineStyles.gridline,\n styles.RiverBreakoutTabs,\n backgroundVisual != null && styles['RiverBreakoutTabs--has-background-visual'],\n backgroundVisual != null &&\n imagePosition === 'block-end' &&\n styles['RiverBreakoutTabs--image-position-block-end'],\n backgroundVisual != null &&\n backgroundVisualFullBleed &&\n styles['RiverBreakoutTabs--background-visual-full-bleed'],\n className,\n )}\n {...props}\n >\n {A11yHeadingChild && cloneElement(A11yHeadingChild, {id: headingId})}\n\n {isWideTabList ? (\n <div className={styles.RiverBreakoutTabs__wideTabList}>\n <div\n {...tabListProps}\n className={styles.RiverBreakoutTabs__tablist}\n style={{'--river-breakout-tabs-columns': String(wideTabListColumns)} as React.CSSProperties}\n >\n {Items.map((item, index) => {\n const isSelected = activeTab === String(index)\n const tabProps = getTabProps<HTMLButtonElement>(String(index))\n const {body} = WideTabListContentParts[index]\n\n return (\n <div\n key={index}\n className={clsx(\n styles.RiverBreakoutTabs__item,\n isSelected && styles['RiverBreakoutTabs__item--selected'],\n item.className,\n )}\n >\n <button type=\"button\" {...tabProps} className={styles.RiverBreakoutTabs__tab}>\n {item.icon &&\n cloneElement(item.icon, {\n className: item.icon.props.className,\n })}\n\n {item.heading &&\n cloneElement(item.heading, {\n className: clsx(item.heading.props.className, styles.RiverBreakoutTabs__tabHeading),\n })}\n\n {body.length > 0 && <div className={styles.RiverBreakoutTabs__wideTabListContent}>{body}</div>}\n </button>\n </div>\n )\n })}\n </div>\n\n <div className={styles.RiverBreakoutTabs__sharedVisuals}>\n {BackgroundVisualLayer}\n {Items.map((item, index) => {\n const panelProps = getTabPanelProps(String(index))\n\n return (\n <div\n key={index}\n {...panelProps}\n tabIndex={-1}\n className={styles.RiverBreakoutTabs__sharedVisualPanel}\n >\n {cloneElement(item.visual as React.ReactElement<RiverVisualProps>, {\n className: clsx(item.visual?.props.className, styles.RiverBreakoutTabs__sharedVisual),\n })}\n </div>\n )\n })}\n </div>\n\n {WideTabListContentParts.some(content => content.action) && (\n <div\n className={styles.RiverBreakoutTabs__wideTabListActions}\n style={{'--river-breakout-tabs-columns': String(wideTabListColumns)} as React.CSSProperties}\n >\n {Items.map((_, index) => {\n const {action} = WideTabListContentParts[index]\n\n return (\n <div key={index} className={styles.RiverBreakoutTabs__wideTabListActionItem}>\n {action &&\n cloneElement(action, {\n className: clsx(action.props.className, styles.RiverBreakoutTabs__wideTabListAction),\n })}\n </div>\n )\n })}\n </div>\n )}\n </div>\n ) : (\n <div className={styles.RiverBreakoutTabs__accordion}>\n {activeAccordionIndex >= 0 && Items[activeAccordionIndex]?.visual && (\n <div className={styles.RiverBreakoutTabs__accordionSharedVisuals}>\n {BackgroundVisualLayer}\n {cloneElement(Items[activeAccordionIndex].visual as React.ReactElement<RiverVisualProps>, {\n className: clsx(\n Items[activeAccordionIndex].visual.props.className,\n styles.RiverBreakoutTabs__accordionSharedVisual,\n ),\n })}\n </div>\n )}\n\n {Items.map((item, index) => {\n return (\n <Accordion\n key={index}\n data-index={index}\n className={clsx(\n styles.RiverBreakoutTabs__accordionItem,\n index === activeAccordionIndex && styles['RiverBreakoutTabs__item--selected'],\n item.className,\n )}\n onToggle={handleAccordionToggle}\n open={index === activeAccordionIndex}\n handleOpen={handleAccordionOpen(index)}\n >\n <Accordion.Heading className={styles.RiverBreakoutTabs__accordionHeading}>\n <span className={styles.RiverBreakoutTabs__accordionHeadingInner}>\n {item.icon &&\n cloneElement(item.icon, {\n className: clsx(item.icon.props.className, styles.RiverBreakoutTabs__accordionIcon),\n })}\n <span className={styles.RiverBreakoutTabs__accordionLabel}>{item.heading?.props.children}</span>\n </span>\n </Accordion.Heading>\n\n <Accordion.Content className={styles.RiverBreakoutTabs__accordionPanel}>\n {cloneElement(item.content as React.ReactElement<RiverBreakoutTabsContentProps>, {\n className: clsx(item.content?.props.className, styles.RiverBreakoutTabs__accordionContent),\n })}\n </Accordion.Content>\n </Accordion>\n )\n })}\n </div>\n )}\n </section>\n )\n },\n)\n\n/**\n * Use RiverBreakoutTabs to showcase multiple feature stories within a single immersive surface.\n */\nexport const RiverBreakoutTabs = Object.assign(RiverBreakoutTabsRoot, {\n A11yHeading: RiverBreakoutTabsA11yHeading,\n Content: RiverBreakoutTabsContent,\n Heading: RiverBreakoutTabsHeading,\n Icon: RiverBreakoutTabsIcon,\n Item: RiverBreakoutTabsItem,\n Visual: RiverBreakoutTabsVisual,\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"RiverBreakoutTabs.js","names":[],"sources":["../../../src/river/RiverBreakoutTabs/RiverBreakoutTabs.tsx"],"sourcesContent":["import React, {cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {clsx} from 'clsx'\n\nimport {Accordion, Heading, Link, Text, type HeadingProps} from '../..'\nimport {Icon, type IconProps} from '../../Icon'\nimport {RiverVisualBase, type RiverVisualBaseProps} from '../River/River'\nimport {useId} from '../../hooks/useId'\nimport {useTabs} from '../../hooks/useTabs'\nimport {useWindowSize} from '../../hooks/useWindowSize'\nimport riverStyles from '../river-shared.module.css'\nimport gridlineStyles from '../../component-helpers/shared.module.css'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/river/river.css'\n\n/** Main Stylesheet (as a CSS Module) */\nimport styles from './RiverBreakoutTabs.module.css'\n\nconst createComponentTypeGuard =\n <T,>(componentType: React.ComponentType<T>) =>\n (element: unknown): element is React.ReactElement<T> =>\n React.isValidElement<T>(element) && element.type === componentType\n\nexport type RiverBreakoutTabsProps = React.PropsWithChildren<{\n defaultSelectedIndex?: number\n selectedIndex?: number\n onChange?: (selectedIndex: number) => void\n /**\n * Decorative background rendered behind the visual and persisted across tab\n * changes. Must not contain interactive and remain purely decorative.\n */\n backgroundVisual?: React.ReactNode\n /**\n * Alignment of media within the visual container when `backgroundVisual` is provided\n */\n imagePosition?: 'center' | 'block-end'\n /**\n * When `true`, the `backgroundVisual` bleeds out to the gridline edges instead of being inset within them\n */\n backgroundVisualFullBleed?: boolean\n}> &\n Omit<React.HTMLAttributes<HTMLElement>, 'onChange'>\n\nexport type RiverBreakoutTabsItemProps = React.PropsWithChildren<{\n className?: string\n}>\n\nexport type RiverBreakoutTabsA11yHeadingProps = React.PropsWithChildren<{\n as?: 'h2' | 'h3'\n id?: string\n}>\n\nexport type RiverBreakoutTabsHeadingProps = HeadingProps\n\nexport type RiverBreakoutTabsContentProps = React.HTMLAttributes<HTMLDivElement>\n\nexport type RiverBreakoutTabsIconProps = IconProps\n\nexport type RiverBreakoutTabsVisualProps = RiverVisualBaseProps\n\ntype RiverBreakoutTabsItemChild =\n | React.ReactElement<RiverBreakoutTabsIconProps>\n | React.ReactElement<RiverBreakoutTabsHeadingProps>\n | React.ReactElement<RiverBreakoutTabsContentProps>\n | React.ReactElement<RiverBreakoutTabsVisualProps>\n\ntype ExtractedItemParts = {\n icon: React.ReactElement<RiverBreakoutTabsIconProps> | null\n heading: React.ReactElement<RiverBreakoutTabsHeadingProps> | null\n content: React.ReactElement<RiverBreakoutTabsContentProps> | null\n visual: React.ReactElement<RiverBreakoutTabsVisualProps> | null\n className?: string\n}\n\ntype ExtractedContentParts = {\n action: React.ReactElement<React.ComponentProps<typeof Link>> | null\n body: React.ReactNode[]\n}\n\nconst RiverBreakoutTabsItem = ({children}: RiverBreakoutTabsItemProps) => <>{children}</>\n\nconst RiverBreakoutTabsA11yHeading = ({as = 'h3', children, id}: RiverBreakoutTabsA11yHeadingProps) => (\n <Heading as={as} id={id} className=\"visually-hidden\">\n {children}\n </Heading>\n)\n\nconst RiverBreakoutTabsIcon = ({color = 'green', ...props}: RiverBreakoutTabsIconProps) => (\n <Icon color={color} {...props} />\n)\n\nconst RiverBreakoutTabsHeading = ({\n as = 'h3',\n children,\n className,\n size = 'subhead-large',\n weight = 'normal',\n ...props\n}: RiverBreakoutTabsHeadingProps) => (\n <Heading\n as={as}\n className={clsx(styles.RiverBreakoutTabs__heading, className)}\n size={size}\n weight={weight}\n {...props}\n >\n {children}\n </Heading>\n)\n\nconst RiverBreakoutTabsContent = ({children, className, ...props}: RiverBreakoutTabsContentProps) => {\n const Children = useMemo(\n () =>\n React.Children.toArray(children).map(child => {\n if (isTextChild(child)) {\n return cloneElement(child, {\n as: child.props.as ?? 'p',\n variant: child.props.variant ?? 'muted',\n })\n }\n\n if (isLinkChild(child)) {\n return cloneElement(child, {\n className: clsx(child.props.className, styles.RiverBreakoutTabs__link),\n size: child.props.size ?? 'medium',\n variant: child.props.variant ?? 'accent',\n })\n }\n\n return child\n }),\n [children],\n )\n\n return (\n <div className={clsx(styles.RiverBreakoutTabs__content, className)} {...props}>\n {Children}\n </div>\n )\n}\n\nconst RiverBreakoutTabsVisual = forwardRef<HTMLDivElement, RiverBreakoutTabsVisualProps>(\n ({className, ...props}, ref) => <RiverVisualBase ref={ref} className={className} {...props} />,\n)\n\nconst isItem = createComponentTypeGuard(RiverBreakoutTabsItem)\nconst isA11yHeading = createComponentTypeGuard(RiverBreakoutTabsA11yHeading)\nconst isIcon = createComponentTypeGuard(RiverBreakoutTabsIcon)\nconst isHeading = createComponentTypeGuard(RiverBreakoutTabsHeading)\nconst isContent = createComponentTypeGuard(RiverBreakoutTabsContent)\nconst isVisual = createComponentTypeGuard(RiverBreakoutTabsVisual)\n\nconst isTextChild = (child: React.ReactNode): child is React.ReactElement<React.ComponentProps<typeof Text>> =>\n React.isValidElement<React.ComponentProps<typeof Text>>(child) && child.type === Text\n\nconst isLinkChild = (child: React.ReactNode): child is React.ReactElement<React.ComponentProps<typeof Link>> =>\n React.isValidElement<React.ComponentProps<typeof Link>>(child) && child.type === Link\n\nconst extractItemParts = (item: React.ReactElement<RiverBreakoutTabsItemProps>): ExtractedItemParts => {\n const Children = React.Children.toArray(item.props.children) as RiverBreakoutTabsItemChild[]\n\n return Children.reduce<ExtractedItemParts>(\n (acc, child) => {\n if (isIcon(child)) {\n acc.icon = child\n }\n\n if (isHeading(child)) {\n acc.heading = child\n }\n\n if (isContent(child)) {\n acc.content = child\n }\n\n if (isVisual(child)) {\n acc.visual = child\n }\n\n return acc\n },\n {icon: null, heading: null, content: null, visual: null, className: item.props.className},\n )\n}\n\nconst extractWideTabListContentParts = (\n content: React.ReactElement<RiverBreakoutTabsContentProps> | null,\n): ExtractedContentParts => {\n if (!content) {\n return {action: null, body: []}\n }\n\n const Children = React.Children.toArray(content.props.children).map(child => {\n if (isTextChild(child)) {\n return cloneElement(child, {\n as: child.props.as ?? 'p',\n variant: child.props.variant ?? 'muted',\n })\n }\n\n if (isLinkChild(child)) {\n return cloneElement(child, {\n className: clsx(child.props.className, styles.RiverBreakoutTabs__link),\n size: child.props.size ?? 'medium',\n variant: child.props.variant ?? 'accent',\n })\n }\n\n return child\n })\n\n return Children.reduce<ExtractedContentParts>(\n (acc, child) => {\n if (isLinkChild(child)) {\n if (!acc.action) {\n acc.action = child\n }\n\n return acc\n }\n\n acc.body.push(child)\n return acc\n },\n {action: null, body: []},\n )\n}\n\nconst clampIndex = (index: number, length: number) => {\n if (length === 0) return -1\n\n const normalizedIndex = Number.isFinite(index) ? Math.trunc(index) : 0\n return Math.min(Math.max(normalizedIndex, 0), length - 1)\n}\n\nconst RiverBreakoutTabsRoot = forwardRef<HTMLElement, RiverBreakoutTabsProps>(\n (\n {\n children,\n className,\n defaultSelectedIndex = 0,\n onChange,\n selectedIndex,\n backgroundVisual,\n imagePosition = 'center',\n backgroundVisualFullBleed = false,\n ...props\n },\n ref,\n ) => {\n const instanceId = useId()\n const {isLarge} = useWindowSize()\n\n const Children = useMemo(() => React.Children.toArray(children), [children])\n\n const A11yHeadingChild = Children.find(isA11yHeading) ?? null\n const Items = Children.filter(isItem)\n .map(extractItemParts)\n .filter(item => item.heading && item.content && item.visual)\n\n const defaultActiveIndex = clampIndex(defaultSelectedIndex, Items.length)\n const controlledActiveIndex =\n typeof selectedIndex === 'number' && Number.isFinite(selectedIndex)\n ? clampIndex(selectedIndex, Items.length)\n : null\n const initialActiveIndex = controlledActiveIndex ?? defaultActiveIndex\n const headingId = A11yHeadingChild?.props.id ?? `${instanceId}-heading`\n const wideTabListColumns = Math.min(Math.max(Items.length, 1), 3)\n const initialActiveTab = initialActiveIndex >= 0 ? String(initialActiveIndex) : undefined\n const isWideTabList = isLarge === true\n const suppressOnTabActivateRef = useRef(false)\n\n const handleTabActivate = useCallback(\n (id: string) => {\n if (suppressOnTabActivateRef.current) {\n suppressOnTabActivateRef.current = false\n return\n }\n\n if (!onChange) return\n\n const nextIndex = Number(id)\n if (!Number.isNaN(nextIndex)) {\n onChange(nextIndex)\n }\n },\n [onChange],\n )\n\n const {activeTab, activateTab, getTabListProps, getTabPanelProps, getTabProps} = useTabs({\n defaultTab: initialActiveTab,\n onTabActivate: handleTabActivate,\n })\n\n const [activeAccordionIndex, setActiveAccordionIndex] = useState(initialActiveIndex)\n\n useEffect(() => {\n if (activeTab === null) return\n\n const nextIndex = Number(activeTab)\n if (!Number.isNaN(nextIndex)) {\n setActiveAccordionIndex(nextIndex)\n }\n }, [activeTab])\n\n useEffect(() => {\n if (controlledActiveIndex === null || controlledActiveIndex < 0) return\n\n const controlledTab = String(controlledActiveIndex)\n if (activeTab !== controlledTab) {\n suppressOnTabActivateRef.current = true\n activateTab(controlledTab)\n }\n\n setActiveAccordionIndex(controlledActiveIndex)\n }, [activateTab, activeTab, controlledActiveIndex])\n\n if (!A11yHeadingChild && (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test')) {\n // eslint-disable-next-line no-console\n console.warn(\n 'RiverBreakoutTabs: A11yHeading child is required. This element will not be visible, only read by screenreaders.',\n )\n }\n\n const handleAccordionOpen = (index: number) => (isOpen: boolean) => {\n if (isOpen) {\n setActiveAccordionIndex(index)\n if (activeTab !== String(index)) {\n activateTab(String(index))\n }\n }\n }\n\n const handleAccordionToggle: React.ReactEventHandler<HTMLDetailsElement> = event => {\n const toggledIndex = Number(event.currentTarget.getAttribute('data-index'))\n\n if (!event.currentTarget.open && activeAccordionIndex === toggledIndex) {\n event.currentTarget.open = true\n }\n }\n\n const tabListProps = A11yHeadingChild\n ? getTabListProps({labelledBy: headingId})\n : getTabListProps({label: 'River breakout tabs'})\n const WideTabListContentParts = useMemo(\n () => Items.map(item => extractWideTabListContentParts(item.content)),\n [Items],\n )\n\n const BackgroundVisualLayer =\n backgroundVisual != null ? (\n <div className={styles.RiverBreakoutTabs__backgroundVisual} aria-hidden=\"true\">\n {backgroundVisual}\n </div>\n ) : null\n\n return (\n <section\n ref={ref}\n className={clsx(\n riverStyles.RiverBreakout,\n riverStyles['RiverBreakout--variant-gridline'],\n gridlineStyles.gridline,\n styles.RiverBreakoutTabs,\n backgroundVisual != null && styles['RiverBreakoutTabs--has-background-visual'],\n backgroundVisual != null &&\n imagePosition === 'block-end' &&\n styles['RiverBreakoutTabs--image-position-block-end'],\n backgroundVisual != null &&\n backgroundVisualFullBleed &&\n styles['RiverBreakoutTabs--background-visual-full-bleed'],\n className,\n )}\n {...props}\n >\n {A11yHeadingChild && cloneElement(A11yHeadingChild, {id: headingId})}\n\n {isWideTabList ? (\n <div className={styles.RiverBreakoutTabs__wideTabList}>\n <div\n {...tabListProps}\n className={styles.RiverBreakoutTabs__tablist}\n style={{'--river-breakout-tabs-columns': String(wideTabListColumns)} as React.CSSProperties}\n >\n {Items.map((item, index) => {\n const isSelected = activeTab === String(index)\n const tabProps = getTabProps<HTMLButtonElement>(String(index))\n const {body} = WideTabListContentParts[index]\n\n return (\n <div\n key={index}\n className={clsx(\n styles.RiverBreakoutTabs__item,\n isSelected && styles['RiverBreakoutTabs__item--selected'],\n item.className,\n )}\n >\n <button type=\"button\" {...tabProps} className={styles.RiverBreakoutTabs__tab}>\n {item.icon &&\n cloneElement(item.icon, {\n className: item.icon.props.className,\n })}\n\n {item.heading &&\n cloneElement(item.heading, {\n className: clsx(item.heading.props.className, styles.RiverBreakoutTabs__tabHeading),\n })}\n\n {body.length > 0 && <div className={styles.RiverBreakoutTabs__wideTabListContent}>{body}</div>}\n </button>\n </div>\n )\n })}\n </div>\n\n <div className={styles.RiverBreakoutTabs__sharedVisuals}>\n {BackgroundVisualLayer}\n {Items.map((item, index) => {\n const panelProps = getTabPanelProps(String(index))\n\n return (\n <div\n key={index}\n {...panelProps}\n tabIndex={-1}\n className={styles.RiverBreakoutTabs__sharedVisualPanel}\n >\n {cloneElement(item.visual as React.ReactElement<RiverBreakoutTabsVisualProps>, {\n className: clsx(item.visual?.props.className, styles.RiverBreakoutTabs__sharedVisual),\n })}\n </div>\n )\n })}\n </div>\n\n {WideTabListContentParts.some(content => content.action) && (\n <div\n className={styles.RiverBreakoutTabs__wideTabListActions}\n style={{'--river-breakout-tabs-columns': String(wideTabListColumns)} as React.CSSProperties}\n >\n {Items.map((_, index) => {\n const {action} = WideTabListContentParts[index]\n\n return (\n <div key={index} className={styles.RiverBreakoutTabs__wideTabListActionItem}>\n {action &&\n cloneElement(action, {\n className: clsx(action.props.className, styles.RiverBreakoutTabs__wideTabListAction),\n })}\n </div>\n )\n })}\n </div>\n )}\n </div>\n ) : (\n <div className={styles.RiverBreakoutTabs__accordion}>\n {activeAccordionIndex >= 0 && Items[activeAccordionIndex]?.visual && (\n <div className={styles.RiverBreakoutTabs__accordionSharedVisuals}>\n {BackgroundVisualLayer}\n {cloneElement(Items[activeAccordionIndex].visual as React.ReactElement<RiverBreakoutTabsVisualProps>, {\n className: clsx(\n Items[activeAccordionIndex].visual.props.className,\n styles.RiverBreakoutTabs__accordionSharedVisual,\n ),\n })}\n </div>\n )}\n\n {Items.map((item, index) => {\n return (\n <Accordion\n key={index}\n data-index={index}\n className={clsx(\n styles.RiverBreakoutTabs__accordionItem,\n index === activeAccordionIndex && styles['RiverBreakoutTabs__item--selected'],\n item.className,\n )}\n onToggle={handleAccordionToggle}\n open={index === activeAccordionIndex}\n handleOpen={handleAccordionOpen(index)}\n >\n <Accordion.Heading className={styles.RiverBreakoutTabs__accordionHeading}>\n <span className={styles.RiverBreakoutTabs__accordionHeadingInner}>\n {item.icon &&\n cloneElement(item.icon, {\n className: clsx(item.icon.props.className, styles.RiverBreakoutTabs__accordionIcon),\n })}\n <span className={styles.RiverBreakoutTabs__accordionLabel}>{item.heading?.props.children}</span>\n </span>\n </Accordion.Heading>\n\n <Accordion.Content className={styles.RiverBreakoutTabs__accordionPanel}>\n {cloneElement(item.content as React.ReactElement<RiverBreakoutTabsContentProps>, {\n className: clsx(item.content?.props.className, styles.RiverBreakoutTabs__accordionContent),\n })}\n </Accordion.Content>\n </Accordion>\n )\n })}\n </div>\n )}\n </section>\n )\n },\n)\n\n/**\n * Use RiverBreakoutTabs to showcase multiple feature stories within a single immersive surface.\n */\nexport const RiverBreakoutTabs = Object.assign(RiverBreakoutTabsRoot, {\n A11yHeading: RiverBreakoutTabsA11yHeading,\n Content: RiverBreakoutTabsContent,\n Heading: RiverBreakoutTabsHeading,\n Icon: RiverBreakoutTabsIcon,\n Item: RiverBreakoutTabsItem,\n Visual: RiverBreakoutTabsVisual,\n})\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz{--river-breakout-tabs-columns:1}@media screen and (width<=63.24rem){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz{width:100%;max-width:38.625rem;margin-inline:auto}}@media screen and (width>=80rem){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz{--brand-RiverBreakout-variant-gridline-spacing-outerInline:var(--base-size-60);--brand-RiverBreakout-variant-gridline-spacing-outerBlock:var(--base-size-60)}}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordion___fawN5{flex-direction:column;display:flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__wideTabList___mzEmX{flex-direction:column;padding-block-end:var(--base-size-80);display:flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisuals____0vGo{border-radius:var(--brand-borderRadius-small);order:1;width:100%;margin-block-end:var(--base-size-36);position:relative;overflow:hidden}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisuals___DbPMZ{width:100%;margin-block-end:var(--base-size-16);position:relative}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisualPanel___9C_mn{z-index:1;min-width:0;position:relative}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__backgroundVisual___rrq1M{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisual___BgAxG{z-index:1;position:relative}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--has-background-visual___4fOiK .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisualPanel___9C_mn,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--has-background-visual___4fOiK .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisual___BgAxG{padding:var(--base-size-32)}@media screen and (width>=63.25rem){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--has-background-visual___4fOiK .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisualPanel___9C_mn,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--has-background-visual___4fOiK .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisual___BgAxG{padding:var(--base-size-64)}}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--image-position-block-end___wyjv2 .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisualPanel___9C_mn,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--image-position-block-end___wyjv2 .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisual___BgAxG{padding-block-end:0}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--background-visual-full-bleed___HM5Fs .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisuals____0vGo{border-radius:0;overflow:visible}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs--background-visual-full-bleed___HM5Fs .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__backgroundVisual___rrq1M{inset-block-start:calc(-1 * var(--brand-RiverBreakout-variant-gridline-spacing-outerBlock));inset-inline:calc(-1 * var(--brand-RiverBreakout-variant-gridline-spacing-outerInline))}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisual___ST6p9 img,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisual___ST6p9 picture,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisual___ST6p9 video,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisual___BgAxG img,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisual___BgAxG picture,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionSharedVisual___BgAxG video{max-width:100%;display:block}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz [class*=River__visual--rounded]{border-radius:var(--brand-borderRadius-small)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__sharedVisualPanel___9C_mn[hidden]{display:none}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__tablist___sGkZH{grid-template-columns:repeat(var(--river-breakout-tabs-columns), minmax(0, 1fr));grid-gap:var(--base-size-40);gap:var(--base-size-40);order:2;display:grid}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__wideTabListActions____5ifh{grid-template-columns:repeat(var(--river-breakout-tabs-columns), minmax(0, 1fr));grid-gap:var(--base-size-40);gap:var(--base-size-40);order:3;display:grid}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__item___ZOgN5{flex-direction:column;align-items:flex-start;min-width:0;display:flex;position:relative}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__item___ZOgN5:before{content:"";height:var(--brand-borderWidth-thin);transform-origin:50% 0;background-color:var(--brand-color-border-muted);transition:transform var(--brand-animation-duration-fast) ease, background-color var(--brand-animation-duration-fast) ease;position:absolute;inset-block-start:0;inset-inline:0;transform:scaleY(1)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__item--selected___T8vyR:before{transform:translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);background-color:var(--brand-color-accent-primary)}@media screen and (width>=63.25rem) and (hover:hover) and (pointer:fine){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__item___ZOgN5:hover:before{transform:translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);background-color:var(--brand-color-accent-primary)}}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__heading___3N6_9{color:var(--brand-color-text-muted);transition:color var(--brand-animation-duration-fast) ease-in-out;margin:0}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__item--selected___T8vyR .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__heading___3N6_9{color:var(--brand-color-text-default)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__icon___0ToMw{justify-content:center;align-items:center;display:inline-flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__tab___Gukw0{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;outline:none;flex-direction:column;align-items:flex-start;padding-block-start:var(--base-size-28);padding-inline:0;display:flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__tab___Gukw0:focus-visible{outline:var(--brand-borderWidth-thick) solid var(--brand-color-focus);outline-offset:var(--base-size-4)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__tabHeading___WIYkc{margin:0}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__tab___Gukw0>*+.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__tabHeading___WIYkc{margin-block-start:var(--base-size-20)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__wideTabListContent___Thx_L{align-items:flex-start;gap:var(--base-size-12);flex-direction:column;margin-block-start:var(--base-size-12);display:flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__wideTabListAction____VPPu{color:var(--brand-Link-color-accent);font-weight:var(--base-text-weight-medium);-webkit-text-decoration:none;text-decoration:none}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__wideTabListActionItem___Vpe6P{margin-block-start:var(--base-size-12)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__content___NwDBO{align-items:flex-start;gap:var(--base-size-12);flex-direction:column;display:flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__link___NBLWE{-webkit-text-decoration:none;text-decoration:none}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordion___fawN5{padding-block-end:var(--base-size-40)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionContent___jxVob{align-items:flex-start;gap:var(--base-size-12);flex-direction:column;display:flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionContent___jxVob .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__link___NBLWE,.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionContent___jxVob .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__link___NBLWE>span{color:var(--brand-Link-color-accent);font-weight:var(--base-text-weight-medium)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionContent___jxVob .Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__link___NBLWE{-webkit-text-decoration:none;text-decoration:none}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionItem___59An1{border-top:none}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionItem___59An1:after{display:none}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionItem___59An1:before{content:"";height:var(--brand-borderWidth-thin);transform-origin:50% 0;background-color:var(--brand-color-border-muted);transition:transform var(--brand-animation-duration-fast) ease, background-color var(--brand-animation-duration-fast) ease;position:absolute;inset-block-start:0;inset-inline:0;transform:scaleY(1)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionItem___59An1.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__item--selected___T8vyR:before{transform:translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);background-color:var(--brand-color-accent-primary)}@media (hover:hover) and (pointer:fine){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionItem___59An1:hover:before{transform:translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);background-color:var(--brand-color-accent-primary)}}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionHeading___u6tN5{color:var(--brand-color-text-default)}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionHeadingInner___nuDDN{align-items:flex-start;gap:var(--base-size-12);flex-direction:column;display:inline-flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionIcon___GRZr8{flex-shrink:0}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionLabel___UsRuR{align-items:center;display:inline-flex}.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordionPanel___yTX_x{gap:var(--base-size-24);flex-direction:column;display:flex}@media screen and (width>=618px){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz{border-inline:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}}@media screen and (width>=63.25rem){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz{border-inline:none}}@media screen and (width>=1300px){.Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz{border-inline:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}}
@@ -1,4 +1,4 @@
1
- import './RiverBreakoutTabs.module-CH8jehnx.css';var e = {
1
+ import './RiverBreakoutTabs.module-CB2SZhbE.css';var e = {
2
2
  RiverBreakoutTabs: "Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs___V0qyz",
3
3
  RiverBreakoutTabs__accordion: "Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__accordion___fawN5",
4
4
  RiverBreakoutTabs__wideTabList: "Primer_Brand__RiverBreakoutTabs-module__RiverBreakoutTabs__wideTabList___mzEmX",
@@ -1 +1 @@
1
- {"version":3,"file":"RiverBreakoutTabs.module.js","names":[],"sources":["../../../src/river/RiverBreakoutTabs/RiverBreakoutTabs.module.css"],"sourcesContent":[".RiverBreakoutTabs {\n --river-breakout-tabs-columns: 1;\n}\n\n@media screen and (max-width: 63.24rem) {\n .RiverBreakoutTabs {\n width: 100%;\n max-width: 38.625rem;\n margin-inline: auto;\n }\n}\n\n@media screen and (min-width: 80rem) {\n .RiverBreakoutTabs {\n --brand-RiverBreakout-variant-gridline-spacing-outerInline: var(--base-size-60);\n --brand-RiverBreakout-variant-gridline-spacing-outerBlock: var(--base-size-60);\n }\n}\n\n.RiverBreakoutTabs__accordion {\n display: flex;\n flex-direction: column;\n}\n\n.RiverBreakoutTabs__wideTabList {\n display: flex;\n flex-direction: column;\n padding-block-end: var(--base-size-80);\n}\n\n.RiverBreakoutTabs__sharedVisuals {\n position: relative;\n order: 1;\n margin-block-end: var(--base-size-36);\n width: 100%;\n overflow: hidden;\n border-radius: var(--brand-borderRadius-small);\n}\n\n/* River removes the gridline top spacing when a subtle visual is present\n (.RiverBreakout--variant-gridline:has(.River__visual--has-background)), bleeding the subtle\n background up to the top gridline. Restore the top spacing so a non-full-bleed background is\n inset from the top like the sides — only backgroundVisualFullBleed should reach the\n top gridline. */\n.RiverBreakoutTabs:has(:global([class*='River__visual--has-background'])) {\n padding-block-start: var(--brand-RiverBreakout-variant-gridline-spacing-outerBlock);\n}\n\n.RiverBreakoutTabs__accordionSharedVisuals {\n position: relative;\n margin-block-end: var(--base-size-16);\n width: 100%;\n}\n\n.RiverBreakoutTabs__sharedVisualPanel {\n position: relative;\n z-index: 1;\n min-width: 0;\n}\n\n.RiverBreakoutTabs__backgroundVisual {\n position: absolute;\n inset: 0;\n z-index: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.RiverBreakoutTabs__accordionSharedVisual {\n position: relative;\n z-index: 1;\n}\n\n.RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__sharedVisualPanel,\n.RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__accordionSharedVisual {\n padding: var(--base-size-32);\n}\n\n@media screen and (min-width: 63.25rem) {\n .RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__sharedVisualPanel,\n .RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__accordionSharedVisual {\n padding: var(--base-size-64);\n }\n}\n\n/* for imagePosition=\"block-end\" */\n.RiverBreakoutTabs--image-position-block-end .RiverBreakoutTabs__sharedVisualPanel,\n.RiverBreakoutTabs--image-position-block-end .RiverBreakoutTabs__accordionSharedVisual {\n padding-block-end: 0;\n}\n\n/* for backgroundVisualFullBleed — extend the backdrop to the gridline edges */\n.RiverBreakoutTabs--background-visual-full-bleed .RiverBreakoutTabs__sharedVisuals {\n overflow: visible;\n border-radius: 0;\n}\n\n.RiverBreakoutTabs--background-visual-full-bleed .RiverBreakoutTabs__backgroundVisual {\n inset-block-start: calc(-1 * var(--brand-RiverBreakout-variant-gridline-spacing-outerBlock));\n inset-inline: calc(-1 * var(--brand-RiverBreakout-variant-gridline-spacing-outerInline));\n}\n\n.RiverBreakoutTabs__sharedVisual :is(img, picture, video),\n.RiverBreakoutTabs__accordionSharedVisual :is(img, picture, video) {\n display: block;\n max-width: 100%;\n}\n\n.RiverBreakoutTabs :global([class*='River__visual--rounded']) {\n border-radius: var(--brand-borderRadius-small);\n}\n\n.RiverBreakoutTabs__sharedVisualPanel[hidden] {\n display: none;\n}\n\n.RiverBreakoutTabs__tablist {\n order: 2;\n display: grid;\n grid-template-columns: repeat(var(--river-breakout-tabs-columns), minmax(0, 1fr));\n gap: var(--base-size-40);\n}\n\n.RiverBreakoutTabs__wideTabListActions {\n order: 3;\n display: grid;\n grid-template-columns: repeat(var(--river-breakout-tabs-columns), minmax(0, 1fr));\n gap: var(--base-size-40);\n}\n\n.RiverBreakoutTabs__item {\n position: relative;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.RiverBreakoutTabs__item::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline: 0;\n height: var(--brand-borderWidth-thin);\n transform: scaleY(1);\n transform-origin: 50% 0;\n background-color: var(--brand-color-border-muted);\n transition: transform var(--brand-animation-duration-fast) ease,\n background-color var(--brand-animation-duration-fast) ease;\n}\n\n.RiverBreakoutTabs__item--selected::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n}\n\n@media screen and (min-width: 63.25rem) and (hover: hover) and (pointer: fine) {\n .RiverBreakoutTabs__item:hover::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n }\n}\n\n.RiverBreakoutTabs__heading {\n margin: 0;\n color: var(--brand-color-text-muted);\n transition: color var(--brand-animation-duration-fast) ease-in-out;\n}\n\n.RiverBreakoutTabs__item--selected .RiverBreakoutTabs__heading {\n color: var(--brand-color-text-default);\n}\n\n.RiverBreakoutTabs__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.RiverBreakoutTabs__tab {\n width: 100%;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n padding-block-start: var(--base-size-28);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n cursor: pointer;\n outline: none;\n padding-inline: 0;\n}\n\n.RiverBreakoutTabs__tab:focus-visible {\n outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);\n outline-offset: var(--base-size-4);\n}\n\n.RiverBreakoutTabs__tabHeading {\n margin: 0;\n}\n\n/* 20px below the icon — only applies when an icon precedes the heading */\n.RiverBreakoutTabs__tab > * + .RiverBreakoutTabs__tabHeading {\n margin-block-start: var(--base-size-20);\n}\n\n.RiverBreakoutTabs__wideTabListContent {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n margin-block-start: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__wideTabListAction {\n color: var(--brand-Link-color-accent);\n font-weight: var(--base-text-weight-medium);\n text-decoration: none;\n}\n\n.RiverBreakoutTabs__wideTabListActionItem {\n margin-block-start: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__content {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__link {\n text-decoration: none;\n}\n\n.RiverBreakoutTabs__accordion {\n padding-block-end: var(--base-size-40);\n}\n\n.RiverBreakoutTabs__accordionContent {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__accordionContent .RiverBreakoutTabs__link,\n.RiverBreakoutTabs__accordionContent .RiverBreakoutTabs__link > span {\n color: var(--brand-Link-color-accent);\n font-weight: var(--base-text-weight-medium);\n}\n\n.RiverBreakoutTabs__accordionContent .RiverBreakoutTabs__link {\n text-decoration: none;\n}\n\n.RiverBreakoutTabs__accordionItem {\n border-top: none;\n}\n\n.RiverBreakoutTabs__accordionItem::after {\n display: none;\n}\n\n.RiverBreakoutTabs__accordionItem::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline: 0;\n height: var(--brand-borderWidth-thin);\n transform: scaleY(1);\n transform-origin: 50% 0;\n background-color: var(--brand-color-border-muted);\n transition: transform var(--brand-animation-duration-fast) ease,\n background-color var(--brand-animation-duration-fast) ease;\n}\n\n.RiverBreakoutTabs__accordionItem.RiverBreakoutTabs__item--selected::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .RiverBreakoutTabs__accordionItem:hover::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n }\n}\n\n.RiverBreakoutTabs__accordionHeading {\n color: var(--brand-color-text-default);\n}\n\n.RiverBreakoutTabs__accordionHeadingInner {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__accordionIcon {\n flex-shrink: 0;\n}\n\n.RiverBreakoutTabs__accordionLabel {\n display: inline-flex;\n align-items: center;\n}\n\n.RiverBreakoutTabs__accordionPanel {\n display: flex;\n flex-direction: column;\n gap: var(--base-size-24);\n}\n\n@media screen and (min-width: 618px) {\n .RiverBreakoutTabs {\n border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n }\n}\n\n@media screen and (min-width: 63.25rem) {\n .RiverBreakoutTabs {\n border-inline: none;\n }\n}\n\n@media screen and (min-width: 1300px) {\n .RiverBreakoutTabs {\n border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"RiverBreakoutTabs.module.js","names":[],"sources":["../../../src/river/RiverBreakoutTabs/RiverBreakoutTabs.module.css"],"sourcesContent":[".RiverBreakoutTabs {\n --river-breakout-tabs-columns: 1;\n}\n\n@media screen and (max-width: 63.24rem) {\n .RiverBreakoutTabs {\n width: 100%;\n max-width: 38.625rem;\n margin-inline: auto;\n }\n}\n\n@media screen and (min-width: 80rem) {\n .RiverBreakoutTabs {\n --brand-RiverBreakout-variant-gridline-spacing-outerInline: var(--base-size-60);\n --brand-RiverBreakout-variant-gridline-spacing-outerBlock: var(--base-size-60);\n }\n}\n\n.RiverBreakoutTabs__accordion {\n display: flex;\n flex-direction: column;\n}\n\n.RiverBreakoutTabs__wideTabList {\n display: flex;\n flex-direction: column;\n padding-block-end: var(--base-size-80);\n}\n\n.RiverBreakoutTabs__sharedVisuals {\n position: relative;\n order: 1;\n margin-block-end: var(--base-size-36);\n width: 100%;\n overflow: hidden;\n border-radius: var(--brand-borderRadius-small);\n}\n\n.RiverBreakoutTabs__accordionSharedVisuals {\n position: relative;\n margin-block-end: var(--base-size-16);\n width: 100%;\n}\n\n.RiverBreakoutTabs__sharedVisualPanel {\n position: relative;\n z-index: 1;\n min-width: 0;\n}\n\n.RiverBreakoutTabs__backgroundVisual {\n position: absolute;\n inset: 0;\n z-index: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.RiverBreakoutTabs__accordionSharedVisual {\n position: relative;\n z-index: 1;\n}\n\n.RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__sharedVisualPanel,\n.RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__accordionSharedVisual {\n padding: var(--base-size-32);\n}\n\n@media screen and (min-width: 63.25rem) {\n .RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__sharedVisualPanel,\n .RiverBreakoutTabs--has-background-visual .RiverBreakoutTabs__accordionSharedVisual {\n padding: var(--base-size-64);\n }\n}\n\n/* for imagePosition=\"block-end\" */\n.RiverBreakoutTabs--image-position-block-end .RiverBreakoutTabs__sharedVisualPanel,\n.RiverBreakoutTabs--image-position-block-end .RiverBreakoutTabs__accordionSharedVisual {\n padding-block-end: 0;\n}\n\n/* for backgroundVisualFullBleed — extend the backdrop to the gridline edges */\n.RiverBreakoutTabs--background-visual-full-bleed .RiverBreakoutTabs__sharedVisuals {\n overflow: visible;\n border-radius: 0;\n}\n\n.RiverBreakoutTabs--background-visual-full-bleed .RiverBreakoutTabs__backgroundVisual {\n inset-block-start: calc(-1 * var(--brand-RiverBreakout-variant-gridline-spacing-outerBlock));\n inset-inline: calc(-1 * var(--brand-RiverBreakout-variant-gridline-spacing-outerInline));\n}\n\n.RiverBreakoutTabs__sharedVisual :is(img, picture, video),\n.RiverBreakoutTabs__accordionSharedVisual :is(img, picture, video) {\n display: block;\n max-width: 100%;\n}\n\n.RiverBreakoutTabs :global([class*='River__visual--rounded']) {\n border-radius: var(--brand-borderRadius-small);\n}\n\n.RiverBreakoutTabs__sharedVisualPanel[hidden] {\n display: none;\n}\n\n.RiverBreakoutTabs__tablist {\n order: 2;\n display: grid;\n grid-template-columns: repeat(var(--river-breakout-tabs-columns), minmax(0, 1fr));\n gap: var(--base-size-40);\n}\n\n.RiverBreakoutTabs__wideTabListActions {\n order: 3;\n display: grid;\n grid-template-columns: repeat(var(--river-breakout-tabs-columns), minmax(0, 1fr));\n gap: var(--base-size-40);\n}\n\n.RiverBreakoutTabs__item {\n position: relative;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.RiverBreakoutTabs__item::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline: 0;\n height: var(--brand-borderWidth-thin);\n transform: scaleY(1);\n transform-origin: 50% 0;\n background-color: var(--brand-color-border-muted);\n transition: transform var(--brand-animation-duration-fast) ease,\n background-color var(--brand-animation-duration-fast) ease;\n}\n\n.RiverBreakoutTabs__item--selected::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n}\n\n@media screen and (min-width: 63.25rem) and (hover: hover) and (pointer: fine) {\n .RiverBreakoutTabs__item:hover::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n }\n}\n\n.RiverBreakoutTabs__heading {\n margin: 0;\n color: var(--brand-color-text-muted);\n transition: color var(--brand-animation-duration-fast) ease-in-out;\n}\n\n.RiverBreakoutTabs__item--selected .RiverBreakoutTabs__heading {\n color: var(--brand-color-text-default);\n}\n\n.RiverBreakoutTabs__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.RiverBreakoutTabs__tab {\n width: 100%;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n padding-block-start: var(--base-size-28);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n cursor: pointer;\n outline: none;\n padding-inline: 0;\n}\n\n.RiverBreakoutTabs__tab:focus-visible {\n outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);\n outline-offset: var(--base-size-4);\n}\n\n.RiverBreakoutTabs__tabHeading {\n margin: 0;\n}\n\n/* 20px below the icon — only applies when an icon precedes the heading */\n.RiverBreakoutTabs__tab > * + .RiverBreakoutTabs__tabHeading {\n margin-block-start: var(--base-size-20);\n}\n\n.RiverBreakoutTabs__wideTabListContent {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n margin-block-start: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__wideTabListAction {\n color: var(--brand-Link-color-accent);\n font-weight: var(--base-text-weight-medium);\n text-decoration: none;\n}\n\n.RiverBreakoutTabs__wideTabListActionItem {\n margin-block-start: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__content {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__link {\n text-decoration: none;\n}\n\n.RiverBreakoutTabs__accordion {\n padding-block-end: var(--base-size-40);\n}\n\n.RiverBreakoutTabs__accordionContent {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__accordionContent .RiverBreakoutTabs__link,\n.RiverBreakoutTabs__accordionContent .RiverBreakoutTabs__link > span {\n color: var(--brand-Link-color-accent);\n font-weight: var(--base-text-weight-medium);\n}\n\n.RiverBreakoutTabs__accordionContent .RiverBreakoutTabs__link {\n text-decoration: none;\n}\n\n.RiverBreakoutTabs__accordionItem {\n border-top: none;\n}\n\n.RiverBreakoutTabs__accordionItem::after {\n display: none;\n}\n\n.RiverBreakoutTabs__accordionItem::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline: 0;\n height: var(--brand-borderWidth-thin);\n transform: scaleY(1);\n transform-origin: 50% 0;\n background-color: var(--brand-color-border-muted);\n transition: transform var(--brand-animation-duration-fast) ease,\n background-color var(--brand-animation-duration-fast) ease;\n}\n\n.RiverBreakoutTabs__accordionItem.RiverBreakoutTabs__item--selected::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .RiverBreakoutTabs__accordionItem:hover::before {\n transform: translateY(calc(-1 * var(--brand-borderWidth-thin))) scaleY(2);\n background-color: var(--brand-color-accent-primary);\n }\n}\n\n.RiverBreakoutTabs__accordionHeading {\n color: var(--brand-color-text-default);\n}\n\n.RiverBreakoutTabs__accordionHeadingInner {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-12);\n}\n\n.RiverBreakoutTabs__accordionIcon {\n flex-shrink: 0;\n}\n\n.RiverBreakoutTabs__accordionLabel {\n display: inline-flex;\n align-items: center;\n}\n\n.RiverBreakoutTabs__accordionPanel {\n display: flex;\n flex-direction: column;\n gap: var(--base-size-24);\n}\n\n@media screen and (min-width: 618px) {\n .RiverBreakoutTabs {\n border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n }\n}\n\n@media screen and (min-width: 63.25rem) {\n .RiverBreakoutTabs {\n border-inline: none;\n }\n}\n\n@media screen and (min-width: 1300px) {\n .RiverBreakoutTabs {\n border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n }\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--ease:cubic-bezier(.22, .56, .23, .89);-webkit-font-smoothing:antialiased;--stackDistance:calc(var(--base-size-24) * -1);--visualMaxWidth:1032px;--visualMaxWidthUL:1032;--visualMaxHeight:min(690px, 60vh);--visualMaxHeightUL:690;--storyScrollPadding:min(32px, 5vw);position:relative}@media (height<=720px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--visualMaxHeight:55vh}}@media (height<=600px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--visualMaxHeight:50vh}}@media (height<=500px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--visualMaxHeight:40vh}}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__inner___WF5b_{position:relative}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-cover___3Fzq_{width:100%;position:absolute;left:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__image___SlwET{z-index:10;border-radius:var(--brand-borderRadius-large);width:auto;margin-left:auto;margin-right:auto;display:block;position:relative}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll--enabled___rZJ_t .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__internal-river___Z0U1_{grid-template-columns:1fr;gap:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll--enabled___rZJ_t .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__internal-river___Z0U1_ img,.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll--enabled___rZJ_t .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__internal-river___Z0U1_ video{display:none}@media (width<=542px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--topOffset:calc((100vh - min(664px, 60vh)) / 5)}}@media (width<=768px) and (height>=670px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--extraBottomSpacing:calc(-1 * (100vh - 100vw) / 5)}}@media (width>=542px) and (width<=1028px) and (height>=670px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--extraBottomSpacing:calc(-1 * (100vh - 100vw) / 3)}}@media (width>=542px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--scrollTextHeight:42vh}}@media (height<=520px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--scrollTextHeight:70vh}}@media (width>=1028px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--stackDistance:-30px}}@media (height<=800px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--stackDistance:-20px}}@media (height<=500px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--stackDistance:-15px}}@media screen and (width<=768px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{--topOffset:calc((100vh - min(664px, 60vh)) / 3);--availableWidth:calc(100vw - var(--storyScrollPadding) * 2);--relativeVisualHeight:calc(var(--visualMaxHeightUL) / var(--visualMaxWidthUL) * var(--availableWidth));--visualHeight:min(var(--visualMaxHeight), var(--relativeVisualHeight));--visualWidth:calc(var(--visualHeight) * var(--visualMaxWidthUL) / var(--visualMaxHeightUL));--scrollTextHeight:58vh;--textToVisualPadding:max(5vh, 40px);--topScrollOffset:calc(var(--visualHeight));--bottomScrollOffset:calc(100vh - var(--topOffset) - var(--visualHeight) - var(--textToVisualPadding));--extraBottomSpacing:70px}@supports (height:100dvh){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-container-inner___6xmBy{height:100dvh}}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-container___F1VHb{width:100%;height:100%;position:absolute;top:0;left:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i{min-height:var(--scrollTextHeight);transition:opacity .3s var(--ease);position:relative}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i:has(+.Primer_Brand__RiverStoryScroll-module__in-viewport___QNWnS){opacity:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i.Primer_Brand__RiverStoryScroll-module__in-viewport___QNWnS+.Primer_Brand__RiverStoryScroll-module__outside-viewport___d_yN_{opacity:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{max-width:calc(1032px + var(--storyScrollPadding) * 2);padding-right:var(--storyScrollPadding);padding-left:var(--storyScrollPadding);margin-top:min(30vw,22vh);margin-left:auto;margin-right:auto}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-container--below___wHtLU{padding-top:var(--topScrollOffset);padding-bottom:var(--bottomScrollOffset)}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__image___SlwET{width:100%;height:auto;max-width:var(--visualWidth);border-radius:var(--brand-borderRadius-large)}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-container-inner___6xmBy{pointer-events:none;padding-top:var(--topOffset);margin-top:calc(-1 * var(--topOffset));z-index:1;flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual--below___E8917{background-image:linear-gradient(180deg, var(--brand-RiverStoryScroll-content-inactive-bgColor) calc(var(--topOffset) + var(--visualHeight) + 3px), transparent calc(var(--topOffset) + var(--visualHeight) + var(--textToVisualPadding)), transparent 93%, var(--brand-RiverStoryScroll-content-inactive-bgColor) 99%)}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual--below___E8917 .Primer_Brand__RiverStoryScroll-module__story-scroll-text___fiWO6{margin-top:var(--base-size-40)}.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4{opacity:0;display:none}.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4:nth-child(2){opacity:1;display:block}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-scroll-responder___AqOJd{transition:.5s var(--ease) transform, .5s var(--ease) filter, .5s var(--ease) opacity;pointer-events:auto}.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4:has(~.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh){margin-left:auto;margin-right:auto;display:block;position:absolute;left:0;right:0}.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh+.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4{transform:translateY(calc(var(--stackDistance) * -1)) scale(1.015);margin-left:auto;margin-right:auto;display:block;position:absolute;left:0;right:0}.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4:has(+.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh){transform:translateY(var(--stackDistance)) scale(.95);filter:brightness(70%);opacity:1}.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4:has(+.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4+.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh){transform:translateY(calc(var(--stackDistance) * 2)) scale(.9);filter:brightness(50%);opacity:1}.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4:has(+.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4+.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4+.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh){transform:translateY(calc(var(--stackDistance) * 3)) scale(.85);filter:brightness(30%);opacity:1}.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4:has(+.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4+.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4+.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4+.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh){transform:translateY(calc(var(--stackDistance) * 4)) scale(.8);filter:brightness(10%);opacity:1}.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh{display:block;position:relative}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-stack___LUJFy{padding-top:var(--textToVisualPadding);top:calc(var(--topOffset) + var(--visualHeight));position:sticky}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i:last-child .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-stack___LUJFy{height:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination___N3Qqs{gap:var(--base-size-4);left:calc(var(--base-size-20) * -1 - 2px);height:var(--visualHeight);margin:auto;flex-direction:column;justify-content:center;margin-block-start:calc(var(--base-size-20) * -1);display:flex;position:absolute;right:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination-dot___K1RGe{border-radius:var(--brand-borderRadius-large);opacity:.55;background:var(--brand-RiverStoryScroll-pagination-fgColor);width:6px;height:6px;transition:opacity var(--brand-animation-duration-default) var(--ease), height var(--brand-animation-duration-default) var(--ease)}.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh:nth-child(2)~.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination___N3Qqs .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination-dot___K1RGe:first-child,.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh:nth-child(3)~.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination___N3Qqs .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination-dot___K1RGe:nth-child(2),.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh:nth-child(4)~.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination___N3Qqs .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination-dot___K1RGe:nth-child(3),.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh:nth-child(5)~.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination___N3Qqs .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination-dot___K1RGe:nth-child(4),.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh:nth-child(6)~.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination___N3Qqs .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__pagination-dot___K1RGe:nth-child(5){opacity:1;height:var(--base-size-24)}}@media screen and (width>=768px){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__inner___WF5b_{grid-gap:var(--base-size-24);gap:var(--base-size-24);grid-template-columns:1fr 1fr;display:grid}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-container___F1VHb{order:2;align-items:center;width:100%;height:80vh;display:flex;position:sticky;top:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-container-inner___6xmBy,.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__image___SlwET{width:100%}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-scroll-responder___AqOJd{width:100%;transition:opacity .3s var(--ease);padding-top:10vh;position:sticky;top:0;right:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-container-inner___6xmBy.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual--below___E8917{position:sticky;top:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-scroll-responder___AqOJd.Primer_Brand__RiverStoryScroll-module__tracker-outside-viewport___QV3v4{z-index:-1;opacity:0;position:absolute;top:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-scroll-responder___AqOJd.Primer_Brand__RiverStoryScroll-module__tracker-in-viewport___oZzIh{z-index:1;opacity:1}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-container___8f_JH.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-container--below___wHtLU{padding-top:10vh}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-container___8f_JH.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-container--below___wHtLU .Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i{padding:20vh 0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i.Primer_Brand__RiverStoryScroll-module__outside-viewport___d_yN_{position:relative}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i{filter:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i.Primer_Brand__RiverStoryScroll-module__outside-viewport___d_yN_{filter:blur(1px);transition:filter var(--brand-animation-duration-extended) var(--brand-animation-easing-default)}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i:after{content:"";transition:opacity var(--brand-animation-duration-extended) var(--brand-animation-easing-default), visibility var(--brand-animation-duration-extended) var(--brand-animation-easing-default);opacity:0;visibility:hidden;background-color:var(--brand-RiverStoryScroll-content-inactive-bgColor);position:absolute;inset:0}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__tracker___Xrp6i.Primer_Brand__RiverStoryScroll-module__outside-viewport___d_yN_:after{opacity:.7;visibility:visible}}@media screen and (width>=768px) and (height>=900px) and (prefers-reduced-motion:no-preference){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC{margin-top:-20vh}.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-container___8f_JH.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__content-container--below___wHtLU{padding-top:16vh}}@media (prefers-reduced-motion:reduce){.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC,.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC:before,.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC:after,.Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@@ -1,4 +1,4 @@
1
- import './RiverStoryScroll.module-D8dFaLHq.css';var e = {
1
+ import './RiverStoryScroll.module-kez68wMZ.css';var e = {
2
2
  RiverStoryScroll: "Primer_Brand__RiverStoryScroll-module__RiverStoryScroll___1WYYC",
3
3
  RiverStoryScroll__inner: "Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__inner___WF5b_",
4
4
  "RiverStoryScroll__visual-cover": "Primer_Brand__RiverStoryScroll-module__RiverStoryScroll__visual-cover___3Fzq_",
@@ -1 +1 @@
1
- {"version":3,"file":"RiverStoryScroll.module.js","names":[],"sources":["../../../src/river/RiverStoryScroll/RiverStoryScroll.module.css"],"sourcesContent":[".RiverStoryScroll {\n --ease: cubic-bezier(0.22, 0.56, 0.23, 0.89);\n -webkit-font-smoothing: antialiased;\n --stackDistance: calc(var(--base-size-24) * -1);\n\n /* River visual (videos)\n * UL = unit-less, needed for division in certain scenarios\n */\n --visualMaxWidth: 1032px;\n --visualMaxWidthUL: 1032;\n --visualMaxHeight: min(690px, 60vh);\n --visualMaxHeightUL: 690;\n --storyScrollPadding: min(32px, 5vw);\n position: relative;\n}\n@media (max-height: 720px) {\n .RiverStoryScroll {\n --visualMaxHeight: 55vh;\n }\n}\n\n@media (max-height: 600px) {\n .RiverStoryScroll {\n --visualMaxHeight: 50vh;\n }\n}\n\n@media (max-height: 500px) {\n .RiverStoryScroll {\n --visualMaxHeight: 40vh;\n }\n}\n\n.RiverStoryScroll__inner {\n position: relative;\n}\n\n.RiverStoryScroll__visual-cover {\n position: absolute;\n left: 0;\n width: 100%;\n}\n\n.RiverStoryScroll__image {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n z-index: 10;\n position: relative;\n border-radius: var(--brand-borderRadius-large);\n}\n\n.RiverStoryScroll--enabled .RiverStoryScroll__internal-river {\n grid-template-columns: 1fr;\n gap: 0;\n}\n\n.RiverStoryScroll--enabled .RiverStoryScroll__internal-river img,\n.RiverStoryScroll--enabled .RiverStoryScroll__internal-river video {\n display: none;\n}\n\n@media (max-width: 542px) {\n .RiverStoryScroll {\n --topOffset: calc((100vh - min(664px, 60vh)) / 5);\n }\n}\n\n@media (max-width: 768px) and (min-height: 670px) {\n .RiverStoryScroll {\n --extraBottomSpacing: calc(-1 * (100vh - 100vw) / 5);\n }\n}\n\n@media (min-width: 542px) and (max-width: 1028px) and (min-height: 670px) {\n .RiverStoryScroll {\n --extraBottomSpacing: calc(-1 * (100vh - 100vw) / 3);\n }\n}\n\n@media (min-width: 542px) {\n .RiverStoryScroll {\n --scrollTextHeight: 42vh;\n }\n}\n\n@media (max-height: 520px) {\n .RiverStoryScroll {\n --scrollTextHeight: 70vh;\n }\n}\n\n@media (min-width: 1028px) {\n .RiverStoryScroll {\n --stackDistance: -30px;\n }\n}\n\n@media (max-height: 800px) {\n .RiverStoryScroll {\n --stackDistance: -20px;\n }\n}\n\n@media (max-height: 500px) {\n .RiverStoryScroll {\n --stackDistance: -15px;\n }\n}\n\n@media screen and (max-width: 768px) {\n .RiverStoryScroll {\n --topOffset: calc((100vh - min(664px, 60vh)) / 3);\n\n /* Spacing above the visual */\n --availableWidth: calc(100vw - var(--storyScrollPadding) * 2);\n --relativeVisualHeight: calc(var(--visualMaxHeightUL) / var(--visualMaxWidthUL) * var(--availableWidth));\n --visualHeight: min(var(--visualMaxHeight), var(--relativeVisualHeight));\n --visualWidth: calc(var(--visualHeight) * var(--visualMaxWidthUL) / var(--visualMaxHeightUL));\n --scrollTextHeight: 58vh;\n --textToVisualPadding: max(5vh, 40px);\n\n --topScrollOffset: calc(var(--visualHeight));\n --bottomScrollOffset: calc(100vh - var(--topOffset) - var(--visualHeight) - var(--textToVisualPadding));\n\n --extraBottomSpacing: 70px;\n }\n\n /* Enhanced styling if dvh is supported */\n @supports (height: 100dvh) {\n .RiverStoryScroll__visual-container-inner {\n height: 100dvh;\n }\n }\n\n .RiverStoryScroll__visual-container {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n }\n\n .RiverStoryScroll__tracker {\n min-height: var(--scrollTextHeight);\n position: relative;\n transition: opacity 0.3s var(--ease);\n }\n\n .RiverStoryScroll__tracker:has(+ .in-viewport) {\n opacity: 0;\n }\n\n .RiverStoryScroll__tracker.in-viewport + .outside-viewport {\n opacity: 0;\n }\n\n .RiverStoryScroll {\n max-width: calc(1032px + var(--storyScrollPadding) * 2);\n margin-top: min(30vw, 22vh);\n margin-left: auto;\n margin-right: auto;\n padding-right: var(--storyScrollPadding);\n padding-left: var(--storyScrollPadding);\n }\n\n .RiverStoryScroll__content-container--below {\n padding-top: var(--topScrollOffset);\n padding-bottom: var(--bottomScrollOffset);\n }\n\n .RiverStoryScroll__image {\n height: auto;\n width: 100%;\n max-width: var(--visualWidth);\n border-radius: var(--brand-borderRadius-large);\n }\n\n .RiverStoryScroll__visual-container-inner {\n position: sticky;\n pointer-events: none;\n top: 0;\n padding-top: var(--topOffset);\n margin-top: calc(-1 * var(--topOffset));\n display: flex;\n z-index: 1;\n flex-direction: column;\n height: 100vh;\n }\n\n .RiverStoryScroll__visual--below {\n background-image: linear-gradient(\n 180deg,\n var(--brand-RiverStoryScroll-content-inactive-bgColor) calc(var(--topOffset) + var(--visualHeight) + 3px),\n transparent calc(var(--topOffset) + var(--visualHeight) + var(--textToVisualPadding)),\n transparent 93%,\n var(--brand-RiverStoryScroll-content-inactive-bgColor) 99%\n );\n }\n\n .RiverStoryScroll__visual--below .story-scroll-text {\n margin-top: var(--base-size-40);\n }\n\n .tracker-outside-viewport {\n opacity: 0;\n display: none;\n }\n\n /* Show first visual, even when nothing is visible */\n .tracker-outside-viewport:nth-child(2) {\n opacity: 1;\n display: block;\n }\n\n .RiverStoryScroll__visual-scroll-responder {\n transition: 0.5s var(--ease) transform, 0.5s var(--ease) filter, 0.5s var(--ease) opacity;\n pointer-events: auto;\n }\n\n .tracker-outside-viewport:has(~ .tracker-in-viewport) {\n position: absolute;\n display: block;\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n }\n\n .tracker-in-viewport + .tracker-outside-viewport {\n transform: translateY(calc(var(--stackDistance) * -1)) scale(1.015);\n position: absolute;\n display: block;\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n }\n\n .tracker-outside-viewport:has(+ .tracker-in-viewport) {\n transform: translateY(var(--stackDistance)) scale(0.95);\n filter: brightness(70%);\n opacity: 1;\n }\n\n .tracker-outside-viewport:has(+ .tracker-outside-viewport + .tracker-in-viewport) {\n transform: translateY(calc(var(--stackDistance) * 2)) scale(0.9);\n filter: brightness(50%);\n opacity: 1;\n }\n\n .tracker-outside-viewport:has(+ .tracker-outside-viewport + .tracker-outside-viewport + .tracker-in-viewport) {\n transform: translateY(calc(var(--stackDistance) * 3)) scale(0.85);\n filter: brightness(30%);\n opacity: 1;\n }\n\n .tracker-outside-viewport:has(\n + .tracker-outside-viewport + .tracker-outside-viewport + .tracker-outside-viewport + .tracker-in-viewport\n ) {\n transform: translateY(calc(var(--stackDistance) * 4)) scale(0.8);\n filter: brightness(10%);\n opacity: 1;\n }\n\n .tracker-in-viewport {\n display: block;\n position: relative;\n }\n\n /* \n TODO: Re-enable these at a later date\n \n .video-controls {\n --distanceFromEdge: 12px;\n position: absolute;\n right: calc((100% - var(--visualWidth)) / 2 + var(--distanceFromEdge));\n bottom: var(--distanceFromEdge);\n z-index: 10;\n pointer-events: auto;\n transition: opacity 0.3s var(--ease);\n opacity: 0;\n }\n\n @media (min-width: 542px) {\n .video-controls {\n --distanceFromEdge: 20px;\n }\n }\n\n .RiverStoryScroll__visual-scroll-responder:hover .video-controls,\n .video-controls-ended {\n opacity: 1;\n }\n\n .video-control {\n background-color: rgba(0, 0, 0, 0.18);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 200px;\n width: 44px;\n height: 44px;\n transition: background-color 0.2s ease;\n }\n\n .video-control:hover,\n .video-control:focus {\n background-color: rgba(0, 0, 0, 0.35);\n } */\n\n .RiverStoryScroll__content-stack {\n position: sticky;\n padding-top: var(--textToVisualPadding);\n top: calc(var(--topOffset) + var(--visualHeight));\n }\n\n /* This is a hack to make the sticky behavior exclude the height of itself as it reaches the bottom */\n /* This makes it possible to calculate the end of the sticky scroll without having to account for text content */\n .RiverStoryScroll__tracker:last-child .RiverStoryScroll__content-stack {\n height: 0;\n }\n\n .RiverStoryScroll__pagination {\n display: flex;\n flex-direction: column;\n gap: var(--base-size-4);\n position: absolute;\n left: calc(var(--base-size-20) * -1 - 2px);\n right: 0;\n margin: auto;\n height: var(--visualHeight);\n justify-content: center;\n margin-block-start: calc(var(--base-size-20) * -1);\n }\n\n .RiverStoryScroll__pagination-dot {\n width: 6px;\n height: 6px;\n border-radius: var(--brand-borderRadius-large);\n opacity: 0.55;\n background: var(--brand-RiverStoryScroll-pagination-fgColor);\n transition: opacity var(--brand-animation-duration-default) var(--ease),\n height var(--brand-animation-duration-default) var(--ease);\n }\n\n .tracker-in-viewport:nth-child(2) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(1) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(3) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(2) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(4) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(3) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(5) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(4) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(6) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(5) {\n opacity: 1;\n height: var(--base-size-24);\n }\n}\n\n@media screen and (min-width: 768px) {\n .RiverStoryScroll__inner {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--base-size-24);\n }\n\n .RiverStoryScroll__visual-container {\n position: sticky;\n width: 100%;\n top: 0;\n height: 80vh;\n display: flex;\n align-items: center;\n order: 2;\n }\n\n .RiverStoryScroll__visual-container-inner,\n .RiverStoryScroll__image {\n width: 100%;\n }\n\n .RiverStoryScroll .RiverStoryScroll__visual-scroll-responder {\n position: sticky;\n top: 0;\n width: 100%;\n right: 0;\n transition: opacity 0.3s var(--ease);\n padding-top: 10vh;\n }\n\n .RiverStoryScroll__visual-container-inner.RiverStoryScroll__visual--below {\n position: sticky;\n top: 0;\n }\n\n .RiverStoryScroll__visual-scroll-responder.tracker-outside-viewport {\n position: absolute;\n top: 0;\n z-index: -1;\n opacity: 0;\n }\n\n .RiverStoryScroll__visual-scroll-responder.tracker-in-viewport {\n z-index: 1;\n opacity: 1;\n }\n\n .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below {\n padding-top: 10vh;\n }\n\n .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below .RiverStoryScroll__tracker {\n padding: 20vh 0;\n }\n\n .RiverStoryScroll__tracker.outside-viewport {\n position: relative;\n }\n\n .RiverStoryScroll__tracker {\n filter: 0;\n }\n\n .RiverStoryScroll__tracker.outside-viewport {\n filter: blur(1px);\n transition: filter var(--brand-animation-duration-extended) var(--brand-animation-easing-default);\n }\n\n .RiverStoryScroll__tracker::after {\n content: '';\n transition: opacity var(--brand-animation-duration-extended) var(--brand-animation-easing-default),\n visibility var(--brand-animation-duration-extended) var(--brand-animation-easing-default);\n opacity: 0;\n visibility: hidden;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--brand-RiverStoryScroll-content-inactive-bgColor);\n }\n\n .RiverStoryScroll__tracker.outside-viewport::after {\n opacity: 0.7;\n visibility: visible;\n }\n}\n\n@media screen and (min-width: 768px) and (min-height: 900px) and (prefers-reduced-motion: no-preference) {\n .RiverStoryScroll {\n margin-top: -20vh;\n }\n\n .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below {\n padding-top: 16vh;\n }\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n .RiverStoryScroll,\n .RiverStoryScroll::before,\n .RiverStoryScroll::after,\n .RiverStoryScroll * {\n animation: none !important;\n transition: none !important;\n scroll-behavior: auto !important;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"RiverStoryScroll.module.js","names":[],"sources":["../../../src/river/RiverStoryScroll/RiverStoryScroll.module.css"],"sourcesContent":[".RiverStoryScroll {\n --ease: cubic-bezier(0.22, 0.56, 0.23, 0.89);\n -webkit-font-smoothing: antialiased;\n --stackDistance: calc(var(--base-size-24) * -1);\n\n /* River visual (videos)\n * UL = unit-less, needed for division in certain scenarios\n */\n --visualMaxWidth: 1032px;\n --visualMaxWidthUL: 1032;\n --visualMaxHeight: min(690px, 60vh);\n --visualMaxHeightUL: 690;\n --storyScrollPadding: min(32px, 5vw);\n position: relative;\n}\n@media (max-height: 720px) {\n .RiverStoryScroll {\n --visualMaxHeight: 55vh;\n }\n}\n\n@media (max-height: 600px) {\n .RiverStoryScroll {\n --visualMaxHeight: 50vh;\n }\n}\n\n@media (max-height: 500px) {\n .RiverStoryScroll {\n --visualMaxHeight: 40vh;\n }\n}\n\n.RiverStoryScroll__inner {\n position: relative;\n}\n\n.RiverStoryScroll__visual-cover {\n position: absolute;\n left: 0;\n width: 100%;\n}\n\n.RiverStoryScroll__image {\n display: block;\n margin-left: auto;\n margin-right: auto;\n width: auto;\n z-index: 10;\n position: relative;\n border-radius: var(--brand-borderRadius-large);\n}\n\n.RiverStoryScroll--enabled .RiverStoryScroll__internal-river {\n grid-template-columns: 1fr;\n gap: 0;\n}\n\n.RiverStoryScroll--enabled .RiverStoryScroll__internal-river img,\n.RiverStoryScroll--enabled .RiverStoryScroll__internal-river video {\n display: none;\n}\n\n@media (max-width: 542px) {\n .RiverStoryScroll {\n --topOffset: calc((100vh - min(664px, 60vh)) / 5);\n }\n}\n\n@media (max-width: 768px) and (min-height: 670px) {\n .RiverStoryScroll {\n --extraBottomSpacing: calc(-1 * (100vh - 100vw) / 5);\n }\n}\n\n@media (min-width: 542px) and (max-width: 1028px) and (min-height: 670px) {\n .RiverStoryScroll {\n --extraBottomSpacing: calc(-1 * (100vh - 100vw) / 3);\n }\n}\n\n@media (min-width: 542px) {\n .RiverStoryScroll {\n --scrollTextHeight: 42vh;\n }\n}\n\n@media (max-height: 520px) {\n .RiverStoryScroll {\n --scrollTextHeight: 70vh;\n }\n}\n\n@media (min-width: 1028px) {\n .RiverStoryScroll {\n --stackDistance: -30px;\n }\n}\n\n@media (max-height: 800px) {\n .RiverStoryScroll {\n --stackDistance: -20px;\n }\n}\n\n@media (max-height: 500px) {\n .RiverStoryScroll {\n --stackDistance: -15px;\n }\n}\n\n@media screen and (max-width: 768px) {\n .RiverStoryScroll {\n --topOffset: calc((100vh - min(664px, 60vh)) / 3);\n\n /* Spacing above the visual */\n --availableWidth: calc(100vw - var(--storyScrollPadding) * 2);\n --relativeVisualHeight: calc(var(--visualMaxHeightUL) / var(--visualMaxWidthUL) * var(--availableWidth));\n --visualHeight: min(var(--visualMaxHeight), var(--relativeVisualHeight));\n --visualWidth: calc(var(--visualHeight) * var(--visualMaxWidthUL) / var(--visualMaxHeightUL));\n --scrollTextHeight: 58vh;\n --textToVisualPadding: max(5vh, 40px);\n\n --topScrollOffset: calc(var(--visualHeight));\n --bottomScrollOffset: calc(100vh - var(--topOffset) - var(--visualHeight) - var(--textToVisualPadding));\n\n --extraBottomSpacing: 70px;\n }\n\n /* Enhanced styling if dvh is supported */\n @supports (height: 100dvh) {\n .RiverStoryScroll__visual-container-inner {\n height: 100dvh;\n }\n }\n\n .RiverStoryScroll__visual-container {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n }\n\n .RiverStoryScroll__tracker {\n min-height: var(--scrollTextHeight);\n position: relative;\n transition: opacity 0.3s var(--ease);\n }\n\n .RiverStoryScroll__tracker:has(+ .in-viewport) {\n opacity: 0;\n }\n\n .RiverStoryScroll__tracker.in-viewport + .outside-viewport {\n opacity: 0;\n }\n\n .RiverStoryScroll {\n max-width: calc(1032px + var(--storyScrollPadding) * 2);\n margin-top: min(30vw, 22vh);\n margin-left: auto;\n margin-right: auto;\n padding-right: var(--storyScrollPadding);\n padding-left: var(--storyScrollPadding);\n }\n\n .RiverStoryScroll__content-container--below {\n padding-top: var(--topScrollOffset);\n padding-bottom: var(--bottomScrollOffset);\n }\n\n .RiverStoryScroll__image {\n height: auto;\n width: 100%;\n max-width: var(--visualWidth);\n border-radius: var(--brand-borderRadius-large);\n }\n\n .RiverStoryScroll__visual-container-inner {\n position: sticky;\n pointer-events: none;\n top: 0;\n padding-top: var(--topOffset);\n margin-top: calc(-1 * var(--topOffset));\n display: flex;\n z-index: 1;\n flex-direction: column;\n height: 100vh;\n }\n\n .RiverStoryScroll__visual--below {\n background-image: linear-gradient(\n 180deg,\n var(--brand-RiverStoryScroll-content-inactive-bgColor) calc(var(--topOffset) + var(--visualHeight) + 3px),\n transparent calc(var(--topOffset) + var(--visualHeight) + var(--textToVisualPadding)),\n transparent 93%,\n var(--brand-RiverStoryScroll-content-inactive-bgColor) 99%\n );\n }\n\n .RiverStoryScroll__visual--below .story-scroll-text {\n margin-top: var(--base-size-40);\n }\n\n .tracker-outside-viewport {\n opacity: 0;\n display: none;\n }\n\n /* Show first visual, even when nothing is visible */\n .tracker-outside-viewport:nth-child(2) {\n opacity: 1;\n display: block;\n }\n\n .RiverStoryScroll__visual-scroll-responder {\n transition: 0.5s var(--ease) transform, 0.5s var(--ease) filter, 0.5s var(--ease) opacity;\n pointer-events: auto;\n }\n\n .tracker-outside-viewport:has(~ .tracker-in-viewport) {\n position: absolute;\n display: block;\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n }\n\n .tracker-in-viewport + .tracker-outside-viewport {\n transform: translateY(calc(var(--stackDistance) * -1)) scale(1.015);\n position: absolute;\n display: block;\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n }\n\n .tracker-outside-viewport:has(+ .tracker-in-viewport) {\n transform: translateY(var(--stackDistance)) scale(0.95);\n filter: brightness(70%);\n opacity: 1;\n }\n\n .tracker-outside-viewport:has(+ .tracker-outside-viewport + .tracker-in-viewport) {\n transform: translateY(calc(var(--stackDistance) * 2)) scale(0.9);\n filter: brightness(50%);\n opacity: 1;\n }\n\n .tracker-outside-viewport:has(+ .tracker-outside-viewport + .tracker-outside-viewport + .tracker-in-viewport) {\n transform: translateY(calc(var(--stackDistance) * 3)) scale(0.85);\n filter: brightness(30%);\n opacity: 1;\n }\n\n .tracker-outside-viewport:has(\n + .tracker-outside-viewport + .tracker-outside-viewport + .tracker-outside-viewport + .tracker-in-viewport\n ) {\n transform: translateY(calc(var(--stackDistance) * 4)) scale(0.8);\n filter: brightness(10%);\n opacity: 1;\n }\n\n .tracker-in-viewport {\n display: block;\n position: relative;\n }\n\n /* \n TODO: Re-enable these at a later date\n \n .video-controls {\n --distanceFromEdge: 12px;\n position: absolute;\n right: calc((100% - var(--visualWidth)) / 2 + var(--distanceFromEdge));\n bottom: var(--distanceFromEdge);\n z-index: 10;\n pointer-events: auto;\n transition: opacity 0.3s var(--ease);\n opacity: 0;\n }\n\n @media (min-width: 542px) {\n .video-controls {\n --distanceFromEdge: 20px;\n }\n }\n\n .RiverStoryScroll__visual-scroll-responder:hover .video-controls,\n .video-controls-ended {\n opacity: 1;\n }\n\n .video-control {\n background-color: rgba(0, 0, 0, 0.18);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 200px;\n width: 44px;\n height: 44px;\n transition: background-color 0.2s ease;\n }\n\n .video-control:hover,\n .video-control:focus {\n background-color: rgba(0, 0, 0, 0.35);\n } */\n\n .RiverStoryScroll__content-stack {\n position: sticky;\n padding-top: var(--textToVisualPadding);\n top: calc(var(--topOffset) + var(--visualHeight));\n }\n\n /* This is a hack to make the sticky behavior exclude the height of itself as it reaches the bottom */\n /* This makes it possible to calculate the end of the sticky scroll without having to account for text content */\n .RiverStoryScroll__tracker:last-child .RiverStoryScroll__content-stack {\n height: 0;\n }\n\n .RiverStoryScroll__pagination {\n display: flex;\n flex-direction: column;\n gap: var(--base-size-4);\n position: absolute;\n left: calc(var(--base-size-20) * -1 - 2px);\n right: 0;\n margin: auto;\n height: var(--visualHeight);\n justify-content: center;\n margin-block-start: calc(var(--base-size-20) * -1);\n }\n\n .RiverStoryScroll__pagination-dot {\n width: 6px;\n height: 6px;\n border-radius: var(--brand-borderRadius-large);\n opacity: 0.55;\n background: var(--brand-RiverStoryScroll-pagination-fgColor);\n transition: opacity var(--brand-animation-duration-default) var(--ease),\n height var(--brand-animation-duration-default) var(--ease);\n }\n\n .tracker-in-viewport:nth-child(2) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(1) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(3) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(2) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(4) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(3) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(5) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(4) {\n opacity: 1;\n height: var(--base-size-24);\n }\n\n .tracker-in-viewport:nth-child(6) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(5) {\n opacity: 1;\n height: var(--base-size-24);\n }\n}\n\n@media screen and (min-width: 768px) {\n .RiverStoryScroll__inner {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--base-size-24);\n }\n\n .RiverStoryScroll__visual-container {\n position: sticky;\n width: 100%;\n top: 0;\n height: 80vh;\n display: flex;\n align-items: center;\n order: 2;\n }\n\n .RiverStoryScroll__visual-container-inner,\n .RiverStoryScroll__image {\n width: 100%;\n }\n\n .RiverStoryScroll .RiverStoryScroll__visual-scroll-responder {\n position: sticky;\n top: 0;\n width: 100%;\n right: 0;\n transition: opacity 0.3s var(--ease);\n padding-top: 10vh;\n }\n\n .RiverStoryScroll__visual-container-inner.RiverStoryScroll__visual--below {\n position: sticky;\n top: 0;\n }\n\n .RiverStoryScroll__visual-scroll-responder.tracker-outside-viewport {\n position: absolute;\n top: 0;\n z-index: -1;\n opacity: 0;\n }\n\n .RiverStoryScroll__visual-scroll-responder.tracker-in-viewport {\n z-index: 1;\n opacity: 1;\n }\n\n .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below {\n padding-top: 10vh;\n }\n\n .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below .RiverStoryScroll__tracker {\n padding: 20vh 0;\n }\n\n .RiverStoryScroll__tracker.outside-viewport {\n position: relative;\n }\n\n .RiverStoryScroll__tracker {\n filter: 0;\n }\n\n .RiverStoryScroll__tracker.outside-viewport {\n filter: blur(1px);\n transition: filter var(--brand-animation-duration-extended) var(--brand-animation-easing-default);\n }\n\n .RiverStoryScroll__tracker::after {\n content: '';\n transition: opacity var(--brand-animation-duration-extended) var(--brand-animation-easing-default),\n visibility var(--brand-animation-duration-extended) var(--brand-animation-easing-default);\n opacity: 0;\n visibility: hidden;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--brand-RiverStoryScroll-content-inactive-bgColor);\n }\n\n .RiverStoryScroll__tracker.outside-viewport::after {\n opacity: 0.7;\n visibility: visible;\n }\n}\n\n@media screen and (min-width: 768px) and (min-height: 900px) and (prefers-reduced-motion: no-preference) {\n .RiverStoryScroll {\n margin-top: -20vh;\n }\n\n .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below {\n padding-top: 16vh;\n }\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n .RiverStoryScroll,\n .RiverStoryScroll::before,\n .RiverStoryScroll::after,\n .RiverStoryScroll * {\n animation: none !important;\n transition: none !important;\n scroll-behavior: auto !important;\n }\n}\n"],"mappings":""}