@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.
- package/.llm/components/accordion.md +4 -0
- package/.llm/components/accordionitem.md +4 -0
- package/.llm/components/aspectratio.md +4 -0
- package/.llm/components/awards.md +4 -0
- package/.llm/components/background.md +4 -0
- package/.llm/components/badge.md +7 -3
- package/.llm/components/bottomsheet.md +7 -3
- package/.llm/components/breadcrumb.md +4 -0
- package/.llm/components/breadcrumbitem.md +4 -0
- package/.llm/components/button.md +4 -0
- package/.llm/components/buttonicon.md +10 -6
- package/.llm/components/card.md +5 -1
- package/.llm/components/cardbody.md +5 -1
- package/.llm/components/cardbutton.md +4 -0
- package/.llm/components/checkbox.md +1 -1
- package/.llm/components/comparisoncards.md +4 -0
- package/.llm/components/comparisontable.md +4 -0
- package/.llm/components/ctabanner.md +4 -0
- package/.llm/components/ctabannerslider.md +4 -0
- package/.llm/components/datatable.md +4 -0
- package/.llm/components/divider.md +4 -0
- package/.llm/components/downloadbanner.md +4 -0
- package/.llm/components/dropdownmenu.md +9 -5
- package/.llm/components/estimator.md +336 -0
- package/.llm/components/faqaccordion.md +4 -0
- package/.llm/components/featurebullets.md +4 -0
- package/.llm/components/featurecards.md +5 -1
- package/.llm/components/featurecardscarousel.md +4 -0
- package/.llm/components/featurescroll.md +5 -1
- package/.llm/components/featuresplit.md +4 -0
- package/.llm/components/featurestack.md +4 -0
- package/.llm/components/filterchip.md +5 -1
- package/.llm/components/footer.md +4 -0
- package/.llm/components/footergroup.md +4 -0
- package/.llm/components/grid.md +4 -0
- package/.llm/components/icon.md +9 -5
- package/.llm/components/illustrationcard.md +4 -0
- package/.llm/components/illustrationscene.md +4 -0
- package/.llm/components/imagebanner.md +6 -2
- package/.llm/components/landinghero.md +4 -0
- package/.llm/components/link.md +5 -1
- package/.llm/components/logocolumns.md +4 -0
- package/.llm/components/logorows.md +4 -0
- package/.llm/components/menuitem.md +6 -2
- package/.llm/components/navbar.md +5 -1
- package/.llm/components/navbaritem.md +4 -0
- package/.llm/components/navbarmenu.md +4 -0
- package/.llm/components/navbarmenugroup.md +4 -0
- package/.llm/components/navbarpanel.md +4 -0
- package/.llm/components/navbarswitcher.md +10 -6
- package/.llm/components/navbarswitcheroption.md +4 -0
- package/.llm/components/option.md +5 -1
- package/.llm/components/pageheader.md +4 -0
- package/.llm/components/pagination.md +4 -0
- package/.llm/components/paginationdots.md +4 -0
- package/.llm/components/producthero.md +4 -0
- package/.llm/components/removablechip.md +5 -1
- package/.llm/components/resourcebanner.md +4 -0
- package/.llm/components/row.md +4 -0
- package/.llm/components/scenescroll.md +4 -0
- package/.llm/components/scroller.md +4 -0
- package/.llm/components/searchinput.md +4 -0
- package/.llm/components/segmentedcontrol.md +5 -1
- package/.llm/components/segmentedcontrolitem.md +6 -2
- package/.llm/components/select.md +4 -0
- package/.llm/components/selectchip.md +4 -0
- package/.llm/components/spinner.md +4 -0
- package/.llm/components/stack.md +4 -0
- package/.llm/components/stats.md +4 -0
- package/.llm/components/statusdot.md +4 -0
- package/.llm/components/steps.md +18 -6
- package/.llm/components/stickycards.md +4 -0
- package/.llm/components/subdomainnavbar.md +5 -1
- package/.llm/components/tab.md +6 -2
- package/.llm/components/table.md +4 -0
- package/.llm/components/tablebody.md +4 -0
- package/.llm/components/tablecell.md +4 -0
- package/.llm/components/tablehead.md +4 -0
- package/.llm/components/tableheadercell.md +4 -0
- package/.llm/components/tablerow.md +4 -0
- package/.llm/components/tablist.md +4 -0
- package/.llm/components/teamgrid.md +4 -0
- package/.llm/components/testimonialrow.md +4 -0
- package/.llm/components/testimonialslider.md +4 -0
- package/.llm/components/textarea.md +4 -0
- package/.llm/components/textinput.md +5 -1
- package/.llm/components/textscroll.md +4 -0
- package/.llm/components/tiers.md +4 -0
- package/.llm/components/typography.md +4 -0
- package/.llm/digest/accordion.md +1 -1
- package/.llm/digest/accordionitem.md +1 -1
- package/.llm/digest/aspectratio.md +1 -1
- package/.llm/digest/awards.md +1 -1
- package/.llm/digest/background.md +1 -1
- package/.llm/digest/badge.md +1 -1
- package/.llm/digest/bottomsheet.md +1 -1
- package/.llm/digest/breadcrumb.md +1 -1
- package/.llm/digest/breadcrumbitem.md +1 -1
- package/.llm/digest/button.md +1 -1
- package/.llm/digest/buttonicon.md +1 -1
- package/.llm/digest/card.md +1 -1
- package/.llm/digest/cardbody.md +1 -1
- package/.llm/digest/cardbutton.md +1 -1
- package/.llm/digest/checkbox.md +1 -1
- package/.llm/digest/comparisoncards.md +1 -1
- package/.llm/digest/comparisontable.md +1 -1
- package/.llm/digest/ctabanner.md +1 -1
- package/.llm/digest/ctabannerslider.md +1 -1
- package/.llm/digest/datatable.md +1 -1
- package/.llm/digest/divider.md +1 -1
- package/.llm/digest/downloadbanner.md +1 -1
- package/.llm/digest/dropdownmenu.md +1 -1
- package/.llm/digest/estimator.md +66 -0
- package/.llm/digest/faqaccordion.md +1 -1
- package/.llm/digest/featurebullets.md +1 -1
- package/.llm/digest/featurecards.md +1 -1
- package/.llm/digest/featurecardscarousel.md +1 -1
- package/.llm/digest/featurescroll.md +1 -1
- package/.llm/digest/featuresplit.md +1 -1
- package/.llm/digest/featurestack.md +1 -1
- package/.llm/digest/filterchip.md +1 -1
- package/.llm/digest/footer.md +1 -1
- package/.llm/digest/footergroup.md +1 -1
- package/.llm/digest/grid.md +1 -1
- package/.llm/digest/icon.md +1 -1
- package/.llm/digest/illustrationcard.md +1 -1
- package/.llm/digest/illustrationscene.md +1 -1
- package/.llm/digest/imagebanner.md +2 -2
- package/.llm/digest/landinghero.md +1 -1
- package/.llm/digest/link.md +1 -1
- package/.llm/digest/logocolumns.md +1 -1
- package/.llm/digest/logorows.md +1 -1
- package/.llm/digest/menuitem.md +1 -1
- package/.llm/digest/navbar.md +1 -1
- package/.llm/digest/navbaritem.md +1 -1
- package/.llm/digest/navbarmenu.md +1 -1
- package/.llm/digest/navbarmenugroup.md +1 -1
- package/.llm/digest/navbarpanel.md +1 -1
- package/.llm/digest/navbarswitcher.md +1 -1
- package/.llm/digest/navbarswitcheroption.md +1 -1
- package/.llm/digest/option.md +1 -1
- package/.llm/digest/pageheader.md +1 -1
- package/.llm/digest/pagination.md +1 -1
- package/.llm/digest/paginationdots.md +1 -1
- package/.llm/digest/producthero.md +1 -1
- package/.llm/digest/removablechip.md +1 -1
- package/.llm/digest/resourcebanner.md +1 -1
- package/.llm/digest/row.md +1 -1
- package/.llm/digest/scenescroll.md +1 -1
- package/.llm/digest/scroller.md +1 -1
- package/.llm/digest/searchinput.md +1 -1
- package/.llm/digest/segmentedcontrol.md +1 -1
- package/.llm/digest/segmentedcontrolitem.md +2 -2
- package/.llm/digest/select.md +1 -1
- package/.llm/digest/selectchip.md +1 -1
- package/.llm/digest/spinner.md +1 -1
- package/.llm/digest/stack.md +1 -1
- package/.llm/digest/stats.md +1 -1
- package/.llm/digest/statusdot.md +1 -1
- package/.llm/digest/steps.md +3 -3
- package/.llm/digest/stickycards.md +1 -1
- package/.llm/digest/subdomainnavbar.md +1 -1
- package/.llm/digest/tab.md +1 -1
- package/.llm/digest/table.md +1 -1
- package/.llm/digest/tablebody.md +1 -1
- package/.llm/digest/tablecell.md +1 -1
- package/.llm/digest/tablehead.md +1 -1
- package/.llm/digest/tableheadercell.md +1 -1
- package/.llm/digest/tablerow.md +1 -1
- package/.llm/digest/tablist.md +1 -1
- package/.llm/digest/teamgrid.md +1 -1
- package/.llm/digest/testimonialrow.md +1 -1
- package/.llm/digest/testimonialslider.md +1 -1
- package/.llm/digest/textarea.md +1 -1
- package/.llm/digest/textinput.md +1 -1
- package/.llm/digest/textscroll.md +1 -1
- package/.llm/digest/tiers.md +1 -1
- package/.llm/digest/typography.md +1 -1
- package/.llm/index.md +2 -1
- package/.llm/tokens.md +5 -0
- package/AGENTS.md +1 -0
- package/README.md +28 -3
- package/dist/components/blocks/block-parallax.css +62 -0
- package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +0 -12
- package/dist/components/blocks/download-banner/DownloadBanner.d.ts +1 -0
- package/dist/components/blocks/download-banner/DownloadBanner.js +2 -1
- package/dist/components/blocks/estimator/Estimator.css +206 -0
- package/dist/components/blocks/estimator/Estimator.d.ts +27 -0
- package/dist/components/blocks/estimator/Estimator.js +61 -0
- package/dist/components/blocks/estimator/Estimator.types.d.ts +63 -0
- package/dist/components/blocks/estimator/Estimator.types.js +25 -0
- package/dist/components/blocks/estimator/estimator-impl.css +159 -0
- package/dist/components/blocks/feature-bullets/FeatureBullets.d.ts +1 -0
- package/dist/components/blocks/feature-bullets/FeatureBullets.js +2 -1
- package/dist/components/blocks/feature-cards/FeatureCards.d.ts +1 -0
- package/dist/components/blocks/feature-cards/FeatureCards.js +1 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.js +9 -3
- package/dist/components/blocks/feature-scroll/feature-scroll-impl.css +63 -40
- package/dist/components/blocks/feature-split/FeatureSplit.d.ts +1 -0
- package/dist/components/blocks/feature-split/FeatureSplit.js +2 -1
- package/dist/components/blocks/feature-stack/FeatureStack.d.ts +1 -0
- package/dist/components/blocks/feature-stack/FeatureStack.js +2 -1
- package/dist/components/blocks/image-banner/ImageBanner.d.ts +1 -0
- package/dist/components/blocks/image-banner/ImageBanner.js +2 -1
- package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +2 -2
- package/dist/components/blocks/image-banner/ImageBanner.types.js +1 -1
- package/dist/components/blocks/image-banner/image-banner-impl.css +7 -51
- package/dist/components/blocks/landing-hero/LandingHero.css +1 -1
- package/dist/components/blocks/landing-hero/LandingHero.d.ts +1 -0
- package/dist/components/blocks/landing-hero/LandingHero.js +2 -1
- package/dist/components/blocks/product-hero/ProductHero.css +1 -1
- package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -0
- package/dist/components/blocks/product-hero/ProductHero.js +2 -1
- package/dist/components/blocks/steps/Steps.css +2 -2
- package/dist/components/blocks/steps/Steps.d.ts +1 -0
- package/dist/components/blocks/steps/Steps.js +3 -2
- package/dist/components/blocks/steps/Steps.types.d.ts +1 -1
- package/dist/components/blocks/steps/steps-impl.css +76 -4
- package/dist/components/blocks/steps/use-turn.d.ts +8 -8
- package/dist/components/blocks/steps/use-turn.js +19 -16
- package/dist/components/blocks/team-grid/TeamGrid.d.ts +1 -0
- package/dist/components/blocks/team-grid/TeamGrid.js +2 -1
- package/dist/components/core/card/Card.css +1 -1
- package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +1 -1
- package/dist/components/core/select/Select.css +2 -0
- package/dist/components/core/select/select-impl.css +58 -0
- package/dist/components/core/text-area/TextArea.css +2 -0
- package/dist/components/core/text-area/text-area-impl.css +54 -0
- package/dist/components/core/text-input/TextInput.css +2 -0
- package/dist/components/core/text-input/text-input-impl.css +63 -0
- package/dist/components/estimator-data.d.ts +29 -0
- package/dist/components/estimator-data.js +12 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.js +2 -0
- package/dist/icons/accounts.d.ts +1 -0
- package/dist/icons/accounts.js +1 -0
- package/dist/icons/app-stores.d.ts +1 -0
- package/dist/icons/app-stores.js +1 -0
- package/dist/icons/currency.d.ts +1 -0
- package/dist/icons/currency.js +1 -0
- package/dist/icons/flag.d.ts +1 -0
- package/dist/icons/flag.js +1 -0
- package/dist/icons/illustrative.d.ts +1 -0
- package/dist/icons/illustrative.js +1 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +4 -0
- package/dist/icons/markets.d.ts +1 -0
- package/dist/icons/markets.js +1 -0
- package/dist/icons/social.d.ts +1 -0
- package/dist/icons/social.js +1 -0
- package/dist/icons/system.d.ts +1 -0
- package/dist/icons/system.js +1 -0
- package/dist/icons/trade.d.ts +1 -0
- package/dist/icons/trade.js +1 -0
- package/dist/marketing.css +10 -0
- package/package.json +44 -2
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# SubdomainNavbar
|
|
4
4
|
|
|
5
|
+
The top bar for a subdomain such as docs or a product surface.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
The bar across the top of a subdomain — a documentation site, a playground, a product surface that lives beside the marketing site rather than inside it. Three regions in one line: the mark and what the product is called, the places that subdomain has, and what a reader reaches for at the far end.
|
|
6
10
|
|
|
7
11
|
It is the plain sibling of Navbar, and the difference is a decision rather than an omission. A marketing bar gathers into a pill as the page moves, because a marketing page is a thing a reader travels down and the bar is asking to stay with them. A subdomain is somewhere a reader works: they are not being sold anything, the chrome should stop asking for attention, and a bar that rearranged itself while somebody read documentation would be motion answering nothing. So this one is flat, and stays exactly where it was put.
|
|
@@ -322,7 +326,7 @@ What a reader reaches for rather than navigates to. A real bar carries several o
|
|
|
322
326
|
```tsx
|
|
323
327
|
import { Button, ButtonIcon, SubdomainNavbar } from '@deriv-com/dds-marketing'
|
|
324
328
|
import { DerivCoralWordmark } from '@deriv-com/quill-logos-web'
|
|
325
|
-
import { GlobeRegularIcon } from '@deriv-com/
|
|
329
|
+
import { GlobeRegularIcon } from '@deriv-com/dds-marketing/icons'
|
|
326
330
|
|
|
327
331
|
// What the subdomain wants pressed
|
|
328
332
|
<SubdomainNavbar label="Main" menuLabel="Menu" closeLabel="Close" brand={<DerivCoralWordmark />} utilities={<Button size="md" href="/dashboard">Dashboard</Button>}>{navbaritems}</SubdomainNavbar>
|
package/.llm/components/tab.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# Tab
|
|
4
4
|
|
|
5
|
+
One option in a TabList.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
One item in a strip, naming a version of what the page is already about. It cannot stand on its own: selected means selected against something, and a tab with no siblings is a heading that highlights.
|
|
6
10
|
|
|
7
11
|
It is a control and not a link. Pressing it changes which slice of this page is showing — it does not go anywhere, there is no route behind it, and nothing about the page is different afterwards except which of two comparable things the reader is looking at. That is the whole difference from Product's Tab, which names a facet of a view an app holds state for.
|
|
@@ -257,7 +261,7 @@ Solid when current, regular otherwise — the package rule, and the call site’
|
|
|
257
261
|
|
|
258
262
|
```tsx
|
|
259
263
|
import { Tab } from '@deriv-com/dds-marketing'
|
|
260
|
-
import { ChartCandlestickRegularIcon, GlobeSolidIcon } from '@deriv-com/
|
|
264
|
+
import { ChartCandlestickRegularIcon, GlobeSolidIcon } from '@deriv-com/dds-marketing/icons'
|
|
261
265
|
|
|
262
266
|
// Current — solid
|
|
263
267
|
<Tab value="web" label="Web" selected icon={<GlobeSolidIcon />} />
|
|
@@ -286,7 +290,7 @@ One mark at most, after the name. `content` names which kind it is, so a node le
|
|
|
286
290
|
|
|
287
291
|
```tsx
|
|
288
292
|
import { Badge, Tab } from '@deriv-com/dds-marketing'
|
|
289
|
-
import { ArrowUpRightRegularIcon } from '@deriv-com/
|
|
293
|
+
import { ArrowUpRightRegularIcon } from '@deriv-com/dds-marketing/icons'
|
|
290
294
|
|
|
291
295
|
// A badge — arguing for the tab that is not current
|
|
292
296
|
<Tab value="yearly" label="Yearly" content="badge" badge={<Badge label="Save 20%" />} />
|
package/.llm/components/table.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# Table
|
|
4
4
|
|
|
5
|
+
Shows structured data in rows and columns.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
Structured data in rows and columns, where every row has the same shape. It owns what the whole table shares — a row's air, the rule between rows, how the columns take their widths — and none of what a cell holds, which is the page's to compose.
|
|
6
10
|
|
|
7
11
|
It remembers nothing. Which column is sorted outlives a render, so it arrives as a hook beside this component; the toolbar above and the footer beneath are the page's too, on the same surface. None of the three is a prop, and a table that grew one would hold a second copy of what the page already has.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TableBody
|
|
4
4
|
|
|
5
|
+
The data rows of a Table.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
The rows of data, under the header. It is where the table's rules reach the rows: a line belongs between two data rows and nowhere else, so the section that holds only data is the one that hands them out.
|
|
6
10
|
|
|
7
11
|
## Use when
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TableCell
|
|
4
4
|
|
|
5
|
+
One value in a table row.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
One value in a row, under the column that names it. It is a slot: what goes in is the page's to compose, which is what lets a cell hold a badge, a link or a control rather than only text. What it decides is where the value sits in the column and whether its digits line up with the ones above and below.
|
|
6
10
|
|
|
7
11
|
## Use when
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TableHead
|
|
4
4
|
|
|
5
|
+
The header rows of a Table.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
The column names, above the data, and the filter row where there is one. It exists as a component rather than a wrapper because a screen reader announces a column's header before every value under it — which is the whole of how a reader knows what a number means without looking it up — and that only happens if the header is marked up as one rather than styled to look like one.
|
|
6
10
|
|
|
7
11
|
A second row is allowed and a third is not. The second is the filter row: one control per column, sitting under the name of the column it narrows, which is the whole reason it is in here rather than in a toolbar above the table — a toolbar has to say which column each control acts on, and a row under the names has already said it. It gives up the inset above it, so the controls sit under the names rather than a gap of two insets away — the head is one thing, and each of its rows carrying its own air made it read as two. It is cells rather than header cells, because a control is not the name of a column and a screen reader announcing it as one would read a search box out before every value beneath it.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TableHeaderCell
|
|
4
4
|
|
|
5
|
+
The name of one table column.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
The name of a column, announced before every value under it. That is the whole of why it is a component rather than a styled cell: a screen reader reads the header before each cell in the column, which is how a reader knows what a number means without looking it up — and it only happens if the header is a header in the markup.
|
|
6
10
|
|
|
7
11
|
Where the column can be sorted, the header holds the control that sorts it. A button rather than a click handler on the cell, because sorting is an action: it has to be reachable by keyboard, announced as pressable, and able to say which way the column is currently ordered.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TableRow
|
|
4
4
|
|
|
5
|
+
One row of a Table.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
One row of a table: the cells that answer the same questions in the same order as every other row. It owns the rule under it and whether it reads as picked, and nothing about what any cell holds.
|
|
6
10
|
|
|
7
11
|
Being picked is drawn here rather than on the checkbox that sets it, because selection is a fact about the row: a reader scanning a table needs to see which rows are in the set without checking every box in the first column.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TabList
|
|
4
4
|
|
|
5
|
+
Switches between views of the same content.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
A strip of comparable versions of one thing, one of them showing at a time. What it says is that these are the same offer seen differently — a billing period, a platform, a market class — rather than places the site has. Two at least: selected means selected against something, and a strip of one is a heading that highlights.
|
|
6
10
|
|
|
7
11
|
It holds which tab is current and nothing else. The content each tab reveals belongs to the page, because a marketing page already has all of it written and the strip is only deciding which slice shows. That is why there is no panel here and no ARIA tab role: role="tab" is a promise about a tabpanel this component cannot see, and a promise it cannot keep is worse than the group it actually is.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TeamGrid
|
|
4
4
|
|
|
5
|
+
A grid of the people behind a company, with photo, name and role.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
A section that sets out the people behind a company: a heading, and a grid of people under it — each a square photograph, their name, what they do and, where they have one, a link to a profile of theirs elsewhere. The first few show at once, and a button under the grid shows the rest and hides them again.
|
|
6
10
|
|
|
7
11
|
One column on a phone, two from the fold and four at full width, so the first four people are one row on a desktop and the button under that row is what makes the list longer.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TestimonialRow
|
|
4
4
|
|
|
5
|
+
An overall rating over a scrollable row of customer reviews.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
A section that lets a review service's numbers back the page: a heading with the overall rating under it — and a way to where the reviews were collected — over a row of rated reviews the reader moves along, each a short review under its star rating with the reviewer's name, and two arrows under the row that step it a card at a time. Several are in view at once and nothing moves on its own.
|
|
6
10
|
|
|
7
11
|
The reference design's Testimonial in its review-row form. It names no review platform: the score, its wording and where it links are the page's, so the same section serves whichever service the reviews came from.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TestimonialSlider
|
|
4
4
|
|
|
5
|
+
Customer quotes shown one at a time, each with who said it.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
A section that lets the people who use the product say what it did for them: a heading over one quote at a time, in a card, with the name of who said it. Two or more quotes rotate in place — one in view, the next fading in where it stood — and dots show where the reader is and move to any quote pressed.
|
|
6
10
|
|
|
7
11
|
The reference design's Testimonial in its quote form. Its review-row form — rated reviews collected by a review service — is TestimonialRow.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TextArea
|
|
4
4
|
|
|
5
|
+
A field for a longer message, such as on a contact form.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
A field for what a visitor wants to say in their own words — the message on a contact form, the 'tell us about your project' on an enquiry, the reason someone is applying to partner. One value still, like TextInput, but a value with no shape the page can guess at.
|
|
6
10
|
|
|
7
11
|
That is the whole reason it is not TextInput with a taller box. A single line shows a reader a sliver of what they wrote and no way to read it back, and the one place they most want to check themselves is the paragraph they are about to send a stranger. So it grows as they type, up to a limit, and past that limit it scrolls rather than pushing the submit button off the screen.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TextInput
|
|
4
4
|
|
|
5
|
+
A single-line text field.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
One line of text a visitor types before they are a customer. A marketing page asks for very little and has no standing to ask for more: an email for a newsletter, a name and a message on a contact form, a work address to book a demo. Every one of those is a stranger deciding whether the thing on offer is worth handing something over for, and the field is where that decision gets made or lost.
|
|
6
10
|
|
|
7
11
|
That is the whole difference from a field in an application, and it is why this is not Product's TextInput with fewer props. An app's field is filled by someone who has already signed up, inside a task they have committed to, and can afford to ask for an account number in a particular format. A landing page's field is filled by someone with no account, no stake, and a back button — so it asks for one thing, says what it will do with it, and is legible enough at a glance that nobody has to work out what goes in it.
|
|
@@ -438,7 +442,7 @@ Ornaments and furniture, none of which is the label. A glyph names nothing and a
|
|
|
438
442
|
|
|
439
443
|
```tsx
|
|
440
444
|
import { TextInput } from '@deriv-com/dds-marketing'
|
|
441
|
-
import { EnvelopeRegularIcon, LockRegularIcon } from '@deriv-com/
|
|
445
|
+
import { EnvelopeRegularIcon, LockRegularIcon } from '@deriv-com/dds-marketing/icons'
|
|
442
446
|
|
|
443
447
|
// prefix — a head you should not have to type
|
|
444
448
|
<TextInput label="Website" type="url" prefix="https://" placeholder="example.com" />
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TextScroll
|
|
4
4
|
|
|
5
|
+
One large statement whose words brighten as the reader scrolls.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
A full-width section holding one large statement — a mission, a brand message — whose words brighten one after another as the reader scrolls past, from dimmed to full strength, so the sentence is read at the pace the page is moved.
|
|
6
10
|
|
|
7
11
|
The reference design's TextScroll. The reveal is scrubbed by the scroll itself rather than timed: each word runs down the section's own view timeline a step behind the one before it, forward as the reader scrolls down and back again as they scroll up, and stands still while the page does. The sentence is in the page's first HTML as one paragraph of real words and spaces, so a reader with no script, a browser with no scroll timeline and a reader who asked for less movement all get the whole statement at full strength from the start; the dim is only ever something the scroll applies.
|
package/.llm/components/tiers.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# Tiers
|
|
4
4
|
|
|
5
|
+
A row of partnership tiers, each with what it offers and how to reach it.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
A partnership-tier section: a centred heading over an ordered row of tiers, each a medal, a name and the stage it stands for, a card stating what the tier gives, and the bar a partner clears to reach it — with an optional way on under the row.
|
|
6
10
|
|
|
7
11
|
It shows how rewards grow with performance, Bronze to Platinum, and the order is the argument: each tier is a step up from the one before it. The tiers are a real ordered list, so the count and each tier's place reach a screen reader too. At full width they share one row and a rule runs through the medals, joining them into one track; below that they fall to two columns and then one, where each tier's words start at the edge.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# Typography
|
|
4
4
|
|
|
5
|
+
Sets text in one of the type roles.
|
|
6
|
+
|
|
7
|
+
## Why it is built this way
|
|
8
|
+
|
|
5
9
|
Copy, set in one of the page's type roles. It is the component that finally separates what a line of text is in the document from how large it is drawn — `as` says the first and `variant` says the second, and neither implies the other.
|
|
6
10
|
|
|
7
11
|
That separation is the whole reason it exists. Every heading role in this package carries the same sentence — a size, not an instruction — because a page that wants a hero-sized line reaches for h1 and gets an <h1>, and the second one on the page is a document with two top-level headings. Here the scale is a prop and the element is a different prop, so a section heading set at hero scale is `as="h2" variant="h1"` and says exactly that.
|
package/.llm/digest/accordion.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# AspectRatio
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Holds its content to a fixed shape and reserves the space before it loads
|
|
6
6
|
|
|
7
7
|
`import { AspectRatio } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
package/.llm/digest/awards.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Awards
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Lists the industry awards a company has won, each framed between two laurels
|
|
6
6
|
|
|
7
7
|
`import { Awards } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Background
|
|
4
4
|
|
|
5
|
-
A ground a section
|
|
5
|
+
A patterned ground for a section to sit on
|
|
6
6
|
|
|
7
7
|
`import { Background } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
package/.llm/digest/badge.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Breadcrumb
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Shows where the current page sits in the site, with links back up
|
|
6
6
|
|
|
7
7
|
`import { Breadcrumb } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# BreadcrumbItem
|
|
4
4
|
|
|
5
|
-
One level in a Breadcrumb
|
|
5
|
+
One level in a Breadcrumb
|
|
6
6
|
|
|
7
7
|
`import { BreadcrumbItem } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
package/.llm/digest/button.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Button
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Triggers the one action a section asks for, such as signing up
|
|
6
6
|
|
|
7
7
|
`import { Button } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
package/.llm/digest/card.md
CHANGED
package/.llm/digest/cardbody.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# CardBody
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The content area of a Card, holding its text and picture
|
|
6
6
|
|
|
7
7
|
`import { CardBody } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
package/.llm/digest/checkbox.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# ComparisonCards
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Sets two to four options side by side as cards, so readers compare them row by row
|
|
6
6
|
|
|
7
7
|
`import { ComparisonCards } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# ComparisonTable
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Compares a short, fixed set of options in a table
|
|
6
6
|
|
|
7
7
|
`import { ComparisonTable } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
package/.llm/digest/ctabanner.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# CtaBanner
|
|
4
4
|
|
|
5
|
-
A full-bleed
|
|
5
|
+
A full-bleed band with one short promotion and the action it asks for
|
|
6
6
|
|
|
7
7
|
`import { CtaBanner } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# CtaBannerSlider
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A full-bleed promotional band that rotates between two or three offers
|
|
6
6
|
|
|
7
7
|
`import { CtaBannerSlider } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
package/.llm/digest/datatable.md
CHANGED
package/.llm/digest/divider.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Divider
|
|
4
4
|
|
|
5
|
-
A rule
|
|
5
|
+
A rule that separates one group of content from another
|
|
6
6
|
|
|
7
7
|
`import { Divider } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# DownloadBanner
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Promotes the app with a heading and links to each app store
|
|
6
6
|
|
|
7
7
|
`import { DownloadBanner } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# DropdownMenu
|
|
4
4
|
|
|
5
|
-
A button that opens a short
|
|
5
|
+
A button that opens a short list of links
|
|
6
6
|
|
|
7
7
|
`import { DropdownMenu } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!-- GENERATED from estimator.contract.json. Do not edit. -->
|
|
2
|
+
|
|
3
|
+
# Estimator
|
|
4
|
+
|
|
5
|
+
Sets the page's own fields beside the figures worked out from them: a trading calculator, a converter, an income estimate
|
|
6
|
+
|
|
7
|
+
`import { Estimator } from '@deriv-com/dds-marketing'`
|
|
8
|
+
|
|
9
|
+
## Reach for it when
|
|
10
|
+
|
|
11
|
+
- A page lets a reader work something out before they act — a margin, a pip value, a swap charge, a conversion, an income estimate
|
|
12
|
+
- The figures change as the reader types or picks, and should be announced as they do
|
|
13
|
+
- The same tool appears on several pages in several forms — the margin, pip and swap calculators are one layout with different fields and figures
|
|
14
|
+
|
|
15
|
+
## Something else, when
|
|
16
|
+
|
|
17
|
+
- The figures are fixed facts rather than the result of anything the reader enters → **Stats**
|
|
18
|
+
- Options are compared side by side rather than worked out from an input → **ComparisonCards**
|
|
19
|
+
- The tool is a form that sends something — a sign-up, a contact request → **FeatureSplit**
|
|
20
|
+
|
|
21
|
+
## Never
|
|
22
|
+
|
|
23
|
+
- Fetching or calculating anything. The block has no data source and no formula: a page that wants live prices or a margin computes them and passes the figures in, so the block stays the same on every page and in every test
|
|
24
|
+
- A form that submits. Nothing here is sent anywhere; the way onward is a link or a button to the page that does the real thing
|
|
25
|
+
- A table of many figures. Past six or so results the panel stops being an answer and becomes a listing, which is what DataTable is for
|
|
26
|
+
|
|
27
|
+
## Props
|
|
28
|
+
|
|
29
|
+
- **ground** `enum` · default "page" — Which of the page's three grounds this section paints. A marketing page is white, and a band that wants to be seen as a band takes one of the other two — so this is how a page builds its rhythm: white, white, grey, white, dark. …
|
|
30
|
+
- `page` — The default, and the page's own white. A section that has nothing to separate itself from what is above it — most of them — and the ground a reader is already on
|
|
31
|
+
- `subtle` — A quiet step off the page, for a band that wants to read as its own section without changing the page's voice. The one to reach for first when two sections need telling apart. …
|
|
32
|
+
- `strong` — `color.bg.brand-strong`, the dark band. It stops the page rather than dividing it, so it is for a section a reader should arrive at — and one per page is usually one more than enough
|
|
33
|
+
- never: Marking importance. Every section on a page painted dark is a page with no emphasis left, and a reader stops reading the grounds as meaning anything. Alternating for its own sake is the same mistake more slowly. And never the brand's own coral, `color.bg.brand`, which is not offered here. …
|
|
34
|
+
- **layout** `enum` · default "stacked" — How the heading and the tool share the section at full width. On a phone both are one column whichever is chosen: the heading, then the card, the inputs above the results
|
|
35
|
+
- `stacked` — The default. The heading centred above a wide card, the inputs beside the results — a calculator with several fields and several figures, where the two panels each need room
|
|
36
|
+
- `split` — The heading and a few lines beside the card, the inputs above the results inside it — a compact tool a page introduces in its own words, a converter or a single estimate
|
|
37
|
+
- never: Varying between two tools on one page. Pick the layout the tool's size calls for, and the page reads as one system
|
|
38
|
+
- **title** `string` · required — Always. What the tool works out, in a few words — 'Trading calculator', 'Buy crypto in seconds', 'Estimate your earnings'
|
|
39
|
+
- never: Instructions. How to use the tool is the fields' own labels, not the heading
|
|
40
|
+
- **description** `string` · optional — A line or two under the title saying what the figures are for or where they come from — 'Live prices, updated every few seconds'
|
|
41
|
+
- never: A disclaimer the results depend on. That is a result's `note`, read beside the figure it qualifies
|
|
42
|
+
- **inputsLabel** `string` · optional — A heading over the inputs panel, where the two panels need naming — 'Calculator' over the fields and 'Results' over the figures. Leave both out for a tool whose fields name themselves
|
|
43
|
+
- never: One panel only. Name both or neither
|
|
44
|
+
- **inputs** `node` · required — Always. The fields the reader fills in — Select, TextInput, SearchInput, SegmentedControl, a slider — in the order they are filled. The page owns their values and works the results out from them
|
|
45
|
+
- never: A submit button. The results update as the fields change; the way onward is `action`
|
|
46
|
+
- **inputActions** `node` · optional — A tool that works its figures out when asked rather than as the reader types — a calculation too slow or too costly to run on every keystroke, or one where half-filled fields would show figures that mislead. …
|
|
47
|
+
- never: A tool whose figures already follow the fields. A button that does what typing already did is a step the reader has to find and press for nothing
|
|
48
|
+
- **onCalculate** `callback` · optional — Whenever inputActions holds a Calculate button: Enter in any of the fields calls it, as the button's own press does — wire the button's onClick to the same function. …
|
|
49
|
+
- never: Sending anything. The form never leaves the page; a tool that submits to a server is a form section, not this
|
|
50
|
+
- **resultsLabel** `string` · optional — A heading over the results panel, with inputsLabel — 'Results', 'You receive'
|
|
51
|
+
- never: One panel only. Name both or neither
|
|
52
|
+
- **results** `data` · required — The figures the inputs produce, in reading order — a `label`, a `value` written exactly as it is to be read, and an optional `note`. Pass an empty list until the inputs are complete, and the panel shows `emptyMessage` instead. …
|
|
53
|
+
- never: A value the page has not worked out. Pass nothing rather than a placeholder figure: a wrong number on a trading page is worse than none
|
|
54
|
+
- **emptyMessage** `string` · optional — What the results panel says before there are figures to show — 'Choose an instrument to see the results'. Translate it with the page
|
|
55
|
+
- never: An error. A failed feed is the page's to say, in a result's note or its own message
|
|
56
|
+
- **action** `node` · optional — The one thing a reader does once they have their figures — 'Open an account', 'Trade now', 'Become a partner'. Under the results, where the reader's eye already is
|
|
57
|
+
- never: More than one action. One tool, one next step
|
|
58
|
+
|
|
59
|
+
## Inside it
|
|
60
|
+
|
|
61
|
+
- 9 components are refused inside it; the list and the reasons are in the long document.
|
|
62
|
+
- Renders 19 parts: root, inner, header, title, description, tool, panels, inputs, inputs-label, results, results-label, list, result, result-label, result-value, result-note, empty, action, input-actions.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
The reasoning behind each of these, the parts this renders, its states and snippets that compile: `.llm/components/estimator.md`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# FeatureCards
|
|
4
4
|
|
|
5
|
-
A
|
|
5
|
+
A heading over a grid of feature cards
|
|
6
6
|
|
|
7
7
|
`import { FeatureCards } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# FeatureCardsCarousel
|
|
4
4
|
|
|
5
|
-
A
|
|
5
|
+
A heading over a row of feature cards the reader scrolls through
|
|
6
6
|
|
|
7
7
|
`import { FeatureCardsCarousel } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# FeatureScroll
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Gives each feature a screen of its own, with its picture pinned beside the text
|
|
6
6
|
|
|
7
7
|
`import { FeatureScroll } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# FeatureStack
|
|
4
4
|
|
|
5
|
-
A
|
|
5
|
+
A heading and supporting line above a large illustration
|
|
6
6
|
|
|
7
7
|
`import { FeatureStack } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|