@deriv-com/dds-marketing 1.1.2 → 1.2.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 (401) hide show
  1. package/.llm/components/accordion.md +10 -0
  2. package/.llm/components/accordionitem.md +10 -0
  3. package/.llm/components/aspectratio.md +10 -0
  4. package/.llm/components/awards.md +10 -0
  5. package/.llm/components/background.md +52 -9
  6. package/.llm/components/badge.md +13 -3
  7. package/.llm/components/bottomsheet.md +13 -3
  8. package/.llm/components/breadcrumb.md +10 -0
  9. package/.llm/components/breadcrumbitem.md +10 -0
  10. package/.llm/components/button.md +13 -3
  11. package/.llm/components/buttonicon.md +17 -7
  12. package/.llm/components/card.md +11 -1
  13. package/.llm/components/cardbody.md +12 -2
  14. package/.llm/components/cardbutton.md +10 -0
  15. package/.llm/components/checkbox.md +7 -1
  16. package/.llm/components/comparisoncards.md +13 -3
  17. package/.llm/components/comparisontable.md +10 -0
  18. package/.llm/components/ctabanner.md +10 -0
  19. package/.llm/components/ctabannerslider.md +10 -0
  20. package/.llm/components/datatable.md +10 -0
  21. package/.llm/components/divider.md +10 -0
  22. package/.llm/components/documentlink.md +237 -0
  23. package/.llm/components/documents.md +268 -0
  24. package/.llm/components/downloadbanner.md +11 -1
  25. package/.llm/components/dropdownmenu.md +15 -5
  26. package/.llm/components/estimator.md +342 -0
  27. package/.llm/components/faqaccordion.md +10 -0
  28. package/.llm/components/featurebullets.md +10 -0
  29. package/.llm/components/featurecards.md +47 -3
  30. package/.llm/components/featurecardscarousel.md +11 -1
  31. package/.llm/components/featurescroll.md +10 -0
  32. package/.llm/components/featuresplit.md +10 -0
  33. package/.llm/components/featurestack.md +10 -0
  34. package/.llm/components/featuretabs.md +369 -0
  35. package/.llm/components/filterchip.md +11 -1
  36. package/.llm/components/footer.md +10 -0
  37. package/.llm/components/footergroup.md +10 -0
  38. package/.llm/components/grid.md +34 -1
  39. package/.llm/components/icon.md +15 -5
  40. package/.llm/components/illustrationcard.md +56 -2
  41. package/.llm/components/illustrationcheck.md +193 -0
  42. package/.llm/components/illustrationchoice.md +187 -0
  43. package/.llm/components/illustrationcode.md +192 -0
  44. package/.llm/components/illustrationlist.md +175 -0
  45. package/.llm/components/illustrationscene.md +33 -3
  46. package/.llm/components/imagebanner.md +35 -6
  47. package/.llm/components/landinghero.md +10 -0
  48. package/.llm/components/link.md +12 -2
  49. package/.llm/components/logocolumns.md +11 -1
  50. package/.llm/components/logorows.md +46 -2
  51. package/.llm/components/menuitem.md +12 -2
  52. package/.llm/components/navbar.md +11 -1
  53. package/.llm/components/navbaritem.md +10 -0
  54. package/.llm/components/navbarmenu.md +10 -0
  55. package/.llm/components/navbarmenugroup.md +10 -0
  56. package/.llm/components/navbarpanel.md +10 -0
  57. package/.llm/components/navbarswitcher.md +16 -6
  58. package/.llm/components/navbarswitcheroption.md +10 -0
  59. package/.llm/components/option.md +11 -1
  60. package/.llm/components/pageheader.md +10 -0
  61. package/.llm/components/pagination.md +10 -0
  62. package/.llm/components/paginationdots.md +10 -0
  63. package/.llm/components/producthero.md +33 -4
  64. package/.llm/components/progressbar.md +305 -0
  65. package/.llm/components/removablechip.md +11 -1
  66. package/.llm/components/resourcebanner.md +10 -0
  67. package/.llm/components/row.md +10 -0
  68. package/.llm/components/scenescroll.md +42 -24
  69. package/.llm/components/scenescrollword.md +267 -0
  70. package/.llm/components/scroller.md +10 -0
  71. package/.llm/components/searchinput.md +10 -0
  72. package/.llm/components/segmentedcontrol.md +33 -2
  73. package/.llm/components/segmentedcontrolitem.md +12 -2
  74. package/.llm/components/select.md +10 -0
  75. package/.llm/components/selectchip.md +10 -0
  76. package/.llm/components/spinner.md +10 -0
  77. package/.llm/components/stack.md +10 -0
  78. package/.llm/components/stats.md +50 -1
  79. package/.llm/components/statscarousel.md +227 -0
  80. package/.llm/components/statusdot.md +45 -1
  81. package/.llm/components/steps.md +10 -0
  82. package/.llm/components/stickycards.md +10 -0
  83. package/.llm/components/subdomainnavbar.md +11 -1
  84. package/.llm/components/tab.md +12 -2
  85. package/.llm/components/table.md +10 -0
  86. package/.llm/components/tablebody.md +10 -0
  87. package/.llm/components/tablecell.md +10 -0
  88. package/.llm/components/tablehead.md +10 -0
  89. package/.llm/components/tableheadercell.md +10 -0
  90. package/.llm/components/tablerow.md +10 -0
  91. package/.llm/components/tablist.md +10 -0
  92. package/.llm/components/teamgrid.md +10 -0
  93. package/.llm/components/testimonialrow.md +47 -3
  94. package/.llm/components/testimonialslider.md +12 -2
  95. package/.llm/components/textarea.md +10 -0
  96. package/.llm/components/textinput.md +11 -1
  97. package/.llm/components/textscroll.md +10 -0
  98. package/.llm/components/tiers.md +17 -7
  99. package/.llm/components/tooltip.md +6 -0
  100. package/.llm/components/typography.md +67 -1
  101. package/.llm/digest/accordion.md +1 -1
  102. package/.llm/digest/accordionitem.md +1 -1
  103. package/.llm/digest/aspectratio.md +1 -1
  104. package/.llm/digest/awards.md +1 -1
  105. package/.llm/digest/background.md +14 -6
  106. package/.llm/digest/badge.md +1 -1
  107. package/.llm/digest/bottomsheet.md +1 -1
  108. package/.llm/digest/breadcrumb.md +1 -1
  109. package/.llm/digest/breadcrumbitem.md +1 -1
  110. package/.llm/digest/button.md +2 -2
  111. package/.llm/digest/buttonicon.md +2 -2
  112. package/.llm/digest/card.md +1 -1
  113. package/.llm/digest/cardbody.md +1 -1
  114. package/.llm/digest/cardbutton.md +1 -1
  115. package/.llm/digest/checkbox.md +1 -1
  116. package/.llm/digest/comparisoncards.md +1 -1
  117. package/.llm/digest/comparisontable.md +1 -1
  118. package/.llm/digest/ctabanner.md +1 -1
  119. package/.llm/digest/ctabannerslider.md +1 -1
  120. package/.llm/digest/datatable.md +1 -1
  121. package/.llm/digest/divider.md +1 -1
  122. package/.llm/digest/documentlink.md +52 -0
  123. package/.llm/digest/documents.md +51 -0
  124. package/.llm/digest/downloadbanner.md +2 -2
  125. package/.llm/digest/dropdownmenu.md +1 -1
  126. package/.llm/digest/estimator.md +66 -0
  127. package/.llm/digest/faqaccordion.md +1 -1
  128. package/.llm/digest/featurebullets.md +1 -1
  129. package/.llm/digest/featurecards.md +8 -1
  130. package/.llm/digest/featurecardscarousel.md +1 -1
  131. package/.llm/digest/featurescroll.md +1 -1
  132. package/.llm/digest/featuresplit.md +1 -1
  133. package/.llm/digest/featurestack.md +1 -1
  134. package/.llm/digest/featuretabs.md +50 -0
  135. package/.llm/digest/filterchip.md +1 -1
  136. package/.llm/digest/footer.md +1 -1
  137. package/.llm/digest/footergroup.md +1 -1
  138. package/.llm/digest/grid.md +2 -1
  139. package/.llm/digest/icon.md +1 -1
  140. package/.llm/digest/illustrationcard.md +7 -2
  141. package/.llm/digest/illustrationcheck.md +42 -0
  142. package/.llm/digest/illustrationchoice.md +43 -0
  143. package/.llm/digest/illustrationcode.md +41 -0
  144. package/.llm/digest/illustrationlist.md +38 -0
  145. package/.llm/digest/illustrationscene.md +5 -3
  146. package/.llm/digest/imagebanner.md +11 -5
  147. package/.llm/digest/landinghero.md +1 -1
  148. package/.llm/digest/link.md +1 -1
  149. package/.llm/digest/logocolumns.md +2 -2
  150. package/.llm/digest/logorows.md +9 -2
  151. package/.llm/digest/menuitem.md +1 -1
  152. package/.llm/digest/navbar.md +1 -1
  153. package/.llm/digest/navbaritem.md +1 -1
  154. package/.llm/digest/navbarmenu.md +1 -1
  155. package/.llm/digest/navbarmenugroup.md +1 -1
  156. package/.llm/digest/navbarpanel.md +1 -1
  157. package/.llm/digest/navbarswitcher.md +1 -1
  158. package/.llm/digest/navbarswitcheroption.md +1 -1
  159. package/.llm/digest/option.md +1 -1
  160. package/.llm/digest/pageheader.md +1 -1
  161. package/.llm/digest/pagination.md +1 -1
  162. package/.llm/digest/paginationdots.md +1 -1
  163. package/.llm/digest/producthero.md +9 -3
  164. package/.llm/digest/progressbar.md +56 -0
  165. package/.llm/digest/removablechip.md +1 -1
  166. package/.llm/digest/resourcebanner.md +1 -1
  167. package/.llm/digest/row.md +1 -1
  168. package/.llm/digest/scenescroll.md +7 -6
  169. package/.llm/digest/scenescrollword.md +56 -0
  170. package/.llm/digest/scroller.md +1 -1
  171. package/.llm/digest/searchinput.md +1 -1
  172. package/.llm/digest/segmentedcontrol.md +4 -1
  173. package/.llm/digest/segmentedcontrolitem.md +2 -2
  174. package/.llm/digest/select.md +1 -1
  175. package/.llm/digest/selectchip.md +1 -1
  176. package/.llm/digest/spinner.md +1 -1
  177. package/.llm/digest/stack.md +1 -1
  178. package/.llm/digest/stats.md +9 -1
  179. package/.llm/digest/statscarousel.md +48 -0
  180. package/.llm/digest/statusdot.md +8 -1
  181. package/.llm/digest/steps.md +1 -1
  182. package/.llm/digest/stickycards.md +1 -1
  183. package/.llm/digest/subdomainnavbar.md +1 -1
  184. package/.llm/digest/tab.md +1 -1
  185. package/.llm/digest/table.md +1 -1
  186. package/.llm/digest/tablebody.md +1 -1
  187. package/.llm/digest/tablecell.md +1 -1
  188. package/.llm/digest/tablehead.md +1 -1
  189. package/.llm/digest/tableheadercell.md +1 -1
  190. package/.llm/digest/tablerow.md +1 -1
  191. package/.llm/digest/tablist.md +1 -1
  192. package/.llm/digest/teamgrid.md +1 -1
  193. package/.llm/digest/testimonialrow.md +9 -2
  194. package/.llm/digest/testimonialslider.md +2 -2
  195. package/.llm/digest/textarea.md +1 -1
  196. package/.llm/digest/textinput.md +1 -1
  197. package/.llm/digest/textscroll.md +1 -1
  198. package/.llm/digest/tiers.md +1 -1
  199. package/.llm/digest/typography.md +19 -1
  200. package/.llm/index.md +15 -4
  201. package/.llm/rules.md +10 -0
  202. package/.llm/tokens.md +13 -3
  203. package/AGENTS.md +14 -2
  204. package/README.md +28 -3
  205. package/dist/components/arrival.d.ts +32 -0
  206. package/dist/components/arrival.js +140 -0
  207. package/dist/components/arrives.d.ts +17 -0
  208. package/dist/components/arrives.js +14 -0
  209. package/dist/components/blocks/awards/Awards.js +2 -27
  210. package/dist/components/blocks/block-pattern.css +23 -0
  211. package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +29 -12
  212. package/dist/components/blocks/documents/Documents.css +90 -0
  213. package/dist/components/blocks/documents/Documents.d.ts +22 -0
  214. package/dist/components/blocks/documents/Documents.js +30 -0
  215. package/dist/components/blocks/documents/Documents.types.d.ts +37 -0
  216. package/dist/components/blocks/documents/Documents.types.js +14 -0
  217. package/dist/components/blocks/documents/documents-impl.css +103 -0
  218. package/dist/components/blocks/download-banner/DownloadBanner.css +1 -1
  219. package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +1 -1
  220. package/dist/components/blocks/estimator/Estimator.css +206 -0
  221. package/dist/components/blocks/estimator/Estimator.d.ts +27 -0
  222. package/dist/components/blocks/estimator/Estimator.js +61 -0
  223. package/dist/components/blocks/estimator/Estimator.types.d.ts +63 -0
  224. package/dist/components/blocks/estimator/Estimator.types.js +25 -0
  225. package/dist/components/blocks/estimator/estimator-impl.css +159 -0
  226. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +2 -1
  227. package/dist/components/blocks/feature-cards/FeatureCards.js +10 -7
  228. package/dist/components/blocks/feature-cards/FeatureCards.types.d.ts +9 -1
  229. package/dist/components/blocks/feature-cards/feature-cards-impl.css +15 -3
  230. package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +1 -1
  231. package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +12 -0
  232. package/dist/components/blocks/feature-tabs/FeatureTabs.css +100 -0
  233. package/dist/components/blocks/feature-tabs/FeatureTabs.d.ts +23 -0
  234. package/dist/components/blocks/feature-tabs/FeatureTabs.js +38 -0
  235. package/dist/components/blocks/feature-tabs/FeatureTabs.types.d.ts +35 -0
  236. package/dist/components/blocks/feature-tabs/FeatureTabs.types.js +14 -0
  237. package/dist/components/blocks/feature-tabs/feature-tabs-impl.css +53 -0
  238. package/dist/components/blocks/image-banner/ImageBanner.css +1 -1
  239. package/dist/components/blocks/image-banner/ImageBanner.d.ts +2 -1
  240. package/dist/components/blocks/image-banner/ImageBanner.js +3 -2
  241. package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +10 -8
  242. package/dist/components/blocks/image-banner/ImageBanner.types.js +1 -1
  243. package/dist/components/blocks/image-banner/image-banner-impl.css +78 -71
  244. package/dist/components/blocks/laurel.d.ts +16 -0
  245. package/dist/components/blocks/laurel.js +28 -0
  246. package/dist/components/blocks/logo-columns/LogoColumns.css +1 -1
  247. package/dist/components/blocks/logo-columns/LogoColumns.types.d.ts +1 -1
  248. package/dist/components/blocks/logo-rows/LogoRows.css +1 -1
  249. package/dist/components/blocks/logo-rows/LogoRows.d.ts +2 -1
  250. package/dist/components/blocks/logo-rows/LogoRows.js +7 -4
  251. package/dist/components/blocks/logo-rows/LogoRows.types.d.ts +9 -1
  252. package/dist/components/blocks/pattern-tone.d.ts +11 -0
  253. package/dist/components/blocks/pattern-tone.js +7 -0
  254. package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
  255. package/dist/components/blocks/product-hero/ProductHero.js +2 -2
  256. package/dist/components/blocks/product-hero/ProductHero.types.d.ts +8 -3
  257. package/dist/components/blocks/product-hero/ProductHero.types.js +1 -1
  258. package/dist/components/blocks/product-hero/product-hero-impl.css +54 -0
  259. package/dist/components/blocks/resource-banner/ResourceBanner.css +1 -1
  260. package/dist/components/blocks/scene-scroll/SceneScroll.css +1 -1
  261. package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +6 -5
  262. package/dist/components/blocks/scene-scroll/SceneScroll.js +8 -7
  263. package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +5 -5
  264. package/dist/components/blocks/scene-scroll/SceneScroll.types.js +1 -1
  265. package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +61 -44
  266. package/dist/components/blocks/scene-scroll-word/SceneScrollWord.css +105 -0
  267. package/dist/components/blocks/scene-scroll-word/SceneScrollWord.d.ts +31 -0
  268. package/dist/components/blocks/scene-scroll-word/SceneScrollWord.js +67 -0
  269. package/dist/components/blocks/scene-scroll-word/SceneScrollWord.types.d.ts +39 -0
  270. package/dist/components/blocks/scene-scroll-word/SceneScrollWord.types.js +18 -0
  271. package/dist/components/blocks/scene-scroll-word/scene-scroll-word-impl.css +370 -0
  272. package/dist/components/blocks/stats/Stats.d.ts +2 -1
  273. package/dist/components/blocks/stats/Stats.js +17 -14
  274. package/dist/components/blocks/stats/Stats.types.d.ts +8 -0
  275. package/dist/components/blocks/stats/stats-impl.css +4 -1
  276. package/dist/components/blocks/stats/use-wheel.d.ts +1 -1
  277. package/dist/components/blocks/stats/use-wheel.js +8 -4
  278. package/dist/components/blocks/stats-carousel/StatsCarousel.css +209 -0
  279. package/dist/components/blocks/stats-carousel/StatsCarousel.d.ts +20 -0
  280. package/dist/components/blocks/stats-carousel/StatsCarousel.js +48 -0
  281. package/dist/components/blocks/stats-carousel/StatsCarousel.types.d.ts +43 -0
  282. package/dist/components/blocks/stats-carousel/StatsCarousel.types.js +23 -0
  283. package/dist/components/blocks/stats-carousel/stats-carousel-impl.css +233 -0
  284. package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +8 -0
  285. package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -1
  286. package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +2 -1
  287. package/dist/components/blocks/testimonial-row/TestimonialRow.js +16 -13
  288. package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +9 -1
  289. package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -1
  290. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +1 -1
  291. package/dist/components/blocks/tiers/Tiers.types.d.ts +1 -1
  292. package/dist/components/core/background/Background.css +19 -0
  293. package/dist/components/core/background/Background.types.d.ts +2 -1
  294. package/dist/components/core/background/background-impl.css +47 -15
  295. package/dist/components/core/background/halftone.js +1 -1
  296. package/dist/components/core/button/Button.css +5 -5
  297. package/dist/components/core/button-icon/ButtonIcon.types.d.ts +1 -1
  298. package/dist/components/core/card-body/CardBody.css +5 -0
  299. package/dist/components/core/card-body/CardBody.types.d.ts +1 -1
  300. package/dist/components/core/document-link/DocumentLink.css +59 -0
  301. package/dist/components/core/document-link/DocumentLink.d.ts +19 -0
  302. package/dist/components/core/document-link/DocumentLink.js +21 -0
  303. package/dist/components/core/document-link/DocumentLink.types.d.ts +41 -0
  304. package/dist/components/core/document-link/DocumentLink.types.js +11 -0
  305. package/dist/components/core/document-link/document-link-impl.css +23 -0
  306. package/dist/components/core/illustration-card/IllustrationCard.css +7 -0
  307. package/dist/components/core/illustration-card/IllustrationCard.d.ts +5 -1
  308. package/dist/components/core/illustration-card/IllustrationCard.js +34 -8
  309. package/dist/components/core/illustration-card/IllustrationCard.types.d.ts +8 -1
  310. package/dist/components/core/illustration-card/IllustrationCard.types.js +1 -0
  311. package/dist/components/core/illustration-card/illustration-card-impl.css +113 -0
  312. package/dist/components/core/illustration-check/IllustrationCheck.css +25 -0
  313. package/dist/components/core/illustration-check/IllustrationCheck.d.ts +16 -0
  314. package/dist/components/core/illustration-check/IllustrationCheck.js +22 -0
  315. package/dist/components/core/illustration-check/IllustrationCheck.types.d.ts +25 -0
  316. package/dist/components/core/illustration-check/IllustrationCheck.types.js +9 -0
  317. package/dist/components/core/illustration-check/illustration-check-impl.css +76 -0
  318. package/dist/components/core/illustration-choice/IllustrationChoice.css +62 -0
  319. package/dist/components/core/illustration-choice/IllustrationChoice.d.ts +16 -0
  320. package/dist/components/core/illustration-choice/IllustrationChoice.js +31 -0
  321. package/dist/components/core/illustration-choice/IllustrationChoice.types.d.ts +25 -0
  322. package/dist/components/core/illustration-choice/IllustrationChoice.types.js +11 -0
  323. package/dist/components/core/illustration-choice/illustration-choice-impl.css +103 -0
  324. package/dist/components/core/illustration-code/IllustrationCode.css +25 -0
  325. package/dist/components/core/illustration-code/IllustrationCode.d.ts +12 -0
  326. package/dist/components/core/illustration-code/IllustrationCode.js +20 -0
  327. package/dist/components/core/illustration-code/IllustrationCode.types.d.ts +23 -0
  328. package/dist/components/core/illustration-code/IllustrationCode.types.js +8 -0
  329. package/dist/components/core/illustration-code/illustration-code-impl.css +42 -0
  330. package/dist/components/core/illustration-list/IllustrationList.css +19 -0
  331. package/dist/components/core/illustration-list/IllustrationList.d.ts +16 -0
  332. package/dist/components/core/illustration-list/IllustrationList.js +18 -0
  333. package/dist/components/core/illustration-list/IllustrationList.types.d.ts +15 -0
  334. package/dist/components/core/illustration-list/IllustrationList.types.js +6 -0
  335. package/dist/components/core/illustration-list/illustration-list-impl.css +52 -0
  336. package/dist/components/core/illustration-scene/IllustrationScene.css +6 -0
  337. package/dist/components/core/illustration-scene/IllustrationScene.d.ts +3 -2
  338. package/dist/components/core/illustration-scene/IllustrationScene.js +4 -3
  339. package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +5 -1
  340. package/dist/components/core/illustration-scene/IllustrationScene.types.js +2 -1
  341. package/dist/components/core/illustration-scene/illustration-scene-impl.css +65 -0
  342. package/dist/components/core/link/link-impl.css +5 -19
  343. package/dist/components/core/progress-bar/ProgressBar.css +101 -0
  344. package/dist/components/core/progress-bar/ProgressBar.d.ts +5 -0
  345. package/dist/components/core/progress-bar/ProgressBar.js +34 -0
  346. package/dist/components/core/progress-bar/ProgressBar.types.d.ts +52 -0
  347. package/dist/components/core/progress-bar/ProgressBar.types.js +12 -0
  348. package/dist/components/core/progress-bar/progress-bar-impl.css +45 -0
  349. package/dist/components/core/segmented-control/SegmentedControl.d.ts +1 -1
  350. package/dist/components/core/segmented-control/SegmentedControl.js +13 -5
  351. package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +5 -1
  352. package/dist/components/core/segmented-control/segmented-control-impl.css +35 -0
  353. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +1 -1
  354. package/dist/components/core/select/Select.css +2 -0
  355. package/dist/components/core/select/select-impl.css +58 -0
  356. package/dist/components/core/status-dot/StatusDot.d.ts +1 -1
  357. package/dist/components/core/status-dot/StatusDot.js +7 -4
  358. package/dist/components/core/status-dot/StatusDot.types.d.ts +9 -1
  359. package/dist/components/core/status-dot/status-dot-impl.css +101 -0
  360. package/dist/components/core/text-area/TextArea.css +2 -0
  361. package/dist/components/core/text-area/text-area-impl.css +54 -0
  362. package/dist/components/core/text-input/TextInput.css +2 -0
  363. package/dist/components/core/text-input/text-input-impl.css +63 -0
  364. package/dist/components/core/typography/Typography.d.ts +3 -283
  365. package/dist/components/core/typography/Typography.js +9 -1
  366. package/dist/components/core/typography/Typography.types.d.ts +9 -15
  367. package/dist/components/core/typography/TypographyMotion.d.ts +28 -0
  368. package/dist/components/core/typography/TypographyMotion.js +43 -0
  369. package/dist/components/core/typography/typography-impl.css +106 -0
  370. package/dist/components/estimator-data.d.ts +29 -0
  371. package/dist/components/estimator-data.js +12 -0
  372. package/dist/components/illustration-data.d.ts +15 -0
  373. package/dist/components/illustration-data.js +7 -0
  374. package/dist/components/index.d.ts +25 -1
  375. package/dist/components/index.js +22 -0
  376. package/dist/components/layout/grid/Grid.css +5 -0
  377. package/dist/components/layout/grid/Grid.types.d.ts +2 -1
  378. package/dist/components/scene-scroll-data.d.ts +35 -0
  379. package/dist/components/tiers-data.d.ts +3 -2
  380. package/dist/icons/accounts.d.ts +1 -0
  381. package/dist/icons/accounts.js +1 -0
  382. package/dist/icons/app-stores.d.ts +1 -0
  383. package/dist/icons/app-stores.js +1 -0
  384. package/dist/icons/currency.d.ts +1 -0
  385. package/dist/icons/currency.js +1 -0
  386. package/dist/icons/flag.d.ts +1 -0
  387. package/dist/icons/flag.js +1 -0
  388. package/dist/icons/illustrative.d.ts +1 -0
  389. package/dist/icons/illustrative.js +1 -0
  390. package/dist/icons/index.d.ts +1 -0
  391. package/dist/icons/index.js +4 -0
  392. package/dist/icons/markets.d.ts +1 -0
  393. package/dist/icons/markets.js +1 -0
  394. package/dist/icons/social.d.ts +1 -0
  395. package/dist/icons/social.js +1 -0
  396. package/dist/icons/system.d.ts +1 -0
  397. package/dist/icons/system.js +1 -0
  398. package/dist/icons/trade.d.ts +1 -0
  399. package/dist/icons/trade.js +1 -0
  400. package/dist/marketing.css +26 -6
  401. package/package.json +44 -2
@@ -34,3 +34,57 @@
34
34
  :where([data-dds-context="marketing"]) .dds-textarea__message-icon {
35
35
  block-size: calc(var(--font-body-sm-size) * var(--font-body-sm-line-height));
36
36
  }
37
+
38
+ /*
39
+ * The status message fades in when it arrives.
40
+ *
41
+ * A contract binds transitions, and a transition needs a value to move from: the message is not
42
+ * in the DOM until a status is reported, so only a keyframe can bring it in. Opacity alone — the
43
+ * message takes the helper's place rather than pushing the row down, so there is no distance to
44
+ * travel, and moving it would shift the words being read. A status changing while the message is
45
+ * showing keeps the same element, and its colour moves with the transition the contract binds.
46
+ */
47
+ @keyframes dds-textarea-message-in {
48
+ from {
49
+ opacity: 0;
50
+ }
51
+ }
52
+
53
+ :where([data-dds-context="marketing"]) .dds-textarea .dds-textarea__message {
54
+ animation: dds-textarea-message-in var(--motion-duration-normal) var(--motion-easing-enter);
55
+ }
56
+
57
+ /*
58
+ * The box shakes once when the field turns to an error, as TextInput's does.
59
+ *
60
+ * Once, on arrival: the animation is attached by the error status, so it plays when the status
61
+ * becomes error and not again while it stays one. Only the box moves; the label and the
62
+ * message hold still, so the words saying what went wrong can be read while it settles.
63
+ */
64
+ @keyframes dds-textarea-shake {
65
+ 20% {
66
+ translate: calc(var(--motion-distance-shake) * -1) 0;
67
+ }
68
+ 40% {
69
+ translate: var(--motion-distance-shake) 0;
70
+ }
71
+ 60% {
72
+ translate: calc(var(--motion-distance-shake) * -0.5) 0;
73
+ }
74
+ 80% {
75
+ translate: calc(var(--motion-distance-shake) * 0.5) 0;
76
+ }
77
+ }
78
+
79
+ :where([data-dds-context="marketing"]) .dds-textarea[data-status="error"] .dds-textarea__control {
80
+ animation: dds-textarea-shake var(--motion-duration-slow) var(--motion-easing-standard);
81
+ }
82
+
83
+ /* The generated reduce block is written from the token bindings and these are not. A reader who
84
+ has asked for less movement has asked for this too. */
85
+ @media (prefers-reduced-motion: reduce) {
86
+ :where([data-dds-context="marketing"]) .dds-textarea .dds-textarea__message,
87
+ :where([data-dds-context="marketing"]) .dds-textarea[data-status="error"] .dds-textarea__control {
88
+ animation: none;
89
+ }
90
+ }
@@ -118,6 +118,8 @@
118
118
  gap: var(--space-gap-xs);
119
119
  letter-spacing: var(--font-body-sm-letter-spacing);
120
120
  line-height: var(--font-body-sm-line-height);
121
+ transition-duration: var(--motion-duration-fast);
122
+ transition-timing-function: var(--motion-easing-standard);
121
123
  }
122
124
 
123
125
  :where([data-dds-context="marketing"]) .dds-textinput .dds-textinput__message-icon {
@@ -34,3 +34,66 @@
34
34
  :where([data-dds-context="marketing"]) .dds-textinput__message-icon {
35
35
  block-size: calc(var(--font-body-sm-size) * var(--font-body-sm-line-height));
36
36
  }
37
+
38
+ /*
39
+ * The status message fades in when it arrives.
40
+ *
41
+ * A contract binds transitions, and a transition needs a value to move from: the message is not
42
+ * in the DOM until a status is reported, so there is nothing to transition and only a keyframe
43
+ * can bring it in. Opacity alone — the message takes the helper's place rather than pushing the
44
+ * row down, so there is no distance to travel, and moving it would shift the words being read.
45
+ *
46
+ * It plays once, on arrival. A status changing while the message is already showing keeps the
47
+ * same element, and its colour moves with the transition the contract binds rather than the
48
+ * whole message blinking out and back.
49
+ */
50
+ @keyframes dds-textinput-message-in {
51
+ from {
52
+ opacity: 0;
53
+ }
54
+ }
55
+
56
+ :where([data-dds-context="marketing"]) .dds-textinput .dds-textinput__message {
57
+ animation: dds-textinput-message-in var(--motion-duration-normal) var(--motion-easing-enter);
58
+ }
59
+
60
+ /*
61
+ * The box shakes once when the field turns to an error.
62
+ *
63
+ * Once, on arrival: the animation is attached by the error status, so it plays when the status
64
+ * becomes error and not again while it stays one — typing on in a field that is still wrong does
65
+ * not shake it at every keystroke. Leaving the error and coming back is a new refusal and shakes
66
+ * again. Only the box moves; the label above it and the message below hold still, so the words
67
+ * saying what went wrong can be read while it settles.
68
+ *
69
+ * Each swing is smaller than the last, so it reads as a shake that stops rather than a vibration
70
+ * that is cut off. The swing is symmetric, so it reads the same in either writing direction.
71
+ */
72
+ @keyframes dds-textinput-shake {
73
+ 20% {
74
+ translate: calc(var(--motion-distance-shake) * -1) 0;
75
+ }
76
+ 40% {
77
+ translate: var(--motion-distance-shake) 0;
78
+ }
79
+ 60% {
80
+ translate: calc(var(--motion-distance-shake) * -0.5) 0;
81
+ }
82
+ 80% {
83
+ translate: calc(var(--motion-distance-shake) * 0.5) 0;
84
+ }
85
+ }
86
+
87
+ :where([data-dds-context="marketing"]) .dds-textinput[data-status="error"] .dds-textinput__control {
88
+ animation: dds-textinput-shake var(--motion-duration-slow) var(--motion-easing-standard);
89
+ }
90
+
91
+ /* The generated reduce block is written from the token bindings and these are not. A reader who
92
+ has asked for less movement has asked for this too — and a shake is the movement most likely
93
+ to be the reason they asked. */
94
+ @media (prefers-reduced-motion: reduce) {
95
+ :where([data-dds-context="marketing"]) .dds-textinput .dds-textinput__message,
96
+ :where([data-dds-context="marketing"]) .dds-textinput[data-status="error"] .dds-textinput__control {
97
+ animation: none;
98
+ }
99
+ }
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import './Typography.css';
3
+ import './typography-impl.css';
3
4
  import { type TypographyProps } from './Typography.types.js';
4
5
  export type { TypographyProps };
5
6
  /**
@@ -11,287 +12,6 @@ export type { TypographyProps };
11
12
  * than advisory: `as="h2" variant="h1"` is a section heading drawn at hero scale, and a page
12
13
  * cannot reach for a size and receive a document structure it did not ask for.
13
14
  */
14
- export declare function Typography({ variant, as, children, ...rest }: TypographyProps & {
15
+ export declare function Typography({ variant, as, motion, from, children, ...rest }: TypographyProps & {
15
16
  children?: ReactNode;
16
- }): import("react").DetailedReactHTMLElement<{
17
- className: "dds-typography";
18
- 'data-variant': "figure" | "h1" | "h2" | "h3" | "h4" | "h5" | "eyebrow" | "subtitle" | "body-lg" | "body-md" | "body-sm";
19
- defaultChecked?: boolean | undefined | undefined;
20
- defaultValue?: string | number | readonly string[] | undefined;
21
- suppressContentEditableWarning?: boolean | undefined | undefined;
22
- suppressHydrationWarning?: boolean | undefined | undefined;
23
- accessKey?: string | undefined | undefined;
24
- autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
25
- autoFocus?: boolean | undefined | undefined;
26
- contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
27
- contextMenu?: string | undefined | undefined;
28
- dir?: string | undefined | undefined;
29
- draggable?: (boolean | "true" | "false") | undefined;
30
- enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
31
- hidden?: boolean | undefined | undefined;
32
- id?: string | undefined | undefined;
33
- lang?: string | undefined | undefined;
34
- nonce?: string | undefined | undefined;
35
- slot?: string | undefined | undefined;
36
- spellCheck?: (boolean | "true" | "false") | undefined;
37
- style?: import("react").CSSProperties | undefined;
38
- tabIndex?: number | undefined | undefined;
39
- title?: string | undefined | undefined;
40
- translate?: "yes" | "no" | undefined | undefined;
41
- radioGroup?: string | undefined | undefined;
42
- role?: import("react").AriaRole | undefined;
43
- about?: string | undefined | undefined;
44
- content?: string | undefined | undefined;
45
- datatype?: string | undefined | undefined;
46
- inlist?: any;
47
- prefix?: string | undefined | undefined;
48
- property?: string | undefined | undefined;
49
- rel?: string | undefined | undefined;
50
- resource?: string | undefined | undefined;
51
- rev?: string | undefined | undefined;
52
- typeof?: string | undefined | undefined;
53
- vocab?: string | undefined | undefined;
54
- autoCorrect?: string | undefined | undefined;
55
- autoSave?: string | undefined | undefined;
56
- color?: string | undefined | undefined;
57
- itemProp?: string | undefined | undefined;
58
- itemScope?: boolean | undefined | undefined;
59
- itemType?: string | undefined | undefined;
60
- itemID?: string | undefined | undefined;
61
- itemRef?: string | undefined | undefined;
62
- results?: number | undefined | undefined;
63
- security?: string | undefined | undefined;
64
- unselectable?: "on" | "off" | undefined | undefined;
65
- popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
66
- popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
67
- popoverTarget?: string | undefined | undefined;
68
- inert?: boolean | undefined | undefined;
69
- inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
70
- is?: string | undefined | undefined;
71
- exportparts?: string | undefined | undefined;
72
- part?: string | undefined | undefined;
73
- "aria-activedescendant"?: string | undefined | undefined;
74
- "aria-atomic"?: (boolean | "true" | "false") | undefined;
75
- "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
76
- "aria-braillelabel"?: string | undefined | undefined;
77
- "aria-brailleroledescription"?: string | undefined | undefined;
78
- "aria-busy"?: (boolean | "true" | "false") | undefined;
79
- "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
80
- "aria-colcount"?: number | undefined | undefined;
81
- "aria-colindex"?: number | undefined | undefined;
82
- "aria-colindextext"?: string | undefined | undefined;
83
- "aria-colspan"?: number | undefined | undefined;
84
- "aria-controls"?: string | undefined | undefined;
85
- "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
86
- "aria-describedby"?: string | undefined | undefined;
87
- "aria-description"?: string | undefined | undefined;
88
- "aria-details"?: string | undefined | undefined;
89
- "aria-disabled"?: (boolean | "true" | "false") | undefined;
90
- "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
91
- "aria-errormessage"?: string | undefined | undefined;
92
- "aria-expanded"?: (boolean | "true" | "false") | undefined;
93
- "aria-flowto"?: string | undefined | undefined;
94
- "aria-grabbed"?: (boolean | "true" | "false") | undefined;
95
- "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
96
- "aria-hidden"?: (boolean | "true" | "false") | undefined;
97
- "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
98
- "aria-keyshortcuts"?: string | undefined | undefined;
99
- "aria-label"?: string | undefined | undefined;
100
- "aria-labelledby"?: string | undefined | undefined;
101
- "aria-level"?: number | undefined | undefined;
102
- "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
103
- "aria-modal"?: (boolean | "true" | "false") | undefined;
104
- "aria-multiline"?: (boolean | "true" | "false") | undefined;
105
- "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
106
- "aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
107
- "aria-owns"?: string | undefined | undefined;
108
- "aria-placeholder"?: string | undefined | undefined;
109
- "aria-posinset"?: number | undefined | undefined;
110
- "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
111
- "aria-readonly"?: (boolean | "true" | "false") | undefined;
112
- "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
113
- "aria-required"?: (boolean | "true" | "false") | undefined;
114
- "aria-roledescription"?: string | undefined | undefined;
115
- "aria-rowcount"?: number | undefined | undefined;
116
- "aria-rowindex"?: number | undefined | undefined;
117
- "aria-rowindextext"?: string | undefined | undefined;
118
- "aria-rowspan"?: number | undefined | undefined;
119
- "aria-selected"?: (boolean | "true" | "false") | undefined;
120
- "aria-setsize"?: number | undefined | undefined;
121
- "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
122
- "aria-valuemax"?: number | undefined | undefined;
123
- "aria-valuemin"?: number | undefined | undefined;
124
- "aria-valuenow"?: number | undefined | undefined;
125
- "aria-valuetext"?: string | undefined | undefined;
126
- dangerouslySetInnerHTML?: {
127
- __html: string | TrustedHTML;
128
- } | undefined | undefined;
129
- onCopy?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
130
- onCopyCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
131
- onCut?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
132
- onCutCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
133
- onPaste?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
134
- onPasteCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
135
- onCompositionEnd?: import("react").CompositionEventHandler<HTMLElement> | undefined;
136
- onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
137
- onCompositionStart?: import("react").CompositionEventHandler<HTMLElement> | undefined;
138
- onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
139
- onCompositionUpdate?: import("react").CompositionEventHandler<HTMLElement> | undefined;
140
- onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
141
- onFocus?: import("react").FocusEventHandler<HTMLElement> | undefined;
142
- onFocusCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
143
- onBlur?: import("react").FocusEventHandler<HTMLElement> | undefined;
144
- onBlurCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
145
- onChange?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
146
- onChangeCapture?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
147
- onBeforeInput?: import("react").InputEventHandler<HTMLElement> | undefined;
148
- onBeforeInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
149
- onInput?: import("react").InputEventHandler<HTMLElement> | undefined;
150
- onInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
151
- onReset?: import("react").ReactEventHandler<HTMLElement> | undefined;
152
- onResetCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
153
- onSubmit?: import("react").SubmitEventHandler<HTMLElement> | undefined;
154
- onSubmitCapture?: import("react").SubmitEventHandler<HTMLElement> | undefined;
155
- onInvalid?: import("react").ReactEventHandler<HTMLElement> | undefined;
156
- onInvalidCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
157
- onLoad?: import("react").ReactEventHandler<HTMLElement> | undefined;
158
- onLoadCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
159
- onError?: import("react").ReactEventHandler<HTMLElement> | undefined;
160
- onErrorCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
161
- onKeyDown?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
162
- onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
163
- onKeyPress?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
164
- onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
165
- onKeyUp?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
166
- onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
167
- onAbort?: import("react").ReactEventHandler<HTMLElement> | undefined;
168
- onAbortCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
169
- onCanPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
170
- onCanPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
171
- onCanPlayThrough?: import("react").ReactEventHandler<HTMLElement> | undefined;
172
- onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
173
- onDurationChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
174
- onDurationChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
175
- onEmptied?: import("react").ReactEventHandler<HTMLElement> | undefined;
176
- onEmptiedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
177
- onEncrypted?: import("react").ReactEventHandler<HTMLElement> | undefined;
178
- onEncryptedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
179
- onEnded?: import("react").ReactEventHandler<HTMLElement> | undefined;
180
- onEndedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
181
- onLoadedData?: import("react").ReactEventHandler<HTMLElement> | undefined;
182
- onLoadedDataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
183
- onLoadedMetadata?: import("react").ReactEventHandler<HTMLElement> | undefined;
184
- onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
185
- onLoadStart?: import("react").ReactEventHandler<HTMLElement> | undefined;
186
- onLoadStartCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
187
- onPause?: import("react").ReactEventHandler<HTMLElement> | undefined;
188
- onPauseCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
189
- onPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
190
- onPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
191
- onPlaying?: import("react").ReactEventHandler<HTMLElement> | undefined;
192
- onPlayingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
193
- onProgress?: import("react").ReactEventHandler<HTMLElement> | undefined;
194
- onProgressCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
195
- onRateChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
196
- onRateChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
197
- onSeeked?: import("react").ReactEventHandler<HTMLElement> | undefined;
198
- onSeekedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
199
- onSeeking?: import("react").ReactEventHandler<HTMLElement> | undefined;
200
- onSeekingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
201
- onStalled?: import("react").ReactEventHandler<HTMLElement> | undefined;
202
- onStalledCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
203
- onSuspend?: import("react").ReactEventHandler<HTMLElement> | undefined;
204
- onSuspendCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
205
- onTimeUpdate?: import("react").ReactEventHandler<HTMLElement> | undefined;
206
- onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
207
- onVolumeChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
208
- onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
209
- onWaiting?: import("react").ReactEventHandler<HTMLElement> | undefined;
210
- onWaitingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
211
- onAuxClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
212
- onAuxClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
213
- onClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
214
- onClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
215
- onContextMenu?: import("react").MouseEventHandler<HTMLElement> | undefined;
216
- onContextMenuCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
217
- onDoubleClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
218
- onDoubleClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
219
- onDrag?: import("react").DragEventHandler<HTMLElement> | undefined;
220
- onDragCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
221
- onDragEnd?: import("react").DragEventHandler<HTMLElement> | undefined;
222
- onDragEndCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
223
- onDragEnter?: import("react").DragEventHandler<HTMLElement> | undefined;
224
- onDragEnterCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
225
- onDragExit?: import("react").DragEventHandler<HTMLElement> | undefined;
226
- onDragExitCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
227
- onDragLeave?: import("react").DragEventHandler<HTMLElement> | undefined;
228
- onDragLeaveCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
229
- onDragOver?: import("react").DragEventHandler<HTMLElement> | undefined;
230
- onDragOverCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
231
- onDragStart?: import("react").DragEventHandler<HTMLElement> | undefined;
232
- onDragStartCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
233
- onDrop?: import("react").DragEventHandler<HTMLElement> | undefined;
234
- onDropCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
235
- onMouseDown?: import("react").MouseEventHandler<HTMLElement> | undefined;
236
- onMouseDownCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
237
- onMouseEnter?: import("react").MouseEventHandler<HTMLElement> | undefined;
238
- onMouseLeave?: import("react").MouseEventHandler<HTMLElement> | undefined;
239
- onMouseMove?: import("react").MouseEventHandler<HTMLElement> | undefined;
240
- onMouseMoveCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
241
- onMouseOut?: import("react").MouseEventHandler<HTMLElement> | undefined;
242
- onMouseOutCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
243
- onMouseOver?: import("react").MouseEventHandler<HTMLElement> | undefined;
244
- onMouseOverCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
245
- onMouseUp?: import("react").MouseEventHandler<HTMLElement> | undefined;
246
- onMouseUpCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
247
- onSelect?: import("react").ReactEventHandler<HTMLElement> | undefined;
248
- onSelectCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
249
- onTouchCancel?: import("react").TouchEventHandler<HTMLElement> | undefined;
250
- onTouchCancelCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
251
- onTouchEnd?: import("react").TouchEventHandler<HTMLElement> | undefined;
252
- onTouchEndCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
253
- onTouchMove?: import("react").TouchEventHandler<HTMLElement> | undefined;
254
- onTouchMoveCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
255
- onTouchStart?: import("react").TouchEventHandler<HTMLElement> | undefined;
256
- onTouchStartCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
257
- onPointerDown?: import("react").PointerEventHandler<HTMLElement> | undefined;
258
- onPointerDownCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
259
- onPointerMove?: import("react").PointerEventHandler<HTMLElement> | undefined;
260
- onPointerMoveCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
261
- onPointerUp?: import("react").PointerEventHandler<HTMLElement> | undefined;
262
- onPointerUpCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
263
- onPointerCancel?: import("react").PointerEventHandler<HTMLElement> | undefined;
264
- onPointerCancelCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
265
- onPointerEnter?: import("react").PointerEventHandler<HTMLElement> | undefined;
266
- onPointerLeave?: import("react").PointerEventHandler<HTMLElement> | undefined;
267
- onPointerOver?: import("react").PointerEventHandler<HTMLElement> | undefined;
268
- onPointerOverCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
269
- onPointerOut?: import("react").PointerEventHandler<HTMLElement> | undefined;
270
- onPointerOutCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
271
- onGotPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
272
- onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
273
- onLostPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
274
- onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
275
- onScroll?: import("react").UIEventHandler<HTMLElement> | undefined;
276
- onScrollCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
277
- onScrollEnd?: import("react").UIEventHandler<HTMLElement> | undefined;
278
- onScrollEndCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
279
- onWheel?: import("react").WheelEventHandler<HTMLElement> | undefined;
280
- onWheelCapture?: import("react").WheelEventHandler<HTMLElement> | undefined;
281
- onAnimationStart?: import("react").AnimationEventHandler<HTMLElement> | undefined;
282
- onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
283
- onAnimationEnd?: import("react").AnimationEventHandler<HTMLElement> | undefined;
284
- onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
285
- onAnimationIteration?: import("react").AnimationEventHandler<HTMLElement> | undefined;
286
- onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
287
- onToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
288
- onBeforeToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
289
- onTransitionCancel?: import("react").TransitionEventHandler<HTMLElement> | undefined;
290
- onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
291
- onTransitionEnd?: import("react").TransitionEventHandler<HTMLElement> | undefined;
292
- onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
293
- onTransitionRun?: import("react").TransitionEventHandler<HTMLElement> | undefined;
294
- onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
295
- onTransitionStart?: import("react").TransitionEventHandler<HTMLElement> | undefined;
296
- onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
297
- }, HTMLElement>;
17
+ }): import("react").JSX.Element;
@@ -1,5 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import { createElement } from 'react';
2
3
  import './Typography.css';
4
+ import './typography-impl.css';
5
+ import { TypographyMotion } from './TypographyMotion.js';
3
6
  import { typographyDefaults, typographyParts } from './Typography.types.js';
4
7
  /**
5
8
  * Copy, set in one of the page's type roles.
@@ -10,7 +13,12 @@ import { typographyDefaults, typographyParts } from './Typography.types.js';
10
13
  * than advisory: `as="h2" variant="h1"` is a section heading drawn at hero scale, and a page
11
14
  * cannot reach for a size and receive a document structure it did not ask for.
12
15
  */
13
- export function Typography({ variant = typographyDefaults.variant, as = typographyDefaults.as, children, ...rest }) {
16
+ export function Typography({ variant = typographyDefaults.variant, as = typographyDefaults.as, motion, from, children, ...rest }) {
17
+ // Text that moves once on arrival is drawn by a client component of its own, so the text that
18
+ // does not move — nearly all of it — keeps no script.
19
+ if (motion !== undefined || (from !== undefined && from !== '')) {
20
+ return (_jsx(TypographyMotion, { as: as, className: typographyParts.root, variant: variant, motion: motion, from: from, rest: rest, children: children }));
21
+ }
14
22
  /**
15
23
  * `createElement` rather than a component variable.
16
24
  *
@@ -1,19 +1,5 @@
1
1
  import type { HTMLAttributes, ReactNode } from 'react';
2
2
  export interface TypographyOwnProps {
3
- /**
4
- * `h1` — The line a landing page is built around, and there is one of them
5
- * `h2` — A headline opening a major section of a long page
6
- * `h3` — A section heading under an h1 and h2
7
- * `h4` — A subsection heading, the first step below the extrabold the larger headings carry
8
- * `h5` — A label over a group of cards, a list, or a short block of copy
9
- * `subtitle` — A secondary title under a heading — a pricing plan's name, a sub-feature group
10
- * `body-lg` — An introductory paragraph under a headline, a hero description, a section intro
11
- * `body-md` — The default, and most of the copy on a page — feature descriptions, article text
12
- * `body-sm` — De-emphasised copy: legal lines, disclaimers, help text
13
- * `eyebrow` — A category label above a headline — a section tag, a plan badge. Drawn in capitals by this component, so write it in the case it should be read in
14
- * `figure` — A number that is the point of its block — a count, a total, a span of time — with a label under it
15
- */
16
- variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow' | 'figure';
17
3
  /**
18
4
  * `p` — The default, and any block of prose
19
5
  * `span` — Text inside a sentence, or inside something that is already a block
@@ -25,10 +11,18 @@ export interface TypographyOwnProps {
25
11
  * `h6` — The deepest heading level
26
12
  */
27
13
  as?: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
14
+ /** The words this text starts as, which give way once to the words it is — "Opening…" to "Position open", "EUR/USD · Buy" to "EUR/USD · Sell". The first words hold for motion.duration.hold after arrival, rise away, and the text's own words come up into their place. Plain text only. Beside a StatusDot given `from` as well, the dot changes with the words */
15
+ from?: string;
28
16
  /** Allowed: text */
29
17
  children: ReactNode;
30
18
  }
31
- export type TypographyProps = TypographyOwnProps & Omit<HTMLAttributes<HTMLElement>, 'className' | 'variant' | 'as'>;
19
+ export type TypographyProps = TypographyOwnProps & Omit<HTMLAttributes<HTMLElement>, 'className' | 'variant' | 'as' | 'motion' | 'from'> & ({
20
+ variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow' | 'figure';
21
+ motion?: undefined;
22
+ } | {
23
+ variant: Exclude<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow' | 'figure', 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow'>;
24
+ motion?: 'roll';
25
+ });
32
26
  /** The class each part carries. Apply these — do not retype them. */
33
27
  export declare const typographyParts: {
34
28
  readonly root: "dds-typography";
@@ -0,0 +1,28 @@
1
+ import { type ReactNode } from 'react';
2
+ interface TypographyMotionProps {
3
+ as: string;
4
+ className: string;
5
+ variant: string;
6
+ motion?: 'roll' | undefined;
7
+ from?: string | undefined;
8
+ children?: ReactNode;
9
+ rest: Record<string, unknown>;
10
+ }
11
+ /**
12
+ * Typography that moves once on arrival — a figure that rolls into place, or words that give way
13
+ * to the ones they become. Kept apart from Typography itself so the text that does not move, which
14
+ * is nearly all of it, stays a component with no script.
15
+ *
16
+ * Both are drawn from the text as given, so they need a string: a figure with markup inside it has
17
+ * no digits to roll, and words to swap are words. The moving copies are paint, hidden from
18
+ * assistive technology; the real text is in the DOM throughout, so what is read is the final text.
19
+ */
20
+ export declare function TypographyMotion({ as, className, variant, motion, from, children, rest }: TypographyMotionProps): import("react").ReactElement<{
21
+ ref: import("react").RefObject<HTMLElement | null>;
22
+ className: string;
23
+ 'data-variant': string;
24
+ 'data-motion': "roll" | undefined;
25
+ 'data-from': string | undefined;
26
+ 'data-arrival': "waiting" | "playing" | undefined;
27
+ }, string | import("react").JSXElementConstructor<any>>;
28
+ export {};
@@ -0,0 +1,43 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { createElement } from 'react';
4
+ import { useArrival } from '../../arrival.js';
5
+ import { visuallyHidden } from '../../visually-hidden.js';
6
+ /**
7
+ * Typography that moves once on arrival — a figure that rolls into place, or words that give way
8
+ * to the ones they become. Kept apart from Typography itself so the text that does not move, which
9
+ * is nearly all of it, stays a component with no script.
10
+ *
11
+ * Both are drawn from the text as given, so they need a string: a figure with markup inside it has
12
+ * no digits to roll, and words to swap are words. The moving copies are paint, hidden from
13
+ * assistive technology; the real text is in the DOM throughout, so what is read is the final text.
14
+ */
15
+ export function TypographyMotion({ as, className, variant, motion, from, children, rest }) {
16
+ const [held, arrival] = useArrival();
17
+ const text = typeof children === 'string' || typeof children === 'number' ? String(children) : null;
18
+ let body = children;
19
+ if (text !== null && motion === 'roll') {
20
+ let step = 0;
21
+ body = (_jsxs(_Fragment, { children: [_jsx("span", { style: visuallyHidden, children: text }), _jsx("span", { "aria-hidden": "true", "data-roll": "", children: [...text].map((character, at) => {
22
+ if (!/\d/.test(character))
23
+ return _jsx("span", { children: character }, at);
24
+ const digit = Number(character);
25
+ const style = { '--dds-typography-digit': digit, '--dds-typography-step': step };
26
+ step += 1;
27
+ return (_jsx("span", { "data-digit": "", style: style, children: _jsx("span", { "data-reel": "", children: '0123456789'.split('').map((each) => (_jsx("span", { children: each }, each))) }) }, at));
28
+ }) })] }));
29
+ }
30
+ else if (text !== null && from !== undefined && from !== '') {
31
+ body = (_jsxs("span", { "data-swap": "", children: [_jsx("span", { "data-word": "from", "aria-hidden": "true", children: from }), _jsx("span", { "data-word": "to", children: text })] }));
32
+ }
33
+ return createElement(as, {
34
+ ...rest,
35
+ ref: held,
36
+ className,
37
+ 'data-variant': variant,
38
+ 'data-motion': motion,
39
+ // `motion` wins where both are given: the figure rolls and the earlier words are not drawn.
40
+ 'data-from': motion === undefined && from !== undefined && from !== '' ? '' : undefined,
41
+ 'data-arrival': arrival === 'still' ? undefined : arrival,
42
+ }, body);
43
+ }