@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,597 @@
1
+ /*
2
+ * Scoped to this package, like the generated sheet beside it.
3
+ *
4
+ * `:where([data-dds-context="marketing"])` confines these rules without contributing
5
+ * specificity, so every override below still ties or beats exactly what it did
6
+ * before — several here are written a class deeper than they look in order to
7
+ * match generated CSS, and a scope that carried weight would break all of them.
8
+ */
9
+
10
+ /* Implementation CSS that the contract's staticCss cannot express. */
11
+
12
+ /*
13
+ * Above the page it sticks over, which a contract cannot hold: an integer with no unit.
14
+ *
15
+ * `position: sticky` alone is not enough, and the way it fails is quiet. A sticky box at
16
+ * `z-index: auto` paints above the in-flow content it passes, which is most of a marketing
17
+ * page and is why this looks correct until it does not — the first positioned section
18
+ * further down the document paints straight through the bar, because a later positioned
19
+ * element outranks an earlier one at the same level. A hero with a positioned overlay on
20
+ * it is the usual first sighting, and it gets reported as the navigation disappearing
21
+ * rather than as a stacking bug.
22
+ *
23
+ * `layer.popup` rather than a number: the role for what floats over what the page lays
24
+ * out. It sits below anything that interrupts the reader, so the panel at `layer.overlay`
25
+ * still covers the bar it came out of.
26
+ */
27
+ :where([data-dds-context="marketing"]) .dds-navbar {
28
+ z-index: var(--layer-popup);
29
+ }
30
+
31
+ /*
32
+ * And the ground paints behind everything the row holds, which is the same kind of claim and
33
+ * cannot be made any other way either.
34
+ *
35
+ * It is absolutely positioned, and a positioned box paints above its in-flow siblings whatever
36
+ * the source order says — so without this the bar's ground would cover the mark and the control
37
+ * beside it. Source order is not the lever: `order` moves a flex item's position in the line and
38
+ * nothing about where it paints.
39
+ *
40
+ * Negative, and safely so. The rail above is a stacking context — it is positioned and carries a
41
+ * stacking order of its own — so this cannot sink below the page behind it. It goes behind the
42
+ * row's contents and stops there, which is the whole of what it is for.
43
+ */
44
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__ground {
45
+ z-index: -1;
46
+ }
47
+
48
+ /*
49
+ * The see-through material — tint, blur, and the layer the pill's blur sits on — is in
50
+ * navbar-material.css, which the bar's panels share.
51
+ */
52
+
53
+ /*
54
+ * Which regions the bar draws, and the one size query in this package.
55
+ *
56
+ * Every other component here is width-agnostic: the token layer adapts on its own, so a
57
+ * component writes a variable once and the value changes underneath it. That works for a
58
+ * measure and cannot work for this. What changes at a navigation bar's threshold is not
59
+ * how big a thing is but which things exist — the destinations become a panel, the
60
+ * utilities move to its foot — and no token can say "this element is not drawn".
61
+ *
62
+ * A contract cannot say it either. `presentWhen` names a prop and a width is not one, and
63
+ * gating the parts on a width measured in script would mean a bar that renders one
64
+ * arrangement on the server and another on the client, which is the flash every reader on
65
+ * a slow connection sees.
66
+ *
67
+ * `@container` rather than `@media`, and the difference is not a refinement. What decides
68
+ * whether the destinations fit is the room the bar has, which is the window's width only
69
+ * where the bar is full-bleed. A media query is right about the page and wrong about the
70
+ * component, and it is wrong silently: the arrangement it draws is a real one, just not
71
+ * the one the width called for. A bar in a column — a preview, a split layout, anything
72
+ * narrower than the window it is measuring — gets the collapsed arrangement at every size.
73
+ *
74
+ * A literal rather than a token, because no token can be one. CSS does not accept `var()`
75
+ * inside a container or media query condition, so a `size.breakpoint.*` role could be
76
+ * published and still not be usable here — which means token-discipline's own suggested
77
+ * resolution, "add one and bind it in the contract", cannot be carried out for a query
78
+ * prelude. The threshold is a duplication of VIEWPORT_BREAKPOINT in src/tokens/emit-css.ts,
79
+ * where the token layer holds the same number, and it is worth flagging rather than hiding.
80
+ *
81
+ * In rem rather than px, and the reason is not that token-discipline matches on `px`. A
82
+ * threshold in rem answers to the reader's own root size: somebody reading at larger text
83
+ * needs more room for the same five destinations, and a bar measured in rem gives way when
84
+ * they actually stop fitting rather than at a width chosen for 16px text. That it also
85
+ * passes a regex which cannot see query preludes is a coincidence this comment would rather
86
+ * name than rely on.
87
+ *
88
+ * `64rem` and not the 48 it began at, which is the one number here chosen by looking rather
89
+ * than by reasoning. At 48 the bar had room for its three regions and not for what a real
90
+ * page puts in them: a mark, five destinations, a switcher and two buttons met somewhere
91
+ * around a thousand pixels and drew over each other. Nothing in the component can know that
92
+ * — what fits depends on how many destinations a page has and how long their words are — so
93
+ * the threshold is set where a full bar stops fitting rather than where three empty regions
94
+ * do.
95
+ *
96
+ * Giving way earlier is the cost, and it is the right one. A tablet that used to show the
97
+ * whole bar now shows a mark and a control, and everything the bar was holding is one press
98
+ * away in the panel, where it is laid out for reading rather than crushed into a row. The
99
+ * alternative was a band of widths where the bar was technically drawn and practically
100
+ * unreadable.
101
+ *
102
+ * Narrow first, so the fallback where the query never matches is the arrangement that fits
103
+ * in less room. Written two classes deep to match the generated rules these override,
104
+ * which set `display: flex` on each of these parts.
105
+ */
106
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster,
107
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__utilities {
108
+ display: none;
109
+ }
110
+
111
+ @container (min-width: 64rem) {
112
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster,
113
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__utilities {
114
+ display: flex;
115
+ }
116
+
117
+ /*
118
+ * And the bar stops being a surface. Drawn in full it is an arrangement — a mark, a pill and a
119
+ * pair of actions with the page showing between them — and a ground behind that would be a band
120
+ * across the window with a second rounded box sitting on it.
121
+ *
122
+ * `display: none` rather than turning the ground transparent, on the same reasoning as the
123
+ * regions above: what changes at this threshold is which things exist, and a box painted in
124
+ * nothing is still a box, still carrying a shadow role that would go on being drawn.
125
+ */
126
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__ground {
127
+ display: none;
128
+ }
129
+
130
+ /*
131
+ * The pill takes its air back at this width.
132
+ *
133
+ * The row is padded for the collapsed bar, where eight either side of a control's height is a
134
+ * bar of fifty-six — enough that the action it keeps has a margin rather than a hairline. Drawn in full the row holds the pill instead, which
135
+ * is a surface with a shadow and wants a step of its own around it rather than the hairline that
136
+ * suits a bare control — so the pill asks for the rest here, where the query can reach it and
137
+ * cannot reach the row it sits in.
138
+ *
139
+ * On the pill rather than the row for that reason alone. The sum is unchanged: eight and four
140
+ * either side of a forty-eight pill is the same seventy-two the bar drew when the row carried
141
+ * twelve.
142
+ */
143
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster {
144
+ margin-block: var(--space-inset-2xs);
145
+ }
146
+
147
+ /*
148
+ * The control the bar keeps only while it is collapsed. It opens the panel that holds
149
+ * what the other two regions were showing, and has nothing to answer for once both are
150
+ * drawn in full.
151
+ */
152
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__trigger {
153
+ display: none;
154
+ }
155
+
156
+ /*
157
+ * And the action it stood beside, which is the same action `utilities` is drawing a few
158
+ * pixels away at this width. Kept only while the trailing end is not.
159
+ */
160
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__compact-action {
161
+ display: none;
162
+ }
163
+
164
+ /*
165
+ * And the panel cannot be open at a width with nowhere to put it. A reader who opens it
166
+ * on a phone and then rotates, or drags a window wider, would otherwise be left under a
167
+ * surface covering the page with the bar behind it already showing every destination
168
+ * that surface was drawn to offer.
169
+ *
170
+ * On the host rather than the panel. The host is `display: contents`, so it is a place
171
+ * in the tree rather than a box — and `display: none` on a box that has none is still
172
+ * what takes its subtree off the page. The panel's own class belongs to NavbarPanel's
173
+ * stylesheet, and a rule here naming it would be a rule about a part this component does
174
+ * not emit.
175
+ */
176
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__panel-host {
177
+ display: none;
178
+ }
179
+ }
180
+
181
+ /*
182
+ * The pill sits in the centre of the bar, not in the centre of what is left over.
183
+ *
184
+ * Auto margins were the first answer and they answer a different question: they split the free
185
+ * space either side of the box, so the pill centres between the two ends rather than in the row.
186
+ * The ends are not the same width — a mark is narrower than a pair of buttons — so the pill sat
187
+ * off to the leading side by half the difference, and moved again every time the copy on a button
188
+ * changed.
189
+ *
190
+ * Equal shares instead. Both ends take a basis of nothing and grow at the same rate, so whatever
191
+ * room is left is divided between them and the middle lands on the centre line however wide the
192
+ * mark or the actions turn out to be. `min-inline-size: auto` is what keeps either from being
193
+ * crushed below its own contents, which is a flex item's default and the reason this does not need
194
+ * saying twice.
195
+ *
196
+ * Not expressible in the contract. A flex ratio is a bare number, which the static CSS vocabulary
197
+ * rejects for the same reason it rejects a stacking order.
198
+ *
199
+ * The trailing end ranges its contents to the far edge. Grown to a share of the row it would
200
+ * otherwise start where its share starts, leaving the actions adrift in the middle of their own
201
+ * box rather than against the end of the bar.
202
+ *
203
+ * Direct children of the row only. The same two parts are rendered inside the pill once the bar
204
+ * gathers, and a basis of nothing there would be read as contributing nothing to the pill's own
205
+ * width — the shape hugs, so it would size to the destinations alone and crush the mark and the
206
+ * actions it had just been given. The child combinator is what keeps the rule where it is true.
207
+ *
208
+ * And the share is what they give up when the bar gathers. A box whose basis is nothing is exactly
209
+ * as wide as the share it grows into, so taking the growth to nought takes the box to nought —
210
+ * which a number can be transitioned to, where a width cannot travel to `auto` and back. The row
211
+ * reflows the whole way, the pill widens into what is being given up, and the destinations slide
212
+ * along with it.
213
+ *
214
+ * `overflow: hidden` because the box is narrower than what it holds for most of that journey.
215
+ * Permanently rather than for the duration: these boxes are a share of the row at rest, far wider
216
+ * than the mark or the pair of buttons inside them, so nothing is near an edge to be clipped.
217
+ *
218
+ * And they move while they go. The share is what they give up; the travel is what a reader follows
219
+ * — one says something about the layout and the other about the thing leaving it, and a box that
220
+ * only narrowed would read as being squeezed out rather than as going somewhere. `translate` is a
221
+ * transform, so it costs the layout nothing and composes with the collapse instead of arguing with
222
+ * it.
223
+ *
224
+ * Up, and only up. The gutter stays where it is for the whole journey, because it is what the mark
225
+ * and the actions are positioned against: the mark sits a gutter in from the box's leading edge and
226
+ * the actions a gutter in from its trailing one, so collapsing that padding walks both of them
227
+ * outwards — the mark left, the buttons right — while they are also travelling up. Two directions
228
+ * at once reads as sliding off to the side rather than as lifting away, which is not what the
229
+ * movement is for.
230
+ *
231
+ * The cost is that `box-sizing: border-box` will not take these boxes below their own padding, so
232
+ * each end keeps a gutter's width once it has gone. Nothing is drawn in it and the pill is centred
233
+ * by `margin-inline: auto` rather than by what the ends leave behind, so it stays where it was; the
234
+ * only thing given up is the last gutter's worth of room the pill could have widened into.
235
+ */
236
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__brand,
237
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__utilities {
238
+ flex: 1 1 0;
239
+ overflow: hidden;
240
+ transition:
241
+ flex-grow var(--motion-duration-shift) var(--motion-easing-shift),
242
+ margin-inline var(--motion-duration-shift) var(--motion-easing-shift),
243
+ opacity var(--motion-duration-shift) var(--motion-easing-shift),
244
+ translate var(--motion-duration-shift) var(--motion-easing-shift);
245
+ }
246
+
247
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__utilities {
248
+ justify-content: flex-end;
249
+ }
250
+
251
+ /*
252
+ * What a reader sets sits with the sections, at the sections' own spacing.
253
+ *
254
+ * The pill separates its regions by `space.gap.md` — the mark, the destinations, the actions, each
255
+ * a different kind of thing and spaced to say so. `preferences` is a fourth child of that box and
256
+ * takes the same step, which is the wrong claim: a locale is not another region of the bar, it is
257
+ * one more item at the end of the row of sections, and sixteen pixels after a four-pixel row reads
258
+ * as a gap somebody forgot to close.
259
+ *
260
+ * The difference of the two steps, so the net spacing is the row's own. Written as the subtraction
261
+ * rather than as the number it currently comes to, so retuning either ramp keeps this correct —
262
+ * the same reason NavbarPanel pulls its body out by reading the step it is cancelling.
263
+ *
264
+ * Not expressible in the contract, which no negative dimension is.
265
+ */
266
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__preferences {
267
+ margin-inline-start: calc(var(--space-gap-xs) - var(--space-gap-md));
268
+ }
269
+
270
+ /*
271
+ * The kept action travels with the control beside it, rather than floating in the middle.
272
+ *
273
+ * The row is `space-between`, which is right while it holds two things — a mark at one end and a
274
+ * control at the other. Collapsed with an action as well it holds three, and space-between spreads
275
+ * them evenly: the action lands halfway across the bar, equidistant from the mark and the menu and
276
+ * reading as though it belongs to neither.
277
+ *
278
+ * An auto margin on its leading side takes all the free space instead, so the action and the
279
+ * trigger sit together at the trailing end with the row's own gap between them, and the mark keeps
280
+ * the other end to itself. Absent, nothing changes: with two children space-between already does
281
+ * exactly this.
282
+ *
283
+ * Not expressible in the contract. `auto` is neither a keyword the static vocabulary admits for a
284
+ * margin nor a quantity a token could hold — what it means here is "whatever is left", which is a
285
+ * different kind of value from every step on the spacing ramp.
286
+ */
287
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__compact-action {
288
+ margin-inline-start: auto;
289
+ }
290
+
291
+
292
+
293
+
294
+ /*
295
+ * The mark carries its own leading inset, and only inside the pill.
296
+ *
297
+ * Everything else that meets the pill's ends brings padding with it: a button is a filled shape
298
+ * with its own, and a destination pads its words. A logo is a picture handed over by the page with
299
+ * nothing around it, so against the pill's own four pixels it sits a step closer to the edge than
300
+ * anything else does.
301
+ *
302
+ * On the mark rather than on the pill, which was the correction. Widening the pill fixed this end
303
+ * and moved the other: the actions were already at the right distance, and a symmetric inset
304
+ * pushed them in by the same amount the mark needed.
305
+ *
306
+ * Only inside the pill, which is why this is a selector rather than a binding. At rest the mark
307
+ * sits at the row's own leading edge with nothing around it, and a contract can say "this part" or
308
+ * "in this state" but not "when it is in that box".
309
+ */
310
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster > .dds-navbar__brand {
311
+ padding-inline-start: var(--space-inset-sm);
312
+ }
313
+
314
+ /*
315
+ * Whatever the slot was given fills the height the bar set, and keeps its own shape doing it.
316
+ *
317
+ * The height is bound on the part, and the part is a wrapper — so on its own it would constrain a
318
+ * box around a mark that went on drawing itself at whatever size it arrived at. Quill's marks
319
+ * carry `width` and `height` attributes, and a presentation attribute is exactly what a CSS
320
+ * declaration outranks.
321
+ *
322
+ * `inline-size: auto` against a bound block size is what keeps the ratio: a wordmark is three
323
+ * times wider than it is tall, and pinning both axes would letterbox it into a smudge. The same
324
+ * reasoning is why Icon clones a glyph rather than wrapping one.
325
+ *
326
+ * Reaching into a child this component did not render, which is worth naming rather than hiding. A
327
+ * brand slot takes an element the page owns, so there is no other way to say how big it may be —
328
+ * and a bar that could not say would have its height set by whatever logo it was handed.
329
+ */
330
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__brand > * {
331
+ align-items: center;
332
+ block-size: 100%;
333
+ display: flex;
334
+ inline-size: auto;
335
+ }
336
+
337
+ /*
338
+ * And it survives the anchor around it, which is the shape the contract asks for.
339
+ *
340
+ * The rule above reaches one level. That was enough while the slot held a mark and stopped being
341
+ * enough the moment it held the thing the guidance actually describes — "an `<a href="/">` around
342
+ * an SVG, in practice" — because the child it sizes is then the link rather than the picture. A
343
+ * link is `display: inline`, and `block-size` does not apply to a non-replaced inline box: the
344
+ * height was not overridden so much as ignored, the mark went on drawing itself at whatever size
345
+ * the page handed it, and an inline box sits on a text baseline, so it was off centre as well as
346
+ * too big.
347
+ *
348
+ * `display: flex` on the wrapper is what makes the height apply at all, and centres what is in it.
349
+ * Then the same two declarations again, one level deeper, for the mark itself.
350
+ *
351
+ * Two levels and not a descendant selector. A wrapper around the mark is the documented case and
352
+ * worth handling; anything deeper is a structure this component cannot reason about, and a rule
353
+ * that reset the size of everything inside the slot would be one that reached into a page's markup
354
+ * without knowing what it was touching.
355
+ */
356
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__brand > * > * {
357
+ block-size: 100%;
358
+ inline-size: auto;
359
+ }
360
+
361
+ /*
362
+ * The pill centres on its own margins, at every scroll position.
363
+ *
364
+ * Auto margins split the free space either side of a box, which is centring in the remainder rather
365
+ * than in the row — and that was the objection to them, back when the two ends were in the flow and
366
+ * one of them was wider than the other. The ends are out of flow now at the widths where this pill
367
+ * exists, so the remainder *is* the row: there is nothing else in it to divide the space with, and
368
+ * the pill lands on the centre line however wide the mark or the actions turn out to be.
369
+ *
370
+ * Which also retires the equal shares above. They stay because the collapsed arrangement still uses
371
+ * them, and because a basis of nothing on a box that is no longer a flex item costs nothing.
372
+ */
373
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster {
374
+ margin-inline: auto;
375
+ }
376
+
377
+ /*
378
+ * The ends leave upward and come back down the same way; what is in the pill is simply there.
379
+ *
380
+ * A transition rather than a keyframe, which is the whole of how the return was got. An animation
381
+ * plays when its rule starts matching and has nothing to say when it stops — so the departure ran
382
+ * on the way out and the ends snapped back into place on the way home. A transition is a change
383
+ * between two declared states, and there are exactly two here: at rest the ends sit in the row,
384
+ * gathered they are a step above it at nothing. It runs in whichever direction the scroll went.
385
+ *
386
+ * Nothing animates inside the pill. Both a fade and a travel were tried there and each read as a
387
+ * second event competing with the first — the eye follows the ends going and then finds the pill
388
+ * already holding them, which is what it expects, because the pill is the thing it was watching.
389
+ *
390
+ * Up by their own height — far enough to read as going rather than as settling, and not so far that
391
+ * it is crossing the page. The fade is what makes them gone: the box is out of flow while it is
392
+ * away and would otherwise sit over the row it left.
393
+ *
394
+ * `motion.duration.shift` and `motion.easing.shift`, which every part of this change takes — the
395
+ * ends leaving, the pill's shape opening, its ground turning, the ink following, and what it holds
396
+ * fading in. One change, one clock; earlier versions ran them at different paces and that was most
397
+ * of what read as a jump.
398
+ *
399
+ * Both roles were added for this and both point at primitives the package already had. The step is
400
+ * four hundred milliseconds: a press wants two hundred because the reader is waiting on their own
401
+ * action, and a scroll is not an action anybody is waiting on. The curve is symmetric, which
402
+ * `easing.standard` is not — this change runs both ways, and a reader who scrolls back up should
403
+ * see the same movement in reverse rather than a different one.
404
+ */
405
+
406
+ /*
407
+ * A gutter at both arrangements, and not the same one.
408
+ *
409
+ * Edge to edge was the first reading of "full-bleed" and it is the wrong one: what runs to the
410
+ * glass is the bar's ground, not the things standing on it. A mark touching the window reads as a
411
+ * page that has been cropped rather than as a frame — and the actions at the other end are worse,
412
+ * because a button whose fill meets the edge has no shape left on that side.
413
+ *
414
+ * Collapsed, the step is `space.inset.lg`, and it is not chosen for its own sake: it is where the
415
+ * panel puts its mark. The panel insets itself by one step and its header by another, and those two
416
+ * together are what the mark sits at — so this is the sum of somebody else's two numbers, and it
417
+ * has to be, because the whole point is that the mark does not move sideways at the moment a
418
+ * surface opens over the bar drawing it. It was matched to the panel's outer step alone and drifted
419
+ * the day the header gained one of its own; the mark jumped eight pixels and nothing failed.
420
+ *
421
+ * Drawn in full, the step is `space.inset.lg` — one step out from the collapsed sixteen, and
422
+ * fixed at twenty-four at every width. The adaptive role a step above was the first choice and it
423
+ * was too much: it opens to forty-eight on a wide screen, which sets the actions far enough off
424
+ * the edge that they read as belonging to a column that is not there rather than to the frame.
425
+ *
426
+ * On the ends rather than on the row, which is not where a gutter would naturally go. `@container`
427
+ * styles the descendants of whatever declares `container-type`, and that is the row itself — so it
428
+ * reaches the mark, the pill and the trigger, and cannot reach the box they sit in. The ground
429
+ * takes the other way out of this, standing in for the row as a child of it; a gutter could be
430
+ * moved the same way and has not been, because padding on the ends is the simpler statement of it.
431
+ *
432
+ * A container query and not a media one, which was the first attempt and was wrong everywhere the
433
+ * bar is not full-bleed. A media query asks the browser window; the bar's arrangement asks the row.
434
+ * Inside anything with its own width — a split layout, an embedded view, the stage this is judged
435
+ * in — the two disagree, and the bar collapses while the gutter stays off, which is exactly the
436
+ * case the container query was chosen for in the first place.
437
+ *
438
+ * `padding` on the mark and `margin` on the trigger, because one is a box around a picture and the
439
+ * other is a target a finger has to hit: padding inside the trigger would grow the target and shift
440
+ * the glyph off its own centre, where a margin moves the whole control and leaves it the size it
441
+ * declared.
442
+ */
443
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__brand {
444
+ padding-inline-start: var(--space-inset-lg);
445
+ }
446
+
447
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__trigger {
448
+ margin-inline-end: var(--space-inset-lg);
449
+ }
450
+
451
+ @container (min-width: 64rem) {
452
+ /*
453
+ * The row's own copies, not the pill's. The same two parts are drawn again inside the pill once
454
+ * the bar gathers, where they meet a shape that pads them itself — a gutter there would push the
455
+ * mark and the actions off the pill's ends rather than off the window's.
456
+ *
457
+ * The child combinator also outranks the collapsed rules above without either being written any
458
+ * deeper than what it overrides, which is the whole reason the narrow case is stated on the bare
459
+ * parts.
460
+ */
461
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__brand {
462
+ padding-inline-start: var(--space-inset-lg);
463
+ }
464
+
465
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__utilities {
466
+ padding-inline-end: var(--space-inset-lg);
467
+ }
468
+
469
+ /*
470
+ * And the control that opened the panel is not drawn at this width, so it needs no gutter — only
471
+ * the one it carries while collapsed, cleared.
472
+ */
473
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__trigger {
474
+ margin-inline-end: 0;
475
+ }
476
+ }
477
+
478
+ /*
479
+ * Which copy of the ends is the live one, and how the other one gets out of the way.
480
+ *
481
+ * They are written into the row and into the pill, and exactly one pair is showing. The choice
482
+ * needs the bar's width as well as its scroll state, and only a container query has the first — so
483
+ * the component renders both and this decides, rather than JavaScript guessing at a width it was
484
+ * deliberately not given.
485
+ *
486
+ * The one that is not showing collapses in place: nought wide, nothing visible, and still in the
487
+ * flow. That last part is the whole of why this reads as one bar changing rather than two swapping.
488
+ * A box that leaves the flow takes its space with it in a single frame, so the row rearranges
489
+ * instantly and every smooth thing after that has to be reconstructed — the pill's growth drawn on
490
+ * by hand, the destinations caught mid-jump and played back. A box that narrows to nothing gives
491
+ * its space up gradually, and the row does the rest by itself: the pill widens into it, and what it
492
+ * holds slides along.
493
+ *
494
+ * The inset goes with it, and has to: `box-sizing: border-box` stops a box being wider than its
495
+ * declared width but not narrower than its own padding, so a mark that collapsed to nothing still
496
+ * held its leading inset — twelve pixels of nothing at the pill's leading edge, and a gutter's worth
497
+ * at the row's.
498
+ *
499
+ * The gap goes with the width too. A flex container puts its gap either side of every item, including
500
+ * one that is nought wide — so a collapsed copy would leave a gap's worth of space behind it and
501
+ * the pill would sit wider than its contents at rest. The margin against that gap goes to minus it,
502
+ * on the side the gap is on: the marks are at a leading edge, the actions at a trailing one.
503
+ *
504
+ * `pointer-events: none` because a box with no width still answers a click on its own edge.
505
+ *
506
+ * These are the resting states only. What travels between them is measured and animated in the
507
+ * component, because CSS cannot interpolate between a length and `auto` — see `useCollapse`.
508
+ */
509
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster:not([data-condensed='true']) > .dds-navbar__brand {
510
+ inline-size: 0;
511
+ margin-inline-end: calc(var(--space-gap-md) * -1);
512
+ opacity: 0;
513
+ padding-inline: 0;
514
+ pointer-events: none;
515
+ }
516
+
517
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster:not([data-condensed='true']) > .dds-navbar__utilities {
518
+ inline-size: 0;
519
+ margin-inline-start: calc(var(--space-gap-md) * -1);
520
+ opacity: 0;
521
+ padding-inline: 0;
522
+ pointer-events: none;
523
+ }
524
+
525
+ @container (min-width: 64rem) {
526
+ /*
527
+ * And the row's pair does the same on the opposite schedule: showing until the bar gathers, then
528
+ * nought wide and invisible, still in the flow, giving their space up as the pill takes it.
529
+ *
530
+ * Rendered rather than not drawn, which is also what keeps the mark alive. The wordmark clips
531
+ * itself with a hard-coded id, and two copies in the markup means every reference resolves to the
532
+ * first in document order — this one. Hidden with `display: none` its subtree leaves the render
533
+ * tree, the clip path resolves to nothing, and the copy inside the pill paints as empty. That is
534
+ * the logo that kept disappearing.
535
+ */
536
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__brand[data-condensed='true'] {
537
+ flex-grow: 0;
538
+ margin-inline-end: calc(var(--space-gap-md) * -1);
539
+ opacity: 0;
540
+ pointer-events: none;
541
+ translate: 0 -100%;
542
+ }
543
+
544
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__utilities[data-condensed='true'] {
545
+ flex-grow: 0;
546
+ margin-inline-start: calc(var(--space-gap-md) * -1);
547
+ opacity: 0;
548
+ pointer-events: none;
549
+ translate: 0 -100%;
550
+ }
551
+
552
+ @media (prefers-reduced-motion: reduce) {
553
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__brand,
554
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner > .dds-navbar__utilities {
555
+ transition: none;
556
+ }
557
+ }
558
+ }
559
+
560
+ /*
561
+ * The pill changes rather than being replaced, and the colours have to say so.
562
+ *
563
+ * There is one of these in the markup and there always was: the same element holds the destinations
564
+ * at rest and the whole row once the bar gathers, which is why its ground, its corner and its lift
565
+ * are declared once and never handed between parts. What changes on scroll is what is inside it and
566
+ * what it is painted in — a bar standing on a dark hero wears the dark material, and a bar that has
567
+ * left that hero behind wears the page's.
568
+ *
569
+ * Instantly, though, and that is the part a reader cannot read. A surface that swaps colour in one
570
+ * frame while its contents change in the same frame is indistinguishable from a second surface
571
+ * arriving on top of the first. Carried across the same step everything else in this change takes,
572
+ * it is plainly the same pill: the shape never moves, and the colour arrives at the new one while
573
+ * the ends are still leaving.
574
+ *
575
+ * The ink travels with it, on the rail rather than here, because that is where the tone sets it and
576
+ * what every destination inside the pill inherits. Two properties, one clock.
577
+ *
578
+ * `transition` rather than a binding, because what varies here is an axis rather than a state: the
579
+ * generated sheet emits a transition for the properties a state moves and has nothing to say about
580
+ * one a data attribute swaps.
581
+ */
582
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster {
583
+ transition:
584
+ background-color var(--motion-duration-shift) var(--motion-easing-shift),
585
+ --dds-navbar-tint var(--motion-duration-shift) var(--motion-easing-shift);
586
+ }
587
+
588
+ :where([data-dds-context="marketing"]) .dds-navbar {
589
+ transition: color var(--motion-duration-shift) var(--motion-easing-shift);
590
+ }
591
+
592
+ @media (prefers-reduced-motion: reduce) {
593
+ :where([data-dds-context="marketing"]) .dds-navbar,
594
+ :where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster {
595
+ transition: none;
596
+ }
597
+ }