@deriv-com/dds-marketing 1.0.2 → 1.1.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/awards.md +209 -0
- package/.llm/components/background.md +89 -40
- package/.llm/components/bottomsheet.md +5 -0
- package/.llm/components/comparisoncards.md +257 -0
- package/.llm/components/comparisontable.md +231 -0
- package/.llm/components/ctabanner.md +9 -12
- package/.llm/components/ctabannerslider.md +15 -2
- package/.llm/components/datatable.md +273 -0
- package/.llm/components/downloadbanner.md +283 -0
- package/.llm/components/featurecards.md +41 -3
- package/.llm/components/featurecardscarousel.md +311 -0
- package/.llm/components/featuresplit.md +5 -0
- package/.llm/components/featurestack.md +227 -0
- package/.llm/components/illustrationcard.md +2 -2
- package/.llm/components/illustrationscene.md +6 -10
- package/.llm/components/imagebanner.md +278 -0
- package/.llm/components/navbar.md +1 -1
- package/.llm/components/navbaritem.md +4 -0
- package/.llm/components/pageheader.md +4 -3
- package/.llm/components/paginationdots.md +6 -1
- package/.llm/components/producthero.md +35 -11
- package/.llm/components/resourcebanner.md +247 -0
- package/.llm/components/scenescroll.md +222 -0
- package/.llm/components/select.md +17 -0
- package/.llm/components/stats.md +219 -0
- package/.llm/components/steps.md +286 -0
- package/.llm/components/stickycards.md +251 -0
- package/.llm/components/tableheadercell.md +19 -0
- package/.llm/components/teamgrid.md +243 -0
- package/.llm/components/testimonialrow.md +5 -0
- package/.llm/components/testimonialslider.md +14 -1
- package/.llm/components/textarea.md +13 -0
- package/.llm/components/textinput.md +13 -0
- package/.llm/components/textscroll.md +187 -0
- package/.llm/components/tiers.md +227 -0
- package/.llm/digest/awards.md +45 -0
- package/.llm/digest/background.md +11 -10
- package/.llm/digest/bottomsheet.md +2 -0
- package/.llm/digest/comparisoncards.md +51 -0
- package/.llm/digest/comparisontable.md +53 -0
- package/.llm/digest/ctabanner.md +4 -4
- package/.llm/digest/ctabannerslider.md +4 -0
- package/.llm/digest/datatable.md +65 -0
- package/.llm/digest/downloadbanner.md +65 -0
- package/.llm/digest/featurecards.md +1 -1
- package/.llm/digest/featurecardscarousel.md +54 -0
- package/.llm/digest/featuresplit.md +1 -0
- package/.llm/digest/featurestack.md +48 -0
- package/.llm/digest/illustrationscene.md +2 -3
- package/.llm/digest/imagebanner.md +64 -0
- package/.llm/digest/navbaritem.md +1 -0
- package/.llm/digest/pageheader.md +2 -1
- package/.llm/digest/paginationdots.md +3 -1
- package/.llm/digest/producthero.md +4 -2
- package/.llm/digest/resourcebanner.md +53 -0
- package/.llm/digest/scenescroll.md +49 -0
- package/.llm/digest/select.md +5 -0
- package/.llm/digest/stats.md +46 -0
- package/.llm/digest/steps.md +55 -0
- package/.llm/digest/stickycards.md +52 -0
- package/.llm/digest/tableheadercell.md +4 -0
- package/.llm/digest/teamgrid.md +53 -0
- package/.llm/digest/testimonialrow.md +2 -0
- package/.llm/digest/testimonialslider.md +4 -0
- package/.llm/digest/textarea.md +4 -0
- package/.llm/digest/textinput.md +4 -0
- package/.llm/digest/textscroll.md +43 -0
- package/.llm/digest/tiers.md +50 -0
- package/.llm/index.md +19 -3
- package/.llm/tokens.md +26 -1
- package/AGENTS.md +17 -1
- package/dist/components/awards-data.d.ts +24 -0
- package/dist/components/awards-data.js +11 -0
- package/dist/components/block-image-data.d.ts +24 -0
- package/dist/components/block-image-data.js +9 -0
- package/dist/components/blocks/awards/Awards.css +134 -0
- package/dist/components/blocks/awards/Awards.d.ts +24 -0
- package/dist/components/blocks/awards/Awards.js +114 -0
- package/dist/components/blocks/awards/Awards.types.d.ts +31 -0
- package/dist/components/blocks/awards/Awards.types.js +16 -0
- package/dist/components/blocks/awards/awards-impl.css +222 -0
- package/dist/components/blocks/cards-of.d.ts +16 -0
- package/dist/components/blocks/cards-of.js +23 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.css +195 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.d.ts +24 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.js +75 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.types.d.ts +49 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.types.js +26 -0
- package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +262 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.css +111 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.d.ts +25 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.js +100 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.types.d.ts +36 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.types.js +15 -0
- package/dist/components/blocks/comparison-table/comparison-table-impl.css +143 -0
- package/dist/components/blocks/cta-banner/CtaBanner.css +1 -0
- package/dist/components/blocks/cta-banner/CtaBanner.js +2 -2
- package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +4 -3
- package/dist/components/blocks/cta-banner/CtaBanner.types.js +1 -1
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +1 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +1 -1
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +6 -2
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +8 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +1 -1
- package/dist/components/blocks/data-table/DataTable.css +170 -0
- package/dist/components/blocks/data-table/DataTable.d.ts +29 -0
- package/dist/components/blocks/data-table/DataTable.js +84 -0
- package/dist/components/blocks/data-table/DataTable.types.d.ts +69 -0
- package/dist/components/blocks/data-table/DataTable.types.js +19 -0
- package/dist/components/blocks/data-table/data-table-impl.css +155 -0
- package/dist/components/blocks/download-banner/DownloadBanner.css +228 -0
- package/dist/components/blocks/download-banner/DownloadBanner.d.ts +28 -0
- package/dist/components/blocks/download-banner/DownloadBanner.js +75 -0
- package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +56 -0
- package/dist/components/blocks/download-banner/DownloadBanner.types.js +23 -0
- package/dist/components/blocks/download-banner/download-banner-impl.css +216 -0
- package/dist/components/blocks/faq-accordion/FaqAccordion.css +1 -0
- package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +3 -7
- package/dist/components/blocks/feature-bullets/FeatureBullets.css +1 -0
- package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +14 -1
- package/dist/components/blocks/feature-cards/FeatureCards.css +1 -0
- package/dist/components/blocks/feature-cards/FeatureCards.d.ts +2 -1
- package/dist/components/blocks/feature-cards/FeatureCards.js +4 -21
- package/dist/components/blocks/feature-cards/feature-cards-impl.css +10 -9
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.css +115 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.d.ts +30 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.js +160 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +52 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.js +17 -0
- package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +207 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.css +1 -0
- package/dist/components/blocks/feature-split/FeatureSplit.css +1 -0
- package/dist/components/blocks/feature-split/feature-split-impl.css +14 -1
- package/dist/components/blocks/feature-stack/FeatureStack.css +86 -0
- package/dist/components/blocks/feature-stack/FeatureStack.d.ts +19 -0
- package/dist/components/blocks/feature-stack/FeatureStack.js +27 -0
- package/dist/components/blocks/feature-stack/FeatureStack.types.d.ts +34 -0
- package/dist/components/blocks/feature-stack/FeatureStack.types.js +14 -0
- package/dist/components/blocks/feature-stack/feature-stack-impl.css +87 -0
- package/dist/components/blocks/image-banner/ImageBanner.css +133 -0
- package/dist/components/blocks/image-banner/ImageBanner.d.ts +32 -0
- package/dist/components/blocks/image-banner/ImageBanner.js +41 -0
- package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +54 -0
- package/dist/components/blocks/image-banner/ImageBanner.types.js +14 -0
- package/dist/components/blocks/image-banner/image-banner-impl.css +281 -0
- package/dist/components/blocks/landing-hero/LandingHero.css +1 -0
- package/dist/components/blocks/logo-columns/LogoColumns.css +1 -0
- package/dist/components/blocks/logo-rows/LogoRows.css +1 -0
- package/dist/components/blocks/page-header/PageHeader.css +1 -0
- package/dist/components/blocks/page-header/PageHeader.js +2 -2
- package/dist/components/blocks/page-header/PageHeader.types.d.ts +4 -2
- package/dist/components/blocks/page-header/PageHeader.types.js +1 -1
- package/dist/components/blocks/page-header/page-header-impl.css +5 -3
- package/dist/components/blocks/product-hero/ProductHero.css +8 -3
- package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
- package/dist/components/blocks/product-hero/ProductHero.js +5 -2
- package/dist/components/blocks/product-hero/ProductHero.types.d.ts +5 -1
- package/dist/components/blocks/product-hero/ProductHero.types.js +1 -0
- package/dist/components/blocks/product-hero/product-hero-impl.css +43 -12
- package/dist/components/blocks/resource-banner/ResourceBanner.css +106 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.d.ts +32 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.js +51 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.types.d.ts +44 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.types.js +14 -0
- package/dist/components/blocks/resource-banner/resource-banner-impl.css +69 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.css +93 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +36 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.js +54 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +32 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.types.js +15 -0
- package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +275 -0
- package/dist/components/blocks/stats/Stats.css +139 -0
- package/dist/components/blocks/stats/Stats.d.ts +24 -0
- package/dist/components/blocks/stats/Stats.js +120 -0
- package/dist/components/blocks/stats/Stats.types.d.ts +36 -0
- package/dist/components/blocks/stats/Stats.types.js +19 -0
- package/dist/components/blocks/stats/stats-count.d.ts +34 -0
- package/dist/components/blocks/stats/stats-count.js +61 -0
- package/dist/components/blocks/stats/stats-impl.css +284 -0
- package/dist/components/blocks/stats/use-wheel.d.ts +37 -0
- package/dist/components/blocks/stats/use-wheel.js +126 -0
- package/dist/components/blocks/steps/Steps.css +202 -0
- package/dist/components/blocks/steps/Steps.d.ts +32 -0
- package/dist/components/blocks/steps/Steps.js +65 -0
- package/dist/components/blocks/steps/Steps.types.d.ts +48 -0
- package/dist/components/blocks/steps/Steps.types.js +21 -0
- package/dist/components/blocks/steps/steps-impl.css +216 -0
- package/dist/components/blocks/steps/use-turn.d.ts +33 -0
- package/dist/components/blocks/steps/use-turn.js +75 -0
- package/dist/components/blocks/sticky-cards/StickyCards.css +154 -0
- package/dist/components/blocks/sticky-cards/StickyCards.d.ts +35 -0
- package/dist/components/blocks/sticky-cards/StickyCards.js +153 -0
- package/dist/components/blocks/sticky-cards/StickyCards.types.d.ts +43 -0
- package/dist/components/blocks/sticky-cards/StickyCards.types.js +18 -0
- package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +393 -0
- package/dist/components/blocks/team-grid/TeamGrid.css +159 -0
- package/dist/components/blocks/team-grid/TeamGrid.d.ts +28 -0
- package/dist/components/blocks/team-grid/TeamGrid.js +74 -0
- package/dist/components/blocks/team-grid/TeamGrid.types.d.ts +51 -0
- package/dist/components/blocks/team-grid/TeamGrid.types.js +20 -0
- package/dist/components/blocks/team-grid/team-grid-impl.css +129 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +1 -1
- package/dist/components/blocks/testimonial-row/TestimonialRow.js +4 -3
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +3 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +1 -1
- package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +8 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +1 -1
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +2 -2
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +8 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +1 -1
- package/dist/components/blocks/text-scroll/TextScroll.css +53 -0
- package/dist/components/blocks/text-scroll/TextScroll.d.ts +5 -0
- package/dist/components/blocks/text-scroll/TextScroll.js +71 -0
- package/dist/components/blocks/text-scroll/TextScroll.types.d.ts +22 -0
- package/dist/components/blocks/text-scroll/TextScroll.types.js +10 -0
- package/dist/components/blocks/text-scroll/text-scroll-impl.css +115 -0
- package/dist/components/blocks/tiers/Tiers.css +233 -0
- package/dist/components/blocks/tiers/Tiers.d.ts +32 -0
- package/dist/components/blocks/tiers/Tiers.js +68 -0
- package/dist/components/blocks/tiers/Tiers.types.d.ts +45 -0
- package/dist/components/blocks/tiers/Tiers.types.js +25 -0
- package/dist/components/blocks/tiers/tiers-impl.css +185 -0
- package/dist/components/blocks/use-rotation.d.ts +12 -2
- package/dist/components/blocks/use-rotation.js +6 -28
- package/dist/components/comparison-cards-data.d.ts +59 -0
- package/dist/components/comparison-cards-data.js +12 -0
- package/dist/components/comparison-table-data.d.ts +39 -0
- package/dist/components/comparison-table-data.js +11 -0
- package/dist/components/core/accordion-item/AccordionItem.css +1 -5
- package/dist/components/core/background/Background.css +23 -0
- package/dist/components/core/background/Background.d.ts +10 -4
- package/dist/components/core/background/Background.js +16 -7
- package/dist/components/core/background/Background.types.d.ts +11 -8
- package/dist/components/core/background/Background.types.js +3 -1
- package/dist/components/core/background/background-impl.css +334 -1
- package/dist/components/core/background/halftone.d.ts +11 -0
- package/dist/components/core/background/halftone.js +43 -3
- package/dist/components/core/background/patterns.d.ts +66 -0
- package/dist/components/core/background/patterns.js +244 -0
- package/dist/components/core/background/shader.d.ts +44 -0
- package/dist/components/core/background/shader.js +307 -0
- package/dist/components/core/background/use-shader.d.ts +11 -0
- package/dist/components/core/background/use-shader.js +25 -0
- package/dist/components/core/background/use-spotlight.d.ts +2 -1
- package/dist/components/core/background/use-spotlight.js +9 -1
- package/dist/components/core/bottom-sheet/BottomSheet.js +2 -2
- package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +3 -1
- package/dist/components/core/breadcrumb/Breadcrumb.d.ts +1 -0
- package/dist/components/core/breadcrumb/Breadcrumb.js +1 -0
- package/dist/components/core/breadcrumb/breadcrumb-impl.css +11 -0
- package/dist/components/core/button/button-impl.css +14 -1
- package/dist/components/core/illustration-card/IllustrationCard.js +1 -1
- package/dist/components/core/illustration-card/illustration-card-impl.css +20 -0
- package/dist/components/core/illustration-scene/IllustrationScene.css +4 -7
- package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +2 -3
- package/dist/components/core/illustration-scene/illustration-scene-impl.css +7 -1
- package/dist/components/core/link/Link.js +7 -3
- package/dist/components/core/link/link-impl.css +29 -2
- package/dist/components/core/navbar/Navbar.css +2 -2
- package/dist/components/core/navbar/Navbar.types.d.ts +1 -1
- package/dist/components/core/navbar-item/NavbarItem.d.ts +2 -1
- package/dist/components/core/navbar-item/NavbarItem.js +3 -10
- package/dist/components/core/navbar-item/NavbarItem.types.d.ts +4 -1
- package/dist/components/core/navbar-item/NavbarItem.types.js +1 -1
- package/dist/components/core/navbar-item/navbar-item-impl.css +10 -0
- package/dist/components/core/navbar-menu/navbar-menu-impl.css +9 -0
- package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +19 -0
- package/dist/components/core/pagination/Pagination.js +1 -1
- package/dist/components/core/pagination/pagination-impl.css +9 -0
- package/dist/components/core/pagination-dots/PaginationDots.d.ts +1 -1
- package/dist/components/core/pagination-dots/PaginationDots.js +3 -3
- package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +3 -1
- package/dist/components/core/segmented-control/SegmentedControl.css +4 -3
- package/dist/components/core/segmented-control/SegmentedControl.js +17 -3
- package/dist/components/core/segmented-control-item/SegmentedControlItem.css +2 -1
- package/dist/components/core/select/Select.js +3 -3
- package/dist/components/core/select/Select.types.d.ts +11 -1
- package/dist/components/core/select/Select.types.js +1 -1
- package/dist/components/core/tab-list/TabList.js +9 -1
- package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +1 -1
- package/dist/components/core/table-header-cell/TableHeaderCell.js +5 -2
- package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +7 -1
- package/dist/components/core/table-header-cell/TableHeaderCell.types.js +1 -1
- package/dist/components/core/text-area/TextArea.d.ts +1 -1
- package/dist/components/core/text-area/TextArea.js +2 -2
- package/dist/components/core/text-area/TextArea.types.d.ts +9 -1
- package/dist/components/core/text-area/TextArea.types.js +1 -1
- package/dist/components/core/text-input/TextInput.d.ts +1 -1
- package/dist/components/core/text-input/TextInput.js +2 -2
- package/dist/components/core/text-input/TextInput.types.d.ts +9 -1
- package/dist/components/core/text-input/TextInput.types.js +1 -1
- package/dist/components/data-table-data.d.ts +33 -0
- package/dist/components/data-table-data.js +12 -0
- package/dist/components/download-banner-data.d.ts +52 -0
- package/dist/components/download-banner-data.js +11 -0
- package/dist/components/index.d.ts +45 -0
- package/dist/components/index.js +32 -0
- package/dist/components/resource-banner-data.d.ts +34 -0
- package/dist/components/resource-banner-data.js +13 -0
- package/dist/components/scene-scroll-data.d.ts +24 -0
- package/dist/components/scene-scroll-data.js +9 -0
- package/dist/components/stats-data.d.ts +28 -0
- package/dist/components/stats-data.js +11 -0
- package/dist/components/steps-data.d.ts +38 -0
- package/dist/components/steps-data.js +13 -0
- package/dist/components/sticky-cards-data.d.ts +43 -0
- package/dist/components/sticky-cards-data.js +12 -0
- package/dist/components/team-grid-data.d.ts +38 -0
- package/dist/components/team-grid-data.js +11 -0
- package/dist/components/tiers-data.d.ts +47 -0
- package/dist/components/tiers-data.js +13 -0
- package/dist/marketing.css +77 -28
- package/package.json +1 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* Two badges to a row on a phone, each chip filling its column, so every badge is the same size
|
|
7
|
+
* there as it is from the fold. `minmax(0, 1fr)` rather than `1fr`, so a column narrower than the
|
|
8
|
+
* artwork narrows the artwork — it keeps its proportions inside the chip — instead of pushing the
|
|
9
|
+
* grid past the card.
|
|
10
|
+
*/
|
|
11
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badges {
|
|
12
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badge-link {
|
|
16
|
+
inline-size: 100%;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* The code and its line from the fold, and the badges a row that wraps.
|
|
21
|
+
*
|
|
22
|
+
* On a phone the generated sheet draws neither the code nor the line telling the reader to scan
|
|
23
|
+
* it — the reference design's swap, and its reason: a code is for a reader on a device other than
|
|
24
|
+
* the one it opens on, and on a phone the reader is holding that device. The heading stays, so the
|
|
25
|
+
* region keeps one name at every width. The badges there are two to a row, each filling its
|
|
26
|
+
* column, the reference's phone grid.
|
|
27
|
+
*
|
|
28
|
+
* From the fold there is room for the code beside the words, and the badges sit in a row that
|
|
29
|
+
* wraps, each chip size.download-banner.badge wide — one width for every store, whatever the shape
|
|
30
|
+
* of its artwork.
|
|
31
|
+
*
|
|
32
|
+
* `48rem` longhand because `var()` is not permitted in a container query condition, and it is the
|
|
33
|
+
* width the rest of this package folds at.
|
|
34
|
+
*/
|
|
35
|
+
@container (min-width: 48rem) {
|
|
36
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__qr-tile,
|
|
37
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__qr-label {
|
|
38
|
+
display: block;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badges {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-wrap: wrap;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badge-link {
|
|
47
|
+
inline-size: var(--size-download-banner-badge);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* From 64rem the heading and the badges side by side.
|
|
53
|
+
*
|
|
54
|
+
* The reference's desktop card: the code and its words at the start, the badges ranged to the end
|
|
55
|
+
* and wrapping there when there are more than the row holds. The words keep their own width and the
|
|
56
|
+
* badges take what is left, so a long set wraps under itself rather than pushing the heading into a
|
|
57
|
+
* column a word wide. `end` rather than right, so a mirrored page ranges them the other way.
|
|
58
|
+
*/
|
|
59
|
+
@container (min-width: 64rem) {
|
|
60
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__card {
|
|
61
|
+
align-items: center;
|
|
62
|
+
flex-direction: row;
|
|
63
|
+
justify-content: space-between;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__lead {
|
|
67
|
+
flex: 0 1 auto;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner .dds-downloadbanner__badges {
|
|
71
|
+
flex: 1 1 0;
|
|
72
|
+
justify-content: flex-end;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* The featured card: the brand's coral, with its pattern inside it.
|
|
78
|
+
*
|
|
79
|
+
* color.bg.brand, the same in both themes, with the pattern on Background's brand tone — the mesh
|
|
80
|
+
* there is the design system's own front page. Every word on it is white, color.fg.on-brand, the
|
|
81
|
+
* line under the heading and the small print included: the quieter white the dark band uses is too
|
|
82
|
+
* faint on the coral, as CtaBanner found. The badges keep their own black, which reads on the coral.
|
|
83
|
+
* The featured card draws no QR code: it promotes the app with the app's own image, and the badges
|
|
84
|
+
* are its one way in.
|
|
85
|
+
*
|
|
86
|
+
* The pattern is held inside the card's own corners by its own layer, rounded as the card is, rather
|
|
87
|
+
* than by the card clipping everything it holds — the app's image rises out of the card's top edge,
|
|
88
|
+
* and a card that clipped would cut it off. The pattern stacks under the words.
|
|
89
|
+
*/
|
|
90
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card {
|
|
91
|
+
background-color: var(--color-bg-brand);
|
|
92
|
+
color: var(--color-fg-on-brand);
|
|
93
|
+
isolation: isolate;
|
|
94
|
+
position: relative;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card > .dds-background {
|
|
98
|
+
border-radius: inherit;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] :is(.dds-downloadbanner__description, .dds-downloadbanner__disclaimer) {
|
|
102
|
+
color: var(--color-fg-on-brand);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] :is(.dds-downloadbanner__lead, .dds-downloadbanner__badges) {
|
|
106
|
+
position: relative;
|
|
107
|
+
z-index: 1;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
/*
|
|
112
|
+
* The featured card's layout: a page promoting an app.
|
|
113
|
+
*
|
|
114
|
+
* A grid rather than the standard card's row. On a phone it stacks — the app's name, the heading
|
|
115
|
+
* and the line, the badges, and the app's image under them, resting on the card's foot.
|
|
116
|
+
*
|
|
117
|
+
* The lead is opened out (`display: contents`) so the words are placed on the card's grid
|
|
118
|
+
* themselves, beside the app's image from the fold.
|
|
119
|
+
*/
|
|
120
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card {
|
|
121
|
+
align-items: center;
|
|
122
|
+
display: grid;
|
|
123
|
+
grid-template-areas:
|
|
124
|
+
'text'
|
|
125
|
+
'badges'
|
|
126
|
+
'media';
|
|
127
|
+
grid-template-columns: minmax(0, 1fr);
|
|
128
|
+
justify-content: normal;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__lead {
|
|
132
|
+
display: contents;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* Opened out, the lead stacks nothing above the pattern any more, so its words are
|
|
136
|
+
lifted over the pattern themselves — and the app's image with them. */
|
|
137
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] :is(.dds-downloadbanner__text, .dds-downloadbanner__media) {
|
|
138
|
+
position: relative;
|
|
139
|
+
z-index: 1;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__text {
|
|
143
|
+
grid-area: text;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__badges {
|
|
147
|
+
grid-area: badges;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/*
|
|
151
|
+
* The app's image rests on the card's foot: it reaches down through the card's own padding to the
|
|
152
|
+
* bottom edge, so the phone stands on the card rather than floating in it. The image is the page's,
|
|
153
|
+
* at its own proportions, never wider than its column.
|
|
154
|
+
*/
|
|
155
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media {
|
|
156
|
+
align-self: end;
|
|
157
|
+
grid-area: media;
|
|
158
|
+
justify-self: center;
|
|
159
|
+
max-inline-size: 100%;
|
|
160
|
+
margin-block-end: calc(-1 * var(--space-inset-card));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media > * {
|
|
164
|
+
block-size: auto;
|
|
165
|
+
inline-size: 100%;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/*
|
|
169
|
+
* Bare media is a block; a component keeps its own display.
|
|
170
|
+
*
|
|
171
|
+
* `display: block` is for what arrives as a raw element — an image, a video, an inline SVG — which
|
|
172
|
+
* sits on a text baseline otherwise and leaves a gap under it. Written at no weight at all, so a
|
|
173
|
+
* component the page placed here — an IllustrationScene, whose grid lays its pane over its photo —
|
|
174
|
+
* keeps the display its own sheet gives it. In the rule above, a class deeper than the component's
|
|
175
|
+
* root, it turned the scene's grid into a block, and the pane fell below the photo and was clipped.
|
|
176
|
+
*/
|
|
177
|
+
:where([data-dds-context="marketing"] .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media > *) {
|
|
178
|
+
display: block;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
/*
|
|
183
|
+
* At full width, the split: the words over the badges on one side, the app on the other at its own
|
|
184
|
+
* width (size.download-banner.media, a phone held out rather than a slab). The app rises out of the
|
|
185
|
+
* card's top edge by the step a heading keeps from its content, so the card reads as the app being
|
|
186
|
+
* held out to the reader.
|
|
187
|
+
*
|
|
188
|
+
* At 64rem rather than the fold. Between the two the words column is narrow, its heading wraps and
|
|
189
|
+
* its badges stack, so the words stand taller than the app: the app, resting on the card's foot,
|
|
190
|
+
* then sat well below the top edge with coral above it and never rose. Stacked, as on a phone, until
|
|
191
|
+
* there is room for the split to look like one.
|
|
192
|
+
*/
|
|
193
|
+
@container (min-width: 64rem) {
|
|
194
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__card {
|
|
195
|
+
grid-template-areas:
|
|
196
|
+
'text media'
|
|
197
|
+
'badges media';
|
|
198
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* The badges start under the words, where the standard card ranges them to the end. The app is
|
|
202
|
+
taller than the words, and its two rows share what it adds; the words sit at the foot of theirs
|
|
203
|
+
and the badges at the head of theirs, so the two stay together in the middle of the card. */
|
|
204
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__text {
|
|
205
|
+
align-self: end;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__badges {
|
|
209
|
+
align-self: start;
|
|
210
|
+
justify-content: flex-start;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
:where([data-dds-context="marketing"]) .dds-downloadbanner[data-variant='featured'] .dds-downloadbanner__media {
|
|
214
|
+
margin-block-start: calc(-1 * (var(--space-inset-card) + var(--space-heading-content)));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
/*
|
|
24
24
|
* The questions turn round on the dark band.
|
|
25
25
|
*
|
|
26
|
-
* AccordionItem draws its question in color.fg.default, its chevron
|
|
26
|
+
* AccordionItem draws its question in color.fg.default, its chevron in color.fg.muted,
|
|
27
27
|
* its rules in color.border.subtle and its focus ring in color.border.focus — every one of them made
|
|
28
28
|
* for a light page, and every one dark on near-black. It has no tone to answer with, so the block,
|
|
29
|
-
* which knows its ground, gives it the dark band's fixed roles: white questions, a chevron
|
|
30
|
-
*
|
|
29
|
+
* which knows its ground, gives it the dark band's fixed roles: white questions, a chevron at
|
|
30
|
+
* fg.muted-inverse, rules at the band's veil, the band's own focus ring. The answers need
|
|
31
31
|
* nothing: they take the section's ink, which is already white.
|
|
32
32
|
*/
|
|
33
33
|
:where([data-dds-context="marketing"]) .dds-faqaccordion[data-ground="strong"] .dds-accordionitem {
|
|
@@ -38,10 +38,6 @@
|
|
|
38
38
|
color: var(--color-fg-on-brand-strong);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
:where([data-dds-context="marketing"])
|
|
42
|
-
.dds-faqaccordion[data-ground="strong"]
|
|
43
|
-
.dds-accordionitem
|
|
44
|
-
.dds-accordionitem__trigger:hover:where(:not(:disabled)),
|
|
45
41
|
:where([data-dds-context="marketing"]) .dds-faqaccordion[data-ground="strong"] .dds-accordionitem .dds-accordionitem__marker {
|
|
46
42
|
color: var(--color-fg-muted-inverse);
|
|
47
43
|
}
|
|
@@ -91,11 +91,24 @@
|
|
|
91
91
|
*/
|
|
92
92
|
:where([data-dds-context="marketing"]) .dds-featurebullets .dds-featurebullets__media > * {
|
|
93
93
|
block-size: 100%;
|
|
94
|
-
display: block;
|
|
95
94
|
inline-size: 100%;
|
|
96
95
|
object-fit: cover;
|
|
97
96
|
}
|
|
98
97
|
|
|
98
|
+
/*
|
|
99
|
+
* Bare media is a block; a component keeps its own display.
|
|
100
|
+
*
|
|
101
|
+
* `display: block` is for what arrives as a raw element — an image, a video, an inline SVG — which
|
|
102
|
+
* sits on a text baseline otherwise and leaves a gap under it. Written at no weight at all, so a
|
|
103
|
+
* component the page placed here — an IllustrationScene, whose grid lays its pane over its photo —
|
|
104
|
+
* keeps the display its own sheet gives it. In the rule above, a class deeper than the component's
|
|
105
|
+
* root, it turned the scene's grid into a block, and the pane fell below the photo and was clipped.
|
|
106
|
+
*/
|
|
107
|
+
:where([data-dds-context="marketing"] .dds-featurebullets .dds-featurebullets__media > *) {
|
|
108
|
+
display: block;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
99
112
|
:where([data-dds-context="marketing"]) .dds-featurebullets .dds-featurebullets__media img {
|
|
100
113
|
block-size: 100%;
|
|
101
114
|
display: block;
|
|
@@ -13,7 +13,8 @@ export type { FeatureCardsProps };
|
|
|
13
13
|
* how many cards share a row.
|
|
14
14
|
*
|
|
15
15
|
* The row is read from the cards. One column on a phone and two from the fold; at full width three,
|
|
16
|
-
* four when there are exactly four, and one
|
|
16
|
+
* four when there are exactly four, two filling the row half each, and one held to two thirds of
|
|
17
|
+
* it, centred. A card
|
|
17
18
|
* alone lays its words beside a portrait picture. The stylesheet asks all of it of the markup — the
|
|
18
19
|
* count is already there, and a prop restating it is a second place for the two to disagree.
|
|
19
20
|
*
|
|
@@ -1,31 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { useId } from 'react';
|
|
4
4
|
import './FeatureCards.css';
|
|
5
5
|
import './feature-cards-impl.css';
|
|
6
6
|
import '../block-reveal.css';
|
|
7
7
|
import { given } from '../../given.js';
|
|
8
|
+
import { cardsOf } from '../cards-of.js';
|
|
8
9
|
import { arriving, useReveal } from '../use-reveal.js';
|
|
9
10
|
import { featureCardsDefaults, featureCardsParts } from './FeatureCards.types.js';
|
|
10
|
-
/**
|
|
11
|
-
* The cards, with any fragment opened out.
|
|
12
|
-
*
|
|
13
|
-
* `Children.toArray` flattens arrays and leaves a fragment whole, so a page writing
|
|
14
|
-
* `<>{cards}</>` handed over one child: every card in a single cell, and the grid reading the set
|
|
15
|
-
* as one card alone. A fragment is the page grouping its own markup, never a card, so it is opened
|
|
16
|
-
* out here and the grid counts what is inside it.
|
|
17
|
-
*/
|
|
18
|
-
function cardsOf(children, within = '') {
|
|
19
|
-
return Children.toArray(children).flatMap((child, at) => {
|
|
20
|
-
// `toArray` keys a fragment's children afresh — `.0`, `.1` — so a card is keyed by the
|
|
21
|
-
// fragment it came out of as well as its own place, or two cards from different groups share a
|
|
22
|
-
// key and React reconciles one into the other's cell.
|
|
23
|
-
const key = `${within}${isValidElement(child) && child.key !== null ? child.key : at}`;
|
|
24
|
-
return isValidElement(child) && child.type === Fragment
|
|
25
|
-
? cardsOf(child.props.children, `${key}/`)
|
|
26
|
-
: [{ key, card: child }];
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
11
|
/**
|
|
30
12
|
* Where a card comes in the arrival, capped so a long set does not keep a reader waiting.
|
|
31
13
|
*
|
|
@@ -46,7 +28,8 @@ const LAST_STEP = FIRST_CARD + 3;
|
|
|
46
28
|
* how many cards share a row.
|
|
47
29
|
*
|
|
48
30
|
* The row is read from the cards. One column on a phone and two from the fold; at full width three,
|
|
49
|
-
* four when there are exactly four, and one
|
|
31
|
+
* four when there are exactly four, two filling the row half each, and one held to two thirds of
|
|
32
|
+
* it, centred. A card
|
|
50
33
|
* alone lays its words beside a portrait picture. The stylesheet asks all of it of the markup — the
|
|
51
34
|
* count is already there, and a prop restating it is a second place for the two to disagree.
|
|
52
35
|
*
|
|
@@ -122,22 +122,23 @@
|
|
|
122
122
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
/* A pair as two columns of their own, rather than two of three with an empty third beside them
|
|
126
|
-
the
|
|
125
|
+
/* A pair as two columns of their own, rather than two of three with an empty third beside them,
|
|
126
|
+
across the whole row as three and four are — each card half of it. */
|
|
127
127
|
:where([data-dds-context="marketing"]) .dds-featurecards .dds-featurecards__grid:has(> :nth-child(2):last-child) {
|
|
128
128
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
/*
|
|
132
|
-
* One
|
|
132
|
+
* One card alone holds to two thirds of the row, centred, rather than the whole of it.
|
|
133
133
|
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
* the
|
|
134
|
+
* One across the full width is a banner. Two thirds is exactly two of the three columns and the
|
|
135
|
+
* gutter between them — the width a pair takes in a row of three. Computed from the row's own
|
|
136
|
+
* width and gutter rather than a fixed measure, so it follows the grid wherever the grid is.
|
|
137
|
+
*
|
|
138
|
+
* A pair is not held: it fills the row, as three and four do, so a section's cards reach the same
|
|
139
|
+
* edges whatever their number.
|
|
139
140
|
*/
|
|
140
|
-
:where([data-dds-context="marketing"]) .dds-featurecards .dds-featurecards__grid:
|
|
141
|
+
:where([data-dds-context="marketing"]) .dds-featurecards .dds-featurecards__grid:has(> :only-child) {
|
|
141
142
|
margin-inline: auto;
|
|
142
143
|
max-inline-size: calc((100% - 2 * var(--space-grid-gutter)) * 2 / 3 + var(--space-grid-gutter));
|
|
143
144
|
inline-size: 100%;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/* GENERATED from featurecardscarousel.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel {
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
container-type: inline-size;
|
|
6
|
+
display: flex;
|
|
7
|
+
inline-size: 100%;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
overflow: clip;
|
|
10
|
+
overflow-wrap: anywhere;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__inner {
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
inline-size: 100%;
|
|
18
|
+
min-inline-size: 0;
|
|
19
|
+
max-inline-size: var(--size-content-max);
|
|
20
|
+
padding-block: var(--space-section-default);
|
|
21
|
+
padding-inline: var(--space-inset-page);
|
|
22
|
+
row-gap: var(--space-heading-content);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__header {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
min-inline-size: 0;
|
|
29
|
+
max-inline-size: var(--size-measure-heading);
|
|
30
|
+
row-gap: var(--space-gap-none);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__title {
|
|
34
|
+
margin-block: 0;
|
|
35
|
+
text-wrap: balance;
|
|
36
|
+
font-family: var(--font-h2-family);
|
|
37
|
+
font-size: var(--font-h2-size);
|
|
38
|
+
font-weight: var(--font-h2-weight);
|
|
39
|
+
letter-spacing: var(--font-h2-letter-spacing);
|
|
40
|
+
line-height: var(--font-h2-line-height);
|
|
41
|
+
margin-block-end: var(--space-heading-title-description);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__description {
|
|
45
|
+
margin-block: 0;
|
|
46
|
+
font-family: var(--font-body-md-family);
|
|
47
|
+
font-size: var(--font-body-md-size);
|
|
48
|
+
font-weight: var(--font-body-md-weight);
|
|
49
|
+
letter-spacing: var(--font-body-md-letter-spacing);
|
|
50
|
+
line-height: var(--font-body-md-line-height);
|
|
51
|
+
max-inline-size: var(--size-measure-description);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__carousel {
|
|
55
|
+
display: flex;
|
|
56
|
+
flex-direction: column;
|
|
57
|
+
min-inline-size: 0;
|
|
58
|
+
row-gap: var(--space-gap-xl);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track {
|
|
62
|
+
display: flex;
|
|
63
|
+
outline-style: solid;
|
|
64
|
+
column-gap: var(--space-grid-gutter);
|
|
65
|
+
outline-width: var(--border-width-none);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__item {
|
|
69
|
+
display: grid;
|
|
70
|
+
min-inline-size: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__footer {
|
|
74
|
+
align-items: center;
|
|
75
|
+
display: flex;
|
|
76
|
+
justify-content: space-between;
|
|
77
|
+
column-gap: var(--space-gap-lg);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__nav {
|
|
81
|
+
display: flex;
|
|
82
|
+
flex: none;
|
|
83
|
+
column-gap: var(--space-gap-md);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__nav-slot {
|
|
87
|
+
display: flex;
|
|
88
|
+
border-radius: var(--radius-pill);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel .dds-featurecardscarousel__track:focus-visible {
|
|
92
|
+
outline-color: var(--color-border-focus);
|
|
93
|
+
outline-width: var(--border-width-focus);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="page"] {
|
|
97
|
+
background-color: var(--color-bg-page);
|
|
98
|
+
color: var(--color-fg-default);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="strong"] {
|
|
102
|
+
background-color: var(--color-bg-brand-strong);
|
|
103
|
+
color: var(--color-fg-on-brand-strong);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="subtle"] {
|
|
107
|
+
background-color: var(--color-bg-page);
|
|
108
|
+
background-image: linear-gradient(var(--color-bg-band-subtle), var(--color-bg-band-subtle));
|
|
109
|
+
color: var(--color-fg-default);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
:where([data-dds-context="marketing"]) .dds-featurecardscarousel[data-ground="strong"] .dds-featurecardscarousel__track:focus-visible {
|
|
113
|
+
outline-color: var(--color-border-focus-on-brand-strong);
|
|
114
|
+
}
|
|
115
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import './FeatureCardsCarousel.css';
|
|
2
|
+
import './feature-cards-carousel-impl.css';
|
|
3
|
+
import '../block-reveal.css';
|
|
4
|
+
import { type FeatureCardsCarouselProps } from './FeatureCardsCarousel.types.js';
|
|
5
|
+
export type { FeatureCardsCarouselProps };
|
|
6
|
+
/**
|
|
7
|
+
* A heading over a row of the page's own cards, moved along a stop at a time — the reference site's
|
|
8
|
+
* FeatureCardsCarousel.
|
|
9
|
+
*
|
|
10
|
+
* The cards are Card or CardButton with a CardBody inside, as in FeatureCards: a card's fill, its
|
|
11
|
+
* picture and where it leads are the card's, so the reference's coral, dark and light slides are
|
|
12
|
+
* Card's accent, accent-strong and surface-light, and its cover picture is CardBody's overMedia.
|
|
13
|
+
* What this decides is the heading, the row and the way along it.
|
|
14
|
+
*
|
|
15
|
+
* The browser does the scrolling and the snapping, TestimonialRow's way; this reads where the row
|
|
16
|
+
* is. A stop is a card's start, until the last few cards are all in view — those share the last
|
|
17
|
+
* stop, the row's end, so the row never scrolls into empty space and there are fewer dots than
|
|
18
|
+
* cards at full width. The dots say which stop the row is at and move to any one pressed; the
|
|
19
|
+
* arrows step one either way.
|
|
20
|
+
*
|
|
21
|
+
* Autoplay is off unless asked for. On, PaginationDots holds the clock, as it does for every block
|
|
22
|
+
* that rotates: each motion.duration.dwell it reports the next stop, wrapping from the last to the
|
|
23
|
+
* first, and this scrolls there. It holds while the pointer is over the band or focus is inside it,
|
|
24
|
+
* never runs for a reader who asked for less motion, and stops for good once the reader presses
|
|
25
|
+
* anything in the band or swipes the row.
|
|
26
|
+
*
|
|
27
|
+
* `'use client'` for the row's position, the clock, the arrival, and `useId`, which names the
|
|
28
|
+
* region by its heading.
|
|
29
|
+
*/
|
|
30
|
+
export declare function FeatureCardsCarousel({ ground, title, description, autoplay, label, previousLabel, nextLabel, controlsLabel, stopLabel, children, }: FeatureCardsCarouselProps): import("react").JSX.Element | null;
|