@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
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/* GENERATED from statscarousel.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel {
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
container-type: inline-size;
|
|
6
|
+
display: flex;
|
|
7
|
+
inline-size: 100%;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
overflow-wrap: anywhere;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__inner {
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
inline-size: 100%;
|
|
17
|
+
min-inline-size: 0;
|
|
18
|
+
max-inline-size: var(--size-content-max);
|
|
19
|
+
padding-block: var(--space-section-default);
|
|
20
|
+
padding-inline: var(--space-inset-page);
|
|
21
|
+
row-gap: var(--space-heading-content);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__header {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
min-inline-size: 0;
|
|
28
|
+
max-inline-size: var(--size-measure-heading);
|
|
29
|
+
row-gap: var(--space-gap-none);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__title {
|
|
33
|
+
margin-block: 0;
|
|
34
|
+
text-wrap: balance;
|
|
35
|
+
font-family: var(--font-h2-family);
|
|
36
|
+
font-size: var(--font-h2-size);
|
|
37
|
+
font-weight: var(--font-h2-weight);
|
|
38
|
+
letter-spacing: var(--font-h2-letter-spacing);
|
|
39
|
+
line-height: var(--font-h2-line-height);
|
|
40
|
+
margin-block-end: var(--space-heading-title-description);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__description {
|
|
44
|
+
margin-block: 0;
|
|
45
|
+
font-family: var(--font-body-md-family);
|
|
46
|
+
font-size: var(--font-body-md-size);
|
|
47
|
+
font-weight: var(--font-body-md-weight);
|
|
48
|
+
letter-spacing: var(--font-body-md-letter-spacing);
|
|
49
|
+
line-height: var(--font-body-md-line-height);
|
|
50
|
+
max-inline-size: var(--size-measure-description);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__stage {
|
|
54
|
+
align-items: center;
|
|
55
|
+
display: grid;
|
|
56
|
+
justify-items: center;
|
|
57
|
+
gap: var(--space-gap-xl);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__card {
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
display: grid;
|
|
63
|
+
overflow: clip;
|
|
64
|
+
place-items: center;
|
|
65
|
+
position: relative;
|
|
66
|
+
border-radius: var(--radius-expressive);
|
|
67
|
+
padding-inline: var(--space-inset-xl);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list {
|
|
71
|
+
display: grid;
|
|
72
|
+
list-style: none;
|
|
73
|
+
margin-block: 0;
|
|
74
|
+
padding-inline: 0;
|
|
75
|
+
column-gap: var(--space-grid-gutter);
|
|
76
|
+
row-gap: var(--space-grid-gutter);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__item {
|
|
80
|
+
align-items: center;
|
|
81
|
+
display: flex;
|
|
82
|
+
flex-direction: column;
|
|
83
|
+
min-inline-size: 0;
|
|
84
|
+
text-align: center;
|
|
85
|
+
row-gap: var(--space-gap-sm);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__awards {
|
|
89
|
+
align-items: center;
|
|
90
|
+
display: flex;
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
list-style: none;
|
|
93
|
+
margin-block: 0;
|
|
94
|
+
padding-inline: 0;
|
|
95
|
+
row-gap: var(--space-gap-lg);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award {
|
|
99
|
+
align-items: center;
|
|
100
|
+
box-sizing: border-box;
|
|
101
|
+
display: flex;
|
|
102
|
+
justify-content: center;
|
|
103
|
+
min-inline-size: 0;
|
|
104
|
+
column-gap: var(--space-gap-xs);
|
|
105
|
+
max-inline-size: var(--size-grid-track-md);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-laurel {
|
|
109
|
+
display: block;
|
|
110
|
+
flex: none;
|
|
111
|
+
inline-size: var(--icon-size-md);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-copy {
|
|
115
|
+
align-items: center;
|
|
116
|
+
display: flex;
|
|
117
|
+
flex-direction: column;
|
|
118
|
+
min-inline-size: 0;
|
|
119
|
+
text-align: center;
|
|
120
|
+
row-gap: var(--space-heading-title-description-compact);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-name {
|
|
124
|
+
margin: 0;
|
|
125
|
+
text-wrap: balance;
|
|
126
|
+
font-family: var(--font-label-sm-family);
|
|
127
|
+
font-size: var(--font-label-sm-size);
|
|
128
|
+
font-weight: var(--font-label-sm-weight);
|
|
129
|
+
letter-spacing: var(--font-label-sm-letter-spacing);
|
|
130
|
+
line-height: var(--font-label-sm-line-height);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-issuer {
|
|
134
|
+
margin: 0;
|
|
135
|
+
font-family: var(--font-body-sm-family);
|
|
136
|
+
font-size: var(--font-body-sm-size);
|
|
137
|
+
font-weight: var(--font-body-sm-weight);
|
|
138
|
+
letter-spacing: var(--font-body-sm-letter-spacing);
|
|
139
|
+
line-height: var(--font-body-sm-line-height);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__label {
|
|
143
|
+
font-family: var(--font-body-lg-family);
|
|
144
|
+
font-size: var(--font-body-lg-size);
|
|
145
|
+
font-weight: var(--font-body-lg-weight);
|
|
146
|
+
letter-spacing: var(--font-body-lg-letter-spacing);
|
|
147
|
+
line-height: var(--font-body-lg-line-height);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__value {
|
|
151
|
+
font-family: var(--font-figure-lg-family);
|
|
152
|
+
font-size: var(--font-figure-lg-size);
|
|
153
|
+
font-weight: var(--font-figure-lg-weight);
|
|
154
|
+
letter-spacing: var(--font-figure-lg-letter-spacing);
|
|
155
|
+
line-height: var(--font-figure-lg-line-height);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="page"] {
|
|
159
|
+
background-color: var(--color-bg-page);
|
|
160
|
+
color: var(--color-fg-default);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="page"] .dds-statscarousel__award-laurel {
|
|
164
|
+
color: var(--color-fg-muted);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="page"] .dds-statscarousel__card {
|
|
168
|
+
background-color: var(--color-bg-surface);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="page"] .dds-statscarousel__label {
|
|
172
|
+
color: var(--color-fg-muted);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="strong"] {
|
|
176
|
+
background-color: var(--color-bg-brand-strong);
|
|
177
|
+
color: var(--color-fg-on-brand-strong);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="strong"] .dds-statscarousel__award-laurel {
|
|
181
|
+
color: var(--color-fg-muted-inverse);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="strong"] .dds-statscarousel__card {
|
|
185
|
+
background-color: var(--color-bg-surface-inverse);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="strong"] .dds-statscarousel__label {
|
|
189
|
+
color: var(--color-fg-muted-inverse);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="subtle"] {
|
|
193
|
+
background-color: var(--color-bg-page);
|
|
194
|
+
background-image: linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
|
|
195
|
+
color: var(--color-fg-default);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="subtle"] .dds-statscarousel__award-laurel {
|
|
199
|
+
color: var(--color-fg-muted);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="subtle"] .dds-statscarousel__card {
|
|
203
|
+
background-color: var(--color-bg-surface-card-raised);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="subtle"] .dds-statscarousel__label {
|
|
207
|
+
color: var(--color-fg-muted);
|
|
208
|
+
}
|
|
209
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import './StatsCarousel.css';
|
|
2
|
+
import './stats-carousel-impl.css';
|
|
3
|
+
import '../block-reveal.css';
|
|
4
|
+
import { type StatsCarouselProps } from './StatsCarousel.types.js';
|
|
5
|
+
export type { StatsCarouselProps };
|
|
6
|
+
/**
|
|
7
|
+
* A heading over a square card that turns through a few key figures, one at a time, with the awards
|
|
8
|
+
* behind them beside it — the reference design's Stats.
|
|
9
|
+
*
|
|
10
|
+
* The turn is Stats' own wheel (use-wheel.ts), turning at every width here rather than only on a
|
|
11
|
+
* phone: the same hold and turn, held while a pointer rests on the card or focus is in it, stopped for
|
|
12
|
+
* good by a press, and never for a reader who asked for less movement — they get the figures two to
|
|
13
|
+
* a row in the card. Every figure is in the list the whole time, so a screen reader reads them all.
|
|
14
|
+
*
|
|
15
|
+
* The awards are drawn the way the Awards block draws them — the same laurel (laurel.tsx), the same
|
|
16
|
+
* tokens — from the same records, so an award looks the same wherever a page shows it.
|
|
17
|
+
*
|
|
18
|
+
* `'use client'` for the turn, the reveal and `useId`, which names the region by its heading.
|
|
19
|
+
*/
|
|
20
|
+
export declare function StatsCarousel({ ground, title, description, stats, awards, }: StatsCarouselProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId, useRef } from 'react';
|
|
4
|
+
import './StatsCarousel.css';
|
|
5
|
+
import './stats-carousel-impl.css';
|
|
6
|
+
import '../block-reveal.css';
|
|
7
|
+
import { given } from '../../given.js';
|
|
8
|
+
import { arriving, useReveal } from '../use-reveal.js';
|
|
9
|
+
import { slotOf, useWheel } from '../stats/use-wheel.js';
|
|
10
|
+
import { Laurel } from '../laurel.js';
|
|
11
|
+
import { statsCarouselDefaults, statsCarouselParts, } from './StatsCarousel.types.js';
|
|
12
|
+
/**
|
|
13
|
+
* A heading over a square card that turns through a few key figures, one at a time, with the awards
|
|
14
|
+
* behind them beside it — the reference design's Stats.
|
|
15
|
+
*
|
|
16
|
+
* The turn is Stats' own wheel (use-wheel.ts), turning at every width here rather than only on a
|
|
17
|
+
* phone: the same hold and turn, held while a pointer rests on the card or focus is in it, stopped for
|
|
18
|
+
* good by a press, and never for a reader who asked for less movement — they get the figures two to
|
|
19
|
+
* a row in the card. Every figure is in the list the whole time, so a screen reader reads them all.
|
|
20
|
+
*
|
|
21
|
+
* The awards are drawn the way the Awards block draws them — the same laurel (laurel.tsx), the same
|
|
22
|
+
* tokens — from the same records, so an award looks the same wherever a page shows it.
|
|
23
|
+
*
|
|
24
|
+
* `'use client'` for the turn, the reveal and `useId`, which names the region by its heading.
|
|
25
|
+
*/
|
|
26
|
+
export function StatsCarousel({ ground = statsCarouselDefaults.ground, title, description, stats, awards, }) {
|
|
27
|
+
const titleId = useId();
|
|
28
|
+
const [band, revealed] = useReveal();
|
|
29
|
+
const section = useRef(null);
|
|
30
|
+
const figures = Array.isArray(stats) ? stats.length : 0;
|
|
31
|
+
const { wheeling, turn, hold } = useWheel(section, figures, true);
|
|
32
|
+
// A record from a feed or an editor is not typed: an empty list draws nothing rather than a card
|
|
33
|
+
// with nothing in it.
|
|
34
|
+
if (figures === 0)
|
|
35
|
+
return null;
|
|
36
|
+
// The first half of the awards at the card's start, the rest at its end.
|
|
37
|
+
const listed = Array.isArray(awards) ? awards : [];
|
|
38
|
+
const half = Math.ceil(listed.length / 2);
|
|
39
|
+
const start = listed.slice(0, half);
|
|
40
|
+
const end = listed.slice(half);
|
|
41
|
+
return (_jsx("section", { className: statsCarouselParts.root, ref: section, "data-ground": ground, "aria-labelledby": titleId, children: _jsxs("div", { className: statsCarouselParts.inner, ref: band, "data-revealed": revealed, children: [_jsxs("div", { className: statsCarouselParts.header, children: [_jsx("h2", { className: statsCarouselParts.title, id: titleId, ...arriving(0), children: title }), given(description) ? (_jsx("p", { className: statsCarouselParts.description, ...arriving(1), children: description })) : null] }), _jsxs("div", { className: statsCarouselParts.stage, ...arriving(2), children: [start.length > 0 ? _jsx(AwardColumn, { awards: start, side: "start" }) : null, _jsx("div", { className: statsCarouselParts.card, children: _jsx("ul", { className: statsCarouselParts.list, role: "list", "data-wheel": wheeling || undefined, tabIndex: wheeling ? 0 : undefined, "aria-labelledby": wheeling ? titleId : undefined, ...(wheeling ? hold : {}), children: stats.map((figure, at) => (_jsxs("li", { className: statsCarouselParts.item, "data-slot": wheeling ? slotOf(at, turn, figures) : undefined, children: [_jsx("span", { className: statsCarouselParts.value, children: _jsx("bdi", { children: figure.value }) }), _jsx("span", { className: statsCarouselParts.label, children: figure.label })] }, at))) }) }), end.length > 0 ? _jsx(AwardColumn, { awards: end, side: "end" }) : null] })] }) }));
|
|
42
|
+
}
|
|
43
|
+
/** A column of award badges beside the card, each between two laurels as the Awards block draws them. */
|
|
44
|
+
function AwardColumn({ awards, side }) {
|
|
45
|
+
return (
|
|
46
|
+
// `role="list"` spelled out: Safari drops a list's role once its markers are styled away.
|
|
47
|
+
_jsx("ul", { className: statsCarouselParts.awards, role: "list", "data-side": side, children: awards.map((award, at) => (_jsxs("li", { className: statsCarouselParts.award, children: [_jsx(Laurel, { className: statsCarouselParts['award-laurel'], side: "leading" }), _jsxs("div", { className: statsCarouselParts['award-copy'], children: [_jsx("p", { className: statsCarouselParts['award-name'], children: award.title }), _jsx("p", { className: statsCarouselParts['award-issuer'], children: award.issuer })] }), _jsx(Laurel, { className: statsCarouselParts['award-laurel'], side: "trailing" })] }, at))) }));
|
|
48
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Award } from '../../awards-data.js';
|
|
2
|
+
import type { StatsFigure } from '../../stats-data.js';
|
|
3
|
+
export interface StatsCarouselOwnProps {
|
|
4
|
+
/**
|
|
5
|
+
* `page` — The default, and the page's own white. A row of figures between two sections that need nothing to separate them
|
|
6
|
+
* `subtle` — The grey band, for a row of figures that should read as a section of its own without changing the page's voice. Painted as the band's tint laid over the page's own ground, so it is the same grey whatever is behind the section
|
|
7
|
+
* `strong` — `color.bg.brand-strong`, the dark band, for a set of figures a reader should arrive at — a home page's "Trade with confidence". The heading and the figures turn white and the labels take color.fg.muted-inverse
|
|
8
|
+
*/
|
|
9
|
+
ground?: 'page' | 'subtle' | 'strong';
|
|
10
|
+
/** Always. What the numbers prove, in the fewest words — "Trade with confidence", "Deriv in numbers". */
|
|
11
|
+
title: string;
|
|
12
|
+
/** A line under the heading, when the heading alone does not say whose numbers these are or since when — "For over 25 years, a trusted partner of traders worldwide." */
|
|
13
|
+
description?: string;
|
|
14
|
+
/** Always. The figures, in the order they turn — three to five, each a short `value` exactly as it is to be read and a `label` of a few words. Two or more turn; one simply stands in the card. An empty list draws nothing. */
|
|
15
|
+
stats: StatsFigure[];
|
|
16
|
+
/** Two to four awards the figures stand beside: the first half in a column at the card's start, the rest at its end; on a phone, the two columns side by side under the card. Each between two laurels, as the Awards block draws its badges, from the same records */
|
|
17
|
+
awards?: Award[];
|
|
18
|
+
}
|
|
19
|
+
export type StatsCarouselProps = StatsCarouselOwnProps;
|
|
20
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
21
|
+
export declare const statsCarouselParts: {
|
|
22
|
+
readonly root: "dds-statscarousel";
|
|
23
|
+
readonly inner: "dds-statscarousel__inner";
|
|
24
|
+
readonly header: "dds-statscarousel__header";
|
|
25
|
+
readonly title: "dds-statscarousel__title";
|
|
26
|
+
readonly description: "dds-statscarousel__description";
|
|
27
|
+
readonly stage: "dds-statscarousel__stage";
|
|
28
|
+
readonly card: "dds-statscarousel__card";
|
|
29
|
+
readonly list: "dds-statscarousel__list";
|
|
30
|
+
readonly item: "dds-statscarousel__item";
|
|
31
|
+
readonly value: "dds-statscarousel__value";
|
|
32
|
+
readonly label: "dds-statscarousel__label";
|
|
33
|
+
readonly awards: "dds-statscarousel__awards";
|
|
34
|
+
readonly award: "dds-statscarousel__award";
|
|
35
|
+
readonly 'award-laurel': "dds-statscarousel__award-laurel";
|
|
36
|
+
readonly 'award-copy': "dds-statscarousel__award-copy";
|
|
37
|
+
readonly 'award-name': "dds-statscarousel__award-name";
|
|
38
|
+
readonly 'award-issuer': "dds-statscarousel__award-issuer";
|
|
39
|
+
};
|
|
40
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
41
|
+
export declare const statsCarouselDefaults: {
|
|
42
|
+
readonly ground: "page";
|
|
43
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// GENERATED from stats-carousel.contract.json. Do not edit.
|
|
2
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
3
|
+
export const statsCarouselParts = {
|
|
4
|
+
root: 'dds-statscarousel',
|
|
5
|
+
inner: 'dds-statscarousel__inner',
|
|
6
|
+
header: 'dds-statscarousel__header',
|
|
7
|
+
title: 'dds-statscarousel__title',
|
|
8
|
+
description: 'dds-statscarousel__description',
|
|
9
|
+
stage: 'dds-statscarousel__stage',
|
|
10
|
+
card: 'dds-statscarousel__card',
|
|
11
|
+
list: 'dds-statscarousel__list',
|
|
12
|
+
item: 'dds-statscarousel__item',
|
|
13
|
+
value: 'dds-statscarousel__value',
|
|
14
|
+
label: 'dds-statscarousel__label',
|
|
15
|
+
awards: 'dds-statscarousel__awards',
|
|
16
|
+
award: 'dds-statscarousel__award',
|
|
17
|
+
'award-laurel': 'dds-statscarousel__award-laurel',
|
|
18
|
+
'award-copy': 'dds-statscarousel__award-copy',
|
|
19
|
+
'award-name': 'dds-statscarousel__award-name',
|
|
20
|
+
'award-issuer': 'dds-statscarousel__award-issuer',
|
|
21
|
+
};
|
|
22
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
23
|
+
export const statsCarouselDefaults = { ground: 'page' };
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*
|
|
4
|
+
* `:where([data-dds-context="marketing"])` confines these rules without contributing specificity,
|
|
5
|
+
* so each is decided against the generated rule on its own terms.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* The header starts on a phone and is centred from the fold, over the card it names — Stats' rule
|
|
10
|
+
* and its reason: a centred line starts at a different edge each time, which costs little across a
|
|
11
|
+
* wide measure and a great deal across a narrow one.
|
|
12
|
+
*/
|
|
13
|
+
@container (min-width: 48rem) {
|
|
14
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__header {
|
|
15
|
+
align-items: center;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
margin-inline: auto;
|
|
19
|
+
text-align: center;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__description {
|
|
23
|
+
margin-inline: auto;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* A title with nothing under it carries no step under it. */
|
|
28
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__title:last-child {
|
|
29
|
+
margin-block-end: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* The card and the awards. Below 62rem the card is over the awards, their two columns side by side
|
|
34
|
+
* under it — the reference's two-up grid. From 62rem the columns stand either side of the card, its
|
|
35
|
+
* own column the card's size. `62rem` longhand because `var()` is not permitted in a container query
|
|
36
|
+
* condition; it is the reference's 992px.
|
|
37
|
+
*
|
|
38
|
+
* The card is square, as wide as size.grid.track-lg and the card's inset either side, or the column
|
|
39
|
+
* it is in where that is narrower. It holds its square whatever the turn inside it needs: the list
|
|
40
|
+
* keeps the room it leaves above and below the figure in place, centred in the card and clipped by it.
|
|
41
|
+
*/
|
|
42
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__stage {
|
|
43
|
+
--dds-statscarousel-card-size: min(100%, calc(var(--size-grid-track-lg) + 2 * var(--space-inset-xl)));
|
|
44
|
+
|
|
45
|
+
grid-template-areas:
|
|
46
|
+
'card card'
|
|
47
|
+
'start end';
|
|
48
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
49
|
+
inline-size: 100%;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@container (min-width: 62rem) {
|
|
53
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__stage {
|
|
54
|
+
grid-template-areas: 'start card end';
|
|
55
|
+
grid-template-columns: minmax(0, 1fr) var(--dds-statscarousel-card-size) minmax(0, 1fr);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__card {
|
|
60
|
+
aspect-ratio: var(--aspect-square);
|
|
61
|
+
grid-area: card;
|
|
62
|
+
inline-size: var(--dds-statscarousel-card-size);
|
|
63
|
+
min-block-size: 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list {
|
|
67
|
+
inline-size: 100%;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/*
|
|
71
|
+
* Still — a reader who asked for less movement, or a single figure — the figures stand two to a row
|
|
72
|
+
* in the card, at font.h4: a square card's width holds two figures, not four, and at the turn's size
|
|
73
|
+
* "168M+" broke over two lines.
|
|
74
|
+
*/
|
|
75
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list:not([data-wheel]) {
|
|
76
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list:not([data-wheel]) .dds-statscarousel__value {
|
|
80
|
+
font-family: var(--font-h4-family);
|
|
81
|
+
font-size: var(--font-h4-size);
|
|
82
|
+
font-weight: var(--font-h4-weight);
|
|
83
|
+
letter-spacing: var(--font-h4-letter-spacing);
|
|
84
|
+
line-height: var(--font-h4-line-height);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list:not([data-wheel]) .dds-statscarousel__label {
|
|
88
|
+
font-family: var(--font-body-md-family);
|
|
89
|
+
font-size: var(--font-body-md-size);
|
|
90
|
+
font-weight: var(--font-body-md-weight);
|
|
91
|
+
letter-spacing: var(--font-body-md-letter-spacing);
|
|
92
|
+
line-height: var(--font-body-md-line-height);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
* The turn, Stats' phone wheel (stats-impl.css) centred in the card: one figure in place, the one
|
|
97
|
+
* before it smaller above, the next smaller below, turning every motion.duration.hold over
|
|
98
|
+
* motion.duration.turn. useWheel sets `data-wheel` for two figures or more and never for a reader who
|
|
99
|
+
* asked for less movement.
|
|
100
|
+
*
|
|
101
|
+
* Every figure stands in the one cell and is moved off it; a step is a whole figure's height. The side
|
|
102
|
+
* figures stand at --dds-statscarousel-side of their size (0.65), the reference's scale, and fade into
|
|
103
|
+
* the card by a mask rather than an ink of their own, so the turn reads on every ground. The block
|
|
104
|
+
* padding is the room the side figures need above and below.
|
|
105
|
+
*/
|
|
106
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list[data-wheel] {
|
|
107
|
+
--dds-statscarousel-item: calc(
|
|
108
|
+
var(--font-figure-lg-size) * var(--font-figure-lg-line-height) + var(--space-gap-sm) + var(--font-body-lg-size) *
|
|
109
|
+
var(--font-body-lg-line-height)
|
|
110
|
+
);
|
|
111
|
+
--dds-statscarousel-side: 0.65;
|
|
112
|
+
--dds-statscarousel-away: 0.4;
|
|
113
|
+
--dds-statscarousel-room: 0.85;
|
|
114
|
+
--dds-statscarousel-fade: 35%;
|
|
115
|
+
|
|
116
|
+
grid-template-columns: minmax(0, 1fr);
|
|
117
|
+
mask-image: linear-gradient(
|
|
118
|
+
transparent,
|
|
119
|
+
black var(--dds-statscarousel-fade),
|
|
120
|
+
black calc(100% - var(--dds-statscarousel-fade)),
|
|
121
|
+
transparent
|
|
122
|
+
);
|
|
123
|
+
padding-block: calc(var(--dds-statscarousel-item) * var(--dds-statscarousel-room));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/*
|
|
127
|
+
* A tab stop while it turns — focus holds it still — so it shows where focus is, as Stats' wheel
|
|
128
|
+
* does: the ring drawn inside, and the fade gone while it holds focus, since the mask would fade
|
|
129
|
+
* the ring's top and foot with the figures.
|
|
130
|
+
*/
|
|
131
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list[data-wheel]:focus-visible {
|
|
132
|
+
mask-image: none;
|
|
133
|
+
outline: var(--border-width-focus) solid var(--color-border-focus);
|
|
134
|
+
outline-offset: calc(-1 * var(--border-width-focus));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel[data-ground="strong"] .dds-statscarousel__list[data-wheel]:focus-visible {
|
|
138
|
+
outline-color: var(--color-border-focus-on-brand-strong);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list[data-wheel] > .dds-statscarousel__item {
|
|
142
|
+
grid-area: 1 / 1;
|
|
143
|
+
inline-size: 100%;
|
|
144
|
+
transform-origin: center;
|
|
145
|
+
transition-duration: var(--motion-duration-turn);
|
|
146
|
+
transition-property: opacity, scale, translate;
|
|
147
|
+
transition-timing-function: var(--motion-easing-reveal);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list[data-wheel] > [data-slot='above'] {
|
|
151
|
+
scale: var(--dds-statscarousel-side);
|
|
152
|
+
translate: 0 -100%;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list[data-wheel] > [data-slot='below'] {
|
|
156
|
+
animation: dds-statscarousel-in var(--motion-duration-turn) var(--motion-easing-reveal);
|
|
157
|
+
scale: var(--dds-statscarousel-side);
|
|
158
|
+
translate: 0 100%;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/*
|
|
162
|
+
* Out of sight, a figure waits where the one above leaves to — risen and shrunk away — so leaving is
|
|
163
|
+
* a movement on, never back; it comes in below by an arrival of its own.
|
|
164
|
+
*/
|
|
165
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list[data-wheel] > [data-slot='hidden'] {
|
|
166
|
+
opacity: var(--opacity-hidden);
|
|
167
|
+
scale: var(--dds-statscarousel-away);
|
|
168
|
+
translate: 0 -100%;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@keyframes dds-statscarousel-in {
|
|
172
|
+
from {
|
|
173
|
+
opacity: var(--opacity-hidden);
|
|
174
|
+
scale: var(--dds-statscarousel-away);
|
|
175
|
+
translate: 0 200%;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@media (prefers-reduced-motion: reduce) {
|
|
180
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__list[data-wheel] > .dds-statscarousel__item {
|
|
181
|
+
animation: none;
|
|
182
|
+
transition: none;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/*
|
|
187
|
+
* The award columns. Each fills its side of the stage — centred, as the stage centres its items, a
|
|
188
|
+
* column shrank to its words — with its badges centred below 62rem and leaning toward the card from
|
|
189
|
+
* there, as the reference's do.
|
|
190
|
+
*/
|
|
191
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__awards {
|
|
192
|
+
justify-self: stretch;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__awards[data-side="start"] {
|
|
196
|
+
grid-area: start;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__awards[data-side="end"] {
|
|
200
|
+
grid-area: end;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@container (min-width: 62rem) {
|
|
204
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__awards[data-side="start"] {
|
|
205
|
+
align-items: flex-end;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__awards[data-side="end"] {
|
|
209
|
+
align-items: flex-start;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* The badges, as the Awards block draws them (awards-impl.css), each its column's width up to theirs. */
|
|
214
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award {
|
|
215
|
+
inline-size: 100%;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-laurel {
|
|
219
|
+
block-size: auto;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-copy {
|
|
223
|
+
flex: 1 1 0;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-laurel[data-side="trailing"],
|
|
227
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-laurel[data-side="leading"]:dir(rtl) {
|
|
228
|
+
scale: -1 1;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
:where([data-dds-context="marketing"]) .dds-statscarousel .dds-statscarousel__award-laurel[data-side="trailing"]:dir(rtl) {
|
|
232
|
+
scale: none;
|
|
233
|
+
}
|
|
@@ -73,6 +73,13 @@
|
|
|
73
73
|
background-color: var(--color-bg-surface-card-strong-raised);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
:where([data-dds-context="marketing"])
|
|
77
|
+
.dds-stickycards[data-ground="strong"]
|
|
78
|
+
.dds-stickycards__item
|
|
79
|
+
> .dds-card[data-variant="accent-strong"] {
|
|
80
|
+
background-color: var(--color-bg-surface-card-strong-on-brand-strong);
|
|
81
|
+
}
|
|
82
|
+
|
|
76
83
|
/*
|
|
77
84
|
* ── compact ──────────────────────────────────────────────────────────────────────────────────
|
|
78
85
|
*
|
|
@@ -140,6 +147,7 @@
|
|
|
140
147
|
:where([data-dds-context="marketing"]) .dds-stickycards .dds-card[data-variant="accent"] { --dds-stickycards-fill: var(--color-bg-brand); }
|
|
141
148
|
:where([data-dds-context="marketing"]) .dds-stickycards .dds-card[data-variant="surface-light"] { --dds-stickycards-fill: var(--color-bg-surface-card-light); }
|
|
142
149
|
:where([data-dds-context="marketing"]) .dds-stickycards[data-ground="subtle"] .dds-card[data-variant="accent-strong"] { --dds-stickycards-fill: var(--color-bg-surface-card-strong-raised); }
|
|
150
|
+
:where([data-dds-context="marketing"]) .dds-stickycards[data-ground="strong"] .dds-card[data-variant="accent-strong"] { --dds-stickycards-fill: var(--color-bg-surface-card-strong-on-brand-strong); }
|
|
143
151
|
:where([data-dds-context="marketing"]) .dds-stickycards[data-ground="subtle"] .dds-card[data-variant="surface-light"] { --dds-stickycards-fill: var(--color-bg-surface-card-light-raised); }
|
|
144
152
|
|
|
145
153
|
:where([data-dds-context="marketing"]) .dds-stickycards .dds-stickycards__body {
|
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
:where([data-dds-context="marketing"]) .dds-testimonialrow[data-ground="strong"] .dds-testimonialrow__item {
|
|
216
|
-
background-color: var(--color-bg-surface-card-strong);
|
|
216
|
+
background-color: var(--color-bg-surface-card-strong-on-brand-strong);
|
|
217
217
|
color: var(--color-fg-on-brand-strong);
|
|
218
218
|
}
|
|
219
219
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import "./TestimonialRow.css";
|
|
2
2
|
import "./testimonial-row-impl.css";
|
|
3
3
|
import "../block-reveal.css";
|
|
4
|
+
import "../block-pattern.css";
|
|
4
5
|
import { type TestimonialRowProps } from "./TestimonialRow.types.js";
|
|
5
6
|
export type { TestimonialRowProps };
|
|
6
7
|
/**
|
|
@@ -17,4 +18,4 @@ export type { TestimonialRowProps };
|
|
|
17
18
|
* `'use client'` for the row's scroll position, the arrival, and `useId`, which names the region
|
|
18
19
|
* by its heading.
|
|
19
20
|
*/
|
|
20
|
-
export declare function TestimonialRow({ ground, title, reviews, summary, ratingLabel, label, externalLabel, previousLabel, nextLabel, }: TestimonialRowProps): import("react").JSX.Element | null;
|
|
21
|
+
export declare function TestimonialRow({ ground, background, title, reviews, summary, ratingLabel, label, externalLabel, previousLabel, nextLabel, }: TestimonialRowProps): import("react").JSX.Element | null;
|