@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,54 @@
1
+ <!-- GENERATED from subdomainnavbar.contract.json. Do not edit. -->
2
+
3
+ # SubdomainNavbar
4
+
5
+ The bar across the top of a subdomain — a documentation site, a playground, a product surface that lives beside the marketing site rather than inside it. …
6
+
7
+ `import { SubdomainNavbar } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A subdomain needs its top-level navigation — the mark, the places that subdomain has, and whatever sits at the far end
12
+ - The bar should sit still. …
13
+ - The destinations belong at the far end with what a reader reaches for, rather than centred over the page: the mark holds one edge, everything a reader does holds the other, and the middle is left empty on purpose …
14
+
15
+ ## Something else, when
16
+
17
+ - The page is the marketing site itself → **Navbar**
18
+ - The items are versions of one thing rather than places the subdomain has → **TabList**
19
+
20
+ ## Never
21
+
22
+ - A second bar further down the page. There is one landmark of this kind per page, and a reader who meets two has been told twice where they are and once too often which is authoritative
23
+ - A toolbar. Controls that act on what is below them belong in the page, not in a landmark that announces itself as the way around the site
24
+ - The marketing site's own bar. The two are different components because they behave differently, and using this one there loses the thing that bar is for
25
+
26
+ ## Props
27
+
28
+ - **tone** `enum` · default "default"
29
+ - `default` — The subdomain's chrome is light, which is the page's decision rather than this bar's
30
+ - `inverse` — The subdomain's chrome is dark, which is the usual case for a tool and is why nearly every page using this bar will pass it. …
31
+ - **label** `string` · required — Always — it names the navigation landmark, and a page with an unnamed one tells a screen-reader user there is navigation here without saying which navigation. …
32
+ - never: A visible heading. Nothing draws this. A bar needs no title, and a page that wants one has a heading of its own below the bar
33
+ - **menuLabel** `string` · required — Always — the trigger is an icon-only button and this is the only name it has, at the width where it is the only way through the site. …
34
+ - never: A tooltip or visible text. The trigger draws a glyph and nothing else; this is the name a screen reader reads
35
+ - **closeLabel** `string` · required — Always — it names the panel's close button, which is the only visible way out of a surface covering the whole page. 'Close' is enough; the panel it closes is the only thing open
36
+ - never: The trigger's name. They are two controls in two places — the trigger is in the bar underneath the panel, and a reader cannot reach it while the panel is open
37
+ - **brand** `node` · optional — Effectively always on a real site — the mark, and usually an anchor to the home page wrapped around it. It is drawn twice: in the bar, and again in the panel's header, where it is the only thing left saying whose site this is
38
+ - never: A heading for the page. This is the site's mark, not the page's title, and a reader who meets the page's `<h1>` in the bar has been told the name of somewhere they already are
39
+ - **utilities** `node` · optional — The bar's trailing end has something in it — a language switcher, a theme switcher, what the subdomain wants pressed, or some combination. …
40
+ - never: Destinations. Anything that goes to a section of the site belongs in the children, where the navigation landmark announces it as one. The trailing end is for what a reader reaches for, not for the places the bar ran out of room for
41
+ - **menuOpen** `boolean` · optional — The page is holding whether the panel is open, because something else depends on it — a route change that should close it, a surface of its own that must not open at the same time. …
42
+ - never: Half of a controlled bar. A menuOpen passed without an onMenuOpenChange to move it is a panel that cannot be closed from its own close button — a trap around the whole page rather than a bar with a bug
43
+ - **onMenuOpenChange** `callback` · optional — Whenever menuOpen is — together they are how a page holds the panel. It is called with the state being moved to, by the trigger, by the close button and by Escape, so a page listening to it hears every way the panel can change
44
+ - never: Navigation. This says whether the panel is showing; a page that also routed on it would close the panel by leaving, and a reader pressing a destination inside it would fire both
45
+
46
+ ## Inside it
47
+
48
+ - Takes only NavbarItem, NavbarMenu.
49
+ - 11 components are refused inside it; the list and the reasons are in the long document.
50
+ - Renders 7 parts: root, inner, brand, nav, utilities, trigger, panel-host.
51
+
52
+ ---
53
+
54
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/subdomainnavbar.md`.
@@ -0,0 +1,60 @@
1
+ <!-- GENERATED from tab.contract.json. Do not edit. -->
2
+
3
+ # Tab
4
+
5
+ One item in a strip, naming a version of what the page is already about. It cannot stand on its own: selected means selected against something, and a tab with no siblings is a heading that highlights. …
6
+
7
+ `import { Tab } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - One of a small set of comparable versions of the same offer — a billing period, a platform, a market class
12
+ - The strip is the page's own comparison control and the alternatives are already written on the page
13
+
14
+ ## Something else, when
15
+
16
+ - Pressing it should take the reader to another page → **Button**
17
+ - The item is one of a list of separate topics rather than a version of one → **AccordionItem**
18
+
19
+ ## Never
20
+
21
+ - Navigation. Nothing here carries an href and nothing should — a tab that goes somewhere has told the reader it would come back
22
+ - A step in a sequence. A strip says its members are alternatives, and a reader may press the third without the first
23
+ - The only tab. One tab is a heading, and a selected state that nothing is selected against says nothing
24
+ - Hiding something the page needs read. A reader skimming a landing page does not press anything, so whatever sits behind an unselected tab is, for most visitors, not on the page at all
25
+
26
+ ## Props
27
+
28
+ - **selected** `boolean` · optional — Injected by TabList, which is the only thing that can know. A tab cannot see its siblings, so a set of tabs each deciding for itself would show every one of them selected — the same reason Accordion holds which row is open. …
29
+ - never: Marking the tab a page prefers. Selected means the reader is looking at this one; the badge slot is what argues for a tab that is not current
30
+ - **onSelect** `callback` · optional — Learning which tab was pressed, when the page wants to know as well as the strip. TabList calls it after its own handler, so a page's handler is not replaced by being inside a set
31
+ - never: Driving the selection. The strip owns which tab is current; a page that sets it from here is racing the component for the same piece of state
32
+ - **value** `string` · required — Always — it is how the page says which slice to show. …
33
+ - never: The label. A value is an identifier a page matches on and a label is words a reader reads; tying them means an editor cannot fix a typo without breaking the page
34
+ - **label** `string` · required — Always — it is what the reader presses. One or two words, and a noun rather than an instruction: 'Yearly', not 'Switch to yearly'. …
35
+ - never: A sentence. The strip is scanned across, and a tab as wide as a clause is a strip that wraps
36
+ - **icon** `node` · optional — The tabs are things a mark tells apart faster than a word does — a platform, a market class. Pass the glyph; the tab draws it at its own step. …
37
+ - never: Carrying the label. A tab whose meaning is a shape is a tab a screen reader reads as nothing, and the words are what the strip is scanned by
38
+ - **badge** `node` · optional — A count or a claim for the version this tab names, shown when content is badge. One of the set is the one the page wants chosen and the reason fits in a word — 'Save 20%' on the yearly tab. …
39
+ - never: Describing what the tab contains. A badge here argues for pressing this tab; one that merely labels its contents is metadata in a pill, and it competes with the selected mark for the same glance. The current tab, usually. …
40
+ - **content** `enum` · default "none" — What the trailing side of the tab is carrying, when it is carrying anything. …
41
+ - `none` — Nothing after the label. Most tabs, and the one to reach for unless something earns the space
42
+ - `icon` — A glyph after the label, qualifying the view rather than naming it — that this one leads off-site, or that it is the one to look at. What names the view goes in the leading slot instead
43
+ - `badge` — One of the set is the one the page wants chosen and the reason fits in a word — 'Save 20%' on the yearly tab. On that tab and no other: a badge on every tab marks none of them
44
+ - never: Two marks after one label. That is what naming the kind prevents — a trailingIcon left behind on a tab switched to badge renders nothing, instead of quietly appearing beside it
45
+ - **trailingIcon** `node` · optional — The glyph shown after the label when content is icon. Wrapped by the tab on the same ramp as the leading slot, so a strip carrying both draws them alike. …
46
+ - never: Naming the view. What the tab is goes before the words, where a reader looking for it will be — the trailing side qualifies what the label already said
47
+
48
+ ## The type refuses
49
+
50
+ - content="icon" with trailingIcon=null — content is icon and there is no glyph to show, which renders a gap where one was promised
51
+ - content="badge" with badge=null — content is badge and there is no badge to show, which renders a gap where one was promised
52
+
53
+ ## Inside it
54
+
55
+ - 6 components are refused inside it; the list and the reasons are in the long document.
56
+ - Renders 7 parts: root, surface, content, icon, label, sizer, trailing-icon.
57
+
58
+ ---
59
+
60
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/tab.md`.
@@ -0,0 +1,71 @@
1
+ <!-- GENERATED from table.contract.json. Do not edit. -->
2
+
3
+ # Table
4
+
5
+ Structured data in rows and columns, where every row has the same shape. …
6
+
7
+ `import { Table } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Data with a uniform structure, where the same fields exist on every row and a reader compares one row against another down a column
12
+ - Values that line up — amounts, dates, counts. A column is what makes them comparable, and comparison is the only reason to pay for a table's weight
13
+ - Rows that carry more than words: a badge against a name, a link at the end. The cell is a slot, so what a row holds is the page's decision
14
+
15
+ ## Something else, when
16
+
17
+ - The records do not share a shape, or each is a thing in itself rather than a row to compare → **Card**
18
+ - There is one field per record → **nothing in this system does this**
19
+
20
+ ## Never
21
+
22
+ - Layout. A table means the rows and columns carry meaning, and using one to place things puts a grid in the accessibility tree that a screen reader reads out as rows and columns of nothing
23
+ - A single record's fields. Two columns of label-and-value is a description list wearing a table's markup, and it announces every label as a column header it is not
24
+ - Data a reader cannot compare. If nobody will read down a column, the alignment, the rules and the header are all cost with no return
25
+ - Holding the answer to its own sorting or selection. Both outlive the render, so a table that kept them would be a second copy of what the page already has, and the two disagree the first time anything else changes either
26
+ - A row placed straight into the table. `forbiddenChildren` refuses it and the reason is worth more than the refusal: `<table>` cannot contain `<tr>`, so an HTML parser inserts an implied `<tbody>` around it — and React does not do the same on the client. …
27
+
28
+ ## Props
29
+
30
+ - **layout** `enum` · default "auto"
31
+ - `auto` — The default. Columns take their widths from what is in them, which is right when the content is known and varied — a name column wants more room than a status one and can say so itself
32
+ - `fixed` — Columns take an equal share of the width whatever they hold, and the table stops re-flowing as data changes. …
33
+ - never: A table whose columns need unequal room. Fixed gives them a third each, and a column that needs more does not clip — the text wraps instead — so the one carrying a name becomes a column of three-line cells while the one carrying a status keeps two thirds of its width empty. …
34
+ - **pinFirstColumn** `boolean` · default false — The first column is what identifies the row — a market, a product, a plan — and the columns after it are the values being compared. …
35
+ - never: A table that fits. Nothing sticks until there is something to scroll, so the pinning itself costs nothing — but the rule marking the pinned column is drawn either way, and a line down a table that never moves is a boundary the reader cannot act on. …
36
+ - **caption** `string` · optional — Where nothing else names the table. A table is announced as a grid of so many rows and columns, so a reader landing inside an unnamed one has to read a cell to find out what they are in — "Open positions", "October statements". …
37
+ - never: Explaining the table. It is a name rather than a sentence: what the columns mean belongs in the header row, and anything longer than a few words is a paragraph the reader has to get past before reaching the data
38
+ - **dividers** `enum` · default "rows"
39
+ - `rows` — The default. …
40
+ - `grid` — Lines both ways, for a table read as a matrix rather than as a list of records: a rate card, a comparison where the reader traces a column as often as a row. …
41
+ - `none` — No lines at all. Right for two or three rows, where the rules are more structure than data, and for a table whose columns are already separated by their alignment
42
+ - never: Marking a group. A missing line is not a heading — a table that wants sections wants a header row inside the body, or two tables. Nor `grid` as decoration on a long table: every vertical line is another thing between a reader and the value they came for
43
+ - **headerCase** `enum` · default "upper"
44
+ - `upper` — The house setting: column names in capitals, at the role that suits them. A header is read once where the data under it is read many times, and capitals are what stop it competing
45
+ - `title` — Names drawn as they were written, at twelve pixels. Right where the names are long, are proper nouns whose own capitals would be flattened, or are in a script with no case at all
46
+ - **hoverable** `boolean` · default true — On by default. A wash follows the pointer and says which row a press would land on, which a wide table needs and a narrow one is not harmed by: the further a row runs, the easier it is to be reading one and about to click another. …
47
+ - never: Nothing, usually — turning it off is the decision that takes a reason. A table that is only ever read is the case: a row that lights up under the pointer says it can be acted on, and one that lights up and does nothing makes that promise on every row at once
48
+ - **overflow** `enum` · default "wrap"
49
+ - `wrap` — The default. Text too long for its column wraps and the row grows taller, so nothing is hidden — right whenever the value is the point and a reader has to read all of it
50
+ - `truncate` — Rows must stay one line high — a dense table a reader scans down, where a row that grew would break the rhythm they are scanning by. …
51
+ - never: Making a column narrow enough to be worth truncating. Clipping is what a column does when it has run out of room, not a way to give it less — a table of ellipses has hidden its data behind a hover on every cell
52
+ - **size** `enum` · default "md"
53
+ - `sm` — Compact. Dense data a reader scans rather than reads — a ledger, a positions table, anything where fitting more rows on screen is worth more than air around each one
54
+ - `md` — Balanced, and the default: rows a reader moves through at reading pace, with enough room that the eye does not slip between them
55
+ - `lg` — Spacious. Few rows, each carrying something substantial — a plan comparison, a summary of three accounts. Reach for it when the table is the page rather than a part of it
56
+ - never: Making the text bigger or smaller. It changes how tall a row is and nothing else — the type stays one size down the whole table, because a reader comparing values across three tables at three densities is comparing the values rather than the tables. …
57
+
58
+ ## Inside it
59
+
60
+ - Takes only TableHead, TableBody.
61
+ - At least 1, at most 2 — fewer is not this component and more is a different one.
62
+ - 5 components are refused inside it; the list and the reasons are in the long document.
63
+ - Renders 3 parts: root, grid, caption.
64
+
65
+ ## Needs mounting
66
+
67
+ Does not work from the import alone: useTableSort. See `.llm/components/table.md` for what to mount and where.
68
+
69
+ ---
70
+
71
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/table.md`.
@@ -0,0 +1,49 @@
1
+ <!-- GENERATED from tablebody.contract.json. Do not edit. -->
2
+
3
+ # TableBody
4
+
5
+ The rows of data, under the header. …
6
+
7
+ `import { TableBody } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - The data itself — every row that a reader compares against the others
12
+
13
+ ## Something else, when
14
+
15
+ - The row names the columns rather than filling them → **TableHead**
16
+
17
+ ## Never
18
+
19
+ - An empty state. A table with nothing in it is not a table with an empty row — a row spanning every column to say "no results" is a sentence pretending to be data. Render the message instead of the table
20
+ - Rows of differing shapes. Every row here answers the same questions in the same order, which is the promise the whole component exists to make
21
+
22
+ ## Props
23
+
24
+ - **size** `enum` · default "md"
25
+ - `sm` — Compact. Dense data a reader scans rather than reads — a ledger, a positions table, anything where fitting more rows on screen is worth more than air around each one
26
+ - `md` — Balanced, and the default: rows a reader moves through at reading pace, with enough room that the eye does not slip between them
27
+ - `lg` — Spacious. Few rows, each carrying something substantial — a plan comparison, a summary of three accounts. Reach for it when the table is the page rather than a part of it
28
+ - never: Making the text bigger or smaller. It changes how tall a row is and nothing else — the type stays one size down the whole table, because a reader comparing values across three tables at three densities is comparing the values rather than the tables. …
29
+ - **dividers** `enum` · default "rows"
30
+ - `rows` — The default. …
31
+ - `grid` — Lines both ways, for a table read as a matrix rather than as a list of records: a rate card, a comparison where the reader traces a column as often as a row. …
32
+ - `none` — No lines at all. Right for two or three rows, where the rules are more structure than data, and for a table whose columns are already separated by their alignment
33
+ - never: Marking a group. A missing line is not a heading — a table that wants sections wants a header row inside the body, or two tables. Nor `grid` as decoration on a long table: every vertical line is another thing between a reader and the value they came for
34
+ - **hoverable** `boolean` · default true — Handed down by the table. It draws a wash under the pointer so a reader knows which row a press would land on — and only on a device that has a pointer, which the row's own stylesheet gates
35
+ - never: Saying a row is chosen. Hover is where the pointer is and nothing more; `selected` is the answer a reader gave, and a row that looked picked on approach would say they had picked everything they passed over
36
+ - **overflow** `enum` · default "wrap"
37
+ - `wrap` — The default. Text too long for its column wraps and the row grows taller, so nothing is hidden — right whenever the value is the point and a reader has to read all of it
38
+ - `truncate` — Rows must stay one line high — a dense table a reader scans down, where a row that grew would break the rhythm they are scanning by. …
39
+ - never: Making a column narrow enough to be worth truncating. Clipping is what a column does when it has run out of room, not a way to give it less — a table of ellipses has hidden its data behind a hover on every cell
40
+
41
+ ## Inside it
42
+
43
+ - Takes only TableRow.
44
+ - At least 1, no ceiling — fewer is not this component and more is a different one.
45
+ - 4 components are refused inside it; the list and the reasons are in the long document.
46
+
47
+ ---
48
+
49
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/tablebody.md`.
@@ -0,0 +1,55 @@
1
+ <!-- GENERATED from tablecell.contract.json. Do not edit. -->
2
+
3
+ # TableCell
4
+
5
+ One value in a row, under the column that names it. It is a slot: what goes in is the page's to compose, which is what lets a cell hold a badge, a link or a control rather than only text. …
6
+
7
+ `import { TableCell } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A value in a data row — a name, an amount, a date, a state
12
+ - A cell holding a component rather than words: a Badge against a name, a Link at the end of the row
13
+ - Numbers a reader compares down the column, where `numeric` ranges them to the end and sets the digits in tabular figures
14
+
15
+ ## Something else, when
16
+
17
+ - The cell names the column rather than filling it → **TableHeaderCell**
18
+
19
+ ## Never
20
+
21
+ - A cell that spans the row to hold a message. It is announced against a header that does not describe it, and it breaks the shape every other row keeps
22
+ - Nesting a table. A grid inside a cell is a second set of rows and columns announced inside the first, and no reader can hold both
23
+ - Text long enough to be a paragraph. A cell is compared against the ones above it, and a column of paragraphs is a column nobody reads down
24
+
25
+ ## Props
26
+
27
+ - **size** `enum` · default "md"
28
+ - `sm` — Compact. Dense data a reader scans rather than reads — a ledger, a positions table, anything where fitting more rows on screen is worth more than air around each one
29
+ - `md` — Balanced, and the default: rows a reader moves through at reading pace, with enough room that the eye does not slip between them
30
+ - `lg` — Spacious. Few rows, each carrying something substantial — a plan comparison, a summary of three accounts. Reach for it when the table is the page rather than a part of it
31
+ - never: Making the text bigger or smaller. It changes how tall a row is and nothing else — the type stays one size down the whole table, because a reader comparing values across three tables at three densities is comparing the values rather than the tables. …
32
+ - **align** `enum` · default "start"
33
+ - `start` — Words. Names, descriptions, statuses — anything read left to right starts where the reading does, and a column of them shares one edge the eye can run down
34
+ - `center` — Rare, and worth arguing for: a single glyph or a very short state where neither edge means anything. A centred column of words has two ragged edges instead of one
35
+ - `end` — Numbers that line up under each other — amounts, counts, percentages. The decimal point is what a reader compares down a column, and ranging to the end is what puts it in one place
36
+ - never: Making a table look balanced. Alignment says what kind of thing a column holds; using it to even out a layout tells the reader the numbers are words
37
+ - **numeric** `boolean` · default false — The cell holds digits a reader compares against the cells above and below — an amount, a count, a percentage. It sets tabular figures, so every digit takes the same width and the decimal points line up down the column. …
38
+ - never: Any number at all. The system's own rule is not "is this a number" but "does it line up under another one" — a reference code or a year written once beside a name is read rather than compared, and tabular figures cost it the better fit of proportional ones for nothing
39
+ - **dividers** `enum` · default "rows"
40
+ - `rows` — The default. …
41
+ - `grid` — Lines both ways, for a table read as a matrix rather than as a list of records: a rate card, a comparison where the reader traces a column as often as a row. …
42
+ - `none` — No lines at all. Right for two or three rows, where the rules are more structure than data, and for a table whose columns are already separated by their alignment
43
+ - never: Marking a group. A missing line is not a heading — a table that wants sections wants a header row inside the body, or two tables. Nor `grid` as decoration on a long table: every vertical line is another thing between a reader and the value they came for
44
+ - **overflow** `enum` · default "wrap"
45
+ - `wrap` — The default. Text too long for its column wraps and the row grows taller, so nothing is hidden — right whenever the value is the point and a reader has to read all of it
46
+ - `truncate` — Rows must stay one line high — a dense table a reader scans down, where a row that grew would break the rhythm they are scanning by. …
47
+ - never: Making a column narrow enough to be worth truncating. Clipping is what a column does when it has run out of room, not a way to give it less — a table of ellipses has hidden its data behind a hover on every cell
48
+
49
+ ## Inside it
50
+
51
+ - 6 components are refused inside it; the list and the reasons are in the long document.
52
+
53
+ ---
54
+
55
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/tablecell.md`.
@@ -0,0 +1,50 @@
1
+ <!-- GENERATED from tablehead.contract.json. Do not edit. -->
2
+
3
+ # TableHead
4
+
5
+ The column names, above the data, and the filter row where there is one. …
6
+
7
+ `import { TableHead } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Naming the columns, which almost every table should. A column of numbers with nothing at the top is a column a reader has to infer
12
+
13
+ ## Something else, when
14
+
15
+ - The row is data rather than a name for data → **TableBody**
16
+
17
+ ## Never
18
+
19
+ - A second row of data dressed as a subheading. Everything here names columns, and a reader is told so on every cell beneath
20
+ - Skipping. A table with no header is a grid of values a reader has to work out from the data itself, which is guesswork on the first row and wrong on the rest
21
+
22
+ ## Props
23
+
24
+ - **headerCase** `enum` · default "upper"
25
+ - `upper` — The house setting: column names in capitals, at the role that suits them. A header is read once where the data under it is read many times, and capitals are what stop it competing
26
+ - `title` — Names drawn as they were written, at twelve pixels. Right where the names are long, are proper nouns whose own capitals would be flattened, or are in a script with no case at all
27
+ - **dividers** `enum` · default "rows"
28
+ - `rows` — The default. A line between rows and none between columns. The head draws neither: the rule under it is the first data row’s top edge, and there are no columns to separate
29
+ - `grid` — Lines both ways, for a table read as a matrix rather than as a list of records. …
30
+ - `none` — No lines at all, which for the head is what it already draws
31
+ - never: Giving the head a rule of its own under the names. That line already exists as the first data row’s top edge, and a second drawn here would double it at exactly the weight a hairline is chosen to avoid
32
+ - **overflow** `enum` · default "wrap"
33
+ - `wrap` — The default. Text too long for its column wraps and the row grows taller, so nothing is hidden — right whenever the value is the point and a reader has to read all of it
34
+ - `truncate` — Rows must stay one line high — a dense table a reader scans down, where a row that grew would break the rhythm they are scanning by. …
35
+ - never: Making a column narrow enough to be worth truncating. Clipping is what a column does when it has run out of room, not a way to give it less — a table of ellipses has hidden its data behind a hover on every cell
36
+ - **size** `enum` · default "md"
37
+ - `sm` — Compact. Dense data a reader scans rather than reads — a ledger, a positions table, anything where fitting more rows on screen is worth more than air around each one
38
+ - `md` — Balanced, and the default: rows a reader moves through at reading pace, with enough room that the eye does not slip between them
39
+ - `lg` — Spacious. Few rows, each carrying something substantial — a plan comparison, a summary of three accounts. Reach for it when the table is the page rather than a part of it
40
+ - never: Making the text bigger or smaller. It changes how tall a row is and nothing else — the type stays one size down the whole table, because a reader comparing values across three tables at three densities is comparing the values rather than the tables. …
41
+
42
+ ## Inside it
43
+
44
+ - Takes only TableRow.
45
+ - At least 1, at most 2 — fewer is not this component and more is a different one.
46
+ - 4 components are refused inside it; the list and the reasons are in the long document.
47
+
48
+ ---
49
+
50
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/tablehead.md`.
@@ -0,0 +1,65 @@
1
+ <!-- GENERATED from tableheadercell.contract.json. Do not edit. -->
2
+
3
+ # TableHeaderCell
4
+
5
+ The name of a column, announced before every value under it. …
6
+
7
+ `import { TableHeaderCell } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Naming a column, which every column should have
12
+ - A column a reader can order, where `sortable` draws the control and `sortDirection` says which way it is ordered now
13
+
14
+ ## Something else, when
15
+
16
+ - The cell holds a value rather than the name of a column → **TableCell**
17
+
18
+ ## Never
19
+
20
+ - A column that cannot actually be sorted. `sortable` draws a control, and a control that reports to nobody is the clearest promise a table can break — the reader presses it twice before deciding the page is broken
21
+ - Holding which column is sorted. `sortDirection` draws the answer for this one column; which column the table is ordered by outlives the render and belongs to the page, through useTableSort or its own state
22
+ - A row of names inside the data. Everything marked up this way is announced as naming what follows it, so a header in the middle of a table re-names every row beneath
23
+
24
+ ## Props
25
+
26
+ - **size** `enum` · default "md"
27
+ - `sm` — Compact. Dense data a reader scans rather than reads — a ledger, a positions table, anything where fitting more rows on screen is worth more than air around each one
28
+ - `md` — Balanced, and the default: rows a reader moves through at reading pace, with enough room that the eye does not slip between them
29
+ - `lg` — Spacious. Few rows, each carrying something substantial — a plan comparison, a summary of three accounts. Reach for it when the table is the page rather than a part of it
30
+ - never: Making the text bigger or smaller. It changes how tall a row is and nothing else — the type stays one size down the whole table, because a reader comparing values across three tables at three densities is comparing the values rather than the tables. …
31
+ - **align** `enum` · default "start"
32
+ - `start` — Words. Names, descriptions, statuses — anything read left to right starts where the reading does, and a column of them shares one edge the eye can run down
33
+ - `center` — Rare, and worth arguing for: a single glyph or a very short state where neither edge means anything. A centred column of words has two ragged edges instead of one
34
+ - `end` — Numbers that line up under each other — amounts, counts, percentages. The decimal point is what a reader compares down a column, and ranging to the end is what puts it in one place
35
+ - never: Making a table look balanced. Alignment says what kind of thing a column holds; using it to even out a layout tells the reader the numbers are words
36
+ - **sortDirection** `enum` · default "none"
37
+ - `none` — The column can be sorted and the table is not currently ordered by it. The mark is drawn quietly, which is what tells a reader the column is available rather than active
38
+ - `ascending` — The table is ordered by this column, smallest first — A to Z, earliest date, lowest amount
39
+ - `descending` — The table is ordered by this column, largest first. The commoner opening state for money and dates, where the newest or the biggest is what a reader came for
40
+ - never: Two columns at once. A table is ordered by one column, so a second header claiming a direction tells the reader the data is sorted two ways and leaves them unable to trust either
41
+ - **dividers** `enum` · default "rows"
42
+ - `rows` — The default. …
43
+ - `grid` — Lines both ways, for a table read as a matrix rather than as a list of records: a rate card, a comparison where the reader traces a column as often as a row. …
44
+ - `none` — No lines at all. Right for two or three rows, where the rules are more structure than data, and for a table whose columns are already separated by their alignment
45
+ - never: Marking a group. A missing line is not a heading — a table that wants sections wants a header row inside the body, or two tables. Nor `grid` as decoration on a long table: every vertical line is another thing between a reader and the value they came for
46
+ - **headerCase** `enum` · default "upper"
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
+ - `title` — Names drawn as they were written, at font.label.sm — twelve pixels, medium, ordinary tracking. …
49
+ - **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
+ - 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
+ - **onSort** `callback` · optional — Told the header was pressed. …
52
+ - never: Sorting the data. This reports the press; the order of the rows is decided by whatever holds them, and a table that re-ordered its own children would be holding state it cannot own
53
+
54
+ ## The type refuses
55
+
56
+ - sortable=true with onSort=null — A control the reader can press that reports to nobody. …
57
+
58
+ ## Inside it
59
+
60
+ - 8 components are refused inside it; the list and the reasons are in the long document.
61
+ - Renders 3 parts: root, trigger, indicator.
62
+
63
+ ---
64
+
65
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/tableheadercell.md`.
@@ -0,0 +1,56 @@
1
+ <!-- GENERATED from tablerow.contract.json. Do not edit. -->
2
+
3
+ # TableRow
4
+
5
+ One row of a table: the cells that answer the same questions in the same order as every other row. It owns the rule under it and whether it reads as picked, and nothing about what any cell holds. …
6
+
7
+ `import { TableRow } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - A record, with one cell per column
12
+ - A row a reader can pick, where `selected` draws the state the page is holding
13
+
14
+ ## Something else, when
15
+
16
+ - The whole row is a target that navigates → **CardButton**
17
+
18
+ ## Never
19
+
20
+ - A message spanning every column. A row that says "no results" is a sentence wearing a record's markup, and it is announced cell by cell against headers that do not apply to it
21
+ - A visual separator. The rule between rows is `dividers` on the table; an empty row is a record with nothing in it as far as anything reading the table is concerned
22
+ - Holding which rows are selected. `selected` draws the answer; keeping it is the page's, in its own state
23
+
24
+ ## Props
25
+
26
+ - **selected** `boolean` · default false — The page is holding this row in a set the reader has picked — for an export, a bulk action, a comparison. It draws the state and reports nothing: the checkbox in the row is what a reader presses, and what it reports belongs to the page
27
+ - never: The row under the pointer, or the row a reader last looked at. Hover is the browser's and this is a persistent answer — a row that highlighted on approach would say the reader had picked everything they passed over
28
+ - **hoverable** `boolean` · default true — Handed down by the table. It draws a wash under the pointer so a reader knows which row a press would land on — and only on a device that has a pointer, which the row's own stylesheet gates
29
+ - never: Saying a row is chosen. Hover is where the pointer is and nothing more; `selected` is the answer a reader gave, and a row that looked picked on approach would say they had picked everything they passed over
30
+ - **dividers** `enum` · default "rows"
31
+ - `rows` — The default. …
32
+ - `grid` — Lines both ways, for a table read as a matrix rather than as a list of records: a rate card, a comparison where the reader traces a column as often as a row. …
33
+ - `none` — No lines at all. Right for two or three rows, where the rules are more structure than data, and for a table whose columns are already separated by their alignment
34
+ - never: Marking a group. A missing line is not a heading — a table that wants sections wants a header row inside the body, or two tables. Nor `grid` as decoration on a long table: every vertical line is another thing between a reader and the value they came for
35
+ - **headerCase** `enum` · default "upper"
36
+ - `upper` — The house setting: column names in capitals, at the role that suits them. A header is read once where the data under it is read many times, and capitals are what stop it competing
37
+ - `title` — Names drawn as they were written, at twelve pixels. Right where the names are long, are proper nouns whose own capitals would be flattened, or are in a script with no case at all
38
+ - **overflow** `enum` · default "wrap"
39
+ - `wrap` — The default. Text too long for its column wraps and the row grows taller, so nothing is hidden — right whenever the value is the point and a reader has to read all of it
40
+ - `truncate` — Rows must stay one line high — a dense table a reader scans down, where a row that grew would break the rhythm they are scanning by. …
41
+ - never: Making a column narrow enough to be worth truncating. Clipping is what a column does when it has run out of room, not a way to give it less — a table of ellipses has hidden its data behind a hover on every cell
42
+ - **size** `enum` · default "md"
43
+ - `sm` — Compact. Dense data a reader scans rather than reads — a ledger, a positions table, anything where fitting more rows on screen is worth more than air around each one
44
+ - `md` — Balanced, and the default: rows a reader moves through at reading pace, with enough room that the eye does not slip between them
45
+ - `lg` — Spacious. Few rows, each carrying something substantial — a plan comparison, a summary of three accounts. Reach for it when the table is the page rather than a part of it
46
+ - never: Making the text bigger or smaller. It changes how tall a row is and nothing else — the type stays one size down the whole table, because a reader comparing values across three tables at three densities is comparing the values rather than the tables. …
47
+
48
+ ## Inside it
49
+
50
+ - Takes only TableCell, TableHeaderCell.
51
+ - At least 1, no ceiling — fewer is not this component and more is a different one.
52
+ - 4 components are refused inside it; the list and the reasons are in the long document.
53
+
54
+ ---
55
+
56
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/tablerow.md`.
@@ -0,0 +1,46 @@
1
+ <!-- GENERATED from tablist.contract.json. Do not edit. -->
2
+
3
+ # TabList
4
+
5
+ A strip of comparable versions of one thing, one of them showing at a time. …
6
+
7
+ `import { TabList } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Two or three versions of one offer differ in a way a reader wants to compare — monthly against yearly, one platform against another
12
+ - The page has already written every version, and showing them at once would be repetition rather than information
13
+ - The reader's choice changes what they see and nothing else — no route, no account, nothing the page has to remember
14
+
15
+ ## Something else, when
16
+
17
+ - The sections are separate topics rather than versions of one thing → **Accordion**
18
+ - Every version is worth reading → **Card**
19
+ - The tabs would go to other pages → **nothing in this system does this**
20
+
21
+ ## Never
22
+
23
+ - Navigation. This is a group of buttons, not a landmark: nothing here carries an href, and a strip whose items led away would be a menu drawn as a comparison
24
+ - A sequence. Tabs are alternatives and are pressed in any order — steps happen in one, and a strip says otherwise to everyone who reads it
25
+ - One tab. A set of one is a heading with a border, and the selected state marks it against nothing
26
+ - More than about four. A strip is scanned across in a glance, and the point at which a reader has to read it to choose is the point it should have been a list
27
+
28
+ ## Props
29
+
30
+ - **label** `string` · required — Always — a group with no name is a group a screen reader announces as nothing, and the reader is told there is a set without being told what it is a set of. …
31
+ - never: A heading. This is the group's accessible name and it is not drawn — a strip that needs a visible heading gets one on the page above it, which is a heading a sighted reader can see too
32
+ - **value** `string` · optional — The page is holding which tab is current, because the choice also drives what is rendered beneath the strip — the ordinary case here. Passing it makes the strip controlled: it shows what it is told and reports presses through onChange. …
33
+ - never: Half of a controlled strip. A value passed without an onChange to move it is a strip that cannot respond to being pressed — which reads as a broken control rather than a fixed one, and is the shape a page falls into by adding the value first
34
+ - **onChange** `callback` · optional — Whenever value is — together they are how a page holds the choice. It is called with the pressed tab's value after that tab's own onSelect, so a tab that reports its own presses keeps doing so inside a set
35
+ - never: Side effects a press should not have. This says which version the reader is looking at; a strip that also navigated, submitted or fetched on it would be doing the thing its intent says it does not
36
+
37
+ ## Inside it
38
+
39
+ - Takes only Tab.
40
+ - At least 2, no ceiling — fewer is not this component and more is a different one.
41
+ - 6 components are refused inside it; the list and the reasons are in the long document.
42
+ - Renders 3 parts: root, list, indicator.
43
+
44
+ ---
45
+
46
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/tablist.md`.
@@ -0,0 +1,51 @@
1
+ <!-- GENERATED from testimonialrow.contract.json. Do not edit. -->
2
+
3
+ # TestimonialRow
4
+
5
+ A section that lets a review service's numbers back the page: a heading with the overall rating under it — and a way to where the reviews were collected — over a row of rated reviews the reader moves along, each a short review under its star rating with the reviewer's name, and two arrows under the row that step it a card at a time. …
6
+
7
+ `import { TestimonialRow } from '@deriv-com/dds-marketing'`
8
+
9
+ ## Reach for it when
10
+
11
+ - Five to ten short, rated reviews collected by a review service, where seeing several at once is the point and the overall score is worth stating
12
+ - A page that has made its claims and wants customers' own ratings to back them — a homepage's "What our customers say"
13
+
14
+ ## Something else, when
15
+
16
+ - Two to five quotes the page chose, from partners or customers, each a few sentences and read one at a time → **TestimonialSlider**
17
+ - A single review → **FeatureSplit**
18
+
19
+ ## Never
20
+
21
+ - Reviews nobody wrote, or a rating nobody gave. The stars and the summary are a score in a review service's name — keep each rating and the overall score in step with the source, and link to it, or leave them out
22
+ - A review service's own marks. Its logo, wordmark and brand colour belong to its own widget, under its own rules; this draws each card's stars in the page's accent and names the service in words
23
+ - Long reviews. A card is read on the way along the row; one that needs more than a sentence or two is a review the reader skips
24
+
25
+ ## Props
26
+
27
+ - **ground** `enum` · default "page" — Which of the page's grounds the section paints, and with it the cards' fill: the recessed surface on the page, the raised white on the grey band — the reference design's slate band — and the strong card on the dark band, gray.900 in both themes. …
28
+ - `page` — The default, and the page's own white. The cards are the recessed gray that sets them off
29
+ - `subtle` — The grey band, the reference design's ground for this section. The cards turn white on it. …
30
+ - `strong` — `color.bg.brand-strong`, the dark band, for a section a reader should arrive at. …
31
+ - never: Marking importance. Every section on a page painted a ground is a page with no emphasis left. And never a dark card on the dark band: a few sentences of white on dark gray is a paragraph a reader works through rather than a quote they take in
32
+ - **title** `string` · required — Always. Whose reviews these are, in a few words — "What our customers say"
33
+ - never: A review, or the score. The reviews are the content and the summary states the score; the heading says whose they are
34
+ - **reviews** `data` · required — Always. The reviews, in the order they run along the row — five to ten of a sentence or two, each with the reviewer's name, its `rating` and, where there is one, the `href` of the review itself. An empty list draws nothing
35
+ - never: A review that was not written by the person named, or a rating changed from the one they gave
36
+ - **summary** `data` · optional — The overall rating, in the page's own words under the heading — "Rated 4.5 out of 5 on our review site" — as a standalone Link to where the reviews were collected when it has an `href`. …
37
+ - never: A number the source does not show today
38
+ - **ratingLabel** `callback` · optional — The accessible name of a card's stars, given its rating as drawn — rounded to the nearest half, so what is heard is what is seen. The stars are drawn rather than written, so this is what a screen reader hears for them. …
39
+ - never: Visible text. It names the stars to assistive technology and is never drawn
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
+ - **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
+ - **nextLabel** `string` · default "Next reviews" — The accessible name of the arrow stepping the row on, for the reason previousLabel exists
43
+
44
+ ## Inside it
45
+
46
+ - 7 components are refused inside it; the list and the reasons are in the long document.
47
+ - Renders 20 parts: root, inner, header, title, summary, carousel, track, review-link, item, rating, star, star-track, star-fill, quote, author, name, detail, footer, nav, nav-slot.
48
+
49
+ ---
50
+
51
+ The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/testimonialrow.md`.