@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,103 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/* Grid structure the contract's static CSS cannot hold: one column of options, and each option's circle beside its words. */
|
|
6
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice {
|
|
7
|
+
grid-template-columns: minmax(0, 1fr);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice .dds-illustrationchoice__option {
|
|
11
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
12
|
+
grid-column: 1;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice .dds-illustrationchoice__label {
|
|
16
|
+
grid-column: 2;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice .dds-illustrationchoice__description {
|
|
20
|
+
grid-column: 2;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice .dds-illustrationchoice__outline {
|
|
24
|
+
grid-column: 1;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* The dot fills its circle with a margin of a quarter of it, and only on the picked option.
|
|
29
|
+
*/
|
|
30
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice .dds-illustrationchoice__dot {
|
|
31
|
+
background-color: currentColor;
|
|
32
|
+
block-size: 50%;
|
|
33
|
+
inline-size: 50%;
|
|
34
|
+
scale: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice .dds-illustrationchoice__option[data-picked] .dds-illustrationchoice__dot {
|
|
38
|
+
scale: 1;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* The outline covers its row exactly, over the option it marks. */
|
|
42
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice .dds-illustrationchoice__outline {
|
|
43
|
+
align-self: stretch;
|
|
44
|
+
justify-self: stretch;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* `motion="pick"`: the outline starts a row away — `--dds-illustrationchoice-from` rows, a sign —
|
|
49
|
+
* holds for motion.duration.hold with that row's circle still filled, then slides to the picked
|
|
50
|
+
* option over motion.duration.shift as the circle it left empties; the picked circle pops full over
|
|
51
|
+
* motion.duration.slow once it has arrived. `data-arrival` is the choice's own answer from
|
|
52
|
+
* useArrival (arrival.ts): `waiting` holds the first frame, `playing` runs it, and no attribute —
|
|
53
|
+
* a server, a reader who asked for less movement — is the choice as made. A row's height plus the
|
|
54
|
+
* gap is how far one row away is.
|
|
55
|
+
*/
|
|
56
|
+
@keyframes dds-illustrationchoice-slide {
|
|
57
|
+
from {
|
|
58
|
+
translate: 0 calc(var(--dds-illustrationchoice-from) * (100% + var(--space-gap-sm)));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@keyframes dds-illustrationchoice-leave {
|
|
63
|
+
from {
|
|
64
|
+
scale: 1;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
to {
|
|
68
|
+
scale: 0;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@keyframes dds-illustrationchoice-fill {
|
|
73
|
+
0% {
|
|
74
|
+
scale: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
70% {
|
|
78
|
+
scale: 1.2;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice[data-motion='pick'][data-arrival] .dds-illustrationchoice__outline {
|
|
83
|
+
animation: dds-illustrationchoice-slide var(--motion-duration-shift) var(--motion-easing-shift) var(--motion-duration-hold) both;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice[data-motion='pick'][data-arrival] .dds-illustrationchoice__option[data-start] .dds-illustrationchoice__dot {
|
|
87
|
+
animation: dds-illustrationchoice-leave var(--motion-duration-hold) steps(1, end) both;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice[data-motion='pick'][data-arrival] .dds-illustrationchoice__option[data-picked] .dds-illustrationchoice__dot {
|
|
91
|
+
animation: dds-illustrationchoice-fill var(--motion-duration-slow) var(--motion-easing-reveal)
|
|
92
|
+
calc(var(--motion-duration-hold) + var(--motion-duration-shift)) both;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice[data-motion='pick'][data-arrival='waiting'] :is(.dds-illustrationchoice__outline, .dds-illustrationchoice__dot) {
|
|
96
|
+
animation-play-state: paused !important;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media (prefers-reduced-motion: reduce) {
|
|
100
|
+
:where([data-dds-context="marketing"]) .dds-illustrationchoice[data-motion='pick'][data-arrival] :is(.dds-illustrationchoice__outline, .dds-illustrationchoice__dot) {
|
|
101
|
+
animation: none;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* GENERATED from illustrationcode.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-illustrationcode {
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
display: grid;
|
|
6
|
+
inline-size: 100%;
|
|
7
|
+
column-gap: var(--space-gap-sm);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:where([data-dds-context="marketing"]) .dds-illustrationcode .dds-illustrationcode__box {
|
|
11
|
+
border-style: solid;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
display: grid;
|
|
14
|
+
place-items: center;
|
|
15
|
+
border-color: var(--color-border-strong);
|
|
16
|
+
border-radius: var(--radius-control-sm);
|
|
17
|
+
border-width: var(--border-width-emphasis);
|
|
18
|
+
font-family: var(--font-label-md-family);
|
|
19
|
+
font-size: var(--font-label-md-size);
|
|
20
|
+
font-weight: var(--font-label-md-weight);
|
|
21
|
+
letter-spacing: var(--font-label-md-letter-spacing);
|
|
22
|
+
line-height: var(--font-label-md-line-height);
|
|
23
|
+
padding-block: var(--space-inset-xs);
|
|
24
|
+
}
|
|
25
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import './IllustrationCode.css';
|
|
2
|
+
import './illustration-code-impl.css';
|
|
3
|
+
import { type IllustrationCodeProps } from './IllustrationCode.types.js';
|
|
4
|
+
export type { IllustrationCodeProps };
|
|
5
|
+
/**
|
|
6
|
+
* A drawn row of code boxes — a picture of the product asking for a code, never a field.
|
|
7
|
+
*
|
|
8
|
+
* A filled box holds a dot rather than a digit: a picture should never show a code. Each box carries
|
|
9
|
+
* its place in the row for the stylesheet, so the boxes can fill one after another on arrival. No
|
|
10
|
+
* script of its own: a row that fills on arrival is wrapped to take one (arrives.tsx).
|
|
11
|
+
*/
|
|
12
|
+
export declare function IllustrationCode({ length, filled, motion, label, ...rest }: IllustrationCodeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import './IllustrationCode.css';
|
|
3
|
+
import './illustration-code-impl.css';
|
|
4
|
+
import { Arrives } from '../../arrives.js';
|
|
5
|
+
import { given } from '../../given.js';
|
|
6
|
+
import { illustrationCodeDefaults, illustrationCodeParts, } from './IllustrationCode.types.js';
|
|
7
|
+
/**
|
|
8
|
+
* A drawn row of code boxes — a picture of the product asking for a code, never a field.
|
|
9
|
+
*
|
|
10
|
+
* A filled box holds a dot rather than a digit: a picture should never show a code. Each box carries
|
|
11
|
+
* its place in the row for the stylesheet, so the boxes can fill one after another on arrival. No
|
|
12
|
+
* script of its own: a row that fills on arrival is wrapped to take one (arrives.tsx).
|
|
13
|
+
*/
|
|
14
|
+
export function IllustrationCode({ length = illustrationCodeDefaults.length, filled, motion, label, ...rest }) {
|
|
15
|
+
const count = Math.max(1, Math.min(8, Math.round(length)));
|
|
16
|
+
const full = Math.max(0, Math.min(count, filled === undefined ? count : Math.round(filled)));
|
|
17
|
+
const named = given(label);
|
|
18
|
+
const row = (_jsx("div", { ...rest, className: illustrationCodeParts.root, "data-motion": motion, role: named ? 'img' : undefined, "aria-label": named ? label : undefined, "aria-hidden": named ? undefined : true, style: { gridTemplateColumns: `repeat(${count}, minmax(0, 1fr))` }, children: Array.from({ length: count }, (_, at) => (_jsx("span", { className: illustrationCodeParts.box, "data-filled": at < full ? '' : undefined, style: { '--dds-illustrationcode-step': at + 1 }, children: at < full ? '•' : null }, at))) }));
|
|
19
|
+
return motion === undefined ? row : _jsx(Arrives, { children: row });
|
|
20
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export interface IllustrationCodeOwnProps {
|
|
3
|
+
/** How many boxes: six, the default, for the usual verification code; four for a short one */
|
|
4
|
+
length?: number;
|
|
5
|
+
/** How many boxes are filled, from the start. Left out, all of them — a code entered */
|
|
6
|
+
filled?: number;
|
|
7
|
+
/**
|
|
8
|
+
* `fill` — The boxes fill one after another, a step of motion.duration.stagger apart
|
|
9
|
+
*/
|
|
10
|
+
motion?: 'fill';
|
|
11
|
+
/** Where the picture stands on its own — "A verification code, entered". It names the row as one image */
|
|
12
|
+
label?: string;
|
|
13
|
+
}
|
|
14
|
+
export type IllustrationCodeProps = IllustrationCodeOwnProps & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'length' | 'filled' | 'motion' | 'label'>;
|
|
15
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
16
|
+
export declare const illustrationCodeParts: {
|
|
17
|
+
readonly root: "dds-illustrationcode";
|
|
18
|
+
readonly box: "dds-illustrationcode__box";
|
|
19
|
+
};
|
|
20
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
21
|
+
export declare const illustrationCodeDefaults: {
|
|
22
|
+
readonly length: 6;
|
|
23
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// GENERATED from illustration-code.contract.json. Do not edit.
|
|
2
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
3
|
+
export const illustrationCodeParts = {
|
|
4
|
+
root: 'dds-illustrationcode',
|
|
5
|
+
box: 'dds-illustrationcode__box',
|
|
6
|
+
};
|
|
7
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
8
|
+
export const illustrationCodeDefaults = { length: 6 };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*
|
|
4
|
+
* A box is a little taller than it is wide, as the product's are; a filled one is outlined in the
|
|
5
|
+
* text's own ink rather than the empty box's quieter edge.
|
|
6
|
+
*/
|
|
7
|
+
:where([data-dds-context="marketing"]) .dds-illustrationcode .dds-illustrationcode__box {
|
|
8
|
+
aspect-ratio: var(--aspect-upright);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:where([data-dds-context="marketing"]) .dds-illustrationcode .dds-illustrationcode__box[data-filled] {
|
|
12
|
+
border-color: currentColor;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
* `motion="fill"`: each filled box takes its ink and its dot a step of motion.duration.stagger after
|
|
17
|
+
* the one before, settling from a little small over motion.duration.normal. `data-arrival` is the
|
|
18
|
+
* row's own answer from useArrival (arrival.ts): `waiting` holds every box empty, `playing` fills
|
|
19
|
+
* them, and no attribute — a server, a reader who asked for less movement — is the row as filled.
|
|
20
|
+
*/
|
|
21
|
+
@keyframes dds-illustrationcode-fill {
|
|
22
|
+
from {
|
|
23
|
+
border-color: var(--color-border-strong);
|
|
24
|
+
color: transparent;
|
|
25
|
+
scale: 0.85;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where([data-dds-context="marketing"]) .dds-illustrationcode[data-motion='fill'][data-arrival] .dds-illustrationcode__box[data-filled] {
|
|
30
|
+
animation: dds-illustrationcode-fill var(--motion-duration-normal) var(--motion-easing-reveal) both;
|
|
31
|
+
animation-delay: calc(var(--dds-illustrationcode-step, 1) * var(--motion-duration-stagger));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:where([data-dds-context="marketing"]) .dds-illustrationcode[data-motion='fill'][data-arrival='waiting'] .dds-illustrationcode__box {
|
|
35
|
+
animation-play-state: paused !important;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@media (prefers-reduced-motion: reduce) {
|
|
39
|
+
:where([data-dds-context="marketing"]) .dds-illustrationcode[data-motion='fill'][data-arrival] .dds-illustrationcode__box {
|
|
40
|
+
animation: none;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* GENERATED from illustrationlist.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-illustrationlist {
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
inline-size: 100%;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:where([data-dds-context="marketing"]) .dds-illustrationlist .dds-illustrationlist__row {
|
|
11
|
+
align-items: center;
|
|
12
|
+
border-style: none;
|
|
13
|
+
display: flex;
|
|
14
|
+
border-block-start-width: var(--border-width-hairline);
|
|
15
|
+
border-color: var(--color-border-subtle);
|
|
16
|
+
column-gap: var(--space-gap-sm);
|
|
17
|
+
padding-block: var(--space-inset-xs);
|
|
18
|
+
}
|
|
19
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import './IllustrationList.css';
|
|
3
|
+
import './illustration-list-impl.css';
|
|
4
|
+
import { type IllustrationListProps } from './IllustrationList.types.js';
|
|
5
|
+
export type { IllustrationListProps };
|
|
6
|
+
/**
|
|
7
|
+
* A drawn list — each child one row, ruled from the row above — for a picture of the product
|
|
8
|
+
* listing things.
|
|
9
|
+
*
|
|
10
|
+
* Each row carries its place in the list for the stylesheet, so the rows can arrive one after
|
|
11
|
+
* another and a glyph in each can pop as its row lands. No script of its own: a list that arrives
|
|
12
|
+
* is wrapped to take one (arrives.tsx).
|
|
13
|
+
*/
|
|
14
|
+
export declare function IllustrationList({ motion, children, ...rest }: IllustrationListProps & {
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Children } from 'react';
|
|
3
|
+
import './IllustrationList.css';
|
|
4
|
+
import './illustration-list-impl.css';
|
|
5
|
+
import { Arrives } from '../../arrives.js';
|
|
6
|
+
import { illustrationListParts } from './IllustrationList.types.js';
|
|
7
|
+
/**
|
|
8
|
+
* A drawn list — each child one row, ruled from the row above — for a picture of the product
|
|
9
|
+
* listing things.
|
|
10
|
+
*
|
|
11
|
+
* Each row carries its place in the list for the stylesheet, so the rows can arrive one after
|
|
12
|
+
* another and a glyph in each can pop as its row lands. No script of its own: a list that arrives
|
|
13
|
+
* is wrapped to take one (arrives.tsx).
|
|
14
|
+
*/
|
|
15
|
+
export function IllustrationList({ motion, children, ...rest }) {
|
|
16
|
+
const list = (_jsx("div", { ...rest, className: illustrationListParts.root, "data-motion": motion, children: Children.toArray(children).map((child, at) => (_jsx("div", { className: illustrationListParts.row, style: { '--dds-illustrationlist-step': at }, children: child }, at))) }));
|
|
17
|
+
return motion === undefined ? list : _jsx(Arrives, { children: list });
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface IllustrationListOwnProps {
|
|
3
|
+
/**
|
|
4
|
+
* `arrive` — The rows come in one after another, and each glyph pops in as its row lands
|
|
5
|
+
*/
|
|
6
|
+
motion?: 'arrive';
|
|
7
|
+
/** Allowed: any content */
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export type IllustrationListProps = IllustrationListOwnProps & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'motion'>;
|
|
11
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
12
|
+
export declare const illustrationListParts: {
|
|
13
|
+
readonly root: "dds-illustrationlist";
|
|
14
|
+
readonly row: "dds-illustrationlist__row";
|
|
15
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*
|
|
4
|
+
* Rows ruled from the row above; the first has nothing above it.
|
|
5
|
+
*/
|
|
6
|
+
:where([data-dds-context="marketing"]) .dds-illustrationlist .dds-illustrationlist__row + .dds-illustrationlist__row {
|
|
7
|
+
border-block-start-style: solid;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
* `motion="arrive"`: each row comes up into place over motion.duration.reveal, a step of
|
|
12
|
+
* motion.duration.stagger behind the row before it, and any glyph in it — an Icon — pops in over
|
|
13
|
+
* motion.duration.shift a step of motion.duration.fast after its row starts. `data-arrival` is the
|
|
14
|
+
* list's own answer from useArrival (arrival.ts): `waiting` holds the first frame, `playing` runs
|
|
15
|
+
* it, and no attribute — a server, a reader who asked for less movement — is the list at rest.
|
|
16
|
+
*/
|
|
17
|
+
@keyframes dds-illustrationlist-arrive {
|
|
18
|
+
from {
|
|
19
|
+
opacity: var(--opacity-hidden);
|
|
20
|
+
translate: 0 var(--space-gap-sm);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@keyframes dds-illustrationlist-pop {
|
|
25
|
+
0% {
|
|
26
|
+
scale: 0.4;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
70% {
|
|
30
|
+
scale: 1.12;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:where([data-dds-context="marketing"]) .dds-illustrationlist[data-motion='arrive'][data-arrival] .dds-illustrationlist__row {
|
|
35
|
+
animation: dds-illustrationlist-arrive var(--motion-duration-reveal) var(--motion-easing-reveal) both;
|
|
36
|
+
animation-delay: calc(var(--dds-illustrationlist-step, 0) * var(--motion-duration-stagger));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where([data-dds-context="marketing"]) .dds-illustrationlist[data-motion='arrive'][data-arrival] .dds-illustrationlist__row .dds-icon {
|
|
40
|
+
animation: dds-illustrationlist-pop var(--motion-duration-shift) var(--motion-easing-reveal) both;
|
|
41
|
+
animation-delay: calc(var(--dds-illustrationlist-step, 0) * var(--motion-duration-stagger) + var(--motion-duration-fast));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:where([data-dds-context="marketing"]) .dds-illustrationlist[data-motion='arrive'][data-arrival='waiting'] :is(.dds-illustrationlist__row, .dds-icon) {
|
|
45
|
+
animation-play-state: paused !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@media (prefers-reduced-motion: reduce) {
|
|
49
|
+
:where([data-dds-context="marketing"]) .dds-illustrationlist[data-motion='arrive'][data-arrival] :is(.dds-illustrationlist__row, .dds-icon) {
|
|
50
|
+
animation: none;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
background-color: var(--color-bg-surface);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
:where([data-dds-context="marketing"]) .dds-illustrationscene .dds-illustrationscene__shade {
|
|
22
|
+
align-self: stretch;
|
|
23
|
+
justify-self: stretch;
|
|
24
|
+
pointer-events: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
:where([data-dds-context="marketing"]) .dds-illustrationscene[data-placement="bottom"] {
|
|
22
28
|
align-items: end;
|
|
23
29
|
justify-items: center;
|
|
@@ -9,6 +9,7 @@ export type { IllustrationSceneProps };
|
|
|
9
9
|
* every picture of the product in use is composed the same way across a site. The photograph is
|
|
10
10
|
* decoration unless `alt` says otherwise; the card's own label describes the whole picture.
|
|
11
11
|
*
|
|
12
|
-
* No state and no script, so it renders on a server as it is.
|
|
12
|
+
* No state and no script, so it renders on a server as it is. The card's two-beat arrival inside a
|
|
13
|
+
* block's reveal is the stylesheet's, read from the step the block gave whatever holds the scene.
|
|
13
14
|
*/
|
|
14
|
-
export declare function IllustrationScene({ ratio, placement, src, alt, children, ...rest }: IllustrationSceneProps): import("react").JSX.Element;
|
|
15
|
+
export declare function IllustrationScene({ ratio, placement, src, alt, shade, children, ...rest }: IllustrationSceneProps): import("react").JSX.Element;
|
|
@@ -9,8 +9,9 @@ import { illustrationSceneDefaults, illustrationSceneParts, } from './Illustrati
|
|
|
9
9
|
* every picture of the product in use is composed the same way across a site. The photograph is
|
|
10
10
|
* decoration unless `alt` says otherwise; the card's own label describes the whole picture.
|
|
11
11
|
*
|
|
12
|
-
* No state and no script, so it renders on a server as it is.
|
|
12
|
+
* No state and no script, so it renders on a server as it is. The card's two-beat arrival inside a
|
|
13
|
+
* block's reveal is the stylesheet's, read from the step the block gave whatever holds the scene.
|
|
13
14
|
*/
|
|
14
|
-
export function IllustrationScene({ ratio = illustrationSceneDefaults.ratio, placement = illustrationSceneDefaults.placement, src, alt = illustrationSceneDefaults.alt, children, ...rest }) {
|
|
15
|
-
return (_jsxs("div", { ...rest, className: illustrationSceneParts.root, "data-ratio": ratio, "data-placement": placement, children: [_jsx("img", { className: illustrationSceneParts.image, src: src, alt: alt }), children] }));
|
|
15
|
+
export function IllustrationScene({ ratio = illustrationSceneDefaults.ratio, placement = illustrationSceneDefaults.placement, src, alt = illustrationSceneDefaults.alt, shade = illustrationSceneDefaults.shade, children, ...rest }) {
|
|
16
|
+
return (_jsxs("div", { ...rest, className: illustrationSceneParts.root, "data-ratio": ratio, "data-placement": placement, children: [_jsx("img", { className: illustrationSceneParts.image, src: src, alt: alt }), shade ? _jsx("div", { className: illustrationSceneParts.shade }) : null, children] }));
|
|
16
17
|
}
|
|
@@ -15,18 +15,22 @@ export interface IllustrationSceneOwnProps {
|
|
|
15
15
|
src: string;
|
|
16
16
|
/** Empty by default, because the card's `label` describes the whole picture and the photograph is decoration. Write one only where the photograph says something the label does not */
|
|
17
17
|
alt?: string;
|
|
18
|
+
/** The photograph is bright where the card sits — a sunny sky, a white wall — so the glass would come out mid-grey and the card's small lines would fall below AA. A shade under the card only, following the card's placement, so the rest of the photograph keeps its light. */
|
|
19
|
+
shade?: boolean;
|
|
18
20
|
/** Allowed: IllustrationCard */
|
|
19
21
|
children: ReactNode;
|
|
20
22
|
}
|
|
21
|
-
export type IllustrationSceneProps = IllustrationSceneOwnProps & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'ratio' | 'placement' | 'src' | 'alt'>;
|
|
23
|
+
export type IllustrationSceneProps = IllustrationSceneOwnProps & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'ratio' | 'placement' | 'src' | 'alt' | 'shade'>;
|
|
22
24
|
/** The class each part carries. Apply these — do not retype them. */
|
|
23
25
|
export declare const illustrationSceneParts: {
|
|
24
26
|
readonly root: "dds-illustrationscene";
|
|
25
27
|
readonly image: "dds-illustrationscene__image";
|
|
28
|
+
readonly shade: "dds-illustrationscene__shade";
|
|
26
29
|
};
|
|
27
30
|
/** Generated so defaults cannot drift from the contract. */
|
|
28
31
|
export declare const illustrationSceneDefaults: {
|
|
29
32
|
readonly ratio: "square";
|
|
30
33
|
readonly placement: "center";
|
|
31
34
|
readonly alt: "";
|
|
35
|
+
readonly shade: false;
|
|
32
36
|
};
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
export const illustrationSceneParts = {
|
|
4
4
|
root: 'dds-illustrationscene',
|
|
5
5
|
image: 'dds-illustrationscene__image',
|
|
6
|
+
shade: 'dds-illustrationscene__shade',
|
|
6
7
|
};
|
|
7
8
|
/** Generated so defaults cannot drift from the contract. */
|
|
8
|
-
export const illustrationSceneDefaults = { ratio: 'square', placement: 'center', alt: '' };
|
|
9
|
+
export const illustrationSceneDefaults = { ratio: 'square', placement: 'center', alt: '', shade: false };
|
|
@@ -59,3 +59,68 @@
|
|
|
59
59
|
justify-self: stretch;
|
|
60
60
|
margin-block-end: var(--space-inset-card);
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
/*
|
|
64
|
+
* At the foot, the strip is held to two fifths of the frame and its UI scaled into it.
|
|
65
|
+
*
|
|
66
|
+
* A strip is as tall as what it holds, and what it holds keeps its full type sizes however small the
|
|
67
|
+
* scene is drawn — so on a narrow column the strip outgrew its share and, at a tablet's width, its
|
|
68
|
+
* photograph. Capped, the pane has a height smaller than its UI, and IllustrationCard's fit scales
|
|
69
|
+
* the UI down into it as it does for a centred card. Two fifths is about the share the strip takes
|
|
70
|
+
* on a desktop, where nothing needs scaling, so the composition holds at every width rather than
|
|
71
|
+
* changing with it. A proportion of the frame, like every share here.
|
|
72
|
+
*/
|
|
73
|
+
:where([data-dds-context="marketing"]) .dds-illustrationscene[data-placement='bottom'] > .dds-illustrationcard {
|
|
74
|
+
max-block-size: 40%;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/*
|
|
78
|
+
* The shade, between the photograph and the card.
|
|
79
|
+
*
|
|
80
|
+
* It fills the frame's one cell like the photograph and draws only where the card is: up from the
|
|
81
|
+
* foot at full strength to just above a strip at the foot, then clear by two thirds of the way up,
|
|
82
|
+
* so the subject above keeps its light; or an oval behind a centred card, full strength under the
|
|
83
|
+
* card's words and fading from there, so it never stands round the card as a dark ring, and clear at
|
|
84
|
+
* the frame's edges. color.bg.overlay, which takes a white photograph to a grey that the card's glass and its
|
|
85
|
+
* small type clear at AA.
|
|
86
|
+
*/
|
|
87
|
+
:where([data-dds-context="marketing"]) .dds-illustrationscene[data-placement='bottom'] .dds-illustrationscene__shade {
|
|
88
|
+
background-image: linear-gradient(to top, var(--color-bg-overlay), var(--color-bg-overlay) 45%, transparent 70%);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
:where([data-dds-context="marketing"]) .dds-illustrationscene[data-placement='center'] .dds-illustrationscene__shade {
|
|
92
|
+
background-image: radial-gradient(closest-side, var(--color-bg-overlay), var(--color-bg-overlay) 45%, transparent);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
* The card arrives after its photograph.
|
|
97
|
+
*
|
|
98
|
+
* Inside a block's arrival — block-reveal.css — whatever holds the scene comes up at its step, and
|
|
99
|
+
* the scene with it. The card then waits three steps of motion.duration.stagger more and rises onto
|
|
100
|
+
* the photograph, so the place lands and then the product does. The holder's step is read from
|
|
101
|
+
* `--dds-reveal-at`, which the block sets on the part and which the card inherits, so this follows
|
|
102
|
+
* whatever number the block gives its media rather than guessing past it; with none it counts from
|
|
103
|
+
* the block's first step. The same distance, duration and curve as every other part's arrival.
|
|
104
|
+
*
|
|
105
|
+
* Only inside a reveal — a scene with no `data-revealed` above it is simply drawn — and never for a
|
|
106
|
+
* reader who asked for less movement, as every arrival. Written a class deeper than block-reveal's
|
|
107
|
+
* own rule, so a page that marked the card with a step of its own is overruled by this one.
|
|
108
|
+
*/
|
|
109
|
+
:where([data-dds-context="marketing"]) [data-revealed='false'] .dds-illustrationscene > .dds-illustrationcard {
|
|
110
|
+
opacity: var(--opacity-hidden);
|
|
111
|
+
transition: none;
|
|
112
|
+
translate: var(--motion-translate-reveal);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
:where([data-dds-context="marketing"]) [data-revealed='true'] .dds-illustrationscene > .dds-illustrationcard {
|
|
116
|
+
transition-delay: calc((var(--dds-reveal-at, 0) + 3) * var(--motion-duration-stagger));
|
|
117
|
+
transition-duration: var(--motion-duration-reveal);
|
|
118
|
+
transition-property: opacity, translate;
|
|
119
|
+
transition-timing-function: var(--motion-easing-reveal);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@media (prefers-reduced-motion: reduce) {
|
|
123
|
+
:where([data-dds-context="marketing"]) [data-revealed] .dds-illustrationscene > .dds-illustrationcard {
|
|
124
|
+
transition: none;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -56,27 +56,13 @@
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/*
|
|
59
|
-
* A link
|
|
59
|
+
* A link that inherits its ink, with no mark, gets an underline under the pointer.
|
|
60
60
|
*
|
|
61
|
-
*
|
|
62
|
-
* the
|
|
63
|
-
*
|
|
64
|
-
* affordance at all.
|
|
65
|
-
*
|
|
66
|
-
* The list variant had the same hole and answers it differently, below: it has a mark to
|
|
67
|
-
* bring in, and a column of rows that underline one at a time reads as a table of contents
|
|
68
|
-
* being corrected.
|
|
69
|
-
*
|
|
70
|
-
* Product reaches the same conclusion from the other end: its standalone drops the underline
|
|
71
|
-
* except at `tone: inherit`, "because the link is the same colour as the text around it and
|
|
72
|
-
* the rule is the only thing left saying it is a link". It keeps the line at all times. These
|
|
73
|
-
* designs have no line at rest — a footer of fifty underlined rows is a wall — so it arrives
|
|
74
|
-
* with the pointer instead, which is the same argument applied to a denser page.
|
|
75
|
-
*
|
|
76
|
-
* Here rather than in the contract because `structure` carries no state: it says what a
|
|
77
|
-
* variant looks like, not what it looks like while a pointer is over it.
|
|
61
|
+
* At `tone: inherit` the colour is the ground's and cannot change, so what answers the pointer is
|
|
62
|
+
* the mark moving, below — the brand link's behaviour, with no line. A link given `showIcon={false}`
|
|
63
|
+
* has no mark to move, and without this nothing about it would answer the pointer at all.
|
|
78
64
|
*/
|
|
79
|
-
:where([data-dds-context="marketing"]) .dds-link[data-variant='standalone'][data-tone='inherit']:hover {
|
|
65
|
+
:where([data-dds-context="marketing"]) .dds-link[data-variant='standalone'][data-tone='inherit']:not(:has(.dds-link__icon-trailing)):hover {
|
|
80
66
|
text-decoration-line: underline;
|
|
81
67
|
}
|
|
82
68
|
|