@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
@@ -1,11 +1,12 @@
1
1
  import {
2
+ sectionEyebrowStyles,
2
3
  sectionSubtitleStyles,
3
4
  sectionTitleStyles
4
- } from "./chunk-FZ36KL73.js";
5
+ } from "./chunk-KZ7PMFWS.js";
5
6
  import {
6
7
  controlBaseStyles,
7
8
  rootFontFamilyStyles
8
- } from "./chunk-KMU6ABQF.js";
9
+ } from "./chunk-NXUS2CH7.js";
9
10
  import {
10
11
  __decorateClass
11
12
  } from "./chunk-EUXUH3YW.js";
@@ -23,6 +24,7 @@ var Section = class extends LitElement {
23
24
  this.spacingAbove = "m";
24
25
  this.spacingBelow = "m";
25
26
  this.width = "contained";
27
+ this.columns = 1;
26
28
  this.textAlignment = "left";
27
29
  }
28
30
  render() {
@@ -34,7 +36,9 @@ var Section = class extends LitElement {
34
36
  ${this.title ? html`<h2 class="title" part="title">${this.title}</h2>` : nothing}
35
37
  ${this.subtitle ? html`<p class="subtitle" part="subtitle">${this.subtitle}</p>` : nothing}
36
38
  </div>` : nothing}
37
- <slot></slot>
39
+ <div class="content" part="content">
40
+ <slot></slot>
41
+ </div>
38
42
  </div>
39
43
  `;
40
44
  }
@@ -109,6 +113,18 @@ Section.styles = css`
109
113
  max-width: none;
110
114
  }
111
115
 
116
+ /* columns="2": the slotted children sit in two equal columns; they stack below 720px. */
117
+ .content {
118
+ display: block;
119
+ }
120
+
121
+ :host([columns='2']) .content {
122
+ display: grid;
123
+ grid-template-columns: repeat(2, minmax(0, 1fr));
124
+ gap: var(--st-space-48);
125
+ align-items: start;
126
+ }
127
+
112
128
  .header {
113
129
  margin-bottom: var(--st-space-48);
114
130
  }
@@ -129,12 +145,7 @@ Section.styles = css`
129
145
  }
130
146
 
131
147
  .eyebrow {
132
- margin: 0 0 var(--st-space-12);
133
- font-size: var(--st-text-sm);
134
- font-weight: var(--st-font-weight-bold);
135
- letter-spacing: 0.12em;
136
- text-transform: uppercase;
137
- color: var(--st-color-text-muted);
148
+ ${sectionEyebrowStyles}
138
149
  }
139
150
 
140
151
  .title {
@@ -154,7 +165,10 @@ Section.styles = css`
154
165
  margin-bottom: 0;
155
166
  }
156
167
 
157
- :host([background='dark']) .eyebrow,
168
+ :host([background='dark']) .eyebrow {
169
+ color: var(--st-cms-highlight);
170
+ }
171
+
158
172
  :host([background='dark']) .subtitle {
159
173
  color: color-mix(in oklch, var(--st-cms-band-dark-color) 80%, transparent);
160
174
  }
@@ -164,6 +178,13 @@ Section.styles = css`
164
178
  color: color-mix(in oklch, var(--st-color-on-solid) 80%, transparent);
165
179
  }
166
180
 
181
+ @media (max-width: 720px) {
182
+ :host([columns='2']) .content {
183
+ grid-template-columns: minmax(0, 1fr);
184
+ gap: var(--st-space-24);
185
+ }
186
+ }
187
+
167
188
  @media (max-width: 768px) {
168
189
  :host {
169
190
  --st-section-space-l: 3.5rem;
@@ -194,6 +215,9 @@ __decorateClass([
194
215
  __decorateClass([
195
216
  property({ type: String, reflect: true })
196
217
  ], Section.prototype, "width", 2);
218
+ __decorateClass([
219
+ property({ type: Number, reflect: true })
220
+ ], Section.prototype, "columns", 2);
197
221
  __decorateClass([
198
222
  property({ type: String, reflect: true, attribute: "text-alignment" })
199
223
  ], Section.prototype, "textAlignment", 2);
@@ -204,4 +228,4 @@ Section = __decorateClass([
204
228
  export {
205
229
  Section
206
230
  };
207
- //# sourceMappingURL=chunk-7NLZND6Q.js.map
231
+ //# sourceMappingURL=chunk-GOFSMD6W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/section/Section.ts"],"sourcesContent":["import { LitElement, css, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { controlBaseStyles, rootFontFamilyStyles } from '../shared/styles';\nimport { sectionEyebrowStyles, sectionSubtitleStyles, sectionTitleStyles } from '../shared/section-styles';\n\n/**\n * A page band that holds other content: sets the background, the spacing above and below, and\n * the content width, with an optional eyebrow/title/subtitle heading over its slotted children.\n * Use it to give a run of components one dark or tinted backdrop and a consistent vertical rhythm,\n * the way enterprise marketing pages stack full-width sections.\n *\n * @slot - The section's content.\n * @cssprop --st-section-bg - Overrides the background colour picked by `background`.\n * @cssprop --st-section-padding-inline - Overrides the left/right padding (not with `width=\"full\"`).\n * @csspart inner - The width-limited content box.\n * @csspart header - The heading block.\n * @csspart content - The wrapper around the slot (the grid when `columns` is 2).\n */\n@customElement('st-section')\nexport class Section extends LitElement {\n static styles = css`\n ${controlBaseStyles}\n\n :host {\n --st-section-space-none: 0;\n --st-section-space-s: var(--st-space-24);\n --st-section-space-m: var(--st-space-48);\n --st-section-space-l: 4.5rem;\n --st-section-space-xl: 6rem;\n --st-section-space-xxl: 8rem;\n\n display: block;\n box-sizing: border-box;\n width: 100%;\n /* !important on every padding rule: a page-level reset (e.g. Tailwind Preflight) otherwise\n zeroes a shadow host's padding. Rescale it with the --st-section-space-* tokens. */\n padding: var(--st-section-space-m) var(--st-section-padding-inline, var(--st-space-24)) !important;\n background: var(--st-section-bg, var(--st-color-surface));\n color: var(--st-color-text-strong);\n ${rootFontFamilyStyles}\n }\n\n :host([background='subtle']) {\n background: var(--st-section-bg, var(--st-color-subtle));\n }\n\n :host([background='dark']) {\n background: var(--st-section-bg, var(--st-cms-band-dark-bg));\n color: var(--st-cms-band-dark-color);\n }\n\n :host([background='accent']) {\n background: var(--st-section-bg, var(--st-color-accent));\n color: var(--st-color-on-solid);\n }\n\n :host([background='transparent']) {\n background: var(--st-section-bg, transparent);\n }\n\n :host([spacing-above='none']) { padding-top: var(--st-section-space-none) !important; }\n :host([spacing-above='s']) { padding-top: var(--st-section-space-s) !important; }\n :host([spacing-above='l']) { padding-top: var(--st-section-space-l) !important; }\n :host([spacing-above='xl']) { padding-top: var(--st-section-space-xl) !important; }\n :host([spacing-above='xxl']) { padding-top: var(--st-section-space-xxl) !important; }\n\n :host([spacing-below='none']) { padding-bottom: var(--st-section-space-none) !important; }\n :host([spacing-below='s']) { padding-bottom: var(--st-section-space-s) !important; }\n :host([spacing-below='l']) { padding-bottom: var(--st-section-space-l) !important; }\n :host([spacing-below='xl']) { padding-bottom: var(--st-section-space-xl) !important; }\n :host([spacing-below='xxl']) { padding-bottom: var(--st-section-space-xxl) !important; }\n\n :host([width='full']) {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .inner {\n max-width: var(--st-cms-container-max);\n margin: 0 auto;\n }\n\n :host([width='narrow']) .inner {\n max-width: 800px;\n }\n\n :host([width='full']) .inner {\n max-width: none;\n }\n\n /* columns=\"2\": the slotted children sit in two equal columns; they stack below 720px. */\n .content {\n display: block;\n }\n\n :host([columns='2']) .content {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: var(--st-space-48);\n align-items: start;\n }\n\n .header {\n margin-bottom: var(--st-space-48);\n }\n\n :host([text-alignment='center']) .header {\n text-align: center;\n }\n\n :host([text-alignment='center']) .subtitle {\n margin-inline: auto;\n }\n\n :host([width='full']) .header {\n max-width: var(--st-cms-container-max);\n margin-inline: auto;\n padding-inline: var(--st-space-24);\n box-sizing: border-box;\n }\n\n .eyebrow {\n ${sectionEyebrowStyles}\n }\n\n .title {\n ${sectionTitleStyles}\n color: inherit;\n letter-spacing: -0.02em;\n max-width: 24ch;\n }\n\n :host([text-alignment='center']) .title {\n margin-inline: auto;\n }\n\n .subtitle {\n ${sectionSubtitleStyles}\n max-width: 60ch;\n margin-bottom: 0;\n }\n\n :host([background='dark']) .eyebrow {\n color: var(--st-cms-highlight);\n }\n\n :host([background='dark']) .subtitle {\n color: color-mix(in oklch, var(--st-cms-band-dark-color) 80%, transparent);\n }\n\n :host([background='accent']) .eyebrow,\n :host([background='accent']) .subtitle {\n color: color-mix(in oklch, var(--st-color-on-solid) 80%, transparent);\n }\n\n @media (max-width: 720px) {\n :host([columns='2']) .content {\n grid-template-columns: minmax(0, 1fr);\n gap: var(--st-space-24);\n }\n }\n\n @media (max-width: 768px) {\n :host {\n --st-section-space-l: 3.5rem;\n --st-section-space-xl: 4.5rem;\n --st-section-space-xxl: 5.5rem;\n --st-section-padding-inline: var(--st-space-20);\n }\n }\n `;\n\n @property({ type: String })\n eyebrow = '';\n\n @property({ type: String })\n title = '';\n\n @property({ type: String })\n subtitle = '';\n\n /** `default` (page surface), `subtle`, `dark`, `accent` or `transparent`. */\n @property({ type: String, reflect: true })\n background: 'default' | 'subtle' | 'dark' | 'accent' | 'transparent' = 'default';\n\n /** Space above the content: `none`, `s`, `m` (default), `l`, `xl` or `xxl`. */\n @property({ type: String, reflect: true, attribute: 'spacing-above' })\n spacingAbove: 'none' | 's' | 'm' | 'l' | 'xl' | 'xxl' = 'm';\n\n /** Space below the content: `none`, `s`, `m` (default), `l`, `xl` or `xxl`. */\n @property({ type: String, reflect: true, attribute: 'spacing-below' })\n spacingBelow: 'none' | 's' | 'm' | 'l' | 'xl' | 'xxl' = 'm';\n\n /** `contained` (default, the page container width), `narrow` (reading width) or `full` (edge to edge). */\n @property({ type: String, reflect: true })\n width: 'contained' | 'narrow' | 'full' = 'contained';\n\n /** Columns for the slotted children: `1` (default, stacked) or `2` (two equal columns, stacked again below 720px). */\n @property({ type: Number, reflect: true })\n columns: 1 | 2 = 1;\n\n /** Alignment of the heading. */\n @property({ type: String, reflect: true, attribute: 'text-alignment' })\n textAlignment: 'left' | 'center' = 'left';\n\n render() {\n const heading = this.eyebrow || this.title || this.subtitle;\n return html`\n <div class=\"inner\" part=\"inner\">\n ${heading\n ? html`<div class=\"header\" part=\"header\">\n ${this.eyebrow ? html`<p class=\"eyebrow\" part=\"eyebrow\">${this.eyebrow}</p>` : nothing}\n ${this.title ? html`<h2 class=\"title\" part=\"title\">${this.title}</h2>` : nothing}\n ${this.subtitle ? html`<p class=\"subtitle\" part=\"subtitle\">${this.subtitle}</p>` : nothing}\n </div>`\n : nothing}\n <div class=\"content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,YAAY,KAAK,MAAM,eAAe;AAC/C,SAAS,eAAe,gBAAgB;AAmBjC,IAAM,UAAN,cAAsB,WAAW;AAAA,EAAjC;AAAA;AA0JL,mBAAU;AAGV,iBAAQ;AAGR,oBAAW;AAIX,sBAAuE;AAIvE,wBAAwD;AAIxD,wBAAwD;AAIxD,iBAAyC;AAIzC,mBAAiB;AAIjB,yBAAmC;AAAA;AAAA,EAEnC,SAAS;AACP,UAAM,UAAU,KAAK,WAAW,KAAK,SAAS,KAAK;AACnD,WAAO;AAAA;AAAA,UAED,UACE;AAAA,gBACI,KAAK,UAAU,yCAAyC,KAAK,OAAO,SAAS,OAAO;AAAA,gBACpF,KAAK,QAAQ,sCAAsC,KAAK,KAAK,UAAU,OAAO;AAAA,gBAC9E,KAAK,WAAW,2CAA2C,KAAK,QAAQ,SAAS,OAAO;AAAA,sBAE5F,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjB;AACF;AA3Ma,QACJ,SAAS;AAAA,MACZ,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAkBf,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAmFpB,oBAAoB;AAAA;AAAA;AAAA;AAAA,QAIpB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAWlB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoC3B;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAzJf,QA0JX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GA5Jf,QA6JX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GA/Jf,QAgKX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAnK9B,QAoKX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM,WAAW,gBAAgB,CAAC;AAAA,GAvK1D,QAwKX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM,WAAW,gBAAgB,CAAC;AAAA,GA3K1D,QA4KX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GA/K9B,QAgLX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAnL9B,QAoLX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM,WAAW,iBAAiB,CAAC;AAAA,GAvL3D,QAwLX;AAxLW,UAAN;AAAA,EADN,cAAc,YAAY;AAAA,GACd;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cardShellStyles,
3
3
  fontFamilyStyles
4
- } from "./chunk-KMU6ABQF.js";
4
+ } from "./chunk-NXUS2CH7.js";
5
5
  import {
6
6
  __decorateClass
7
7
  } from "./chunk-EUXUH3YW.js";
@@ -191,4 +191,4 @@ KpiCard = __decorateClass([
191
191
  export {
192
192
  KpiCard
193
193
  };
194
- //# sourceMappingURL=chunk-6D6ROU7X.js.map
194
+ //# sourceMappingURL=chunk-IGMVF3KK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  fontFamilyStyles
3
- } from "./chunk-KMU6ABQF.js";
3
+ } from "./chunk-NXUS2CH7.js";
4
4
  import {
5
5
  __decorateClass
6
6
  } from "./chunk-EUXUH3YW.js";
@@ -84,4 +84,4 @@ DateTile = __decorateClass([
84
84
  export {
85
85
  DateTile
86
86
  };
87
- //# sourceMappingURL=chunk-INMSEYT6.js.map
87
+ //# sourceMappingURL=chunk-IVPVYVWG.js.map
@@ -0,0 +1,381 @@
1
+ import {
2
+ renderMarkdown
3
+ } from "./chunk-TJK55CJ2.js";
4
+ import {
5
+ sectionEyebrowStyles,
6
+ sectionHeaderStyles,
7
+ sectionSubtitleStyles,
8
+ sectionTitleStyles
9
+ } from "./chunk-KZ7PMFWS.js";
10
+ import {
11
+ controlBaseStyles,
12
+ fontFamilyStyles
13
+ } from "./chunk-NXUS2CH7.js";
14
+ import {
15
+ __decorateClass
16
+ } from "./chunk-EUXUH3YW.js";
17
+
18
+ // src/steps/Steps.ts
19
+ import { LitElement, css, html, nothing } from "lit";
20
+ import { customElement, property } from "lit/decorators.js";
21
+ import { unsafeHTML } from "lit/directives/unsafe-html.js";
22
+ var Steps = class extends LitElement {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.eyebrow = "";
26
+ this.title = "";
27
+ this.subtitle = "";
28
+ this.items = [];
29
+ this.highlightLast = false;
30
+ this.inverted = false;
31
+ this.variant = "default";
32
+ this.markdown = false;
33
+ }
34
+ renderDescription(step) {
35
+ if (!step.description) return nothing;
36
+ return this.markdown ? html`<div class="description" part="description">${unsafeHTML(renderMarkdown(step.description))}</div>` : html`<p class="description" part="description">${step.description}</p>`;
37
+ }
38
+ renderTitle(step) {
39
+ const title = html`<h3 class="card-title" part="card-title">${step.title}</h3>`;
40
+ if (!step.badge) return title;
41
+ return html`<div class="title-row">
42
+ ${title}
43
+ <span class="badge" part="badge">${step.badge}</span>
44
+ </div>`;
45
+ }
46
+ render() {
47
+ const heading = this.eyebrow || this.title || this.subtitle;
48
+ const last = this.items.length - 1;
49
+ return html`
50
+ <div class="container" part="container">
51
+ ${heading ? html`<div class="header" part="header">
52
+ ${this.eyebrow ? html`<p class="eyebrow" part="eyebrow">${this.eyebrow}</p>` : nothing}
53
+ ${this.title ? html`<h2 class="title" part="title">${this.title}</h2>` : nothing}
54
+ ${this.subtitle ? html`<p class="subtitle" part="subtitle">${this.subtitle}</p>` : nothing}
55
+ </div>` : nothing}
56
+ <ol class="grid" part="grid" aria-label=${this.title || nothing}>
57
+ ${this.items.map(
58
+ (step, index) => html`
59
+ <li class="card ${this.highlightLast && index === last ? "highlight" : ""}" part="card">
60
+ <span class="number" part="number" aria-hidden="true">${String(index + 1).padStart(2, "0")}</span>
61
+ ${this.renderTitle(step)}
62
+ ${this.renderDescription(step)}
63
+ </li>
64
+ `
65
+ )}
66
+ </ol>
67
+ </div>
68
+ `;
69
+ }
70
+ };
71
+ Steps.styles = css`
72
+ ${controlBaseStyles}
73
+ /* fontFamilyStyles is a bare declaration: it must sit inside a rule, or it swallows the next one. */
74
+ :host {
75
+ ${fontFamilyStyles}
76
+ }
77
+
78
+ :host {
79
+ display: block;
80
+ box-sizing: border-box;
81
+ /* !important: a page-level reset (e.g. Tailwind Preflight) otherwise zeroes a shadow host's
82
+ padding; override with --st-steps-padding instead. */
83
+ padding: var(--st-steps-padding, var(--st-cms-section-padding) var(--st-space-24)) !important;
84
+ background: var(--st-color-page);
85
+ }
86
+
87
+ :host([inverted]) {
88
+ background: var(--st-cms-band-dark-bg);
89
+ }
90
+
91
+ .container {
92
+ max-width: var(--st-cms-container-max);
93
+ margin: 0 auto;
94
+ }
95
+
96
+ .header {
97
+ ${sectionHeaderStyles}
98
+ }
99
+
100
+ .eyebrow {
101
+ ${sectionEyebrowStyles}
102
+ }
103
+
104
+ .title {
105
+ ${sectionTitleStyles}
106
+ color: inherit;
107
+ letter-spacing: -0.02em;
108
+ }
109
+
110
+ .subtitle {
111
+ ${sectionSubtitleStyles}
112
+ max-width: 60ch;
113
+ margin: 0 auto;
114
+ }
115
+
116
+ .grid {
117
+ list-style: none;
118
+ margin: 0;
119
+ padding: 0;
120
+ display: grid;
121
+ grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
122
+ gap: var(--st-space-24);
123
+ }
124
+
125
+ .card {
126
+ display: flex;
127
+ flex-direction: column;
128
+ gap: var(--st-space-12);
129
+ box-sizing: border-box;
130
+ margin: 0;
131
+ padding: var(--st-space-32);
132
+ border: 1px solid var(--st-color-border);
133
+ border-radius: var(--st-radius-lg);
134
+ background: var(--st-color-surface);
135
+ color: var(--st-color-text);
136
+ }
137
+
138
+ .number {
139
+ font-size: var(--st-cms-text-3xl);
140
+ font-weight: var(--st-font-weight-bold);
141
+ line-height: 1;
142
+ letter-spacing: -0.02em;
143
+ color: var(--st-color-accent);
144
+ font-variant-numeric: tabular-nums;
145
+ }
146
+
147
+ .card-title {
148
+ margin: var(--st-space-8) 0 0;
149
+ font-size: var(--st-text-xl);
150
+ font-weight: var(--st-font-weight-semibold);
151
+ line-height: 1.3;
152
+ color: var(--st-color-text-strong);
153
+ }
154
+
155
+ .description {
156
+ margin: 0;
157
+ font-size: var(--st-text-md);
158
+ line-height: 1.6;
159
+ color: var(--st-color-text-muted);
160
+ }
161
+
162
+ /* inverted: a dark band with light cards; the number moves to the cyan highlight so it reads on navy. */
163
+ :host([inverted]) .card {
164
+ background: color-mix(in oklch, var(--st-cms-band-dark-color) 6%, transparent);
165
+ border-color: color-mix(in oklch, var(--st-cms-band-dark-color) 16%, transparent);
166
+ }
167
+
168
+ :host([inverted]) .number {
169
+ color: var(--st-cms-highlight);
170
+ }
171
+
172
+ :host([inverted]) .title,
173
+ :host([inverted]) .card-title {
174
+ color: var(--st-cms-band-dark-color);
175
+ }
176
+
177
+ :host([inverted]) .eyebrow,
178
+ :host([inverted]) .subtitle,
179
+ :host([inverted]) .description {
180
+ color: color-mix(in oklch, var(--st-cms-band-dark-color) 75%, transparent);
181
+ }
182
+
183
+ /* highlightLast: the final card is the dark call-out. Declared after the inverted rules so it wins. */
184
+ .card.highlight {
185
+ background: var(--st-cms-navy);
186
+ border-color: var(--st-cms-navy);
187
+ color: var(--st-cms-on-dark);
188
+ }
189
+
190
+ .card.highlight .number {
191
+ color: var(--st-cms-highlight);
192
+ }
193
+
194
+ .card.highlight .card-title {
195
+ color: var(--st-cms-on-dark);
196
+ }
197
+
198
+ .card.highlight .description {
199
+ color: color-mix(in oklch, var(--st-cms-on-dark) 80%, transparent);
200
+ }
201
+
202
+ /* variant="band": a white full-width band with hairline borders; light blue cards, azure numbers.
203
+ The heading block is left-aligned in a 720px column (label, 36px title, 18px lead). */
204
+ :host([variant='band']) {
205
+ padding: 0 !important;
206
+ background: var(--st-color-surface, #ffffff);
207
+ border-top: 1px solid var(--st-cms-primary-100);
208
+ border-bottom: 1px solid var(--st-cms-primary-100);
209
+ }
210
+
211
+ /* The band's section rhythm and gutters sit on the container (inside the shadow root, so a page
212
+ reset cannot zero them), which is a 1200px box centred on the page. */
213
+ :host([variant='band']) .container {
214
+ box-sizing: border-box;
215
+ /* The side gutter sits inside the box, so the content itself still gets the full container width. */
216
+ max-width: calc(var(--st-cms-container-max) + 2 * var(--st-space-24));
217
+ padding: var(--st-cms-section-padding, 5rem) var(--st-space-24);
218
+ }
219
+
220
+ .description p {
221
+ margin: 0;
222
+ }
223
+
224
+ .description code {
225
+ font-family: ui-monospace, Menlo, monospace;
226
+ font-size: 13px;
227
+ }
228
+
229
+ :host([variant='band']) .header {
230
+ max-width: 720px;
231
+ margin-bottom: var(--st-space-48);
232
+ text-align: left;
233
+ }
234
+
235
+ :host([variant='band']) .eyebrow {
236
+ margin-bottom: var(--st-space-12);
237
+ font-size: 12px;
238
+ font-weight: var(--st-font-weight-semibold);
239
+ letter-spacing: 0.05em;
240
+ color: var(--st-cms-eyebrow, #0c64c5);
241
+ }
242
+
243
+ :host([variant='band']) .title {
244
+ font-size: 36px;
245
+ line-height: 1.2;
246
+ font-weight: var(--st-font-weight-bold);
247
+ }
248
+
249
+ :host([variant='band']) .subtitle {
250
+ max-width: none;
251
+ margin: 0;
252
+ font-size: 18px;
253
+ line-height: 1.6;
254
+ color: var(--st-cms-text, var(--st-cms-navy-2, #03346b));
255
+ }
256
+
257
+ :host([variant='band']) .card {
258
+ gap: var(--st-space-12);
259
+ padding: var(--st-space-24);
260
+ border: 1px solid var(--st-cms-primary-100);
261
+ border-radius: 12px;
262
+ background: var(--st-cms-surface-soft);
263
+ color: var(--st-cms-text, var(--st-cms-navy-2, #03346b));
264
+ }
265
+
266
+ :host([variant='band']) .number {
267
+ font-size: 32px;
268
+ font-weight: var(--st-font-weight-bold);
269
+ color: var(--st-cms-brand-azure);
270
+ }
271
+
272
+ :host([variant='band']) .card-title {
273
+ margin: 0;
274
+ font-size: 20px;
275
+ font-weight: var(--st-font-weight-semibold);
276
+ line-height: 1.3;
277
+ }
278
+
279
+ :host([variant='band']) .description {
280
+ font-size: 14px;
281
+ line-height: 1.5;
282
+ color: var(--st-cms-text, var(--st-cms-navy-2, #03346b));
283
+ }
284
+
285
+ .title-row {
286
+ display: flex;
287
+ flex-wrap: wrap;
288
+ align-items: center;
289
+ gap: var(--st-space-8) var(--st-space-12);
290
+ margin-top: var(--st-space-8);
291
+ }
292
+
293
+ .title-row .card-title {
294
+ margin: 0;
295
+ }
296
+
297
+ .badge {
298
+ display: inline-flex;
299
+ align-items: center;
300
+ padding: 4px 10px;
301
+ border-radius: var(--st-radius-full);
302
+ background: var(--st-cms-primary-100);
303
+ color: var(--st-cms-navy);
304
+ font-size: var(--st-text-xs);
305
+ font-weight: var(--st-font-weight-bold);
306
+ line-height: 1.4;
307
+ white-space: nowrap;
308
+ }
309
+
310
+ .card.highlight .badge {
311
+ background: var(--st-cms-highlight);
312
+ color: var(--st-cms-navy);
313
+ }
314
+
315
+ /* band: the highlighted card stays a dark call-out (the band's light card rules would hide its
316
+ white title). Declared last, with the .card.highlight selector, so it wins over the band rules. */
317
+ :host([variant='band']) .card.highlight {
318
+ background: var(--st-cms-navy);
319
+ border-color: var(--st-cms-primary-200);
320
+ color: var(--st-cms-primary-100);
321
+ }
322
+
323
+ :host([variant='band']) .card.highlight .number {
324
+ color: var(--st-cms-highlight);
325
+ }
326
+
327
+ :host([variant='band']) .card.highlight .card-title {
328
+ color: var(--st-cms-on-dark);
329
+ }
330
+
331
+ :host([variant='band']) .card.highlight .description {
332
+ color: var(--st-cms-primary-100);
333
+ }
334
+
335
+ :host([variant='band']) .badge {
336
+ padding: 2px 8px;
337
+ font-size: 12px;
338
+ font-weight: var(--st-font-weight-semibold);
339
+ }
340
+
341
+ @media (max-width: 600px) {
342
+ :host {
343
+ padding: var(--st-steps-padding, var(--st-space-40) var(--st-space-20)) !important;
344
+ }
345
+ .card {
346
+ padding: var(--st-space-24);
347
+ }
348
+ }
349
+ `;
350
+ __decorateClass([
351
+ property({ type: String })
352
+ ], Steps.prototype, "eyebrow", 2);
353
+ __decorateClass([
354
+ property({ type: String })
355
+ ], Steps.prototype, "title", 2);
356
+ __decorateClass([
357
+ property({ type: String })
358
+ ], Steps.prototype, "subtitle", 2);
359
+ __decorateClass([
360
+ property({ attribute: false })
361
+ ], Steps.prototype, "items", 2);
362
+ __decorateClass([
363
+ property({ type: Boolean, reflect: true, attribute: "highlight-last" })
364
+ ], Steps.prototype, "highlightLast", 2);
365
+ __decorateClass([
366
+ property({ type: Boolean, reflect: true })
367
+ ], Steps.prototype, "inverted", 2);
368
+ __decorateClass([
369
+ property({ type: String, reflect: true })
370
+ ], Steps.prototype, "variant", 2);
371
+ __decorateClass([
372
+ property({ type: Boolean, reflect: true })
373
+ ], Steps.prototype, "markdown", 2);
374
+ Steps = __decorateClass([
375
+ customElement("st-steps")
376
+ ], Steps);
377
+
378
+ export {
379
+ Steps
380
+ };
381
+ //# sourceMappingURL=chunk-JURCF4OD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/steps/Steps.ts"],"sourcesContent":["import { LitElement, css, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n\nimport { controlBaseStyles, fontFamilyStyles } from '../shared/styles';\nimport { renderMarkdown } from '../shared/markdown';\nimport { sectionEyebrowStyles, sectionHeaderStyles, sectionSubtitleStyles, sectionTitleStyles } from '../shared/section-styles';\n\nexport interface StepItem {\n title: string;\n /** Plain text, or Markdown when the block has `markdown` set (for inline `code`). */\n description?: string;\n /** Small pill beside the title (e.g. \"Included\"). On the highlighted last card it turns cyan. */\n badge?: string;\n}\n\n/**\n * A numbered process: a responsive grid of cards, each with an automatic \"01\", \"02\", ... number, a\n * title and a description. `highlightLast` makes the final card a dark navy call-out, the way\n * enterprise pages close a how-it-works sequence. `inverted` puts the whole block on the dark band.\n * `variant=\"band\"` sets the block on a white full-width band with hairline top and bottom borders;\n * the cards sit on a light blue surface and the numbers are large azure.\n *\n * @cssprop --st-steps-padding - Overrides the block's padding.\n * @csspart header - The eyebrow/title/subtitle block.\n * @csspart card - Each step card (an `li`).\n * @csspart number - The step number.\n * @csspart badge - The pill beside a step's title.\n */\n@customElement('st-steps')\nexport class Steps extends LitElement {\n static styles = css`\n ${controlBaseStyles}\n /* fontFamilyStyles is a bare declaration: it must sit inside a rule, or it swallows the next one. */\n :host {\n ${fontFamilyStyles}\n }\n\n :host {\n display: block;\n box-sizing: border-box;\n /* !important: a page-level reset (e.g. Tailwind Preflight) otherwise zeroes a shadow host's\n padding; override with --st-steps-padding instead. */\n padding: var(--st-steps-padding, var(--st-cms-section-padding) var(--st-space-24)) !important;\n background: var(--st-color-page);\n }\n\n :host([inverted]) {\n background: var(--st-cms-band-dark-bg);\n }\n\n .container {\n max-width: var(--st-cms-container-max);\n margin: 0 auto;\n }\n\n .header {\n ${sectionHeaderStyles}\n }\n\n .eyebrow {\n ${sectionEyebrowStyles}\n }\n\n .title {\n ${sectionTitleStyles}\n color: inherit;\n letter-spacing: -0.02em;\n }\n\n .subtitle {\n ${sectionSubtitleStyles}\n max-width: 60ch;\n margin: 0 auto;\n }\n\n .grid {\n list-style: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));\n gap: var(--st-space-24);\n }\n\n .card {\n display: flex;\n flex-direction: column;\n gap: var(--st-space-12);\n box-sizing: border-box;\n margin: 0;\n padding: var(--st-space-32);\n border: 1px solid var(--st-color-border);\n border-radius: var(--st-radius-lg);\n background: var(--st-color-surface);\n color: var(--st-color-text);\n }\n\n .number {\n font-size: var(--st-cms-text-3xl);\n font-weight: var(--st-font-weight-bold);\n line-height: 1;\n letter-spacing: -0.02em;\n color: var(--st-color-accent);\n font-variant-numeric: tabular-nums;\n }\n\n .card-title {\n margin: var(--st-space-8) 0 0;\n font-size: var(--st-text-xl);\n font-weight: var(--st-font-weight-semibold);\n line-height: 1.3;\n color: var(--st-color-text-strong);\n }\n\n .description {\n margin: 0;\n font-size: var(--st-text-md);\n line-height: 1.6;\n color: var(--st-color-text-muted);\n }\n\n /* inverted: a dark band with light cards; the number moves to the cyan highlight so it reads on navy. */\n :host([inverted]) .card {\n background: color-mix(in oklch, var(--st-cms-band-dark-color) 6%, transparent);\n border-color: color-mix(in oklch, var(--st-cms-band-dark-color) 16%, transparent);\n }\n\n :host([inverted]) .number {\n color: var(--st-cms-highlight);\n }\n\n :host([inverted]) .title,\n :host([inverted]) .card-title {\n color: var(--st-cms-band-dark-color);\n }\n\n :host([inverted]) .eyebrow,\n :host([inverted]) .subtitle,\n :host([inverted]) .description {\n color: color-mix(in oklch, var(--st-cms-band-dark-color) 75%, transparent);\n }\n\n /* highlightLast: the final card is the dark call-out. Declared after the inverted rules so it wins. */\n .card.highlight {\n background: var(--st-cms-navy);\n border-color: var(--st-cms-navy);\n color: var(--st-cms-on-dark);\n }\n\n .card.highlight .number {\n color: var(--st-cms-highlight);\n }\n\n .card.highlight .card-title {\n color: var(--st-cms-on-dark);\n }\n\n .card.highlight .description {\n color: color-mix(in oklch, var(--st-cms-on-dark) 80%, transparent);\n }\n\n /* variant=\"band\": a white full-width band with hairline borders; light blue cards, azure numbers.\n The heading block is left-aligned in a 720px column (label, 36px title, 18px lead). */\n :host([variant='band']) {\n padding: 0 !important;\n background: var(--st-color-surface, #ffffff);\n border-top: 1px solid var(--st-cms-primary-100);\n border-bottom: 1px solid var(--st-cms-primary-100);\n }\n\n /* The band's section rhythm and gutters sit on the container (inside the shadow root, so a page\n reset cannot zero them), which is a 1200px box centred on the page. */\n :host([variant='band']) .container {\n box-sizing: border-box;\n /* The side gutter sits inside the box, so the content itself still gets the full container width. */\n max-width: calc(var(--st-cms-container-max) + 2 * var(--st-space-24));\n padding: var(--st-cms-section-padding, 5rem) var(--st-space-24);\n }\n\n .description p {\n margin: 0;\n }\n\n .description code {\n font-family: ui-monospace, Menlo, monospace;\n font-size: 13px;\n }\n\n :host([variant='band']) .header {\n max-width: 720px;\n margin-bottom: var(--st-space-48);\n text-align: left;\n }\n\n :host([variant='band']) .eyebrow {\n margin-bottom: var(--st-space-12);\n font-size: 12px;\n font-weight: var(--st-font-weight-semibold);\n letter-spacing: 0.05em;\n color: var(--st-cms-eyebrow, #0c64c5);\n }\n\n :host([variant='band']) .title {\n font-size: 36px;\n line-height: 1.2;\n font-weight: var(--st-font-weight-bold);\n }\n\n :host([variant='band']) .subtitle {\n max-width: none;\n margin: 0;\n font-size: 18px;\n line-height: 1.6;\n color: var(--st-cms-text, var(--st-cms-navy-2, #03346b));\n }\n\n :host([variant='band']) .card {\n gap: var(--st-space-12);\n padding: var(--st-space-24);\n border: 1px solid var(--st-cms-primary-100);\n border-radius: 12px;\n background: var(--st-cms-surface-soft);\n color: var(--st-cms-text, var(--st-cms-navy-2, #03346b));\n }\n\n :host([variant='band']) .number {\n font-size: 32px;\n font-weight: var(--st-font-weight-bold);\n color: var(--st-cms-brand-azure);\n }\n\n :host([variant='band']) .card-title {\n margin: 0;\n font-size: 20px;\n font-weight: var(--st-font-weight-semibold);\n line-height: 1.3;\n }\n\n :host([variant='band']) .description {\n font-size: 14px;\n line-height: 1.5;\n color: var(--st-cms-text, var(--st-cms-navy-2, #03346b));\n }\n\n .title-row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--st-space-8) var(--st-space-12);\n margin-top: var(--st-space-8);\n }\n\n .title-row .card-title {\n margin: 0;\n }\n\n .badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: var(--st-radius-full);\n background: var(--st-cms-primary-100);\n color: var(--st-cms-navy);\n font-size: var(--st-text-xs);\n font-weight: var(--st-font-weight-bold);\n line-height: 1.4;\n white-space: nowrap;\n }\n\n .card.highlight .badge {\n background: var(--st-cms-highlight);\n color: var(--st-cms-navy);\n }\n\n /* band: the highlighted card stays a dark call-out (the band's light card rules would hide its\n white title). Declared last, with the .card.highlight selector, so it wins over the band rules. */\n :host([variant='band']) .card.highlight {\n background: var(--st-cms-navy);\n border-color: var(--st-cms-primary-200);\n color: var(--st-cms-primary-100);\n }\n\n :host([variant='band']) .card.highlight .number {\n color: var(--st-cms-highlight);\n }\n\n :host([variant='band']) .card.highlight .card-title {\n color: var(--st-cms-on-dark);\n }\n\n :host([variant='band']) .card.highlight .description {\n color: var(--st-cms-primary-100);\n }\n\n :host([variant='band']) .badge {\n padding: 2px 8px;\n font-size: 12px;\n font-weight: var(--st-font-weight-semibold);\n }\n\n @media (max-width: 600px) {\n :host {\n padding: var(--st-steps-padding, var(--st-space-40) var(--st-space-20)) !important;\n }\n .card {\n padding: var(--st-space-24);\n }\n }\n `;\n\n /** Small uppercase label above the title. */\n @property({ type: String })\n eyebrow = '';\n\n @property({ type: String })\n title = '';\n\n @property({ type: String })\n subtitle = '';\n\n /** The steps, in order. */\n @property({ attribute: false })\n items: StepItem[] = [];\n\n /** Renders the last step as a dark navy call-out card. */\n @property({ type: Boolean, reflect: true, attribute: 'highlight-last' })\n highlightLast = false;\n\n /** Puts the block on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme. */\n @property({ type: Boolean, reflect: true })\n inverted = false;\n\n /** `default` is the bordered card grid; `band` is a white full-width band with light blue cards. */\n @property({ type: String, reflect: true })\n variant: 'default' | 'band' = 'default';\n\n /** Renders each step's description as Markdown (inline `code`, links). Off by default: descriptions are plain text. */\n @property({ type: Boolean, reflect: true })\n markdown = false;\n\n private renderDescription(step: StepItem) {\n if (!step.description) return nothing;\n return this.markdown\n ? html`<div class=\"description\" part=\"description\">${unsafeHTML(renderMarkdown(step.description))}</div>`\n : html`<p class=\"description\" part=\"description\">${step.description}</p>`;\n }\n\n private renderTitle(step: StepItem) {\n const title = html`<h3 class=\"card-title\" part=\"card-title\">${step.title}</h3>`;\n if (!step.badge) return title;\n return html`<div class=\"title-row\">\n ${title}\n <span class=\"badge\" part=\"badge\">${step.badge}</span>\n </div>`;\n }\n\n render() {\n const heading = this.eyebrow || this.title || this.subtitle;\n const last = this.items.length - 1;\n return html`\n <div class=\"container\" part=\"container\">\n ${heading\n ? html`<div class=\"header\" part=\"header\">\n ${this.eyebrow ? html`<p class=\"eyebrow\" part=\"eyebrow\">${this.eyebrow}</p>` : nothing}\n ${this.title ? html`<h2 class=\"title\" part=\"title\">${this.title}</h2>` : nothing}\n ${this.subtitle ? html`<p class=\"subtitle\" part=\"subtitle\">${this.subtitle}</p>` : nothing}\n </div>`\n : nothing}\n <ol class=\"grid\" part=\"grid\" aria-label=${this.title || nothing}>\n ${this.items.map(\n (step, index) => html`\n <li class=\"card ${this.highlightLast && index === last ? 'highlight' : ''}\" part=\"card\">\n <span class=\"number\" part=\"number\" aria-hidden=\"true\">${String(index + 1).padStart(2, '0')}</span>\n ${this.renderTitle(step)}\n ${this.renderDescription(step)}\n </li>\n `\n )}\n </ol>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,KAAK,MAAM,eAAe;AAC/C,SAAS,eAAe,gBAAgB;AACxC,SAAS,kBAAkB;AA4BpB,IAAM,QAAN,cAAoB,WAAW;AAAA,EAA/B;AAAA;AA2RL,mBAAU;AAGV,iBAAQ;AAGR,oBAAW;AAIX,iBAAoB,CAAC;AAIrB,yBAAgB;AAIhB,oBAAW;AAIX,mBAA8B;AAI9B,oBAAW;AAAA;AAAA,EAEH,kBAAkB,MAAgB;AACxC,QAAI,CAAC,KAAK,YAAa,QAAO;AAC9B,WAAO,KAAK,WACR,mDAAmD,WAAW,eAAe,KAAK,WAAW,CAAC,CAAC,WAC/F,iDAAiD,KAAK,WAAW;AAAA,EACvE;AAAA,EAEQ,YAAY,MAAgB;AAClC,UAAM,QAAQ,gDAAgD,KAAK,KAAK;AACxE,QAAI,CAAC,KAAK,MAAO,QAAO;AACxB,WAAO;AAAA,QACH,KAAK;AAAA,yCAC4B,KAAK,KAAK;AAAA;AAAA,EAEjD;AAAA,EAEA,SAAS;AACP,UAAM,UAAU,KAAK,WAAW,KAAK,SAAS,KAAK;AACnD,UAAM,OAAO,KAAK,MAAM,SAAS;AACjC,WAAO;AAAA;AAAA,UAED,UACE;AAAA,gBACI,KAAK,UAAU,yCAAyC,KAAK,OAAO,SAAS,OAAO;AAAA,gBACpF,KAAK,QAAQ,sCAAsC,KAAK,KAAK,UAAU,OAAO;AAAA,gBAC9E,KAAK,WAAW,2CAA2C,KAAK,QAAQ,SAAS,OAAO;AAAA,sBAE5F,OAAO;AAAA,kDAC+B,KAAK,SAAS,OAAO;AAAA,YAC3D,KAAK,MAAM;AAAA,MACX,CAAC,MAAM,UAAU;AAAA,gCACG,KAAK,iBAAiB,UAAU,OAAO,cAAc,EAAE;AAAA,wEACf,OAAO,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,kBACxF,KAAK,YAAY,IAAI,CAAC;AAAA,kBACtB,KAAK,kBAAkB,IAAI,CAAC;AAAA;AAAA;AAAA,IAGpC,CAAC;AAAA;AAAA;AAAA;AAAA,EAIT;AACF;AAjWa,MACJ,SAAS;AAAA,MACZ,iBAAiB;AAAA;AAAA;AAAA,QAGf,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAsBhB,mBAAmB;AAAA;AAAA;AAAA;AAAA,QAInB,oBAAoB;AAAA;AAAA;AAAA;AAAA,QAIpB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMlB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkP3B;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GA1Rf,MA2RX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GA7Rf,MA8RX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAhSf,MAiSX;AAIA;AAAA,EADC,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GApSnB,MAqSX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM,WAAW,iBAAiB,CAAC;AAAA,GAxS5D,MAySX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA5S/B,MA6SX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAhT9B,MAiTX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GApT/B,MAqTX;AArTW,QAAN;AAAA,EADN,cAAc,UAAU;AAAA,GACZ;","names":[]}
@@ -24,8 +24,17 @@ var cardDescriptionStyles = css`
24
24
  color: var(--st-color-text-muted);
25
25
  line-height: 1.5;
26
26
  `;
27
+ var sectionEyebrowStyles = css`
28
+ margin: 0 0 var(--st-space-12);
29
+ font-size: var(--st-text-sm);
30
+ font-weight: var(--st-font-weight-bold);
31
+ letter-spacing: 0.12em;
32
+ text-transform: uppercase;
33
+ color: var(--st-color-accent-text);
34
+ `;
27
35
  var ctaLinkStyles = css`
28
36
  display: inline-block;
37
+ box-sizing: border-box;
29
38
  padding: 12px 24px;
30
39
  border-radius: var(--st-radius-sm);
31
40
  font: inherit;
@@ -77,6 +86,7 @@ export {
77
86
  sectionSubtitleStyles,
78
87
  cardTitleStyles,
79
88
  cardDescriptionStyles,
89
+ sectionEyebrowStyles,
80
90
  ctaLinkStyles,
81
91
  paddingScaleStyles,
82
92
  sectionHeaderStyles,
@@ -84,4 +94,4 @@ export {
84
94
  reducedMotionStyles,
85
95
  invertedSectionTextStyles
86
96
  };
87
- //# sourceMappingURL=chunk-FZ36KL73.js.map
97
+ //# sourceMappingURL=chunk-KZ7PMFWS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shared/section-styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * CSS fragments shared by the CMS section components (hero, features, stats, ...), replacing the\n * source React library's global `Common.css` classes (`.section-title`, `.theme-inverted`, ...)\n * so each Lit component composes them into its own shadow root instead of re-declaring them.\n */\n\n/** Section heading + subheading typography. Use on `.title` / `.subtitle` selectors. */\nexport const sectionTitleStyles = css`\n font-size: var(--st-cms-text-4xl);\n font-weight: var(--st-font-weight-bold);\n color: var(--st-color-text-strong);\n margin: 0 0 var(--st-space-16);\n line-height: 1.2;\n`;\n\nexport const sectionSubtitleStyles = css`\n font-size: var(--st-cms-text-lg);\n color: var(--st-color-text-muted);\n line-height: 1.6;\n margin: 0 0 var(--st-space-28);\n`;\n\n/** Card heading + body typography. */\nexport const cardTitleStyles = css`\n font-size: var(--st-text-2xl);\n font-weight: var(--st-font-weight-semibold);\n color: var(--st-color-text-strong);\n margin: 0 0 var(--st-space-8);\n`;\n\nexport const cardDescriptionStyles = css`\n font-size: var(--st-text-md);\n color: var(--st-color-text-muted);\n line-height: 1.5;\n`;\n\n/**\n * Small uppercase, letter-spaced accent label above a section or content heading (\"HOW IT WORKS\").\n * Shared by `st-steps`, `st-section`, `st-content-block` and `st-features-section`. Inverted/dark\n * surfaces override the colour locally.\n */\nexport const sectionEyebrowStyles = css`\n margin: 0 0 var(--st-space-12);\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: var(--st-color-accent-text);\n`;\n\n/**\n * Outlined call-to-action link/button used by hero, promo banner, features, ... Applies to both\n * `<a>` (when the CTA has an `href`) and `<button>`: `box-sizing` is pinned so an anchor sizes like\n * a button with the same padding.\n */\nexport const ctaLinkStyles = css`\n display: inline-block;\n box-sizing: border-box;\n padding: 12px 24px;\n border-radius: var(--st-radius-sm);\n font: inherit;\n text-align: center;\n text-decoration: none;\n cursor: pointer;\n transition: transform 0.2s ease;\n`;\n\n/** Maps the source's `padding` prop (none|small|medium|large) to `:host([padding=...])` rules. */\nexport const paddingScaleStyles = css`\n :host([padding='small']) { padding: var(--st-space-16); }\n :host([padding='medium']) { padding: var(--st-space-24); }\n :host([padding='large']) { padding: var(--st-space-32); }\n`;\n\n/** Centered title/subtitle block above a section's content. Use on a `.header` wrapper. */\nexport const sectionHeaderStyles = css`\n text-align: center;\n margin-bottom: var(--st-space-48);\n`;\n\n/** Rounded icon tile (holds an `<iconify-icon>`) used by bento cards, feature lists, ... */\nexport const iconTileStyles = css`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border-radius: var(--st-radius-lg);\n background: var(--st-color-subtle);\n color: var(--st-color-text-muted);\n`;\n\n/** Collapses CSS transitions/animations for users who prefer reduced motion. */\nexport const reducedMotionStyles = css`\n @media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n }\n }\n`;\n\n/** Light-on-dark title/subtitle for an `inverted` section host. Place inside the host's `static styles`. */\nexport const invertedSectionTextStyles = css`\n :host([inverted]) .title {\n color: var(--st-color-on-solid);\n }\n\n :host([inverted]) .subtitle {\n color: var(--st-color-border);\n }\n`;\n"],"mappings":";AAAA,SAAS,WAAW;AASb,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ3B,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ9B,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOxB,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAW9B,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAc7B,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAatB,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAO3B,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAM5B,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWvB,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY5B,IAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}