@deriv-com/dds-marketing 0.1.0 → 0.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 (460) hide show
  1. package/.llm/components/accordion.md +193 -0
  2. package/.llm/components/accordionitem.md +236 -0
  3. package/.llm/components/aspectratio.md +212 -0
  4. package/.llm/components/badge.md +231 -0
  5. package/.llm/components/bottomsheet.md +404 -0
  6. package/.llm/components/breadcrumb.md +197 -0
  7. package/.llm/components/breadcrumbitem.md +178 -0
  8. package/.llm/components/button.md +271 -0
  9. package/.llm/components/buttonicon.md +313 -0
  10. package/.llm/components/card.md +313 -0
  11. package/.llm/components/cardbody.md +409 -0
  12. package/.llm/components/cardbutton.md +259 -0
  13. package/.llm/components/checkbox.md +285 -0
  14. package/.llm/components/divider.md +230 -0
  15. package/.llm/components/dropdownmenu.md +453 -0
  16. package/.llm/components/filterchip.md +314 -0
  17. package/.llm/components/footer.md +408 -0
  18. package/.llm/components/footergroup.md +241 -0
  19. package/.llm/components/grid.md +659 -0
  20. package/.llm/components/icon.md +194 -0
  21. package/.llm/components/link.md +354 -0
  22. package/.llm/components/menuitem.md +218 -0
  23. package/.llm/components/navbar.md +458 -0
  24. package/.llm/components/navbaritem.md +238 -0
  25. package/.llm/components/navbarmenu.md +319 -0
  26. package/.llm/components/navbarmenugroup.md +184 -0
  27. package/.llm/components/navbarpanel.md +255 -0
  28. package/.llm/components/navbarswitcher.md +343 -0
  29. package/.llm/components/navbarswitcheroption.md +156 -0
  30. package/.llm/components/option.md +268 -0
  31. package/.llm/components/pagination.md +361 -0
  32. package/.llm/components/removablechip.md +247 -0
  33. package/.llm/components/row.md +381 -0
  34. package/.llm/components/scroller.md +470 -0
  35. package/.llm/components/searchinput.md +279 -0
  36. package/.llm/components/segmentedcontrol.md +358 -0
  37. package/.llm/components/segmentedcontrolitem.md +272 -0
  38. package/.llm/components/select.md +509 -0
  39. package/.llm/components/selectchip.md +334 -0
  40. package/.llm/components/spinner.md +222 -0
  41. package/.llm/components/stack.md +334 -0
  42. package/.llm/components/statusdot.md +205 -0
  43. package/.llm/components/subdomainnavbar.md +327 -0
  44. package/.llm/components/tab.md +291 -0
  45. package/.llm/components/table.md +660 -0
  46. package/.llm/components/tablebody.md +258 -0
  47. package/.llm/components/tablecell.md +248 -0
  48. package/.llm/components/tablehead.md +248 -0
  49. package/.llm/components/tableheadercell.md +298 -0
  50. package/.llm/components/tablerow.md +285 -0
  51. package/.llm/components/tablist.md +210 -0
  52. package/.llm/components/textarea.md +362 -0
  53. package/.llm/components/textinput.md +467 -0
  54. package/.llm/components/tooltip.md +267 -0
  55. package/.llm/components/typography.md +245 -0
  56. package/.llm/digest/accordion.md +43 -0
  57. package/.llm/digest/accordionitem.md +47 -0
  58. package/.llm/digest/aspectratio.md +47 -0
  59. package/.llm/digest/badge.md +45 -0
  60. package/.llm/digest/bottomsheet.md +69 -0
  61. package/.llm/digest/breadcrumb.md +38 -0
  62. package/.llm/digest/breadcrumbitem.md +43 -0
  63. package/.llm/digest/button.md +48 -0
  64. package/.llm/digest/buttonicon.md +61 -0
  65. package/.llm/digest/card.md +50 -0
  66. package/.llm/digest/cardbody.md +68 -0
  67. package/.llm/digest/cardbutton.md +49 -0
  68. package/.llm/digest/checkbox.md +63 -0
  69. package/.llm/digest/divider.md +52 -0
  70. package/.llm/digest/dropdownmenu.md +67 -0
  71. package/.llm/digest/filterchip.md +68 -0
  72. package/.llm/digest/footer.md +57 -0
  73. package/.llm/digest/footergroup.md +42 -0
  74. package/.llm/digest/grid.md +62 -0
  75. package/.llm/digest/icon.md +45 -0
  76. package/.llm/digest/link.md +59 -0
  77. package/.llm/digest/menuitem.md +46 -0
  78. package/.llm/digest/navbar.md +60 -0
  79. package/.llm/digest/navbaritem.md +54 -0
  80. package/.llm/digest/navbarmenu.md +54 -0
  81. package/.llm/digest/navbarmenugroup.md +40 -0
  82. package/.llm/digest/navbarpanel.md +53 -0
  83. package/.llm/digest/navbarswitcher.md +51 -0
  84. package/.llm/digest/navbarswitcheroption.md +37 -0
  85. package/.llm/digest/option.md +54 -0
  86. package/.llm/digest/pagination.md +71 -0
  87. package/.llm/digest/removablechip.md +51 -0
  88. package/.llm/digest/row.md +60 -0
  89. package/.llm/digest/scroller.md +59 -0
  90. package/.llm/digest/searchinput.md +56 -0
  91. package/.llm/digest/segmentedcontrol.md +59 -0
  92. package/.llm/digest/segmentedcontrolitem.md +59 -0
  93. package/.llm/digest/select.md +92 -0
  94. package/.llm/digest/selectchip.md +68 -0
  95. package/.llm/digest/spinner.md +52 -0
  96. package/.llm/digest/stack.md +56 -0
  97. package/.llm/digest/statusdot.md +46 -0
  98. package/.llm/digest/subdomainnavbar.md +54 -0
  99. package/.llm/digest/tab.md +60 -0
  100. package/.llm/digest/table.md +71 -0
  101. package/.llm/digest/tablebody.md +49 -0
  102. package/.llm/digest/tablecell.md +55 -0
  103. package/.llm/digest/tablehead.md +50 -0
  104. package/.llm/digest/tableheadercell.md +65 -0
  105. package/.llm/digest/tablerow.md +56 -0
  106. package/.llm/digest/tablist.md +46 -0
  107. package/.llm/digest/textarea.md +78 -0
  108. package/.llm/digest/textinput.md +95 -0
  109. package/.llm/digest/tooltip.md +58 -0
  110. package/.llm/digest/typography.md +59 -0
  111. package/.llm/index.md +86 -0
  112. package/.llm/rules.md +122 -0
  113. package/.llm/tokens.md +341 -0
  114. package/AGENTS.md +164 -0
  115. package/LICENSE +21 -0
  116. package/README.md +63 -15
  117. package/dist/components/core/accordion/Accordion.css +10 -0
  118. package/dist/components/core/accordion/Accordion.d.ts +20 -0
  119. package/dist/components/core/accordion/Accordion.js +69 -0
  120. package/dist/components/core/accordion/Accordion.types.d.ts +20 -0
  121. package/dist/components/core/accordion/Accordion.types.js +7 -0
  122. package/dist/components/core/accordion-item/AccordionItem.css +98 -0
  123. package/dist/components/core/accordion-item/AccordionItem.d.ts +44 -0
  124. package/dist/components/core/accordion-item/AccordionItem.js +63 -0
  125. package/dist/components/core/accordion-item/AccordionItem.types.d.ts +32 -0
  126. package/dist/components/core/accordion-item/AccordionItem.types.js +13 -0
  127. package/dist/components/core/accordion-item/accordion-item-impl.css +107 -0
  128. package/dist/components/core/badge/Badge.css +37 -0
  129. package/dist/components/core/badge/Badge.d.ts +37 -0
  130. package/dist/components/core/badge/Badge.js +40 -0
  131. package/dist/components/core/badge/Badge.types.d.ts +24 -0
  132. package/dist/components/core/badge/Badge.types.js +8 -0
  133. package/dist/components/core/badge/badge-impl.css +32 -0
  134. package/dist/components/core/bottom-sheet/BottomSheet.css +178 -0
  135. package/dist/components/core/bottom-sheet/BottomSheet.d.ts +22 -0
  136. package/dist/components/core/bottom-sheet/BottomSheet.js +359 -0
  137. package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +67 -0
  138. package/dist/components/core/bottom-sheet/BottomSheet.types.js +18 -0
  139. package/dist/components/core/bottom-sheet/bottom-sheet-impl.css +57 -0
  140. package/dist/components/core/breadcrumb/Breadcrumb.css +19 -0
  141. package/dist/components/core/breadcrumb/Breadcrumb.d.ts +16 -0
  142. package/dist/components/core/breadcrumb/Breadcrumb.js +22 -0
  143. package/dist/components/core/breadcrumb/Breadcrumb.types.d.ts +18 -0
  144. package/dist/components/core/breadcrumb/Breadcrumb.types.js +9 -0
  145. package/dist/components/core/breadcrumb-item/BreadcrumbItem.css +34 -0
  146. package/dist/components/core/breadcrumb-item/BreadcrumbItem.d.ts +12 -0
  147. package/dist/components/core/breadcrumb-item/BreadcrumbItem.js +15 -0
  148. package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.d.ts +22 -0
  149. package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.js +9 -0
  150. package/dist/components/core/button/Button.css +141 -0
  151. package/dist/components/core/button/Button.d.ts +25 -0
  152. package/dist/components/core/button/Button.js +28 -0
  153. package/dist/components/core/button/Button.types.d.ts +40 -0
  154. package/dist/components/core/button/Button.types.js +9 -0
  155. package/dist/components/core/button/button-impl.css +46 -0
  156. package/dist/components/core/button-icon/ButtonIcon.css +135 -0
  157. package/dist/components/core/button-icon/ButtonIcon.d.ts +34 -0
  158. package/dist/components/core/button-icon/ButtonIcon.js +117 -0
  159. package/dist/components/core/button-icon/ButtonIcon.types.d.ts +41 -0
  160. package/dist/components/core/button-icon/ButtonIcon.types.js +8 -0
  161. package/dist/components/core/card/Card.css +65 -0
  162. package/dist/components/core/card/Card.d.ts +24 -0
  163. package/dist/components/core/card/Card.js +26 -0
  164. package/dist/components/core/card/Card.types.d.ts +33 -0
  165. package/dist/components/core/card/Card.types.js +7 -0
  166. package/dist/components/core/card-body/CardBody.css +139 -0
  167. package/dist/components/core/card-body/CardBody.d.ts +62 -0
  168. package/dist/components/core/card-body/CardBody.js +97 -0
  169. package/dist/components/core/card-body/CardBody.types.d.ts +61 -0
  170. package/dist/components/core/card-body/CardBody.types.js +15 -0
  171. package/dist/components/core/card-body/card-body-impl.css +87 -0
  172. package/dist/components/core/card-button/CardButton.css +73 -0
  173. package/dist/components/core/card-button/CardButton.d.ts +27 -0
  174. package/dist/components/core/card-button/CardButton.js +37 -0
  175. package/dist/components/core/card-button/CardButton.types.d.ts +24 -0
  176. package/dist/components/core/card-button/CardButton.types.js +7 -0
  177. package/dist/components/core/card-button/card-button-impl.css +39 -0
  178. package/dist/components/core/checkbox/Checkbox.css +149 -0
  179. package/dist/components/core/checkbox/Checkbox.d.ts +21 -0
  180. package/dist/components/core/checkbox/Checkbox.js +97 -0
  181. package/dist/components/core/checkbox/Checkbox.types.d.ts +46 -0
  182. package/dist/components/core/checkbox/Checkbox.types.js +15 -0
  183. package/dist/components/core/checkbox/checkbox-impl.css +90 -0
  184. package/dist/components/core/divider/Divider.css +41 -0
  185. package/dist/components/core/divider/Divider.d.ts +46 -0
  186. package/dist/components/core/divider/Divider.js +51 -0
  187. package/dist/components/core/divider/Divider.types.d.ts +25 -0
  188. package/dist/components/core/divider/Divider.types.js +9 -0
  189. package/dist/components/core/dropdown-menu/DropdownMenu.css +146 -0
  190. package/dist/components/core/dropdown-menu/DropdownMenu.d.ts +22 -0
  191. package/dist/components/core/dropdown-menu/DropdownMenu.js +309 -0
  192. package/dist/components/core/dropdown-menu/DropdownMenu.types.d.ts +62 -0
  193. package/dist/components/core/dropdown-menu/DropdownMenu.types.js +12 -0
  194. package/dist/components/core/dropdown-menu/dropdown-menu-impl.css +70 -0
  195. package/dist/components/core/filter-chip/FilterChip.css +149 -0
  196. package/dist/components/core/filter-chip/FilterChip.d.ts +23 -0
  197. package/dist/components/core/filter-chip/FilterChip.js +37 -0
  198. package/dist/components/core/filter-chip/FilterChip.types.d.ts +53 -0
  199. package/dist/components/core/filter-chip/FilterChip.types.js +12 -0
  200. package/dist/components/core/footer/Footer.css +104 -0
  201. package/dist/components/core/footer/Footer.d.ts +43 -0
  202. package/dist/components/core/footer/Footer.js +53 -0
  203. package/dist/components/core/footer/Footer.types.d.ts +47 -0
  204. package/dist/components/core/footer/Footer.types.js +18 -0
  205. package/dist/components/core/footer/footer-impl.css +218 -0
  206. package/dist/components/core/footer-group/FooterGroup.css +90 -0
  207. package/dist/components/core/footer-group/FooterGroup.d.ts +32 -0
  208. package/dist/components/core/footer-group/FooterGroup.js +64 -0
  209. package/dist/components/core/footer-group/FooterGroup.types.d.ts +25 -0
  210. package/dist/components/core/footer-group/FooterGroup.types.js +12 -0
  211. package/dist/components/core/footer-group/footer-group-impl.css +78 -0
  212. package/dist/components/core/icon/Icon.css +40 -0
  213. package/dist/components/core/icon/Icon.d.ts +23 -0
  214. package/dist/components/core/icon/Icon.js +79 -0
  215. package/dist/components/core/icon/Icon.types.d.ts +24 -0
  216. package/dist/components/core/icon/Icon.types.js +7 -0
  217. package/dist/components/core/link/Link.css +89 -0
  218. package/dist/components/core/link/Link.d.ts +37 -0
  219. package/dist/components/core/link/Link.js +141 -0
  220. package/dist/components/core/link/Link.types.d.ts +41 -0
  221. package/dist/components/core/link/Link.types.js +9 -0
  222. package/dist/components/core/link/link-impl.css +168 -0
  223. package/dist/components/core/menu-item/MenuItem.css +70 -0
  224. package/dist/components/core/menu-item/MenuItem.d.ts +11 -0
  225. package/dist/components/core/menu-item/MenuItem.js +26 -0
  226. package/dist/components/core/menu-item/MenuItem.types.d.ts +28 -0
  227. package/dist/components/core/menu-item/MenuItem.types.js +9 -0
  228. package/dist/components/core/navbar/Navbar.css +135 -0
  229. package/dist/components/core/navbar/Navbar.d.ts +36 -0
  230. package/dist/components/core/navbar/Navbar.js +371 -0
  231. package/dist/components/core/navbar/Navbar.types.d.ts +49 -0
  232. package/dist/components/core/navbar/Navbar.types.js +17 -0
  233. package/dist/components/core/navbar/navbar-impl.css +590 -0
  234. package/dist/components/core/navbar-item/NavbarItem.css +75 -0
  235. package/dist/components/core/navbar-item/NavbarItem.d.ts +22 -0
  236. package/dist/components/core/navbar-item/NavbarItem.js +40 -0
  237. package/dist/components/core/navbar-item/NavbarItem.types.d.ts +34 -0
  238. package/dist/components/core/navbar-item/NavbarItem.types.js +10 -0
  239. package/dist/components/core/navbar-menu/NavbarMenu.css +128 -0
  240. package/dist/components/core/navbar-menu/NavbarMenu.d.ts +5 -0
  241. package/dist/components/core/navbar-menu/NavbarMenu.js +186 -0
  242. package/dist/components/core/navbar-menu/NavbarMenu.types.d.ts +45 -0
  243. package/dist/components/core/navbar-menu/NavbarMenu.types.js +12 -0
  244. package/dist/components/core/navbar-menu/navbar-menu-impl.css +186 -0
  245. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.css +26 -0
  246. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.d.ts +17 -0
  247. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.js +22 -0
  248. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.d.ts +14 -0
  249. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.js +7 -0
  250. package/dist/components/core/navbar-panel/NavbarPanel.css +87 -0
  251. package/dist/components/core/navbar-panel/NavbarPanel.d.ts +34 -0
  252. package/dist/components/core/navbar-panel/NavbarPanel.js +46 -0
  253. package/dist/components/core/navbar-panel/NavbarPanel.types.d.ts +29 -0
  254. package/dist/components/core/navbar-panel/NavbarPanel.types.js +12 -0
  255. package/dist/components/core/navbar-panel/navbar-panel-impl.css +104 -0
  256. package/dist/components/core/navbar-panel/use-navbar-panel.d.ts +26 -0
  257. package/dist/components/core/navbar-panel/use-navbar-panel.js +135 -0
  258. package/dist/components/core/navbar-switcher/NavbarSwitcher.css +117 -0
  259. package/dist/components/core/navbar-switcher/NavbarSwitcher.d.ts +20 -0
  260. package/dist/components/core/navbar-switcher/NavbarSwitcher.js +90 -0
  261. package/dist/components/core/navbar-switcher/NavbarSwitcher.types.d.ts +46 -0
  262. package/dist/components/core/navbar-switcher/NavbarSwitcher.types.js +13 -0
  263. package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +179 -0
  264. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.css +39 -0
  265. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.d.ts +16 -0
  266. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.js +19 -0
  267. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.d.ts +18 -0
  268. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.js +7 -0
  269. package/dist/components/core/option/Option.css +133 -0
  270. package/dist/components/core/option/Option.d.ts +25 -0
  271. package/dist/components/core/option/Option.js +31 -0
  272. package/dist/components/core/option/Option.types.d.ts +44 -0
  273. package/dist/components/core/option/Option.types.js +14 -0
  274. package/dist/components/core/pagination/Pagination.css +237 -0
  275. package/dist/components/core/pagination/Pagination.d.ts +30 -0
  276. package/dist/components/core/pagination/Pagination.js +406 -0
  277. package/dist/components/core/pagination/Pagination.types.d.ts +59 -0
  278. package/dist/components/core/pagination/Pagination.types.js +14 -0
  279. package/dist/components/core/pagination/pagination-impl.css +17 -0
  280. package/dist/components/core/removable-chip/RemovableChip.css +125 -0
  281. package/dist/components/core/removable-chip/RemovableChip.d.ts +25 -0
  282. package/dist/components/core/removable-chip/RemovableChip.js +36 -0
  283. package/dist/components/core/removable-chip/RemovableChip.types.d.ts +38 -0
  284. package/dist/components/core/removable-chip/RemovableChip.types.js +13 -0
  285. package/dist/components/core/search-input/SearchInput.css +205 -0
  286. package/dist/components/core/search-input/SearchInput.d.ts +5 -0
  287. package/dist/components/core/search-input/SearchInput.js +81 -0
  288. package/dist/components/core/search-input/SearchInput.types.d.ts +43 -0
  289. package/dist/components/core/search-input/SearchInput.types.js +13 -0
  290. package/dist/components/core/search-input/search-input-impl.css +20 -0
  291. package/dist/components/core/segmented-control/SegmentedControl.css +57 -0
  292. package/dist/components/core/segmented-control/SegmentedControl.d.ts +37 -0
  293. package/dist/components/core/segmented-control/SegmentedControl.js +269 -0
  294. package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +38 -0
  295. package/dist/components/core/segmented-control/SegmentedControl.types.js +8 -0
  296. package/dist/components/core/segmented-control/segmented-control-impl.css +57 -0
  297. package/dist/components/core/segmented-control-item/SegmentedControlItem.css +151 -0
  298. package/dist/components/core/segmented-control-item/SegmentedControlItem.d.ts +50 -0
  299. package/dist/components/core/segmented-control-item/SegmentedControlItem.js +101 -0
  300. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +37 -0
  301. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.js +10 -0
  302. package/dist/components/core/segmented-control-item/segmented-control-item-impl.css +69 -0
  303. package/dist/components/core/select/Select.css +400 -0
  304. package/dist/components/core/select/Select.d.ts +29 -0
  305. package/dist/components/core/select/Select.js +524 -0
  306. package/dist/components/core/select/Select.types.d.ts +96 -0
  307. package/dist/components/core/select/Select.types.js +26 -0
  308. package/dist/components/core/select/select-impl.css +114 -0
  309. package/dist/components/core/select-chip/SelectChip.css +155 -0
  310. package/dist/components/core/select-chip/SelectChip.d.ts +20 -0
  311. package/dist/components/core/select-chip/SelectChip.js +273 -0
  312. package/dist/components/core/select-chip/SelectChip.types.d.ts +56 -0
  313. package/dist/components/core/select-chip/SelectChip.types.js +14 -0
  314. package/dist/components/core/select-chip/select-chip-impl.css +38 -0
  315. package/dist/components/core/spinner/Spinner.css +76 -0
  316. package/dist/components/core/spinner/Spinner.d.ts +5 -0
  317. package/dist/components/core/spinner/Spinner.js +29 -0
  318. package/dist/components/core/spinner/Spinner.types.d.ts +37 -0
  319. package/dist/components/core/spinner/Spinner.types.js +10 -0
  320. package/dist/components/core/spinner/spinner-impl.css +27 -0
  321. package/dist/components/core/status-dot/StatusDot.css +43 -0
  322. package/dist/components/core/status-dot/StatusDot.d.ts +35 -0
  323. package/dist/components/core/status-dot/StatusDot.js +46 -0
  324. package/dist/components/core/status-dot/StatusDot.types.d.ts +29 -0
  325. package/dist/components/core/status-dot/StatusDot.types.js +7 -0
  326. package/dist/components/core/status-dot/status-dot-impl.css +42 -0
  327. package/dist/components/core/subdomain-navbar/SubdomainNavbar.css +89 -0
  328. package/dist/components/core/subdomain-navbar/SubdomainNavbar.d.ts +21 -0
  329. package/dist/components/core/subdomain-navbar/SubdomainNavbar.js +127 -0
  330. package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.d.ts +43 -0
  331. package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.js +13 -0
  332. package/dist/components/core/subdomain-navbar/subdomain-navbar-impl.css +147 -0
  333. package/dist/components/core/tab/Tab.css +113 -0
  334. package/dist/components/core/tab/Tab.d.ts +36 -0
  335. package/dist/components/core/tab/Tab.js +53 -0
  336. package/dist/components/core/tab/Tab.types.d.ts +42 -0
  337. package/dist/components/core/tab/Tab.types.js +13 -0
  338. package/dist/components/core/tab/tab-impl.css +49 -0
  339. package/dist/components/core/tab-list/TabList.css +40 -0
  340. package/dist/components/core/tab-list/TabList.d.ts +26 -0
  341. package/dist/components/core/tab-list/TabList.js +124 -0
  342. package/dist/components/core/tab-list/TabList.types.d.ts +20 -0
  343. package/dist/components/core/tab-list/TabList.types.js +7 -0
  344. package/dist/components/core/tab-list/tab-list-impl.css +56 -0
  345. package/dist/components/core/table/Table.css +40 -0
  346. package/dist/components/core/table/Table.d.ts +19 -0
  347. package/dist/components/core/table/Table.js +55 -0
  348. package/dist/components/core/table/Table.types.d.ts +59 -0
  349. package/dist/components/core/table/Table.types.js +9 -0
  350. package/dist/components/core/table/table-impl.css +75 -0
  351. package/dist/components/core/table/use-table-sort.d.ts +43 -0
  352. package/dist/components/core/table/use-table-sort.js +51 -0
  353. package/dist/components/core/table-body/TableBody.css +6 -0
  354. package/dist/components/core/table-body/TableBody.d.ts +12 -0
  355. package/dist/components/core/table-body/TableBody.js +26 -0
  356. package/dist/components/core/table-body/TableBody.types.d.ts +36 -0
  357. package/dist/components/core/table-body/TableBody.types.js +7 -0
  358. package/dist/components/core/table-cell/TableCell.css +76 -0
  359. package/dist/components/core/table-cell/TableCell.d.ts +21 -0
  360. package/dist/components/core/table-cell/TableCell.js +31 -0
  361. package/dist/components/core/table-cell/TableCell.types.d.ts +43 -0
  362. package/dist/components/core/table-cell/TableCell.types.js +7 -0
  363. package/dist/components/core/table-head/TableHead.css +6 -0
  364. package/dist/components/core/table-head/TableHead.d.ts +22 -0
  365. package/dist/components/core/table-head/TableHead.js +52 -0
  366. package/dist/components/core/table-head/TableHead.types.d.ts +39 -0
  367. package/dist/components/core/table-head/TableHead.types.js +7 -0
  368. package/dist/components/core/table-head/table-head-impl.css +51 -0
  369. package/dist/components/core/table-header-cell/TableHeaderCell.css +126 -0
  370. package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +21 -0
  371. package/dist/components/core/table-header-cell/TableHeaderCell.js +34 -0
  372. package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +56 -0
  373. package/dist/components/core/table-header-cell/TableHeaderCell.types.js +9 -0
  374. package/dist/components/core/table-header-cell/table-header-cell-impl.css +74 -0
  375. package/dist/components/core/table-row/TableRow.css +18 -0
  376. package/dist/components/core/table-row/TableRow.d.ts +17 -0
  377. package/dist/components/core/table-row/TableRow.js +32 -0
  378. package/dist/components/core/table-row/TableRow.types.d.ts +45 -0
  379. package/dist/components/core/table-row/TableRow.types.js +7 -0
  380. package/dist/components/core/table-row/table-row-impl.css +31 -0
  381. package/dist/components/core/text-area/TextArea.css +325 -0
  382. package/dist/components/core/text-area/TextArea.d.ts +13 -0
  383. package/dist/components/core/text-area/TextArea.js +133 -0
  384. package/dist/components/core/text-area/TextArea.types.d.ts +67 -0
  385. package/dist/components/core/text-area/TextArea.types.js +19 -0
  386. package/dist/components/core/text-area/text-area-impl.css +36 -0
  387. package/dist/components/core/text-input/TextInput.css +400 -0
  388. package/dist/components/core/text-input/TextInput.d.ts +5 -0
  389. package/dist/components/core/text-input/TextInput.js +130 -0
  390. package/dist/components/core/text-input/TextInput.types.d.ts +96 -0
  391. package/dist/components/core/text-input/TextInput.types.js +24 -0
  392. package/dist/components/core/text-input/text-input-impl.css +36 -0
  393. package/dist/components/core/tooltip/Tooltip.css +101 -0
  394. package/dist/components/core/tooltip/Tooltip.d.ts +51 -0
  395. package/dist/components/core/tooltip/Tooltip.js +87 -0
  396. package/dist/components/core/tooltip/Tooltip.types.d.ts +38 -0
  397. package/dist/components/core/tooltip/Tooltip.types.js +9 -0
  398. package/dist/components/core/tooltip/TooltipAnchor.d.ts +52 -0
  399. package/dist/components/core/tooltip/TooltipAnchor.js +69 -0
  400. package/dist/components/core/tooltip/tooltip-anchor.css +145 -0
  401. package/dist/components/core/tooltip/tooltip-impl.css +54 -0
  402. package/dist/components/core/tooltip/use-tooltip.d.ts +111 -0
  403. package/dist/components/core/tooltip/use-tooltip.js +189 -0
  404. package/dist/components/core/typography/Typography.css +96 -0
  405. package/dist/components/core/typography/Typography.d.ts +297 -0
  406. package/dist/components/core/typography/Typography.js +28 -0
  407. package/dist/components/core/typography/Typography.types.d.ts +40 -0
  408. package/dist/components/core/typography/Typography.types.js +7 -0
  409. package/dist/components/css-time.d.ts +20 -0
  410. package/dist/components/css-time.js +30 -0
  411. package/dist/components/given.d.ts +7 -0
  412. package/dist/components/given.js +9 -0
  413. package/dist/components/hover-open.d.ts +34 -0
  414. package/dist/components/hover-open.js +90 -0
  415. package/dist/components/index.d.ts +114 -1
  416. package/dist/components/index.js +115 -2
  417. package/dist/components/layout/aspect-ratio/AspectRatio.css +29 -0
  418. package/dist/components/layout/aspect-ratio/AspectRatio.d.ts +24 -0
  419. package/dist/components/layout/aspect-ratio/AspectRatio.js +26 -0
  420. package/dist/components/layout/aspect-ratio/AspectRatio.types.d.ts +22 -0
  421. package/dist/components/layout/aspect-ratio/AspectRatio.types.js +7 -0
  422. package/dist/components/layout/aspect-ratio/aspect-ratio-impl.css +44 -0
  423. package/dist/components/layout/grid/Grid.css +76 -0
  424. package/dist/components/layout/grid/Grid.d.ts +31 -0
  425. package/dist/components/layout/grid/Grid.js +33 -0
  426. package/dist/components/layout/grid/Grid.types.d.ts +48 -0
  427. package/dist/components/layout/grid/Grid.types.js +7 -0
  428. package/dist/components/layout/grid/grid-impl.css +62 -0
  429. package/dist/components/layout/row/Row.css +85 -0
  430. package/dist/components/layout/row/Row.d.ts +32 -0
  431. package/dist/components/layout/row/Row.js +34 -0
  432. package/dist/components/layout/row/Row.types.d.ts +45 -0
  433. package/dist/components/layout/row/Row.types.js +7 -0
  434. package/dist/components/layout/scroller/Scroller.css +59 -0
  435. package/dist/components/layout/scroller/Scroller.d.ts +34 -0
  436. package/dist/components/layout/scroller/Scroller.js +36 -0
  437. package/dist/components/layout/scroller/Scroller.types.d.ts +38 -0
  438. package/dist/components/layout/scroller/Scroller.types.js +7 -0
  439. package/dist/components/layout/scroller/scroller-impl.css +45 -0
  440. package/dist/components/layout/stack/Stack.css +73 -0
  441. package/dist/components/layout/stack/Stack.d.ts +28 -0
  442. package/dist/components/layout/stack/Stack.js +30 -0
  443. package/dist/components/layout/stack/Stack.types.d.ts +41 -0
  444. package/dist/components/layout/stack/Stack.types.js +7 -0
  445. package/dist/components/visually-hidden.d.ts +22 -0
  446. package/dist/components/visually-hidden.js +31 -0
  447. package/dist/fonts/LICENSE-inter.txt +93 -0
  448. package/dist/fonts/LICENSE-red-hat-mono.txt +93 -0
  449. package/dist/fonts/fonts.css +111 -0
  450. package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  451. package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  452. package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  453. package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
  454. package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  455. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  456. package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  457. package/dist/fonts/red-hat-mono-latin-ext-wght-normal.woff2 +0 -0
  458. package/dist/fonts/red-hat-mono-latin-wght-normal.woff2 +0 -0
  459. package/dist/marketing.css +289 -241
  460. package/package.json +18 -4
@@ -0,0 +1,62 @@
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 before.
6
+ */
7
+
8
+ /*
9
+ * The track expression, which the contract has no way to say.
10
+ *
11
+ * A token binding states a property and the role that fills it. This is arithmetic: the width
12
+ * each of n columns would take at the current gap, weighed against the floor a track may not go
13
+ * below. There is no token for a sum, and there should not be — what the sum is made of is
14
+ * already tokens, and the contract binds both of them to custom properties for this file to
15
+ * read. `--dds-grid-track` is the floor and `--dds-grid-gap` is the measure between cells, so
16
+ * every number below is still a decision made in the token layer. Only the shape of the
17
+ * calculation lives here.
18
+ *
19
+ * How it resolves. `(100% - (n - 1) * gap) / n` is exactly what one of n columns is worth at
20
+ * the current width. While that is wider than the floor, `max()` returns it and precisely n
21
+ * columns are drawn. As the region narrows it falls under the floor, `max()` returns the floor
22
+ * instead, and the browser fits as many of those as it can — which is fewer. That is the whole
23
+ * of the component's responsiveness, and there is no breakpoint in it: the layout changes
24
+ * because the arithmetic changed, not because a width was named.
25
+ *
26
+ * `min(100%, ...)` is the guard for a region narrower than the floor itself. Without it the
27
+ * track keeps its floor, the single column is wider than what holds it, and the grid overflows
28
+ * rather than shrinking — the failure being sideways scroll on a phone, which nothing reports.
29
+ *
30
+ * `auto-fit` rather than `auto-fill` collapses the tracks nothing landed in. Four cards asked to
31
+ * sit in a field of six are four cards sharing the width rather than four cards and two holes,
32
+ * because a field drawn around a count its content never reached reads as something missing.
33
+ * It is also what makes the column count a ceiling rather than a promise.
34
+ */
35
+
36
+ :where([data-dds-context="marketing"]) .dds-grid[data-columns="2"] {
37
+ grid-template-columns: repeat(
38
+ auto-fit,
39
+ minmax(min(100%, max(var(--dds-grid-track), calc((100% - 1 * var(--dds-grid-gap)) / 2))), 1fr)
40
+ );
41
+ }
42
+
43
+ :where([data-dds-context="marketing"]) .dds-grid[data-columns="3"] {
44
+ grid-template-columns: repeat(
45
+ auto-fit,
46
+ minmax(min(100%, max(var(--dds-grid-track), calc((100% - 2 * var(--dds-grid-gap)) / 3))), 1fr)
47
+ );
48
+ }
49
+
50
+ :where([data-dds-context="marketing"]) .dds-grid[data-columns="4"] {
51
+ grid-template-columns: repeat(
52
+ auto-fit,
53
+ minmax(min(100%, max(var(--dds-grid-track), calc((100% - 3 * var(--dds-grid-gap)) / 4))), 1fr)
54
+ );
55
+ }
56
+
57
+ :where([data-dds-context="marketing"]) .dds-grid[data-columns="6"] {
58
+ grid-template-columns: repeat(
59
+ auto-fit,
60
+ minmax(min(100%, max(var(--dds-grid-track), calc((100% - 5 * var(--dds-grid-gap)) / 6))), 1fr)
61
+ );
62
+ }
@@ -0,0 +1,85 @@
1
+ /* GENERATED from row.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-row {
4
+ box-sizing: border-box;
5
+ display: flex;
6
+ flex-direction: row;
7
+ min-inline-size: 0;
8
+ }
9
+
10
+ :where([data-dds-context="marketing"]) .dds-row[data-align="baseline"] {
11
+ align-items: baseline;
12
+ }
13
+
14
+ :where([data-dds-context="marketing"]) .dds-row[data-align="center"] {
15
+ align-items: center;
16
+ }
17
+
18
+ :where([data-dds-context="marketing"]) .dds-row[data-align="end"] {
19
+ align-items: flex-end;
20
+ }
21
+
22
+ :where([data-dds-context="marketing"]) .dds-row[data-align="start"] {
23
+ align-items: flex-start;
24
+ }
25
+
26
+ :where([data-dds-context="marketing"]) .dds-row[data-align="stretch"] {
27
+ align-items: stretch;
28
+ }
29
+
30
+ :where([data-dds-context="marketing"]) .dds-row[data-justify="between"] {
31
+ justify-content: space-between;
32
+ }
33
+
34
+ :where([data-dds-context="marketing"]) .dds-row[data-justify="center"] {
35
+ justify-content: center;
36
+ }
37
+
38
+ :where([data-dds-context="marketing"]) .dds-row[data-justify="end"] {
39
+ justify-content: flex-end;
40
+ }
41
+
42
+ :where([data-dds-context="marketing"]) .dds-row[data-justify="start"] {
43
+ justify-content: flex-start;
44
+ }
45
+
46
+ :where([data-dds-context="marketing"]) .dds-row[data-wrap="false"] {
47
+ flex-wrap: nowrap;
48
+ }
49
+
50
+ :where([data-dds-context="marketing"]) .dds-row[data-wrap="true"] {
51
+ flex-wrap: wrap;
52
+ }
53
+
54
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="2xl"] {
55
+ gap: var(--space-gap-2xl);
56
+ }
57
+
58
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="3xl"] {
59
+ gap: var(--space-gap-3xl);
60
+ }
61
+
62
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="lg"] {
63
+ gap: var(--space-gap-lg);
64
+ }
65
+
66
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="md"] {
67
+ gap: var(--space-gap-md);
68
+ }
69
+
70
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="none"] {
71
+ gap: var(--space-gap-none);
72
+ }
73
+
74
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="sm"] {
75
+ gap: var(--space-gap-sm);
76
+ }
77
+
78
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="xl"] {
79
+ gap: var(--space-gap-xl);
80
+ }
81
+
82
+ :where([data-dds-context="marketing"]) .dds-row[data-gap="xs"] {
83
+ gap: var(--space-gap-xs);
84
+ }
85
+
@@ -0,0 +1,32 @@
1
+ import './Row.css';
2
+ import { type RowProps } from './Row.types.js';
3
+ export type { RowProps };
4
+ /**
5
+ * A line, and one measure between the things on it.
6
+ *
7
+ * One element, which is the whole of it. The four axes reach the root as attributes, the
8
+ * stylesheet reads them there, and the browser does the arranging — there is nothing to compose
9
+ * and no state to hold.
10
+ *
11
+ * `wrap` is written as a string rather than left to React's boolean handling. A `false` boolean on
12
+ * a `data-` attribute renders as the string "false", which is what the stylesheet matches on, but
13
+ * relying on that coercion means the rule for the default case hangs on a conversion nobody
14
+ * declared. Both values are spelled out, so `[data-wrap="false"]` has something to match and the
15
+ * line is explicitly not wrapping rather than merely not told to.
16
+ *
17
+ * Nothing here knows about the viewport. The top three steps of this package's ramp are redefined
18
+ * below 768px in the stylesheet, so a line asks for a role and gets a narrower measure on a phone
19
+ * without this file, or the page that used it, containing a breakpoint.
20
+ *
21
+ * The defaults are destructured from the generated `rowDefaults` rather than typed here, so the
22
+ * attribute the stylesheet matches on cannot drift from the value the contract declares. Every
23
+ * axis is written to the root unconditionally, including when it holds its default: a rule per
24
+ * value means there is no bare-element case to fall through to, and an attribute left off would
25
+ * leave the line with no `align-items` at all rather than with the default one.
26
+ *
27
+ * The spread goes first, so a consumer can set what is not load-bearing — an id, a data attribute,
28
+ * a ref — and cannot set what is. `className` is not in the type at all, which is the point of the
29
+ * component: everything this line can be, it can be through the four props, and a page that needs
30
+ * a fifth thing needs a different primitive rather than a way around this one.
31
+ */
32
+ export declare function Row({ gap, align, justify, wrap, children, ...rest }: RowProps): import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import './Row.css';
3
+ import { rowDefaults, rowParts } from './Row.types.js';
4
+ /**
5
+ * A line, and one measure between the things on it.
6
+ *
7
+ * One element, which is the whole of it. The four axes reach the root as attributes, the
8
+ * stylesheet reads them there, and the browser does the arranging — there is nothing to compose
9
+ * and no state to hold.
10
+ *
11
+ * `wrap` is written as a string rather than left to React's boolean handling. A `false` boolean on
12
+ * a `data-` attribute renders as the string "false", which is what the stylesheet matches on, but
13
+ * relying on that coercion means the rule for the default case hangs on a conversion nobody
14
+ * declared. Both values are spelled out, so `[data-wrap="false"]` has something to match and the
15
+ * line is explicitly not wrapping rather than merely not told to.
16
+ *
17
+ * Nothing here knows about the viewport. The top three steps of this package's ramp are redefined
18
+ * below 768px in the stylesheet, so a line asks for a role and gets a narrower measure on a phone
19
+ * without this file, or the page that used it, containing a breakpoint.
20
+ *
21
+ * The defaults are destructured from the generated `rowDefaults` rather than typed here, so the
22
+ * attribute the stylesheet matches on cannot drift from the value the contract declares. Every
23
+ * axis is written to the root unconditionally, including when it holds its default: a rule per
24
+ * value means there is no bare-element case to fall through to, and an attribute left off would
25
+ * leave the line with no `align-items` at all rather than with the default one.
26
+ *
27
+ * The spread goes first, so a consumer can set what is not load-bearing — an id, a data attribute,
28
+ * a ref — and cannot set what is. `className` is not in the type at all, which is the point of the
29
+ * component: everything this line can be, it can be through the four props, and a page that needs
30
+ * a fifth thing needs a different primitive rather than a way around this one.
31
+ */
32
+ export function Row({ gap = rowDefaults.gap, align = rowDefaults.align, justify = rowDefaults.justify, wrap = rowDefaults.wrap, children, ...rest }) {
33
+ return (_jsx("div", { ...rest, className: rowParts.root, "data-gap": gap, "data-align": align, "data-justify": justify, "data-wrap": wrap ? 'true' : 'false', children: children }));
34
+ }
@@ -0,0 +1,45 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface RowOwnProps {
3
+ /**
4
+ * `none` — No gap at all, for a line whose marks are meant to read as one object rather than as a list of controls. The only step here that is a decision rather than a measure
5
+ * `xs` — The tightest gap between related elements: a glyph and its label, a pair of words read as one, inline text pairs
6
+ * `sm` — The default, and what the token names for a line of sibling controls — buttons in a row, a label and the field beside it
7
+ * `md` — The step the token names for stacked items — form fields, feature list items, pricing features — taken across: peers that are not controls, where the control step would make them read as one object
8
+ * `lg` — Between content groups — feature cards, footer columns, one pricing plan beside the next
9
+ * `xl` — Between the parts of a card, or between a heading and the block beside it. Drops one step below 768px, a phone having a third of the width to spend
10
+ * `2xl` — Between one section of a page and the next, set side by side. Drops one step below 768px, a phone having a third of the width to spend
11
+ * `3xl` — The largest gap, for separating whole movements of a page laid out across. Drops one step below 768px, a phone having a third of the width to spend
12
+ */
13
+ gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
14
+ /**
15
+ * `start` — Items keep their own height and sit against the top of the line — a label beside a paragraph that runs to several lines, where centring would set the label against the middle of the block
16
+ * `center` — The default. Items are centred across the line, which is what things of different heights want — a glyph beside a label, a badge beside a title, an avatar beside a name
17
+ * `end` — Items keep their own height and sit against the bottom of the line
18
+ * `stretch` — Every item takes the full height of the line, which is what a line of cards or panels wants when they should finish level however much is in each
19
+ * `baseline` — The first line of text in each item sits on one line. The one alignment that exists only across a row, and the only one that holds when the items are set at different sizes — a figure and its unit, a name and the smaller label after it
20
+ */
21
+ align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';
22
+ /**
23
+ * `start` — The default. Items sit at the leading edge, and a line with no width of its own is exactly as wide as they are
24
+ * `center` — Items sit together in the middle of a line wider than they are
25
+ * `end` — Items sit against the trailing edge — the shape the actions closing a dialog or a form take, that being where a flow ends
26
+ * `between` — The first item at the leading edge, the last at the trailing, and whatever room is spare shared between them — a title on one side and its action on the other
27
+ */
28
+ justify?: 'start' | 'center' | 'end' | 'between';
29
+ /** The line may break onto another when it runs out of room, rather than squashing its items or running off the edge. For a set whose length the page cannot predict — chips a reader has added, tags on a record, a group of filters */
30
+ wrap?: boolean;
31
+ /** Allowed: any content */
32
+ children: ReactNode;
33
+ }
34
+ export type RowProps = RowOwnProps & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'gap' | 'align' | 'justify' | 'wrap'>;
35
+ /** The class each part carries. Apply these — do not retype them. */
36
+ export declare const rowParts: {
37
+ readonly root: "dds-row";
38
+ };
39
+ /** Generated so defaults cannot drift from the contract. */
40
+ export declare const rowDefaults: {
41
+ readonly gap: "sm";
42
+ readonly align: "center";
43
+ readonly justify: "start";
44
+ readonly wrap: false;
45
+ };
@@ -0,0 +1,7 @@
1
+ // GENERATED from row.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const rowParts = {
4
+ root: 'dds-row',
5
+ };
6
+ /** Generated so defaults cannot drift from the contract. */
7
+ export const rowDefaults = { gap: 'sm', align: 'center', justify: 'start', wrap: false };
@@ -0,0 +1,59 @@
1
+ /* GENERATED from scroller.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-scroller {
4
+ box-sizing: border-box;
5
+ display: flex;
6
+ flex-direction: row;
7
+ min-inline-size: 0;
8
+ overflow-x: auto;
9
+ overscroll-behavior-x: contain;
10
+ }
11
+
12
+ :where([data-dds-context="marketing"]) .dds-scroller[data-align="center"] {
13
+ align-items: center;
14
+ }
15
+
16
+ :where([data-dds-context="marketing"]) .dds-scroller[data-align="end"] {
17
+ align-items: flex-end;
18
+ }
19
+
20
+ :where([data-dds-context="marketing"]) .dds-scroller[data-align="start"] {
21
+ align-items: flex-start;
22
+ }
23
+
24
+ :where([data-dds-context="marketing"]) .dds-scroller[data-align="stretch"] {
25
+ align-items: stretch;
26
+ }
27
+
28
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="2xl"] {
29
+ gap: var(--space-gap-2xl);
30
+ }
31
+
32
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="3xl"] {
33
+ gap: var(--space-gap-3xl);
34
+ }
35
+
36
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="lg"] {
37
+ gap: var(--space-gap-lg);
38
+ }
39
+
40
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="md"] {
41
+ gap: var(--space-gap-md);
42
+ }
43
+
44
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="none"] {
45
+ gap: var(--space-gap-none);
46
+ }
47
+
48
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="sm"] {
49
+ gap: var(--space-gap-sm);
50
+ }
51
+
52
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="xl"] {
53
+ gap: var(--space-gap-xl);
54
+ }
55
+
56
+ :where([data-dds-context="marketing"]) .dds-scroller[data-gap="xs"] {
57
+ gap: var(--space-gap-xs);
58
+ }
59
+
@@ -0,0 +1,34 @@
1
+ import './Scroller.css';
2
+ import './scroller-impl.css';
3
+ import { type ScrollerProps } from './Scroller.types.js';
4
+ export type { ScrollerProps };
5
+ /**
6
+ * A rail, and one measure between the things on it.
7
+ *
8
+ * One element, which is the whole of it. The two styling axes reach the root as attributes, the
9
+ * stylesheet reads them there, and the browser does the scrolling — there is no scroll handler, no
10
+ * measurement and no state. Arrow keys, Home and End all work on a focused scroll container
11
+ * already; this component's job is to make sure the reader can get focus onto it, not to
12
+ * reimplement what the platform does.
13
+ *
14
+ * `tabIndex={0}` is the whole point and the thing most rails get wrong. A scroll container whose
15
+ * children are all inert — cards that are not links, chips that are not buttons, pictures — gets no
16
+ * tab stop from the browser, so everything past the edge is unreachable by anyone not using a
17
+ * pointer. It is written unconditionally rather than only when the children happen to be inert,
18
+ * because this component cannot see what it was given: children arrive as opaque nodes, and a
19
+ * guess that inspected them would be wrong the first time one rendered a link of its own. An extra
20
+ * stop is one keypress; an unreachable region is content a reader never learns exists.
21
+ *
22
+ * `role="group"` with `aria-label` is what makes that stop mean something. Landing on an unnamed
23
+ * div announces nothing useful, so the name is required by the type rather than encouraged by a
24
+ * document.
25
+ *
26
+ * `data-snap` is written as a string rather than left to React's boolean handling, for the same
27
+ * reason Row spells out its `wrap`: the impl rules key on `[data-snap="true"]`, and a rule that
28
+ * depended on a coercion nobody declared is a rule one refactor away from silently not matching.
29
+ *
30
+ * The spread goes first, so a consumer can set what is not load-bearing and cannot set what is —
31
+ * the role, the name and the tab stop are all written after it, because a rail that let itself be
32
+ * made unfocusable would be a rail with an accessibility guarantee it does not keep.
33
+ */
34
+ export declare function Scroller({ gap, align, snap, label, children, ...rest }: ScrollerProps): import("react").JSX.Element;
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import './Scroller.css';
3
+ import './scroller-impl.css';
4
+ import { scrollerDefaults, scrollerParts } from './Scroller.types.js';
5
+ /**
6
+ * A rail, and one measure between the things on it.
7
+ *
8
+ * One element, which is the whole of it. The two styling axes reach the root as attributes, the
9
+ * stylesheet reads them there, and the browser does the scrolling — there is no scroll handler, no
10
+ * measurement and no state. Arrow keys, Home and End all work on a focused scroll container
11
+ * already; this component's job is to make sure the reader can get focus onto it, not to
12
+ * reimplement what the platform does.
13
+ *
14
+ * `tabIndex={0}` is the whole point and the thing most rails get wrong. A scroll container whose
15
+ * children are all inert — cards that are not links, chips that are not buttons, pictures — gets no
16
+ * tab stop from the browser, so everything past the edge is unreachable by anyone not using a
17
+ * pointer. It is written unconditionally rather than only when the children happen to be inert,
18
+ * because this component cannot see what it was given: children arrive as opaque nodes, and a
19
+ * guess that inspected them would be wrong the first time one rendered a link of its own. An extra
20
+ * stop is one keypress; an unreachable region is content a reader never learns exists.
21
+ *
22
+ * `role="group"` with `aria-label` is what makes that stop mean something. Landing on an unnamed
23
+ * div announces nothing useful, so the name is required by the type rather than encouraged by a
24
+ * document.
25
+ *
26
+ * `data-snap` is written as a string rather than left to React's boolean handling, for the same
27
+ * reason Row spells out its `wrap`: the impl rules key on `[data-snap="true"]`, and a rule that
28
+ * depended on a coercion nobody declared is a rule one refactor away from silently not matching.
29
+ *
30
+ * The spread goes first, so a consumer can set what is not load-bearing and cannot set what is —
31
+ * the role, the name and the tab stop are all written after it, because a rail that let itself be
32
+ * made unfocusable would be a rail with an accessibility guarantee it does not keep.
33
+ */
34
+ export function Scroller({ gap = scrollerDefaults.gap, align = scrollerDefaults.align, snap = scrollerDefaults.snap, label, children, ...rest }) {
35
+ return (_jsx("div", { ...rest, className: scrollerParts.root, "data-gap": gap, "data-align": align, "data-snap": snap ? 'true' : 'false', role: "group", "aria-label": label, tabIndex: 0, children: children }));
36
+ }
@@ -0,0 +1,38 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface ScrollerOwnProps {
3
+ /**
4
+ * `none` — No gap at all, for a rail whose marks are meant to read as one object rather than as a set. The only step here that is a decision rather than a measure
5
+ * `xs` — The tightest gap between related elements, for a rail read as one strip rather than as separate items
6
+ * `sm` — The step the token names for sibling controls — a rail of chips, filters or small marks
7
+ * `md` — The step the token names for stacked items, taken across: items that are peers but not controls, where the control step would run them together
8
+ * `lg` — The default, and what the token names for feature cards, footer columns and pricing plans — the rail of cards this is most often reached for
9
+ * `xl` — Between the parts of a card, taken along a rail — items that each hold a picture as well as words. Drops one step below 768px, a phone having a third of the width to spend
10
+ * `2xl` — Between one section of a page and the next, laid along a rail. Drops one step below 768px, a phone having a third of the width to spend
11
+ * `3xl` — The largest gap, for separating whole movements of a page laid along a rail. Drops one step below 768px, a phone having a third of the width to spend
12
+ */
13
+ gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
14
+ /**
15
+ * `start` — Items keep their own height and sit against the top of the rail, so a short item ends early rather than being drawn out to match its neighbours
16
+ * `center` — Items keep their own height and sit in the middle of the rail
17
+ * `end` — Items keep their own height and sit against the bottom of the rail
18
+ * `stretch` — The default. Every item takes the full height of the rail, so a run of cards finishes level however much is in each
19
+ */
20
+ align?: 'start' | 'center' | 'end' | 'stretch';
21
+ /** Each stop lands an item against the leading edge rather than wherever the gesture ended. For a rail of items of one size that the reader steps through — cards, slides, a set of positions */
22
+ snap?: boolean;
23
+ /** Always. The rail is a focusable region, so it is announced when a reader arrives at it — and without a name it announces "group" and nothing else, telling them something is there but not what. Name the set rather than the component: "Markets", "Recent trades", not "Carousel" */
24
+ label: string;
25
+ /** Allowed: any content */
26
+ children: ReactNode;
27
+ }
28
+ export type ScrollerProps = ScrollerOwnProps & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'gap' | 'align' | 'snap' | 'label'>;
29
+ /** The class each part carries. Apply these — do not retype them. */
30
+ export declare const scrollerParts: {
31
+ readonly root: "dds-scroller";
32
+ };
33
+ /** Generated so defaults cannot drift from the contract. */
34
+ export declare const scrollerDefaults: {
35
+ readonly gap: "lg";
36
+ readonly align: "stretch";
37
+ readonly snap: false;
38
+ };
@@ -0,0 +1,7 @@
1
+ // GENERATED from scroller.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const scrollerParts = {
4
+ root: 'dds-scroller',
5
+ };
6
+ /** Generated so defaults cannot drift from the contract. */
7
+ export const scrollerDefaults = { gap: 'lg', align: 'stretch', snap: false };
@@ -0,0 +1,45 @@
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 before.
6
+ */
7
+
8
+ /*
9
+ * The items do not shrink, which the contract has no way to say.
10
+ *
11
+ * The children are whatever the page passed — a card, a chip, a figure — so there is no part
12
+ * here to put a class on, and a rule for them is a relationship between this element and its own
13
+ * children rather than a property of either. `> *` is the only way to state it, and it is the
14
+ * same positional fact AspectRatio states about the one thing it holds.
15
+ *
16
+ * It is also the difference between a rail and a squashed Row. A flex item shrinks to fit before
17
+ * it ever overflows, so without this the set narrows to the width available and the rail never
18
+ * scrolls at all — the component doing precisely what it was reached for to prevent, and doing it
19
+ * with no error, no warning and nothing on screen to say a decision was reversed.
20
+ */
21
+ :where([data-dds-context="marketing"]) .dds-scroller > * {
22
+ flex: 0 0 auto;
23
+ }
24
+
25
+ /*
26
+ * Snapping, which the contract cannot hold for a duller reason: `scroll-snap-type` takes two
27
+ * keywords — an axis and a strictness — and a structural value here is a single identifier.
28
+ *
29
+ * `inline` rather than `x`, so the axis follows the writing direction and a rail in Arabic snaps
30
+ * the way its reader scrolls. `mandatory` rather than `proximity` because the prop is a decision
31
+ * that each item is a position: proximity snaps only when the gesture happens to end near one,
32
+ * which reads as the rail catching at random and is worse than not snapping at all.
33
+ *
34
+ * The alignment belongs to the items and not to the rail, so it is a `> *` for the same reason as
35
+ * the rule above. `start` puts each item against the leading edge — the only value that keeps the
36
+ * rail's own reading order, where `center` would leave the first and last items unable to reach
37
+ * their own stops.
38
+ */
39
+ :where([data-dds-context="marketing"]) .dds-scroller[data-snap="true"] {
40
+ scroll-snap-type: inline mandatory;
41
+ }
42
+
43
+ :where([data-dds-context="marketing"]) .dds-scroller[data-snap="true"] > * {
44
+ scroll-snap-align: start;
45
+ }
@@ -0,0 +1,73 @@
1
+ /* GENERATED from stack.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-stack {
4
+ box-sizing: border-box;
5
+ display: flex;
6
+ flex-direction: column;
7
+ min-inline-size: 0;
8
+ }
9
+
10
+ :where([data-dds-context="marketing"]) .dds-stack[data-align="center"] {
11
+ align-items: center;
12
+ }
13
+
14
+ :where([data-dds-context="marketing"]) .dds-stack[data-align="end"] {
15
+ align-items: flex-end;
16
+ }
17
+
18
+ :where([data-dds-context="marketing"]) .dds-stack[data-align="start"] {
19
+ align-items: flex-start;
20
+ }
21
+
22
+ :where([data-dds-context="marketing"]) .dds-stack[data-align="stretch"] {
23
+ align-items: stretch;
24
+ }
25
+
26
+ :where([data-dds-context="marketing"]) .dds-stack[data-justify="between"] {
27
+ justify-content: space-between;
28
+ }
29
+
30
+ :where([data-dds-context="marketing"]) .dds-stack[data-justify="center"] {
31
+ justify-content: center;
32
+ }
33
+
34
+ :where([data-dds-context="marketing"]) .dds-stack[data-justify="end"] {
35
+ justify-content: flex-end;
36
+ }
37
+
38
+ :where([data-dds-context="marketing"]) .dds-stack[data-justify="start"] {
39
+ justify-content: flex-start;
40
+ }
41
+
42
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="2xl"] {
43
+ gap: var(--space-gap-2xl);
44
+ }
45
+
46
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="3xl"] {
47
+ gap: var(--space-gap-3xl);
48
+ }
49
+
50
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="lg"] {
51
+ gap: var(--space-gap-lg);
52
+ }
53
+
54
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="md"] {
55
+ gap: var(--space-gap-md);
56
+ }
57
+
58
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="none"] {
59
+ gap: var(--space-gap-none);
60
+ }
61
+
62
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="sm"] {
63
+ gap: var(--space-gap-sm);
64
+ }
65
+
66
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="xl"] {
67
+ gap: var(--space-gap-xl);
68
+ }
69
+
70
+ :where([data-dds-context="marketing"]) .dds-stack[data-gap="xs"] {
71
+ gap: var(--space-gap-xs);
72
+ }
73
+
@@ -0,0 +1,28 @@
1
+ import './Stack.css';
2
+ import { type StackProps } from './Stack.types.js';
3
+ export type { StackProps };
4
+ /**
5
+ * A column, and one measure between its rows.
6
+ *
7
+ * One element, which is the whole of it. There is nothing to compose and nothing to hold state
8
+ * for: the three axes reach the root as attributes, the stylesheet reads them there, and the
9
+ * browser does the arranging. A layout primitive that rendered a wrapper around its children, or
10
+ * cloned them to hand each one a margin, would be paying for at render what a `gap` already does
11
+ * for nothing — and would break the moment a child was a fragment.
12
+ *
13
+ * Nothing here knows about the viewport. The top three steps of this package's ramp are redefined
14
+ * below 768px in the stylesheet, so a column asks for a role and gets a narrower measure on a
15
+ * phone without this file, or the page that used it, containing a breakpoint.
16
+ *
17
+ * The defaults are destructured from the generated `stackDefaults` rather than typed here, so the
18
+ * attribute the stylesheet matches on cannot drift from the value the contract declares. Every
19
+ * axis is written to the root unconditionally, including when it holds its default: a rule per
20
+ * value means there is no bare-element case to fall through to, and an attribute left off would
21
+ * leave the column with no `align-items` at all rather than with the default one.
22
+ *
23
+ * The spread goes first, so a consumer can set what is not load-bearing — an id, a data attribute,
24
+ * a ref — and cannot set what is. `className` is not in the type at all, which is the point of the
25
+ * component: everything this column can be, it can be through the three props, and a page that
26
+ * needs a fourth thing needs a different primitive rather than a way around this one.
27
+ */
28
+ export declare function Stack({ gap, align, justify, children, ...rest }: StackProps): import("react").JSX.Element;
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import './Stack.css';
3
+ import { stackDefaults, stackParts } from './Stack.types.js';
4
+ /**
5
+ * A column, and one measure between its rows.
6
+ *
7
+ * One element, which is the whole of it. There is nothing to compose and nothing to hold state
8
+ * for: the three axes reach the root as attributes, the stylesheet reads them there, and the
9
+ * browser does the arranging. A layout primitive that rendered a wrapper around its children, or
10
+ * cloned them to hand each one a margin, would be paying for at render what a `gap` already does
11
+ * for nothing — and would break the moment a child was a fragment.
12
+ *
13
+ * Nothing here knows about the viewport. The top three steps of this package's ramp are redefined
14
+ * below 768px in the stylesheet, so a column asks for a role and gets a narrower measure on a
15
+ * phone without this file, or the page that used it, containing a breakpoint.
16
+ *
17
+ * The defaults are destructured from the generated `stackDefaults` rather than typed here, so the
18
+ * attribute the stylesheet matches on cannot drift from the value the contract declares. Every
19
+ * axis is written to the root unconditionally, including when it holds its default: a rule per
20
+ * value means there is no bare-element case to fall through to, and an attribute left off would
21
+ * leave the column with no `align-items` at all rather than with the default one.
22
+ *
23
+ * The spread goes first, so a consumer can set what is not load-bearing — an id, a data attribute,
24
+ * a ref — and cannot set what is. `className` is not in the type at all, which is the point of the
25
+ * component: everything this column can be, it can be through the three props, and a page that
26
+ * needs a fourth thing needs a different primitive rather than a way around this one.
27
+ */
28
+ export function Stack({ gap = stackDefaults.gap, align = stackDefaults.align, justify = stackDefaults.justify, children, ...rest }) {
29
+ return (_jsx("div", { ...rest, className: stackParts.root, "data-gap": gap, "data-align": align, "data-justify": justify, children: children }));
30
+ }