@sankhyatronics/sankhya-cms 0.1.18 → 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.
Files changed (216) hide show
  1. package/custom-elements.json +11634 -3153
  2. package/dist/attention-panel/index.js +2 -2
  3. package/dist/bar-chart/index.js +2 -2
  4. package/dist/bento-grid/index.d.ts +33 -1
  5. package/dist/bento-grid/index.js +4 -3
  6. package/dist/booking/index.d.ts +309 -0
  7. package/dist/booking/index.js +20 -0
  8. package/dist/booking/index.js.map +1 -0
  9. package/dist/card/index.d.ts +3 -4
  10. package/dist/card/index.js +2 -2
  11. package/dist/carousel/index.d.ts +20 -6
  12. package/dist/carousel/index.js +3 -3
  13. package/dist/chip/index.js +2 -2
  14. package/dist/{chunk-JQY2G4QK.js → chunk-2GTR37PU.js} +2 -2
  15. package/dist/chunk-2GTR37PU.js.map +1 -0
  16. package/dist/{chunk-FLY7TNRT.js → chunk-2HMOX253.js} +128 -25
  17. package/dist/chunk-2HMOX253.js.map +1 -0
  18. package/dist/{chunk-DH53HZPB.js → chunk-37KFBKPD.js} +32 -4
  19. package/dist/chunk-37KFBKPD.js.map +1 -0
  20. package/dist/{chunk-ALI26WOB.js → chunk-4XPKKYVZ.js} +54 -15
  21. package/dist/chunk-4XPKKYVZ.js.map +1 -0
  22. package/dist/chunk-535QAZ6A.js +236 -0
  23. package/dist/chunk-535QAZ6A.js.map +1 -0
  24. package/dist/{chunk-AKJQ345O.js → chunk-5AWGZQWU.js} +2 -2
  25. package/dist/chunk-6OZKZG5J.js +300 -0
  26. package/dist/chunk-6OZKZG5J.js.map +1 -0
  27. package/dist/chunk-AYNT7G3J.js +805 -0
  28. package/dist/chunk-AYNT7G3J.js.map +1 -0
  29. package/dist/chunk-BEWX3E6P.js +32 -0
  30. package/dist/chunk-BEWX3E6P.js.map +1 -0
  31. package/dist/chunk-CZUGPKXV.js +275 -0
  32. package/dist/chunk-CZUGPKXV.js.map +1 -0
  33. package/dist/{chunk-LEXZKGQX.js → chunk-DJFWZOZM.js} +107 -11
  34. package/dist/chunk-DJFWZOZM.js.map +1 -0
  35. package/dist/chunk-DPANTC3O.js +1714 -0
  36. package/dist/chunk-DPANTC3O.js.map +1 -0
  37. package/dist/chunk-EKZFFY45.js +426 -0
  38. package/dist/chunk-EKZFFY45.js.map +1 -0
  39. package/dist/chunk-ER7MCPDV.js +7 -0
  40. package/dist/chunk-ER7MCPDV.js.map +1 -0
  41. package/dist/chunk-EW2RK5Y6.js +383 -0
  42. package/dist/chunk-EW2RK5Y6.js.map +1 -0
  43. package/dist/{chunk-BLQV2YMO.js → chunk-EZOKT7NJ.js} +2 -2
  44. package/dist/chunk-FF2LWEF3.js +386 -0
  45. package/dist/chunk-FF2LWEF3.js.map +1 -0
  46. package/dist/chunk-FOUK3NHR.js +7 -0
  47. package/dist/chunk-FOUK3NHR.js.map +1 -0
  48. package/dist/chunk-GB4NGCZI.js +181 -0
  49. package/dist/chunk-GB4NGCZI.js.map +1 -0
  50. package/dist/{chunk-7NLZND6Q.js → chunk-GOFSMD6W.js} +35 -11
  51. package/dist/chunk-GOFSMD6W.js.map +1 -0
  52. package/dist/{chunk-6D6ROU7X.js → chunk-IGMVF3KK.js} +2 -2
  53. package/dist/{chunk-INMSEYT6.js → chunk-IVPVYVWG.js} +2 -2
  54. package/dist/chunk-JURCF4OD.js +381 -0
  55. package/dist/chunk-JURCF4OD.js.map +1 -0
  56. package/dist/{chunk-FZ36KL73.js → chunk-KZ7PMFWS.js} +11 -1
  57. package/dist/chunk-KZ7PMFWS.js.map +1 -0
  58. package/dist/{chunk-EMCQBT3S.js → chunk-LO6TZBGD.js} +129 -35
  59. package/dist/chunk-LO6TZBGD.js.map +1 -0
  60. package/dist/chunk-MFRGAT6D.js +860 -0
  61. package/dist/chunk-MFRGAT6D.js.map +1 -0
  62. package/dist/chunk-MIBVQXRU.js +1098 -0
  63. package/dist/chunk-MIBVQXRU.js.map +1 -0
  64. package/dist/{chunk-35TX3AOA.js → chunk-NABSRUXG.js} +2 -2
  65. package/dist/{chunk-R5G6KFTJ.js → chunk-NXKDZWS7.js} +44 -6
  66. package/dist/chunk-NXKDZWS7.js.map +1 -0
  67. package/dist/{chunk-KMU6ABQF.js → chunk-NXUS2CH7.js} +14 -1
  68. package/dist/chunk-NXUS2CH7.js.map +1 -0
  69. package/dist/{chunk-GJO3RGOB.js → chunk-OCPGOLVF.js} +56 -11
  70. package/dist/chunk-OCPGOLVF.js.map +1 -0
  71. package/dist/chunk-OEOE6IFY.js +628 -0
  72. package/dist/chunk-OEOE6IFY.js.map +1 -0
  73. package/dist/{chunk-SMLR736E.js → chunk-PV6OCXXN.js} +2 -2
  74. package/dist/chunk-PV6OCXXN.js.map +1 -0
  75. package/dist/chunk-Q66CJO3P.js +534 -0
  76. package/dist/chunk-Q66CJO3P.js.map +1 -0
  77. package/dist/{chunk-MG2VTZA4.js → chunk-QS3ANOWN.js} +2 -2
  78. package/dist/{chunk-ZN4LIKVG.js → chunk-QSJ543V2.js} +2 -2
  79. package/dist/chunk-QSJ543V2.js.map +1 -0
  80. package/dist/{chunk-FML6AG2V.js → chunk-RANC3OI6.js} +2 -2
  81. package/dist/chunk-T4BIN37Q.js +32 -0
  82. package/dist/chunk-T4BIN37Q.js.map +1 -0
  83. package/dist/{chunk-YVTFQHVY.js → chunk-TEAZZPDQ.js} +2 -2
  84. package/dist/chunk-TJK55CJ2.js +49 -0
  85. package/dist/chunk-TJK55CJ2.js.map +1 -0
  86. package/dist/chunk-UKIVLF7S.js +32 -0
  87. package/dist/chunk-UKIVLF7S.js.map +1 -0
  88. package/dist/chunk-V4R7PYP5.js +905 -0
  89. package/dist/chunk-V4R7PYP5.js.map +1 -0
  90. package/dist/{chunk-AG2COC64.js → chunk-VVYQ2DDS.js} +2 -2
  91. package/dist/chunk-WAMOAAMN.js +16 -0
  92. package/dist/chunk-WAMOAAMN.js.map +1 -0
  93. package/dist/chunk-WAYHHL4J.js +1234 -0
  94. package/dist/chunk-WAYHHL4J.js.map +1 -0
  95. package/dist/{chunk-YQ42EBK5.js → chunk-WH6HE6SY.js} +10 -4
  96. package/dist/chunk-WH6HE6SY.js.map +1 -0
  97. package/dist/chunk-XP6DI3VY.js +180 -0
  98. package/dist/chunk-XP6DI3VY.js.map +1 -0
  99. package/dist/{chunk-5EBWMPJS.js → chunk-XS6LNTSH.js} +76 -14
  100. package/dist/chunk-XS6LNTSH.js.map +1 -0
  101. package/dist/{chunk-WT4OATGP.js → chunk-ZKFCDVB4.js} +16 -7
  102. package/dist/chunk-ZKFCDVB4.js.map +1 -0
  103. package/dist/cms-theme.css +29 -0
  104. package/dist/contact-form/index.d.ts +220 -0
  105. package/dist/contact-form/index.js +16 -0
  106. package/dist/contact-form/index.js.map +1 -0
  107. package/dist/content-block/index.d.ts +39 -4
  108. package/dist/content-block/index.js +8 -4
  109. package/dist/cookie-consent/index.d.ts +60 -12
  110. package/dist/cookie-consent/index.js +3 -2
  111. package/dist/date-tile/index.js +2 -2
  112. package/dist/dropdown/index.d.ts +29 -11
  113. package/dist/dropdown/index.js +4 -2
  114. package/dist/feature-split/index.d.ts +6 -1
  115. package/dist/feature-split/index.js +5 -4
  116. package/dist/features-section/index.d.ts +53 -9
  117. package/dist/features-section/index.js +6 -5
  118. package/dist/flow/index.d.ts +35 -0
  119. package/dist/flow/index.js +9 -0
  120. package/dist/flow/index.js.map +1 -0
  121. package/dist/footer/index.d.ts +13 -0
  122. package/dist/footer/index.js +2 -2
  123. package/dist/header/index.d.ts +135 -16
  124. package/dist/header/index.js +3 -2
  125. package/dist/hero/index.d.ts +92 -8
  126. package/dist/hero/index.js +6 -3
  127. package/dist/icon-button/index.d.ts +7 -7
  128. package/dist/icon-button/index.js +2 -2
  129. package/dist/index.d.ts +12 -3
  130. package/dist/index.js +121 -47
  131. package/dist/items-accordion/index.d.ts +9 -0
  132. package/dist/items-accordion/index.js +4 -3
  133. package/dist/kpi-card/index.js +2 -2
  134. package/dist/markdown/index.d.ts +19 -2
  135. package/dist/markdown/index.js +3 -2
  136. package/dist/mega-menu/index.d.ts +95 -7
  137. package/dist/mega-menu/index.js +7 -2
  138. package/dist/menu-grid/index.d.ts +2 -3
  139. package/dist/menu-grid/index.js +2 -2
  140. package/dist/menu-grid-item/index.d.ts +6 -8
  141. package/dist/menu-grid-item/index.js +2 -2
  142. package/dist/menu-item/index.d.ts +11 -7
  143. package/dist/menu-item/index.js +3 -2
  144. package/dist/plan-cards/index.d.ts +69 -0
  145. package/dist/plan-cards/index.js +13 -0
  146. package/dist/plan-cards/index.js.map +1 -0
  147. package/dist/product-nav/index.d.ts +127 -0
  148. package/dist/product-nav/index.js +11 -0
  149. package/dist/product-nav/index.js.map +1 -0
  150. package/dist/promo-banner/index.d.ts +42 -4
  151. package/dist/promo-banner/index.js +6 -3
  152. package/dist/quote-dialog/index.d.ts +174 -0
  153. package/dist/quote-dialog/index.js +22 -0
  154. package/dist/quote-dialog/index.js.map +1 -0
  155. package/dist/schema/index.d.ts +11 -0
  156. package/dist/schema/index.js +9 -0
  157. package/dist/schema/index.js.map +1 -1
  158. package/dist/screenshot-tour/index.d.ts +54 -0
  159. package/dist/screenshot-tour/index.js +9 -0
  160. package/dist/screenshot-tour/index.js.map +1 -0
  161. package/dist/section/index.d.ts +3 -0
  162. package/dist/section/index.js +3 -3
  163. package/dist/segmented-control/index.js +2 -2
  164. package/dist/select/index.js +2 -2
  165. package/dist/shared/styles.d.ts +7 -1
  166. package/dist/shared/styles.js +3 -1
  167. package/dist/stats/index.js +2 -2
  168. package/dist/steps/index.d.ts +45 -0
  169. package/dist/steps/index.js +11 -0
  170. package/dist/steps/index.js.map +1 -0
  171. package/dist/tag-strip/index.d.ts +33 -0
  172. package/dist/tag-strip/index.js +9 -0
  173. package/dist/tag-strip/index.js.map +1 -0
  174. package/dist/testimonials/index.d.ts +9 -1
  175. package/dist/testimonials/index.js +3 -3
  176. package/dist/tooltip/index.js +2 -2
  177. package/package.json +38 -2
  178. package/dist/chunk-5EBWMPJS.js.map +0 -1
  179. package/dist/chunk-76AVBQUA.js +0 -252
  180. package/dist/chunk-76AVBQUA.js.map +0 -1
  181. package/dist/chunk-7NLZND6Q.js.map +0 -1
  182. package/dist/chunk-ALI26WOB.js.map +0 -1
  183. package/dist/chunk-BMHMNXIA.js +0 -158
  184. package/dist/chunk-BMHMNXIA.js.map +0 -1
  185. package/dist/chunk-DH53HZPB.js.map +0 -1
  186. package/dist/chunk-EMCQBT3S.js.map +0 -1
  187. package/dist/chunk-FLY7TNRT.js.map +0 -1
  188. package/dist/chunk-FZ36KL73.js.map +0 -1
  189. package/dist/chunk-GJO3RGOB.js.map +0 -1
  190. package/dist/chunk-J6EO4R73.js +0 -633
  191. package/dist/chunk-J6EO4R73.js.map +0 -1
  192. package/dist/chunk-JKBWZLG4.js +0 -348
  193. package/dist/chunk-JKBWZLG4.js.map +0 -1
  194. package/dist/chunk-JQY2G4QK.js.map +0 -1
  195. package/dist/chunk-KMU6ABQF.js.map +0 -1
  196. package/dist/chunk-LEXZKGQX.js.map +0 -1
  197. package/dist/chunk-MSSH3HFK.js +0 -205
  198. package/dist/chunk-MSSH3HFK.js.map +0 -1
  199. package/dist/chunk-R5G6KFTJ.js.map +0 -1
  200. package/dist/chunk-SMLR736E.js.map +0 -1
  201. package/dist/chunk-VWS53WY4.js +0 -157
  202. package/dist/chunk-VWS53WY4.js.map +0 -1
  203. package/dist/chunk-WT4OATGP.js.map +0 -1
  204. package/dist/chunk-XWB4CKDU.js +0 -708
  205. package/dist/chunk-XWB4CKDU.js.map +0 -1
  206. package/dist/chunk-YQ42EBK5.js.map +0 -1
  207. package/dist/chunk-ZN4LIKVG.js.map +0 -1
  208. /package/dist/{chunk-AKJQ345O.js.map → chunk-5AWGZQWU.js.map} +0 -0
  209. /package/dist/{chunk-BLQV2YMO.js.map → chunk-EZOKT7NJ.js.map} +0 -0
  210. /package/dist/{chunk-6D6ROU7X.js.map → chunk-IGMVF3KK.js.map} +0 -0
  211. /package/dist/{chunk-INMSEYT6.js.map → chunk-IVPVYVWG.js.map} +0 -0
  212. /package/dist/{chunk-35TX3AOA.js.map → chunk-NABSRUXG.js.map} +0 -0
  213. /package/dist/{chunk-MG2VTZA4.js.map → chunk-QS3ANOWN.js.map} +0 -0
  214. /package/dist/{chunk-FML6AG2V.js.map → chunk-RANC3OI6.js.map} +0 -0
  215. /package/dist/{chunk-YVTFQHVY.js.map → chunk-TEAZZPDQ.js.map} +0 -0
  216. /package/dist/{chunk-AG2COC64.js.map → chunk-VVYQ2DDS.js.map} +0 -0
@@ -0,0 +1,860 @@
1
+ import {
2
+ ctaAriaLabel,
3
+ ctaLabelStyles,
4
+ renderCtaLabel
5
+ } from "./chunk-BEWX3E6P.js";
6
+ import {
7
+ externalLinkAttrs,
8
+ externalLinkExtras,
9
+ isExternalHref
10
+ } from "./chunk-T4BIN37Q.js";
11
+ import {
12
+ ctaLinkStyles,
13
+ paddingScaleStyles
14
+ } from "./chunk-KZ7PMFWS.js";
15
+ import {
16
+ buttonResetStyles,
17
+ controlBaseStyles,
18
+ ctaPillStyles,
19
+ rootFontFamilyStyles
20
+ } from "./chunk-NXUS2CH7.js";
21
+ import {
22
+ __decorateClass
23
+ } from "./chunk-EUXUH3YW.js";
24
+
25
+ // src/hero/Hero.ts
26
+ import { LitElement, css, html, nothing, svg } from "lit";
27
+ import { customElement, property } from "lit/decorators.js";
28
+ import "iconify-icon";
29
+
30
+ // src/shared/title-highlight.ts
31
+ function splitTitleHighlight(title, highlight) {
32
+ if (!highlight) return null;
33
+ const index = title.indexOf(highlight);
34
+ if (index === -1) return null;
35
+ return {
36
+ before: title.slice(0, index),
37
+ match: highlight,
38
+ after: title.slice(index + highlight.length)
39
+ };
40
+ }
41
+
42
+ // src/hero/Hero.ts
43
+ 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>`;
44
+ var ARROW_ICON = svg`<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M5 12h14m-6-6 6 6-6 6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>`;
45
+ var CTA_NOTE_ICON = svg`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg>`;
46
+ var Hero = class extends LitElement {
47
+ constructor() {
48
+ super(...arguments);
49
+ this.title = "";
50
+ this.subtitle = "";
51
+ this.imageSrc = "";
52
+ this.actionLabel = "";
53
+ this.actionLabelShort = "";
54
+ this.href = "";
55
+ this.textAlignment = "left";
56
+ this.padding = "none";
57
+ this.inverted = false;
58
+ this.focalPoint = "center";
59
+ this.eyebrow = "";
60
+ this.secondaryActionLabel = "";
61
+ this.secondaryActionLabelShort = "";
62
+ this.secondaryHref = "";
63
+ this.badge = "";
64
+ this.highlights = [];
65
+ this.ctaNote = "";
66
+ this.ctaNoteIcon = "";
67
+ this.layout = "background";
68
+ this.imageAlt = "";
69
+ this.size = "auto";
70
+ this.contentPosition = "center";
71
+ this.overlay = "even";
72
+ this.titleHighlight = "";
73
+ this.imageLabel = "";
74
+ this.buttonStyle = "default";
75
+ this.headingLevel = 1;
76
+ }
77
+ /**
78
+ * A hero that is already inside the first screen when it connects is on screen at first paint, so its
79
+ * entrance animation (rise, fades, image zoom) would only delay the copy: it renders still. A hero
80
+ * further down the page keeps its entrance. A carousel slide is handled by `st-carousel` instead.
81
+ */
82
+ connectedCallback() {
83
+ super.connectedCallback();
84
+ if (this.closest("st-carousel")) return;
85
+ if (this.getBoundingClientRect().top < window.innerHeight) this.setAttribute("data-st-still", "");
86
+ }
87
+ willUpdate() {
88
+ const asBackground = this.layout !== "split";
89
+ this.style.backgroundImage = asBackground && this.imageSrc ? `url(${JSON.stringify(this.imageSrc)})` : "";
90
+ this.style.setProperty("--st-hero-position", Hero.positions[this.focalPoint] ?? Hero.positions.center);
91
+ }
92
+ emitAction(event, href, kind) {
93
+ const action = new CustomEvent("action", {
94
+ detail: { href, kind },
95
+ bubbles: true,
96
+ composed: true,
97
+ cancelable: true
98
+ });
99
+ this.dispatchEvent(action);
100
+ if (action.defaultPrevented) event.preventDefault();
101
+ }
102
+ renderCta(label, href, kind) {
103
+ const secondary = kind === "secondary";
104
+ const className = secondary ? "cta secondary" : "cta";
105
+ const part = secondary ? "secondary-action" : "action";
106
+ const onClick = (event) => this.emitAction(event, href, kind);
107
+ const arrow = secondary && this.buttonStyle === "pill" ? ARROW_ICON : nothing;
108
+ const { target, rel } = externalLinkAttrs(href);
109
+ const external = isExternalHref(href);
110
+ const short = secondary ? this.secondaryActionLabelShort : this.actionLabelShort;
111
+ const text = renderCtaLabel(label, short);
112
+ const ariaLabel = ctaAriaLabel(label, short, external ? " (opens in new tab)" : "");
113
+ return href ? html`<a class=${className} part=${part} href=${href} target=${target} rel=${rel} aria-label=${ariaLabel} @click=${onClick}
114
+ >${text}${external ? externalLinkExtras(href) : arrow}</a
115
+ >` : html`<button class=${className} part=${part} type="button" aria-label=${ariaLabel} @click=${onClick}>${text}${arrow}</button>`;
116
+ }
117
+ /** The title with the `title-highlight` text wrapped in its own span; plain text otherwise. */
118
+ renderTitle() {
119
+ const parts = splitTitleHighlight(this.title, this.titleHighlight);
120
+ if (!parts) return this.title;
121
+ return html`${parts.before}<span class="title-highlight" part="title-highlight">${parts.match}</span>${parts.after}`;
122
+ }
123
+ renderMediaBadge() {
124
+ const badge = this.mediaBadge;
125
+ if (!badge?.title) return nothing;
126
+ return html`<div class="media-badge" part="media-badge">
127
+ ${badge.icon ? html`<span class="media-badge-icon" aria-hidden="true"><iconify-icon icon=${badge.icon}></iconify-icon></span>` : nothing}
128
+ <div>
129
+ <p class="media-badge-title">${badge.title}</p>
130
+ ${badge.text ? html`<p class="media-badge-text">${badge.text}</p>` : nothing}
131
+ </div>
132
+ </div>`;
133
+ }
134
+ renderImageBar() {
135
+ if (!this.imageLabel) return nothing;
136
+ return html`<div class="image-bar" part="image-bar">
137
+ <span class="image-bar-dot" aria-hidden="true"></span>
138
+ <span class="image-bar-dot" aria-hidden="true"></span>
139
+ <span class="image-bar-dot" aria-hidden="true"></span>
140
+ <span class="image-bar-label">${this.imageLabel}</span>
141
+ </div>`;
142
+ }
143
+ renderMediaInset(inset) {
144
+ return html`<div class="media-inset" part="media-inset">
145
+ ${inset.label ? html`<div class="media-inset-label">${inset.label}</div>` : nothing}
146
+ <img src=${inset.src} alt=${inset.alt} />
147
+ </div>`;
148
+ }
149
+ render() {
150
+ const inset = this.mediaInset?.src ? this.mediaInset : void 0;
151
+ return html`
152
+ <div class="overlay" part="overlay"></div>
153
+ <div class="content" part="content">
154
+ ${this.eyebrow ? html`<p class="eyebrow" part="eyebrow">${this.eyebrow}</p>` : nothing}
155
+ ${this.badge ? html`<p class="badge" part="badge">${this.badge}</p>` : nothing}
156
+ ${this.headingLevel === 2 ? html`<h2 class="title" part="title">${this.renderTitle()}</h2>` : html`<h1 class="title" part="title">${this.renderTitle()}</h1>`}
157
+ ${this.subtitle ? html`<p class="subtitle" part="subtitle">${this.subtitle}</p>` : nothing}
158
+ ${this.actionLabel || this.secondaryActionLabel || this.ctaNote ? html`<div class="cta-group">
159
+ ${this.actionLabel || this.secondaryActionLabel ? html`<div class="actions" part="actions">
160
+ ${this.actionLabel ? this.renderCta(this.actionLabel, this.href, "primary") : nothing}
161
+ ${this.secondaryActionLabel ? this.renderCta(this.secondaryActionLabel, this.secondaryHref, "secondary") : nothing}
162
+ </div>` : nothing}
163
+ ${this.ctaNote ? html`<p class="cta-note" part="cta-note">${this.ctaNoteIcon ? html`<iconify-icon icon=${this.ctaNoteIcon} aria-hidden="true"></iconify-icon>` : CTA_NOTE_ICON}<span>${this.ctaNote}</span></p>` : nothing}
164
+ </div>` : nothing}
165
+ ${this.highlights.length ? html`<ul class="highlights" part="highlights">
166
+ ${this.highlights.map(
167
+ (text) => html`<li class="highlight" part="highlight">${HIGHLIGHT_ICON}<span>${text}</span></li>`
168
+ )}
169
+ </ul>` : nothing}
170
+ <slot></slot>
171
+ </div>
172
+ ${this.layout === "split" && this.imageSrc ? html`<figure class=${inset ? "media has-inset" : "media"} part="media">
173
+ ${this.renderImageBar()}
174
+ <img class=${this.imageLabel ? "image has-bar" : "image"} part="image" src=${this.imageSrc} alt=${this.imageAlt} />
175
+ ${inset ? this.renderMediaInset(inset) : this.renderMediaBadge()}
176
+ </figure>` : nothing}
177
+ `;
178
+ }
179
+ };
180
+ Hero.styles = css`
181
+ ${ctaLabelStyles}
182
+ ${controlBaseStyles}
183
+ ${paddingScaleStyles}
184
+
185
+ @keyframes st-hero-zoom {
186
+ from { opacity: 0; transform: scale(1.1); }
187
+ to { opacity: 1; transform: scale(1); }
188
+ }
189
+ @keyframes st-hero-rise {
190
+ from { opacity: 0; transform: translateY(30px); }
191
+ to { opacity: 1; transform: none; }
192
+ }
193
+ @keyframes st-hero-fade {
194
+ from { opacity: 0; }
195
+ to { opacity: 1; }
196
+ }
197
+
198
+ :host {
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ position: relative;
203
+ overflow: hidden;
204
+ width: 100%;
205
+ box-sizing: border-box;
206
+ background-color: var(--st-color-text-strong);
207
+ background-repeat: no-repeat;
208
+ background-size: cover;
209
+ background-position: var(--st-hero-position, center center);
210
+ color: var(--st-color-on-solid);
211
+ /* Room for a fixed header over the top of the hero (see --st-hero-offset-top). */
212
+ padding-top: var(--st-hero-offset-top, 0px);
213
+ ${rootFontFamilyStyles}
214
+ animation: st-hero-zoom 1.5s ease-out;
215
+ }
216
+
217
+ :host([inverted]) {
218
+ background-color: var(--st-color-surface);
219
+ color: var(--st-color-text-strong);
220
+ }
221
+
222
+ .overlay {
223
+ position: absolute;
224
+ inset: 0;
225
+ z-index: 1;
226
+ background: linear-gradient(
227
+ to bottom,
228
+ color-mix(in oklch, var(--st-color-text-strong) 40%, transparent),
229
+ color-mix(in oklch, var(--st-color-text-strong) 20%, transparent),
230
+ color-mix(in oklch, var(--st-color-text-strong) 40%, transparent)
231
+ );
232
+ }
233
+
234
+ :host([inverted]) .overlay {
235
+ display: none;
236
+ }
237
+
238
+ .content {
239
+ display: flex;
240
+ flex-direction: column;
241
+ gap: var(--st-space-20);
242
+ position: relative;
243
+ z-index: 2;
244
+ width: 80%;
245
+ margin: 0 auto;
246
+ text-align: center;
247
+ align-items: center;
248
+ /* Set here, not only on :host: text sits on the image/overlay, so a colour class the page puts
249
+ on the host (e.g. a theme text colour) must not turn it dark. */
250
+ color: var(--st-hero-text-color, var(--st-color-on-solid));
251
+ }
252
+
253
+ :host([inverted]) .content {
254
+ color: var(--st-hero-text-color, var(--st-color-text-strong));
255
+ }
256
+
257
+ :host([text-alignment='left']) .content { text-align: left; align-items: flex-start; }
258
+ :host([text-alignment='right']) .content { text-align: right; align-items: flex-end; }
259
+ :host([text-alignment='justify']) .content { text-align: justify; align-items: stretch; }
260
+
261
+ .title {
262
+ font-size: var(--st-cms-text-display);
263
+ font-weight: var(--st-font-weight-bold);
264
+ line-height: 1.1;
265
+ color: inherit;
266
+ margin: 0;
267
+ animation: st-hero-rise 0.8s 0.3s ease-out backwards;
268
+ }
269
+
270
+ .subtitle {
271
+ font-size: var(--st-cms-text-xl);
272
+ line-height: 1.5;
273
+ color: inherit;
274
+ margin: 0;
275
+ animation: st-hero-fade 0.8s 0.5s ease-out backwards;
276
+ }
277
+
278
+ .actions {
279
+ display: flex;
280
+ justify-content: center;
281
+ width: 100%;
282
+ }
283
+
284
+ .cta {
285
+ ${buttonResetStyles}
286
+ ${ctaLinkStyles}
287
+ background: var(--st-button-primary-bg);
288
+ color: var(--st-button-primary-color);
289
+ font-weight: var(--st-button-font-weight);
290
+ font-size: var(--st-text-md);
291
+ animation: st-hero-rise 0.6s 0.7s ease-out backwards;
292
+ }
293
+
294
+ .cta:hover {
295
+ transform: scale(1.05);
296
+ }
297
+
298
+ .cta:active {
299
+ transform: scale(0.98);
300
+ }
301
+
302
+ .eyebrow {
303
+ margin: 0;
304
+ font-size: var(--st-text-sm);
305
+ font-weight: var(--st-font-weight-bold);
306
+ letter-spacing: 0.12em;
307
+ text-transform: uppercase;
308
+ color: inherit;
309
+ opacity: 0.85;
310
+ animation: st-hero-fade 0.8s 0.2s ease-out backwards;
311
+ }
312
+
313
+ .actions {
314
+ flex-wrap: wrap;
315
+ gap: var(--st-space-12);
316
+ }
317
+
318
+ .cta.secondary {
319
+ background: transparent;
320
+ color: inherit;
321
+ box-shadow: inset 0 0 0 1.5px currentColor;
322
+ }
323
+
324
+ .cta.secondary:hover {
325
+ background: color-mix(in oklch, currentColor 12%, transparent);
326
+ }
327
+
328
+ /* size="large" / "full": a tall editorial hero. */
329
+ :host([size='large']) {
330
+ min-height: var(--st-hero-min-height, 640px);
331
+ }
332
+
333
+ :host([size='full']) {
334
+ min-height: 100svh;
335
+ }
336
+
337
+ :host([size='large']) .title,
338
+ :host([size='full']) .title {
339
+ font-size: clamp(2.5rem, 6vw, 5rem);
340
+ letter-spacing: -0.02em;
341
+ line-height: 1.05;
342
+ }
343
+
344
+ /* content-position="bottom": copy sits in the lower part of the hero, on the container grid. */
345
+ :host([content-position='bottom']) {
346
+ align-items: flex-end;
347
+ }
348
+
349
+ :host([content-position='bottom']) .content {
350
+ width: 100%;
351
+ max-width: var(--st-cms-container-max);
352
+ box-sizing: border-box;
353
+ padding: var(--st-space-48) var(--st-space-24);
354
+ }
355
+
356
+ :host([content-position='bottom']) .title,
357
+ :host([content-position='bottom']) .subtitle {
358
+ max-width: 18ch;
359
+ }
360
+
361
+ :host([content-position='bottom']) .subtitle {
362
+ max-width: 48ch;
363
+ }
364
+
365
+ :host([content-position='bottom']:not([text-alignment='center']):not([text-alignment='right'])) .actions {
366
+ justify-content: flex-start;
367
+ }
368
+
369
+ :host([content-position='bottom'][text-alignment='center']) .title,
370
+ :host([content-position='bottom'][text-alignment='center']) .subtitle {
371
+ margin-inline: auto;
372
+ }
373
+
374
+ /* overlay="gradient": darkest behind the copy, clearing towards the far side of the image. */
375
+ :host([overlay='gradient']) .overlay {
376
+ background:
377
+ linear-gradient(to top, color-mix(in oklch, var(--st-color-text-strong) 85%, transparent), transparent 70%),
378
+ linear-gradient(to right, color-mix(in oklch, var(--st-color-text-strong) 70%, transparent), transparent 75%);
379
+ }
380
+
381
+ :host([overlay='gradient'][text-alignment='right']) .overlay {
382
+ background:
383
+ linear-gradient(to top, color-mix(in oklch, var(--st-color-text-strong) 85%, transparent), transparent 70%),
384
+ linear-gradient(to left, color-mix(in oklch, var(--st-color-text-strong) 70%, transparent), transparent 75%);
385
+ }
386
+
387
+ :host([overlay='none']) .overlay {
388
+ display: none;
389
+ }
390
+
391
+ .badge {
392
+ display: inline-flex;
393
+ align-items: center;
394
+ gap: var(--st-space-8);
395
+ margin: 0;
396
+ padding: 6px 14px;
397
+ border: 1px solid var(--st-color-border);
398
+ border-radius: var(--st-radius-full);
399
+ background: var(--st-color-surface);
400
+ color: var(--st-color-text-strong);
401
+ font-size: var(--st-text-sm);
402
+ font-weight: var(--st-font-weight-bold);
403
+ letter-spacing: var(--st-tracking-wider);
404
+ line-height: 1.2;
405
+ text-transform: uppercase;
406
+ animation: st-hero-fade 0.8s 0.2s ease-out backwards;
407
+ }
408
+
409
+ .badge::before {
410
+ content: '';
411
+ flex: none;
412
+ width: 8px;
413
+ height: 8px;
414
+ border-radius: var(--st-radius-circle);
415
+ background: var(--st-cms-highlight);
416
+ }
417
+
418
+ .highlights {
419
+ display: flex;
420
+ flex-wrap: wrap;
421
+ justify-content: center;
422
+ gap: var(--st-space-12) var(--st-space-24);
423
+ margin: 0;
424
+ padding: 0;
425
+ list-style: none;
426
+ animation: st-hero-fade 0.8s 0.9s ease-out backwards;
427
+ }
428
+
429
+ .highlight {
430
+ display: inline-flex;
431
+ align-items: center;
432
+ gap: var(--st-space-8);
433
+ font-size: var(--st-text-md);
434
+ font-weight: var(--st-font-weight-semibold);
435
+ color: inherit;
436
+ }
437
+
438
+ .highlight svg {
439
+ flex: none;
440
+ width: 18px;
441
+ height: 18px;
442
+ color: var(--st-cms-highlight);
443
+ }
444
+
445
+ :host([text-alignment='left']) .highlights {
446
+ justify-content: flex-start;
447
+ }
448
+
449
+ :host([text-alignment='right']) .highlights {
450
+ justify-content: flex-end;
451
+ }
452
+
453
+ /* The buttons and the cta-note share one column, so the note sits under the buttons and follows their alignment. */
454
+ .cta-group {
455
+ display: flex;
456
+ flex-direction: column;
457
+ align-items: center;
458
+ width: 100%;
459
+ }
460
+
461
+ :host([text-alignment='left']) .cta-group,
462
+ :host([text-alignment='justify']) .cta-group {
463
+ align-items: flex-start;
464
+ }
465
+
466
+ .cta-note {
467
+ display: inline-flex;
468
+ align-items: center;
469
+ gap: 6px;
470
+ margin: 8px 0 0;
471
+ font-size: 14px;
472
+ font-weight: 500;
473
+ line-height: 1.4;
474
+ color: var(--st-hero-cta-note-color, var(--st-color-text-muted));
475
+ animation: st-hero-fade 0.8s 0.8s ease-out backwards;
476
+ }
477
+
478
+ .cta-note svg,
479
+ .cta-note iconify-icon {
480
+ flex: none;
481
+ width: 14px;
482
+ height: 14px;
483
+ font-size: 14px;
484
+ }
485
+
486
+ /* layout="split": a two-column block on the page surface; the image replaces the background. */
487
+ /* The side gutter matches the other CMS sections (--st-space-24, 16px on phones). Once the
488
+ viewport is wider than the container, the padding takes the rest of the space so the copy
489
+ and image fill the same centred --st-cms-container-max column as st-features-section and
490
+ friends; the background stays edge to edge. */
491
+ :host([layout='split']) {
492
+ --st-hero-gutter: var(--st-space-24);
493
+ display: grid;
494
+ grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
495
+ align-items: center;
496
+ gap: var(--st-space-48);
497
+ overflow: visible;
498
+ padding: calc(var(--st-cms-section-padding) + var(--st-hero-offset-top, 0px))
499
+ max(var(--st-hero-gutter), calc((100% - var(--st-cms-container-max)) / 2)) !important;
500
+ background-color: var(--st-color-surface);
501
+ background-image: none;
502
+ color: var(--st-color-text-strong);
503
+ animation: none;
504
+ }
505
+
506
+ :host([layout='split']) .overlay {
507
+ display: none;
508
+ }
509
+
510
+ :host([layout='split']) .content {
511
+ width: 100%;
512
+ margin: 0;
513
+ padding: 0;
514
+ max-width: 560px;
515
+ color: var(--st-hero-text-color, var(--st-color-text-strong));
516
+ }
517
+
518
+ :host([layout='split'][text-alignment='left']) .actions {
519
+ justify-content: flex-start;
520
+ }
521
+
522
+ :host([layout='split']) .highlight svg {
523
+ color: var(--st-color-accent);
524
+ }
525
+
526
+ .media {
527
+ margin: 0;
528
+ min-width: 0;
529
+ position: relative;
530
+ }
531
+
532
+ /* title-highlight: the picked words in the brand azure (large display text, so AA large applies). */
533
+ .title-highlight {
534
+ color: var(--st-cms-brand-azure);
535
+ }
536
+
537
+ /* mediaBadge: a navy card overlapping the bottom-left corner of the split-layout image. */
538
+ .media-badge {
539
+ position: absolute;
540
+ left: -28px;
541
+ bottom: -28px;
542
+ z-index: 2;
543
+ display: flex;
544
+ align-items: center;
545
+ gap: 12px;
546
+ box-sizing: border-box;
547
+ max-width: 260px;
548
+ padding: 14px 16px;
549
+ border-radius: 12px;
550
+ background: var(--st-cms-navy);
551
+ color: var(--st-cms-primary-100);
552
+ box-shadow: 0 20px 25px -5px #0000001a, 0 10px 10px -5px #0000000a;
553
+ }
554
+
555
+ .media-badge-icon {
556
+ display: flex;
557
+ align-items: center;
558
+ justify-content: center;
559
+ flex: none;
560
+ width: 36px;
561
+ height: 36px;
562
+ border-radius: 10px;
563
+ background: var(--st-cms-highlight);
564
+ color: var(--st-cms-navy);
565
+ font-size: 20px;
566
+ }
567
+
568
+ .media-badge-title {
569
+ margin: 0;
570
+ font-size: 14px;
571
+ font-weight: var(--st-font-weight-bold);
572
+ line-height: 1.3;
573
+ color: var(--st-cms-on-dark);
574
+ }
575
+
576
+ .media-badge-text {
577
+ margin: 2px 0 0;
578
+ font-size: 13px;
579
+ line-height: 1.4;
580
+ color: inherit;
581
+ }
582
+
583
+ /* imageLabel: a window-style bar above the split-layout image. It sits outside the image box, so
584
+ the image keeps its 4:3 frame; the image's top corners are squared to meet the bar. */
585
+ .image-bar {
586
+ display: flex;
587
+ align-items: center;
588
+ gap: 8px;
589
+ padding: 10px 16px;
590
+ border-bottom: 1px solid var(--st-cms-primary-100, #e4ebff);
591
+ border-radius: var(--st-radius-lg) var(--st-radius-lg) 0 0;
592
+ background: var(--st-hero-image-bar-bg, #fafbff);
593
+ }
594
+
595
+ .image-bar-dot {
596
+ flex: none;
597
+ width: 10px;
598
+ height: 10px;
599
+ border-radius: 9999px;
600
+ background: var(--st-cms-primary-200, #c9d7fe);
601
+ }
602
+
603
+ .image-bar-label {
604
+ margin-left: 8px;
605
+ font-size: 12px;
606
+ font-weight: 600;
607
+ color: var(--st-cms-text, #03346b);
608
+ }
609
+
610
+ .image.has-bar {
611
+ border-top-left-radius: 0;
612
+ border-top-right-radius: 0;
613
+ }
614
+
615
+ /* mediaInset: the media column reserves 36px below the image so the card hangs off the corner.
616
+ The card is a sibling of the image, not inside it, so nothing clips it. */
617
+ .media.has-inset {
618
+ padding-bottom: 36px;
619
+ }
620
+
621
+ .media-inset {
622
+ position: absolute;
623
+ right: 0;
624
+ bottom: 0;
625
+ z-index: 1;
626
+ box-sizing: border-box;
627
+ width: 46%;
628
+ overflow: hidden;
629
+ border: 1px solid var(--st-cms-primary-200, #c9d7fe);
630
+ border-radius: 12px;
631
+ background: var(--st-color-surface, #fff);
632
+ box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 10px 10px -5px rgb(0 0 0 / 0.04);
633
+ }
634
+
635
+ .media-inset-label {
636
+ padding: 6px 10px;
637
+ font-size: 11px;
638
+ font-weight: 600;
639
+ color: var(--st-cms-text, #03346b);
640
+ background: var(--st-cms-surface-soft, #f0f3ff);
641
+ border-bottom: 1px solid var(--st-cms-primary-100, #e4ebff);
642
+ }
643
+
644
+ .media-inset img {
645
+ display: block;
646
+ width: 100%;
647
+ height: auto;
648
+ }
649
+
650
+ /* buttonStyle="pill": 52px pills. The primary is brand navy with a soft shadow; the secondary is
651
+ white with a light primary-200 border, navy text and a trailing arrow. */
652
+ :host([button-style='pill']) .cta {
653
+ ${ctaPillStyles}
654
+ font-size: 17px;
655
+ transition: transform 0.2s ease, background-color 0.2s ease;
656
+ }
657
+
658
+ :host([button-style='pill']) .cta:not(.secondary) {
659
+ background: var(--st-cms-brand-navy);
660
+ color: var(--st-cms-on-dark);
661
+ box-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;
662
+ }
663
+
664
+ :host([button-style='pill']) .cta:not(.secondary):hover {
665
+ background: color-mix(in oklch, var(--st-cms-brand-navy) 88%, var(--st-cms-navy));
666
+ }
667
+
668
+ :host([button-style='pill']) .cta.secondary {
669
+ padding: 0 24px;
670
+ background: var(--st-cms-on-dark);
671
+ color: var(--st-cms-accent-text, var(--st-cms-brand-navy));
672
+ border: 1px solid var(--st-cms-primary-200);
673
+ box-shadow: none;
674
+ }
675
+
676
+ :host([button-style='pill']) .cta.secondary:hover {
677
+ background: var(--st-cms-primary-100);
678
+ }
679
+
680
+ :host([button-style='pill']) .cta svg {
681
+ flex: none;
682
+ width: 18px;
683
+ height: 18px;
684
+ }
685
+
686
+ :host([button-style='pill']) .cta:focus-visible {
687
+ outline: var(--st-focus-ring);
688
+ outline-offset: 2px;
689
+ }
690
+
691
+ /* Wide screens: the badge hangs off the bottom-left corner. Its top sits 16px above the image's
692
+ bottom edge (--st-hero-badge-overlap), so it overlaps only that corner and clears the button
693
+ inside the image. The
694
+ figure's bottom padding gives the hanging card room; the badge's top is measured from the
695
+ image bottom (100% includes that padding, so it is subtracted). */
696
+ @media (min-width: 769px) {
697
+ .media {
698
+ --st-hero-media-pad: 48px;
699
+ padding-bottom: var(--st-hero-media-pad);
700
+ }
701
+
702
+ .media-badge {
703
+ top: calc(100% - var(--st-hero-media-pad) - var(--st-hero-badge-overlap, 16px));
704
+ bottom: auto;
705
+ }
706
+ }
707
+
708
+ /* Narrow screens: the badge flows under the image instead of overlapping it. */
709
+ @media (max-width: 768px) {
710
+ .media-badge {
711
+ position: static;
712
+ margin-top: var(--st-space-16);
713
+ max-width: none;
714
+ }
715
+ }
716
+
717
+ .image {
718
+ display: block;
719
+ width: 100%;
720
+ height: auto;
721
+ aspect-ratio: 4 / 3;
722
+ object-fit: cover;
723
+ border-radius: var(--st-radius-lg);
724
+ box-shadow: 0 24px 48px -16px var(--st-shadow-color-lg);
725
+ }
726
+
727
+ @media (max-width: 768px) {
728
+ :host([layout='split']) {
729
+ --st-hero-gutter: var(--st-space-16);
730
+ }
731
+ }
732
+
733
+ @media (min-width: 768px) {
734
+ .content { padding: var(--st-space-32); }
735
+ }
736
+ @media (min-width: 1024px) {
737
+ .content { padding: var(--st-space-48); }
738
+ :host([content-position='bottom']) .content { padding: var(--st-space-48) var(--st-space-32) 6rem; }
739
+ }
740
+
741
+ /* A carousel's first slide is on screen at first paint, so its entrance stays off (st-carousel sets
742
+ data-st-still until the slides first change). Later slides animate in when they turn. */
743
+ :host([data-st-still]),
744
+ :host([data-st-still]) .eyebrow,
745
+ :host([data-st-still]) .badge,
746
+ :host([data-st-still]) .title,
747
+ :host([data-st-still]) .subtitle,
748
+ :host([data-st-still]) .cta,
749
+ :host([data-st-still]) .cta-note,
750
+ :host([data-st-still]) .highlights {
751
+ animation: none;
752
+ }
753
+
754
+ @media (prefers-reduced-motion: reduce) {
755
+ :host, .eyebrow, .badge, .title, .subtitle, .cta, .cta-note, .highlights { animation: none; }
756
+ .cta { transition: none; }
757
+ }
758
+ `;
759
+ Hero.positions = {
760
+ top: "center top",
761
+ left: "left center",
762
+ right: "right center",
763
+ bottom: "center bottom",
764
+ center: "center center"
765
+ };
766
+ __decorateClass([
767
+ property({ type: String })
768
+ ], Hero.prototype, "title", 2);
769
+ __decorateClass([
770
+ property({ type: String })
771
+ ], Hero.prototype, "subtitle", 2);
772
+ __decorateClass([
773
+ property({ type: String, attribute: "image-src" })
774
+ ], Hero.prototype, "imageSrc", 2);
775
+ __decorateClass([
776
+ property({ type: String, attribute: "action-label" })
777
+ ], Hero.prototype, "actionLabel", 2);
778
+ __decorateClass([
779
+ property({ type: String, attribute: "action-label-short" })
780
+ ], Hero.prototype, "actionLabelShort", 2);
781
+ __decorateClass([
782
+ property({ type: String })
783
+ ], Hero.prototype, "href", 2);
784
+ __decorateClass([
785
+ property({ type: String, reflect: true, attribute: "text-alignment" })
786
+ ], Hero.prototype, "textAlignment", 2);
787
+ __decorateClass([
788
+ property({ type: String, reflect: true })
789
+ ], Hero.prototype, "padding", 2);
790
+ __decorateClass([
791
+ property({ type: Boolean, reflect: true })
792
+ ], Hero.prototype, "inverted", 2);
793
+ __decorateClass([
794
+ property({ type: String, attribute: "focal-point" })
795
+ ], Hero.prototype, "focalPoint", 2);
796
+ __decorateClass([
797
+ property({ type: String })
798
+ ], Hero.prototype, "eyebrow", 2);
799
+ __decorateClass([
800
+ property({ type: String, attribute: "secondary-action-label" })
801
+ ], Hero.prototype, "secondaryActionLabel", 2);
802
+ __decorateClass([
803
+ property({ type: String, attribute: "secondary-action-label-short" })
804
+ ], Hero.prototype, "secondaryActionLabelShort", 2);
805
+ __decorateClass([
806
+ property({ type: String, attribute: "secondary-href" })
807
+ ], Hero.prototype, "secondaryHref", 2);
808
+ __decorateClass([
809
+ property({ type: String })
810
+ ], Hero.prototype, "badge", 2);
811
+ __decorateClass([
812
+ property({ attribute: false })
813
+ ], Hero.prototype, "highlights", 2);
814
+ __decorateClass([
815
+ property({ type: String, attribute: "cta-note" })
816
+ ], Hero.prototype, "ctaNote", 2);
817
+ __decorateClass([
818
+ property({ type: String, attribute: "cta-note-icon" })
819
+ ], Hero.prototype, "ctaNoteIcon", 2);
820
+ __decorateClass([
821
+ property({ type: String, reflect: true })
822
+ ], Hero.prototype, "layout", 2);
823
+ __decorateClass([
824
+ property({ type: String, attribute: "image-alt" })
825
+ ], Hero.prototype, "imageAlt", 2);
826
+ __decorateClass([
827
+ property({ type: String, reflect: true })
828
+ ], Hero.prototype, "size", 2);
829
+ __decorateClass([
830
+ property({ type: String, reflect: true, attribute: "content-position" })
831
+ ], Hero.prototype, "contentPosition", 2);
832
+ __decorateClass([
833
+ property({ type: String, reflect: true })
834
+ ], Hero.prototype, "overlay", 2);
835
+ __decorateClass([
836
+ property({ type: String, attribute: "title-highlight" })
837
+ ], Hero.prototype, "titleHighlight", 2);
838
+ __decorateClass([
839
+ property({ attribute: false })
840
+ ], Hero.prototype, "mediaBadge", 2);
841
+ __decorateClass([
842
+ property({ type: String, attribute: "image-label" })
843
+ ], Hero.prototype, "imageLabel", 2);
844
+ __decorateClass([
845
+ property({ attribute: false })
846
+ ], Hero.prototype, "mediaInset", 2);
847
+ __decorateClass([
848
+ property({ type: String, reflect: true, attribute: "button-style" })
849
+ ], Hero.prototype, "buttonStyle", 2);
850
+ __decorateClass([
851
+ property({ type: Number, attribute: "heading-level" })
852
+ ], Hero.prototype, "headingLevel", 2);
853
+ Hero = __decorateClass([
854
+ customElement("st-hero")
855
+ ], Hero);
856
+
857
+ export {
858
+ Hero
859
+ };
860
+ //# sourceMappingURL=chunk-MFRGAT6D.js.map