bearminion 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # bearminion
2
2
 
3
+ ## 1.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8a428e7: Sitewide JSON-LD. `site.seo.jsonLd` is optional (up to 10 blocks, 50 KB, so no migration) and the default template emits its blocks on every page. A page's own `seo.jsonLd` still replaces only the generated `WebPage` block, and a block with the same `@id` is emitted once, the page's first. With the conventional ids `<url>/#organization` and `<url>/#website` in the site's blocks, the generated `WebPage` gets `isPartOf` and `publisher` as `@id` references. The Site tab has a Structured data group with an Edit JSON-LD dialog and a Generate button that fills an `Organization` and a `WebSite` from the site name, address and language, replacing blocks with the same `@id`. The logo is added only for a full https address. A warning shows while the site address is still `example.com`. `siteJsonLdIds`, `mergeJsonLd`, `hasJsonLdId`, `generateSiteJsonLd`, `upsertJsonLd` and `isPlaceholderSiteUrl` are exported; themes that emit JSON-LD should use `mergeJsonLd` (see the theme docs).
8
+
9
+ ## 1.4.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 5d333af: Cookie banner for analytics. `site.consent` (`enabled`, `title`, `body`, `accept`, `reject`, `settings`, `policyLabel`, `policyHref`) is optional, and the banner is on by default: a site that has analytics snippets now asks visitors first, so one that did not want a banner needs `consent.enabled: false` (Site tab, Cookie banner switch). The template sets Google Consent Mode v2 to denied before any tag, keeps the snippets in `<template>` until the visitor accepts, then sends the update and runs them. A footer link, or a corner cookie icon (`reopen: "icon"`), reopens the banner, and withdrawing clears Google Analytics cookies and reloads. The Site tab has a Cookie banner group with the switch and an Edit banner dialog for the text and a privacy policy link. `siteConsentSchema`, `CONSENT_REOPEN`, `consentCopy`, `CONSENT_COPY`, `CONSENT_LIMITS`, `CONSENT_HREF` and `consentTextIssues` are exported. Themes that emit the snippets should hold them back the same way (see the theme docs).
14
+
3
15
  ## 1.3.0
4
16
 
5
17
  ### Minor Changes
package/dist/astro.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as SiteOf, P as SiteDefinition, Pt as ContentMigrator, _ as SectionRegistry, d as SectionOf, g as ContentModel, t as Page } from "./page-DJ6L8RmH.js";
2
- import { a as StoreKeyError, c as createFileStore, i as FileStoreOptions, n as EditorContext, o as StoreOperation, r as ContentStore, s as UploadStore, t as BearminionOptions } from "./options-BdPRHcqA.js";
1
+ import { A as SectionRegistry, J as SiteDefinition, Y as SiteOf, Yt as ContentMigrator, k as ContentModel, t as Page, u as SectionOf } from "./page-B5NoN74Q.js";
2
+ import { a as StoreKeyError, c as createFileStore, i as FileStoreOptions, n as EditorContext, o as StoreOperation, r as ContentStore, s as UploadStore, t as BearminionOptions } from "./options-DBfoi9D1.js";
3
3
  import { AstroIntegration } from "astro";
4
4
  //#region src/integration.d.ts
5
5
  interface BearminionIntegration extends AstroIntegration {
package/dist/astro.js CHANGED
@@ -1,8 +1,8 @@
1
- import { a as imageFields, c as ContentReadError, l as ContentValidationError, r as loadThemePreview, t as PreviewUnavailableError } from "./preview-CTVEBdEY.js";
2
- import { t as defaultTheme } from "./theme-DMpt3hcT.js";
3
- import { c as withoutOrphanSections, d as isOrphanSection, i as isSystemPage, n as createPageSchema$1, r as createTolerantPageSchema } from "./page-ON4Jkcm-.js";
1
+ import { a as imageFields, c as ContentReadError, l as ContentValidationError, r as loadThemePreview, t as PreviewUnavailableError } from "./preview--S1QUrMM.js";
2
+ import { t as defaultTheme } from "./theme-DFjHjgFO.js";
3
+ import { i as isSystemPage, n as createPageSchema$1, r as createTolerantPageSchema, s as withoutOrphanSections, u as isOrphanSection } from "./page-NOFVEqn1.js";
4
4
  import { a as DEFAULT_UPLOADS_DIR, i as DEFAULT_CONTENT_DIR, n as createMigrator, r as API_PREFIX, t as SCHEMA_VERSION_KEY } from "./migrate-B56wxCiC.js";
5
- import { a as JSON_BODY_LIMIT, c as isInside, d as resolveDir, f as resolveInside, i as IMAGE_BYTE_LIMIT, l as isLocalRequest, n as contentReloadPlugin, o as MULTIPART_BODY_LIMIT, r as dropEarlyReloadAfterSave, s as asDirectory, u as readSlug } from "./reload-Cq434rtI.js";
5
+ import { a as JSON_BODY_LIMIT, c as isInside, d as resolveDir, f as resolveInside, i as IMAGE_BYTE_LIMIT, l as isLocalRequest, n as contentReloadPlugin, o as MULTIPART_BODY_LIMIT, r as dropEarlyReloadAfterSave, s as asDirectory, u as readSlug } from "./reload-D0vwI0OT.js";
6
6
  import { S as isAssetPath, b as describeSiteRef, c as projectId, v as assetRefs, y as describePageRef } from "./draft-store-1Y4-sn45.js";
7
7
  import { z } from "zod";
8
8
  import fs from "node:fs";
package/dist/content.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { d as SectionOf, g as ContentModel, t as Page } from "./page-DJ6L8RmH.js";
1
+ import { k as ContentModel, t as Page, u as SectionOf } from "./page-B5NoN74Q.js";
2
2
  import { z } from "zod";
3
3
  //#region src/content.d.ts
4
4
  export interface ContentCollectionsOptions {
package/dist/content.js CHANGED
@@ -1,6 +1,6 @@
1
- import { n as createPageSchema, r as createTolerantPageSchema } from "./page-ON4Jkcm-.js";
1
+ import { n as createPageSchema, r as createTolerantPageSchema } from "./page-NOFVEqn1.js";
2
2
  import { n as createMigrator } from "./migrate-B56wxCiC.js";
3
- import { t as CONTENT_COLLECTIONS_MARKER } from "./reload-Cq434rtI.js";
3
+ import { t as CONTENT_COLLECTIONS_MARKER } from "./reload-D0vwI0OT.js";
4
4
  import { z } from "zod";
5
5
  import { pathToFileURL } from "node:url";
6
6
  import path from "node:path";
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as imageSchema, A as HeaderConfig, At as FieldIcons, B as defineSite, C as BRAND_LOGO_HEIGHT, Ct as buttonStyles, D as FooterColumn, Dt as tones, E as Footer, Et as toneOption, F as SiteOf, Ft as ContentVersioning, G as ButtonStyle, H as siteSeoSchema, I as SiteSeo, It as DocumentKind, J as MAX_NAV_DEPTH, K as Image, L as SiteWith, Lt as SCHEMA_VERSION_KEY, M as SiteAnalytics, Mt as ShowWhen, N as SiteConfig, Nt as ContentMigration, O as FooterConfig, Ot as variantOption, P as SiteDefinition, Pt as ContentMigrator, Q as htmlIdSchema, R as Theme, Rt as createMigrator, S as defineTheme, St as StringOption, T as DEFAULT_MAX_HEADER_ACTIONS, Tt as themeModes, U as themeColorsSchema, V as siteAnalyticsSchema, W as themeSchema, X as Text, Y as RichText, Z as Tone, _ as SectionRegistry, _t as BooleanOption, a as isSystemPage, at as trackingIdSchema, b as ThemeFont, bt as NumberOption, c as withoutOrphanSections, ct as SectionDefinition, d as SectionOf, dt as WireRect, et as linkSchema, f as anchorSchema, ft as Wireframe, g as ContentModel, gt as OptionalContent, h as API_PREFIX, ht as wireframeIssues, i as createPageSchema, it as toneSchema, j as Site, jt as ShowCondition, k as Header, kt as FieldChoices, l as BaseSection, lt as defineSection, m as sectionIdSchema, mt as wireKinds, n as SYSTEM_PAGES, nt as textMarkSchema, o as jsonLdSchema, ot as withEmphasis, p as createSectionSchema, pt as defineWireframe, q as Link, r as Seo, rt as textSchema, s as seoSchema, st as SectionConfig, t as Page, tt as richTextSchema, u as PropsOf, ut as WireKind, v as ThemeConfig, vt as CountRule, w as DEFAULT_MAX_FOOTER_COLUMNS, wt as motionOption, x as defaultTheme, xt as Option, y as ThemeDefinition, yt as EnumOption, z as brandLogoSchema } from "./page-DJ6L8RmH.js";
1
+ import { $ as brandLogoSchema, $t as createMigrator, A as SectionRegistry, At as wireframeIssues, B as FooterColumn, Bt as themeModes, C as jsonLdWarnings, Ct as SectionDefinition, D as upsertJsonLd, Dt as Wireframe, E as siteJsonLdIds, Et as WireRect, F as defineTheme, Ft as NumberOption, G as SiteAnalytics, Gt as FieldIcons, H as Header, Ht as tones, I as BRAND_LOGO_HEIGHT, It as Option, J as SiteDefinition, Jt as ContentMigration, K as SiteConfig, Kt as ShowCondition, L as DEFAULT_MAX_FOOTER_COLUMNS, Lt as StringOption, M as ThemeDefinition, Mt as BooleanOption, N as ThemeFont, Nt as CountRule, O as API_PREFIX, Ot as defineWireframe, P as defaultTheme, Pt as EnumOption, Q as Theme, Qt as SCHEMA_VERSION_KEY, R as DEFAULT_MAX_HEADER_ACTIONS, Rt as buttonStyles, S as jsonLdSchema, St as SectionConfig, T as parseJsonLdInput, Tt as WireKind, U as HeaderConfig, Ut as variantOption, V as FooterConfig, Vt as toneOption, W as Site, Wt as FieldChoices, X as SiteSeo, Xt as ContentVersioning, Y as SiteOf, Yt as ContentMigrator, Z as SiteWith, Zt as DocumentKind, _ as SiteJsonLdSource, _t as textMarkSchema, a as isSystemPage, at as themeSchema, b as hasJsonLdId, bt as trackingIdSchema, c as BaseSection, ct as Link, d as anchorSchema, dt as Text, et as defineSite, f as createSectionSchema, ft as Tone, g as SiteJsonLdIds, gt as richTextSchema, h as JsonLdResult, ht as linkSchema, i as createPageSchema, it as themeColorsSchema, j as ThemeConfig, jt as OptionalContent, k as ContentModel, kt as wireKinds, l as PropsOf, lt as MAX_NAV_DEPTH, m as JsonLdBlock, mt as imageSchema, n as SYSTEM_PAGES, nt as siteConsentSchema, o as seoSchema, ot as ButtonStyle, p as sectionIdSchema, pt as htmlIdSchema, q as SiteConsent, qt as ShowWhen, r as Seo, rt as siteSeoSchema, s as withoutOrphanSections, st as Image, t as Page, tt as siteAnalyticsSchema, u as SectionOf, ut as RichText, v as formatJsonLd, vt as textSchema, w as mergeJsonLd, wt as defineSection, x as isPlaceholderSiteUrl, xt as withEmphasis, y as generateSiteJsonLd, yt as toneSchema, z as Footer, zt as motionOption } from "./page-B5NoN74Q.js";
2
2
  import { _ as renderMarkedHtml, a as WeightMark, f as markClass, g as reconcileMarks, i as TextRun, l as fontMarks, m as marksFromEmphasis, o as applyTextMark, r as TextMark, t as FontMark, v as splitMarkedText, y as weightMarks } from "./marks-BzLa48Y9.js";
3
- import "./options-BdPRHcqA.js";
3
+ import "./options-DBfoi9D1.js";
4
4
  //#region src/errors.d.ts
5
5
  /** One schema problem, addressed by a dot path such as `sections.0.props.heading`. */
6
6
  interface ContentIssue {
@@ -162,25 +162,53 @@ interface SitePreview {
162
162
  footer: string;
163
163
  }
164
164
  //#endregion
165
- //#region src/json-ld.d.ts
166
- /** JSON-LD blocks as a page stores them: parsed, so diffs stay readable and output can be escaped safely. */
167
- type JsonLdBlock = Record<string, unknown>;
168
- type JsonLdResult = {
169
- ok: true;
170
- value: JsonLdBlock[];
171
- } | {
172
- ok: false;
173
- error: string;
165
+ //#region src/consent.d.ts
166
+ /** Longest copy the consent banner takes, in characters. The editor shows the same limits. */
167
+ export declare const CONSENT_LIMITS: {
168
+ readonly title: 80;
169
+ readonly body: 400;
170
+ readonly button: 30;
171
+ readonly link: 40;
174
172
  };
175
- /**
176
- * Parses what a person pastes into the JSON-LD box: an object, an array of objects, or either one inside a
177
- * `<script type="application/ld+json">` tag. Empty input is valid and means "no custom JSON-LD".
178
- */
179
- export declare function parseJsonLdInput(raw: string): JsonLdResult;
180
- /** The text shown in the editor box: one block as an object, several as an array, none as empty. */
181
- export declare function formatJsonLd(blocks: readonly JsonLdBlock[] | undefined): string;
182
- /** Advice, not errors: a block without `@type` or `@context` is usually a paste mistake, but Google decides what it accepts. */
183
- export declare function jsonLdWarnings(blocks: readonly JsonLdBlock[]): string[];
173
+ /** Where visitors reopen the banner: a link in the footer, or a small fixed icon in the bottom-left corner. */
174
+ export declare const CONSENT_REOPEN: readonly ["footer", "icon"];
175
+ type ConsentReopen = (typeof CONSENT_REOPEN)[number];
176
+ /** A policy link points to a path on this site, an anchor or an http(s) address, so it cannot run script. */
177
+ export declare const CONSENT_HREF: RegExp;
178
+ /** The texts of the banner. Each one is optional in `site.consent`; a theme falls back to {@link CONSENT_COPY}. */
179
+ interface ConsentText {
180
+ title?: string;
181
+ body?: string;
182
+ accept?: string;
183
+ reject?: string;
184
+ /** The footer link that reopens the banner, and the label of the corner icon. */
185
+ settings?: string;
186
+ policyLabel?: string;
187
+ policyHref?: string;
188
+ }
189
+ type ConsentTextKey = keyof ConsentText;
190
+ interface ConsentCopy {
191
+ title: string;
192
+ body: string;
193
+ accept: string;
194
+ reject: string;
195
+ settings: string;
196
+ policyLabel: string;
197
+ policyHref?: string;
198
+ }
199
+ /** The banner's words when `site.consent` does not set its own. The editor shows them, and themes render them. */
200
+ export declare const CONSENT_COPY: {
201
+ readonly title: "Cookies";
202
+ readonly body: "This site counts visits with analytics cookies. Nothing is loaded until you accept.";
203
+ readonly accept: "Accept";
204
+ readonly reject: "Reject";
205
+ readonly settings: "Cookie settings";
206
+ readonly policyLabel: "Privacy policy";
207
+ };
208
+ /** `site.consent` laid over the defaults. */
209
+ export declare function consentCopy(consent?: ConsentText): ConsentCopy;
210
+ /** What is wrong with a draft of the banner copy, per field. The same rules as `siteConsentSchema`, without zod. */
211
+ export declare function consentTextIssues(copy: ConsentText): Partial<Record<ConsentTextKey, string>>;
184
212
  //#endregion
185
213
  //#region src/theme-colors.d.ts
186
214
  /**
@@ -244,4 +272,4 @@ interface ContrastCheck {
244
272
  /** Text pairs a visitor reads: text on its background, label on the accent fill, link on its background. */
245
273
  export declare function contrastChecks(colors: ThemeColors | undefined): ContrastCheck[];
246
274
  //#endregion
247
- export { API_PREFIX, type ApiIssue, type ApiProblem, BRAND_LOGO_HEIGHT, type BaseSection, type BooleanOption, type ButtonStyle, type ChangedFile, type CommitRequest, type CommitResult, type ContentIssue, type ContentMigration, type ContentMigrator, type ContentModel, type ContentVersioning, type ContrastCheck, type CountRule, type CreatePageRequest, DEFAULT_MAX_FOOTER_COLUMNS, DEFAULT_MAX_HEADER_ACTIONS, type DocumentKind, type EnumOption, type FieldChoices, type FieldIcons, type FontMark, type Footer, type FooterColumn, type FooterConfig, type GitInfo, type Header, type HeaderConfig, type HistoryEntry, type Image, type ImageFit, type ImagePosition, type JsonLdBlock, type JsonLdResult, type Link, MAX_NAV_DEPTH, type NumberOption, type Option, type OptionalContent, type Page, type PageListItem, type PropsOf, type RichText, SCHEMA_VERSION_KEY, SYSTEM_PAGES, type SaveRequest, type SaveResponse, type SectionConfig, type SectionDefinition, type SectionOf, type SectionRegistry, type Seo, type ShowCondition, type ShowWhen, type Site, type SiteAnalytics, type SiteConfig, type SiteDefinition, type SiteOf, type SitePreview, type SitePreviewHtml, type SiteSeo, type SiteWith, type StringOption, type Text, type TextMark, type TextRun, type Theme, type ThemeColors, type ThemeConfig, type ThemeDefinition, type ThemeFont, type ThemePreview, type Tone, type UploadedImage, type WeightMark, type WireKind, type WireRect, type Wireframe, anchorSchema, applyTextMark, brandLogoSchema, buttonStyles, createMigrator, createPageSchema, createSectionSchema, defaultTheme, defineSection, defineSite, defineTheme, defineWireframe, fontMarks, htmlIdSchema, imageSchema, isSystemPage, jsonLdSchema, linkSchema, markClass, marksFromEmphasis, motionOption, reconcileMarks, renderMarkedHtml, richTextSchema, sectionIdSchema, seoSchema, siteAnalyticsSchema, siteSeoSchema, splitMarkedText, textMarkSchema, textSchema, themeColorsSchema, themeModes, themeSchema, toneOption, toneSchema, tones, trackingIdSchema, variantOption, weightMarks, wireKinds, wireframeIssues, withEmphasis, withoutOrphanSections };
275
+ export { API_PREFIX, type ApiIssue, type ApiProblem, BRAND_LOGO_HEIGHT, type BaseSection, type BooleanOption, type ButtonStyle, type ChangedFile, type CommitRequest, type CommitResult, type ConsentCopy, type ConsentReopen, type ConsentText, type ConsentTextKey, type ContentIssue, type ContentMigration, type ContentMigrator, type ContentModel, type ContentVersioning, type ContrastCheck, type CountRule, type CreatePageRequest, DEFAULT_MAX_FOOTER_COLUMNS, DEFAULT_MAX_HEADER_ACTIONS, type DocumentKind, type EnumOption, type FieldChoices, type FieldIcons, type FontMark, type Footer, type FooterColumn, type FooterConfig, type GitInfo, type Header, type HeaderConfig, type HistoryEntry, type Image, type ImageFit, type ImagePosition, type JsonLdBlock, type JsonLdResult, type Link, MAX_NAV_DEPTH, type NumberOption, type Option, type OptionalContent, type Page, type PageListItem, type PropsOf, type RichText, SCHEMA_VERSION_KEY, SYSTEM_PAGES, type SaveRequest, type SaveResponse, type SectionConfig, type SectionDefinition, type SectionOf, type SectionRegistry, type Seo, type ShowCondition, type ShowWhen, type Site, type SiteAnalytics, type SiteConfig, type SiteConsent, type SiteDefinition, type SiteJsonLdIds, type SiteJsonLdSource, type SiteOf, type SitePreview, type SitePreviewHtml, type SiteSeo, type SiteWith, type StringOption, type Text, type TextMark, type TextRun, type Theme, type ThemeColors, type ThemeConfig, type ThemeDefinition, type ThemeFont, type ThemePreview, type Tone, type UploadedImage, type WeightMark, type WireKind, type WireRect, type Wireframe, anchorSchema, applyTextMark, brandLogoSchema, buttonStyles, createMigrator, createPageSchema, createSectionSchema, defaultTheme, defineSection, defineSite, defineTheme, defineWireframe, fontMarks, formatJsonLd, generateSiteJsonLd, hasJsonLdId, htmlIdSchema, imageSchema, isPlaceholderSiteUrl, isSystemPage, jsonLdSchema, jsonLdWarnings, linkSchema, markClass, marksFromEmphasis, mergeJsonLd, motionOption, parseJsonLdInput, reconcileMarks, renderMarkedHtml, richTextSchema, sectionIdSchema, seoSchema, siteAnalyticsSchema, siteConsentSchema, siteJsonLdIds, siteSeoSchema, splitMarkedText, textMarkSchema, textSchema, themeColorsSchema, themeModes, themeSchema, toneOption, toneSchema, tones, trackingIdSchema, upsertJsonLd, variantOption, weightMarks, wireKinds, wireframeIssues, withEmphasis, withoutOrphanSections };
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { c as ContentReadError, i as enumFields, l as ContentValidationError, n as defineThemePreview, o as schemaProps, s as ContentError, u as formatContentIssues } from "./preview-CTVEBdEY.js";
2
- import { n as defineTheme, t as defaultTheme } from "./theme-DMpt3hcT.js";
3
- import { A as isImagePosition, C as trackingIdSchema, D as IMAGE_FITS, E as DEFAULT_IMAGE_POSITION, F as toneOption, I as tones, L as variantOption, M as buttonStyles, N as motionOption, O as IMAGE_POSITIONS, P as themeModes, S as toneSchema, T as DEFAULT_IMAGE_FIT, _ as imageSchema, a as jsonLdSchema, b as textMarkSchema, c as withoutOrphanSections, f as sectionIdSchema, g as htmlIdSchema, h as addMarkIssues, i as isSystemPage, k as isImageFit, l as anchorSchema, m as MAX_NAV_DEPTH, n as createPageSchema, o as seoSchema, p as walkLinkIds, t as SYSTEM_PAGES, u as createSectionSchema, v as linkSchema, w as withEmphasis, x as textSchema, y as richTextSchema } from "./page-ON4Jkcm-.js";
1
+ import { c as ContentReadError, i as enumFields, l as ContentValidationError, n as defineThemePreview, o as schemaProps, s as ContentError, u as formatContentIssues } from "./preview--S1QUrMM.js";
2
+ import { n as defineTheme, t as defaultTheme } from "./theme-DFjHjgFO.js";
3
+ import { A as textSchema, C as MAX_NAV_DEPTH, D as linkSchema, E as imageSchema, F as DEFAULT_IMAGE_POSITION, G as tones, H as motionOption, I as IMAGE_FITS, K as variantOption, L as IMAGE_POSITIONS, M as trackingIdSchema, N as withEmphasis, O as richTextSchema, P as DEFAULT_IMAGE_FIT, R as isImageFit, S as upsertJsonLd, T as htmlIdSchema, U as themeModes, V as buttonStyles, W as toneOption, _ as jsonLdSchema, a as seoSchema, b as parseJsonLdInput, c as anchorSchema, d as sectionIdSchema, f as walkLinkIds, g as isPlaceholderSiteUrl, h as hasJsonLdId, i as isSystemPage, j as toneSchema, k as textMarkSchema, l as createSectionSchema, m as generateSiteJsonLd, n as createPageSchema, p as formatJsonLd, s as withoutOrphanSections, t as SYSTEM_PAGES, v as jsonLdWarnings, w as addMarkIssues, x as siteJsonLdIds, y as mergeJsonLd, z as isImagePosition } from "./page-NOFVEqn1.js";
4
4
  import { applyTextMark, fontMarks, markClass, marksFromEmphasis, reconcileMarks, renderMarkedHtml, splitMarkedText, weightMarks } from "./marks.js";
5
5
  import { n as createMigrator, r as API_PREFIX, t as SCHEMA_VERSION_KEY } from "./migrate-B56wxCiC.js";
6
- import { a as contrastRatio, c as hasThemeColors, d as tokenToHex, f as formatJsonLd, i as contrastChecks, l as hexToToken, m as parseJsonLdInput, n as HEX_COLOR, o as derivePalette, p as jsonLdWarnings, s as hasOverrides, u as themeCss } from "./theme-colors-B2kAO2n6.js";
6
+ import { _ as consentCopy, a as contrastRatio, c as hasThemeColors, d as tokenToHex, f as CONSENT_COPY, g as CONSENT_REOPEN, h as CONSENT_LIMITS, i as contrastChecks, l as hexToToken, m as CONSENT_HREF_MESSAGE, n as HEX_COLOR, o as derivePalette, p as CONSENT_HREF, s as hasOverrides, u as themeCss, v as consentTextIssues } from "./theme-colors-CbCyVANH.js";
7
7
  import { z } from "zod";
8
8
  //#region src/wireframe.ts
9
9
  /**
@@ -239,7 +239,9 @@ const siteSeoSchema = z.object({
239
239
  /** `%s` is replaced with the page SEO title. */
240
240
  titleTemplate: z.string().min(1).optional(),
241
241
  description: z.string().optional(),
242
- ogImage: z.string().min(1).optional()
242
+ ogImage: z.string().min(1).optional(),
243
+ /** Structured data emitted on every page, such as `Organization` and `WebSite`. A page's own blocks add to it. */
244
+ jsonLd: jsonLdSchema.optional()
243
245
  }).strict();
244
246
  /**
245
247
  * Raw HTML snippets for analytics and similar tags. A theme renders `head` at the end of `<head>` and
@@ -249,6 +251,25 @@ const siteAnalyticsSchema = z.object({
249
251
  head: z.string().max(2e4).optional(),
250
252
  bodyEnd: z.string().max(2e4).optional()
251
253
  }).strict();
254
+ /**
255
+ * The cookie consent banner. A theme shows it whenever it ships analytics snippets, unless `enabled` is
256
+ * `false`, and holds the snippets back until the visitor accepts. Every text is optional: the theme has a default.
257
+ */
258
+ const siteConsentSchema = z.object({
259
+ /** Only `false` turns the banner off. Absent means on. */
260
+ enabled: z.boolean().optional(),
261
+ /** Where visitors reopen the banner. Absent means a link in the footer. */
262
+ reopen: z.enum(CONSENT_REOPEN).optional(),
263
+ title: z.string().min(1).max(CONSENT_LIMITS.title).optional(),
264
+ body: z.string().min(1).max(CONSENT_LIMITS.body).optional(),
265
+ accept: z.string().min(1).max(CONSENT_LIMITS.button).optional(),
266
+ reject: z.string().min(1).max(CONSENT_LIMITS.button).optional(),
267
+ /** The footer link that reopens the banner, and the label of the corner icon. */
268
+ settings: z.string().min(1).max(CONSENT_LIMITS.link).optional(),
269
+ policyLabel: z.string().min(1).max(CONSENT_LIMITS.link).optional(),
270
+ /** A path on this site or an http(s) address. Nothing else, so the link cannot run script. */
271
+ policyHref: z.string().min(1).max(500).regex(CONSENT_HREF, CONSENT_HREF_MESSAGE).optional()
272
+ }).strict();
252
273
  /** Height range in px. Unset means the wordmark's own height, 28. */
253
274
  const BRAND_LOGO_HEIGHT = {
254
275
  min: 16,
@@ -283,6 +304,7 @@ function createSiteSchema(header, footer) {
283
304
  brandLogo: brandLogoSchema.optional(),
284
305
  seo: siteSeoSchema,
285
306
  analytics: siteAnalyticsSchema.optional(),
307
+ consent: siteConsentSchema.optional(),
286
308
  theme: themeSchema.default({
287
309
  mode: "light",
288
310
  motion: true
@@ -419,4 +441,4 @@ function defineSite(config) {
419
441
  };
420
442
  }
421
443
  //#endregion
422
- export { API_PREFIX, BRAND_LOGO_HEIGHT, ContentError, ContentReadError, ContentValidationError, DEFAULT_IMAGE_FIT, DEFAULT_IMAGE_POSITION, DEFAULT_MAX_FOOTER_COLUMNS, DEFAULT_MAX_HEADER_ACTIONS, HEX_COLOR, IMAGE_FITS, IMAGE_POSITIONS, MAX_NAV_DEPTH, SCHEMA_VERSION_KEY, SYSTEM_PAGES, anchorSchema, applyTextMark, brandLogoSchema, buttonStyles, contrastChecks, contrastRatio, createMigrator, createPageSchema, createSectionSchema, defaultTheme, defineSection, defineSite, defineTheme, defineThemePreview, defineWireframe, derivePalette, fontMarks, formatJsonLd, hasOverrides, hasThemeColors, hexToToken, htmlIdSchema, imageSchema, isImageFit, isImagePosition, isSystemPage, jsonLdSchema, jsonLdWarnings, linkSchema, markClass, marksFromEmphasis, motionOption, parseJsonLdInput, reconcileMarks, renderMarkedHtml, richTextSchema, sectionIdSchema, seoSchema, siteAnalyticsSchema, siteSeoSchema, splitMarkedText, textMarkSchema, textSchema, themeColorsSchema, themeCss, themeModes, themeSchema, tokenToHex, toneOption, toneSchema, tones, trackingIdSchema, variantOption, weightMarks, wireKinds, wireframeIssues, withEmphasis, withoutOrphanSections };
444
+ export { API_PREFIX, BRAND_LOGO_HEIGHT, CONSENT_COPY, CONSENT_HREF, CONSENT_LIMITS, CONSENT_REOPEN, ContentError, ContentReadError, ContentValidationError, DEFAULT_IMAGE_FIT, DEFAULT_IMAGE_POSITION, DEFAULT_MAX_FOOTER_COLUMNS, DEFAULT_MAX_HEADER_ACTIONS, HEX_COLOR, IMAGE_FITS, IMAGE_POSITIONS, MAX_NAV_DEPTH, SCHEMA_VERSION_KEY, SYSTEM_PAGES, anchorSchema, applyTextMark, brandLogoSchema, buttonStyles, consentCopy, consentTextIssues, contrastChecks, contrastRatio, createMigrator, createPageSchema, createSectionSchema, defaultTheme, defineSection, defineSite, defineTheme, defineThemePreview, defineWireframe, derivePalette, fontMarks, formatJsonLd, generateSiteJsonLd, hasJsonLdId, hasOverrides, hasThemeColors, hexToToken, htmlIdSchema, imageSchema, isImageFit, isImagePosition, isPlaceholderSiteUrl, isSystemPage, jsonLdSchema, jsonLdWarnings, linkSchema, markClass, marksFromEmphasis, mergeJsonLd, motionOption, parseJsonLdInput, reconcileMarks, renderMarkedHtml, richTextSchema, sectionIdSchema, seoSchema, siteAnalyticsSchema, siteConsentSchema, siteJsonLdIds, siteSeoSchema, splitMarkedText, textMarkSchema, textSchema, themeColorsSchema, themeCss, themeModes, themeSchema, tokenToHex, toneOption, toneSchema, tones, trackingIdSchema, upsertJsonLd, variantOption, weightMarks, wireKinds, wireframeIssues, withEmphasis, withoutOrphanSections };
@@ -1,4 +1,4 @@
1
- import { P as SiteDefinition, Pt as ContentMigrator, _ as SectionRegistry, g as ContentModel, y as ThemeDefinition } from "./page-DJ6L8RmH.js";
1
+ import { A as SectionRegistry, J as SiteDefinition, M as ThemeDefinition, Yt as ContentMigrator, k as ContentModel } from "./page-B5NoN74Q.js";
2
2
  //#region src/images.d.ts
3
3
  type ImageKind = 'png' | 'jpeg' | 'webp' | 'gif' | 'avif';
4
4
  interface SavedImage {
@@ -271,10 +271,10 @@ declare const textMarkSchema: z.ZodObject<{
271
271
  start: z.ZodNumber;
272
272
  end: z.ZodNumber;
273
273
  weight: z.ZodOptional<z.ZodEnum<{
274
- bold: "bold";
275
274
  regular: "regular";
276
275
  medium: "medium";
277
276
  semibold: "semibold";
277
+ bold: "bold";
278
278
  }>>;
279
279
  italic: z.ZodOptional<z.ZodBoolean>;
280
280
  font: z.ZodOptional<z.ZodEnum<{
@@ -315,10 +315,10 @@ declare function withEmphasis<T extends z.ZodRawShape>(shape: T): z.ZodPipe<z.Zo
315
315
  start: z.ZodNumber;
316
316
  end: z.ZodNumber;
317
317
  weight: z.ZodOptional<z.ZodEnum<{
318
- bold: "bold";
319
318
  regular: "regular";
320
319
  medium: "medium";
321
320
  semibold: "semibold";
321
+ bold: "bold";
322
322
  }>>;
323
323
  italic: z.ZodOptional<z.ZodBoolean>;
324
324
  font: z.ZodOptional<z.ZodEnum<{
@@ -333,10 +333,10 @@ declare function withEmphasis<T extends z.ZodRawShape>(shape: T): z.ZodPipe<z.Zo
333
333
  start: z.ZodNumber;
334
334
  end: z.ZodNumber;
335
335
  weight: z.ZodOptional<z.ZodEnum<{
336
- bold: "bold";
337
336
  regular: "regular";
338
337
  medium: "medium";
339
338
  semibold: "semibold";
339
+ bold: "bold";
340
340
  }>>;
341
341
  italic: z.ZodOptional<z.ZodBoolean>;
342
342
  font: z.ZodOptional<z.ZodEnum<{
@@ -353,10 +353,10 @@ declare function withEmphasis<T extends z.ZodRawShape>(shape: T): z.ZodPipe<z.Zo
353
353
  start: z.ZodNumber;
354
354
  end: z.ZodNumber;
355
355
  weight: z.ZodOptional<z.ZodEnum<{
356
- bold: "bold";
357
356
  regular: "regular";
358
357
  medium: "medium";
359
358
  semibold: "semibold";
359
+ bold: "bold";
360
360
  }>>;
361
361
  italic: z.ZodOptional<z.ZodBoolean>;
362
362
  font: z.ZodOptional<z.ZodEnum<{
@@ -567,6 +567,7 @@ declare const siteSeoSchema: z.ZodObject<{
567
567
  titleTemplate: z.ZodOptional<z.ZodString>;
568
568
  description: z.ZodOptional<z.ZodString>;
569
569
  ogImage: z.ZodOptional<z.ZodString>;
570
+ jsonLd: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
570
571
  }, z.core.$strict>;
571
572
  /**
572
573
  * Raw HTML snippets for analytics and similar tags. A theme renders `head` at the end of `<head>` and
@@ -576,6 +577,24 @@ declare const siteAnalyticsSchema: z.ZodObject<{
576
577
  head: z.ZodOptional<z.ZodString>;
577
578
  bodyEnd: z.ZodOptional<z.ZodString>;
578
579
  }, z.core.$strict>;
580
+ /**
581
+ * The cookie consent banner. A theme shows it whenever it ships analytics snippets, unless `enabled` is
582
+ * `false`, and holds the snippets back until the visitor accepts. Every text is optional: the theme has a default.
583
+ */
584
+ declare const siteConsentSchema: z.ZodObject<{
585
+ enabled: z.ZodOptional<z.ZodBoolean>;
586
+ reopen: z.ZodOptional<z.ZodEnum<{
587
+ footer: "footer";
588
+ icon: "icon";
589
+ }>>;
590
+ title: z.ZodOptional<z.ZodString>;
591
+ body: z.ZodOptional<z.ZodString>;
592
+ accept: z.ZodOptional<z.ZodString>;
593
+ reject: z.ZodOptional<z.ZodString>;
594
+ settings: z.ZodOptional<z.ZodString>;
595
+ policyLabel: z.ZodOptional<z.ZodString>;
596
+ policyHref: z.ZodOptional<z.ZodString>;
597
+ }, z.core.$strict>;
579
598
  /** Height range in px. Unset means the wordmark's own height, 28. */
580
599
  declare const BRAND_LOGO_HEIGHT: {
581
600
  readonly min: 16;
@@ -594,10 +613,10 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
594
613
  start: z.ZodNumber;
595
614
  end: z.ZodNumber;
596
615
  weight: z.ZodOptional<z.ZodEnum<{
597
- bold: "bold";
598
616
  regular: "regular";
599
617
  medium: "medium";
600
618
  semibold: "semibold";
619
+ bold: "bold";
601
620
  }>>;
602
621
  italic: z.ZodOptional<z.ZodBoolean>;
603
622
  font: z.ZodOptional<z.ZodEnum<{
@@ -659,11 +678,26 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
659
678
  titleTemplate: z.ZodOptional<z.ZodString>;
660
679
  description: z.ZodOptional<z.ZodString>;
661
680
  ogImage: z.ZodOptional<z.ZodString>;
681
+ jsonLd: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
662
682
  }, z.core.$strict>;
663
683
  analytics: z.ZodOptional<z.ZodObject<{
664
684
  head: z.ZodOptional<z.ZodString>;
665
685
  bodyEnd: z.ZodOptional<z.ZodString>;
666
686
  }, z.core.$strict>>;
687
+ consent: z.ZodOptional<z.ZodObject<{
688
+ enabled: z.ZodOptional<z.ZodBoolean>;
689
+ reopen: z.ZodOptional<z.ZodEnum<{
690
+ footer: "footer";
691
+ icon: "icon";
692
+ }>>;
693
+ title: z.ZodOptional<z.ZodString>;
694
+ body: z.ZodOptional<z.ZodString>;
695
+ accept: z.ZodOptional<z.ZodString>;
696
+ reject: z.ZodOptional<z.ZodString>;
697
+ settings: z.ZodOptional<z.ZodString>;
698
+ policyLabel: z.ZodOptional<z.ZodString>;
699
+ policyHref: z.ZodOptional<z.ZodString>;
700
+ }, z.core.$strict>>;
667
701
  theme: z.ZodDefault<z.ZodObject<{
668
702
  mode: z.ZodPreprocess<z.ZodDefault<z.ZodEnum<{
669
703
  light: "light";
@@ -814,7 +848,7 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
814
848
  nameMarks: {
815
849
  start: number;
816
850
  end: number;
817
- weight?: "bold" | "regular" | "medium" | "semibold" | undefined;
851
+ weight?: "regular" | "medium" | "semibold" | "bold" | undefined;
818
852
  italic?: boolean | undefined;
819
853
  font?: "sans" | "serif" | "mono" | undefined;
820
854
  }[] | undefined;
@@ -824,6 +858,7 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
824
858
  titleTemplate?: string | undefined;
825
859
  description?: string | undefined;
826
860
  ogImage?: string | undefined;
861
+ jsonLd?: Record<string, unknown>[] | undefined;
827
862
  };
828
863
  theme: {
829
864
  mode: "light" | "dark";
@@ -941,6 +976,17 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
941
976
  head?: string | undefined;
942
977
  bodyEnd?: string | undefined;
943
978
  } | undefined;
979
+ consent?: {
980
+ enabled?: boolean | undefined;
981
+ reopen?: "footer" | "icon" | undefined;
982
+ title?: string | undefined;
983
+ body?: string | undefined;
984
+ accept?: string | undefined;
985
+ reject?: string | undefined;
986
+ settings?: string | undefined;
987
+ policyLabel?: string | undefined;
988
+ policyHref?: string | undefined;
989
+ } | undefined;
944
990
  }, {
945
991
  name: string;
946
992
  url: string;
@@ -948,6 +994,7 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
948
994
  titleTemplate?: string | undefined;
949
995
  description?: string | undefined;
950
996
  ogImage?: string | undefined;
997
+ jsonLd?: Record<string, unknown>[] | undefined;
951
998
  };
952
999
  theme: {
953
1000
  mode: "light" | "dark";
@@ -1059,7 +1106,7 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
1059
1106
  nameMarks?: {
1060
1107
  start: number;
1061
1108
  end: number;
1062
- weight?: "bold" | "regular" | "medium" | "semibold" | undefined;
1109
+ weight?: "regular" | "medium" | "semibold" | "bold" | undefined;
1063
1110
  italic?: boolean | undefined;
1064
1111
  font?: "sans" | "serif" | "mono" | undefined;
1065
1112
  }[] | undefined;
@@ -1087,11 +1134,23 @@ declare function createSiteSchema(header: HeaderParts, footer: FooterParts): z.Z
1087
1134
  head?: string | undefined;
1088
1135
  bodyEnd?: string | undefined;
1089
1136
  } | undefined;
1137
+ consent?: {
1138
+ enabled?: boolean | undefined;
1139
+ reopen?: "footer" | "icon" | undefined;
1140
+ title?: string | undefined;
1141
+ body?: string | undefined;
1142
+ accept?: string | undefined;
1143
+ reject?: string | undefined;
1144
+ settings?: string | undefined;
1145
+ policyLabel?: string | undefined;
1146
+ policyHref?: string | undefined;
1147
+ } | undefined;
1090
1148
  }>>;
1091
1149
  type Theme = z.infer<typeof themeSchema>;
1092
1150
  type FooterColumn = z.infer<typeof footerColumnSchema>;
1093
1151
  type SiteSeo = z.infer<typeof siteSeoSchema>;
1094
1152
  type SiteAnalytics = z.infer<typeof siteAnalyticsSchema>;
1153
+ type SiteConsent = z.infer<typeof siteConsentSchema>;
1095
1154
  type AnySite = z.output<ReturnType<typeof createSiteSchema>>;
1096
1155
  /** A site with header and footer variants as plain strings. {@link SiteWith} narrows them. */
1097
1156
  type Header = AnySite['header'];
@@ -1213,6 +1272,57 @@ interface ContentModel extends ContentVersioning {
1213
1272
  theme?: ThemeDefinition;
1214
1273
  }
1215
1274
  //#endregion
1275
+ //#region src/json-ld.d.ts
1276
+ /** JSON-LD blocks as a page stores them: parsed, so diffs stay readable and output can be escaped safely. */
1277
+ type JsonLdBlock = Record<string, unknown>;
1278
+ type JsonLdResult = {
1279
+ ok: true;
1280
+ value: JsonLdBlock[];
1281
+ } | {
1282
+ ok: false;
1283
+ error: string;
1284
+ };
1285
+ /**
1286
+ * Parses what a person pastes into the JSON-LD box: an object, an array of objects, or either one inside a
1287
+ * `<script type="application/ld+json">` tag. Empty input is valid and means "no custom JSON-LD".
1288
+ */
1289
+ declare function parseJsonLdInput(raw: string): JsonLdResult;
1290
+ /** The text shown in the editor box: one block as an object, several as an array, none as empty. */
1291
+ declare function formatJsonLd(blocks: readonly JsonLdBlock[] | undefined): string;
1292
+ /** Advice, not errors: a block without `@type` or `@context` is usually a paste mistake, but Google decides what it accepts. */
1293
+ declare function jsonLdWarnings(blocks: readonly JsonLdBlock[]): string[];
1294
+ /** Custom structured data. At most 10 blocks and 50 KB, so a stray paste cannot bloat every page. */
1295
+ declare const jsonLdSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1296
+ /** The `@id` the generated site blocks use, so a page's markup can point at them. */
1297
+ interface SiteJsonLdIds {
1298
+ organization: string;
1299
+ website: string;
1300
+ }
1301
+ /** `<site.url>/#organization` and `<site.url>/#website`, with trailing slashes on the site URL ignored. */
1302
+ declare function siteJsonLdIds(siteUrl: string): SiteJsonLdIds;
1303
+ /** Whether a block with this `@id` is in the list. */
1304
+ declare function hasJsonLdId(blocks: readonly JsonLdBlock[] | undefined, id: string): boolean;
1305
+ /**
1306
+ * The blocks a page emits: every site block, then the page's own. A block with the same `@id` is
1307
+ * emitted once and the page's copy wins, so a page can refine what the site says without repeating it.
1308
+ */
1309
+ declare function mergeJsonLd(site: readonly JsonLdBlock[] | undefined, page: readonly JsonLdBlock[]): JsonLdBlock[];
1310
+ /** What the Generate button reads from the site settings. */
1311
+ interface SiteJsonLdSource {
1312
+ name: string;
1313
+ url: string;
1314
+ /** BCP 47 tag. Default `en`. */
1315
+ lang?: string;
1316
+ /** An absolute https address. Local images get their address at build time, so they cannot go here. */
1317
+ logo?: string;
1318
+ }
1319
+ /** An `Organization` and a `WebSite` block for the site, in the `@id` convention of {@link siteJsonLdIds}. */
1320
+ declare function generateSiteJsonLd(source: SiteJsonLdSource): JsonLdBlock[];
1321
+ /** Puts generated blocks into a list: a block with the same `@id` is replaced in place, the rest is kept. */
1322
+ declare function upsertJsonLd(blocks: readonly JsonLdBlock[], generated: readonly JsonLdBlock[]): JsonLdBlock[];
1323
+ /** True while the site URL is still the template's `example.com` placeholder. */
1324
+ declare function isPlaceholderSiteUrl(siteUrl: string): boolean;
1325
+ //#endregion
1216
1326
  //#region src/section-schema.d.ts
1217
1327
  declare const sectionIdSchema: z.ZodString;
1218
1328
  declare const anchorSchema: z.ZodString;
@@ -1246,8 +1356,6 @@ type PropsOf<TRegistry extends SectionRegistry, TKey extends keyof TRegistry & s
1246
1356
  declare function createSectionSchema<TRegistry extends SectionRegistry>(registry: TRegistry): z.ZodType<SectionOf<TRegistry>>;
1247
1357
  //#endregion
1248
1358
  //#region src/page.d.ts
1249
- /** Custom structured data. At most 10 blocks and 50 KB, so a stray paste cannot bloat every page. */
1250
- declare const jsonLdSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1251
1359
  declare const seoSchema: z.ZodObject<{
1252
1360
  title: z.ZodString;
1253
1361
  description: z.ZodString;
@@ -1281,4 +1389,4 @@ declare function withoutOrphanSections<TPage extends {
1281
1389
  sections: readonly unknown[];
1282
1390
  }>(page: TPage, registry: SectionRegistry): TPage;
1283
1391
  //#endregion
1284
- export { imageSchema as $, HeaderConfig as A, FieldIcons as At, defineSite as B, BRAND_LOGO_HEIGHT as C, buttonStyles as Ct, FooterColumn as D, tones as Dt, Footer as E, toneOption as Et, SiteOf as F, ContentVersioning as Ft, ButtonStyle as G, siteSeoSchema as H, SiteSeo as I, DocumentKind as It, MAX_NAV_DEPTH as J, Image as K, SiteWith as L, SCHEMA_VERSION_KEY as Lt, SiteAnalytics as M, ShowWhen as Mt, SiteConfig as N, ContentMigration as Nt, FooterConfig as O, variantOption as Ot, SiteDefinition as P, ContentMigrator as Pt, htmlIdSchema as Q, Theme as R, createMigrator as Rt, defineTheme as S, StringOption as St, DEFAULT_MAX_HEADER_ACTIONS as T, themeModes as Tt, themeColorsSchema as U, siteAnalyticsSchema as V, themeSchema as W, Text as X, RichText as Y, Tone as Z, SectionRegistry as _, BooleanOption as _t, isSystemPage as a, trackingIdSchema as at, ThemeFont as b, NumberOption as bt, withoutOrphanSections as c, SectionDefinition as ct, SectionOf as d, WireRect as dt, linkSchema as et, anchorSchema as f, Wireframe as ft, ContentModel as g, OptionalContent as gt, API_PREFIX as h, wireframeIssues as ht, createPageSchema as i, toneSchema as it, Site as j, ShowCondition as jt, Header as k, FieldChoices as kt, BaseSection as l, defineSection as lt, sectionIdSchema as m, wireKinds as mt, SYSTEM_PAGES as n, textMarkSchema as nt, jsonLdSchema as o, withEmphasis as ot, createSectionSchema as p, defineWireframe as pt, Link as q, Seo as r, textSchema as rt, seoSchema as s, SectionConfig as st, Page as t, richTextSchema as tt, PropsOf as u, WireKind as ut, ThemeConfig as v, CountRule as vt, DEFAULT_MAX_FOOTER_COLUMNS as w, motionOption as wt, defaultTheme as x, Option as xt, ThemeDefinition as y, EnumOption as yt, brandLogoSchema as z };
1392
+ export { brandLogoSchema as $, createMigrator as $t, SectionRegistry as A, wireframeIssues as At, FooterColumn as B, themeModes as Bt, jsonLdWarnings as C, SectionDefinition as Ct, upsertJsonLd as D, Wireframe as Dt, siteJsonLdIds as E, WireRect as Et, defineTheme as F, NumberOption as Ft, SiteAnalytics as G, FieldIcons as Gt, Header as H, tones as Ht, BRAND_LOGO_HEIGHT as I, Option as It, SiteDefinition as J, ContentMigration as Jt, SiteConfig as K, ShowCondition as Kt, DEFAULT_MAX_FOOTER_COLUMNS as L, StringOption as Lt, ThemeDefinition as M, BooleanOption as Mt, ThemeFont as N, CountRule as Nt, API_PREFIX as O, defineWireframe as Ot, defaultTheme as P, EnumOption as Pt, Theme as Q, SCHEMA_VERSION_KEY as Qt, DEFAULT_MAX_HEADER_ACTIONS as R, buttonStyles as Rt, jsonLdSchema as S, SectionConfig as St, parseJsonLdInput as T, WireKind as Tt, HeaderConfig as U, variantOption as Ut, FooterConfig as V, toneOption as Vt, Site as W, FieldChoices as Wt, SiteSeo as X, ContentVersioning as Xt, SiteOf as Y, ContentMigrator as Yt, SiteWith as Z, DocumentKind as Zt, SiteJsonLdSource as _, textMarkSchema as _t, isSystemPage as a, themeSchema as at, hasJsonLdId as b, trackingIdSchema as bt, BaseSection as c, Link as ct, anchorSchema as d, Text as dt, defineSite as et, createSectionSchema as f, Tone as ft, SiteJsonLdIds as g, richTextSchema as gt, JsonLdResult as h, linkSchema as ht, createPageSchema as i, themeColorsSchema as it, ThemeConfig as j, OptionalContent as jt, ContentModel as k, wireKinds as kt, PropsOf as l, MAX_NAV_DEPTH as lt, JsonLdBlock as m, imageSchema as mt, SYSTEM_PAGES as n, siteConsentSchema as nt, seoSchema as o, ButtonStyle as ot, sectionIdSchema as p, htmlIdSchema as pt, SiteConsent as q, ShowWhen as qt, Seo as r, siteSeoSchema as rt, withoutOrphanSections as s, Image as st, Page as t, siteAnalyticsSchema as tt, SectionOf as u, RichText as ut, formatJsonLd as v, textSchema as vt, mergeJsonLd as w, defineSection as wt, isPlaceholderSiteUrl as x, withEmphasis as xt, generateSiteJsonLd as y, toneSchema as yt, Footer as z, motionOption as zt };