@deriv-com/dds-marketing 1.0.2 → 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 (315) hide show
  1. package/.llm/components/awards.md +209 -0
  2. package/.llm/components/background.md +89 -40
  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 +9 -12
  7. package/.llm/components/ctabannerslider.md +15 -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 +2 -2
  15. package/.llm/components/illustrationscene.md +6 -10
  16. package/.llm/components/imagebanner.md +278 -0
  17. package/.llm/components/navbar.md +1 -1
  18. package/.llm/components/navbaritem.md +4 -0
  19. package/.llm/components/pageheader.md +4 -3
  20. package/.llm/components/paginationdots.md +6 -1
  21. package/.llm/components/producthero.md +35 -11
  22. package/.llm/components/resourcebanner.md +247 -0
  23. package/.llm/components/scenescroll.md +222 -0
  24. package/.llm/components/select.md +17 -0
  25. package/.llm/components/stats.md +219 -0
  26. package/.llm/components/steps.md +286 -0
  27. package/.llm/components/stickycards.md +251 -0
  28. package/.llm/components/tableheadercell.md +19 -0
  29. package/.llm/components/teamgrid.md +243 -0
  30. package/.llm/components/testimonialrow.md +5 -0
  31. package/.llm/components/testimonialslider.md +14 -1
  32. package/.llm/components/textarea.md +13 -0
  33. package/.llm/components/textinput.md +13 -0
  34. package/.llm/components/textscroll.md +187 -0
  35. package/.llm/components/tiers.md +227 -0
  36. package/.llm/digest/awards.md +45 -0
  37. package/.llm/digest/background.md +11 -10
  38. package/.llm/digest/bottomsheet.md +2 -0
  39. package/.llm/digest/comparisoncards.md +51 -0
  40. package/.llm/digest/comparisontable.md +53 -0
  41. package/.llm/digest/ctabanner.md +4 -4
  42. package/.llm/digest/ctabannerslider.md +4 -0
  43. package/.llm/digest/datatable.md +65 -0
  44. package/.llm/digest/downloadbanner.md +65 -0
  45. package/.llm/digest/featurecards.md +1 -1
  46. package/.llm/digest/featurecardscarousel.md +54 -0
  47. package/.llm/digest/featuresplit.md +1 -0
  48. package/.llm/digest/featurestack.md +48 -0
  49. package/.llm/digest/illustrationscene.md +2 -3
  50. package/.llm/digest/imagebanner.md +64 -0
  51. package/.llm/digest/navbaritem.md +1 -0
  52. package/.llm/digest/pageheader.md +2 -1
  53. package/.llm/digest/paginationdots.md +3 -1
  54. package/.llm/digest/producthero.md +4 -2
  55. package/.llm/digest/resourcebanner.md +53 -0
  56. package/.llm/digest/scenescroll.md +49 -0
  57. package/.llm/digest/select.md +5 -0
  58. package/.llm/digest/stats.md +46 -0
  59. package/.llm/digest/steps.md +55 -0
  60. package/.llm/digest/stickycards.md +52 -0
  61. package/.llm/digest/tableheadercell.md +4 -0
  62. package/.llm/digest/teamgrid.md +53 -0
  63. package/.llm/digest/testimonialrow.md +2 -0
  64. package/.llm/digest/testimonialslider.md +4 -0
  65. package/.llm/digest/textarea.md +4 -0
  66. package/.llm/digest/textinput.md +4 -0
  67. package/.llm/digest/textscroll.md +43 -0
  68. package/.llm/digest/tiers.md +50 -0
  69. package/.llm/index.md +19 -3
  70. package/.llm/tokens.md +26 -1
  71. package/AGENTS.md +17 -1
  72. package/dist/components/awards-data.d.ts +24 -0
  73. package/dist/components/awards-data.js +11 -0
  74. package/dist/components/block-image-data.d.ts +24 -0
  75. package/dist/components/block-image-data.js +9 -0
  76. package/dist/components/blocks/awards/Awards.css +134 -0
  77. package/dist/components/blocks/awards/Awards.d.ts +24 -0
  78. package/dist/components/blocks/awards/Awards.js +114 -0
  79. package/dist/components/blocks/awards/Awards.types.d.ts +31 -0
  80. package/dist/components/blocks/awards/Awards.types.js +16 -0
  81. package/dist/components/blocks/awards/awards-impl.css +222 -0
  82. package/dist/components/blocks/cards-of.d.ts +16 -0
  83. package/dist/components/blocks/cards-of.js +23 -0
  84. package/dist/components/blocks/comparison-cards/ComparisonCards.css +195 -0
  85. package/dist/components/blocks/comparison-cards/ComparisonCards.d.ts +24 -0
  86. package/dist/components/blocks/comparison-cards/ComparisonCards.js +75 -0
  87. package/dist/components/blocks/comparison-cards/ComparisonCards.types.d.ts +49 -0
  88. package/dist/components/blocks/comparison-cards/ComparisonCards.types.js +26 -0
  89. package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +262 -0
  90. package/dist/components/blocks/comparison-table/ComparisonTable.css +111 -0
  91. package/dist/components/blocks/comparison-table/ComparisonTable.d.ts +25 -0
  92. package/dist/components/blocks/comparison-table/ComparisonTable.js +100 -0
  93. package/dist/components/blocks/comparison-table/ComparisonTable.types.d.ts +36 -0
  94. package/dist/components/blocks/comparison-table/ComparisonTable.types.js +15 -0
  95. package/dist/components/blocks/comparison-table/comparison-table-impl.css +143 -0
  96. package/dist/components/blocks/cta-banner/CtaBanner.css +1 -0
  97. package/dist/components/blocks/cta-banner/CtaBanner.js +2 -2
  98. package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +4 -3
  99. package/dist/components/blocks/cta-banner/CtaBanner.types.js +1 -1
  100. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +1 -0
  101. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +1 -1
  102. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +6 -2
  103. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +8 -0
  104. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +1 -1
  105. package/dist/components/blocks/data-table/DataTable.css +170 -0
  106. package/dist/components/blocks/data-table/DataTable.d.ts +29 -0
  107. package/dist/components/blocks/data-table/DataTable.js +84 -0
  108. package/dist/components/blocks/data-table/DataTable.types.d.ts +69 -0
  109. package/dist/components/blocks/data-table/DataTable.types.js +19 -0
  110. package/dist/components/blocks/data-table/data-table-impl.css +155 -0
  111. package/dist/components/blocks/download-banner/DownloadBanner.css +228 -0
  112. package/dist/components/blocks/download-banner/DownloadBanner.d.ts +28 -0
  113. package/dist/components/blocks/download-banner/DownloadBanner.js +75 -0
  114. package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +56 -0
  115. package/dist/components/blocks/download-banner/DownloadBanner.types.js +23 -0
  116. package/dist/components/blocks/download-banner/download-banner-impl.css +216 -0
  117. package/dist/components/blocks/faq-accordion/FaqAccordion.css +1 -0
  118. package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +3 -7
  119. package/dist/components/blocks/feature-bullets/FeatureBullets.css +1 -0
  120. package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +14 -1
  121. package/dist/components/blocks/feature-cards/FeatureCards.css +1 -0
  122. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +2 -1
  123. package/dist/components/blocks/feature-cards/FeatureCards.js +4 -21
  124. package/dist/components/blocks/feature-cards/feature-cards-impl.css +10 -9
  125. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.css +115 -0
  126. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.d.ts +30 -0
  127. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.js +160 -0
  128. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +52 -0
  129. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.js +17 -0
  130. package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +207 -0
  131. package/dist/components/blocks/feature-scroll/FeatureScroll.css +1 -0
  132. package/dist/components/blocks/feature-split/FeatureSplit.css +1 -0
  133. package/dist/components/blocks/feature-split/feature-split-impl.css +14 -1
  134. package/dist/components/blocks/feature-stack/FeatureStack.css +86 -0
  135. package/dist/components/blocks/feature-stack/FeatureStack.d.ts +19 -0
  136. package/dist/components/blocks/feature-stack/FeatureStack.js +27 -0
  137. package/dist/components/blocks/feature-stack/FeatureStack.types.d.ts +34 -0
  138. package/dist/components/blocks/feature-stack/FeatureStack.types.js +14 -0
  139. package/dist/components/blocks/feature-stack/feature-stack-impl.css +87 -0
  140. package/dist/components/blocks/image-banner/ImageBanner.css +133 -0
  141. package/dist/components/blocks/image-banner/ImageBanner.d.ts +32 -0
  142. package/dist/components/blocks/image-banner/ImageBanner.js +41 -0
  143. package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +54 -0
  144. package/dist/components/blocks/image-banner/ImageBanner.types.js +14 -0
  145. package/dist/components/blocks/image-banner/image-banner-impl.css +281 -0
  146. package/dist/components/blocks/landing-hero/LandingHero.css +1 -0
  147. package/dist/components/blocks/logo-columns/LogoColumns.css +1 -0
  148. package/dist/components/blocks/logo-rows/LogoRows.css +1 -0
  149. package/dist/components/blocks/page-header/PageHeader.css +1 -0
  150. package/dist/components/blocks/page-header/PageHeader.js +2 -2
  151. package/dist/components/blocks/page-header/PageHeader.types.d.ts +4 -2
  152. package/dist/components/blocks/page-header/PageHeader.types.js +1 -1
  153. package/dist/components/blocks/page-header/page-header-impl.css +5 -3
  154. package/dist/components/blocks/product-hero/ProductHero.css +8 -3
  155. package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
  156. package/dist/components/blocks/product-hero/ProductHero.js +5 -2
  157. package/dist/components/blocks/product-hero/ProductHero.types.d.ts +5 -1
  158. package/dist/components/blocks/product-hero/ProductHero.types.js +1 -0
  159. package/dist/components/blocks/product-hero/product-hero-impl.css +43 -12
  160. package/dist/components/blocks/resource-banner/ResourceBanner.css +106 -0
  161. package/dist/components/blocks/resource-banner/ResourceBanner.d.ts +32 -0
  162. package/dist/components/blocks/resource-banner/ResourceBanner.js +51 -0
  163. package/dist/components/blocks/resource-banner/ResourceBanner.types.d.ts +44 -0
  164. package/dist/components/blocks/resource-banner/ResourceBanner.types.js +14 -0
  165. package/dist/components/blocks/resource-banner/resource-banner-impl.css +69 -0
  166. package/dist/components/blocks/scene-scroll/SceneScroll.css +93 -0
  167. package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +36 -0
  168. package/dist/components/blocks/scene-scroll/SceneScroll.js +54 -0
  169. package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +32 -0
  170. package/dist/components/blocks/scene-scroll/SceneScroll.types.js +15 -0
  171. package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +275 -0
  172. package/dist/components/blocks/stats/Stats.css +139 -0
  173. package/dist/components/blocks/stats/Stats.d.ts +24 -0
  174. package/dist/components/blocks/stats/Stats.js +120 -0
  175. package/dist/components/blocks/stats/Stats.types.d.ts +36 -0
  176. package/dist/components/blocks/stats/Stats.types.js +19 -0
  177. package/dist/components/blocks/stats/stats-count.d.ts +34 -0
  178. package/dist/components/blocks/stats/stats-count.js +61 -0
  179. package/dist/components/blocks/stats/stats-impl.css +284 -0
  180. package/dist/components/blocks/stats/use-wheel.d.ts +37 -0
  181. package/dist/components/blocks/stats/use-wheel.js +126 -0
  182. package/dist/components/blocks/steps/Steps.css +202 -0
  183. package/dist/components/blocks/steps/Steps.d.ts +32 -0
  184. package/dist/components/blocks/steps/Steps.js +65 -0
  185. package/dist/components/blocks/steps/Steps.types.d.ts +48 -0
  186. package/dist/components/blocks/steps/Steps.types.js +21 -0
  187. package/dist/components/blocks/steps/steps-impl.css +216 -0
  188. package/dist/components/blocks/steps/use-turn.d.ts +33 -0
  189. package/dist/components/blocks/steps/use-turn.js +75 -0
  190. package/dist/components/blocks/sticky-cards/StickyCards.css +154 -0
  191. package/dist/components/blocks/sticky-cards/StickyCards.d.ts +35 -0
  192. package/dist/components/blocks/sticky-cards/StickyCards.js +153 -0
  193. package/dist/components/blocks/sticky-cards/StickyCards.types.d.ts +43 -0
  194. package/dist/components/blocks/sticky-cards/StickyCards.types.js +18 -0
  195. package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +393 -0
  196. package/dist/components/blocks/team-grid/TeamGrid.css +159 -0
  197. package/dist/components/blocks/team-grid/TeamGrid.d.ts +28 -0
  198. package/dist/components/blocks/team-grid/TeamGrid.js +74 -0
  199. package/dist/components/blocks/team-grid/TeamGrid.types.d.ts +51 -0
  200. package/dist/components/blocks/team-grid/TeamGrid.types.js +20 -0
  201. package/dist/components/blocks/team-grid/team-grid-impl.css +129 -0
  202. package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -0
  203. package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +1 -1
  204. package/dist/components/blocks/testimonial-row/TestimonialRow.js +4 -3
  205. package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +3 -0
  206. package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +1 -1
  207. package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +8 -0
  208. package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -0
  209. package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +1 -1
  210. package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +2 -2
  211. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +8 -0
  212. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +1 -1
  213. package/dist/components/blocks/text-scroll/TextScroll.css +53 -0
  214. package/dist/components/blocks/text-scroll/TextScroll.d.ts +5 -0
  215. package/dist/components/blocks/text-scroll/TextScroll.js +71 -0
  216. package/dist/components/blocks/text-scroll/TextScroll.types.d.ts +22 -0
  217. package/dist/components/blocks/text-scroll/TextScroll.types.js +10 -0
  218. package/dist/components/blocks/text-scroll/text-scroll-impl.css +115 -0
  219. package/dist/components/blocks/tiers/Tiers.css +233 -0
  220. package/dist/components/blocks/tiers/Tiers.d.ts +32 -0
  221. package/dist/components/blocks/tiers/Tiers.js +68 -0
  222. package/dist/components/blocks/tiers/Tiers.types.d.ts +45 -0
  223. package/dist/components/blocks/tiers/Tiers.types.js +25 -0
  224. package/dist/components/blocks/tiers/tiers-impl.css +185 -0
  225. package/dist/components/blocks/use-rotation.d.ts +12 -2
  226. package/dist/components/blocks/use-rotation.js +6 -28
  227. package/dist/components/comparison-cards-data.d.ts +59 -0
  228. package/dist/components/comparison-cards-data.js +12 -0
  229. package/dist/components/comparison-table-data.d.ts +39 -0
  230. package/dist/components/comparison-table-data.js +11 -0
  231. package/dist/components/core/accordion-item/AccordionItem.css +1 -5
  232. package/dist/components/core/background/Background.css +23 -0
  233. package/dist/components/core/background/Background.d.ts +10 -4
  234. package/dist/components/core/background/Background.js +16 -7
  235. package/dist/components/core/background/Background.types.d.ts +11 -8
  236. package/dist/components/core/background/Background.types.js +3 -1
  237. package/dist/components/core/background/background-impl.css +334 -1
  238. package/dist/components/core/background/halftone.d.ts +11 -0
  239. package/dist/components/core/background/halftone.js +43 -3
  240. package/dist/components/core/background/patterns.d.ts +66 -0
  241. package/dist/components/core/background/patterns.js +244 -0
  242. package/dist/components/core/background/shader.d.ts +44 -0
  243. package/dist/components/core/background/shader.js +307 -0
  244. package/dist/components/core/background/use-shader.d.ts +11 -0
  245. package/dist/components/core/background/use-shader.js +25 -0
  246. package/dist/components/core/background/use-spotlight.d.ts +2 -1
  247. package/dist/components/core/background/use-spotlight.js +9 -1
  248. package/dist/components/core/bottom-sheet/BottomSheet.js +2 -2
  249. package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +3 -1
  250. package/dist/components/core/breadcrumb/Breadcrumb.d.ts +1 -0
  251. package/dist/components/core/breadcrumb/Breadcrumb.js +1 -0
  252. package/dist/components/core/breadcrumb/breadcrumb-impl.css +11 -0
  253. package/dist/components/core/button/button-impl.css +14 -1
  254. package/dist/components/core/illustration-card/IllustrationCard.js +1 -1
  255. package/dist/components/core/illustration-card/illustration-card-impl.css +20 -0
  256. package/dist/components/core/illustration-scene/IllustrationScene.css +4 -7
  257. package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +2 -3
  258. package/dist/components/core/illustration-scene/illustration-scene-impl.css +7 -1
  259. package/dist/components/core/link/Link.js +7 -3
  260. package/dist/components/core/link/link-impl.css +29 -2
  261. package/dist/components/core/navbar/Navbar.css +2 -2
  262. package/dist/components/core/navbar/Navbar.types.d.ts +1 -1
  263. package/dist/components/core/navbar-item/NavbarItem.d.ts +2 -1
  264. package/dist/components/core/navbar-item/NavbarItem.js +3 -10
  265. package/dist/components/core/navbar-item/NavbarItem.types.d.ts +4 -1
  266. package/dist/components/core/navbar-item/NavbarItem.types.js +1 -1
  267. package/dist/components/core/navbar-item/navbar-item-impl.css +10 -0
  268. package/dist/components/core/navbar-menu/navbar-menu-impl.css +9 -0
  269. package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +19 -0
  270. package/dist/components/core/pagination/Pagination.js +1 -1
  271. package/dist/components/core/pagination/pagination-impl.css +9 -0
  272. package/dist/components/core/pagination-dots/PaginationDots.d.ts +1 -1
  273. package/dist/components/core/pagination-dots/PaginationDots.js +3 -3
  274. package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +3 -1
  275. package/dist/components/core/segmented-control/SegmentedControl.css +4 -3
  276. package/dist/components/core/segmented-control/SegmentedControl.js +17 -3
  277. package/dist/components/core/segmented-control-item/SegmentedControlItem.css +2 -1
  278. package/dist/components/core/select/Select.js +3 -3
  279. package/dist/components/core/select/Select.types.d.ts +11 -1
  280. package/dist/components/core/select/Select.types.js +1 -1
  281. package/dist/components/core/tab-list/TabList.js +9 -1
  282. package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +1 -1
  283. package/dist/components/core/table-header-cell/TableHeaderCell.js +5 -2
  284. package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +7 -1
  285. package/dist/components/core/table-header-cell/TableHeaderCell.types.js +1 -1
  286. package/dist/components/core/text-area/TextArea.d.ts +1 -1
  287. package/dist/components/core/text-area/TextArea.js +2 -2
  288. package/dist/components/core/text-area/TextArea.types.d.ts +9 -1
  289. package/dist/components/core/text-area/TextArea.types.js +1 -1
  290. package/dist/components/core/text-input/TextInput.d.ts +1 -1
  291. package/dist/components/core/text-input/TextInput.js +2 -2
  292. package/dist/components/core/text-input/TextInput.types.d.ts +9 -1
  293. package/dist/components/core/text-input/TextInput.types.js +1 -1
  294. package/dist/components/data-table-data.d.ts +33 -0
  295. package/dist/components/data-table-data.js +12 -0
  296. package/dist/components/download-banner-data.d.ts +52 -0
  297. package/dist/components/download-banner-data.js +11 -0
  298. package/dist/components/index.d.ts +45 -0
  299. package/dist/components/index.js +32 -0
  300. package/dist/components/resource-banner-data.d.ts +34 -0
  301. package/dist/components/resource-banner-data.js +13 -0
  302. package/dist/components/scene-scroll-data.d.ts +24 -0
  303. package/dist/components/scene-scroll-data.js +9 -0
  304. package/dist/components/stats-data.d.ts +28 -0
  305. package/dist/components/stats-data.js +11 -0
  306. package/dist/components/steps-data.d.ts +38 -0
  307. package/dist/components/steps-data.js +13 -0
  308. package/dist/components/sticky-cards-data.d.ts +43 -0
  309. package/dist/components/sticky-cards-data.js +12 -0
  310. package/dist/components/team-grid-data.d.ts +38 -0
  311. package/dist/components/team-grid-data.js +11 -0
  312. package/dist/components/tiers-data.d.ts +47 -0
  313. package/dist/components/tiers-data.js +13 -0
  314. package/dist/marketing.css +77 -28
  315. package/package.json +1 -1
@@ -0,0 +1,216 @@
1
+ /*
2
+ * Scoped to this package, like the generated sheet beside it.
3
+ */
4
+
5
+ /*
6
+ * Two badges to a row on a phone, each chip filling its column, so every badge is the same size
7
+ * there as it is from the fold. `minmax(0, 1fr)` rather than `1fr`, so a column narrower than the
8
+ * artwork narrows the artwork — it keeps its proportions inside the chip — instead of pushing the
9
+ * grid past the card.
10
+ */
11
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badges {
12
+ grid-template-columns: repeat(2, minmax(0, 1fr));
13
+ }
14
+
15
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badge-link {
16
+ inline-size: 100%;
17
+ }
18
+
19
+ /*
20
+ * The code and its line from the fold, and the badges a row that wraps.
21
+ *
22
+ * On a phone the generated sheet draws neither the code nor the line telling the reader to scan
23
+ * it — the reference design's swap, and its reason: a code is for a reader on a device other than
24
+ * the one it opens on, and on a phone the reader is holding that device. The heading stays, so the
25
+ * region keeps one name at every width. The badges there are two to a row, each filling its
26
+ * column, the reference's phone grid.
27
+ *
28
+ * From the fold there is room for the code beside the words, and the badges sit in a row that
29
+ * wraps, each chip size.download-banner.badge wide — one width for every store, whatever the shape
30
+ * of its artwork.
31
+ *
32
+ * `48rem` longhand because `var()` is not permitted in a container query condition, and it is the
33
+ * width the rest of this package folds at.
34
+ */
35
+ @container (min-width: 48rem) {
36
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__qr-tile,
37
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__qr-label {
38
+ display: block;
39
+ }
40
+
41
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badges {
42
+ display: flex;
43
+ flex-wrap: wrap;
44
+ }
45
+
46
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badge-link {
47
+ inline-size: var(--size-download-banner-badge);
48
+ }
49
+ }
50
+
51
+ /*
52
+ * From 64rem the heading and the badges side by side.
53
+ *
54
+ * The reference's desktop card: the code and its words at the start, the badges ranged to the end
55
+ * and wrapping there when there are more than the row holds. The words keep their own width and the
56
+ * badges take what is left, so a long set wraps under itself rather than pushing the heading into a
57
+ * column a word wide. `end` rather than right, so a mirrored page ranges them the other way.
58
+ */
59
+ @container (min-width: 64rem) {
60
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__card {
61
+ align-items: center;
62
+ flex-direction: row;
63
+ justify-content: space-between;
64
+ }
65
+
66
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__lead {
67
+ flex: 0 1 auto;
68
+ }
69
+
70
+ :where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badges {
71
+ flex: 1 1 0;
72
+ justify-content: flex-end;
73
+ }
74
+ }
75
+
76
+ /*
77
+ * The featured card: the brand's coral, with its pattern inside it.
78
+ *
79
+ * color.bg.brand, the same in both themes, with the pattern on Background's brand tone — the mesh
80
+ * there is the design system's own front page. Every word on it is white, color.fg.on-brand, the
81
+ * line under the heading and the small print included: the quieter white the dark band uses is too
82
+ * faint on the coral, as CtaBanner found. The badges keep their own black, which reads on the coral.
83
+ * The featured card draws no QR code: it promotes the app with the app's own image, and the badges
84
+ * are its one way in.
85
+ *
86
+ * The pattern is held inside the card's own corners by its own layer, rounded as the card is, rather
87
+ * than by the card clipping everything it holds — the app's image rises out of the card's top edge,
88
+ * and a card that clipped would cut it off. The pattern stacks under the words.
89
+ */
90
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card {
91
+ background-color: var(--color-bg-brand);
92
+ color: var(--color-fg-on-brand);
93
+ isolation: isolate;
94
+ position: relative;
95
+ }
96
+
97
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card > .dds-background {
98
+ border-radius: inherit;
99
+ }
100
+
101
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] :is(.dds-downloadbanner__description, .dds-downloadbanner__disclaimer) {
102
+ color: var(--color-fg-on-brand);
103
+ }
104
+
105
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] :is(.dds-downloadbanner__lead, .dds-downloadbanner__badges) {
106
+ position: relative;
107
+ z-index: 1;
108
+ }
109
+
110
+
111
+ /*
112
+ * The featured card's layout: a page promoting an app.
113
+ *
114
+ * A grid rather than the standard card's row. On a phone it stacks — the app's name, the heading
115
+ * and the line, the badges, and the app's image under them, resting on the card's foot.
116
+ *
117
+ * The lead is opened out (`display: contents`) so the words are placed on the card's grid
118
+ * themselves, beside the app's image from the fold.
119
+ */
120
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card {
121
+ align-items: center;
122
+ display: grid;
123
+ grid-template-areas:
124
+ 'text'
125
+ 'badges'
126
+ 'media';
127
+ grid-template-columns: minmax(0, 1fr);
128
+ justify-content: normal;
129
+ }
130
+
131
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__lead {
132
+ display: contents;
133
+ }
134
+
135
+ /* Opened out, the lead stacks nothing above the pattern any more, so its words are
136
+ lifted over the pattern themselves — and the app's image with them. */
137
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] :is(.dds-downloadbanner__text, .dds-downloadbanner__media) {
138
+ position: relative;
139
+ z-index: 1;
140
+ }
141
+
142
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__text {
143
+ grid-area: text;
144
+ }
145
+
146
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__badges {
147
+ grid-area: badges;
148
+ }
149
+
150
+ /*
151
+ * The app's image rests on the card's foot: it reaches down through the card's own padding to the
152
+ * bottom edge, so the phone stands on the card rather than floating in it. The image is the page's,
153
+ * at its own proportions, never wider than its column.
154
+ */
155
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media {
156
+ align-self: end;
157
+ grid-area: media;
158
+ justify-self: center;
159
+ max-inline-size: 100%;
160
+ margin-block-end: calc(-1 * var(--space-inset-card));
161
+ }
162
+
163
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media > * {
164
+ block-size: auto;
165
+ inline-size: 100%;
166
+ }
167
+
168
+ /*
169
+ * Bare media is a block; a component keeps its own display.
170
+ *
171
+ * `display: block` is for what arrives as a raw element — an image, a video, an inline SVG — which
172
+ * sits on a text baseline otherwise and leaves a gap under it. Written at no weight at all, so a
173
+ * component the page placed here — an IllustrationScene, whose grid lays its pane over its photo —
174
+ * keeps the display its own sheet gives it. In the rule above, a class deeper than the component's
175
+ * root, it turned the scene's grid into a block, and the pane fell below the photo and was clipped.
176
+ */
177
+ :where([data-dds-context="marketing"] .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media > *) {
178
+ display: block;
179
+ }
180
+
181
+
182
+ /*
183
+ * At full width, the split: the words over the badges on one side, the app on the other at its own
184
+ * width (size.download-banner.media, a phone held out rather than a slab). The app rises out of the
185
+ * card's top edge by the step a heading keeps from its content, so the card reads as the app being
186
+ * held out to the reader.
187
+ *
188
+ * At 64rem rather than the fold. Between the two the words column is narrow, its heading wraps and
189
+ * its badges stack, so the words stand taller than the app: the app, resting on the card's foot,
190
+ * then sat well below the top edge with coral above it and never rose. Stacked, as on a phone, until
191
+ * there is room for the split to look like one.
192
+ */
193
+ @container (min-width: 64rem) {
194
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card {
195
+ grid-template-areas:
196
+ 'text media'
197
+ 'badges media';
198
+ grid-template-columns: minmax(0, 1fr) auto;
199
+ }
200
+
201
+ /* The badges start under the words, where the standard card ranges them to the end. The app is
202
+ taller than the words, and its two rows share what it adds; the words sit at the foot of theirs
203
+ and the badges at the head of theirs, so the two stay together in the middle of the card. */
204
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__text {
205
+ align-self: end;
206
+ }
207
+
208
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__badges {
209
+ align-self: start;
210
+ justify-content: flex-start;
211
+ }
212
+
213
+ :where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media {
214
+ margin-block-start: calc(-1 * (var(--space-inset-card) + var(--space-heading-content)));
215
+ }
216
+ }
@@ -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-faqaccordion .dds-faqaccordion__inner {
@@ -23,11 +23,11 @@
23
23
  /*
24
24
  * The questions turn round on the dark band.
25
25
  *
26
- * AccordionItem draws its question in color.fg.default, its chevron and its hover in color.fg.muted,
26
+ * AccordionItem draws its question in color.fg.default, its chevron in color.fg.muted,
27
27
  * its rules in color.border.subtle and its focus ring in color.border.focus — every one of them made
28
28
  * for a light page, and every one dark on near-black. It has no tone to answer with, so the block,
29
- * which knows its ground, gives it the dark band's fixed roles: white questions, a chevron and a
30
- * hover at fg.muted-inverse, rules at the band's veil, the band's own focus ring. The answers need
29
+ * which knows its ground, gives it the dark band's fixed roles: white questions, a chevron at
30
+ * fg.muted-inverse, rules at the band's veil, the band's own focus ring. The answers need
31
31
  * nothing: they take the section's ink, which is already white.
32
32
  */
33
33
  :where([data-dds-context="marketing"]) .dds-faqaccordion[data-ground="strong"] .dds-accordionitem {
@@ -38,10 +38,6 @@
38
38
  color: var(--color-fg-on-brand-strong);
39
39
  }
40
40
 
41
- :where([data-dds-context="marketing"])
42
- .dds-faqaccordion[data-ground="strong"]
43
- .dds-accordionitem
44
- .dds-accordionitem__trigger:hover:where(:not(:disabled)),
45
41
  :where([data-dds-context="marketing"]) .dds-faqaccordion[data-ground="strong"] .dds-accordionitem .dds-accordionitem__marker {
46
42
  color: var(--color-fg-muted-inverse);
47
43
  }
@@ -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-featurebullets .dds-featurebullets__inner {
@@ -91,11 +91,24 @@
91
91
  */
92
92
  :where([data-dds-context="marketing"]) .dds-featurebullets .dds-featurebullets__media > * {
93
93
  block-size: 100%;
94
- display: block;
95
94
  inline-size: 100%;
96
95
  object-fit: cover;
97
96
  }
98
97
 
98
+ /*
99
+ * Bare media is a block; a component keeps its own display.
100
+ *
101
+ * `display: block` is for what arrives as a raw element — an image, a video, an inline SVG — which
102
+ * sits on a text baseline otherwise and leaves a gap under it. Written at no weight at all, so a
103
+ * component the page placed here — an IllustrationScene, whose grid lays its pane over its photo —
104
+ * keeps the display its own sheet gives it. In the rule above, a class deeper than the component's
105
+ * root, it turned the scene's grid into a block, and the pane fell below the photo and was clipped.
106
+ */
107
+ :where([data-dds-context="marketing"] .dds-featurebullets .dds-featurebullets__media > *) {
108
+ display: block;
109
+ }
110
+
111
+
99
112
  :where([data-dds-context="marketing"]) .dds-featurebullets .dds-featurebullets__media img {
100
113
  block-size: 100%;
101
114
  display: block;
@@ -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-featurecards .dds-featurecards__inner {
@@ -13,7 +13,8 @@ export type { FeatureCardsProps };
13
13
  * how many cards share a row.
14
14
  *
15
15
  * The row is read from the cards. One column on a phone and two from the fold; at full width three,
16
- * four when there are exactly four, and one or two held to two thirds of the row, centred. A card
16
+ * four when there are exactly four, two filling the row half each, and one held to two thirds of
17
+ * it, centred. A card
17
18
  * alone lays its words beside a portrait picture. The stylesheet asks all of it of the markup — the
18
19
  * count is already there, and a prop restating it is a second place for the two to disagree.
19
20
  *
@@ -1,31 +1,13 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Children, Fragment, isValidElement, useId } from 'react';
3
+ import { useId } from 'react';
4
4
  import './FeatureCards.css';
5
5
  import './feature-cards-impl.css';
6
6
  import '../block-reveal.css';
7
7
  import { given } from '../../given.js';
8
+ import { cardsOf } from '../cards-of.js';
8
9
  import { arriving, useReveal } from '../use-reveal.js';
9
10
  import { featureCardsDefaults, featureCardsParts } from './FeatureCards.types.js';
10
- /**
11
- * The cards, with any fragment opened out.
12
- *
13
- * `Children.toArray` flattens arrays and leaves a fragment whole, so a page writing
14
- * `<>{cards}</>` handed over one child: every card in a single cell, and the grid reading the set
15
- * as one card alone. A fragment is the page grouping its own markup, never a card, so it is opened
16
- * out here and the grid counts what is inside it.
17
- */
18
- function cardsOf(children, within = '') {
19
- return Children.toArray(children).flatMap((child, at) => {
20
- // `toArray` keys a fragment's children afresh — `.0`, `.1` — so a card is keyed by the
21
- // fragment it came out of as well as its own place, or two cards from different groups share a
22
- // key and React reconciles one into the other's cell.
23
- const key = `${within}${isValidElement(child) && child.key !== null ? child.key : at}`;
24
- return isValidElement(child) && child.type === Fragment
25
- ? cardsOf(child.props.children, `${key}/`)
26
- : [{ key, card: child }];
27
- });
28
- }
29
11
  /**
30
12
  * Where a card comes in the arrival, capped so a long set does not keep a reader waiting.
31
13
  *
@@ -46,7 +28,8 @@ const LAST_STEP = FIRST_CARD + 3;
46
28
  * how many cards share a row.
47
29
  *
48
30
  * The row is read from the cards. One column on a phone and two from the fold; at full width three,
49
- * four when there are exactly four, and one or two held to two thirds of the row, centred. A card
31
+ * four when there are exactly four, two filling the row half each, and one held to two thirds of
32
+ * it, centred. A card
50
33
  * alone lays its words beside a portrait picture. The stylesheet asks all of it of the markup — the
51
34
  * count is already there, and a prop restating it is a second place for the two to disagree.
52
35
  *
@@ -122,22 +122,23 @@
122
122
  grid-template-columns: repeat(4, minmax(0, 1fr));
123
123
  }
124
124
 
125
- /* A pair as two columns of their own, rather than two of three with an empty third beside them —
126
- the rule below then holds the pair to the width two columns take in a row of three. */
125
+ /* A pair as two columns of their own, rather than two of three with an empty third beside them,
126
+ across the whole row as three and four are — each card half of it. */
127
127
  :where([data-dds-context="marketing"]) .dds-featurecards .dds-featurecards__grid:has(> :nth-child(2):last-child) {
128
128
  grid-template-columns: repeat(2, minmax(0, 1fr));
129
129
  }
130
130
 
131
131
  /*
132
- * One or two cards hold to two thirds of the row, centred, rather than the whole of it.
132
+ * One card alone holds to two thirds of the row, centred, rather than the whole of it.
133
133
  *
134
- * Two cards across the full width are each half as wide again as a card in a row of three, and
135
- * one alone is a banner. Two thirds is exactly two of the three columns and the gutter between
136
- * them, so a pair is the width a pair is in any other set, and a single card the width of that
137
- * pair. Computed from the row's own width and gutter rather than a fixed measure, so it follows
138
- * the grid wherever the grid is.
134
+ * One across the full width is a banner. Two thirds is exactly two of the three columns and the
135
+ * gutter between them — the width a pair takes in a row of three. Computed from the row's own
136
+ * width and gutter rather than a fixed measure, so it follows the grid wherever the grid is.
137
+ *
138
+ * A pair is not held: it fills the row, as three and four do, so a section's cards reach the same
139
+ * edges whatever their number.
139
140
  */
140
- :where([data-dds-context="marketing"]) .dds-featurecards .dds-featurecards__grid:is(:has(> :only-child), :has(> :nth-child(2):last-child)) {
141
+ :where([data-dds-context="marketing"]) .dds-featurecards .dds-featurecards__grid:has(> :only-child) {
141
142
  margin-inline: auto;
142
143
  max-inline-size: calc((100% - 2 * var(--space-grid-gutter)) * 2 / 3 + var(--space-grid-gutter));
143
144
  inline-size: 100%;
@@ -0,0 +1,115 @@
1
+ /* GENERATED from featurecardscarousel.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel {
4
+ box-sizing: border-box;
5
+ container-type: inline-size;
6
+ display: flex;
7
+ inline-size: 100%;
8
+ justify-content: center;
9
+ overflow: clip;
10
+ overflow-wrap: anywhere;
11
+ }
12
+
13
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__inner {
14
+ box-sizing: border-box;
15
+ display: flex;
16
+ flex-direction: column;
17
+ inline-size: 100%;
18
+ min-inline-size: 0;
19
+ max-inline-size: var(--size-content-max);
20
+ padding-block: var(--space-section-default);
21
+ padding-inline: var(--space-inset-page);
22
+ row-gap: var(--space-heading-content);
23
+ }
24
+
25
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__header {
26
+ display: flex;
27
+ flex-direction: column;
28
+ min-inline-size: 0;
29
+ max-inline-size: var(--size-measure-heading);
30
+ row-gap: var(--space-gap-none);
31
+ }
32
+
33
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__title {
34
+ margin-block: 0;
35
+ text-wrap: balance;
36
+ font-family: var(--font-h2-family);
37
+ font-size: var(--font-h2-size);
38
+ font-weight: var(--font-h2-weight);
39
+ letter-spacing: var(--font-h2-letter-spacing);
40
+ line-height: var(--font-h2-line-height);
41
+ margin-block-end: var(--space-heading-title-description);
42
+ }
43
+
44
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__description {
45
+ margin-block: 0;
46
+ font-family: var(--font-body-md-family);
47
+ font-size: var(--font-body-md-size);
48
+ font-weight: var(--font-body-md-weight);
49
+ letter-spacing: var(--font-body-md-letter-spacing);
50
+ line-height: var(--font-body-md-line-height);
51
+ max-inline-size: var(--size-measure-description);
52
+ }
53
+
54
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__carousel {
55
+ display: flex;
56
+ flex-direction: column;
57
+ min-inline-size: 0;
58
+ row-gap: var(--space-gap-xl);
59
+ }
60
+
61
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track {
62
+ display: flex;
63
+ outline-style: solid;
64
+ column-gap: var(--space-grid-gutter);
65
+ outline-width: var(--border-width-none);
66
+ }
67
+
68
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__item {
69
+ display: grid;
70
+ min-inline-size: 0;
71
+ }
72
+
73
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__footer {
74
+ align-items: center;
75
+ display: flex;
76
+ justify-content: space-between;
77
+ column-gap: var(--space-gap-lg);
78
+ }
79
+
80
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__nav {
81
+ display: flex;
82
+ flex: none;
83
+ column-gap: var(--space-gap-md);
84
+ }
85
+
86
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__nav-slot {
87
+ display: flex;
88
+ border-radius: var(--radius-pill);
89
+ }
90
+
91
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track:focus-visible {
92
+ outline-color: var(--color-border-focus);
93
+ outline-width: var(--border-width-focus);
94
+ }
95
+
96
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="page"] {
97
+ background-color: var(--color-bg-page);
98
+ color: var(--color-fg-default);
99
+ }
100
+
101
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="strong"] {
102
+ background-color: var(--color-bg-brand-strong);
103
+ color: var(--color-fg-on-brand-strong);
104
+ }
105
+
106
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="subtle"] {
107
+ background-color: var(--color-bg-page);
108
+ background-image: linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
109
+ color: var(--color-fg-default);
110
+ }
111
+
112
+ :where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="strong"] .dds-featurecardscarousel__track:focus-visible {
113
+ outline-color: var(--color-border-focus-on-brand-strong);
114
+ }
115
+
@@ -0,0 +1,30 @@
1
+ import './FeatureCardsCarousel.css';
2
+ import './feature-cards-carousel-impl.css';
3
+ import '../block-reveal.css';
4
+ import { type FeatureCardsCarouselProps } from './FeatureCardsCarousel.types.js';
5
+ export type { FeatureCardsCarouselProps };
6
+ /**
7
+ * A heading over a row of the page's own cards, moved along a stop at a time — the reference site's
8
+ * FeatureCardsCarousel.
9
+ *
10
+ * The cards are Card or CardButton with a CardBody inside, as in FeatureCards: a card's fill, its
11
+ * picture and where it leads are the card's, so the reference's coral, dark and light slides are
12
+ * Card's accent, accent-strong and surface-light, and its cover picture is CardBody's overMedia.
13
+ * What this decides is the heading, the row and the way along it.
14
+ *
15
+ * The browser does the scrolling and the snapping, TestimonialRow's way; this reads where the row
16
+ * is. A stop is a card's start, until the last few cards are all in view — those share the last
17
+ * stop, the row's end, so the row never scrolls into empty space and there are fewer dots than
18
+ * cards at full width. The dots say which stop the row is at and move to any one pressed; the
19
+ * arrows step one either way.
20
+ *
21
+ * Autoplay is off unless asked for. On, PaginationDots holds the clock, as it does for every block
22
+ * that rotates: each motion.duration.dwell it reports the next stop, wrapping from the last to the
23
+ * first, and this scrolls there. It holds while the pointer is over the band or focus is inside it,
24
+ * never runs for a reader who asked for less motion, and stops for good once the reader presses
25
+ * anything in the band or swipes the row.
26
+ *
27
+ * `'use client'` for the row's position, the clock, the arrival, and `useId`, which names the
28
+ * region by its heading.
29
+ */
30
+ export declare function FeatureCardsCarousel({ ground, title, description, autoplay, label, previousLabel, nextLabel, controlsLabel, stopLabel, children, }: FeatureCardsCarouselProps): import("react").JSX.Element | null;