@sonordev/site-kit 8.9.0 → 8.10.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 (109) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/agent-manifest.json +1 -1
  3. package/dist/AddressAutocomplete-LQS6GQ4R.js +241 -0
  4. package/dist/{AnalyticsProvider-X7JJN3QL.js → AnalyticsProvider-JWS7BLFY.js} +4 -4
  5. package/dist/{ArticleViewTracker-7Q6AMCKX.js → ArticleViewTracker-CDPVMUAO.js} +1 -1
  6. package/dist/{BlocksPopup-U5VIYEBA.js → BlocksPopup-C5PNJ7U6.js} +3 -3
  7. package/dist/{ChatWidget-EAATOFCT.js → ChatWidget-HEPOE3YC.js} +5 -5
  8. package/dist/{FileField-YWMSK7RF.js → FileField-6R5LS5NU.js} +1 -1
  9. package/dist/{FormSpotlight-MAXDW3TK.js → FormSpotlight-2BSE7PD2.js} +5 -4
  10. package/dist/{FormStage-VAHRVOIZ.js → FormStage-3G46OPPO.js} +5 -4
  11. package/dist/{ManagedForm-7IZT7ZII.js → ManagedForm-LTXEU25N.js} +7 -7
  12. package/dist/{ManagedNewsletterForm-VVXZSEAL.js → ManagedNewsletterForm-WE6P5DMV.js} +10 -10
  13. package/dist/{SignalCore-HAN4O7QG.js → SignalCore-IP7FE6SN.js} +3 -3
  14. package/dist/{SiteChat-3JLCEL2N.js → SiteChat-3FQYMHCP.js} +1 -1
  15. package/dist/{SiteDesignReporter-6CCO645E.js → SiteDesignReporter-HGTX4FX2.js} +4 -4
  16. package/dist/{SitePopups-ZGHQNGGH.js → SitePopups-V7MCNSGE.js} +4 -4
  17. package/dist/{SitemapSync-5LSYCBKS.js → SitemapSync-OAJ7SIET.js} +2 -2
  18. package/dist/_client/booking-widget.js +3 -3
  19. package/dist/_client/reviewed-signal-experiment.js +1 -1
  20. package/dist/affiliates/index.js +1 -1
  21. package/dist/analytics/index.js +4 -4
  22. package/dist/api-X6N6V2H3.js +5 -0
  23. package/dist/articles/index.js +1 -1
  24. package/dist/articles/server-ui.js +3 -3
  25. package/dist/articles/server.js +2 -2
  26. package/dist/chat/index.js +6 -6
  27. package/dist/{chunk-AWLPFFPO.js → chunk-3RBOES2C.js} +1 -1
  28. package/dist/{chunk-CVADNHJ4.js → chunk-3WMNHFZH.js} +9 -0
  29. package/dist/{chunk-HJD6KXKH.js → chunk-533ZSRJF.js} +1 -1
  30. package/dist/chunk-6CIO4X6P.js +77 -0
  31. package/dist/{chunk-S33CUULL.js → chunk-727353NY.js} +11 -7
  32. package/dist/{chunk-ZRSXCT4O.js → chunk-75N2WALV.js} +1 -1
  33. package/dist/{chunk-SO6RSRUP.js → chunk-7PWXPN53.js} +1 -1
  34. package/dist/{chunk-YVEYO3OD.js → chunk-A66TIJWU.js} +1 -1
  35. package/dist/{chunk-PMXQPO5Q.js → chunk-ACZ5JNSL.js} +2 -2
  36. package/dist/{chunk-DXE6SXWW.js → chunk-D4R3FQED.js} +1 -1
  37. package/dist/{chunk-6EDE7BOE.js → chunk-DW5X4BC7.js} +2 -2
  38. package/dist/{chunk-VPZJ7ZTL.js → chunk-HHEDRZOJ.js} +1 -1
  39. package/dist/{chunk-QXAJPB6O.js → chunk-HLN7A4GL.js} +1 -1
  40. package/dist/{chunk-6NLVHTYY.js → chunk-HNVLINPI.js} +1 -1
  41. package/dist/{chunk-KGIQYVQ2.js → chunk-J4R7MHV2.js} +8 -8
  42. package/dist/{chunk-UG53ZW7S.js → chunk-MIKVCYGX.js} +2 -2
  43. package/dist/{chunk-OUD4RTBD.js → chunk-MKU5ZORB.js} +2 -31
  44. package/dist/{chunk-L3S5WH4C.js → chunk-NBNDH2J6.js} +1 -1
  45. package/dist/{chunk-S63QY5XW.js → chunk-NH7K252M.js} +5 -3
  46. package/dist/{chunk-J4LJE4NB.js → chunk-NWEIHCSE.js} +3 -1
  47. package/dist/{chunk-F3RKFGRW.js → chunk-OCNODBH4.js} +1 -1
  48. package/dist/{chunk-CJ43K7RA.js → chunk-OEHIXCYS.js} +2 -2
  49. package/dist/{chunk-T4A5J6SJ.js → chunk-P7S45DD7.js} +1 -1
  50. package/dist/{chunk-XDH5B3PR.js → chunk-Q2OE32TH.js} +2 -2
  51. package/dist/{chunk-FAY6MOLL.js → chunk-RMPXSEEU.js} +1 -1
  52. package/dist/{chunk-ISMHDUBW.js → chunk-RUV6DCKL.js} +1 -1
  53. package/dist/{chunk-IO6BWRZ5.js → chunk-TLKLHSRJ.js} +1 -1
  54. package/dist/{chunk-WHFWDK2H.js → chunk-UMF5OILQ.js} +1 -1
  55. package/dist/{chunk-ADQ3VCKK.js → chunk-XAPSYDVT.js} +1 -1
  56. package/dist/{chunk-EBEM5BI5.js → chunk-Y7DZ2ND2.js} +3 -3
  57. package/dist/{chunk-NZHECYLF.js → chunk-YJ6PRJ7Y.js} +2 -2
  58. package/dist/{chunk-VXCUXHZO.js → chunk-Z4XJOVQX.js} +1 -1
  59. package/dist/{chunk-MP35JETP.js → chunk-Z62W7Q3T.js} +1 -1
  60. package/dist/controls-KLG6VQLO.js +14 -0
  61. package/dist/fleet/index.js +3 -3
  62. package/dist/forms/AddressAutocomplete.d.ts +20 -0
  63. package/dist/forms/FormClient.d.ts +2 -1
  64. package/dist/forms/FormEnhancer.d.ts +2 -1
  65. package/dist/forms/FormField.d.ts +2 -0
  66. package/dist/forms/FormSpotlight.d.ts +1 -1
  67. package/dist/forms/FormStage.d.ts +1 -1
  68. package/dist/forms/ManagedForm.d.ts +1 -1
  69. package/dist/forms/ServerForm.d.ts +2 -1
  70. package/dist/forms/controls.d.ts +5 -0
  71. package/dist/forms/field-controls.d.ts +4 -2
  72. package/dist/forms/index.d.ts +1 -1
  73. package/dist/forms/index.js +10 -10
  74. package/dist/forms/server.js +4 -4
  75. package/dist/forms/static.js +2 -2
  76. package/dist/forms/types.d.ts +9 -0
  77. package/dist/images/index.js +2 -2
  78. package/dist/index.js +1 -1
  79. package/dist/landing/server.js +7 -7
  80. package/dist/layout/client.js +6 -6
  81. package/dist/layout/index.js +7 -7
  82. package/dist/llms/index.js +4 -4
  83. package/dist/maps/index.js +8 -78
  84. package/dist/maps/places-library.d.ts +34 -0
  85. package/dist/mcp/sonor.js +7 -7
  86. package/dist/places-library-RU2YNKFK.js +54 -0
  87. package/dist/resonance/index.js +1 -1
  88. package/dist/revalidate/index.js +2 -2
  89. package/dist/runtime/index.js +1 -1
  90. package/dist/{runtime-core-WT7KKLWQ.js → runtime-core-EU2RZMOL.js} +1 -1
  91. package/dist/seo/client.js +2 -2
  92. package/dist/seo/index.js +2 -2
  93. package/dist/seo/llms.js +4 -4
  94. package/dist/seo/register-sitemap-cli.js +1 -1
  95. package/dist/seo/sitemap.js +2 -2
  96. package/dist/server/index.js +2 -2
  97. package/dist/shared/version.d.ts +1 -1
  98. package/dist/signal/index.js +2 -2
  99. package/dist/sitemap/index.js +2 -2
  100. package/dist/{sonor-fetch-runtime-3PFGUXMF.js → sonor-fetch-runtime-SLPBNZY4.js} +2 -2
  101. package/dist/sync/index.js +3 -3
  102. package/dist/website/images.js +2 -2
  103. package/dist/website/index.js +4 -4
  104. package/dist/website/landing/server.js +7 -7
  105. package/dist/website/popups.js +4 -4
  106. package/dist/{writeLLMsTxt-JUACXQKP.js → writeLLMsTxt-2CBYGKZO.js} +1 -1
  107. package/package.json +1 -1
  108. package/src/forms/README.md +47 -0
  109. /package/dist/{chunk-QLJ2SC3T.js → chunk-ORSQKTMN.js} +0 -0
@@ -0,0 +1,54 @@
1
+ import './chunk-PKBMQBKP.js';
2
+
3
+ // src/maps/places-library.ts
4
+ async function loadAddressPlaces(apiKey) {
5
+ var _a;
6
+ const host = window;
7
+ const maps = (_a = host.google ?? (host.google = {})).maps ?? (_a.maps = {});
8
+ if (!maps.importLibrary) {
9
+ if (document.querySelector('script[src*="maps.googleapis.com/maps/api/js"], script[src*="maps.google.com/maps/api/js"]')) {
10
+ throw new Error("Existing Google loader does not support dynamic libraries");
11
+ }
12
+ let pending;
13
+ const bootstrap = (name) => {
14
+ pending ?? (pending = new Promise((resolve, reject) => {
15
+ const script = document.createElement("script");
16
+ const url = new URL("https://maps.googleapis.com/maps/api/js");
17
+ url.search = new URLSearchParams({ key: apiKey, v: "weekly", loading: "async", libraries: "places", callback: "google.maps.__ib__" }).toString();
18
+ const nonce = document.querySelector("script[nonce]")?.nonce;
19
+ if (nonce) script.nonce = nonce;
20
+ const timer = setTimeout(() => fail(), 15e3);
21
+ const fail = () => {
22
+ clearTimeout(timer);
23
+ script.remove();
24
+ if (maps.importLibrary === bootstrap) {
25
+ delete maps.importLibrary;
26
+ delete maps.__ib__;
27
+ }
28
+ reject(new Error("Google address suggestions could not load"));
29
+ };
30
+ maps.__ib__ = () => {
31
+ clearTimeout(timer);
32
+ delete maps.__ib__;
33
+ resolve();
34
+ };
35
+ script.onerror = fail;
36
+ script.src = url.toString();
37
+ script.async = true;
38
+ try {
39
+ document.head.append(script);
40
+ } catch {
41
+ fail();
42
+ }
43
+ }));
44
+ return pending.then(() => {
45
+ if (!maps.importLibrary || maps.importLibrary === bootstrap) throw new Error("Google dynamic library unavailable");
46
+ return maps.importLibrary(name);
47
+ });
48
+ };
49
+ maps.importLibrary = bootstrap;
50
+ }
51
+ return await maps.importLibrary("places");
52
+ }
53
+
54
+ export { loadAddressPlaces };
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  export { getResonanceMeasurementStatus, recordResonanceExposure, registerResonanceConsentAdapter } from '../chunk-WYNDBJG7.js';
3
- export { ResonanceRuntime } from '../chunk-AWLPFFPO.js';
3
+ export { ResonanceRuntime } from '../chunk-3RBOES2C.js';
4
4
  import '../chunk-MDBXGN6W.js';
5
5
  import '../chunk-YC7ELZS3.js';
6
6
  import '../chunk-KMNHNCVG.js';
@@ -1,7 +1,7 @@
1
- import { createSeoRevalidationHandler } from '../chunk-ISMHDUBW.js';
1
+ import { createSeoRevalidationHandler } from '../chunk-RUV6DCKL.js';
2
2
  import '../chunk-XTRZGXB2.js';
3
3
  export { SITE_CACHE_TAGS, SITE_REVALIDATE_PATH, isSiteRevalidatePong } from '../chunk-HY7ZEU2C.js';
4
- import '../chunk-DXE6SXWW.js';
4
+ import '../chunk-D4R3FQED.js';
5
5
  import '../chunk-PKBMQBKP.js';
6
6
 
7
7
  // src/revalidate/index.ts
@@ -1,7 +1,7 @@
1
1
  import '../chunk-B7T2SFUF.js';
2
2
  export { readAnalyticsIdentity } from '../chunk-PVY7X5UR.js';
3
3
  import '../chunk-5IVD6G77.js';
4
- export { sonorFetch } from '../chunk-VXCUXHZO.js';
4
+ export { sonorFetch } from '../chunk-Z4XJOVQX.js';
5
5
  export { DEFAULT_SONOR_API_URL, getClientApiConfig, readPublishedApiConfig } from '../chunk-W7OPEMGJ.js';
6
6
  import '../chunk-FRY6PBT6.js';
7
7
  import '../chunk-PKBMQBKP.js';
@@ -9,7 +9,7 @@ import { isNormalizedSiteHost } from './chunk-NZOJHERI.js';
9
9
  import { advertisingPurposesPermitted, experimentMeasurementPermitted } from './chunk-KMNHNCVG.js';
10
10
  import { resolveAnalyticsTarget, isFramed, isPrivatePreview, isLocalHostname } from './chunk-7643MCD2.js';
11
11
  import './chunk-64XODP7M.js';
12
- import { sonorFetch } from './chunk-VXCUXHZO.js';
12
+ import { sonorFetch } from './chunk-Z4XJOVQX.js';
13
13
  import './chunk-W7OPEMGJ.js';
14
14
  import './chunk-A4CC4ZG3.js';
15
15
  import './chunk-MOACHHOJ.js';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- export { SitemapSync } from '../chunk-ADQ3VCKK.js';
2
+ export { SitemapSync } from '../chunk-XAPSYDVT.js';
3
3
  import '../chunk-YVKRYQRG.js';
4
4
  import '../chunk-7643MCD2.js';
5
5
  import '../chunk-64XODP7M.js';
6
- import '../chunk-VXCUXHZO.js';
6
+ import '../chunk-Z4XJOVQX.js';
7
7
  import '../chunk-W7OPEMGJ.js';
8
8
  import '../chunk-PKBMQBKP.js';
package/dist/seo/index.js CHANGED
@@ -2,7 +2,7 @@ export { ManagedNoScripts, ManagedScripts } from '../chunk-MVLMXC44.js';
2
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-ADQ3VCKK.js';
5
+ export { SitemapSync } from '../chunk-XAPSYDVT.js';
6
6
  import { getManagedMetadata, mergeAlternates } from '../chunk-3W3MN6Z7.js';
7
7
  export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-3W3MN6Z7.js';
8
8
  import { getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, pruneSchemaTypes } from '../chunk-STIVFCWM.js';
@@ -18,7 +18,7 @@ import '../chunk-DIKNRN34.js';
18
18
  import '../chunk-FESKKJAS.js';
19
19
  import '../chunk-7643MCD2.js';
20
20
  import '../chunk-64XODP7M.js';
21
- import '../chunk-VXCUXHZO.js';
21
+ import '../chunk-Z4XJOVQX.js';
22
22
  import '../chunk-W7OPEMGJ.js';
23
23
  import '../chunk-A4CC4ZG3.js';
24
24
  import '../chunk-PKBMQBKP.js';
package/dist/seo/llms.js CHANGED
@@ -1,10 +1,10 @@
1
- export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-QXAJPB6O.js';
1
+ export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-HLN7A4GL.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-ISMHDUBW.js';
4
+ export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-RUV6DCKL.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-QLJ2SC3T.js';
7
+ export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-ORSQKTMN.js';
8
8
  export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-EK7P62DT.js';
9
9
  import '../chunk-7DYMM6SS.js';
10
10
  import '../chunk-IBHBEUZV.js';
@@ -16,7 +16,7 @@ import '../chunk-ISRBSTB7.js';
16
16
  import '../chunk-MJP63SSS.js';
17
17
  import '../chunk-YVKRYQRG.js';
18
18
  import '../chunk-FESKKJAS.js';
19
- import '../chunk-DXE6SXWW.js';
19
+ import '../chunk-D4R3FQED.js';
20
20
  import '../chunk-W7OPEMGJ.js';
21
21
  import '../chunk-A4CC4ZG3.js';
22
22
  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-JUACXQKP.js');
461
+ const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-2CBYGKZO.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,5 +1,5 @@
1
- export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-YVEYO3OD.js';
2
- import '../chunk-QLJ2SC3T.js';
1
+ export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-A66TIJWU.js';
2
+ import '../chunk-ORSQKTMN.js';
3
3
  import '../chunk-EK7P62DT.js';
4
4
  import '../chunk-Z22QVHT4.js';
5
5
  import '../chunk-7DYMM6SS.js';
@@ -1,8 +1,8 @@
1
1
  import '../chunk-34ZYJTQR.js';
2
- export { resolveClientCredential } from '../chunk-L3S5WH4C.js';
2
+ export { resolveClientCredential } from '../chunk-NBNDH2J6.js';
3
3
  import '../chunk-UAYAJPEP.js';
4
4
  export { SITE_CACHE_TAGS } from '../chunk-HY7ZEU2C.js';
5
5
  export { isNextControlFlow, requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-7VMA3KCN.js';
6
6
  import '../chunk-MH2DSGC6.js';
7
- import '../chunk-DXE6SXWW.js';
7
+ import '../chunk-D4R3FQED.js';
8
8
  import '../chunk-PKBMQBKP.js';
@@ -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.9.0";
10
+ export declare const SITE_KIT_VERSION = "8.10.0";
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- export { ExperimentConversion, SignalExperiment, useExperimentVariant } from '../chunk-F3RKFGRW.js';
3
- export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-HJD6KXKH.js';
2
+ export { ExperimentConversion, SignalExperiment, useExperimentVariant } from '../chunk-OCNODBH4.js';
3
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-533ZSRJF.js';
4
4
  import '../chunk-MOACHHOJ.js';
5
5
  import '../chunk-FRY6PBT6.js';
6
6
  import '../chunk-PKBMQBKP.js';
@@ -1,5 +1,5 @@
1
- export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-YVEYO3OD.js';
2
- import '../chunk-QLJ2SC3T.js';
1
+ export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-A66TIJWU.js';
2
+ import '../chunk-ORSQKTMN.js';
3
3
  import '../chunk-EK7P62DT.js';
4
4
  import '../chunk-Z22QVHT4.js';
5
5
  import '../chunk-7DYMM6SS.js';
@@ -1,7 +1,7 @@
1
- import { getFreshCredential, refreshSiteToken } from './chunk-FAY6MOLL.js';
1
+ import { getFreshCredential, refreshSiteToken } from './chunk-RMPXSEEU.js';
2
2
  import { isSiteToken, credentialBreakerId } from './chunk-TPHOIE4I.js';
3
3
  import { isTokenMode } from './chunk-D4M5K6JN.js';
4
- import { SITE_KIT_VERSION } from './chunk-DXE6SXWW.js';
4
+ import { SITE_KIT_VERSION } from './chunk-D4R3FQED.js';
5
5
  import './chunk-PKBMQBKP.js';
6
6
 
7
7
  // src/shared/fetchWithRetry.ts
@@ -1,8 +1,8 @@
1
- export { BookingWidget } from '../chunk-MP35JETP.js';
2
- export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-ZRSXCT4O.js';
1
+ export { BookingWidget } from '../chunk-Z62W7Q3T.js';
2
+ export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-75N2WALV.js';
3
3
  import '../chunk-PVY7X5UR.js';
4
4
  import '../chunk-5IVD6G77.js';
5
- import '../chunk-VXCUXHZO.js';
5
+ import '../chunk-Z4XJOVQX.js';
6
6
  import '../chunk-W7OPEMGJ.js';
7
7
  import '../chunk-FRY6PBT6.js';
8
8
  import '../chunk-PKBMQBKP.js';
@@ -1,4 +1,4 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-T4A5J6SJ.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-P7S45DD7.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-VXCUXHZO.js';
3
+ import '../chunk-Z4XJOVQX.js';
4
4
  import '../chunk-PKBMQBKP.js';
@@ -1,14 +1,14 @@
1
1
  'use client';
2
- export { SiteDesignReporter } from '../chunk-IO6BWRZ5.js';
3
- export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-6EDE7BOE.js';
2
+ export { SiteDesignReporter } from '../chunk-TLKLHSRJ.js';
3
+ export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-DW5X4BC7.js';
4
4
  export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-52KO4LKD.js';
5
5
  import '../chunk-XLAHRN4B.js';
6
6
  import '../chunk-XHYE24HU.js';
7
7
  import '../chunk-YC7ELZS3.js';
8
8
  import '../chunk-S22FSH7C.js';
9
- import '../chunk-DXE6SXWW.js';
9
+ import '../chunk-D4R3FQED.js';
10
10
  import '../chunk-7643MCD2.js';
11
11
  import '../chunk-64XODP7M.js';
12
- import '../chunk-VXCUXHZO.js';
12
+ import '../chunk-Z4XJOVQX.js';
13
13
  import '../chunk-W7OPEMGJ.js';
14
14
  import '../chunk-PKBMQBKP.js';
@@ -1,17 +1,17 @@
1
- export { FunnelPageContent, ManagedFunnelPage, getPublishedFunnelPage, managedFunnelMetadata } from '../../chunk-NZHECYLF.js';
1
+ export { FunnelPageContent, ManagedFunnelPage, getPublishedFunnelPage, managedFunnelMetadata } from '../../chunk-YJ6PRJ7Y.js';
2
2
  import '../../chunk-XS2ORMUG.js';
3
3
  import '../../chunk-XJZLXUTG.js';
4
4
  import '../../chunk-7IZUUXXO.js';
5
5
  export { normalizeCampaignSlug } from '../../chunk-2QPVU63T.js';
6
6
  export { landingPageMetadata } from '../../chunk-JESLPEST.js';
7
7
  import '../../chunk-XHYE24HU.js';
8
- import '../../chunk-S63QY5XW.js';
9
- import '../../chunk-J4LJE4NB.js';
8
+ import '../../chunk-NH7K252M.js';
9
+ import '../../chunk-NWEIHCSE.js';
10
10
  import '../../chunk-C2FZBUSS.js';
11
11
  import '../../chunk-YC7ELZS3.js';
12
- import '../../chunk-VPZJ7ZTL.js';
12
+ import '../../chunk-HHEDRZOJ.js';
13
13
  import '../../chunk-DXO6SBMD.js';
14
- import '../../chunk-CVADNHJ4.js';
14
+ import '../../chunk-3WMNHFZH.js';
15
15
  import '../../chunk-TYSIAWC3.js';
16
16
  import '../../chunk-HW7B43E5.js';
17
17
  import '../../chunk-NJCTQH2P.js';
@@ -19,8 +19,8 @@ import '../../chunk-7VMA3KCN.js';
19
19
  import '../../chunk-MH2DSGC6.js';
20
20
  import '../../chunk-S22FSH7C.js';
21
21
  import '../../chunk-A4CC4ZG3.js';
22
- import '../../chunk-F3RKFGRW.js';
23
- import '../../chunk-HJD6KXKH.js';
22
+ import '../../chunk-OCNODBH4.js';
23
+ import '../../chunk-533ZSRJF.js';
24
24
  import '../../chunk-MOACHHOJ.js';
25
25
  import '../../chunk-FRY6PBT6.js';
26
26
  import '../../chunk-PKBMQBKP.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { SitePopups } from '../chunk-EBEM5BI5.js';
2
+ export { SitePopups } from '../chunk-Y7DZ2ND2.js';
3
3
  import '../chunk-27FISYK4.js';
4
4
  export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-52KO4LKD.js';
5
5
  import '../chunk-XLAHRN4B.js';
@@ -7,17 +7,17 @@ import '../chunk-XHYE24HU.js';
7
7
  import '../chunk-PVY7X5UR.js';
8
8
  import '../chunk-S22FSH7C.js';
9
9
  import '../chunk-JT7GHHMV.js';
10
- import '../chunk-PMXQPO5Q.js';
10
+ import '../chunk-ACZ5JNSL.js';
11
11
  import '../chunk-NHDRA4Y5.js';
12
12
  import '../chunk-D4M5K6JN.js';
13
13
  import '../chunk-GJWI74ZZ.js';
14
14
  import '../chunk-NZOJHERI.js';
15
15
  import '../chunk-KMNHNCVG.js';
16
16
  import '../chunk-5IVD6G77.js';
17
- import '../chunk-DXE6SXWW.js';
17
+ import '../chunk-D4R3FQED.js';
18
18
  import '../chunk-7643MCD2.js';
19
19
  import '../chunk-64XODP7M.js';
20
- import '../chunk-VXCUXHZO.js';
20
+ import '../chunk-Z4XJOVQX.js';
21
21
  import '../chunk-W7OPEMGJ.js';
22
22
  import '../chunk-A4CC4ZG3.js';
23
23
  import '../chunk-FRY6PBT6.js';
@@ -1,4 +1,4 @@
1
- export { writeLLMsTxtToPublic } from './chunk-QLJ2SC3T.js';
1
+ export { writeLLMsTxtToPublic } from './chunk-ORSQKTMN.js';
2
2
  import './chunk-EK7P62DT.js';
3
3
  import './chunk-7DYMM6SS.js';
4
4
  import './chunk-IBHBEUZV.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonordev/site-kit",
3
- "version": "8.9.0",
3
+ "version": "8.10.0",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@11.5.3",
6
6
  "description": "Sonor's Next.js foundation: SEO, analytics, forms, chat, booking, AI visibility and agent tools. Add @sonordev/press-kit for publications or @sonordev/commerce-kit for selling. Legacy article imports remain compatible in 8.x.",
@@ -101,6 +101,53 @@ export function ContactForm() {
101
101
  }
102
102
  ```
103
103
 
104
+ #### Google address suggestions
105
+
106
+ Unreleased: this option is prepared for the next Site Kit release.
107
+
108
+ Opt specific managed text fields into Google address suggestions with their
109
+ exact Sonor slugs. The field must already exist in the form configuration:
110
+
111
+ ```tsx
112
+ <ManagedForm
113
+ formId="inquiry"
114
+ addressAutocomplete={{ fields: ['street_address'], includedRegionCodes: ['us'] }}
115
+ />
116
+ ```
117
+
118
+ `addressAutocomplete` is also available on `ServerForm` and `FormEnhancer`.
119
+ It works in the classic, spotlight and stage experiences. `fields` accepts
120
+ one or more text-field slugs; other field types and unlisted fields keep
121
+ their existing behavior. `includedRegionCodes` optionally restricts
122
+ suggestions to up to 15 two-letter country codes. Omit it for unrestricted
123
+ suggestions. The exported type is `AddressAutocompleteOptions`.
124
+
125
+ The field keeps its label, controlled value, validation and managed
126
+ submission. Choosing a suggestion fills that field with the formatted
127
+ address; it doesn't fill separate city, state or postal-code fields.
128
+ Visitors can keep typing or edit the selected address. Use the arrow keys
129
+ and Enter to choose a suggestion, Escape to dismiss, or touch a result.
130
+ Enter without an active suggestion keeps its normal form behavior.
131
+
132
+ Google code and Sonor's browser-key lookup start after field interaction;
133
+ predictions start at three characters and are debounced. Each field owns
134
+ its search session, and selection requests only the formatted address.
135
+ Missing keys, failed loads, unsupported existing Google scripts and request
136
+ errors leave manual entry available. Suggestions use Google Maps
137
+ attribution and aren't stored in browser persistence. The selected address
138
+ is submitted through the normal managed-form path.
139
+
140
+ Your Sonor installation needs a dedicated Google browser key with the
141
+ site's HTTP referrer allowed and Maps JavaScript API and Places API (New)
142
+ enabled. Sites still use their existing `SONOR_API_KEY`; they don't need
143
+ Sonor's Google server key. Keep your privacy notice consistent with address
144
+ queries being sent to Google. See Google's [Autocomplete data guide](https://developers.google.com/maps/documentation/javascript/place-autocomplete-data).
145
+
146
+ This option enhances the built-in field renderers. A `children` render
147
+ function or a headless `useForm` layout owns its controls, so it doesn't
148
+ automatically receive a suggestion UI. Browser autofill tokens below stay
149
+ available for those controls.
150
+
104
151
  #### Autocomplete on your own controls
105
152
 
106
153
  `ManagedForm` puts the right `autocomplete` token on each field that has one, so
File without changes