@deriv-com/dds-marketing 1.1.1 → 1.1.3

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 (256) hide show
  1. package/.llm/components/accordion.md +4 -0
  2. package/.llm/components/accordionitem.md +4 -0
  3. package/.llm/components/aspectratio.md +4 -0
  4. package/.llm/components/awards.md +4 -0
  5. package/.llm/components/background.md +4 -0
  6. package/.llm/components/badge.md +7 -3
  7. package/.llm/components/bottomsheet.md +7 -3
  8. package/.llm/components/breadcrumb.md +4 -0
  9. package/.llm/components/breadcrumbitem.md +4 -0
  10. package/.llm/components/button.md +4 -0
  11. package/.llm/components/buttonicon.md +10 -6
  12. package/.llm/components/card.md +5 -1
  13. package/.llm/components/cardbody.md +5 -1
  14. package/.llm/components/cardbutton.md +4 -0
  15. package/.llm/components/checkbox.md +1 -1
  16. package/.llm/components/comparisoncards.md +4 -0
  17. package/.llm/components/comparisontable.md +4 -0
  18. package/.llm/components/ctabanner.md +4 -0
  19. package/.llm/components/ctabannerslider.md +4 -0
  20. package/.llm/components/datatable.md +4 -0
  21. package/.llm/components/divider.md +4 -0
  22. package/.llm/components/downloadbanner.md +4 -0
  23. package/.llm/components/dropdownmenu.md +9 -5
  24. package/.llm/components/estimator.md +336 -0
  25. package/.llm/components/faqaccordion.md +4 -0
  26. package/.llm/components/featurebullets.md +4 -0
  27. package/.llm/components/featurecards.md +5 -1
  28. package/.llm/components/featurecardscarousel.md +4 -0
  29. package/.llm/components/featurescroll.md +5 -1
  30. package/.llm/components/featuresplit.md +4 -0
  31. package/.llm/components/featurestack.md +4 -0
  32. package/.llm/components/filterchip.md +5 -1
  33. package/.llm/components/footer.md +4 -0
  34. package/.llm/components/footergroup.md +4 -0
  35. package/.llm/components/grid.md +4 -0
  36. package/.llm/components/icon.md +9 -5
  37. package/.llm/components/illustrationcard.md +4 -0
  38. package/.llm/components/illustrationscene.md +4 -0
  39. package/.llm/components/imagebanner.md +6 -2
  40. package/.llm/components/landinghero.md +4 -0
  41. package/.llm/components/link.md +5 -1
  42. package/.llm/components/logocolumns.md +4 -0
  43. package/.llm/components/logorows.md +4 -0
  44. package/.llm/components/menuitem.md +6 -2
  45. package/.llm/components/navbar.md +5 -1
  46. package/.llm/components/navbaritem.md +4 -0
  47. package/.llm/components/navbarmenu.md +4 -0
  48. package/.llm/components/navbarmenugroup.md +4 -0
  49. package/.llm/components/navbarpanel.md +4 -0
  50. package/.llm/components/navbarswitcher.md +10 -6
  51. package/.llm/components/navbarswitcheroption.md +4 -0
  52. package/.llm/components/option.md +5 -1
  53. package/.llm/components/pageheader.md +4 -0
  54. package/.llm/components/pagination.md +4 -0
  55. package/.llm/components/paginationdots.md +4 -0
  56. package/.llm/components/producthero.md +4 -0
  57. package/.llm/components/removablechip.md +5 -1
  58. package/.llm/components/resourcebanner.md +4 -0
  59. package/.llm/components/row.md +4 -0
  60. package/.llm/components/scenescroll.md +4 -0
  61. package/.llm/components/scroller.md +4 -0
  62. package/.llm/components/searchinput.md +4 -0
  63. package/.llm/components/segmentedcontrol.md +5 -1
  64. package/.llm/components/segmentedcontrolitem.md +6 -2
  65. package/.llm/components/select.md +4 -0
  66. package/.llm/components/selectchip.md +4 -0
  67. package/.llm/components/spinner.md +4 -0
  68. package/.llm/components/stack.md +4 -0
  69. package/.llm/components/stats.md +4 -0
  70. package/.llm/components/statusdot.md +4 -0
  71. package/.llm/components/steps.md +18 -6
  72. package/.llm/components/stickycards.md +4 -0
  73. package/.llm/components/subdomainnavbar.md +5 -1
  74. package/.llm/components/tab.md +6 -2
  75. package/.llm/components/table.md +4 -0
  76. package/.llm/components/tablebody.md +4 -0
  77. package/.llm/components/tablecell.md +4 -0
  78. package/.llm/components/tablehead.md +4 -0
  79. package/.llm/components/tableheadercell.md +4 -0
  80. package/.llm/components/tablerow.md +4 -0
  81. package/.llm/components/tablist.md +4 -0
  82. package/.llm/components/teamgrid.md +4 -0
  83. package/.llm/components/testimonialrow.md +4 -0
  84. package/.llm/components/testimonialslider.md +4 -0
  85. package/.llm/components/textarea.md +4 -0
  86. package/.llm/components/textinput.md +5 -1
  87. package/.llm/components/textscroll.md +4 -0
  88. package/.llm/components/tiers.md +4 -0
  89. package/.llm/components/typography.md +4 -0
  90. package/.llm/digest/accordion.md +1 -1
  91. package/.llm/digest/accordionitem.md +1 -1
  92. package/.llm/digest/aspectratio.md +1 -1
  93. package/.llm/digest/awards.md +1 -1
  94. package/.llm/digest/background.md +1 -1
  95. package/.llm/digest/badge.md +1 -1
  96. package/.llm/digest/bottomsheet.md +1 -1
  97. package/.llm/digest/breadcrumb.md +1 -1
  98. package/.llm/digest/breadcrumbitem.md +1 -1
  99. package/.llm/digest/button.md +1 -1
  100. package/.llm/digest/buttonicon.md +1 -1
  101. package/.llm/digest/card.md +1 -1
  102. package/.llm/digest/cardbody.md +1 -1
  103. package/.llm/digest/cardbutton.md +1 -1
  104. package/.llm/digest/checkbox.md +1 -1
  105. package/.llm/digest/comparisoncards.md +1 -1
  106. package/.llm/digest/comparisontable.md +1 -1
  107. package/.llm/digest/ctabanner.md +1 -1
  108. package/.llm/digest/ctabannerslider.md +1 -1
  109. package/.llm/digest/datatable.md +1 -1
  110. package/.llm/digest/divider.md +1 -1
  111. package/.llm/digest/downloadbanner.md +1 -1
  112. package/.llm/digest/dropdownmenu.md +1 -1
  113. package/.llm/digest/estimator.md +66 -0
  114. package/.llm/digest/faqaccordion.md +1 -1
  115. package/.llm/digest/featurebullets.md +1 -1
  116. package/.llm/digest/featurecards.md +1 -1
  117. package/.llm/digest/featurecardscarousel.md +1 -1
  118. package/.llm/digest/featurescroll.md +1 -1
  119. package/.llm/digest/featuresplit.md +1 -1
  120. package/.llm/digest/featurestack.md +1 -1
  121. package/.llm/digest/filterchip.md +1 -1
  122. package/.llm/digest/footer.md +1 -1
  123. package/.llm/digest/footergroup.md +1 -1
  124. package/.llm/digest/grid.md +1 -1
  125. package/.llm/digest/icon.md +1 -1
  126. package/.llm/digest/illustrationcard.md +1 -1
  127. package/.llm/digest/illustrationscene.md +1 -1
  128. package/.llm/digest/imagebanner.md +2 -2
  129. package/.llm/digest/landinghero.md +1 -1
  130. package/.llm/digest/link.md +1 -1
  131. package/.llm/digest/logocolumns.md +1 -1
  132. package/.llm/digest/logorows.md +1 -1
  133. package/.llm/digest/menuitem.md +1 -1
  134. package/.llm/digest/navbar.md +1 -1
  135. package/.llm/digest/navbaritem.md +1 -1
  136. package/.llm/digest/navbarmenu.md +1 -1
  137. package/.llm/digest/navbarmenugroup.md +1 -1
  138. package/.llm/digest/navbarpanel.md +1 -1
  139. package/.llm/digest/navbarswitcher.md +1 -1
  140. package/.llm/digest/navbarswitcheroption.md +1 -1
  141. package/.llm/digest/option.md +1 -1
  142. package/.llm/digest/pageheader.md +1 -1
  143. package/.llm/digest/pagination.md +1 -1
  144. package/.llm/digest/paginationdots.md +1 -1
  145. package/.llm/digest/producthero.md +1 -1
  146. package/.llm/digest/removablechip.md +1 -1
  147. package/.llm/digest/resourcebanner.md +1 -1
  148. package/.llm/digest/row.md +1 -1
  149. package/.llm/digest/scenescroll.md +1 -1
  150. package/.llm/digest/scroller.md +1 -1
  151. package/.llm/digest/searchinput.md +1 -1
  152. package/.llm/digest/segmentedcontrol.md +1 -1
  153. package/.llm/digest/segmentedcontrolitem.md +2 -2
  154. package/.llm/digest/select.md +1 -1
  155. package/.llm/digest/selectchip.md +1 -1
  156. package/.llm/digest/spinner.md +1 -1
  157. package/.llm/digest/stack.md +1 -1
  158. package/.llm/digest/stats.md +1 -1
  159. package/.llm/digest/statusdot.md +1 -1
  160. package/.llm/digest/steps.md +3 -3
  161. package/.llm/digest/stickycards.md +1 -1
  162. package/.llm/digest/subdomainnavbar.md +1 -1
  163. package/.llm/digest/tab.md +1 -1
  164. package/.llm/digest/table.md +1 -1
  165. package/.llm/digest/tablebody.md +1 -1
  166. package/.llm/digest/tablecell.md +1 -1
  167. package/.llm/digest/tablehead.md +1 -1
  168. package/.llm/digest/tableheadercell.md +1 -1
  169. package/.llm/digest/tablerow.md +1 -1
  170. package/.llm/digest/tablist.md +1 -1
  171. package/.llm/digest/teamgrid.md +1 -1
  172. package/.llm/digest/testimonialrow.md +1 -1
  173. package/.llm/digest/testimonialslider.md +1 -1
  174. package/.llm/digest/textarea.md +1 -1
  175. package/.llm/digest/textinput.md +1 -1
  176. package/.llm/digest/textscroll.md +1 -1
  177. package/.llm/digest/tiers.md +1 -1
  178. package/.llm/digest/typography.md +1 -1
  179. package/.llm/index.md +2 -1
  180. package/.llm/tokens.md +5 -0
  181. package/AGENTS.md +1 -0
  182. package/README.md +28 -3
  183. package/dist/components/blocks/block-parallax.css +62 -0
  184. package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +0 -12
  185. package/dist/components/blocks/download-banner/DownloadBanner.d.ts +1 -0
  186. package/dist/components/blocks/download-banner/DownloadBanner.js +2 -1
  187. package/dist/components/blocks/estimator/Estimator.css +206 -0
  188. package/dist/components/blocks/estimator/Estimator.d.ts +27 -0
  189. package/dist/components/blocks/estimator/Estimator.js +61 -0
  190. package/dist/components/blocks/estimator/Estimator.types.d.ts +63 -0
  191. package/dist/components/blocks/estimator/Estimator.types.js +25 -0
  192. package/dist/components/blocks/estimator/estimator-impl.css +159 -0
  193. package/dist/components/blocks/feature-bullets/FeatureBullets.d.ts +1 -0
  194. package/dist/components/blocks/feature-bullets/FeatureBullets.js +2 -1
  195. package/dist/components/blocks/feature-cards/FeatureCards.d.ts +1 -0
  196. package/dist/components/blocks/feature-cards/FeatureCards.js +1 -0
  197. package/dist/components/blocks/feature-scroll/FeatureScroll.js +9 -3
  198. package/dist/components/blocks/feature-scroll/feature-scroll-impl.css +63 -40
  199. package/dist/components/blocks/feature-split/FeatureSplit.d.ts +1 -0
  200. package/dist/components/blocks/feature-split/FeatureSplit.js +2 -1
  201. package/dist/components/blocks/feature-stack/FeatureStack.d.ts +1 -0
  202. package/dist/components/blocks/feature-stack/FeatureStack.js +2 -1
  203. package/dist/components/blocks/image-banner/ImageBanner.d.ts +1 -0
  204. package/dist/components/blocks/image-banner/ImageBanner.js +2 -1
  205. package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +2 -2
  206. package/dist/components/blocks/image-banner/ImageBanner.types.js +1 -1
  207. package/dist/components/blocks/image-banner/image-banner-impl.css +7 -51
  208. package/dist/components/blocks/landing-hero/LandingHero.css +1 -1
  209. package/dist/components/blocks/landing-hero/LandingHero.d.ts +1 -0
  210. package/dist/components/blocks/landing-hero/LandingHero.js +2 -1
  211. package/dist/components/blocks/product-hero/ProductHero.css +1 -1
  212. package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -0
  213. package/dist/components/blocks/product-hero/ProductHero.js +2 -1
  214. package/dist/components/blocks/steps/Steps.css +2 -2
  215. package/dist/components/blocks/steps/Steps.d.ts +1 -0
  216. package/dist/components/blocks/steps/Steps.js +3 -2
  217. package/dist/components/blocks/steps/Steps.types.d.ts +1 -1
  218. package/dist/components/blocks/steps/steps-impl.css +76 -4
  219. package/dist/components/blocks/steps/use-turn.d.ts +8 -8
  220. package/dist/components/blocks/steps/use-turn.js +19 -16
  221. package/dist/components/blocks/team-grid/TeamGrid.d.ts +1 -0
  222. package/dist/components/blocks/team-grid/TeamGrid.js +2 -1
  223. package/dist/components/core/card/Card.css +1 -1
  224. package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +1 -1
  225. package/dist/components/core/select/Select.css +2 -0
  226. package/dist/components/core/select/select-impl.css +58 -0
  227. package/dist/components/core/text-area/TextArea.css +2 -0
  228. package/dist/components/core/text-area/text-area-impl.css +54 -0
  229. package/dist/components/core/text-input/TextInput.css +2 -0
  230. package/dist/components/core/text-input/text-input-impl.css +63 -0
  231. package/dist/components/estimator-data.d.ts +29 -0
  232. package/dist/components/estimator-data.js +12 -0
  233. package/dist/components/index.d.ts +3 -0
  234. package/dist/components/index.js +2 -0
  235. package/dist/icons/accounts.d.ts +1 -0
  236. package/dist/icons/accounts.js +1 -0
  237. package/dist/icons/app-stores.d.ts +1 -0
  238. package/dist/icons/app-stores.js +1 -0
  239. package/dist/icons/currency.d.ts +1 -0
  240. package/dist/icons/currency.js +1 -0
  241. package/dist/icons/flag.d.ts +1 -0
  242. package/dist/icons/flag.js +1 -0
  243. package/dist/icons/illustrative.d.ts +1 -0
  244. package/dist/icons/illustrative.js +1 -0
  245. package/dist/icons/index.d.ts +1 -0
  246. package/dist/icons/index.js +4 -0
  247. package/dist/icons/markets.d.ts +1 -0
  248. package/dist/icons/markets.js +1 -0
  249. package/dist/icons/social.d.ts +1 -0
  250. package/dist/icons/social.js +1 -0
  251. package/dist/icons/system.d.ts +1 -0
  252. package/dist/icons/system.js +1 -0
  253. package/dist/icons/trade.d.ts +1 -0
  254. package/dist/icons/trade.js +1 -0
  255. package/dist/marketing.css +10 -0
  256. package/package.json +44 -2
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Accordion
4
4
 
5
+ A stack of headings whose detail expands when the reader asks for it.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A stack of rows whose headings stay and whose detail is put away until the reader asks for it. It exists so a long page can be read as a short one: the headings are the page, and each row is something the reader may or may not want. Two rows at least — a set is what makes it work, because a heading earns its place by being scanned against the ones around it. One row is open at a time and that is not configurable here: a marketing page is read by scrolling, and a set that could hold every row open is the long page the accordion was put there to shorten.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # AccordionItem
4
4
 
5
+ One row of an Accordion: a heading that stays, and detail that expands.
6
+
7
+ ## Why it is built this way
8
+
5
9
  One row of an Accordion: a heading that is always there, and the detail under it that is not. The heading is the whole of the target — the words and the chevron are one control, because a reader aiming at a row is aiming at the row rather than at the mark on the end of it. The chevron says which way the row is about to move rather than which way it just moved, so it is a promise rather than a report.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # AspectRatio
4
4
 
5
+ Holds its content to a fixed shape and reserves the space before it loads.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A box that holds one shape whatever is put in it, so a page reserves the room a picture will take before the picture arrives. It draws nothing — no fill, no corner, no edge — and owns one decision: the proportion. What it holds fills it and is cropped to fit, because a box asked for a shape and given something a different shape has to answer which of the two wins, and the box is the one the layout was built on.
6
10
 
7
11
  It exists because the alternative is every page doing the arithmetic. A row of cards whose images arrive at three different shapes is a row that settles on its tallest, and a hero whose art loads late is a page that jumps once the browser learns how tall it is. Both are the same fault: the shape was known and nothing said it.
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Awards
4
4
 
5
+ Lists the industry awards a company has won, each framed between two laurels.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A section of social proof that lists the industry awards a company has won, each a badge between two laurels: a laurel, the award's name and its issuer, and the same laurel mirrored. From the fold the badges wrap into rows centred under the heading, five at most to a row and fewer as the band narrows, a short last row centred rather than left at the start. On a phone they run in one row across the band that moves along on its own, a loop with no seam.
6
10
 
7
11
  The reference design's FeatureAwards, phone marquee included, at motion.duration.ticker per award. It holds still while a pointer rests on it, while it has focus — it is a tab stop named by the heading while it runs — and while it is pressed; a reader who asked for less motion gets the row still, to swipe.
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Background
4
4
 
5
+ A patterned ground for a section to sit on.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A ground a section or a block sits on, painted with a pattern rather than a flat fill — a halftone, an aurora, a mesh, a rule grid or rings. It moves slowly at rest, answers the pointer and carries no meaning; what the band holds sits on top of it.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Badge
4
4
 
5
+ A short label marking something as new, chosen or reduced.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A short word marking something as new, chosen or reduced. It is promotion rather than state: a marketing page badges the plan it wants read first and the feature it shipped last week, where an app badges what an account is currently doing. That difference decides everything else here — there is no success or warning ground, because nothing on a landing page has a status, and the colour a badge takes says how loudly the page is asking rather than what it is reporting.
6
10
 
7
11
  Use it sparingly, and this is not a nicety. A badge works by being the one thing on a card that is not the copy; a page with a badge on every card has a row of ordinary labels in coloured pills and nothing marked at all.
@@ -184,7 +188,7 @@ Two things genuinely have no logical form and are not covered by this. A CSS gra
184
188
 
185
189
  ```tsx
186
190
  import { Badge } from '@deriv-com/dds-marketing'
187
- import { GlobeRegularIcon } from '@deriv-com/quill-icons-web'
191
+ import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
188
192
 
189
193
  <Badge label="For platforms" icon={<GlobeRegularIcon />} />
190
194
  ```
@@ -197,7 +201,7 @@ Both are a tint carrying the colour and dark ink carrying the words. Brand makes
197
201
 
198
202
  ```tsx
199
203
  import { Badge } from '@deriv-com/dds-marketing'
200
- import { ChartCandlestickRegularIcon, GlobeRegularIcon } from '@deriv-com/quill-icons-web'
204
+ import { ChartCandlestickRegularIcon, GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
201
205
 
202
206
  // accent — the plan the page wants read first
203
207
  <Badge variant="accent" label="Most popular" icon={<GlobeRegularIcon />} />
@@ -212,7 +216,7 @@ The mark says what the badge is about faster than its word does. It is decorativ
212
216
 
213
217
  ```tsx
214
218
  import { Badge } from '@deriv-com/dds-marketing'
215
- import { GlobeRegularIcon } from '@deriv-com/quill-icons-web'
219
+ import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
216
220
 
217
221
  // With a glyph
218
222
  <Badge label="For platforms" icon={<GlobeRegularIcon />} />
@@ -2,6 +2,10 @@
2
2
 
3
3
  # BottomSheet
4
4
 
5
+ A panel that rises from the bottom edge for one focused task on small screens.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A panel that rises from the bottom edge to hold a single focused task on small screens. It owns the way out, the controls ranged above it and the row that names the task; what the task looks like is the consumer's.
6
10
 
7
11
  ## Use when
@@ -309,7 +313,7 @@ A sheet says how to leave it once: a handle to pull, or a close button to press.
309
313
 
310
314
  ```tsx
311
315
  import { BottomSheet, ButtonIcon } from '@deriv-com/dds-marketing'
312
- import { PenSolidIcon } from '@deriv-com/quill-icons-web'
316
+ import { PenSolidIcon } from '@deriv-com/dds-marketing/icons'
313
317
 
314
318
  // The handle alone, which is the default
315
319
  <BottomSheet onOpenChange={(open, reason) => { /* your handler */ }} open title="Filter results">Markets, date range and contract type</BottomSheet>
@@ -330,7 +334,7 @@ It ranges to the start and stays there, whatever is at either end of the row. Th
330
334
 
331
335
  ```tsx
332
336
  import { BottomSheet, ButtonIcon } from '@deriv-com/dds-marketing'
333
- import { PenSolidIcon } from '@deriv-com/quill-icons-web'
337
+ import { PenSolidIcon } from '@deriv-com/dds-marketing/icons'
334
338
 
335
339
  // The title alone
336
340
  <BottomSheet onOpenChange={(open, reason) => { /* your handler */ }} open showClose={false} showHandle={false} title="Filter results">Markets, date range and contract type</BottomSheet>
@@ -348,7 +352,7 @@ A sheet reached from another sheet needs the step before it. Back takes the lead
348
352
 
349
353
  ```tsx
350
354
  import { BottomSheet, ButtonIcon } from '@deriv-com/dds-marketing'
351
- import { ArrowLeftRegularIcon, PenSolidIcon } from '@deriv-com/quill-icons-web'
355
+ import { ArrowLeftRegularIcon, PenSolidIcon } from '@deriv-com/dds-marketing/icons'
352
356
 
353
357
  // The way back, opposite the way out
354
358
  <BottomSheet onOpenChange={(open, reason) => { /* your handler */ }} open showClose showHandle={false} back={<ButtonIcon variant="plain" size="sm" label="Back to filters" icon={<ArrowLeftRegularIcon />} />} title="Choose markets">Forex, Commodities, Stock indices, Cryptocurrencies</BottomSheet>
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Breadcrumb
4
4
 
5
+ Shows where the current page sits in the site, with links back up.
6
+
7
+ ## Why it is built this way
8
+
5
9
  The trail of ancestors above the current page on a marketing site, showing the visitor where they are in the site hierarchy. Every level but the last is a link back to that section; the last is where they already are. On a marketing site the trail is often the only structural cue a visitor has — they may have arrived from a search result or a campaign link and have no mental model of the site yet. It renders every level it is given and wraps rather than collapsing, because hiding levels describes a shallower hierarchy than the one the visitor is in.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # BreadcrumbItem
4
4
 
5
+ One level in a Breadcrumb.
6
+
7
+ ## Why it is built this way
8
+
5
9
  One level in a Breadcrumb on a marketing site. It renders either a link back to that level or, for the level the visitor is already on, plain text marked as the current page. It knows nothing about the levels around it — what order they come in and what sits between them belongs to the trail, not to any level in it.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Button
4
4
 
5
+ Triggers the one action a section asks for, such as signing up.
6
+
7
+ ## Why it is built this way
8
+
5
9
  Drives a visitor toward a conversion goal — a signup page, a pricing page, a demo booking — or performs the one action a section asks for, such as sending a newsletter form or opening a video. An `<a>` when given an href and a `<button>` when not, so a CTA that goes somewhere gets the browser's navigation and one that acts in place answers Space and does what the page says.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # ButtonIcon
4
4
 
5
+ Triggers an action with an icon alone.
6
+
7
+ ## Why it is built this way
8
+
5
9
  One press carried by a glyph alone, in the space a label would need. What the press does decides the element: an `<a>` when it is given an href, a `<button>` when it is not — the fork CardButton already settled in this package, and for the same reason, that a control going to a page and a control the page handles itself are the same gesture with different destinations, and the element is what tells a browser which. The glyph is decorative to a screen reader; the name the control is announced by comes from `label`, which is never drawn, so the control is named for everyone whether or not the shape happens to be legible to them. This is the gap Button names in its own guidance: Button's words are both its accessible name and its destination, and a glyph alone has nowhere to put either.
6
10
 
7
11
  ## Use when
@@ -226,7 +230,7 @@ Two things genuinely have no logical form and are not covered by this. A CSS gra
226
230
 
227
231
  ```tsx
228
232
  import { ButtonIcon } from '@deriv-com/dds-marketing'
229
- import { PlaySolidIcon } from '@deriv-com/quill-icons-web'
233
+ import { PlaySolidIcon } from '@deriv-com/dds-marketing/icons'
230
234
 
231
235
  <ButtonIcon label="Play the product tour" icon={<PlaySolidIcon />} />
232
236
  ```
@@ -239,7 +243,7 @@ How much of the section one press claims. Primary for the press a band is built
239
243
 
240
244
  ```tsx
241
245
  import { ButtonIcon } from '@deriv-com/dds-marketing'
242
- import { PlaySolidIcon, XmarkRegularIcon } from '@deriv-com/quill-icons-web'
246
+ import { PlaySolidIcon, XmarkRegularIcon } from '@deriv-com/dds-marketing/icons'
243
247
 
244
248
  // Primary — the press a band is built around
245
249
  <ButtonIcon variant="primary" label="Play the product tour" icon={<PlaySolidIcon />} />
@@ -260,7 +264,7 @@ Three squares from the control ramp, each holding the mark Button gives its own
260
264
 
261
265
  ```tsx
262
266
  import { ButtonIcon } from '@deriv-com/dds-marketing'
263
- import { ChevronLeftRegularIcon } from '@deriv-com/quill-icons-web'
267
+ import { ChevronLeftRegularIcon } from '@deriv-com/dds-marketing/icons'
264
268
 
265
269
  // sm — a dense row, desktop only
266
270
  <ButtonIcon size="sm" variant="secondary" label="Previous market" icon={<ChevronLeftRegularIcon />} />
@@ -278,7 +282,7 @@ href decides the element. With one it is an anchor and the browser navigates; wi
278
282
 
279
283
  ```tsx
280
284
  import { ButtonIcon } from '@deriv-com/dds-marketing'
281
- import { BarsRegularIcon, LinkedinInIcon } from '@deriv-com/quill-icons-web'
285
+ import { BarsRegularIcon, LinkedinInIcon } from '@deriv-com/dds-marketing/icons'
282
286
 
283
287
  // With href — an anchor. Cmd-click opens a tab
284
288
  <ButtonIcon variant="secondary" href="https://www.linkedin.com/company/deriv" label="Deriv on LinkedIn" icon={<LinkedinInIcon />} />
@@ -293,7 +297,7 @@ Social accounts in a footer: several at once, all one tier. One drawn heavier wo
293
297
 
294
298
  ```tsx
295
299
  import { ButtonIcon } from '@deriv-com/dds-marketing'
296
- import { FacebookFIcon, InstagramIcon, LinkedinInIcon } from '@deriv-com/quill-icons-web'
300
+ import { FacebookFIcon, InstagramIcon, LinkedinInIcon } from '@deriv-com/dds-marketing/icons'
297
301
 
298
302
  // LinkedIn
299
303
  <ButtonIcon variant="secondary" href="https://www.linkedin.com/company/deriv" label="Deriv on LinkedIn" icon={<LinkedinInIcon />} />
@@ -311,7 +315,7 @@ Plain paints nothing of its own, so what is behind it decides whether the mark c
311
315
 
312
316
  ```tsx
313
317
  import { ButtonIcon } from '@deriv-com/dds-marketing'
314
- import { PlaySolidIcon } from '@deriv-com/quill-icons-web'
318
+ import { PlaySolidIcon } from '@deriv-com/dds-marketing/icons'
315
319
 
316
320
  // default — a light surface
317
321
  <ButtonIcon label="Play the product tour" icon={<PlaySolidIcon />} variant="plain" />
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Card
4
4
 
5
+ A surface that groups related content.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A surface that holds content belonging together. The marketing page is white and this is a step off it, so a card is told apart by being recessed rather than by floating — a column of them reads as a set of things rather than a stack of panels. It holds a fill and a corner and nothing else: it does not pad what is inside it, and what is inside it is the page's to compose. One variant holds no fill either: `plain` paints nothing and lets whatever is beneath it through, for an editorial card that is told apart by its picture and its headline rather than by a ground.
6
10
 
7
11
  ## Use when
@@ -249,7 +253,7 @@ The mark is inset with the copy and sized to sit above a heading, which is what
249
253
 
250
254
  ```tsx
251
255
  import { Card, CardBody, Icon } from '@deriv-com/dds-marketing'
252
- import { MemoCircleCheckRegularIcon } from '@deriv-com/quill-icons-web'
256
+ import { MemoCircleCheckRegularIcon } from '@deriv-com/dds-marketing/icons'
253
257
 
254
258
  // surface-raised — a mark, and no picture
255
259
  <Card variant="surface-raised">
@@ -2,6 +2,10 @@
2
2
 
3
3
  # CardBody
4
4
 
5
+ The content area of a Card, holding its text and picture.
6
+
7
+ ## Why it is built this way
8
+
5
9
  Everything a card holds: the words inset from its edges and the picture that reaches them, in one region. The surface around it keeps a fill and a corner and nothing else. The inset belongs to the words alone rather than to this whole box, which is what lets a photograph meet the corner while a sentence three lines above it does not — one measure cannot serve both, and putting the padding on the copy instead of on the container is how the same component draws both.
6
10
 
7
11
  ## Use when
@@ -318,7 +322,7 @@ Every region appears only once it is given something. A card with no description
318
322
 
319
323
  ```tsx
320
324
  import { CardBody, Icon } from '@deriv-com/dds-marketing'
321
- import { MemoCircleCheckRegularIcon } from '@deriv-com/quill-icons-web'
325
+ import { MemoCircleCheckRegularIcon } from '@deriv-com/dds-marketing/icons'
322
326
 
323
327
  // A title on its own
324
328
  <CardBody title="Tight spreads" />
@@ -2,6 +2,10 @@
2
2
 
3
3
  # CardButton
4
4
 
5
+ A card that acts on press.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A card that responds to a press. The whole surface is the target — a feature and where it leads, a market and its page, a plan and what it costs — so pressing anywhere on it does the thing, and what the thing is decides the element: an `<a>` when it is given an href, a `<button>` when it is not. One component rather than two, because a card that goes to a page and a card that opens something are the same gesture with different destinations, and the element is what tells a browser which.
6
10
 
7
11
  ## Use when
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Checkbox
4
4
 
5
- Records a single on-or-off choice that is submitted with the form around it rather than applied the moment it is ticked.
5
+ Records an on-or-off choice that is submitted with its form.
6
6
 
7
7
  ## Use when
8
8
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  # ComparisonCards
4
4
 
5
+ Sets two to four options side by side as cards, so readers compare them row by row.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A section that sets two to four options side by side under a heading, each a card of its own that repeats the same short rows — a label and this option's value — so a reader compares the options line by line: Spot against Futures, one account type against another. Each card is the page's own Card — every option the same colour, so they read as equals — holding a name, a sentence, a list of rows and, where one belongs to it, a footnote and a way on.
6
10
 
7
11
  The reference design's ComparisonCards. The rows line up across the cards — a card's first row level with its neighbour's first row, however long the sentence above either one runs — and every card in the row is as tall as the tallest. One column on a phone; two cards side by side from the fold; three side by side at full width, and stacked until there is room for all three, because a third card under a pair is compared with nothing beside it.
@@ -2,6 +2,10 @@
2
2
 
3
3
  # ComparisonTable
4
4
 
5
+ Compares a short, fixed set of options in a table.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A comparison-table section for short, fixed column sets. It renders a rounded card with a light header row, horizontal dividers only, a bold first-column label, and two or three value columns. Unlike Table, this block has no search, pagination, or header tooltips.
6
10
 
7
11
  The reference design's DynamicTable, named for what it is for. A heading and, where it needs one, a line under it, over the page's own Table in the page's own Card: a band of column names, then one row per thing compared, each row named by its first cell. Its columns and rows are records rather than children, because the block has to draw every row against the same columns. A cell holds one line or a short list of them. On a phone the columns keep a readable width and the table scrolls across inside its card.
@@ -2,6 +2,10 @@
2
2
 
3
3
  # CtaBanner
4
4
 
5
+ A full-bleed band with one short promotion and the action it asks for.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A full-bleed coral band carrying one short promotion and the action it asks for — the strip that breaks a long page with the one thing the page wants done, or closes it. Coral in both themes, because the brand is the same colour whatever the reader's theme. A headline, a line under it, and an action or two; nothing moves.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # CtaBannerSlider
4
4
 
5
+ A full-bleed promotional band that rotates between two or three offers.
6
+
7
+ ## Why it is built this way
8
+
5
9
  CtaBanner's layout with a slider in it: the same full-bleed coral band, rotating between two or three short promotions. One message is in view at a time, fading in where the last one was; dots show where the reader is. Coral in both themes, like the banner.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # DataTable
4
4
 
5
+ A full-width table for instrument and market listings.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A full-width data-table section for instrument and market-style listings. It renders a search bar, a native table with a sticky first column inside a horizontally scrollable wrapper, client-side pagination, and an optional footnote below the table.
6
10
 
7
11
  A heading over a framed table a reader can search and page through: the search and the count of what it found across the top, the table under them with each row's name pinned to the start edge while the values scroll sideways, the pages under that when there is more than one, and a line of small print below the frame. The columns and the rows are data — any feed or spreadsheet of instruments can be dropped in — and every value is searched, as the reader types.
@@ -2,6 +2,10 @@
2
2
 
3
3
  # Divider
4
4
 
5
+ A rule that separates one group of content from another.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A rule between things, and the quietest way to say that what is on one side of it belongs to a different group from what is on the other. One line, in the one ink this package keeps for a separator, with no room of its own — optionally with a word held in the middle of it, where the word is the whole message.
6
10
 
7
11
  ## Use when
@@ -2,6 +2,10 @@
2
2
 
3
3
  # DownloadBanner
4
4
 
5
+ Promotes the app with a heading and links to each app store.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A section promoting the app's downloads: a card holding a heading and the stores' own badges, each a link to the product in that store. From the fold a QR code sits beside the heading, with a line telling the reader to scan it, so a reader on a desktop can take the app to their phone; on a phone the code is gone — the reader is already holding the device it would open on — and the badges sit two to a row under the heading.
6
10
 
7
11
  The badges are the stores' own artwork, chosen from the platform each record names rather than drawn by the page, and each is named by the words it carries. The QR code is the page's image, never generated here.
@@ -2,6 +2,10 @@
2
2
 
3
3
  # DropdownMenu
4
4
 
5
+ A button that opens a short list of links.
6
+
7
+ ## Why it is built this way
8
+
5
9
  A button that opens a short set of destinations. Pressing one goes somewhere and the menu shuts — it holds no value and reports no answer, so there is nothing about it to find on reopening.
6
10
 
7
11
  It is the host MenuItem was written against. A row whose role is menuitem means nothing to a screen reader outside an element whose role is menu, so until this landed MenuItem was a contract and a stylesheet waiting for one. What this adds is everything a row cannot know about itself: that there is a set, how long it is, which one the reader is on, and that Escape puts them back on the button they pressed.
@@ -287,7 +291,7 @@ Two things genuinely have no logical form and are not covered by this. A CSS gra
287
291
 
288
292
  ```tsx
289
293
  import { DropdownMenu, MenuItem } from '@deriv-com/dds-marketing'
290
- import { GlobeRegularIcon } from '@deriv-com/quill-icons-web'
294
+ import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
291
295
 
292
296
  <DropdownMenu label="Language" icon={<GlobeRegularIcon />}>
293
297
  <MenuItem onSelect={() => { /* your handler */ }}>English</MenuItem>
@@ -342,7 +346,7 @@ What a marketing menu is for: the languages a site is published in, the regions
342
346
 
343
347
  ```tsx
344
348
  import { DropdownMenu, MenuItem } from '@deriv-com/dds-marketing'
345
- import { GlobeRegularIcon } from '@deriv-com/quill-icons-web'
349
+ import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
346
350
 
347
351
  // The languages a site is published in
348
352
  <DropdownMenu label="Language" icon={<GlobeRegularIcon />} defaultOpen>{menuitems}</DropdownMenu>
@@ -421,7 +425,7 @@ The edge is what finds a control standing on its own. Among neighbours that are
421
425
 
422
426
  ```tsx
423
427
  import { DropdownMenu } from '@deriv-com/dds-marketing'
424
- import { GlobeRegularIcon } from '@deriv-com/quill-icons-web'
428
+ import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
425
429
 
426
430
  // outlined — on its own in a toolbar
427
431
  <DropdownMenu label="Language" icon={<GlobeRegularIcon />}>{menuitems}</DropdownMenu>
@@ -436,7 +440,7 @@ Only the tints move. Under plain the ink is already whatever the surface set, so
436
440
 
437
441
  ```tsx
438
442
  import { DropdownMenu } from '@deriv-com/dds-marketing'
439
- import { GlobeRegularIcon } from '@deriv-com/quill-icons-web'
443
+ import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
440
444
 
441
445
  // default — a light bar
442
446
  <DropdownMenu label="Language" icon={<GlobeRegularIcon />} variant="plain" size="sm" chevron={false}>{menuitems}</DropdownMenu>
@@ -451,7 +455,7 @@ A press, always. A pointer as well where the menu sits among others that open th
451
455
 
452
456
  ```tsx
453
457
  import { DropdownMenu } from '@deriv-com/dds-marketing'
454
- import { GlobeRegularIcon } from '@deriv-com/quill-icons-web'
458
+ import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
455
459
 
456
460
  // A press — a switcher standing on its own
457
461
  <DropdownMenu label="Language" icon={<GlobeRegularIcon />}>{menuitems}</DropdownMenu>