@sonordev/site-kit 3.0.5 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +107 -0
- package/agent-manifest.json +377 -0
- package/dist/AnalyticsProvider-A3STXJ65.js +29 -0
- package/dist/{AnalyticsProvider-WTOGN7LV.js.map → AnalyticsProvider-A3STXJ65.js.map} +1 -1
- package/dist/AnalyticsProvider-LEXGFM2K.mjs +8 -0
- package/dist/{AnalyticsProvider-MLT26JRP.mjs.map → AnalyticsProvider-LEXGFM2K.mjs.map} +1 -1
- package/dist/BlogPostFaqSection-4AD2NIGG.js +13 -0
- package/dist/{BlogPostFaqSection-H556RV62.js.map → BlogPostFaqSection-4AD2NIGG.js.map} +1 -1
- package/dist/{BlogPostFaqSection-VSHOKKUD.mjs → BlogPostFaqSection-TU6YEC7P.mjs} +3 -3
- package/dist/{BlogPostFaqSection-VSHOKKUD.mjs.map → BlogPostFaqSection-TU6YEC7P.mjs.map} +1 -1
- package/dist/ChatWidget-4QR2ZDRE.mjs +8 -0
- package/dist/{ChatWidget-QPZTPSPE.mjs.map → ChatWidget-4QR2ZDRE.mjs.map} +1 -1
- package/dist/ChatWidget-U3K2VHVN.js +17 -0
- package/dist/{ChatWidget-MAL7FB4M.js.map → ChatWidget-U3K2VHVN.js.map} +1 -1
- package/dist/EngageWidget-2FMKYJJT.mjs +7 -0
- package/dist/{EngageWidget-IPBUA4DW.mjs.map → EngageWidget-2FMKYJJT.mjs.map} +1 -1
- package/dist/EngageWidget-TOGMQ2G6.js +16 -0
- package/dist/{EngageWidget-N3CABK3L.js.map → EngageWidget-TOGMQ2G6.js.map} +1 -1
- package/dist/{SignalCore-4MDIJUAP.mjs → SignalCore-5QJG3IJB.mjs} +60 -47
- package/dist/SignalCore-5QJG3IJB.mjs.map +1 -0
- package/dist/{SignalCore-ZMFUE3N4.js → SignalCore-JB3VHHTG.js} +60 -47
- package/dist/SignalCore-JB3VHHTG.js.map +1 -0
- package/dist/SitemapSync-BJWSTERT.js +15 -0
- package/dist/{SitemapSync-FUCH6Y6J.js.map → SitemapSync-BJWSTERT.js.map} +1 -1
- package/dist/SitemapSync-T6PIDW64.mjs +6 -0
- package/dist/{SitemapSync-LCSPRAWU.mjs.map → SitemapSync-T6PIDW64.mjs.map} +1 -1
- package/dist/analytics/index.js +11 -9
- package/dist/analytics/index.mjs +4 -2
- package/dist/blog/index.js +12 -12
- package/dist/blog/index.mjs +2 -2
- package/dist/blog/server-ui.js +5 -5
- package/dist/blog/server-ui.mjs +1 -1
- package/dist/brand.css +21 -6
- package/dist/{chunk-O7E6QVK3.js → chunk-52VXHSVT.js} +3 -3
- package/dist/{chunk-O7E6QVK3.js.map → chunk-52VXHSVT.js.map} +1 -1
- package/dist/{chunk-I2GTT2DG.js → chunk-5RX4CUR2.js} +19 -21
- package/dist/chunk-5RX4CUR2.js.map +1 -0
- package/dist/{chunk-5AESOLXS.mjs → chunk-5ZNKNNJ4.mjs} +13 -11
- package/dist/chunk-5ZNKNNJ4.mjs.map +1 -0
- package/dist/{chunk-3YQCPLGP.mjs → chunk-7OK6BI3A.mjs} +41 -79
- package/dist/chunk-7OK6BI3A.mjs.map +1 -0
- package/dist/{chunk-TCVHI3JP.mjs → chunk-7R7SGJG3.mjs} +71 -109
- package/dist/chunk-7R7SGJG3.mjs.map +1 -0
- package/dist/{chunk-FT5JNCD4.mjs → chunk-AB2VYIYU.mjs} +11 -11
- package/dist/{chunk-FT5JNCD4.mjs.map → chunk-AB2VYIYU.mjs.map} +1 -1
- package/dist/{chunk-FMZOZQBV.mjs → chunk-AMBTOIYM.mjs} +19 -21
- package/dist/chunk-AMBTOIYM.mjs.map +1 -0
- package/dist/chunk-B5YNHSRA.js +102 -0
- package/dist/chunk-B5YNHSRA.js.map +1 -0
- package/dist/{chunk-I5TJIESQ.js → chunk-BMKZHXWQ.js} +11 -11
- package/dist/{chunk-I5TJIESQ.js.map → chunk-BMKZHXWQ.js.map} +1 -1
- package/dist/{chunk-NNZDHLXN.js → chunk-BNBCSHTK.js} +35 -9
- package/dist/chunk-BNBCSHTK.js.map +1 -0
- package/dist/{chunk-AN4ATCYQ.mjs → chunk-BUCF5FUY.mjs} +3 -3
- package/dist/{chunk-AN4ATCYQ.mjs.map → chunk-BUCF5FUY.mjs.map} +1 -1
- package/dist/{chunk-3GCEFS73.js → chunk-DCZUMCEC.js} +39 -62
- package/dist/chunk-DCZUMCEC.js.map +1 -0
- package/dist/{chunk-EUDTPXUI.mjs → chunk-DYCEEU67.mjs} +3 -3
- package/dist/{chunk-EUDTPXUI.mjs.map → chunk-DYCEEU67.mjs.map} +1 -1
- package/dist/chunk-E4TWVVSW.mjs +97 -0
- package/dist/chunk-E4TWVVSW.mjs.map +1 -0
- package/dist/{chunk-VCWSSGCU.js → chunk-E7M5MDGC.js} +32 -43
- package/dist/chunk-E7M5MDGC.js.map +1 -0
- package/dist/{chunk-QTWA44S3.mjs → chunk-GMO6POZ2.mjs} +7 -8
- package/dist/chunk-GMO6POZ2.mjs.map +1 -0
- package/dist/chunk-GMSPDTEV.js +264 -0
- package/dist/chunk-GMSPDTEV.js.map +1 -0
- package/dist/{chunk-UJQYSVYV.js → chunk-GQF6QAQS.js} +4 -4
- package/dist/{chunk-UJQYSVYV.js.map → chunk-GQF6QAQS.js.map} +1 -1
- package/dist/{chunk-65SMJBHW.mjs → chunk-IR5UC236.mjs} +69 -74
- package/dist/chunk-IR5UC236.mjs.map +1 -0
- package/dist/{chunk-MLJXELPA.js → chunk-LF3ID6WN.js} +71 -111
- package/dist/chunk-LF3ID6WN.js.map +1 -0
- package/dist/{chunk-YFGKIKXA.mjs → chunk-MKZHVSKL.mjs} +3 -3
- package/dist/{chunk-YFGKIKXA.mjs.map → chunk-MKZHVSKL.mjs.map} +1 -1
- package/dist/{chunk-IBDVZ6BF.js → chunk-MX6DK246.js} +69 -74
- package/dist/chunk-MX6DK246.js.map +1 -0
- package/dist/{chunk-DGHPOWLU.js → chunk-MYAXI33P.js} +8 -8
- package/dist/{chunk-DGHPOWLU.js.map → chunk-MYAXI33P.js.map} +1 -1
- package/dist/{chunk-YJWKHCOB.js → chunk-NDROQRDB.js} +13 -11
- package/dist/chunk-NDROQRDB.js.map +1 -0
- package/dist/{chunk-RI6JZUAE.js → chunk-NJIHMZPC.js} +7 -8
- package/dist/chunk-NJIHMZPC.js.map +1 -0
- package/dist/{chunk-KHFNPPOX.mjs → chunk-NQ2P7AB3.mjs} +31 -42
- package/dist/chunk-NQ2P7AB3.mjs.map +1 -0
- package/dist/{chunk-PST3NOEM.mjs → chunk-O237KKCX.mjs} +4 -4
- package/dist/{chunk-PST3NOEM.mjs.map → chunk-O237KKCX.mjs.map} +1 -1
- package/dist/chunk-Q2NBD54V.js +69 -0
- package/dist/chunk-Q2NBD54V.js.map +1 -0
- package/dist/chunk-QLM7RNQI.mjs +6 -0
- package/dist/chunk-QLM7RNQI.mjs.map +1 -0
- package/dist/chunk-SBT4J733.mjs +259 -0
- package/dist/chunk-SBT4J733.mjs.map +1 -0
- package/dist/{chunk-EBJ4S5DU.js → chunk-SGPIGHMN.js} +4 -4
- package/dist/{chunk-EBJ4S5DU.js.map → chunk-SGPIGHMN.js.map} +1 -1
- package/dist/chunk-V6NVBFEP.js +54 -0
- package/dist/chunk-V6NVBFEP.js.map +1 -0
- package/dist/{chunk-KMZ527EM.mjs → chunk-VTHCUHMK.mjs} +34 -8
- package/dist/chunk-VTHCUHMK.mjs.map +1 -0
- package/dist/chunk-WAAFJPNR.js +8 -0
- package/dist/chunk-WAAFJPNR.js.map +1 -0
- package/dist/chunk-WZHWWOUC.js +51 -0
- package/dist/chunk-WZHWWOUC.js.map +1 -0
- package/dist/chunk-X3S6KXAP.mjs +47 -0
- package/dist/chunk-X3S6KXAP.mjs.map +1 -0
- package/dist/chunk-X4OPM3SK.mjs +43 -0
- package/dist/chunk-X4OPM3SK.mjs.map +1 -0
- package/dist/{chunk-T4QBSRA4.mjs → chunk-XHEXIYKY.mjs} +37 -60
- package/dist/chunk-XHEXIYKY.mjs.map +1 -0
- package/dist/{chunk-IFVMZFNT.js → chunk-XM67L4HL.js} +41 -79
- package/dist/chunk-XM67L4HL.js.map +1 -0
- package/dist/chunk-ZPLN537Q.mjs +57 -0
- package/dist/chunk-ZPLN537Q.mjs.map +1 -0
- package/dist/cli/index.js +8986 -1276
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +8972 -1280
- package/dist/cli/index.mjs.map +1 -1
- package/dist/commerce/index.js +50 -48
- package/dist/commerce/index.mjs +5 -3
- package/dist/engage/index.js +11 -8
- package/dist/engage/index.js.map +1 -1
- package/dist/engage/index.mjs +8 -5
- package/dist/engage/index.mjs.map +1 -1
- package/dist/fleet/contract.d.mts +99 -0
- package/dist/fleet/contract.d.ts +99 -0
- package/dist/fleet/contract.js +53 -0
- package/dist/fleet/contract.js.map +1 -0
- package/dist/fleet/contract.mjs +4 -0
- package/dist/fleet/contract.mjs.map +1 -0
- package/dist/fleet/index.d.mts +89 -0
- package/dist/fleet/index.d.ts +89 -0
- package/dist/fleet/index.js +74 -0
- package/dist/fleet/index.js.map +1 -0
- package/dist/fleet/index.mjs +9 -0
- package/dist/fleet/index.mjs.map +1 -0
- package/dist/forms/contract.d.mts +69 -0
- package/dist/forms/contract.d.ts +69 -0
- package/dist/forms/contract.js +33 -0
- package/dist/forms/contract.js.map +1 -0
- package/dist/forms/contract.mjs +4 -0
- package/dist/forms/contract.mjs.map +1 -0
- package/dist/forms/index.js +27 -23
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +20 -16
- package/dist/forms/index.mjs.map +1 -1
- package/dist/forms/styles.css +14 -10
- package/dist/images/index.js +10 -8
- package/dist/images/index.mjs +3 -1
- package/dist/index.js +103 -102
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -13
- package/dist/index.mjs.map +1 -1
- package/dist/layout/client.d.mts +8 -1
- package/dist/layout/client.d.ts +8 -1
- package/dist/layout/client.js +8 -3
- package/dist/layout/client.mjs +7 -2
- package/dist/layout/index.d.mts +7 -1
- package/dist/layout/index.d.ts +7 -1
- package/dist/layout/index.js +57 -4
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +56 -3
- package/dist/layout/index.mjs.map +1 -1
- package/dist/maps/index.d.mts +4 -2
- package/dist/maps/index.d.ts +4 -2
- package/dist/maps/index.js +9 -18
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/index.mjs +9 -18
- package/dist/maps/index.mjs.map +1 -1
- package/dist/portfolio/contract.d.mts +61 -0
- package/dist/portfolio/contract.d.ts +61 -0
- package/dist/portfolio/contract.js +43 -0
- package/dist/portfolio/contract.js.map +1 -0
- package/dist/portfolio/contract.mjs +38 -0
- package/dist/portfolio/contract.mjs.map +1 -0
- package/dist/seo/client.js +4 -2
- package/dist/seo/client.mjs +3 -1
- package/dist/seo/index.js +4 -2
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +3 -1
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo-pages/contract.d.mts +62 -0
- package/dist/seo-pages/contract.d.ts +62 -0
- package/dist/seo-pages/contract.js +48 -0
- package/dist/seo-pages/contract.js.map +1 -0
- package/dist/seo-pages/contract.mjs +44 -0
- package/dist/seo-pages/contract.mjs.map +1 -0
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sites/contract.d.mts +57 -0
- package/dist/sites/contract.d.ts +57 -0
- package/dist/sites/contract.js +37 -0
- package/dist/sites/contract.js.map +1 -0
- package/dist/sites/contract.mjs +4 -0
- package/dist/sites/contract.mjs.map +1 -0
- package/dist/sync/index.js +15 -13
- package/dist/sync/index.mjs +3 -1
- package/package.json +44 -4
- package/skills/site-kit/SKILL.md +66 -0
- package/dist/AnalyticsProvider-MLT26JRP.mjs +0 -6
- package/dist/AnalyticsProvider-WTOGN7LV.js +0 -27
- package/dist/BlogPostFaqSection-H556RV62.js +0 -13
- package/dist/ChatWidget-MAL7FB4M.js +0 -14
- package/dist/ChatWidget-QPZTPSPE.mjs +0 -5
- package/dist/EngageWidget-IPBUA4DW.mjs +0 -5
- package/dist/EngageWidget-N3CABK3L.js +0 -14
- package/dist/SignalCore-4MDIJUAP.mjs.map +0 -1
- package/dist/SignalCore-ZMFUE3N4.js.map +0 -1
- package/dist/SitemapSync-FUCH6Y6J.js +0 -13
- package/dist/SitemapSync-LCSPRAWU.mjs +0 -4
- package/dist/chunk-3GCEFS73.js.map +0 -1
- package/dist/chunk-3YQCPLGP.mjs.map +0 -1
- package/dist/chunk-5AESOLXS.mjs.map +0 -1
- package/dist/chunk-65SMJBHW.mjs.map +0 -1
- package/dist/chunk-FMZOZQBV.mjs.map +0 -1
- package/dist/chunk-I2GTT2DG.js.map +0 -1
- package/dist/chunk-IBDVZ6BF.js.map +0 -1
- package/dist/chunk-IFVMZFNT.js.map +0 -1
- package/dist/chunk-KHFNPPOX.mjs.map +0 -1
- package/dist/chunk-KMZ527EM.mjs.map +0 -1
- package/dist/chunk-MLJXELPA.js.map +0 -1
- package/dist/chunk-NNZDHLXN.js.map +0 -1
- package/dist/chunk-QTWA44S3.mjs.map +0 -1
- package/dist/chunk-RI6JZUAE.js.map +0 -1
- package/dist/chunk-T4QBSRA4.mjs.map +0 -1
- package/dist/chunk-TCVHI3JP.mjs.map +0 -1
- package/dist/chunk-VCWSSGCU.js.map +0 -1
- 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.1",
|
|
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,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkMX6DK246_js = require('./chunk-MX6DK246.js');
|
|
4
|
+
require('./chunk-HMFFAUCD.js');
|
|
5
|
+
require('./chunk-3BNFUMLL.js');
|
|
6
|
+
require('./chunk-GMSPDTEV.js');
|
|
7
|
+
require('./chunk-WAAFJPNR.js');
|
|
8
|
+
require('./chunk-ZSMWDLMK.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Object.defineProperty(exports, "AnalyticsProvider", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkMX6DK246_js.AnalyticsProvider; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "useAnalytics", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunkMX6DK246_js.useAnalytics; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "useAnalyticsOptional", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunkMX6DK246_js.useAnalyticsOptional; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "useTrackEvent", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunkMX6DK246_js.useTrackEvent; }
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=AnalyticsProvider-A3STXJ65.js.map
|
|
29
|
+
//# sourceMappingURL=AnalyticsProvider-A3STXJ65.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-A3STXJ65.js"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-IR5UC236.mjs';
|
|
2
|
+
import './chunk-3DPXOZAU.mjs';
|
|
3
|
+
import './chunk-EE6SFAZP.mjs';
|
|
4
|
+
import './chunk-SBT4J733.mjs';
|
|
5
|
+
import './chunk-QLM7RNQI.mjs';
|
|
6
|
+
import './chunk-4XPGGLVP.mjs';
|
|
7
|
+
//# sourceMappingURL=AnalyticsProvider-LEXGFM2K.mjs.map
|
|
8
|
+
//# sourceMappingURL=AnalyticsProvider-LEXGFM2K.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-LEXGFM2K.mjs"}
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
11
|
-
//# sourceMappingURL=BlogPostFaqSection-
|
|
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-
|
|
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,8 @@
|
|
|
1
|
+
export { ChatWidget } from './chunk-NQ2P7AB3.mjs';
|
|
2
|
+
import './chunk-7R7SGJG3.mjs';
|
|
3
|
+
import './chunk-X3S6KXAP.mjs';
|
|
4
|
+
import './chunk-SBT4J733.mjs';
|
|
5
|
+
import './chunk-QLM7RNQI.mjs';
|
|
6
|
+
import './chunk-4XPGGLVP.mjs';
|
|
7
|
+
//# sourceMappingURL=ChatWidget-4QR2ZDRE.mjs.map
|
|
8
|
+
//# sourceMappingURL=ChatWidget-4QR2ZDRE.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-4QR2ZDRE.mjs"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkE7M5MDGC_js = require('./chunk-E7M5MDGC.js');
|
|
4
|
+
require('./chunk-LF3ID6WN.js');
|
|
5
|
+
require('./chunk-V6NVBFEP.js');
|
|
6
|
+
require('./chunk-GMSPDTEV.js');
|
|
7
|
+
require('./chunk-WAAFJPNR.js');
|
|
8
|
+
require('./chunk-ZSMWDLMK.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Object.defineProperty(exports, "ChatWidget", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkE7M5MDGC_js.ChatWidget; }
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=ChatWidget-U3K2VHVN.js.map
|
|
17
|
+
//# sourceMappingURL=ChatWidget-U3K2VHVN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-U3K2VHVN.js"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { EngageWidget } from './chunk-5ZNKNNJ4.mjs';
|
|
2
|
+
import './chunk-EE6SFAZP.mjs';
|
|
3
|
+
import './chunk-SBT4J733.mjs';
|
|
4
|
+
import './chunk-QLM7RNQI.mjs';
|
|
5
|
+
import './chunk-4XPGGLVP.mjs';
|
|
6
|
+
//# sourceMappingURL=EngageWidget-2FMKYJJT.mjs.map
|
|
7
|
+
//# sourceMappingURL=EngageWidget-2FMKYJJT.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-2FMKYJJT.mjs"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkNDROQRDB_js = require('./chunk-NDROQRDB.js');
|
|
4
|
+
require('./chunk-3BNFUMLL.js');
|
|
5
|
+
require('./chunk-GMSPDTEV.js');
|
|
6
|
+
require('./chunk-WAAFJPNR.js');
|
|
7
|
+
require('./chunk-ZSMWDLMK.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Object.defineProperty(exports, "EngageWidget", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return chunkNDROQRDB_js.EngageWidget; }
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=EngageWidget-TOGMQ2G6.js.map
|
|
16
|
+
//# sourceMappingURL=EngageWidget-TOGMQ2G6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-TOGMQ2G6.js"}
|