@sonordev/site-kit 8.6.0 → 8.8.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 (161) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/agent-manifest.json +1 -1
  3. package/dist/{AnalyticsProvider-GVJYL6XY.js → AnalyticsProvider-7SBJ27SI.js} +6 -6
  4. package/dist/{ArticleViewTracker-AOJXEBYM.js → ArticleViewTracker-PV2RD3P6.js} +5 -5
  5. package/dist/{BlocksPopup-AJ3CKVQG.js → BlocksPopup-NEEFV2L3.js} +9 -8
  6. package/dist/{ChatWidget-EYBVB5SZ.js → ChatWidget-V46UBDOM.js} +5 -5
  7. package/dist/{FileField-UEQYIFRO.js → FileField-MJ3RCNFJ.js} +3 -3
  8. package/dist/{FormSpotlight-H73ZZ66T.js → FormSpotlight-NQPQFZS7.js} +1 -1
  9. package/dist/{FormStage-2PLWWYBW.js → FormStage-4T5PJR5K.js} +1 -1
  10. package/dist/{ManagedForm-ZQOFXEWS.js → ManagedForm-DDDVMKLJ.js} +6 -6
  11. package/dist/{ManagedNewsletterForm-5TE47YZD.js → ManagedNewsletterForm-TUYGN6O3.js} +9 -9
  12. package/dist/{SignalCore-FEFNMNYN.js → SignalCore-OW3YIH6M.js} +5 -5
  13. package/dist/SiteChat-XMKHBSEK.js +6 -0
  14. package/dist/SiteDesignReporter-BRH7ORQS.js +13 -0
  15. package/dist/{SitePopups-C44YTQ3Q.js → SitePopups-VU2C3Z6B.js} +6 -6
  16. package/dist/SitemapSync-C4H3HF3L.js +9 -0
  17. package/dist/_client/booking-widget.js +5 -5
  18. package/dist/admin-auth/index.d.ts +2 -2
  19. package/dist/admin-auth/session.d.ts +2 -2
  20. package/dist/affiliates/index.js +3 -3
  21. package/dist/analytics/content-text.d.ts +17 -0
  22. package/dist/analytics/index.js +6 -6
  23. package/dist/{article-styles-VASFBYA3.js → article-styles-D7VCDXMG.js} +2 -1
  24. package/dist/article-tables-W45BE353.js +3 -0
  25. package/dist/articles/index.js +7 -20
  26. package/dist/articles/server-ui.js +29 -55
  27. package/dist/articles/server.js +6 -5
  28. package/dist/chat/index.js +8 -8
  29. package/dist/{chunk-3RDJKIYO.js → chunk-2WDWQI7K.js} +1 -1
  30. package/dist/{chunk-KTMHRXDT.js → chunk-2WM4TNDF.js} +1 -1
  31. package/dist/chunk-3MJNBOUO.js +8 -0
  32. package/dist/{chunk-BF7TZYC3.js → chunk-52KO4LKD.js} +1 -1
  33. package/dist/chunk-64XODP7M.js +7 -0
  34. package/dist/{chunk-DSD3XZQQ.js → chunk-6BFQI3ZE.js} +3 -3
  35. package/dist/{chunk-QNOJSSQT.js → chunk-6DXQHNZK.js} +1 -1
  36. package/dist/{chunk-5D7ZISUP.js → chunk-7DYMM6SS.js} +11 -6
  37. package/dist/{chunk-QQT2T6JQ.js → chunk-7HW4TZB5.js} +1 -1
  38. package/dist/{chunk-E4PTMORJ.js → chunk-AL5UCWLI.js} +23 -8
  39. package/dist/chunk-AYQEIMGS.js +390 -0
  40. package/dist/{chunk-L6QTERSH.js → chunk-DYROJGI2.js} +1 -1
  41. package/dist/{chunk-XA7Q2VQA.js → chunk-EK7P62DT.js} +1 -1
  42. package/dist/{chunk-BUE3Z32O.js → chunk-F6WLHVMQ.js} +1 -1
  43. package/dist/{chunk-IYCSDFPN.js → chunk-FLOJUMFR.js} +2 -2
  44. package/dist/{chunk-7R2STOVD.js → chunk-G7BRCSV6.js} +3 -3
  45. package/dist/{chunk-NI6ZTP3D.js → chunk-GQN4BGK6.js} +1 -1
  46. package/dist/{chunk-GFY3E7EQ.js → chunk-GXWM5KNS.js} +15 -7
  47. package/dist/{chunk-U34O6I7W.js → chunk-HN7GVGWC.js} +3 -3
  48. package/dist/{chunk-6KU7STM3.js → chunk-HY7ZEU2C.js} +3 -1
  49. package/dist/chunk-IBHBEUZV.js +27 -0
  50. package/dist/{chunk-ZZSAWXWD.js → chunk-IDC5CVBR.js} +1 -1
  51. package/dist/{chunk-HMTPRBYJ.js → chunk-IWNJCRXW.js} +1 -1
  52. package/dist/chunk-JESLPEST.js +14 -0
  53. package/dist/{chunk-BC7JMY4Z.js → chunk-JG53YJLM.js} +58 -1
  54. package/dist/{chunk-RI2N2EBI.js → chunk-JYITKUUB.js} +13 -5
  55. package/dist/{chunk-V67OD7RW.js → chunk-KG5IEV7I.js} +113 -93
  56. package/dist/chunk-KIYACQW3.js +1 -0
  57. package/dist/{chunk-JSW42BHL.js → chunk-M5JIHQ42.js} +1 -1
  58. package/dist/{chunk-YJH6WE76.js → chunk-NFGAXWCN.js} +9 -9
  59. package/dist/{chunk-Y35BWW2C.js → chunk-ODOV76VW.js} +1 -1
  60. package/dist/{chunk-VA6IJ55K.js → chunk-OPUY4RS6.js} +1 -1
  61. package/dist/{chunk-6NXFA7HE.js → chunk-OWZWRP7Y.js} +2 -2
  62. package/dist/{chunk-JJ4JS3LD.js → chunk-PAYCK7FC.js} +1 -1
  63. package/dist/{chunk-72F44HKL.js → chunk-PSS6M4CG.js} +1 -1
  64. package/dist/{chunk-O3Z5HHFP.js → chunk-SBPUFTMP.js} +2 -2
  65. package/dist/{chunk-OFSV5TZY.js → chunk-SHAUX2MQ.js} +1 -1
  66. package/dist/{chunk-OWO3RFEX.js → chunk-SLFYTELD.js} +1 -1
  67. package/dist/{chunk-CMUD37WV.js → chunk-SVHPILS3.js} +1 -1
  68. package/dist/{chunk-YNBRVVTX.js → chunk-THXELZTQ.js} +1 -1
  69. package/dist/{chunk-IGAIQ2B3.js → chunk-TP32MRXV.js} +2 -2
  70. package/dist/{chunk-NUXXFCIT.js → chunk-URLTBVRX.js} +4 -4
  71. package/dist/chunk-XAZC2TUD.js +1119 -0
  72. package/dist/{chunk-URJN75ZG.js → chunk-XIDWNXZN.js} +3 -3
  73. package/dist/chunk-XLAHRN4B.js +1 -0
  74. package/dist/chunk-XS2ORMUG.js +32 -0
  75. package/dist/{chunk-6AWIUO2Z.js → chunk-Y6SHFILE.js} +1 -1
  76. package/dist/{chunk-FTSEP7Q3.js → chunk-YEX5RAEU.js} +3 -3
  77. package/dist/{chunk-AJG74ZZV.js → chunk-YRQS7VAH.js} +1 -1
  78. package/dist/{chunk-DLM4FFNH.js → chunk-ZQSCMYZO.js} +1 -1
  79. package/dist/client/index.js +4 -4
  80. package/dist/contracts/campaign-normalize.d.ts +2 -0
  81. package/dist/contracts/entries.d.ts +1 -1
  82. package/dist/contracts/frame-ready.d.ts +23 -0
  83. package/dist/contracts/funnels.d.ts +576 -0
  84. package/dist/contracts/inbox.d.ts +42 -0
  85. package/dist/contracts/llms.d.ts +200 -0
  86. package/dist/contracts/portfolio.d.ts +361 -8
  87. package/dist/contracts/publication-branding.d.ts +10 -2
  88. package/dist/contracts/site-cache.d.ts +2 -0
  89. package/dist/fleet/index.js +6 -6
  90. package/dist/forms/index.js +9 -9
  91. package/dist/forms/server.js +2 -2
  92. package/dist/images/index.js +4 -4
  93. package/dist/index.js +1 -1
  94. package/dist/landing/contract.d.ts +2 -13
  95. package/dist/landing/contract.js +2 -0
  96. package/dist/landing/index.js +4 -2
  97. package/dist/landing/managed-server.d.ts +21 -0
  98. package/dist/landing/managed.d.ts +11 -0
  99. package/dist/landing/metadata.js +2 -0
  100. package/dist/landing/server.d.ts +5 -0
  101. package/dist/landing/server.js +20 -2
  102. package/dist/layout/client.js +9 -9
  103. package/dist/layout/index.js +10 -10
  104. package/dist/llms/contract.js +2 -1
  105. package/dist/llms/index.js +9 -7
  106. package/dist/llms/merge.d.ts +29 -0
  107. package/dist/maps/index.js +3 -3
  108. package/dist/mcp/sonor.js +9 -8
  109. package/dist/og/pages.d.ts +3 -3
  110. package/dist/portfolio/contract.js +705 -1
  111. package/dist/press-kit/articles/article-body.d.ts +12 -0
  112. package/dist/press-kit/articles/article-heading-ids.d.ts +7 -0
  113. package/dist/press-kit/articles/article-headings.d.ts +61 -0
  114. package/dist/press-kit/articles/html-tags.d.ts +46 -0
  115. package/dist/press-kit/articles/types.d.ts +2 -0
  116. package/dist/revalidate/index.js +3 -3
  117. package/dist/runtime/index.js +3 -3
  118. package/dist/seo/client.js +6 -6
  119. package/dist/seo/index.js +14 -13
  120. package/dist/seo/llms/contract.js +2 -1
  121. package/dist/seo/llms.js +9 -7
  122. package/dist/seo/meta/contract.js +2 -1
  123. package/dist/seo/register-sitemap-cli.js +1 -1
  124. package/dist/seo/server.js +5 -4
  125. package/dist/seo/sitemap.js +7 -5
  126. package/dist/seo-meta/contract.js +2 -1
  127. package/dist/server/index.js +3 -3
  128. package/dist/{server-api-EGOKC7Q3.js → server-api-XIKDWSNO.js} +2 -2
  129. package/dist/shared/build-entries.d.ts +3 -1
  130. package/dist/shared/frame.d.ts +1 -1
  131. package/dist/shared/markdown.d.ts +7 -6
  132. package/dist/shared/source-graph.d.ts +5 -5
  133. package/dist/shared/version.d.ts +1 -1
  134. package/dist/signal/index.js +2 -2
  135. package/dist/sitemap/index.js +7 -5
  136. package/dist/sitemap/shared.d.ts +1 -2
  137. package/dist/slots/index.js +2 -2
  138. package/dist/sync/index.js +5 -5
  139. package/dist/website/contract.js +2 -1
  140. package/dist/website/images.js +4 -4
  141. package/dist/website/index.js +10 -9
  142. package/dist/website/landing/server.js +20 -2
  143. package/dist/website/landing.js +4 -2
  144. package/dist/website/popups.js +9 -8
  145. package/dist/website/slots.js +2 -2
  146. package/dist/{writeLLMsTxt-KHVHNSDM.js → writeLLMsTxt-4HHUAOA6.js} +6 -4
  147. package/docs.json +5 -0
  148. package/package.json +1 -1
  149. package/src/analytics/README.md +1 -1
  150. package/src/landing/README.md +64 -0
  151. package/src/llms/README.md +52 -20
  152. package/dist/SiteChat-3MKYL2XM.js +0 -6
  153. package/dist/SiteDesignReporter-AJDIBNHI.js +0 -12
  154. package/dist/SitemapSync-UJA6JVPW.js +0 -9
  155. package/dist/article-tables-6XHVULPU.js +0 -2
  156. package/dist/chunk-EKBEOXTH.js +0 -114
  157. package/dist/chunk-NZ4RXN3G.js +0 -145
  158. package/dist/chunk-OSYCOC3K.js +0 -21
  159. /package/dist/{chunk-7ZWO5HDQ.js → chunk-BTHEQDN4.js} +0 -0
  160. /package/dist/{chunk-BQR4IPBW.js → chunk-ISRBSTB7.js} +0 -0
  161. /package/dist/{chunk-IHG36STL.js → chunk-XHYE24HU.js} +0 -0
@@ -0,0 +1,12 @@
1
+ import type { Article } from './types';
2
+ /**
3
+ * Single source of truth for the HTML an article renders: the stock `Article`
4
+ * and the RSS and Atom feeds all read the body through here, so a fix to the
5
+ * rule lands in all three.
6
+ *
7
+ * `content_html` is the only field Press Kit renders as HTML. Sonor sanitizes
8
+ * it at its public read path (live since 2026-10-20). `content` is the source
9
+ * text, which Sonor doesn't sanitize, so it is never rendered, not even as a
10
+ * fallback. A blank `content_html` means no body.
11
+ */
12
+ export declare function articleBodyHtml(post: Pick<Article, 'content_html'>): string;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Writes the `id` attributes the table of contents links to. Server only: it
3
+ * lives apart from article-headings.ts, which the client table of contents
4
+ * imports, so the client bundle doesn't carry the writer.
5
+ */
6
+ /** Add `id` attributes to h2-h4 that lack them so TOC anchor links work. */
7
+ export declare function injectHeadingIds(html: string): string;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Reading the headings of an article body: the scan, the id a heading carries
3
+ * and the table of contents. Heading ids are written by `injectHeadingIds`
4
+ * (article-heading-ids.ts), which reads the same headings through the same scan
5
+ * and finds tags the same way as every other Press Kit string transform (see
6
+ * html-tags.ts), so the ids written into the body and the ids the table of
7
+ * contents links to come from one scan.
8
+ *
9
+ * The client table of contents (TableOfContents.tsx) imports this file, so it
10
+ * is in the client entry's eager graph, under a bundle budget
11
+ * (scripts/bundle-baseline.json). Keep code only the server needs, such as the
12
+ * writer, out of it: a shared chunk ships every export either side uses.
13
+ */
14
+ import type { TocItem } from './types';
15
+ /**
16
+ * The value of attribute `name` in an open tag's attributes (the string
17
+ * `openTagAttributes` returns), or null when the tag doesn't have it. Reads
18
+ * attributes the way HTML does, so a quoted value runs to its closing quote:
19
+ * `title="see id=x"` has no `id`, `data-id` is not `id`, and the first of a
20
+ * repeated attribute wins. A bare attribute (`<h2 id>`) is the empty string.
21
+ * The value is as written, entities and all.
22
+ */
23
+ export declare function openTagAttribute(attributes: string, name: string): string | null;
24
+ export declare function slugify(text: string): string;
25
+ export interface ArticleHeading {
26
+ /** 2, 3 or 4. */
27
+ level: number;
28
+ /** The open tag's attributes, as written. */
29
+ attributes: string;
30
+ /** Everything between the open and the close tag, markup included. */
31
+ inner: string;
32
+ /** Index of the open tag in the scanned string. */
33
+ start: number;
34
+ /** Index just past the close tag. */
35
+ end: number;
36
+ }
37
+ /**
38
+ * The `<h2>` to `<h4>` headings of an article body, in order. A heading is an
39
+ * open tag, then the first `</h2>` to `</h4>` after it on the same line; one
40
+ * whose text breaks across lines isn't matched, and neither is anything nested
41
+ * inside a match. Both ends are found as tags, so a `</h2>` written inside a
42
+ * quoted attribute or a comment doesn't close a heading, and a heading tag that
43
+ * never closes (see html-tags.ts) isn't a heading.
44
+ *
45
+ * One pass over the tags, linear in the length of the body: the open tags wait
46
+ * in a list until the next end tag, which is the first end tag after every one
47
+ * of them, and the "same line" test asks for the first line break at or after
48
+ * a position, which moves forward only. A rescan to the next end tag for each
49
+ * open tag, or a search of each heading's text for a line break, is quadratic
50
+ * on a body of unclosed headings.
51
+ */
52
+ export declare function scanHeadings(html: string): ArticleHeading[];
53
+ /**
54
+ * The `id` a heading carries in its own markup, or null. Single source of truth
55
+ * for "this heading keeps its id": `injectHeadingIds` leaves such a heading
56
+ * alone and `generateTableOfContents` links to that id, so the two can't
57
+ * disagree about which headings have one.
58
+ */
59
+ export declare function ownId(attributes: string): string | null;
60
+ /** One entry per heading, linking to its own `id` when it has one and to the slug of its text when it doesn't. */
61
+ export declare function generateTableOfContents(html: string): TocItem[];
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Single source of truth for finding tags in article HTML. Every string
3
+ * transform in Press Kit that has to know where a tag starts and ends (table
4
+ * wrappers, heading ids, external link targets, the table of contents, the
5
+ * table labels, the feed text) goes through here, so none of them ends a tag
6
+ * somewhere the HTML tokenizer doesn't. Don't write another `<tag[^>]*>`
7
+ * pattern: use these.
8
+ *
9
+ * The pattern follows the tokenizer's tag states, not a scanner's idea of
10
+ * quotes:
11
+ * - A quote opens an attribute value only right after `=`. Anywhere else it
12
+ * is an ordinary character of an attribute name or an unquoted value
13
+ * (`<a x=a"b y="c">` has two attributes, `x` = `a"b` and `y` = `c`).
14
+ * - A `>` inside a quoted value is part of the value.
15
+ * - A tag whose value, name or body never closes is dropped by the browser
16
+ * along with the rest of the document, because everything after it is
17
+ * still inside the tag. `htmlTags()` matches that tail as one token and
18
+ * `htmlTagName()` gives '' for it, so a transform skips it instead of
19
+ * rewriting text a browser treats as attribute data (an inserted `"` would
20
+ * close a quote the browser still has open and turn the tail into markup).
21
+ * - Whitespace is HTML's five characters, not JS `\s` (U+00A0 and the other
22
+ * Unicode spaces belong to names and values).
23
+ * - Comments close at `-->`, `--!>`, `<!-->` and `<!--->`. `<!x>`, `<?x>`
24
+ * and `</ x>` are comments that end at the first `>`.
25
+ *
26
+ * Every piece below is unambiguous at its first character and every name or
27
+ * value ends in a lookahead, so the pattern backtracks in linear time even on
28
+ * a tag that never closes. Keep it that way when you change it.
29
+ */
30
+ /**
31
+ * Match complete tags and comments, without reserializing HTML. An unclosed
32
+ * tag at the end of the input matches as one token that runs to the end; its
33
+ * `htmlTagName()` is ''.
34
+ */
35
+ export declare function htmlTags(): RegExp;
36
+ /** The lowercased element name of a complete tag token from `htmlTags()`, or '' for a comment or an unclosed tag. */
37
+ export declare function htmlTagName(token: string): string;
38
+ /** Whether a tag token from `htmlTags()` is an end tag such as `</a>`. */
39
+ export declare function isClosingTag(tag: string): boolean;
40
+ /**
41
+ * Everything between an open tag's name and its closing `>`, exactly as
42
+ * written: `<a href="x">` gives ` href="x"`. Quoted `>` characters are inside it.
43
+ */
44
+ export declare function openTagAttributes(tag: string): string;
45
+ /** Remove every tag and comment, keeping the text between them. */
46
+ export declare function stripHtmlTags(html: string): string;
@@ -33,7 +33,9 @@ export interface Article {
33
33
  title: string;
34
34
  subtitle?: string;
35
35
  excerpt?: string;
36
+ /** Source text. Not a render field: Sonor doesn't sanitize it, and Press Kit never renders it as HTML. */
36
37
  content: string;
38
+ /** The article body, the only field Press Kit renders as HTML. Sonor sanitizes it at its public read path (live since 2026-10-20). */
37
39
  content_html?: string;
38
40
  /** Complete promotional image, including composed share-card text when generated. */
39
41
  featured_image?: string;
@@ -1,7 +1,7 @@
1
- import { createSeoRevalidationHandler } from '../chunk-YNBRVVTX.js';
1
+ import { createSeoRevalidationHandler } from '../chunk-THXELZTQ.js';
2
2
  import '../chunk-XTRZGXB2.js';
3
- export { SITE_CACHE_TAGS, SITE_REVALIDATE_PATH, isSiteRevalidatePong } from '../chunk-6KU7STM3.js';
4
- import '../chunk-BUE3Z32O.js';
3
+ export { SITE_CACHE_TAGS, SITE_REVALIDATE_PATH, isSiteRevalidatePong } from '../chunk-HY7ZEU2C.js';
4
+ import '../chunk-F6WLHVMQ.js';
5
5
  import '../chunk-PKBMQBKP.js';
6
6
 
7
7
  // src/revalidate/index.ts
@@ -1,8 +1,8 @@
1
1
  import '../chunk-B7T2SFUF.js';
2
2
  export { readAnalyticsIdentity } from '../chunk-5ROTTMBL.js';
3
3
  import '../chunk-5TM3WPCI.js';
4
- export { sonorFetch } from '../chunk-IYCSDFPN.js';
5
- import '../chunk-QQT2T6JQ.js';
4
+ export { sonorFetch } from '../chunk-FLOJUMFR.js';
5
+ import '../chunk-7HW4TZB5.js';
6
6
  export { DEFAULT_SONOR_API_URL, getClientApiConfig, readPublishedApiConfig } from '../chunk-W7OPEMGJ.js';
7
- import '../chunk-BUE3Z32O.js';
7
+ import '../chunk-F6WLHVMQ.js';
8
8
  import '../chunk-PKBMQBKP.js';
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { SitemapSync } from '../chunk-6NXFA7HE.js';
2
+ export { SitemapSync } from '../chunk-OWZWRP7Y.js';
3
3
  import '../chunk-YVKRYQRG.js';
4
- import '../chunk-DLM4FFNH.js';
5
- import '../chunk-EKBEOXTH.js';
6
- import '../chunk-IYCSDFPN.js';
7
- import '../chunk-QQT2T6JQ.js';
4
+ import '../chunk-ZQSCMYZO.js';
5
+ import '../chunk-64XODP7M.js';
6
+ import '../chunk-FLOJUMFR.js';
7
+ import '../chunk-7HW4TZB5.js';
8
8
  import '../chunk-W7OPEMGJ.js';
9
- import '../chunk-BUE3Z32O.js';
9
+ import '../chunk-F6WLHVMQ.js';
10
10
  import '../chunk-PKBMQBKP.js';
package/dist/seo/index.js CHANGED
@@ -1,27 +1,28 @@
1
1
  export { ManagedNoScripts, ManagedScripts } from '../chunk-MVLMXC44.js';
2
- import { pickManagedLlmSchemaForJsonLd } from '../chunk-NZ4RXN3G.js';
2
+ import { pickManagedLlmSchemaForJsonLd } from '../chunk-XAZC2TUD.js';
3
3
  import { withoutSchemaPlaceholders } from '../chunk-VWWITFWM.js';
4
4
  import { safeJsonLd } from '../chunk-4KZ6W3ZH.js';
5
- export { SitemapSync } from '../chunk-6NXFA7HE.js';
6
- import { getManagedMetadata, mergeAlternates } from '../chunk-URJN75ZG.js';
7
- export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-URJN75ZG.js';
8
- import { getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, pruneSchemaTypes } from '../chunk-Y35BWW2C.js';
9
- export { getABTest, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from '../chunk-Y35BWW2C.js';
10
- import '../chunk-BQR4IPBW.js';
5
+ export { SitemapSync } from '../chunk-OWZWRP7Y.js';
6
+ import { getManagedMetadata, mergeAlternates } from '../chunk-XIDWNXZN.js';
7
+ export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-XIDWNXZN.js';
8
+ import { getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, pruneSchemaTypes } from '../chunk-ODOV76VW.js';
9
+ export { getABTest, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from '../chunk-ODOV76VW.js';
10
+ import '../chunk-KIYACQW3.js';
11
+ import '../chunk-ISRBSTB7.js';
11
12
  import '../chunk-MJP63SSS.js';
12
- import '../chunk-6KU7STM3.js';
13
+ import '../chunk-HY7ZEU2C.js';
13
14
  import '../chunk-C7TLGL3R.js';
14
15
  import '../chunk-MH2DSGC6.js';
15
16
  import '../chunk-YVKRYQRG.js';
16
17
  import '../chunk-DIKNRN34.js';
17
18
  import '../chunk-FESKKJAS.js';
18
19
  import '../chunk-A4CC4ZG3.js';
19
- import '../chunk-DLM4FFNH.js';
20
- import '../chunk-EKBEOXTH.js';
21
- import '../chunk-IYCSDFPN.js';
22
- import '../chunk-QQT2T6JQ.js';
20
+ import '../chunk-ZQSCMYZO.js';
21
+ import '../chunk-64XODP7M.js';
22
+ import '../chunk-FLOJUMFR.js';
23
+ import '../chunk-7HW4TZB5.js';
23
24
  import '../chunk-W7OPEMGJ.js';
24
- import '../chunk-BUE3Z32O.js';
25
+ import '../chunk-F6WLHVMQ.js';
25
26
  import '../chunk-PKBMQBKP.js';
26
27
  import { Suspense } from 'react';
27
28
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,2 +1,3 @@
1
- export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, clipAtWordBoundary, isEmittableReviewNode, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../../chunk-NZ4RXN3G.js';
1
+ export { LLMS_DESCRIPTION_MAX_LENGTH, LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, cleanScrapedPageText, clipAtWordBoundary, groupLlmsPages, isEmittableReviewNode, isLlmsListablePage, llmsAbsoluteUrl, llmsBlockquoteSummary, llmsContactLines, llmsPageListNote, llmsPageTitle, pickLlmsPageDescription, pickManagedLlmSchemaForJsonLd, resolveLlmsPageDescription, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag, selectLlmsPages, stripContactDetails, stripPageFiller } from '../../chunk-XAZC2TUD.js';
2
+ import '../../chunk-ISRBSTB7.js';
2
3
  import '../../chunk-PKBMQBKP.js';
package/dist/seo/llms.js CHANGED
@@ -1,20 +1,22 @@
1
- export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-KTMHRXDT.js';
1
+ export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-2WM4TNDF.js';
2
2
  export { buildAiDiscoveryHeaders, wantsLlmsDiscoveryLink } from '../chunk-MTDVV5P3.js';
3
3
  export { AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, buildAiCrawlerRules, createRobotsTxtHandler } from '../chunk-QLTDFUJ7.js';
4
- export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-YNBRVVTX.js';
4
+ export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-THXELZTQ.js';
5
5
  export { AEOBlock, AEOCitedContent, AEOClaim, AEOComparison, AEODefinition, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, DEFAULT_SPEAKABLE_SELECTORS, SpeakableSchema, createSpeakableSchema, getSpeakableSelectorsForPage } from '../chunk-PSAG45YF.js';
6
6
  import '../chunk-XTRZGXB2.js';
7
- export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-V67OD7RW.js';
8
- export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-XA7Q2VQA.js';
9
- import '../chunk-5D7ZISUP.js';
7
+ export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-KG5IEV7I.js';
8
+ export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-EK7P62DT.js';
9
+ import '../chunk-7DYMM6SS.js';
10
+ import '../chunk-IBHBEUZV.js';
10
11
  import '../chunk-4K735O3J.js';
11
12
  import '../chunk-UAYAJPEP.js';
12
- export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-NZ4RXN3G.js';
13
+ export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-XAZC2TUD.js';
13
14
  import '../chunk-4KZ6W3ZH.js';
15
+ import '../chunk-ISRBSTB7.js';
14
16
  import '../chunk-MJP63SSS.js';
15
17
  import '../chunk-YVKRYQRG.js';
16
18
  import '../chunk-FESKKJAS.js';
17
19
  import '../chunk-A4CC4ZG3.js';
18
20
  import '../chunk-W7OPEMGJ.js';
19
- import '../chunk-BUE3Z32O.js';
21
+ import '../chunk-F6WLHVMQ.js';
20
22
  import '../chunk-PKBMQBKP.js';
@@ -1,2 +1,3 @@
1
- export { SEO_META_CONTRACT_VERSION, descriptionProblem, metaHost, namesBrand, stripTitleSuffix, suffixProblem, titleProblem, titleSuffix } from '../../chunk-BQR4IPBW.js';
1
+ import '../../chunk-KIYACQW3.js';
2
+ export { SEO_META_CONTRACT_VERSION, descriptionProblem, metaHost, namesBrand, stripTitleSuffix, suffixProblem, titleProblem, titleSuffix } from '../../chunk-ISRBSTB7.js';
2
3
  import '../../chunk-PKBMQBKP.js';
@@ -458,7 +458,7 @@ async function registerLocalSitemap(options) {
458
458
  }
459
459
  if (options.writeLlms && result.success) {
460
460
  try {
461
- const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-KHVHNSDM.js');
461
+ const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-4HHUAOA6.js');
462
462
  const written = await writeLLMsTxtToPublic({
463
463
  // Resolved here too: the sync's own `site` is scoped to the branch that
464
464
  // posts, and this runs on the skip path as well.
@@ -1,8 +1,9 @@
1
- export { generateSitemap, getManagedMetadata, getManagedMetadataWithAB, registerLocalSitemap } from '../chunk-URJN75ZG.js';
2
- export { getABTest, getFAQData, getInternalLinks, getManagedScripts, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, recordABImpression, registerSitemap } from '../chunk-Y35BWW2C.js';
3
- import '../chunk-BQR4IPBW.js';
1
+ export { generateSitemap, getManagedMetadata, getManagedMetadataWithAB, registerLocalSitemap } from '../chunk-XIDWNXZN.js';
2
+ export { getABTest, getFAQData, getInternalLinks, getManagedScripts, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, recordABImpression, registerSitemap } from '../chunk-ODOV76VW.js';
3
+ import '../chunk-KIYACQW3.js';
4
+ import '../chunk-ISRBSTB7.js';
4
5
  import '../chunk-MJP63SSS.js';
5
- import '../chunk-6KU7STM3.js';
6
+ import '../chunk-HY7ZEU2C.js';
6
7
  import '../chunk-C7TLGL3R.js';
7
8
  import '../chunk-MH2DSGC6.js';
8
9
  import '../chunk-DIKNRN34.js';
@@ -1,11 +1,13 @@
1
- export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-ZZSAWXWD.js';
2
- import '../chunk-V67OD7RW.js';
3
- import '../chunk-XA7Q2VQA.js';
1
+ export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-IDC5CVBR.js';
2
+ import '../chunk-KG5IEV7I.js';
3
+ import '../chunk-EK7P62DT.js';
4
4
  import '../chunk-Z22QVHT4.js';
5
- import '../chunk-5D7ZISUP.js';
5
+ import '../chunk-7DYMM6SS.js';
6
+ import '../chunk-IBHBEUZV.js';
6
7
  import '../chunk-4K735O3J.js';
7
8
  import '../chunk-UAYAJPEP.js';
8
- import '../chunk-NZ4RXN3G.js';
9
+ import '../chunk-XAZC2TUD.js';
10
+ import '../chunk-ISRBSTB7.js';
9
11
  import '../chunk-MJP63SSS.js';
10
12
  import '../chunk-ZEGVKVD5.js';
11
13
  import '../chunk-YVKRYQRG.js';
@@ -1,2 +1,3 @@
1
- export { SEO_META_CONTRACT_VERSION, descriptionProblem, metaHost, namesBrand, stripTitleSuffix, suffixProblem, titleProblem, titleSuffix } from '../chunk-BQR4IPBW.js';
1
+ import '../chunk-KIYACQW3.js';
2
+ export { SEO_META_CONTRACT_VERSION, descriptionProblem, metaHost, namesBrand, stripTitleSuffix, suffixProblem, titleProblem, titleSuffix } from '../chunk-ISRBSTB7.js';
2
3
  import '../chunk-PKBMQBKP.js';
@@ -1,8 +1,8 @@
1
1
  import '../chunk-34ZYJTQR.js';
2
- export { resolveClientCredential } from '../chunk-JSW42BHL.js';
2
+ export { resolveClientCredential } from '../chunk-M5JIHQ42.js';
3
3
  import '../chunk-UAYAJPEP.js';
4
- export { SITE_CACHE_TAGS } from '../chunk-6KU7STM3.js';
4
+ export { SITE_CACHE_TAGS } from '../chunk-HY7ZEU2C.js';
5
5
  export { isNextControlFlow, requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-C7TLGL3R.js';
6
6
  import '../chunk-MH2DSGC6.js';
7
- import '../chunk-BUE3Z32O.js';
7
+ import '../chunk-F6WLHVMQ.js';
8
8
  import '../chunk-PKBMQBKP.js';
@@ -1,6 +1,6 @@
1
- export { ensureMetadata, getABTest, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from './chunk-Y35BWW2C.js';
1
+ export { ensureMetadata, getABTest, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from './chunk-ODOV76VW.js';
2
2
  import './chunk-MJP63SSS.js';
3
- import './chunk-6KU7STM3.js';
3
+ import './chunk-HY7ZEU2C.js';
4
4
  import './chunk-C7TLGL3R.js';
5
5
  import './chunk-MH2DSGC6.js';
6
6
  import './chunk-DIKNRN34.js';
@@ -145,6 +145,8 @@ export declare const entry: {
145
145
  * illegal in a Next route and broke the module's own documented pattern.
146
146
  */
147
147
  readonly 'landing/server': 'src/landing/server.ts';
148
+ readonly 'landing/contract': 'src/landing/contract.ts';
149
+ readonly 'landing/metadata': 'src/landing/metadata.ts';
148
150
  readonly 'layout/client': 'src/layout/SiteKitClientProviders.tsx';
149
151
  readonly 'client/index': 'src/client/index.ts';
150
152
  /**
@@ -195,7 +197,7 @@ export declare const CLIENT_ENTRIES: readonly ["_client/booking-widget", "_clien
195
197
  * `./client-entry-boundary.test.ts` checks the source graph and
196
198
  * `tsup.config.ts` checks the built files, both from this list.
197
199
  */
198
- export declare const ISOMORPHIC_ENTRIES: readonly ["shared/index", "runtime/index"];
200
+ export declare const ISOMORPHIC_ENTRIES: readonly ["shared/index", "runtime/index", "landing/contract", "landing/metadata"];
199
201
  /**
200
202
  * CLI binaries are consumed via `bin`/`npx`, never imported as typed modules, so they
201
203
  * don't ship `.d.ts`. Everything else in `entry` gets declarations.
@@ -67,7 +67,7 @@ export declare function isTopFrameSameOrigin(): boolean;
67
67
  * someone else's embed, and its activity is not this site's traffic.
68
68
  */
69
69
  export declare function isCrossOriginFrame(): boolean;
70
- export { FRAME_READY_MESSAGE, isFrameReadyMessage, type FrameReadyMessage } from '../contracts/portfolio';
70
+ export { FRAME_READY_MESSAGE, isFrameReadyMessage, type FrameReadyMessage } from '../contracts/frame-ready';
71
71
  /**
72
72
  * Post {@link FRAME_READY_MESSAGE} to the embedder once this page has loaded
73
73
  * and painted (the load event, then two animation frames, so the first frame
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * Markdown as React elements, from `marked`'s lexer.
3
3
  *
4
- * site-kit's one markdown library is `marked` (7.0). Articles render its HTML
5
- * on the server; chat messages come from Echo and from people, so they're
6
- * rendered here as React elements instead: raw HTML in a message shows as
7
- * text, and a link only keeps an http(s), mailto or tel address. That's the
8
- * same safety react-markdown gave the chat widget, without installing its
9
- * remark/micromark tree into every site.
4
+ * site-kit's one markdown library is `marked` (7.0). Chat messages come from
5
+ * Echo and from people, so they're rendered here as React elements: raw HTML
6
+ * in a message shows as text, and a link only keeps an http(s), mailto or tel
7
+ * address. That's the same safety react-markdown gave the chat widget, without
8
+ * installing its remark/micromark tree into every site. (Articles don't use
9
+ * it: Press Kit renders an article's `content_html` and never converts
10
+ * Markdown.)
10
11
  *
11
12
  * `components` overrides an element the way react-markdown's prop did, so a
12
13
  * caller styles `p`, `a`, `li` and the rest without re-implementing them.
@@ -6,10 +6,10 @@
6
6
  * read only the one file in the site, so any wiring that lived in a helper was
7
7
  * invisible to them:
8
8
  *
9
- * - The MDG property sites (manhattan-development-group/mdg-sites) keep
10
- * their sitemap, robots, metadata and OG helpers in a pnpm workspace
11
- * package, `@mdg/property-template`. geo saw `createSitemap(` in a site's
12
- * sitemap.ts, not the template's `optimizedLLMsTxt: false` behind it, and
9
+ * - Sites in a monorepo can keep their sitemap, robots, metadata and OG
10
+ * helpers in a shared pnpm workspace template package. geo saw
11
+ * `createSitemap(` in a site's sitemap.ts, not the template's
12
+ * `optimizedLLMsTxt: false` behind it, and
13
13
  * failed three sites until each restated the option at the call site. The
14
14
  * doctor never saw the template's `twitter.card`.
15
15
  * - Most sites set `twitter.card` in a `lib/` metadata helper, not the root
@@ -40,7 +40,7 @@ export interface SourceFile {
40
40
  * Drop `//` and block comments, leaving string and template literals alone.
41
41
  *
42
42
  * The checks that read this match on code, and a helper's doc comment is
43
- * prose about the thing, not the thing: MDG's template sitemap explains that
43
+ * prose about the thing, not the thing: one template's sitemap explains that
44
44
  * the kit "writes public/llms.txt" in its header comment, and geo read that
45
45
  * as the sitemap listing `/llms.txt`.
46
46
  */
@@ -7,4 +7,4 @@
7
7
  * it matches package.json at publish time, and version.test.ts asserts it in
8
8
  * dev, so it can't silently drift.
9
9
  */
10
- export declare const SITE_KIT_VERSION = "8.6.0";
10
+ export declare const SITE_KIT_VERSION = "8.8.0";
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- import { useSignalExperiment, useSignalEvent } from '../chunk-OFSV5TZY.js';
3
- export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-OFSV5TZY.js';
2
+ import { useSignalExperiment, useSignalEvent } from '../chunk-SHAUX2MQ.js';
3
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-SHAUX2MQ.js';
4
4
  import '../chunk-PKBMQBKP.js';
5
5
  import React, { useEffect } from 'react';
6
6
  import { jsx, Fragment } from 'react/jsx-runtime';
@@ -1,11 +1,13 @@
1
- export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-ZZSAWXWD.js';
2
- import '../chunk-V67OD7RW.js';
3
- import '../chunk-XA7Q2VQA.js';
1
+ export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-IDC5CVBR.js';
2
+ import '../chunk-KG5IEV7I.js';
3
+ import '../chunk-EK7P62DT.js';
4
4
  import '../chunk-Z22QVHT4.js';
5
- import '../chunk-5D7ZISUP.js';
5
+ import '../chunk-7DYMM6SS.js';
6
+ import '../chunk-IBHBEUZV.js';
6
7
  import '../chunk-4K735O3J.js';
7
8
  import '../chunk-UAYAJPEP.js';
8
- import '../chunk-NZ4RXN3G.js';
9
+ import '../chunk-XAZC2TUD.js';
10
+ import '../chunk-ISRBSTB7.js';
9
11
  import '../chunk-MJP63SSS.js';
10
12
  import '../chunk-ZEGVKVD5.js';
11
13
  import '../chunk-YVKRYQRG.js';
@@ -42,8 +42,7 @@ export declare function stripTrailingSlash(path: string): string;
42
42
  * With `trailingSlash: true`, Next 308-redirects `/about` to `/about/`. Every
43
43
  * URL the kit emits for a page has to carry the slash already, or crawlers
44
44
  * get a redirect instead of the page and the sitemap disagrees with the
45
- * canonicals. That's what happened on the five MDG property sites
46
- * (2026-09-15).
45
+ * canonicals. That's what happened on five property sites (2026-09-15).
47
46
  *
48
47
  * Mirrors the redirects Next adds in `lib/load-custom-routes`:
49
48
  * - `/` stays `/`.
@@ -1,7 +1,7 @@
1
- export { ManagedLink, ManagedList, ManagedRichText, ManagedSlot, SLOTS_CACHE_TAG, createSlotsRevalidateHandler, ManagedSlot_default as default, getSlot, renderSlotRichText, resolveSlots } from '../chunk-3RDJKIYO.js';
1
+ export { ManagedLink, ManagedList, ManagedRichText, ManagedSlot, SLOTS_CACHE_TAG, createSlotsRevalidateHandler, ManagedSlot_default as default, getSlot, renderSlotRichText, resolveSlots } from '../chunk-2WDWQI7K.js';
2
2
  export { SLOTS_CONTRACT_VERSION, signSlotContent, slotSigningPayload, verifySlotContent } from '../chunk-VCJYLYJV.js';
3
3
  export { SLOT_CONTENT_MAX_LENGTH, SLOT_CONTENT_TYPES, SLOT_ID_PATTERN, SLOT_LIST_MAX_ITEMS, isSafeSlotHref, isValidSlotId, normalizeSlotValue, parseSlotRichText } from '../chunk-LPH5FANE.js';
4
- import '../chunk-6KU7STM3.js';
4
+ import '../chunk-HY7ZEU2C.js';
5
5
  import '../chunk-C7TLGL3R.js';
6
6
  import '../chunk-MH2DSGC6.js';
7
7
  import '../chunk-PKBMQBKP.js';
@@ -1,9 +1,9 @@
1
- export { BookingWidget } from '../chunk-QNOJSSQT.js';
2
- export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-72F44HKL.js';
1
+ export { BookingWidget } from '../chunk-6DXQHNZK.js';
2
+ export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-PSS6M4CG.js';
3
3
  import '../chunk-5ROTTMBL.js';
4
4
  import '../chunk-5TM3WPCI.js';
5
- import '../chunk-IYCSDFPN.js';
6
- import '../chunk-QQT2T6JQ.js';
5
+ import '../chunk-FLOJUMFR.js';
6
+ import '../chunk-7HW4TZB5.js';
7
7
  import '../chunk-W7OPEMGJ.js';
8
- import '../chunk-BUE3Z32O.js';
8
+ import '../chunk-F6WLHVMQ.js';
9
9
  import '../chunk-PKBMQBKP.js';
@@ -1,3 +1,4 @@
1
- export { DESIGN_TOKENS_VERSION, POPUP_BLOCK_LIMITS, POPUP_BLOCK_TYPES, designTokenCssVars, designTokensHash, isSafePopupUrl, mixHex, normalizeDesignTokens, normalizePopupBlocks, popupBlocksText, popupHtmlText, readableOn, sanitizePopupHtml, toHexColor } from '../chunk-IHG36STL.js';
1
+ import '../chunk-XLAHRN4B.js';
2
+ export { DESIGN_TOKENS_VERSION, POPUP_BLOCK_LIMITS, POPUP_BLOCK_TYPES, designTokenCssVars, designTokensHash, isSafePopupUrl, mixHex, normalizeDesignTokens, normalizePopupBlocks, popupBlocksText, popupHtmlText, readableOn, sanitizePopupHtml, toHexColor } from '../chunk-XHYE24HU.js';
2
3
  import '../chunk-S22FSH7C.js';
3
4
  import '../chunk-PKBMQBKP.js';
@@ -1,6 +1,6 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-CMUD37WV.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-SVHPILS3.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-IYCSDFPN.js';
4
- import '../chunk-QQT2T6JQ.js';
5
- import '../chunk-BUE3Z32O.js';
3
+ import '../chunk-FLOJUMFR.js';
4
+ import '../chunk-7HW4TZB5.js';
5
+ import '../chunk-F6WLHVMQ.js';
6
6
  import '../chunk-PKBMQBKP.js';
@@ -1,14 +1,15 @@
1
1
  'use client';
2
- export { SiteDesignReporter } from '../chunk-DSD3XZQQ.js';
3
- export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-NUXXFCIT.js';
4
- export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-BF7TZYC3.js';
5
- import '../chunk-IHG36STL.js';
2
+ export { SiteDesignReporter } from '../chunk-6BFQI3ZE.js';
3
+ export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-URLTBVRX.js';
4
+ export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-52KO4LKD.js';
5
+ import '../chunk-XLAHRN4B.js';
6
+ import '../chunk-XHYE24HU.js';
6
7
  import '../chunk-YC7ELZS3.js';
7
8
  import '../chunk-S22FSH7C.js';
8
- import '../chunk-DLM4FFNH.js';
9
- import '../chunk-EKBEOXTH.js';
10
- import '../chunk-IYCSDFPN.js';
11
- import '../chunk-QQT2T6JQ.js';
9
+ import '../chunk-ZQSCMYZO.js';
10
+ import '../chunk-64XODP7M.js';
11
+ import '../chunk-FLOJUMFR.js';
12
+ import '../chunk-7HW4TZB5.js';
12
13
  import '../chunk-W7OPEMGJ.js';
13
- import '../chunk-BUE3Z32O.js';
14
+ import '../chunk-F6WLHVMQ.js';
14
15
  import '../chunk-PKBMQBKP.js';
@@ -1,3 +1,21 @@
1
- import '../../chunk-7ZWO5HDQ.js';
2
- export { landingPageMetadata, normalizeCampaignSlug } from '../../chunk-OSYCOC3K.js';
1
+ export { FunnelPageContent, ManagedFunnelPage, getPublishedFunnelPage, managedFunnelMetadata } from '../../chunk-AYQEIMGS.js';
2
+ import '../../chunk-XS2ORMUG.js';
3
+ import '../../chunk-PAYCK7FC.js';
4
+ export { normalizeCampaignSlug } from '../../chunk-3MJNBOUO.js';
5
+ export { landingPageMetadata } from '../../chunk-JESLPEST.js';
6
+ import '../../chunk-XHYE24HU.js';
7
+ import '../../chunk-YRQS7VAH.js';
8
+ import '../../chunk-SLFYTELD.js';
9
+ import '../../chunk-C2FZBUSS.js';
10
+ import '../../chunk-YC7ELZS3.js';
11
+ import '../../chunk-VPZJ7ZTL.js';
12
+ import '../../chunk-DXO6SBMD.js';
13
+ import '../../chunk-CVADNHJ4.js';
14
+ import '../../chunk-TYSIAWC3.js';
15
+ import '../../chunk-HW7B43E5.js';
16
+ import '../../chunk-NJCTQH2P.js';
17
+ import '../../chunk-C7TLGL3R.js';
18
+ import '../../chunk-MH2DSGC6.js';
19
+ import '../../chunk-S22FSH7C.js';
20
+ import '../../chunk-A4CC4ZG3.js';
3
21
  import '../../chunk-PKBMQBKP.js';
@@ -1,3 +1,5 @@
1
- export { LandingPage } from '../chunk-JJ4JS3LD.js';
2
- export { landingPageMetadata, normalizeCampaignSlug } from '../chunk-OSYCOC3K.js';
1
+ import '../chunk-BTHEQDN4.js';
2
+ export { LandingPage } from '../chunk-PAYCK7FC.js';
3
+ export { normalizeCampaignSlug } from '../chunk-3MJNBOUO.js';
4
+ export { landingPageMetadata } from '../chunk-JESLPEST.js';
3
5
  import '../chunk-PKBMQBKP.js';
@@ -1,17 +1,18 @@
1
1
  'use client';
2
- export { SitePopups } from '../chunk-FTSEP7Q3.js';
2
+ export { SitePopups } from '../chunk-YEX5RAEU.js';
3
3
  import '../chunk-27FISYK4.js';
4
- export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-BF7TZYC3.js';
5
- import '../chunk-IHG36STL.js';
4
+ export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-52KO4LKD.js';
5
+ import '../chunk-XLAHRN4B.js';
6
+ import '../chunk-XHYE24HU.js';
6
7
  import '../chunk-5ROTTMBL.js';
7
8
  import '../chunk-S22FSH7C.js';
8
9
  import '../chunk-IPQKQEWI.js';
9
10
  import '../chunk-GJWI74ZZ.js';
10
11
  import '../chunk-5TM3WPCI.js';
11
- import '../chunk-DLM4FFNH.js';
12
- import '../chunk-EKBEOXTH.js';
13
- import '../chunk-IYCSDFPN.js';
14
- import '../chunk-QQT2T6JQ.js';
12
+ import '../chunk-ZQSCMYZO.js';
13
+ import '../chunk-64XODP7M.js';
14
+ import '../chunk-FLOJUMFR.js';
15
+ import '../chunk-7HW4TZB5.js';
15
16
  import '../chunk-W7OPEMGJ.js';
16
- import '../chunk-BUE3Z32O.js';
17
+ import '../chunk-F6WLHVMQ.js';
17
18
  import '../chunk-PKBMQBKP.js';