@deriv-com/dds-marketing 0.1.0 → 1.0.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 (595) hide show
  1. package/.llm/components/accordion.md +201 -0
  2. package/.llm/components/accordionitem.md +244 -0
  3. package/.llm/components/aspectratio.md +220 -0
  4. package/.llm/components/badge.md +239 -0
  5. package/.llm/components/bottomsheet.md +412 -0
  6. package/.llm/components/breadcrumb.md +205 -0
  7. package/.llm/components/breadcrumbitem.md +186 -0
  8. package/.llm/components/button.md +295 -0
  9. package/.llm/components/buttonicon.md +321 -0
  10. package/.llm/components/card.md +327 -0
  11. package/.llm/components/cardbody.md +435 -0
  12. package/.llm/components/cardbutton.md +273 -0
  13. package/.llm/components/checkbox.md +293 -0
  14. package/.llm/components/ctabanner.md +186 -0
  15. package/.llm/components/ctabannerslider.md +204 -0
  16. package/.llm/components/divider.md +238 -0
  17. package/.llm/components/dropdownmenu.md +461 -0
  18. package/.llm/components/faqaccordion.md +217 -0
  19. package/.llm/components/featurebullets.md +254 -0
  20. package/.llm/components/featurecards.md +313 -0
  21. package/.llm/components/featurescroll.md +284 -0
  22. package/.llm/components/featuresplit.md +249 -0
  23. package/.llm/components/filterchip.md +322 -0
  24. package/.llm/components/footer.md +416 -0
  25. package/.llm/components/footergroup.md +249 -0
  26. package/.llm/components/grid.md +667 -0
  27. package/.llm/components/icon.md +202 -0
  28. package/.llm/components/landinghero.md +254 -0
  29. package/.llm/components/link.md +362 -0
  30. package/.llm/components/logocolumns.md +235 -0
  31. package/.llm/components/logorows.md +212 -0
  32. package/.llm/components/menuitem.md +226 -0
  33. package/.llm/components/navbar.md +522 -0
  34. package/.llm/components/navbaritem.md +246 -0
  35. package/.llm/components/navbarmenu.md +327 -0
  36. package/.llm/components/navbarmenugroup.md +192 -0
  37. package/.llm/components/navbarpanel.md +263 -0
  38. package/.llm/components/navbarswitcher.md +351 -0
  39. package/.llm/components/navbarswitcheroption.md +164 -0
  40. package/.llm/components/option.md +276 -0
  41. package/.llm/components/pageheader.md +231 -0
  42. package/.llm/components/pagination.md +298 -0
  43. package/.llm/components/paginationdots.md +215 -0
  44. package/.llm/components/producthero.md +248 -0
  45. package/.llm/components/removablechip.md +255 -0
  46. package/.llm/components/row.md +389 -0
  47. package/.llm/components/scroller.md +478 -0
  48. package/.llm/components/searchinput.md +287 -0
  49. package/.llm/components/segmentedcontrol.md +366 -0
  50. package/.llm/components/segmentedcontrolitem.md +280 -0
  51. package/.llm/components/select.md +517 -0
  52. package/.llm/components/selectchip.md +375 -0
  53. package/.llm/components/spinner.md +230 -0
  54. package/.llm/components/stack.md +342 -0
  55. package/.llm/components/statusdot.md +213 -0
  56. package/.llm/components/subdomainnavbar.md +335 -0
  57. package/.llm/components/tab.md +299 -0
  58. package/.llm/components/table.md +668 -0
  59. package/.llm/components/tablebody.md +266 -0
  60. package/.llm/components/tablecell.md +256 -0
  61. package/.llm/components/tablehead.md +256 -0
  62. package/.llm/components/tableheadercell.md +306 -0
  63. package/.llm/components/tablerow.md +293 -0
  64. package/.llm/components/tablist.md +218 -0
  65. package/.llm/components/testimonialrow.md +235 -0
  66. package/.llm/components/testimonialslider.md +254 -0
  67. package/.llm/components/textarea.md +370 -0
  68. package/.llm/components/textinput.md +475 -0
  69. package/.llm/components/tooltip.md +275 -0
  70. package/.llm/components/typography.md +253 -0
  71. package/.llm/digest/accordion.md +43 -0
  72. package/.llm/digest/accordionitem.md +47 -0
  73. package/.llm/digest/aspectratio.md +47 -0
  74. package/.llm/digest/badge.md +45 -0
  75. package/.llm/digest/bottomsheet.md +69 -0
  76. package/.llm/digest/breadcrumb.md +38 -0
  77. package/.llm/digest/breadcrumbitem.md +43 -0
  78. package/.llm/digest/button.md +53 -0
  79. package/.llm/digest/buttonicon.md +61 -0
  80. package/.llm/digest/card.md +51 -0
  81. package/.llm/digest/cardbody.md +70 -0
  82. package/.llm/digest/cardbutton.md +50 -0
  83. package/.llm/digest/checkbox.md +63 -0
  84. package/.llm/digest/ctabanner.md +44 -0
  85. package/.llm/digest/ctabannerslider.md +45 -0
  86. package/.llm/digest/divider.md +52 -0
  87. package/.llm/digest/dropdownmenu.md +67 -0
  88. package/.llm/digest/faqaccordion.md +43 -0
  89. package/.llm/digest/featurebullets.md +52 -0
  90. package/.llm/digest/featurecards.md +49 -0
  91. package/.llm/digest/featurescroll.md +52 -0
  92. package/.llm/digest/featuresplit.md +54 -0
  93. package/.llm/digest/filterchip.md +68 -0
  94. package/.llm/digest/footer.md +57 -0
  95. package/.llm/digest/footergroup.md +42 -0
  96. package/.llm/digest/grid.md +62 -0
  97. package/.llm/digest/icon.md +45 -0
  98. package/.llm/digest/landinghero.md +53 -0
  99. package/.llm/digest/link.md +59 -0
  100. package/.llm/digest/logocolumns.md +55 -0
  101. package/.llm/digest/logorows.md +48 -0
  102. package/.llm/digest/menuitem.md +46 -0
  103. package/.llm/digest/navbar.md +75 -0
  104. package/.llm/digest/navbaritem.md +54 -0
  105. package/.llm/digest/navbarmenu.md +54 -0
  106. package/.llm/digest/navbarmenugroup.md +40 -0
  107. package/.llm/digest/navbarpanel.md +53 -0
  108. package/.llm/digest/navbarswitcher.md +51 -0
  109. package/.llm/digest/navbarswitcheroption.md +37 -0
  110. package/.llm/digest/option.md +54 -0
  111. package/.llm/digest/pageheader.md +49 -0
  112. package/.llm/digest/pagination.md +60 -0
  113. package/.llm/digest/paginationdots.md +43 -0
  114. package/.llm/digest/producthero.md +53 -0
  115. package/.llm/digest/removablechip.md +51 -0
  116. package/.llm/digest/row.md +60 -0
  117. package/.llm/digest/scroller.md +59 -0
  118. package/.llm/digest/searchinput.md +56 -0
  119. package/.llm/digest/segmentedcontrol.md +59 -0
  120. package/.llm/digest/segmentedcontrolitem.md +59 -0
  121. package/.llm/digest/select.md +92 -0
  122. package/.llm/digest/selectchip.md +73 -0
  123. package/.llm/digest/spinner.md +52 -0
  124. package/.llm/digest/stack.md +56 -0
  125. package/.llm/digest/statusdot.md +46 -0
  126. package/.llm/digest/subdomainnavbar.md +54 -0
  127. package/.llm/digest/tab.md +60 -0
  128. package/.llm/digest/table.md +71 -0
  129. package/.llm/digest/tablebody.md +49 -0
  130. package/.llm/digest/tablecell.md +55 -0
  131. package/.llm/digest/tablehead.md +50 -0
  132. package/.llm/digest/tableheadercell.md +65 -0
  133. package/.llm/digest/tablerow.md +56 -0
  134. package/.llm/digest/tablist.md +46 -0
  135. package/.llm/digest/testimonialrow.md +51 -0
  136. package/.llm/digest/testimonialslider.md +51 -0
  137. package/.llm/digest/textarea.md +78 -0
  138. package/.llm/digest/textinput.md +95 -0
  139. package/.llm/digest/tooltip.md +58 -0
  140. package/.llm/digest/typography.md +59 -0
  141. package/.llm/index.md +107 -0
  142. package/.llm/rules.md +146 -0
  143. package/.llm/tokens.md +385 -0
  144. package/AGENTS.md +189 -0
  145. package/LICENSE +21 -0
  146. package/README.md +78 -10
  147. package/dist/components/banner-data.d.ts +38 -0
  148. package/dist/components/banner-data.js +15 -0
  149. package/dist/components/blocks/block-reveal.css +90 -0
  150. package/dist/components/blocks/cta-banner/CtaBanner.css +66 -0
  151. package/dist/components/blocks/cta-banner/CtaBanner.d.ts +22 -0
  152. package/dist/components/blocks/cta-banner/CtaBanner.js +31 -0
  153. package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +29 -0
  154. package/dist/components/blocks/cta-banner/CtaBanner.types.js +13 -0
  155. package/dist/components/blocks/cta-banner/cta-banner-impl.css +29 -0
  156. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +90 -0
  157. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +39 -0
  158. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +60 -0
  159. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +41 -0
  160. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +15 -0
  161. package/dist/components/blocks/cta-banner-slider/cta-banner-slider-impl.css +73 -0
  162. package/dist/components/blocks/faq-accordion/FaqAccordion.css +54 -0
  163. package/dist/components/blocks/faq-accordion/FaqAccordion.d.ts +20 -0
  164. package/dist/components/blocks/faq-accordion/FaqAccordion.js +28 -0
  165. package/dist/components/blocks/faq-accordion/FaqAccordion.types.d.ts +25 -0
  166. package/dist/components/blocks/faq-accordion/FaqAccordion.types.js +10 -0
  167. package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +54 -0
  168. package/dist/components/blocks/feature-bullets/FeatureBullets.css +139 -0
  169. package/dist/components/blocks/feature-bullets/FeatureBullets.d.ts +31 -0
  170. package/dist/components/blocks/feature-bullets/FeatureBullets.js +55 -0
  171. package/dist/components/blocks/feature-bullets/FeatureBullets.types.d.ts +39 -0
  172. package/dist/components/blocks/feature-bullets/FeatureBullets.types.js +16 -0
  173. package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +104 -0
  174. package/dist/components/blocks/feature-cards/FeatureCards.css +84 -0
  175. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +24 -0
  176. package/dist/components/blocks/feature-cards/FeatureCards.js +66 -0
  177. package/dist/components/blocks/feature-cards/FeatureCards.types.d.ts +33 -0
  178. package/dist/components/blocks/feature-cards/FeatureCards.types.js +14 -0
  179. package/dist/components/blocks/feature-cards/feature-cards-impl.css +245 -0
  180. package/dist/components/blocks/feature-scroll/FeatureScroll.css +137 -0
  181. package/dist/components/blocks/feature-scroll/FeatureScroll.d.ts +39 -0
  182. package/dist/components/blocks/feature-scroll/FeatureScroll.js +167 -0
  183. package/dist/components/blocks/feature-scroll/FeatureScroll.types.d.ts +40 -0
  184. package/dist/components/blocks/feature-scroll/FeatureScroll.types.js +17 -0
  185. package/dist/components/blocks/feature-scroll/feature-scroll-impl.css +292 -0
  186. package/dist/components/blocks/feature-split/FeatureSplit.css +95 -0
  187. package/dist/components/blocks/feature-split/FeatureSplit.d.ts +30 -0
  188. package/dist/components/blocks/feature-split/FeatureSplit.js +38 -0
  189. package/dist/components/blocks/feature-split/FeatureSplit.types.d.ts +39 -0
  190. package/dist/components/blocks/feature-split/FeatureSplit.types.js +14 -0
  191. package/dist/components/blocks/feature-split/feature-split-impl.css +83 -0
  192. package/dist/components/blocks/landing-hero/LandingHero.css +85 -0
  193. package/dist/components/blocks/landing-hero/LandingHero.d.ts +41 -0
  194. package/dist/components/blocks/landing-hero/LandingHero.js +54 -0
  195. package/dist/components/blocks/landing-hero/LandingHero.types.d.ts +37 -0
  196. package/dist/components/blocks/landing-hero/LandingHero.types.js +15 -0
  197. package/dist/components/blocks/landing-hero/landing-hero-impl.css +355 -0
  198. package/dist/components/blocks/logo-columns/LogoColumns.css +161 -0
  199. package/dist/components/blocks/logo-columns/LogoColumns.d.ts +23 -0
  200. package/dist/components/blocks/logo-columns/LogoColumns.js +46 -0
  201. package/dist/components/blocks/logo-columns/LogoColumns.types.d.ts +46 -0
  202. package/dist/components/blocks/logo-columns/LogoColumns.types.js +18 -0
  203. package/dist/components/blocks/logo-columns/logo-columns-impl.css +188 -0
  204. package/dist/components/blocks/logo-rows/LogoRows.css +122 -0
  205. package/dist/components/blocks/logo-rows/LogoRows.d.ts +20 -0
  206. package/dist/components/blocks/logo-rows/LogoRows.js +43 -0
  207. package/dist/components/blocks/logo-rows/LogoRows.types.d.ts +36 -0
  208. package/dist/components/blocks/logo-rows/LogoRows.types.js +16 -0
  209. package/dist/components/blocks/logo-rows/logo-rows-impl.css +179 -0
  210. package/dist/components/blocks/page-header/PageHeader.css +79 -0
  211. package/dist/components/blocks/page-header/PageHeader.d.ts +34 -0
  212. package/dist/components/blocks/page-header/PageHeader.js +43 -0
  213. package/dist/components/blocks/page-header/PageHeader.types.d.ts +32 -0
  214. package/dist/components/blocks/page-header/PageHeader.types.js +14 -0
  215. package/dist/components/blocks/page-header/page-header-impl.css +176 -0
  216. package/dist/components/blocks/product-hero/ProductHero.css +86 -0
  217. package/dist/components/blocks/product-hero/ProductHero.d.ts +35 -0
  218. package/dist/components/blocks/product-hero/ProductHero.js +48 -0
  219. package/dist/components/blocks/product-hero/ProductHero.types.d.ts +37 -0
  220. package/dist/components/blocks/product-hero/ProductHero.types.js +15 -0
  221. package/dist/components/blocks/product-hero/product-hero-impl.css +354 -0
  222. package/dist/components/blocks/testimonial-row/TestimonialRow.css +245 -0
  223. package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +20 -0
  224. package/dist/components/blocks/testimonial-row/TestimonialRow.js +128 -0
  225. package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +54 -0
  226. package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +26 -0
  227. package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +195 -0
  228. package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +181 -0
  229. package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +22 -0
  230. package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +36 -0
  231. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +49 -0
  232. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +21 -0
  233. package/dist/components/blocks/testimonial-slider/testimonial-slider-impl.css +202 -0
  234. package/dist/components/blocks/use-reveal.d.ts +46 -0
  235. package/dist/components/blocks/use-reveal.js +120 -0
  236. package/dist/components/blocks/use-rotation.d.ts +62 -0
  237. package/dist/components/blocks/use-rotation.js +176 -0
  238. package/dist/components/core/accordion/Accordion.css +10 -0
  239. package/dist/components/core/accordion/Accordion.d.ts +20 -0
  240. package/dist/components/core/accordion/Accordion.js +69 -0
  241. package/dist/components/core/accordion/Accordion.types.d.ts +20 -0
  242. package/dist/components/core/accordion/Accordion.types.js +7 -0
  243. package/dist/components/core/accordion-item/AccordionItem.css +99 -0
  244. package/dist/components/core/accordion-item/AccordionItem.d.ts +44 -0
  245. package/dist/components/core/accordion-item/AccordionItem.js +63 -0
  246. package/dist/components/core/accordion-item/AccordionItem.types.d.ts +32 -0
  247. package/dist/components/core/accordion-item/AccordionItem.types.js +13 -0
  248. package/dist/components/core/accordion-item/accordion-item-impl.css +107 -0
  249. package/dist/components/core/badge/Badge.css +37 -0
  250. package/dist/components/core/badge/Badge.d.ts +37 -0
  251. package/dist/components/core/badge/Badge.js +40 -0
  252. package/dist/components/core/badge/Badge.types.d.ts +24 -0
  253. package/dist/components/core/badge/Badge.types.js +8 -0
  254. package/dist/components/core/badge/badge-impl.css +32 -0
  255. package/dist/components/core/bottom-sheet/BottomSheet.css +178 -0
  256. package/dist/components/core/bottom-sheet/BottomSheet.d.ts +22 -0
  257. package/dist/components/core/bottom-sheet/BottomSheet.js +359 -0
  258. package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +67 -0
  259. package/dist/components/core/bottom-sheet/BottomSheet.types.js +18 -0
  260. package/dist/components/core/bottom-sheet/bottom-sheet-impl.css +57 -0
  261. package/dist/components/core/breadcrumb/Breadcrumb.css +19 -0
  262. package/dist/components/core/breadcrumb/Breadcrumb.d.ts +16 -0
  263. package/dist/components/core/breadcrumb/Breadcrumb.js +22 -0
  264. package/dist/components/core/breadcrumb/Breadcrumb.types.d.ts +18 -0
  265. package/dist/components/core/breadcrumb/Breadcrumb.types.js +9 -0
  266. package/dist/components/core/breadcrumb-item/BreadcrumbItem.css +34 -0
  267. package/dist/components/core/breadcrumb-item/BreadcrumbItem.d.ts +12 -0
  268. package/dist/components/core/breadcrumb-item/BreadcrumbItem.js +15 -0
  269. package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.d.ts +22 -0
  270. package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.js +9 -0
  271. package/dist/components/core/button/Button.css +188 -0
  272. package/dist/components/core/button/Button.d.ts +27 -0
  273. package/dist/components/core/button/Button.js +57 -0
  274. package/dist/components/core/button/Button.types.d.ts +35 -0
  275. package/dist/components/core/button/Button.types.js +9 -0
  276. package/dist/components/core/button/button-impl.css +71 -0
  277. package/dist/components/core/button-icon/ButtonIcon.css +151 -0
  278. package/dist/components/core/button-icon/ButtonIcon.d.ts +34 -0
  279. package/dist/components/core/button-icon/ButtonIcon.js +117 -0
  280. package/dist/components/core/button-icon/ButtonIcon.types.d.ts +41 -0
  281. package/dist/components/core/button-icon/ButtonIcon.types.js +8 -0
  282. package/dist/components/core/card/Card.css +74 -0
  283. package/dist/components/core/card/Card.d.ts +24 -0
  284. package/dist/components/core/card/Card.js +26 -0
  285. package/dist/components/core/card/Card.types.d.ts +34 -0
  286. package/dist/components/core/card/Card.types.js +7 -0
  287. package/dist/components/core/card-body/CardBody.css +144 -0
  288. package/dist/components/core/card-body/CardBody.d.ts +62 -0
  289. package/dist/components/core/card-body/CardBody.js +97 -0
  290. package/dist/components/core/card-body/CardBody.types.d.ts +64 -0
  291. package/dist/components/core/card-body/CardBody.types.js +16 -0
  292. package/dist/components/core/card-body/card-body-impl.css +87 -0
  293. package/dist/components/core/card-button/CardButton.css +82 -0
  294. package/dist/components/core/card-button/CardButton.d.ts +27 -0
  295. package/dist/components/core/card-button/CardButton.js +37 -0
  296. package/dist/components/core/card-button/CardButton.types.d.ts +25 -0
  297. package/dist/components/core/card-button/CardButton.types.js +7 -0
  298. package/dist/components/core/card-button/card-button-impl.css +39 -0
  299. package/dist/components/core/checkbox/Checkbox.css +156 -0
  300. package/dist/components/core/checkbox/Checkbox.d.ts +21 -0
  301. package/dist/components/core/checkbox/Checkbox.js +97 -0
  302. package/dist/components/core/checkbox/Checkbox.types.d.ts +46 -0
  303. package/dist/components/core/checkbox/Checkbox.types.js +15 -0
  304. package/dist/components/core/checkbox/checkbox-impl.css +90 -0
  305. package/dist/components/core/divider/Divider.css +41 -0
  306. package/dist/components/core/divider/Divider.d.ts +46 -0
  307. package/dist/components/core/divider/Divider.js +51 -0
  308. package/dist/components/core/divider/Divider.types.d.ts +25 -0
  309. package/dist/components/core/divider/Divider.types.js +9 -0
  310. package/dist/components/core/dropdown-menu/DropdownMenu.css +147 -0
  311. package/dist/components/core/dropdown-menu/DropdownMenu.d.ts +24 -0
  312. package/dist/components/core/dropdown-menu/DropdownMenu.js +311 -0
  313. package/dist/components/core/dropdown-menu/DropdownMenu.types.d.ts +62 -0
  314. package/dist/components/core/dropdown-menu/DropdownMenu.types.js +12 -0
  315. package/dist/components/core/dropdown-menu/dropdown-menu-impl.css +70 -0
  316. package/dist/components/core/filter-chip/FilterChip.css +150 -0
  317. package/dist/components/core/filter-chip/FilterChip.d.ts +23 -0
  318. package/dist/components/core/filter-chip/FilterChip.js +37 -0
  319. package/dist/components/core/filter-chip/FilterChip.types.d.ts +53 -0
  320. package/dist/components/core/filter-chip/FilterChip.types.js +12 -0
  321. package/dist/components/core/footer/Footer.css +104 -0
  322. package/dist/components/core/footer/Footer.d.ts +43 -0
  323. package/dist/components/core/footer/Footer.js +53 -0
  324. package/dist/components/core/footer/Footer.types.d.ts +47 -0
  325. package/dist/components/core/footer/Footer.types.js +18 -0
  326. package/dist/components/core/footer/footer-impl.css +218 -0
  327. package/dist/components/core/footer-group/FooterGroup.css +91 -0
  328. package/dist/components/core/footer-group/FooterGroup.d.ts +32 -0
  329. package/dist/components/core/footer-group/FooterGroup.js +64 -0
  330. package/dist/components/core/footer-group/FooterGroup.types.d.ts +25 -0
  331. package/dist/components/core/footer-group/FooterGroup.types.js +12 -0
  332. package/dist/components/core/footer-group/footer-group-impl.css +78 -0
  333. package/dist/components/core/icon/Icon.css +40 -0
  334. package/dist/components/core/icon/Icon.d.ts +23 -0
  335. package/dist/components/core/icon/Icon.js +79 -0
  336. package/dist/components/core/icon/Icon.types.d.ts +24 -0
  337. package/dist/components/core/icon/Icon.types.js +7 -0
  338. package/dist/components/core/link/Link.css +89 -0
  339. package/dist/components/core/link/Link.d.ts +37 -0
  340. package/dist/components/core/link/Link.js +141 -0
  341. package/dist/components/core/link/Link.types.d.ts +41 -0
  342. package/dist/components/core/link/Link.types.js +9 -0
  343. package/dist/components/core/link/link-impl.css +168 -0
  344. package/dist/components/core/menu-item/MenuItem.css +70 -0
  345. package/dist/components/core/menu-item/MenuItem.d.ts +11 -0
  346. package/dist/components/core/menu-item/MenuItem.js +26 -0
  347. package/dist/components/core/menu-item/MenuItem.types.d.ts +28 -0
  348. package/dist/components/core/menu-item/MenuItem.types.js +9 -0
  349. package/dist/components/core/navbar/Navbar.css +134 -0
  350. package/dist/components/core/navbar/Navbar.d.ts +52 -0
  351. package/dist/components/core/navbar/Navbar.js +498 -0
  352. package/dist/components/core/navbar/Navbar.types.d.ts +68 -0
  353. package/dist/components/core/navbar/Navbar.types.js +17 -0
  354. package/dist/components/core/navbar/navbar-impl.css +597 -0
  355. package/dist/components/core/navbar/navbar-material.css +96 -0
  356. package/dist/components/core/navbar-item/NavbarItem.css +75 -0
  357. package/dist/components/core/navbar-item/NavbarItem.d.ts +22 -0
  358. package/dist/components/core/navbar-item/NavbarItem.js +40 -0
  359. package/dist/components/core/navbar-item/NavbarItem.types.d.ts +34 -0
  360. package/dist/components/core/navbar-item/NavbarItem.types.js +10 -0
  361. package/dist/components/core/navbar-menu/NavbarMenu.css +130 -0
  362. package/dist/components/core/navbar-menu/NavbarMenu.d.ts +6 -0
  363. package/dist/components/core/navbar-menu/NavbarMenu.js +187 -0
  364. package/dist/components/core/navbar-menu/NavbarMenu.types.d.ts +45 -0
  365. package/dist/components/core/navbar-menu/NavbarMenu.types.js +12 -0
  366. package/dist/components/core/navbar-menu/navbar-menu-impl.css +186 -0
  367. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.css +26 -0
  368. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.d.ts +17 -0
  369. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.js +22 -0
  370. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.d.ts +14 -0
  371. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.js +7 -0
  372. package/dist/components/core/navbar-panel/NavbarPanel.css +87 -0
  373. package/dist/components/core/navbar-panel/NavbarPanel.d.ts +34 -0
  374. package/dist/components/core/navbar-panel/NavbarPanel.js +46 -0
  375. package/dist/components/core/navbar-panel/NavbarPanel.types.d.ts +29 -0
  376. package/dist/components/core/navbar-panel/NavbarPanel.types.js +12 -0
  377. package/dist/components/core/navbar-panel/navbar-panel-impl.css +104 -0
  378. package/dist/components/core/navbar-panel/use-navbar-panel.d.ts +26 -0
  379. package/dist/components/core/navbar-panel/use-navbar-panel.js +135 -0
  380. package/dist/components/core/navbar-switcher/NavbarSwitcher.css +118 -0
  381. package/dist/components/core/navbar-switcher/NavbarSwitcher.d.ts +21 -0
  382. package/dist/components/core/navbar-switcher/NavbarSwitcher.js +91 -0
  383. package/dist/components/core/navbar-switcher/NavbarSwitcher.types.d.ts +46 -0
  384. package/dist/components/core/navbar-switcher/NavbarSwitcher.types.js +13 -0
  385. package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +179 -0
  386. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.css +39 -0
  387. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.d.ts +16 -0
  388. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.js +19 -0
  389. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.d.ts +18 -0
  390. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.js +7 -0
  391. package/dist/components/core/option/Option.css +133 -0
  392. package/dist/components/core/option/Option.d.ts +25 -0
  393. package/dist/components/core/option/Option.js +31 -0
  394. package/dist/components/core/option/Option.types.d.ts +44 -0
  395. package/dist/components/core/option/Option.types.js +14 -0
  396. package/dist/components/core/pagination/Pagination.css +163 -0
  397. package/dist/components/core/pagination/Pagination.d.ts +30 -0
  398. package/dist/components/core/pagination/Pagination.js +366 -0
  399. package/dist/components/core/pagination/Pagination.types.d.ts +47 -0
  400. package/dist/components/core/pagination/Pagination.types.js +12 -0
  401. package/dist/components/core/pagination/pagination-impl.css +17 -0
  402. package/dist/components/core/pagination-dots/PaginationDots.css +60 -0
  403. package/dist/components/core/pagination-dots/PaginationDots.d.ts +25 -0
  404. package/dist/components/core/pagination-dots/PaginationDots.js +104 -0
  405. package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +38 -0
  406. package/dist/components/core/pagination-dots/PaginationDots.types.js +9 -0
  407. package/dist/components/core/removable-chip/RemovableChip.css +125 -0
  408. package/dist/components/core/removable-chip/RemovableChip.d.ts +25 -0
  409. package/dist/components/core/removable-chip/RemovableChip.js +36 -0
  410. package/dist/components/core/removable-chip/RemovableChip.types.d.ts +38 -0
  411. package/dist/components/core/removable-chip/RemovableChip.types.js +13 -0
  412. package/dist/components/core/search-input/SearchInput.css +205 -0
  413. package/dist/components/core/search-input/SearchInput.d.ts +5 -0
  414. package/dist/components/core/search-input/SearchInput.js +81 -0
  415. package/dist/components/core/search-input/SearchInput.types.d.ts +43 -0
  416. package/dist/components/core/search-input/SearchInput.types.js +13 -0
  417. package/dist/components/core/search-input/search-input-impl.css +20 -0
  418. package/dist/components/core/segmented-control/SegmentedControl.css +57 -0
  419. package/dist/components/core/segmented-control/SegmentedControl.d.ts +37 -0
  420. package/dist/components/core/segmented-control/SegmentedControl.js +269 -0
  421. package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +38 -0
  422. package/dist/components/core/segmented-control/SegmentedControl.types.js +8 -0
  423. package/dist/components/core/segmented-control/segmented-control-impl.css +57 -0
  424. package/dist/components/core/segmented-control-item/SegmentedControlItem.css +151 -0
  425. package/dist/components/core/segmented-control-item/SegmentedControlItem.d.ts +50 -0
  426. package/dist/components/core/segmented-control-item/SegmentedControlItem.js +101 -0
  427. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +37 -0
  428. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.js +10 -0
  429. package/dist/components/core/segmented-control-item/segmented-control-item-impl.css +69 -0
  430. package/dist/components/core/select/Select.css +401 -0
  431. package/dist/components/core/select/Select.d.ts +29 -0
  432. package/dist/components/core/select/Select.js +524 -0
  433. package/dist/components/core/select/Select.types.d.ts +96 -0
  434. package/dist/components/core/select/Select.types.js +26 -0
  435. package/dist/components/core/select/select-impl.css +114 -0
  436. package/dist/components/core/select-chip/SelectChip.css +162 -0
  437. package/dist/components/core/select-chip/SelectChip.d.ts +20 -0
  438. package/dist/components/core/select-chip/SelectChip.js +276 -0
  439. package/dist/components/core/select-chip/SelectChip.types.d.ts +62 -0
  440. package/dist/components/core/select-chip/SelectChip.types.js +14 -0
  441. package/dist/components/core/select-chip/select-chip-impl.css +49 -0
  442. package/dist/components/core/spinner/Spinner.css +76 -0
  443. package/dist/components/core/spinner/Spinner.d.ts +5 -0
  444. package/dist/components/core/spinner/Spinner.js +29 -0
  445. package/dist/components/core/spinner/Spinner.types.d.ts +37 -0
  446. package/dist/components/core/spinner/Spinner.types.js +10 -0
  447. package/dist/components/core/spinner/spinner-impl.css +27 -0
  448. package/dist/components/core/status-dot/StatusDot.css +43 -0
  449. package/dist/components/core/status-dot/StatusDot.d.ts +35 -0
  450. package/dist/components/core/status-dot/StatusDot.js +46 -0
  451. package/dist/components/core/status-dot/StatusDot.types.d.ts +29 -0
  452. package/dist/components/core/status-dot/StatusDot.types.js +7 -0
  453. package/dist/components/core/status-dot/status-dot-impl.css +42 -0
  454. package/dist/components/core/subdomain-navbar/SubdomainNavbar.css +89 -0
  455. package/dist/components/core/subdomain-navbar/SubdomainNavbar.d.ts +21 -0
  456. package/dist/components/core/subdomain-navbar/SubdomainNavbar.js +127 -0
  457. package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.d.ts +43 -0
  458. package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.js +13 -0
  459. package/dist/components/core/subdomain-navbar/subdomain-navbar-impl.css +147 -0
  460. package/dist/components/core/tab/Tab.css +113 -0
  461. package/dist/components/core/tab/Tab.d.ts +36 -0
  462. package/dist/components/core/tab/Tab.js +53 -0
  463. package/dist/components/core/tab/Tab.types.d.ts +42 -0
  464. package/dist/components/core/tab/Tab.types.js +13 -0
  465. package/dist/components/core/tab/tab-impl.css +49 -0
  466. package/dist/components/core/tab-list/TabList.css +40 -0
  467. package/dist/components/core/tab-list/TabList.d.ts +26 -0
  468. package/dist/components/core/tab-list/TabList.js +124 -0
  469. package/dist/components/core/tab-list/TabList.types.d.ts +20 -0
  470. package/dist/components/core/tab-list/TabList.types.js +7 -0
  471. package/dist/components/core/tab-list/tab-list-impl.css +56 -0
  472. package/dist/components/core/table/Table.css +40 -0
  473. package/dist/components/core/table/Table.d.ts +19 -0
  474. package/dist/components/core/table/Table.js +55 -0
  475. package/dist/components/core/table/Table.types.d.ts +59 -0
  476. package/dist/components/core/table/Table.types.js +9 -0
  477. package/dist/components/core/table/table-impl.css +97 -0
  478. package/dist/components/core/table/use-table-sort.d.ts +43 -0
  479. package/dist/components/core/table/use-table-sort.js +51 -0
  480. package/dist/components/core/table-body/TableBody.css +6 -0
  481. package/dist/components/core/table-body/TableBody.d.ts +12 -0
  482. package/dist/components/core/table-body/TableBody.js +26 -0
  483. package/dist/components/core/table-body/TableBody.types.d.ts +36 -0
  484. package/dist/components/core/table-body/TableBody.types.js +7 -0
  485. package/dist/components/core/table-cell/TableCell.css +76 -0
  486. package/dist/components/core/table-cell/TableCell.d.ts +21 -0
  487. package/dist/components/core/table-cell/TableCell.js +31 -0
  488. package/dist/components/core/table-cell/TableCell.types.d.ts +43 -0
  489. package/dist/components/core/table-cell/TableCell.types.js +7 -0
  490. package/dist/components/core/table-head/TableHead.css +6 -0
  491. package/dist/components/core/table-head/TableHead.d.ts +22 -0
  492. package/dist/components/core/table-head/TableHead.js +52 -0
  493. package/dist/components/core/table-head/TableHead.types.d.ts +39 -0
  494. package/dist/components/core/table-head/TableHead.types.js +7 -0
  495. package/dist/components/core/table-head/table-head-impl.css +51 -0
  496. package/dist/components/core/table-header-cell/TableHeaderCell.css +126 -0
  497. package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +21 -0
  498. package/dist/components/core/table-header-cell/TableHeaderCell.js +34 -0
  499. package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +56 -0
  500. package/dist/components/core/table-header-cell/TableHeaderCell.types.js +9 -0
  501. package/dist/components/core/table-header-cell/table-header-cell-impl.css +74 -0
  502. package/dist/components/core/table-row/TableRow.css +18 -0
  503. package/dist/components/core/table-row/TableRow.d.ts +17 -0
  504. package/dist/components/core/table-row/TableRow.js +32 -0
  505. package/dist/components/core/table-row/TableRow.types.d.ts +45 -0
  506. package/dist/components/core/table-row/TableRow.types.js +7 -0
  507. package/dist/components/core/table-row/table-row-impl.css +31 -0
  508. package/dist/components/core/text-area/TextArea.css +325 -0
  509. package/dist/components/core/text-area/TextArea.d.ts +13 -0
  510. package/dist/components/core/text-area/TextArea.js +133 -0
  511. package/dist/components/core/text-area/TextArea.types.d.ts +67 -0
  512. package/dist/components/core/text-area/TextArea.types.js +19 -0
  513. package/dist/components/core/text-area/text-area-impl.css +36 -0
  514. package/dist/components/core/text-input/TextInput.css +400 -0
  515. package/dist/components/core/text-input/TextInput.d.ts +5 -0
  516. package/dist/components/core/text-input/TextInput.js +130 -0
  517. package/dist/components/core/text-input/TextInput.types.d.ts +96 -0
  518. package/dist/components/core/text-input/TextInput.types.js +24 -0
  519. package/dist/components/core/text-input/text-input-impl.css +36 -0
  520. package/dist/components/core/tooltip/Tooltip.css +101 -0
  521. package/dist/components/core/tooltip/Tooltip.d.ts +51 -0
  522. package/dist/components/core/tooltip/Tooltip.js +87 -0
  523. package/dist/components/core/tooltip/Tooltip.types.d.ts +38 -0
  524. package/dist/components/core/tooltip/Tooltip.types.js +9 -0
  525. package/dist/components/core/tooltip/TooltipAnchor.d.ts +52 -0
  526. package/dist/components/core/tooltip/TooltipAnchor.js +69 -0
  527. package/dist/components/core/tooltip/tooltip-anchor.css +145 -0
  528. package/dist/components/core/tooltip/tooltip-impl.css +54 -0
  529. package/dist/components/core/tooltip/use-tooltip.d.ts +111 -0
  530. package/dist/components/core/tooltip/use-tooltip.js +189 -0
  531. package/dist/components/core/typography/Typography.css +96 -0
  532. package/dist/components/core/typography/Typography.d.ts +297 -0
  533. package/dist/components/core/typography/Typography.js +28 -0
  534. package/dist/components/core/typography/Typography.types.d.ts +40 -0
  535. package/dist/components/core/typography/Typography.types.js +7 -0
  536. package/dist/components/css-time.d.ts +20 -0
  537. package/dist/components/css-time.js +30 -0
  538. package/dist/components/given.d.ts +7 -0
  539. package/dist/components/given.js +9 -0
  540. package/dist/components/hover-open.d.ts +34 -0
  541. package/dist/components/hover-open.js +90 -0
  542. package/dist/components/index.d.ts +149 -1
  543. package/dist/components/index.js +145 -2
  544. package/dist/components/layout/aspect-ratio/AspectRatio.css +29 -0
  545. package/dist/components/layout/aspect-ratio/AspectRatio.d.ts +24 -0
  546. package/dist/components/layout/aspect-ratio/AspectRatio.js +26 -0
  547. package/dist/components/layout/aspect-ratio/AspectRatio.types.d.ts +22 -0
  548. package/dist/components/layout/aspect-ratio/AspectRatio.types.js +7 -0
  549. package/dist/components/layout/aspect-ratio/aspect-ratio-impl.css +44 -0
  550. package/dist/components/layout/grid/Grid.css +76 -0
  551. package/dist/components/layout/grid/Grid.d.ts +31 -0
  552. package/dist/components/layout/grid/Grid.js +33 -0
  553. package/dist/components/layout/grid/Grid.types.d.ts +48 -0
  554. package/dist/components/layout/grid/Grid.types.js +7 -0
  555. package/dist/components/layout/grid/grid-impl.css +62 -0
  556. package/dist/components/layout/row/Row.css +85 -0
  557. package/dist/components/layout/row/Row.d.ts +32 -0
  558. package/dist/components/layout/row/Row.js +34 -0
  559. package/dist/components/layout/row/Row.types.d.ts +45 -0
  560. package/dist/components/layout/row/Row.types.js +7 -0
  561. package/dist/components/layout/scroller/Scroller.css +59 -0
  562. package/dist/components/layout/scroller/Scroller.d.ts +34 -0
  563. package/dist/components/layout/scroller/Scroller.js +36 -0
  564. package/dist/components/layout/scroller/Scroller.types.d.ts +38 -0
  565. package/dist/components/layout/scroller/Scroller.types.js +7 -0
  566. package/dist/components/layout/scroller/scroller-impl.css +45 -0
  567. package/dist/components/layout/stack/Stack.css +73 -0
  568. package/dist/components/layout/stack/Stack.d.ts +28 -0
  569. package/dist/components/layout/stack/Stack.js +30 -0
  570. package/dist/components/layout/stack/Stack.types.d.ts +41 -0
  571. package/dist/components/layout/stack/Stack.types.js +7 -0
  572. package/dist/components/logo-data.d.ts +24 -0
  573. package/dist/components/logo-data.js +11 -0
  574. package/dist/components/scroll-data.d.ts +64 -0
  575. package/dist/components/scroll-data.js +17 -0
  576. package/dist/components/testimonial-row-data.d.ts +51 -0
  577. package/dist/components/testimonial-row-data.js +11 -0
  578. package/dist/components/testimonial-slider-data.d.ts +26 -0
  579. package/dist/components/testimonial-slider-data.js +10 -0
  580. package/dist/components/visually-hidden.d.ts +22 -0
  581. package/dist/components/visually-hidden.js +31 -0
  582. package/dist/fonts/LICENSE-inter.txt +93 -0
  583. package/dist/fonts/LICENSE-red-hat-mono.txt +93 -0
  584. package/dist/fonts/fonts.css +111 -0
  585. package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  586. package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  587. package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  588. package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
  589. package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  590. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  591. package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  592. package/dist/fonts/red-hat-mono-latin-ext-wght-normal.woff2 +0 -0
  593. package/dist/fonts/red-hat-mono-latin-wght-normal.woff2 +0 -0
  594. package/dist/marketing.css +581 -162
  595. package/package.json +13 -4
@@ -0,0 +1,63 @@
1
+ <!-- GENERATED from checkbox.contract.json. Do not edit. -->
2
+
3
+ # Checkbox
4
+
5
+ Records a single on-or-off choice that is submitted with the form around it rather than applied the moment it is ticked
6
+
7
+ `import { Checkbox } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A choice the user makes now and confirms later — the form's Save or Continue is what applies it
12
+ - Agreeing to something before proceeding — terms, a risk disclosure, a confirmation the user must actively give
13
+ - One of several independent choices, each of which can be on or off without affecting the others
14
+
15
+ ## Something else, when
16
+
17
+ - Choosing exactly one option from a short set, where picking one unpicks the others → **SegmentedControl**
18
+ - Performing an action rather than recording a choice → **Button**
19
+
20
+ ## Never
21
+
22
+ - A setting that takes effect the moment it is ticked. A checkbox is a value the form around it submits, and one that applied immediately would misreport itself — the reader looks for Save, finds nothing waiting, and cannot tell whether the change took. Marketing has no immediate-apply toggle to send them to
23
+ - Destructive or irreversible changes — a checkbox is a value in a form, and a tick is not a confirmation step
24
+ - A choice the user cannot see the label of. The label is required and always rendered: a bare box states nothing about what ticking it agrees to
25
+
26
+ ## Props
27
+
28
+ - **tone** `enum` · default "standard"
29
+ - `standard` — The default, and almost always right — the ticked box fills with the neutral that outranks everything around it, so the choice is legible before any colour is read and it is the fill every other chosen control in this package takes, which is what lets a form of them read as one set of answers …
30
+ - `accent` — The checkbox is the brand moment of the view — a single consent the design is deliberately drawing the eye to — and the surrounding design already carries brand red
31
+ - **checked** `enum` · default "unchecked"
32
+ - `unchecked` — The default — the choice has not been made, or has been made against
33
+ - `checked` — The user has made this choice, or it arrives pre-made and they may change it
34
+ - `indeterminate` — A box that summarises others, where some but not all of them are ticked — a Select all above a partly selected list
35
+ - never: A pending or loading state. Indeterminate means partly chosen, not not-yet-known, and a user who ticks it expects the group to follow
36
+ - **status** `enum` · default "none"
37
+ - `none` — The default — the choice has not been judged, or it passed and there is nothing to say
38
+ - `error` — The box had to be ticked and was not, or what ticking it asks for is not accepted
39
+ - `warning` — The choice is accepted but has a consequence the user should see before submitting
40
+ - `success` — The choice was checked against something and passed, and confirming that is worth the room
41
+ - never: A box in a set where something above it already asks the question and reports the error. The message answers for the whole set, and a box repeating it states the same failure twice. This prop is for the box that stands alone, which is the case a group cannot cover: a single consent has nothing above it to carry the error. …
42
+ - **label** `string` · required — Always — it states what ticking the box agrees to, and the box shows nothing on its own. A phrase the user can read as a claim they are agreeing with: "Send me trade confirmations", not "Confirmations". …
43
+ - never: The consequence or the rule, which belongs beside the form rather than inside the choice — a label that explains has stopped naming the thing being agreed to, and there is a description for what it was trying to say. …
44
+ - **showLabel** `boolean` · default true — Drawing the words, which is nearly always. A checkbox on its own is a question, and a question with no words is not one
45
+ - never: Deciding whether the box has a label. It always has one and it is always announced — this only says whether the label is drawn. Off is clipped, not removed, so a screen reader still reads it
46
+ - **description** `string` · optional — Ticking the box commits the user to something the label cannot carry without becoming a sentence — what it costs, how often it happens, what it applies to. …
47
+ - never: Guidance about the form as a whole, or the rule behind the choice, which belongs beside the form rather than under one of its controls. A note repeated under every box is describing the set, and putting it on one of them says it is true of that one only
48
+ - **statusMessage** `string` · optional — Whenever the status is an error or a warning — the words are what the user acts on, and the colour alone is not available to everyone
49
+ - never: Restating the label. The message says what happened and what to do, not what the choice was
50
+
51
+ ## The type refuses
52
+
53
+ - status="error" with statusMessage=null — An error with no explanation leaves the user stuck
54
+ - status="warning" with statusMessage=null — A warning with no explanation is a choice the user cannot act on
55
+
56
+ ## Inside it
57
+
58
+ - 2 components are refused inside it; the list and the reasons are in the long document.
59
+ - Renders 9 parts: root, control, box, field, indicator, text, label, description-text, message.
60
+
61
+ ---
62
+
63
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/checkbox.md`.
@@ -0,0 +1,44 @@
1
+ <!-- GENERATED from ctabanner.contract.json. Do not edit. -->
2
+
3
+ # CtaBanner
4
+
5
+ A full-bleed coral band carrying one short promotion and the action it asks for — the strip that breaks a long page with the one thing the page wants done, or closes it. …
6
+
7
+ `import { CtaBanner } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A short, high-contrast promotion with one clear action — open an account, start trading, download the app
12
+ - The band that closes a page, or breaks a long one, on the action the page exists to produce
13
+
14
+ ## Something else, when
15
+
16
+ - Two or three promotions to rotate between → **CtaBannerSlider**
17
+ - The band that opens the page → **LandingHero**
18
+ - A message that needs a picture beside it → **FeatureSplit**
19
+
20
+ ## Never
21
+
22
+ - Two banners in one view — two coral strips are two demands, and the second makes the first one ordinary
23
+ - More than a headline, a line and two buttons
24
+
25
+ ## Props
26
+
27
+ - **title** `string` · required — Always — the message, in a few words. Short enough to take in at a glance; a line break goes where the words pause, not where the box runs out
28
+ - never: A sentence. The description is for the sentence; the title is what a reader takes in on the way past
29
+ - **headingLevel** `enum` · default "h2" — Matching the outline of the page around the banner. Size does not change with it — the headline is drawn at font.h1 at either level, the scale and the level being separate decisions
30
+ - `h2` — The default: a banner is a section of the page, under the page's own h1
31
+ - `h3` — A banner nested inside a section that already carries the h2 it belongs to
32
+ - **description** `string` · optional — A line saying why the action is worth taking — what the reader gets, or how little it costs them
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
+ - **actions** `node` · optional — The one action the message asks for, or two at most. …
35
+ - never: A third action, or a primary Button: coral on the coral ground is a button nobody can see
36
+
37
+ ## Inside it
38
+
39
+ - 7 components are refused inside it; the list and the reasons are in the long document.
40
+ - Renders 7 parts: root, inner, content, text, title, description, actions.
41
+
42
+ ---
43
+
44
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/ctabanner.md`.
@@ -0,0 +1,45 @@
1
+ <!-- GENERATED from ctabannerslider.contract.json. Do not edit. -->
2
+
3
+ # CtaBannerSlider
4
+
5
+ CtaBanner's layout with a slider in it: the same full-bleed coral band, rotating between two or three short promotions. …
6
+
7
+ `import { CtaBannerSlider } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Rotating between two or three genuinely different promotions without a hero's weight — open an account, try a tool, download the app
12
+
13
+ ## Something else, when
14
+
15
+ - One promotion → **CtaBanner**
16
+ - The band that opens the page → **LandingHero**
17
+ - A message with more than a headline, a line and a button or two → **FeatureSplit**
18
+
19
+ ## Never
20
+
21
+ - A single message — that is CtaBanner
22
+ - Messages that say the same thing twice, rotated to look like more
23
+ - A slider beside a CtaBanner in the same view — two coral strips are two demands
24
+
25
+ ## Props
26
+
27
+ - **slides** `data` · required — Always. The messages, in the order they rotate — two or three. …
28
+ - never: One message — that is CtaBanner — or a set padded out to rotate. Every slide is a few seconds of a reader's attention, and one that says what another said is a few seconds taken for nothing
29
+ - **headingLevel** `enum` · default "h2" — Matching the outline of the page around the banner, for every slide's headline at once. Size does not change with it — every headline is drawn at font.h1, the scale and the level being separate decisions
30
+ - `h2` — The default: a banner is a section of the page, under the page's own h1
31
+ - `h3` — A banner nested inside a section that already carries the h2 it belongs to
32
+ - **autoplay** `boolean` · default false — Whether it advances on its own, holding each slide for motion.duration.dwell. Off by default, so a slider nobody configured stays still. …
33
+ - 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
34
+ - **label** `string` · default "Promotions" — The name the banner is announced by — a region a screen reader can jump to and skip. Name what it holds, not that it is a banner: 'Promotions', 'Offers'. Translate it with the page
35
+ - **controlsLabel** `string` · default "Slides" — The name the dots are announced by, as a group inside the banner. Its own name rather than the banner's, so a screen reader moving into the dots hears what they are rather than 'Promotions' a second time. …
36
+ - **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
37
+
38
+ ## Inside it
39
+
40
+ - 7 components are refused inside it; the list and the reasons are in the long document.
41
+ - Renders 9 parts: root, inner, track, slide, text, title, description, actions, controls.
42
+
43
+ ---
44
+
45
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/ctabannerslider.md`.
@@ -0,0 +1,52 @@
1
+ <!-- GENERATED from divider.contract.json. Do not edit. -->
2
+
3
+ # Divider
4
+
5
+ A rule between things, and the quietest way to say that what is on one side of it belongs to a different group from what is on the other. …
6
+
7
+ `import { Divider } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Two groups inside one container that nothing else is separating — a footer's link columns, the tiers inside a pricing card, a card's summary above its detail. …
12
+ - A row of items holding one that belongs to a different set from its neighbours — the vertical case. …
13
+ - A word between two rules, where that word is the entire content of the divide: OR between two ways of signing up, and little else. …
14
+
15
+ ## Something else, when
16
+
17
+ - The groups have names → **Typography**
18
+ - The space between the groups already separates them → **nothing in this system does this**
19
+ - The line wanted is the edge of a surface → **Card**
20
+ - The line wanted is the rail under a tab strip → **TabList**
21
+
22
+ ## Never
23
+
24
+ - Room. It draws a line and owns no space around it, so the air either side is the layout's — only the thing holding the groups knows how much air they deserve. A rule that carried margins of its own would be a rule nobody could put anywhere, because every place it went would need them different
25
+ - A line under every heading. A page ruled off at each of its headings reads as a form to be filled rather than as prose to be read, and the rules stop meaning anything once they are everywhere — which is the state a divider cannot recover from, since it has only one thing to say. …
26
+ - Two rules with nothing between them, or a rule at the start or end of a set. A separator separates, so one with a group on only one side of it is a line drawn around nothing — and at the edge of a container it is the container's own border, moved inward by a pixel and drawn in the wrong ink
27
+ - Structure a reader navigates by. A screen reader announces a separator where it helps and skips it where it does not; what makes a group findable is a heading or a list, and a rule is neither. If a group has to be reachable, give it something with a name
28
+ - Carrying a status, a warning, or any other meaning through colour. There is one ink here and it is the quietest one this package has, deliberately: a red rule is a message nobody can read, and the message belongs in words on the surface the rule divides
29
+
30
+ ## Props
31
+
32
+ - **orientation** `enum` · default "horizontal" — The axis the groups are arranged on. A rule across a stack is horizontal; a rule down a row is vertical
33
+ - `horizontal` — The default, and nearly every divider: a rule across a stack, separating what is above it from what is below. …
34
+ - `vertical` — A rule down a row, separating items beside one another. …
35
+ - never: Turning a rule to fit a layout that has not decided what it is. The orientation follows the axis the groups are arranged on — a vertical rule between two stacked groups says they sit side by side, which is a claim about the layout that the layout will contradict. …
36
+ - **label** `string` · optional — The divide has a word, and the word is short: OR between two ways of signing up, and very little else. …
37
+ - never: A sentence, or a heading. The word sits between two rules in the width of a container, so anything longer takes the rules with it: at a phrase there is little line left on either side, and at a sentence the divider has become a caption drawn in the wrong ink. …
38
+ - **decorative** `boolean` · default false — The grouping this rule draws is already announced some other way — the rows either side are list items, the sections either side have headings of their own. …
39
+ - never: A rule that is the only thing saying the groups are different. That is the ordinary case, which is why it is the default: where the line carries the grouping for the reader who can see it, the separator role is what carries the same grouping for the reader who cannot, and hiding it takes the structure away from exactly one audience
40
+
41
+ ## The type refuses
42
+
43
+ - decorative=true with label="*" — A labelled divider is not a separator — the word is content, and content is why the role is given up. …
44
+
45
+ ## Inside it
46
+
47
+ - 7 components are refused inside it; the list and the reasons are in the long document.
48
+ - Renders 3 parts: root, line, label.
49
+
50
+ ---
51
+
52
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/divider.md`.
@@ -0,0 +1,67 @@
1
+ <!-- GENERATED from dropdownmenu.contract.json. Do not edit. -->
2
+
3
+ # DropdownMenu
4
+
5
+ A button that opens a short set of destinations. Pressing one goes somewhere and the menu shuts — it holds no value and reports no answer, so there is nothing about it to find on reopening. …
6
+
7
+ `import { DropdownMenu } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A set of destinations too long for the navigation bar and too short to be a page of its own — languages, regions, the parts of a long index
12
+ - The set is short enough to read at a glance, where a visitor is choosing rather than searching
13
+
14
+ ## Something else, when
15
+
16
+ - The set reports a choice the visitor should find marked when they return → **nothing in this system does this**
17
+ - The destinations belong in the page's navigation → **nothing in this system does this**
18
+ - It is one destination rather than one of a set → **nothing in this system does this**
19
+ - The set is long enough that a visitor would rather type than read → **nothing in this system does this**
20
+
21
+ ## Never
22
+
23
+ - Anything that destroys. Marketing has no destructive tone by decision — a page navigates a visitor toward a conversion and never deletes on their behalf
24
+ - The page's main action. A menu is a set of supporting destinations, and the one step a page was built to produce is a Button in the open where it can be seen without a press
25
+ - Carrying the words a visitor needs before choosing. A row is a short label; what a choice means belongs on the page, where it can be read without opening anything
26
+
27
+ ## Props
28
+
29
+ - **variant** `enum` · default "outlined"
30
+ - `outlined` — The control stands on its own — a switcher in a toolbar, a filter above a table, anywhere a reader has to find it before they can use it. The edge is what says there is something here to press
31
+ - `plain` — The control sits among others that have already said what they are — a locale beside a row of sections in a navigation bar, where every neighbour is words and a mark and an edge around one of them would make it the loudest thing in the set. …
32
+ - **size** `enum` · default "md" — Match it to the controls it stands beside. Two steps and no third: this package's control ramp runs sm then md, and the step above them is being retired rather than offered here
33
+ - `sm` — Beside body copy rather than above it — a language picker in a navigation bar or a footer, where the trigger is one item in a row of links and should not outweigh them
34
+ - `md` — The default, and nearly every other page. The same height as a default Button, so the two line up when they sit in the same band
35
+ - never: Making the menu itself bigger. This sizes the trigger and the rows in it; how wide the panel runs is its longest destination's business, and how tall it gets before scrolling is size.menu.max at either step
36
+ - **alignment** `enum` · default "start"
37
+ - `start` — The menu's leading edge lines up with the trigger's. The default, because a visitor reads from that edge and the destinations begin where the button's own words began
38
+ - `end` — Its trailing edge lines up instead, which is what a trigger near the end of a row needs — a footer's language picker aligned to the start would run off the screen
39
+ - **tone** `enum` · default "default"
40
+ - `default` — The control is on a light ground, which is every surface this package paints by default
41
+ - `inverse` — The control is on a ground that runs against the mode — a navigation bar standing on a dark hero. …
42
+ - **label** `string` · required — Always — the words on the trigger, and the whole of what a visitor has to go on before they press it. "Language", "Region", "More pages". …
43
+ - never: A sentence. This sits in a row of other things and does not wrap — words long enough to need the room are words that belong on the page
44
+ - **icon** `node` · optional — A mark before the trigger's words, where the set is read by shape as much as by reading — a globe beside "Language", a flag beside the region a visitor is already in
45
+ - never: The chevron, which this component draws itself and is not a slot. And saying what the menu holds when the words already do: a mark beside "Language" is recognised faster, a mark beside "Choose where you are reading from" is decoration in front of a sentence
46
+ - **chevron** `boolean` · default true — A chevron in the trigger, pointing down while the menu is shut and up while it is open. …
47
+ - never: A trigger standing on its own. Without an edge or a chevron there is nothing left saying the control opens anything, and a reader finds out by pressing it. Turn it off only where the neighbours say it — a locale in a row of sections that each carry one, where a third chevron is the repetition rather than the signal
48
+ - **openOnHover** `boolean` · default false — The menu is one of several things on a bar that open, and the others open on hover — a switcher beside a row of navigation sections, where a reader who has learned that the sections open under the pointer meets one control that does not and reads it as broken. …
49
+ - never: A menu whose rows do something on the spot rather than go somewhere. Hover is an accident as often as it is an intention, and a set opened by accident is one a reader can act on by accident
50
+ - **trigger** `node` · optional — A control this component should open rather than draw — one whose mark is the whole of it, with no words to read. …
51
+ - never: Anything that is not a button. A menu opened by a div is a menu a keyboard cannot reach, and one opened by this package's Button with an href is a link that does not navigate — Button was an anchor always when this component drew its own trigger, which is why it did. …
52
+ - **open** `boolean` · optional — The page holds whether the menu is open, and this component stops holding it. For the case where something outside has to shut it — a navigation bar that closes its menu when another one opens. …
53
+ - never: Opening it on arrival. A menu that opens itself is a panel the visitor did not ask for, over content they came to read — and the browser scrolls whatever takes focus into view, so it moves the page as well
54
+ - **defaultOpen** `boolean` · optional — A specimen — a documentation page, the preview's own stage — where the menu has to be on screen to be looked at. This component still holds the state afterwards
55
+ - never: A real page. It is the same objection as open's, without even a prop the page could use to close it again
56
+ - **onOpenChange** `callback` · optional — Something outside has to know — a navigation bar shutting its other menus, a page that dims behind an open one. Required in practice alongside open, which is the only way a driven menu ever closes
57
+ - never: Running what the row does. That is the row's own onSelect, and a menu cannot tell you which one was pressed — it only knows that it shut
58
+
59
+ ## Inside it
60
+
61
+ - Takes only MenuItem.
62
+ - 6 components are refused inside it; the list and the reasons are in the long document.
63
+ - Renders 6 parts: root, trigger, icon, label, chevron, surface.
64
+
65
+ ---
66
+
67
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/dropdownmenu.md`.
@@ -0,0 +1,43 @@
1
+ <!-- GENERATED from faqaccordion.contract.json. Do not edit. -->
2
+
3
+ # FaqAccordion
4
+
5
+ A section of questions and answers: a heading over an Accordion, one question open at a time. …
6
+
7
+ `import { FaqAccordion } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - The questions a reader asks before acting — fees, limits, how long a withdrawal takes — near the end of a landing page or on a help page
12
+ - Objections a page has to answer without making every reader read every answer
13
+
14
+ ## Something else, when
15
+
16
+ - The answers are short enough to read all at once → **FeatureBullets**
17
+ - Each item is a feature, not a question → **FeatureCards**
18
+
19
+ ## Never
20
+
21
+ - Content a reader must see — terms, risk warnings, anything the page is obliged to show. A folded answer is one most readers never open
22
+ - Navigation. A row that opens to a list of links is a menu wearing a question
23
+
24
+ ## Props
25
+
26
+ - **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. …
27
+ - `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
28
+ - `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's slate FAQ. …
29
+ - `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. …
30
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left
31
+ - **title** `string` · required — Always. What the questions are about, in the fewest words — "Frequently asked questions", "Withdrawals"
32
+ - never: A question. The rows are the questions; the heading is what they share
33
+
34
+ ## Inside it
35
+
36
+ - Takes only AccordionItem.
37
+ - At least 2, no ceiling — fewer is not this component and more is a different one.
38
+ - 7 components are refused inside it; the list and the reasons are in the long document.
39
+ - Renders 4 parts: root, inner, title, list.
40
+
41
+ ---
42
+
43
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/faqaccordion.md`.
@@ -0,0 +1,52 @@
1
+ <!-- GENERATED from featurebullets.contract.json. Do not edit. -->
2
+
3
+ # FeatureBullets
4
+
5
+ A section pairing a claim with a ruled list of what something includes, beside one picture. …
6
+
7
+ `import { FeatureBullets } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A page has to list what a product or a plan includes, and the list is the argument
12
+ - Several benefits are each one line long and are read by scanning rather than reading
13
+ - A claim needs something beside it, and a picture is the only thing there is to put there
14
+
15
+ ## Something else, when
16
+
17
+ - The items are two or three words and belong on one line → **Badge**
18
+ - Each item needs a heading and a paragraph of its own → **Card**
19
+ - The section opens the page → **ProductHero**
20
+
21
+ ## Never
22
+
23
+ - A comparison. Every line here is included and marked so; a list where some items are absent needs a mark for absence, which this has no way to say
24
+ - Running prose broken into lines. A check against a sentence claims the sentence is a feature
25
+ - The page's opening or closing band. This is a section in the middle of a page and carries no navigation of its own
26
+
27
+ ## Props
28
+
29
+ - **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. …
30
+ - `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
31
+ - `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. …
32
+ - `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
33
+ - 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. …
34
+ - **mediaPosition** `enum` · default "end" — Which side the picture takes at full width. Alternating it down a page is what stops three of these in a row reading as one long column, and it is the page's decision rather than this section's — which is why it is a prop and not a rule. …
35
+ - `end` — The default. The list is read first, which is the order the section argues in
36
+ - `start` — The second of two on a page, so the two do not read as one column with a picture stuck to one side
37
+ - never: Moving the picture on a phone. There is one column there and the list leads it
38
+ - **title** `string` · required — Always. What the list is a list of, in the fewest words that say it
39
+ - never: A sentence. The list underneath is the argument; this only has to name it
40
+ - **bullets** `data` · required — Always. One line per thing included, each short enough to take in at a glance. Strings rather than nodes, because every line is marked the same way and a line free to bring its own mark is a list that stops being one
41
+ - never: A sentence per line, or a line that is not included in what the title names. The mark against each one is a claim the page is making
42
+ - **media** `node` · required — Always. The picture that sits beside the list — a screenshot, a photograph, an illustration. …
43
+ - 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
44
+
45
+ ## Inside it
46
+
47
+ - 8 components are refused inside it; the list and the reasons are in the long document.
48
+ - Renders 10 parts: root, inner, split, content, title, list, item, mark, text, media.
49
+
50
+ ---
51
+
52
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/featurebullets.md`.
@@ -0,0 +1,49 @@
1
+ <!-- GENERATED from featurecards.contract.json. Do not edit. -->
2
+
3
+ # FeatureCards
4
+
5
+ A section that opens with a heading and sets a grid of cards under it — the shape a marketing page uses for “why choose us” and “what you get”. …
6
+
7
+ `import { FeatureCards } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Three or four things a product does, each a heading and a sentence, read side by side and compared at a glance
12
+ - A set of destinations — markets, platforms, tools — each a card a reader presses to go there
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
+
15
+ ## Something else, when
16
+
17
+ - Each item is one line, and the list is the argument → **FeatureBullets**
18
+ - One claim beside a picture, with no card around it → **FeatureSplit**
19
+ - The items are read in order, one leading to the next → **FeatureScroll**
20
+
21
+ ## Never
22
+
23
+ - More than eight cards. Past two rows a grid stops being compared and starts being scanned, and that is a page of its own
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. 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 — "Why trade with Deriv", "Markets you can trade"
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
+ - **link** `node` · optional — A way on to the page the whole set belongs to — "See all markets". A standalone Link, under the line
38
+ - never: A button. The cards are the actions here, and a Button over them would be a second, louder one
39
+
40
+ ## Inside it
41
+
42
+ - Takes only Card, CardButton.
43
+ - At least 1, at most 8 — fewer is not this component and more is a different one.
44
+ - 6 components are refused inside it; the list and the reasons are in the long document.
45
+ - Renders 8 parts: root, inner, header, title, description, link, grid, item.
46
+
47
+ ---
48
+
49
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/featurecards.md`.
@@ -0,0 +1,52 @@
1
+ <!-- GENERATED from featurescroll.contract.json. Do not edit. -->
2
+
3
+ # FeatureScroll
4
+
5
+ A section that gives a set of things one screen each, with the picture pinned beside the words while a reader is on them. …
6
+
7
+ `import { FeatureScroll } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A page has three or more things of the same kind to explain, each with a picture worth a screen — the markets a broker offers, the platforms it runs, the steps of an account opening …
12
+ - The set is meant to be walked through rather than compared, and a reader is expected to scroll it
13
+ - The set comes from somewhere — a CMS, a registry, a filtered list — rather than being written out by hand
14
+
15
+ ## Something else, when
16
+
17
+ - There are three or four items a reader is meant to compare → **FeatureCards**
18
+ - The set is lines rather than things — what an account includes → **FeatureBullets**
19
+ - There is one point to make → **FeatureSplit**
20
+ - The section opens the page → **LandingHero**
21
+
22
+ ## Never
23
+
24
+ - Two items. A set given a screen each has to be worth the travel, and a pair is worth one screen with both on it
25
+ - A list of links. The stops are things with pictures and sentences; a set of destinations belongs in a navigation panel or a footer's columns
26
+ - Anything a reader has to act on. This is a walk through a set, and a form or a price in the middle of it is a decision asked at the point a reader is least ready to make one
27
+ - A set whose stops each need their own arrangement. Every stop here is the same shape by construction, which is what makes the set a set — a page wanting one stop to differ wants several FeatureSplits instead
28
+
29
+ ## Props
30
+
31
+ - **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. …
32
+ - `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
33
+ - `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. …
34
+ - `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
35
+ - 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. …
36
+ - **mediaPosition** `enum` · default "end" — Which side the pictures pin to, for every stop at once. …
37
+ - `end` — The default. The words are read first, which is the order a reader’s eye takes a two-up row in
38
+ - `start` — The pictures lead, for a section following one that put its own the other way — two scrolls facing the same way read as one very long column
39
+ - never: Moving the pictures on a phone. There is one column there, and the picture sits under each name whichever side this names
40
+ - **title** `string` · required — Always. What the set is a set of, in the fewest words that say it — 'All your markets in one place'. It is the only thing a reader sees before committing to several screens of scrolling, so it has to say what is coming
41
+ - never: A claim about the first stop. The heading is over the whole set; an argument belongs in the stop it argues for
42
+ - **steps** `data` · required — Always. The stops, in the order a reader meets them. Three at least — the section is built on each one having a screen, and a pair is worth one screen with both on it. …
43
+ - never: A set assembled to fill the section. Each stop costs a reader a screen of scrolling, so a stop that is there for symmetry is a screen nobody wanted
44
+
45
+ ## Inside it
46
+
47
+ - 10 components are refused inside it; the list and the reasons are in the long document.
48
+ - Renders 11 parts: root, inner, heading, steps, step, content, title, description, link, media, picture.
49
+
50
+ ---
51
+
52
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/featurescroll.md`.
@@ -0,0 +1,54 @@
1
+ <!-- GENERATED from featuresplit.contract.json. Do not edit. -->
2
+
3
+ # FeatureSplit
4
+
5
+ A section putting one claim, a line explaining it and a way onward beside a single picture. …
6
+
7
+ `import { FeatureSplit } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A page needs one more point about something it has already introduced, with a picture to carry it
12
+ - The point is a sentence rather than a list, and does not earn a set of cards
13
+ - A section needs a way onward that is not a call to action — a link to the page that says more
14
+
15
+ ## Something else, when
16
+
17
+ - The point is several things the reader gets, each one line long → **FeatureBullets**
18
+ - There are three or four points and each needs its own picture → **FeatureCards**
19
+ - The section opens the page → **ProductHero**
20
+
21
+ ## Never
22
+
23
+ - A list. Two sentences separated by a full stop is not a list, and a reader scanning for several things will miss the second — that is what FeatureBullets is for
24
+ - The page's opening or closing band. This is a section in the middle of a page and carries no navigation of its own
25
+ - A call to action. The way onward here is a link to somewhere that says more, not the thing the page wants a reader to do
26
+
27
+ ## Props
28
+
29
+ - **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. …
30
+ - `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
31
+ - `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. …
32
+ - `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
33
+ - 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. …
34
+ - **mediaPosition** `enum` · default "end" — Which side the picture takes at full width. Alternating it down a page is what stops three of these in a row reading as one long column, and it is the page's decision rather than this section's — which is why it is a prop and not a rule. …
35
+ - `end` — The default. The claim is read first, which is the order the section argues in
36
+ - `start` — The second of two on a page, so the two do not read as one column with a picture stuck to one side
37
+ - never: Moving the picture on a phone. There is one column there and the words lead it
38
+ - **title** `string` · required — Always. The one claim the section makes, in the fewest words that say it
39
+ - never: A sentence. The description underneath carries the argument; this only has to name it
40
+ - **description** `string` · optional — The lines under the title that say what the claim above means, for a reader not convinced by the claim alone. …
41
+ - never: A paragraph. Past about two hundred characters the text column runs longer than the square beside it and the two halves stop lining up, which is the one thing a split has to get right. The reference design caps it at exactly that
42
+ - **link** `node` · optional — The section has somewhere to send a reader who wants more than it says — the page this one is a summary of. …
43
+ - never: The page's main call to action. This is a way onward from a supporting point, and a primary button here competes with the one the page actually wants pressed
44
+ - **media** `node` · required — Always. The picture that sits beside the claim — a screenshot, a photograph, an illustration. The section is a split and the picture is one half of it: without one the claim runs to a measure it was never sized for
45
+ - 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
46
+
47
+ ## Inside it
48
+
49
+ - 9 components are refused inside it; the list and the reasons are in the long document.
50
+ - Renders 8 parts: root, inner, split, content, title, description, link, media.
51
+
52
+ ---
53
+
54
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/featuresplit.md`.
@@ -0,0 +1,68 @@
1
+ <!-- GENERATED from filterchip.contract.json. Do not edit. -->
2
+
3
+ # FilterChip
4
+
5
+ A token the reader turns on and off in place, standing for one narrowing of the set shown beside it. …
6
+
7
+ `import { FilterChip } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - An index is long enough to be worth cutting down and its categories are few enough to show in full — a blog filtered by topic, a help centre filtered by product, a market list filtered by asset class …
12
+ - The choice is small enough that a form control would be more machinery than it deserves — turning one topic on is not a question worth a checkbox and a label
13
+ - What is chosen has to stay visible while the reader reads what it did, so the narrowing and the list it produced can be read together
14
+
15
+ ## Something else, when
16
+
17
+ - The token stands for a narrowing already applied, which the reader drops rather than turns off → **RemovableChip**
18
+ - The thing named cannot be acted on and is there to be read — a tag on an article, a status on a card → **Badge**
19
+ - The chips are really the navigation of the page, and pressing one changes what the page is → **Tab**
20
+ - Pressing it goes somewhere — a category page with its own address → **Link**
21
+
22
+ ## Never
23
+
24
+ - An action. It is pressed to say a thing applies, and nothing else — one that submits or navigates is a button wearing a token's shape, and a reader cannot tell which they have until they press it
25
+ - A set so long it wraps into several rows. Chips are read as a group at a glance, and past a handful the reading costs more than a list would
26
+ - Carrying the chosen state in hue alone. Two colours of the same lightness are no difference to a reader who cannot separate them, which is why the chosen ground travels the whole way from the page's ground to the darkest one this package has rather than to a tint of the same weight
27
+
28
+ ## Props
29
+
30
+ - **selected** `boolean` · default false — The narrowing currently applies. It is the consumer's to hold, because the list and the chip are one fact — a chip keeping its own copy is how the two come to disagree
31
+ - never: Marking something as important, or as the default. Chosen means the reader chose it, and one that arrives already on implies an act nobody took
32
+ - **size** `enum` · default "sm" — How dense the row is, matched to whatever it sits beside. …
33
+ - `sm` — The default. A step under the button or field it stands beside rather than level with it, which is what keeps a row of narrowings from reading as a row of calls to action
34
+ - `md` — A touch-first layout, or a filter row in a hero band where the chips carry more weight. …
35
+ - never: Marking one chip in a row as more important. They are a set of equals and a row of mismatched heights reads as a mistake before it reads as emphasis
36
+ - **content** `enum` · default "none" — What the chip carries after its words, where it carries anything. It names the kind rather than being inferred from which node arrived, so exactly one thing can be in the slot and a leftover prop is inert rather than fighting for the space
37
+ - `none` — Nothing after the words. Most chips, and the one to reach for unless something earns the space in a row read at a glance
38
+ - `icon` — A glyph qualifying the narrowing rather than naming it — a mark that a topic is new, or that it came from somewhere else. …
39
+ - `badge` — How many entries the narrowing would leave, which is the fact a reader wants before they press. …
40
+ - `custom` — The row needs a mark neither of the named kinds is. …
41
+ - never: Repeating the label, or naming the narrowing twice. The slot qualifies what the words already said; a chip whose trailing mark restates them has spent the space for nothing
42
+ - **label** `string` · required — Always, and required on that account — it is the whole of what the chip says. Short enough to read at a glance: a token carrying a sentence has stopped being one
43
+ - never: Describing what pressing it does. The chip names the narrowing, and what happens is that the narrowing applies
44
+ - **leadingIcon** `node` · optional — A glyph makes the kind of narrowing faster to recognise than its name alone. It sits before the words and never replaces them. …
45
+ - never: Decoration, or a second copy of what the word says. A row where every chip carries a mark that adds nothing reads more slowly than plain words would
46
+ - **trailingIcon** `node` · optional — The glyph shown when content is icon. Sized and coloured with the chip rather than on its own terms, so a row of them reads as one set
47
+ - never: Filling the slot on its own. `content` decides what is shown, so this is inert until it names icon — which is what stops two marks arriving at once when a chip changes its mind about what it carries
48
+ - **badge** `node` · optional — The count shown when content is badge. A Badge rather than bare type, so the number reads as a fact of its own rather than as part of the label — and so it carries its own colour, which the chip does not decide
49
+ - never: Filling the slot on its own. `content` decides what is shown, so this is inert until it names badge
50
+ - **custom** `node` · optional — Whatever is shown when content is custom. Nothing here is described by the documentation or the library, which is the cost of the escape hatch
51
+ - never: Filling the slot on its own. `content` decides what is shown, so this is inert until it names custom
52
+ - **onSelect** `callback` · optional — What hears the press. It reports what the chip is about to become rather than that it was pressed, so a consumer writes the value back without working out which way it went
53
+ - never: Reading the event. The signature is the new state because that is the decision the reader made; a handler reaching for the event recomputes what it was handed
54
+
55
+ ## The type refuses
56
+
57
+ - content="icon" with trailingIcon=null — content is icon and there is nothing to show, which renders a gap where something was promised
58
+ - content="badge" with badge=null — content is badge and there is nothing to show, which renders a gap where something was promised
59
+ - content="custom" with custom=null — content is custom and there is nothing to show, which renders a gap where something was promised
60
+
61
+ ## Inside it
62
+
63
+ - 5 components are refused inside it; the list and the reasons are in the long document.
64
+ - Renders 4 parts: root, icon, label, trailing.
65
+
66
+ ---
67
+
68
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/filterchip.md`.