@deriv-com/dds-marketing 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (595) hide show
  1. package/.llm/components/accordion.md +201 -0
  2. package/.llm/components/accordionitem.md +244 -0
  3. package/.llm/components/aspectratio.md +220 -0
  4. package/.llm/components/badge.md +239 -0
  5. package/.llm/components/bottomsheet.md +412 -0
  6. package/.llm/components/breadcrumb.md +205 -0
  7. package/.llm/components/breadcrumbitem.md +186 -0
  8. package/.llm/components/button.md +295 -0
  9. package/.llm/components/buttonicon.md +321 -0
  10. package/.llm/components/card.md +327 -0
  11. package/.llm/components/cardbody.md +435 -0
  12. package/.llm/components/cardbutton.md +273 -0
  13. package/.llm/components/checkbox.md +293 -0
  14. package/.llm/components/ctabanner.md +186 -0
  15. package/.llm/components/ctabannerslider.md +204 -0
  16. package/.llm/components/divider.md +238 -0
  17. package/.llm/components/dropdownmenu.md +461 -0
  18. package/.llm/components/faqaccordion.md +217 -0
  19. package/.llm/components/featurebullets.md +254 -0
  20. package/.llm/components/featurecards.md +313 -0
  21. package/.llm/components/featurescroll.md +284 -0
  22. package/.llm/components/featuresplit.md +249 -0
  23. package/.llm/components/filterchip.md +322 -0
  24. package/.llm/components/footer.md +416 -0
  25. package/.llm/components/footergroup.md +249 -0
  26. package/.llm/components/grid.md +667 -0
  27. package/.llm/components/icon.md +202 -0
  28. package/.llm/components/landinghero.md +254 -0
  29. package/.llm/components/link.md +362 -0
  30. package/.llm/components/logocolumns.md +235 -0
  31. package/.llm/components/logorows.md +212 -0
  32. package/.llm/components/menuitem.md +226 -0
  33. package/.llm/components/navbar.md +522 -0
  34. package/.llm/components/navbaritem.md +246 -0
  35. package/.llm/components/navbarmenu.md +327 -0
  36. package/.llm/components/navbarmenugroup.md +192 -0
  37. package/.llm/components/navbarpanel.md +263 -0
  38. package/.llm/components/navbarswitcher.md +351 -0
  39. package/.llm/components/navbarswitcheroption.md +164 -0
  40. package/.llm/components/option.md +276 -0
  41. package/.llm/components/pageheader.md +231 -0
  42. package/.llm/components/pagination.md +298 -0
  43. package/.llm/components/paginationdots.md +215 -0
  44. package/.llm/components/producthero.md +248 -0
  45. package/.llm/components/removablechip.md +255 -0
  46. package/.llm/components/row.md +389 -0
  47. package/.llm/components/scroller.md +478 -0
  48. package/.llm/components/searchinput.md +287 -0
  49. package/.llm/components/segmentedcontrol.md +366 -0
  50. package/.llm/components/segmentedcontrolitem.md +280 -0
  51. package/.llm/components/select.md +517 -0
  52. package/.llm/components/selectchip.md +375 -0
  53. package/.llm/components/spinner.md +230 -0
  54. package/.llm/components/stack.md +342 -0
  55. package/.llm/components/statusdot.md +213 -0
  56. package/.llm/components/subdomainnavbar.md +335 -0
  57. package/.llm/components/tab.md +299 -0
  58. package/.llm/components/table.md +668 -0
  59. package/.llm/components/tablebody.md +266 -0
  60. package/.llm/components/tablecell.md +256 -0
  61. package/.llm/components/tablehead.md +256 -0
  62. package/.llm/components/tableheadercell.md +306 -0
  63. package/.llm/components/tablerow.md +293 -0
  64. package/.llm/components/tablist.md +218 -0
  65. package/.llm/components/testimonialrow.md +235 -0
  66. package/.llm/components/testimonialslider.md +254 -0
  67. package/.llm/components/textarea.md +370 -0
  68. package/.llm/components/textinput.md +475 -0
  69. package/.llm/components/tooltip.md +275 -0
  70. package/.llm/components/typography.md +253 -0
  71. package/.llm/digest/accordion.md +43 -0
  72. package/.llm/digest/accordionitem.md +47 -0
  73. package/.llm/digest/aspectratio.md +47 -0
  74. package/.llm/digest/badge.md +45 -0
  75. package/.llm/digest/bottomsheet.md +69 -0
  76. package/.llm/digest/breadcrumb.md +38 -0
  77. package/.llm/digest/breadcrumbitem.md +43 -0
  78. package/.llm/digest/button.md +53 -0
  79. package/.llm/digest/buttonicon.md +61 -0
  80. package/.llm/digest/card.md +51 -0
  81. package/.llm/digest/cardbody.md +70 -0
  82. package/.llm/digest/cardbutton.md +50 -0
  83. package/.llm/digest/checkbox.md +63 -0
  84. package/.llm/digest/ctabanner.md +44 -0
  85. package/.llm/digest/ctabannerslider.md +45 -0
  86. package/.llm/digest/divider.md +52 -0
  87. package/.llm/digest/dropdownmenu.md +67 -0
  88. package/.llm/digest/faqaccordion.md +43 -0
  89. package/.llm/digest/featurebullets.md +52 -0
  90. package/.llm/digest/featurecards.md +49 -0
  91. package/.llm/digest/featurescroll.md +52 -0
  92. package/.llm/digest/featuresplit.md +54 -0
  93. package/.llm/digest/filterchip.md +68 -0
  94. package/.llm/digest/footer.md +57 -0
  95. package/.llm/digest/footergroup.md +42 -0
  96. package/.llm/digest/grid.md +62 -0
  97. package/.llm/digest/icon.md +45 -0
  98. package/.llm/digest/landinghero.md +53 -0
  99. package/.llm/digest/link.md +59 -0
  100. package/.llm/digest/logocolumns.md +55 -0
  101. package/.llm/digest/logorows.md +48 -0
  102. package/.llm/digest/menuitem.md +46 -0
  103. package/.llm/digest/navbar.md +75 -0
  104. package/.llm/digest/navbaritem.md +54 -0
  105. package/.llm/digest/navbarmenu.md +54 -0
  106. package/.llm/digest/navbarmenugroup.md +40 -0
  107. package/.llm/digest/navbarpanel.md +53 -0
  108. package/.llm/digest/navbarswitcher.md +51 -0
  109. package/.llm/digest/navbarswitcheroption.md +37 -0
  110. package/.llm/digest/option.md +54 -0
  111. package/.llm/digest/pageheader.md +49 -0
  112. package/.llm/digest/pagination.md +60 -0
  113. package/.llm/digest/paginationdots.md +43 -0
  114. package/.llm/digest/producthero.md +53 -0
  115. package/.llm/digest/removablechip.md +51 -0
  116. package/.llm/digest/row.md +60 -0
  117. package/.llm/digest/scroller.md +59 -0
  118. package/.llm/digest/searchinput.md +56 -0
  119. package/.llm/digest/segmentedcontrol.md +59 -0
  120. package/.llm/digest/segmentedcontrolitem.md +59 -0
  121. package/.llm/digest/select.md +92 -0
  122. package/.llm/digest/selectchip.md +73 -0
  123. package/.llm/digest/spinner.md +52 -0
  124. package/.llm/digest/stack.md +56 -0
  125. package/.llm/digest/statusdot.md +46 -0
  126. package/.llm/digest/subdomainnavbar.md +54 -0
  127. package/.llm/digest/tab.md +60 -0
  128. package/.llm/digest/table.md +71 -0
  129. package/.llm/digest/tablebody.md +49 -0
  130. package/.llm/digest/tablecell.md +55 -0
  131. package/.llm/digest/tablehead.md +50 -0
  132. package/.llm/digest/tableheadercell.md +65 -0
  133. package/.llm/digest/tablerow.md +56 -0
  134. package/.llm/digest/tablist.md +46 -0
  135. package/.llm/digest/testimonialrow.md +51 -0
  136. package/.llm/digest/testimonialslider.md +51 -0
  137. package/.llm/digest/textarea.md +78 -0
  138. package/.llm/digest/textinput.md +95 -0
  139. package/.llm/digest/tooltip.md +58 -0
  140. package/.llm/digest/typography.md +59 -0
  141. package/.llm/index.md +107 -0
  142. package/.llm/rules.md +146 -0
  143. package/.llm/tokens.md +385 -0
  144. package/AGENTS.md +189 -0
  145. package/LICENSE +21 -0
  146. package/README.md +78 -10
  147. package/dist/components/banner-data.d.ts +38 -0
  148. package/dist/components/banner-data.js +15 -0
  149. package/dist/components/blocks/block-reveal.css +90 -0
  150. package/dist/components/blocks/cta-banner/CtaBanner.css +66 -0
  151. package/dist/components/blocks/cta-banner/CtaBanner.d.ts +22 -0
  152. package/dist/components/blocks/cta-banner/CtaBanner.js +31 -0
  153. package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +29 -0
  154. package/dist/components/blocks/cta-banner/CtaBanner.types.js +13 -0
  155. package/dist/components/blocks/cta-banner/cta-banner-impl.css +29 -0
  156. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +90 -0
  157. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +39 -0
  158. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +60 -0
  159. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +41 -0
  160. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +15 -0
  161. package/dist/components/blocks/cta-banner-slider/cta-banner-slider-impl.css +73 -0
  162. package/dist/components/blocks/faq-accordion/FaqAccordion.css +54 -0
  163. package/dist/components/blocks/faq-accordion/FaqAccordion.d.ts +20 -0
  164. package/dist/components/blocks/faq-accordion/FaqAccordion.js +28 -0
  165. package/dist/components/blocks/faq-accordion/FaqAccordion.types.d.ts +25 -0
  166. package/dist/components/blocks/faq-accordion/FaqAccordion.types.js +10 -0
  167. package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +54 -0
  168. package/dist/components/blocks/feature-bullets/FeatureBullets.css +139 -0
  169. package/dist/components/blocks/feature-bullets/FeatureBullets.d.ts +31 -0
  170. package/dist/components/blocks/feature-bullets/FeatureBullets.js +55 -0
  171. package/dist/components/blocks/feature-bullets/FeatureBullets.types.d.ts +39 -0
  172. package/dist/components/blocks/feature-bullets/FeatureBullets.types.js +16 -0
  173. package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +104 -0
  174. package/dist/components/blocks/feature-cards/FeatureCards.css +84 -0
  175. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +24 -0
  176. package/dist/components/blocks/feature-cards/FeatureCards.js +66 -0
  177. package/dist/components/blocks/feature-cards/FeatureCards.types.d.ts +33 -0
  178. package/dist/components/blocks/feature-cards/FeatureCards.types.js +14 -0
  179. package/dist/components/blocks/feature-cards/feature-cards-impl.css +245 -0
  180. package/dist/components/blocks/feature-scroll/FeatureScroll.css +137 -0
  181. package/dist/components/blocks/feature-scroll/FeatureScroll.d.ts +39 -0
  182. package/dist/components/blocks/feature-scroll/FeatureScroll.js +167 -0
  183. package/dist/components/blocks/feature-scroll/FeatureScroll.types.d.ts +40 -0
  184. package/dist/components/blocks/feature-scroll/FeatureScroll.types.js +17 -0
  185. package/dist/components/blocks/feature-scroll/feature-scroll-impl.css +292 -0
  186. package/dist/components/blocks/feature-split/FeatureSplit.css +95 -0
  187. package/dist/components/blocks/feature-split/FeatureSplit.d.ts +30 -0
  188. package/dist/components/blocks/feature-split/FeatureSplit.js +38 -0
  189. package/dist/components/blocks/feature-split/FeatureSplit.types.d.ts +39 -0
  190. package/dist/components/blocks/feature-split/FeatureSplit.types.js +14 -0
  191. package/dist/components/blocks/feature-split/feature-split-impl.css +83 -0
  192. package/dist/components/blocks/landing-hero/LandingHero.css +85 -0
  193. package/dist/components/blocks/landing-hero/LandingHero.d.ts +41 -0
  194. package/dist/components/blocks/landing-hero/LandingHero.js +54 -0
  195. package/dist/components/blocks/landing-hero/LandingHero.types.d.ts +37 -0
  196. package/dist/components/blocks/landing-hero/LandingHero.types.js +15 -0
  197. package/dist/components/blocks/landing-hero/landing-hero-impl.css +355 -0
  198. package/dist/components/blocks/logo-columns/LogoColumns.css +161 -0
  199. package/dist/components/blocks/logo-columns/LogoColumns.d.ts +23 -0
  200. package/dist/components/blocks/logo-columns/LogoColumns.js +46 -0
  201. package/dist/components/blocks/logo-columns/LogoColumns.types.d.ts +46 -0
  202. package/dist/components/blocks/logo-columns/LogoColumns.types.js +18 -0
  203. package/dist/components/blocks/logo-columns/logo-columns-impl.css +188 -0
  204. package/dist/components/blocks/logo-rows/LogoRows.css +122 -0
  205. package/dist/components/blocks/logo-rows/LogoRows.d.ts +20 -0
  206. package/dist/components/blocks/logo-rows/LogoRows.js +43 -0
  207. package/dist/components/blocks/logo-rows/LogoRows.types.d.ts +36 -0
  208. package/dist/components/blocks/logo-rows/LogoRows.types.js +16 -0
  209. package/dist/components/blocks/logo-rows/logo-rows-impl.css +179 -0
  210. package/dist/components/blocks/page-header/PageHeader.css +79 -0
  211. package/dist/components/blocks/page-header/PageHeader.d.ts +34 -0
  212. package/dist/components/blocks/page-header/PageHeader.js +43 -0
  213. package/dist/components/blocks/page-header/PageHeader.types.d.ts +32 -0
  214. package/dist/components/blocks/page-header/PageHeader.types.js +14 -0
  215. package/dist/components/blocks/page-header/page-header-impl.css +176 -0
  216. package/dist/components/blocks/product-hero/ProductHero.css +86 -0
  217. package/dist/components/blocks/product-hero/ProductHero.d.ts +35 -0
  218. package/dist/components/blocks/product-hero/ProductHero.js +48 -0
  219. package/dist/components/blocks/product-hero/ProductHero.types.d.ts +37 -0
  220. package/dist/components/blocks/product-hero/ProductHero.types.js +15 -0
  221. package/dist/components/blocks/product-hero/product-hero-impl.css +354 -0
  222. package/dist/components/blocks/testimonial-row/TestimonialRow.css +245 -0
  223. package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +20 -0
  224. package/dist/components/blocks/testimonial-row/TestimonialRow.js +128 -0
  225. package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +54 -0
  226. package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +26 -0
  227. package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +195 -0
  228. package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +181 -0
  229. package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +22 -0
  230. package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +36 -0
  231. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +49 -0
  232. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +21 -0
  233. package/dist/components/blocks/testimonial-slider/testimonial-slider-impl.css +202 -0
  234. package/dist/components/blocks/use-reveal.d.ts +46 -0
  235. package/dist/components/blocks/use-reveal.js +120 -0
  236. package/dist/components/blocks/use-rotation.d.ts +62 -0
  237. package/dist/components/blocks/use-rotation.js +176 -0
  238. package/dist/components/core/accordion/Accordion.css +10 -0
  239. package/dist/components/core/accordion/Accordion.d.ts +20 -0
  240. package/dist/components/core/accordion/Accordion.js +69 -0
  241. package/dist/components/core/accordion/Accordion.types.d.ts +20 -0
  242. package/dist/components/core/accordion/Accordion.types.js +7 -0
  243. package/dist/components/core/accordion-item/AccordionItem.css +99 -0
  244. package/dist/components/core/accordion-item/AccordionItem.d.ts +44 -0
  245. package/dist/components/core/accordion-item/AccordionItem.js +63 -0
  246. package/dist/components/core/accordion-item/AccordionItem.types.d.ts +32 -0
  247. package/dist/components/core/accordion-item/AccordionItem.types.js +13 -0
  248. package/dist/components/core/accordion-item/accordion-item-impl.css +107 -0
  249. package/dist/components/core/badge/Badge.css +37 -0
  250. package/dist/components/core/badge/Badge.d.ts +37 -0
  251. package/dist/components/core/badge/Badge.js +40 -0
  252. package/dist/components/core/badge/Badge.types.d.ts +24 -0
  253. package/dist/components/core/badge/Badge.types.js +8 -0
  254. package/dist/components/core/badge/badge-impl.css +32 -0
  255. package/dist/components/core/bottom-sheet/BottomSheet.css +178 -0
  256. package/dist/components/core/bottom-sheet/BottomSheet.d.ts +22 -0
  257. package/dist/components/core/bottom-sheet/BottomSheet.js +359 -0
  258. package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +67 -0
  259. package/dist/components/core/bottom-sheet/BottomSheet.types.js +18 -0
  260. package/dist/components/core/bottom-sheet/bottom-sheet-impl.css +57 -0
  261. package/dist/components/core/breadcrumb/Breadcrumb.css +19 -0
  262. package/dist/components/core/breadcrumb/Breadcrumb.d.ts +16 -0
  263. package/dist/components/core/breadcrumb/Breadcrumb.js +22 -0
  264. package/dist/components/core/breadcrumb/Breadcrumb.types.d.ts +18 -0
  265. package/dist/components/core/breadcrumb/Breadcrumb.types.js +9 -0
  266. package/dist/components/core/breadcrumb-item/BreadcrumbItem.css +34 -0
  267. package/dist/components/core/breadcrumb-item/BreadcrumbItem.d.ts +12 -0
  268. package/dist/components/core/breadcrumb-item/BreadcrumbItem.js +15 -0
  269. package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.d.ts +22 -0
  270. package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.js +9 -0
  271. package/dist/components/core/button/Button.css +188 -0
  272. package/dist/components/core/button/Button.d.ts +27 -0
  273. package/dist/components/core/button/Button.js +57 -0
  274. package/dist/components/core/button/Button.types.d.ts +35 -0
  275. package/dist/components/core/button/Button.types.js +9 -0
  276. package/dist/components/core/button/button-impl.css +71 -0
  277. package/dist/components/core/button-icon/ButtonIcon.css +151 -0
  278. package/dist/components/core/button-icon/ButtonIcon.d.ts +34 -0
  279. package/dist/components/core/button-icon/ButtonIcon.js +117 -0
  280. package/dist/components/core/button-icon/ButtonIcon.types.d.ts +41 -0
  281. package/dist/components/core/button-icon/ButtonIcon.types.js +8 -0
  282. package/dist/components/core/card/Card.css +74 -0
  283. package/dist/components/core/card/Card.d.ts +24 -0
  284. package/dist/components/core/card/Card.js +26 -0
  285. package/dist/components/core/card/Card.types.d.ts +34 -0
  286. package/dist/components/core/card/Card.types.js +7 -0
  287. package/dist/components/core/card-body/CardBody.css +144 -0
  288. package/dist/components/core/card-body/CardBody.d.ts +62 -0
  289. package/dist/components/core/card-body/CardBody.js +97 -0
  290. package/dist/components/core/card-body/CardBody.types.d.ts +64 -0
  291. package/dist/components/core/card-body/CardBody.types.js +16 -0
  292. package/dist/components/core/card-body/card-body-impl.css +87 -0
  293. package/dist/components/core/card-button/CardButton.css +82 -0
  294. package/dist/components/core/card-button/CardButton.d.ts +27 -0
  295. package/dist/components/core/card-button/CardButton.js +37 -0
  296. package/dist/components/core/card-button/CardButton.types.d.ts +25 -0
  297. package/dist/components/core/card-button/CardButton.types.js +7 -0
  298. package/dist/components/core/card-button/card-button-impl.css +39 -0
  299. package/dist/components/core/checkbox/Checkbox.css +156 -0
  300. package/dist/components/core/checkbox/Checkbox.d.ts +21 -0
  301. package/dist/components/core/checkbox/Checkbox.js +97 -0
  302. package/dist/components/core/checkbox/Checkbox.types.d.ts +46 -0
  303. package/dist/components/core/checkbox/Checkbox.types.js +15 -0
  304. package/dist/components/core/checkbox/checkbox-impl.css +90 -0
  305. package/dist/components/core/divider/Divider.css +41 -0
  306. package/dist/components/core/divider/Divider.d.ts +46 -0
  307. package/dist/components/core/divider/Divider.js +51 -0
  308. package/dist/components/core/divider/Divider.types.d.ts +25 -0
  309. package/dist/components/core/divider/Divider.types.js +9 -0
  310. package/dist/components/core/dropdown-menu/DropdownMenu.css +147 -0
  311. package/dist/components/core/dropdown-menu/DropdownMenu.d.ts +24 -0
  312. package/dist/components/core/dropdown-menu/DropdownMenu.js +311 -0
  313. package/dist/components/core/dropdown-menu/DropdownMenu.types.d.ts +62 -0
  314. package/dist/components/core/dropdown-menu/DropdownMenu.types.js +12 -0
  315. package/dist/components/core/dropdown-menu/dropdown-menu-impl.css +70 -0
  316. package/dist/components/core/filter-chip/FilterChip.css +150 -0
  317. package/dist/components/core/filter-chip/FilterChip.d.ts +23 -0
  318. package/dist/components/core/filter-chip/FilterChip.js +37 -0
  319. package/dist/components/core/filter-chip/FilterChip.types.d.ts +53 -0
  320. package/dist/components/core/filter-chip/FilterChip.types.js +12 -0
  321. package/dist/components/core/footer/Footer.css +104 -0
  322. package/dist/components/core/footer/Footer.d.ts +43 -0
  323. package/dist/components/core/footer/Footer.js +53 -0
  324. package/dist/components/core/footer/Footer.types.d.ts +47 -0
  325. package/dist/components/core/footer/Footer.types.js +18 -0
  326. package/dist/components/core/footer/footer-impl.css +218 -0
  327. package/dist/components/core/footer-group/FooterGroup.css +91 -0
  328. package/dist/components/core/footer-group/FooterGroup.d.ts +32 -0
  329. package/dist/components/core/footer-group/FooterGroup.js +64 -0
  330. package/dist/components/core/footer-group/FooterGroup.types.d.ts +25 -0
  331. package/dist/components/core/footer-group/FooterGroup.types.js +12 -0
  332. package/dist/components/core/footer-group/footer-group-impl.css +78 -0
  333. package/dist/components/core/icon/Icon.css +40 -0
  334. package/dist/components/core/icon/Icon.d.ts +23 -0
  335. package/dist/components/core/icon/Icon.js +79 -0
  336. package/dist/components/core/icon/Icon.types.d.ts +24 -0
  337. package/dist/components/core/icon/Icon.types.js +7 -0
  338. package/dist/components/core/link/Link.css +89 -0
  339. package/dist/components/core/link/Link.d.ts +37 -0
  340. package/dist/components/core/link/Link.js +141 -0
  341. package/dist/components/core/link/Link.types.d.ts +41 -0
  342. package/dist/components/core/link/Link.types.js +9 -0
  343. package/dist/components/core/link/link-impl.css +168 -0
  344. package/dist/components/core/menu-item/MenuItem.css +70 -0
  345. package/dist/components/core/menu-item/MenuItem.d.ts +11 -0
  346. package/dist/components/core/menu-item/MenuItem.js +26 -0
  347. package/dist/components/core/menu-item/MenuItem.types.d.ts +28 -0
  348. package/dist/components/core/menu-item/MenuItem.types.js +9 -0
  349. package/dist/components/core/navbar/Navbar.css +134 -0
  350. package/dist/components/core/navbar/Navbar.d.ts +52 -0
  351. package/dist/components/core/navbar/Navbar.js +498 -0
  352. package/dist/components/core/navbar/Navbar.types.d.ts +68 -0
  353. package/dist/components/core/navbar/Navbar.types.js +17 -0
  354. package/dist/components/core/navbar/navbar-impl.css +597 -0
  355. package/dist/components/core/navbar/navbar-material.css +96 -0
  356. package/dist/components/core/navbar-item/NavbarItem.css +75 -0
  357. package/dist/components/core/navbar-item/NavbarItem.d.ts +22 -0
  358. package/dist/components/core/navbar-item/NavbarItem.js +40 -0
  359. package/dist/components/core/navbar-item/NavbarItem.types.d.ts +34 -0
  360. package/dist/components/core/navbar-item/NavbarItem.types.js +10 -0
  361. package/dist/components/core/navbar-menu/NavbarMenu.css +130 -0
  362. package/dist/components/core/navbar-menu/NavbarMenu.d.ts +6 -0
  363. package/dist/components/core/navbar-menu/NavbarMenu.js +187 -0
  364. package/dist/components/core/navbar-menu/NavbarMenu.types.d.ts +45 -0
  365. package/dist/components/core/navbar-menu/NavbarMenu.types.js +12 -0
  366. package/dist/components/core/navbar-menu/navbar-menu-impl.css +186 -0
  367. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.css +26 -0
  368. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.d.ts +17 -0
  369. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.js +22 -0
  370. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.d.ts +14 -0
  371. package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.js +7 -0
  372. package/dist/components/core/navbar-panel/NavbarPanel.css +87 -0
  373. package/dist/components/core/navbar-panel/NavbarPanel.d.ts +34 -0
  374. package/dist/components/core/navbar-panel/NavbarPanel.js +46 -0
  375. package/dist/components/core/navbar-panel/NavbarPanel.types.d.ts +29 -0
  376. package/dist/components/core/navbar-panel/NavbarPanel.types.js +12 -0
  377. package/dist/components/core/navbar-panel/navbar-panel-impl.css +104 -0
  378. package/dist/components/core/navbar-panel/use-navbar-panel.d.ts +26 -0
  379. package/dist/components/core/navbar-panel/use-navbar-panel.js +135 -0
  380. package/dist/components/core/navbar-switcher/NavbarSwitcher.css +118 -0
  381. package/dist/components/core/navbar-switcher/NavbarSwitcher.d.ts +21 -0
  382. package/dist/components/core/navbar-switcher/NavbarSwitcher.js +91 -0
  383. package/dist/components/core/navbar-switcher/NavbarSwitcher.types.d.ts +46 -0
  384. package/dist/components/core/navbar-switcher/NavbarSwitcher.types.js +13 -0
  385. package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +179 -0
  386. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.css +39 -0
  387. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.d.ts +16 -0
  388. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.js +19 -0
  389. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.d.ts +18 -0
  390. package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.js +7 -0
  391. package/dist/components/core/option/Option.css +133 -0
  392. package/dist/components/core/option/Option.d.ts +25 -0
  393. package/dist/components/core/option/Option.js +31 -0
  394. package/dist/components/core/option/Option.types.d.ts +44 -0
  395. package/dist/components/core/option/Option.types.js +14 -0
  396. package/dist/components/core/pagination/Pagination.css +163 -0
  397. package/dist/components/core/pagination/Pagination.d.ts +30 -0
  398. package/dist/components/core/pagination/Pagination.js +366 -0
  399. package/dist/components/core/pagination/Pagination.types.d.ts +47 -0
  400. package/dist/components/core/pagination/Pagination.types.js +12 -0
  401. package/dist/components/core/pagination/pagination-impl.css +17 -0
  402. package/dist/components/core/pagination-dots/PaginationDots.css +60 -0
  403. package/dist/components/core/pagination-dots/PaginationDots.d.ts +25 -0
  404. package/dist/components/core/pagination-dots/PaginationDots.js +104 -0
  405. package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +38 -0
  406. package/dist/components/core/pagination-dots/PaginationDots.types.js +9 -0
  407. package/dist/components/core/removable-chip/RemovableChip.css +125 -0
  408. package/dist/components/core/removable-chip/RemovableChip.d.ts +25 -0
  409. package/dist/components/core/removable-chip/RemovableChip.js +36 -0
  410. package/dist/components/core/removable-chip/RemovableChip.types.d.ts +38 -0
  411. package/dist/components/core/removable-chip/RemovableChip.types.js +13 -0
  412. package/dist/components/core/search-input/SearchInput.css +205 -0
  413. package/dist/components/core/search-input/SearchInput.d.ts +5 -0
  414. package/dist/components/core/search-input/SearchInput.js +81 -0
  415. package/dist/components/core/search-input/SearchInput.types.d.ts +43 -0
  416. package/dist/components/core/search-input/SearchInput.types.js +13 -0
  417. package/dist/components/core/search-input/search-input-impl.css +20 -0
  418. package/dist/components/core/segmented-control/SegmentedControl.css +57 -0
  419. package/dist/components/core/segmented-control/SegmentedControl.d.ts +37 -0
  420. package/dist/components/core/segmented-control/SegmentedControl.js +269 -0
  421. package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +38 -0
  422. package/dist/components/core/segmented-control/SegmentedControl.types.js +8 -0
  423. package/dist/components/core/segmented-control/segmented-control-impl.css +57 -0
  424. package/dist/components/core/segmented-control-item/SegmentedControlItem.css +151 -0
  425. package/dist/components/core/segmented-control-item/SegmentedControlItem.d.ts +50 -0
  426. package/dist/components/core/segmented-control-item/SegmentedControlItem.js +101 -0
  427. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +37 -0
  428. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.js +10 -0
  429. package/dist/components/core/segmented-control-item/segmented-control-item-impl.css +69 -0
  430. package/dist/components/core/select/Select.css +401 -0
  431. package/dist/components/core/select/Select.d.ts +29 -0
  432. package/dist/components/core/select/Select.js +524 -0
  433. package/dist/components/core/select/Select.types.d.ts +96 -0
  434. package/dist/components/core/select/Select.types.js +26 -0
  435. package/dist/components/core/select/select-impl.css +114 -0
  436. package/dist/components/core/select-chip/SelectChip.css +162 -0
  437. package/dist/components/core/select-chip/SelectChip.d.ts +20 -0
  438. package/dist/components/core/select-chip/SelectChip.js +276 -0
  439. package/dist/components/core/select-chip/SelectChip.types.d.ts +62 -0
  440. package/dist/components/core/select-chip/SelectChip.types.js +14 -0
  441. package/dist/components/core/select-chip/select-chip-impl.css +49 -0
  442. package/dist/components/core/spinner/Spinner.css +76 -0
  443. package/dist/components/core/spinner/Spinner.d.ts +5 -0
  444. package/dist/components/core/spinner/Spinner.js +29 -0
  445. package/dist/components/core/spinner/Spinner.types.d.ts +37 -0
  446. package/dist/components/core/spinner/Spinner.types.js +10 -0
  447. package/dist/components/core/spinner/spinner-impl.css +27 -0
  448. package/dist/components/core/status-dot/StatusDot.css +43 -0
  449. package/dist/components/core/status-dot/StatusDot.d.ts +35 -0
  450. package/dist/components/core/status-dot/StatusDot.js +46 -0
  451. package/dist/components/core/status-dot/StatusDot.types.d.ts +29 -0
  452. package/dist/components/core/status-dot/StatusDot.types.js +7 -0
  453. package/dist/components/core/status-dot/status-dot-impl.css +42 -0
  454. package/dist/components/core/subdomain-navbar/SubdomainNavbar.css +89 -0
  455. package/dist/components/core/subdomain-navbar/SubdomainNavbar.d.ts +21 -0
  456. package/dist/components/core/subdomain-navbar/SubdomainNavbar.js +127 -0
  457. package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.d.ts +43 -0
  458. package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.js +13 -0
  459. package/dist/components/core/subdomain-navbar/subdomain-navbar-impl.css +147 -0
  460. package/dist/components/core/tab/Tab.css +113 -0
  461. package/dist/components/core/tab/Tab.d.ts +36 -0
  462. package/dist/components/core/tab/Tab.js +53 -0
  463. package/dist/components/core/tab/Tab.types.d.ts +42 -0
  464. package/dist/components/core/tab/Tab.types.js +13 -0
  465. package/dist/components/core/tab/tab-impl.css +49 -0
  466. package/dist/components/core/tab-list/TabList.css +40 -0
  467. package/dist/components/core/tab-list/TabList.d.ts +26 -0
  468. package/dist/components/core/tab-list/TabList.js +124 -0
  469. package/dist/components/core/tab-list/TabList.types.d.ts +20 -0
  470. package/dist/components/core/tab-list/TabList.types.js +7 -0
  471. package/dist/components/core/tab-list/tab-list-impl.css +56 -0
  472. package/dist/components/core/table/Table.css +40 -0
  473. package/dist/components/core/table/Table.d.ts +19 -0
  474. package/dist/components/core/table/Table.js +55 -0
  475. package/dist/components/core/table/Table.types.d.ts +59 -0
  476. package/dist/components/core/table/Table.types.js +9 -0
  477. package/dist/components/core/table/table-impl.css +97 -0
  478. package/dist/components/core/table/use-table-sort.d.ts +43 -0
  479. package/dist/components/core/table/use-table-sort.js +51 -0
  480. package/dist/components/core/table-body/TableBody.css +6 -0
  481. package/dist/components/core/table-body/TableBody.d.ts +12 -0
  482. package/dist/components/core/table-body/TableBody.js +26 -0
  483. package/dist/components/core/table-body/TableBody.types.d.ts +36 -0
  484. package/dist/components/core/table-body/TableBody.types.js +7 -0
  485. package/dist/components/core/table-cell/TableCell.css +76 -0
  486. package/dist/components/core/table-cell/TableCell.d.ts +21 -0
  487. package/dist/components/core/table-cell/TableCell.js +31 -0
  488. package/dist/components/core/table-cell/TableCell.types.d.ts +43 -0
  489. package/dist/components/core/table-cell/TableCell.types.js +7 -0
  490. package/dist/components/core/table-head/TableHead.css +6 -0
  491. package/dist/components/core/table-head/TableHead.d.ts +22 -0
  492. package/dist/components/core/table-head/TableHead.js +52 -0
  493. package/dist/components/core/table-head/TableHead.types.d.ts +39 -0
  494. package/dist/components/core/table-head/TableHead.types.js +7 -0
  495. package/dist/components/core/table-head/table-head-impl.css +51 -0
  496. package/dist/components/core/table-header-cell/TableHeaderCell.css +126 -0
  497. package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +21 -0
  498. package/dist/components/core/table-header-cell/TableHeaderCell.js +34 -0
  499. package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +56 -0
  500. package/dist/components/core/table-header-cell/TableHeaderCell.types.js +9 -0
  501. package/dist/components/core/table-header-cell/table-header-cell-impl.css +74 -0
  502. package/dist/components/core/table-row/TableRow.css +18 -0
  503. package/dist/components/core/table-row/TableRow.d.ts +17 -0
  504. package/dist/components/core/table-row/TableRow.js +32 -0
  505. package/dist/components/core/table-row/TableRow.types.d.ts +45 -0
  506. package/dist/components/core/table-row/TableRow.types.js +7 -0
  507. package/dist/components/core/table-row/table-row-impl.css +31 -0
  508. package/dist/components/core/text-area/TextArea.css +325 -0
  509. package/dist/components/core/text-area/TextArea.d.ts +13 -0
  510. package/dist/components/core/text-area/TextArea.js +133 -0
  511. package/dist/components/core/text-area/TextArea.types.d.ts +67 -0
  512. package/dist/components/core/text-area/TextArea.types.js +19 -0
  513. package/dist/components/core/text-area/text-area-impl.css +36 -0
  514. package/dist/components/core/text-input/TextInput.css +400 -0
  515. package/dist/components/core/text-input/TextInput.d.ts +5 -0
  516. package/dist/components/core/text-input/TextInput.js +130 -0
  517. package/dist/components/core/text-input/TextInput.types.d.ts +96 -0
  518. package/dist/components/core/text-input/TextInput.types.js +24 -0
  519. package/dist/components/core/text-input/text-input-impl.css +36 -0
  520. package/dist/components/core/tooltip/Tooltip.css +101 -0
  521. package/dist/components/core/tooltip/Tooltip.d.ts +51 -0
  522. package/dist/components/core/tooltip/Tooltip.js +87 -0
  523. package/dist/components/core/tooltip/Tooltip.types.d.ts +38 -0
  524. package/dist/components/core/tooltip/Tooltip.types.js +9 -0
  525. package/dist/components/core/tooltip/TooltipAnchor.d.ts +52 -0
  526. package/dist/components/core/tooltip/TooltipAnchor.js +69 -0
  527. package/dist/components/core/tooltip/tooltip-anchor.css +145 -0
  528. package/dist/components/core/tooltip/tooltip-impl.css +54 -0
  529. package/dist/components/core/tooltip/use-tooltip.d.ts +111 -0
  530. package/dist/components/core/tooltip/use-tooltip.js +189 -0
  531. package/dist/components/core/typography/Typography.css +96 -0
  532. package/dist/components/core/typography/Typography.d.ts +297 -0
  533. package/dist/components/core/typography/Typography.js +28 -0
  534. package/dist/components/core/typography/Typography.types.d.ts +40 -0
  535. package/dist/components/core/typography/Typography.types.js +7 -0
  536. package/dist/components/css-time.d.ts +20 -0
  537. package/dist/components/css-time.js +30 -0
  538. package/dist/components/given.d.ts +7 -0
  539. package/dist/components/given.js +9 -0
  540. package/dist/components/hover-open.d.ts +34 -0
  541. package/dist/components/hover-open.js +90 -0
  542. package/dist/components/index.d.ts +149 -1
  543. package/dist/components/index.js +145 -2
  544. package/dist/components/layout/aspect-ratio/AspectRatio.css +29 -0
  545. package/dist/components/layout/aspect-ratio/AspectRatio.d.ts +24 -0
  546. package/dist/components/layout/aspect-ratio/AspectRatio.js +26 -0
  547. package/dist/components/layout/aspect-ratio/AspectRatio.types.d.ts +22 -0
  548. package/dist/components/layout/aspect-ratio/AspectRatio.types.js +7 -0
  549. package/dist/components/layout/aspect-ratio/aspect-ratio-impl.css +44 -0
  550. package/dist/components/layout/grid/Grid.css +76 -0
  551. package/dist/components/layout/grid/Grid.d.ts +31 -0
  552. package/dist/components/layout/grid/Grid.js +33 -0
  553. package/dist/components/layout/grid/Grid.types.d.ts +48 -0
  554. package/dist/components/layout/grid/Grid.types.js +7 -0
  555. package/dist/components/layout/grid/grid-impl.css +62 -0
  556. package/dist/components/layout/row/Row.css +85 -0
  557. package/dist/components/layout/row/Row.d.ts +32 -0
  558. package/dist/components/layout/row/Row.js +34 -0
  559. package/dist/components/layout/row/Row.types.d.ts +45 -0
  560. package/dist/components/layout/row/Row.types.js +7 -0
  561. package/dist/components/layout/scroller/Scroller.css +59 -0
  562. package/dist/components/layout/scroller/Scroller.d.ts +34 -0
  563. package/dist/components/layout/scroller/Scroller.js +36 -0
  564. package/dist/components/layout/scroller/Scroller.types.d.ts +38 -0
  565. package/dist/components/layout/scroller/Scroller.types.js +7 -0
  566. package/dist/components/layout/scroller/scroller-impl.css +45 -0
  567. package/dist/components/layout/stack/Stack.css +73 -0
  568. package/dist/components/layout/stack/Stack.d.ts +28 -0
  569. package/dist/components/layout/stack/Stack.js +30 -0
  570. package/dist/components/layout/stack/Stack.types.d.ts +41 -0
  571. package/dist/components/layout/stack/Stack.types.js +7 -0
  572. package/dist/components/logo-data.d.ts +24 -0
  573. package/dist/components/logo-data.js +11 -0
  574. package/dist/components/scroll-data.d.ts +64 -0
  575. package/dist/components/scroll-data.js +17 -0
  576. package/dist/components/testimonial-row-data.d.ts +51 -0
  577. package/dist/components/testimonial-row-data.js +11 -0
  578. package/dist/components/testimonial-slider-data.d.ts +26 -0
  579. package/dist/components/testimonial-slider-data.js +10 -0
  580. package/dist/components/visually-hidden.d.ts +22 -0
  581. package/dist/components/visually-hidden.js +31 -0
  582. package/dist/fonts/LICENSE-inter.txt +93 -0
  583. package/dist/fonts/LICENSE-red-hat-mono.txt +93 -0
  584. package/dist/fonts/fonts.css +111 -0
  585. package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  586. package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  587. package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  588. package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
  589. package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  590. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  591. package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  592. package/dist/fonts/red-hat-mono-latin-ext-wght-normal.woff2 +0 -0
  593. package/dist/fonts/red-hat-mono-latin-wght-normal.woff2 +0 -0
  594. package/dist/marketing.css +581 -162
  595. package/package.json +13 -4
@@ -0,0 +1,38 @@
1
+ export interface PaginationDotsOwnProps {
2
+ /**
3
+ * `default` — The marks take the ink of whatever the row stands on — white on a coral or dark band, near-black on the page — so the row belongs to its ground. The usual choice, and the only one on a band.
4
+ * `accent` — On the bare page, where the row should carry the brand: the marks are color.fg.brand-accent, the current pill solid coral and the rest the same coral held back. The solid pill clears 3:1 against the page at 3.11:1, just; the resting marks do not, as at the default — so only on the page's own ground, where nothing takes the coral lower.
5
+ */
6
+ variant?: 'default' | 'accent';
7
+ /** Which position the reader is on, counted from 1. The consumer holds it, because the slide or step in view is theirs too and the two are one fact. */
8
+ page?: number;
9
+ /** How many positions there are, which is how many marks the row draws. */
10
+ totalPages?: number;
11
+ /** Whenever the marks should move anything — called with the position pressed. The row does not move itself; the consumer sets page from it. */
12
+ onPageChange?: (page: number) => void;
13
+ /** The sequence should move on its own — a slider of promotions, a hero that rotates. The row advances page through onPageChange every motion.duration.dwell, wrapping from the last position to the first. It holds while `paused` is set, never moves for a reader who asked for less motion, and stops for good once the reader presses a mark. That last is the WAI carousel pattern's rule that a reader who has chosen a position is reading, not watching. That gives a reader a way to stop the rotation, which WCAG 2.2.2 asks for, but not a visible one: nothing says a press will stop it, so a page that needs 2.2.2 met plainly should still offer its own pause, or leave autoplay off. */
14
+ autoplay?: boolean;
15
+ /** Whatever holds the row wants the rotation held for now — while the pointer is over the slide or focus is inside it, so a reader is never moved on mid-sentence. It lets go when this goes false. */
16
+ paused?: boolean;
17
+ /** The name the row is announced by, as a group. Name what the positions are: 'Slides', 'Steps'. Translate it with the page. */
18
+ label?: string;
19
+ /** The word each mark is named by, before its number — 'Slide 2'. Translate it with the page; a language that puts the number first is the reason a sentence template would be better, and the reason this is not yet one. */
20
+ itemLabel?: string;
21
+ }
22
+ export type PaginationDotsProps = PaginationDotsOwnProps;
23
+ /** The class each part carries. Apply these — do not retype them. */
24
+ export declare const paginationDotsParts: {
25
+ readonly root: "dds-paginationdots";
26
+ readonly dot: "dds-paginationdots__dot";
27
+ readonly mark: "dds-paginationdots__mark";
28
+ };
29
+ /** Generated so defaults cannot drift from the contract. */
30
+ export declare const paginationDotsDefaults: {
31
+ readonly variant: "default";
32
+ readonly page: 1;
33
+ readonly totalPages: 1;
34
+ readonly autoplay: false;
35
+ readonly paused: false;
36
+ readonly label: "Slides";
37
+ readonly itemLabel: "Slide";
38
+ };
@@ -0,0 +1,9 @@
1
+ // GENERATED from pagination-dots.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const paginationDotsParts = {
4
+ root: 'dds-paginationdots',
5
+ dot: 'dds-paginationdots__dot',
6
+ mark: 'dds-paginationdots__mark',
7
+ };
8
+ /** Generated so defaults cannot drift from the contract. */
9
+ export const paginationDotsDefaults = { variant: 'default', page: 1, totalPages: 1, autoplay: false, paused: false, label: 'Slides', itemLabel: 'Slide' };
@@ -0,0 +1,125 @@
1
+ /* GENERATED from removablechip.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-removablechip {
4
+ transition-property: opacity;
5
+ align-items: center;
6
+ border-style: solid;
7
+ box-sizing: border-box;
8
+ cursor: default;
9
+ display: inline-flex;
10
+ max-inline-size: 100%;
11
+ background-color: var(--color-bg-brand-strong);
12
+ border-color: var(--color-bg-brand-strong);
13
+ border-radius: var(--radius-pill);
14
+ border-width: var(--border-width-default);
15
+ color: var(--color-fg-on-brand-strong);
16
+ gap: var(--space-gap-xs);
17
+ }
18
+
19
+ :where([data-dds-context="marketing"]) .dds-removablechip .dds-removablechip__icon {
20
+ align-items: center;
21
+ display: flex;
22
+ flex: none;
23
+ justify-content: center;
24
+ }
25
+
26
+ :where([data-dds-context="marketing"]) .dds-removablechip .dds-removablechip__label {
27
+ min-inline-size: 0;
28
+ overflow: hidden;
29
+ text-overflow: ellipsis;
30
+ white-space: nowrap;
31
+ }
32
+
33
+ :where([data-dds-context="marketing"]) .dds-removablechip .dds-removablechip__remove {
34
+ transition-property: background-color, outline-color, outline-width;
35
+ align-items: center;
36
+ appearance: none;
37
+ background-color: transparent;
38
+ border-style: none;
39
+ cursor: pointer;
40
+ display: inline-flex;
41
+ flex: none;
42
+ justify-content: center;
43
+ outline-style: solid;
44
+ padding: unset;
45
+ border-radius: var(--radius-pill);
46
+ color: var(--color-fg-on-brand-strong);
47
+ min-block-size: var(--size-target-min);
48
+ min-inline-size: var(--size-target-min);
49
+ outline-width: var(--border-width-none);
50
+ transition-duration: var(--motion-duration-fast);
51
+ transition-timing-function: var(--motion-easing-standard);
52
+ }
53
+
54
+ :where([data-dds-context="marketing"]) .dds-removablechip .dds-removablechip__remove-icon {
55
+ flex: none;
56
+ }
57
+
58
+ :where([data-dds-context="marketing"]) .dds-removablechip .dds-removablechip__remove:hover:where(:not(:disabled)) {
59
+ background-color: var(--color-bg-hover-on-brand-strong);
60
+ }
61
+
62
+ :where([data-dds-context="marketing"]) .dds-removablechip .dds-removablechip__remove:active {
63
+ background-color: var(--color-bg-active-on-brand-strong);
64
+ }
65
+
66
+ :where([data-dds-context="marketing"]) .dds-removablechip .dds-removablechip__remove:focus-visible {
67
+ outline-color: var(--color-border-focus);
68
+ outline-width: var(--border-width-focus);
69
+ }
70
+
71
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-disabled="true"] {
72
+ opacity: var(--opacity-disabled);
73
+ }
74
+
75
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="md"] {
76
+ block-size: var(--size-control-md);
77
+ padding-inline-end: var(--space-inset-sm);
78
+ padding-inline-start: var(--space-inset-md);
79
+ }
80
+
81
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="md"] .dds-removablechip__icon {
82
+ block-size: var(--icon-size-sm);
83
+ inline-size: var(--icon-size-sm);
84
+ }
85
+
86
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="md"] .dds-removablechip__label {
87
+ font-family: var(--font-label-md-family);
88
+ font-size: var(--font-label-md-size);
89
+ font-weight: var(--font-label-md-weight);
90
+ line-height: var(--font-label-md-line-height);
91
+ }
92
+
93
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="md"] .dds-removablechip__remove-icon {
94
+ block-size: var(--icon-size-sm);
95
+ inline-size: var(--icon-size-sm);
96
+ }
97
+
98
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="sm"] {
99
+ block-size: var(--size-control-sm);
100
+ padding-inline-end: var(--space-inset-xs);
101
+ padding-inline-start: var(--space-inset-sm);
102
+ }
103
+
104
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="sm"] .dds-removablechip__icon {
105
+ block-size: var(--icon-size-xs);
106
+ inline-size: var(--icon-size-xs);
107
+ }
108
+
109
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="sm"] .dds-removablechip__label {
110
+ font-family: var(--font-label-sm-family);
111
+ font-size: var(--font-label-sm-size);
112
+ font-weight: var(--font-label-sm-weight);
113
+ line-height: var(--font-label-sm-line-height);
114
+ }
115
+
116
+ :where([data-dds-context="marketing"]) .dds-removablechip[data-size="sm"] .dds-removablechip__remove-icon {
117
+ block-size: var(--icon-size-xs);
118
+ inline-size: var(--icon-size-xs);
119
+ }
120
+
121
+ @media (prefers-reduced-motion: reduce) {
122
+ :where([data-dds-context="marketing"]) .dds-removablechip,
123
+ :where([data-dds-context="marketing"]) .dds-removablechip * { transition: none !important; }
124
+ }
125
+
@@ -0,0 +1,25 @@
1
+ import './RemovableChip.css';
2
+ import { type RemovableChipProps } from './RemovableChip.types.js';
3
+ export type { RemovableChipProps };
4
+ /**
5
+ * A token for something already in play, which the reader can take away.
6
+ *
7
+ * The pill is not a control. The only thing to press is the cross, so making the
8
+ * token itself pressable would give one act two targets and nest a button inside a
9
+ * button — one ambiguous hit target with an inner half no keyboard can reach, which
10
+ * this package forbids across Button, Link and TextInput. The words are words; the
11
+ * cross is the control.
12
+ *
13
+ * It carries a painted brand ground where a FilterChip at rest carries an outline,
14
+ * which is what says the thing is already in play rather than merely on offer — at
15
+ * the same height and corner, so the two still stand level in one row. The ground is
16
+ * the dark brand surface rather than the neutral one a chosen FilterChip takes:
17
+ * both are painted, and the hue is what keeps a token already applied distinct from
18
+ * a narrowing the reader has only just switched on.
19
+ *
20
+ * The cross is regular weight, not the solid one product reaches for. Solid means
21
+ * selected in this package, and a dismissal is not a selection: a solid glyph used
22
+ * for anything else teaches a reader that the weight means nothing, and they carry
23
+ * that into the product.
24
+ */
25
+ export declare function RemovableChip({ size, disabled, label, leadingIcon, onRemove, removeLabel, ...rest }: RemovableChipProps): import("react").JSX.Element;
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { XmarkRegularIcon } from '@deriv-com/quill-icons-web';
3
+ import './RemovableChip.css';
4
+ import { Icon } from '../icon/Icon.js';
5
+ import { removableChipDefaults, removableChipGlyphStep, removableChipParts, } from './RemovableChip.types.js';
6
+ /**
7
+ * A token for something already in play, which the reader can take away.
8
+ *
9
+ * The pill is not a control. The only thing to press is the cross, so making the
10
+ * token itself pressable would give one act two targets and nest a button inside a
11
+ * button — one ambiguous hit target with an inner half no keyboard can reach, which
12
+ * this package forbids across Button, Link and TextInput. The words are words; the
13
+ * cross is the control.
14
+ *
15
+ * It carries a painted brand ground where a FilterChip at rest carries an outline,
16
+ * which is what says the thing is already in play rather than merely on offer — at
17
+ * the same height and corner, so the two still stand level in one row. The ground is
18
+ * the dark brand surface rather than the neutral one a chosen FilterChip takes:
19
+ * both are painted, and the hue is what keeps a token already applied distinct from
20
+ * a narrowing the reader has only just switched on.
21
+ *
22
+ * The cross is regular weight, not the solid one product reaches for. Solid means
23
+ * selected in this package, and a dismissal is not a selection: a solid glyph used
24
+ * for anything else teaches a reader that the weight means nothing, and they carry
25
+ * that into the product.
26
+ */
27
+ export function RemovableChip({ size = removableChipDefaults.size, disabled = removableChipDefaults.disabled, label, leadingIcon, onRemove, removeLabel = removableChipDefaults.removeLabel, ...rest }) {
28
+ return (_jsxs("span", { className: removableChipParts.root, ...rest, "data-disabled": String(disabled), "data-size": size, children: [leadingIcon !== undefined && (_jsx("span", { className: removableChipParts.icon, children: _jsx(Icon, { size: removableChipGlyphStep[size], children: leadingIcon }) })), _jsx("span", { className: removableChipParts.label, children: label }), _jsx("button", { type: "button", className: removableChipParts.remove, "aria-label": removeLabel,
29
+ /*
30
+ The native attribute rather than aria-disabled: there is nothing here to
31
+ explain, and this takes the cross out of the tab order instead of
32
+ announcing it and refusing. Dimming alone would leave a live control on a
33
+ token the reader was told they could not drop.
34
+ */
35
+ disabled: disabled, onClick: onRemove, children: _jsx(XmarkRegularIcon, { className: removableChipParts['remove-icon'], "aria-hidden": "true" }) })] }));
36
+ }
@@ -0,0 +1,38 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface RemovableChipOwnProps {
3
+ /** The token cannot be removed just now — something else is in progress, or the narrowing is the last one and the index will not show nothing. It dims and takes the cross out of the tab order */
4
+ disabled?: boolean;
5
+ /**
6
+ * `sm` — The default, and the same measure a FilterChip takes at its own default, so a row holding both sits level
7
+ * `md` — A touch-first layout, level with a FilterChip at its largest. The cross gains room around it rather than growing: it is already at the smallest a target may be
8
+ */
9
+ size?: 'sm' | 'md';
10
+ /** Always, and required on that account — it names the thing the token stands for. Short enough to read at a glance in a row of them */
11
+ label: string;
12
+ /** A glyph makes the kind of thing recognisable before the words are read. It sits before the name and never replaces it. Pass the glyph itself rather than one already wrapped in an Icon: the token wraps it at icon.size.xs at sm and icon.size.sm at md. */
13
+ leadingIcon?: ReactNode;
14
+ /** Always, and required on that account: removal is the whole of what this component does, and a cross reporting to nobody is the clearest promise a chip can break — the reader presses it more than once before deciding the page is at fault */
15
+ onRemove: () => void;
16
+ /** The accessible name of the cross, which announces nothing on its own. Override it to name what is going: a row of buttons all saying Remove leaves a reader who cannot see the tokens unable to tell which one they are about to lose */
17
+ removeLabel?: string;
18
+ }
19
+ export type RemovableChipProps = RemovableChipOwnProps & Omit<HTMLAttributes<HTMLSpanElement>, 'className' | 'disabled' | 'size' | 'label' | 'leadingIcon' | 'onRemove' | 'removeLabel'>;
20
+ /** The class each part carries. Apply these — do not retype them. */
21
+ export declare const removableChipParts: {
22
+ readonly root: "dds-removablechip";
23
+ readonly icon: "dds-removablechip__icon";
24
+ readonly label: "dds-removablechip__label";
25
+ readonly remove: "dds-removablechip__remove";
26
+ readonly 'remove-icon': "dds-removablechip__remove-icon";
27
+ };
28
+ /** Generated so defaults cannot drift from the contract. */
29
+ export declare const removableChipDefaults: {
30
+ readonly disabled: false;
31
+ readonly size: "sm";
32
+ readonly removeLabel: "Remove";
33
+ };
34
+ /** The step this component draws a glyph slot at. Generated — do not retype. */
35
+ export declare const removableChipGlyphStep: {
36
+ readonly sm: "xs";
37
+ readonly md: "sm";
38
+ };
@@ -0,0 +1,13 @@
1
+ // GENERATED from removable-chip.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const removableChipParts = {
4
+ root: 'dds-removablechip',
5
+ icon: 'dds-removablechip__icon',
6
+ label: 'dds-removablechip__label',
7
+ remove: 'dds-removablechip__remove',
8
+ 'remove-icon': 'dds-removablechip__remove-icon',
9
+ };
10
+ /** Generated so defaults cannot drift from the contract. */
11
+ export const removableChipDefaults = { disabled: false, size: 'sm', removeLabel: 'Remove' };
12
+ /** The step this component draws a glyph slot at. Generated — do not retype. */
13
+ export const removableChipGlyphStep = { sm: 'xs', md: 'sm' };
@@ -0,0 +1,205 @@
1
+ /* GENERATED from searchinput.contract.json. Do not edit. */
2
+
3
+ :where([data-dds-context="marketing"]) .dds-searchinput {
4
+ display: flex;
5
+ flex-direction: column;
6
+ position: relative;
7
+ gap: var(--space-gap-xs);
8
+ }
9
+
10
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__label {
11
+ transition-property: color;
12
+ align-items: center;
13
+ display: flex;
14
+ color: var(--color-fg-default);
15
+ gap: var(--space-gap-xs);
16
+ }
17
+
18
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__control {
19
+ transition-property: background-color, border-color, box-shadow, opacity, outline-color, outline-width;
20
+ align-items: center;
21
+ border-style: solid;
22
+ box-sizing: border-box;
23
+ display: flex;
24
+ inline-size: 100%;
25
+ outline-style: solid;
26
+ background-color: var(--color-bg-field);
27
+ border-color: var(--color-border-default);
28
+ border-width: var(--border-width-default);
29
+ gap: var(--space-gap-sm);
30
+ outline-width: var(--border-width-none);
31
+ transition-duration: var(--motion-duration-fast);
32
+ transition-timing-function: var(--motion-easing-standard);
33
+ }
34
+
35
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__search-icon {
36
+ align-items: center;
37
+ display: flex;
38
+ flex: none;
39
+ color: var(--color-fg-muted);
40
+ }
41
+
42
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__field {
43
+ background-color: transparent;
44
+ block-size: 100%;
45
+ border-style: none;
46
+ box-sizing: border-box;
47
+ flex: auto;
48
+ min-inline-size: 0;
49
+ outline-style: solid;
50
+ padding: unset;
51
+ color: var(--color-fg-default);
52
+ outline-width: var(--border-width-none);
53
+ }
54
+
55
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__clear {
56
+ transition-property: background-color, color, outline-color, outline-width;
57
+ align-items: center;
58
+ appearance: none;
59
+ background-color: transparent;
60
+ border-style: none;
61
+ cursor: pointer;
62
+ display: flex;
63
+ flex: none;
64
+ justify-content: center;
65
+ outline-style: solid;
66
+ padding: unset;
67
+ border-radius: var(--radius-pill);
68
+ color: var(--color-fg-muted);
69
+ min-block-size: var(--size-target-min);
70
+ min-inline-size: var(--size-target-min);
71
+ outline-width: var(--border-width-none);
72
+ transition-duration: var(--motion-duration-fast);
73
+ transition-timing-function: var(--motion-easing-standard);
74
+ }
75
+
76
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__field::placeholder {
77
+ color: var(--color-fg-tertiary);
78
+ font-weight: var(--font-body-md-weight);
79
+ }
80
+
81
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__helper {
82
+ transition-property: color;
83
+ color: var(--color-fg-muted);
84
+ font-family: var(--font-body-sm-family);
85
+ font-size: var(--font-body-sm-size);
86
+ font-weight: var(--font-body-sm-weight);
87
+ letter-spacing: var(--font-body-sm-letter-spacing);
88
+ line-height: var(--font-body-sm-line-height);
89
+ }
90
+
91
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__clear:hover:where(:not(:disabled)) {
92
+ background-color: var(--color-bg-hover);
93
+ color: var(--color-fg-default);
94
+ }
95
+
96
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__control:hover:where(:not(:has(.dds-searchinput__field:disabled))) {
97
+ box-shadow: var(--elevation-ring-hover);
98
+ }
99
+
100
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__clear:active {
101
+ background-color: var(--color-bg-active);
102
+ }
103
+
104
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__clear:focus-visible {
105
+ outline-color: var(--color-border-focus);
106
+ outline-width: var(--border-width-focus);
107
+ }
108
+
109
+ :where([data-dds-context="marketing"]) .dds-searchinput:has(.dds-searchinput__field:focus-visible) .dds-searchinput__control {
110
+ border-color: var(--color-border-focus);
111
+ outline-color: var(--color-border-focus);
112
+ outline-width: var(--border-width-hairline);
113
+ }
114
+
115
+ :where([data-dds-context="marketing"]) .dds-searchinput:has(.dds-searchinput__field[readonly]) .dds-searchinput__control {
116
+ background-color: var(--color-bg-readonly);
117
+ }
118
+
119
+ :where([data-dds-context="marketing"]) .dds-searchinput:has(.dds-searchinput__field:disabled:not(:where(:disabled *))) .dds-searchinput__control {
120
+ opacity: var(--opacity-disabled);
121
+ }
122
+
123
+ :where([data-dds-context="marketing"]) .dds-searchinput:has(.dds-searchinput__field:disabled) .dds-searchinput__helper {
124
+ color: var(--color-fg-disabled);
125
+ }
126
+
127
+ :where([data-dds-context="marketing"]) .dds-searchinput:has(.dds-searchinput__field:disabled) .dds-searchinput__label {
128
+ color: var(--color-fg-disabled);
129
+ }
130
+
131
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="lg"] .dds-searchinput__control {
132
+ block-size: var(--size-control-lg);
133
+ border-radius: var(--radius-control-lg);
134
+ padding-inline: var(--space-inset-md);
135
+ }
136
+
137
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="lg"] .dds-searchinput__field {
138
+ font-family: var(--font-body-lg-family);
139
+ font-size: var(--font-body-lg-size);
140
+ font-weight: var(--font-body-lg-weight);
141
+ letter-spacing: var(--font-body-lg-letter-spacing);
142
+ line-height: var(--font-body-lg-line-height);
143
+ }
144
+
145
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="lg"] .dds-searchinput__label {
146
+ font-family: var(--font-field-label-lg-family);
147
+ font-size: var(--font-field-label-lg-size);
148
+ font-weight: var(--font-field-label-lg-weight);
149
+ letter-spacing: var(--font-field-label-lg-letter-spacing);
150
+ line-height: var(--font-field-label-lg-line-height);
151
+ }
152
+
153
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="md"] .dds-searchinput__control {
154
+ block-size: var(--size-control-md);
155
+ border-radius: var(--radius-control-md);
156
+ padding-inline: var(--space-inset-sm);
157
+ }
158
+
159
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="md"] .dds-searchinput__field {
160
+ font-family: var(--font-body-md-family);
161
+ font-size: var(--font-body-md-size);
162
+ font-weight: var(--font-body-md-weight);
163
+ letter-spacing: var(--font-body-md-letter-spacing);
164
+ line-height: var(--font-body-md-line-height);
165
+ }
166
+
167
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="md"] .dds-searchinput__label {
168
+ font-family: var(--font-field-label-md-family);
169
+ font-size: var(--font-field-label-md-size);
170
+ font-weight: var(--font-field-label-md-weight);
171
+ letter-spacing: var(--font-field-label-md-letter-spacing);
172
+ line-height: var(--font-field-label-md-line-height);
173
+ }
174
+
175
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="sm"] .dds-searchinput__control {
176
+ block-size: var(--size-control-sm);
177
+ border-radius: var(--radius-control-sm);
178
+ padding-inline: var(--space-inset-sm);
179
+ }
180
+
181
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="sm"] .dds-searchinput__field {
182
+ font-family: var(--font-body-md-family);
183
+ font-size: var(--font-body-md-size);
184
+ font-weight: var(--font-body-md-weight);
185
+ letter-spacing: var(--font-body-md-letter-spacing);
186
+ line-height: var(--font-body-md-line-height);
187
+ }
188
+
189
+ :where([data-dds-context="marketing"]) .dds-searchinput[data-size="sm"] .dds-searchinput__label {
190
+ font-family: var(--font-field-label-md-family);
191
+ font-size: var(--font-field-label-md-size);
192
+ font-weight: var(--font-field-label-md-weight);
193
+ letter-spacing: var(--font-field-label-md-letter-spacing);
194
+ line-height: var(--font-field-label-md-line-height);
195
+ }
196
+
197
+ :where([data-dds-context="marketing"]) .dds-searchinput .dds-searchinput__field:disabled {
198
+ cursor: not-allowed;
199
+ }
200
+
201
+ @media (prefers-reduced-motion: reduce) {
202
+ :where([data-dds-context="marketing"]) .dds-searchinput,
203
+ :where([data-dds-context="marketing"]) .dds-searchinput * { transition: none !important; }
204
+ }
205
+
@@ -0,0 +1,5 @@
1
+ import './SearchInput.css';
2
+ import './search-input-impl.css';
3
+ import { type SearchInputProps } from './SearchInput.types.js';
4
+ export type { SearchInputProps };
5
+ export declare function SearchInput(props: SearchInputProps): import("react").JSX.Element;
@@ -0,0 +1,81 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useId, useRef, useState } from 'react';
4
+ import { CircleXmarkSolidIcon, MagnifyingGlassRegularIcon } from '@deriv-com/quill-icons-web';
5
+ import './SearchInput.css';
6
+ import './search-input-impl.css';
7
+ import { Icon } from '../icon/Icon.js';
8
+ import { given } from '../../given.js';
9
+ import { visuallyHidden } from '../../visually-hidden.js';
10
+ import { searchInputDefaults, searchInputParts } from './SearchInput.types.js';
11
+ /** The step the two marks this component draws itself take, against the query beside them. */
12
+ const fieldGlyphStep = { sm: 'xs', md: 'xs', lg: 'sm' };
13
+ export function SearchInput(props) {
14
+ const { size = searchInputDefaults.size, label, showLabel = searchInputDefaults.showLabel, placeholder, helperText, value, defaultValue, onChange, onSearch, clearLabel, ...rest } = props;
15
+ /**
16
+ * One id for the field, and one for the helper.
17
+ *
18
+ * `useId` rather than a prop, because a marketing page renders a search in the header and
19
+ * again on the page it lands on, and two fields sharing a `for` means clicking the second
20
+ * label focuses the first.
21
+ */
22
+ const base = useId();
23
+ const fieldId = `${base}-field`;
24
+ const field = useRef(null);
25
+ /**
26
+ * The query, held here only when nobody else is holding it.
27
+ *
28
+ * Unlike the other two fields in this package, this one owns the value: the clear button and
29
+ * Escape both empty it, and neither can be expressed as a change the consumer made unless the
30
+ * component knows what the query currently is.
31
+ */
32
+ const controlled = 'value' in props;
33
+ const [held, setHeld] = useState(defaultValue ?? '');
34
+ const query = controlled ? (value ?? '') : held;
35
+ const report = (next) => {
36
+ if (!controlled)
37
+ setHeld(next);
38
+ onChange?.(next);
39
+ };
40
+ return (_jsxs("div", { className: searchInputParts.root, "data-size": size, children: [_jsx("label", { className: searchInputParts.label, htmlFor: fieldId, style: showLabel ? undefined : visuallyHidden, children: label }), _jsxs("div", { className: searchInputParts.control,
41
+ // Only when the box itself was hit: the inset belongs to the box, so there is a strip
42
+ // of it that is not the input, and clicking it would otherwise do nothing where a
43
+ // native input's own padding puts the caret in.
44
+ onMouseDown: (event) => {
45
+ if (event.target === event.currentTarget)
46
+ field.current?.focus();
47
+ }, children: [_jsx("span", { className: searchInputParts['search-icon'], "aria-hidden": "true", children: _jsx(Icon, { size: fieldGlyphStep[size], children: _jsx(MagnifyingGlassRegularIcon, {}) }) }), _jsx("input", { ref: field, className: searchInputParts.field, id: fieldId,
48
+ /* What makes this a searchbox rather than a textbox, and half the reason the component
49
+ exists apart from TextInput. The browser's own clear chrome arrives with it and is
50
+ suppressed in search-input-impl.css. */
51
+ type: "search", placeholder: placeholder, value: query, ...rest, onChange: (event) => report(event.currentTarget.value),
52
+ /* Escape empties, Enter commits — the two gestures TextInput cannot have.
53
+ Escape is the one that could not live in a form field: losing a half-typed query
54
+ costs a keystroke, and losing a half-typed name costs the name. */
55
+ onKeyDown: (event) => {
56
+ // Theirs first, and honoured if it stops the event. A handler that runs second and
57
+ // only sometimes is worse than one that does not run at all: a page listening for
58
+ // Escape to close its search panel would lose it on any field holding a query and
59
+ // keep it on every empty one.
60
+ rest.onKeyDown?.(event);
61
+ if (event.defaultPrevented)
62
+ return;
63
+ if (event.key === 'Escape' && query !== '') {
64
+ event.preventDefault();
65
+ report('');
66
+ return;
67
+ }
68
+ // Only where there is something to commit to. Preventing the default on Enter
69
+ // regardless would stop a search inside a form from ever submitting it — the
70
+ // browser's own behaviour, taken from every consumer who never asked for onSearch.
71
+ if (event.key === 'Enter' && onSearch !== undefined) {
72
+ event.preventDefault();
73
+ onSearch(query);
74
+ }
75
+ }, "aria-describedby": [given(helperText) ? `${base}-helper` : undefined, rest['aria-describedby']]
76
+ .filter(Boolean)
77
+ .join(' ') || undefined }), query !== '' && rest.disabled !== true ? (_jsx("button", { type: "button", className: searchInputParts.clear, "aria-label": clearLabel, onClick: () => {
78
+ report('');
79
+ field.current?.focus();
80
+ }, children: _jsx(Icon, { size: fieldGlyphStep[size], children: _jsx(CircleXmarkSolidIcon, {}) }) })) : null] }), given(helperText) ? (_jsx("span", { className: searchInputParts.helper, id: `${base}-helper`, children: helperText })) : null] }));
81
+ }
@@ -0,0 +1,43 @@
1
+ import type { InputHTMLAttributes } from 'react';
2
+ export interface SearchInputOwnProps {
3
+ /**
4
+ * `sm` — A search that is one control among several — a filter bar above a list, or a navigation row. Desktop layouts only: at thirty-two it is below what a finger reliably hits
5
+ * `md` — The default — a search in a help centre's header, or above an index the page already holds
6
+ * `lg` — A search that is the reason the section exists: a knowledge base landing page whose one job is to take a query
7
+ */
8
+ size?: 'sm' | 'md' | 'lg';
9
+ /** Always — a field announced as a searchbox still needs a name, and "Search" alone does not say what is being searched. "Search transactions", not "Search". Hide it with showLabel where the page has no room; it stays in the accessible tree either way */
10
+ label: string;
11
+ /** Drawing the label, for a page-level search with a line to spend on it — a help centre, a directory. The exception rather than the rule: a toolbar and a table header show a magnifier and a placeholder. Drawing it also changes what the placeholder is for, since the label then says what is searched */
12
+ showLabel?: boolean;
13
+ /** Making the field’s purpose legible while the label is clipped, which is the default and so the usual case: "Card, bank or wallet" on a payment method search. Draw the label and that job moves to it, leaving this free to show what a query looks like — "Skrill, Neteller, Maestro" */
14
+ placeholder?: string;
15
+ /** Saying what the query matches when it is not obvious — "Searches names and symbols" on a field that looks like it searches only names. Stays on screen, unlike the placeholder */
16
+ helperText?: string;
17
+ /** The page owns the query and passes it in — the controlled form, and the usual one here, because a query is normally held wherever the filtering happens */
18
+ value?: string;
19
+ /** A query the field starts on — a filter restored from a URL or a saved view. Absent means an empty field */
20
+ defaultValue?: string;
21
+ /** Filtering as the user types. It reports the query as a string rather than the event, which is what every caller wanted from the event anyway — and it reports the same way whether the query was typed, cleared with the button or cleared with Escape */
22
+ onChange?: (query: string) => void;
23
+ /** Committing the query — Enter, and a query worth a round trip. A search that costs a request wants asking for, where one that filters a list already on screen can follow every keystroke through onChange */
24
+ onSearch?: (query: string) => void;
25
+ /** Naming the clear button, which is always offered here rather than asked for. The glyph is a cross and says nothing on its own, so this is the button’s only name — "Clear search", in the consumer’s own words */
26
+ clearLabel: string;
27
+ }
28
+ export type SearchInputProps = SearchInputOwnProps & Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'size' | 'label' | 'showLabel' | 'placeholder' | 'helperText' | 'value' | 'defaultValue' | 'onChange' | 'onSearch' | 'clearLabel'>;
29
+ /** The class each part carries. Apply these — do not retype them. */
30
+ export declare const searchInputParts: {
31
+ readonly root: "dds-searchinput";
32
+ readonly label: "dds-searchinput__label";
33
+ readonly control: "dds-searchinput__control";
34
+ readonly 'search-icon': "dds-searchinput__search-icon";
35
+ readonly field: "dds-searchinput__field";
36
+ readonly clear: "dds-searchinput__clear";
37
+ readonly helper: "dds-searchinput__helper";
38
+ };
39
+ /** Generated so defaults cannot drift from the contract. */
40
+ export declare const searchInputDefaults: {
41
+ readonly size: "md";
42
+ readonly showLabel: false;
43
+ };
@@ -0,0 +1,13 @@
1
+ // GENERATED from search-input.contract.json. Do not edit.
2
+ /** The class each part carries. Apply these — do not retype them. */
3
+ export const searchInputParts = {
4
+ root: 'dds-searchinput',
5
+ label: 'dds-searchinput__label',
6
+ control: 'dds-searchinput__control',
7
+ 'search-icon': 'dds-searchinput__search-icon',
8
+ field: 'dds-searchinput__field',
9
+ clear: 'dds-searchinput__clear',
10
+ helper: 'dds-searchinput__helper',
11
+ };
12
+ /** Generated so defaults cannot drift from the contract. */
13
+ export const searchInputDefaults = { size: 'md', showLabel: false };