@sankhyatronics/sankhya-cms 0.1.16 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/custom-elements.json +842 -213
  2. package/dist/bento-grid/index.d.ts +8 -1
  3. package/dist/bento-grid/index.js +2 -1
  4. package/dist/card/index.d.ts +3 -4
  5. package/dist/card/index.js +1 -1
  6. package/dist/{chunk-LEXZKGQX.js → chunk-2DXHPEB5.js} +1 -1
  7. package/dist/chunk-2DXHPEB5.js.map +1 -0
  8. package/dist/{chunk-R5G6KFTJ.js → chunk-2FJDNJ7R.js} +1 -1
  9. package/dist/chunk-2FJDNJ7R.js.map +1 -0
  10. package/dist/{chunk-ZN4LIKVG.js → chunk-3OEEOBHB.js} +1 -1
  11. package/dist/chunk-3OEEOBHB.js.map +1 -0
  12. package/dist/{chunk-BMHMNXIA.js → chunk-4AFOKKSU.js} +1 -1
  13. package/dist/chunk-4AFOKKSU.js.map +1 -0
  14. package/dist/{chunk-76AVBQUA.js → chunk-5C6C6K5U.js} +98 -4
  15. package/dist/chunk-5C6C6K5U.js.map +1 -0
  16. package/dist/{chunk-7NLZND6Q.js → chunk-5F5PTVWR.js} +27 -2
  17. package/dist/chunk-5F5PTVWR.js.map +1 -0
  18. package/dist/chunk-5MY6OWMK.js +125 -0
  19. package/dist/chunk-5MY6OWMK.js.map +1 -0
  20. package/dist/{chunk-FLY7TNRT.js → chunk-7NIWQWTA.js} +1 -1
  21. package/dist/chunk-7NIWQWTA.js.map +1 -0
  22. package/dist/{chunk-ALI26WOB.js → chunk-EE6PAN3B.js} +33 -2
  23. package/dist/chunk-EE6PAN3B.js.map +1 -0
  24. package/dist/chunk-FML6AG2V.js +107 -0
  25. package/dist/chunk-FML6AG2V.js.map +1 -0
  26. package/dist/{chunk-VWS53WY4.js → chunk-HMUZON6I.js} +49 -4
  27. package/dist/chunk-HMUZON6I.js.map +1 -0
  28. package/dist/{chunk-G3CF7MBO.js → chunk-J6EO4R73.js} +27 -1
  29. package/dist/{chunk-G3CF7MBO.js.map → chunk-J6EO4R73.js.map} +1 -1
  30. package/dist/chunk-O4FCRKDX.js +178 -0
  31. package/dist/chunk-O4FCRKDX.js.map +1 -0
  32. package/dist/{chunk-SMLR736E.js → chunk-OELI3IWC.js} +1 -1
  33. package/dist/chunk-OELI3IWC.js.map +1 -0
  34. package/dist/{chunk-JQY2G4QK.js → chunk-OLA35A2O.js} +1 -1
  35. package/dist/chunk-OLA35A2O.js.map +1 -0
  36. package/dist/{chunk-YQ42EBK5.js → chunk-PHEGSCOM.js} +1 -1
  37. package/dist/chunk-PHEGSCOM.js.map +1 -0
  38. package/dist/{chunk-5EBWMPJS.js → chunk-QLA4BH2B.js} +5 -5
  39. package/dist/chunk-QLA4BH2B.js.map +1 -0
  40. package/dist/{chunk-JKBWZLG4.js → chunk-SQ3OZO32.js} +141 -3
  41. package/dist/chunk-SQ3OZO32.js.map +1 -0
  42. package/dist/chunk-UAIUBPDN.js +11 -0
  43. package/dist/chunk-UAIUBPDN.js.map +1 -0
  44. package/dist/{chunk-XWB4CKDU.js → chunk-XUGEXERO.js} +6 -6
  45. package/dist/chunk-XUGEXERO.js.map +1 -0
  46. package/dist/chunk-ZRC5BVDX.js +219 -0
  47. package/dist/chunk-ZRC5BVDX.js.map +1 -0
  48. package/dist/cms-theme.css +7 -0
  49. package/dist/content-block/index.d.ts +2 -3
  50. package/dist/content-block/index.js +3 -2
  51. package/dist/dropdown/index.d.ts +8 -11
  52. package/dist/dropdown/index.js +1 -1
  53. package/dist/feature-split/index.js +2 -1
  54. package/dist/features-section/index.d.ts +4 -4
  55. package/dist/features-section/index.js +4 -3
  56. package/dist/flow/index.d.ts +35 -0
  57. package/dist/flow/index.js +9 -0
  58. package/dist/flow/index.js.map +1 -0
  59. package/dist/header/index.d.ts +8 -15
  60. package/dist/header/index.js +1 -1
  61. package/dist/hero/index.d.ts +18 -3
  62. package/dist/hero/index.js +1 -1
  63. package/dist/icon-button/index.d.ts +2 -4
  64. package/dist/icon-button/index.js +1 -1
  65. package/dist/index.d.ts +3 -0
  66. package/dist/index.js +38 -25
  67. package/dist/items-accordion/index.d.ts +5 -0
  68. package/dist/items-accordion/index.js +2 -1
  69. package/dist/markdown/index.d.ts +1 -2
  70. package/dist/markdown/index.js +2 -1
  71. package/dist/mega-menu/index.d.ts +2 -2
  72. package/dist/mega-menu/index.js +1 -1
  73. package/dist/menu-grid/index.d.ts +2 -3
  74. package/dist/menu-grid/index.js +1 -1
  75. package/dist/menu-grid-item/index.d.ts +6 -8
  76. package/dist/menu-grid-item/index.js +1 -1
  77. package/dist/menu-item/index.d.ts +5 -7
  78. package/dist/menu-item/index.js +1 -1
  79. package/dist/promo-banner/index.d.ts +14 -3
  80. package/dist/promo-banner/index.js +1 -1
  81. package/dist/schema/index.d.ts +3 -0
  82. package/dist/schema/index.js +3 -0
  83. package/dist/schema/index.js.map +1 -1
  84. package/dist/section/index.d.ts +3 -0
  85. package/dist/section/index.js +1 -1
  86. package/dist/steps/index.d.ts +33 -0
  87. package/dist/steps/index.js +10 -0
  88. package/dist/steps/index.js.map +1 -0
  89. package/dist/tag-strip/index.d.ts +26 -0
  90. package/dist/tag-strip/index.js +9 -0
  91. package/dist/tag-strip/index.js.map +1 -0
  92. package/dist/tooltip/index.d.ts +18 -6
  93. package/dist/tooltip/index.js +1 -1
  94. package/package.json +14 -2
  95. package/dist/chunk-5EBWMPJS.js.map +0 -1
  96. package/dist/chunk-76AVBQUA.js.map +0 -1
  97. package/dist/chunk-7NLZND6Q.js.map +0 -1
  98. package/dist/chunk-ALI26WOB.js.map +0 -1
  99. package/dist/chunk-BMHMNXIA.js.map +0 -1
  100. package/dist/chunk-FLY7TNRT.js.map +0 -1
  101. package/dist/chunk-JKBWZLG4.js.map +0 -1
  102. package/dist/chunk-JQY2G4QK.js.map +0 -1
  103. package/dist/chunk-LEXZKGQX.js.map +0 -1
  104. package/dist/chunk-R5G6KFTJ.js.map +0 -1
  105. package/dist/chunk-SMLR736E.js.map +0 -1
  106. package/dist/chunk-VWS53WY4.js.map +0 -1
  107. package/dist/chunk-XCA3XFFG.js +0 -74
  108. package/dist/chunk-XCA3XFFG.js.map +0 -1
  109. package/dist/chunk-XWB4CKDU.js.map +0 -1
  110. package/dist/chunk-YQ42EBK5.js.map +0 -1
  111. package/dist/chunk-ZN4LIKVG.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  IconButton
3
- } from "../chunk-YQ42EBK5.js";
3
+ } from "../chunk-PHEGSCOM.js";
4
4
  import "../chunk-KMU6ABQF.js";
5
5
  import "../chunk-EUXUH3YW.js";
6
6
  export {
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { DateTile } from './date-tile/index.js';
10
10
  export { Dropdown, DropdownToggleEventDetail } from './dropdown/index.js';
11
11
  export { FeatureSplit, FeatureSplitActionEventDetail, FeatureSplitImagePosition, FeatureSplitItem } from './feature-split/index.js';
12
12
  export { FeatureItem, FeatureItemData, FeaturesSection } from './features-section/index.js';
13
+ export { Flow, FlowNode } from './flow/index.js';
13
14
  export { Footer, FooterColumn, FooterLink, FooterLinkEventDetail, FooterSocialLink } from './footer/index.js';
14
15
  export { Header, LanguageChangedEventDetail } from './header/index.js';
15
16
  export { Hero, HeroActionEventDetail } from './hero/index.js';
@@ -26,6 +27,8 @@ export { Section } from './section/index.js';
26
27
  export { SegmentChangeEventDetail, SegmentedControl, SegmentedOption } from './segmented-control/index.js';
27
28
  export { Select, SelectChangedEventDetail, SelectOption } from './select/index.js';
28
29
  export { StatItem, Stats } from './stats/index.js';
30
+ export { StepItem, Steps } from './steps/index.js';
31
+ export { TagStrip } from './tag-strip/index.js';
29
32
  export { TestimonialItem, TestimonialMetric, Testimonials, TestimonialsLinkEventDetail } from './testimonials/index.js';
30
33
  export { Tooltip } from './tooltip/index.js';
31
34
  import 'lit';
package/dist/index.js CHANGED
@@ -1,15 +1,27 @@
1
+ import {
2
+ Stats
3
+ } from "./chunk-YVTFQHVY.js";
4
+ import {
5
+ Steps
6
+ } from "./chunk-ZRC5BVDX.js";
7
+ import {
8
+ TagStrip
9
+ } from "./chunk-5MY6OWMK.js";
1
10
  import {
2
11
  Testimonials
3
12
  } from "./chunk-DH53HZPB.js";
4
13
  import {
5
14
  Tooltip
6
- } from "./chunk-XCA3XFFG.js";
15
+ } from "./chunk-FML6AG2V.js";
16
+ import {
17
+ MenuItem
18
+ } from "./chunk-2FJDNJ7R.js";
7
19
  import {
8
20
  PromoBanner
9
- } from "./chunk-VWS53WY4.js";
21
+ } from "./chunk-HMUZON6I.js";
10
22
  import {
11
23
  Section
12
- } from "./chunk-7NLZND6Q.js";
24
+ } from "./chunk-5F5PTVWR.js";
13
25
  import {
14
26
  SegmentedControl
15
27
  } from "./chunk-MG2VTZA4.js";
@@ -17,14 +29,14 @@ import {
17
29
  Select
18
30
  } from "./chunk-BLQV2YMO.js";
19
31
  import {
20
- Stats
21
- } from "./chunk-YVTFQHVY.js";
32
+ Hero
33
+ } from "./chunk-SQ3OZO32.js";
22
34
  import {
23
35
  IconButton
24
- } from "./chunk-YQ42EBK5.js";
36
+ } from "./chunk-PHEGSCOM.js";
25
37
  import {
26
38
  ItemsAccordion
27
- } from "./chunk-ALI26WOB.js";
39
+ } from "./chunk-EE6PAN3B.js";
28
40
  import {
29
41
  KpiCard
30
42
  } from "./chunk-6D6ROU7X.js";
@@ -32,16 +44,13 @@ import {
32
44
  MegaMenu,
33
45
  MegaMenuColumn,
34
46
  MegaMenuFeature
35
- } from "./chunk-G3CF7MBO.js";
47
+ } from "./chunk-J6EO4R73.js";
36
48
  import {
37
49
  MenuGrid
38
- } from "./chunk-SMLR736E.js";
50
+ } from "./chunk-OELI3IWC.js";
39
51
  import {
40
52
  MenuGridItem
41
- } from "./chunk-JQY2G4QK.js";
42
- import {
43
- MenuItem
44
- } from "./chunk-R5G6KFTJ.js";
53
+ } from "./chunk-OLA35A2O.js";
45
54
  import {
46
55
  CookieConsent
47
56
  } from "./chunk-MSSH3HFK.js";
@@ -50,36 +59,36 @@ import {
50
59
  } from "./chunk-INMSEYT6.js";
51
60
  import {
52
61
  Dropdown
53
- } from "./chunk-LEXZKGQX.js";
62
+ } from "./chunk-2DXHPEB5.js";
54
63
  import {
55
64
  FeatureSplit
56
65
  } from "./chunk-WT4OATGP.js";
57
66
  import {
58
67
  FeatureItem,
59
68
  FeaturesSection
60
- } from "./chunk-FLY7TNRT.js";
69
+ } from "./chunk-7NIWQWTA.js";
70
+ import {
71
+ Flow
72
+ } from "./chunk-O4FCRKDX.js";
61
73
  import {
62
74
  Footer
63
75
  } from "./chunk-GJO3RGOB.js";
64
76
  import {
65
77
  Header
66
- } from "./chunk-XWB4CKDU.js";
78
+ } from "./chunk-XUGEXERO.js";
67
79
  import "./chunk-WTD2YIAA.js";
68
- import {
69
- Hero
70
- } from "./chunk-JKBWZLG4.js";
71
80
  import {
72
81
  AttentionPanel
73
82
  } from "./chunk-35TX3AOA.js";
74
83
  import {
75
84
  BarChart
76
85
  } from "./chunk-AG2COC64.js";
77
- import {
78
- BentoGrid
79
- } from "./chunk-76AVBQUA.js";
80
86
  import {
81
87
  Card
82
- } from "./chunk-ZN4LIKVG.js";
88
+ } from "./chunk-3OEEOBHB.js";
89
+ import {
90
+ BentoGrid
91
+ } from "./chunk-5C6C6K5U.js";
83
92
  import {
84
93
  Carousel
85
94
  } from "./chunk-EMCQBT3S.js";
@@ -88,10 +97,11 @@ import {
88
97
  } from "./chunk-AKJQ345O.js";
89
98
  import {
90
99
  ContentBlock
91
- } from "./chunk-BMHMNXIA.js";
100
+ } from "./chunk-4AFOKKSU.js";
92
101
  import {
93
102
  Markdown
94
- } from "./chunk-5EBWMPJS.js";
103
+ } from "./chunk-QLA4BH2B.js";
104
+ import "./chunk-UAIUBPDN.js";
95
105
  import "./chunk-FZ36KL73.js";
96
106
  import "./chunk-KMU6ABQF.js";
97
107
  import "./chunk-EUXUH3YW.js";
@@ -109,6 +119,7 @@ export {
109
119
  FeatureItem,
110
120
  FeatureSplit,
111
121
  FeaturesSection,
122
+ Flow,
112
123
  Footer,
113
124
  Header,
114
125
  Hero,
@@ -127,6 +138,8 @@ export {
127
138
  SegmentedControl,
128
139
  Select,
129
140
  Stats,
141
+ Steps,
142
+ TagStrip,
130
143
  Testimonials,
131
144
  Tooltip
132
145
  };
@@ -4,10 +4,12 @@ import { LitElement } from 'lit';
4
4
  interface AccordionItem {
5
5
  id: string;
6
6
  title: string;
7
+ /** Markdown (plain text works too). */
7
8
  content: string;
8
9
  }
9
10
  /**
10
11
  * A vertical list of collapsible title/content rows; one open at a time unless `allow-multiple`.
12
+ * Each row's `content` is Markdown, sanitized. `open-first` starts with the first row open.
11
13
  *
12
14
  * @cssprop --st-items-accordion-padding - Overrides the block's padding.
13
15
  */
@@ -17,7 +19,10 @@ declare class ItemsAccordion extends LitElement {
17
19
  subtitle: string;
18
20
  items: AccordionItem[];
19
21
  allowMultiple: boolean;
22
+ /** Starts with the first row open. Applies when `items` or this flag changes while nothing is open. */
23
+ openFirst: boolean;
20
24
  private openIds;
25
+ protected willUpdate(changed: Map<string, unknown>): void;
21
26
  private toggle;
22
27
  render(): lit.TemplateResult<1>;
23
28
  }
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  ItemsAccordion
3
- } from "../chunk-ALI26WOB.js";
3
+ } from "../chunk-EE6PAN3B.js";
4
+ import "../chunk-UAIUBPDN.js";
4
5
  import "../chunk-FZ36KL73.js";
5
6
  import "../chunk-KMU6ABQF.js";
6
7
  import "../chunk-EUXUH3YW.js";
@@ -3,8 +3,7 @@ import { LitElement, nothing } from 'lit';
3
3
 
4
4
  /**
5
5
  * Renders Markdown (GFM, single newlines become `<br>`) from either an inline `content` string or
6
- * a `src` URL it fetches. Ports `SankhyaUI`'s `useMarkdown` hook + `react-markdown` (remark-gfm,
7
- * remark-breaks); output is sanitized with DOMPurify. `src` wins over `content` when both are set.
6
+ * a `src` URL it fetches. Output is sanitized with DOMPurify. `src` wins over `content` when both are set.
8
7
  * While a fetch is pending it shows "Loading content..."; on failure "Error loading content." and
9
8
  * a `markdown-error` event (detail: `{ error }`).
10
9
  *
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  Markdown
3
- } from "../chunk-5EBWMPJS.js";
3
+ } from "../chunk-QLA4BH2B.js";
4
+ import "../chunk-UAIUBPDN.js";
4
5
  import "../chunk-KMU6ABQF.js";
5
6
  import "../chunk-EUXUH3YW.js";
6
7
  export {
@@ -113,8 +113,8 @@ declare class MegaMenuFeature extends LitElement {
113
113
  slotAssignment?: SlotAssignmentMode;
114
114
  };
115
115
  static styles: lit.CSSResult;
116
- /** `story` (default) or `overlay` — see the element description. */
117
- variant: 'story' | 'overlay';
116
+ /** `story` (default), `overlay` (dark, over an image or gradient) or `tip` (light blue, for a hint). */
117
+ variant: 'story' | 'overlay' | 'tip';
118
118
  title: string;
119
119
  description: string;
120
120
  /** Small label above the title, e.g. "New" or "Report". */
@@ -2,7 +2,7 @@ import {
2
2
  MegaMenu,
3
3
  MegaMenuColumn,
4
4
  MegaMenuFeature
5
- } from "../chunk-G3CF7MBO.js";
5
+ } from "../chunk-J6EO4R73.js";
6
6
  import "../chunk-WTD2YIAA.js";
7
7
  import "../chunk-KMU6ABQF.js";
8
8
  import "../chunk-EUXUH3YW.js";
@@ -4,9 +4,8 @@ import { LitElement } from 'lit';
4
4
  /**
5
5
  * A responsive grid of `st-menu-grid-item`s — the "rich" nav-menu layout (icon + title +
6
6
  * description per entry, arranged in columns), typically slotted into `st-dropdown`'s default
7
- * slot. A 1:1 port of `SankhyaUI`'s React `MenuGrid` (`SankhyaCMS/SankhyaUI/src/components/Menu`):
8
- * same markup (`.menu-grid-container` > `.menu-grid.columns-N`), gap and breakpoints (768px: 2–4
9
- * columns → 2; 480px: everything → 1; a 1-column grid stays 1).
7
+ * slot. Markup is `.menu-grid-container` > `.menu-grid.columns-N`; breakpoints: at 768px, 2–4
8
+ * columns become 2; at 480px, everything becomes 1 (a 1-column grid stays 1).
10
9
  */
11
10
  declare class MenuGrid extends LitElement {
12
11
  static styles: lit.CSSResult;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MenuGrid
3
- } from "../chunk-SMLR736E.js";
3
+ } from "../chunk-OELI3IWC.js";
4
4
  import "../chunk-KMU6ABQF.js";
5
5
  import "../chunk-EUXUH3YW.js";
6
6
  export {
@@ -3,16 +3,14 @@ import { LitElement } from 'lit';
3
3
 
4
4
  /**
5
5
  * One entry in an `st-menu-grid` — icon (via `slot="icon"`) + title on one line, an optional
6
- * description below, and an optional corner badge ("New", "Popular", ...). A 1:1 port of
7
- * `SankhyaUI`'s React `MenuGridItem` (`SankhyaCMS/SankhyaUI/src/components/Menu`): same markup and
8
- * CSS, with its `motion` effects redone in CSS — fades up the first time it scrolls into view,
9
- * scales to 1.02 on hover / 0.98 while pressed, the icon tilts on hover, the badge pops in.
10
- * Colors come from the suite theme rather than per-item utility classes.
6
+ * description below, and an optional corner badge ("New", "Popular", ...). Effects are CSS:
7
+ * fades up the first time it scrolls into view, scales to 1.02 on hover / 0.98 while pressed, the
8
+ * icon tilts on hover, the badge pops in. Colors come from the suite theme rather than per-item
9
+ * utility classes.
11
10
  *
12
- * An `http(s)` `href` opens in a new tab, like the source. Any other `href` fires a *cancelable*
11
+ * An `http(s)` `href` opens in a new tab. Any other `href` fires a *cancelable*
13
12
  * `menu-grid-item-select` event (detail: `{ href }`) first: a host doing client-side routing calls
14
- * `event.preventDefault()` on it, which also cancels the anchor's own navigation (the source used
15
- * react-router's `Link` here; the suite apps have no router).
13
+ * `event.preventDefault()` on it, which also cancels the anchor's own navigation.
16
14
  */
17
15
  declare class MenuGridItem extends LitElement {
18
16
  /** `focus()` on the element focuses its link, so `st-dropdown` can arrow-key between items. */
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MenuGridItem
3
- } from "../chunk-JQY2G4QK.js";
3
+ } from "../chunk-OLA35A2O.js";
4
4
  import "../chunk-KMU6ABQF.js";
5
5
  import "../chunk-EUXUH3YW.js";
6
6
  export {
@@ -3,15 +3,13 @@ import { LitElement } from 'lit';
3
3
 
4
4
  /**
5
5
  * A single flat nav row — icon (`slot="icon"`) + title + badge on one line, an optional
6
- * description below — as opposed to `st-menu-grid-item`'s card for a multi-column grid. A 1:1
7
- * port of `SankhyaUI`'s React `MenuItem` (`SankhyaCMS/SankhyaUI/src/components/Menu`): same
8
- * markup and CSS, with its `motion` effects redone in CSS — nudges right and scales to 1.01 on
9
- * hover / 0.99 while pressed, the icon tilts on hover, the badge pops in, the description fades
10
- * in. Colors come from the suite theme rather than per-item utility classes.
6
+ * description below — as opposed to `st-menu-grid-item`'s card for a multi-column grid. Effects
7
+ * are CSS: nudges right and scales to 1.01 on hover / 0.99 while pressed, the icon tilts on hover,
8
+ * the badge pops in, the description fades in. Colors come from the suite theme rather than
9
+ * per-item utility classes.
11
10
  *
12
11
  * Renders a real `<a href>` but fires a *cancelable* `menu-item-select` event (detail: `{ href }`)
13
- * before navigating — a host doing client-side routing calls `event.preventDefault()` on it (the
14
- * source used react-router's `Link` here; the suite apps have no router).
12
+ * before navigating — a host doing client-side routing calls `event.preventDefault()` on it.
15
13
  *
16
14
  * @slot icon - The row's icon, sized to `icon-size` (16px, or 14px when `compact`).
17
15
  * @cssprop --st-menu-item-icon-size - Width and height of the slotted icon; `icon-size` sets it.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MenuItem
3
- } from "../chunk-R5G6KFTJ.js";
3
+ } from "../chunk-2FJDNJ7R.js";
4
4
  import "../chunk-WTD2YIAA.js";
5
5
  import "../chunk-KMU6ABQF.js";
6
6
  import "../chunk-EUXUH3YW.js";
@@ -2,12 +2,16 @@ import * as lit from 'lit';
2
2
  import { LitElement } from 'lit';
3
3
 
4
4
  /**
5
- * Rounded call-to-action banner (title, subtitle, one outlined button) on a dark panel or a
6
- * background image. Port of `SankhyaUI`'s React `PromoBanner`; the button fires an `action` event
7
- * (detail `{ href }`, empty unless set) in place of `onAction`.
5
+ * Rounded call-to-action banner (title, subtitle, one or two outlined buttons) on a dark panel or a
6
+ * background image. The buttons fire an `action` event
7
+ * (detail `{ href }`, empty unless set; the secondary button adds `kind: 'secondary'`).
8
+ * `onAction`. `variant="accent"` fills the banner with the brand colour.
8
9
  *
10
+ * @fires action - Detail `{ href, kind? }`. `kind` is `secondary` for the second button only.
9
11
  * @cssprop --st-promo-banner-margin - Overrides the banner's margin.
10
12
  * @cssprop --st-promo-banner-padding - Overrides the banner's padding.
13
+ * @csspart action - The primary button.
14
+ * @csspart secondary-action - The second button.
11
15
  */
12
16
  declare class PromoBanner extends LitElement {
13
17
  static styles: lit.CSSResult;
@@ -16,9 +20,16 @@ declare class PromoBanner extends LitElement {
16
20
  actionLabel: string;
17
21
  href: string;
18
22
  imageSrc: string;
23
+ /** Label of a second, outlined button next to the first. */
24
+ secondaryActionLabel: string;
25
+ /** Target of the second button, sent in the `action` event detail. */
26
+ secondaryHref: string;
27
+ /** `default` is the dark panel; `accent` fills the banner with the brand colour and makes the first button white. */
28
+ variant: 'default' | 'accent';
19
29
  inverted: boolean;
20
30
  protected willUpdate(): void;
21
31
  private onAction;
32
+ private onSecondaryAction;
22
33
  render(): lit.TemplateResult<1>;
23
34
  }
24
35
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PromoBanner
3
- } from "../chunk-VWS53WY4.js";
3
+ } from "../chunk-HMUZON6I.js";
4
4
  import "../chunk-FZ36KL73.js";
5
5
  import "../chunk-KMU6ABQF.js";
6
6
  import "../chunk-EUXUH3YW.js";
@@ -47,6 +47,7 @@ declare const componentTags: {
47
47
  readonly FeatureItem: "st-feature-item";
48
48
  readonly FeatureSplit: "st-feature-split";
49
49
  readonly FeaturesSection: "st-features-section";
50
+ readonly Flow: "st-flow";
50
51
  readonly Footer: "st-footer";
51
52
  readonly Header: "st-header";
52
53
  readonly Hero: "st-hero";
@@ -64,6 +65,8 @@ declare const componentTags: {
64
65
  readonly Section: "st-section";
65
66
  readonly Select: "st-select";
66
67
  readonly Stats: "st-stats";
68
+ readonly Steps: "st-steps";
69
+ readonly TagStrip: "st-tag-strip";
67
70
  readonly Testimonials: "st-testimonials";
68
71
  };
69
72
  /** Every `type` the base set knows. */
@@ -28,6 +28,7 @@ var componentTags = {
28
28
  FeatureItem: "st-feature-item",
29
29
  FeatureSplit: "st-feature-split",
30
30
  FeaturesSection: "st-features-section",
31
+ Flow: "st-flow",
31
32
  Footer: "st-footer",
32
33
  Header: "st-header",
33
34
  Hero: "st-hero",
@@ -45,6 +46,8 @@ var componentTags = {
45
46
  Section: "st-section",
46
47
  Select: "st-select",
47
48
  Stats: "st-stats",
49
+ Steps: "st-steps",
50
+ TagStrip: "st-tag-strip",
48
51
  Testimonials: "st-testimonials"
49
52
  };
50
53
  function isBaseComponentType(type) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/node.ts","../../src/schema/nodeUtils.ts","../../src/schema/components.ts","../../src/schema/validate.ts"],"sourcesContent":["/** Dependency-free node types, safe to import from the content API layer. */\n\n/** Action reference in JSON, resolved against the `handlers` prop of `DynamicRenderer`. */\nexport type ActionRef = `@action:${string}`;\n\n/** Keys the renderer owns; everything else on a node is passed to the component as a prop. */\nexport interface NodeEnvelope<TNode> {\n id?: string;\n /** Named slot in the parent (e.g. Header: \"utility\"). Omit for the default slot. */\n slot?: string;\n /** Editor-only label, never passed to the component. */\n label?: string;\n children?: TNode[];\n}\n\n/**\n * A node as it appears in JSON: flat, no `data` wrapper.\n * `{ \"type\": \"Hero\", \"id\": \"home-hero\", \"title\": \"...\", \"children\": [...] }`\n */\nexport interface ComponentNode extends NodeEnvelope<ComponentNode> {\n type: string;\n [prop: string]: unknown;\n}\n\n/** A page is a list of nodes. */\nexport type PageContent = ComponentNode[];\n\nexport function isComponentNode(value: unknown): value is ComponentNode {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n typeof (value as { type?: unknown }).type === 'string' &&\n (value as { type: string }).type.trim().length > 0\n );\n}\n","import type { ComponentNode } from './node';\n\n/**\n * Returns a copy of `nodes` where the node with the given `id` has `props` merged in.\n * Use it to inject runtime state (e.g. the selected language) into fetched JSON without mutating it.\n */\nexport function patchNodeById(nodes: ComponentNode[], id: string, props: Record<string, unknown>): ComponentNode[] {\n return nodes.map(node => {\n const patched = node.id === id ? { ...node, ...props } : node;\n return patched.children\n ? { ...patched, children: patchNodeById(patched.children, id, props) }\n : patched;\n });\n}\n","/**\n * The JSON `type` of every base component, and the Lit element that renders it.\n * This is the contract page JSON is written against — renderers (React, or any other binding)\n * map each `type` to their own component for that element.\n */\nexport const componentTags = {\n BentoGrid: 'st-bento-grid',\n Card: 'st-card',\n AttentionPanel: 'st-attention-panel',\n BarChart: 'st-bar-chart',\n Carousel: 'st-carousel',\n Chip: 'st-chip',\n ContentBlock: 'st-content-block',\n CookieConsent: 'st-cookie-consent',\n DateTile: 'st-date-tile',\n Dropdown: 'st-dropdown',\n FeatureItem: 'st-feature-item',\n FeatureSplit: 'st-feature-split',\n FeaturesSection: 'st-features-section',\n Footer: 'st-footer',\n Header: 'st-header',\n Hero: 'st-hero',\n IconButton: 'st-icon-button',\n ItemsAccordion: 'st-items-accordion',\n KpiCard: 'st-kpi-card',\n MegaMenu: 'st-mega-menu',\n MegaMenuColumn: 'st-mega-menu-column',\n MegaMenuFeature: 'st-mega-menu-feature',\n MenuGrid: 'st-menu-grid',\n MenuGridItem: 'st-menu-grid-item',\n MenuItem: 'st-menu-item',\n PromoBanner: 'st-promo-banner',\n SegmentedControl: 'st-segmented-control',\n Section: 'st-section',\n Select: 'st-select',\n Stats: 'st-stats',\n Testimonials: 'st-testimonials'\n} as const;\n\n/** Every `type` the base set knows. */\nexport type ComponentType = keyof typeof componentTags;\n\nexport function isBaseComponentType(type: string): type is ComponentType {\n return Object.hasOwn(componentTags, type);\n}\n","import { isBaseComponentType } from './components';\nimport type { ComponentNode } from './node';\n\n/** Keys from the pre-flat schema; their presence means the JSON still needs `scripts/migrate-json.mjs`. */\nconst LEGACY_KEYS = ['data', 'embeddedView', 'data-position', 'image', 'contentUrl'] as const;\n\n/**\n * Returns the schema violations for a node and its descendants (empty when valid).\n * `isKnownType` defaults to the base component set; pass a wider predicate when a renderer also\n * registers custom components.\n */\nexport function validateNode(node: unknown, where = 'node', isKnownType: (type: string) => boolean = isBaseComponentType): string[] {\n if (typeof node !== 'object' || node === null || Array.isArray(node)) return [`${where}: node must be an object`];\n const n = node as ComponentNode;\n const found: string[] = [];\n if (typeof n.type !== 'string' || !isKnownType(n.type)) found.push(`${where}: unknown type \"${String(n.type)}\"`);\n for (const legacy of LEGACY_KEYS) {\n if (legacy in n) found.push(`${where}: legacy key \"${legacy}\"`);\n }\n if (Array.isArray(n.items) && n.items.some(item => typeof item === 'object' && item !== null && 'type' in item)) {\n found.push(`${where}: \"items\" must hold plain data; nest components under \"children\"`);\n }\n if (n.children !== undefined) {\n if (!Array.isArray(n.children)) found.push(`${where}: children must be an array`);\n else n.children.forEach((child, i) => found.push(...validateNode(child, `${where}.children[${i}]`, isKnownType)));\n }\n return found;\n}\n\n/** Validates a page: a node or a list of nodes. */\nexport function validatePage(page: unknown, isKnownType?: (type: string) => boolean): string[] {\n const nodes = Array.isArray(page) ? page : [page];\n return nodes.flatMap((node, i) => validateNode(node, `[${i}]`, isKnownType));\n}\n"],"mappings":";;;AA2BO,SAAS,gBAAgB,OAAwC;AACpE,SACI,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,OAAQ,MAA6B,SAAS,YAC7C,MAA2B,KAAK,KAAK,EAAE,SAAS;AAEzD;;;AC7BO,SAAS,cAAc,OAAwB,IAAY,OAAiD;AAC/G,SAAO,MAAM,IAAI,UAAQ;AACrB,UAAM,UAAU,KAAK,OAAO,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,IAAI;AACzD,WAAO,QAAQ,WACT,EAAE,GAAG,SAAS,UAAU,cAAc,QAAQ,UAAU,IAAI,KAAK,EAAE,IACnE;AAAA,EACV,CAAC;AACL;;;ACRO,IAAM,gBAAgB;AAAA,EACzB,WAAW;AAAA,EACX,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM;AAAA,EACN,cAAc;AAAA,EACd,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,cAAc;AAAA,EACd,UAAU;AAAA,EACV,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAClB;AAKO,SAAS,oBAAoB,MAAqC;AACrE,SAAO,OAAO,OAAO,eAAe,IAAI;AAC5C;;;ACxCA,IAAM,cAAc,CAAC,QAAQ,gBAAgB,iBAAiB,SAAS,YAAY;AAO5E,SAAS,aAAa,MAAe,QAAQ,QAAQ,cAAyC,qBAA+B;AAChI,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI,EAAG,QAAO,CAAC,GAAG,KAAK,0BAA0B;AAChH,QAAM,IAAI;AACV,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO,EAAE,SAAS,YAAY,CAAC,YAAY,EAAE,IAAI,EAAG,OAAM,KAAK,GAAG,KAAK,mBAAmB,OAAO,EAAE,IAAI,CAAC,GAAG;AAC/G,aAAW,UAAU,aAAa;AAC9B,QAAI,UAAU,EAAG,OAAM,KAAK,GAAG,KAAK,iBAAiB,MAAM,GAAG;AAAA,EAClE;AACA,MAAI,MAAM,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,UAAQ,OAAO,SAAS,YAAY,SAAS,QAAQ,UAAU,IAAI,GAAG;AAC7G,UAAM,KAAK,GAAG,KAAK,kEAAkE;AAAA,EACzF;AACA,MAAI,EAAE,aAAa,QAAW;AAC1B,QAAI,CAAC,MAAM,QAAQ,EAAE,QAAQ,EAAG,OAAM,KAAK,GAAG,KAAK,6BAA6B;AAAA,QAC3E,GAAE,SAAS,QAAQ,CAAC,OAAO,MAAM,MAAM,KAAK,GAAG,aAAa,OAAO,GAAG,KAAK,aAAa,CAAC,KAAK,WAAW,CAAC,CAAC;AAAA,EACpH;AACA,SAAO;AACX;AAGO,SAAS,aAAa,MAAe,aAAmD;AAC3F,QAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAChD,SAAO,MAAM,QAAQ,CAAC,MAAM,MAAM,aAAa,MAAM,IAAI,CAAC,KAAK,WAAW,CAAC;AAC/E;","names":[]}
1
+ {"version":3,"sources":["../../src/schema/node.ts","../../src/schema/nodeUtils.ts","../../src/schema/components.ts","../../src/schema/validate.ts"],"sourcesContent":["/** Dependency-free node types, safe to import from the content API layer. */\n\n/** Action reference in JSON, resolved against the `handlers` prop of `DynamicRenderer`. */\nexport type ActionRef = `@action:${string}`;\n\n/** Keys the renderer owns; everything else on a node is passed to the component as a prop. */\nexport interface NodeEnvelope<TNode> {\n id?: string;\n /** Named slot in the parent (e.g. Header: \"utility\"). Omit for the default slot. */\n slot?: string;\n /** Editor-only label, never passed to the component. */\n label?: string;\n children?: TNode[];\n}\n\n/**\n * A node as it appears in JSON: flat, no `data` wrapper.\n * `{ \"type\": \"Hero\", \"id\": \"home-hero\", \"title\": \"...\", \"children\": [...] }`\n */\nexport interface ComponentNode extends NodeEnvelope<ComponentNode> {\n type: string;\n [prop: string]: unknown;\n}\n\n/** A page is a list of nodes. */\nexport type PageContent = ComponentNode[];\n\nexport function isComponentNode(value: unknown): value is ComponentNode {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n typeof (value as { type?: unknown }).type === 'string' &&\n (value as { type: string }).type.trim().length > 0\n );\n}\n","import type { ComponentNode } from './node';\n\n/**\n * Returns a copy of `nodes` where the node with the given `id` has `props` merged in.\n * Use it to inject runtime state (e.g. the selected language) into fetched JSON without mutating it.\n */\nexport function patchNodeById(nodes: ComponentNode[], id: string, props: Record<string, unknown>): ComponentNode[] {\n return nodes.map(node => {\n const patched = node.id === id ? { ...node, ...props } : node;\n return patched.children\n ? { ...patched, children: patchNodeById(patched.children, id, props) }\n : patched;\n });\n}\n","/**\n * The JSON `type` of every base component, and the Lit element that renders it.\n * This is the contract page JSON is written against — renderers (React, or any other binding)\n * map each `type` to their own component for that element.\n */\nexport const componentTags = {\n BentoGrid: 'st-bento-grid',\n Card: 'st-card',\n AttentionPanel: 'st-attention-panel',\n BarChart: 'st-bar-chart',\n Carousel: 'st-carousel',\n Chip: 'st-chip',\n ContentBlock: 'st-content-block',\n CookieConsent: 'st-cookie-consent',\n DateTile: 'st-date-tile',\n Dropdown: 'st-dropdown',\n FeatureItem: 'st-feature-item',\n FeatureSplit: 'st-feature-split',\n FeaturesSection: 'st-features-section',\n Flow: 'st-flow',\n Footer: 'st-footer',\n Header: 'st-header',\n Hero: 'st-hero',\n IconButton: 'st-icon-button',\n ItemsAccordion: 'st-items-accordion',\n KpiCard: 'st-kpi-card',\n MegaMenu: 'st-mega-menu',\n MegaMenuColumn: 'st-mega-menu-column',\n MegaMenuFeature: 'st-mega-menu-feature',\n MenuGrid: 'st-menu-grid',\n MenuGridItem: 'st-menu-grid-item',\n MenuItem: 'st-menu-item',\n PromoBanner: 'st-promo-banner',\n SegmentedControl: 'st-segmented-control',\n Section: 'st-section',\n Select: 'st-select',\n Stats: 'st-stats',\n Steps: 'st-steps',\n TagStrip: 'st-tag-strip',\n Testimonials: 'st-testimonials'\n} as const;\n\n/** Every `type` the base set knows. */\nexport type ComponentType = keyof typeof componentTags;\n\nexport function isBaseComponentType(type: string): type is ComponentType {\n return Object.hasOwn(componentTags, type);\n}\n","import { isBaseComponentType } from './components';\nimport type { ComponentNode } from './node';\n\n/** Keys from the pre-flat schema; their presence means the JSON still needs `scripts/migrate-json.mjs`. */\nconst LEGACY_KEYS = ['data', 'embeddedView', 'data-position', 'image', 'contentUrl'] as const;\n\n/**\n * Returns the schema violations for a node and its descendants (empty when valid).\n * `isKnownType` defaults to the base component set; pass a wider predicate when a renderer also\n * registers custom components.\n */\nexport function validateNode(node: unknown, where = 'node', isKnownType: (type: string) => boolean = isBaseComponentType): string[] {\n if (typeof node !== 'object' || node === null || Array.isArray(node)) return [`${where}: node must be an object`];\n const n = node as ComponentNode;\n const found: string[] = [];\n if (typeof n.type !== 'string' || !isKnownType(n.type)) found.push(`${where}: unknown type \"${String(n.type)}\"`);\n for (const legacy of LEGACY_KEYS) {\n if (legacy in n) found.push(`${where}: legacy key \"${legacy}\"`);\n }\n if (Array.isArray(n.items) && n.items.some(item => typeof item === 'object' && item !== null && 'type' in item)) {\n found.push(`${where}: \"items\" must hold plain data; nest components under \"children\"`);\n }\n if (n.children !== undefined) {\n if (!Array.isArray(n.children)) found.push(`${where}: children must be an array`);\n else n.children.forEach((child, i) => found.push(...validateNode(child, `${where}.children[${i}]`, isKnownType)));\n }\n return found;\n}\n\n/** Validates a page: a node or a list of nodes. */\nexport function validatePage(page: unknown, isKnownType?: (type: string) => boolean): string[] {\n const nodes = Array.isArray(page) ? page : [page];\n return nodes.flatMap((node, i) => validateNode(node, `[${i}]`, isKnownType));\n}\n"],"mappings":";;;AA2BO,SAAS,gBAAgB,OAAwC;AACpE,SACI,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,OAAQ,MAA6B,SAAS,YAC7C,MAA2B,KAAK,KAAK,EAAE,SAAS;AAEzD;;;AC7BO,SAAS,cAAc,OAAwB,IAAY,OAAiD;AAC/G,SAAO,MAAM,IAAI,UAAQ;AACrB,UAAM,UAAU,KAAK,OAAO,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,IAAI;AACzD,WAAO,QAAQ,WACT,EAAE,GAAG,SAAS,UAAU,cAAc,QAAQ,UAAU,IAAI,KAAK,EAAE,IACnE;AAAA,EACV,CAAC;AACL;;;ACRO,IAAM,gBAAgB;AAAA,EACzB,WAAW;AAAA,EACX,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM;AAAA,EACN,cAAc;AAAA,EACd,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,cAAc;AAAA,EACd,UAAU;AAAA,EACV,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAClB;AAKO,SAAS,oBAAoB,MAAqC;AACrE,SAAO,OAAO,OAAO,eAAe,IAAI;AAC5C;;;AC3CA,IAAM,cAAc,CAAC,QAAQ,gBAAgB,iBAAiB,SAAS,YAAY;AAO5E,SAAS,aAAa,MAAe,QAAQ,QAAQ,cAAyC,qBAA+B;AAChI,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI,EAAG,QAAO,CAAC,GAAG,KAAK,0BAA0B;AAChH,QAAM,IAAI;AACV,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO,EAAE,SAAS,YAAY,CAAC,YAAY,EAAE,IAAI,EAAG,OAAM,KAAK,GAAG,KAAK,mBAAmB,OAAO,EAAE,IAAI,CAAC,GAAG;AAC/G,aAAW,UAAU,aAAa;AAC9B,QAAI,UAAU,EAAG,OAAM,KAAK,GAAG,KAAK,iBAAiB,MAAM,GAAG;AAAA,EAClE;AACA,MAAI,MAAM,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,UAAQ,OAAO,SAAS,YAAY,SAAS,QAAQ,UAAU,IAAI,GAAG;AAC7G,UAAM,KAAK,GAAG,KAAK,kEAAkE;AAAA,EACzF;AACA,MAAI,EAAE,aAAa,QAAW;AAC1B,QAAI,CAAC,MAAM,QAAQ,EAAE,QAAQ,EAAG,OAAM,KAAK,GAAG,KAAK,6BAA6B;AAAA,QAC3E,GAAE,SAAS,QAAQ,CAAC,OAAO,MAAM,MAAM,KAAK,GAAG,aAAa,OAAO,GAAG,KAAK,aAAa,CAAC,KAAK,WAAW,CAAC,CAAC;AAAA,EACpH;AACA,SAAO;AACX;AAGO,SAAS,aAAa,MAAe,aAAmD;AAC3F,QAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAChD,SAAO,MAAM,QAAQ,CAAC,MAAM,MAAM,aAAa,MAAM,IAAI,CAAC,KAAK,WAAW,CAAC;AAC/E;","names":[]}
@@ -12,6 +12,7 @@ import { LitElement } from 'lit';
12
12
  * @cssprop --st-section-padding-inline - Overrides the left/right padding (not with `width="full"`).
13
13
  * @csspart inner - The width-limited content box.
14
14
  * @csspart header - The heading block.
15
+ * @csspart content - The wrapper around the slot (the grid when `columns` is 2).
15
16
  */
16
17
  declare class Section extends LitElement {
17
18
  static styles: lit.CSSResult;
@@ -26,6 +27,8 @@ declare class Section extends LitElement {
26
27
  spacingBelow: 'none' | 's' | 'm' | 'l' | 'xl' | 'xxl';
27
28
  /** `contained` (default, the page container width), `narrow` (reading width) or `full` (edge to edge). */
28
29
  width: 'contained' | 'narrow' | 'full';
30
+ /** Columns for the slotted children: `1` (default, stacked) or `2` (two equal columns, stacked again below 720px). */
31
+ columns: 1 | 2;
29
32
  /** Alignment of the heading. */
30
33
  textAlignment: 'left' | 'center';
31
34
  render(): lit.TemplateResult<1>;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Section
3
- } from "../chunk-7NLZND6Q.js";
3
+ } from "../chunk-5F5PTVWR.js";
4
4
  import "../chunk-FZ36KL73.js";
5
5
  import "../chunk-KMU6ABQF.js";
6
6
  import "../chunk-EUXUH3YW.js";
@@ -0,0 +1,33 @@
1
+ import * as lit from 'lit';
2
+ import { LitElement } from 'lit';
3
+
4
+ interface StepItem {
5
+ title: string;
6
+ description?: string;
7
+ }
8
+ /**
9
+ * A numbered process: a responsive grid of cards, each with an automatic "01", "02", ... number, a
10
+ * title and a description. `highlightLast` makes the final card a dark navy call-out, the way
11
+ * enterprise pages close a how-it-works sequence. `inverted` puts the whole block on the dark band.
12
+ *
13
+ * @cssprop --st-steps-padding - Overrides the block's padding.
14
+ * @csspart header - The eyebrow/title/subtitle block.
15
+ * @csspart card - Each step card (an `li`).
16
+ * @csspart number - The step number.
17
+ */
18
+ declare class Steps extends LitElement {
19
+ static styles: lit.CSSResult;
20
+ /** Small uppercase label above the title. */
21
+ eyebrow: string;
22
+ title: string;
23
+ subtitle: string;
24
+ /** The steps, in order. */
25
+ items: StepItem[];
26
+ /** Renders the last step as a dark navy call-out card. */
27
+ highlightLast: boolean;
28
+ /** Puts the block on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme. */
29
+ inverted: boolean;
30
+ render(): lit.TemplateResult<1>;
31
+ }
32
+
33
+ export { type StepItem, Steps };
@@ -0,0 +1,10 @@
1
+ import {
2
+ Steps
3
+ } from "../chunk-ZRC5BVDX.js";
4
+ import "../chunk-FZ36KL73.js";
5
+ import "../chunk-KMU6ABQF.js";
6
+ import "../chunk-EUXUH3YW.js";
7
+ export {
8
+ Steps
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,26 @@
1
+ import * as lit from 'lit';
2
+ import { LitElement } from 'lit';
3
+
4
+ /**
5
+ * A single bordered band: a small uppercase label on the left and a run of bold items beside it
6
+ * (e.g. "Supported platforms: AWS · Azure · GCP"). Items wrap onto new lines on narrow screens.
7
+ * `inverted` puts the band on the dark band (`--st-cms-band-dark-bg`).
8
+ *
9
+ * @cssprop --st-tag-strip-padding - Overrides the block's padding.
10
+ * @csspart strip - The bordered band.
11
+ * @csspart label - The uppercase label.
12
+ * @csspart items - The list of items.
13
+ * @csspart item - Each item (an `li`).
14
+ */
15
+ declare class TagStrip extends LitElement {
16
+ static styles: lit.CSSResult;
17
+ /** Small uppercase label at the start of the band. Omit it for items alone. */
18
+ label: string;
19
+ /** The items, shown in order. */
20
+ items: string[];
21
+ /** Puts the band on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme. */
22
+ inverted: boolean;
23
+ render(): lit.TemplateResult<1>;
24
+ }
25
+
26
+ export { TagStrip };
@@ -0,0 +1,9 @@
1
+ import {
2
+ TagStrip
3
+ } from "../chunk-5MY6OWMK.js";
4
+ import "../chunk-KMU6ABQF.js";
5
+ import "../chunk-EUXUH3YW.js";
6
+ export {
7
+ TagStrip
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -2,18 +2,30 @@ import * as lit from 'lit';
2
2
  import { LitElement } from 'lit';
3
3
 
4
4
  /**
5
- * A small label that shows above a control on hover and on keyboard focus. Wrap the control (a button
6
- * or an icon button) in it and pass the same words as its accessible name in `text`. The bubble is
7
- * decorative (`aria-hidden`): the control's own `aria-label` is what a screen reader announces, so the
5
+ * A small label that shows above a control: after a short rest on hover, and at once on keyboard focus.
6
+ * Wrap the control (a button or an icon button) in it and pass the same words as its accessible name in
7
+ * `text`. The control is still the thing that's announced; the bubble is decorative (`aria-hidden`), so the
8
8
  * words aren't read twice.
9
9
  *
10
- * The bubble is positioned by the wrapper, so put the tooltip where it has room above: it's not
11
- * clipped by the wrapper's own box, but it is clipped by an ancestor with `overflow: hidden`.
10
+ * The bubble is `position: fixed` and placed from the wrapper's position when it shows, so a clipping
11
+ * ancestor (a card or panel with `overflow: hidden`) can't cut it off. It shows around a control that
12
+ * can't act right now too, as long as that control is focusable or hoverable (use `aria-disabled`, not
13
+ * the native `disabled`, which takes a control out of focus and pointer events).
12
14
  */
13
15
  declare class Tooltip extends LitElement {
14
16
  static styles: lit.CSSResult;
15
- /** The words shown in the bubble: the same words as the control's accessible name. */
17
+ /** The words shown in the bubble: the same words as the control's accessible name, or the reason the
18
+ * control can't act right now. */
16
19
  text: string;
20
+ private bubble?;
21
+ private timer?;
22
+ connectedCallback(): void;
23
+ disconnectedCallback(): void;
24
+ firstUpdated(): void;
25
+ private onPointerEnter;
26
+ private cancel;
27
+ private show;
28
+ private hide;
17
29
  render(): lit.TemplateResult<1>;
18
30
  }
19
31
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Tooltip
3
- } from "../chunk-XCA3XFFG.js";
3
+ } from "../chunk-FML6AG2V.js";
4
4
  import "../chunk-KMU6ABQF.js";
5
5
  import "../chunk-EUXUH3YW.js";
6
6
  export {