@deriv-com/dds-marketing 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.llm/components/accordion.md +6 -0
- package/.llm/components/accordionitem.md +6 -0
- package/.llm/components/aspectratio.md +6 -0
- package/.llm/components/awards.md +6 -0
- package/.llm/components/background.md +49 -10
- package/.llm/components/badge.md +6 -0
- package/.llm/components/bottomsheet.md +6 -0
- package/.llm/components/breadcrumb.md +6 -0
- package/.llm/components/breadcrumbitem.md +6 -0
- package/.llm/components/button.md +9 -3
- package/.llm/components/buttonicon.md +7 -1
- package/.llm/components/card.md +6 -0
- package/.llm/components/cardbody.md +7 -1
- package/.llm/components/cardbutton.md +6 -0
- package/.llm/components/checkbox.md +6 -0
- package/.llm/components/comparisoncards.md +9 -3
- package/.llm/components/comparisontable.md +6 -0
- package/.llm/components/ctabanner.md +6 -0
- package/.llm/components/ctabannerslider.md +6 -0
- package/.llm/components/datatable.md +6 -0
- package/.llm/components/divider.md +6 -0
- package/.llm/components/documentlink.md +237 -0
- package/.llm/components/documents.md +268 -0
- package/.llm/components/downloadbanner.md +7 -1
- package/.llm/components/dropdownmenu.md +6 -0
- package/.llm/components/estimator.md +6 -0
- package/.llm/components/faqaccordion.md +6 -0
- package/.llm/components/featurebullets.md +6 -0
- package/.llm/components/featurecards.md +42 -2
- package/.llm/components/featurecardscarousel.md +7 -1
- package/.llm/components/featurescroll.md +6 -0
- package/.llm/components/featuresplit.md +6 -0
- package/.llm/components/featurestack.md +6 -0
- package/.llm/components/featuretabs.md +369 -0
- package/.llm/components/filterchip.md +6 -0
- package/.llm/components/footer.md +6 -0
- package/.llm/components/footergroup.md +6 -0
- package/.llm/components/grid.md +30 -1
- package/.llm/components/icon.md +6 -0
- package/.llm/components/illustrationcard.md +52 -2
- package/.llm/components/illustrationcheck.md +193 -0
- package/.llm/components/illustrationchoice.md +187 -0
- package/.llm/components/illustrationcode.md +192 -0
- package/.llm/components/illustrationlist.md +175 -0
- package/.llm/components/illustrationscene.md +29 -3
- package/.llm/components/imagebanner.md +30 -5
- package/.llm/components/landinghero.md +6 -0
- package/.llm/components/link.md +7 -1
- package/.llm/components/logocolumns.md +7 -1
- package/.llm/components/logorows.md +42 -2
- package/.llm/components/menuitem.md +6 -0
- package/.llm/components/navbar.md +6 -0
- package/.llm/components/navbaritem.md +6 -0
- package/.llm/components/navbarmenu.md +6 -0
- package/.llm/components/navbarmenugroup.md +6 -0
- package/.llm/components/navbarpanel.md +6 -0
- package/.llm/components/navbarswitcher.md +6 -0
- package/.llm/components/navbarswitcheroption.md +6 -0
- package/.llm/components/option.md +6 -0
- package/.llm/components/pageheader.md +6 -0
- package/.llm/components/pagination.md +6 -0
- package/.llm/components/paginationdots.md +6 -0
- package/.llm/components/producthero.md +29 -4
- package/.llm/components/progressbar.md +305 -0
- package/.llm/components/removablechip.md +6 -0
- package/.llm/components/resourcebanner.md +6 -0
- package/.llm/components/row.md +6 -0
- package/.llm/components/scenescroll.md +38 -24
- package/.llm/components/scenescrollword.md +267 -0
- package/.llm/components/scroller.md +6 -0
- package/.llm/components/searchinput.md +6 -0
- package/.llm/components/segmentedcontrol.md +28 -1
- package/.llm/components/segmentedcontrolitem.md +6 -0
- package/.llm/components/select.md +6 -0
- package/.llm/components/selectchip.md +6 -0
- package/.llm/components/spinner.md +6 -0
- package/.llm/components/stack.md +6 -0
- package/.llm/components/stats.md +46 -1
- package/.llm/components/statscarousel.md +227 -0
- package/.llm/components/statusdot.md +41 -1
- package/.llm/components/steps.md +6 -0
- package/.llm/components/stickycards.md +6 -0
- package/.llm/components/subdomainnavbar.md +6 -0
- package/.llm/components/tab.md +6 -0
- package/.llm/components/table.md +6 -0
- package/.llm/components/tablebody.md +6 -0
- package/.llm/components/tablecell.md +6 -0
- package/.llm/components/tablehead.md +6 -0
- package/.llm/components/tableheadercell.md +6 -0
- package/.llm/components/tablerow.md +6 -0
- package/.llm/components/tablist.md +6 -0
- package/.llm/components/teamgrid.md +6 -0
- package/.llm/components/testimonialrow.md +43 -3
- package/.llm/components/testimonialslider.md +8 -2
- package/.llm/components/textarea.md +6 -0
- package/.llm/components/textinput.md +6 -0
- package/.llm/components/textscroll.md +6 -0
- package/.llm/components/tiers.md +13 -7
- package/.llm/components/tooltip.md +6 -0
- package/.llm/components/typography.md +63 -1
- package/.llm/digest/background.md +14 -6
- package/.llm/digest/button.md +1 -1
- package/.llm/digest/buttonicon.md +1 -1
- package/.llm/digest/documentlink.md +52 -0
- package/.llm/digest/documents.md +51 -0
- package/.llm/digest/downloadbanner.md +1 -1
- package/.llm/digest/featurecards.md +7 -0
- package/.llm/digest/featuretabs.md +50 -0
- package/.llm/digest/grid.md +1 -0
- package/.llm/digest/illustrationcard.md +6 -1
- package/.llm/digest/illustrationcheck.md +42 -0
- package/.llm/digest/illustrationchoice.md +43 -0
- package/.llm/digest/illustrationcode.md +41 -0
- package/.llm/digest/illustrationlist.md +38 -0
- package/.llm/digest/illustrationscene.md +4 -2
- package/.llm/digest/imagebanner.md +9 -3
- package/.llm/digest/logocolumns.md +1 -1
- package/.llm/digest/logorows.md +8 -1
- package/.llm/digest/producthero.md +8 -2
- package/.llm/digest/progressbar.md +56 -0
- package/.llm/digest/scenescroll.md +6 -5
- package/.llm/digest/scenescrollword.md +56 -0
- package/.llm/digest/segmentedcontrol.md +3 -0
- package/.llm/digest/stats.md +8 -0
- package/.llm/digest/statscarousel.md +48 -0
- package/.llm/digest/statusdot.md +7 -0
- package/.llm/digest/testimonialrow.md +8 -1
- package/.llm/digest/testimonialslider.md +1 -1
- package/.llm/digest/typography.md +18 -0
- package/.llm/index.md +14 -4
- package/.llm/rules.md +10 -0
- package/.llm/tokens.md +12 -3
- package/AGENTS.md +13 -2
- package/dist/components/arrival.d.ts +32 -0
- package/dist/components/arrival.js +140 -0
- package/dist/components/arrives.d.ts +17 -0
- package/dist/components/arrives.js +14 -0
- package/dist/components/blocks/awards/Awards.js +2 -27
- package/dist/components/blocks/block-pattern.css +23 -0
- package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +29 -0
- package/dist/components/blocks/documents/Documents.css +90 -0
- package/dist/components/blocks/documents/Documents.d.ts +22 -0
- package/dist/components/blocks/documents/Documents.js +30 -0
- package/dist/components/blocks/documents/Documents.types.d.ts +37 -0
- package/dist/components/blocks/documents/Documents.types.js +14 -0
- package/dist/components/blocks/documents/documents-impl.css +103 -0
- package/dist/components/blocks/download-banner/DownloadBanner.css +1 -1
- package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +1 -1
- package/dist/components/blocks/feature-cards/FeatureCards.d.ts +2 -1
- package/dist/components/blocks/feature-cards/FeatureCards.js +10 -7
- package/dist/components/blocks/feature-cards/FeatureCards.types.d.ts +9 -1
- package/dist/components/blocks/feature-cards/feature-cards-impl.css +15 -3
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +1 -1
- package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +12 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.css +100 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.d.ts +23 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.js +38 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.types.d.ts +35 -0
- package/dist/components/blocks/feature-tabs/FeatureTabs.types.js +14 -0
- package/dist/components/blocks/feature-tabs/feature-tabs-impl.css +53 -0
- package/dist/components/blocks/image-banner/ImageBanner.css +1 -1
- package/dist/components/blocks/image-banner/ImageBanner.d.ts +1 -1
- package/dist/components/blocks/image-banner/ImageBanner.js +2 -2
- package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +9 -7
- package/dist/components/blocks/image-banner/ImageBanner.types.js +1 -1
- package/dist/components/blocks/image-banner/image-banner-impl.css +77 -26
- package/dist/components/blocks/laurel.d.ts +16 -0
- package/dist/components/blocks/laurel.js +28 -0
- package/dist/components/blocks/logo-columns/LogoColumns.css +1 -1
- package/dist/components/blocks/logo-columns/LogoColumns.types.d.ts +1 -1
- package/dist/components/blocks/logo-rows/LogoRows.css +1 -1
- package/dist/components/blocks/logo-rows/LogoRows.d.ts +2 -1
- package/dist/components/blocks/logo-rows/LogoRows.js +7 -4
- package/dist/components/blocks/logo-rows/LogoRows.types.d.ts +9 -1
- package/dist/components/blocks/pattern-tone.d.ts +11 -0
- package/dist/components/blocks/pattern-tone.js +7 -0
- package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
- package/dist/components/blocks/product-hero/ProductHero.js +2 -2
- package/dist/components/blocks/product-hero/ProductHero.types.d.ts +8 -3
- package/dist/components/blocks/product-hero/ProductHero.types.js +1 -1
- package/dist/components/blocks/product-hero/product-hero-impl.css +54 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.css +1 -1
- package/dist/components/blocks/scene-scroll/SceneScroll.css +1 -1
- package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +6 -5
- package/dist/components/blocks/scene-scroll/SceneScroll.js +8 -7
- package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +5 -5
- package/dist/components/blocks/scene-scroll/SceneScroll.types.js +1 -1
- package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +61 -44
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.css +105 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.d.ts +31 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.js +67 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.types.d.ts +39 -0
- package/dist/components/blocks/scene-scroll-word/SceneScrollWord.types.js +18 -0
- package/dist/components/blocks/scene-scroll-word/scene-scroll-word-impl.css +370 -0
- package/dist/components/blocks/stats/Stats.d.ts +2 -1
- package/dist/components/blocks/stats/Stats.js +17 -14
- package/dist/components/blocks/stats/Stats.types.d.ts +8 -0
- package/dist/components/blocks/stats/stats-impl.css +4 -1
- package/dist/components/blocks/stats/use-wheel.d.ts +1 -1
- package/dist/components/blocks/stats/use-wheel.js +8 -4
- package/dist/components/blocks/stats-carousel/StatsCarousel.css +209 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.d.ts +20 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.js +48 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.types.d.ts +43 -0
- package/dist/components/blocks/stats-carousel/StatsCarousel.types.js +23 -0
- package/dist/components/blocks/stats-carousel/stats-carousel-impl.css +233 -0
- package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +8 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -1
- package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +2 -1
- package/dist/components/blocks/testimonial-row/TestimonialRow.js +16 -13
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +9 -1
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -1
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +1 -1
- package/dist/components/blocks/tiers/Tiers.types.d.ts +1 -1
- package/dist/components/core/background/Background.css +19 -0
- package/dist/components/core/background/Background.types.d.ts +2 -1
- package/dist/components/core/background/background-impl.css +47 -15
- package/dist/components/core/background/halftone.js +1 -1
- package/dist/components/core/button/Button.css +5 -5
- package/dist/components/core/button-icon/ButtonIcon.types.d.ts +1 -1
- package/dist/components/core/card-body/CardBody.css +5 -0
- package/dist/components/core/card-body/CardBody.types.d.ts +1 -1
- package/dist/components/core/document-link/DocumentLink.css +59 -0
- package/dist/components/core/document-link/DocumentLink.d.ts +19 -0
- package/dist/components/core/document-link/DocumentLink.js +21 -0
- package/dist/components/core/document-link/DocumentLink.types.d.ts +41 -0
- package/dist/components/core/document-link/DocumentLink.types.js +11 -0
- package/dist/components/core/document-link/document-link-impl.css +23 -0
- package/dist/components/core/illustration-card/IllustrationCard.css +7 -0
- package/dist/components/core/illustration-card/IllustrationCard.d.ts +5 -1
- package/dist/components/core/illustration-card/IllustrationCard.js +34 -8
- package/dist/components/core/illustration-card/IllustrationCard.types.d.ts +8 -1
- package/dist/components/core/illustration-card/IllustrationCard.types.js +1 -0
- package/dist/components/core/illustration-card/illustration-card-impl.css +113 -0
- package/dist/components/core/illustration-check/IllustrationCheck.css +25 -0
- package/dist/components/core/illustration-check/IllustrationCheck.d.ts +16 -0
- package/dist/components/core/illustration-check/IllustrationCheck.js +22 -0
- package/dist/components/core/illustration-check/IllustrationCheck.types.d.ts +25 -0
- package/dist/components/core/illustration-check/IllustrationCheck.types.js +9 -0
- package/dist/components/core/illustration-check/illustration-check-impl.css +76 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.css +62 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.d.ts +16 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.js +31 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.types.d.ts +25 -0
- package/dist/components/core/illustration-choice/IllustrationChoice.types.js +11 -0
- package/dist/components/core/illustration-choice/illustration-choice-impl.css +103 -0
- package/dist/components/core/illustration-code/IllustrationCode.css +25 -0
- package/dist/components/core/illustration-code/IllustrationCode.d.ts +12 -0
- package/dist/components/core/illustration-code/IllustrationCode.js +20 -0
- package/dist/components/core/illustration-code/IllustrationCode.types.d.ts +23 -0
- package/dist/components/core/illustration-code/IllustrationCode.types.js +8 -0
- package/dist/components/core/illustration-code/illustration-code-impl.css +42 -0
- package/dist/components/core/illustration-list/IllustrationList.css +19 -0
- package/dist/components/core/illustration-list/IllustrationList.d.ts +16 -0
- package/dist/components/core/illustration-list/IllustrationList.js +18 -0
- package/dist/components/core/illustration-list/IllustrationList.types.d.ts +15 -0
- package/dist/components/core/illustration-list/IllustrationList.types.js +6 -0
- package/dist/components/core/illustration-list/illustration-list-impl.css +52 -0
- package/dist/components/core/illustration-scene/IllustrationScene.css +6 -0
- package/dist/components/core/illustration-scene/IllustrationScene.d.ts +3 -2
- package/dist/components/core/illustration-scene/IllustrationScene.js +4 -3
- package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +5 -1
- package/dist/components/core/illustration-scene/IllustrationScene.types.js +2 -1
- package/dist/components/core/illustration-scene/illustration-scene-impl.css +65 -0
- package/dist/components/core/link/link-impl.css +5 -19
- package/dist/components/core/progress-bar/ProgressBar.css +101 -0
- package/dist/components/core/progress-bar/ProgressBar.d.ts +5 -0
- package/dist/components/core/progress-bar/ProgressBar.js +34 -0
- package/dist/components/core/progress-bar/ProgressBar.types.d.ts +52 -0
- package/dist/components/core/progress-bar/ProgressBar.types.js +12 -0
- package/dist/components/core/progress-bar/progress-bar-impl.css +45 -0
- package/dist/components/core/segmented-control/SegmentedControl.d.ts +1 -1
- package/dist/components/core/segmented-control/SegmentedControl.js +13 -5
- package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +5 -1
- package/dist/components/core/segmented-control/segmented-control-impl.css +35 -0
- package/dist/components/core/status-dot/StatusDot.d.ts +1 -1
- package/dist/components/core/status-dot/StatusDot.js +7 -4
- package/dist/components/core/status-dot/StatusDot.types.d.ts +9 -1
- package/dist/components/core/status-dot/status-dot-impl.css +101 -0
- package/dist/components/core/typography/Typography.d.ts +3 -283
- package/dist/components/core/typography/Typography.js +9 -1
- package/dist/components/core/typography/Typography.types.d.ts +9 -15
- package/dist/components/core/typography/TypographyMotion.d.ts +28 -0
- package/dist/components/core/typography/TypographyMotion.js +43 -0
- package/dist/components/core/typography/typography-impl.css +106 -0
- package/dist/components/illustration-data.d.ts +15 -0
- package/dist/components/illustration-data.js +7 -0
- package/dist/components/index.d.ts +22 -1
- package/dist/components/index.js +20 -0
- package/dist/components/layout/grid/Grid.css +5 -0
- package/dist/components/layout/grid/Grid.types.d.ts +2 -1
- package/dist/components/scene-scroll-data.d.ts +35 -0
- package/dist/components/tiers-data.d.ts +3 -2
- package/dist/marketing.css +24 -6
- package/package.json +1 -1
|
@@ -40,3 +40,104 @@
|
|
|
40
40
|
:where([data-dds-context="marketing"]) .dds-tooltip-anchor:has(> .dds-statusdot) {
|
|
41
41
|
flex-shrink: 0;
|
|
42
42
|
}
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* `from`: the dot starts as another state and becomes its own once, on arrival — "Opening…" in
|
|
46
|
+
* info's blue becoming "Position open" in success's green. `data-arrival` is the dot's own answer
|
|
47
|
+
* from useArrival (arrival.ts): `waiting` holds it in its first state, `playing` runs it, and no
|
|
48
|
+
* attribute — a server, a reader who asked for less movement — is the dot in its own state.
|
|
49
|
+
*
|
|
50
|
+
* It holds the first state for motion.duration.hold — the same hold Typography's `from` gives its
|
|
51
|
+
* words, so a dot and the words beside it change together — then turns in one step, and a dot that
|
|
52
|
+
* pulses starts pulsing only then: a live state loops; the state before it was not live.
|
|
53
|
+
*/
|
|
54
|
+
/* One keyframe per state the dot can start in, each naming its own colour token. */
|
|
55
|
+
@keyframes dds-statusdot-from-accent {
|
|
56
|
+
from {
|
|
57
|
+
background-color: var(--color-bg-brand);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@keyframes dds-statusdot-from-error {
|
|
62
|
+
from {
|
|
63
|
+
background-color: var(--color-bg-danger);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@keyframes dds-statusdot-from-info {
|
|
68
|
+
from {
|
|
69
|
+
background-color: var(--color-bg-info);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@keyframes dds-statusdot-from-success {
|
|
74
|
+
from {
|
|
75
|
+
background-color: var(--color-bg-success);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@keyframes dds-statusdot-from-warning {
|
|
80
|
+
from {
|
|
81
|
+
background-color: var(--color-bg-warning);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='accent'][data-arrival] {
|
|
86
|
+
animation: dds-statusdot-from-accent var(--motion-duration-hold) steps(1, end) both;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='accent'][data-pulse][data-arrival] {
|
|
90
|
+
animation:
|
|
91
|
+
dds-statusdot-from-accent var(--motion-duration-hold) steps(1, end) both,
|
|
92
|
+
dds-statusdot-pulse var(--motion-duration-pulse) var(--motion-easing-enter) var(--motion-duration-hold) infinite;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='error'][data-arrival] {
|
|
96
|
+
animation: dds-statusdot-from-error var(--motion-duration-hold) steps(1, end) both;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='error'][data-pulse][data-arrival] {
|
|
100
|
+
animation:
|
|
101
|
+
dds-statusdot-from-error var(--motion-duration-hold) steps(1, end) both,
|
|
102
|
+
dds-statusdot-pulse var(--motion-duration-pulse) var(--motion-easing-enter) var(--motion-duration-hold) infinite;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='info'][data-arrival] {
|
|
106
|
+
animation: dds-statusdot-from-info var(--motion-duration-hold) steps(1, end) both;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='info'][data-pulse][data-arrival] {
|
|
110
|
+
animation:
|
|
111
|
+
dds-statusdot-from-info var(--motion-duration-hold) steps(1, end) both,
|
|
112
|
+
dds-statusdot-pulse var(--motion-duration-pulse) var(--motion-easing-enter) var(--motion-duration-hold) infinite;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='success'][data-arrival] {
|
|
116
|
+
animation: dds-statusdot-from-success var(--motion-duration-hold) steps(1, end) both;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='success'][data-pulse][data-arrival] {
|
|
120
|
+
animation:
|
|
121
|
+
dds-statusdot-from-success var(--motion-duration-hold) steps(1, end) both,
|
|
122
|
+
dds-statusdot-pulse var(--motion-duration-pulse) var(--motion-easing-enter) var(--motion-duration-hold) infinite;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='warning'][data-arrival] {
|
|
126
|
+
animation: dds-statusdot-from-warning var(--motion-duration-hold) steps(1, end) both;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from='warning'][data-pulse][data-arrival] {
|
|
130
|
+
animation:
|
|
131
|
+
dds-statusdot-from-warning var(--motion-duration-hold) steps(1, end) both,
|
|
132
|
+
dds-statusdot-pulse var(--motion-duration-pulse) var(--motion-easing-enter) var(--motion-duration-hold) infinite;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from][data-arrival='waiting'] {
|
|
136
|
+
animation-play-state: paused !important;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@media (prefers-reduced-motion: reduce) {
|
|
140
|
+
:where([data-dds-context="marketing"]) .dds-statusdot[data-from][data-arrival] {
|
|
141
|
+
animation: none;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import './Typography.css';
|
|
3
|
+
import './typography-impl.css';
|
|
3
4
|
import { type TypographyProps } from './Typography.types.js';
|
|
4
5
|
export type { TypographyProps };
|
|
5
6
|
/**
|
|
@@ -11,287 +12,6 @@ export type { TypographyProps };
|
|
|
11
12
|
* than advisory: `as="h2" variant="h1"` is a section heading drawn at hero scale, and a page
|
|
12
13
|
* cannot reach for a size and receive a document structure it did not ask for.
|
|
13
14
|
*/
|
|
14
|
-
export declare function Typography({ variant, as, children, ...rest }: TypographyProps & {
|
|
15
|
+
export declare function Typography({ variant, as, motion, from, children, ...rest }: TypographyProps & {
|
|
15
16
|
children?: ReactNode;
|
|
16
|
-
}): import("react").
|
|
17
|
-
className: "dds-typography";
|
|
18
|
-
'data-variant': "figure" | "h1" | "h2" | "h3" | "h4" | "h5" | "eyebrow" | "subtitle" | "body-lg" | "body-md" | "body-sm";
|
|
19
|
-
defaultChecked?: boolean | undefined | undefined;
|
|
20
|
-
defaultValue?: string | number | readonly string[] | undefined;
|
|
21
|
-
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
22
|
-
suppressHydrationWarning?: boolean | undefined | undefined;
|
|
23
|
-
accessKey?: string | undefined | undefined;
|
|
24
|
-
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
|
|
25
|
-
autoFocus?: boolean | undefined | undefined;
|
|
26
|
-
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
27
|
-
contextMenu?: string | undefined | undefined;
|
|
28
|
-
dir?: string | undefined | undefined;
|
|
29
|
-
draggable?: (boolean | "true" | "false") | undefined;
|
|
30
|
-
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
31
|
-
hidden?: boolean | undefined | undefined;
|
|
32
|
-
id?: string | undefined | undefined;
|
|
33
|
-
lang?: string | undefined | undefined;
|
|
34
|
-
nonce?: string | undefined | undefined;
|
|
35
|
-
slot?: string | undefined | undefined;
|
|
36
|
-
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
37
|
-
style?: import("react").CSSProperties | undefined;
|
|
38
|
-
tabIndex?: number | undefined | undefined;
|
|
39
|
-
title?: string | undefined | undefined;
|
|
40
|
-
translate?: "yes" | "no" | undefined | undefined;
|
|
41
|
-
radioGroup?: string | undefined | undefined;
|
|
42
|
-
role?: import("react").AriaRole | undefined;
|
|
43
|
-
about?: string | undefined | undefined;
|
|
44
|
-
content?: string | undefined | undefined;
|
|
45
|
-
datatype?: string | undefined | undefined;
|
|
46
|
-
inlist?: any;
|
|
47
|
-
prefix?: string | undefined | undefined;
|
|
48
|
-
property?: string | undefined | undefined;
|
|
49
|
-
rel?: string | undefined | undefined;
|
|
50
|
-
resource?: string | undefined | undefined;
|
|
51
|
-
rev?: string | undefined | undefined;
|
|
52
|
-
typeof?: string | undefined | undefined;
|
|
53
|
-
vocab?: string | undefined | undefined;
|
|
54
|
-
autoCorrect?: string | undefined | undefined;
|
|
55
|
-
autoSave?: string | undefined | undefined;
|
|
56
|
-
color?: string | undefined | undefined;
|
|
57
|
-
itemProp?: string | undefined | undefined;
|
|
58
|
-
itemScope?: boolean | undefined | undefined;
|
|
59
|
-
itemType?: string | undefined | undefined;
|
|
60
|
-
itemID?: string | undefined | undefined;
|
|
61
|
-
itemRef?: string | undefined | undefined;
|
|
62
|
-
results?: number | undefined | undefined;
|
|
63
|
-
security?: string | undefined | undefined;
|
|
64
|
-
unselectable?: "on" | "off" | undefined | undefined;
|
|
65
|
-
popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
|
|
66
|
-
popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
|
|
67
|
-
popoverTarget?: string | undefined | undefined;
|
|
68
|
-
inert?: boolean | undefined | undefined;
|
|
69
|
-
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
|
|
70
|
-
is?: string | undefined | undefined;
|
|
71
|
-
exportparts?: string | undefined | undefined;
|
|
72
|
-
part?: string | undefined | undefined;
|
|
73
|
-
"aria-activedescendant"?: string | undefined | undefined;
|
|
74
|
-
"aria-atomic"?: (boolean | "true" | "false") | undefined;
|
|
75
|
-
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
|
|
76
|
-
"aria-braillelabel"?: string | undefined | undefined;
|
|
77
|
-
"aria-brailleroledescription"?: string | undefined | undefined;
|
|
78
|
-
"aria-busy"?: (boolean | "true" | "false") | undefined;
|
|
79
|
-
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
80
|
-
"aria-colcount"?: number | undefined | undefined;
|
|
81
|
-
"aria-colindex"?: number | undefined | undefined;
|
|
82
|
-
"aria-colindextext"?: string | undefined | undefined;
|
|
83
|
-
"aria-colspan"?: number | undefined | undefined;
|
|
84
|
-
"aria-controls"?: string | undefined | undefined;
|
|
85
|
-
"aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
|
|
86
|
-
"aria-describedby"?: string | undefined | undefined;
|
|
87
|
-
"aria-description"?: string | undefined | undefined;
|
|
88
|
-
"aria-details"?: string | undefined | undefined;
|
|
89
|
-
"aria-disabled"?: (boolean | "true" | "false") | undefined;
|
|
90
|
-
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
|
|
91
|
-
"aria-errormessage"?: string | undefined | undefined;
|
|
92
|
-
"aria-expanded"?: (boolean | "true" | "false") | undefined;
|
|
93
|
-
"aria-flowto"?: string | undefined | undefined;
|
|
94
|
-
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
|
|
95
|
-
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
|
|
96
|
-
"aria-hidden"?: (boolean | "true" | "false") | undefined;
|
|
97
|
-
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
|
|
98
|
-
"aria-keyshortcuts"?: string | undefined | undefined;
|
|
99
|
-
"aria-label"?: string | undefined | undefined;
|
|
100
|
-
"aria-labelledby"?: string | undefined | undefined;
|
|
101
|
-
"aria-level"?: number | undefined | undefined;
|
|
102
|
-
"aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
|
|
103
|
-
"aria-modal"?: (boolean | "true" | "false") | undefined;
|
|
104
|
-
"aria-multiline"?: (boolean | "true" | "false") | undefined;
|
|
105
|
-
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
|
|
106
|
-
"aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
|
|
107
|
-
"aria-owns"?: string | undefined | undefined;
|
|
108
|
-
"aria-placeholder"?: string | undefined | undefined;
|
|
109
|
-
"aria-posinset"?: number | undefined | undefined;
|
|
110
|
-
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
111
|
-
"aria-readonly"?: (boolean | "true" | "false") | undefined;
|
|
112
|
-
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
|
|
113
|
-
"aria-required"?: (boolean | "true" | "false") | undefined;
|
|
114
|
-
"aria-roledescription"?: string | undefined | undefined;
|
|
115
|
-
"aria-rowcount"?: number | undefined | undefined;
|
|
116
|
-
"aria-rowindex"?: number | undefined | undefined;
|
|
117
|
-
"aria-rowindextext"?: string | undefined | undefined;
|
|
118
|
-
"aria-rowspan"?: number | undefined | undefined;
|
|
119
|
-
"aria-selected"?: (boolean | "true" | "false") | undefined;
|
|
120
|
-
"aria-setsize"?: number | undefined | undefined;
|
|
121
|
-
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
|
|
122
|
-
"aria-valuemax"?: number | undefined | undefined;
|
|
123
|
-
"aria-valuemin"?: number | undefined | undefined;
|
|
124
|
-
"aria-valuenow"?: number | undefined | undefined;
|
|
125
|
-
"aria-valuetext"?: string | undefined | undefined;
|
|
126
|
-
dangerouslySetInnerHTML?: {
|
|
127
|
-
__html: string | TrustedHTML;
|
|
128
|
-
} | undefined | undefined;
|
|
129
|
-
onCopy?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
|
|
130
|
-
onCopyCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
|
|
131
|
-
onCut?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
|
|
132
|
-
onCutCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
|
|
133
|
-
onPaste?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
|
|
134
|
-
onPasteCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
|
|
135
|
-
onCompositionEnd?: import("react").CompositionEventHandler<HTMLElement> | undefined;
|
|
136
|
-
onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
|
|
137
|
-
onCompositionStart?: import("react").CompositionEventHandler<HTMLElement> | undefined;
|
|
138
|
-
onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
|
|
139
|
-
onCompositionUpdate?: import("react").CompositionEventHandler<HTMLElement> | undefined;
|
|
140
|
-
onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
|
|
141
|
-
onFocus?: import("react").FocusEventHandler<HTMLElement> | undefined;
|
|
142
|
-
onFocusCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
|
|
143
|
-
onBlur?: import("react").FocusEventHandler<HTMLElement> | undefined;
|
|
144
|
-
onBlurCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
|
|
145
|
-
onChange?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
|
|
146
|
-
onChangeCapture?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
|
|
147
|
-
onBeforeInput?: import("react").InputEventHandler<HTMLElement> | undefined;
|
|
148
|
-
onBeforeInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
|
|
149
|
-
onInput?: import("react").InputEventHandler<HTMLElement> | undefined;
|
|
150
|
-
onInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
|
|
151
|
-
onReset?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
152
|
-
onResetCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
153
|
-
onSubmit?: import("react").SubmitEventHandler<HTMLElement> | undefined;
|
|
154
|
-
onSubmitCapture?: import("react").SubmitEventHandler<HTMLElement> | undefined;
|
|
155
|
-
onInvalid?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
156
|
-
onInvalidCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
157
|
-
onLoad?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
158
|
-
onLoadCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
159
|
-
onError?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
160
|
-
onErrorCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
161
|
-
onKeyDown?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
|
|
162
|
-
onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
|
|
163
|
-
onKeyPress?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
|
|
164
|
-
onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
|
|
165
|
-
onKeyUp?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
|
|
166
|
-
onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
|
|
167
|
-
onAbort?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
168
|
-
onAbortCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
169
|
-
onCanPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
170
|
-
onCanPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
171
|
-
onCanPlayThrough?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
172
|
-
onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
173
|
-
onDurationChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
174
|
-
onDurationChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
175
|
-
onEmptied?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
176
|
-
onEmptiedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
177
|
-
onEncrypted?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
178
|
-
onEncryptedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
179
|
-
onEnded?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
180
|
-
onEndedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
181
|
-
onLoadedData?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
182
|
-
onLoadedDataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
183
|
-
onLoadedMetadata?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
184
|
-
onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
185
|
-
onLoadStart?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
186
|
-
onLoadStartCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
187
|
-
onPause?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
188
|
-
onPauseCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
189
|
-
onPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
190
|
-
onPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
191
|
-
onPlaying?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
192
|
-
onPlayingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
193
|
-
onProgress?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
194
|
-
onProgressCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
195
|
-
onRateChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
196
|
-
onRateChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
197
|
-
onSeeked?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
198
|
-
onSeekedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
199
|
-
onSeeking?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
200
|
-
onSeekingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
201
|
-
onStalled?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
202
|
-
onStalledCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
203
|
-
onSuspend?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
204
|
-
onSuspendCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
205
|
-
onTimeUpdate?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
206
|
-
onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
207
|
-
onVolumeChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
208
|
-
onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
209
|
-
onWaiting?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
210
|
-
onWaitingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
211
|
-
onAuxClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
212
|
-
onAuxClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
213
|
-
onClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
214
|
-
onClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
215
|
-
onContextMenu?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
216
|
-
onContextMenuCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
217
|
-
onDoubleClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
218
|
-
onDoubleClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
219
|
-
onDrag?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
220
|
-
onDragCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
221
|
-
onDragEnd?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
222
|
-
onDragEndCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
223
|
-
onDragEnter?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
224
|
-
onDragEnterCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
225
|
-
onDragExit?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
226
|
-
onDragExitCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
227
|
-
onDragLeave?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
228
|
-
onDragLeaveCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
229
|
-
onDragOver?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
230
|
-
onDragOverCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
231
|
-
onDragStart?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
232
|
-
onDragStartCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
233
|
-
onDrop?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
234
|
-
onDropCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
|
|
235
|
-
onMouseDown?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
236
|
-
onMouseDownCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
237
|
-
onMouseEnter?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
238
|
-
onMouseLeave?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
239
|
-
onMouseMove?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
240
|
-
onMouseMoveCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
241
|
-
onMouseOut?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
242
|
-
onMouseOutCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
243
|
-
onMouseOver?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
244
|
-
onMouseOverCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
245
|
-
onMouseUp?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
246
|
-
onMouseUpCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
247
|
-
onSelect?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
248
|
-
onSelectCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
|
|
249
|
-
onTouchCancel?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
250
|
-
onTouchCancelCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
251
|
-
onTouchEnd?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
252
|
-
onTouchEndCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
253
|
-
onTouchMove?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
254
|
-
onTouchMoveCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
255
|
-
onTouchStart?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
256
|
-
onTouchStartCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
|
|
257
|
-
onPointerDown?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
258
|
-
onPointerDownCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
259
|
-
onPointerMove?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
260
|
-
onPointerMoveCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
261
|
-
onPointerUp?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
262
|
-
onPointerUpCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
263
|
-
onPointerCancel?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
264
|
-
onPointerCancelCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
265
|
-
onPointerEnter?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
266
|
-
onPointerLeave?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
267
|
-
onPointerOver?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
268
|
-
onPointerOverCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
269
|
-
onPointerOut?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
270
|
-
onPointerOutCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
271
|
-
onGotPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
272
|
-
onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
273
|
-
onLostPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
274
|
-
onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
|
|
275
|
-
onScroll?: import("react").UIEventHandler<HTMLElement> | undefined;
|
|
276
|
-
onScrollCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
|
|
277
|
-
onScrollEnd?: import("react").UIEventHandler<HTMLElement> | undefined;
|
|
278
|
-
onScrollEndCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
|
|
279
|
-
onWheel?: import("react").WheelEventHandler<HTMLElement> | undefined;
|
|
280
|
-
onWheelCapture?: import("react").WheelEventHandler<HTMLElement> | undefined;
|
|
281
|
-
onAnimationStart?: import("react").AnimationEventHandler<HTMLElement> | undefined;
|
|
282
|
-
onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
|
|
283
|
-
onAnimationEnd?: import("react").AnimationEventHandler<HTMLElement> | undefined;
|
|
284
|
-
onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
|
|
285
|
-
onAnimationIteration?: import("react").AnimationEventHandler<HTMLElement> | undefined;
|
|
286
|
-
onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
|
|
287
|
-
onToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
|
|
288
|
-
onBeforeToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
|
|
289
|
-
onTransitionCancel?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
290
|
-
onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
291
|
-
onTransitionEnd?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
292
|
-
onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
293
|
-
onTransitionRun?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
294
|
-
onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
295
|
-
onTransitionStart?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
296
|
-
onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
|
|
297
|
-
}, HTMLElement>;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
2
|
import { createElement } from 'react';
|
|
2
3
|
import './Typography.css';
|
|
4
|
+
import './typography-impl.css';
|
|
5
|
+
import { TypographyMotion } from './TypographyMotion.js';
|
|
3
6
|
import { typographyDefaults, typographyParts } from './Typography.types.js';
|
|
4
7
|
/**
|
|
5
8
|
* Copy, set in one of the page's type roles.
|
|
@@ -10,7 +13,12 @@ import { typographyDefaults, typographyParts } from './Typography.types.js';
|
|
|
10
13
|
* than advisory: `as="h2" variant="h1"` is a section heading drawn at hero scale, and a page
|
|
11
14
|
* cannot reach for a size and receive a document structure it did not ask for.
|
|
12
15
|
*/
|
|
13
|
-
export function Typography({ variant = typographyDefaults.variant, as = typographyDefaults.as, children, ...rest }) {
|
|
16
|
+
export function Typography({ variant = typographyDefaults.variant, as = typographyDefaults.as, motion, from, children, ...rest }) {
|
|
17
|
+
// Text that moves once on arrival is drawn by a client component of its own, so the text that
|
|
18
|
+
// does not move — nearly all of it — keeps no script.
|
|
19
|
+
if (motion !== undefined || (from !== undefined && from !== '')) {
|
|
20
|
+
return (_jsx(TypographyMotion, { as: as, className: typographyParts.root, variant: variant, motion: motion, from: from, rest: rest, children: children }));
|
|
21
|
+
}
|
|
14
22
|
/**
|
|
15
23
|
* `createElement` rather than a component variable.
|
|
16
24
|
*
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
export interface TypographyOwnProps {
|
|
3
|
-
/**
|
|
4
|
-
* `h1` — The line a landing page is built around, and there is one of them
|
|
5
|
-
* `h2` — A headline opening a major section of a long page
|
|
6
|
-
* `h3` — A section heading under an h1 and h2
|
|
7
|
-
* `h4` — A subsection heading, the first step below the extrabold the larger headings carry
|
|
8
|
-
* `h5` — A label over a group of cards, a list, or a short block of copy
|
|
9
|
-
* `subtitle` — A secondary title under a heading — a pricing plan's name, a sub-feature group
|
|
10
|
-
* `body-lg` — An introductory paragraph under a headline, a hero description, a section intro
|
|
11
|
-
* `body-md` — The default, and most of the copy on a page — feature descriptions, article text
|
|
12
|
-
* `body-sm` — De-emphasised copy: legal lines, disclaimers, help text
|
|
13
|
-
* `eyebrow` — A category label above a headline — a section tag, a plan badge. Drawn in capitals by this component, so write it in the case it should be read in
|
|
14
|
-
* `figure` — A number that is the point of its block — a count, a total, a span of time — with a label under it
|
|
15
|
-
*/
|
|
16
|
-
variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow' | 'figure';
|
|
17
3
|
/**
|
|
18
4
|
* `p` — The default, and any block of prose
|
|
19
5
|
* `span` — Text inside a sentence, or inside something that is already a block
|
|
@@ -25,10 +11,18 @@ export interface TypographyOwnProps {
|
|
|
25
11
|
* `h6` — The deepest heading level
|
|
26
12
|
*/
|
|
27
13
|
as?: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
14
|
+
/** The words this text starts as, which give way once to the words it is — "Opening…" to "Position open", "EUR/USD · Buy" to "EUR/USD · Sell". The first words hold for motion.duration.hold after arrival, rise away, and the text's own words come up into their place. Plain text only. Beside a StatusDot given `from` as well, the dot changes with the words */
|
|
15
|
+
from?: string;
|
|
28
16
|
/** Allowed: text */
|
|
29
17
|
children: ReactNode;
|
|
30
18
|
}
|
|
31
|
-
export type TypographyProps = TypographyOwnProps & Omit<HTMLAttributes<HTMLElement>, 'className' | 'variant' | 'as'
|
|
19
|
+
export type TypographyProps = TypographyOwnProps & Omit<HTMLAttributes<HTMLElement>, 'className' | 'variant' | 'as' | 'motion' | 'from'> & ({
|
|
20
|
+
variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow' | 'figure';
|
|
21
|
+
motion?: undefined;
|
|
22
|
+
} | {
|
|
23
|
+
variant: Exclude<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow' | 'figure', 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'subtitle' | 'body-lg' | 'body-md' | 'body-sm' | 'eyebrow'>;
|
|
24
|
+
motion?: 'roll';
|
|
25
|
+
});
|
|
32
26
|
/** The class each part carries. Apply these — do not retype them. */
|
|
33
27
|
export declare const typographyParts: {
|
|
34
28
|
readonly root: "dds-typography";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
interface TypographyMotionProps {
|
|
3
|
+
as: string;
|
|
4
|
+
className: string;
|
|
5
|
+
variant: string;
|
|
6
|
+
motion?: 'roll' | undefined;
|
|
7
|
+
from?: string | undefined;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
rest: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Typography that moves once on arrival — a figure that rolls into place, or words that give way
|
|
13
|
+
* to the ones they become. Kept apart from Typography itself so the text that does not move, which
|
|
14
|
+
* is nearly all of it, stays a component with no script.
|
|
15
|
+
*
|
|
16
|
+
* Both are drawn from the text as given, so they need a string: a figure with markup inside it has
|
|
17
|
+
* no digits to roll, and words to swap are words. The moving copies are paint, hidden from
|
|
18
|
+
* assistive technology; the real text is in the DOM throughout, so what is read is the final text.
|
|
19
|
+
*/
|
|
20
|
+
export declare function TypographyMotion({ as, className, variant, motion, from, children, rest }: TypographyMotionProps): import("react").ReactElement<{
|
|
21
|
+
ref: import("react").RefObject<HTMLElement | null>;
|
|
22
|
+
className: string;
|
|
23
|
+
'data-variant': string;
|
|
24
|
+
'data-motion': "roll" | undefined;
|
|
25
|
+
'data-from': string | undefined;
|
|
26
|
+
'data-arrival': "waiting" | "playing" | undefined;
|
|
27
|
+
}, string | import("react").JSXElementConstructor<any>>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createElement } from 'react';
|
|
4
|
+
import { useArrival } from '../../arrival.js';
|
|
5
|
+
import { visuallyHidden } from '../../visually-hidden.js';
|
|
6
|
+
/**
|
|
7
|
+
* Typography that moves once on arrival — a figure that rolls into place, or words that give way
|
|
8
|
+
* to the ones they become. Kept apart from Typography itself so the text that does not move, which
|
|
9
|
+
* is nearly all of it, stays a component with no script.
|
|
10
|
+
*
|
|
11
|
+
* Both are drawn from the text as given, so they need a string: a figure with markup inside it has
|
|
12
|
+
* no digits to roll, and words to swap are words. The moving copies are paint, hidden from
|
|
13
|
+
* assistive technology; the real text is in the DOM throughout, so what is read is the final text.
|
|
14
|
+
*/
|
|
15
|
+
export function TypographyMotion({ as, className, variant, motion, from, children, rest }) {
|
|
16
|
+
const [held, arrival] = useArrival();
|
|
17
|
+
const text = typeof children === 'string' || typeof children === 'number' ? String(children) : null;
|
|
18
|
+
let body = children;
|
|
19
|
+
if (text !== null && motion === 'roll') {
|
|
20
|
+
let step = 0;
|
|
21
|
+
body = (_jsxs(_Fragment, { children: [_jsx("span", { style: visuallyHidden, children: text }), _jsx("span", { "aria-hidden": "true", "data-roll": "", children: [...text].map((character, at) => {
|
|
22
|
+
if (!/\d/.test(character))
|
|
23
|
+
return _jsx("span", { children: character }, at);
|
|
24
|
+
const digit = Number(character);
|
|
25
|
+
const style = { '--dds-typography-digit': digit, '--dds-typography-step': step };
|
|
26
|
+
step += 1;
|
|
27
|
+
return (_jsx("span", { "data-digit": "", style: style, children: _jsx("span", { "data-reel": "", children: '0123456789'.split('').map((each) => (_jsx("span", { children: each }, each))) }) }, at));
|
|
28
|
+
}) })] }));
|
|
29
|
+
}
|
|
30
|
+
else if (text !== null && from !== undefined && from !== '') {
|
|
31
|
+
body = (_jsxs("span", { "data-swap": "", children: [_jsx("span", { "data-word": "from", "aria-hidden": "true", children: from }), _jsx("span", { "data-word": "to", children: text })] }));
|
|
32
|
+
}
|
|
33
|
+
return createElement(as, {
|
|
34
|
+
...rest,
|
|
35
|
+
ref: held,
|
|
36
|
+
className,
|
|
37
|
+
'data-variant': variant,
|
|
38
|
+
'data-motion': motion,
|
|
39
|
+
// `motion` wins where both are given: the figure rolls and the earlier words are not drawn.
|
|
40
|
+
'data-from': motion === undefined && from !== undefined && from !== '' ? '' : undefined,
|
|
41
|
+
'data-arrival': arrival === 'still' ? undefined : arrival,
|
|
42
|
+
}, body);
|
|
43
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*
|
|
4
|
+
* Text that moves once on arrival (TypographyMotion.tsx). `data-arrival` is the text's own answer
|
|
5
|
+
* from useArrival (arrival.ts): `waiting` holds the motion at its first frame, `playing` runs it,
|
|
6
|
+
* and no attribute — a server, a reader who asked for less movement — is the text at rest. The
|
|
7
|
+
* package's motion tokens throughout.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
* `motion="roll"`: each digit is a reel of nought to nine, one line tall and clipped to it, set on
|
|
12
|
+
* its digit. Arriving, each reel rolls up from nought to its digit over motion.duration.dramatic, a
|
|
13
|
+
* step of motion.duration.stagger behind the digit before it, so the figure settles left to right.
|
|
14
|
+
* `lh` so a reel's lines are the figure's own lines whatever its type role.
|
|
15
|
+
*/
|
|
16
|
+
:where([data-dds-context="marketing"]) .dds-typography [data-digit] {
|
|
17
|
+
block-size: 1lh;
|
|
18
|
+
display: inline-block;
|
|
19
|
+
overflow: clip;
|
|
20
|
+
vertical-align: top;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:where([data-dds-context="marketing"]) .dds-typography [data-reel] {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
translate: 0 calc(var(--dds-typography-digit, 0) * -1lh);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where([data-dds-context="marketing"]) .dds-typography [data-reel] > * {
|
|
30
|
+
block-size: 1lh;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@keyframes dds-typography-roll {
|
|
34
|
+
from {
|
|
35
|
+
translate: 0 0;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where([data-dds-context="marketing"]) .dds-typography[data-arrival] [data-reel] {
|
|
40
|
+
animation: dds-typography-roll var(--motion-duration-dramatic) var(--motion-easing-reveal) both;
|
|
41
|
+
animation-delay: calc(var(--dds-typography-step, 0) * var(--motion-duration-stagger));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* `from`: the words the text starts as, in the same cell as the words it becomes. At rest only the
|
|
46
|
+
* final words are drawn. Arriving, the first words hold for motion.duration.hold, rise away over
|
|
47
|
+
* motion.duration.normal, and the final ones come up into their place over motion.duration.slow.
|
|
48
|
+
*/
|
|
49
|
+
:where([data-dds-context="marketing"]) .dds-typography [data-swap] {
|
|
50
|
+
display: inline-grid;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:where([data-dds-context="marketing"]) .dds-typography [data-swap] > * {
|
|
54
|
+
grid-area: 1 / 1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
:where([data-dds-context="marketing"]) .dds-typography [data-word='from'] {
|
|
58
|
+
display: none;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:where([data-dds-context="marketing"]) .dds-typography[data-arrival] [data-word='from'] {
|
|
62
|
+
display: inline;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@keyframes dds-typography-swap-leave {
|
|
66
|
+
from {
|
|
67
|
+
visibility: visible;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
to {
|
|
71
|
+
opacity: var(--opacity-hidden);
|
|
72
|
+
translate: 0 calc(-1 * var(--space-gap-xs));
|
|
73
|
+
visibility: hidden;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@keyframes dds-typography-swap-arrive {
|
|
78
|
+
from {
|
|
79
|
+
opacity: var(--opacity-hidden);
|
|
80
|
+
translate: 0 var(--space-gap-xs);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
:where([data-dds-context="marketing"]) .dds-typography[data-arrival] [data-word='from'] {
|
|
85
|
+
animation: dds-typography-swap-leave var(--motion-duration-normal) var(--motion-easing-reveal) var(--motion-duration-hold) both;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:where([data-dds-context="marketing"]) .dds-typography[data-arrival] [data-word='to'] {
|
|
89
|
+
animation: dds-typography-swap-arrive var(--motion-duration-slow) var(--motion-easing-reveal)
|
|
90
|
+
calc(var(--motion-duration-hold) + var(--motion-duration-normal)) both;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Waiting: held at the first frame. */
|
|
94
|
+
:where([data-dds-context="marketing"]) .dds-typography[data-arrival='waiting'] :is([data-reel], [data-word]) {
|
|
95
|
+
animation-play-state: paused !important;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@media (prefers-reduced-motion: reduce) {
|
|
99
|
+
:where([data-dds-context="marketing"]) .dds-typography[data-arrival] :is([data-reel], [data-word]) {
|
|
100
|
+
animation: none;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
:where([data-dds-context="marketing"]) .dds-typography[data-arrival] [data-word='from'] {
|
|
104
|
+
display: none;
|
|
105
|
+
}
|
|
106
|
+
}
|