@deriv-com/dds-marketing 0.2.0 → 1.0.1

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 (281) hide show
  1. package/.llm/components/accordion.md +9 -1
  2. package/.llm/components/accordionitem.md +9 -1
  3. package/.llm/components/aspectratio.md +9 -1
  4. package/.llm/components/badge.md +9 -1
  5. package/.llm/components/bottomsheet.md +9 -1
  6. package/.llm/components/breadcrumb.md +9 -1
  7. package/.llm/components/breadcrumbitem.md +9 -1
  8. package/.llm/components/button.md +55 -27
  9. package/.llm/components/buttonicon.md +16 -8
  10. package/.llm/components/card.md +16 -2
  11. package/.llm/components/cardbody.md +29 -3
  12. package/.llm/components/cardbutton.md +16 -2
  13. package/.llm/components/checkbox.md +9 -1
  14. package/.llm/components/ctabanner.md +186 -0
  15. package/.llm/components/ctabannerslider.md +204 -0
  16. package/.llm/components/divider.md +9 -1
  17. package/.llm/components/dropdownmenu.md +15 -7
  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 +9 -1
  24. package/.llm/components/footer.md +9 -1
  25. package/.llm/components/footergroup.md +9 -1
  26. package/.llm/components/grid.md +9 -1
  27. package/.llm/components/icon.md +21 -3
  28. package/.llm/components/landinghero.md +254 -0
  29. package/.llm/components/link.md +13 -5
  30. package/.llm/components/logocolumns.md +235 -0
  31. package/.llm/components/logorows.md +212 -0
  32. package/.llm/components/menuitem.md +9 -1
  33. package/.llm/components/navbar.md +80 -16
  34. package/.llm/components/navbaritem.md +10 -2
  35. package/.llm/components/navbarmenu.md +9 -1
  36. package/.llm/components/navbarmenugroup.md +9 -1
  37. package/.llm/components/navbarpanel.md +10 -2
  38. package/.llm/components/navbarswitcher.md +10 -2
  39. package/.llm/components/navbarswitcheroption.md +9 -1
  40. package/.llm/components/option.md +9 -1
  41. package/.llm/components/pageheader.md +231 -0
  42. package/.llm/components/pagination.md +27 -90
  43. package/.llm/components/paginationdots.md +215 -0
  44. package/.llm/components/producthero.md +248 -0
  45. package/.llm/components/removablechip.md +9 -1
  46. package/.llm/components/row.md +9 -1
  47. package/.llm/components/scroller.md +9 -1
  48. package/.llm/components/searchinput.md +9 -1
  49. package/.llm/components/segmentedcontrol.md +9 -1
  50. package/.llm/components/segmentedcontrolitem.md +9 -1
  51. package/.llm/components/select.md +9 -1
  52. package/.llm/components/selectchip.md +57 -16
  53. package/.llm/components/spinner.md +9 -1
  54. package/.llm/components/stack.md +9 -1
  55. package/.llm/components/statusdot.md +9 -1
  56. package/.llm/components/subdomainnavbar.md +9 -1
  57. package/.llm/components/tab.md +11 -3
  58. package/.llm/components/table.md +9 -1
  59. package/.llm/components/tablebody.md +9 -1
  60. package/.llm/components/tablecell.md +9 -1
  61. package/.llm/components/tablehead.md +9 -1
  62. package/.llm/components/tableheadercell.md +9 -1
  63. package/.llm/components/tablerow.md +9 -1
  64. package/.llm/components/tablist.md +9 -1
  65. package/.llm/components/testimonialrow.md +235 -0
  66. package/.llm/components/testimonialslider.md +254 -0
  67. package/.llm/components/textarea.md +9 -1
  68. package/.llm/components/textinput.md +9 -1
  69. package/.llm/components/tooltip.md +9 -1
  70. package/.llm/components/typography.md +9 -1
  71. package/.llm/digest/button.md +11 -6
  72. package/.llm/digest/buttonicon.md +2 -2
  73. package/.llm/digest/card.md +1 -0
  74. package/.llm/digest/cardbody.md +3 -1
  75. package/.llm/digest/cardbutton.md +1 -0
  76. package/.llm/digest/ctabanner.md +44 -0
  77. package/.llm/digest/ctabannerslider.md +45 -0
  78. package/.llm/digest/dropdownmenu.md +1 -1
  79. package/.llm/digest/faqaccordion.md +43 -0
  80. package/.llm/digest/featurebullets.md +52 -0
  81. package/.llm/digest/featurecards.md +49 -0
  82. package/.llm/digest/featurescroll.md +52 -0
  83. package/.llm/digest/featuresplit.md +54 -0
  84. package/.llm/digest/landinghero.md +53 -0
  85. package/.llm/digest/logocolumns.md +55 -0
  86. package/.llm/digest/logorows.md +48 -0
  87. package/.llm/digest/navbar.md +18 -3
  88. package/.llm/digest/pageheader.md +49 -0
  89. package/.llm/digest/pagination.md +6 -17
  90. package/.llm/digest/paginationdots.md +43 -0
  91. package/.llm/digest/producthero.md +53 -0
  92. package/.llm/digest/selectchip.md +6 -1
  93. package/.llm/digest/testimonialrow.md +51 -0
  94. package/.llm/digest/testimonialslider.md +51 -0
  95. package/.llm/index.md +24 -3
  96. package/.llm/rules.md +43 -9
  97. package/.llm/tokens.md +56 -12
  98. package/AGENTS.md +32 -8
  99. package/README.md +41 -21
  100. package/dist/components/banner-data.d.ts +38 -0
  101. package/dist/components/banner-data.js +15 -0
  102. package/dist/components/blocks/block-reveal.css +90 -0
  103. package/dist/components/blocks/cta-banner/CtaBanner.css +66 -0
  104. package/dist/components/blocks/cta-banner/CtaBanner.d.ts +22 -0
  105. package/dist/components/blocks/cta-banner/CtaBanner.js +31 -0
  106. package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +29 -0
  107. package/dist/components/blocks/cta-banner/CtaBanner.types.js +13 -0
  108. package/dist/components/blocks/cta-banner/cta-banner-impl.css +29 -0
  109. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +90 -0
  110. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +39 -0
  111. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +60 -0
  112. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +41 -0
  113. package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +15 -0
  114. package/dist/components/blocks/cta-banner-slider/cta-banner-slider-impl.css +73 -0
  115. package/dist/components/blocks/faq-accordion/FaqAccordion.css +54 -0
  116. package/dist/components/blocks/faq-accordion/FaqAccordion.d.ts +20 -0
  117. package/dist/components/blocks/faq-accordion/FaqAccordion.js +28 -0
  118. package/dist/components/blocks/faq-accordion/FaqAccordion.types.d.ts +25 -0
  119. package/dist/components/blocks/faq-accordion/FaqAccordion.types.js +10 -0
  120. package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +54 -0
  121. package/dist/components/blocks/feature-bullets/FeatureBullets.css +139 -0
  122. package/dist/components/blocks/feature-bullets/FeatureBullets.d.ts +31 -0
  123. package/dist/components/blocks/feature-bullets/FeatureBullets.js +55 -0
  124. package/dist/components/blocks/feature-bullets/FeatureBullets.types.d.ts +39 -0
  125. package/dist/components/blocks/feature-bullets/FeatureBullets.types.js +16 -0
  126. package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +104 -0
  127. package/dist/components/blocks/feature-cards/FeatureCards.css +84 -0
  128. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +24 -0
  129. package/dist/components/blocks/feature-cards/FeatureCards.js +66 -0
  130. package/dist/components/blocks/feature-cards/FeatureCards.types.d.ts +33 -0
  131. package/dist/components/blocks/feature-cards/FeatureCards.types.js +14 -0
  132. package/dist/components/blocks/feature-cards/feature-cards-impl.css +245 -0
  133. package/dist/components/blocks/feature-scroll/FeatureScroll.css +137 -0
  134. package/dist/components/blocks/feature-scroll/FeatureScroll.d.ts +39 -0
  135. package/dist/components/blocks/feature-scroll/FeatureScroll.js +167 -0
  136. package/dist/components/blocks/feature-scroll/FeatureScroll.types.d.ts +40 -0
  137. package/dist/components/blocks/feature-scroll/FeatureScroll.types.js +17 -0
  138. package/dist/components/blocks/feature-scroll/feature-scroll-impl.css +292 -0
  139. package/dist/components/blocks/feature-split/FeatureSplit.css +95 -0
  140. package/dist/components/blocks/feature-split/FeatureSplit.d.ts +30 -0
  141. package/dist/components/blocks/feature-split/FeatureSplit.js +38 -0
  142. package/dist/components/blocks/feature-split/FeatureSplit.types.d.ts +39 -0
  143. package/dist/components/blocks/feature-split/FeatureSplit.types.js +14 -0
  144. package/dist/components/blocks/feature-split/feature-split-impl.css +83 -0
  145. package/dist/components/blocks/landing-hero/LandingHero.css +85 -0
  146. package/dist/components/blocks/landing-hero/LandingHero.d.ts +41 -0
  147. package/dist/components/blocks/landing-hero/LandingHero.js +54 -0
  148. package/dist/components/blocks/landing-hero/LandingHero.types.d.ts +37 -0
  149. package/dist/components/blocks/landing-hero/LandingHero.types.js +15 -0
  150. package/dist/components/blocks/landing-hero/landing-hero-impl.css +355 -0
  151. package/dist/components/blocks/logo-columns/LogoColumns.css +161 -0
  152. package/dist/components/blocks/logo-columns/LogoColumns.d.ts +23 -0
  153. package/dist/components/blocks/logo-columns/LogoColumns.js +46 -0
  154. package/dist/components/blocks/logo-columns/LogoColumns.types.d.ts +46 -0
  155. package/dist/components/blocks/logo-columns/LogoColumns.types.js +18 -0
  156. package/dist/components/blocks/logo-columns/logo-columns-impl.css +188 -0
  157. package/dist/components/blocks/logo-rows/LogoRows.css +122 -0
  158. package/dist/components/blocks/logo-rows/LogoRows.d.ts +20 -0
  159. package/dist/components/blocks/logo-rows/LogoRows.js +43 -0
  160. package/dist/components/blocks/logo-rows/LogoRows.types.d.ts +36 -0
  161. package/dist/components/blocks/logo-rows/LogoRows.types.js +16 -0
  162. package/dist/components/blocks/logo-rows/logo-rows-impl.css +179 -0
  163. package/dist/components/blocks/page-header/PageHeader.css +79 -0
  164. package/dist/components/blocks/page-header/PageHeader.d.ts +34 -0
  165. package/dist/components/blocks/page-header/PageHeader.js +43 -0
  166. package/dist/components/blocks/page-header/PageHeader.types.d.ts +32 -0
  167. package/dist/components/blocks/page-header/PageHeader.types.js +14 -0
  168. package/dist/components/blocks/page-header/page-header-impl.css +176 -0
  169. package/dist/components/blocks/product-hero/ProductHero.css +86 -0
  170. package/dist/components/blocks/product-hero/ProductHero.d.ts +35 -0
  171. package/dist/components/blocks/product-hero/ProductHero.js +48 -0
  172. package/dist/components/blocks/product-hero/ProductHero.types.d.ts +37 -0
  173. package/dist/components/blocks/product-hero/ProductHero.types.js +15 -0
  174. package/dist/components/blocks/product-hero/product-hero-impl.css +354 -0
  175. package/dist/components/blocks/testimonial-row/TestimonialRow.css +245 -0
  176. package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +20 -0
  177. package/dist/components/blocks/testimonial-row/TestimonialRow.js +128 -0
  178. package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +54 -0
  179. package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +26 -0
  180. package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +195 -0
  181. package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +181 -0
  182. package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +22 -0
  183. package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +36 -0
  184. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +49 -0
  185. package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +21 -0
  186. package/dist/components/blocks/testimonial-slider/testimonial-slider-impl.css +202 -0
  187. package/dist/components/blocks/use-reveal.d.ts +46 -0
  188. package/dist/components/blocks/use-reveal.js +120 -0
  189. package/dist/components/blocks/use-rotation.d.ts +62 -0
  190. package/dist/components/blocks/use-rotation.js +176 -0
  191. package/dist/components/core/accordion-item/AccordionItem.css +6 -5
  192. package/dist/components/core/bottom-sheet/BottomSheet.css +1 -1
  193. package/dist/components/core/button/Button.css +63 -16
  194. package/dist/components/core/button/Button.d.ts +14 -12
  195. package/dist/components/core/button/Button.js +43 -14
  196. package/dist/components/core/button/Button.types.d.ts +9 -14
  197. package/dist/components/core/button/button-impl.css +25 -0
  198. package/dist/components/core/button-icon/ButtonIcon.css +31 -15
  199. package/dist/components/core/button-icon/ButtonIcon.d.ts +2 -2
  200. package/dist/components/core/button-icon/ButtonIcon.js +2 -2
  201. package/dist/components/core/button-icon/ButtonIcon.types.d.ts +4 -4
  202. package/dist/components/core/card/Card.css +13 -4
  203. package/dist/components/core/card/Card.types.d.ts +2 -1
  204. package/dist/components/core/card-body/CardBody.css +11 -6
  205. package/dist/components/core/card-body/CardBody.d.ts +1 -1
  206. package/dist/components/core/card-body/CardBody.js +2 -2
  207. package/dist/components/core/card-body/CardBody.types.d.ts +4 -1
  208. package/dist/components/core/card-body/CardBody.types.js +1 -0
  209. package/dist/components/core/card-button/CardButton.css +13 -4
  210. package/dist/components/core/card-button/CardButton.types.d.ts +2 -1
  211. package/dist/components/core/checkbox/Checkbox.css +8 -1
  212. package/dist/components/core/dropdown-menu/DropdownMenu.css +13 -12
  213. package/dist/components/core/dropdown-menu/DropdownMenu.d.ts +5 -3
  214. package/dist/components/core/dropdown-menu/DropdownMenu.js +5 -3
  215. package/dist/components/core/filter-chip/FilterChip.css +2 -1
  216. package/dist/components/core/footer/footer-impl.css +1 -1
  217. package/dist/components/core/footer-group/FooterGroup.css +8 -7
  218. package/dist/components/core/icon/Icon.css +1 -1
  219. package/dist/components/core/link/Link.css +1 -1
  220. package/dist/components/core/link/Link.js +5 -5
  221. package/dist/components/core/menu-item/MenuItem.css +1 -1
  222. package/dist/components/core/navbar/Navbar.css +7 -8
  223. package/dist/components/core/navbar/Navbar.d.ts +17 -1
  224. package/dist/components/core/navbar/Navbar.js +139 -12
  225. package/dist/components/core/navbar/Navbar.types.d.ts +23 -4
  226. package/dist/components/core/navbar/Navbar.types.js +1 -1
  227. package/dist/components/core/navbar/navbar-impl.css +10 -3
  228. package/dist/components/core/navbar/navbar-material.css +96 -0
  229. package/dist/components/core/navbar-item/NavbarItem.css +4 -4
  230. package/dist/components/core/navbar-menu/NavbarMenu.css +7 -5
  231. package/dist/components/core/navbar-menu/NavbarMenu.d.ts +1 -0
  232. package/dist/components/core/navbar-menu/NavbarMenu.js +1 -0
  233. package/dist/components/core/navbar-menu/navbar-menu-impl.css +7 -7
  234. package/dist/components/core/navbar-switcher/NavbarSwitcher.css +6 -5
  235. package/dist/components/core/navbar-switcher/NavbarSwitcher.d.ts +1 -0
  236. package/dist/components/core/navbar-switcher/NavbarSwitcher.js +2 -1
  237. package/dist/components/core/option/Option.css +1 -1
  238. package/dist/components/core/pagination/Pagination.css +1 -75
  239. package/dist/components/core/pagination/Pagination.d.ts +4 -4
  240. package/dist/components/core/pagination/Pagination.js +11 -51
  241. package/dist/components/core/pagination/Pagination.types.d.ts +5 -17
  242. package/dist/components/core/pagination/Pagination.types.js +1 -3
  243. package/dist/components/core/pagination-dots/PaginationDots.css +60 -0
  244. package/dist/components/core/pagination-dots/PaginationDots.d.ts +25 -0
  245. package/dist/components/core/pagination-dots/PaginationDots.js +104 -0
  246. package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +38 -0
  247. package/dist/components/core/pagination-dots/PaginationDots.types.js +9 -0
  248. package/dist/components/core/removable-chip/RemovableChip.css +3 -3
  249. package/dist/components/core/search-input/SearchInput.css +1 -1
  250. package/dist/components/core/segmented-control/SegmentedControl.css +1 -1
  251. package/dist/components/core/segmented-control-item/SegmentedControlItem.css +1 -1
  252. package/dist/components/core/select/Select.css +2 -1
  253. package/dist/components/core/select-chip/SelectChip.css +14 -7
  254. package/dist/components/core/select-chip/SelectChip.d.ts +1 -1
  255. package/dist/components/core/select-chip/SelectChip.js +7 -4
  256. package/dist/components/core/select-chip/SelectChip.types.d.ts +7 -1
  257. package/dist/components/core/select-chip/SelectChip.types.js +1 -1
  258. package/dist/components/core/select-chip/select-chip-impl.css +14 -3
  259. package/dist/components/core/status-dot/StatusDot.css +1 -1
  260. package/dist/components/core/subdomain-navbar/SubdomainNavbar.css +3 -3
  261. package/dist/components/core/tab/Tab.css +1 -1
  262. package/dist/components/core/tab/Tab.types.d.ts +1 -1
  263. package/dist/components/core/tab-list/TabList.css +1 -1
  264. package/dist/components/core/table/table-impl.css +36 -14
  265. package/dist/components/core/table-header-cell/TableHeaderCell.css +5 -5
  266. package/dist/components/core/text-area/TextArea.css +1 -1
  267. package/dist/components/core/text-input/TextInput.css +1 -1
  268. package/dist/components/core/tooltip/Tooltip.css +1 -1
  269. package/dist/components/core/typography/Typography.css +5 -5
  270. package/dist/components/index.d.ts +35 -0
  271. package/dist/components/index.js +30 -0
  272. package/dist/components/logo-data.d.ts +24 -0
  273. package/dist/components/logo-data.js +11 -0
  274. package/dist/components/scroll-data.d.ts +64 -0
  275. package/dist/components/scroll-data.js +17 -0
  276. package/dist/components/testimonial-row-data.d.ts +51 -0
  277. package/dist/components/testimonial-row-data.js +11 -0
  278. package/dist/components/testimonial-slider-data.d.ts +26 -0
  279. package/dist/components/testimonial-slider-data.js +10 -0
  280. package/dist/marketing.css +385 -14
  281. package/package.json +1 -6
@@ -99,6 +99,7 @@
99
99
  align-items: center;
100
100
  display: flex;
101
101
  flex: none;
102
+ transition-property: rotate;
102
103
  color: var(--color-fg-muted);
103
104
  transition-duration: var(--motion-duration-fast);
104
105
  transition-timing-function: var(--motion-easing-standard);
@@ -395,6 +396,6 @@
395
396
 
396
397
  @media (prefers-reduced-motion: reduce) {
397
398
  :where([data-dds-context="marketing"]) .dds-select,
398
- :where([data-dds-context="marketing"]) .dds-select * { transition: none; }
399
+ :where([data-dds-context="marketing"]) .dds-select * { transition: none !important; }
399
400
  }
400
401
 
@@ -46,6 +46,7 @@
46
46
 
47
47
  :where([data-dds-context="marketing"]) .dds-selectchip .dds-selectchip__chevron {
48
48
  flex: none;
49
+ transition-property: rotate;
49
50
  transition-duration: var(--motion-duration-fast);
50
51
  transition-timing-function: var(--motion-easing-standard);
51
52
  }
@@ -94,12 +95,6 @@
94
95
  outline-width: var(--border-width-focus);
95
96
  }
96
97
 
97
- :where([data-dds-context="marketing"]) .dds-selectchip .dds-selectchip__trigger[data-chosen="true"] {
98
- background-color: var(--color-bg-strong);
99
- border-color: var(--color-bg-strong);
100
- color: var(--color-fg-on-strong);
101
- }
102
-
103
98
  :where([data-dds-context="marketing"]) .dds-selectchip[data-disabled="true"] {
104
99
  opacity: var(--opacity-disabled);
105
100
  }
@@ -148,8 +143,20 @@
148
143
  line-height: var(--font-label-sm-line-height);
149
144
  }
150
145
 
146
+ :where([data-dds-context="marketing"]) .dds-selectchip[data-emphasis="highlight"] .dds-selectchip__trigger[data-chosen="true"] {
147
+ background-color: var(--color-bg-strong);
148
+ border-color: var(--color-bg-strong);
149
+ color: var(--color-fg-on-strong);
150
+ }
151
+
152
+ :where([data-dds-context="marketing"]) .dds-selectchip[data-emphasis="quiet"] .dds-selectchip__trigger[data-chosen="true"] {
153
+ background-color: var(--color-bg-surface-raised);
154
+ border-color: var(--color-border-default);
155
+ color: var(--color-fg-default);
156
+ }
157
+
151
158
  @media (prefers-reduced-motion: reduce) {
152
159
  :where([data-dds-context="marketing"]) .dds-selectchip,
153
- :where([data-dds-context="marketing"]) .dds-selectchip * { transition: none; }
160
+ :where([data-dds-context="marketing"]) .dds-selectchip * { transition: none !important; }
154
161
  }
155
162
 
@@ -17,4 +17,4 @@ export type { SelectChipProps };
17
17
  * not a tab stop, and a list of twenty would otherwise be twenty presses on the way to
18
18
  * whatever follows the row.
19
19
  */
20
- export declare function SelectChip({ size, disabled, alignment, label, value, defaultValue, onChange, open, defaultOpen, onOpenChange, leadingIcon, children, ...rest }: SelectChipProps): import("react").JSX.Element;
20
+ export declare function SelectChip({ size, disabled, alignment, emphasis, label, value, defaultValue, onChange, open, defaultOpen, onOpenChange, leadingIcon, children, ...rest }: SelectChipProps): import("react").JSX.Element;
@@ -68,7 +68,7 @@ const TYPING_WINDOW = 500;
68
68
  * not a tab stop, and a list of twenty would otherwise be twenty presses on the way to
69
69
  * whatever follows the row.
70
70
  */
71
- export function SelectChip({ size = selectChipDefaults.size, disabled = selectChipDefaults.disabled, alignment = selectChipDefaults.alignment, label, value, defaultValue, onChange, open, defaultOpen, onOpenChange, leadingIcon, children, ...rest }) {
71
+ export function SelectChip({ size = selectChipDefaults.size, disabled = selectChipDefaults.disabled, alignment = selectChipDefaults.alignment, emphasis = selectChipDefaults.emphasis, label, value, defaultValue, onChange, open, defaultOpen, onOpenChange, leadingIcon, children, ...rest }) {
72
72
  const options = optionsOf(children);
73
73
  const rootId = useId();
74
74
  const listId = `${rootId}-list`;
@@ -250,9 +250,12 @@ export function SelectChip({ size = selectChipDefaults.size, disabled = selectCh
250
250
  const taken = options[indexOf(chosen)];
251
251
  // The chip carries the answer once there is one, and the name of the narrowing until
252
252
  // then — which is what makes a row of these read as a list of decisions rather than a
253
- // list of filters.
254
- const shown = taken === undefined ? label : words(taken.props.children);
255
- return (_jsxs("div", { className: selectChipParts.root, ...rest, ref: root, "data-size": size, "data-alignment": alignment, "data-disabled": String(disabled), children: [_jsxs("button", { type: "button", className: selectChipParts.trigger,
253
+ // list of filters. A quiet chip keeps the name in front of the answer: it has no fill
254
+ // to say a narrowing is on, so the words carry both, as one thing to read — "Sort:
255
+ // Most read".
256
+ const answer = taken === undefined ? undefined : words(taken.props.children);
257
+ const shown = answer === undefined ? label : emphasis === 'quiet' ? `${label}: ${answer}` : answer;
258
+ return (_jsxs("div", { className: selectChipParts.root, ...rest, ref: root, "data-size": size, "data-alignment": alignment, "data-emphasis": emphasis, "data-disabled": String(disabled), children: [_jsxs("button", { type: "button", className: selectChipParts.trigger,
256
259
  // The platform's own, which is the whole of the behaviour: a disabled button
257
260
  // takes no click, answers no key, and is not a tab stop — so there is nothing
258
261
  // here to gate by hand.
@@ -10,7 +10,12 @@ export interface SelectChipOwnProps {
10
10
  * `end` — Its trailing edge lines up instead, for a chip near the end of a row where a list opening the other way would run off the screen
11
11
  */
12
12
  alignment?: 'start' | 'end';
13
- /** Always, and required on that account — it names what is being chosen, and it is what the chip shows until something has been. Short enough to read at a glance in a row of other chips */
13
+ /**
14
+ * `highlight` — A filter. Choosing an answer hides part of the list, like a category, a topic or a product line. The chip fills to show a filter is on
15
+ * `quiet` — A setting that only changes how the page is shown, like a sort order, a language or a layout. Nothing is hidden, so the chip stays plain and reads "Label: Value". Always give it a starting value with value or defaultValue
16
+ */
17
+ emphasis?: 'highlight' | 'quiet';
18
+ /** Always, and required on that account — it names what is being chosen, and it is what the chip shows until something has been, and what a quiet chip goes on showing ahead of the answer. Short enough to read at a glance in a row of other chips */
14
19
  label: string;
15
20
  /** The page owns the answer — it arrives from a URL, is shared with something else on screen, or has to survive the chip unmounting. Passed, this is the answer, and onChange is the only way it moves */
16
21
  value?: string;
@@ -48,6 +53,7 @@ export declare const selectChipDefaults: {
48
53
  readonly disabled: false;
49
54
  readonly size: "sm";
50
55
  readonly alignment: "start";
56
+ readonly emphasis: "highlight";
51
57
  };
52
58
  /** The step this component draws a glyph slot at. Generated — do not retype. */
53
59
  export declare const selectChipGlyphStep: {
@@ -9,6 +9,6 @@ export const selectChipParts = {
9
9
  listbox: 'dds-selectchip__listbox',
10
10
  };
11
11
  /** Generated so defaults cannot drift from the contract. */
12
- export const selectChipDefaults = { disabled: false, size: 'sm', alignment: 'start' };
12
+ export const selectChipDefaults = { disabled: false, size: 'sm', alignment: 'start', emphasis: 'highlight' };
13
13
  /** The step this component draws a glyph slot at. Generated — do not retype. */
14
14
  export const selectChipGlyphStep = { sm: 'xs', md: 'sm' };
@@ -22,7 +22,7 @@
22
22
  /* The chosen chip's own hover, which would otherwise fall back to the unchosen one and wash the
23
23
  fill in the wrong direction — a black alpha over a ground that is already near-black shows
24
24
  nothing at all. This is the case color.bg.hover-inverse exists for. */
25
- :where([data-dds-context="marketing"]) .dds-selectchip .dds-selectchip__trigger[data-chosen="true"]:hover {
25
+ :where([data-dds-context="marketing"]) .dds-selectchip[data-emphasis="highlight"] .dds-selectchip__trigger[data-chosen="true"]:hover {
26
26
  background-image: linear-gradient(
27
27
  var(--color-bg-hover-inverse),
28
28
  var(--color-bg-hover-inverse)
@@ -32,7 +32,18 @@
32
32
  /* An open chip borrows the heavier edge, but only while nothing is chosen. Said of both, it would
33
33
  be a second rule as specific as the one it argues with, and the cascade would settle it by
34
34
  source order — so the exclusion is written rather than left to whichever sorted last. A chosen
35
- chip already carries a painted edge, so there is nothing for opening to add. */
36
- :where([data-dds-context="marketing"]) .dds-selectchip .dds-selectchip__trigger[data-expanded="true"]:not([data-chosen="true"]) {
35
+ chip already carries a painted edge, so there is nothing for opening to add — unless it is
36
+ quiet, which never takes that edge, and so borrows this one whether or not anything is chosen. */
37
+ :where([data-dds-context="marketing"]) .dds-selectchip .dds-selectchip__trigger[data-expanded="true"]:not([data-chosen="true"]),
38
+ :where([data-dds-context="marketing"]) .dds-selectchip[data-emphasis="quiet"] .dds-selectchip__trigger[data-expanded="true"] {
37
39
  border-color: var(--color-border-strong);
38
40
  }
41
+
42
+ :where([data-dds-context="marketing"]) .dds-selectchip .dds-selectchip__listbox {
43
+ /* Over whatever follows the chip. An absolutely positioned box already paints above the
44
+ in-flow content of its own stacking context, which is enough until the next thing on the
45
+ page is positioned too — and in a row of chips the next thing is another chip, whose
46
+ relative root painted over this list in source order. `layer.popup`, the role
47
+ DropdownMenu and NavbarMenu already read for a panel that floats over the page. */
48
+ z-index: var(--layer-popup);
49
+ }
@@ -38,6 +38,6 @@
38
38
  }
39
39
 
40
40
  @media (prefers-reduced-motion: reduce) {
41
- :where([data-dds-context="marketing"]) .dds-statusdot { transition: none; }
41
+ :where([data-dds-context="marketing"]) .dds-statusdot { transition: none !important; }
42
42
  }
43
43
 
@@ -79,11 +79,11 @@
79
79
  }
80
80
 
81
81
  :where([data-dds-context="marketing"]) .dds-subdomainnavbar[data-tone="inverse"] {
82
- background-color: var(--color-bg-strong);
83
- color: var(--color-fg-on-strong);
82
+ background-color: var(--color-bg-brand-strong);
83
+ color: var(--color-fg-on-brand-strong);
84
84
  }
85
85
 
86
86
  :where([data-dds-context="marketing"]) .dds-subdomainnavbar[data-tone="inverse"] .dds-subdomainnavbar__trigger:focus-visible {
87
- outline-color: var(--color-border-focus-inverse);
87
+ outline-color: var(--color-border-focus-on-brand-strong);
88
88
  }
89
89
 
@@ -108,6 +108,6 @@
108
108
 
109
109
  @media (prefers-reduced-motion: reduce) {
110
110
  :where([data-dds-context="marketing"]) .dds-tab,
111
- :where([data-dds-context="marketing"]) .dds-tab * { transition: none; }
111
+ :where([data-dds-context="marketing"]) .dds-tab * { transition: none !important; }
112
112
  }
113
113
 
@@ -10,7 +10,7 @@ export interface TabOwnProps {
10
10
  label: string;
11
11
  /** The tabs are things a mark tells apart faster than a word does — a platform, a market class. Pass the glyph; the tab draws it at its own step.
12
12
 
13
- Solid when the tab is current and regular otherwise, which is the package's `icon-solid-marks-selection` rule. Nothing here can enforce it: a Quill glyph's weight is chosen at the import, so a page that wants the swap passes a different glyph per state */
13
+ Solid when the tab is current and regular otherwise, which is the package's `icon-weight-within-a-set` rule. Nothing here can enforce it: a Quill glyph's weight is chosen at the import, so a page that wants the swap passes a different glyph per state */
14
14
  icon?: ReactNode;
15
15
  }
16
16
  export type TabProps = TabOwnProps & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'selected' | 'onSelect' | 'value' | 'label' | 'icon' | 'badge' | 'content' | 'trailingIcon'> & ({
@@ -35,6 +35,6 @@
35
35
 
36
36
  @media (prefers-reduced-motion: reduce) {
37
37
  :where([data-dds-context="marketing"]) .dds-tablist,
38
- :where([data-dds-context="marketing"]) .dds-tablist * { transition: none; }
38
+ :where([data-dds-context="marketing"]) .dds-tablist * { transition: none !important; }
39
39
  }
40
40
 
@@ -41,14 +41,20 @@
41
41
  * It has to be opaque, and that is the whole difficulty. A table paints nothing: the surface
42
42
  * belongs to whatever put it there, which is the right arrangement everywhere except here, where a
43
43
  * cell that stays put while the rest slides under it shows the sliding through itself. So the
44
- * pinned cell paints the ground its card holds — the one colour it can name that a page will have
45
- * put behind it.
44
+ * pinned cell paints the ground its card holds.
46
45
  *
47
- * The row's own states cannot simply be inherited through it, because both are alpha: selected is
48
- * eight percent black and hover is five, and a translucent cell over scrolled content is the same
49
- * failure with a tint on it. So each is restated here over the opaque floor, the selected one as a
50
- * colour and the hover one as an image layered above it. That is the arrangement FilterChip makes
51
- * for exactly the same reason, and the second time this package has needed it.
46
+ * That ground is no longer one colour it can name. A raised card is see-through in dark —
47
+ * color.bg.surface-card-raised is white at six — so what a reader sees is the card over the band
48
+ * it stands on over the page. The cell rebuilds that stack: the page as an opaque floor, then the
49
+ * band and the card laid over it as images, the topmost listed first. It is the arrangement a
50
+ * raised card is documented for — on a color.bg.band-subtle band — and in light all three are
51
+ * opaque, so the stack is simply white. Naming color.bg.surface-raised instead, as this did,
52
+ * painted a solid grey the card no longer is.
53
+ *
54
+ * The row's own states go on top of the stack rather than instead of it, because both are alpha:
55
+ * selected is eight percent and hover four, and either painted as the cell's colour would let the
56
+ * scrolled columns show through the pinned one. That is the layering FilterChip uses, for the
57
+ * same reason.
52
58
  *
53
59
  * The stacking order is an integer with no unit and no token to name it — this package has one
54
60
  * layer role and it is for popups, which this is not. One is enough: the pinned cell has to paint
@@ -58,18 +64,34 @@
58
64
  position: sticky;
59
65
  inset-inline-start: 0;
60
66
  z-index: 1;
61
- background-color: var(--color-bg-surface-raised);
67
+ background-color: var(--color-bg-page);
68
+ background-image:
69
+ linear-gradient(var(--color-bg-surface-card-raised), var(--color-bg-surface-card-raised)),
70
+ linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
62
71
  border-inline-end-width: var(--border-width-hairline);
63
72
  }
64
73
 
65
- /* The chosen row keeps its ground where it is pinned, restated because an alpha cannot be inherited
66
- onto a cell that has scrolled content behind it. */
74
+ /* The chosen row keeps its ground where it is pinned, laid over the stack rather than replacing it. */
67
75
  :where([data-dds-context="marketing"]) .dds-table[data-pin-first-column='true'] .dds-tablerow[data-selected='true'] > :first-child {
68
- background-color: var(--color-bg-selected);
76
+ background-image:
77
+ linear-gradient(var(--color-bg-selected), var(--color-bg-selected)),
78
+ linear-gradient(var(--color-bg-surface-card-raised), var(--color-bg-surface-card-raised)),
79
+ linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
69
80
  }
70
81
 
71
- /* And the pointer's wash, as an image over the floor rather than instead of it — the layering
72
- FilterChip uses, for the same reason: the token tints what it lands on rather than replacing it. */
82
+ /* And the pointer's wash, the same way. */
73
83
  :where([data-dds-context="marketing"]) .dds-table[data-pin-first-column='true'] .dds-tablerow[data-hoverable='true']:hover > :first-child {
74
- background-image: linear-gradient(var(--color-bg-hover), var(--color-bg-hover));
84
+ background-image:
85
+ linear-gradient(var(--color-bg-hover), var(--color-bg-hover)),
86
+ linear-gradient(var(--color-bg-surface-card-raised), var(--color-bg-surface-card-raised)),
87
+ linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
88
+ }
89
+
90
+ /* Both at once: the wash over the chosen ground, over the stack. */
91
+ :where([data-dds-context="marketing"]) .dds-table[data-pin-first-column='true'] .dds-tablerow[data-selected='true'][data-hoverable='true']:hover > :first-child {
92
+ background-image:
93
+ linear-gradient(var(--color-bg-hover), var(--color-bg-hover)),
94
+ linear-gradient(var(--color-bg-selected), var(--color-bg-selected)),
95
+ linear-gradient(var(--color-bg-surface-card-raised), var(--color-bg-surface-card-raised)),
96
+ linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
75
97
  }
@@ -49,11 +49,11 @@
49
49
 
50
50
  :where([data-dds-context="marketing"]) .dds-tableheadercell[data-header-case="upper"] {
51
51
  text-transform: uppercase;
52
- font-family: var(--font-eyebrow-family);
53
- font-size: var(--font-eyebrow-size);
54
- font-weight: var(--font-eyebrow-weight);
55
- letter-spacing: var(--font-eyebrow-letter-spacing);
56
- line-height: var(--font-eyebrow-line-height);
52
+ font-family: var(--font-eyebrow-sm-family);
53
+ font-size: var(--font-eyebrow-sm-size);
54
+ font-weight: var(--font-eyebrow-sm-weight);
55
+ letter-spacing: var(--font-eyebrow-sm-letter-spacing);
56
+ line-height: var(--font-eyebrow-sm-line-height);
57
57
  }
58
58
 
59
59
  :where([data-dds-context="marketing"]) .dds-tableheadercell[data-align="center"] .dds-tableheadercell__trigger {
@@ -320,6 +320,6 @@
320
320
 
321
321
  @media (prefers-reduced-motion: reduce) {
322
322
  :where([data-dds-context="marketing"]) .dds-textarea,
323
- :where([data-dds-context="marketing"]) .dds-textarea * { transition: none; }
323
+ :where([data-dds-context="marketing"]) .dds-textarea * { transition: none !important; }
324
324
  }
325
325
 
@@ -395,6 +395,6 @@
395
395
 
396
396
  @media (prefers-reduced-motion: reduce) {
397
397
  :where([data-dds-context="marketing"]) .dds-textinput,
398
- :where([data-dds-context="marketing"]) .dds-textinput * { transition: none; }
398
+ :where([data-dds-context="marketing"]) .dds-textinput * { transition: none !important; }
399
399
  }
400
400
 
@@ -96,6 +96,6 @@
96
96
 
97
97
  @media (prefers-reduced-motion: reduce) {
98
98
  :where([data-dds-context="marketing"]) .dds-tooltip,
99
- :where([data-dds-context="marketing"]) .dds-tooltip * { transition: none; }
99
+ :where([data-dds-context="marketing"]) .dds-tooltip * { transition: none !important; }
100
100
  }
101
101
 
@@ -6,11 +6,11 @@
6
6
 
7
7
  :where([data-dds-context="marketing"]) .dds-typography[data-variant="eyebrow"] {
8
8
  text-transform: uppercase;
9
- font-family: var(--font-eyebrow-family);
10
- font-size: var(--font-eyebrow-size);
11
- font-weight: var(--font-eyebrow-weight);
12
- letter-spacing: var(--font-eyebrow-letter-spacing);
13
- line-height: var(--font-eyebrow-line-height);
9
+ font-family: var(--font-eyebrow-sm-family);
10
+ font-size: var(--font-eyebrow-sm-size);
11
+ font-weight: var(--font-eyebrow-sm-weight);
12
+ letter-spacing: var(--font-eyebrow-sm-letter-spacing);
13
+ line-height: var(--font-eyebrow-sm-line-height);
14
14
  }
15
15
 
16
16
  :where([data-dds-context="marketing"]) .dds-typography[data-variant="figure"] {
@@ -24,10 +24,24 @@ export { CardButton, type CardButtonProps } from './core/card-button/CardButton.
24
24
  export { cardButtonParts, cardButtonDefaults } from './core/card-button/CardButton.types.js';
25
25
  export { Checkbox, type CheckboxProps } from './core/checkbox/Checkbox.js';
26
26
  export { checkboxParts, checkboxDefaults } from './core/checkbox/Checkbox.types.js';
27
+ export { CtaBanner, type CtaBannerProps } from './blocks/cta-banner/CtaBanner.js';
28
+ export { ctaBannerParts, ctaBannerDefaults } from './blocks/cta-banner/CtaBanner.types.js';
29
+ export { CtaBannerSlider, type CtaBannerSliderProps } from './blocks/cta-banner-slider/CtaBannerSlider.js';
30
+ export { ctaBannerSliderParts, ctaBannerSliderDefaults } from './blocks/cta-banner-slider/CtaBannerSlider.types.js';
27
31
  export { Divider, type DividerProps } from './core/divider/Divider.js';
28
32
  export { dividerParts, dividerDefaults } from './core/divider/Divider.types.js';
29
33
  export { DropdownMenu, type DropdownMenuProps } from './core/dropdown-menu/DropdownMenu.js';
30
34
  export { dropdownMenuParts, dropdownMenuDefaults } from './core/dropdown-menu/DropdownMenu.types.js';
35
+ export { FaqAccordion, type FaqAccordionProps } from './blocks/faq-accordion/FaqAccordion.js';
36
+ export { faqAccordionParts, faqAccordionDefaults } from './blocks/faq-accordion/FaqAccordion.types.js';
37
+ export { FeatureBullets, type FeatureBulletsProps } from './blocks/feature-bullets/FeatureBullets.js';
38
+ export { featureBulletsParts, featureBulletsDefaults } from './blocks/feature-bullets/FeatureBullets.types.js';
39
+ export { FeatureCards, type FeatureCardsProps } from './blocks/feature-cards/FeatureCards.js';
40
+ export { featureCardsParts, featureCardsDefaults } from './blocks/feature-cards/FeatureCards.types.js';
41
+ export { FeatureScroll, type FeatureScrollProps } from './blocks/feature-scroll/FeatureScroll.js';
42
+ export { featureScrollParts, featureScrollDefaults } from './blocks/feature-scroll/FeatureScroll.types.js';
43
+ export { FeatureSplit, type FeatureSplitProps } from './blocks/feature-split/FeatureSplit.js';
44
+ export { featureSplitParts, featureSplitDefaults } from './blocks/feature-split/FeatureSplit.types.js';
31
45
  export { FilterChip, type FilterChipProps } from './core/filter-chip/FilterChip.js';
32
46
  export { filterChipParts, filterChipDefaults } from './core/filter-chip/FilterChip.types.js';
33
47
  export { Footer, type FooterProps } from './core/footer/Footer.js';
@@ -38,8 +52,14 @@ export { Grid, type GridProps } from './layout/grid/Grid.js';
38
52
  export { gridParts, gridDefaults } from './layout/grid/Grid.types.js';
39
53
  export { Icon, type IconProps } from './core/icon/Icon.js';
40
54
  export { iconParts, iconDefaults } from './core/icon/Icon.types.js';
55
+ export { LandingHero, type LandingHeroProps } from './blocks/landing-hero/LandingHero.js';
56
+ export { landingHeroParts, landingHeroDefaults } from './blocks/landing-hero/LandingHero.types.js';
41
57
  export { Link, type LinkProps } from './core/link/Link.js';
42
58
  export { linkParts, linkDefaults } from './core/link/Link.types.js';
59
+ export { LogoColumns, type LogoColumnsProps } from './blocks/logo-columns/LogoColumns.js';
60
+ export { logoColumnsParts, logoColumnsDefaults } from './blocks/logo-columns/LogoColumns.types.js';
61
+ export { LogoRows, type LogoRowsProps } from './blocks/logo-rows/LogoRows.js';
62
+ export { logoRowsParts, logoRowsDefaults } from './blocks/logo-rows/LogoRows.types.js';
43
63
  export { MenuItem, type MenuItemProps } from './core/menu-item/MenuItem.js';
44
64
  export { menuItemParts, menuItemDefaults } from './core/menu-item/MenuItem.types.js';
45
65
  export { Navbar, type NavbarProps } from './core/navbar/Navbar.js';
@@ -59,8 +79,14 @@ export { NavbarSwitcherOption, type NavbarSwitcherOptionProps } from './core/nav
59
79
  export { navbarSwitcherOptionParts, navbarSwitcherOptionDefaults } from './core/navbar-switcher-option/NavbarSwitcherOption.types.js';
60
80
  export { Option, type OptionProps } from './core/option/Option.js';
61
81
  export { optionParts, optionDefaults } from './core/option/Option.types.js';
82
+ export { PageHeader, type PageHeaderProps } from './blocks/page-header/PageHeader.js';
83
+ export { pageHeaderParts, pageHeaderDefaults } from './blocks/page-header/PageHeader.types.js';
62
84
  export { Pagination, type PaginationProps } from './core/pagination/Pagination.js';
63
85
  export { paginationParts, paginationDefaults } from './core/pagination/Pagination.types.js';
86
+ export { PaginationDots, type PaginationDotsProps } from './core/pagination-dots/PaginationDots.js';
87
+ export { paginationDotsParts, paginationDotsDefaults } from './core/pagination-dots/PaginationDots.types.js';
88
+ export { ProductHero, type ProductHeroProps } from './blocks/product-hero/ProductHero.js';
89
+ export { productHeroParts, productHeroDefaults } from './blocks/product-hero/ProductHero.types.js';
64
90
  export { RemovableChip, type RemovableChipProps } from './core/removable-chip/RemovableChip.js';
65
91
  export { removableChipParts, removableChipDefaults } from './core/removable-chip/RemovableChip.types.js';
66
92
  export { Row, type RowProps } from './layout/row/Row.js';
@@ -102,6 +128,10 @@ export { TableRow, type TableRowProps } from './core/table-row/TableRow.js';
102
128
  export { tableRowParts, tableRowDefaults } from './core/table-row/TableRow.types.js';
103
129
  export { TabList, type TabListProps } from './core/tab-list/TabList.js';
104
130
  export { tabListParts } from './core/tab-list/TabList.types.js';
131
+ export { TestimonialRow, type TestimonialRowProps } from './blocks/testimonial-row/TestimonialRow.js';
132
+ export { testimonialRowParts, testimonialRowDefaults } from './blocks/testimonial-row/TestimonialRow.types.js';
133
+ export { TestimonialSlider, type TestimonialSliderProps } from './blocks/testimonial-slider/TestimonialSlider.js';
134
+ export { testimonialSliderParts, testimonialSliderDefaults } from './blocks/testimonial-slider/TestimonialSlider.types.js';
105
135
  export { TextArea, type TextAreaProps } from './core/text-area/TextArea.js';
106
136
  export { textAreaParts, textAreaDefaults } from './core/text-area/TextArea.types.js';
107
137
  export { TextInput, type TextInputProps } from './core/text-input/TextInput.js';
@@ -112,3 +142,8 @@ export { useTooltip, useTooltipDefaults, type UseTooltipOptions, type UseTooltip
112
142
  export { TooltipAnchor, type TooltipAnchorProps } from './core/tooltip/TooltipAnchor.js';
113
143
  export { Typography, type TypographyProps } from './core/typography/Typography.js';
114
144
  export { typographyParts, typographyDefaults } from './core/typography/Typography.types.js';
145
+ export type { CtaBannerSlide } from './banner-data.js';
146
+ export type { LogoTile } from './logo-data.js';
147
+ export type { FeatureScrollStep } from './scroll-data.js';
148
+ export type { TestimonialRowReview, TestimonialRowSummary } from './testimonial-row-data.js';
149
+ export type { TestimonialSliderQuote } from './testimonial-slider-data.js';
@@ -25,10 +25,24 @@ export { CardButton } from './core/card-button/CardButton.js';
25
25
  export { cardButtonParts, cardButtonDefaults } from './core/card-button/CardButton.types.js';
26
26
  export { Checkbox } from './core/checkbox/Checkbox.js';
27
27
  export { checkboxParts, checkboxDefaults } from './core/checkbox/Checkbox.types.js';
28
+ export { CtaBanner } from './blocks/cta-banner/CtaBanner.js';
29
+ export { ctaBannerParts, ctaBannerDefaults } from './blocks/cta-banner/CtaBanner.types.js';
30
+ export { CtaBannerSlider } from './blocks/cta-banner-slider/CtaBannerSlider.js';
31
+ export { ctaBannerSliderParts, ctaBannerSliderDefaults } from './blocks/cta-banner-slider/CtaBannerSlider.types.js';
28
32
  export { Divider } from './core/divider/Divider.js';
29
33
  export { dividerParts, dividerDefaults } from './core/divider/Divider.types.js';
30
34
  export { DropdownMenu } from './core/dropdown-menu/DropdownMenu.js';
31
35
  export { dropdownMenuParts, dropdownMenuDefaults } from './core/dropdown-menu/DropdownMenu.types.js';
36
+ export { FaqAccordion } from './blocks/faq-accordion/FaqAccordion.js';
37
+ export { faqAccordionParts, faqAccordionDefaults } from './blocks/faq-accordion/FaqAccordion.types.js';
38
+ export { FeatureBullets } from './blocks/feature-bullets/FeatureBullets.js';
39
+ export { featureBulletsParts, featureBulletsDefaults } from './blocks/feature-bullets/FeatureBullets.types.js';
40
+ export { FeatureCards } from './blocks/feature-cards/FeatureCards.js';
41
+ export { featureCardsParts, featureCardsDefaults } from './blocks/feature-cards/FeatureCards.types.js';
42
+ export { FeatureScroll } from './blocks/feature-scroll/FeatureScroll.js';
43
+ export { featureScrollParts, featureScrollDefaults } from './blocks/feature-scroll/FeatureScroll.types.js';
44
+ export { FeatureSplit } from './blocks/feature-split/FeatureSplit.js';
45
+ export { featureSplitParts, featureSplitDefaults } from './blocks/feature-split/FeatureSplit.types.js';
32
46
  export { FilterChip } from './core/filter-chip/FilterChip.js';
33
47
  export { filterChipParts, filterChipDefaults } from './core/filter-chip/FilterChip.types.js';
34
48
  export { Footer } from './core/footer/Footer.js';
@@ -39,8 +53,14 @@ export { Grid } from './layout/grid/Grid.js';
39
53
  export { gridParts, gridDefaults } from './layout/grid/Grid.types.js';
40
54
  export { Icon } from './core/icon/Icon.js';
41
55
  export { iconParts, iconDefaults } from './core/icon/Icon.types.js';
56
+ export { LandingHero } from './blocks/landing-hero/LandingHero.js';
57
+ export { landingHeroParts, landingHeroDefaults } from './blocks/landing-hero/LandingHero.types.js';
42
58
  export { Link } from './core/link/Link.js';
43
59
  export { linkParts, linkDefaults } from './core/link/Link.types.js';
60
+ export { LogoColumns } from './blocks/logo-columns/LogoColumns.js';
61
+ export { logoColumnsParts, logoColumnsDefaults } from './blocks/logo-columns/LogoColumns.types.js';
62
+ export { LogoRows } from './blocks/logo-rows/LogoRows.js';
63
+ export { logoRowsParts, logoRowsDefaults } from './blocks/logo-rows/LogoRows.types.js';
44
64
  export { MenuItem } from './core/menu-item/MenuItem.js';
45
65
  export { menuItemParts, menuItemDefaults } from './core/menu-item/MenuItem.types.js';
46
66
  export { Navbar } from './core/navbar/Navbar.js';
@@ -60,8 +80,14 @@ export { NavbarSwitcherOption } from './core/navbar-switcher-option/NavbarSwitch
60
80
  export { navbarSwitcherOptionParts, navbarSwitcherOptionDefaults } from './core/navbar-switcher-option/NavbarSwitcherOption.types.js';
61
81
  export { Option } from './core/option/Option.js';
62
82
  export { optionParts, optionDefaults } from './core/option/Option.types.js';
83
+ export { PageHeader } from './blocks/page-header/PageHeader.js';
84
+ export { pageHeaderParts, pageHeaderDefaults } from './blocks/page-header/PageHeader.types.js';
63
85
  export { Pagination } from './core/pagination/Pagination.js';
64
86
  export { paginationParts, paginationDefaults } from './core/pagination/Pagination.types.js';
87
+ export { PaginationDots } from './core/pagination-dots/PaginationDots.js';
88
+ export { paginationDotsParts, paginationDotsDefaults } from './core/pagination-dots/PaginationDots.types.js';
89
+ export { ProductHero } from './blocks/product-hero/ProductHero.js';
90
+ export { productHeroParts, productHeroDefaults } from './blocks/product-hero/ProductHero.types.js';
65
91
  export { RemovableChip } from './core/removable-chip/RemovableChip.js';
66
92
  export { removableChipParts, removableChipDefaults } from './core/removable-chip/RemovableChip.types.js';
67
93
  export { Row } from './layout/row/Row.js';
@@ -103,6 +129,10 @@ export { TableRow } from './core/table-row/TableRow.js';
103
129
  export { tableRowParts, tableRowDefaults } from './core/table-row/TableRow.types.js';
104
130
  export { TabList } from './core/tab-list/TabList.js';
105
131
  export { tabListParts } from './core/tab-list/TabList.types.js';
132
+ export { TestimonialRow } from './blocks/testimonial-row/TestimonialRow.js';
133
+ export { testimonialRowParts, testimonialRowDefaults } from './blocks/testimonial-row/TestimonialRow.types.js';
134
+ export { TestimonialSlider } from './blocks/testimonial-slider/TestimonialSlider.js';
135
+ export { testimonialSliderParts, testimonialSliderDefaults } from './blocks/testimonial-slider/TestimonialSlider.types.js';
106
136
  export { TextArea } from './core/text-area/TextArea.js';
107
137
  export { textAreaParts, textAreaDefaults } from './core/text-area/TextArea.types.js';
108
138
  export { TextInput } from './core/text-input/TextInput.js';
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The logos a LogoColumns wall or a LogoRows section carries.
3
+ *
4
+ * Exported from the package for the reason `testimonial-row-data.ts` and `banner-data.ts` are: a
5
+ * block whose content is a list is one whose consumer builds a value before passing it.
6
+ *
7
+ * A record rather than a component per logo, because a logo is a picture and the name of whose it
8
+ * is — nothing in it is an element a page composes — and a set of them is what a partner feed or a
9
+ * CMS hands over.
10
+ */
11
+ /** One logo on a LogoColumns wall or a LogoRows row: the mark, and the name it stands for. */
12
+ export interface LogoTile {
13
+ /**
14
+ * Whose mark it is — "Visa", "Skrill". It is the picture's alternative text, so it is what a
15
+ * screen reader hears for the logo, and it has to be the name rather than "logo".
16
+ */
17
+ name: string;
18
+ /**
19
+ * The mark itself, as a path or a URL. Drawn whole inside its tile — contained, never cropped —
20
+ * so a wide wordmark and a square badge both show all of themselves. A mark drawn for the ground
21
+ * it sits on: a white wordmark for the dark band, a full-colour one for a light ground.
22
+ */
23
+ src: string;
24
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The logos a LogoColumns wall or a LogoRows section carries.
3
+ *
4
+ * Exported from the package for the reason `testimonial-row-data.ts` and `banner-data.ts` are: a
5
+ * block whose content is a list is one whose consumer builds a value before passing it.
6
+ *
7
+ * A record rather than a component per logo, because a logo is a picture and the name of whose it
8
+ * is — nothing in it is an element a page composes — and a set of them is what a partner feed or a
9
+ * CMS hands over.
10
+ */
11
+ export {};
@@ -0,0 +1,64 @@
1
+ /**
2
+ * The stops a scrolling feature section walks a reader through.
3
+ *
4
+ * Exported from the package, because a section whose content is a list is one whose consumer has
5
+ * to build a value before they can pass it — and building it without the type means writing the
6
+ * shape out a second time and finding out at the call site that the two disagree.
7
+ *
8
+ * It sits at the components root rather than inside the component, which is where every shape a
9
+ * consumer constructs lives here. `chart-data.ts` beside it holds Product's.
10
+ *
11
+ * A record rather than a component per stop, which is the one decision worth stating. A set that
12
+ * arrives as data can be mapped from a CMS, counted, reordered and filtered by the page that holds
13
+ * it; a set that arrives as children is written out by hand. What it costs is slots: a picture is a
14
+ * path here rather than an element, and the way onward is a label and a href rather than a Link the
15
+ * page composed. Both are the price of the list being a list.
16
+ */
17
+ /** One stop in a FeatureScroll: what it is called, what it is, where it goes and what it shows. */
18
+ export interface FeatureScrollStep {
19
+ /**
20
+ * What this stop is called, in the fewest words that name it — 'Forex', 'Stock indices'.
21
+ *
22
+ * It is what a reader scans for on the way past, so a name beats a sentence. Drawn as a heading,
23
+ * which is what lets a screen reader move between the stops rather than scroll through them.
24
+ */
25
+ title: string;
26
+ /**
27
+ * What this stop is, in a sentence or two.
28
+ *
29
+ * The stop is a screen tall and this is the only thing on it a reader actually reads, so it can
30
+ * afford to be a real sentence. Past about two hundred characters it runs longer than the
31
+ * picture beside it and the two halves stop lining up.
32
+ */
33
+ description: string;
34
+ /**
35
+ * Where the way onward goes, for a stop with a page of its own.
36
+ *
37
+ * Optional, and paired with `linkLabel`: a href with no label is a link with nothing to press,
38
+ * and a label with no href is words that look pressable and are not. Passing one without the
39
+ * other draws nothing rather than drawing half of it.
40
+ */
41
+ href?: string;
42
+ /**
43
+ * The words the way onward is under.
44
+ *
45
+ * "Learn more" is this site's wording, and using the same three words on every stop is what lets
46
+ * a reader stop reading them — a link that renames itself per stop is a link somebody has to
47
+ * read before they know it is the way onward. It is stated per stop rather than defaulted here
48
+ * because a component inventing copy is a component deciding something the page is responsible
49
+ * for.
50
+ */
51
+ linkLabel?: string;
52
+ /**
53
+ * The picture that pins beside the words, as a path or a URL.
54
+ *
55
+ * A path rather than an element, because a list of records cannot hold one. It is held to a
56
+ * square and cropped to fill it, so a section of six stops is six identical frames whatever the
57
+ * page passes — and anything a reader has to read or press inside it is cropped with it.
58
+ *
59
+ * Decorative: it is hidden from assistive technology, because what the stop says is the title
60
+ * and the description, and a picture carrying something they do not is a stop that reads as half
61
+ * empty to anyone who cannot see it.
62
+ */
63
+ image: string;
64
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The stops a scrolling feature section walks a reader through.
3
+ *
4
+ * Exported from the package, because a section whose content is a list is one whose consumer has
5
+ * to build a value before they can pass it — and building it without the type means writing the
6
+ * shape out a second time and finding out at the call site that the two disagree.
7
+ *
8
+ * It sits at the components root rather than inside the component, which is where every shape a
9
+ * consumer constructs lives here. `chart-data.ts` beside it holds Product's.
10
+ *
11
+ * A record rather than a component per stop, which is the one decision worth stating. A set that
12
+ * arrives as data can be mapped from a CMS, counted, reordered and filtered by the page that holds
13
+ * it; a set that arrives as children is written out by hand. What it costs is slots: a picture is a
14
+ * path here rather than an element, and the way onward is a label and a href rather than a Link the
15
+ * page composed. Both are the price of the list being a list.
16
+ */
17
+ export {};