@deriv-com/dds-marketing 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.llm/components/accordion.md +10 -0
- package/.llm/components/accordionitem.md +10 -0
- package/.llm/components/aspectratio.md +10 -0
- package/.llm/components/awards.md +10 -0
- package/.llm/components/background.md +52 -9
- package/.llm/components/badge.md +13 -3
- package/.llm/components/bottomsheet.md +13 -3
- package/.llm/components/breadcrumb.md +10 -0
- package/.llm/components/breadcrumbitem.md +10 -0
- package/.llm/components/button.md +13 -3
- package/.llm/components/buttonicon.md +17 -7
- package/.llm/components/card.md +11 -1
- package/.llm/components/cardbody.md +12 -2
- package/.llm/components/cardbutton.md +10 -0
- package/.llm/components/checkbox.md +7 -1
- package/.llm/components/comparisoncards.md +13 -3
- package/.llm/components/comparisontable.md +10 -0
- package/.llm/components/ctabanner.md +10 -0
- package/.llm/components/ctabannerslider.md +10 -0
- package/.llm/components/datatable.md +10 -0
- package/.llm/components/divider.md +10 -0
- package/.llm/components/documentlink.md +237 -0
- package/.llm/components/documents.md +268 -0
- package/.llm/components/downloadbanner.md +11 -1
- package/.llm/components/dropdownmenu.md +15 -5
- package/.llm/components/estimator.md +342 -0
- package/.llm/components/faqaccordion.md +10 -0
- package/.llm/components/featurebullets.md +10 -0
- package/.llm/components/featurecards.md +47 -3
- package/.llm/components/featurecardscarousel.md +11 -1
- package/.llm/components/featurescroll.md +10 -0
- package/.llm/components/featuresplit.md +10 -0
- package/.llm/components/featurestack.md +10 -0
- package/.llm/components/featuretabs.md +369 -0
- package/.llm/components/filterchip.md +11 -1
- package/.llm/components/footer.md +10 -0
- package/.llm/components/footergroup.md +10 -0
- package/.llm/components/grid.md +34 -1
- package/.llm/components/icon.md +15 -5
- package/.llm/components/illustrationcard.md +56 -2
- package/.llm/components/illustrationcheck.md +193 -0
- package/.llm/components/illustrationchoice.md +187 -0
- package/.llm/components/illustrationcode.md +192 -0
- package/.llm/components/illustrationlist.md +175 -0
- package/.llm/components/illustrationscene.md +33 -3
- package/.llm/components/imagebanner.md +35 -6
- package/.llm/components/landinghero.md +10 -0
- package/.llm/components/link.md +12 -2
- package/.llm/components/logocolumns.md +11 -1
- package/.llm/components/logorows.md +46 -2
- package/.llm/components/menuitem.md +12 -2
- package/.llm/components/navbar.md +11 -1
- package/.llm/components/navbaritem.md +10 -0
- package/.llm/components/navbarmenu.md +10 -0
- package/.llm/components/navbarmenugroup.md +10 -0
- package/.llm/components/navbarpanel.md +10 -0
- package/.llm/components/navbarswitcher.md +16 -6
- package/.llm/components/navbarswitcheroption.md +10 -0
- package/.llm/components/option.md +11 -1
- package/.llm/components/pageheader.md +10 -0
- package/.llm/components/pagination.md +10 -0
- package/.llm/components/paginationdots.md +10 -0
- package/.llm/components/producthero.md +33 -4
- package/.llm/components/progressbar.md +305 -0
- package/.llm/components/removablechip.md +11 -1
- package/.llm/components/resourcebanner.md +10 -0
- package/.llm/components/row.md +10 -0
- package/.llm/components/scenescroll.md +42 -24
- package/.llm/components/scenescrollword.md +267 -0
- package/.llm/components/scroller.md +10 -0
- package/.llm/components/searchinput.md +10 -0
- package/.llm/components/segmentedcontrol.md +33 -2
- package/.llm/components/segmentedcontrolitem.md +12 -2
- package/.llm/components/select.md +10 -0
- package/.llm/components/selectchip.md +10 -0
- package/.llm/components/spinner.md +10 -0
- package/.llm/components/stack.md +10 -0
- package/.llm/components/stats.md +50 -1
- package/.llm/components/statscarousel.md +227 -0
- package/.llm/components/statusdot.md +45 -1
- package/.llm/components/steps.md +10 -0
- package/.llm/components/stickycards.md +10 -0
- package/.llm/components/subdomainnavbar.md +11 -1
- package/.llm/components/tab.md +12 -2
- package/.llm/components/table.md +10 -0
- package/.llm/components/tablebody.md +10 -0
- package/.llm/components/tablecell.md +10 -0
- package/.llm/components/tablehead.md +10 -0
- package/.llm/components/tableheadercell.md +10 -0
- package/.llm/components/tablerow.md +10 -0
- package/.llm/components/tablist.md +10 -0
- package/.llm/components/teamgrid.md +10 -0
- package/.llm/components/testimonialrow.md +47 -3
- package/.llm/components/testimonialslider.md +12 -2
- package/.llm/components/textarea.md +10 -0
- package/.llm/components/textinput.md +11 -1
- package/.llm/components/textscroll.md +10 -0
- package/.llm/components/tiers.md +17 -7
- package/.llm/components/tooltip.md +6 -0
- package/.llm/components/typography.md +67 -1
- 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 +14 -6
- 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 +2 -2
- package/.llm/digest/buttonicon.md +2 -2
- 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/documentlink.md +52 -0
- package/.llm/digest/documents.md +51 -0
- package/.llm/digest/downloadbanner.md +2 -2
- 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 +8 -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/featuretabs.md +50 -0
- 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 +2 -1
- package/.llm/digest/icon.md +1 -1
- package/.llm/digest/illustrationcard.md +7 -2
- package/.llm/digest/illustrationcheck.md +42 -0
- package/.llm/digest/illustrationchoice.md +43 -0
- package/.llm/digest/illustrationcode.md +41 -0
- package/.llm/digest/illustrationlist.md +38 -0
- package/.llm/digest/illustrationscene.md +5 -3
- package/.llm/digest/imagebanner.md +11 -5
- package/.llm/digest/landinghero.md +1 -1
- package/.llm/digest/link.md +1 -1
- package/.llm/digest/logocolumns.md +2 -2
- package/.llm/digest/logorows.md +9 -2
- 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 +9 -3
- package/.llm/digest/progressbar.md +56 -0
- 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 +7 -6
- package/.llm/digest/scenescrollword.md +56 -0
- package/.llm/digest/scroller.md +1 -1
- package/.llm/digest/searchinput.md +1 -1
- package/.llm/digest/segmentedcontrol.md +4 -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 +9 -1
- package/.llm/digest/statscarousel.md +48 -0
- package/.llm/digest/statusdot.md +8 -1
- package/.llm/digest/steps.md +1 -1
- 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 +9 -2
- package/.llm/digest/testimonialslider.md +2 -2
- 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 +19 -1
- package/.llm/index.md +15 -4
- package/.llm/rules.md +10 -0
- package/.llm/tokens.md +13 -3
- package/AGENTS.md +14 -2
- package/README.md +28 -3
- package/dist/components/arrival.d.ts +32 -0
- package/dist/components/arrival.js +140 -0
- package/dist/components/arrives.d.ts +17 -0
- package/dist/components/arrives.js +14 -0
- package/dist/components/blocks/awards/Awards.js +2 -27
- package/dist/components/blocks/block-pattern.css +23 -0
- package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +29 -12
- package/dist/components/blocks/documents/Documents.css +90 -0
- package/dist/components/blocks/documents/Documents.d.ts +22 -0
- package/dist/components/blocks/documents/Documents.js +30 -0
- package/dist/components/blocks/documents/Documents.types.d.ts +37 -0
- package/dist/components/blocks/documents/Documents.types.js +14 -0
- package/dist/components/blocks/documents/documents-impl.css +103 -0
- package/dist/components/blocks/download-banner/DownloadBanner.css +1 -1
- package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +1 -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-cards/FeatureCards.d.ts +2 -1
- package/dist/components/blocks/feature-cards/FeatureCards.js +10 -7
- package/dist/components/blocks/feature-cards/FeatureCards.types.d.ts +9 -1
- package/dist/components/blocks/feature-cards/feature-cards-impl.css +15 -3
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +1 -1
- package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +12 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.css +100 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.d.ts +23 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.js +38 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.types.d.ts +35 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.types.js +14 -0
- package/dist/components/blocks/feature-tabs/feature-tabs-impl.css +53 -0
- package/dist/components/blocks/image-banner/ImageBanner.css +1 -1
- package/dist/components/blocks/image-banner/ImageBanner.d.ts +2 -1
- package/dist/components/blocks/image-banner/ImageBanner.js +3 -2
- package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +10 -8
- package/dist/components/blocks/image-banner/ImageBanner.types.js +1 -1
- package/dist/components/blocks/image-banner/image-banner-impl.css +78 -71
- package/dist/components/blocks/laurel.d.ts +16 -0
- package/dist/components/blocks/laurel.js +28 -0
- package/dist/components/blocks/logo-columns/LogoColumns.css +1 -1
- package/dist/components/blocks/logo-columns/LogoColumns.types.d.ts +1 -1
- package/dist/components/blocks/logo-rows/LogoRows.css +1 -1
- package/dist/components/blocks/logo-rows/LogoRows.d.ts +2 -1
- package/dist/components/blocks/logo-rows/LogoRows.js +7 -4
- package/dist/components/blocks/logo-rows/LogoRows.types.d.ts +9 -1
- package/dist/components/blocks/pattern-tone.d.ts +11 -0
- package/dist/components/blocks/pattern-tone.js +7 -0
- package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
- package/dist/components/blocks/product-hero/ProductHero.js +2 -2
- package/dist/components/blocks/product-hero/ProductHero.types.d.ts +8 -3
- package/dist/components/blocks/product-hero/ProductHero.types.js +1 -1
- package/dist/components/blocks/product-hero/product-hero-impl.css +54 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.css +1 -1
- package/dist/components/blocks/scene-scroll/SceneScroll.css +1 -1
- package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +6 -5
- package/dist/components/blocks/scene-scroll/SceneScroll.js +8 -7
- package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +5 -5
- package/dist/components/blocks/scene-scroll/SceneScroll.types.js +1 -1
- package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +61 -44
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.css +105 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.d.ts +31 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.js +67 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.types.d.ts +39 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.types.js +18 -0
- package/dist/components/blocks/scene-scroll-word/scene-scroll-word-impl.css +370 -0
- package/dist/components/blocks/stats/Stats.d.ts +2 -1
- package/dist/components/blocks/stats/Stats.js +17 -14
- package/dist/components/blocks/stats/Stats.types.d.ts +8 -0
- package/dist/components/blocks/stats/stats-impl.css +4 -1
- package/dist/components/blocks/stats/use-wheel.d.ts +1 -1
- package/dist/components/blocks/stats/use-wheel.js +8 -4
- package/dist/components/blocks/stats-carousel/StatsCarousel.css +209 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.d.ts +20 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.js +48 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.types.d.ts +43 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.types.js +23 -0
- package/dist/components/blocks/stats-carousel/stats-carousel-impl.css +233 -0
- package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +8 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -1
- package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +2 -1
- package/dist/components/blocks/testimonial-row/TestimonialRow.js +16 -13
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +9 -1
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -1
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +1 -1
- package/dist/components/blocks/tiers/Tiers.types.d.ts +1 -1
- package/dist/components/core/background/Background.css +19 -0
- package/dist/components/core/background/Background.types.d.ts +2 -1
- package/dist/components/core/background/background-impl.css +47 -15
- package/dist/components/core/background/halftone.js +1 -1
- package/dist/components/core/button/Button.css +5 -5
- package/dist/components/core/button-icon/ButtonIcon.types.d.ts +1 -1
- package/dist/components/core/card-body/CardBody.css +5 -0
- package/dist/components/core/card-body/CardBody.types.d.ts +1 -1
- package/dist/components/core/document-link/DocumentLink.css +59 -0
- package/dist/components/core/document-link/DocumentLink.d.ts +19 -0
- package/dist/components/core/document-link/DocumentLink.js +21 -0
- package/dist/components/core/document-link/DocumentLink.types.d.ts +41 -0
- package/dist/components/core/document-link/DocumentLink.types.js +11 -0
- package/dist/components/core/document-link/document-link-impl.css +23 -0
- package/dist/components/core/illustration-card/IllustrationCard.css +7 -0
- package/dist/components/core/illustration-card/IllustrationCard.d.ts +5 -1
- package/dist/components/core/illustration-card/IllustrationCard.js +34 -8
- package/dist/components/core/illustration-card/IllustrationCard.types.d.ts +8 -1
- package/dist/components/core/illustration-card/IllustrationCard.types.js +1 -0
- package/dist/components/core/illustration-card/illustration-card-impl.css +113 -0
- package/dist/components/core/illustration-check/IllustrationCheck.css +25 -0
- package/dist/components/core/illustration-check/IllustrationCheck.d.ts +16 -0
- package/dist/components/core/illustration-check/IllustrationCheck.js +22 -0
- package/dist/components/core/illustration-check/IllustrationCheck.types.d.ts +25 -0
- package/dist/components/core/illustration-check/IllustrationCheck.types.js +9 -0
- package/dist/components/core/illustration-check/illustration-check-impl.css +76 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.css +62 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.d.ts +16 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.js +31 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.types.d.ts +25 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.types.js +11 -0
- package/dist/components/core/illustration-choice/illustration-choice-impl.css +103 -0
- package/dist/components/core/illustration-code/IllustrationCode.css +25 -0
- package/dist/components/core/illustration-code/IllustrationCode.d.ts +12 -0
- package/dist/components/core/illustration-code/IllustrationCode.js +20 -0
- package/dist/components/core/illustration-code/IllustrationCode.types.d.ts +23 -0
- package/dist/components/core/illustration-code/IllustrationCode.types.js +8 -0
- package/dist/components/core/illustration-code/illustration-code-impl.css +42 -0
- package/dist/components/core/illustration-list/IllustrationList.css +19 -0
- package/dist/components/core/illustration-list/IllustrationList.d.ts +16 -0
- package/dist/components/core/illustration-list/IllustrationList.js +18 -0
- package/dist/components/core/illustration-list/IllustrationList.types.d.ts +15 -0
- package/dist/components/core/illustration-list/IllustrationList.types.js +6 -0
- package/dist/components/core/illustration-list/illustration-list-impl.css +52 -0
- package/dist/components/core/illustration-scene/IllustrationScene.css +6 -0
- package/dist/components/core/illustration-scene/IllustrationScene.d.ts +3 -2
- package/dist/components/core/illustration-scene/IllustrationScene.js +4 -3
- package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +5 -1
- package/dist/components/core/illustration-scene/IllustrationScene.types.js +2 -1
- package/dist/components/core/illustration-scene/illustration-scene-impl.css +65 -0
- package/dist/components/core/link/link-impl.css +5 -19
- package/dist/components/core/progress-bar/ProgressBar.css +101 -0
- package/dist/components/core/progress-bar/ProgressBar.d.ts +5 -0
- package/dist/components/core/progress-bar/ProgressBar.js +34 -0
- package/dist/components/core/progress-bar/ProgressBar.types.d.ts +52 -0
- package/dist/components/core/progress-bar/ProgressBar.types.js +12 -0
- package/dist/components/core/progress-bar/progress-bar-impl.css +45 -0
- package/dist/components/core/segmented-control/SegmentedControl.d.ts +1 -1
- package/dist/components/core/segmented-control/SegmentedControl.js +13 -5
- package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +5 -1
- package/dist/components/core/segmented-control/segmented-control-impl.css +35 -0
- 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/status-dot/StatusDot.d.ts +1 -1
- package/dist/components/core/status-dot/StatusDot.js +7 -4
- package/dist/components/core/status-dot/StatusDot.types.d.ts +9 -1
- package/dist/components/core/status-dot/status-dot-impl.css +101 -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/core/typography/Typography.d.ts +3 -283
- package/dist/components/core/typography/Typography.js +9 -1
- package/dist/components/core/typography/Typography.types.d.ts +9 -15
- package/dist/components/core/typography/TypographyMotion.d.ts +28 -0
- package/dist/components/core/typography/TypographyMotion.js +43 -0
- package/dist/components/core/typography/typography-impl.css +106 -0
- package/dist/components/estimator-data.d.ts +29 -0
- package/dist/components/estimator-data.js +12 -0
- package/dist/components/illustration-data.d.ts +15 -0
- package/dist/components/illustration-data.js +7 -0
- package/dist/components/index.d.ts +25 -1
- package/dist/components/index.js +22 -0
- package/dist/components/layout/grid/Grid.css +5 -0
- package/dist/components/layout/grid/Grid.types.d.ts +2 -1
- package/dist/components/scene-scroll-data.d.ts +35 -0
- package/dist/components/tiers-data.d.ts +3 -2
- 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 +26 -6
- package/package.json +44 -2
|
@@ -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.
|
|
@@ -51,9 +55,9 @@ Apply these classes from the generated `testimonialSliderParts` constant rather
|
|
|
51
55
|
|
|
52
56
|
- `page` — The default, and the page's own white. The card is the recessed gray that sets it off
|
|
53
57
|
- `subtle` — The grey band, the reference design's ground for this section. The card turns white on it. Painted as the band's tint laid over the page's own ground, so it is the same grey whatever is behind the section
|
|
54
|
-
- `strong` — `color.bg.brand-strong`, the dark band, for a section a reader should arrive at. The heading and the quote turn white and the card takes color.bg.surface-card-strong —
|
|
58
|
+
- `strong` — `color.bg.brand-strong`, the dark band, for a section a reader should arrive at. The heading and the quote turn white and the card takes color.bg.surface-card-strong-on-brand-strong — slate.850 in light and slate.900 in dark, a step above the band in both, a step lighter than the band, and TestimonialRow's card on the same band — so the band reads as a dark-mode section in either theme. The coral dots sit on it
|
|
55
59
|
|
|
56
|
-
Use when: Which of the page's grounds the section paints, and with it the card's fill: the recessed surface on the page, the raised white on the grey band — the reference design's slate testimonial — and the strong card on the dark band,
|
|
60
|
+
Use when: Which of the page's grounds the section paints, and with it the card's fill: the recessed surface on the page, the raised white on the grey band — the reference design's slate testimonial — and the strong card on the dark band, slate.850 in light and slate.900 in dark, a step above the band in both, so the card has an edge on each.
|
|
57
61
|
Never for: Marking importance. Every section on a page painted a ground is a page with no emphasis left.
|
|
58
62
|
|
|
59
63
|
### title — `string` **Required.**
|
|
@@ -131,6 +135,12 @@ What this is not about is every row of controls. A set of filter chips, a pagina
|
|
|
131
135
|
Guidance only — cannot be checked automatically.
|
|
132
136
|
- **Never nest one interactive element inside another** — Nested interactive elements produce ambiguous hit targets and an unreachable inner control for keyboard and screen-reader users. This is why the rule cannot live on any single component — it constrains Button, Link, CardButton and TextInput simultaneously.
|
|
133
137
|
Guidance only — cannot be checked automatically.
|
|
138
|
+
- **A page has at most one patterned band, between its hero and its closing call to action** — A patterned ground — the halftone, the aurora, the mesh, the grid or the rings — is what makes a band the one a reader stops at, and it only works by being the exception. So a page has at most one, placed between its hero and its closing call to action; the hero's and the call to action's own patterns are theirs and do not count, and the band never goes on either of them.
|
|
139
|
+
|
|
140
|
+
The pattern is the band's first layer, under its content and over nothing. A block that can carry one says so with its own `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows — and draws it there; a section built by hand places a Background with nothing in it as its first child. Never wrap a block in a Background: the block paints its own ground over the pattern and hides it.
|
|
141
|
+
|
|
142
|
+
Only a band whose content is stacked can carry one. Every pattern rises from the band's foot, so the band needs a heading over what it introduces, centred, with the foot left open. A band whose content runs side by side — words beside a picture, a split, columns reaching the foot — puts the glow behind the picture or under the words; it stays on its flat ground.
|
|
143
|
+
Guidance only — cannot be checked automatically.
|
|
134
144
|
- **A section that paints a ground sets the ink to go with it** — A page sits on color.bg.page, and a section that separates itself from it takes one of three grounds. color.bg.subtle is the light one and needs nothing further — the page's own ink still reads on it. The other two are dark and do not: color.bg.brand-strong takes color.fg.on-brand-strong, and color.bg.brand takes color.fg.on-solid. Both are white, and both are written as the role rather than the white they resolve to. Set one of those backgrounds without its ink and the text inherits whatever the page was already using, which is near-black on a dark band — legible to nobody, and invisible to every check here, because each pair passes contrast on its own and nothing can tell whether a section used both.
|
|
135
145
|
|
|
136
146
|
color.bg.brand carries a second limit that is not about forgetting. Its ink measures 3.39:1, which clears the 3:1 a heading needs and misses the 4.5:1 running copy needs. A coral band may carry a headline and a call to action; a paragraph on one is text the reader has to work through at a ratio the waiver on that role does not cover — the waiver says so itself. A section with copy in it takes color.bg.brand-strong, which is near-black and carries white at full contrast.
|
|
@@ -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.
|
|
@@ -188,6 +192,12 @@ What this is not about is every row of controls. A set of filter chips, a pagina
|
|
|
188
192
|
Guidance only — cannot be checked automatically.
|
|
189
193
|
- **Never nest one interactive element inside another** — Nested interactive elements produce ambiguous hit targets and an unreachable inner control for keyboard and screen-reader users. This is why the rule cannot live on any single component — it constrains Button, Link, CardButton and TextInput simultaneously.
|
|
190
194
|
Guidance only — cannot be checked automatically.
|
|
195
|
+
- **A page has at most one patterned band, between its hero and its closing call to action** — A patterned ground — the halftone, the aurora, the mesh, the grid or the rings — is what makes a band the one a reader stops at, and it only works by being the exception. So a page has at most one, placed between its hero and its closing call to action; the hero's and the call to action's own patterns are theirs and do not count, and the band never goes on either of them.
|
|
196
|
+
|
|
197
|
+
The pattern is the band's first layer, under its content and over nothing. A block that can carry one says so with its own `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows — and draws it there; a section built by hand places a Background with nothing in it as its first child. Never wrap a block in a Background: the block paints its own ground over the pattern and hides it.
|
|
198
|
+
|
|
199
|
+
Only a band whose content is stacked can carry one. Every pattern rises from the band's foot, so the band needs a heading over what it introduces, centred, with the foot left open. A band whose content runs side by side — words beside a picture, a split, columns reaching the foot — puts the glow behind the picture or under the words; it stays on its flat ground.
|
|
200
|
+
Guidance only — cannot be checked automatically.
|
|
191
201
|
- **A section that paints a ground sets the ink to go with it** — A page sits on color.bg.page, and a section that separates itself from it takes one of three grounds. color.bg.subtle is the light one and needs nothing further — the page's own ink still reads on it. The other two are dark and do not: color.bg.brand-strong takes color.fg.on-brand-strong, and color.bg.brand takes color.fg.on-solid. Both are white, and both are written as the role rather than the white they resolve to. Set one of those backgrounds without its ink and the text inherits whatever the page was already using, which is near-black on a dark band — legible to nobody, and invisible to every check here, because each pair passes contrast on its own and nothing can tell whether a section used both.
|
|
192
202
|
|
|
193
203
|
color.bg.brand carries a second limit that is not about forgetting. Its ink measures 3.39:1, which clears the 3:1 a heading needs and misses the 4.5:1 running copy needs. A coral band may carry a headline and a call to action; a paragraph on one is text the reader has to work through at a ratio the waiver on that role does not cover — the waiver says so itself. A section with copy in it takes color.bg.brand-strong, which is near-black and carries white at full contrast.
|
|
@@ -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.
|
|
@@ -241,6 +245,12 @@ What this is not about is every row of controls. A set of filter chips, a pagina
|
|
|
241
245
|
Guidance only — cannot be checked automatically.
|
|
242
246
|
- **Never nest one interactive element inside another** — Nested interactive elements produce ambiguous hit targets and an unreachable inner control for keyboard and screen-reader users. This is why the rule cannot live on any single component — it constrains Button, Link, CardButton and TextInput simultaneously.
|
|
243
247
|
Guidance only — cannot be checked automatically.
|
|
248
|
+
- **A page has at most one patterned band, between its hero and its closing call to action** — A patterned ground — the halftone, the aurora, the mesh, the grid or the rings — is what makes a band the one a reader stops at, and it only works by being the exception. So a page has at most one, placed between its hero and its closing call to action; the hero's and the call to action's own patterns are theirs and do not count, and the band never goes on either of them.
|
|
249
|
+
|
|
250
|
+
The pattern is the band's first layer, under its content and over nothing. A block that can carry one says so with its own `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows — and draws it there; a section built by hand places a Background with nothing in it as its first child. Never wrap a block in a Background: the block paints its own ground over the pattern and hides it.
|
|
251
|
+
|
|
252
|
+
Only a band whose content is stacked can carry one. Every pattern rises from the band's foot, so the band needs a heading over what it introduces, centred, with the foot left open. A band whose content runs side by side — words beside a picture, a split, columns reaching the foot — puts the glow behind the picture or under the words; it stays on its flat ground.
|
|
253
|
+
Guidance only — cannot be checked automatically.
|
|
244
254
|
- **A section that paints a ground sets the ink to go with it** — A page sits on color.bg.page, and a section that separates itself from it takes one of three grounds. color.bg.subtle is the light one and needs nothing further — the page's own ink still reads on it. The other two are dark and do not: color.bg.brand-strong takes color.fg.on-brand-strong, and color.bg.brand takes color.fg.on-solid. Both are white, and both are written as the role rather than the white they resolve to. Set one of those backgrounds without its ink and the text inherits whatever the page was already using, which is near-black on a dark band — legible to nobody, and invisible to every check here, because each pair passes contrast on its own and nothing can tell whether a section used both.
|
|
245
255
|
|
|
246
256
|
color.bg.brand carries a second limit that is not about forgetting. Its ink measures 3.39:1, which clears the 3:1 a heading needs and misses the 4.5:1 running copy needs. A coral band may carry a headline and a call to action; a paragraph on one is text the reader has to work through at a ratio the waiver on that role does not cover — the waiver says so itself. A section with copy in it takes color.bg.brand-strong, which is near-black and carries white at full contrast.
|
|
@@ -438,7 +448,7 @@ Ornaments and furniture, none of which is the label. A glyph names nothing and a
|
|
|
438
448
|
|
|
439
449
|
```tsx
|
|
440
450
|
import { TextInput } from '@deriv-com/dds-marketing'
|
|
441
|
-
import { EnvelopeRegularIcon, LockRegularIcon } from '@deriv-com/
|
|
451
|
+
import { EnvelopeRegularIcon, LockRegularIcon } from '@deriv-com/dds-marketing/icons'
|
|
442
452
|
|
|
443
453
|
// prefix — a head you should not have to type
|
|
444
454
|
<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.
|
|
@@ -76,6 +80,12 @@ What this is not about is every row of controls. A set of filter chips, a pagina
|
|
|
76
80
|
Guidance only — cannot be checked automatically.
|
|
77
81
|
- **Never nest one interactive element inside another** — Nested interactive elements produce ambiguous hit targets and an unreachable inner control for keyboard and screen-reader users. This is why the rule cannot live on any single component — it constrains Button, Link, CardButton and TextInput simultaneously.
|
|
78
82
|
Guidance only — cannot be checked automatically.
|
|
83
|
+
- **A page has at most one patterned band, between its hero and its closing call to action** — A patterned ground — the halftone, the aurora, the mesh, the grid or the rings — is what makes a band the one a reader stops at, and it only works by being the exception. So a page has at most one, placed between its hero and its closing call to action; the hero's and the call to action's own patterns are theirs and do not count, and the band never goes on either of them.
|
|
84
|
+
|
|
85
|
+
The pattern is the band's first layer, under its content and over nothing. A block that can carry one says so with its own `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows — and draws it there; a section built by hand places a Background with nothing in it as its first child. Never wrap a block in a Background: the block paints its own ground over the pattern and hides it.
|
|
86
|
+
|
|
87
|
+
Only a band whose content is stacked can carry one. Every pattern rises from the band's foot, so the band needs a heading over what it introduces, centred, with the foot left open. A band whose content runs side by side — words beside a picture, a split, columns reaching the foot — puts the glow behind the picture or under the words; it stays on its flat ground.
|
|
88
|
+
Guidance only — cannot be checked automatically.
|
|
79
89
|
- **A section that paints a ground sets the ink to go with it** — A page sits on color.bg.page, and a section that separates itself from it takes one of three grounds. color.bg.subtle is the light one and needs nothing further — the page's own ink still reads on it. The other two are dark and do not: color.bg.brand-strong takes color.fg.on-brand-strong, and color.bg.brand takes color.fg.on-solid. Both are white, and both are written as the role rather than the white they resolve to. Set one of those backgrounds without its ink and the text inherits whatever the page was already using, which is near-black on a dark band — legible to nobody, and invisible to every check here, because each pair passes contrast on its own and nothing can tell whether a section used both.
|
|
80
90
|
|
|
81
91
|
color.bg.brand carries a second limit that is not about forgetting. Its ink measures 3.39:1, which clears the 3:1 a heading needs and misses the 4.5:1 running copy needs. A coral band may carry a headline and a call to action; a paragraph on one is text the reader has to work through at a ratio the waiver on that role does not cover — the waiver says so itself. A section with copy in it takes color.bg.brand-strong, which is near-black and carries white at full contrast.
|
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.
|
|
@@ -44,7 +48,7 @@ Tiers renders 19 elements. A token binding names the part it applies to.
|
|
|
44
48
|
- `benefit` — `<div>`, class `dds-tiers__benefit`. Inside the page's own Card: the card's inset and the benefit's headline and sentence, held together at a card's title-to-description step. The Card grows to the tallest in the row, so the cards end level and the qualifications under them start on one line.
|
|
45
49
|
- `benefit-title` — `<p>`, class `dds-tiers__benefit-title`. What the tier gives, as a headline. A paragraph rather than a heading: the tier's name is the heading, and this is what is under it.
|
|
46
50
|
- `benefit-description` — `<p>`, class `dds-tiers__benefit-description`. What the benefit means, in a sentence.
|
|
47
|
-
- `qualification` — `<p>`, class `dds-tiers__qualification`. What it takes to reach the tier, under its card. A line break in it is kept, so the measure and the amount sit on lines of their own.
|
|
51
|
+
- `qualification` — `<p>`, class `dds-tiers__qualification`. What it takes to reach the tier, under its card. A line break in it is kept, so the measure and the amount sit on lines of their own. Every tier carries one, the entry tier included — what it takes to join — so the row ends on one line under every card.
|
|
48
52
|
- `footer` — `<div>`, class `dds-tiers__footer`. The way on, under the row. At the start on a phone and centred from the fold, under the centred heading. It adds no step of its own: the gap from the tiers is the inner column's, the one between a heading and what it introduces. Rendered only when `link` is set.
|
|
49
53
|
|
|
50
54
|
Apply these classes from the generated `tiersParts` constant rather than writing the strings by hand.
|
|
@@ -79,7 +83,7 @@ Never for: A paragraph, or a summary of every tier. The tiers say what they give
|
|
|
79
83
|
|
|
80
84
|
### tiers — `data` `TiersItem[]` **Required.**
|
|
81
85
|
|
|
82
|
-
Use when: Always. The tiers, lowest first — two to four, four for a partnership programme. Each is a one-word `name`, a one-verb `stage`, a `medal` picture, a `benefit` headline and the sentence under it, and
|
|
86
|
+
Use when: Always. The tiers, lowest first — two to four, four for a partnership programme. Each is a one-word `name`, a one-verb `stage`, a `medal` picture, a `benefit` headline and the sentence under it, and the `qualification` that reaches it, with a line break before the amount — the entry tier's too, saying what it takes to join, so every tier's card has the same line under it. The order of the list is the order of the ladder, so reordering it reorders the tiers.
|
|
83
87
|
Never for: Tiers in any order but lowest to highest. The track through the medals reads start to end, and a ladder drawn out of order is one a reader climbs the wrong way.
|
|
84
88
|
|
|
85
89
|
### link — `node`
|
|
@@ -115,6 +119,12 @@ What this is not about is every row of controls. A set of filter chips, a pagina
|
|
|
115
119
|
Guidance only — cannot be checked automatically.
|
|
116
120
|
- **Never nest one interactive element inside another** — Nested interactive elements produce ambiguous hit targets and an unreachable inner control for keyboard and screen-reader users. This is why the rule cannot live on any single component — it constrains Button, Link, CardButton and TextInput simultaneously.
|
|
117
121
|
Guidance only — cannot be checked automatically.
|
|
122
|
+
- **A page has at most one patterned band, between its hero and its closing call to action** — A patterned ground — the halftone, the aurora, the mesh, the grid or the rings — is what makes a band the one a reader stops at, and it only works by being the exception. So a page has at most one, placed between its hero and its closing call to action; the hero's and the call to action's own patterns are theirs and do not count, and the band never goes on either of them.
|
|
123
|
+
|
|
124
|
+
The pattern is the band's first layer, under its content and over nothing. A block that can carry one says so with its own `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows — and draws it there; a section built by hand places a Background with nothing in it as its first child. Never wrap a block in a Background: the block paints its own ground over the pattern and hides it.
|
|
125
|
+
|
|
126
|
+
Only a band whose content is stacked can carry one. Every pattern rises from the band's foot, so the band needs a heading over what it introduces, centred, with the foot left open. A band whose content runs side by side — words beside a picture, a split, columns reaching the foot — puts the glow behind the picture or under the words; it stays on its flat ground.
|
|
127
|
+
Guidance only — cannot be checked automatically.
|
|
118
128
|
- **A section that paints a ground sets the ink to go with it** — A page sits on color.bg.page, and a section that separates itself from it takes one of three grounds. color.bg.subtle is the light one and needs nothing further — the page's own ink still reads on it. The other two are dark and do not: color.bg.brand-strong takes color.fg.on-brand-strong, and color.bg.brand takes color.fg.on-solid. Both are white, and both are written as the role rather than the white they resolve to. Set one of those backgrounds without its ink and the text inherits whatever the page was already using, which is near-black on a dark band — legible to nobody, and invisible to every check here, because each pair passes contrast on its own and nothing can tell whether a section used both.
|
|
119
129
|
|
|
120
130
|
color.bg.brand carries a second limit that is not about forgetting. Its ink measures 3.39:1, which clears the 3:1 a heading needs and misses the 4.5:1 running copy needs. A coral band may carry a headline and a call to action; a paragraph on one is text the reader has to work through at a ratio the waiver on that role does not cover — the waiver says so itself. A section with copy in it takes color.bg.brand-strong, which is near-black and carries white at full contrast.
|
|
@@ -193,7 +203,7 @@ Two things genuinely have no logical form and are not covered by this. A CSS gra
|
|
|
193
203
|
```tsx
|
|
194
204
|
import { Tiers, Link } from '@deriv-com/dds-marketing'
|
|
195
205
|
|
|
196
|
-
<Tiers ground="subtle" title="Growing rewards as you scale" description="Our tiered partnership model rewards performance. As you grow, you unlock higher bonuses." tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join."},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} link={<Link href="/partners/tiers">Learn more about partner tiers</Link>} />
|
|
206
|
+
<Tiers ground="subtle" title="Growing rewards as you scale" description="Our tiered partnership model rewards performance. As you grow, you unlock higher bonuses." tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join.","qualification":"To join:\nSign up as a partner"},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} link={<Link href="/partners/tiers">Learn more about partner tiers</Link>} />
|
|
197
207
|
```
|
|
198
208
|
|
|
199
209
|
## In use
|
|
@@ -206,10 +216,10 @@ A partnership ladder in four tiers, one row with a track through the medals; thr
|
|
|
206
216
|
import { Link, Tiers } from '@deriv-com/dds-marketing'
|
|
207
217
|
|
|
208
218
|
// Four tiers, with a way on
|
|
209
|
-
<Tiers title="Growing rewards as you scale" description="Our tiered partnership model rewards performance. As you grow, you unlock higher bonuses." tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join."},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} link={<Link href="/partners/tiers">Learn more about partner tiers</Link>} />
|
|
219
|
+
<Tiers title="Growing rewards as you scale" description="Our tiered partnership model rewards performance. As you grow, you unlock higher bonuses." tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join.","qualification":"To join:\nSign up as a partner"},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} link={<Link href="/partners/tiers">Learn more about partner tiers</Link>} />
|
|
210
220
|
|
|
211
221
|
// Three tiers, no line or link
|
|
212
|
-
<Tiers title="Earn more as your clients trade" tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Up to $10 per lot","description":"Earn on every lot your referred clients trade on CFDs."},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Up to $12 per lot","description":"A higher rate per lot once your clients trade more.","qualification":"Monthly volume:\n500 lots+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Up to $15 per lot","description":"Our highest rate, and a dedicated partner manager.","qualification":"Monthly volume:\n2,000 lots+"}]} />
|
|
222
|
+
<Tiers title="Earn more as your clients trade" tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Up to $10 per lot","description":"Earn on every lot your referred clients trade on CFDs.","qualification":"To join:\nSign up as a partner"},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Up to $12 per lot","description":"A higher rate per lot once your clients trade more.","qualification":"Monthly volume:\n500 lots+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Up to $15 per lot","description":"Our highest rate, and a dedicated partner manager.","qualification":"Monthly volume:\n2,000 lots+"}]} />
|
|
213
223
|
```
|
|
214
224
|
|
|
215
225
|
### On the grey band and the dark one
|
|
@@ -220,8 +230,8 @@ ground="subtle" sets the section apart and turns the cards white; ground="strong
|
|
|
220
230
|
import { Link, Tiers } from '@deriv-com/dds-marketing'
|
|
221
231
|
|
|
222
232
|
// Subtle ground
|
|
223
|
-
<Tiers ground="subtle" title="Growing rewards as you scale" tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join."},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} />
|
|
233
|
+
<Tiers ground="subtle" title="Growing rewards as you scale" tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join.","qualification":"To join:\nSign up as a partner"},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} />
|
|
224
234
|
|
|
225
235
|
// Strong ground
|
|
226
|
-
<Tiers ground="strong" title="Growing rewards as you scale" description="Our tiered partnership model rewards performance. As you grow, you unlock higher bonuses." tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join."},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} link={<Link href="/partners/tiers" tone="inherit">Learn more about partner tiers</Link>} />
|
|
236
|
+
<Tiers ground="strong" title="Growing rewards as you scale" description="Our tiered partnership model rewards performance. As you grow, you unlock higher bonuses." tiers={[{"name":"Bronze","stage":"Launch","medal":"/sample-stop-amber.svg","benefit":"Full access from day one","description":"Every partner tool, report and marketing asset, from the day you join.","qualification":"To join:\nSign up as a partner"},{"name":"Silver","stage":"Grow","medal":"/sample-stop-teal.svg","benefit":"Commission + 4% bonus","description":"An extra 4% on top of your commission, paid every month.","qualification":"3-month average commission:\n$500+"},{"name":"Gold","stage":"Scale","medal":"/sample-stop-brand.svg","benefit":"Commission + 6% bonus","description":"Your monthly bonus grows to 6% to match your performance.","qualification":"3-month average commission:\n$1,000+"},{"name":"Platinum","stage":"Lead","medal":"/sample-stop-purple.svg","benefit":"Commission + 8% bonus","description":"A further quarterly bonus and invitations to our annual partner events.","qualification":"3-month average commission:\n$5,000+"}]} link={<Link href="/partners/tiers" tone="inherit">Learn more about partner tiers</Link>} />
|
|
227
237
|
```
|
|
@@ -119,6 +119,12 @@ What this is not about is every row of controls. A set of filter chips, a pagina
|
|
|
119
119
|
Guidance only — cannot be checked automatically.
|
|
120
120
|
- **Never nest one interactive element inside another** — Nested interactive elements produce ambiguous hit targets and an unreachable inner control for keyboard and screen-reader users. This is why the rule cannot live on any single component — it constrains Button, Link, CardButton and TextInput simultaneously.
|
|
121
121
|
Guidance only — cannot be checked automatically.
|
|
122
|
+
- **A page has at most one patterned band, between its hero and its closing call to action** — A patterned ground — the halftone, the aurora, the mesh, the grid or the rings — is what makes a band the one a reader stops at, and it only works by being the exception. So a page has at most one, placed between its hero and its closing call to action; the hero's and the call to action's own patterns are theirs and do not count, and the band never goes on either of them.
|
|
123
|
+
|
|
124
|
+
The pattern is the band's first layer, under its content and over nothing. A block that can carry one says so with its own `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows — and draws it there; a section built by hand places a Background with nothing in it as its first child. Never wrap a block in a Background: the block paints its own ground over the pattern and hides it.
|
|
125
|
+
|
|
126
|
+
Only a band whose content is stacked can carry one. Every pattern rises from the band's foot, so the band needs a heading over what it introduces, centred, with the foot left open. A band whose content runs side by side — words beside a picture, a split, columns reaching the foot — puts the glow behind the picture or under the words; it stays on its flat ground.
|
|
127
|
+
Guidance only — cannot be checked automatically.
|
|
122
128
|
- **A section that paints a ground sets the ink to go with it** — A page sits on color.bg.page, and a section that separates itself from it takes one of three grounds. color.bg.subtle is the light one and needs nothing further — the page's own ink still reads on it. The other two are dark and do not: color.bg.brand-strong takes color.fg.on-brand-strong, and color.bg.brand takes color.fg.on-solid. Both are white, and both are written as the role rather than the white they resolve to. Set one of those backgrounds without its ink and the text inherits whatever the page was already using, which is near-black on a dark band — legible to nobody, and invisible to every check here, because each pair passes contrast on its own and nothing can tell whether a section used both.
|
|
123
129
|
|
|
124
130
|
color.bg.brand carries a second limit that is not about forgetting. Its ink measures 3.39:1, which clears the 3:1 a heading needs and misses the 4.5:1 running copy needs. A coral band may carry a headline and a call to action; a paragraph on one is text the reader has to work through at a ratio the waiver on that role does not cover — the waiver says so itself. A section with copy in it takes color.bg.brand-strong, which is near-black and carries white at full contrast.
|
|
@@ -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.
|
|
@@ -30,7 +34,7 @@ Typography renders one element.
|
|
|
30
34
|
|
|
31
35
|
Its margin is unset. A browser gives <p> and every heading a margin of its own, which would arrive here as spacing nobody asked for and nothing in the contract could see — so the page's own gap is the only thing between two blocks of copy.
|
|
32
36
|
|
|
33
|
-
The figure variant is the one that sets a property no token holds. Its size and weight are font.figure like every other variant's are their own role, but tabular numerals are a literal here rather than a binding: a composite font token carries family, size, weight, line height and tracking and nothing else, and the numeric form is not a value that varies anyway. A figure is always tabular — that is most of what makes it a figure rather than a heading with a number in it, because a column of counts whose digits do not line up is a column the eye cannot compare.
|
|
37
|
+
The figure variant is the one that sets a property no token holds. Its size and weight are font.figure like every other variant's are their own role, but tabular numerals are a literal here rather than a binding: a composite font token carries family, size, weight, line height and tracking and nothing else, and the numeric form is not a value that varies anyway. A figure is always tabular — that is most of what makes it a figure rather than a heading with a number in it, because a column of counts whose digits do not line up is a column the eye cannot compare. Given `motion` or `from`, it is drawn by TypographyMotion, a client component, and moves once on arrival (`data-arrival`); the text it holds is still the text that is read.
|
|
34
38
|
|
|
35
39
|
Apply these classes from the generated `typographyParts` constant rather than writing the strings by hand.
|
|
36
40
|
|
|
@@ -68,6 +72,18 @@ Never for: Picking an element. A variant is a size, and the element is `as`
|
|
|
68
72
|
- `h6` — The deepest heading level
|
|
69
73
|
Never for: Anything interactive. A link is Link and a control is Button — an element that responds to a click needs a name, a focus ring and a keyboard route, none of which this has
|
|
70
74
|
|
|
75
|
+
### motion — `roll`
|
|
76
|
+
|
|
77
|
+
- `roll` — A figure the reader would call their own — an amount in a pane, a deposit, a balance in an illustration — rolls into place once: each digit a reel from nought to its value, left to right, a step of motion.duration.stagger apart, over motion.duration.dramatic
|
|
78
|
+
|
|
79
|
+
Use when: The figure moves once, on arrival — when it is well into view, when the block bringing it in has landed, or, in an IllustrationCard, when the pane has. Only the `figure` role, and only a figure given as plain text, since the digits are what roll. At rest, and for a reader who asked for less movement, the figure is simply its value; the value itself is what is read out
|
|
80
|
+
Never for: A product term — a leverage, a spread, a payout rate, a price. A figure counting up reads as a live quote, so it rolls only an illustrative amount, and never a profit climbing upward. Nor more than one moving thing in a pane: one lead motion per pane
|
|
81
|
+
|
|
82
|
+
### from — `string`
|
|
83
|
+
|
|
84
|
+
Use when: The words this text starts as, which give way once to the words it is — "Opening…" to "Position open", "EUR/USD · Buy" to "EUR/USD · Sell". The first words hold for motion.duration.hold after arrival, rise away, and the text's own words come up into their place. Plain text only. Beside a StatusDot given `from` as well, the dot changes with the words
|
|
85
|
+
Never for: Words a reader must read to act, or a sequence of more than two. The first words are on screen for a second and are not read out — what is read is the text's own words — so nothing the reader needs may live only in them. Nor beside `motion`, which wins: a figure that rolls draws no earlier words
|
|
86
|
+
|
|
71
87
|
Also accepts everything from `HTMLAttributes<HTMLElement>`.
|
|
72
88
|
|
|
73
89
|
## Accessibility
|
|
@@ -92,6 +108,12 @@ What this is not about is every row of controls. A set of filter chips, a pagina
|
|
|
92
108
|
Guidance only — cannot be checked automatically.
|
|
93
109
|
- **Never nest one interactive element inside another** — Nested interactive elements produce ambiguous hit targets and an unreachable inner control for keyboard and screen-reader users. This is why the rule cannot live on any single component — it constrains Button, Link, CardButton and TextInput simultaneously.
|
|
94
110
|
Guidance only — cannot be checked automatically.
|
|
111
|
+
- **A page has at most one patterned band, between its hero and its closing call to action** — A patterned ground — the halftone, the aurora, the mesh, the grid or the rings — is what makes a band the one a reader stops at, and it only works by being the exception. So a page has at most one, placed between its hero and its closing call to action; the hero's and the call to action's own patterns are theirs and do not count, and the band never goes on either of them.
|
|
112
|
+
|
|
113
|
+
The pattern is the band's first layer, under its content and over nothing. A block that can carry one says so with its own `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows — and draws it there; a section built by hand places a Background with nothing in it as its first child. Never wrap a block in a Background: the block paints its own ground over the pattern and hides it.
|
|
114
|
+
|
|
115
|
+
Only a band whose content is stacked can carry one. Every pattern rises from the band's foot, so the band needs a heading over what it introduces, centred, with the foot left open. A band whose content runs side by side — words beside a picture, a split, columns reaching the foot — puts the glow behind the picture or under the words; it stays on its flat ground.
|
|
116
|
+
Guidance only — cannot be checked automatically.
|
|
95
117
|
- **A section that paints a ground sets the ink to go with it** — A page sits on color.bg.page, and a section that separates itself from it takes one of three grounds. color.bg.subtle is the light one and needs nothing further — the page's own ink still reads on it. The other two are dark and do not: color.bg.brand-strong takes color.fg.on-brand-strong, and color.bg.brand takes color.fg.on-solid. Both are white, and both are written as the role rather than the white they resolve to. Set one of those backgrounds without its ink and the text inherits whatever the page was already using, which is near-black on a dark band — legible to nobody, and invisible to every check here, because each pair passes contrast on its own and nothing can tell whether a section used both.
|
|
96
118
|
|
|
97
119
|
color.bg.brand carries a second limit that is not about forgetting. Its ink measures 3.39:1, which clears the 3:1 a heading needs and misses the 4.5:1 running copy needs. A coral band may carry a headline and a call to action; a paragraph on one is text the reader has to work through at a ratio the waiver on that role does not cover — the waiver says so itself. A section with copy in it takes color.bg.brand-strong, which is near-black and carries white at full contrast.
|
|
@@ -165,6 +187,36 @@ Two things genuinely have no logical form and are not covered by this. A CSS gra
|
|
|
165
187
|
The container. Colour is inherited here, margin is never set, and a component that owned either would disagree with the layout that placed it.
|
|
166
188
|
→ nothing in this system does this. Not a gap waiting to be filled — the case belongs outside it.
|
|
167
189
|
|
|
190
|
+
❌ variant=h1 + motion is set
|
|
191
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
192
|
+
|
|
193
|
+
❌ variant=h2 + motion is set
|
|
194
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
195
|
+
|
|
196
|
+
❌ variant=h3 + motion is set
|
|
197
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
198
|
+
|
|
199
|
+
❌ variant=h4 + motion is set
|
|
200
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
201
|
+
|
|
202
|
+
❌ variant=h5 + motion is set
|
|
203
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
204
|
+
|
|
205
|
+
❌ variant=subtitle + motion is set
|
|
206
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
207
|
+
|
|
208
|
+
❌ variant=body-lg + motion is set
|
|
209
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
210
|
+
|
|
211
|
+
❌ variant=body-md + motion is set
|
|
212
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
213
|
+
|
|
214
|
+
❌ variant=body-sm + motion is set
|
|
215
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
216
|
+
|
|
217
|
+
❌ variant=eyebrow + motion is set
|
|
218
|
+
Only a figure rolls: the motion turns its digits, and a heading or a line of copy rolling digit by digit is a figure pretending to be words.
|
|
219
|
+
|
|
168
220
|
## Example
|
|
169
221
|
|
|
170
222
|
```tsx
|
|
@@ -251,3 +303,17 @@ import { Typography } from '@deriv-com/dds-marketing'
|
|
|
251
303
|
// figure — a number, in fixed-width digits
|
|
252
304
|
<Typography variant="figure" as="span">9,482</Typography>
|
|
253
305
|
```
|
|
306
|
+
|
|
307
|
+
### Moving once on arrival
|
|
308
|
+
|
|
309
|
+
A figure that rolls into place, and words that give way to the words they become. Both play once, then rest.
|
|
310
|
+
|
|
311
|
+
```tsx
|
|
312
|
+
import { Typography } from '@deriv-com/dds-marketing'
|
|
313
|
+
|
|
314
|
+
// variant="figure" motion="roll"
|
|
315
|
+
<Typography variant="figure" motion="roll">50 USD</Typography>
|
|
316
|
+
|
|
317
|
+
// from — Opening… to Position open
|
|
318
|
+
<Typography variant="body-sm" from="Opening…">Position open</Typography>
|
|
319
|
+
```
|
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,26 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
# Background
|
|
4
4
|
|
|
5
|
-
A ground
|
|
5
|
+
A patterned ground for a page's one standout band, drawn as its first layer
|
|
6
6
|
|
|
7
7
|
`import { Background } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
9
9
|
## Reach for it when
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- A light page that wants one moment of brand colour without a coral block: the dots carry the colour at a fraction of the area a fill would
|
|
11
|
+
- The page's one patterned band, between its hero and its closing call to action, on a section built by hand rather than from a block — a heading stacked over what it introduces, centred, with the band's foot left open, because every pattern rises from the foot …
|
|
12
|
+
- Inside a block that offers it, as that block's `background` prop — FeatureCards, Stats, TestimonialRow and LogoRows draw it as their first layer, and LandingHero, PageHeader, CtaBanner, CtaBannerSlider and DownloadBanner their own. …
|
|
14
13
|
|
|
15
14
|
## Something else, when
|
|
16
15
|
|
|
17
|
-
- The band
|
|
16
|
+
- The band is a set of features with a picture each → **FeatureCards**
|
|
17
|
+
- The band is three to five headline numbers → **Stats**
|
|
18
|
+
- The band is a row of short reviews → **TestimonialRow**
|
|
19
|
+
- The band is a strip of partner or payment logos → **LogoRows**
|
|
20
|
+
- The band opens the page → **LandingHero**
|
|
21
|
+
- The band asks the reader to act → **CtaBanner**
|
|
18
22
|
- The ground is a picture or a video → **AspectRatio**
|
|
19
23
|
|
|
20
24
|
## Never
|
|
21
25
|
|
|
26
|
+
- More than one band on a page. One patterned band, between the hero and the closing call to action, is what makes it the band a reader remembers; two make neither, and a page of them is noise. The hero's and the call to action's own patterns do not count against it, and it does not go on either of them
|
|
27
|
+
- Wrapping a block. Every block paints its own ground over whatever is behind it, so a block inside a Background hides the pattern — and the pattern belongs under a band's content as its first layer, not around it as a frame. A block that can carry one has a `background` prop; one that has not is not a band for a pattern
|
|
28
|
+
- A band whose content runs side by side — words beside a picture, a split, a row of columns reaching the foot. Every pattern rises from the band's foot, so it needs a heading stacked over content with the foot left open; laid across, the glow comes up behind the picture or under the words
|
|
29
|
+
- Separating a band from the page. A block's `ground` — `subtle` for the grey band, `strong` for the dark one — does that with a flat fill at no cost to the eye; a pattern is decoration that has to earn its place
|
|
22
30
|
- Carrying meaning. The pattern is hidden from assistive technology and reads differently on every screen size, so nothing a reader needs may depend on it — not a highlight, not a direction, not a state
|
|
23
31
|
- Behind long reading. Dots behind a paragraph are texture under every word, and the brightest of them sit exactly where the eye is reading; put prose on a plain ground and keep this for the band that opens or closes it
|
|
24
|
-
- Two in a row. Adjacent patterned bands lose the edge between them, and the reader sees one long busy surface rather than two sections
|
|
25
32
|
- A card, a panel or any surface smaller than a band. At a few hundred pixels the glow has nowhere to fall off to, and the dots read as noise rather than light
|
|
26
33
|
|
|
27
34
|
## Props
|
|
@@ -29,6 +36,7 @@ A ground a section or a block sits on, painted with a pattern rather than a flat
|
|
|
29
36
|
- **tone** `enum` · default "brand" — Which ground the dots are drawn on. It sets the flat colour under the pattern, the dots' ink — coral on the dark and light grounds, white on the coral one — and the ink of what sits on it
|
|
30
37
|
- `dark` — The band the halftone was drawn for: coral dots glowing on color.bg.brand-strong, which is dark in both modes. …
|
|
31
38
|
- `light` — Coral dots on the page's own ground, for a light page that wants one moment of brand colour without a solid coral band. …
|
|
39
|
+
- `subtle` — The light pattern on the subtle band's grey — color.bg.band-subtle laid over the page, the grey a block's `ground="subtle"` paints — for a block that carries a pattern on that ground. …
|
|
32
40
|
- `brand` — The default: the brand's own coral, the ground the mesh was made for and the one a call to action stands on. White dots on it for the halftone. …
|
|
33
41
|
- never: Matching the page's colour mode. Dark is dark in both modes — a band that should invert with the theme is a plain section on color.bg.page, not this
|
|
34
42
|
- **pattern** `enum` · default "halftone" — Which pattern is drawn. The halftone is the default and the one that moves most; the aurora drifts slowly; the mesh flows across the whole band; the grid and the rings are the quietest, their lines rising and spreading at a band's pace. …
|
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
|
|
|
@@ -31,7 +31,7 @@ Drives a visitor toward a conversion goal — a signup page, a pricing page, a d
|
|
|
31
31
|
- `lg` — A hero, or a full-width conversion band that is the only control in view. …
|
|
32
32
|
- **tone** `enum` · default "default"
|
|
33
33
|
- `default` — The page's own ground, which sets the ink this component was drawn against — every button on a white page
|
|
34
|
-
- `inverse` — The control stands on the dark band, color.bg.brand-strong — a hero, a navigation bar at the top of one, a footer — which is
|
|
34
|
+
- `inverse` — The control stands on the dark band, color.bg.brand-strong — a hero, a navigation bar at the top of one, a footer — which is near-black in light and dark alike — slate.900 in light, a step deeper in dark. …
|
|
35
35
|
- `brand` — The control stands on the coral band, color.bg.brand — CtaBanner and CtaBannerSlider — which is the same coral in light and dark, so nothing on it switches either. …
|
|
36
36
|
- **href** `string` · optional — The press goes somewhere with a URL of its own — the ordinary case for a call to action on a marketing page. It makes this an anchor rather than a button, which is what gives a visitor cmd-click, a visible destination and a copyable link. …
|
|
37
37
|
- never: A placeholder while the destination is undecided — a # or an empty string is a control that looks live, takes focus and goes nowhere. Nor javascript: or a handler dressed as a URL: leave href out and pass onClick, and this renders a button that does the work in place
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# ButtonIcon
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Triggers an action with an icon alone
|
|
6
6
|
|
|
7
7
|
`import { ButtonIcon } from '@deriv-com/dds-marketing'`
|
|
8
8
|
|
|
@@ -43,7 +43,7 @@ One press carried by a glyph alone, in the space a label would need. …
|
|
|
43
43
|
- never: Making one of a set stand out. Two of these side by side at different steps read as a control and its afterthought, and a carousel whose next is larger than its previous has said the path runs one way
|
|
44
44
|
- **tone** `enum` · default "default"
|
|
45
45
|
- `default` — The control is on a light ground, which is every surface this package paints by default
|
|
46
|
-
- `inverse` — The control stands on the dark band, color.bg.brand-strong — a mark in a navigation bar on a hero, a social mark in a footer — which is
|
|
46
|
+
- `inverse` — The control stands on the dark band, color.bg.brand-strong — a mark in a navigation bar on a hero, a social mark in a footer — which is near-black in light and dark alike — slate.900 in light, a step deeper in dark. …
|
|
47
47
|
- **icon** `node` · required — Always — the glyph is the whole control, so it is required rather than a slot that may be empty. …
|
|
48
48
|
- never: A glyph whose meaning the visitor has to be taught, and never a second glyph — one control, one action, one shape. …
|
|
49
49
|
- **label** `string` · required — Always. It is the entire accessible name, because nothing on screen carries one — the words that would have been the label if there had been room for one. …
|
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
|
|