@sonordev/site-kit 3.0.5 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/AGENTS.md +107 -0
  2. package/agent-manifest.json +377 -0
  3. package/dist/AnalyticsProvider-CD635CHQ.mjs +8 -0
  4. package/dist/{AnalyticsProvider-MLT26JRP.mjs.map → AnalyticsProvider-CD635CHQ.mjs.map} +1 -1
  5. package/dist/AnalyticsProvider-WK2Z6AIN.js +29 -0
  6. package/dist/{AnalyticsProvider-WTOGN7LV.js.map → AnalyticsProvider-WK2Z6AIN.js.map} +1 -1
  7. package/dist/BlogPostFaqSection-4AD2NIGG.js +13 -0
  8. package/dist/{BlogPostFaqSection-H556RV62.js.map → BlogPostFaqSection-4AD2NIGG.js.map} +1 -1
  9. package/dist/{BlogPostFaqSection-VSHOKKUD.mjs → BlogPostFaqSection-TU6YEC7P.mjs} +3 -3
  10. package/dist/{BlogPostFaqSection-VSHOKKUD.mjs.map → BlogPostFaqSection-TU6YEC7P.mjs.map} +1 -1
  11. package/dist/ChatWidget-AIOOZY6H.js +17 -0
  12. package/dist/{ChatWidget-MAL7FB4M.js.map → ChatWidget-AIOOZY6H.js.map} +1 -1
  13. package/dist/ChatWidget-UAAWDBNS.mjs +8 -0
  14. package/dist/{ChatWidget-QPZTPSPE.mjs.map → ChatWidget-UAAWDBNS.mjs.map} +1 -1
  15. package/dist/EngageWidget-EZ5T6H3K.mjs +7 -0
  16. package/dist/{EngageWidget-IPBUA4DW.mjs.map → EngageWidget-EZ5T6H3K.mjs.map} +1 -1
  17. package/dist/EngageWidget-RWVWW56C.js +16 -0
  18. package/dist/{EngageWidget-N3CABK3L.js.map → EngageWidget-RWVWW56C.js.map} +1 -1
  19. package/dist/{SignalCore-4MDIJUAP.mjs → SignalCore-4B4RNYLV.mjs} +60 -47
  20. package/dist/SignalCore-4B4RNYLV.mjs.map +1 -0
  21. package/dist/{SignalCore-ZMFUE3N4.js → SignalCore-AECW2JFP.js} +60 -47
  22. package/dist/SignalCore-AECW2JFP.js.map +1 -0
  23. package/dist/SitemapSync-AICU4SSV.js +15 -0
  24. package/dist/{SitemapSync-FUCH6Y6J.js.map → SitemapSync-AICU4SSV.js.map} +1 -1
  25. package/dist/SitemapSync-CIZCAZXK.mjs +6 -0
  26. package/dist/{SitemapSync-LCSPRAWU.mjs.map → SitemapSync-CIZCAZXK.mjs.map} +1 -1
  27. package/dist/analytics/index.js +11 -9
  28. package/dist/analytics/index.mjs +4 -2
  29. package/dist/blog/index.js +12 -12
  30. package/dist/blog/index.mjs +2 -2
  31. package/dist/blog/server-ui.js +5 -5
  32. package/dist/blog/server-ui.mjs +1 -1
  33. package/dist/brand.css +8 -3
  34. package/dist/{chunk-QTWA44S3.mjs → chunk-2WYEJOGA.mjs} +7 -8
  35. package/dist/chunk-2WYEJOGA.mjs.map +1 -0
  36. package/dist/{chunk-AN4ATCYQ.mjs → chunk-45QHDA7Q.mjs} +3 -3
  37. package/dist/{chunk-AN4ATCYQ.mjs.map → chunk-45QHDA7Q.mjs.map} +1 -1
  38. package/dist/{chunk-RI6JZUAE.js → chunk-4FBV5BJW.js} +7 -8
  39. package/dist/chunk-4FBV5BJW.js.map +1 -0
  40. package/dist/{chunk-YJWKHCOB.js → chunk-4NTMIU6V.js} +13 -11
  41. package/dist/chunk-4NTMIU6V.js.map +1 -0
  42. package/dist/{chunk-YFGKIKXA.mjs → chunk-57QV6NIY.mjs} +3 -3
  43. package/dist/{chunk-YFGKIKXA.mjs.map → chunk-57QV6NIY.mjs.map} +1 -1
  44. package/dist/chunk-5OWZUNNE.js +102 -0
  45. package/dist/chunk-5OWZUNNE.js.map +1 -0
  46. package/dist/{chunk-EUDTPXUI.mjs → chunk-6HPNFWSC.mjs} +3 -3
  47. package/dist/{chunk-EUDTPXUI.mjs.map → chunk-6HPNFWSC.mjs.map} +1 -1
  48. package/dist/{chunk-FT5JNCD4.mjs → chunk-AB2VYIYU.mjs} +11 -11
  49. package/dist/{chunk-FT5JNCD4.mjs.map → chunk-AB2VYIYU.mjs.map} +1 -1
  50. package/dist/{chunk-I5TJIESQ.js → chunk-BMKZHXWQ.js} +11 -11
  51. package/dist/{chunk-I5TJIESQ.js.map → chunk-BMKZHXWQ.js.map} +1 -1
  52. package/dist/{chunk-KHFNPPOX.mjs → chunk-DSRPKUQI.mjs} +6 -6
  53. package/dist/{chunk-KHFNPPOX.mjs.map → chunk-DSRPKUQI.mjs.map} +1 -1
  54. package/dist/chunk-EAASMIWX.js +258 -0
  55. package/dist/chunk-EAASMIWX.js.map +1 -0
  56. package/dist/{chunk-T4QBSRA4.mjs → chunk-EIWRPGOK.mjs} +37 -60
  57. package/dist/chunk-EIWRPGOK.mjs.map +1 -0
  58. package/dist/{chunk-O7E6QVK3.js → chunk-GCDVKOSM.js} +3 -3
  59. package/dist/{chunk-O7E6QVK3.js.map → chunk-GCDVKOSM.js.map} +1 -1
  60. package/dist/{chunk-KMZ527EM.mjs → chunk-GN62H6EG.mjs} +34 -8
  61. package/dist/chunk-GN62H6EG.mjs.map +1 -0
  62. package/dist/{chunk-UJQYSVYV.js → chunk-GQF6QAQS.js} +4 -4
  63. package/dist/{chunk-UJQYSVYV.js.map → chunk-GQF6QAQS.js.map} +1 -1
  64. package/dist/{chunk-MLJXELPA.js → chunk-HAZN43I6.js} +60 -94
  65. package/dist/chunk-HAZN43I6.js.map +1 -0
  66. package/dist/chunk-LZSCCJ4O.mjs +253 -0
  67. package/dist/chunk-LZSCCJ4O.mjs.map +1 -0
  68. package/dist/{chunk-TCVHI3JP.mjs → chunk-N2HR2E4Z.mjs} +60 -92
  69. package/dist/chunk-N2HR2E4Z.mjs.map +1 -0
  70. package/dist/{chunk-VCWSSGCU.js → chunk-NAVDN4AE.js} +7 -7
  71. package/dist/{chunk-VCWSSGCU.js.map → chunk-NAVDN4AE.js.map} +1 -1
  72. package/dist/chunk-NDHFU4HV.mjs +97 -0
  73. package/dist/chunk-NDHFU4HV.mjs.map +1 -0
  74. package/dist/{chunk-PST3NOEM.mjs → chunk-O237KKCX.mjs} +4 -4
  75. package/dist/{chunk-PST3NOEM.mjs.map → chunk-O237KKCX.mjs.map} +1 -1
  76. package/dist/{chunk-5AESOLXS.mjs → chunk-OTY7EWET.mjs} +13 -11
  77. package/dist/chunk-OTY7EWET.mjs.map +1 -0
  78. package/dist/chunk-Q2NBD54V.js +69 -0
  79. package/dist/chunk-Q2NBD54V.js.map +1 -0
  80. package/dist/{chunk-DGHPOWLU.js → chunk-R5A64DCX.js} +8 -8
  81. package/dist/{chunk-DGHPOWLU.js.map → chunk-R5A64DCX.js.map} +1 -1
  82. package/dist/{chunk-3YQCPLGP.mjs → chunk-RFIWVH3D.mjs} +41 -79
  83. package/dist/chunk-RFIWVH3D.mjs.map +1 -0
  84. package/dist/{chunk-NNZDHLXN.js → chunk-S3YQGTBF.js} +35 -9
  85. package/dist/chunk-S3YQGTBF.js.map +1 -0
  86. package/dist/{chunk-IBDVZ6BF.js → chunk-SLWTG2LJ.js} +69 -74
  87. package/dist/chunk-SLWTG2LJ.js.map +1 -0
  88. package/dist/chunk-SN2O72UF.mjs +6 -0
  89. package/dist/chunk-SN2O72UF.mjs.map +1 -0
  90. package/dist/{chunk-65SMJBHW.mjs → chunk-T2DEEKVQ.mjs} +69 -74
  91. package/dist/chunk-T2DEEKVQ.mjs.map +1 -0
  92. package/dist/{chunk-3GCEFS73.js → chunk-TE3W5REY.js} +39 -62
  93. package/dist/chunk-TE3W5REY.js.map +1 -0
  94. package/dist/{chunk-IFVMZFNT.js → chunk-TVCCZ7NR.js} +41 -79
  95. package/dist/chunk-TVCCZ7NR.js.map +1 -0
  96. package/dist/{chunk-EBJ4S5DU.js → chunk-UT2CF4FC.js} +4 -4
  97. package/dist/{chunk-EBJ4S5DU.js.map → chunk-UT2CF4FC.js.map} +1 -1
  98. package/dist/chunk-V6NVBFEP.js +54 -0
  99. package/dist/chunk-V6NVBFEP.js.map +1 -0
  100. package/dist/chunk-WRZQS7O4.js +8 -0
  101. package/dist/chunk-WRZQS7O4.js.map +1 -0
  102. package/dist/chunk-WZHWWOUC.js +51 -0
  103. package/dist/chunk-WZHWWOUC.js.map +1 -0
  104. package/dist/chunk-X3S6KXAP.mjs +47 -0
  105. package/dist/chunk-X3S6KXAP.mjs.map +1 -0
  106. package/dist/chunk-X4OPM3SK.mjs +43 -0
  107. package/dist/chunk-X4OPM3SK.mjs.map +1 -0
  108. package/dist/chunk-ZPLN537Q.mjs +57 -0
  109. package/dist/chunk-ZPLN537Q.mjs.map +1 -0
  110. package/dist/cli/index.js +8986 -1276
  111. package/dist/cli/index.js.map +1 -1
  112. package/dist/cli/index.mjs +8972 -1280
  113. package/dist/cli/index.mjs.map +1 -1
  114. package/dist/commerce/index.js +50 -48
  115. package/dist/commerce/index.mjs +5 -3
  116. package/dist/engage/index.js +11 -8
  117. package/dist/engage/index.js.map +1 -1
  118. package/dist/engage/index.mjs +8 -5
  119. package/dist/engage/index.mjs.map +1 -1
  120. package/dist/fleet/contract.d.mts +99 -0
  121. package/dist/fleet/contract.d.ts +99 -0
  122. package/dist/fleet/contract.js +53 -0
  123. package/dist/fleet/contract.js.map +1 -0
  124. package/dist/fleet/contract.mjs +4 -0
  125. package/dist/fleet/contract.mjs.map +1 -0
  126. package/dist/fleet/index.d.mts +89 -0
  127. package/dist/fleet/index.d.ts +89 -0
  128. package/dist/fleet/index.js +74 -0
  129. package/dist/fleet/index.js.map +1 -0
  130. package/dist/fleet/index.mjs +9 -0
  131. package/dist/fleet/index.mjs.map +1 -0
  132. package/dist/forms/contract.d.mts +69 -0
  133. package/dist/forms/contract.d.ts +69 -0
  134. package/dist/forms/contract.js +33 -0
  135. package/dist/forms/contract.js.map +1 -0
  136. package/dist/forms/contract.mjs +4 -0
  137. package/dist/forms/contract.mjs.map +1 -0
  138. package/dist/forms/index.js +21 -17
  139. package/dist/forms/index.js.map +1 -1
  140. package/dist/forms/index.mjs +14 -10
  141. package/dist/forms/index.mjs.map +1 -1
  142. package/dist/forms/styles.css +10 -8
  143. package/dist/images/index.js +10 -8
  144. package/dist/images/index.mjs +3 -1
  145. package/dist/index.js +98 -96
  146. package/dist/index.js.map +1 -1
  147. package/dist/index.mjs +9 -7
  148. package/dist/index.mjs.map +1 -1
  149. package/dist/layout/client.d.mts +8 -1
  150. package/dist/layout/client.d.ts +8 -1
  151. package/dist/layout/client.js +8 -3
  152. package/dist/layout/client.mjs +7 -2
  153. package/dist/layout/index.d.mts +7 -1
  154. package/dist/layout/index.d.ts +7 -1
  155. package/dist/layout/index.js +57 -4
  156. package/dist/layout/index.js.map +1 -1
  157. package/dist/layout/index.mjs +56 -3
  158. package/dist/layout/index.mjs.map +1 -1
  159. package/dist/maps/index.js +9 -18
  160. package/dist/maps/index.js.map +1 -1
  161. package/dist/maps/index.mjs +9 -18
  162. package/dist/maps/index.mjs.map +1 -1
  163. package/dist/portfolio/contract.d.mts +61 -0
  164. package/dist/portfolio/contract.d.ts +61 -0
  165. package/dist/portfolio/contract.js +43 -0
  166. package/dist/portfolio/contract.js.map +1 -0
  167. package/dist/portfolio/contract.mjs +38 -0
  168. package/dist/portfolio/contract.mjs.map +1 -0
  169. package/dist/seo/client.js +4 -2
  170. package/dist/seo/client.mjs +3 -1
  171. package/dist/seo/index.js +4 -2
  172. package/dist/seo/index.js.map +1 -1
  173. package/dist/seo/index.mjs +3 -1
  174. package/dist/seo/index.mjs.map +1 -1
  175. package/dist/seo-pages/contract.d.mts +62 -0
  176. package/dist/seo-pages/contract.d.ts +62 -0
  177. package/dist/seo-pages/contract.js +48 -0
  178. package/dist/seo-pages/contract.js.map +1 -0
  179. package/dist/seo-pages/contract.mjs +44 -0
  180. package/dist/seo-pages/contract.mjs.map +1 -0
  181. package/dist/signal/index.js +11 -11
  182. package/dist/signal/index.mjs +2 -2
  183. package/dist/sites/contract.d.mts +57 -0
  184. package/dist/sites/contract.d.ts +57 -0
  185. package/dist/sites/contract.js +37 -0
  186. package/dist/sites/contract.js.map +1 -0
  187. package/dist/sites/contract.mjs +4 -0
  188. package/dist/sites/contract.mjs.map +1 -0
  189. package/package.json +44 -4
  190. package/skills/site-kit/SKILL.md +66 -0
  191. package/dist/AnalyticsProvider-MLT26JRP.mjs +0 -6
  192. package/dist/AnalyticsProvider-WTOGN7LV.js +0 -27
  193. package/dist/BlogPostFaqSection-H556RV62.js +0 -13
  194. package/dist/ChatWidget-MAL7FB4M.js +0 -14
  195. package/dist/ChatWidget-QPZTPSPE.mjs +0 -5
  196. package/dist/EngageWidget-IPBUA4DW.mjs +0 -5
  197. package/dist/EngageWidget-N3CABK3L.js +0 -14
  198. package/dist/SignalCore-4MDIJUAP.mjs.map +0 -1
  199. package/dist/SignalCore-ZMFUE3N4.js.map +0 -1
  200. package/dist/SitemapSync-FUCH6Y6J.js +0 -13
  201. package/dist/SitemapSync-LCSPRAWU.mjs +0 -4
  202. package/dist/chunk-3GCEFS73.js.map +0 -1
  203. package/dist/chunk-3YQCPLGP.mjs.map +0 -1
  204. package/dist/chunk-5AESOLXS.mjs.map +0 -1
  205. package/dist/chunk-65SMJBHW.mjs.map +0 -1
  206. package/dist/chunk-IBDVZ6BF.js.map +0 -1
  207. package/dist/chunk-IFVMZFNT.js.map +0 -1
  208. package/dist/chunk-KMZ527EM.mjs.map +0 -1
  209. package/dist/chunk-MLJXELPA.js.map +0 -1
  210. package/dist/chunk-NNZDHLXN.js.map +0 -1
  211. package/dist/chunk-QTWA44S3.mjs.map +0 -1
  212. package/dist/chunk-RI6JZUAE.js.map +0 -1
  213. package/dist/chunk-T4QBSRA4.mjs.map +0 -1
  214. package/dist/chunk-TCVHI3JP.mjs.map +0 -1
  215. package/dist/chunk-YJWKHCOB.js.map +0 -1
package/AGENTS.md ADDED
@@ -0,0 +1,107 @@
1
+ # Integrating a site with Sonor — agent guide
2
+
3
+ > **You installed `@sonordev/site-kit`.** This file tells a coding agent how to
4
+ > wire a Next.js site to Sonor correctly and prove it works — no web access
5
+ > needed. **Editing site-kit itself?** See `CONTRIBUTING.md`.
6
+
7
+ For the full machine-readable contract (modules, env, blessed patterns, failure
8
+ modes, exit codes) run:
9
+
10
+ ```bash
11
+ npx sonor-setup manifest --json
12
+ ```
13
+
14
+ Everything below is also in that manifest. This file is the human-skimmable version.
15
+
16
+ ## North star
17
+
18
+ Take a bare Next.js repo → a fully wired, **verified-green** Sonor site. The
19
+ signal that you are done is `verify` exiting 0 — not "the command ran."
20
+
21
+ ## Canonical sequence
22
+
23
+ ```bash
24
+ npx sonor-setup manifest --json # discover the package
25
+ npx sonor-setup init --api-key "$SONOR_API_KEY" --yes --json # wire layout + .env.local + postbuild
26
+ npx sonor-setup scaffold --yes --json # sitemap, robots, llms, middleware
27
+ # Existing 2.x site? migrate deterministically:
28
+ npx sonor-setup codemod --check --json # exit 1 ⇒ work pending
29
+ npx sonor-setup codemod --write --json # apply (idempotent, minimal diffs)
30
+ next build # you run the build
31
+ npx sonor-setup verify --json # exit 0 === done
32
+ ```
33
+
34
+ ## The machine contract
35
+
36
+ - **Every agent-native command supports `--json`** and prints exactly ONE JSON
37
+ envelope to stdout (all human logs go to stderr). Parse stdout; branch on
38
+ `exitCode` / `ok` / `checks`.
39
+ - **Exit codes:** `0` OK · `1` FAILED (result is red, fix the code) · `2` USAGE
40
+ (bad invocation) · `3` CONFIG (missing input — the error names the flag) · `4`
41
+ NETWORK (API/key) · `5` INTERNAL.
42
+ - **Never interactive under `--json`, `--yes`, or a non-TTY.** A command that
43
+ needs input exits `3` with an actionable `fix` instead of hanging.
44
+ - Each `checks[]` finding has a stable `id`, a `fix`, and often a `fixCommand`
45
+ you can run directly.
46
+
47
+ ## The one env var
48
+
49
+ The **only** variable a site needs is:
50
+
51
+ ```bash
52
+ SONOR_API_KEY=sonor_1a2b3c4d_... # server-side only — NO NEXT_PUBLIC_ prefix
53
+ ```
54
+
55
+ `SiteKitLayout` reads it server-side and derives the project id + all client
56
+ config. **Never** add `NEXT_PUBLIC_SONOR_API_KEY`, `UPTRADE_API_KEY`,
57
+ `NEXT_PUBLIC_UPTRADE_API_KEY`, or `SONOR_PROJECT_ID`. Uptrade keys/vars are fully
58
+ deprecated. Key format: `sonor_{project-uuid-first8}_{secret}`.
59
+
60
+ ## Blessed patterns
61
+
62
+ **Root layout — `SiteKitLayout` (a server component), wrap `{children}`:**
63
+
64
+ ```tsx
65
+ import { SiteKitLayout } from '@sonordev/site-kit/layout'
66
+
67
+ export default function RootLayout({ children }) {
68
+ return (
69
+ <html lang="en">
70
+ <body>
71
+ <SiteKitLayout>{children}</SiteKitLayout>
72
+ </body>
73
+ </html>
74
+ )
75
+ }
76
+ ```
77
+
78
+ Use `SiteKitLayout`, **never** the deprecated `SiteKitProvider` (it forces the
79
+ whole tree client-side and breaks RSC/SSR). `codemod` migrates it for you.
80
+
81
+ **Analytics is a deferred, childless sibling — never a wrapper.** Wrapping
82
+ `{children}` in a client analytics/provider de-opts a statically prerenderable
83
+ route to 100% client rendering (the hero paints only after hydration; mobile
84
+ LCP tanks). Run `SiteKitLayout` with `analytics={false}` and mount analytics as
85
+ a deferred, lazy, childless sibling so `{children}` never moves in the tree.
86
+
87
+ ## Common failure modes → the check that catches it
88
+
89
+ | Symptom | Cause | Fix | `doctor`/`verify` check |
90
+ |---|---|---|---|
91
+ | Mobile LCP ~4s; server HTML is an empty shell + `self.__next_f` flight data, no `<section>`/`<h1>` | A client provider wraps `{children}` → 100% CSR | `analytics={false}` + deferred childless sibling | `ssr.render` |
92
+ | Middleware never runs in prod on Netlify | `runtime: 'nodejs'` middleware silently doesn't run on Netlify | Gate logic in a server component, or keep middleware edge-compatible | `middleware.netlify` |
93
+ | Invalid-key console spam; data features paused (401/403) | Stale/rotated key, or an env change wasn't redeployed | Put the current `sonor_` key in `.env.local` and redeploy | `key.valid` |
94
+ | Deprecated `SiteKitProvider` in layout | 2.x integration | `npx sonor-setup codemod --only provider-to-layout --write` | `layout.sitekit` |
95
+ | `@uptrademedia/site-kit` / `UPTRADE_*` remnants | pre-rebrand site | `npx sonor-setup codemod --only uptrade-to-sonor --write` | `package.installed` / `env.api-key` |
96
+ | Hero present but LCP late | above-the-fold element is `opacity:0` + JS entrance-animated | Render hero fully static; gate reveal animations below the fold | — |
97
+
98
+ ## Verifying (definition of done)
99
+
100
+ ```bash
101
+ npx sonor-setup verify --json # static health + key validity + SSR (from .next build)
102
+ npx sonor-setup verify --url https://your-site.com --json # SSR check against a live/preview URL (strongest)
103
+ ```
104
+
105
+ `verify` exits `0` only when the integration is genuinely green. If it exits
106
+ non-zero, read `checks[]` — each red check carries a `fix` (and often a
107
+ `fixCommand`), and `nextSteps[]` names what to run. Loop until green.
@@ -0,0 +1,377 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "package": "@sonordev/site-kit",
4
+ "version": "3.2.0",
5
+ "description": "Machine-readable manifest for coding agents integrating a site with Sonor. See AGENTS.md (shipped) and docs/SITE-KIT-AGENT-NATIVE.md.",
6
+ "env": {
7
+ "required": [
8
+ "SONOR_API_KEY"
9
+ ],
10
+ "forbidden": [
11
+ "UPTRADE_API_KEY",
12
+ "NEXT_PUBLIC_UPTRADE_API_KEY",
13
+ "NEXT_PUBLIC_SONOR_API_KEY",
14
+ "SONOR_PROJECT_ID"
15
+ ],
16
+ "notes": "SONOR_API_KEY is the ONLY variable a site needs. SiteKitLayout reads it server-side and derives the project id + all client config from it. No NEXT_PUBLIC_ prefix (it must not reach the client bundle). Key format: sonor_{project-uuid-first8}_{secret}. Uptrade keys/vars are fully deprecated — never add them."
17
+ },
18
+ "exitCodes": {
19
+ "0": "OK — goal achieved; for verify, the integration is green",
20
+ "1": "FAILED — ran fine but the result is red (checks failed, verify not green, codemod --check found pending work)",
21
+ "2": "USAGE — bad invocation (unknown flag, wrong directory, not a Next.js project)",
22
+ "3": "CONFIG — missing required input; non-interactive mode needed a prompt",
23
+ "4": "NETWORK — Sonor API unreachable, timed out, or key rejected",
24
+ "5": "INTERNAL — unexpected exception (a CLI bug)"
25
+ },
26
+ "canonicalSequence": [
27
+ "npx sonor-setup manifest --json",
28
+ "npx sonor-setup init --api-key $SONOR_API_KEY --yes --json",
29
+ "npx sonor-setup scaffold --yes --json",
30
+ "npx sonor-setup codemod --check --json # existing 2.x site → migrate if exit 1",
31
+ "next build",
32
+ "npx sonor-setup verify --json # exit 0 === done"
33
+ ],
34
+ "commands": [
35
+ {
36
+ "name": "verify",
37
+ "json": true,
38
+ "interactive": false,
39
+ "purpose": "The definition of done: static health + key validity + SSR render. Exit 0 ⇔ green."
40
+ },
41
+ {
42
+ "name": "doctor",
43
+ "json": true,
44
+ "interactive": false,
45
+ "purpose": "Fast offline health check with stable check ids. --online adds network checks."
46
+ },
47
+ {
48
+ "name": "status",
49
+ "json": true,
50
+ "interactive": false,
51
+ "purpose": "Human-facing health check (network on by default)."
52
+ },
53
+ {
54
+ "name": "codemod",
55
+ "json": true,
56
+ "interactive": false,
57
+ "purpose": "Deterministic 2.x→3.x transforms. Dry-run by default; --write applies; --check gates (exit 1 if pending)."
58
+ },
59
+ {
60
+ "name": "manifest",
61
+ "json": true,
62
+ "interactive": false,
63
+ "purpose": "Print this machine manifest. --section env|modules|commands|blessedPatterns|failureModes for a slice."
64
+ },
65
+ {
66
+ "name": "init",
67
+ "json": true,
68
+ "interactive": false,
69
+ "purpose": "Wire SiteKitLayout + .env.local + postbuild sitemap. Pass --api-key and --yes to run non-interactively."
70
+ },
71
+ {
72
+ "name": "scaffold",
73
+ "json": true,
74
+ "interactive": false,
75
+ "purpose": "Create sitemap, robots, llms, middleware, manifest, error routes."
76
+ },
77
+ {
78
+ "name": "install",
79
+ "json": true,
80
+ "interactive": false,
81
+ "purpose": "Add @sonordev/site-kit with the detected package manager."
82
+ },
83
+ {
84
+ "name": "upgrade",
85
+ "json": true,
86
+ "interactive": false,
87
+ "purpose": "Upgrade @sonordev/site-kit to latest (or --version)."
88
+ }
89
+ ],
90
+ "modules": [
91
+ {
92
+ "name": "core",
93
+ "import": "@sonordev/site-kit",
94
+ "side": "unknown"
95
+ },
96
+ {
97
+ "name": "server",
98
+ "import": "@sonordev/site-kit/server",
99
+ "side": "unknown"
100
+ },
101
+ {
102
+ "name": "seo",
103
+ "import": "@sonordev/site-kit/seo",
104
+ "side": "server",
105
+ "purpose": "Managed metadata, schema (JSON-LD), FAQ, internal links, redirects at render time."
106
+ },
107
+ {
108
+ "name": "seo/client",
109
+ "import": "@sonordev/site-kit/seo/client",
110
+ "side": "unknown"
111
+ },
112
+ {
113
+ "name": "seo/server",
114
+ "import": "@sonordev/site-kit/seo/server",
115
+ "side": "server",
116
+ "purpose": "Server-only SEO fetchers (getManagedMetadata, ManagedSchema, ManagedFAQ)."
117
+ },
118
+ {
119
+ "name": "analytics",
120
+ "import": "@sonordev/site-kit/analytics",
121
+ "side": "client",
122
+ "purpose": "Page views, scroll depth, web vitals, heatmap clicks.",
123
+ "caution": "Never wrap {children}. Mount as a deferred, lazy, childless sibling or analytics de-opts the route to client rendering (SSR bailout)."
124
+ },
125
+ {
126
+ "name": "engage",
127
+ "import": "@sonordev/site-kit/engage",
128
+ "side": "client",
129
+ "purpose": "Popups, nudges, banners, chat widget configured in Sonor."
130
+ },
131
+ {
132
+ "name": "signal",
133
+ "import": "@sonordev/site-kit/signal",
134
+ "side": "client",
135
+ "purpose": "SignalBridge — real-time A/B experiments and behavior tracking (full_signal plan)."
136
+ },
137
+ {
138
+ "name": "forms",
139
+ "import": "@sonordev/site-kit/forms",
140
+ "side": "client",
141
+ "purpose": "Managed forms; routes submissions by type (prospect→CRM, support→ticket, newsletter→subscriber)."
142
+ },
143
+ {
144
+ "name": "forms/contract",
145
+ "import": "@sonordev/site-kit/forms/contract",
146
+ "side": "unknown"
147
+ },
148
+ {
149
+ "name": "blog",
150
+ "import": "@sonordev/site-kit/blog",
151
+ "side": "server",
152
+ "purpose": "Sonor-managed blog with SSG helpers (generateStaticParams, getBlogPost)."
153
+ },
154
+ {
155
+ "name": "blog/server",
156
+ "import": "@sonordev/site-kit/blog/server",
157
+ "side": "unknown"
158
+ },
159
+ {
160
+ "name": "blog/server-ui",
161
+ "import": "@sonordev/site-kit/blog/server-ui",
162
+ "side": "unknown"
163
+ },
164
+ {
165
+ "name": "commerce",
166
+ "import": "@sonordev/site-kit/commerce",
167
+ "side": "mixed",
168
+ "purpose": "Products, services, events, checkout."
169
+ },
170
+ {
171
+ "name": "commerce/server",
172
+ "import": "@sonordev/site-kit/commerce/server",
173
+ "side": "unknown"
174
+ },
175
+ {
176
+ "name": "sync",
177
+ "import": "@sonordev/site-kit/sync",
178
+ "side": "client",
179
+ "purpose": "Appointment scheduling (BookingWidget)."
180
+ },
181
+ {
182
+ "name": "setup",
183
+ "import": "@sonordev/site-kit/setup",
184
+ "side": "unknown"
185
+ },
186
+ {
187
+ "name": "sitemap",
188
+ "import": "@sonordev/site-kit/sitemap",
189
+ "side": "server",
190
+ "purpose": "createSitemap — discovers pages and syncs seo_pages. Pair with the sonor-register-sitemap postbuild step."
191
+ },
192
+ {
193
+ "name": "redirects",
194
+ "import": "@sonordev/site-kit/redirects",
195
+ "side": "server",
196
+ "purpose": "Sonor-managed 301/302 redirect rules (middleware)."
197
+ },
198
+ {
199
+ "name": "images",
200
+ "import": "@sonordev/site-kit/images",
201
+ "side": "server",
202
+ "purpose": "ManagedImage — Sonor-managed image slots."
203
+ },
204
+ {
205
+ "name": "images/server",
206
+ "import": "@sonordev/site-kit/images/server",
207
+ "side": "unknown"
208
+ },
209
+ {
210
+ "name": "reputation",
211
+ "import": "@sonordev/site-kit/reputation",
212
+ "side": "server",
213
+ "purpose": "Reviews/testimonials feed."
214
+ },
215
+ {
216
+ "name": "reputation/server",
217
+ "import": "@sonordev/site-kit/reputation/server",
218
+ "side": "unknown"
219
+ },
220
+ {
221
+ "name": "llms",
222
+ "import": "@sonordev/site-kit/llms",
223
+ "side": "server",
224
+ "purpose": "AI visibility / llms.txt generation (Node only)."
225
+ },
226
+ {
227
+ "name": "llms/contract",
228
+ "import": "@sonordev/site-kit/llms/contract",
229
+ "side": "server",
230
+ "purpose": "Pure LLM/GEO sanitizers + contract version — imported by the Nest APIs."
231
+ },
232
+ {
233
+ "name": "slots",
234
+ "import": "@sonordev/site-kit/slots",
235
+ "side": "server",
236
+ "purpose": "Managed Slots — named, Sonor-editable text regions inside elements you own."
237
+ },
238
+ {
239
+ "name": "slots/contract",
240
+ "import": "@sonordev/site-kit/slots/contract",
241
+ "side": "unknown"
242
+ },
243
+ {
244
+ "name": "sites/contract",
245
+ "import": "@sonordev/site-kit/sites/contract",
246
+ "side": "unknown"
247
+ },
248
+ {
249
+ "name": "seo-pages/contract",
250
+ "import": "@sonordev/site-kit/seo-pages/contract",
251
+ "side": "unknown"
252
+ },
253
+ {
254
+ "name": "portfolio/contract",
255
+ "import": "@sonordev/site-kit/portfolio/contract",
256
+ "side": "unknown"
257
+ },
258
+ {
259
+ "name": "fleet",
260
+ "import": "@sonordev/site-kit/fleet",
261
+ "side": "unknown"
262
+ },
263
+ {
264
+ "name": "fleet/contract",
265
+ "import": "@sonordev/site-kit/fleet/contract",
266
+ "side": "unknown"
267
+ },
268
+ {
269
+ "name": "robots",
270
+ "import": "@sonordev/site-kit/robots",
271
+ "side": "server",
272
+ "purpose": "robots.txt generator."
273
+ },
274
+ {
275
+ "name": "site-config",
276
+ "import": "@sonordev/site-kit/site-config",
277
+ "side": "server",
278
+ "purpose": "Project info resolved by API key."
279
+ },
280
+ {
281
+ "name": "layout",
282
+ "import": "@sonordev/site-kit/layout",
283
+ "side": "server",
284
+ "primary": true,
285
+ "purpose": "SiteKitLayout — the root integration point. Wrap {children}. Reads SONOR_API_KEY server-side."
286
+ },
287
+ {
288
+ "name": "middleware",
289
+ "import": "@sonordev/site-kit/middleware",
290
+ "side": "server",
291
+ "purpose": "createMiddleware + security headers.",
292
+ "caution": "On Netlify, runtime:'nodejs' middleware silently does not run — keep it edge-compatible or gate the logic in a server component."
293
+ },
294
+ {
295
+ "name": "manifest",
296
+ "import": "@sonordev/site-kit/manifest",
297
+ "side": "server",
298
+ "purpose": "PWA / web-app manifest generator (not the agent manifest)."
299
+ },
300
+ {
301
+ "name": "config",
302
+ "import": "@sonordev/site-kit/config",
303
+ "side": "server",
304
+ "purpose": "Next.js config helper (image formats, etc.)."
305
+ },
306
+ {
307
+ "name": "cms",
308
+ "import": "@sonordev/site-kit/cms",
309
+ "side": "mixed",
310
+ "purpose": "Sanity Content Lake integration."
311
+ },
312
+ {
313
+ "name": "cms/server",
314
+ "import": "@sonordev/site-kit/cms/server",
315
+ "side": "unknown"
316
+ },
317
+ {
318
+ "name": "maps",
319
+ "import": "@sonordev/site-kit/maps",
320
+ "side": "client",
321
+ "purpose": "Google Maps via Sonor API."
322
+ },
323
+ {
324
+ "name": "client",
325
+ "import": "@sonordev/site-kit/client",
326
+ "side": "client",
327
+ "purpose": "useDeferredActivation + shared identity for deferred, non-blocking client work."
328
+ }
329
+ ],
330
+ "blessedPatterns": [
331
+ {
332
+ "id": "layout.sitekit",
333
+ "title": "Root layout — SiteKitLayout (server component)",
334
+ "code": "import { SiteKitLayout } from '@sonordev/site-kit/layout'\n\nexport default function RootLayout({ children }) {\n return (\n <html lang=\"en\">\n <body>\n <SiteKitLayout>{children}</SiteKitLayout>\n </body>\n </html>\n )\n}"
335
+ },
336
+ {
337
+ "id": "analytics.deferred-sibling",
338
+ "title": "Deferred, childless analytics sibling (never wrap children)",
339
+ "code": "// SiteKitLayout with analytics={false}; analytics mounts as a deferred,\n// lazy, CHILDLESS sibling so it never sits in the hydration path and never\n// unmounts the page tree. Children stay in the same tree position always.\n<SiteKitLayout analytics={false}>{children}</SiteKitLayout>\n// + a client island using useDeferredActivation() that lazy-mounts analytics."
340
+ },
341
+ {
342
+ "id": "env.single-var",
343
+ "title": "The one env var",
344
+ "code": "# .env.local — the only variable a site needs\nSONOR_API_KEY=sonor_1a2b3c4d_... # server-side only, no NEXT_PUBLIC_ prefix"
345
+ }
346
+ ],
347
+ "failureModes": [
348
+ {
349
+ "id": "ssr.bailout",
350
+ "symptom": "Mobile LCP ~4s; server HTML is an empty shell + self.__next_f RSC flight data; no <section>/<h1>/<img> tags.",
351
+ "cause": "A client analytics/provider component wraps {children}, de-opting a statically prerenderable route to 100% client rendering.",
352
+ "fix": "Run SiteKitLayout with analytics={false} and mount analytics as a deferred, lazy, childless sibling. Verify with `sonor-setup verify --url <url>`.",
353
+ "check": "ssr.render"
354
+ },
355
+ {
356
+ "id": "middleware.netlify",
357
+ "symptom": "Middleware logic never executes in production on Netlify.",
358
+ "cause": "runtime:'nodejs' middleware silently does not run on Netlify.",
359
+ "fix": "Gate the logic in a server component, or keep the middleware edge-compatible.",
360
+ "check": "middleware.netlify"
361
+ },
362
+ {
363
+ "id": "key.stale",
364
+ "symptom": "Invalid-key console spam; data features paused; 401/403 from the API.",
365
+ "cause": "The site is running a stale/rotated key, or an env change was not redeployed (hosts don't pick up env changes without a redeploy).",
366
+ "fix": "Put the current sonor_ key in .env.local and redeploy. Never use an uptrade_ key.",
367
+ "check": "key.valid"
368
+ },
369
+ {
370
+ "id": "lcp.animated-hero",
371
+ "symptom": "LCP is late even though content is present.",
372
+ "cause": "The above-the-fold hero is opacity:0 + JS entrance-animated, so Chrome records LCP at the tween's end (or never).",
373
+ "fix": "Render hero/first-paint content fully static; gate reveal animations to below-the-fold only.",
374
+ "check": null
375
+ }
376
+ ]
377
+ }
@@ -0,0 +1,8 @@
1
+ export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-T2DEEKVQ.mjs';
2
+ import './chunk-3DPXOZAU.mjs';
3
+ import './chunk-EE6SFAZP.mjs';
4
+ import './chunk-LZSCCJ4O.mjs';
5
+ import './chunk-SN2O72UF.mjs';
6
+ import './chunk-4XPGGLVP.mjs';
7
+ //# sourceMappingURL=AnalyticsProvider-CD635CHQ.mjs.map
8
+ //# sourceMappingURL=AnalyticsProvider-CD635CHQ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-MLT26JRP.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-CD635CHQ.mjs"}
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var chunkSLWTG2LJ_js = require('./chunk-SLWTG2LJ.js');
4
+ require('./chunk-HMFFAUCD.js');
5
+ require('./chunk-3BNFUMLL.js');
6
+ require('./chunk-EAASMIWX.js');
7
+ require('./chunk-WRZQS7O4.js');
8
+ require('./chunk-ZSMWDLMK.js');
9
+
10
+
11
+
12
+ Object.defineProperty(exports, "AnalyticsProvider", {
13
+ enumerable: true,
14
+ get: function () { return chunkSLWTG2LJ_js.AnalyticsProvider; }
15
+ });
16
+ Object.defineProperty(exports, "useAnalytics", {
17
+ enumerable: true,
18
+ get: function () { return chunkSLWTG2LJ_js.useAnalytics; }
19
+ });
20
+ Object.defineProperty(exports, "useAnalyticsOptional", {
21
+ enumerable: true,
22
+ get: function () { return chunkSLWTG2LJ_js.useAnalyticsOptional; }
23
+ });
24
+ Object.defineProperty(exports, "useTrackEvent", {
25
+ enumerable: true,
26
+ get: function () { return chunkSLWTG2LJ_js.useTrackEvent; }
27
+ });
28
+ //# sourceMappingURL=AnalyticsProvider-WK2Z6AIN.js.map
29
+ //# sourceMappingURL=AnalyticsProvider-WK2Z6AIN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-WTOGN7LV.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-WK2Z6AIN.js"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var chunkGQF6QAQS_js = require('./chunk-GQF6QAQS.js');
4
+ require('./chunk-ZSMWDLMK.js');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function BlogPostFaqSection(props) {
8
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkGQF6QAQS_js.BlogFAQ, { ...props });
9
+ }
10
+
11
+ exports.BlogPostFaqSection = BlogPostFaqSection;
12
+ //# sourceMappingURL=BlogPostFaqSection-4AD2NIGG.js.map
13
+ //# sourceMappingURL=BlogPostFaqSection-4AD2NIGG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/blog/BlogPostFaqSection.tsx"],"names":["jsx","BlogFAQ"],"mappings":";;;;;;AAWO,SAAS,mBAAmB,KAAA,EAAqB;AACtD,EAAA,uBAAOA,cAAA,CAACC,wBAAA,EAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AAC7B","file":"BlogPostFaqSection-H556RV62.js","sourcesContent":["'use client'\n\n/**\n * Client boundary for FAQ accordion inside {@link BlogPost}.\n * Keeps `BlogPost.tsx` free of bundled hook code so the prebuilt `server-ui`\n * chunk stays a Server Component and supports render-prop `children`.\n */\n\nimport { BlogFAQ } from './BlogFAQ'\nimport type { BlogFAQProps } from './BlogFAQ'\n\nexport function BlogPostFaqSection(props: BlogFAQProps) {\n return <BlogFAQ {...props} />\n}\n"]}
1
+ {"version":3,"sources":["../src/blog/BlogPostFaqSection.tsx"],"names":["jsx","BlogFAQ"],"mappings":";;;;;;AAWO,SAAS,mBAAmB,KAAA,EAAqB;AACtD,EAAA,uBAAOA,cAAA,CAACC,wBAAA,EAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AAC7B","file":"BlogPostFaqSection-4AD2NIGG.js","sourcesContent":["'use client'\n\n/**\n * Client boundary for FAQ accordion inside {@link BlogPost}.\n * Keeps `BlogPost.tsx` free of bundled hook code so the prebuilt `server-ui`\n * chunk stays a Server Component and supports render-prop `children`.\n */\n\nimport { BlogFAQ } from './BlogFAQ'\nimport type { BlogFAQProps } from './BlogFAQ'\n\nexport function BlogPostFaqSection(props: BlogFAQProps) {\n return <BlogFAQ {...props} />\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BlogFAQ } from './chunk-PST3NOEM.mjs';
1
+ import { BlogFAQ } from './chunk-O237KKCX.mjs';
2
2
  import './chunk-4XPGGLVP.mjs';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -7,5 +7,5 @@ function BlogPostFaqSection(props) {
7
7
  }
8
8
 
9
9
  export { BlogPostFaqSection };
10
- //# sourceMappingURL=BlogPostFaqSection-VSHOKKUD.mjs.map
11
- //# sourceMappingURL=BlogPostFaqSection-VSHOKKUD.mjs.map
10
+ //# sourceMappingURL=BlogPostFaqSection-TU6YEC7P.mjs.map
11
+ //# sourceMappingURL=BlogPostFaqSection-TU6YEC7P.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/blog/BlogPostFaqSection.tsx"],"names":[],"mappings":";;;;AAWO,SAAS,mBAAmB,KAAA,EAAqB;AACtD,EAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AAC7B","file":"BlogPostFaqSection-VSHOKKUD.mjs","sourcesContent":["'use client'\n\n/**\n * Client boundary for FAQ accordion inside {@link BlogPost}.\n * Keeps `BlogPost.tsx` free of bundled hook code so the prebuilt `server-ui`\n * chunk stays a Server Component and supports render-prop `children`.\n */\n\nimport { BlogFAQ } from './BlogFAQ'\nimport type { BlogFAQProps } from './BlogFAQ'\n\nexport function BlogPostFaqSection(props: BlogFAQProps) {\n return <BlogFAQ {...props} />\n}\n"]}
1
+ {"version":3,"sources":["../src/blog/BlogPostFaqSection.tsx"],"names":[],"mappings":";;;;AAWO,SAAS,mBAAmB,KAAA,EAAqB;AACtD,EAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AAC7B","file":"BlogPostFaqSection-TU6YEC7P.mjs","sourcesContent":["'use client'\n\n/**\n * Client boundary for FAQ accordion inside {@link BlogPost}.\n * Keeps `BlogPost.tsx` free of bundled hook code so the prebuilt `server-ui`\n * chunk stays a Server Component and supports render-prop `children`.\n */\n\nimport { BlogFAQ } from './BlogFAQ'\nimport type { BlogFAQProps } from './BlogFAQ'\n\nexport function BlogPostFaqSection(props: BlogFAQProps) {\n return <BlogFAQ {...props} />\n}\n"]}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var chunkNAVDN4AE_js = require('./chunk-NAVDN4AE.js');
4
+ require('./chunk-HAZN43I6.js');
5
+ require('./chunk-V6NVBFEP.js');
6
+ require('./chunk-EAASMIWX.js');
7
+ require('./chunk-WRZQS7O4.js');
8
+ require('./chunk-ZSMWDLMK.js');
9
+
10
+
11
+
12
+ Object.defineProperty(exports, "ChatWidget", {
13
+ enumerable: true,
14
+ get: function () { return chunkNAVDN4AE_js.ChatWidget; }
15
+ });
16
+ //# sourceMappingURL=ChatWidget-AIOOZY6H.js.map
17
+ //# sourceMappingURL=ChatWidget-AIOOZY6H.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-MAL7FB4M.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-AIOOZY6H.js"}
@@ -0,0 +1,8 @@
1
+ export { ChatWidget } from './chunk-DSRPKUQI.mjs';
2
+ import './chunk-N2HR2E4Z.mjs';
3
+ import './chunk-X3S6KXAP.mjs';
4
+ import './chunk-LZSCCJ4O.mjs';
5
+ import './chunk-SN2O72UF.mjs';
6
+ import './chunk-4XPGGLVP.mjs';
7
+ //# sourceMappingURL=ChatWidget-UAAWDBNS.mjs.map
8
+ //# sourceMappingURL=ChatWidget-UAAWDBNS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-QPZTPSPE.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-UAAWDBNS.mjs"}
@@ -0,0 +1,7 @@
1
+ export { EngageWidget } from './chunk-OTY7EWET.mjs';
2
+ import './chunk-EE6SFAZP.mjs';
3
+ import './chunk-LZSCCJ4O.mjs';
4
+ import './chunk-SN2O72UF.mjs';
5
+ import './chunk-4XPGGLVP.mjs';
6
+ //# sourceMappingURL=EngageWidget-EZ5T6H3K.mjs.map
7
+ //# sourceMappingURL=EngageWidget-EZ5T6H3K.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-IPBUA4DW.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-EZ5T6H3K.mjs"}
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var chunk4NTMIU6V_js = require('./chunk-4NTMIU6V.js');
4
+ require('./chunk-3BNFUMLL.js');
5
+ require('./chunk-EAASMIWX.js');
6
+ require('./chunk-WRZQS7O4.js');
7
+ require('./chunk-ZSMWDLMK.js');
8
+
9
+
10
+
11
+ Object.defineProperty(exports, "EngageWidget", {
12
+ enumerable: true,
13
+ get: function () { return chunk4NTMIU6V_js.EngageWidget; }
14
+ });
15
+ //# sourceMappingURL=EngageWidget-RWVWW56C.js.map
16
+ //# sourceMappingURL=EngageWidget-RWVWW56C.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-N3CABK3L.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-RWVWW56C.js"}