@deriv-com/dds-marketing 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/.llm/components/awards.md +209 -0
  2. package/.llm/components/background.md +420 -0
  3. package/.llm/components/bottomsheet.md +5 -0
  4. package/.llm/components/comparisoncards.md +257 -0
  5. package/.llm/components/comparisontable.md +231 -0
  6. package/.llm/components/ctabanner.md +22 -0
  7. package/.llm/components/ctabannerslider.md +36 -2
  8. package/.llm/components/datatable.md +273 -0
  9. package/.llm/components/downloadbanner.md +283 -0
  10. package/.llm/components/featurecards.md +41 -3
  11. package/.llm/components/featurecardscarousel.md +311 -0
  12. package/.llm/components/featuresplit.md +5 -0
  13. package/.llm/components/featurestack.md +227 -0
  14. package/.llm/components/illustrationcard.md +236 -0
  15. package/.llm/components/illustrationscene.md +229 -0
  16. package/.llm/components/imagebanner.md +278 -0
  17. package/.llm/components/landinghero.md +24 -0
  18. package/.llm/components/navbar.md +1 -1
  19. package/.llm/components/navbaritem.md +4 -0
  20. package/.llm/components/pageheader.md +22 -0
  21. package/.llm/components/paginationdots.md +6 -1
  22. package/.llm/components/producthero.md +35 -11
  23. package/.llm/components/resourcebanner.md +247 -0
  24. package/.llm/components/scenescroll.md +222 -0
  25. package/.llm/components/select.md +17 -0
  26. package/.llm/components/stats.md +219 -0
  27. package/.llm/components/steps.md +286 -0
  28. package/.llm/components/stickycards.md +251 -0
  29. package/.llm/components/tableheadercell.md +19 -0
  30. package/.llm/components/teamgrid.md +243 -0
  31. package/.llm/components/testimonialrow.md +5 -0
  32. package/.llm/components/testimonialslider.md +14 -1
  33. package/.llm/components/textarea.md +13 -0
  34. package/.llm/components/textinput.md +13 -0
  35. package/.llm/components/textscroll.md +187 -0
  36. package/.llm/components/tiers.md +227 -0
  37. package/.llm/digest/awards.md +45 -0
  38. package/.llm/digest/background.md +53 -0
  39. package/.llm/digest/bottomsheet.md +2 -0
  40. package/.llm/digest/comparisoncards.md +51 -0
  41. package/.llm/digest/comparisontable.md +53 -0
  42. package/.llm/digest/ctabanner.md +4 -0
  43. package/.llm/digest/ctabannerslider.md +7 -0
  44. package/.llm/digest/datatable.md +65 -0
  45. package/.llm/digest/downloadbanner.md +65 -0
  46. package/.llm/digest/featurecards.md +1 -1
  47. package/.llm/digest/featurecardscarousel.md +54 -0
  48. package/.llm/digest/featuresplit.md +1 -0
  49. package/.llm/digest/featurestack.md +48 -0
  50. package/.llm/digest/illustrationcard.md +46 -0
  51. package/.llm/digest/illustrationscene.md +50 -0
  52. package/.llm/digest/imagebanner.md +64 -0
  53. package/.llm/digest/landinghero.md +7 -0
  54. package/.llm/digest/navbaritem.md +1 -0
  55. package/.llm/digest/pageheader.md +4 -0
  56. package/.llm/digest/paginationdots.md +3 -1
  57. package/.llm/digest/producthero.md +4 -2
  58. package/.llm/digest/resourcebanner.md +53 -0
  59. package/.llm/digest/scenescroll.md +49 -0
  60. package/.llm/digest/select.md +5 -0
  61. package/.llm/digest/stats.md +46 -0
  62. package/.llm/digest/steps.md +55 -0
  63. package/.llm/digest/stickycards.md +52 -0
  64. package/.llm/digest/tableheadercell.md +4 -0
  65. package/.llm/digest/teamgrid.md +53 -0
  66. package/.llm/digest/testimonialrow.md +2 -0
  67. package/.llm/digest/testimonialslider.md +4 -0
  68. package/.llm/digest/textarea.md +4 -0
  69. package/.llm/digest/textinput.md +4 -0
  70. package/.llm/digest/textscroll.md +43 -0
  71. package/.llm/digest/tiers.md +50 -0
  72. package/.llm/index.md +25 -2
  73. package/.llm/tokens.md +37 -1
  74. package/AGENTS.md +20 -1
  75. package/dist/components/awards-data.d.ts +24 -0
  76. package/dist/components/awards-data.js +11 -0
  77. package/dist/components/block-image-data.d.ts +24 -0
  78. package/dist/components/block-image-data.js +9 -0
  79. package/dist/components/blocks/awards/Awards.css +134 -0
  80. package/dist/components/blocks/awards/Awards.d.ts +24 -0
  81. package/dist/components/blocks/awards/Awards.js +114 -0
  82. package/dist/components/blocks/awards/Awards.types.d.ts +31 -0
  83. package/dist/components/blocks/awards/Awards.types.js +16 -0
  84. package/dist/components/blocks/awards/awards-impl.css +222 -0
  85. package/dist/components/blocks/cards-of.d.ts +16 -0
  86. package/dist/components/blocks/cards-of.js +23 -0
  87. package/dist/components/blocks/comparison-cards/ComparisonCards.css +195 -0
  88. package/dist/components/blocks/comparison-cards/ComparisonCards.d.ts +24 -0
  89. package/dist/components/blocks/comparison-cards/ComparisonCards.js +75 -0
  90. package/dist/components/blocks/comparison-cards/ComparisonCards.types.d.ts +49 -0
  91. package/dist/components/blocks/comparison-cards/ComparisonCards.types.js +26 -0
  92. package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +262 -0
  93. package/dist/components/blocks/comparison-table/ComparisonTable.css +111 -0
  94. package/dist/components/blocks/comparison-table/ComparisonTable.d.ts +25 -0
  95. package/dist/components/blocks/comparison-table/ComparisonTable.js +100 -0
  96. package/dist/components/blocks/comparison-table/ComparisonTable.types.d.ts +36 -0
  97. package/dist/components/blocks/comparison-table/ComparisonTable.types.js +15 -0
  98. package/dist/components/blocks/comparison-table/comparison-table-impl.css +143 -0
  99. package/dist/components/blocks/cta-banner/CtaBanner.css +1 -0
  100. package/dist/components/blocks/cta-banner/CtaBanner.d.ts +1 -1
  101. package/dist/components/blocks/cta-banner/CtaBanner.js +3 -2
  102. package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +6 -0
  103. package/dist/components/blocks/cta-banner/CtaBanner.types.js +1 -1
  104. package/dist/components/blocks/cta-banner/cta-banner-impl.css +8 -0
  105. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +1 -0
  106. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +1 -1
  107. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +10 -5
  108. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +12 -0
  109. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +1 -1
  110. package/dist/components/blocks/cta-banner-slider/cta-banner-slider-impl.css +8 -0
  111. package/dist/components/blocks/data-table/DataTable.css +170 -0
  112. package/dist/components/blocks/data-table/DataTable.d.ts +29 -0
  113. package/dist/components/blocks/data-table/DataTable.js +84 -0
  114. package/dist/components/blocks/data-table/DataTable.types.d.ts +69 -0
  115. package/dist/components/blocks/data-table/DataTable.types.js +19 -0
  116. package/dist/components/blocks/data-table/data-table-impl.css +155 -0
  117. package/dist/components/blocks/download-banner/DownloadBanner.css +228 -0
  118. package/dist/components/blocks/download-banner/DownloadBanner.d.ts +28 -0
  119. package/dist/components/blocks/download-banner/DownloadBanner.js +75 -0
  120. package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +56 -0
  121. package/dist/components/blocks/download-banner/DownloadBanner.types.js +23 -0
  122. package/dist/components/blocks/download-banner/download-banner-impl.css +216 -0
  123. package/dist/components/blocks/faq-accordion/FaqAccordion.css +1 -0
  124. package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +3 -7
  125. package/dist/components/blocks/feature-bullets/FeatureBullets.css +1 -0
  126. package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +14 -1
  127. package/dist/components/blocks/feature-cards/FeatureCards.css +1 -0
  128. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +2 -1
  129. package/dist/components/blocks/feature-cards/FeatureCards.js +4 -21
  130. package/dist/components/blocks/feature-cards/feature-cards-impl.css +10 -9
  131. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.css +115 -0
  132. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.d.ts +30 -0
  133. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.js +160 -0
  134. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +52 -0
  135. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.js +17 -0
  136. package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +207 -0
  137. package/dist/components/blocks/feature-scroll/FeatureScroll.css +1 -0
  138. package/dist/components/blocks/feature-split/FeatureSplit.css +1 -0
  139. package/dist/components/blocks/feature-split/feature-split-impl.css +14 -1
  140. package/dist/components/blocks/feature-stack/FeatureStack.css +86 -0
  141. package/dist/components/blocks/feature-stack/FeatureStack.d.ts +19 -0
  142. package/dist/components/blocks/feature-stack/FeatureStack.js +27 -0
  143. package/dist/components/blocks/feature-stack/FeatureStack.types.d.ts +34 -0
  144. package/dist/components/blocks/feature-stack/FeatureStack.types.js +14 -0
  145. package/dist/components/blocks/feature-stack/feature-stack-impl.css +87 -0
  146. package/dist/components/blocks/image-banner/ImageBanner.css +133 -0
  147. package/dist/components/blocks/image-banner/ImageBanner.d.ts +32 -0
  148. package/dist/components/blocks/image-banner/ImageBanner.js +41 -0
  149. package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +54 -0
  150. package/dist/components/blocks/image-banner/ImageBanner.types.js +14 -0
  151. package/dist/components/blocks/image-banner/image-banner-impl.css +281 -0
  152. package/dist/components/blocks/landing-hero/LandingHero.css +1 -0
  153. package/dist/components/blocks/landing-hero/LandingHero.d.ts +1 -1
  154. package/dist/components/blocks/landing-hero/LandingHero.js +4 -3
  155. package/dist/components/blocks/landing-hero/LandingHero.types.d.ts +7 -3
  156. package/dist/components/blocks/logo-columns/LogoColumns.css +1 -0
  157. package/dist/components/blocks/logo-rows/LogoRows.css +1 -0
  158. package/dist/components/blocks/page-header/PageHeader.css +1 -0
  159. package/dist/components/blocks/page-header/PageHeader.d.ts +1 -1
  160. package/dist/components/blocks/page-header/PageHeader.js +3 -2
  161. package/dist/components/blocks/page-header/PageHeader.types.d.ts +6 -0
  162. package/dist/components/blocks/page-header/PageHeader.types.js +1 -1
  163. package/dist/components/blocks/page-header/page-header-impl.css +10 -0
  164. package/dist/components/blocks/product-hero/ProductHero.css +8 -3
  165. package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
  166. package/dist/components/blocks/product-hero/ProductHero.js +5 -2
  167. package/dist/components/blocks/product-hero/ProductHero.types.d.ts +5 -1
  168. package/dist/components/blocks/product-hero/ProductHero.types.js +1 -0
  169. package/dist/components/blocks/product-hero/product-hero-impl.css +43 -12
  170. package/dist/components/blocks/resource-banner/ResourceBanner.css +106 -0
  171. package/dist/components/blocks/resource-banner/ResourceBanner.d.ts +32 -0
  172. package/dist/components/blocks/resource-banner/ResourceBanner.js +51 -0
  173. package/dist/components/blocks/resource-banner/ResourceBanner.types.d.ts +44 -0
  174. package/dist/components/blocks/resource-banner/ResourceBanner.types.js +14 -0
  175. package/dist/components/blocks/resource-banner/resource-banner-impl.css +69 -0
  176. package/dist/components/blocks/scene-scroll/SceneScroll.css +93 -0
  177. package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +36 -0
  178. package/dist/components/blocks/scene-scroll/SceneScroll.js +54 -0
  179. package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +32 -0
  180. package/dist/components/blocks/scene-scroll/SceneScroll.types.js +15 -0
  181. package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +275 -0
  182. package/dist/components/blocks/stats/Stats.css +139 -0
  183. package/dist/components/blocks/stats/Stats.d.ts +24 -0
  184. package/dist/components/blocks/stats/Stats.js +120 -0
  185. package/dist/components/blocks/stats/Stats.types.d.ts +36 -0
  186. package/dist/components/blocks/stats/Stats.types.js +19 -0
  187. package/dist/components/blocks/stats/stats-count.d.ts +34 -0
  188. package/dist/components/blocks/stats/stats-count.js +61 -0
  189. package/dist/components/blocks/stats/stats-impl.css +284 -0
  190. package/dist/components/blocks/stats/use-wheel.d.ts +37 -0
  191. package/dist/components/blocks/stats/use-wheel.js +126 -0
  192. package/dist/components/blocks/steps/Steps.css +202 -0
  193. package/dist/components/blocks/steps/Steps.d.ts +32 -0
  194. package/dist/components/blocks/steps/Steps.js +65 -0
  195. package/dist/components/blocks/steps/Steps.types.d.ts +48 -0
  196. package/dist/components/blocks/steps/Steps.types.js +21 -0
  197. package/dist/components/blocks/steps/steps-impl.css +216 -0
  198. package/dist/components/blocks/steps/use-turn.d.ts +33 -0
  199. package/dist/components/blocks/steps/use-turn.js +75 -0
  200. package/dist/components/blocks/sticky-cards/StickyCards.css +154 -0
  201. package/dist/components/blocks/sticky-cards/StickyCards.d.ts +35 -0
  202. package/dist/components/blocks/sticky-cards/StickyCards.js +153 -0
  203. package/dist/components/blocks/sticky-cards/StickyCards.types.d.ts +43 -0
  204. package/dist/components/blocks/sticky-cards/StickyCards.types.js +18 -0
  205. package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +393 -0
  206. package/dist/components/blocks/team-grid/TeamGrid.css +159 -0
  207. package/dist/components/blocks/team-grid/TeamGrid.d.ts +28 -0
  208. package/dist/components/blocks/team-grid/TeamGrid.js +74 -0
  209. package/dist/components/blocks/team-grid/TeamGrid.types.d.ts +51 -0
  210. package/dist/components/blocks/team-grid/TeamGrid.types.js +20 -0
  211. package/dist/components/blocks/team-grid/team-grid-impl.css +129 -0
  212. package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -0
  213. package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +1 -1
  214. package/dist/components/blocks/testimonial-row/TestimonialRow.js +4 -3
  215. package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +3 -0
  216. package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +1 -1
  217. package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +8 -0
  218. package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -0
  219. package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +1 -1
  220. package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +2 -2
  221. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +8 -0
  222. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +1 -1
  223. package/dist/components/blocks/text-scroll/TextScroll.css +53 -0
  224. package/dist/components/blocks/text-scroll/TextScroll.d.ts +5 -0
  225. package/dist/components/blocks/text-scroll/TextScroll.js +71 -0
  226. package/dist/components/blocks/text-scroll/TextScroll.types.d.ts +22 -0
  227. package/dist/components/blocks/text-scroll/TextScroll.types.js +10 -0
  228. package/dist/components/blocks/text-scroll/text-scroll-impl.css +115 -0
  229. package/dist/components/blocks/tiers/Tiers.css +233 -0
  230. package/dist/components/blocks/tiers/Tiers.d.ts +32 -0
  231. package/dist/components/blocks/tiers/Tiers.js +68 -0
  232. package/dist/components/blocks/tiers/Tiers.types.d.ts +45 -0
  233. package/dist/components/blocks/tiers/Tiers.types.js +25 -0
  234. package/dist/components/blocks/tiers/tiers-impl.css +185 -0
  235. package/dist/components/blocks/use-rotation.d.ts +12 -2
  236. package/dist/components/blocks/use-rotation.js +6 -28
  237. package/dist/components/comparison-cards-data.d.ts +59 -0
  238. package/dist/components/comparison-cards-data.js +12 -0
  239. package/dist/components/comparison-table-data.d.ts +39 -0
  240. package/dist/components/comparison-table-data.js +11 -0
  241. package/dist/components/core/accordion-item/AccordionItem.css +1 -5
  242. package/dist/components/core/background/Background.css +92 -0
  243. package/dist/components/core/background/Background.d.ts +27 -0
  244. package/dist/components/core/background/Background.js +45 -0
  245. package/dist/components/core/background/Background.types.d.ts +39 -0
  246. package/dist/components/core/background/Background.types.js +11 -0
  247. package/dist/components/core/background/background-impl.css +760 -0
  248. package/dist/components/core/background/halftone.d.ts +134 -0
  249. package/dist/components/core/background/halftone.js +722 -0
  250. package/dist/components/core/background/patterns.d.ts +66 -0
  251. package/dist/components/core/background/patterns.js +244 -0
  252. package/dist/components/core/background/shader.d.ts +44 -0
  253. package/dist/components/core/background/shader.js +307 -0
  254. package/dist/components/core/background/use-halftone.d.ts +15 -0
  255. package/dist/components/core/background/use-halftone.js +27 -0
  256. package/dist/components/core/background/use-offscreen.d.ts +10 -0
  257. package/dist/components/core/background/use-offscreen.js +30 -0
  258. package/dist/components/core/background/use-shader.d.ts +11 -0
  259. package/dist/components/core/background/use-shader.js +25 -0
  260. package/dist/components/core/background/use-spotlight.d.ts +14 -0
  261. package/dist/components/core/background/use-spotlight.js +73 -0
  262. package/dist/components/core/bottom-sheet/BottomSheet.js +2 -2
  263. package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +3 -1
  264. package/dist/components/core/breadcrumb/Breadcrumb.d.ts +1 -0
  265. package/dist/components/core/breadcrumb/Breadcrumb.js +1 -0
  266. package/dist/components/core/breadcrumb/breadcrumb-impl.css +11 -0
  267. package/dist/components/core/button/button-impl.css +14 -1
  268. package/dist/components/core/illustration-card/IllustrationCard.css +40 -0
  269. package/dist/components/core/illustration-card/IllustrationCard.d.ts +22 -0
  270. package/dist/components/core/illustration-card/IllustrationCard.js +82 -0
  271. package/dist/components/core/illustration-card/IllustrationCard.types.d.ts +23 -0
  272. package/dist/components/core/illustration-card/IllustrationCard.types.js +8 -0
  273. package/dist/components/core/illustration-card/illustration-card-impl.css +47 -0
  274. package/dist/components/core/illustration-scene/IllustrationScene.css +41 -0
  275. package/dist/components/core/illustration-scene/IllustrationScene.d.ts +14 -0
  276. package/dist/components/core/illustration-scene/IllustrationScene.js +16 -0
  277. package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +32 -0
  278. package/dist/components/core/illustration-scene/IllustrationScene.types.js +8 -0
  279. package/dist/components/core/illustration-scene/illustration-scene-impl.css +46 -0
  280. package/dist/components/core/link/Link.js +7 -3
  281. package/dist/components/core/link/link-impl.css +29 -2
  282. package/dist/components/core/navbar/Navbar.css +2 -2
  283. package/dist/components/core/navbar/Navbar.types.d.ts +1 -1
  284. package/dist/components/core/navbar-item/NavbarItem.d.ts +2 -1
  285. package/dist/components/core/navbar-item/NavbarItem.js +3 -10
  286. package/dist/components/core/navbar-item/NavbarItem.types.d.ts +4 -1
  287. package/dist/components/core/navbar-item/NavbarItem.types.js +1 -1
  288. package/dist/components/core/navbar-item/navbar-item-impl.css +10 -0
  289. package/dist/components/core/navbar-menu/navbar-menu-impl.css +9 -0
  290. package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +19 -0
  291. package/dist/components/core/pagination/Pagination.js +1 -1
  292. package/dist/components/core/pagination/pagination-impl.css +9 -0
  293. package/dist/components/core/pagination-dots/PaginationDots.d.ts +1 -1
  294. package/dist/components/core/pagination-dots/PaginationDots.js +3 -3
  295. package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +3 -1
  296. package/dist/components/core/segmented-control/SegmentedControl.css +4 -3
  297. package/dist/components/core/segmented-control/SegmentedControl.js +17 -3
  298. package/dist/components/core/segmented-control-item/SegmentedControlItem.css +2 -1
  299. package/dist/components/core/select/Select.js +3 -3
  300. package/dist/components/core/select/Select.types.d.ts +11 -1
  301. package/dist/components/core/select/Select.types.js +1 -1
  302. package/dist/components/core/tab-list/TabList.js +9 -1
  303. package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +1 -1
  304. package/dist/components/core/table-header-cell/TableHeaderCell.js +5 -2
  305. package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +7 -1
  306. package/dist/components/core/table-header-cell/TableHeaderCell.types.js +1 -1
  307. package/dist/components/core/text-area/TextArea.d.ts +1 -1
  308. package/dist/components/core/text-area/TextArea.js +2 -2
  309. package/dist/components/core/text-area/TextArea.types.d.ts +9 -1
  310. package/dist/components/core/text-area/TextArea.types.js +1 -1
  311. package/dist/components/core/text-input/TextInput.d.ts +1 -1
  312. package/dist/components/core/text-input/TextInput.js +2 -2
  313. package/dist/components/core/text-input/TextInput.types.d.ts +9 -1
  314. package/dist/components/core/text-input/TextInput.types.js +1 -1
  315. package/dist/components/data-table-data.d.ts +33 -0
  316. package/dist/components/data-table-data.js +12 -0
  317. package/dist/components/download-banner-data.d.ts +52 -0
  318. package/dist/components/download-banner-data.js +11 -0
  319. package/dist/components/index.d.ts +51 -0
  320. package/dist/components/index.js +38 -0
  321. package/dist/components/resource-banner-data.d.ts +34 -0
  322. package/dist/components/resource-banner-data.js +13 -0
  323. package/dist/components/scene-scroll-data.d.ts +24 -0
  324. package/dist/components/scene-scroll-data.js +9 -0
  325. package/dist/components/stats-data.d.ts +28 -0
  326. package/dist/components/stats-data.js +11 -0
  327. package/dist/components/steps-data.d.ts +38 -0
  328. package/dist/components/steps-data.js +13 -0
  329. package/dist/components/sticky-cards-data.d.ts +43 -0
  330. package/dist/components/sticky-cards-data.js +12 -0
  331. package/dist/components/team-grid-data.d.ts +38 -0
  332. package/dist/components/team-grid-data.js +11 -0
  333. package/dist/components/tiers-data.d.ts +47 -0
  334. package/dist/components/tiers-data.js +13 -0
  335. package/dist/marketing.css +101 -28
  336. package/package.json +1 -1
@@ -0,0 +1,207 @@
1
+ /*
2
+ * Scoped to this package, like the generated sheet beside it.
3
+ */
4
+
5
+ /*
6
+ * A heading with no line under it closes up. Its bound step is the distance to the line, and with
7
+ * nothing there it would only add to the step from the header to the row.
8
+ */
9
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__title:last-child {
10
+ margin-block-end: 0;
11
+ }
12
+
13
+ /*
14
+ * The header starts on a phone and is centred from the fold — FeatureCards' arrangement and its
15
+ * reason. Both boxes are capped narrower than the column, so `margin-inline: auto` is what centres
16
+ * them rather than their words inside a box left at the start edge.
17
+ *
18
+ * `48rem` longhand because `var()` is not permitted in a container query condition, and it is the
19
+ * width the rest of this package folds at.
20
+ */
21
+ @container (min-width: 48rem) {
22
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__header {
23
+ align-items: center;
24
+ margin-inline: auto;
25
+ text-align: center;
26
+ }
27
+
28
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__description {
29
+ margin-inline: auto;
30
+ }
31
+ }
32
+
33
+ /*
34
+ * Two measures the row is built from, both read off the band rather than the row — TestimonialRow's.
35
+ *
36
+ * The root declares `container-type`, so `cqi` here is the band's width. `--column` is the width of
37
+ * the column the heading sits in; `--bleed` is how far that column stands in from the band's edge.
38
+ */
39
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel {
40
+ --dds-featurecardscarousel-column: calc(min(100cqi, var(--size-content-max)) - 2 * var(--space-inset-page));
41
+ --dds-featurecardscarousel-bleed: calc((100cqi - min(100cqi, var(--size-content-max))) / 2 + var(--space-inset-page));
42
+ }
43
+
44
+ /*
45
+ * The row runs out to the band's edges and its first card stands where the heading does — the
46
+ * reference design's breakout, built as TestimonialRow builds it.
47
+ *
48
+ * A negative margin takes the row out of the column to the band's edges; a leading padding of the
49
+ * same measure brings the first card back into line with the heading. The padding scrolls away with
50
+ * the cards, so a card is then cut off by the band rather than by the column.
51
+ * `scroll-padding-inline` matches it, or a browser reads the resting position as short of the first
52
+ * card's snap point and scrolls the gutter away on load.
53
+ *
54
+ * The block padding is room for a CardButton's lift and its focus ring, which a scroll container
55
+ * would otherwise clip; the negative margin gives it back.
56
+ *
57
+ * No scrollbar: the dots and the arrows under the row are the standing sign that it moves.
58
+ */
59
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track {
60
+ margin-block: calc(-1 * var(--space-gap-sm));
61
+ margin-inline: calc(-1 * var(--dds-featurecardscarousel-bleed));
62
+ overflow-x: auto;
63
+ overflow-y: hidden;
64
+ overscroll-behavior-x: contain;
65
+ padding-block: var(--space-gap-sm);
66
+ padding-inline-start: var(--dds-featurecardscarousel-bleed);
67
+ scroll-padding-inline: var(--dds-featurecardscarousel-bleed);
68
+ scroll-snap-type: x proximity;
69
+ scrollbar-width: none;
70
+ }
71
+
72
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track::-webkit-scrollbar {
73
+ display: none;
74
+ }
75
+
76
+ /*
77
+ * The row's focus ring is drawn inside it. The row runs out to the band's edges and the band hides
78
+ * its overflow, so a ring drawn outside would lose its two sides to the band.
79
+ */
80
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track:focus-visible {
81
+ outline-offset: calc(-1 * var(--border-width-focus));
82
+ }
83
+
84
+ /*
85
+ * The trailing gutter, as a spacer rather than a padding.
86
+ *
87
+ * A scroll container leaves its end padding out of what it scrolls to once its content overflows,
88
+ * so the last card would come to rest against the band's edge. A generated box is a flex item like
89
+ * a card, and its width counts. The negative margin takes back the gap the row puts before it.
90
+ */
91
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track::after {
92
+ content: '';
93
+ flex: none;
94
+ inline-size: var(--dds-featurecardscarousel-bleed);
95
+ margin-inline-start: calc(-1 * var(--space-grid-gutter));
96
+ }
97
+
98
+ /*
99
+ * A card's width: most of the column on a phone — 85%, TestimonialRow's share — so the next card's
100
+ * edge shows past it, which is what says the row moves; size.feature-cards-carousel.card from the
101
+ * fold, held to the column, so at full width the row shows the next card's edge the same way. The
102
+ * reference set a phone's card to the whole column, and a row whose next card starts exactly at
103
+ * the screen's edge reads as a single card.
104
+ *
105
+ * It does not shrink: a flex item shrinks to fit before it overflows, and a row of squeezed cards
106
+ * is the one thing this is not. Every card is as tall as the row, which is the tallest of them.
107
+ */
108
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__item {
109
+ flex: none;
110
+ inline-size: calc(var(--dds-featurecardscarousel-column) * 0.85);
111
+ scroll-snap-align: start;
112
+ }
113
+
114
+ @container (min-width: 48rem) {
115
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__item {
116
+ inline-size: min(var(--size-feature-cards-carousel-card), var(--dds-featurecardscarousel-column));
117
+ }
118
+ }
119
+
120
+ /* `hidden` has to win over the part's own `display`, which outranks the browser's rule for it. */
121
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__footer[hidden] {
122
+ display: none;
123
+ }
124
+
125
+ /*
126
+ * The arrows stand at the end of the footer, after the dots — and at its end on their own too,
127
+ * when the row has fewer stops than PaginationDots draws a row for.
128
+ */
129
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__nav {
130
+ margin-inline-start: auto;
131
+ }
132
+
133
+ /*
134
+ * An arrow with nowhere to go stays in its place, receded to opacity.disabled, and its slot is
135
+ * inert — TestimonialRow's rule and its reason: ButtonIcon has no disabled state of its own.
136
+ */
137
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__nav-slot[data-available='false'] {
138
+ opacity: var(--opacity-disabled);
139
+ }
140
+
141
+ /*
142
+ * The cards on a painted ground — FeatureCards' rules, for the same cards on the same grounds.
143
+ *
144
+ * A light card turns white on the subtle band, where its own gray.50 is the band's; a dark card is
145
+ * lifted a step in dark mode; a surface card is raised off it. On the dark band a neutral card
146
+ * turns round to the inverse fill and white ink, a plain card takes the white ink alone, and an
147
+ * eyebrow inside any of them takes the band's quieter ink. The coloured cards keep their own.
148
+ */
149
+ :where([data-dds-context="marketing"])
150
+ .dds-featurecardscarousel[data-ground="subtle"]
151
+ .dds-featurecardscarousel__item
152
+ > :is(.dds-card, .dds-cardbutton)[data-variant="surface-light"] {
153
+ background-color: var(--color-bg-surface-card-light-raised);
154
+ }
155
+
156
+ :where([data-dds-context="marketing"])
157
+ .dds-featurecardscarousel[data-ground="subtle"]
158
+ .dds-featurecardscarousel__item
159
+ > :is(.dds-card, .dds-cardbutton)[data-variant="accent-strong"] {
160
+ background-color: var(--color-bg-surface-card-strong-raised);
161
+ }
162
+
163
+ :where([data-dds-context="marketing"])
164
+ .dds-featurecardscarousel[data-ground="subtle"]
165
+ .dds-featurecardscarousel__item
166
+ > :is(.dds-card, .dds-cardbutton)[data-variant="surface"] {
167
+ background-color: var(--color-bg-surface-card-raised);
168
+ }
169
+
170
+ :where([data-dds-context="marketing"])
171
+ .dds-featurecardscarousel[data-ground="strong"]
172
+ .dds-featurecardscarousel__item
173
+ > :is(.dds-card, .dds-cardbutton)[data-variant="surface"] {
174
+ background-color: var(--color-bg-surface-inverse);
175
+ color: var(--color-fg-on-brand-strong);
176
+ }
177
+
178
+ :where([data-dds-context="marketing"])
179
+ .dds-featurecardscarousel[data-ground="strong"]
180
+ .dds-featurecardscarousel__item
181
+ > :is(.dds-card, .dds-cardbutton)[data-variant="surface-raised"] {
182
+ background-color: var(--color-bg-surface-raised-on-brand-strong);
183
+ color: var(--color-fg-on-brand-strong);
184
+ }
185
+
186
+ :where([data-dds-context="marketing"])
187
+ .dds-featurecardscarousel[data-ground="strong"]
188
+ .dds-featurecardscarousel__item
189
+ > :is(.dds-card, .dds-cardbutton)[data-variant="plain"] {
190
+ color: var(--color-fg-on-brand-strong);
191
+ }
192
+
193
+ :where([data-dds-context="marketing"])
194
+ .dds-featurecardscarousel[data-ground="strong"]
195
+ .dds-featurecardscarousel__item
196
+ > :is(.dds-card, .dds-cardbutton):is([data-variant="surface"], [data-variant="surface-raised"], [data-variant="plain"])
197
+ .dds-cardbody__eyebrow {
198
+ color: var(--color-fg-muted-inverse);
199
+ }
200
+
201
+ /*
202
+ * Previous and next point along the row. A right-to-left row puts previous on the right, so the
203
+ * chevrons are mirrored to point the way each one moves; as they ship, both pointed backwards.
204
+ */
205
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__nav-slot svg:dir(rtl) {
206
+ scale: -1 1;
207
+ }
@@ -6,6 +6,7 @@
6
6
  display: flex;
7
7
  inline-size: 100%;
8
8
  justify-content: center;
9
+ overflow-wrap: anywhere;
9
10
  }
10
11
 
11
12
  :where([data-dds-context="marketing"]) .dds-featurescroll .dds-featurescroll__inner {
@@ -6,6 +6,7 @@
6
6
  display: flex;
7
7
  inline-size: 100%;
8
8
  justify-content: center;
9
+ overflow-wrap: anywhere;
9
10
  }
10
11
 
11
12
  :where([data-dds-context="marketing"]) .dds-featuresplit .dds-featuresplit__inner {
@@ -77,7 +77,20 @@
77
77
  :where([data-dds-context="marketing"]) .dds-featuresplit .dds-featuresplit__media > *,
78
78
  :where([data-dds-context="marketing"]) .dds-featuresplit .dds-featuresplit__media img {
79
79
  block-size: 100%;
80
- display: block;
81
80
  inline-size: 100%;
82
81
  object-fit: cover;
83
82
  }
83
+
84
+ /*
85
+ * Bare media is a block; a component keeps its own display.
86
+ *
87
+ * `display: block` is for what arrives as a raw element — an image, a video, an inline SVG — which
88
+ * sits on a text baseline otherwise and leaves a gap under it. Written at no weight at all, so a
89
+ * component the page placed here — an IllustrationScene, whose grid lays its pane over its photo —
90
+ * keeps the display its own sheet gives it. In the rule above, a class deeper than the component's
91
+ * root, it turned the scene's grid into a block, and the pane fell below the photo and was clipped.
92
+ */
93
+ :where([data-dds-context="marketing"] .dds-featuresplit .dds-featuresplit__media > *, [data-dds-context="marketing"] .dds-featuresplit .dds-featuresplit__media img) {
94
+ display: block;
95
+ }
96
+
@@ -0,0 +1,86 @@
1
+ /* GENERATED from featurestack.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-featurestack {
4
+ box-sizing: border-box;
5
+ container-type: inline-size;
6
+ display: flex;
7
+ inline-size: 100%;
8
+ justify-content: center;
9
+ overflow-wrap: anywhere;
10
+ }
11
+
12
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__inner {
13
+ box-sizing: border-box;
14
+ display: flex;
15
+ flex-direction: column;
16
+ inline-size: 100%;
17
+ min-inline-size: 0;
18
+ max-inline-size: var(--size-content-max);
19
+ padding-block: var(--space-section-default);
20
+ padding-inline: var(--space-inset-page);
21
+ row-gap: var(--space-heading-content);
22
+ }
23
+
24
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__header {
25
+ display: flex;
26
+ flex-direction: column;
27
+ min-inline-size: 0;
28
+ max-inline-size: var(--size-measure-heading);
29
+ row-gap: var(--space-gap-none);
30
+ }
31
+
32
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__title {
33
+ margin-block: 0;
34
+ text-wrap: balance;
35
+ font-family: var(--font-h2-family);
36
+ font-size: var(--font-h2-size);
37
+ font-weight: var(--font-h2-weight);
38
+ letter-spacing: var(--font-h2-letter-spacing);
39
+ line-height: var(--font-h2-line-height);
40
+ margin-block-end: var(--space-heading-title-description);
41
+ }
42
+
43
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__description {
44
+ margin-block: 0;
45
+ font-family: var(--font-body-md-family);
46
+ font-size: var(--font-body-md-size);
47
+ font-weight: var(--font-body-md-weight);
48
+ letter-spacing: var(--font-body-md-letter-spacing);
49
+ line-height: var(--font-body-md-line-height);
50
+ max-inline-size: var(--size-measure-description);
51
+ }
52
+
53
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__link {
54
+ display: flex;
55
+ margin-block-start: var(--space-heading-description-actions);
56
+ }
57
+
58
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__media {
59
+ align-self: center;
60
+ min-inline-size: 0;
61
+ overflow: clip;
62
+ border-start-end-radius: var(--radius-container);
63
+ border-start-start-radius: var(--radius-container);
64
+ max-inline-size: var(--size-feature-stack-media);
65
+ }
66
+
67
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__image {
68
+ display: block;
69
+ }
70
+
71
+ :where([data-dds-context="marketing"]) .dds-featurestack[data-ground="page"] {
72
+ background-color: var(--color-bg-page);
73
+ color: var(--color-fg-default);
74
+ }
75
+
76
+ :where([data-dds-context="marketing"]) .dds-featurestack[data-ground="strong"] {
77
+ background-color: var(--color-bg-brand-strong);
78
+ color: var(--color-fg-on-brand-strong);
79
+ }
80
+
81
+ :where([data-dds-context="marketing"]) .dds-featurestack[data-ground="subtle"] {
82
+ background-color: var(--color-bg-page);
83
+ background-image: linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
84
+ color: var(--color-fg-default);
85
+ }
86
+
@@ -0,0 +1,19 @@
1
+ import './FeatureStack.css';
2
+ import './feature-stack-impl.css';
3
+ import '../block-reveal.css';
4
+ import { type FeatureStackProps } from './FeatureStack.types.js';
5
+ export type { FeatureStackProps };
6
+ /**
7
+ * A heading, a line, a way on, and an illustration the band ends on — FeatureSplit stacked, the
8
+ * words over the picture rather than beside it. The reference design's PartnersPayout layout, taken
9
+ * down to its frame.
10
+ *
11
+ * The reference drew figures between the heading and the picture. Those were the page's content,
12
+ * not the layout's: a page that wants figures puts them in a section of its own or in its copy, and
13
+ * this keeps only what every use of the layout shares — the words centred over a picture that
14
+ * stands on the band's foot.
15
+ *
16
+ * It arrives the way every block does: the heading, the line, the link, then the picture.
17
+ * `'use client'` for that and for `useId`, which names the region by its heading.
18
+ */
19
+ export declare function FeatureStack({ ground, title, description, link, image, }: FeatureStackProps): import("react").JSX.Element;
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useId } from 'react';
4
+ import './FeatureStack.css';
5
+ import './feature-stack-impl.css';
6
+ import '../block-reveal.css';
7
+ import { given } from '../../given.js';
8
+ import { arriving, useReveal } from '../use-reveal.js';
9
+ import { featureStackDefaults, featureStackParts, } from './FeatureStack.types.js';
10
+ /**
11
+ * A heading, a line, a way on, and an illustration the band ends on — FeatureSplit stacked, the
12
+ * words over the picture rather than beside it. The reference design's PartnersPayout layout, taken
13
+ * down to its frame.
14
+ *
15
+ * The reference drew figures between the heading and the picture. Those were the page's content,
16
+ * not the layout's: a page that wants figures puts them in a section of its own or in its copy, and
17
+ * this keeps only what every use of the layout shares — the words centred over a picture that
18
+ * stands on the band's foot.
19
+ *
20
+ * It arrives the way every block does: the heading, the line, the link, then the picture.
21
+ * `'use client'` for that and for `useId`, which names the region by its heading.
22
+ */
23
+ export function FeatureStack({ ground = featureStackDefaults.ground, title, description, link, image, }) {
24
+ const titleId = useId();
25
+ const [band, revealed] = useReveal();
26
+ return (_jsx("section", { className: featureStackParts.root, "data-ground": ground, "aria-labelledby": titleId, children: _jsxs("div", { className: featureStackParts.inner, ref: band, "data-revealed": revealed, children: [_jsxs("div", { className: featureStackParts.header, children: [_jsx("h2", { className: featureStackParts.title, id: titleId, ...arriving(0), children: title }), given(description) ? (_jsx("p", { className: featureStackParts.description, ...arriving(1), children: description })) : null, link ? (_jsx("div", { className: featureStackParts.link, ...arriving(2), children: link })) : null] }), _jsx("div", { className: featureStackParts.media, ...arriving(3), children: image ? (_jsx("img", { className: featureStackParts.image, src: image.src, alt: image.alt, width: image.width, height: image.height, loading: "lazy", decoding: "async" })) : null })] }) }));
27
+ }
@@ -0,0 +1,34 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { BlockImage } from '../../block-image-data.js';
3
+ export interface FeatureStackOwnProps {
4
+ /**
5
+ * `page` — The default, and the page's own white
6
+ * `subtle` — The grey band, for a section that needs setting apart from the one above it. Painted as the band's tint laid over the page's own ground, so it is the same grey whatever is behind the section
7
+ * `strong` — `color.bg.brand-strong`, the dark band, and the reference design's ground for this layout. The heading and the line under it turn white; an illustration made for a dark ground sits best here
8
+ */
9
+ ground?: 'page' | 'subtle' | 'strong';
10
+ /** Always. The statement the section makes, in a few words — "Trusted in 190+ countries", "One account, every device". */
11
+ title: string;
12
+ /** A short line under the heading that says what the statement means for the reader, or what the picture shows. */
13
+ description?: string;
14
+ /** A way on for the reader who wants more — "Learn more", "See where we operate". A standalone Link, under the line, the way FeatureCards takes one. */
15
+ link?: ReactNode;
16
+ /** Always. The picture the section ends on — a globe, a map, a product shot — which the block draws at its own proportions: a square picture stays square, a tall one stays tall, held to the screen's limit. Use one at least as wide as the column, twice that for sharp screens, and give its width and height so the block reserves its shape before it loads. `alt` empty when the heading already says what it shows; otherwise describe it. */
17
+ image: BlockImage;
18
+ }
19
+ export type FeatureStackProps = FeatureStackOwnProps;
20
+ /** The class each part carries. Apply these — do not retype them. */
21
+ export declare const featureStackParts: {
22
+ readonly root: "dds-featurestack";
23
+ readonly inner: "dds-featurestack__inner";
24
+ readonly header: "dds-featurestack__header";
25
+ readonly title: "dds-featurestack__title";
26
+ readonly description: "dds-featurestack__description";
27
+ readonly link: "dds-featurestack__link";
28
+ readonly media: "dds-featurestack__media";
29
+ readonly image: "dds-featurestack__image";
30
+ };
31
+ /** Generated so defaults cannot drift from the contract. */
32
+ export declare const featureStackDefaults: {
33
+ readonly ground: "page";
34
+ };
@@ -0,0 +1,14 @@
1
+ // GENERATED from feature-stack.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const featureStackParts = {
4
+ root: 'dds-featurestack',
5
+ inner: 'dds-featurestack__inner',
6
+ header: 'dds-featurestack__header',
7
+ title: 'dds-featurestack__title',
8
+ description: 'dds-featurestack__description',
9
+ link: 'dds-featurestack__link',
10
+ media: 'dds-featurestack__media',
11
+ image: 'dds-featurestack__image',
12
+ };
13
+ /** Generated so defaults cannot drift from the contract. */
14
+ export const featureStackDefaults = { ground: 'page' };
@@ -0,0 +1,87 @@
1
+ /*
2
+ * Scoped to this package, like the generated sheet beside it.
3
+ */
4
+
5
+ /*
6
+ * From the fold, the words are centred over the picture.
7
+ *
8
+ * FeatureCards' rule and its reason: content stacked under a heading takes a centred heading. The
9
+ * header and its line are capped narrower than the column, so `margin-inline: auto` centres those
10
+ * boxes rather than their words inside a box left at the start edge; the link centres with them.
11
+ *
12
+ * `48rem` longhand because `var()` is not permitted in a container query condition, and it is the
13
+ * width the rest of this package folds at.
14
+ */
15
+ @container (min-width: 48rem) {
16
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__header {
17
+ align-items: center;
18
+ margin-inline: auto;
19
+ text-align: center;
20
+ }
21
+
22
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__description {
23
+ margin-inline: auto;
24
+ }
25
+
26
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__link {
27
+ justify-content: center;
28
+ }
29
+ }
30
+
31
+ /*
32
+ * A heading with nothing under it closes up: its bound step is the distance to the line, and with
33
+ * nothing there it would only add to the step from the words to the picture. `:last-child` is the
34
+ * condition itself, DataTable's way, rather than a prop standing in for it.
35
+ */
36
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__title:last-child {
37
+ margin-block-end: 0;
38
+ }
39
+
40
+ /*
41
+ * The illustration stands on the section's foot.
42
+ *
43
+ * It reaches down through the section's own bottom padding to the band's edge, so the picture
44
+ * stands on the band rather than floating above the next one — the reference design's globe, which
45
+ * the band ends on. space.section.default is the inner's padding, given back.
46
+ */
47
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__media {
48
+ margin-block-end: calc(-1 * var(--space-section-default));
49
+ }
50
+
51
+ /*
52
+ * The picture keeps its own shape; the screen only decides how tall it may grow.
53
+ *
54
+ * The frame wraps the picture rather than a box the block chose: as wide as the picture's shape
55
+ * allows, up to the column, and centred. The picture shows at its own proportions — a square stays
56
+ * square, a landscape stays landscape — so a page that brings a 1:1 picture gets a 1:1 picture,
57
+ * whatever shape the block's own example is. What changes with the screen is the tallest it may be:
58
+ * aspect.portrait of the column on a phone, where the column is narrow and a portrait is what fills
59
+ * it; aspect.landscape of its widest from the fold, so a band never becomes a picture with a heading
60
+ * on top. A picture past that limit is drawn smaller, keeping its shape, never cropped.
61
+ *
62
+ * The limits are aspect.portrait (4:5) and aspect.landscape (4:3) said as factors, 1.25 and 0.75 —
63
+ * a ratio token is a pair, and a height has to be a length. `100cqi` is the section's width, the
64
+ * root declaring `container-type`; the column is that less the page gutter each side.
65
+ *
66
+ * `47.9375rem` is the last width below the fold, LogoRows' bound.
67
+ */
68
+ /* Set on the frame rather than the section: a container query styles what is inside the container,
69
+ never the container itself, so the section could not take the fold's value. */
70
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__media {
71
+ --dds-featurestack-column: calc(100cqi - 2 * var(--space-inset-page));
72
+ --dds-featurestack-tallest: calc(var(--dds-featurestack-column) * 1.25);
73
+ inline-size: fit-content;
74
+ }
75
+
76
+ @container (min-width: 48rem) {
77
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__media {
78
+ --dds-featurestack-tallest: calc(min(var(--dds-featurestack-column), var(--size-feature-stack-media)) * 0.75);
79
+ }
80
+ }
81
+
82
+ :where([data-dds-context="marketing"]) .dds-featurestack .dds-featurestack__image {
83
+ block-size: auto;
84
+ inline-size: auto;
85
+ max-block-size: var(--dds-featurestack-tallest);
86
+ max-inline-size: 100%;
87
+ }
@@ -0,0 +1,133 @@
1
+ /* GENERATED from imagebanner.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-imagebanner {
4
+ box-sizing: border-box;
5
+ container-type: inline-size;
6
+ display: flex;
7
+ inline-size: 100%;
8
+ justify-content: center;
9
+ overflow-wrap: anywhere;
10
+ }
11
+
12
+ :where([data-dds-context="marketing"]) .dds-imagebanner .dds-imagebanner__inner {
13
+ box-sizing: border-box;
14
+ display: flex;
15
+ flex-direction: column;
16
+ inline-size: 100%;
17
+ min-inline-size: 0;
18
+ max-inline-size: var(--size-content-max);
19
+ padding-block: var(--space-section-default);
20
+ padding-inline: var(--space-inset-page);
21
+ }
22
+
23
+ :where([data-dds-context="marketing"]) .dds-imagebanner .dds-imagebanner__card {
24
+ box-sizing: border-box;
25
+ display: flex;
26
+ flex-direction: column;
27
+ min-inline-size: 0;
28
+ overflow: clip;
29
+ position: relative;
30
+ border-radius: var(--radius-container);
31
+ color: var(--color-fg-on-brand-strong);
32
+ }
33
+
34
+ :where([data-dds-context="marketing"]) .dds-imagebanner .dds-imagebanner__content {
35
+ box-sizing: border-box;
36
+ display: flex;
37
+ flex-direction: column;
38
+ justify-content: center;
39
+ min-inline-size: 0;
40
+ position: relative;
41
+ padding-block: var(--space-inset-card);
42
+ padding-inline: var(--space-inset-card);
43
+ row-gap: var(--space-gap-none);
44
+ }
45
+
46
+ :where([data-dds-context="marketing"]) .dds-imagebanner .dds-imagebanner__title {
47
+ margin-block: 0;
48
+ text-wrap: balance;
49
+ }
50
+
51
+ :where([data-dds-context="marketing"]) .dds-imagebanner .dds-imagebanner__description {
52
+ margin-block: 0;
53
+ font-family: var(--font-body-md-family);
54
+ font-size: var(--font-body-md-size);
55
+ font-weight: var(--font-body-md-weight);
56
+ letter-spacing: var(--font-body-md-letter-spacing);
57
+ line-height: var(--font-body-md-line-height);
58
+ margin-block-end: var(--space-heading-description-actions);
59
+ max-inline-size: var(--size-measure-description);
60
+ }
61
+
62
+ :where([data-dds-context="marketing"]) .dds-imagebanner .dds-imagebanner__action {
63
+ display: flex;
64
+ column-gap: var(--space-actions-gap);
65
+ row-gap: var(--space-actions-gap);
66
+ }
67
+
68
+ :where([data-dds-context="marketing"]) .dds-imagebanner .dds-imagebanner__media {
69
+ box-sizing: border-box;
70
+ min-inline-size: 0;
71
+ overflow: clip;
72
+ position: relative;
73
+ border-radius: var(--radius-none);
74
+ }
75
+
76
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-media-position="end"] .dds-imagebanner__card {
77
+ flex-direction: row;
78
+ }
79
+
80
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-media-position="start"] .dds-imagebanner__card {
81
+ flex-direction: row-reverse;
82
+ }
83
+
84
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-ground="page"] {
85
+ background-color: var(--color-bg-page);
86
+ color: var(--color-fg-default);
87
+ }
88
+
89
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-ground="page"] .dds-imagebanner__card {
90
+ background-color: var(--color-bg-brand-strong);
91
+ }
92
+
93
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-ground="strong"] {
94
+ background-color: var(--color-bg-brand-strong);
95
+ color: var(--color-fg-on-brand-strong);
96
+ }
97
+
98
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-ground="strong"] .dds-imagebanner__card {
99
+ background-color: var(--color-bg-surface-card-strong);
100
+ }
101
+
102
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-ground="subtle"] {
103
+ background-color: var(--color-bg-page);
104
+ background-image: linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
105
+ color: var(--color-fg-default);
106
+ }
107
+
108
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-ground="subtle"] .dds-imagebanner__card {
109
+ background-color: var(--color-bg-brand-strong);
110
+ }
111
+
112
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-variant="cover"] .dds-imagebanner__title {
113
+ font-family: var(--font-h2-family);
114
+ font-size: var(--font-h2-size);
115
+ font-weight: var(--font-h2-weight);
116
+ letter-spacing: var(--font-h2-letter-spacing);
117
+ line-height: var(--font-h2-line-height);
118
+ margin-block-end: var(--space-heading-title-description);
119
+ }
120
+
121
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-variant="split"] .dds-imagebanner__media {
122
+ aspect-ratio: var(--aspect-landscape);
123
+ }
124
+
125
+ :where([data-dds-context="marketing"]) .dds-imagebanner[data-variant="split"] .dds-imagebanner__title {
126
+ font-family: var(--font-h2-family);
127
+ font-size: var(--font-h2-size);
128
+ font-weight: var(--font-h2-weight);
129
+ letter-spacing: var(--font-h2-letter-spacing);
130
+ line-height: var(--font-h2-line-height);
131
+ margin-block-end: var(--space-heading-title-description);
132
+ }
133
+