@deriv-com/dds-marketing 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/.llm/components/awards.md +209 -0
  2. package/.llm/components/background.md +420 -0
  3. package/.llm/components/bottomsheet.md +5 -0
  4. package/.llm/components/comparisoncards.md +257 -0
  5. package/.llm/components/comparisontable.md +231 -0
  6. package/.llm/components/ctabanner.md +22 -0
  7. package/.llm/components/ctabannerslider.md +36 -2
  8. package/.llm/components/datatable.md +273 -0
  9. package/.llm/components/downloadbanner.md +283 -0
  10. package/.llm/components/featurecards.md +41 -3
  11. package/.llm/components/featurecardscarousel.md +311 -0
  12. package/.llm/components/featuresplit.md +5 -0
  13. package/.llm/components/featurestack.md +227 -0
  14. package/.llm/components/illustrationcard.md +236 -0
  15. package/.llm/components/illustrationscene.md +229 -0
  16. package/.llm/components/imagebanner.md +278 -0
  17. package/.llm/components/landinghero.md +24 -0
  18. package/.llm/components/navbar.md +1 -1
  19. package/.llm/components/navbaritem.md +4 -0
  20. package/.llm/components/pageheader.md +22 -0
  21. package/.llm/components/paginationdots.md +6 -1
  22. package/.llm/components/producthero.md +35 -11
  23. package/.llm/components/resourcebanner.md +247 -0
  24. package/.llm/components/scenescroll.md +222 -0
  25. package/.llm/components/select.md +17 -0
  26. package/.llm/components/stats.md +219 -0
  27. package/.llm/components/steps.md +286 -0
  28. package/.llm/components/stickycards.md +251 -0
  29. package/.llm/components/tableheadercell.md +19 -0
  30. package/.llm/components/teamgrid.md +243 -0
  31. package/.llm/components/testimonialrow.md +5 -0
  32. package/.llm/components/testimonialslider.md +14 -1
  33. package/.llm/components/textarea.md +13 -0
  34. package/.llm/components/textinput.md +13 -0
  35. package/.llm/components/textscroll.md +187 -0
  36. package/.llm/components/tiers.md +227 -0
  37. package/.llm/digest/awards.md +45 -0
  38. package/.llm/digest/background.md +53 -0
  39. package/.llm/digest/bottomsheet.md +2 -0
  40. package/.llm/digest/comparisoncards.md +51 -0
  41. package/.llm/digest/comparisontable.md +53 -0
  42. package/.llm/digest/ctabanner.md +4 -0
  43. package/.llm/digest/ctabannerslider.md +7 -0
  44. package/.llm/digest/datatable.md +65 -0
  45. package/.llm/digest/downloadbanner.md +65 -0
  46. package/.llm/digest/featurecards.md +1 -1
  47. package/.llm/digest/featurecardscarousel.md +54 -0
  48. package/.llm/digest/featuresplit.md +1 -0
  49. package/.llm/digest/featurestack.md +48 -0
  50. package/.llm/digest/illustrationcard.md +46 -0
  51. package/.llm/digest/illustrationscene.md +50 -0
  52. package/.llm/digest/imagebanner.md +64 -0
  53. package/.llm/digest/landinghero.md +7 -0
  54. package/.llm/digest/navbaritem.md +1 -0
  55. package/.llm/digest/pageheader.md +4 -0
  56. package/.llm/digest/paginationdots.md +3 -1
  57. package/.llm/digest/producthero.md +4 -2
  58. package/.llm/digest/resourcebanner.md +53 -0
  59. package/.llm/digest/scenescroll.md +49 -0
  60. package/.llm/digest/select.md +5 -0
  61. package/.llm/digest/stats.md +46 -0
  62. package/.llm/digest/steps.md +55 -0
  63. package/.llm/digest/stickycards.md +52 -0
  64. package/.llm/digest/tableheadercell.md +4 -0
  65. package/.llm/digest/teamgrid.md +53 -0
  66. package/.llm/digest/testimonialrow.md +2 -0
  67. package/.llm/digest/testimonialslider.md +4 -0
  68. package/.llm/digest/textarea.md +4 -0
  69. package/.llm/digest/textinput.md +4 -0
  70. package/.llm/digest/textscroll.md +43 -0
  71. package/.llm/digest/tiers.md +50 -0
  72. package/.llm/index.md +25 -2
  73. package/.llm/tokens.md +37 -1
  74. package/AGENTS.md +20 -1
  75. package/dist/components/awards-data.d.ts +24 -0
  76. package/dist/components/awards-data.js +11 -0
  77. package/dist/components/block-image-data.d.ts +24 -0
  78. package/dist/components/block-image-data.js +9 -0
  79. package/dist/components/blocks/awards/Awards.css +134 -0
  80. package/dist/components/blocks/awards/Awards.d.ts +24 -0
  81. package/dist/components/blocks/awards/Awards.js +114 -0
  82. package/dist/components/blocks/awards/Awards.types.d.ts +31 -0
  83. package/dist/components/blocks/awards/Awards.types.js +16 -0
  84. package/dist/components/blocks/awards/awards-impl.css +222 -0
  85. package/dist/components/blocks/cards-of.d.ts +16 -0
  86. package/dist/components/blocks/cards-of.js +23 -0
  87. package/dist/components/blocks/comparison-cards/ComparisonCards.css +195 -0
  88. package/dist/components/blocks/comparison-cards/ComparisonCards.d.ts +24 -0
  89. package/dist/components/blocks/comparison-cards/ComparisonCards.js +75 -0
  90. package/dist/components/blocks/comparison-cards/ComparisonCards.types.d.ts +49 -0
  91. package/dist/components/blocks/comparison-cards/ComparisonCards.types.js +26 -0
  92. package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +262 -0
  93. package/dist/components/blocks/comparison-table/ComparisonTable.css +111 -0
  94. package/dist/components/blocks/comparison-table/ComparisonTable.d.ts +25 -0
  95. package/dist/components/blocks/comparison-table/ComparisonTable.js +100 -0
  96. package/dist/components/blocks/comparison-table/ComparisonTable.types.d.ts +36 -0
  97. package/dist/components/blocks/comparison-table/ComparisonTable.types.js +15 -0
  98. package/dist/components/blocks/comparison-table/comparison-table-impl.css +143 -0
  99. package/dist/components/blocks/cta-banner/CtaBanner.css +1 -0
  100. package/dist/components/blocks/cta-banner/CtaBanner.d.ts +1 -1
  101. package/dist/components/blocks/cta-banner/CtaBanner.js +3 -2
  102. package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +6 -0
  103. package/dist/components/blocks/cta-banner/CtaBanner.types.js +1 -1
  104. package/dist/components/blocks/cta-banner/cta-banner-impl.css +8 -0
  105. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +1 -0
  106. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +1 -1
  107. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +10 -5
  108. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +12 -0
  109. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +1 -1
  110. package/dist/components/blocks/cta-banner-slider/cta-banner-slider-impl.css +8 -0
  111. package/dist/components/blocks/data-table/DataTable.css +170 -0
  112. package/dist/components/blocks/data-table/DataTable.d.ts +29 -0
  113. package/dist/components/blocks/data-table/DataTable.js +84 -0
  114. package/dist/components/blocks/data-table/DataTable.types.d.ts +69 -0
  115. package/dist/components/blocks/data-table/DataTable.types.js +19 -0
  116. package/dist/components/blocks/data-table/data-table-impl.css +155 -0
  117. package/dist/components/blocks/download-banner/DownloadBanner.css +228 -0
  118. package/dist/components/blocks/download-banner/DownloadBanner.d.ts +28 -0
  119. package/dist/components/blocks/download-banner/DownloadBanner.js +75 -0
  120. package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +56 -0
  121. package/dist/components/blocks/download-banner/DownloadBanner.types.js +23 -0
  122. package/dist/components/blocks/download-banner/download-banner-impl.css +216 -0
  123. package/dist/components/blocks/faq-accordion/FaqAccordion.css +1 -0
  124. package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +3 -7
  125. package/dist/components/blocks/feature-bullets/FeatureBullets.css +1 -0
  126. package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +14 -1
  127. package/dist/components/blocks/feature-cards/FeatureCards.css +1 -0
  128. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +2 -1
  129. package/dist/components/blocks/feature-cards/FeatureCards.js +4 -21
  130. package/dist/components/blocks/feature-cards/feature-cards-impl.css +10 -9
  131. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.css +115 -0
  132. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.d.ts +30 -0
  133. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.js +160 -0
  134. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +52 -0
  135. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.js +17 -0
  136. package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +207 -0
  137. package/dist/components/blocks/feature-scroll/FeatureScroll.css +1 -0
  138. package/dist/components/blocks/feature-split/FeatureSplit.css +1 -0
  139. package/dist/components/blocks/feature-split/feature-split-impl.css +14 -1
  140. package/dist/components/blocks/feature-stack/FeatureStack.css +86 -0
  141. package/dist/components/blocks/feature-stack/FeatureStack.d.ts +19 -0
  142. package/dist/components/blocks/feature-stack/FeatureStack.js +27 -0
  143. package/dist/components/blocks/feature-stack/FeatureStack.types.d.ts +34 -0
  144. package/dist/components/blocks/feature-stack/FeatureStack.types.js +14 -0
  145. package/dist/components/blocks/feature-stack/feature-stack-impl.css +87 -0
  146. package/dist/components/blocks/image-banner/ImageBanner.css +133 -0
  147. package/dist/components/blocks/image-banner/ImageBanner.d.ts +32 -0
  148. package/dist/components/blocks/image-banner/ImageBanner.js +41 -0
  149. package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +54 -0
  150. package/dist/components/blocks/image-banner/ImageBanner.types.js +14 -0
  151. package/dist/components/blocks/image-banner/image-banner-impl.css +281 -0
  152. package/dist/components/blocks/landing-hero/LandingHero.css +1 -0
  153. package/dist/components/blocks/landing-hero/LandingHero.d.ts +1 -1
  154. package/dist/components/blocks/landing-hero/LandingHero.js +4 -3
  155. package/dist/components/blocks/landing-hero/LandingHero.types.d.ts +7 -3
  156. package/dist/components/blocks/logo-columns/LogoColumns.css +1 -0
  157. package/dist/components/blocks/logo-rows/LogoRows.css +1 -0
  158. package/dist/components/blocks/page-header/PageHeader.css +1 -0
  159. package/dist/components/blocks/page-header/PageHeader.d.ts +1 -1
  160. package/dist/components/blocks/page-header/PageHeader.js +3 -2
  161. package/dist/components/blocks/page-header/PageHeader.types.d.ts +6 -0
  162. package/dist/components/blocks/page-header/PageHeader.types.js +1 -1
  163. package/dist/components/blocks/page-header/page-header-impl.css +10 -0
  164. package/dist/components/blocks/product-hero/ProductHero.css +8 -3
  165. package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
  166. package/dist/components/blocks/product-hero/ProductHero.js +5 -2
  167. package/dist/components/blocks/product-hero/ProductHero.types.d.ts +5 -1
  168. package/dist/components/blocks/product-hero/ProductHero.types.js +1 -0
  169. package/dist/components/blocks/product-hero/product-hero-impl.css +43 -12
  170. package/dist/components/blocks/resource-banner/ResourceBanner.css +106 -0
  171. package/dist/components/blocks/resource-banner/ResourceBanner.d.ts +32 -0
  172. package/dist/components/blocks/resource-banner/ResourceBanner.js +51 -0
  173. package/dist/components/blocks/resource-banner/ResourceBanner.types.d.ts +44 -0
  174. package/dist/components/blocks/resource-banner/ResourceBanner.types.js +14 -0
  175. package/dist/components/blocks/resource-banner/resource-banner-impl.css +69 -0
  176. package/dist/components/blocks/scene-scroll/SceneScroll.css +93 -0
  177. package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +36 -0
  178. package/dist/components/blocks/scene-scroll/SceneScroll.js +54 -0
  179. package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +32 -0
  180. package/dist/components/blocks/scene-scroll/SceneScroll.types.js +15 -0
  181. package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +275 -0
  182. package/dist/components/blocks/stats/Stats.css +139 -0
  183. package/dist/components/blocks/stats/Stats.d.ts +24 -0
  184. package/dist/components/blocks/stats/Stats.js +120 -0
  185. package/dist/components/blocks/stats/Stats.types.d.ts +36 -0
  186. package/dist/components/blocks/stats/Stats.types.js +19 -0
  187. package/dist/components/blocks/stats/stats-count.d.ts +34 -0
  188. package/dist/components/blocks/stats/stats-count.js +61 -0
  189. package/dist/components/blocks/stats/stats-impl.css +284 -0
  190. package/dist/components/blocks/stats/use-wheel.d.ts +37 -0
  191. package/dist/components/blocks/stats/use-wheel.js +126 -0
  192. package/dist/components/blocks/steps/Steps.css +202 -0
  193. package/dist/components/blocks/steps/Steps.d.ts +32 -0
  194. package/dist/components/blocks/steps/Steps.js +65 -0
  195. package/dist/components/blocks/steps/Steps.types.d.ts +48 -0
  196. package/dist/components/blocks/steps/Steps.types.js +21 -0
  197. package/dist/components/blocks/steps/steps-impl.css +216 -0
  198. package/dist/components/blocks/steps/use-turn.d.ts +33 -0
  199. package/dist/components/blocks/steps/use-turn.js +75 -0
  200. package/dist/components/blocks/sticky-cards/StickyCards.css +154 -0
  201. package/dist/components/blocks/sticky-cards/StickyCards.d.ts +35 -0
  202. package/dist/components/blocks/sticky-cards/StickyCards.js +153 -0
  203. package/dist/components/blocks/sticky-cards/StickyCards.types.d.ts +43 -0
  204. package/dist/components/blocks/sticky-cards/StickyCards.types.js +18 -0
  205. package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +393 -0
  206. package/dist/components/blocks/team-grid/TeamGrid.css +159 -0
  207. package/dist/components/blocks/team-grid/TeamGrid.d.ts +28 -0
  208. package/dist/components/blocks/team-grid/TeamGrid.js +74 -0
  209. package/dist/components/blocks/team-grid/TeamGrid.types.d.ts +51 -0
  210. package/dist/components/blocks/team-grid/TeamGrid.types.js +20 -0
  211. package/dist/components/blocks/team-grid/team-grid-impl.css +129 -0
  212. package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -0
  213. package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +1 -1
  214. package/dist/components/blocks/testimonial-row/TestimonialRow.js +4 -3
  215. package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +3 -0
  216. package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +1 -1
  217. package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +8 -0
  218. package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -0
  219. package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +1 -1
  220. package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +2 -2
  221. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +8 -0
  222. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +1 -1
  223. package/dist/components/blocks/text-scroll/TextScroll.css +53 -0
  224. package/dist/components/blocks/text-scroll/TextScroll.d.ts +5 -0
  225. package/dist/components/blocks/text-scroll/TextScroll.js +71 -0
  226. package/dist/components/blocks/text-scroll/TextScroll.types.d.ts +22 -0
  227. package/dist/components/blocks/text-scroll/TextScroll.types.js +10 -0
  228. package/dist/components/blocks/text-scroll/text-scroll-impl.css +115 -0
  229. package/dist/components/blocks/tiers/Tiers.css +233 -0
  230. package/dist/components/blocks/tiers/Tiers.d.ts +32 -0
  231. package/dist/components/blocks/tiers/Tiers.js +68 -0
  232. package/dist/components/blocks/tiers/Tiers.types.d.ts +45 -0
  233. package/dist/components/blocks/tiers/Tiers.types.js +25 -0
  234. package/dist/components/blocks/tiers/tiers-impl.css +185 -0
  235. package/dist/components/blocks/use-rotation.d.ts +12 -2
  236. package/dist/components/blocks/use-rotation.js +6 -28
  237. package/dist/components/comparison-cards-data.d.ts +59 -0
  238. package/dist/components/comparison-cards-data.js +12 -0
  239. package/dist/components/comparison-table-data.d.ts +39 -0
  240. package/dist/components/comparison-table-data.js +11 -0
  241. package/dist/components/core/accordion-item/AccordionItem.css +1 -5
  242. package/dist/components/core/background/Background.css +92 -0
  243. package/dist/components/core/background/Background.d.ts +27 -0
  244. package/dist/components/core/background/Background.js +45 -0
  245. package/dist/components/core/background/Background.types.d.ts +39 -0
  246. package/dist/components/core/background/Background.types.js +11 -0
  247. package/dist/components/core/background/background-impl.css +760 -0
  248. package/dist/components/core/background/halftone.d.ts +134 -0
  249. package/dist/components/core/background/halftone.js +722 -0
  250. package/dist/components/core/background/patterns.d.ts +66 -0
  251. package/dist/components/core/background/patterns.js +244 -0
  252. package/dist/components/core/background/shader.d.ts +44 -0
  253. package/dist/components/core/background/shader.js +307 -0
  254. package/dist/components/core/background/use-halftone.d.ts +15 -0
  255. package/dist/components/core/background/use-halftone.js +27 -0
  256. package/dist/components/core/background/use-offscreen.d.ts +10 -0
  257. package/dist/components/core/background/use-offscreen.js +30 -0
  258. package/dist/components/core/background/use-shader.d.ts +11 -0
  259. package/dist/components/core/background/use-shader.js +25 -0
  260. package/dist/components/core/background/use-spotlight.d.ts +14 -0
  261. package/dist/components/core/background/use-spotlight.js +73 -0
  262. package/dist/components/core/bottom-sheet/BottomSheet.js +2 -2
  263. package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +3 -1
  264. package/dist/components/core/breadcrumb/Breadcrumb.d.ts +1 -0
  265. package/dist/components/core/breadcrumb/Breadcrumb.js +1 -0
  266. package/dist/components/core/breadcrumb/breadcrumb-impl.css +11 -0
  267. package/dist/components/core/button/button-impl.css +14 -1
  268. package/dist/components/core/illustration-card/IllustrationCard.css +40 -0
  269. package/dist/components/core/illustration-card/IllustrationCard.d.ts +22 -0
  270. package/dist/components/core/illustration-card/IllustrationCard.js +82 -0
  271. package/dist/components/core/illustration-card/IllustrationCard.types.d.ts +23 -0
  272. package/dist/components/core/illustration-card/IllustrationCard.types.js +8 -0
  273. package/dist/components/core/illustration-card/illustration-card-impl.css +47 -0
  274. package/dist/components/core/illustration-scene/IllustrationScene.css +41 -0
  275. package/dist/components/core/illustration-scene/IllustrationScene.d.ts +14 -0
  276. package/dist/components/core/illustration-scene/IllustrationScene.js +16 -0
  277. package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +32 -0
  278. package/dist/components/core/illustration-scene/IllustrationScene.types.js +8 -0
  279. package/dist/components/core/illustration-scene/illustration-scene-impl.css +46 -0
  280. package/dist/components/core/link/Link.js +7 -3
  281. package/dist/components/core/link/link-impl.css +29 -2
  282. package/dist/components/core/navbar/Navbar.css +2 -2
  283. package/dist/components/core/navbar/Navbar.types.d.ts +1 -1
  284. package/dist/components/core/navbar-item/NavbarItem.d.ts +2 -1
  285. package/dist/components/core/navbar-item/NavbarItem.js +3 -10
  286. package/dist/components/core/navbar-item/NavbarItem.types.d.ts +4 -1
  287. package/dist/components/core/navbar-item/NavbarItem.types.js +1 -1
  288. package/dist/components/core/navbar-item/navbar-item-impl.css +10 -0
  289. package/dist/components/core/navbar-menu/navbar-menu-impl.css +9 -0
  290. package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +19 -0
  291. package/dist/components/core/pagination/Pagination.js +1 -1
  292. package/dist/components/core/pagination/pagination-impl.css +9 -0
  293. package/dist/components/core/pagination-dots/PaginationDots.d.ts +1 -1
  294. package/dist/components/core/pagination-dots/PaginationDots.js +3 -3
  295. package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +3 -1
  296. package/dist/components/core/segmented-control/SegmentedControl.css +4 -3
  297. package/dist/components/core/segmented-control/SegmentedControl.js +17 -3
  298. package/dist/components/core/segmented-control-item/SegmentedControlItem.css +2 -1
  299. package/dist/components/core/select/Select.js +3 -3
  300. package/dist/components/core/select/Select.types.d.ts +11 -1
  301. package/dist/components/core/select/Select.types.js +1 -1
  302. package/dist/components/core/tab-list/TabList.js +9 -1
  303. package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +1 -1
  304. package/dist/components/core/table-header-cell/TableHeaderCell.js +5 -2
  305. package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +7 -1
  306. package/dist/components/core/table-header-cell/TableHeaderCell.types.js +1 -1
  307. package/dist/components/core/text-area/TextArea.d.ts +1 -1
  308. package/dist/components/core/text-area/TextArea.js +2 -2
  309. package/dist/components/core/text-area/TextArea.types.d.ts +9 -1
  310. package/dist/components/core/text-area/TextArea.types.js +1 -1
  311. package/dist/components/core/text-input/TextInput.d.ts +1 -1
  312. package/dist/components/core/text-input/TextInput.js +2 -2
  313. package/dist/components/core/text-input/TextInput.types.d.ts +9 -1
  314. package/dist/components/core/text-input/TextInput.types.js +1 -1
  315. package/dist/components/data-table-data.d.ts +33 -0
  316. package/dist/components/data-table-data.js +12 -0
  317. package/dist/components/download-banner-data.d.ts +52 -0
  318. package/dist/components/download-banner-data.js +11 -0
  319. package/dist/components/index.d.ts +51 -0
  320. package/dist/components/index.js +38 -0
  321. package/dist/components/resource-banner-data.d.ts +34 -0
  322. package/dist/components/resource-banner-data.js +13 -0
  323. package/dist/components/scene-scroll-data.d.ts +24 -0
  324. package/dist/components/scene-scroll-data.js +9 -0
  325. package/dist/components/stats-data.d.ts +28 -0
  326. package/dist/components/stats-data.js +11 -0
  327. package/dist/components/steps-data.d.ts +38 -0
  328. package/dist/components/steps-data.js +13 -0
  329. package/dist/components/sticky-cards-data.d.ts +43 -0
  330. package/dist/components/sticky-cards-data.js +12 -0
  331. package/dist/components/team-grid-data.d.ts +38 -0
  332. package/dist/components/team-grid-data.js +11 -0
  333. package/dist/components/tiers-data.d.ts +47 -0
  334. package/dist/components/tiers-data.js +13 -0
  335. package/dist/marketing.css +101 -28
  336. package/package.json +1 -1
@@ -0,0 +1,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`.
@@ -42,6 +42,13 @@ The band that opens a main landing page: the one thing the page is about, said o
42
42
  - never: The background. A photograph filling the band is `backgroundImage`; this sits in front of it and is placed against the band's edge
43
43
  - **backgroundImage** `string` · optional — A photograph filling the whole band. It is shown as it is — nothing is painted over it, so choose one already dark enough that the title reads on it
44
44
  - never: A flat colour, or a bright photograph. The band already paints its ground, and nothing here darkens an image on the page's behalf — a pale one leaves the claim unreadable
45
+ - **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
46
+ - `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. …
47
+ - 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
48
+
49
+ ## The type refuses
50
+
51
+ - background="halftone" with backgroundImage="*" — Two grounds on one band: the photograph would paint over the pattern, or the pattern over the photograph. A hero is a picture or a pattern, never both
45
52
 
46
53
  ## Inside it
47
54
 
@@ -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,6 +38,10 @@ 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` · 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. …
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. …
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
41
45
 
42
46
  ## Inside it
43
47
 
@@ -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
 
@@ -38,7 +38,9 @@ The band that opens a product or a market page: the one thing the page is about,
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
- - **media** `node` · optional — The product itself, under the claim and the actions — in the column, capped to the measure, and whole
41
+ - **image** `data` · optional — The product itself, under the claim and the actions, drawn at the picture's own proportions — a square screenshot stays square, a tall phone stays tall — and only held to the screen's limit: no taller than aspect.portrait of the column on a phone, no taller than half the band from the fold. …
42
+ - never: The background — that is `backgroundImage`. And beside `media`: one product, one picture. Given both, `image` is drawn and `media` ignored
43
+ - **media** `node` · optional — A product picture in a shape the page fixes on purpose — an AspectRatio box, which keeps its ratio across the column. Prefer `image`, which keeps the picture's own shape and adapts to it
42
44
  - never: The background. A photograph filling the band is `backgroundImage`; this sits in front of it, in the column, and is never cropped
43
45
  - **backgroundImage** `string` · optional — A photograph filling the whole band. It is shown as it is — nothing is painted over it, so choose one already dark enough that the title reads on it
44
46
  - never: A flat colour, or a bright photograph. The band already paints its ground, and nothing here darkens an image on the page's behalf — a pale one leaves the claim unreadable
@@ -46,7 +48,7 @@ The band that opens a product or a market page: the one thing the page is about,
46
48
  ## Inside it
47
49
 
48
50
  - 8 components are refused inside it; the list and the reasons are in the long document.
49
- - Renders 9 parts: root, inner, content, text, eyebrow, title, description, actions, media.
51
+ - Renders 10 parts: root, inner, content, text, eyebrow, title, description, actions, media, image.
50
52
 
51
53
  ---
52
54
 
@@ -0,0 +1,53 @@
1
+ <!-- GENERATED from resourcebanner.contract.json. Do not edit. -->
2
+
3
+ # ResourceBanner
4
+
5
+ A dark panel at the end of an informational section that points readers at related guides, policies or reference pages — the "here's where to read more" block. …
6
+
7
+ `import { ResourceBanner } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Pointing readers at related guides, policies, or reference pages at the end of an informational section — the 'here's where to read more' block
12
+ - A section of a legal, help or safety page has said what it has to and the detail lives elsewhere — the full terms, a risk disclosure, a help-centre article
13
+
14
+ ## Something else, when
15
+
16
+ - The block asks the reader to do something — open an account, start trading → **CtaBanner**
17
+ - The resources are a set of destinations each worth a heading and a sentence → **FeatureCards**
18
+ - The reader's questions have short answers that can be given on the page → **FaqAccordion**
19
+
20
+ ## Never
21
+
22
+ - A call to action. Nothing here is a button, and a resource the page wants pressed more than the others is not a resource
23
+ - More than four or five links. Past that the stack competes with the words beside it, and the set is a page of links of its own
24
+ - Links whose words only make sense beside the heading — "Read more", "Here". The stack is read as a list, and a screen reader lists links on their own
25
+
26
+ ## Props
27
+
28
+ - **ground** `enum` · default "page" — Which of the page's three grounds the section paints behind the panel. …
29
+ - `page` — The default, and the page's own white. A section that has nothing to separate itself from what is above it
30
+ - `subtle` — The reference design's arrangement: the dark panel on the light grey band. The one to reach for when the section ends a run of white ones and wants to read as its close. …
31
+ - `strong` — `color.bg.brand-strong`, the dark band. …
32
+ - never: Marking importance. A list of further reading is the quietest thing on a page, and painting the band dark to make it louder is a page with its emphasis in the wrong place. And never the brand's coral, `color.bg.brand`, which is not offered. …
33
+ - **title** `string` · required — Always. What the links are for, in a few words — "Learn more about staying safe", "Read more about trading risks"
34
+ - never: A sentence. The description is for the sentence; the title names what the reader will find
35
+ - **headingLevel** `enum` · default "h2" — Matching the outline of the page around the block, so the heading keeps its place in the hierarchy rather than skipping a level. …
36
+ - `h2` — The default: the block is a section of the page, under the page's own h1
37
+ - `h3` — The block closes a section that already carries the h2 it belongs to
38
+ - `h4` — The block closes a subsection under an h3, on a long legal or help page whose outline runs that deep
39
+ - **description** `string` · optional — One sentence introducing the links — what the reader will find there, or why it is worth reading
40
+ - never: A summary of the links. They say what they are; this says why they are together. A second sentence is copy the reader passes on the way to the list
41
+ - **links** `data` · required — Always. The resources, in the order they are read — one to four, each named for what is there: the guide, the policy, the page. …
42
+ - never: A link that is the page's call to action, or a label that only makes sense beside the heading. Each one is heard on its own in a screen reader's list of links
43
+ - **externalLabel** `string` · default "(opens in a new tab)" — What an external link's accessible name ends with, so a reader who cannot see the up-right mark is told before their tab changes. Never drawn — the mark says it to everyone else. Translate it with the page
44
+ - **downloadLabel** `string` · default "(downloads a file)" — What a download's accessible name ends with, so a reader who cannot see the file mark knows the link saves something rather than opening a page. Never drawn. …
45
+
46
+ ## Inside it
47
+
48
+ - 9 components are refused inside it; the list and the reasons are in the long document.
49
+ - Renders 8 parts: root, inner, panel, content, title, description, list, item.
50
+
51
+ ---
52
+
53
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/resourcebanner.md`.
@@ -0,0 +1,49 @@
1
+ <!-- GENERATED from scenescroll.contract.json. Do not edit. -->
2
+
3
+ # SceneScroll
4
+
5
+ A full-screen section of two scenes — each a photograph filling the band with a heading and a line over it — that change over as the reader scrolls: the screen holds still while the second photograph dissolves in over the first and the first scene's words give way to the second's. …
6
+
7
+ `import { SceneScroll } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Two states of one thing a page wants felt rather than listed — the markets by day and by night, a trader's screen before and after, a market open around the clock …
12
+ - One immersive moment on a product or campaign page, between lighter sections, where two photographs carry the argument and the words are a heading and a line each …
13
+ - The opening band of a campaign page built around that change, at headingLevel h1
14
+
15
+ ## Something else, when
16
+
17
+ - There is one photograph, not two states of something → **ImageBanner**
18
+ - Three or more things to show, each with a picture → **FeatureScroll**
19
+ - The page's opening band, with an action to take → **LandingHero**
20
+ - One statement on its own, revealed as the reader scrolls → **TextScroll**
21
+
22
+ ## Never
23
+
24
+ - Words a reader must not miss — a price, a disclaimer, a legal line. Each scene's words are on screen for only part of the pass
25
+ - Two of these on one page, or one beside another pinned section. Each holds the screen for a screen and a half of scrolling, and two make the page feel stuck
26
+ - Photographs with words in them. The words are the headings and the lines, where a screen reader and a translation reach them; a photograph saying them is under a scrim and cropped to fill
27
+ - An action. There is no slot for one: a button that dissolves away as the reader scrolls is one they cannot rely on, so the page's next section carries it
28
+
29
+ ## Props
30
+
31
+ - **headingLevel** `enum` · default "h2" — Where the first scene's title sits in the page's outline. The second scene's title takes the level under it — h2 under an h1, h3 under an h2 — because it is the second half of the section the first one names, not a section of its own. …
32
+ - `h2` — The default: the section sits under the page's own h1, and the scenes' titles are drawn at font.h2
33
+ - `h1` — The section opens a campaign page and the first scene's title is the page's heading — the reference design's hero use. Drawn at font.h1, the opening band's size
34
+ - never: Making a mid-page section look like a hero. h1 is the page's heading, and a page has one
35
+ - **first** `data` · required — Always. The scene the section opens on: a title in a few words, a line under it where the title needs one, and the photograph filling the band behind them. Its title names the section, so it is the one to write as the section's heading. …
36
+ - never: A scene that says the same as the second with a different picture. The change-over is the argument; two scenes that agree have nothing to change between
37
+ - **second** `data` · required — Always. The scene the section changes over to, in the same shape as the first. …
38
+ - never: A continuation of the first scene's sentence. A reader who arrives by heading, or who scrolls past fast, reads each title on its own
39
+ - **link** `node` · optional — A way on for the reader who wants more — "See trading hours", "Learn more". …
40
+ - never: A button, or a different link per scene. One way on for the section; something to press that changed under the pointer would be the one thing a reader could not rely on
41
+
42
+ ## Inside it
43
+
44
+ - 7 components are refused inside it; the list and the reasons are in the long document.
45
+ - Renders 9 parts: root, stage, scene, media, image, content, title, description, link.
46
+
47
+ ---
48
+
49
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/scenescroll.md`.
@@ -71,6 +71,11 @@ A control for choosing one answer from a set the reader scans. …
71
71
  - never: Marking every optional control on a form where most are optional — a marker on almost every label is noise
72
72
  - **statusMessage** `string` · optional — Saying what the status means: what is wrong and how to fix it, what to look at, or what was confirmed
73
73
  - never: Restating the status. "Error" beside a red control says nothing the colour has not, and the colour is the part a colour-blind reader may not get
74
+ - **requiredLabel** `string` · default "required" — The word drawn beside the label when requiredMark is text. Translate it with the page: the mark exists to say what it means in the reader's own language, which an English default does not
75
+ - **optionalLabel** `string` · default "optional" — The word drawn beside the label of an optional field. Translate it with the page, as requiredLabel is
76
+ - **labelTooltipLabel** `string` · optional — The accessible name of the button that opens labelTooltip. Without it the button is named "About" and the label; pass it to translate that with the page
77
+ - never: Visible text. It names the button to assistive technology and is never drawn
78
+ - **searchLabel** `string` · optional — The name and placeholder of the search field a searchable list opens with. Without it the field reads "Search" and the label; pass it to translate that with the page
74
79
 
75
80
  ## The type refuses
76
81
 
@@ -0,0 +1,46 @@
1
+ <!-- GENERATED from stats.contract.json. Do not edit. -->
2
+
3
+ # Stats
4
+
5
+ A trust and credibility section of key numbers: a heading, a line under it where the heading needs one, and the figures — each a number and the few words that say what it counts. …
6
+
7
+ `import { Stats } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Three to five headline numbers that prove scale or credibility — traders, markets, years, the smallest deposit — where the set is the point — read along a row from the fold, turned through one at a time on a phone …
12
+ - A break between two heavier sections, when the numbers alone tell the story
13
+
14
+ ## Something else, when
15
+
16
+ - Each item needs a sentence of its own, or a picture → **FeatureCards**
17
+ - The number is part of a claim the page is making in words → **FeatureSplit**
18
+
19
+ ## Never
20
+
21
+ - Numbers that change while the page is open — a price, a live count. The figures are written once and counted once. The phone's wheel turns between them, but no figure changes once written — a value that does is a ticker this does not draw
22
+ - A number nobody can stand behind. The figures are claims in the company's name; keep each one in step with its source
23
+ - More than six figures. Past two rows the set stops being taken in at a glance
24
+
25
+ ## Props
26
+
27
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, FeatureCards' 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. …
28
+ - `page` — The default, and the page's own white. A row of figures between two sections that need nothing to separate them
29
+ - `subtle` — The grey band, for a row of figures that should read as a section of its own without changing the page's voice. …
30
+ - `strong` — `color.bg.brand-strong`, the dark band, for a set of figures a reader should arrive at — a home page's "Trade with confidence". …
31
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left. And never the brand's own coral, which is not offered: that ground belongs to the band that asks a reader to do something
32
+ - **title** `string` · required — Always. What the numbers prove, in the fewest words — "Trade with confidence", "Deriv in numbers"
33
+ - never: A figure. The figures are the content; the heading says what they add up to
34
+ - **description** `string` · optional — A line under the heading, when the heading alone does not say whose numbers these are or since when — "For over 25 years, a trusted partner of traders worldwide."
35
+ - never: A paragraph, or the figures again in words
36
+ - **stats** `data` · required — Always. The figures, in the order they are read along the row — three to five, each a short `value` exactly as it is to be read and a `label` of a few words. …
37
+ - never: A long value. "2.5M+" holds a row; "over two and a half million" breaks it on a phone. And a label longer than one line on a phone: the wheel steps by one figure's height, measured with a one-line label, so a label that wraps runs into the figure beside it
38
+
39
+ ## Inside it
40
+
41
+ - 6 components are refused inside it; the list and the reasons are in the long document.
42
+ - Renders 13 parts: root, inner, header, title, description, list, dots, dot, item, value, amount, count, label.
43
+
44
+ ---
45
+
46
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/stats.md`.
@@ -0,0 +1,55 @@
1
+ <!-- GENERATED from steps.contract.json. Do not edit. -->
2
+
3
+ # Steps
4
+
5
+ A two-column how-it-works section pairing a supporting picture with a numbered, ordered list of steps, each a title and a line describing it. …
6
+
7
+ `import { Steps } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A page explains a get-started or onboarding flow — opening an account, funding it, starting to trade
12
+ - A process has three to six steps that a reader follows in one order, each a short imperative and a sentence
13
+ - A setup or a how-to page — a platform's install, a deposit or a withdrawal — needs its sequence shown beside one picture
14
+ - The same how-it-works list, walked through on its own: with `autoplay` each step takes its turn, its rule filling as it holds, and the picture changes to that step's — a sequence shown in sequence rather than all at once …
15
+
16
+ ## Something else, when
17
+
18
+ - The items have no order a reader follows — they are things a product includes → **FeatureBullets**
19
+ - Three or four things side by side, each with its own picture → **FeatureCards**
20
+ - Each stage needs a screen and a picture of its own → **FeatureScroll**
21
+
22
+ ## Never
23
+
24
+ - A list without an order. Numbers against items that could be read in any sequence claim a sequence the page does not have, and a reader follows them anyway
25
+ - A sequence longer than six steps. Past that the list runs well past the picture beside it, and a process that long wants a page of its own rather than a section
26
+ - An article or a guide's body. This is a section in the middle of a marketing page, and carries no navigation of its own
27
+
28
+ ## Props
29
+
30
+ - **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. …
31
+ - `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
32
+ - `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 reference design paints this section grey, and a page following it closely takes this. …
33
+ - `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
34
+ - never: Marking importance. Every section on a page painted dark is a page with no emphasis left. And never the brand's own coral, `color.bg.brand`, which is not offered here: that ground belongs to the band that asks a reader to do something, and a how-it-works section wearing it is a page with two calls to action, one of which does nothing
35
+ - **mediaPosition** `enum` · default "start" — Which side the picture takes at full width. Alternating it against the split sections around it is what stops two in a row reading as one long column, and it is the page's decision rather than this section's. …
36
+ - `start` — The default, and the reference design's: the picture first, then the steps it introduces
37
+ - `end` — The steps first, for a section sitting under a split whose picture is already at the start
38
+ - never: Moving the picture on a phone. There is one column there and the picture leads it
39
+ - **autoplay** `boolean` · default false — Whether the steps take their turn on their own: one step is current, its rule fills over motion.duration.dwell, then the next takes over, and back to the first after the last. …
40
+ - never: Steps whose descriptions take longer to read than motion.duration.dwell — leave it off rather than cut the copy to the timer. And a list with no picture per step, where the only thing that moves is a rule: the turn is worth it when the picture changes with it
41
+ - **title** `string` · required — Always. What the steps get a reader to, in the fewest words that say it — 'Get started in 3 steps'
42
+ - never: A sentence. The steps underneath are the argument; this only has to name where they lead
43
+ - **steps** `data` · required — Always. The steps, in the order a reader takes them — three or four is right, six the most. Each is a short imperative and a sentence under about two hundred characters. …
44
+ - never: Items that could be taken in any order, or a step that is two steps. Each number is a claim that this comes after the one above it and is one thing to do
45
+ - **media** `node` · optional — The one picture beside the steps, where they have no pictures of their own — a screenshot, a photograph. …
46
+ - never: Anything a reader has to read or press. It is held to a square and cropped to fill it, so words in it are cropped too
47
+
48
+ ## Inside it
49
+
50
+ - 10 components are refused inside it; the list and the reasons are in the long document.
51
+ - Renders 15 parts: root, inner, split, media, image, content, title, list, step, number, body, step-title, trigger, step-description, progress.
52
+
53
+ ---
54
+
55
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/steps.md`.
@@ -0,0 +1,52 @@
1
+ <!-- GENERATED from stickycards.contract.json. Do not edit. -->
2
+
3
+ # StickyCards
4
+
5
+ A section whose cards pile up as the page scrolls: a heading, and under it a set of cards that each stop near the top of the window while the next one slides up over them, so the cards are read one at a time and the edges of the ones already read stay showing above the one being read. …
6
+
7
+ `import { StickyCards } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A set of markets, products or benefits a page wants read one at a time as the reader scrolls — the reference design's "What we offer" — where each is a title and a sentence, and a picture or an animation is optional …
12
+ - Three steps or benefits that each need a picture of their own — Sign up, Deposit, Trade — told as a sequence the reader scrolls through rather than a row they compare …
13
+
14
+ ## Something else, when
15
+
16
+ - Three or four things a reader should compare side by side, at a glance → **FeatureCards**
17
+ - Several things of the same kind, each with a picture worth a screen and room for more than a sentence → **FeatureScroll**
18
+ - One or two items → **nothing in this system does this**
19
+
20
+ ## Never
21
+
22
+ - Anything the reader must see at once — terms, prices compared across plans, a risk warning. A covered card is out of sight until the reader scrolls back to it
23
+ - Cards a reader presses. The pile covers each card as the next arrives, and a control under another card is one the eye cannot find; a card's way on belongs in the section after it
24
+ - The page's opening band. This sits under the page's heading, never in place of it
25
+
26
+ ## Props
27
+
28
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, and with it the ink of the heading. The cards keep their own fills on every ground. …
29
+ - `page` — The default, and the page's own white. The reference design's sticky stacked cards sit on it
30
+ - `subtle` — A quiet step off the page — the reference design's slate band, which its market cards sit on. …
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 brand's coral, `color.bg.brand`, which is not offered: that ground belongs to the band that asks a reader to do something
33
+ - **layout** `enum` · default "compact" — Which pile this is: text-first cards in a narrow column, or a few large cards the width of the page with a picture each
34
+ - `compact` — The default — the reference design's StickyMarketCards and their animation sibling. …
35
+ - `feature` — The reference design's StickyStackedCards — about three large cards, each the width of the page and at least size.sticky-cards.feature-min tall, the title at the h3 step, its words beside a picture that runs to the card's edges and fills its half from the fold, under them on a phone. …
36
+ - **title** `string` · required — Always. What the set is, in the fewest words — "What we offer", "Start trading in minutes". It names the section as a region, so a screen reader can jump to it and past it
37
+ - never: A sentence. The line under it is for the sentence
38
+ - **description** `string` · optional — A line saying what the cards have in common, when the title alone does not
39
+ - never: A paragraph, or an introduction to each card. The cards say what each one is
40
+ - **cards** `data` · required — Always. The cards, in the order the reader meets them — the first is the first one covered, the last ends the pile on top. …
41
+ - never: A card a reader has to press, or one or two cards. See the block's own guidance. Mixing cards with and without a picture in one pile. Give every card one, or none
42
+ - **media** `callback` · optional — A card shows something the page plays itself — a Lottie animation, a video — in the place its picture would take, the reference design's StickyMarketCardsLottie. …
43
+ - never: A control that only works while its card is on top, or anything a reader must press to read the card. Whatever this returns is covered when the next card arrives; a focusable control in it brings its card to the top of the pile while it has focus, but a reader scrolling past never sees it. …
44
+
45
+ ## Inside it
46
+
47
+ - 6 components are refused inside it; the list and the reasons are in the long document.
48
+ - Renders 12 parts: root, inner, header, title, description, list, item, backdrop, body, media, image, scrim.
49
+
50
+ ---
51
+
52
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/stickycards.md`.
@@ -46,6 +46,10 @@ The name of a column, announced before every value under it. …
46
46
  - **headerCase** `enum` · default "upper"
47
47
  - `upper` — The house setting. Column names in capitals at font.overline — eleven pixels with wide tracking — which reads as a different texture from the values rather than a louder version of them. …
48
48
  - `title` — Names drawn as they were written, at font.label.sm — twelve pixels, medium, ordinary tracking. …
49
+ - **scope** `enum` · default "col" — Which way the cell names: down its column, the usual case, or across its row. …
50
+ - `col` — The default. A name in the header row, announced before every value beneath it
51
+ - `row` — The first cell of a data row when that cell is what the row is about — an instrument, a plan, a country — rather than one more value in it. …
52
+ - never: A row header that can be sorted. Sorting orders rows by a column, so the control belongs on the column's name in the header row, never on the name of one row
49
53
  - **sortable** `boolean` · default false — The reader can order the table by this column. It draws the control and the mark; what pressing it does is the page's, reported through `onSort`
50
54
  - never: A column that only looks orderable. There is no state where the control is drawn and inert — a header that could be pressed to no effect is worse than one that was never offered
51
55
  - **onSort** `callback` · optional — Told the header was pressed. …
@@ -0,0 +1,53 @@
1
+ <!-- GENERATED from teamgrid.contract.json. Do not edit. -->
2
+
3
+ # TeamGrid
4
+
5
+ A section that sets out the people behind a company: a heading, and a grid of people under it — each a square photograph, their name, what they do and, where they have one, a link to a profile of theirs elsewhere. …
6
+
7
+ `import { TeamGrid } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A leadership team, an advisory board or a regional management list on an about page
12
+ - A responsive grid of person/profile cards — photo, name, role, and an optional external profile link — with an optional line under its heading and a "View all" that shows the rest of a longer list …
13
+
14
+ ## Something else, when
15
+
16
+ - One person, spotlit, in their own words → **TestimonialSlider**
17
+ - The items are not people — logos, features, figures → **FeatureCards**
18
+
19
+ ## Never
20
+
21
+ - People who are not who the card says. A name, a face and a role are a claim about a real person — keep each in step with the person, and leave the profile link out unless it is theirs
22
+ - The page's opening band. This sits under the page's heading, never in place of it
23
+
24
+ ## Props
25
+
26
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, and with it the ink and the photographs' placeholder — the grey a picture sits on before it arrives, which follows the ground so it never vanishes into the band. …
27
+ - `page` — The default, and the page's own white. Most people sections have nothing to separate themselves from
28
+ - `subtle` — A quiet step off the page — the reference design's slate band — for a section that wants to read as its own. …
29
+ - `strong` — `color.bg.brand-strong`, the dark band, for a section a reader should arrive at. …
30
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left. And never the brand's coral, `color.bg.brand`, which is not offered: that ground belongs to the band that asks a reader to do something
31
+ - **title** `string` · required — Always. Who these people are, in the fewest words — "Meet our leadership team". It names the section as a region, so a screen reader can jump to it and past it
32
+ - never: A sentence. The line under it is for the sentence
33
+ - **description** `string` · optional — A line saying who the set is, when the title alone does not — "The people steering Deriv's products, markets and teams"
34
+ - never: A paragraph, or an introduction to each person. The cards say who each one is
35
+ - **people** `data` · required — Always. The people, in the order the page wants them read — by seniority or by relevance, the first `collapsedCount` of them showing at once. Each has a name, a role, a picture with its `alt`, and where there is one a `profile` link. …
36
+ - never: Anyone who has not agreed to be on the page, or a profile link that is not theirs
37
+ - **collapsedCount** `number` · default 4 — How many people show before the rest are asked for. Four, the default, is one row at full width, so the button sits under a complete row. A list no longer than this has no button at all — there is nothing more to show
38
+ - never: Hiding one or two people behind a button. A person more than a row is better shown than asked for: raise this to the length of the list
39
+ - **expandLabel** `string` · default "View all" — The button's words while the rest of the list is hidden. Translate it with the page, and keep it parallel to collapseLabel
40
+ - **collapseLabel** `string` · default "View less" — The button's words once the whole list is showing, for the reason expandLabel exists
41
+ - **profileName** `callback` · optional — The accessible name of a person's profile link, given the person. The visible word is the profile's own — "LinkedIn" — and it is the same on every card, so the link is named for its person too. …
42
+ - never: Visible text. It names the link to assistive technology and is never drawn
43
+ - **externalLabel** `string` · default "(opens in a new tab)" — Said after every profile link's name, because a profile opens in a new tab and a reader should know before they press it — ResourceBanner's words for the same thing. Translate it with the page
44
+ - never: Visible text. It is added to the link's name for assistive technology and never drawn
45
+
46
+ ## Inside it
47
+
48
+ - 6 components are refused inside it; the list and the reasons are in the long document.
49
+ - Renders 14 parts: root, inner, header, title, description, people, list, item, media, text, name, role, profile, actions.
50
+
51
+ ---
52
+
53
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/teamgrid.md`.
@@ -40,6 +40,8 @@ A section that lets a review service's numbers back the page: a heading with the
40
40
  - **label** `string` · default "Reviews" — 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. …
41
41
  - **previousLabel** `string` · default "Previous reviews" — 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
42
42
  - **nextLabel** `string` · default "Next reviews" — The accessible name of the arrow stepping the row on, for the reason previousLabel exists
43
+ - **externalLabel** `string` · default "(opens in a new tab)" — Said after the summary link and every linked review, because both open on a service the page does not own, in a new tab, and a reader should know before they press — TeamGrid's and ResourceBanner's words for the same thing. …
44
+ - never: Visible text. It is added to the link's name for assistive technology and never drawn
43
45
 
44
46
  ## Inside it
45
47
 
@@ -40,6 +40,10 @@ A section that lets the people who use the product say what it did for them: a h
40
40
  - never: A banner whose slides carry more than a reader can take in during motion.duration.dwell — turn it off rather than shorten the copy to fit the timer
41
41
  - **controlsLabel** `string` · default "Testimonials" — The name the dots are announced by. Its own name rather than the section's, so a screen reader moving into the dots hears what they are. Translate it with the page
42
42
  - **slideLabel** `string` · default "Slide" — The word each dot is announced by, before its number — 'Slide 2'. Translate it with the page, as controlsLabel is; a page that translates only the group's name still has every dot announced in English
43
+ - **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. …
44
+ - **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
45
+ - **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. …
46
+ - never: Visible text. It names the item to assistive technology and is never drawn
43
47
 
44
48
  ## Inside it
45
49
 
@@ -60,6 +60,10 @@ A field for what a visitor wants to say in their own words — the message on a
60
60
  - never: Varying within one form. Whichever is chosen is a decision for the whole form: a page marking some labels with a word and others with a glyph reads as two conventions and teaches neither
61
61
  - **optional** `boolean` · default false — Most fields on the form are required, so the few that are not are worth marking instead
62
62
  - never: Marking every optional field on a form where most are optional — a marker on almost every label is noise, and the useful signal is whichever state is the exception
63
+ - **requiredLabel** `string` · default "required" — The word drawn beside the label when requiredMark is text. Translate it with the page: the mark exists to say what it means in the reader's own language, which an English default does not
64
+ - **optionalLabel** `string` · default "optional" — The word drawn beside the label of an optional field. Translate it with the page, as requiredLabel is
65
+ - **labelTooltipLabel** `string` · optional — The accessible name of the button that opens labelTooltip. Without it the button is named "About" and the label; pass it to translate that with the page
66
+ - never: Visible text. It names the button to assistive technology and is never drawn
63
67
 
64
68
  ## The type refuses
65
69
 
@@ -78,6 +78,10 @@ One line of text a visitor types before they are a customer. …
78
78
  - never: Carrying the requirement on its own. The mark is decorative either way — aria-required on the field is what says it to a screen reader
79
79
  - **optional** `boolean` · default false — Most of the form is required and one field is not. Marking the exception is what tells the reader anything
80
80
  - never: Every field on a form where nothing is required. Marking all of them says the same as marking none, and costs a word on each
81
+ - **requiredLabel** `string` · default "required" — The word drawn beside the label when requiredMark is text. Translate it with the page: the mark exists to say what it means in the reader's own language, which an English default does not
82
+ - **optionalLabel** `string` · default "optional" — The word drawn beside the label of an optional field. Translate it with the page, as requiredLabel is
83
+ - **labelTooltipLabel** `string` · optional — The accessible name of the button that opens labelTooltip. Without it the button is named "About" and the label; pass it to translate that with the page
84
+ - never: Visible text. It names the button to assistive technology and is never drawn
81
85
 
82
86
  ## The type refuses
83
87
 
@@ -0,0 +1,43 @@
1
+ <!-- GENERATED from textscroll.contract.json. Do not edit. -->
2
+
3
+ # TextScroll
4
+
5
+ A full-width section holding one large statement — a mission, a brand message — whose words brighten one after another as the reader scrolls past, from dimmed to full strength, so the sentence is read at the pace the page is moved. …
6
+
7
+ `import { TextScroll } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A mission or vision statement, on an About or Who we are page
12
+ - One emphatic brand message between two heavier sections, where a moment of copy on its own gives the page room to breathe
13
+ - A campaign or partner programme's manifesto, in one sentence or two short ones
14
+
15
+ ## Something else, when
16
+
17
+ - The statement needs a heading over it, a line under it or a way onward → **FeatureSplit**
18
+ - The message asks the reader to do something → **CtaBanner**
19
+
20
+ ## Never
21
+
22
+ - Long-form copy, or more than one paragraph. Past about three hundred characters the reveal outlasts the section's pass and the last words are still dim as it leaves
23
+ - Copy that must be legible the moment it is on screen — a disclaimer, a legal line, a price. Words below the reveal's front are dimmed until the reader scrolls to them
24
+ - Two of these back to back. A second reveal straight after the first is the same moment twice, and the page loses the pause the first one made
25
+
26
+ ## Props
27
+
28
+ - **ground** `enum` · default "page" — Which of the page's three grounds this section paints, the axis every block shares: a statement 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. A statement between two sections that need nothing to separate them
30
+ - `subtle` — The grey band, for a statement that should read as a section of its own without changing the page's voice. …
31
+ - `strong` — `color.bg.brand-strong`, the dark band, for the statement a page is built around — the mission on an About page. The words turn white and dim toward the band
32
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left. And never the brand's own coral, which is not offered: a paragraph on it misses the contrast running copy needs
33
+ - **text** `string` · required — Always. The statement, as plain text — one sentence or two short ones, under about three hundred characters. Split into words on its whitespace, so a run of spaces or a line break is one space in what is drawn. …
34
+ - never: Markup, emphasis or a link. The words are drawn as text and nothing in the string is interpreted; a statement that needs a word set apart or a way onward is a FeatureSplit
35
+
36
+ ## Inside it
37
+
38
+ - 6 components are refused inside it; the list and the reasons are in the long document.
39
+ - Renders 4 parts: root, inner, text, word.
40
+
41
+ ---
42
+
43
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/textscroll.md`.