@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
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Background
4
4
 
5
- A ground a section or a block sits on, painted with a pattern rather than a flat fill — a halftone, an aurora, a rule grid or rings. …
5
+ A ground a section or a block sits on, painted with a pattern rather than a flat fill — a halftone, an aurora, a mesh, a rule grid or rings. …
6
6
 
7
7
  `import { Background } from '@deriv-com/dds-marketing'`
8
8
 
@@ -26,16 +26,17 @@ A ground a section or a block sits on, painted with a pattern rather than a flat
26
26
 
27
27
  ## Props
28
28
 
29
- - **tone** `enum` · default "dark" — Which ground the dots are drawn on. It sets the flat colour under the pattern, the dots' ink — coral on the dark and light grounds, white on the coral one — and the ink of what sits on it
30
- - `dark` — The default, and the band the pattern was drawn for: coral dots glowing on color.bg.brand-strong, which is dark in both modes. …
29
+ - **tone** `enum` · default "brand" — Which ground the dots are drawn on. It sets the flat colour under the pattern, the dots' ink — coral on the dark and light grounds, white on the coral one — and the ink of what sits on it
30
+ - `dark` — The band the halftone was drawn for: coral dots glowing on color.bg.brand-strong, which is dark in both modes. …
31
31
  - `light` — Coral dots on the page's own ground, for a light page that wants one moment of brand colour without a solid coral band. …
32
- - `brand` — White dots on the coral brand fill, for a call to action standing on it. …
32
+ - `brand` — The default: the brand's own coral, the ground the mesh was made for and the one a call to action stands on. White dots on it for the halftone. …
33
33
  - never: Matching the page's colour mode. Dark is dark in both modes — a band that should invert with the theme is a plain section on color.bg.page, not this
34
- - **pattern** `enum` · default "halftone" — Which pattern is drawn. The halftone is the default and the one that moves most; the aurora drifts slowly; the grid and the rings are the quietest, their lines rising and spreading at a band's pace. …
35
- - `halftone` — A grid of dots across the whole band that grow towards a soft glow and settle to a fine screen away from it. The default, and the one that moves most
36
- - `aurora` — Broad soft pools of the brand's colour rising from the band's foot and drifting slowly into one another — light as colour rather than as points. Drawn by the stylesheet: no canvas. …
37
- - `grid` — A fine rule grid of hairlines, fading in towards the band's foot — the grid PageHeader paints, offered for any band. Drawn by the stylesheet: no canvas. …
38
- - `rings` — Hairline circles spreading out from the middle of the band's foot, fading in towards it, at size.rings.pitch. Drawn by the stylesheet: no canvas. …
34
+ - **pattern** `enum` · default "halftone" — Which pattern is drawn. The halftone is the default and the one that moves most; the aurora drifts slowly; the mesh flows across the whole band; the grid and the rings are the quietest, their lines rising and spreading at a band's pace. …
35
+ - `halftone` — A grid of dots across the whole band that grow towards a soft glow and settle to a fine screen away from it, over a faint wash of their own ink. …
36
+ - `aurora` — Curtains of light rising from the band's foot: sheets of the brand's colour swaying and folding, with a ragged crest and fine rays running up through them — light falling through folds rather than pools of colour. …
37
+ - `mesh` — The whole band in the brand's reds, folded into one another like a liquid — the design system's own front page. …
38
+ - `grid` — Hairlines a pitch apart, size.rule-grid.pitch, rising from a soft bloom at the band's foot — the grid PageHeader paints, offered for any band, now lit: a brighter point where two lines cross, and every few lines a short dash of light running along it. …
39
+ - `rings` — Hairline circles spreading out from the middle of the band's foot at size.rings.pitch, out of a soft bloom there, with arcs of light travelling round each ring at its own pace and direction. …
39
40
  - never: Choosing per breakpoint. A pattern is the band's identity; one that changed between a phone and a desk would be two bands
40
41
  - **animated** `boolean` · default true — On by default: every pattern moves slowly at rest, whether or not anybody is pointing at it — the halftone's glow and the aurora's pools drift along the band's foot, the grid's rules rise and the rings spread outward, each over motion.duration.drift. …
41
42
  - never: Holding still for readers who asked for less motion. Every pattern already holds still for them, whatever this says; this is the page's choice, not the reader's
@@ -45,7 +46,7 @@ A ground a section or a block sits on, painted with a pattern rather than a flat
45
46
  ## Inside it
46
47
 
47
48
  - 1 component is refused inside it; the list and the reasons are in the long document.
48
- - Renders 3 parts: root, canvas, content.
49
+ - Renders 5 parts: root, canvas, mesh, pool, content.
49
50
 
50
51
  ---
51
52
 
@@ -53,6 +53,8 @@ A panel that rises from the bottom edge to hold a single focused task on small s
53
53
  - never: Turning the gesture off. It draws the handle and nothing more — a pull is answered on a sheet with a close button and on one with neither, the same way a press outside it is. The name says that now; it used to be `dragToDismiss`, which claimed a power over the gesture it never had. …
54
54
  - **onOpenChange** `callback` · required — Always. The sheet does not close itself, so this is the only way out — write the first argument straight back to `open`. …
55
55
  - never: Doing the task. This fires when the sheet is being left, including when it is being left unanswered — commit from the actions in the footer, where the reader pressed something that says what it does
56
+ - **closeLabel** `string` · optional — The accessible name of the close button. Without it the button is named "Close" and the title; pass it to translate that with the page
57
+ - never: Visible text. The button draws a glyph, and this is what a screen reader hears for it
56
58
 
57
59
  ## The type refuses
58
60
 
@@ -0,0 +1,51 @@
1
+ <!-- GENERATED from comparisoncards.contract.json. Do not edit. -->
2
+
3
+ # ComparisonCards
4
+
5
+ A section that sets two to four options side by side under a heading, each a card of its own that repeats the same short rows — a label and this option's value — so a reader compares the options line by line: Spot against Futures, one account type against another. …
6
+
7
+ `import { ComparisonCards } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Two or three products, accounts or plans that answer the same few questions differently — what you hold, what it costs, how far you can lose — and the difference is the point of the section …
12
+ - A "What you can trade" band: Spot against Futures, Options against Multipliers, each with its own rows and its own risk note
13
+
14
+ ## Something else, when
15
+
16
+ - Five or more options, or rows that are the same for every option and read down a column → **ComparisonTable**
17
+ - The options are features rather than alternatives — each a heading and a sentence, with nothing to compare row by row → **FeatureCards**
18
+ - One option and the list of what it includes → **FeatureBullets**
19
+
20
+ ## Never
21
+
22
+ - Live prices, spreads or any figure fetched from a feed. The values are the page's copy and stand still; a value that moves belongs in a component made to show one
23
+ - More than four cards. A fifth is not drawn — five columns of label and value are too narrow to read, and a fifth under four is compared with nothing
24
+ - A disclaimer for the whole set. A footnote belongs to the card it is written on; one true of every option goes in the page's own copy under the section
25
+
26
+ ## Props
27
+
28
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, FeatureCards' axis and its reason: the page builds its rhythm from these, and the ink follows the ground in the same value
29
+ - `page` — The default, and the page's own white. The standard card is the recessed surface on it, the highlighted set's light card gray.50, so both have an edge
30
+ - `subtle` — The grey band, the reference design's ground for this section. …
31
+ - `strong` — `color.bg.brand-strong`, the dark band, for a section a reader should arrive at. …
32
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left. And never the coral `color.bg.brand`, which belongs to the band that asks a reader to act
33
+ - **variant** `enum` · default "standard" — Whether the set is compared as equals or with one option recommended
34
+ - `standard` — The default: options set side by side as equals — every card Card's own `surface`, which follows the theme, the recessed grey on a light page and a dark grey in dark mode, nothing pointing at one of them. …
35
+ - `highlighted` — One option is the one the page recommends: the card marked `recommended` is drawn coral and lifted off the page, every other card on the light card, gray.50 in both themes, quiet beside it. …
36
+ - never: Recommending more than one option. The first card marked `recommended` is the one; a recommendation made twice is no recommendation
37
+ - **title** `string` · required — Always. What is being compared, in the fewest words that name it — "What you can trade", "Choose your account"
38
+ - never: A sentence, or the verdict. The line under it is for the sentence, and the cards make the case
39
+ - **description** `string` · optional — A line saying what the options have in common, or what the reader is choosing between, when the title alone does not
40
+ - never: A disclaimer. A note that belongs to one option is that card's footnote; one that is true of all of them is the page's copy, not the heading's
41
+ - **cards** `data` · required — Always. The options, in reading order — two to four, each with its `title`, a `description`, its `rows` and, where it has them, a `footnote` and an `action`. Every card is drawn the same card. …
42
+ - never: One option on its own — there is nothing for it to be compared with — or values the page cannot stand behind on the day it is read
43
+
44
+ ## Inside it
45
+
46
+ - 7 components are refused inside it; the list and the reasons are in the long document.
47
+ - Renders 20 parts: root, inner, header, title, description, grid, item, body, intro, card-head, card-title, highlight, card-description, rows, row, row-label, row-value, footer, footnote, action.
48
+
49
+ ---
50
+
51
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/comparisoncards.md`.
@@ -0,0 +1,53 @@
1
+ <!-- GENERATED from comparisontable.contract.json. Do not edit. -->
2
+
3
+ # ComparisonTable
4
+
5
+ A comparison-table section for short, fixed column sets. It renders a rounded card with a light header row, horizontal dividers only, a bold first-column label, and two or three value columns. …
6
+
7
+ `import { ComparisonTable } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Comparing two or three options — platforms, plans, operating systems — on the same handful of features, where the reader reads across a row as often as down a column …
12
+ - A product page's "Web terminal, desktop or mobile": the same few features, each option's answer in a word or a short line
13
+ - Schedule-style rows, where a cell may hold a short list of lines — a market's trading sessions, the days a rate applies
14
+
15
+ ## Something else, when
16
+
17
+ - Each option has more to say than a cell holds — a sentence of its own, a footnote, a way on → **ComparisonCards**
18
+ - A large dataset — many instruments, many columns — that a reader searches, sorts or pages through → **DataTable**
19
+ - One option and the list of what it includes → **FeatureBullets**
20
+
21
+ ## Never
22
+
23
+ - More than three options. Only the first four columns are drawn — the labels and three values — because a fourth option in a card this wide is a column too narrow to read
24
+ - Live prices, spreads or any figure fetched from a feed. The values are the page's copy and stand still
25
+ - A paragraph in a cell. A cell is a word, a short line or a short list of them; anything longer belongs in a card of its own
26
+ - Layout. A table means the rows and columns carry meaning, and a screen reader reads it out as rows and columns
27
+
28
+ ## Props
29
+
30
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, and with it the table's card: the page builds its rhythm from these, and the ink follows the ground in the same value
31
+ - `page` — The default, and the page's own white. The card is the recessed surface on it, Card's own `surface`, so it has an edge
32
+ - `subtle` — The grey band, the reference design's ground for this section. The card is raised to color.bg.surface-card-raised on it — white in light — because its own fill is the band's grey. …
33
+ - `strong` — `color.bg.brand-strong`, the dark band, for a section a reader should arrive at. …
34
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left. And never the coral `color.bg.brand`, which belongs to the band that asks a reader to act
35
+ - **title** `string` · required — Always. What is being compared, in the fewest words that name it — "MT5 on every device", "Web terminal or desktop app?". It names the section and the table's scroll region both
36
+ - never: The verdict. The table makes the case; a heading that announces a winner leaves the reader nothing to compare
37
+ - **description** `string` · optional — A line saying what the options have in common, or what the reader is choosing between, when the title alone does not
38
+ - never: A disclaimer. A note true of the whole table goes under it, in `footnote`
39
+ - **columns** `data` · required — Always. …
40
+ - never: One option on its own — there is nothing for it to be compared with — or a fourth option, which is not drawn
41
+ - **rows** `data` · required — Always. The rows, in reading order — each with its `label`, drawn as the row's header in the first column, and its `values` filed under the columns' keys. A value is one line, or a list of short lines that is drawn as a list. …
42
+ - never: Values the page cannot stand behind on the day it is read, or a row whose answers are the same for every option — a row that does not differ is not part of the comparison
43
+ - **footnote** `string` · optional — A note true of the whole table — where the figures come from, what an asterisk means — under the card in small type
44
+ - never: Anything a reader needs to make the comparison. A footnote is read last if at all; a difference that matters is a row
45
+
46
+ ## Inside it
47
+
48
+ - 6 components are refused inside it; the list and the reasons are in the long document.
49
+ - Renders 9 parts: root, inner, header, title, description, body, row-header, cell-list, footnote.
50
+
51
+ ---
52
+
53
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/comparisontable.md`.
@@ -33,10 +33,10 @@ A full-bleed coral band carrying one short promotion and the action it asks for
33
33
  - never: A paragraph. A banner is read at a glance, on the way down a page; copy a reader has to work through is copy they scroll past
34
34
  - **actions** `node` · optional — The one action the message asks for, or two at most. …
35
35
  - never: A third action, or a primary Button: coral on the coral ground is a button nobody can see
36
- - **background** `enum` · optional — The band is the page's one standout moment and wants more than a flat fill. Leave it out and the band is its flat ground, as it always was
37
- - `halftone` — A halftone drawn behind the band's content: white dots on the band's own coral, following the pointer over the band. …
38
- - `grid` — A fine rule grid behind the band's content: white hairlines on the coral, fading in towards the foot, brightening in a soft circle around the pointer. …
39
- - never: More than one band on a page. The pattern is what makes a band the one a reader remembers, and two of them make neither
36
+ - **background** `enum` · default "grid" — Whether the band carries its grid. It does unless asked not to: the banner is the page's standout moment, and the grid is what makes it one
37
+ - `grid` — The default: a fine rule grid behind the band's content — light coral hairlines rising out of a deeper red at the band's foot, moving slowly at rest and brightening around the pointer. …
38
+ - `plain` — The flat coral and nothing on it, asked for by name: a page that already spends its one pattern on another band, or a banner set among busy content where the grid would be texture fighting texture
39
+ - never: More than one patterned band on a page — pass plain to the others. The pattern is what makes a band the one a reader remembers, and two of them make neither
40
40
 
41
41
  ## Inside it
42
42
 
@@ -37,6 +37,10 @@ CtaBanner's layout with a slider in it: the same full-bleed coral band, rotating
37
37
  - **background** `enum` · optional — The band is the page's one standout promotion and wants more than a flat fill. Leave it out and the band is its flat coral, as it always was
38
38
  - `grid` — A fine rule grid behind the slides: white hairlines on the coral, fading in towards the foot, brightening in a soft circle around the pointer. …
39
39
  - never: More than one patterned band on a page. The pattern is what makes a band the one a reader remembers, and two of them make neither
40
+ - **roleDescription** `string` · default "carousel" — What a screen reader calls the set while it rotates — announced in place of a region, as the word for this kind of thing. …
41
+ - **slideRoleDescription** `string` · default "slide" — What a screen reader calls each item while the set rotates, for the reason roleDescription exists. Translate it with the page
42
+ - **positionLabel** `callback` · optional — The accessible name of each item while the set rotates, given its place in the set counting from one — so a reader hears where they are. …
43
+ - never: Visible text. It names the item to assistive technology and is never drawn
40
44
 
41
45
  ## Inside it
42
46
 
@@ -0,0 +1,65 @@
1
+ <!-- GENERATED from datatable.contract.json. Do not edit. -->
2
+
3
+ # DataTable
4
+
5
+ A full-width data-table section for instrument and market-style listings. …
6
+
7
+ `import { DataTable } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Trading instruments and their specifications — contract size, minimum size, volume limits — on a market page
12
+ - Trading conditions a reader looks up rather than reads through: spreads, leverage, margin, swaps
13
+ - An MT5 or Deriv X specification page, where the set runs to dozens of rows and a reader is hunting for the one they trade
14
+
15
+ ## Something else, when
16
+
17
+ - Three or four plans or accounts compared feature by feature, where every row is read rather than searched → **ComparisonTable**
18
+ - A handful of rows with no need to search or page — a fee schedule of four lines → **Table**
19
+
20
+ ## Never
21
+
22
+ - Prices that move while the page is open. The values are written once and searched as written; a live quote here is a stale one the moment it is drawn
23
+ - Sorting or filtering that needs the server. The search runs over the rows the page handed in and nothing else, so a set too large to send whole is a set this cannot search
24
+ - A single record's fields. A row header and one value beside it is a description list wearing a table's markup
25
+
26
+ ## Props
27
+
28
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, FaqAccordion's axis and its reason: a band that wants to be seen as a band takes one of the other two, and the page decides the rhythm. …
29
+ - `page` — The default, and the page's own white. The frame's rule is what sets the table off
30
+ - `subtle` — The grey band — the reference design's slate section. The frame lifts off it as a raised card. …
31
+ - `strong` — `color.bg.brand-strong`, the dark band, for a listing a reader should arrive at. The heading and the small print turn white and muted-white; the frame stays the light surface it is everywhere else
32
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left
33
+ - **title** `string` · required — Always. What the rows are, in the fewest words — "Forex trading conditions", "Synthetic indices". It names the section and the table both
34
+ - never: A sentence about the data. The line under it is the description's; what a column means is the column's name
35
+ - **description** `string` · optional — A line under the heading where the heading alone does not say which account or platform the conditions are for — "Conditions on Deriv MT5 Financial accounts."
36
+ - never: The small print. A note on how current the figures are belongs under the table, in `footnote`, where it is read after the numbers it qualifies
37
+ - **columns** `data` · required — Always. The columns in reading order, each a `key` the rows hold its value under and the `label` drawn over it. …
38
+ - never: A column only some rows have a value for. Every row answers every column, which is the promise a table makes
39
+ - **rows** `data` · required — Always. The records, in the order they are listed — each a value per column key, as the page would print it. Every value is searched as written. An empty list draws the empty line in place of the table
40
+ - never: Values the source does not show today. Spreads and swaps are claims in the company's name; keep them in step with where they come from, and say how current they are in `footnote`
41
+ - **pageSize** `number` · default 10 — How many rows a page holds. Ten, the reference's, unless the rows are few enough that a second page would hold two or three of them — then raise it so the set is one page and the pages are not drawn at all
42
+ - never: Showing everything. A page of a hundred rows is a page a reader scrolls past the search to get through; the search is how a long set is meant to be read
43
+ - **footnote** `string` · optional — A line of small print under the table — how current the figures are, what they are subject to. "Information is based on the most recent available trading data and may not represent today's conditions."
44
+ - never: A risk warning the page is obliged to show. Small print under a table is read by the few who reach it; a required warning belongs where every reader meets it
45
+ - **searchLabel** `string` · default "Search the table" — The search's name — SearchInput's `label`, never drawn and always announced. Say what is searched where the default is vague for the page: "Search instruments". Translate it with the page
46
+ - never: An example query. That is the placeholder's
47
+ - **searchPlaceholder** `string` · default "Search" — What the empty field shows, the reference's "Search" — or an example of a query, "EUR/USD". It disappears as the reader types and is never the field's name. Translate it with the page
48
+ - **clearLabel** `string` · default "Clear search" — The name of the button that empties the search, which is a cross and says nothing on its own. Translate it with the page
49
+ - **emptyText** `string` · default "No results match your search." — The line drawn in place of the table when nothing matches the query. Translate it with the page; say what to try where the page can — "No markets match. Try a symbol, like EURUSD."
50
+ - never: Explaining an empty set the page sent. A listing with no rows is a page that should not have drawn the section
51
+ - **resultCount** `callback` · optional — The count across from the search, given the first and last row on this page and how many matched — counting from one, and all three 0 when nothing matched. It is also what a screen reader is told, politely, as the query or the page changes. …
52
+ - never: Anything but the count. It is announced every time the reader types, so a sentence here is a sentence heard on every keystroke
53
+ - **paginationLabel** `string` · default "Table pages" — The name of the pages' navigation landmark, Pagination's `label`. Its own name rather than Pagination's default, so a reader listing landmarks can tell this table's pages from anything else on the page that is paginated. …
54
+ - **previousLabel** `string` · default "Previous page" — The name of the step back through the pages, which is a glyph. Translate it with the page, and keep it parallel to nextLabel
55
+ - **nextLabel** `string` · default "Next page" — The name of the step on through the pages, for the reason previousLabel exists
56
+ - **morePagesLabel** `string` · default "More pages" — The name of the break between two runs of page numbers, which opens a menu of the pages it stands for. Only drawn when the pages run long. Translate it with the page
57
+
58
+ ## Inside it
59
+
60
+ - 6 components are refused inside it; the list and the reasons are in the long document.
61
+ - Renders 13 parts: root, inner, header, title, description, content, frame, toolbar, search, status, empty, pager, footnote.
62
+
63
+ ---
64
+
65
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/datatable.md`.
@@ -0,0 +1,65 @@
1
+ <!-- GENERATED from downloadbanner.contract.json. Do not edit. -->
2
+
3
+ # DownloadBanner
4
+
5
+ A section promoting the app's downloads: a card holding a heading and the stores' own badges, each a link to the product in that store. …
6
+
7
+ `import { DownloadBanner } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Promoting an app across the stores and platforms it ships on — App Store, Google Play, AppGallery, a desktop download, the web
12
+ - A trading platform's page, near its end, once the product has been explained and the next thing a reader wants is to get it
13
+
14
+ ## Something else, when
15
+
16
+ - One download, or the web alone → **Button**
17
+ - A promotion that has to argue for the download in a headline and a sentence → **CtaBanner**
18
+
19
+ ## Never
20
+
21
+ - Two download sections on one page — the second repeats the first's destinations and makes neither the place to go
22
+ - A badge for a platform the product does not ship on, or a QR code that reaches somewhere other than the badges do
23
+
24
+ ## Props
25
+
26
+ - **ground** `enum` · default "page" — Which of the page's grounds the section paints, and with it the card's fill: the recessed surface on the page, the raised white on the grey band, and the strong card on the dark band — TestimonialRow's three and the reference design's light, light-2 and dark. …
27
+ - `page` — The default, and the page's own white. The card is the recessed gray that sets it off — the reference design's light-2
28
+ - `subtle` — The grey band, with the card white on it — the reference design's light. Painted as the band's tint laid over the page's own ground, so it is the same grey whatever is behind the section
29
+ - `strong` — `color.bg.brand-strong`, the dark band, with the card at color.bg.surface-card-strong and white words on it — the reference design's dark. …
30
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left
31
+ - **variant** `enum` · default "standard" — How much the banner asks for. The standard card sits with the page; the featured card is the page's moment for the app, and one per page
32
+ - `standard` — The default: the card in the ground's own fill, quiet beside the sections around it — the reference design's banner
33
+ - `featured` — The page promoting an app: the brand's coral card laid out as a split — the app's name, the heading, a line and the badges with the QR code beside them on one side, the app's own image on the other, rising out of the card's top edge — with a Background pattern inside it, the aurora unless `pattern` says otherwise. …
34
+ - never: More than one featured banner on a page, or one beside another patterned band. The pattern is what makes the band the one a reader remembers
35
+ - **pattern** `enum` · optional — Which pattern the featured card draws. Absent, the aurora
36
+ - `aurora` — Curtains of light rising from the card's foot, white and deep red on the coral, swaying slowly. The quieter of the two, and what a featured card draws when no pattern is named
37
+ - `mesh` — Soft pools of the brand's reds run together across the whole card — the design system's own front page. The richer of the two
38
+ - never: A standard card. It has no pattern to choose, and the type refuses one
39
+ - **media** `node` · optional — The featured card only: the app itself — a screenshot of it in a phone, the page's own image. …
40
+ - never: A picture that is not the app. A banner promoting an app shows the app. On a standard card it is not drawn
41
+ - **eyebrow** `string` · optional — The featured card only: the app's name, or what kind of app it is, small above the heading — "Deriv GO", "Mobile app"
42
+ - never: A second heading. The heading says what the reader gets; this names the app. On a standard card it is not drawn
43
+ - **title** `string` · required — Always. Where the app can be had, in a few words — "Trade on the go", "Available on". The section's heading at every width: under the scan line beside the code from the fold, and alone over the badges on a phone
44
+ - never: The instruction to scan. That is the QR code's `label`, and it goes with the code where the code goes
45
+ - **description** `string` · optional — A line under the heading saying what the app gives a reader — "Trade on the go with the same account, markets and tools." One sentence
46
+ - never: Small print. Versions and availability belong in the `disclaimer`
47
+ - **badges** `data` · required — Always. The stores and downloads the app is in, in the order a reader should meet them — mobile stores first, then desktop, then the web. …
48
+ - never: A platform the product does not ship on, or a badge whose link does not reach the product in that store
49
+ - **qr** `data` · optional — A QR code reaching the same app the badges do, so a reader at a desktop can take it to their phone. The page's image, with the words it is read as and the line telling the reader to scan it. …
50
+ - never: A destination the badges do not reach. A code is the one link a reader cannot read before following it
51
+ - **disclaimer** `string` · optional — One line of small print under the heading — which versions the desktop app runs on, or where the app is not offered
52
+ - never: A sentence of promotion. Anything a reader is meant to be persuaded by is not small print
53
+
54
+ ## The type refuses
55
+
56
+ - variant="standard" with pattern="*" — A standard card draws no pattern, so a pattern named on it is a choice that does nothing. Make the card featured, or leave the pattern out
57
+
58
+ ## Inside it
59
+
60
+ - 7 components are refused inside it; the list and the reasons are in the long document.
61
+ - Renders 17 parts: root, inner, card, lead, qr-tile, qr, text, qr-label, eyebrow, title, description, disclaimer, badges, badge, badge-link, mark, media.
62
+
63
+ ---
64
+
65
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/downloadbanner.md`.
@@ -8,7 +8,7 @@ A section that opens with a heading and sets a grid of cards under it — the sh
8
8
 
9
9
  ## Reach for it when
10
10
 
11
- - Three or four things a product does, each a heading and a sentence, read side by side and compared at a glance
11
+ - Three or four things a product does, each a card with a heading, a line and a picture under them, read side by side and compared at a glance — the first choice for a set of three. …
12
12
  - A set of destinations — markets, platforms, tools — each a card a reader presses to go there
13
13
  - One feature that deserves the whole row in a card of its own — the words beside a large picture, carded on the section's ground
14
14
 
@@ -0,0 +1,54 @@
1
+ <!-- GENERATED from featurecardscarousel.contract.json. Do not edit. -->
2
+
3
+ # FeatureCardsCarousel
4
+
5
+ A feature band that sets its cards in a row a reader moves along rather than a grid: a heading and a line over a row of the page's own cards, the next one's edge showing past the last in view, with dots saying where the reader is and two arrows stepping it a card at a time. …
6
+
7
+ `import { FeatureCardsCarousel } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A "what you get" band of five or six authored cards, each a benefit with a line and a picture, too many for one row of a grid, where one card in focus with a peek of the next is the point. …
12
+ - A platform or product page whose feature cards are too many for one row of a grid and too equal to be a sequence
13
+
14
+ ## Something else, when
15
+
16
+ - Three or four cards — the set a grid shows in one row → **FeatureCards**
17
+ - The cards are read in order, one leading to the next → **FeatureScroll**
18
+ - Two or three promotions on the brand's coral, one at a time → **CtaBannerSlider**
19
+
20
+ ## Never
21
+
22
+ - Live prices, market data or anything on a feed. A card is authored copy that holds still while a reader reads it
23
+ - A static set flattened into a carousel to save height. Fewer than three cards is a FeatureCards grid; a carousel of two is a grid with a hidden half
24
+ - Reviews or quotes. A rated review is TestimonialRow's and a chosen quote TestimonialSlider's, each with the attribution this does not draw
25
+
26
+ ## Props
27
+
28
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints. A marketing page is white, and a band that wants to be seen as a band takes one of the other two — so this is how a page builds its rhythm: white, white, grey, white, dark. …
29
+ - `page` — The default, and the page's own white. A section that has nothing to separate itself from what is above it — most of them — and the ground a reader is already on
30
+ - `subtle` — A quiet step off the page, for a band that wants to read as its own section without changing the page's voice. The one to reach for first when two sections need telling apart. …
31
+ - `strong` — `color.bg.brand-strong`, the dark band. It stops the page rather than dividing it, so it is for a section a reader should arrive at — and one per page is usually one more than enough. …
32
+ - never: Marking importance. Every section on a page painted dark is a page with no emphasis left, and a reader stops reading the grounds as meaning anything. Alternating for its own sake is the same mistake more slowly. And never the brand's own coral, `color.bg.brand`, which is not offered here. …
33
+ - **title** `string` · required — Always. What the cards are, in the fewest words that name them — "What you get", "Built for every trader"
34
+ - never: A sentence. The line under it is for the sentence
35
+ - **description** `string` · optional — A line saying what the set has in common, when the title alone does not
36
+ - never: A paragraph, or a summary of every card. The cards say what they are; this only says why they are together
37
+ - **autoplay** `boolean` · default false — Whether the row moves on to the next stop on its own, holding each for motion.duration.dwell and returning to the start after the last. Off by default, so a row nobody configured stays still. …
38
+ - never: A row whose cards carry more than a reader takes in during motion.duration.dwell. Several cards are in view at once, so a moving row is moving cards out from under a reader who may be reading the second one
39
+ - **label** `string` · default "Features" — The name the row is announced by. The row is a scrolling region a keyboard has to be able to reach, so it carries a tab stop and a name of its own — Scroller's rule, as in TestimonialRow. …
40
+ - **previousLabel** `string` · default "Previous cards" — The accessible name of the arrow stepping the row back. A glyph announces nothing, so this is the whole of the control's name. Translate it with the page, and keep it parallel to nextLabel
41
+ - **nextLabel** `string` · default "Next cards" — The accessible name of the arrow stepping the row on, for the reason previousLabel exists
42
+ - **controlsLabel** `string` · default "Positions" — The name the dots are announced by, as a group inside the band. Its own name rather than the row's, so a screen reader moving into the dots hears what they are. Translate it with the page, like label
43
+ - **stopLabel** `string` · default "Position" — The word each dot is announced by, before its number — "Position 2". A dot is a place the row stops, not a card: at full width the last few cards share the last stop, so there are fewer dots than cards. …
44
+
45
+ ## Inside it
46
+
47
+ - Takes only Card, CardButton.
48
+ - At least 1, at most 8 — fewer is not this component and more is a different one.
49
+ - 7 components are refused inside it; the list and the reasons are in the long document.
50
+ - Renders 11 parts: root, inner, header, title, description, carousel, track, item, footer, nav, nav-slot.
51
+
52
+ ---
53
+
54
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/featurecardscarousel.md`.
@@ -17,6 +17,7 @@ A section putting one claim, a line explaining it and a way onward beside a sing
17
17
  - The point is several things the reader gets, each one line long → **FeatureBullets**
18
18
  - There are three or four points and each needs its own picture → **FeatureCards**
19
19
  - The section opens the page → **ProductHero**
20
+ - The picture is the section's weight, wide or tall enough to stand under the words rather than beside them → **FeatureStack**
20
21
 
21
22
  ## Never
22
23
 
@@ -0,0 +1,48 @@
1
+ <!-- GENERATED from featurestack.contract.json. Do not edit. -->
2
+
3
+ # FeatureStack
4
+
5
+ A section that leads with a statement and ends on a picture: a heading, a line under it where the heading needs one, a link on to more where the page has one, and a large illustration — a globe, a map, a product shot — standing on the band's foot. …
6
+
7
+ `import { FeatureStack } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A statement with a picture that carries it — a global reach shown on a globe, a platform shown on a device — where the picture is the section's weight and the words introduce it …
12
+ - Closing a page or a stretch of one on an image, with a way on for the reader who wants more
13
+
14
+ ## Something else, when
15
+
16
+ - The picture belongs beside the words, the two read side by side → **FeatureSplit**
17
+ - The section is a set of figures read as a set → **Stats**
18
+ - The section asks the reader to do one thing, now → **CtaBanner**
19
+
20
+ ## Never
21
+
22
+ - A picture with words in it. The words are the heading and the line; a picture saying them again cannot be read by a screen reader, translated or selected
23
+ - A photograph a reader needs to see whole. The picture stands on the band's foot at its own proportions up to size.feature-stack.media, and is a scene rather than a document
24
+
25
+ ## Props
26
+
27
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, FeatureCards' axis and its reason: the page builds its rhythm from these, and the ink follows the ground in the same value. …
28
+ - `page` — The default, and the page's own white
29
+ - `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
30
+ - `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
31
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left. And never the coral `color.bg.brand`, which belongs to the band that asks a reader to act
32
+ - **title** `string` · required — Always. The statement the section makes, in a few words — "Trusted in 190+ countries", "One account, every device"
33
+ - never: A sentence of explanation. That is the line under it
34
+ - **description** `string` · optional — A short line under the heading that says what the statement means for the reader, or what the picture shows
35
+ - never: A paragraph. One line or two; anything longer is the page's own copy
36
+ - **link** `node` · optional — 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
37
+ - never: A button. The section is a statement and a picture; a Button would make it a banner, and CtaBanner is that
38
+ - **image** `data` · required — 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. …
39
+ - never: Artwork with words in it, or a chart. What a reader has to read belongs in the heading and the line, where a screen reader and a translation reach it
40
+
41
+ ## Inside it
42
+
43
+ - 6 components are refused inside it; the list and the reasons are in the long document.
44
+ - Renders 8 parts: root, inner, header, title, description, link, media, image.
45
+
46
+ ---
47
+
48
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/featurestack.md`.
@@ -20,7 +20,7 @@ A photograph with an IllustrationCard laid over it — the product shown in the
20
20
 
21
21
  - A section's content. Like the card it holds, the scene is a picture of the product, and what a section says belongs in its own blocks
22
22
  - More than one card over one photograph. A second card is a second picture competing for the same eye; two scenes side by side say two things clearly
23
- - A photograph whose subject sits where the card goes. The card covers the middle of the frame, or one side of it with `placement`; choose or crop the photograph so the person or the object stays clear of it
23
+ - A photograph whose subject sits where the card goes. The card covers the middle of the frame, or its foot with `placement`; choose or crop the photograph so the person or the object stays clear of it
24
24
 
25
25
  ## Props
26
26
 
@@ -31,8 +31,7 @@ A photograph with an IllustrationCard laid over it — the product shown in the
31
31
  - never: Fitting a particular photograph. The shape is a decision about the layout; the photograph is chosen or cropped for it
32
32
  - **placement** `enum` · default "center" — Where the card sits over the photograph, so the subject of the photograph stays clear of it
33
33
  - `center` — The default: the card in the middle of the frame. For a photograph whose subject frames the middle — a person looking down at what the card shows
34
- - `start` — The card towards the start edge, for a photograph whose subject is at the end
35
- - `end` — The card towards the end edge, for a photograph whose subject is at the start
34
+ - `bottom` — The card centred along the foot of the frame, held off it by the card's own inset — for a photograph whose subject fills the top: a face, a person reaching up, a skyline
36
35
  - never: Anything but keeping the photograph's subject clear. The card's size is fixed by the shape; placement moves it and nothing else
37
36
  - **src** `string` · required — Always. The photograph the scene is set in
38
37
  - never: A data URI holding a photograph. A scene's photograph is the heaviest thing on its page and belongs in a file the browser can cache
@@ -0,0 +1,64 @@
1
+ <!-- GENERATED from imagebanner.contract.json. Do not edit. -->
2
+
3
+ # ImageBanner
4
+
5
+ A dark card in the middle of a page, pairing a headline and a line under it with a photograph — beside it or behind it, with one action. …
6
+
7
+ `import { ImageBanner } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Driving a single mid-page or end-of-page action with a photograph to carry it — a community, a hub, a platform
12
+ - A dark, editorial break between lighter sections
13
+
14
+ ## Something else, when
15
+
16
+ - The section opens the page → **ProductHero**
17
+ - The point wants the page's own light ground rather than a dark card → **FeatureSplit**
18
+ - There is no photograph, only a headline and an action → **CtaBanner**
19
+ - The section says what a programme or a product comes with, as a list of features → **FeatureBullets**
20
+
21
+ ## Never
22
+
23
+ - The page's opening band. A dark card at the top of a page competes with the navigation above it and the hero it should be
24
+ - More than one action. The card asks for one thing, and a second button beside it is a second demand on a card already set apart from the page
25
+ - A picture carrying words a reader needs. The cover photograph sits under a scrim and the text, and the split's is cropped to fill its half
26
+
27
+ ## Props
28
+
29
+ - **ground** `enum` · default "page" — Which of the page's three grounds the band around the card paints. The card is dark whatever this says — that is what the block is — so this is about the rhythm of the page, white, grey or dark, and never about the card. …
30
+ - `page` — The default, and the page's own white, with the dark card set into it. Most of the time: the card is already the break
31
+ - `subtle` — The grey band, for a card that follows a white section the page wants told apart from this one. …
32
+ - `strong` — `color.bg.brand-strong`, the dark band, with the card a step lighter at color.bg.surface-card-strong so it still reads as a card. …
33
+ - never: Making the card darker. The card is dark on every ground; painting the band dark too spends the page's one dark band on a section that was already one
34
+ - **variant** `enum` · default "split" — What the photograph does: beside the words, or behind them. Both carry one action — two of the reference design's layouts
35
+ - `split` — The default. The words in one half and the photograph filling the other, edge to edge, with one action under the words. …
36
+ - `cover` — The photograph fills the whole card, with the words over it behind a scrim that darkens the side they are on and leaves the photograph clear on the other. …
37
+ - never: Choosing by how busy the page looks. Cover hides part of the photograph under the scrim; it is a decision about the photograph, not decoration
38
+ - **mediaPosition** `enum` · default "end" — Which side the photograph takes, and in cover, which side it shows clear on with the words on the other. Alternating it with the section above is the page's decision, not this one's
39
+ - `end` — The default. The words lead and the photograph follows, which is the order the card argues in
40
+ - `start` — The photograph leads — the second of two cards on a page, or a photograph whose subject faces the words. A split card puts it above the words on a phone as well, as the reference design does
41
+ - never: Aligning the words to the far edge. They start where their column starts on either side, because a heading beside content starts with it
42
+ - **title** `string` · required — Always. The one thing the card says, in under eight words — "Join our global community"
43
+ - never: A sentence. The description under it carries the argument
44
+ - **headingLevel** `enum` · default "h2" — Matching the outline of the page around the card, so the headline keeps its place in the hierarchy rather than skipping a level — CtaBanner's and ResourceBanner's prop. The level only: the size stays font.h2
45
+ - `h2` — The default: the card is a section of the page, under the page's own h1
46
+ - `h3` — The card sits inside a section that already carries the h2 it belongs to
47
+ - never: Making the headline bigger or smaller. The card decides the size; this decides only where the headline sits in the page's outline
48
+ - **description** `string` · optional — The line under the headline saying what it means for the reader, in one or two sentences
49
+ - never: A paragraph. Past about two hundred characters the words run longer than the photograph beside them, which is the reference design's limit as well
50
+ - **action** `node` · optional — The one thing the card asks for. The card is dark in both themes, so a Button here takes tone="inverse": the primary is the coral fill and it is the card's one primary. On a phone it fills the width of the card
51
+ - never: A second action. The card asks for one thing
52
+ - **media** `node` · required — Always. The page's photograph, through AspectRatio or as an image — people or product. Split and cover crop it to fill the space they give it. Alt text is the page's to give, empty where the photograph is decoration
53
+ - never: Artwork with words in it. The cover photograph sits under a scrim and the text, and the split crops to fill
54
+ - **parallax** `boolean` · default false — The photograph drifts against the scroll as the card passes through the view, by motion.distance.drift over the whole pass, so it reads as further away than the card — the reference design's ParallaxBanner, which this replaces. …
55
+ - never: Holding still for a reader who asked for less motion — it already holds still for them, and in a browser that cannot drive it from the scroll
56
+
57
+ ## Inside it
58
+
59
+ - 10 components are refused inside it; the list and the reasons are in the long document.
60
+ - Renders 8 parts: root, inner, card, content, title, description, action, media.
61
+
62
+ ---
63
+
64
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/imagebanner.md`.
@@ -38,6 +38,7 @@ One place the site has, in the bar across the top of it. An anchor with a target
38
38
  - never: Decoration on every item. A glyph beside each of five destinations costs the width the destinations need and tells a reader nothing they were not already reading
39
39
  - **external** `boolean` · default false — The destination leaves the site. It draws the mark, opens in a new context, and the implementation extends the accessible name to say so in words — a glyph alone is a warning only sighted readers get
40
40
  - never: A different area of the same site. A subdomain the reader experiences as one place is not a change of context, and marking it as one teaches them to ignore the mark where it matters
41
+ - **externalLabel** `string` · default "(opens in a new tab)" — What a screen reader hears after an external destination's name, since the arrow that shows it to everyone else is hidden. Translate it with the page
41
42
 
42
43
  ## The type refuses
43
44
 
@@ -38,7 +38,8 @@ The band that opens a company or a legal page: the page's name, a line saying wh
38
38
  - never: A paragraph. It is held to a readable measure and set at body size; past a couple of sentences a reader scrolls rather than reads, and the actions go under the fold
39
39
  - **actions** `node` · optional — The one or two things the page wants a reader to do. Composed by the page rather than described to this component, so a call to action is the same Button here as anywhere else on the site
40
40
  - never: A row of destinations. Three or more controls under a title is a menu, and a reader who has to choose between five things chooses none
41
- - **background** `enum` · optional — The band is the page's one standout moment and wants more than a flat fill. Leave it out and the band is its flat ground, as it always was
41
+ - **background** `enum` · default "grid" — The band is the page's one standout moment and wants more than a flat fill. Leave it out and the band draws the lit grid
42
+ - `grid` — The default: the band's rule grid, lit — hairlines a pitch apart rising from a soft bloom at the band's foot, a brighter point where two lines cross and a short dash of light running along every few, brightening around the pointer. …
42
43
  - `halftone` — A halftone drawn behind the band's content: coral dots blending to white at the glow's heart, on the band's own dark ground, following the pointer over the band. …
43
44
  - never: More than one band on a page. The pattern is what makes a band the one a reader remembers, and two of them make neither
44
45
 
@@ -32,7 +32,9 @@ A row of marks, one per position in a short sequence — the slides of a slider,
32
32
  - never: A sequence the reader has to work through — a walkthrough, a form in steps. Moving it for them takes away the one thing they came to control
33
33
  - **paused** `boolean` · default false — Whatever holds the row wants the rotation held for now — while the pointer is over the slide or focus is inside it, so a reader is never moved on mid-sentence. It lets go when this goes false
34
34
  - **label** `string` · default "Slides" — The name the row is announced by, as a group. Name what the positions are: 'Slides', 'Steps'. Translate it with the page
35
- - **itemLabel** `string` · default "Slide" — The word each mark is named by, before its number — 'Slide 2'. Translate it with the page; a language that puts the number first is the reason a sentence template would be better, and the reason this is not yet one
35
+ - **itemLabel** `string` · default "Slide" — The word each mark is named by, before its number — 'Slide 2'. Translate it with the page; a language that puts the number first, or writes it in its own digits, passes positionLabel instead
36
+ - **positionLabel** `callback` · optional — Each mark's accessible name as a sentence, given its position counting from one and how many there are — for a language whose order is not the word then the number, or whose digits are not these. Wins over itemLabel where both are given
37
+ - never: Visible text. It names the marks to assistive technology and is never drawn
36
38
 
37
39
  ## Inside it
38
40