@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,97 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useId } from 'react';
4
+ import { CircleCheckSolidIcon, CircleExclamationSolidIcon, TriangleExclamationSolidIcon, } from '@deriv-com/quill-icons-web';
5
+ import './Checkbox.css';
6
+ import './checkbox-impl.css';
7
+ import { given } from '../../given.js';
8
+ import { visuallyHidden } from '../../visually-hidden.js';
9
+ import { Icon } from '../icon/Icon.js';
10
+ import { checkboxDefaults, checkboxParts } from './Checkbox.types.js';
11
+ /**
12
+ * What each reported status looks like.
13
+ *
14
+ * Circle for error, triangle for warning: the two colours are close enough that a
15
+ * red-green deficiency can converge them, so the shape is what separates the pair at a
16
+ * glance and neither should be varied to match the other.
17
+ *
18
+ * Declared here rather than imported, which is this package's shape — marketing has no
19
+ * shared glyph module and TextInput states the same three the same way. A fourth copy
20
+ * would be the point at which one is worth making; three is not it yet.
21
+ */
22
+ const statusGlyph = {
23
+ error: _jsx(CircleExclamationSolidIcon, {}),
24
+ warning: _jsx(TriangleExclamationSolidIcon, {}),
25
+ success: _jsx(CircleCheckSolidIcon, {}),
26
+ };
27
+ /**
28
+ * A real `<input type="checkbox">`, invisible, with the box the user sees drawn as
29
+ * its sibling.
30
+ *
31
+ * The tick lives inside `box`, which is a `<span>`, and the input covers the box rather
32
+ * than containing anything. So every part here is a real element the generator can name,
33
+ * *and* the control is native: it submits with a form, it takes the keyboard for free,
34
+ * and it carries the mixed state properly.
35
+ *
36
+ * That is why nothing below writes `role` or `aria-checked` by hand. The element is
37
+ * already a checkbox and already announces its state.
38
+ *
39
+ * It carries its own status and its own description. A lone consent is the case with
40
+ * nothing above it to hold either, and one that cannot show its own error is a form the
41
+ * reader cannot be told they failed.
42
+ */
43
+ export function Checkbox({ tone = checkboxDefaults.tone, checked = checkboxDefaults.checked, status = checkboxDefaults.status, label, showLabel = checkboxDefaults.showLabel, description, statusMessage, id, onChange, ...rest }) {
44
+ const generatedId = useId();
45
+ // The label is a sibling rather than a wrapper, so the two need an id to be tied
46
+ // together. A consumer's own id wins — theirs may be what a form's error summary
47
+ // links to.
48
+ const fieldId = id ?? generatedId;
49
+ // Gated on the status rather than on the message having text. A box reporting an error
50
+ // with an empty message is a state the contract forbids, and empty is the honest
51
+ // rendering of a broken state.
52
+ const reporting = status !== 'none';
53
+ const showsMessage = reporting && given(statusMessage);
54
+ /*
55
+ * `given` rather than `!== undefined`, and the shared one rather than a fourth copy:
56
+ * absence is the switch for these props, so an empty or whitespace string has to count
57
+ * as absent. The preview's controls set '' when a designer clears a field rather than
58
+ * dropping the prop, which is how an empty line and the gap above it get left behind.
59
+ */
60
+ const describes = given(description);
61
+ /*
62
+ * Both, and in the order they are read on screen. A description says what ticking the
63
+ * box commits you to; a message says what is wrong with the answer — different things,
64
+ * so they stack rather than replace one another.
65
+ *
66
+ * A consumer's own reference is merged in rather than overwritten, so one they added
67
+ * cannot be dropped by this component having something to say.
68
+ */
69
+ const describedBy = [
70
+ describes ? `${fieldId}-description` : null,
71
+ showsMessage ? `${fieldId}-message` : null,
72
+ rest['aria-describedby'],
73
+ ]
74
+ .filter(Boolean)
75
+ .join(' ') || undefined;
76
+ /*
77
+ * `indeterminate` is a DOM property with no HTML attribute, so JSX cannot set it and
78
+ * this callback is the only way in.
79
+ *
80
+ * Deliberately not `aria-checked="mixed"` alongside it: a native checkbox already
81
+ * announces mixed from this property, and the explicit attribute would both repeat it
82
+ * and be free to contradict it — it does not clear itself when the property does.
83
+ */
84
+ const fieldRef = useCallback((node) => {
85
+ if (node !== null)
86
+ node.indeterminate = checked === 'indeterminate';
87
+ }, [checked]);
88
+ return (_jsxs("div", { className: checkboxParts.root, "data-tone": tone, "data-checked": checked, "data-status": status, children: [_jsxs("div", { className: checkboxParts.control, children: [_jsxs("span", { className: checkboxParts.box, children: [_jsx("input", { ...rest, ref: fieldRef, id: fieldId, type: "checkbox", className: checkboxParts.field, checked: checked === 'checked', onChange: onChange,
89
+ // React warns that a checked field without a handler is read-only, and it is
90
+ // right: the state is the consumer's, and one that passes no handler has built
91
+ // a checkbox nobody can change. Saying so is better than the warning.
92
+ readOnly: onChange === undefined ? true : undefined, "aria-invalid": status === 'error' || undefined, "aria-describedby": describedBy }), _jsx("span", { className: checkboxParts.indicator, "aria-hidden": "true", children: checked === 'unchecked' ? null : (_jsx("svg", { viewBox: "0 0 24 24", width: "100%", height: "100%", fill: "none", focusable: "false", children: _jsx("path", {
93
+ // A tick when chosen; a dash when the boxes this one summarises disagree.
94
+ // One horizontal stroke rather than a smaller square, because a filled box
95
+ // with something smaller inside it reads as a radio button gone wrong.
96
+ d: checked === 'checked' ? 'M5 12.5 10 17.5 19 7' : 'M6 12h12', stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }) })) })] }), _jsxs("div", { className: checkboxParts.text, children: [_jsx("label", { className: checkboxParts.label, htmlFor: fieldId, style: showLabel ? undefined : visuallyHidden, children: label }), describes ? (_jsx("span", { id: `${fieldId}-description`, className: checkboxParts['description-text'], children: description })) : null] })] }), showsMessage ? (_jsxs("span", { id: `${fieldId}-message`, className: checkboxParts.message, children: [_jsx(Icon, { size: "xs", children: statusGlyph[status] }), statusMessage] })) : null] }));
97
+ }
@@ -0,0 +1,46 @@
1
+ import type { InputHTMLAttributes } from 'react';
2
+ export interface CheckboxOwnProps {
3
+ /**
4
+ * `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
5
+ * `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
6
+ */
7
+ tone?: 'standard' | 'accent';
8
+ /**
9
+ * `unchecked` — The default — the choice has not been made, or has been made against
10
+ * `checked` — The user has made this choice, or it arrives pre-made and they may change it
11
+ * `indeterminate` — A box that summarises others, where some but not all of them are ticked — a Select all above a partly selected list
12
+ */
13
+ checked?: 'unchecked' | 'checked' | 'indeterminate';
14
+ /** 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". Sentence case, and no full stop — a label is a phrase rather than a sentence, and a stop at the end of one reads as the start of prose. In a set, phrase every box the same way, so a reader compares the answers rather than the grammar */
15
+ label: string;
16
+ /** Drawing the words, which is nearly always. A checkbox on its own is a question, and a question with no words is not one */
17
+ showLabel?: boolean;
18
+ /** 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. On a box that summarises others it is where the summary belongs: "Four of six are on" says what an indeterminate tick cannot */
19
+ description?: string;
20
+ }
21
+ export type CheckboxProps = CheckboxOwnProps & Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'tone' | 'checked' | 'status' | 'label' | 'showLabel' | 'description' | 'statusMessage'> & ({
22
+ status?: 'none' | 'error' | 'warning' | 'success';
23
+ statusMessage: string;
24
+ } | {
25
+ status?: Exclude<'none' | 'error' | 'warning' | 'success', 'error' | 'warning'>;
26
+ statusMessage?: string;
27
+ });
28
+ /** The class each part carries. Apply these — do not retype them. */
29
+ export declare const checkboxParts: {
30
+ readonly root: "dds-checkbox";
31
+ readonly control: "dds-checkbox__control";
32
+ readonly box: "dds-checkbox__box";
33
+ readonly field: "dds-checkbox__field";
34
+ readonly indicator: "dds-checkbox__indicator";
35
+ readonly text: "dds-checkbox__text";
36
+ readonly label: "dds-checkbox__label";
37
+ readonly 'description-text': "dds-checkbox__description-text";
38
+ readonly message: "dds-checkbox__message";
39
+ };
40
+ /** Generated so defaults cannot drift from the contract. */
41
+ export declare const checkboxDefaults: {
42
+ readonly tone: "standard";
43
+ readonly checked: "unchecked";
44
+ readonly status: "none";
45
+ readonly showLabel: true;
46
+ };
@@ -0,0 +1,15 @@
1
+ // GENERATED from checkbox.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const checkboxParts = {
4
+ root: 'dds-checkbox',
5
+ control: 'dds-checkbox__control',
6
+ box: 'dds-checkbox__box',
7
+ field: 'dds-checkbox__field',
8
+ indicator: 'dds-checkbox__indicator',
9
+ text: 'dds-checkbox__text',
10
+ label: 'dds-checkbox__label',
11
+ 'description-text': 'dds-checkbox__description-text',
12
+ message: 'dds-checkbox__message',
13
+ };
14
+ /** Generated so defaults cannot drift from the contract. */
15
+ export const checkboxDefaults = { tone: 'standard', checked: 'unchecked', status: 'none', showLabel: true };
@@ -0,0 +1,90 @@
1
+ /*
2
+ * Scoped to this package, like the generated sheet beside it.
3
+ *
4
+ * `:where([data-dds-context="marketing"])` confines this rule without contributing
5
+ * specificity, so the override below still ties or beats exactly what it did before —
6
+ * it is written a class deeper than it looks in order to match generated CSS, and a
7
+ * scope that carried weight would break it.
8
+ */
9
+
10
+ /*
11
+ * Implementation CSS the contract cannot express.
12
+ *
13
+ * A `structure` rule's `when` must name a styling axis, and `description` is not one.
14
+ * Making it one would emit a rule per value and multiply every cell of the variant grid
15
+ * for a single alignment declaration.
16
+ *
17
+ * What it decides is where the box sits against the words, and the answer differs by what
18
+ * the second line is. Flush with the first line is right when the label wrapped: a box
19
+ * floating to the middle of three lines is level with none of them, and the line it names
20
+ * is the first. Centred is right when the second line is a description, because then the
21
+ * box belongs to the pair rather than to the first half of it.
22
+ *
23
+ * `:has()` is what makes that possible and also the limit of it. CSS can see that a
24
+ * description exists; it cannot see that the label took two lines. So a wrapping label
25
+ * that *also* carries a description centres, which is the one arrangement of the four
26
+ * this rule gets wrong. Written down because it is a known edge rather than an oversight
27
+ * — the fix would be a line count, and there is no such selector.
28
+ *
29
+ * Three classes deep deliberately. The generated rule that sets flex-start is two, and
30
+ * `:has()` takes the specificity of its argument, so a two-class selector here would tie
31
+ * and leave source order to decide it.
32
+ */
33
+ :where([data-dds-context='marketing'])
34
+ .dds-checkbox
35
+ .dds-checkbox__control:has(.dds-checkbox__description-text) {
36
+ align-items: center;
37
+ }
38
+
39
+ /*
40
+ * And where the box sits on the line, which is the other thing no token can say.
41
+ *
42
+ * Product's label is font.body.md at fourteen, so its line box is twenty-one and the
43
+ * twenty-pixel square is half a pixel off the middle of it — near enough that nothing
44
+ * carries the difference. Marketing's body.md is sixteen. The line is twenty-four, the
45
+ * square is still twenty, and `align-items: flex-start` puts the box's top edge on the
46
+ * line box's top edge, which leaves it two pixels above the letters it belongs to.
47
+ *
48
+ * The square stays twenty because that is the mark's size, not the line's: at
49
+ * twenty-four it filled the line and read as a panel beside the words rather than a box
50
+ * in front of them. So the measure is left alone and the position is corrected.
51
+ *
52
+ * Half the difference between the line and the box, taken from the two of them rather
53
+ * than written down: `1lh` is the box's own computed line-height, which it inherits from
54
+ * the row and which is the label's, and the token is the box's own. Retune either and
55
+ * this follows. A browser without `lh` drops the declaration and gets the two pixels
56
+ * back, which is the behaviour this replaces rather than something worse.
57
+ *
58
+ * Only where the row is not already centred. With a description the control centres the
59
+ * box on the pair, and an offset on top of that would push it below the middle it was
60
+ * just put in.
61
+ */
62
+ :where([data-dds-context='marketing'])
63
+ .dds-checkbox
64
+ .dds-checkbox__control:not(:has(.dds-checkbox__description-text))
65
+ > .dds-checkbox__box {
66
+ margin-block-start: calc((1lh - var(--size-checkbox-box)) / 2);
67
+ }
68
+
69
+ /*
70
+ * And the same correction for the mark beside the message, for the same reason.
71
+ *
72
+ * `align-items: flex-start` on the message is the contract's, and right: a message that
73
+ * runs to two lines wants its glyph on the first of them rather than floating to the
74
+ * middle of the pair. What it aligns is the top edges, though, and the glyph is sixteen
75
+ * against a line box of twenty-one — so the mark sat two and a half pixels above the
76
+ * words it belongs to, on every status.
77
+ *
78
+ * Product's message is font.body-strong.sm at twelve, an eighteen-pixel line, so the
79
+ * same glyph is a pixel out there and nobody reads it. This package sets the message in
80
+ * font.body.sm at fourteen, which is what makes the difference visible — the same step
81
+ * up that put the box two pixels off its label.
82
+ *
83
+ * `1lh` is the line the glyph is sitting in, read from the message it inherits from.
84
+ * `--icon-size-xs` is the step the component asks Icon for a few lines above; the two
85
+ * have to be changed together, which is worth saying out loud because nothing here
86
+ * enforces it.
87
+ */
88
+ :where([data-dds-context='marketing']) .dds-checkbox .dds-checkbox__message > .dds-icon {
89
+ margin-block-start: calc((1lh - var(--icon-size-xs)) / 2);
90
+ }
@@ -0,0 +1,41 @@
1
+ /* GENERATED from divider.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-divider {
4
+ align-items: center;
5
+ display: flex;
6
+ gap: var(--space-gap-sm);
7
+ }
8
+
9
+ :where([data-dds-context="marketing"]) .dds-divider .dds-divider__line {
10
+ flex: auto;
11
+ flex-basis: 0;
12
+ background-color: var(--color-border-subtle);
13
+ }
14
+
15
+ :where([data-dds-context="marketing"]) .dds-divider .dds-divider__label {
16
+ white-space: nowrap;
17
+ color: var(--color-fg-tertiary);
18
+ font-family: var(--font-label-sm-family);
19
+ font-size: var(--font-label-sm-size);
20
+ font-weight: var(--font-label-sm-weight);
21
+ letter-spacing: var(--font-label-sm-letter-spacing);
22
+ line-height: var(--font-label-sm-line-height);
23
+ }
24
+
25
+ :where([data-dds-context="marketing"]) .dds-divider[data-orientation="horizontal"] {
26
+ inline-size: 100%;
27
+ }
28
+
29
+ :where([data-dds-context="marketing"]) .dds-divider[data-orientation="vertical"] {
30
+ align-self: stretch;
31
+ flex-direction: column;
32
+ }
33
+
34
+ :where([data-dds-context="marketing"]) .dds-divider[data-orientation="horizontal"] .dds-divider__line {
35
+ block-size: var(--border-width-default);
36
+ }
37
+
38
+ :where([data-dds-context="marketing"]) .dds-divider[data-orientation="vertical"] .dds-divider__line {
39
+ inline-size: var(--border-width-default);
40
+ }
41
+
@@ -0,0 +1,46 @@
1
+ import './Divider.css';
2
+ import { type DividerProps } from './Divider.types.js';
3
+ export type { DividerProps };
4
+ /**
5
+ * A rule between two groups, and one shape for both the bare case and the labelled one.
6
+ *
7
+ * The line is a child rather than a border on the root, because a labelled divider
8
+ * needs two of them and a border cannot be halved. That makes the bare case one
9
+ * element more than an `<hr>` would be, and buys a component whose ink and thickness
10
+ * are bound in exactly one place — and a labelled divider that is this component
11
+ * rather than a second one wearing the same name.
12
+ *
13
+ * Three renderings, and the difference between them is entirely what reaches the
14
+ * accessibility tree:
15
+ *
16
+ * A bare divider is `role="separator"`, which is what says the groups either side of
17
+ * it are different groups. Vertical adds `aria-orientation`, and horizontal
18
+ * deliberately does not: a separator is horizontal by default, so writing it there
19
+ * would be stating the default out loud.
20
+ *
21
+ * A labelled divider is not a separator at all. A non-focusable separator's children
22
+ * are presentational to a screen reader — the ARIA spec's own list — so a word inside
23
+ * one is drawn and never announced, which is the exact opposite of why anybody puts a
24
+ * word in a divider. With the role dropped, the word is ordinary text on the page and
25
+ * is read as such, and the two lines either side of it are decoration, which is all
26
+ * they ever were. `aria-orientation` goes with the role rather than staying behind: an
27
+ * orientation on a box that is not a separator describes nothing.
28
+ *
29
+ * A decorative divider is hidden outright. `aria-hidden` rather than
30
+ * `role="presentation"`: the bare case has no children to worry about, so the two
31
+ * would be equivalent here — but this component can hold a child, and
32
+ * `role="presentation"` does not travel to one. The type makes that pairing
33
+ * impossible, and the attribute that survives a future where it is not is the one to
34
+ * write now.
35
+ *
36
+ * The label is read for truth rather than for presence. `presentWhen` in the contract
37
+ * names the prop, and the generated test renders `label=""` and asserts the part is
38
+ * *not* there — an empty string is a word nobody typed, and a span holding nothing
39
+ * would still open the root's gap on both sides of it and split the rule in two
40
+ * around a space.
41
+ *
42
+ * The spread goes first, so a consumer can override what is not load-bearing and
43
+ * cannot override what is. Everything this component decides about semantics is
44
+ * written after it.
45
+ */
46
+ export declare function Divider({ orientation, decorative, label, ...rest }: DividerProps): import("react").JSX.Element;
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import './Divider.css';
3
+ import { dividerDefaults, dividerParts } from './Divider.types.js';
4
+ /**
5
+ * A rule between two groups, and one shape for both the bare case and the labelled one.
6
+ *
7
+ * The line is a child rather than a border on the root, because a labelled divider
8
+ * needs two of them and a border cannot be halved. That makes the bare case one
9
+ * element more than an `<hr>` would be, and buys a component whose ink and thickness
10
+ * are bound in exactly one place — and a labelled divider that is this component
11
+ * rather than a second one wearing the same name.
12
+ *
13
+ * Three renderings, and the difference between them is entirely what reaches the
14
+ * accessibility tree:
15
+ *
16
+ * A bare divider is `role="separator"`, which is what says the groups either side of
17
+ * it are different groups. Vertical adds `aria-orientation`, and horizontal
18
+ * deliberately does not: a separator is horizontal by default, so writing it there
19
+ * would be stating the default out loud.
20
+ *
21
+ * A labelled divider is not a separator at all. A non-focusable separator's children
22
+ * are presentational to a screen reader — the ARIA spec's own list — so a word inside
23
+ * one is drawn and never announced, which is the exact opposite of why anybody puts a
24
+ * word in a divider. With the role dropped, the word is ordinary text on the page and
25
+ * is read as such, and the two lines either side of it are decoration, which is all
26
+ * they ever were. `aria-orientation` goes with the role rather than staying behind: an
27
+ * orientation on a box that is not a separator describes nothing.
28
+ *
29
+ * A decorative divider is hidden outright. `aria-hidden` rather than
30
+ * `role="presentation"`: the bare case has no children to worry about, so the two
31
+ * would be equivalent here — but this component can hold a child, and
32
+ * `role="presentation"` does not travel to one. The type makes that pairing
33
+ * impossible, and the attribute that survives a future where it is not is the one to
34
+ * write now.
35
+ *
36
+ * The label is read for truth rather than for presence. `presentWhen` in the contract
37
+ * names the prop, and the generated test renders `label=""` and asserts the part is
38
+ * *not* there — an empty string is a word nobody typed, and a span holding nothing
39
+ * would still open the root's gap on both sides of it and split the rule in two
40
+ * around a space.
41
+ *
42
+ * The spread goes first, so a consumer can override what is not load-bearing and
43
+ * cannot override what is. Everything this component decides about semantics is
44
+ * written after it.
45
+ */
46
+ export function Divider({ orientation = dividerDefaults.orientation, decorative = dividerDefaults.decorative, label, ...rest }) {
47
+ // A word, rather than a prop that was passed. See above: "" is not a label.
48
+ const labelled = typeof label === 'string' && label !== '';
49
+ const separator = !decorative && !labelled;
50
+ return (_jsxs("div", { ...rest, className: dividerParts.root, "data-orientation": orientation, role: separator ? 'separator' : undefined, "aria-orientation": separator && orientation === 'vertical' ? 'vertical' : undefined, "aria-hidden": decorative ? true : undefined, children: [_jsx("span", { className: dividerParts.line }), labelled ? (_jsxs(_Fragment, { children: [_jsx("span", { className: dividerParts.label, children: label }), _jsx("span", { className: dividerParts.line })] })) : null] }));
51
+ }
@@ -0,0 +1,25 @@
1
+ export interface DividerOwnProps {
2
+ /**
3
+ * `horizontal` — The default, and nearly every divider: a rule across a stack, separating what is above it from what is below. It takes all of whatever contains it rather than waiting to be stretched, so it spans a block, a flex column and a centred grid cell alike — and in a flex row, where it has no business being, it takes the row's whole width rather than a share of it, which is the sign that the rule wanted the other axis
4
+ * `vertical` — A rule down a row, separating items beside one another. It stretches to the height of the row rather than declaring one, so it is exactly as tall as what it stands between — and in a container with no height of its own it draws nothing, which is the mirror of the horizontal case and the same thing to check first
5
+ */
6
+ orientation?: 'horizontal' | 'vertical';
7
+ }
8
+ export type DividerProps = DividerOwnProps & ({
9
+ decorative?: boolean;
10
+ label?: undefined;
11
+ } | {
12
+ decorative?: false;
13
+ label?: string;
14
+ });
15
+ /** The class each part carries. Apply these — do not retype them. */
16
+ export declare const dividerParts: {
17
+ readonly root: "dds-divider";
18
+ readonly line: "dds-divider__line";
19
+ readonly label: "dds-divider__label";
20
+ };
21
+ /** Generated so defaults cannot drift from the contract. */
22
+ export declare const dividerDefaults: {
23
+ readonly orientation: "horizontal";
24
+ readonly decorative: false;
25
+ };
@@ -0,0 +1,9 @@
1
+ // GENERATED from divider.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const dividerParts = {
4
+ root: 'dds-divider',
5
+ line: 'dds-divider__line',
6
+ label: 'dds-divider__label',
7
+ };
8
+ /** Generated so defaults cannot drift from the contract. */
9
+ export const dividerDefaults = { orientation: 'horizontal', decorative: false };
@@ -0,0 +1,147 @@
1
+ /* GENERATED from dropdownmenu.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu {
4
+ display: inline-flex;
5
+ position: relative;
6
+ }
7
+
8
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__trigger {
9
+ transition-property: background-color, outline-color, outline-width;
10
+ align-items: center;
11
+ background-color: transparent;
12
+ border-style: solid;
13
+ box-sizing: border-box;
14
+ cursor: pointer;
15
+ display: inline-flex;
16
+ flex-direction: row;
17
+ justify-content: center;
18
+ outline-style: solid;
19
+ position: relative;
20
+ white-space: nowrap;
21
+ block-size: var(--size-control-md);
22
+ border-color: var(--color-border-strong);
23
+ border-radius: var(--radius-pill);
24
+ border-width: var(--border-width-emphasis);
25
+ color: var(--color-fg-default);
26
+ gap: var(--space-gap-sm);
27
+ outline-width: var(--border-width-none);
28
+ padding-inline: var(--space-control-md);
29
+ transition-duration: var(--motion-duration-normal);
30
+ transition-timing-function: var(--motion-easing-standard);
31
+ }
32
+
33
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__chevron {
34
+ transition-property: rotate;
35
+ block-size: var(--icon-control-lg);
36
+ color: var(--color-fg-muted);
37
+ inline-size: var(--icon-control-lg);
38
+ transition-duration: var(--motion-duration-fast);
39
+ transition-timing-function: var(--motion-easing-standard);
40
+ }
41
+
42
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__surface {
43
+ border-style: solid;
44
+ box-sizing: border-box;
45
+ inline-size: max-content;
46
+ inset-block-start: 100%;
47
+ list-style: none;
48
+ margin: 0;
49
+ min-inline-size: 100%;
50
+ overflow-y: auto;
51
+ position: absolute;
52
+ background-color: var(--color-bg-surface-raised);
53
+ border-color: var(--color-border-subtle);
54
+ border-radius: var(--radius-menu);
55
+ border-width: var(--border-width-default);
56
+ box-shadow: var(--elevation-surface-floating);
57
+ margin-block-start: var(--space-gap-sm);
58
+ max-block-size: var(--size-menu-max);
59
+ padding-block: var(--space-inset-2xs);
60
+ padding-inline: var(--space-inset-2xs);
61
+ }
62
+
63
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-variant="plain"] .dds-dropdownmenu__trigger {
64
+ color: inherit;
65
+ border-width: var(--border-width-none);
66
+ }
67
+
68
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-alignment="end"] .dds-dropdownmenu__surface {
69
+ inset-inline-end: 0;
70
+ inset-inline-start: auto;
71
+ }
72
+
73
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-alignment="start"] .dds-dropdownmenu__surface {
74
+ inset-inline-end: auto;
75
+ inset-inline-start: 0;
76
+ }
77
+
78
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__icon {
79
+ block-size: var(--icon-control-lg);
80
+ inline-size: var(--icon-control-lg);
81
+ }
82
+
83
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__label {
84
+ font-family: var(--font-label-md-family);
85
+ font-size: var(--font-label-md-size);
86
+ font-weight: var(--font-label-md-weight);
87
+ letter-spacing: var(--font-label-md-letter-spacing);
88
+ line-height: var(--font-label-md-line-height);
89
+ }
90
+
91
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__trigger:hover:where(:not(:disabled)) {
92
+ background-color: var(--color-bg-hover);
93
+ }
94
+
95
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__trigger:active {
96
+ background-color: var(--color-bg-active);
97
+ }
98
+
99
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu .dds-dropdownmenu__trigger:focus-visible {
100
+ outline-color: var(--color-border-focus);
101
+ outline-width: var(--border-width-focus);
102
+ }
103
+
104
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-size="sm"] .dds-dropdownmenu__chevron {
105
+ block-size: var(--icon-control-md);
106
+ inline-size: var(--icon-control-md);
107
+ }
108
+
109
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-size="sm"] .dds-dropdownmenu__icon {
110
+ block-size: var(--icon-control-md);
111
+ inline-size: var(--icon-control-md);
112
+ }
113
+
114
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-size="sm"] .dds-dropdownmenu__label {
115
+ font-family: var(--font-label-sm-family);
116
+ font-size: var(--font-label-sm-size);
117
+ font-weight: var(--font-label-sm-weight);
118
+ letter-spacing: var(--font-label-sm-letter-spacing);
119
+ line-height: var(--font-label-sm-line-height);
120
+ }
121
+
122
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-size="sm"] .dds-dropdownmenu__trigger {
123
+ block-size: var(--size-control-sm);
124
+ padding-inline: var(--space-control-sm);
125
+ }
126
+
127
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-tone="inverse"] .dds-dropdownmenu__trigger:hover:where(:not(:disabled)) {
128
+ background-color: var(--color-bg-hover-on-brand-strong);
129
+ }
130
+
131
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-tone="inverse"] .dds-dropdownmenu__trigger:active {
132
+ background-color: var(--color-bg-active-on-brand-strong);
133
+ }
134
+
135
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-tone="inverse"] .dds-dropdownmenu__trigger:focus-visible {
136
+ outline-color: var(--color-border-focus-on-brand-strong);
137
+ }
138
+
139
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu[data-variant="plain"][data-size="sm"] .dds-dropdownmenu__trigger {
140
+ block-size: var(--size-control-md);
141
+ }
142
+
143
+ @media (prefers-reduced-motion: reduce) {
144
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu,
145
+ :where([data-dds-context="marketing"]) .dds-dropdownmenu * { transition: none !important; }
146
+ }
147
+
@@ -0,0 +1,24 @@
1
+ import './DropdownMenu.css';
2
+ import './dropdown-menu-impl.css';
3
+ import { type DropdownMenuProps } from './DropdownMenu.types.js';
4
+ export type { DropdownMenuProps };
5
+ /**
6
+ * A button that opens a short set of destinations.
7
+ *
8
+ * It is the host MenuItem was written against: a row whose role is `menuitem` announces wrong
9
+ * outside an element whose role is `menu`, so what this adds is everything a row cannot know about
10
+ * itself — that there is a set, how long it is, which one the visitor is on, and that Escape puts
11
+ * them back on the button they pressed.
12
+ *
13
+ * The trigger is drawn here rather than passed in, which is where this parts company with product's
14
+ * menu of the same name. That was forced rather than chosen: when this was built, this package's
15
+ * Button was an anchor with a required `href`, so it was a link and a link that opens a menu does not
16
+ * navigate; ButtonIcon is a
17
+ * real button and takes no words. A set of destinations is chosen by reading it, so the trigger
18
+ * needs words, and nothing here drew a button with words. Button now renders a `<button>` when it
19
+ * has no href, so whether it should become the trigger is an open question rather than a settled one.
20
+ *
21
+ * Focus moves to the rows themselves rather than being described from the trigger. A menu's rows are
22
+ * things to take, and a visitor pressing Enter should be pressing the thing they are on.
23
+ */
24
+ export declare function DropdownMenu(props: DropdownMenuProps): import("react").JSX.Element;