@sonordev/site-kit 7.1.0 → 7.1.2

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 (225) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +21 -3426
  3. package/agent-manifest.json +1 -1
  4. package/dist/{AnalyticsProvider-ZMQUV33M.js → AnalyticsProvider-ZB33W6MC.js} +4 -4
  5. package/dist/{ArticleViewTracker-V7NUXYBY.js → ArticleViewTracker-GMHYLLLZ.js} +3 -3
  6. package/dist/{BlocksPopup-52EU7OUY.js → BlocksPopup-EA6LYL25.js} +4 -4
  7. package/dist/{ChatWidget-5BHMNR57.js → ChatWidget-UCDWMWCW.js} +5 -5
  8. package/dist/{EngageWidget-PCGLX7SO.js → EngageWidget-7ZYSK4GE.js} +4 -4
  9. package/dist/{FileField-TSFGNAMY.js → FileField-QKA3JB2Q.js} +3 -3
  10. package/dist/{FormSpotlight-XLBWEOTE.js → FormSpotlight-AQTIA5TP.js} +2 -2
  11. package/dist/{FormStage-IJQ5Q2X6.js → FormStage-FDTLTP3B.js} +2 -2
  12. package/dist/ManagedForm-H7BVAH2W.js +14 -0
  13. package/dist/{ManagedNewsletterForm-QAO3POLC.js → ManagedNewsletterForm-J6QSAGGP.js} +4 -4
  14. package/dist/{SignalCore-RBA3VDBL.js → SignalCore-JZNXOLNT.js} +3 -3
  15. package/dist/{SiteDesignReporter-C4LR5X2V.js → SiteDesignReporter-W4EJUSTE.js} +5 -5
  16. package/dist/SitemapSync-XBANGKHZ.js +8 -0
  17. package/dist/SitemapSync.d.ts +1 -1
  18. package/dist/_client/booking-widget.js +5 -5
  19. package/dist/_client/testimonial-section.d.ts +1 -1
  20. package/dist/affiliates/api.d.ts +1 -1
  21. package/dist/affiliates/index.js +3 -3
  22. package/dist/analytics/AnalyticsProvider.d.ts +1 -1
  23. package/dist/analytics/index.js +4 -4
  24. package/dist/analytics/send-gate.d.ts +12 -25
  25. package/dist/articles/Article.d.ts +1 -1
  26. package/dist/articles/ArticleList.d.ts +1 -1
  27. package/dist/articles/ClusterLandingPage.d.ts +2 -2
  28. package/dist/articles/PublicationLayout.d.ts +1 -1
  29. package/dist/articles/PublicationSidebar.d.ts +1 -1
  30. package/dist/articles/RelatedPosts.d.ts +1 -1
  31. package/dist/articles/author-schema.d.ts +1 -1
  32. package/dist/articles/excerpt.d.ts +3 -4
  33. package/dist/articles/index.d.ts +2 -2
  34. package/dist/articles/index.js +1 -1
  35. package/dist/articles/news-sitemap.d.ts +1 -1
  36. package/dist/articles/processArticleHtml.d.ts +1 -1
  37. package/dist/articles/server-core.d.ts +4 -4
  38. package/dist/articles/server-ui.js +1 -1
  39. package/dist/articles/server.d.ts +4 -4
  40. package/dist/articles/types.d.ts +1 -1
  41. package/dist/chat/index.js +5 -5
  42. package/dist/{chunk-U35H2JIQ.js → chunk-3SDOQUUF.js} +2 -2
  43. package/dist/{chunk-F42R35NV.js → chunk-6WIQCXOO.js} +1 -1
  44. package/dist/{chunk-4JQQDCMO.js → chunk-AH5Q262S.js} +1 -1
  45. package/dist/{chunk-OPRBF7VE.js → chunk-CIG5UL2S.js} +1 -1
  46. package/dist/{chunk-EIULXXUJ.js → chunk-CSTQDNGK.js} +4 -4
  47. package/dist/{chunk-YLSEB32F.js → chunk-D5EC5KVO.js} +1 -1
  48. package/dist/{chunk-L2DJD5Y4.js → chunk-ERXXITG4.js} +1 -1
  49. package/dist/{chunk-3XPJKZ6D.js → chunk-HF57LG73.js} +7 -7
  50. package/dist/{chunk-GWUKQ26F.js → chunk-ILU5I6RW.js} +1 -1
  51. package/dist/{chunk-HAG4YIZY.js → chunk-JBE46QJZ.js} +6 -6
  52. package/dist/{chunk-3G2SE2J4.js → chunk-JTU2GOM4.js} +9 -5
  53. package/dist/{chunk-QPEEKFCA.js → chunk-LUXVWITO.js} +2 -2
  54. package/dist/{chunk-7QTMMHUO.js → chunk-M3YEPKP7.js} +1 -1
  55. package/dist/{chunk-XNVSCQ2O.js → chunk-NK4CSJNP.js} +2 -2
  56. package/dist/{chunk-W2CL2DB3.js → chunk-PGMVL4AB.js} +2 -2
  57. package/dist/{chunk-HVH37YPX.js → chunk-PHYMNUJU.js} +1 -1
  58. package/dist/{chunk-GIAOPEN6.js → chunk-Q4W23JYM.js} +1 -1
  59. package/dist/{chunk-J4D6ZXRW.js → chunk-QEDHRBAT.js} +1 -1
  60. package/dist/{chunk-DUAO4Q75.js → chunk-RHNWA34F.js} +2 -2
  61. package/dist/{chunk-LFXVE32I.js → chunk-UXOGCKL6.js} +1 -1
  62. package/dist/{chunk-PLUP2KN5.js → chunk-V3PUVBME.js} +2 -2
  63. package/dist/{chunk-XD3ZQET6.js → chunk-V6FDQLR7.js} +1 -1
  64. package/dist/{chunk-EVFZ7KEW.js → chunk-VDF5DFWT.js} +1 -1
  65. package/dist/{chunk-7MHHWZKC.js → chunk-VGH4MDTU.js} +1 -1
  66. package/dist/{chunk-FLR3EMK6.js → chunk-VLARKWZU.js} +1 -1
  67. package/dist/{chunk-ZETJTCMV.js → chunk-WWSHFRDL.js} +1 -1
  68. package/dist/{chunk-ZIMFQWGJ.js → chunk-YCJT4JJG.js} +3 -3
  69. package/dist/{chunk-3J2ERO3I.js → chunk-YEMPUQVU.js} +2 -2
  70. package/dist/client/index.js +3 -3
  71. package/dist/cms/CmsPreview.d.ts +2 -2
  72. package/dist/cms/index.d.ts +3 -3
  73. package/dist/cms/server-api.d.ts +1 -1
  74. package/dist/cms/types.d.ts +1 -1
  75. package/dist/commerce/EventCheckout.d.ts +1 -1
  76. package/dist/commerce/EventsAgenda.d.ts +3 -3
  77. package/dist/commerce/api.d.ts +1 -1
  78. package/dist/commerce/index.js +4 -4
  79. package/dist/commerce/server.d.ts +3 -4
  80. package/dist/contracts/entries.d.ts +1 -1
  81. package/dist/contracts/fleet.d.ts +9 -9
  82. package/dist/contracts/forms.d.ts +4 -10
  83. package/dist/contracts/llms.d.ts +1 -1
  84. package/dist/contracts/portfolio.d.ts +11 -15
  85. package/dist/contracts/seo-meta.d.ts +11 -12
  86. package/dist/contracts/seo-pages.d.ts +12 -18
  87. package/dist/contracts/site-cache.d.ts +4 -4
  88. package/dist/contracts/sites-normalize.d.ts +2 -4
  89. package/dist/contracts/sites.d.ts +3 -5
  90. package/dist/contracts/slot-content.d.ts +2 -2
  91. package/dist/contracts/slots.d.ts +6 -6
  92. package/dist/contracts/voice.d.ts +56 -0
  93. package/dist/contracts/website.d.ts +2 -2
  94. package/dist/engage/ChatWidget.d.ts +2 -2
  95. package/dist/engage/EchoUiActions.d.ts +3 -3
  96. package/dist/engage/EngageWidget.d.ts +1 -1
  97. package/dist/engage/brand-color.d.ts +1 -1
  98. package/dist/engage/element-rules.d.ts +2 -2
  99. package/dist/engage/index.js +6 -6
  100. package/dist/engage/types.d.ts +3 -3
  101. package/dist/fleet/FleetHeartbeat.d.ts +2 -2
  102. package/dist/fleet/index.js +4 -4
  103. package/dist/forms/FormSpotlight.d.ts +2 -2
  104. package/dist/forms/ManagedForm.d.ts +1 -1
  105. package/dist/forms/StaticForm.d.ts +1 -1
  106. package/dist/forms/field-interactions.d.ts +2 -2
  107. package/dist/forms/form-loaded-at.d.ts +2 -2
  108. package/dist/forms/formsApi.d.ts +2 -2
  109. package/dist/forms/index.d.ts +1 -1
  110. package/dist/forms/index.js +8 -8
  111. package/dist/forms/server.d.ts +1 -1
  112. package/dist/forms/server.js +4 -4
  113. package/dist/forms/static.js +2 -2
  114. package/dist/forms/submitForm.d.ts +1 -1
  115. package/dist/forms/types.d.ts +3 -3
  116. package/dist/images/ManagedFavicon.d.ts +1 -1
  117. package/dist/images/ManagedImage.d.ts +4 -4
  118. package/dist/images/api.d.ts +1 -1
  119. package/dist/images/index.d.ts +2 -2
  120. package/dist/images/index.js +4 -4
  121. package/dist/index.js +1 -1
  122. package/dist/landing/contract.d.ts +3 -4
  123. package/dist/layout/SiteKitClientProviders.d.ts +1 -1
  124. package/dist/layout/SiteKitLayout.d.ts +7 -7
  125. package/dist/layout/client.d.ts +1 -1
  126. package/dist/layout/client.js +7 -7
  127. package/dist/layout/index.js +8 -8
  128. package/dist/layout/types.d.ts +2 -2
  129. package/dist/llms/SpeakableSchema.d.ts +2 -2
  130. package/dist/llms/agent-access.d.ts +2 -2
  131. package/dist/llms/aiRobots.d.ts +4 -4
  132. package/dist/llms/api.d.ts +2 -2
  133. package/dist/llms/generateLLMsTxt.d.ts +1 -1
  134. package/dist/llms/index.js +4 -4
  135. package/dist/llms/links.d.ts +1 -1
  136. package/dist/llms/revalidate.d.ts +1 -1
  137. package/dist/llms/seo-revalidate.d.ts +2 -3
  138. package/dist/llms/types.d.ts +6 -6
  139. package/dist/llms/writeLLMsTxt.d.ts +10 -10
  140. package/dist/manifest/index.d.ts +8 -8
  141. package/dist/maps/index.js +3 -3
  142. package/dist/mcp/WebMcpTools.d.ts +1 -1
  143. package/dist/mcp/report.d.ts +2 -2
  144. package/dist/mcp/serverCard.d.ts +1 -1
  145. package/dist/mcp/sonor.d.ts +5 -6
  146. package/dist/mcp/sonor.js +8 -8
  147. package/dist/mcp/transport.d.ts +1 -2
  148. package/dist/mcp/types.d.ts +4 -5
  149. package/dist/motion/engine.d.ts +2 -3
  150. package/dist/motion/failsafe.d.ts +1 -2
  151. package/dist/motion/gsap.d.ts +2 -2
  152. package/dist/motion/three.d.ts +1 -1
  153. package/dist/og/config.d.ts +4 -4
  154. package/dist/og/contrast.d.ts +2 -2
  155. package/dist/og/pages.d.ts +5 -5
  156. package/dist/og/route-fit.d.ts +2 -2
  157. package/dist/og/route.d.ts +1 -2
  158. package/dist/og/template.d.ts +1 -1
  159. package/dist/proxy/index.d.ts +2 -2
  160. package/dist/proxy/securityHeaders.d.ts +10 -12
  161. package/dist/redirects/index.d.ts +7 -7
  162. package/dist/reputation/TestimonialSection.d.ts +1 -1
  163. package/dist/reputation/api.d.ts +1 -1
  164. package/dist/revalidate/index.js +2 -2
  165. package/dist/robots/index.d.ts +5 -5
  166. package/dist/robots/indexnow.d.ts +2 -3
  167. package/dist/seo/ManagedScripts.d.ts +2 -2
  168. package/dist/seo/client.js +4 -4
  169. package/dist/seo/getManagedMetadata.d.ts +1 -1
  170. package/dist/seo/groundingSchema.d.ts +2 -2
  171. package/dist/seo/index.js +4 -4
  172. package/dist/seo/llms.js +4 -4
  173. package/dist/seo/register-sitemap-cli-impl.d.ts +1 -1
  174. package/dist/seo/register-sitemap-cli.d.ts +1 -1
  175. package/dist/seo/register-sitemap-cli.js +2 -2
  176. package/dist/seo/schema-filter.d.ts +5 -6
  177. package/dist/seo/server-api.d.ts +1 -1
  178. package/dist/seo/sitemap.js +2 -2
  179. package/dist/seo/types.d.ts +4 -4
  180. package/dist/seo/withManagedMetadata.d.ts +4 -4
  181. package/dist/server/index.js +2 -2
  182. package/dist/server/mint-site-token.d.ts +1 -2
  183. package/dist/server/server-fetch.d.ts +5 -5
  184. package/dist/shared/build-entries.d.ts +4 -4
  185. package/dist/shared/frame.d.ts +8 -9
  186. package/dist/shared/fresh-fetch.d.ts +1 -2
  187. package/dist/shared/next-files.d.ts +1 -1
  188. package/dist/shared/publishCredential.d.ts +1 -1
  189. package/dist/shared/uuid.d.ts +1 -2
  190. package/dist/shared/version.d.ts +1 -1
  191. package/dist/shared/visual-viewport-gap.d.ts +2 -2
  192. package/dist/signal/index.js +2 -2
  193. package/dist/site-config/index.d.ts +2 -2
  194. package/dist/sitemap/index.d.ts +13 -13
  195. package/dist/sitemap/index.js +2 -2
  196. package/dist/sitemap/shared.d.ts +3 -3
  197. package/dist/sites/site-param.d.ts +2 -2
  198. package/dist/slots/ManagedRichText.d.ts +1 -1
  199. package/dist/slots/ManagedSlot.d.ts +1 -1
  200. package/dist/slots/index.d.ts +1 -3
  201. package/dist/sync/index.js +5 -5
  202. package/dist/types.d.ts +1 -1
  203. package/dist/{web-vitals.attribution-N2PCCF4Q.js → web-vitals.attribution-GD6LGLVF.js} +1 -1
  204. package/dist/website/PopupBlocks.d.ts +3 -4
  205. package/dist/website/images.js +4 -4
  206. package/dist/website/index.js +5 -5
  207. package/dist/website/popups.js +4 -4
  208. package/dist/{writeLLMsTxt-QR23OQUE.js → writeLLMsTxt-G3JBNBC5.js} +1 -1
  209. package/docs/MIGRATING-TO-7.md +9 -13
  210. package/package.json +1 -1
  211. package/src/admin-auth/README.md +3 -3
  212. package/src/analytics/README.md +7 -9
  213. package/src/articles/README.md +6 -6
  214. package/src/cta-bar/README.md +11 -11
  215. package/src/forms/README.md +10 -8
  216. package/src/llms/README.md +3 -3
  217. package/src/mcp/README.md +7 -7
  218. package/src/motion/README.md +1 -1
  219. package/src/og/README.md +26 -27
  220. package/src/proxy/README.md +14 -14
  221. package/src/seo/README.md +1 -1
  222. package/src/slots/README.md +1 -1
  223. package/src/sync/README.md +1 -1
  224. package/dist/ManagedForm-Z3PKOPIZ.js +0 -14
  225. package/dist/SitemapSync-XVMGKCF3.js +0 -8
package/dist/seo/llms.js CHANGED
@@ -1,10 +1,10 @@
1
- export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-ZETJTCMV.js';
1
+ export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-WWSHFRDL.js';
2
2
  export { buildAiDiscoveryHeaders, wantsLlmsDiscoveryLink } from '../chunk-PO2TRJPY.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-7MHHWZKC.js';
4
+ export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-VGH4MDTU.js';
5
5
  import '../chunk-XTRZGXB2.js';
6
6
  export { AEOBlock, AEOCitedContent, AEOClaim, AEOComparison, AEODefinition, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, DEFAULT_SPEAKABLE_SELECTORS, SpeakableSchema, createSpeakableSchema, getSpeakableSelectorsForPage } from '../chunk-PSAG45YF.js';
7
- export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-J4D6ZXRW.js';
7
+ export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-QEDHRBAT.js';
8
8
  export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-GLHQ3LRO.js';
9
9
  import '../chunk-L5UOHS6E.js';
10
10
  import '../chunk-WMVK77ND.js';
@@ -15,5 +15,5 @@ import '../chunk-MJP63SSS.js';
15
15
  import '../chunk-YVKRYQRG.js';
16
16
  import '../chunk-FESKKJAS.js';
17
17
  import '../chunk-A4CC4ZG3.js';
18
- import '../chunk-4JQQDCMO.js';
18
+ import '../chunk-AH5Q262S.js';
19
19
  import '../chunk-PKBMQBKP.js';
@@ -37,7 +37,7 @@ export type RegisterLocalSitemapOptions = {
37
37
  */
38
38
  brandProfile?: boolean;
39
39
  /**
40
- * The sub-site host these pages belong to (`--site ohiopowerstudies.com`).
40
+ * The sub-site host these pages belong to (`--site ohio.example.com`).
41
41
  * Omit to resolve it the way every other build-time read does:
42
42
  * `NEXT_PUBLIC_SITE_URL`'s host (the CLI loads `.env` / `.env.local`).
43
43
  *
@@ -12,7 +12,7 @@
12
12
  * npx sonor-register-sitemap --write-llms-full # ...and public/llms-full.txt
13
13
  * npx sonor-register-sitemap --write-llms --publication /insights # articles' path, for cluster links
14
14
  * npx sonor-register-sitemap --write-llms --no-agent-access # never add the MCP "Agent access" section
15
- * npx sonor-register-sitemap --auto-discover --site ohiopowerstudies.com # Tag the pages with a sub-site host
15
+ * npx sonor-register-sitemap --auto-discover --site ohio.example.com # Tag the pages with a sub-site host
16
16
  *
17
17
  * The sub-site host defaults to NEXT_PUBLIC_SITE_URL's (from .env / .env.local),
18
18
  * so a multi-site project's microsites tag their pages with no flag.
@@ -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-QR23OQUE.js');
461
+ const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-G3JBNBC5.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.
@@ -527,7 +527,7 @@ async function main() {
527
527
  }
528
528
  if (result.meta_optimization?.triggered) {
529
529
  console.log(`[Sonor] \u2713 Signal AI meta optimization triggered for ${result.meta_optimization.pages_queued} pages`);
530
- console.log(`[Sonor] (Running in background - check Portal SEO module for results)`);
530
+ console.log(`[Sonor] (Running in background - check Sonor SEO module for results)`);
531
531
  }
532
532
  process.exit(0);
533
533
  } else {
@@ -6,12 +6,11 @@
6
6
  * `managed_schema` and entity-graph nodes (`ManagedSchema`).
7
7
  *
8
8
  * `excludeTypes` used to drop a row only when its `schema_type` matched
9
- * exactly, so a node of that type nested INSIDE a row got through. Found
10
- * 2026-09-15 on the MDG Green Bay site: the Georgetown and Westbrooke pages
11
- * carry a page-level row whose JSON-LD embeds a FAQPage for questions the
12
- * page doesn't show, and structured data has to describe visible content.
13
- * `excludeTypes: ['FAQPage']` couldn't touch it; the site template dropped
14
- * FAQPage nodes by hand and re-added the rows. Now an excluded type goes
9
+ * exactly, so a node of that type nested INSIDE a row got through: a
10
+ * page-level row whose JSON-LD embeds a FAQPage for questions the page
11
+ * doesn't show (structured data has to describe visible content) was out of
12
+ * `excludeTypes: ['FAQPage']`'s reach, and sites dropped those nodes by
13
+ * hand. Now an excluded type goes
15
14
  * wherever it sits: a whole row, an `@graph` member, or a nested value
16
15
  * (`mainEntity`, `hasPart`). A row left with nothing in it is dropped.
17
16
  *
@@ -146,7 +146,7 @@ export declare function registerSitemap(entries: Array<{
146
146
  /**
147
147
  * Ensure metadata exists for a page by triggering Signal AI optimization.
148
148
  * If the page has no managed_title or managed_meta_description, Signal will
149
- * generate them and save to the database via Portal proxy.
149
+ * generate them and save to the database via Sonor proxy.
150
150
  *
151
151
  * Idempotent — returns existing metadata if already populated.
152
152
  * @server-only
@@ -1,6 +1,6 @@
1
- export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-HAG4YIZY.js';
1
+ export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-JBE46QJZ.js';
2
2
  import '../chunk-Z22QVHT4.js';
3
- import '../chunk-J4D6ZXRW.js';
3
+ import '../chunk-QEDHRBAT.js';
4
4
  import '../chunk-GLHQ3LRO.js';
5
5
  import '../chunk-L5UOHS6E.js';
6
6
  import '../chunk-WMVK77ND.js';
@@ -26,7 +26,7 @@ export interface SEOPageData {
26
26
  managed_schema?: Record<string, unknown>;
27
27
  /** LLM-optimized schema for AI visibility (detailed descriptions, keywords, etc.) */
28
28
  managed_llm_schema?: Record<string, unknown>;
29
- /** Optional locale → URL map for hreflang (Portal expansion track) */
29
+ /** Optional locale → URL map for hreflang (Sonor expansion track) */
30
30
  language_alternates?: Record<string, string> | null;
31
31
  updated_at: string;
32
32
  }
@@ -108,7 +108,7 @@ export interface ManagedFAQProps {
108
108
  /** Show section title */
109
109
  showTitle?: boolean;
110
110
  /**
111
- * Sub-site host for multi-site projects (e.g. `bd-charlotte.com`): shows that
111
+ * Sub-site host for multi-site projects (e.g. `charlotte.example.com`): shows that
112
112
  * host's FAQ, falling back to a project-wide one. Omit to resolve from
113
113
  * NEXT_PUBLIC_SITE_URL.
114
114
  */
@@ -137,7 +137,7 @@ export interface ManagedInternalLinksProps {
137
137
  /** Custom link renderer */
138
138
  renderLink?: (link: ManagedLink) => React.ReactNode;
139
139
  /**
140
- * Sub-site host for multi-site projects (e.g. `bd-charlotte.com`): shows that
140
+ * Sub-site host for multi-site projects (e.g. `charlotte.example.com`): shows that
141
141
  * host's links plus project-wide ones. Omit to resolve from
142
142
  * NEXT_PUBLIC_SITE_URL.
143
143
  */
@@ -167,7 +167,7 @@ export interface ManagedContentProps {
167
167
  /** Inject entity annotations from knowledge graph (data-sonor-entity attributes) */
168
168
  injectEntityAnnotations?: boolean;
169
169
  /**
170
- * Sub-site host for multi-site projects (e.g. `bd-charlotte.com`): shows that
170
+ * Sub-site host for multi-site projects (e.g. `charlotte.example.com`): shows that
171
171
  * host's block, falling back to a project-wide one. Omit to resolve from
172
172
  * NEXT_PUBLIC_SITE_URL.
173
173
  */
@@ -2,10 +2,10 @@
2
2
  * @sonordev/site-kit/seo - withManagedMetadata
3
3
  *
4
4
  * Higher-order function that wraps Next.js generateMetadata to auto-merge
5
- * Portal-managed SEO data. Portal values serve as defaults; page-level
5
+ * Sonor-managed SEO data. Sonor values serve as defaults; page-level
6
6
  * metadata returned by the caller takes priority.
7
7
  *
8
- * @example Zero-config (Portal manages everything):
8
+ * @example Zero-config (Sonor manages everything):
9
9
  * ```ts
10
10
  * export const generateMetadata = withManagedMetadata('/about')
11
11
  * ```
@@ -32,12 +32,12 @@ type MetadataArgs = {
32
32
  type PathResolver = string | ((args: MetadataArgs) => string | Promise<string>);
33
33
  type PageMetadataFn = (args: MetadataArgs, parent: ResolvingMetadata) => Promise<Metadata> | Metadata;
34
34
  /**
35
- * Wrap generateMetadata to auto-merge Portal managed metadata.
35
+ * Wrap generateMetadata to auto-merge Sonor managed metadata.
36
36
  *
37
37
  * - `path` can be a static string or a function that derives the path
38
38
  * from the page's params.
39
39
  * - `pageMetadata` (optional) returns page-specific overrides.
40
- * Anything it returns wins over Portal values.
40
+ * Anything it returns wins over Sonor values.
41
41
  */
42
42
  export declare function withManagedMetadata(path: PathResolver, pageMetadata?: PageMetadataFn): (args: MetadataArgs, parent: ResolvingMetadata) => Promise<Metadata>;
43
43
  export {};
@@ -1,6 +1,6 @@
1
- export { resolveClientCredential } from '../chunk-F42R35NV.js';
1
+ export { resolveClientCredential } from '../chunk-6WIQCXOO.js';
2
2
  import '../chunk-VX5CMNMM.js';
3
3
  export { requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-X6F6SO4S.js';
4
4
  import '../chunk-MH2DSGC6.js';
5
- import '../chunk-4JQQDCMO.js';
5
+ import '../chunk-AH5Q262S.js';
6
6
  import '../chunk-PKBMQBKP.js';
@@ -33,8 +33,7 @@
33
33
  *
34
34
  * SEED FRESHNESS: a static page's seed carries `iat` = build time, and the API
35
35
  * refuses to refresh a seed older than SITE_TOKEN_MAX_REFRESH_AGE_SECONDS
36
- * (sonor-api common/site-auth/site-token.util.ts — currently 400 days, raised
37
- * from 30 alongside this fix). A site not rebuilt within that window serves a
36
+ * (currently 400 days, raised from 30 alongside this fix). A site not rebuilt within that window serves a
38
37
  * seed the client cannot refresh, and its forms/analytics/engage start failing
39
38
  * for new visitors. Keep that limit comfortably longer than the fleet's
40
39
  * realistic redeploy gap; marketing sites routinely go many months untouched.
@@ -4,7 +4,7 @@
4
4
  * SECURITY: Server-only. Reads SONOR_API_KEY from process.env and injects it as
5
5
  * `x-api-key`. Importing this module into a client component is a hard build
6
6
  * error (see `import 'server-only'` below) — the API key must never reach the
7
- * browser. Project is resolved by the Portal from the API key; sites never send
7
+ * browser. Project is resolved by Sonor from the API key; sites never send
8
8
  * or read a project ID (x-api-key only).
9
9
  *
10
10
  * This is the SINGLE SOURCE OF TRUTH for site-kit's server data plane. It is the
@@ -18,7 +18,7 @@
18
18
  * sibling package. Import it from `@sonordev/site-kit/server` instead.
19
19
  */
20
20
  import 'server-only';
21
- /** Resolved Portal API config. */
21
+ /** Resolved Sonor API config. */
22
22
  export interface ServerApiConfig {
23
23
  apiUrl: string;
24
24
  apiKey: string;
@@ -30,7 +30,7 @@ export interface ResolveServerApiConfigOptions {
30
30
  apiUrl?: string;
31
31
  }
32
32
  /**
33
- * Resolve Portal API config from overrides → env. Returns null (does NOT throw)
33
+ * Resolve Sonor API config from overrides → env. Returns null (does NOT throw)
34
34
  * when no API key is available, so callers that prefer to degrade gracefully
35
35
  * (e.g. portfolio fetchers) can warn-and-skip.
36
36
  *
@@ -46,7 +46,7 @@ export declare function resolveServerApiConfig(options?: ResolveServerApiConfigO
46
46
  */
47
47
  export declare function requireServerApiConfig(options?: ResolveServerApiConfigOptions, errorMessage?: string): ServerApiConfig;
48
48
  /**
49
- * Origin for the Portal API preconnect/dns-prefetch hints (handles a custom
49
+ * Origin for the Sonor API preconnect/dns-prefetch hints (handles a custom
50
50
  * SONOR_API_URL in staging). Shared by SiteKitLayout and AgencySiteKitLayout so
51
51
  * the origin-resolution logic lives in one place.
52
52
  */
@@ -102,7 +102,7 @@ export interface ServerFetchOptions {
102
102
  init?: RequestInit;
103
103
  }
104
104
  /**
105
- * The canonical Portal API fetcher.
105
+ * The canonical Sonor API fetcher.
106
106
  *
107
107
  * - Injects `x-api-key` automatically (resolved from overrides → env)
108
108
  * - JSON request/response
@@ -96,7 +96,7 @@ export declare const entry: {
96
96
  readonly '_client/booking-widget': 'src/sync/BookingWidget.tsx';
97
97
  readonly '_client/testimonial-section': 'src/reputation/TestimonialSection.tsx';
98
98
  readonly 'slots/index': 'src/slots/index.ts';
99
- /** Pure contract + HMAC signing (src/contracts; sonor-api imports @sonordev/contracts/slots) */
99
+ /** Pure contract + HMAC signing (src/contracts; also published as @sonordev/contracts/slots) */
100
100
  readonly 'slots/contract': 'src/slots/contract.ts';
101
101
  readonly 'revalidate/index': 'src/revalidate/index.ts';
102
102
  readonly 'website/index': 'src/website/index.ts';
@@ -127,7 +127,7 @@ export declare const entry: {
127
127
  readonly 'seo/meta/contract': 'src/seo/entry-meta-contract.ts';
128
128
  readonly 'seo/pages/contract': 'src/seo/entry-pages-contract.ts';
129
129
  readonly 'fleet/index': 'src/fleet/index.ts';
130
- /** Pure wire contract (src/contracts; sonor-api imports @sonordev/contracts/fleet) */
130
+ /** Pure wire contract (src/contracts; also published as @sonordev/contracts/fleet) */
131
131
  readonly 'fleet/contract': 'src/fleet/contract.ts';
132
132
  /** Multi-site `site` host normalization + equality */
133
133
  readonly 'sites/contract': 'src/sites/contract.ts';
@@ -175,8 +175,8 @@ export declare const entry: {
175
175
  * SECURITY-CRITICAL. A `'use client'` stamp makes every module the entry reaches
176
176
  * client code *by declaration*, so anything in that graph ships to visitors and
177
177
  * has its `NEXT_PUBLIC_*` reads inlined as literals. `articles/index` (now `articles/index`)
178
- * reaching `articles/server-core` this way is how a raw `sonor_` project key ended up in a
179
- * public `.next/static/chunks/` file of a real upforge-nextjs build.
178
+ * reaching `articles/server-core` this way would put a raw `sonor_` project key in a
179
+ * public `.next/static/chunks/` file of the site's build.
180
180
  *
181
181
  * `./client-entry-boundary.test.ts` asserts none of these can reach a
182
182
  * `server-only` module. Add new client entries HERE — that keeps the stamp and
@@ -9,14 +9,13 @@
9
9
  *
10
10
  * ─── Why it exists ─────────────────────────────────────────────────────────
11
11
  *
12
- * Upforge case studies embed each client's whole production site in three
13
- * eager iframes (agency-site-kit `DeviceTrifolio`), and
14
- * `proxy/securityHeaders.ts`'s DEFAULT_FRAME_ANCESTORS lets upforge.io and
15
- * upforgelabs.com frame every managed site. Inside that frame the client's
16
- * site loads, hydrates and runs its site-kit modules exactly as it would for
17
- * a real visitor — the screenshot overlay covers the PIXELS, not the
18
- * JavaScript. Anything that phones home from there is attributing a visit to
19
- * upforge.io's page to the client's own project. Measured effect, and the
12
+ * Agency case studies embed a client's whole production site in desktop,
13
+ * tablet and mobile iframes, and `proxy/securityHeaders.ts`'s
14
+ * DEFAULT_FRAME_ANCESTORS lets the showcase origins frame every managed site.
15
+ * Inside that frame the client's site loads, hydrates and runs its site-kit
16
+ * modules exactly as it would for a real visitor: a screenshot overlay covers
17
+ * the PIXELS, not the JavaScript. Anything that phones home from there is
18
+ * attributing a visit to the portfolio page to the client's own project. Measured effect, and the
20
19
  * analytics decision built on this: `analytics/send-gate.ts`.
21
20
  *
22
21
  * ─── Detection ─────────────────────────────────────────────────────────────
@@ -46,7 +45,7 @@
46
45
  *
47
46
  * Nesting resolves the way you would want, because these compare against
48
47
  * `window.top` and not `window.parent`: a same-origin frame nested inside a
49
- * cross-origin one (upforge.io → client.com → client.com/widget) is still
48
+ * cross-origin one (portfolio.example → client.com → client.com/widget) is still
50
49
  * correctly reported as a cross-origin embed.
51
50
  */
52
51
  /**
@@ -21,8 +21,7 @@
21
21
  * that directory between builds (Netlify does), so every later build
22
22
  * replays the first response. That's how public/llms.txt shipped a
23
23
  * months-old copy: its fetch carried no option, was cached with a one-year
24
- * revalidate, and each build rewrote the same stale file (found on
25
- * vsfconsultingservices.com, 2026-09-15).
24
+ * revalidate, and each build rewrote the same stale file.
26
25
  *
27
26
  * So we call the original fetch Next keeps on the patched one and stay
28
27
  * invisible to the framework: no bailout, no cache entry, no effect on the
@@ -4,7 +4,7 @@
4
4
  * SINGLE SOURCE OF TRUTH for "find the root layout / a page / the proxy". Each
5
5
  * CLI check used to carry its own candidate list, and the lists drifted: the OG
6
6
  * wiring rule only looked for `app/layout.tsx`, so `doctor` told a site whose
7
- * root layout is `app/layout.jsx` (heinrich-law-nextjs, 2026-09-14) that it had
7
+ * root layout is `app/layout.jsx` that it had
8
8
  * no layout at all. `geo` knew about `.jsx` but not `src/app`, and none of them
9
9
  * knew about `proxy.ts`. Route every lookup through here; never re-fork a list.
10
10
  *
@@ -10,7 +10,7 @@
10
10
  * `@sonordev/agency-site-kit`'s `AgencySiteKitLayout`.
11
11
  *
12
12
  * Do not re-fork this. Before it existed, agency sites hand-rolled their own
13
- * "set the globals on mount" component (upforge's `UptradeSiteKitInit`), and
13
+ * "set the globals on mount" component, and
14
14
  * because those copies had no access to the token manager they published the
15
15
  * RAW `sonor_` key into the client bundle — the exact exposure the mint exists
16
16
  * to prevent. Any layout that puts a credential on `window` goes through here.
@@ -10,8 +10,7 @@
10
10
  * deployed site viewed before its TLS cert provisions — or in older Safari,
11
11
  * `crypto.randomUUID` is `undefined`, so calling it unguarded throws
12
12
  * "crypto.randomUUID is not a function" DURING RENDER and crashes the whole
13
- * page. (Observed live on ramseydeal.com, 2026-07-21, while its cert was
14
- * pending.)
13
+ * page. (Observed live on a site whose cert was still pending.)
15
14
  *
16
15
  * `uuid()` degrades gracefully and NEVER throws:
17
16
  * 1. crypto.randomUUID() — fast path; modern secure contexts.
@@ -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 = "7.1.0";
10
+ export declare const SITE_KIT_VERSION = "7.1.2";
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * Single source of truth for measuring how far the layout viewport extends
5
5
  * below the visual viewport and publishing it as `--sk-vv-layout-gap` on
6
- * <html>. Moved into the kit from queencityriverboats.com and
7
- * destinyyachtcharters.com, which each carried a byte-identical copy.
6
+ * <html>. Moved into the kit from two sites that each carried a
7
+ * byte-identical copy.
8
8
  *
9
9
  * On a phone the two viewports can disagree (browser chrome, in-app browsers,
10
10
  * pinch zoom, an on-screen keyboard), and `position: fixed; bottom: …` is
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- import { useSignalExperiment, useSignalEvent } from '../chunk-HVH37YPX.js';
3
- export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-HVH37YPX.js';
2
+ import { useSignalExperiment, useSignalEvent } from '../chunk-PHYMNUJU.js';
3
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-PHYMNUJU.js';
4
4
  import '../chunk-PKBMQBKP.js';
5
5
  import React, { useEffect } from 'react';
6
6
  import { jsx, Fragment } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Site config from Portal (project-info) by API key.
2
+ * Site config from Sonor (project-info) by API key.
3
3
  * Resolves site_url and domain so consumers only need SONOR_API_KEY.
4
4
  */
5
5
  export interface SiteConfig {
@@ -11,7 +11,7 @@ export interface GetSiteConfigOptions {
11
11
  apiUrl?: string;
12
12
  }
13
13
  /**
14
- * Fetch site_url and domain from Portal project-info for the given API key.
14
+ * Fetch site_url and domain from Sonor project-info for the given API key.
15
15
  * Uses in-memory cache (TTL 10 min) keyed by apiKey.
16
16
  * Safe for Edge (middleware) and Node (route handlers).
17
17
  */
@@ -2,7 +2,7 @@
2
2
  * @sonordev/site-kit - Sitemap Generator
3
3
  *
4
4
  * Automatically generates sitemap.xml from Next.js app directory structure.
5
- * Works at build time to discover all pages and sync them to Portal API.
5
+ * Works at build time to discover all pages and sync them to Sonor API.
6
6
  *
7
7
  * @example
8
8
  * ```ts
@@ -36,10 +36,10 @@ export interface SitemapEntry {
36
36
  images?: string[];
37
37
  }
38
38
  export interface SitemapConfig {
39
- /** Base URL for the site (optional when apiKey is set; then resolved from Portal project-info) */
39
+ /** Base URL for the site (optional when apiKey is set; then resolved from Sonor project-info) */
40
40
  baseUrl?: string;
41
41
  /**
42
- * Sub-site host this build belongs to (e.g. `bd-charlotte.com`) — the
42
+ * Sub-site host this build belongs to (e.g. `charlotte.example.com`) — the
43
43
  * multi-site `site` dimension. One Sonor project can host many domains, and
44
44
  * seo_pages is unique on (project_id, site, url), so shared paths like `/`
45
45
  * and `/terms` keep one row PER HOST. Tagging the sync keeps this build's
@@ -95,11 +95,11 @@ export interface SitemapConfig {
95
95
  resolveGenerateStaticParams?: boolean;
96
96
  /** Priority overrides by path pattern */
97
97
  priorities?: Record<string, number>;
98
- /** Portal API URL for syncing (defaults to SONOR_API_URL or https://api.sonor.io) */
98
+ /** Sonor API URL for syncing (defaults to SONOR_API_URL or https://api.sonor.io) */
99
99
  apiUrl?: string;
100
- /** Portal API key for syncing (defaults to SONOR_API_KEY) */
100
+ /** Sonor API key for syncing (defaults to SONOR_API_KEY) */
101
101
  apiKey?: string;
102
- /** Disable auto-sync to Portal API */
102
+ /** Disable auto-sync to Sonor API */
103
103
  disableSync?: boolean;
104
104
  /** When true, await meta optimization before build completes (for build-time llms.txt with managed_llm_schema) */
105
105
  awaitMetaOptimization?: boolean;
@@ -111,7 +111,7 @@ export interface SitemapConfig {
111
111
  * build. It used to default to 120000ms, which only worked because a stale
112
112
  * Data Cache entry answered the request instantly (see shared/fresh-fetch.ts).
113
113
  *
114
- * The write still often won't fit, and no value here makes it fit. Measured against a 191-page site, Portal takes ~27s for
114
+ * The write still often won't fit, and no value here makes it fit. Measured against a 191-page site, Sonor takes ~27s for
115
115
  * llms.txt and ~53s for llms-full.txt, because it generates each through
116
116
  * Signal's AEO skill (an LLM call). ~80s combined, inside a route Next
117
117
  * allows 60s. Any value low enough to protect the route is too low for the
@@ -123,7 +123,7 @@ export interface SitemapConfig {
123
123
  * dropped from the build — the fix is architectural, not numeric: set
124
124
  * `optimizedLLMsTxt: false` here and call `writeLLMsTxtToPublic` from a
125
125
  * postbuild script instead, where nothing imposes a 60s ceiling. Run it
126
- * after `next build` so the sitemap has already synced to Portal, which is
126
+ * after `next build` so the sitemap has already synced to Sonor, which is
127
127
  * what the generation reads.
128
128
  *
129
129
  * Timing out is safe either way: writeLLMsTxtToPublic never persists a
@@ -136,10 +136,10 @@ export interface SitemapConfig {
136
136
  /**
137
137
  * The llms.txt "Agent access" section (writeLLMsTxtToPublic's `mcp`).
138
138
  * Default: on only for site-kit's built-in MCP server; a site with its own
139
- * (upforge.io) is left alone. `false` forces it off, `true` on.
139
+ * is left alone. `false` forces it off, `true` on.
140
140
  */
141
141
  llmsAgentAccess?: boolean;
142
- /** When Portal returns empty services, use this to supply local site data for llms.txt */
142
+ /** When Sonor returns empty services, use this to supply local site data for llms.txt */
143
143
  getLocalData?: () => Promise<import('../llms/types').LLMsDataResponse | null>;
144
144
  /** Pass-through to GET /api/public/llms/txt?publicSummaryOnly=true and local llms fallback */
145
145
  llmsPublicSummaryOnly?: boolean;
@@ -180,7 +180,7 @@ export interface SyncSitemapOptions {
180
180
  site?: string;
181
181
  }
182
182
  /**
183
- * Sync sitemap entries to Portal API
183
+ * Sync sitemap entries to Sonor API
184
184
  * Called automatically by createSitemap at build time
185
185
  */
186
186
  export declare function syncSitemapToPortal(entries: SitemapEntry[], apiUrl: string, apiKey: string, options?: SyncSitemapOptions): Promise<{
@@ -190,7 +190,7 @@ export declare function syncSitemapToPortal(entries: SitemapEntry[], apiUrl: str
190
190
  }>;
191
191
  /**
192
192
  * Create a sitemap generator function for Next.js
193
- * Automatically syncs to Portal API at build time.
193
+ * Automatically syncs to Sonor API at build time.
194
194
  *
195
195
  * @example
196
196
  * ```ts
@@ -203,7 +203,7 @@ export declare function syncSitemapToPortal(entries: SitemapEntry[], apiUrl: str
203
203
  * ```
204
204
  */
205
205
  /**
206
- * Fetches published portfolio items from Portal API and returns them as sitemap paths.
206
+ * Fetches published portfolio items from Sonor API and returns them as sitemap paths.
207
207
  * Use this in createSitemap's additionalPaths to include portfolio routes.
208
208
  *
209
209
  * @example
@@ -1,6 +1,6 @@
1
- export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-HAG4YIZY.js';
1
+ export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-JBE46QJZ.js';
2
2
  import '../chunk-Z22QVHT4.js';
3
- import '../chunk-J4D6ZXRW.js';
3
+ import '../chunk-QEDHRBAT.js';
4
4
  import '../chunk-GLHQ3LRO.js';
5
5
  import '../chunk-L5UOHS6E.js';
6
6
  import '../chunk-WMVK77ND.js';
@@ -15,8 +15,8 @@
15
15
  * carry it when the site does.
16
16
  *
17
17
  * The copies had already drifted (one treated `''` as the homepage, the others
18
- * didn't; one stripped embedded domains, another only rejected them). Keeping
19
- * one implementation is the CLAUDE.md "consolidate duplicated logic" rule.
18
+ * didn't; one stripped embedded domains, another only rejected them), so
19
+ * there's one implementation now.
20
20
  *
21
21
  * Pure string logic only — NO Node built-ins, NO React — so this file is safe to
22
22
  * import from the browser `SitemapSync` client component AND from the Node CLI.
@@ -100,7 +100,7 @@ export declare function isMalformedSitemapPath(path: string): boolean;
100
100
  * Next gives a prerendered route 60s (`staticPageGenerationTimeout`), then
101
101
  * retries it and fails the build. Sonor generates llms.txt through an LLM call
102
102
  * that takes roughly 27-60s, so the write can't reliably fit, and it runs
103
- * after the Portal sync has already spent part of the budget. Until 2026-09 a
103
+ * after Sonor sync has already spent part of the budget. Until 2026-09 a
104
104
  * one-year Data Cache entry hid this: the call ran live only on a site's first
105
105
  * build, and every later build replayed the stored response (a stale file).
106
106
  * With reads fresh (shared/fresh-fetch.ts), the write gets whatever is left of
@@ -2,8 +2,8 @@
2
2
  * Append `site=<host>` to an API URL or endpoint path. Returns the input
3
3
  * unchanged when the host resolves empty.
4
4
  *
5
- * withSiteParam('/public/articles/posts?page=2', 'bd-charlotte.com')
6
- * → '/public/articles/posts?page=2&site=bd-charlotte.com'
5
+ * withSiteParam('/public/articles/posts?page=2', 'charlotte.example.com')
6
+ * → '/public/articles/posts?page=2&site=charlotte.example.com'
7
7
  */
8
8
  export declare function withSiteParam(url: string, site?: string): string;
9
9
  /**
@@ -23,7 +23,7 @@ export interface ManagedRichTextProps extends Omit<SlotResolveOptions, 'fallback
23
23
  * ```tsx
24
24
  * <div className="prose">
25
25
  * <ManagedRichText id="about-intro" page="/about">
26
- * {`We've built homes in **Cincinnati** since 1998.\n\n- Custom builds\n- Remodels`}
26
+ * {`We've built homes in **Springfield** since 1998.\n\n- Custom builds\n- Remodels`}
27
27
  * </ManagedRichText>
28
28
  * </div>
29
29
  * ```
@@ -22,7 +22,7 @@ export interface ManagedSlotProps extends Omit<SlotResolveOptions, 'fallback'> {
22
22
  * ```tsx
23
23
  * <h1 className="hero-title">
24
24
  * <ManagedSlot id="home-hero-headline" page="/">
25
- * New Homes in Cincinnati & Northern Kentucky
25
+ * New Homes in Springfield and Beyond
26
26
  * </ManagedSlot>
27
27
  * </h1>
28
28
  * ```
@@ -2,9 +2,7 @@
2
2
  * @sonordev/site-kit/website/slots — Managed Slots (3.0 spine, Pillar 1)
3
3
  *
4
4
  * Named, Sonor-managed copy inside developer-owned markup: text, rich text,
5
- * links and lists (the Website CMS; docs/WEBSITE-CMS.md).
6
- * Static-safe, fallback-first, signature-verified.
7
- * See docs/SITE-KIT-3.0-SPEC-SLOTS.md.
5
+ * links and lists. Static-safe, fallback-first, signature-verified.
8
6
  */
9
7
  export { ManagedSlot, default } from './ManagedSlot';
10
8
  export type { ManagedSlotProps } from './ManagedSlot';
@@ -1,6 +1,6 @@
1
- export { BookingWidget } from '../chunk-3G2SE2J4.js';
2
- export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-7QTMMHUO.js';
3
- import '../chunk-U35H2JIQ.js';
4
- import '../chunk-EVFZ7KEW.js';
5
- import '../chunk-4JQQDCMO.js';
1
+ export { BookingWidget } from '../chunk-JTU2GOM4.js';
2
+ export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-M3YEPKP7.js';
3
+ import '../chunk-3SDOQUUF.js';
4
+ import '../chunk-VDF5DFWT.js';
5
+ import '../chunk-AH5Q262S.js';
6
6
  import '../chunk-PKBMQBKP.js';
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @sonordev/site-kit - Shared types across all modules
3
3
  *
4
- * Site-kit ONLY calls Portal API - never Supabase directly.
4
+ * Site-kit ONLY calls Sonor API - never Supabase directly.
5
5
  * All data access goes through api.sonor.io with API key auth.
6
6
  */
7
7
  export interface BaseEntity {
@@ -1,6 +1,6 @@
1
1
  import { __publicField } from './chunk-PKBMQBKP.js';
2
2
 
3
- // node_modules/.pnpm/web-vitals@6.1.0/node_modules/web-vitals/dist/web-vitals.attribution.js
3
+ // ../../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/web-vitals@6.1.0/node_modules/web-vitals/dist/web-vitals.attribution.js
4
4
  var t = class {
5
5
  constructor() {
6
6
  __publicField(this, "t");
@@ -11,10 +11,9 @@
11
11
  * `--sk-site-*` variables, set on this popup's root from `tokens` (never on
12
12
  * :root, so nothing leaks into the site's own CSS).
13
13
  *
14
- * The dashboard keeps a byte-identical copy (sonor-frontend
15
- * src/lib/site-kit/website/PopupBlocks.tsx, with contract.ts and color.ts
16
- * beside it) until @sonordev/contracts replaces the mirrors; its drift test
17
- * fails when they differ. Edit here, then copy.
14
+ * The dashboard keeps a byte-identical copy until @sonordev/contracts
15
+ * replaces the mirrors; its drift test fails when they differ. Edit here,
16
+ * then copy.
18
17
  *
19
18
  * Accessibility: a centred popup is a modal dialog (labelled by its heading,
20
19
  * focus moves in and is kept there, Escape and the overlay close it, focus
@@ -1,6 +1,6 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-GWUKQ26F.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-ILU5I6RW.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-U35H2JIQ.js';
4
- import '../chunk-EVFZ7KEW.js';
5
- import '../chunk-4JQQDCMO.js';
3
+ import '../chunk-3SDOQUUF.js';
4
+ import '../chunk-VDF5DFWT.js';
5
+ import '../chunk-AH5Q262S.js';
6
6
  import '../chunk-PKBMQBKP.js';