@sankhyatronics/sankhya-cms 0.2.0 → 0.3.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/custom-elements.json +10968 -3080
- package/dist/attention-panel/index.js +2 -2
- package/dist/bar-chart/index.js +2 -2
- package/dist/bento-grid/index.d.ts +25 -0
- package/dist/bento-grid/index.js +4 -4
- package/dist/booking/index.d.ts +309 -0
- package/dist/booking/index.js +20 -0
- package/dist/booking/index.js.map +1 -0
- package/dist/card/index.js +2 -2
- package/dist/carousel/index.d.ts +20 -6
- package/dist/carousel/index.js +3 -3
- package/dist/chip/index.js +2 -2
- package/dist/{chunk-OLA35A2O.js → chunk-2GTR37PU.js} +2 -2
- package/dist/{chunk-7NIWQWTA.js → chunk-2HMOX253.js} +128 -25
- package/dist/chunk-2HMOX253.js.map +1 -0
- package/dist/{chunk-DH53HZPB.js → chunk-37KFBKPD.js} +32 -4
- package/dist/chunk-37KFBKPD.js.map +1 -0
- package/dist/{chunk-EE6PAN3B.js → chunk-4XPKKYVZ.js} +23 -15
- package/dist/chunk-4XPKKYVZ.js.map +1 -0
- package/dist/chunk-535QAZ6A.js +236 -0
- package/dist/chunk-535QAZ6A.js.map +1 -0
- package/dist/{chunk-AKJQ345O.js → chunk-5AWGZQWU.js} +2 -2
- package/dist/chunk-6OZKZG5J.js +300 -0
- package/dist/chunk-6OZKZG5J.js.map +1 -0
- package/dist/chunk-AYNT7G3J.js +805 -0
- package/dist/chunk-AYNT7G3J.js.map +1 -0
- package/dist/chunk-BEWX3E6P.js +32 -0
- package/dist/chunk-BEWX3E6P.js.map +1 -0
- package/dist/chunk-CZUGPKXV.js +275 -0
- package/dist/chunk-CZUGPKXV.js.map +1 -0
- package/dist/{chunk-2DXHPEB5.js → chunk-DJFWZOZM.js} +107 -11
- package/dist/chunk-DJFWZOZM.js.map +1 -0
- package/dist/chunk-DPANTC3O.js +1714 -0
- package/dist/chunk-DPANTC3O.js.map +1 -0
- package/dist/chunk-EKZFFY45.js +426 -0
- package/dist/chunk-EKZFFY45.js.map +1 -0
- package/dist/chunk-ER7MCPDV.js +7 -0
- package/dist/chunk-ER7MCPDV.js.map +1 -0
- package/dist/chunk-EW2RK5Y6.js +383 -0
- package/dist/chunk-EW2RK5Y6.js.map +1 -0
- package/dist/{chunk-BLQV2YMO.js → chunk-EZOKT7NJ.js} +2 -2
- package/dist/chunk-FF2LWEF3.js +386 -0
- package/dist/chunk-FF2LWEF3.js.map +1 -0
- package/dist/chunk-FOUK3NHR.js +7 -0
- package/dist/chunk-FOUK3NHR.js.map +1 -0
- package/dist/{chunk-O4FCRKDX.js → chunk-GB4NGCZI.js} +6 -3
- package/dist/chunk-GB4NGCZI.js.map +1 -0
- package/dist/{chunk-5F5PTVWR.js → chunk-GOFSMD6W.js} +9 -10
- package/dist/chunk-GOFSMD6W.js.map +1 -0
- package/dist/{chunk-6D6ROU7X.js → chunk-IGMVF3KK.js} +2 -2
- package/dist/{chunk-INMSEYT6.js → chunk-IVPVYVWG.js} +2 -2
- package/dist/{chunk-ZRC5BVDX.js → chunk-JURCF4OD.js} +174 -12
- package/dist/chunk-JURCF4OD.js.map +1 -0
- package/dist/{chunk-FZ36KL73.js → chunk-KZ7PMFWS.js} +11 -1
- package/dist/chunk-KZ7PMFWS.js.map +1 -0
- package/dist/{chunk-EMCQBT3S.js → chunk-LO6TZBGD.js} +129 -35
- package/dist/chunk-LO6TZBGD.js.map +1 -0
- package/dist/chunk-MFRGAT6D.js +860 -0
- package/dist/chunk-MFRGAT6D.js.map +1 -0
- package/dist/chunk-MIBVQXRU.js +1098 -0
- package/dist/chunk-MIBVQXRU.js.map +1 -0
- package/dist/{chunk-35TX3AOA.js → chunk-NABSRUXG.js} +2 -2
- package/dist/{chunk-2FJDNJ7R.js → chunk-NXKDZWS7.js} +44 -6
- package/dist/chunk-NXKDZWS7.js.map +1 -0
- package/dist/{chunk-KMU6ABQF.js → chunk-NXUS2CH7.js} +14 -1
- package/dist/chunk-NXUS2CH7.js.map +1 -0
- package/dist/{chunk-GJO3RGOB.js → chunk-OCPGOLVF.js} +56 -11
- package/dist/chunk-OCPGOLVF.js.map +1 -0
- package/dist/chunk-OEOE6IFY.js +628 -0
- package/dist/chunk-OEOE6IFY.js.map +1 -0
- package/dist/{chunk-OELI3IWC.js → chunk-PV6OCXXN.js} +2 -2
- package/dist/{chunk-5C6C6K5U.js → chunk-Q66CJO3P.js} +200 -12
- package/dist/chunk-Q66CJO3P.js.map +1 -0
- package/dist/{chunk-MG2VTZA4.js → chunk-QS3ANOWN.js} +2 -2
- package/dist/{chunk-3OEEOBHB.js → chunk-QSJ543V2.js} +2 -2
- package/dist/{chunk-FML6AG2V.js → chunk-RANC3OI6.js} +2 -2
- package/dist/chunk-T4BIN37Q.js +32 -0
- package/dist/chunk-T4BIN37Q.js.map +1 -0
- package/dist/{chunk-YVTFQHVY.js → chunk-TEAZZPDQ.js} +2 -2
- package/dist/chunk-TJK55CJ2.js +49 -0
- package/dist/chunk-TJK55CJ2.js.map +1 -0
- package/dist/chunk-UKIVLF7S.js +32 -0
- package/dist/chunk-UKIVLF7S.js.map +1 -0
- package/dist/chunk-V4R7PYP5.js +905 -0
- package/dist/chunk-V4R7PYP5.js.map +1 -0
- package/dist/{chunk-AG2COC64.js → chunk-VVYQ2DDS.js} +2 -2
- package/dist/chunk-WAMOAAMN.js +16 -0
- package/dist/chunk-WAMOAAMN.js.map +1 -0
- package/dist/chunk-WAYHHL4J.js +1234 -0
- package/dist/chunk-WAYHHL4J.js.map +1 -0
- package/dist/{chunk-PHEGSCOM.js → chunk-WH6HE6SY.js} +10 -4
- package/dist/chunk-WH6HE6SY.js.map +1 -0
- package/dist/{chunk-5MY6OWMK.js → chunk-XP6DI3VY.js} +59 -4
- package/dist/chunk-XP6DI3VY.js.map +1 -0
- package/dist/{chunk-QLA4BH2B.js → chunk-XS6LNTSH.js} +73 -11
- package/dist/chunk-XS6LNTSH.js.map +1 -0
- package/dist/{chunk-WT4OATGP.js → chunk-ZKFCDVB4.js} +16 -7
- package/dist/chunk-ZKFCDVB4.js.map +1 -0
- package/dist/cms-theme.css +22 -0
- package/dist/contact-form/index.d.ts +220 -0
- package/dist/contact-form/index.js +16 -0
- package/dist/contact-form/index.js.map +1 -0
- package/dist/content-block/index.d.ts +39 -3
- package/dist/content-block/index.js +8 -5
- package/dist/cookie-consent/index.d.ts +60 -12
- package/dist/cookie-consent/index.js +3 -2
- package/dist/date-tile/index.js +2 -2
- package/dist/dropdown/index.d.ts +22 -1
- package/dist/dropdown/index.js +4 -2
- package/dist/feature-split/index.d.ts +6 -1
- package/dist/feature-split/index.js +5 -5
- package/dist/features-section/index.d.ts +49 -5
- package/dist/features-section/index.js +6 -6
- package/dist/flow/index.js +2 -2
- package/dist/footer/index.d.ts +13 -0
- package/dist/footer/index.js +2 -2
- package/dist/header/index.d.ts +127 -1
- package/dist/header/index.js +3 -2
- package/dist/hero/index.d.ts +75 -6
- package/dist/hero/index.js +6 -3
- package/dist/icon-button/index.d.ts +5 -3
- package/dist/icon-button/index.js +2 -2
- package/dist/index.d.ts +9 -3
- package/dist/index.js +118 -57
- package/dist/items-accordion/index.d.ts +5 -1
- package/dist/items-accordion/index.js +4 -4
- package/dist/kpi-card/index.js +2 -2
- package/dist/markdown/index.d.ts +18 -0
- package/dist/markdown/index.js +3 -3
- package/dist/mega-menu/index.d.ts +95 -7
- package/dist/mega-menu/index.js +7 -2
- package/dist/menu-grid/index.js +2 -2
- package/dist/menu-grid-item/index.js +2 -2
- package/dist/menu-item/index.d.ts +6 -0
- package/dist/menu-item/index.js +3 -2
- package/dist/plan-cards/index.d.ts +69 -0
- package/dist/plan-cards/index.js +13 -0
- package/dist/plan-cards/index.js.map +1 -0
- package/dist/product-nav/index.d.ts +127 -0
- package/dist/product-nav/index.js +11 -0
- package/dist/product-nav/index.js.map +1 -0
- package/dist/promo-banner/index.d.ts +34 -7
- package/dist/promo-banner/index.js +6 -3
- package/dist/quote-dialog/index.d.ts +174 -0
- package/dist/quote-dialog/index.js +22 -0
- package/dist/quote-dialog/index.js.map +1 -0
- package/dist/schema/index.d.ts +8 -0
- package/dist/schema/index.js +6 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/screenshot-tour/index.d.ts +54 -0
- package/dist/screenshot-tour/index.js +9 -0
- package/dist/screenshot-tour/index.js.map +1 -0
- package/dist/section/index.js +3 -3
- package/dist/segmented-control/index.js +2 -2
- package/dist/select/index.js +2 -2
- package/dist/shared/styles.d.ts +7 -1
- package/dist/shared/styles.js +3 -1
- package/dist/stats/index.js +2 -2
- package/dist/steps/index.d.ts +12 -0
- package/dist/steps/index.js +4 -3
- package/dist/tag-strip/index.d.ts +7 -0
- package/dist/tag-strip/index.js +2 -2
- package/dist/testimonials/index.d.ts +9 -1
- package/dist/testimonials/index.js +3 -3
- package/dist/tooltip/index.js +2 -2
- package/package.json +26 -2
- package/dist/chunk-2DXHPEB5.js.map +0 -1
- package/dist/chunk-2FJDNJ7R.js.map +0 -1
- package/dist/chunk-4AFOKKSU.js +0 -158
- package/dist/chunk-4AFOKKSU.js.map +0 -1
- package/dist/chunk-5C6C6K5U.js.map +0 -1
- package/dist/chunk-5F5PTVWR.js.map +0 -1
- package/dist/chunk-5MY6OWMK.js.map +0 -1
- package/dist/chunk-7NIWQWTA.js.map +0 -1
- package/dist/chunk-DH53HZPB.js.map +0 -1
- package/dist/chunk-EE6PAN3B.js.map +0 -1
- package/dist/chunk-EMCQBT3S.js.map +0 -1
- package/dist/chunk-FZ36KL73.js.map +0 -1
- package/dist/chunk-GJO3RGOB.js.map +0 -1
- package/dist/chunk-HMUZON6I.js +0 -202
- package/dist/chunk-HMUZON6I.js.map +0 -1
- package/dist/chunk-J6EO4R73.js +0 -633
- package/dist/chunk-J6EO4R73.js.map +0 -1
- package/dist/chunk-KMU6ABQF.js.map +0 -1
- package/dist/chunk-MSSH3HFK.js +0 -205
- package/dist/chunk-MSSH3HFK.js.map +0 -1
- package/dist/chunk-O4FCRKDX.js.map +0 -1
- package/dist/chunk-PHEGSCOM.js.map +0 -1
- package/dist/chunk-QLA4BH2B.js.map +0 -1
- package/dist/chunk-SQ3OZO32.js +0 -486
- package/dist/chunk-SQ3OZO32.js.map +0 -1
- package/dist/chunk-UAIUBPDN.js +0 -11
- package/dist/chunk-UAIUBPDN.js.map +0 -1
- package/dist/chunk-WT4OATGP.js.map +0 -1
- package/dist/chunk-XUGEXERO.js +0 -708
- package/dist/chunk-XUGEXERO.js.map +0 -1
- package/dist/chunk-ZRC5BVDX.js.map +0 -1
- /package/dist/{chunk-OLA35A2O.js.map → chunk-2GTR37PU.js.map} +0 -0
- /package/dist/{chunk-AKJQ345O.js.map → chunk-5AWGZQWU.js.map} +0 -0
- /package/dist/{chunk-BLQV2YMO.js.map → chunk-EZOKT7NJ.js.map} +0 -0
- /package/dist/{chunk-6D6ROU7X.js.map → chunk-IGMVF3KK.js.map} +0 -0
- /package/dist/{chunk-INMSEYT6.js.map → chunk-IVPVYVWG.js.map} +0 -0
- /package/dist/{chunk-35TX3AOA.js.map → chunk-NABSRUXG.js.map} +0 -0
- /package/dist/{chunk-OELI3IWC.js.map → chunk-PV6OCXXN.js.map} +0 -0
- /package/dist/{chunk-MG2VTZA4.js.map → chunk-QS3ANOWN.js.map} +0 -0
- /package/dist/{chunk-3OEEOBHB.js.map → chunk-QSJ543V2.js.map} +0 -0
- /package/dist/{chunk-FML6AG2V.js.map → chunk-RANC3OI6.js.map} +0 -0
- /package/dist/{chunk-YVTFQHVY.js.map → chunk-TEAZZPDQ.js.map} +0 -0
- /package/dist/{chunk-AG2COC64.js.map → chunk-VVYQ2DDS.js.map} +0 -0
package/dist/chunk-SQ3OZO32.js
DELETED
|
@@ -1,486 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ctaLinkStyles,
|
|
3
|
-
paddingScaleStyles
|
|
4
|
-
} from "./chunk-FZ36KL73.js";
|
|
5
|
-
import {
|
|
6
|
-
controlBaseStyles,
|
|
7
|
-
rootFontFamilyStyles
|
|
8
|
-
} from "./chunk-KMU6ABQF.js";
|
|
9
|
-
import {
|
|
10
|
-
__decorateClass
|
|
11
|
-
} from "./chunk-EUXUH3YW.js";
|
|
12
|
-
|
|
13
|
-
// src/hero/Hero.ts
|
|
14
|
-
import { LitElement, css, html, nothing, svg } from "lit";
|
|
15
|
-
import { customElement, property } from "lit/decorators.js";
|
|
16
|
-
var HIGHLIGHT_ICON = svg`<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>`;
|
|
17
|
-
var Hero = class extends LitElement {
|
|
18
|
-
constructor() {
|
|
19
|
-
super(...arguments);
|
|
20
|
-
this.title = "";
|
|
21
|
-
this.subtitle = "";
|
|
22
|
-
this.imageSrc = "";
|
|
23
|
-
this.actionLabel = "";
|
|
24
|
-
this.href = "";
|
|
25
|
-
this.textAlignment = "left";
|
|
26
|
-
this.padding = "none";
|
|
27
|
-
this.inverted = false;
|
|
28
|
-
this.focalPoint = "center";
|
|
29
|
-
this.eyebrow = "";
|
|
30
|
-
this.secondaryActionLabel = "";
|
|
31
|
-
this.secondaryHref = "";
|
|
32
|
-
this.badge = "";
|
|
33
|
-
this.highlights = [];
|
|
34
|
-
this.layout = "background";
|
|
35
|
-
this.imageAlt = "";
|
|
36
|
-
this.size = "auto";
|
|
37
|
-
this.contentPosition = "center";
|
|
38
|
-
this.overlay = "even";
|
|
39
|
-
this.onClick = (event) => this.emitAction(event, this.href, "primary");
|
|
40
|
-
this.onSecondaryClick = (event) => this.emitAction(event, this.secondaryHref, "secondary");
|
|
41
|
-
}
|
|
42
|
-
willUpdate() {
|
|
43
|
-
const asBackground = this.layout !== "split";
|
|
44
|
-
this.style.backgroundImage = asBackground && this.imageSrc ? `url(${JSON.stringify(this.imageSrc)})` : "";
|
|
45
|
-
this.style.setProperty("--st-hero-position", Hero.positions[this.focalPoint] ?? Hero.positions.center);
|
|
46
|
-
}
|
|
47
|
-
emitAction(event, href, kind) {
|
|
48
|
-
const action = new CustomEvent("action", {
|
|
49
|
-
detail: { href, kind },
|
|
50
|
-
bubbles: true,
|
|
51
|
-
composed: true,
|
|
52
|
-
cancelable: true
|
|
53
|
-
});
|
|
54
|
-
this.dispatchEvent(action);
|
|
55
|
-
if (action.defaultPrevented) event.preventDefault();
|
|
56
|
-
}
|
|
57
|
-
render() {
|
|
58
|
-
return html`
|
|
59
|
-
<div class="overlay" part="overlay"></div>
|
|
60
|
-
<div class="content" part="content">
|
|
61
|
-
${this.eyebrow ? html`<p class="eyebrow" part="eyebrow">${this.eyebrow}</p>` : nothing}
|
|
62
|
-
${this.badge ? html`<p class="badge" part="badge">${this.badge}</p>` : nothing}
|
|
63
|
-
<h1 class="title" part="title">${this.title}</h1>
|
|
64
|
-
${this.subtitle ? html`<p class="subtitle" part="subtitle">${this.subtitle}</p>` : nothing}
|
|
65
|
-
${this.actionLabel || this.secondaryActionLabel ? html`<div class="actions" part="actions">
|
|
66
|
-
${this.actionLabel ? html`<a class="cta" part="action" href=${this.href || nothing} @click=${this.onClick}>${this.actionLabel}</a>` : nothing}
|
|
67
|
-
${this.secondaryActionLabel ? html`<a class="cta secondary" part="secondary-action" href=${this.secondaryHref || nothing} @click=${this.onSecondaryClick}
|
|
68
|
-
>${this.secondaryActionLabel}</a
|
|
69
|
-
>` : nothing}
|
|
70
|
-
</div>` : nothing}
|
|
71
|
-
${this.highlights.length ? html`<ul class="highlights" part="highlights">
|
|
72
|
-
${this.highlights.map(
|
|
73
|
-
(text) => html`<li class="highlight" part="highlight">${HIGHLIGHT_ICON}<span>${text}</span></li>`
|
|
74
|
-
)}
|
|
75
|
-
</ul>` : nothing}
|
|
76
|
-
<slot></slot>
|
|
77
|
-
</div>
|
|
78
|
-
${this.layout === "split" && this.imageSrc ? html`<figure class="media" part="media">
|
|
79
|
-
<img class="image" part="image" src=${this.imageSrc} alt=${this.imageAlt} />
|
|
80
|
-
</figure>` : nothing}
|
|
81
|
-
`;
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
Hero.styles = css`
|
|
85
|
-
${controlBaseStyles}
|
|
86
|
-
${paddingScaleStyles}
|
|
87
|
-
|
|
88
|
-
@keyframes st-hero-zoom {
|
|
89
|
-
from { opacity: 0; transform: scale(1.1); }
|
|
90
|
-
to { opacity: 1; transform: scale(1); }
|
|
91
|
-
}
|
|
92
|
-
@keyframes st-hero-rise {
|
|
93
|
-
from { opacity: 0; transform: translateY(30px); }
|
|
94
|
-
to { opacity: 1; transform: none; }
|
|
95
|
-
}
|
|
96
|
-
@keyframes st-hero-fade {
|
|
97
|
-
from { opacity: 0; }
|
|
98
|
-
to { opacity: 1; }
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
:host {
|
|
102
|
-
display: flex;
|
|
103
|
-
align-items: center;
|
|
104
|
-
justify-content: center;
|
|
105
|
-
position: relative;
|
|
106
|
-
overflow: hidden;
|
|
107
|
-
width: 100%;
|
|
108
|
-
box-sizing: border-box;
|
|
109
|
-
background-color: var(--st-color-text-strong);
|
|
110
|
-
background-repeat: no-repeat;
|
|
111
|
-
background-size: cover;
|
|
112
|
-
background-position: var(--st-hero-position, center center);
|
|
113
|
-
color: var(--st-color-on-solid);
|
|
114
|
-
${rootFontFamilyStyles}
|
|
115
|
-
animation: st-hero-zoom 1.5s ease-out;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
:host([inverted]) {
|
|
119
|
-
background-color: var(--st-color-surface);
|
|
120
|
-
color: var(--st-color-text-strong);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.overlay {
|
|
124
|
-
position: absolute;
|
|
125
|
-
inset: 0;
|
|
126
|
-
z-index: 1;
|
|
127
|
-
background: linear-gradient(
|
|
128
|
-
to bottom,
|
|
129
|
-
color-mix(in oklch, var(--st-color-text-strong) 40%, transparent),
|
|
130
|
-
color-mix(in oklch, var(--st-color-text-strong) 20%, transparent),
|
|
131
|
-
color-mix(in oklch, var(--st-color-text-strong) 40%, transparent)
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
:host([inverted]) .overlay {
|
|
136
|
-
display: none;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
.content {
|
|
140
|
-
display: flex;
|
|
141
|
-
flex-direction: column;
|
|
142
|
-
gap: var(--st-space-20);
|
|
143
|
-
position: relative;
|
|
144
|
-
z-index: 2;
|
|
145
|
-
width: 80%;
|
|
146
|
-
margin: 0 auto;
|
|
147
|
-
text-align: center;
|
|
148
|
-
align-items: center;
|
|
149
|
-
/* Set here, not only on :host: text sits on the image/overlay, so a colour class the page puts
|
|
150
|
-
on the host (e.g. a theme text colour) must not turn it dark. */
|
|
151
|
-
color: var(--st-hero-text-color, var(--st-color-on-solid));
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
:host([inverted]) .content {
|
|
155
|
-
color: var(--st-hero-text-color, var(--st-color-text-strong));
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
:host([text-alignment='left']) .content { text-align: left; align-items: flex-start; }
|
|
159
|
-
:host([text-alignment='right']) .content { text-align: right; align-items: flex-end; }
|
|
160
|
-
:host([text-alignment='justify']) .content { text-align: justify; align-items: stretch; }
|
|
161
|
-
|
|
162
|
-
.title {
|
|
163
|
-
font-size: var(--st-cms-text-display);
|
|
164
|
-
font-weight: var(--st-font-weight-bold);
|
|
165
|
-
line-height: 1.1;
|
|
166
|
-
color: inherit;
|
|
167
|
-
margin: 0;
|
|
168
|
-
animation: st-hero-rise 0.8s 0.3s ease-out backwards;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
.subtitle {
|
|
172
|
-
font-size: var(--st-cms-text-xl);
|
|
173
|
-
line-height: 1.5;
|
|
174
|
-
color: inherit;
|
|
175
|
-
margin: 0;
|
|
176
|
-
animation: st-hero-fade 0.8s 0.5s ease-out backwards;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.actions {
|
|
180
|
-
display: flex;
|
|
181
|
-
justify-content: center;
|
|
182
|
-
width: 100%;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
.cta {
|
|
186
|
-
${ctaLinkStyles}
|
|
187
|
-
background: var(--st-button-primary-bg);
|
|
188
|
-
color: var(--st-button-primary-color);
|
|
189
|
-
font-weight: var(--st-button-font-weight);
|
|
190
|
-
font-size: var(--st-text-md);
|
|
191
|
-
animation: st-hero-rise 0.6s 0.7s ease-out backwards;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
.cta:hover {
|
|
195
|
-
transform: scale(1.05);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
.cta:active {
|
|
199
|
-
transform: scale(0.98);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.eyebrow {
|
|
203
|
-
margin: 0;
|
|
204
|
-
font-size: var(--st-text-sm);
|
|
205
|
-
font-weight: var(--st-font-weight-bold);
|
|
206
|
-
letter-spacing: 0.12em;
|
|
207
|
-
text-transform: uppercase;
|
|
208
|
-
color: inherit;
|
|
209
|
-
opacity: 0.85;
|
|
210
|
-
animation: st-hero-fade 0.8s 0.2s ease-out backwards;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.actions {
|
|
214
|
-
flex-wrap: wrap;
|
|
215
|
-
gap: var(--st-space-12);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
.cta.secondary {
|
|
219
|
-
background: transparent;
|
|
220
|
-
color: inherit;
|
|
221
|
-
box-shadow: inset 0 0 0 1.5px currentColor;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
.cta.secondary:hover {
|
|
225
|
-
background: color-mix(in oklch, currentColor 12%, transparent);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/* size="large" / "full": a tall editorial hero. */
|
|
229
|
-
:host([size='large']) {
|
|
230
|
-
min-height: var(--st-hero-min-height, 640px);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
:host([size='full']) {
|
|
234
|
-
min-height: 100svh;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
:host([size='large']) .title,
|
|
238
|
-
:host([size='full']) .title {
|
|
239
|
-
font-size: clamp(2.5rem, 6vw, 5rem);
|
|
240
|
-
letter-spacing: -0.02em;
|
|
241
|
-
line-height: 1.05;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
/* content-position="bottom": copy sits in the lower part of the hero, on the container grid. */
|
|
245
|
-
:host([content-position='bottom']) {
|
|
246
|
-
align-items: flex-end;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
:host([content-position='bottom']) .content {
|
|
250
|
-
width: 100%;
|
|
251
|
-
max-width: var(--st-cms-container-max);
|
|
252
|
-
box-sizing: border-box;
|
|
253
|
-
padding: var(--st-space-48) var(--st-space-24);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
:host([content-position='bottom']) .title,
|
|
257
|
-
:host([content-position='bottom']) .subtitle {
|
|
258
|
-
max-width: 18ch;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
:host([content-position='bottom']) .subtitle {
|
|
262
|
-
max-width: 48ch;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
:host([content-position='bottom']:not([text-alignment='center']):not([text-alignment='right'])) .actions {
|
|
266
|
-
justify-content: flex-start;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
:host([content-position='bottom'][text-alignment='center']) .title,
|
|
270
|
-
:host([content-position='bottom'][text-alignment='center']) .subtitle {
|
|
271
|
-
margin-inline: auto;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/* overlay="gradient": darkest behind the copy, clearing towards the far side of the image. */
|
|
275
|
-
:host([overlay='gradient']) .overlay {
|
|
276
|
-
background:
|
|
277
|
-
linear-gradient(to top, color-mix(in oklch, var(--st-color-text-strong) 85%, transparent), transparent 70%),
|
|
278
|
-
linear-gradient(to right, color-mix(in oklch, var(--st-color-text-strong) 70%, transparent), transparent 75%);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
:host([overlay='gradient'][text-alignment='right']) .overlay {
|
|
282
|
-
background:
|
|
283
|
-
linear-gradient(to top, color-mix(in oklch, var(--st-color-text-strong) 85%, transparent), transparent 70%),
|
|
284
|
-
linear-gradient(to left, color-mix(in oklch, var(--st-color-text-strong) 70%, transparent), transparent 75%);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
:host([overlay='none']) .overlay {
|
|
288
|
-
display: none;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
.badge {
|
|
292
|
-
display: inline-flex;
|
|
293
|
-
align-items: center;
|
|
294
|
-
gap: var(--st-space-8);
|
|
295
|
-
margin: 0;
|
|
296
|
-
padding: 6px 14px;
|
|
297
|
-
border: 1px solid var(--st-color-border);
|
|
298
|
-
border-radius: var(--st-radius-full);
|
|
299
|
-
background: var(--st-color-surface);
|
|
300
|
-
color: var(--st-color-text-strong);
|
|
301
|
-
font-size: var(--st-text-sm);
|
|
302
|
-
font-weight: var(--st-font-weight-bold);
|
|
303
|
-
letter-spacing: var(--st-tracking-wider);
|
|
304
|
-
line-height: 1.2;
|
|
305
|
-
text-transform: uppercase;
|
|
306
|
-
animation: st-hero-fade 0.8s 0.2s ease-out backwards;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
.badge::before {
|
|
310
|
-
content: '';
|
|
311
|
-
flex: none;
|
|
312
|
-
width: 8px;
|
|
313
|
-
height: 8px;
|
|
314
|
-
border-radius: var(--st-radius-circle);
|
|
315
|
-
background: var(--st-cms-highlight);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.highlights {
|
|
319
|
-
display: flex;
|
|
320
|
-
flex-wrap: wrap;
|
|
321
|
-
justify-content: center;
|
|
322
|
-
gap: var(--st-space-12) var(--st-space-24);
|
|
323
|
-
margin: 0;
|
|
324
|
-
padding: 0;
|
|
325
|
-
list-style: none;
|
|
326
|
-
animation: st-hero-fade 0.8s 0.9s ease-out backwards;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
.highlight {
|
|
330
|
-
display: inline-flex;
|
|
331
|
-
align-items: center;
|
|
332
|
-
gap: var(--st-space-8);
|
|
333
|
-
font-size: var(--st-text-md);
|
|
334
|
-
font-weight: var(--st-font-weight-semibold);
|
|
335
|
-
color: inherit;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.highlight svg {
|
|
339
|
-
flex: none;
|
|
340
|
-
width: 18px;
|
|
341
|
-
height: 18px;
|
|
342
|
-
color: var(--st-cms-highlight);
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
:host([text-alignment='left']) .highlights {
|
|
346
|
-
justify-content: flex-start;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
:host([text-alignment='right']) .highlights {
|
|
350
|
-
justify-content: flex-end;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
/* layout="split": a two-column block on the page surface; the image replaces the background. */
|
|
354
|
-
:host([layout='split']) {
|
|
355
|
-
display: grid;
|
|
356
|
-
grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
|
|
357
|
-
align-items: center;
|
|
358
|
-
gap: var(--st-space-48);
|
|
359
|
-
overflow: visible;
|
|
360
|
-
padding: var(--st-cms-section-padding) var(--st-space-24);
|
|
361
|
-
background-color: var(--st-color-surface);
|
|
362
|
-
background-image: none;
|
|
363
|
-
color: var(--st-color-text-strong);
|
|
364
|
-
animation: none;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
:host([layout='split']) .overlay {
|
|
368
|
-
display: none;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
:host([layout='split']) .content {
|
|
372
|
-
width: 100%;
|
|
373
|
-
margin: 0;
|
|
374
|
-
padding: 0;
|
|
375
|
-
max-width: 560px;
|
|
376
|
-
color: var(--st-hero-text-color, var(--st-color-text-strong));
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
:host([layout='split'][text-alignment='left']) .actions {
|
|
380
|
-
justify-content: flex-start;
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
:host([layout='split']) .highlight svg {
|
|
384
|
-
color: var(--st-color-accent);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
.media {
|
|
388
|
-
margin: 0;
|
|
389
|
-
min-width: 0;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
.image {
|
|
393
|
-
display: block;
|
|
394
|
-
width: 100%;
|
|
395
|
-
height: auto;
|
|
396
|
-
aspect-ratio: 4 / 3;
|
|
397
|
-
object-fit: cover;
|
|
398
|
-
border-radius: var(--st-radius-lg);
|
|
399
|
-
box-shadow: 0 24px 48px -16px var(--st-shadow-color-lg);
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
@media (min-width: 768px) {
|
|
403
|
-
.content { padding: var(--st-space-32); }
|
|
404
|
-
}
|
|
405
|
-
@media (min-width: 1024px) {
|
|
406
|
-
.content { padding: var(--st-space-48); }
|
|
407
|
-
:host([content-position='bottom']) .content { padding: var(--st-space-48) var(--st-space-32) 6rem; }
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
@media (prefers-reduced-motion: reduce) {
|
|
411
|
-
:host, .eyebrow, .title, .subtitle, .cta { animation: none; }
|
|
412
|
-
.cta { transition: none; }
|
|
413
|
-
}
|
|
414
|
-
`;
|
|
415
|
-
Hero.positions = {
|
|
416
|
-
top: "center top",
|
|
417
|
-
left: "left center",
|
|
418
|
-
right: "right center",
|
|
419
|
-
bottom: "center bottom",
|
|
420
|
-
center: "center center"
|
|
421
|
-
};
|
|
422
|
-
__decorateClass([
|
|
423
|
-
property({ type: String })
|
|
424
|
-
], Hero.prototype, "title", 2);
|
|
425
|
-
__decorateClass([
|
|
426
|
-
property({ type: String })
|
|
427
|
-
], Hero.prototype, "subtitle", 2);
|
|
428
|
-
__decorateClass([
|
|
429
|
-
property({ type: String, attribute: "image-src" })
|
|
430
|
-
], Hero.prototype, "imageSrc", 2);
|
|
431
|
-
__decorateClass([
|
|
432
|
-
property({ type: String, attribute: "action-label" })
|
|
433
|
-
], Hero.prototype, "actionLabel", 2);
|
|
434
|
-
__decorateClass([
|
|
435
|
-
property({ type: String })
|
|
436
|
-
], Hero.prototype, "href", 2);
|
|
437
|
-
__decorateClass([
|
|
438
|
-
property({ type: String, reflect: true, attribute: "text-alignment" })
|
|
439
|
-
], Hero.prototype, "textAlignment", 2);
|
|
440
|
-
__decorateClass([
|
|
441
|
-
property({ type: String, reflect: true })
|
|
442
|
-
], Hero.prototype, "padding", 2);
|
|
443
|
-
__decorateClass([
|
|
444
|
-
property({ type: Boolean, reflect: true })
|
|
445
|
-
], Hero.prototype, "inverted", 2);
|
|
446
|
-
__decorateClass([
|
|
447
|
-
property({ type: String, attribute: "focal-point" })
|
|
448
|
-
], Hero.prototype, "focalPoint", 2);
|
|
449
|
-
__decorateClass([
|
|
450
|
-
property({ type: String })
|
|
451
|
-
], Hero.prototype, "eyebrow", 2);
|
|
452
|
-
__decorateClass([
|
|
453
|
-
property({ type: String, attribute: "secondary-action-label" })
|
|
454
|
-
], Hero.prototype, "secondaryActionLabel", 2);
|
|
455
|
-
__decorateClass([
|
|
456
|
-
property({ type: String, attribute: "secondary-href" })
|
|
457
|
-
], Hero.prototype, "secondaryHref", 2);
|
|
458
|
-
__decorateClass([
|
|
459
|
-
property({ type: String })
|
|
460
|
-
], Hero.prototype, "badge", 2);
|
|
461
|
-
__decorateClass([
|
|
462
|
-
property({ attribute: false })
|
|
463
|
-
], Hero.prototype, "highlights", 2);
|
|
464
|
-
__decorateClass([
|
|
465
|
-
property({ type: String, reflect: true })
|
|
466
|
-
], Hero.prototype, "layout", 2);
|
|
467
|
-
__decorateClass([
|
|
468
|
-
property({ type: String, attribute: "image-alt" })
|
|
469
|
-
], Hero.prototype, "imageAlt", 2);
|
|
470
|
-
__decorateClass([
|
|
471
|
-
property({ type: String, reflect: true })
|
|
472
|
-
], Hero.prototype, "size", 2);
|
|
473
|
-
__decorateClass([
|
|
474
|
-
property({ type: String, reflect: true, attribute: "content-position" })
|
|
475
|
-
], Hero.prototype, "contentPosition", 2);
|
|
476
|
-
__decorateClass([
|
|
477
|
-
property({ type: String, reflect: true })
|
|
478
|
-
], Hero.prototype, "overlay", 2);
|
|
479
|
-
Hero = __decorateClass([
|
|
480
|
-
customElement("st-hero")
|
|
481
|
-
], Hero);
|
|
482
|
-
|
|
483
|
-
export {
|
|
484
|
-
Hero
|
|
485
|
-
};
|
|
486
|
-
//# sourceMappingURL=chunk-SQ3OZO32.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hero/Hero.ts"],"sourcesContent":["import { LitElement, css, html, nothing, svg } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { controlBaseStyles, rootFontFamilyStyles } from '../shared/styles';\nimport { ctaLinkStyles, paddingScaleStyles } from '../shared/section-styles';\nimport type { HeroActionEventDetail } from './HeroEvents';\n\nconst HIGHLIGHT_ICON = svg`<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 6 9 17l-5-5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>`;\n\n/**\n * Full-width hero banner: background image with a darkening overlay, optional eyebrow, title,\n * optional subtitle and up to two call-to-action links. The entrance animation is CSS keyframes\n * (skipped under `prefers-reduced-motion`).\n *\n * `size`, `content-position` and `overlay=\"gradient\"` give the large editorial layout (copy on the\n * lower left over a gradient that darkens towards it) used by enterprise marketing heroes; the\n * defaults keep the original centered banner. Put several heroes in an `st-carousel` with\n * `indicator-style=\"tabs\"` for a tabbed hero carousel.\n *\n * `badge` is a pill above the title; `highlights` is a row of check-marked points under the buttons.\n * `layout=\"split\"` swaps the background for a two-column layout: copy on one side, `image-src` as an\n * `<img>` (alt from `image-alt`) on the other, on normal page colours with no overlay.\n *\n * @fires action - Cancelable, before navigating. Detail `{ href, kind }`, `kind` being `primary` or `secondary`.\n * @cssprop --st-hero-text-color - Text colour over the image.\n * @cssprop --st-hero-min-height - Minimum height when `size` is `large` (default `640px`).\n * @csspart eyebrow - The small label above the title.\n * @csspart badge - The pill above the title.\n * @csspart highlights - The row of check-marked points.\n * @csspart image - The image in `layout=\"split\"`.\n * @csspart secondary-action - The outlined second button.\n */\n@customElement('st-hero')\nexport class Hero extends LitElement {\n static styles = css`\n ${controlBaseStyles}\n ${paddingScaleStyles}\n\n @keyframes st-hero-zoom {\n from { opacity: 0; transform: scale(1.1); }\n to { opacity: 1; transform: scale(1); }\n }\n @keyframes st-hero-rise {\n from { opacity: 0; transform: translateY(30px); }\n to { opacity: 1; transform: none; }\n }\n @keyframes st-hero-fade {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n overflow: hidden;\n width: 100%;\n box-sizing: border-box;\n background-color: var(--st-color-text-strong);\n background-repeat: no-repeat;\n background-size: cover;\n background-position: var(--st-hero-position, center center);\n color: var(--st-color-on-solid);\n ${rootFontFamilyStyles}\n animation: st-hero-zoom 1.5s ease-out;\n }\n\n :host([inverted]) {\n background-color: var(--st-color-surface);\n color: var(--st-color-text-strong);\n }\n\n .overlay {\n position: absolute;\n inset: 0;\n z-index: 1;\n background: linear-gradient(\n to bottom,\n color-mix(in oklch, var(--st-color-text-strong) 40%, transparent),\n color-mix(in oklch, var(--st-color-text-strong) 20%, transparent),\n color-mix(in oklch, var(--st-color-text-strong) 40%, transparent)\n );\n }\n\n :host([inverted]) .overlay {\n display: none;\n }\n\n .content {\n display: flex;\n flex-direction: column;\n gap: var(--st-space-20);\n position: relative;\n z-index: 2;\n width: 80%;\n margin: 0 auto;\n text-align: center;\n align-items: center;\n /* Set here, not only on :host: text sits on the image/overlay, so a colour class the page puts\n on the host (e.g. a theme text colour) must not turn it dark. */\n color: var(--st-hero-text-color, var(--st-color-on-solid));\n }\n\n :host([inverted]) .content {\n color: var(--st-hero-text-color, var(--st-color-text-strong));\n }\n\n :host([text-alignment='left']) .content { text-align: left; align-items: flex-start; }\n :host([text-alignment='right']) .content { text-align: right; align-items: flex-end; }\n :host([text-alignment='justify']) .content { text-align: justify; align-items: stretch; }\n\n .title {\n font-size: var(--st-cms-text-display);\n font-weight: var(--st-font-weight-bold);\n line-height: 1.1;\n color: inherit;\n margin: 0;\n animation: st-hero-rise 0.8s 0.3s ease-out backwards;\n }\n\n .subtitle {\n font-size: var(--st-cms-text-xl);\n line-height: 1.5;\n color: inherit;\n margin: 0;\n animation: st-hero-fade 0.8s 0.5s ease-out backwards;\n }\n\n .actions {\n display: flex;\n justify-content: center;\n width: 100%;\n }\n\n .cta {\n ${ctaLinkStyles}\n background: var(--st-button-primary-bg);\n color: var(--st-button-primary-color);\n font-weight: var(--st-button-font-weight);\n font-size: var(--st-text-md);\n animation: st-hero-rise 0.6s 0.7s ease-out backwards;\n }\n\n .cta:hover {\n transform: scale(1.05);\n }\n\n .cta:active {\n transform: scale(0.98);\n }\n\n .eyebrow {\n margin: 0;\n font-size: var(--st-text-sm);\n font-weight: var(--st-font-weight-bold);\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: inherit;\n opacity: 0.85;\n animation: st-hero-fade 0.8s 0.2s ease-out backwards;\n }\n\n .actions {\n flex-wrap: wrap;\n gap: var(--st-space-12);\n }\n\n .cta.secondary {\n background: transparent;\n color: inherit;\n box-shadow: inset 0 0 0 1.5px currentColor;\n }\n\n .cta.secondary:hover {\n background: color-mix(in oklch, currentColor 12%, transparent);\n }\n\n /* size=\"large\" / \"full\": a tall editorial hero. */\n :host([size='large']) {\n min-height: var(--st-hero-min-height, 640px);\n }\n\n :host([size='full']) {\n min-height: 100svh;\n }\n\n :host([size='large']) .title,\n :host([size='full']) .title {\n font-size: clamp(2.5rem, 6vw, 5rem);\n letter-spacing: -0.02em;\n line-height: 1.05;\n }\n\n /* content-position=\"bottom\": copy sits in the lower part of the hero, on the container grid. */\n :host([content-position='bottom']) {\n align-items: flex-end;\n }\n\n :host([content-position='bottom']) .content {\n width: 100%;\n max-width: var(--st-cms-container-max);\n box-sizing: border-box;\n padding: var(--st-space-48) var(--st-space-24);\n }\n\n :host([content-position='bottom']) .title,\n :host([content-position='bottom']) .subtitle {\n max-width: 18ch;\n }\n\n :host([content-position='bottom']) .subtitle {\n max-width: 48ch;\n }\n\n :host([content-position='bottom']:not([text-alignment='center']):not([text-alignment='right'])) .actions {\n justify-content: flex-start;\n }\n\n :host([content-position='bottom'][text-alignment='center']) .title,\n :host([content-position='bottom'][text-alignment='center']) .subtitle {\n margin-inline: auto;\n }\n\n /* overlay=\"gradient\": darkest behind the copy, clearing towards the far side of the image. */\n :host([overlay='gradient']) .overlay {\n background:\n linear-gradient(to top, color-mix(in oklch, var(--st-color-text-strong) 85%, transparent), transparent 70%),\n linear-gradient(to right, color-mix(in oklch, var(--st-color-text-strong) 70%, transparent), transparent 75%);\n }\n\n :host([overlay='gradient'][text-alignment='right']) .overlay {\n background:\n linear-gradient(to top, color-mix(in oklch, var(--st-color-text-strong) 85%, transparent), transparent 70%),\n linear-gradient(to left, color-mix(in oklch, var(--st-color-text-strong) 70%, transparent), transparent 75%);\n }\n\n :host([overlay='none']) .overlay {\n display: none;\n }\n\n .badge {\n display: inline-flex;\n align-items: center;\n gap: var(--st-space-8);\n margin: 0;\n padding: 6px 14px;\n border: 1px solid var(--st-color-border);\n border-radius: var(--st-radius-full);\n background: var(--st-color-surface);\n color: var(--st-color-text-strong);\n font-size: var(--st-text-sm);\n font-weight: var(--st-font-weight-bold);\n letter-spacing: var(--st-tracking-wider);\n line-height: 1.2;\n text-transform: uppercase;\n animation: st-hero-fade 0.8s 0.2s ease-out backwards;\n }\n\n .badge::before {\n content: '';\n flex: none;\n width: 8px;\n height: 8px;\n border-radius: var(--st-radius-circle);\n background: var(--st-cms-highlight);\n }\n\n .highlights {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--st-space-12) var(--st-space-24);\n margin: 0;\n padding: 0;\n list-style: none;\n animation: st-hero-fade 0.8s 0.9s ease-out backwards;\n }\n\n .highlight {\n display: inline-flex;\n align-items: center;\n gap: var(--st-space-8);\n font-size: var(--st-text-md);\n font-weight: var(--st-font-weight-semibold);\n color: inherit;\n }\n\n .highlight svg {\n flex: none;\n width: 18px;\n height: 18px;\n color: var(--st-cms-highlight);\n }\n\n :host([text-alignment='left']) .highlights {\n justify-content: flex-start;\n }\n\n :host([text-alignment='right']) .highlights {\n justify-content: flex-end;\n }\n\n /* layout=\"split\": a two-column block on the page surface; the image replaces the background. */\n :host([layout='split']) {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));\n align-items: center;\n gap: var(--st-space-48);\n overflow: visible;\n padding: var(--st-cms-section-padding) var(--st-space-24);\n background-color: var(--st-color-surface);\n background-image: none;\n color: var(--st-color-text-strong);\n animation: none;\n }\n\n :host([layout='split']) .overlay {\n display: none;\n }\n\n :host([layout='split']) .content {\n width: 100%;\n margin: 0;\n padding: 0;\n max-width: 560px;\n color: var(--st-hero-text-color, var(--st-color-text-strong));\n }\n\n :host([layout='split'][text-alignment='left']) .actions {\n justify-content: flex-start;\n }\n\n :host([layout='split']) .highlight svg {\n color: var(--st-color-accent);\n }\n\n .media {\n margin: 0;\n min-width: 0;\n }\n\n .image {\n display: block;\n width: 100%;\n height: auto;\n aspect-ratio: 4 / 3;\n object-fit: cover;\n border-radius: var(--st-radius-lg);\n box-shadow: 0 24px 48px -16px var(--st-shadow-color-lg);\n }\n\n @media (min-width: 768px) {\n .content { padding: var(--st-space-32); }\n }\n @media (min-width: 1024px) {\n .content { padding: var(--st-space-48); }\n :host([content-position='bottom']) .content { padding: var(--st-space-48) var(--st-space-32) 6rem; }\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host, .eyebrow, .title, .subtitle, .cta { animation: none; }\n .cta { transition: none; }\n }\n `;\n\n @property({ type: String })\n title = '';\n\n @property({ type: String })\n subtitle = '';\n\n @property({ type: String, attribute: 'image-src' })\n imageSrc = '';\n\n @property({ type: String, attribute: 'action-label' })\n actionLabel = '';\n\n @property({ type: String })\n href = '';\n\n @property({ type: String, reflect: true, attribute: 'text-alignment' })\n textAlignment: 'left' | 'center' | 'right' | 'justify' = 'left';\n\n @property({ type: String, reflect: true })\n padding: 'none' | 'small' | 'medium' | 'large' = 'none';\n\n @property({ type: Boolean, reflect: true })\n inverted = false;\n\n @property({ type: String, attribute: 'focal-point' })\n focalPoint: 'top' | 'left' | 'right' | 'bottom' | 'center' = 'center';\n\n /** Small uppercase label above the title (e.g. an event or product name). */\n @property({ type: String })\n eyebrow = '';\n\n /** Label of an outlined second button next to the primary one. */\n @property({ type: String, attribute: 'secondary-action-label' })\n secondaryActionLabel = '';\n\n @property({ type: String, attribute: 'secondary-href' })\n secondaryHref = '';\n\n /** Small pill above the title (e.g. \"New\", \"Now available\"). */\n @property({ type: String })\n badge = '';\n\n /** Check-marked points shown in a row under the buttons. */\n @property({ attribute: false })\n highlights: string[] = [];\n\n /** `background` (default) puts `image-src` behind the copy; `split` puts copy and image side by side. */\n @property({ type: String, reflect: true })\n layout: 'background' | 'split' = 'background';\n\n /** Alt text of the image in `layout=\"split\"`. Empty marks it as decorative. */\n @property({ type: String, attribute: 'image-alt' })\n imageAlt = '';\n\n /** `auto` sizes to the content; `large` is a tall editorial hero (`--st-hero-min-height`); `full` fills the viewport. */\n @property({ type: String, reflect: true })\n size: 'auto' | 'large' | 'full' = 'auto';\n\n /** `center` keeps the copy in the middle; `bottom` puts it in the lower part of the hero, on the page container. */\n @property({ type: String, reflect: true, attribute: 'content-position' })\n contentPosition: 'center' | 'bottom' = 'center';\n\n /** `even` darkens the whole image; `gradient` darkens behind the copy only; `none` shows the image as is. */\n @property({ type: String, reflect: true })\n overlay: 'even' | 'gradient' | 'none' = 'even';\n\n private static positions = {\n top: 'center top',\n left: 'left center',\n right: 'right center',\n bottom: 'center bottom',\n center: 'center center'\n } as const;\n\n protected willUpdate(): void {\n const asBackground = this.layout !== 'split';\n this.style.backgroundImage = asBackground && this.imageSrc ? `url(${JSON.stringify(this.imageSrc)})` : '';\n this.style.setProperty('--st-hero-position', Hero.positions[this.focalPoint] ?? Hero.positions.center);\n }\n\n private emitAction(event: MouseEvent, href: string, kind: 'primary' | 'secondary'): void {\n const action = new CustomEvent<HeroActionEventDetail>('action', {\n detail: { href, kind },\n bubbles: true,\n composed: true,\n cancelable: true\n });\n this.dispatchEvent(action);\n if (action.defaultPrevented) event.preventDefault();\n }\n\n private onClick = (event: MouseEvent): void => this.emitAction(event, this.href, 'primary');\n\n private onSecondaryClick = (event: MouseEvent): void => this.emitAction(event, this.secondaryHref, 'secondary');\n\n render() {\n return html`\n <div class=\"overlay\" part=\"overlay\"></div>\n <div class=\"content\" part=\"content\">\n ${this.eyebrow ? html`<p class=\"eyebrow\" part=\"eyebrow\">${this.eyebrow}</p>` : nothing}\n ${this.badge ? html`<p class=\"badge\" part=\"badge\">${this.badge}</p>` : nothing}\n <h1 class=\"title\" part=\"title\">${this.title}</h1>\n ${this.subtitle ? html`<p class=\"subtitle\" part=\"subtitle\">${this.subtitle}</p>` : nothing}\n ${this.actionLabel || this.secondaryActionLabel\n ? html`<div class=\"actions\" part=\"actions\">\n ${this.actionLabel\n ? html`<a class=\"cta\" part=\"action\" href=${this.href || nothing} @click=${this.onClick}>${this.actionLabel}</a>`\n : nothing}\n ${this.secondaryActionLabel\n ? html`<a class=\"cta secondary\" part=\"secondary-action\" href=${this.secondaryHref || nothing} @click=${this.onSecondaryClick}\n >${this.secondaryActionLabel}</a\n >`\n : nothing}\n </div>`\n : nothing}\n ${this.highlights.length\n ? html`<ul class=\"highlights\" part=\"highlights\">\n ${this.highlights.map(\n (text) => html`<li class=\"highlight\" part=\"highlight\">${HIGHLIGHT_ICON}<span>${text}</span></li>`\n )}\n </ul>`\n : nothing}\n <slot></slot>\n </div>\n ${this.layout === 'split' && this.imageSrc\n ? html`<figure class=\"media\" part=\"media\">\n <img class=\"image\" part=\"image\" src=${this.imageSrc} alt=${this.imageAlt} />\n </figure>`\n : nothing}\n `;\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-UAIUBPDN.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// src/shared/markdown.ts
|
|
2
|
-
import DOMPurify from "dompurify";
|
|
3
|
-
import { marked } from "marked";
|
|
4
|
-
function renderMarkdown(source) {
|
|
5
|
-
return DOMPurify.sanitize(marked.parse(source, { gfm: true, breaks: true, async: false }));
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
renderMarkdown
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=chunk-UAIUBPDN.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/markdown.ts"],"sourcesContent":["import DOMPurify from 'dompurify';\nimport { marked } from 'marked';\n\n/**\n * Renders Markdown (GFM, single newlines become `<br>`) to HTML sanitized with DOMPurify. The one\n * place the CMS turns authored Markdown into markup; render the result with `unsafeHTML`.\n */\nexport function renderMarkdown(source: string): string {\n return DOMPurify.sanitize(marked.parse(source, { gfm: true, breaks: true, async: false }));\n}\n"],"mappings":";AAAA,OAAO,eAAe;AACtB,SAAS,cAAc;AAMhB,SAAS,eAAe,QAAwB;AACrD,SAAO,UAAU,SAAS,OAAO,MAAM,QAAQ,EAAE,KAAK,MAAM,QAAQ,MAAM,OAAO,MAAM,CAAC,CAAC;AAC3F;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/feature-split/FeatureSplit.ts"],"sourcesContent":["import { LitElement, css, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport 'iconify-icon';\n\nimport { controlBaseStyles, ctaButtonStyles, fontFamilyStyles } from '../shared/styles';\nimport '../markdown';\nimport {\n cardTitleStyles,\n iconTileStyles,\n reducedMotionStyles,\n sectionTitleStyles,\n} from '../shared/section-styles';\nimport type { FeatureSplitActionEventDetail } from './FeatureSplitEvents';\n\nexport interface FeatureSplitItem {\n /** Iconify icon name, e.g. `mdi:check`. */\n icon?: string;\n title: string;\n /** Markdown. */\n description: string;\n}\n\nexport type FeatureSplitImagePosition = 'left' | 'right' | 'top';\n\n/**\n * A title/markdown-subtitle/feature-list block beside (or under) an image.\n *\n * @cssprop --st-feature-split-padding - Overrides the block's padding.\n */\n@customElement('st-feature-split')\nexport class FeatureSplit extends LitElement {\n static styles = css`\n ${controlBaseStyles}\n\n :host {\n display: block;\n /* !important: a page-level reset (e.g. Tailwind Preflight) otherwise zeroes a shadow host's\n padding; override with --st-feature-split-padding instead. */\n padding: var(--st-feature-split-padding, var(--st-space-24)) !important;\n background: var(--st-color-page);\n ${fontFamilyStyles}\n }\n\n :host([inverted]) {\n background: var(--st-color-text-strong);\n }\n\n .container {\n max-width: var(--st-cms-container-max);\n margin: 0 auto;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--st-space-48);\n align-items: center;\n }\n\n :host([image-position='left']) .container {\n direction: rtl;\n }\n\n :host([image-position='left']) .content {\n direction: ltr;\n }\n\n :host([image-position='top']) .container {\n grid-template-columns: 1fr;\n text-align: center;\n }\n\n :host([image-position='top']) .content {\n align-items: center;\n }\n\n :host([image-position='top']) .image-wrapper {\n order: -1;\n max-width: 800px;\n margin: 0 auto;\n }\n\n .content {\n display: flex;\n flex-direction: column;\n gap: var(--st-space-32);\n }\n\n .title {\n ${sectionTitleStyles}\n margin: 0;\n }\n\n .subtitle {\n color: var(--st-color-text-muted);\n font-size: var(--st-text-base);\n line-height: 1.6;\n }\n\n .list {\n display: flex;\n flex-direction: column;\n gap: var(--st-space-24);\n margin-top: var(--st-space-16);\n }\n\n .item {\n display: flex;\n gap: var(--st-space-16);\n align-items: flex-start;\n text-align: left;\n }\n\n .icon {\n ${iconTileStyles}\n width: var(--st-space-48);\n height: var(--st-space-48);\n font-size: 24px;\n }\n\n .item-title {\n ${cardTitleStyles}\n }\n\n .item-description {\n color: var(--st-color-text-muted);\n font-size: var(--st-text-sm);\n line-height: 1.5;\n }\n\n .action {\n ${ctaButtonStyles}\n justify-self: start;\n padding: var(--st-space-16);\n border-radius: var(--st-radius-lg);\n }\n\n .image-wrapper {\n width: 100%;\n height: 100%;\n min-height: 400px;\n border-radius: var(--st-space-24);\n overflow: hidden;\n box-shadow: 0 20px 40px -12px var(--st-shadow-color-md);\n }\n\n .image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.5s ease;\n }\n\n .image:hover {\n transform: scale(1.02);\n }\n\n :host([inverted]) .title,\n :host([inverted]) .item-title {\n color: var(--st-color-on-solid);\n }\n\n :host([inverted]) .subtitle,\n :host([inverted]) .item-description {\n color: var(--st-color-border);\n }\n\n :host([inverted]) .icon {\n background: var(--st-color-text);\n color: var(--st-color-border);\n }\n\n @media (max-width: 1024px) {\n .container {\n gap: var(--st-space-40);\n }\n }\n\n @media (max-width: 768px) {\n :host {\n padding: var(--st-feature-split-padding, var(--st-space-48) var(--st-space-24)) !important;\n }\n\n .container {\n grid-template-columns: 1fr;\n direction: ltr !important;\n }\n\n .image-wrapper {\n min-height: 300px;\n order: -1;\n }\n }\n\n ${reducedMotionStyles}\n `;\n\n @property({ type: Boolean, reflect: true })\n inverted = false;\n\n @property({ type: String })\n title = '';\n\n /** Markdown. */\n @property({ type: String })\n subtitle = '';\n\n @property({ attribute: false })\n items: FeatureSplitItem[] = [];\n\n @property({ type: String, attribute: 'image-src' })\n imageSrc = '';\n\n @property({ type: String, attribute: 'image-alt' })\n imageAlt = '';\n\n @property({ type: String, attribute: 'image-position', reflect: true })\n imagePosition: FeatureSplitImagePosition = 'right';\n\n @property({ type: String, attribute: 'action-label' })\n actionLabel = '';\n\n @property({ type: String })\n href = '';\n\n private onAction() {\n const event = new CustomEvent<FeatureSplitActionEventDetail>('feature-split-action', {\n detail: { href: this.href },\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n if (this.dispatchEvent(event)) window.location.href = this.href;\n }\n\n render() {\n return html`\n <div class=\"container\" part=\"container\">\n <div class=\"content\" part=\"content\">\n <h2 class=\"title\" part=\"title\">${this.title}</h2>\n ${this.subtitle\n ? html`<div class=\"subtitle\" part=\"subtitle\"><st-markdown .content=${this.subtitle}></st-markdown></div>`\n : nothing}\n ${this.items.length > 0\n ? html`<div class=\"list\" part=\"list\">\n ${this.items.map(\n (item) => html`\n <div class=\"item\" part=\"item\">\n ${item.icon\n ? html`<div class=\"icon\" part=\"icon\"><iconify-icon icon=${item.icon}></iconify-icon></div>`\n : nothing}\n <div>\n <h3 class=\"item-title\" part=\"item-title\">${item.title}</h3>\n <div class=\"item-description\" part=\"item-description\">\n <st-markdown .content=${item.description}></st-markdown>\n </div>\n </div>\n </div>\n `,\n )}\n </div>`\n : nothing}\n ${this.actionLabel && this.href\n ? html`<button class=\"action\" part=\"action\" type=\"button\" @click=${this.onAction}>${this.actionLabel}</button>`\n : nothing}\n </div>\n <div class=\"image-wrapper\" part=\"image-wrapper\">\n <img class=\"image\" part=\"image\" src=${this.imageSrc} alt=${this.imageAlt || this.title} />\n </div>\n </div>\n `;\n }\n}\n"],"mappings":"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","names":[]}
|