@deriv-com/dds-marketing 0.1.0 → 1.0.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 +201 -0
- package/.llm/components/accordionitem.md +244 -0
- package/.llm/components/aspectratio.md +220 -0
- package/.llm/components/badge.md +239 -0
- package/.llm/components/bottomsheet.md +412 -0
- package/.llm/components/breadcrumb.md +205 -0
- package/.llm/components/breadcrumbitem.md +186 -0
- package/.llm/components/button.md +295 -0
- package/.llm/components/buttonicon.md +321 -0
- package/.llm/components/card.md +327 -0
- package/.llm/components/cardbody.md +435 -0
- package/.llm/components/cardbutton.md +273 -0
- package/.llm/components/checkbox.md +293 -0
- package/.llm/components/ctabanner.md +186 -0
- package/.llm/components/ctabannerslider.md +204 -0
- package/.llm/components/divider.md +238 -0
- package/.llm/components/dropdownmenu.md +461 -0
- package/.llm/components/faqaccordion.md +217 -0
- package/.llm/components/featurebullets.md +254 -0
- package/.llm/components/featurecards.md +313 -0
- package/.llm/components/featurescroll.md +284 -0
- package/.llm/components/featuresplit.md +249 -0
- package/.llm/components/filterchip.md +322 -0
- package/.llm/components/footer.md +416 -0
- package/.llm/components/footergroup.md +249 -0
- package/.llm/components/grid.md +667 -0
- package/.llm/components/icon.md +202 -0
- package/.llm/components/landinghero.md +254 -0
- package/.llm/components/link.md +362 -0
- package/.llm/components/logocolumns.md +235 -0
- package/.llm/components/logorows.md +212 -0
- package/.llm/components/menuitem.md +226 -0
- package/.llm/components/navbar.md +522 -0
- package/.llm/components/navbaritem.md +246 -0
- package/.llm/components/navbarmenu.md +327 -0
- package/.llm/components/navbarmenugroup.md +192 -0
- package/.llm/components/navbarpanel.md +263 -0
- package/.llm/components/navbarswitcher.md +351 -0
- package/.llm/components/navbarswitcheroption.md +164 -0
- package/.llm/components/option.md +276 -0
- package/.llm/components/pageheader.md +231 -0
- package/.llm/components/pagination.md +298 -0
- package/.llm/components/paginationdots.md +215 -0
- package/.llm/components/producthero.md +248 -0
- package/.llm/components/removablechip.md +255 -0
- package/.llm/components/row.md +389 -0
- package/.llm/components/scroller.md +478 -0
- package/.llm/components/searchinput.md +287 -0
- package/.llm/components/segmentedcontrol.md +366 -0
- package/.llm/components/segmentedcontrolitem.md +280 -0
- package/.llm/components/select.md +517 -0
- package/.llm/components/selectchip.md +375 -0
- package/.llm/components/spinner.md +230 -0
- package/.llm/components/stack.md +342 -0
- package/.llm/components/statusdot.md +213 -0
- package/.llm/components/subdomainnavbar.md +335 -0
- package/.llm/components/tab.md +299 -0
- package/.llm/components/table.md +668 -0
- package/.llm/components/tablebody.md +266 -0
- package/.llm/components/tablecell.md +256 -0
- package/.llm/components/tablehead.md +256 -0
- package/.llm/components/tableheadercell.md +306 -0
- package/.llm/components/tablerow.md +293 -0
- package/.llm/components/tablist.md +218 -0
- package/.llm/components/testimonialrow.md +235 -0
- package/.llm/components/testimonialslider.md +254 -0
- package/.llm/components/textarea.md +370 -0
- package/.llm/components/textinput.md +475 -0
- package/.llm/components/tooltip.md +275 -0
- package/.llm/components/typography.md +253 -0
- package/.llm/digest/accordion.md +43 -0
- package/.llm/digest/accordionitem.md +47 -0
- package/.llm/digest/aspectratio.md +47 -0
- package/.llm/digest/badge.md +45 -0
- package/.llm/digest/bottomsheet.md +69 -0
- package/.llm/digest/breadcrumb.md +38 -0
- package/.llm/digest/breadcrumbitem.md +43 -0
- package/.llm/digest/button.md +53 -0
- package/.llm/digest/buttonicon.md +61 -0
- package/.llm/digest/card.md +51 -0
- package/.llm/digest/cardbody.md +70 -0
- package/.llm/digest/cardbutton.md +50 -0
- package/.llm/digest/checkbox.md +63 -0
- package/.llm/digest/ctabanner.md +44 -0
- package/.llm/digest/ctabannerslider.md +45 -0
- package/.llm/digest/divider.md +52 -0
- package/.llm/digest/dropdownmenu.md +67 -0
- package/.llm/digest/faqaccordion.md +43 -0
- package/.llm/digest/featurebullets.md +52 -0
- package/.llm/digest/featurecards.md +49 -0
- package/.llm/digest/featurescroll.md +52 -0
- package/.llm/digest/featuresplit.md +54 -0
- package/.llm/digest/filterchip.md +68 -0
- package/.llm/digest/footer.md +57 -0
- package/.llm/digest/footergroup.md +42 -0
- package/.llm/digest/grid.md +62 -0
- package/.llm/digest/icon.md +45 -0
- package/.llm/digest/landinghero.md +53 -0
- package/.llm/digest/link.md +59 -0
- package/.llm/digest/logocolumns.md +55 -0
- package/.llm/digest/logorows.md +48 -0
- package/.llm/digest/menuitem.md +46 -0
- package/.llm/digest/navbar.md +75 -0
- package/.llm/digest/navbaritem.md +54 -0
- package/.llm/digest/navbarmenu.md +54 -0
- package/.llm/digest/navbarmenugroup.md +40 -0
- package/.llm/digest/navbarpanel.md +53 -0
- package/.llm/digest/navbarswitcher.md +51 -0
- package/.llm/digest/navbarswitcheroption.md +37 -0
- package/.llm/digest/option.md +54 -0
- package/.llm/digest/pageheader.md +49 -0
- package/.llm/digest/pagination.md +60 -0
- package/.llm/digest/paginationdots.md +43 -0
- package/.llm/digest/producthero.md +53 -0
- package/.llm/digest/removablechip.md +51 -0
- package/.llm/digest/row.md +60 -0
- package/.llm/digest/scroller.md +59 -0
- package/.llm/digest/searchinput.md +56 -0
- package/.llm/digest/segmentedcontrol.md +59 -0
- package/.llm/digest/segmentedcontrolitem.md +59 -0
- package/.llm/digest/select.md +92 -0
- package/.llm/digest/selectchip.md +73 -0
- package/.llm/digest/spinner.md +52 -0
- package/.llm/digest/stack.md +56 -0
- package/.llm/digest/statusdot.md +46 -0
- package/.llm/digest/subdomainnavbar.md +54 -0
- package/.llm/digest/tab.md +60 -0
- package/.llm/digest/table.md +71 -0
- package/.llm/digest/tablebody.md +49 -0
- package/.llm/digest/tablecell.md +55 -0
- package/.llm/digest/tablehead.md +50 -0
- package/.llm/digest/tableheadercell.md +65 -0
- package/.llm/digest/tablerow.md +56 -0
- package/.llm/digest/tablist.md +46 -0
- package/.llm/digest/testimonialrow.md +51 -0
- package/.llm/digest/testimonialslider.md +51 -0
- package/.llm/digest/textarea.md +78 -0
- package/.llm/digest/textinput.md +95 -0
- package/.llm/digest/tooltip.md +58 -0
- package/.llm/digest/typography.md +59 -0
- package/.llm/index.md +107 -0
- package/.llm/rules.md +146 -0
- package/.llm/tokens.md +385 -0
- package/AGENTS.md +189 -0
- package/LICENSE +21 -0
- package/README.md +78 -10
- package/dist/components/banner-data.d.ts +38 -0
- package/dist/components/banner-data.js +15 -0
- package/dist/components/blocks/block-reveal.css +90 -0
- package/dist/components/blocks/cta-banner/CtaBanner.css +66 -0
- package/dist/components/blocks/cta-banner/CtaBanner.d.ts +22 -0
- package/dist/components/blocks/cta-banner/CtaBanner.js +31 -0
- package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +29 -0
- package/dist/components/blocks/cta-banner/CtaBanner.types.js +13 -0
- package/dist/components/blocks/cta-banner/cta-banner-impl.css +29 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +90 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +39 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +60 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +41 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +15 -0
- package/dist/components/blocks/cta-banner-slider/cta-banner-slider-impl.css +73 -0
- package/dist/components/blocks/faq-accordion/FaqAccordion.css +54 -0
- package/dist/components/blocks/faq-accordion/FaqAccordion.d.ts +20 -0
- package/dist/components/blocks/faq-accordion/FaqAccordion.js +28 -0
- package/dist/components/blocks/faq-accordion/FaqAccordion.types.d.ts +25 -0
- package/dist/components/blocks/faq-accordion/FaqAccordion.types.js +10 -0
- package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +54 -0
- package/dist/components/blocks/feature-bullets/FeatureBullets.css +139 -0
- package/dist/components/blocks/feature-bullets/FeatureBullets.d.ts +31 -0
- package/dist/components/blocks/feature-bullets/FeatureBullets.js +55 -0
- package/dist/components/blocks/feature-bullets/FeatureBullets.types.d.ts +39 -0
- package/dist/components/blocks/feature-bullets/FeatureBullets.types.js +16 -0
- package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +104 -0
- package/dist/components/blocks/feature-cards/FeatureCards.css +84 -0
- package/dist/components/blocks/feature-cards/FeatureCards.d.ts +24 -0
- package/dist/components/blocks/feature-cards/FeatureCards.js +66 -0
- package/dist/components/blocks/feature-cards/FeatureCards.types.d.ts +33 -0
- package/dist/components/blocks/feature-cards/FeatureCards.types.js +14 -0
- package/dist/components/blocks/feature-cards/feature-cards-impl.css +245 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.css +137 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.d.ts +39 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.js +167 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.types.d.ts +40 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.types.js +17 -0
- package/dist/components/blocks/feature-scroll/feature-scroll-impl.css +292 -0
- package/dist/components/blocks/feature-split/FeatureSplit.css +95 -0
- package/dist/components/blocks/feature-split/FeatureSplit.d.ts +30 -0
- package/dist/components/blocks/feature-split/FeatureSplit.js +38 -0
- package/dist/components/blocks/feature-split/FeatureSplit.types.d.ts +39 -0
- package/dist/components/blocks/feature-split/FeatureSplit.types.js +14 -0
- package/dist/components/blocks/feature-split/feature-split-impl.css +83 -0
- package/dist/components/blocks/landing-hero/LandingHero.css +85 -0
- package/dist/components/blocks/landing-hero/LandingHero.d.ts +41 -0
- package/dist/components/blocks/landing-hero/LandingHero.js +54 -0
- package/dist/components/blocks/landing-hero/LandingHero.types.d.ts +37 -0
- package/dist/components/blocks/landing-hero/LandingHero.types.js +15 -0
- package/dist/components/blocks/landing-hero/landing-hero-impl.css +355 -0
- package/dist/components/blocks/logo-columns/LogoColumns.css +161 -0
- package/dist/components/blocks/logo-columns/LogoColumns.d.ts +23 -0
- package/dist/components/blocks/logo-columns/LogoColumns.js +46 -0
- package/dist/components/blocks/logo-columns/LogoColumns.types.d.ts +46 -0
- package/dist/components/blocks/logo-columns/LogoColumns.types.js +18 -0
- package/dist/components/blocks/logo-columns/logo-columns-impl.css +188 -0
- package/dist/components/blocks/logo-rows/LogoRows.css +122 -0
- package/dist/components/blocks/logo-rows/LogoRows.d.ts +20 -0
- package/dist/components/blocks/logo-rows/LogoRows.js +43 -0
- package/dist/components/blocks/logo-rows/LogoRows.types.d.ts +36 -0
- package/dist/components/blocks/logo-rows/LogoRows.types.js +16 -0
- package/dist/components/blocks/logo-rows/logo-rows-impl.css +179 -0
- package/dist/components/blocks/page-header/PageHeader.css +79 -0
- package/dist/components/blocks/page-header/PageHeader.d.ts +34 -0
- package/dist/components/blocks/page-header/PageHeader.js +43 -0
- package/dist/components/blocks/page-header/PageHeader.types.d.ts +32 -0
- package/dist/components/blocks/page-header/PageHeader.types.js +14 -0
- package/dist/components/blocks/page-header/page-header-impl.css +176 -0
- package/dist/components/blocks/product-hero/ProductHero.css +86 -0
- package/dist/components/blocks/product-hero/ProductHero.d.ts +35 -0
- package/dist/components/blocks/product-hero/ProductHero.js +48 -0
- package/dist/components/blocks/product-hero/ProductHero.types.d.ts +37 -0
- package/dist/components/blocks/product-hero/ProductHero.types.js +15 -0
- package/dist/components/blocks/product-hero/product-hero-impl.css +354 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.css +245 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +20 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.js +128 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +54 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +26 -0
- package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +195 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +181 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +22 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +36 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +49 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +21 -0
- package/dist/components/blocks/testimonial-slider/testimonial-slider-impl.css +202 -0
- package/dist/components/blocks/use-reveal.d.ts +46 -0
- package/dist/components/blocks/use-reveal.js +120 -0
- package/dist/components/blocks/use-rotation.d.ts +62 -0
- package/dist/components/blocks/use-rotation.js +176 -0
- package/dist/components/core/accordion/Accordion.css +10 -0
- package/dist/components/core/accordion/Accordion.d.ts +20 -0
- package/dist/components/core/accordion/Accordion.js +69 -0
- package/dist/components/core/accordion/Accordion.types.d.ts +20 -0
- package/dist/components/core/accordion/Accordion.types.js +7 -0
- package/dist/components/core/accordion-item/AccordionItem.css +99 -0
- package/dist/components/core/accordion-item/AccordionItem.d.ts +44 -0
- package/dist/components/core/accordion-item/AccordionItem.js +63 -0
- package/dist/components/core/accordion-item/AccordionItem.types.d.ts +32 -0
- package/dist/components/core/accordion-item/AccordionItem.types.js +13 -0
- package/dist/components/core/accordion-item/accordion-item-impl.css +107 -0
- package/dist/components/core/badge/Badge.css +37 -0
- package/dist/components/core/badge/Badge.d.ts +37 -0
- package/dist/components/core/badge/Badge.js +40 -0
- package/dist/components/core/badge/Badge.types.d.ts +24 -0
- package/dist/components/core/badge/Badge.types.js +8 -0
- package/dist/components/core/badge/badge-impl.css +32 -0
- package/dist/components/core/bottom-sheet/BottomSheet.css +178 -0
- package/dist/components/core/bottom-sheet/BottomSheet.d.ts +22 -0
- package/dist/components/core/bottom-sheet/BottomSheet.js +359 -0
- package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +67 -0
- package/dist/components/core/bottom-sheet/BottomSheet.types.js +18 -0
- package/dist/components/core/bottom-sheet/bottom-sheet-impl.css +57 -0
- package/dist/components/core/breadcrumb/Breadcrumb.css +19 -0
- package/dist/components/core/breadcrumb/Breadcrumb.d.ts +16 -0
- package/dist/components/core/breadcrumb/Breadcrumb.js +22 -0
- package/dist/components/core/breadcrumb/Breadcrumb.types.d.ts +18 -0
- package/dist/components/core/breadcrumb/Breadcrumb.types.js +9 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.css +34 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.d.ts +12 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.js +15 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.d.ts +22 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.js +9 -0
- package/dist/components/core/button/Button.css +188 -0
- package/dist/components/core/button/Button.d.ts +27 -0
- package/dist/components/core/button/Button.js +57 -0
- package/dist/components/core/button/Button.types.d.ts +35 -0
- package/dist/components/core/button/Button.types.js +9 -0
- package/dist/components/core/button/button-impl.css +71 -0
- package/dist/components/core/button-icon/ButtonIcon.css +151 -0
- package/dist/components/core/button-icon/ButtonIcon.d.ts +34 -0
- package/dist/components/core/button-icon/ButtonIcon.js +117 -0
- package/dist/components/core/button-icon/ButtonIcon.types.d.ts +41 -0
- package/dist/components/core/button-icon/ButtonIcon.types.js +8 -0
- package/dist/components/core/card/Card.css +74 -0
- package/dist/components/core/card/Card.d.ts +24 -0
- package/dist/components/core/card/Card.js +26 -0
- package/dist/components/core/card/Card.types.d.ts +34 -0
- package/dist/components/core/card/Card.types.js +7 -0
- package/dist/components/core/card-body/CardBody.css +144 -0
- package/dist/components/core/card-body/CardBody.d.ts +62 -0
- package/dist/components/core/card-body/CardBody.js +97 -0
- package/dist/components/core/card-body/CardBody.types.d.ts +64 -0
- package/dist/components/core/card-body/CardBody.types.js +16 -0
- package/dist/components/core/card-body/card-body-impl.css +87 -0
- package/dist/components/core/card-button/CardButton.css +82 -0
- package/dist/components/core/card-button/CardButton.d.ts +27 -0
- package/dist/components/core/card-button/CardButton.js +37 -0
- package/dist/components/core/card-button/CardButton.types.d.ts +25 -0
- package/dist/components/core/card-button/CardButton.types.js +7 -0
- package/dist/components/core/card-button/card-button-impl.css +39 -0
- package/dist/components/core/checkbox/Checkbox.css +156 -0
- package/dist/components/core/checkbox/Checkbox.d.ts +21 -0
- package/dist/components/core/checkbox/Checkbox.js +97 -0
- package/dist/components/core/checkbox/Checkbox.types.d.ts +46 -0
- package/dist/components/core/checkbox/Checkbox.types.js +15 -0
- package/dist/components/core/checkbox/checkbox-impl.css +90 -0
- package/dist/components/core/divider/Divider.css +41 -0
- package/dist/components/core/divider/Divider.d.ts +46 -0
- package/dist/components/core/divider/Divider.js +51 -0
- package/dist/components/core/divider/Divider.types.d.ts +25 -0
- package/dist/components/core/divider/Divider.types.js +9 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.css +147 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.d.ts +24 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.js +311 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.types.d.ts +62 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.types.js +12 -0
- package/dist/components/core/dropdown-menu/dropdown-menu-impl.css +70 -0
- package/dist/components/core/filter-chip/FilterChip.css +150 -0
- package/dist/components/core/filter-chip/FilterChip.d.ts +23 -0
- package/dist/components/core/filter-chip/FilterChip.js +37 -0
- package/dist/components/core/filter-chip/FilterChip.types.d.ts +53 -0
- package/dist/components/core/filter-chip/FilterChip.types.js +12 -0
- package/dist/components/core/footer/Footer.css +104 -0
- package/dist/components/core/footer/Footer.d.ts +43 -0
- package/dist/components/core/footer/Footer.js +53 -0
- package/dist/components/core/footer/Footer.types.d.ts +47 -0
- package/dist/components/core/footer/Footer.types.js +18 -0
- package/dist/components/core/footer/footer-impl.css +218 -0
- package/dist/components/core/footer-group/FooterGroup.css +91 -0
- package/dist/components/core/footer-group/FooterGroup.d.ts +32 -0
- package/dist/components/core/footer-group/FooterGroup.js +64 -0
- package/dist/components/core/footer-group/FooterGroup.types.d.ts +25 -0
- package/dist/components/core/footer-group/FooterGroup.types.js +12 -0
- package/dist/components/core/footer-group/footer-group-impl.css +78 -0
- package/dist/components/core/icon/Icon.css +40 -0
- package/dist/components/core/icon/Icon.d.ts +23 -0
- package/dist/components/core/icon/Icon.js +79 -0
- package/dist/components/core/icon/Icon.types.d.ts +24 -0
- package/dist/components/core/icon/Icon.types.js +7 -0
- package/dist/components/core/link/Link.css +89 -0
- package/dist/components/core/link/Link.d.ts +37 -0
- package/dist/components/core/link/Link.js +141 -0
- package/dist/components/core/link/Link.types.d.ts +41 -0
- package/dist/components/core/link/Link.types.js +9 -0
- package/dist/components/core/link/link-impl.css +168 -0
- package/dist/components/core/menu-item/MenuItem.css +70 -0
- package/dist/components/core/menu-item/MenuItem.d.ts +11 -0
- package/dist/components/core/menu-item/MenuItem.js +26 -0
- package/dist/components/core/menu-item/MenuItem.types.d.ts +28 -0
- package/dist/components/core/menu-item/MenuItem.types.js +9 -0
- package/dist/components/core/navbar/Navbar.css +134 -0
- package/dist/components/core/navbar/Navbar.d.ts +52 -0
- package/dist/components/core/navbar/Navbar.js +498 -0
- package/dist/components/core/navbar/Navbar.types.d.ts +68 -0
- package/dist/components/core/navbar/Navbar.types.js +17 -0
- package/dist/components/core/navbar/navbar-impl.css +597 -0
- package/dist/components/core/navbar/navbar-material.css +96 -0
- package/dist/components/core/navbar-item/NavbarItem.css +75 -0
- package/dist/components/core/navbar-item/NavbarItem.d.ts +22 -0
- package/dist/components/core/navbar-item/NavbarItem.js +40 -0
- package/dist/components/core/navbar-item/NavbarItem.types.d.ts +34 -0
- package/dist/components/core/navbar-item/NavbarItem.types.js +10 -0
- package/dist/components/core/navbar-menu/NavbarMenu.css +130 -0
- package/dist/components/core/navbar-menu/NavbarMenu.d.ts +6 -0
- package/dist/components/core/navbar-menu/NavbarMenu.js +187 -0
- package/dist/components/core/navbar-menu/NavbarMenu.types.d.ts +45 -0
- package/dist/components/core/navbar-menu/NavbarMenu.types.js +12 -0
- package/dist/components/core/navbar-menu/navbar-menu-impl.css +186 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.css +26 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.d.ts +17 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.js +22 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.d.ts +14 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.js +7 -0
- package/dist/components/core/navbar-panel/NavbarPanel.css +87 -0
- package/dist/components/core/navbar-panel/NavbarPanel.d.ts +34 -0
- package/dist/components/core/navbar-panel/NavbarPanel.js +46 -0
- package/dist/components/core/navbar-panel/NavbarPanel.types.d.ts +29 -0
- package/dist/components/core/navbar-panel/NavbarPanel.types.js +12 -0
- package/dist/components/core/navbar-panel/navbar-panel-impl.css +104 -0
- package/dist/components/core/navbar-panel/use-navbar-panel.d.ts +26 -0
- package/dist/components/core/navbar-panel/use-navbar-panel.js +135 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.css +118 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.d.ts +21 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.js +91 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.types.d.ts +46 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.types.js +13 -0
- package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +179 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.css +39 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.d.ts +16 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.js +19 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.d.ts +18 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.js +7 -0
- package/dist/components/core/option/Option.css +133 -0
- package/dist/components/core/option/Option.d.ts +25 -0
- package/dist/components/core/option/Option.js +31 -0
- package/dist/components/core/option/Option.types.d.ts +44 -0
- package/dist/components/core/option/Option.types.js +14 -0
- package/dist/components/core/pagination/Pagination.css +163 -0
- package/dist/components/core/pagination/Pagination.d.ts +30 -0
- package/dist/components/core/pagination/Pagination.js +366 -0
- package/dist/components/core/pagination/Pagination.types.d.ts +47 -0
- package/dist/components/core/pagination/Pagination.types.js +12 -0
- package/dist/components/core/pagination/pagination-impl.css +17 -0
- package/dist/components/core/pagination-dots/PaginationDots.css +60 -0
- package/dist/components/core/pagination-dots/PaginationDots.d.ts +25 -0
- package/dist/components/core/pagination-dots/PaginationDots.js +104 -0
- package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +38 -0
- package/dist/components/core/pagination-dots/PaginationDots.types.js +9 -0
- package/dist/components/core/removable-chip/RemovableChip.css +125 -0
- package/dist/components/core/removable-chip/RemovableChip.d.ts +25 -0
- package/dist/components/core/removable-chip/RemovableChip.js +36 -0
- package/dist/components/core/removable-chip/RemovableChip.types.d.ts +38 -0
- package/dist/components/core/removable-chip/RemovableChip.types.js +13 -0
- package/dist/components/core/search-input/SearchInput.css +205 -0
- package/dist/components/core/search-input/SearchInput.d.ts +5 -0
- package/dist/components/core/search-input/SearchInput.js +81 -0
- package/dist/components/core/search-input/SearchInput.types.d.ts +43 -0
- package/dist/components/core/search-input/SearchInput.types.js +13 -0
- package/dist/components/core/search-input/search-input-impl.css +20 -0
- package/dist/components/core/segmented-control/SegmentedControl.css +57 -0
- package/dist/components/core/segmented-control/SegmentedControl.d.ts +37 -0
- package/dist/components/core/segmented-control/SegmentedControl.js +269 -0
- package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +38 -0
- package/dist/components/core/segmented-control/SegmentedControl.types.js +8 -0
- package/dist/components/core/segmented-control/segmented-control-impl.css +57 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.css +151 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.d.ts +50 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.js +101 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +37 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.types.js +10 -0
- package/dist/components/core/segmented-control-item/segmented-control-item-impl.css +69 -0
- package/dist/components/core/select/Select.css +401 -0
- package/dist/components/core/select/Select.d.ts +29 -0
- package/dist/components/core/select/Select.js +524 -0
- package/dist/components/core/select/Select.types.d.ts +96 -0
- package/dist/components/core/select/Select.types.js +26 -0
- package/dist/components/core/select/select-impl.css +114 -0
- package/dist/components/core/select-chip/SelectChip.css +162 -0
- package/dist/components/core/select-chip/SelectChip.d.ts +20 -0
- package/dist/components/core/select-chip/SelectChip.js +276 -0
- package/dist/components/core/select-chip/SelectChip.types.d.ts +62 -0
- package/dist/components/core/select-chip/SelectChip.types.js +14 -0
- package/dist/components/core/select-chip/select-chip-impl.css +49 -0
- package/dist/components/core/spinner/Spinner.css +76 -0
- package/dist/components/core/spinner/Spinner.d.ts +5 -0
- package/dist/components/core/spinner/Spinner.js +29 -0
- package/dist/components/core/spinner/Spinner.types.d.ts +37 -0
- package/dist/components/core/spinner/Spinner.types.js +10 -0
- package/dist/components/core/spinner/spinner-impl.css +27 -0
- package/dist/components/core/status-dot/StatusDot.css +43 -0
- package/dist/components/core/status-dot/StatusDot.d.ts +35 -0
- package/dist/components/core/status-dot/StatusDot.js +46 -0
- package/dist/components/core/status-dot/StatusDot.types.d.ts +29 -0
- package/dist/components/core/status-dot/StatusDot.types.js +7 -0
- package/dist/components/core/status-dot/status-dot-impl.css +42 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.css +89 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.d.ts +21 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.js +127 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.d.ts +43 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.js +13 -0
- package/dist/components/core/subdomain-navbar/subdomain-navbar-impl.css +147 -0
- package/dist/components/core/tab/Tab.css +113 -0
- package/dist/components/core/tab/Tab.d.ts +36 -0
- package/dist/components/core/tab/Tab.js +53 -0
- package/dist/components/core/tab/Tab.types.d.ts +42 -0
- package/dist/components/core/tab/Tab.types.js +13 -0
- package/dist/components/core/tab/tab-impl.css +49 -0
- package/dist/components/core/tab-list/TabList.css +40 -0
- package/dist/components/core/tab-list/TabList.d.ts +26 -0
- package/dist/components/core/tab-list/TabList.js +124 -0
- package/dist/components/core/tab-list/TabList.types.d.ts +20 -0
- package/dist/components/core/tab-list/TabList.types.js +7 -0
- package/dist/components/core/tab-list/tab-list-impl.css +56 -0
- package/dist/components/core/table/Table.css +40 -0
- package/dist/components/core/table/Table.d.ts +19 -0
- package/dist/components/core/table/Table.js +55 -0
- package/dist/components/core/table/Table.types.d.ts +59 -0
- package/dist/components/core/table/Table.types.js +9 -0
- package/dist/components/core/table/table-impl.css +97 -0
- package/dist/components/core/table/use-table-sort.d.ts +43 -0
- package/dist/components/core/table/use-table-sort.js +51 -0
- package/dist/components/core/table-body/TableBody.css +6 -0
- package/dist/components/core/table-body/TableBody.d.ts +12 -0
- package/dist/components/core/table-body/TableBody.js +26 -0
- package/dist/components/core/table-body/TableBody.types.d.ts +36 -0
- package/dist/components/core/table-body/TableBody.types.js +7 -0
- package/dist/components/core/table-cell/TableCell.css +76 -0
- package/dist/components/core/table-cell/TableCell.d.ts +21 -0
- package/dist/components/core/table-cell/TableCell.js +31 -0
- package/dist/components/core/table-cell/TableCell.types.d.ts +43 -0
- package/dist/components/core/table-cell/TableCell.types.js +7 -0
- package/dist/components/core/table-head/TableHead.css +6 -0
- package/dist/components/core/table-head/TableHead.d.ts +22 -0
- package/dist/components/core/table-head/TableHead.js +52 -0
- package/dist/components/core/table-head/TableHead.types.d.ts +39 -0
- package/dist/components/core/table-head/TableHead.types.js +7 -0
- package/dist/components/core/table-head/table-head-impl.css +51 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.css +126 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +21 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.js +34 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +56 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.types.js +9 -0
- package/dist/components/core/table-header-cell/table-header-cell-impl.css +74 -0
- package/dist/components/core/table-row/TableRow.css +18 -0
- package/dist/components/core/table-row/TableRow.d.ts +17 -0
- package/dist/components/core/table-row/TableRow.js +32 -0
- package/dist/components/core/table-row/TableRow.types.d.ts +45 -0
- package/dist/components/core/table-row/TableRow.types.js +7 -0
- package/dist/components/core/table-row/table-row-impl.css +31 -0
- package/dist/components/core/text-area/TextArea.css +325 -0
- package/dist/components/core/text-area/TextArea.d.ts +13 -0
- package/dist/components/core/text-area/TextArea.js +133 -0
- package/dist/components/core/text-area/TextArea.types.d.ts +67 -0
- package/dist/components/core/text-area/TextArea.types.js +19 -0
- package/dist/components/core/text-area/text-area-impl.css +36 -0
- package/dist/components/core/text-input/TextInput.css +400 -0
- package/dist/components/core/text-input/TextInput.d.ts +5 -0
- package/dist/components/core/text-input/TextInput.js +130 -0
- package/dist/components/core/text-input/TextInput.types.d.ts +96 -0
- package/dist/components/core/text-input/TextInput.types.js +24 -0
- package/dist/components/core/text-input/text-input-impl.css +36 -0
- package/dist/components/core/tooltip/Tooltip.css +101 -0
- package/dist/components/core/tooltip/Tooltip.d.ts +51 -0
- package/dist/components/core/tooltip/Tooltip.js +87 -0
- package/dist/components/core/tooltip/Tooltip.types.d.ts +38 -0
- package/dist/components/core/tooltip/Tooltip.types.js +9 -0
- package/dist/components/core/tooltip/TooltipAnchor.d.ts +52 -0
- package/dist/components/core/tooltip/TooltipAnchor.js +69 -0
- package/dist/components/core/tooltip/tooltip-anchor.css +145 -0
- package/dist/components/core/tooltip/tooltip-impl.css +54 -0
- package/dist/components/core/tooltip/use-tooltip.d.ts +111 -0
- package/dist/components/core/tooltip/use-tooltip.js +189 -0
- package/dist/components/core/typography/Typography.css +96 -0
- package/dist/components/core/typography/Typography.d.ts +297 -0
- package/dist/components/core/typography/Typography.js +28 -0
- package/dist/components/core/typography/Typography.types.d.ts +40 -0
- package/dist/components/core/typography/Typography.types.js +7 -0
- package/dist/components/css-time.d.ts +20 -0
- package/dist/components/css-time.js +30 -0
- package/dist/components/given.d.ts +7 -0
- package/dist/components/given.js +9 -0
- package/dist/components/hover-open.d.ts +34 -0
- package/dist/components/hover-open.js +90 -0
- package/dist/components/index.d.ts +149 -1
- package/dist/components/index.js +145 -2
- package/dist/components/layout/aspect-ratio/AspectRatio.css +29 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.d.ts +24 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.js +26 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.types.d.ts +22 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.types.js +7 -0
- package/dist/components/layout/aspect-ratio/aspect-ratio-impl.css +44 -0
- package/dist/components/layout/grid/Grid.css +76 -0
- package/dist/components/layout/grid/Grid.d.ts +31 -0
- package/dist/components/layout/grid/Grid.js +33 -0
- package/dist/components/layout/grid/Grid.types.d.ts +48 -0
- package/dist/components/layout/grid/Grid.types.js +7 -0
- package/dist/components/layout/grid/grid-impl.css +62 -0
- package/dist/components/layout/row/Row.css +85 -0
- package/dist/components/layout/row/Row.d.ts +32 -0
- package/dist/components/layout/row/Row.js +34 -0
- package/dist/components/layout/row/Row.types.d.ts +45 -0
- package/dist/components/layout/row/Row.types.js +7 -0
- package/dist/components/layout/scroller/Scroller.css +59 -0
- package/dist/components/layout/scroller/Scroller.d.ts +34 -0
- package/dist/components/layout/scroller/Scroller.js +36 -0
- package/dist/components/layout/scroller/Scroller.types.d.ts +38 -0
- package/dist/components/layout/scroller/Scroller.types.js +7 -0
- package/dist/components/layout/scroller/scroller-impl.css +45 -0
- package/dist/components/layout/stack/Stack.css +73 -0
- package/dist/components/layout/stack/Stack.d.ts +28 -0
- package/dist/components/layout/stack/Stack.js +30 -0
- package/dist/components/layout/stack/Stack.types.d.ts +41 -0
- package/dist/components/layout/stack/Stack.types.js +7 -0
- package/dist/components/logo-data.d.ts +24 -0
- package/dist/components/logo-data.js +11 -0
- package/dist/components/scroll-data.d.ts +64 -0
- package/dist/components/scroll-data.js +17 -0
- package/dist/components/testimonial-row-data.d.ts +51 -0
- package/dist/components/testimonial-row-data.js +11 -0
- package/dist/components/testimonial-slider-data.d.ts +26 -0
- package/dist/components/testimonial-slider-data.js +10 -0
- package/dist/components/visually-hidden.d.ts +22 -0
- package/dist/components/visually-hidden.js +31 -0
- package/dist/fonts/LICENSE-inter.txt +93 -0
- package/dist/fonts/LICENSE-red-hat-mono.txt +93 -0
- package/dist/fonts/fonts.css +111 -0
- package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
- package/dist/fonts/red-hat-mono-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/red-hat-mono-latin-wght-normal.woff2 +0 -0
- package/dist/marketing.css +581 -162
- package/package.json +13 -4
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { given } from '../../given.js';
|
|
3
|
+
import './BreadcrumbItem.css';
|
|
4
|
+
import { breadcrumbItemDefaults, breadcrumbItemParts, } from './BreadcrumbItem.types.js';
|
|
5
|
+
/**
|
|
6
|
+
* One level of a trail: a link back to it, or the current page as plain text.
|
|
7
|
+
*
|
|
8
|
+
* `current` wins over `href`. The two together ask for a link from the page to
|
|
9
|
+
* itself — a tab stop that goes nowhere — so the component declines.
|
|
10
|
+
*
|
|
11
|
+
* `aria-current="page"` is what identifies the current level to a screen reader.
|
|
12
|
+
*/
|
|
13
|
+
export function BreadcrumbItem({ label, href, current = breadcrumbItemDefaults.current, ...rest }) {
|
|
14
|
+
return (_jsx("li", { className: breadcrumbItemParts.root, ...rest, children: current ? (_jsx("span", { className: breadcrumbItemParts.current, "aria-current": "page", children: label })) : given(href) ? (_jsx("a", { className: breadcrumbItemParts.link, href: href, children: label })) : (label) }));
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { LiHTMLAttributes } from 'react';
|
|
2
|
+
export interface BreadcrumbItemOwnProps {
|
|
3
|
+
/** Always — it is the level's name, and the item renders nothing without it. The word the parent level would use for this place: "Forex", not "Forex markets and instruments" */
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
export type BreadcrumbItemProps = BreadcrumbItemOwnProps & Omit<LiHTMLAttributes<HTMLLIElement>, 'className' | 'label' | 'href' | 'current'> & ({
|
|
7
|
+
current?: boolean;
|
|
8
|
+
href?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
current?: false;
|
|
11
|
+
href?: string;
|
|
12
|
+
});
|
|
13
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
14
|
+
export declare const breadcrumbItemParts: {
|
|
15
|
+
readonly root: "dds-breadcrumbitem";
|
|
16
|
+
readonly link: "dds-breadcrumbitem__link";
|
|
17
|
+
readonly current: "dds-breadcrumbitem__current";
|
|
18
|
+
};
|
|
19
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
20
|
+
export declare const breadcrumbItemDefaults: {
|
|
21
|
+
readonly current: false;
|
|
22
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// GENERATED from breadcrumb-item.contract.json. Do not edit.
|
|
2
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
3
|
+
export const breadcrumbItemParts = {
|
|
4
|
+
root: 'dds-breadcrumbitem',
|
|
5
|
+
link: 'dds-breadcrumbitem__link',
|
|
6
|
+
current: 'dds-breadcrumbitem__current',
|
|
7
|
+
};
|
|
8
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
9
|
+
export const breadcrumbItemDefaults = { current: false };
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/* GENERATED from button.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-button {
|
|
4
|
+
transition-property: background-color, background-image, outline-color, outline-width;
|
|
5
|
+
align-items: center;
|
|
6
|
+
background-color: transparent;
|
|
7
|
+
border-color: transparent;
|
|
8
|
+
border-style: solid;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
flex-direction: row;
|
|
13
|
+
font-family: inherit;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
outline-style: solid;
|
|
16
|
+
padding-block: 0;
|
|
17
|
+
position: relative;
|
|
18
|
+
text-decoration-line: none;
|
|
19
|
+
white-space: nowrap;
|
|
20
|
+
border-radius: var(--radius-pill);
|
|
21
|
+
border-width: var(--border-width-emphasis);
|
|
22
|
+
gap: var(--space-gap-sm);
|
|
23
|
+
outline-width: var(--border-width-none);
|
|
24
|
+
transition-duration: var(--motion-duration-normal);
|
|
25
|
+
transition-timing-function: var(--motion-easing-standard);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:where([data-dds-context="marketing"]) .dds-button .dds-button__label {
|
|
29
|
+
display: block;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
:where([data-dds-context="marketing"]) .dds-button .dds-button__icon {
|
|
33
|
+
flex: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
:where([data-dds-context="marketing"]) .dds-button:focus-visible {
|
|
37
|
+
outline-color: var(--color-border-focus);
|
|
38
|
+
outline-width: var(--border-width-focus);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="lg"] {
|
|
42
|
+
block-size: var(--size-control-lg);
|
|
43
|
+
padding-inline: var(--space-control-lg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="lg"] .dds-button__icon {
|
|
47
|
+
block-size: var(--icon-control-lg);
|
|
48
|
+
inline-size: var(--icon-control-lg);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="lg"] .dds-button__label {
|
|
52
|
+
font-family: var(--font-label-md-family);
|
|
53
|
+
font-size: var(--font-label-md-size);
|
|
54
|
+
font-weight: var(--font-label-md-weight);
|
|
55
|
+
letter-spacing: var(--font-label-md-letter-spacing);
|
|
56
|
+
line-height: var(--font-label-md-line-height);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="md"] {
|
|
60
|
+
block-size: var(--size-control-md);
|
|
61
|
+
padding-inline: var(--space-control-md);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="md"] .dds-button__icon {
|
|
65
|
+
block-size: var(--icon-control-md);
|
|
66
|
+
inline-size: var(--icon-control-md);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="md"] .dds-button__label {
|
|
70
|
+
font-family: var(--font-label-sm-family);
|
|
71
|
+
font-size: var(--font-label-sm-size);
|
|
72
|
+
font-weight: var(--font-label-sm-weight);
|
|
73
|
+
letter-spacing: var(--font-label-sm-letter-spacing);
|
|
74
|
+
line-height: var(--font-label-sm-line-height);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="sm"] {
|
|
78
|
+
block-size: var(--size-control-sm);
|
|
79
|
+
padding-inline: var(--space-control-sm);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="sm"] .dds-button__icon {
|
|
83
|
+
block-size: var(--icon-control-sm);
|
|
84
|
+
inline-size: var(--icon-control-sm);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
:where([data-dds-context="marketing"]) .dds-button[data-size="sm"] .dds-button__label {
|
|
88
|
+
font-family: var(--font-label-sm-family);
|
|
89
|
+
font-size: var(--font-label-sm-size);
|
|
90
|
+
font-weight: var(--font-label-sm-weight);
|
|
91
|
+
letter-spacing: var(--font-label-sm-letter-spacing);
|
|
92
|
+
line-height: var(--font-label-sm-line-height);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="inverse"] {
|
|
96
|
+
background-color: var(--color-bg-strong);
|
|
97
|
+
color: var(--color-fg-on-strong);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="primary"] {
|
|
101
|
+
background-color: var(--color-bg-brand);
|
|
102
|
+
color: var(--color-fg-on-brand);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"] {
|
|
106
|
+
color: var(--color-fg-default);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="inverse"]:hover:where(:not(:disabled)) {
|
|
110
|
+
background-image: linear-gradient(var(--color-bg-hover-inverse), var(--color-bg-hover-inverse));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="primary"]:hover:where(:not(:disabled)) {
|
|
114
|
+
background-color: var(--color-bg-brand-hover);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="inverse"]:active {
|
|
118
|
+
background-image: linear-gradient(var(--color-bg-active-inverse), var(--color-bg-active-inverse));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="primary"]:active {
|
|
122
|
+
background-color: var(--color-bg-brand-active);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
:where([data-dds-context="marketing"]) .dds-button[data-tone="brand"]:focus-visible {
|
|
126
|
+
outline-color: var(--color-border-focus-on-brand-strong);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:where([data-dds-context="marketing"]) .dds-button[data-tone="inverse"]:focus-visible {
|
|
130
|
+
outline-color: var(--color-border-focus-on-brand-strong);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="inverse"][data-tone="brand"] {
|
|
134
|
+
background-color: var(--color-bg-strong-on-brand);
|
|
135
|
+
color: var(--color-fg-on-strong-on-brand);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="brand"] {
|
|
139
|
+
background-color: var(--color-bg-subtle-on-brand-strong);
|
|
140
|
+
color: var(--color-fg-on-brand-strong);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="default"] {
|
|
144
|
+
background-color: var(--color-bg-subtle);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="inverse"] {
|
|
148
|
+
background-color: var(--color-bg-subtle-on-brand-strong);
|
|
149
|
+
color: var(--color-fg-on-brand-strong);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="inverse"][data-tone="brand"]:hover:where(:not(:disabled)) {
|
|
153
|
+
background-image: linear-gradient(var(--color-bg-hover-on-brand-strong), var(--color-bg-hover-on-brand-strong));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="brand"]:hover:where(:not(:disabled)) {
|
|
157
|
+
background-image: linear-gradient(var(--color-bg-hover-on-brand-strong), var(--color-bg-hover-on-brand-strong));
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="default"]:hover:where(:not(:disabled)) {
|
|
161
|
+
background-image: linear-gradient(var(--color-bg-hover), var(--color-bg-hover));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="inverse"]:hover:where(:not(:disabled)) {
|
|
165
|
+
background-image: linear-gradient(var(--color-bg-hover-on-brand-strong), var(--color-bg-hover-on-brand-strong));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="inverse"][data-tone="brand"]:active {
|
|
169
|
+
background-image: linear-gradient(var(--color-bg-active-on-brand-strong), var(--color-bg-active-on-brand-strong));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="brand"]:active {
|
|
173
|
+
background-image: linear-gradient(var(--color-bg-active-on-brand-strong), var(--color-bg-active-on-brand-strong));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="default"]:active {
|
|
177
|
+
background-image: linear-gradient(var(--color-bg-active), var(--color-bg-active));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
:where([data-dds-context="marketing"]) .dds-button[data-variant="secondary"][data-tone="inverse"]:active {
|
|
181
|
+
background-image: linear-gradient(var(--color-bg-active-on-brand-strong), var(--color-bg-active-on-brand-strong));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@media (prefers-reduced-motion: reduce) {
|
|
185
|
+
:where([data-dds-context="marketing"]) .dds-button,
|
|
186
|
+
:where([data-dds-context="marketing"]) .dds-button * { transition: none !important; }
|
|
187
|
+
}
|
|
188
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import './Button.css';
|
|
2
|
+
import './button-impl.css';
|
|
3
|
+
import { type ButtonProps } from './Button.types.js';
|
|
4
|
+
export type { ButtonProps };
|
|
5
|
+
/**
|
|
6
|
+
* Three parts, declared in the contract and styled by the generated stylesheet.
|
|
7
|
+
* The classes come from `buttonParts` rather than being typed here — the CSS is
|
|
8
|
+
* generated from the same anatomy, and a class retyped slightly differently
|
|
9
|
+
* renders a part bare with its rule sitting unused.
|
|
10
|
+
*
|
|
11
|
+
* Which element it renders is decided by `href` and nothing else, the shape CardButton
|
|
12
|
+
* and ButtonIcon already take. A CTA that goes to a page and one that sends a newsletter
|
|
13
|
+
* form are the same press with different destinations, and the element is what tells a
|
|
14
|
+
* browser which: an `<a>` gives cmd-click, a destination in the status bar and a copyable
|
|
15
|
+
* link, and a `<button>` answers Space and does what the page says.
|
|
16
|
+
*
|
|
17
|
+
* It is typed against `AnchorHTMLAttributes`, the branch a marketing CTA takes in the
|
|
18
|
+
* ordinary case, and that is what puts `target` and `rel` in reach. ButtonIcon records the
|
|
19
|
+
* same trade: the generator takes one interface, so the `<button>`'s own `form`, `name` and
|
|
20
|
+
* `value` are what it gives up, and `type` survives as a string so a submit still compiles.
|
|
21
|
+
*
|
|
22
|
+
* There is no `loading` and no `disabled`, unlike product's Button. Neither has an honest
|
|
23
|
+
* anchor form: the browser owns a link's pending state and shows it in the chrome, and
|
|
24
|
+
* `aria-disabled` on a link still follows the link when pressed. A prop that meant one
|
|
25
|
+
* thing on one branch and nothing on the other would be worse than its absence.
|
|
26
|
+
*/
|
|
27
|
+
export declare function Button({ variant, size, tone, href, showIcon, children, ...rest }: ButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowRightRegularIcon } from '@deriv-com/quill-icons-web';
|
|
3
|
+
import './Button.css';
|
|
4
|
+
import './button-impl.css';
|
|
5
|
+
import { buttonDefaults, buttonParts } from './Button.types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Three parts, declared in the contract and styled by the generated stylesheet.
|
|
8
|
+
* The classes come from `buttonParts` rather than being typed here — the CSS is
|
|
9
|
+
* generated from the same anatomy, and a class retyped slightly differently
|
|
10
|
+
* renders a part bare with its rule sitting unused.
|
|
11
|
+
*
|
|
12
|
+
* Which element it renders is decided by `href` and nothing else, the shape CardButton
|
|
13
|
+
* and ButtonIcon already take. A CTA that goes to a page and one that sends a newsletter
|
|
14
|
+
* form are the same press with different destinations, and the element is what tells a
|
|
15
|
+
* browser which: an `<a>` gives cmd-click, a destination in the status bar and a copyable
|
|
16
|
+
* link, and a `<button>` answers Space and does what the page says.
|
|
17
|
+
*
|
|
18
|
+
* It is typed against `AnchorHTMLAttributes`, the branch a marketing CTA takes in the
|
|
19
|
+
* ordinary case, and that is what puts `target` and `rel` in reach. ButtonIcon records the
|
|
20
|
+
* same trade: the generator takes one interface, so the `<button>`'s own `form`, `name` and
|
|
21
|
+
* `value` are what it gives up, and `type` survives as a string so a submit still compiles.
|
|
22
|
+
*
|
|
23
|
+
* There is no `loading` and no `disabled`, unlike product's Button. Neither has an honest
|
|
24
|
+
* anchor form: the browser owns a link's pending state and shows it in the chrome, and
|
|
25
|
+
* `aria-disabled` on a link still follows the link when pressed. A prop that meant one
|
|
26
|
+
* thing on one branch and nothing on the other would be worse than its absence.
|
|
27
|
+
*/
|
|
28
|
+
export function Button({ variant = buttonDefaults.variant, size = buttonDefaults.size, tone = buttonDefaults.tone, href, showIcon = buttonDefaults.showIcon, children, ...rest }) {
|
|
29
|
+
/*
|
|
30
|
+
What both branches carry. Spread after `rest` so none of it can be written over from
|
|
31
|
+
the call site: the class is how the generated stylesheet finds the root.
|
|
32
|
+
*/
|
|
33
|
+
const shared = {
|
|
34
|
+
className: buttonParts.root,
|
|
35
|
+
'data-variant': variant,
|
|
36
|
+
'data-tone': tone,
|
|
37
|
+
'data-size': size,
|
|
38
|
+
};
|
|
39
|
+
const content = (_jsxs(_Fragment, { children: [_jsx("span", { className: buttonParts.label, children: children }), showIcon ? (_jsx(ArrowRightRegularIcon, { className: buttonParts.icon, "aria-hidden": "true" })) : null] }));
|
|
40
|
+
if (href !== undefined) {
|
|
41
|
+
// No cast: `rest` is already the anchor's own attribute set, so `target` and `rel`
|
|
42
|
+
// arrive typed and land on the element that understands them.
|
|
43
|
+
return (_jsx("a", { ...rest, ...shared, href: href, children: content }));
|
|
44
|
+
}
|
|
45
|
+
return (
|
|
46
|
+
/*
|
|
47
|
+
A button, not a submit. The element's own default is `submit`, so a CTA dropped into
|
|
48
|
+
a newsletter form beside its real submit would send it. Above the spread rather than
|
|
49
|
+
below it, so a consumer who does want this to submit the form still wins — ButtonIcon
|
|
50
|
+
takes the same order for the same reason.
|
|
51
|
+
|
|
52
|
+
The cast is on this branch because the props are the anchor's: an `<a>`'s `type` is
|
|
53
|
+
the destination's MIME type and so is a plain string, which a `<button>`'s own `type`
|
|
54
|
+
will not accept. Runtime is unaffected.
|
|
55
|
+
*/
|
|
56
|
+
_jsx("button", { type: "button", ...rest, ...shared, children: content }));
|
|
57
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AnchorHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface ButtonOwnProps {
|
|
3
|
+
/**
|
|
4
|
+
* `sm` — A dense band where the button is one control among several — a filter row, a utility bar, an action beside body copy. size.control.sm tall against space.control.sm on the sides, half of it as at every step. The label holds at font.label.sm, md's own 14px: the label ramp has no step below it, so what separates these two is the box. Desktop only — at thirty-two it is below what a finger reliably hits.
|
|
5
|
+
* `md` — The default, and everything that is not a hero — navigation bars, pricing rows, feature sections, footer bands. size.control.md tall against space.control.md on the sides, which is half of it, and font.label.sm — the 14px step, so the label matches product's default button rather than running a size above it.
|
|
6
|
+
* `lg` — A hero, or a full-width conversion band that is the only control in view. size.control.lg tall against space.control.lg on the sides, again half the height, so the label starts where the pill's curve stops. font.label.md at 16px, product's own large-button measure. One per page, usually: a page of lg CTAs has no hero.
|
|
7
|
+
*/
|
|
8
|
+
size?: 'sm' | 'md' | 'lg';
|
|
9
|
+
/** The press goes somewhere with a URL of its own — the ordinary case for a call to action on a marketing page. It makes this an anchor rather than a button, which is what gives a visitor cmd-click, a visible destination and a copyable link. `target` and `rel` are not props: the component is typed against AnchorHTMLAttributes, so they are already in reach and land on the anchor. */
|
|
10
|
+
href?: string;
|
|
11
|
+
/** Where the destination continues a sequence rather than being simply somewhere else to go — the hero CTA that starts a signup, the button at the foot of a step. Named for the part it renders rather than for the mark inside it: which glyph that is belongs to the component, the way showClose and showTitle name their parts elsewhere. Today it is a forward arrow, and it slides on hover. */
|
|
12
|
+
showIcon?: boolean;
|
|
13
|
+
/** Allowed: text */
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export type ButtonProps = ButtonOwnProps & Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className' | 'variant' | 'size' | 'tone' | 'href' | 'showIcon'> & ({
|
|
17
|
+
variant?: 'primary' | 'secondary' | 'inverse';
|
|
18
|
+
tone?: Exclude<'default' | 'inverse' | 'brand', 'brand'>;
|
|
19
|
+
} | {
|
|
20
|
+
variant: Exclude<'primary' | 'secondary' | 'inverse', 'primary'>;
|
|
21
|
+
tone?: 'default' | 'inverse' | 'brand';
|
|
22
|
+
});
|
|
23
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
24
|
+
export declare const buttonParts: {
|
|
25
|
+
readonly root: "dds-button";
|
|
26
|
+
readonly label: "dds-button__label";
|
|
27
|
+
readonly icon: "dds-button__icon";
|
|
28
|
+
};
|
|
29
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
30
|
+
export declare const buttonDefaults: {
|
|
31
|
+
readonly variant: "primary";
|
|
32
|
+
readonly size: "lg";
|
|
33
|
+
readonly tone: "default";
|
|
34
|
+
readonly showIcon: false;
|
|
35
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// GENERATED from button.contract.json. Do not edit.
|
|
2
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
3
|
+
export const buttonParts = {
|
|
4
|
+
root: 'dds-button',
|
|
5
|
+
label: 'dds-button__label',
|
|
6
|
+
icon: 'dds-button__icon',
|
|
7
|
+
};
|
|
8
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
9
|
+
export const buttonDefaults = { variant: 'primary', size: 'lg', tone: 'default', showIcon: false };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*
|
|
4
|
+
* `:where([data-dds-context="marketing"])` confines these rules without contributing
|
|
5
|
+
* specificity, so every override below still ties or beats exactly what it did
|
|
6
|
+
* before — several here are written a class deeper than they look in order to
|
|
7
|
+
* match generated CSS, and a scope that carried weight would break all of them.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* One rule the contract has no way to write.
|
|
12
|
+
*
|
|
13
|
+
* The arrow slides forward while the *button* is hovered, and `tokens` are keyed on the part
|
|
14
|
+
* the state is declared on: the contract can say "the arrow is hovered" and cannot say "the
|
|
15
|
+
* button is". Bound in the contract it generated `.dds-button__icon:hover`, which moves the
|
|
16
|
+
* mark only while the pointer sits on the sixteen pixels of the arrow itself — a hover the
|
|
17
|
+
* reader would find by accident and never on purpose. NotificationItem's archive control took
|
|
18
|
+
* this same division for the same reason, and records it in its own impl file.
|
|
19
|
+
*
|
|
20
|
+
* The transition lives here too, and has to. The generated sheet puts duration and easing on
|
|
21
|
+
* the root, and transition properties do not inherit — so the icon carried a transition
|
|
22
|
+
* property with no duration and jumped the four pixels instead of travelling them.
|
|
23
|
+
*
|
|
24
|
+
* Every value is a token. The distance is the smallest gap step, which is the same measure
|
|
25
|
+
* that separates the arrow from the words: the mark moves by exactly the space it sits in.
|
|
26
|
+
*/
|
|
27
|
+
:where([data-dds-context="marketing"]) .dds-button .dds-button__icon {
|
|
28
|
+
transition-property: translate;
|
|
29
|
+
transition-duration: var(--motion-duration-normal);
|
|
30
|
+
transition-timing-function: var(--motion-easing-standard);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:where([data-dds-context="marketing"]) .dds-button:hover .dds-button__icon {
|
|
34
|
+
translate: var(--space-gap-xs);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A reader who asked for less motion gets none, rather than the same distance travelled
|
|
39
|
+
* instantly. The generated sheet already drops the transition under this query, which on its
|
|
40
|
+
* own would leave the four-pixel jump — the movement, minus the part that made it legible.
|
|
41
|
+
*/
|
|
42
|
+
@media (prefers-reduced-motion: reduce) {
|
|
43
|
+
:where([data-dds-context="marketing"]) .dds-button:hover .dds-button__icon {
|
|
44
|
+
translate: 0;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The label travels with the fill.
|
|
50
|
+
*
|
|
51
|
+
* The generated list names what the button's own states move — the fills and the focus ring — and
|
|
52
|
+
* the label's colour is not one of them: no state changes it. The tone does. A navigation bar
|
|
53
|
+
* re-tones its buttons when it gathers on scroll, and the fill eased to the new ground while the
|
|
54
|
+
* label jumped to the new ink on the first frame, so a secondary on a dark hero spent the whole
|
|
55
|
+
* change as dark words on a still-dark fill. Naming `color` and `border-color` here carries both
|
|
56
|
+
* across the same step as the fill.
|
|
57
|
+
*
|
|
58
|
+
* Written out in full rather than appended to, because a property list cannot be added to — this
|
|
59
|
+
* replaces the generated one, and has to keep everything that one names.
|
|
60
|
+
*/
|
|
61
|
+
:where([data-dds-context="marketing"]) .dds-button {
|
|
62
|
+
transition-property: background-color, background-image, border-color, color, outline-color, outline-width;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* And none of it for a reader who asked for less motion — restated, because the rule above comes
|
|
66
|
+
after the generated sheet's own reduced-motion guard and would otherwise be the one that wins. */
|
|
67
|
+
@media (prefers-reduced-motion: reduce) {
|
|
68
|
+
:where([data-dds-context="marketing"]) .dds-button {
|
|
69
|
+
transition-property: none;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/* GENERATED from buttonicon.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon {
|
|
4
|
+
transition-property: background-color, background-image, outline-color, outline-width;
|
|
5
|
+
align-items: center;
|
|
6
|
+
background-color: transparent;
|
|
7
|
+
border-color: transparent;
|
|
8
|
+
border-style: solid;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
flex: none;
|
|
13
|
+
font-family: inherit;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
outline-style: solid;
|
|
16
|
+
padding: 0;
|
|
17
|
+
text-decoration-line: none;
|
|
18
|
+
border-radius: var(--radius-pill);
|
|
19
|
+
border-width: var(--border-width-emphasis);
|
|
20
|
+
outline-width: var(--border-width-none);
|
|
21
|
+
transition-duration: var(--motion-duration-normal);
|
|
22
|
+
transition-timing-function: var(--motion-easing-standard);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon .dds-buttonicon__icon {
|
|
26
|
+
flex: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon:focus-visible {
|
|
30
|
+
outline-color: var(--color-border-focus);
|
|
31
|
+
outline-width: var(--border-width-focus);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-size="lg"] {
|
|
35
|
+
block-size: var(--size-control-lg);
|
|
36
|
+
inline-size: var(--size-control-lg);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-size="lg"] .dds-buttonicon__icon {
|
|
40
|
+
block-size: var(--icon-control-lg);
|
|
41
|
+
inline-size: var(--icon-control-lg);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-size="md"] {
|
|
45
|
+
block-size: var(--size-control-md);
|
|
46
|
+
inline-size: var(--size-control-md);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-size="md"] .dds-buttonicon__icon {
|
|
50
|
+
block-size: var(--icon-control-md);
|
|
51
|
+
inline-size: var(--icon-control-md);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-size="sm"] {
|
|
55
|
+
block-size: var(--size-control-sm);
|
|
56
|
+
inline-size: var(--size-control-sm);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-size="sm"] .dds-buttonicon__icon {
|
|
60
|
+
block-size: var(--icon-control-sm);
|
|
61
|
+
inline-size: var(--icon-control-sm);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="inverse"] {
|
|
65
|
+
background-color: var(--color-bg-strong);
|
|
66
|
+
color: var(--color-fg-on-strong);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="plain"] {
|
|
70
|
+
color: var(--color-fg-default);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="primary"] {
|
|
74
|
+
background-color: var(--color-bg-brand);
|
|
75
|
+
color: var(--color-fg-on-brand);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="secondary"] {
|
|
79
|
+
color: var(--color-fg-default);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="inverse"]:hover:where(:not(:disabled)) {
|
|
83
|
+
background-image: linear-gradient(var(--color-bg-hover-inverse), var(--color-bg-hover-inverse));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="plain"]:hover:where(:not(:disabled)) {
|
|
87
|
+
background-color: var(--color-bg-hover);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="primary"]:hover:where(:not(:disabled)) {
|
|
91
|
+
background-color: var(--color-bg-brand-hover);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="inverse"]:active {
|
|
95
|
+
background-image: linear-gradient(var(--color-bg-active-inverse), var(--color-bg-active-inverse));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="plain"]:active {
|
|
99
|
+
background-color: var(--color-bg-active);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="primary"]:active {
|
|
103
|
+
background-color: var(--color-bg-brand-active);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-tone="inverse"]:focus-visible {
|
|
107
|
+
outline-color: var(--color-border-focus-on-brand-strong);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="plain"][data-tone="inverse"] {
|
|
111
|
+
color: var(--color-fg-on-brand-strong);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="secondary"][data-tone="default"] {
|
|
115
|
+
background-color: var(--color-bg-subtle);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="secondary"][data-tone="inverse"] {
|
|
119
|
+
background-color: var(--color-bg-subtle-on-brand-strong);
|
|
120
|
+
color: var(--color-fg-on-brand-strong);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="plain"][data-tone="inverse"]:hover:where(:not(:disabled)) {
|
|
124
|
+
background-color: var(--color-bg-hover-on-brand-strong);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="secondary"][data-tone="default"]:hover:where(:not(:disabled)) {
|
|
128
|
+
background-image: linear-gradient(var(--color-bg-hover), var(--color-bg-hover));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="secondary"][data-tone="inverse"]:hover:where(:not(:disabled)) {
|
|
132
|
+
background-image: linear-gradient(var(--color-bg-hover-on-brand-strong), var(--color-bg-hover-on-brand-strong));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="plain"][data-tone="inverse"]:active {
|
|
136
|
+
background-color: var(--color-bg-active-on-brand-strong);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="secondary"][data-tone="default"]:active {
|
|
140
|
+
background-image: linear-gradient(var(--color-bg-active), var(--color-bg-active));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon[data-variant="secondary"][data-tone="inverse"]:active {
|
|
144
|
+
background-image: linear-gradient(var(--color-bg-active-on-brand-strong), var(--color-bg-active-on-brand-strong));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@media (prefers-reduced-motion: reduce) {
|
|
148
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon,
|
|
149
|
+
:where([data-dds-context="marketing"]) .dds-buttonicon * { transition: none !important; }
|
|
150
|
+
}
|
|
151
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import './ButtonIcon.css';
|
|
2
|
+
import { type ButtonIconProps } from './ButtonIcon.types.js';
|
|
3
|
+
export type { ButtonIconProps };
|
|
4
|
+
/**
|
|
5
|
+
* One press carried by a glyph alone.
|
|
6
|
+
*
|
|
7
|
+
* Which element it renders is decided by `href` and nothing else, which is CardButton's
|
|
8
|
+
* shape rather than Button's. Button has since taken the same shape; when this was written its job was
|
|
9
|
+
* defined as moving a visitor along a funnel, so it was an anchor always. A glyph-alone control has no such
|
|
10
|
+
* single job — a footer's social row goes somewhere and a promotional bar's dismiss does
|
|
11
|
+
* not, and both are one press with one mark. An `<a>` gives cmd-click, a destination in
|
|
12
|
+
* the status bar and a copyable link; a `<button>` answers Space and does what the page
|
|
13
|
+
* says. Two components for that would be two names for one gesture.
|
|
14
|
+
*
|
|
15
|
+
* The classes come from `buttonIconParts` rather than being typed here — the stylesheet is
|
|
16
|
+
* generated from the same anatomy, and a class retyped slightly differently renders a part
|
|
17
|
+
* bare with its rule sitting unused.
|
|
18
|
+
*
|
|
19
|
+
* It is typed against `AnchorHTMLAttributes`, which is the branch it takes in the ordinary
|
|
20
|
+
* case, and it is what puts `target` and `rel` in reach — a marketing destination leaves the
|
|
21
|
+
* site often enough that the pairing is the consumer's decision rather than an axis of this
|
|
22
|
+
* component, which is the ruling Button already recorded. The generator takes one interface,
|
|
23
|
+
* so this is a choice rather than a union: what it gives up is the form-participation
|
|
24
|
+
* attributes a `<button>` carries — `form`, `name`, `value` — which an icon-only control in a
|
|
25
|
+
* form wants far less often than an external link wants `rel="noopener"`. `type` survives as
|
|
26
|
+
* a string, so an intentional submit still compiles.
|
|
27
|
+
*
|
|
28
|
+
* There is no `loading` and no `disabled`, which is where this stops following product's
|
|
29
|
+
* ButtonIcon. Neither has an honest anchor form: the browser owns a link's pending state
|
|
30
|
+
* and shows it in the chrome, and `aria-disabled` on a link still follows the link when it
|
|
31
|
+
* is pressed. A prop that meant one thing on one branch and nothing on the other would be
|
|
32
|
+
* worse than its absence.
|
|
33
|
+
*/
|
|
34
|
+
export declare function ButtonIcon({ icon, label, variant, size, tone, href, ...rest }: ButtonIconProps): import("react").JSX.Element;
|