@sonordev/site-kit 8.2.0 → 8.4.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.
- package/AGENTS.md +13 -1
- package/CHANGELOG.md +12 -0
- package/README.md +9 -5
- package/agent-manifest.json +53 -8
- package/dist/{AnalyticsProvider-6TAA3XYB.js → AnalyticsProvider-D6GWEJSB.js} +6 -6
- package/dist/{ArticleFaqSection-3Q26DP7P.js → ArticleFaqSection-DEWE5B4Q.js} +1 -1
- package/dist/{ArticleViewTracker-H4N7YCLC.js → ArticleViewTracker-YZ76HM64.js} +17 -6
- package/dist/{BlocksPopup-FJT5YQD3.js → BlocksPopup-UJXZ4AXG.js} +6 -6
- package/dist/{ChatWidget-THQHHTAA.js → ChatWidget-H4EOSH5I.js} +6 -6
- package/dist/{FileField-OZXXJGUM.js → FileField-CKBYGCNT.js} +4 -4
- package/dist/{FormSpotlight-MLDJS246.js → FormSpotlight-CGF5ZE6S.js} +1 -1
- package/dist/{FormStage-6RVY7M3R.js → FormStage-PQPUPQWW.js} +1 -1
- package/dist/{ManagedForm-3VV54RVH.js → ManagedForm-YOEZ7CFS.js} +7 -7
- package/dist/{ManagedNewsletterForm-RTJDGMGG.js → ManagedNewsletterForm-EUWJ2HCA.js} +25 -11
- package/dist/{SignalCore-T7ZOCA44.js → SignalCore-JZSU7A44.js} +14 -8
- package/dist/SiteChat-OAZH34W7.js +6 -0
- package/dist/SiteDesignReporter-IWBMZJYU.js +12 -0
- package/dist/{SitePopups-K6ADAWFK.js → SitePopups-MLAT35UN.js} +6 -6
- package/dist/SitemapSync-6KQLKFO2.js +9 -0
- package/dist/_client/booking-widget.js +6 -6
- package/dist/_client/testimonial-section.js +3 -3
- package/dist/affiliates/index.js +4 -4
- package/dist/analytics/index.js +6 -6
- package/dist/analytics/publication-cta.d.ts +3 -0
- package/dist/{article-styles-GFXJJDLE.js → article-styles-AOOVVKXH.js} +7 -5
- package/dist/article-tables-6XHVULPU.js +2 -0
- package/dist/articles/Article.d.ts +2 -89
- package/dist/articles/ArticleFAQ.d.ts +2 -41
- package/dist/articles/ArticleFaqSection.d.ts +2 -2
- package/dist/articles/ArticleList.d.ts +2 -79
- package/dist/articles/ArticleViewTracker.d.ts +2 -15
- package/dist/articles/AuthorCard.d.ts +2 -10
- package/dist/articles/AuthorPage.d.ts +2 -8
- package/dist/articles/ClusterLandingPage.d.ts +2 -40
- package/dist/articles/ClusterNavigation.d.ts +2 -37
- package/dist/articles/ManagedNewsletterForm.d.ts +3 -12
- package/dist/articles/NewsletterShell.d.ts +2 -17
- package/dist/articles/NewsletterWidget.d.ts +2 -30
- package/dist/articles/PublicationLayout.d.ts +2 -67
- package/dist/articles/PublicationSidebar.d.ts +2 -36
- package/dist/articles/RelatedPosts.d.ts +2 -22
- package/dist/articles/ServiceCallout.d.ts +2 -56
- package/dist/articles/TableOfContents.d.ts +2 -6
- package/dist/articles/article-photos.d.ts +2 -9
- package/dist/articles/article-styles.d.ts +2 -21
- package/dist/articles/article-tables.d.ts +2 -12
- package/dist/articles/artwork.d.ts +2 -13
- package/dist/articles/author-schema.d.ts +2 -72
- package/dist/articles/author-social.d.ts +2 -14
- package/dist/articles/excerpt.d.ts +2 -17
- package/dist/articles/index.d.ts +2 -79
- package/dist/articles/index.js +16 -11
- package/dist/articles/news-sitemap.d.ts +2 -46
- package/dist/articles/processArticleHtml.d.ts +2 -34
- package/dist/articles/public-reads.d.ts +2 -26
- package/dist/articles/reading-time.d.ts +2 -9
- package/dist/articles/routes.d.ts +2 -52
- package/dist/articles/server-core.d.ts +2 -461
- package/dist/articles/server-ui.d.ts +2 -30
- package/dist/articles/server-ui.js +72 -62
- package/dist/articles/server.d.ts +2 -461
- package/dist/articles/server.js +14 -5
- package/dist/articles/types.d.ts +2 -316
- package/dist/articles/widget-styles.d.ts +2 -8
- package/dist/chat/index.js +8 -8
- package/dist/chunk-34ZYJTQR.js +1 -0
- package/dist/{chunk-727R7C5R.js → chunk-3VSFOD2Z.js} +2 -2
- package/dist/{chunk-JC2VS2SB.js → chunk-44GVU5UH.js} +1 -1
- package/dist/{chunk-WYZ4OUON.js → chunk-4HYIDQJJ.js} +1 -1
- package/dist/{chunk-WMVK77ND.js → chunk-4K735O3J.js} +1 -1
- package/dist/{chunk-L5UOHS6E.js → chunk-5D7ZISUP.js} +1 -1
- package/dist/{chunk-Q72M5KBS.js → chunk-5S7YTOCB.js} +1 -1
- package/dist/{chunk-WSNG2K3T.js → chunk-5TDZHIG6.js} +3 -3
- package/dist/{chunk-6CJGZFOU.js → chunk-A4MPHIVP.js} +1 -1
- package/dist/chunk-B7T2SFUF.js +1 -0
- package/dist/{chunk-FV2VD7WM.js → chunk-BC7JMY4Z.js} +3 -3
- package/dist/chunk-BLCHQIWR.js +319 -0
- package/dist/{chunk-NNEIBXGU.js → chunk-BLENFNBW.js} +2 -2
- package/dist/{chunk-NFRJTOTB.js → chunk-BSQP6PRA.js} +1 -1
- package/dist/{chunk-GKGSXUVQ.js → chunk-BVB5FBAA.js} +1 -1
- package/dist/{chunk-WACWV5EP.js → chunk-CE7VPAEH.js} +3 -3
- package/dist/{chunk-GYF2ULVO.js → chunk-DJAYFHVF.js} +1 -1
- package/dist/{chunk-WBC5B3JD.js → chunk-DKKYZLKR.js} +3 -3
- package/dist/{chunk-CAH4Y4PY.js → chunk-DLM4FFNH.js} +6 -2
- package/dist/{chunk-575L73NT.js → chunk-DS6LECIX.js} +1 -1
- package/dist/{chunk-Y3INC4QJ.js → chunk-E4PTMORJ.js} +1 -1
- package/dist/chunk-H72ZFO3F.js +1 -0
- package/dist/{chunk-WK3N3Y7V.js → chunk-HH2GOZTO.js} +2 -2
- package/dist/{chunk-JBEUZJS3.js → chunk-ITY4UZEJ.js} +3 -3
- package/dist/{chunk-GWP2VBFH.js → chunk-J4KX2D3Q.js} +3 -3
- package/dist/{chunk-57K4GW3D.js → chunk-JCSU6EJI.js} +1 -1
- package/dist/{chunk-SC4MZGWZ.js → chunk-JHTPHA2D.js} +6 -3
- package/dist/{chunk-YBAFUM3Z.js → chunk-JV5YWTJN.js} +13 -4
- package/dist/{chunk-I6QFPSUU.js → chunk-KASKB7UK.js} +11 -10
- package/dist/{chunk-SMYX3AAO.js → chunk-LEGMPX6N.js} +1 -1
- package/dist/{chunk-ZM2FNWIQ.js → chunk-LPVEBQVL.js} +1 -1
- package/dist/{chunk-HUBMKTPW.js → chunk-M5SF7NCC.js} +1 -1
- package/dist/{chunk-EBILJHUF.js → chunk-MTV5LYXN.js} +31 -2
- package/dist/{chunk-5ZCY36TY.js → chunk-MZX4EN6Z.js} +1 -1
- package/dist/{chunk-7FSB2EXS.js → chunk-OKITZFML.js} +1 -1
- package/dist/{chunk-H4R2GPAB.js → chunk-PEI6DRSK.js} +2 -2
- package/dist/{chunk-FVXFLVXF.js → chunk-QD73RO67.js} +3 -3
- package/dist/{chunk-66G47P5C.js → chunk-QKOVP7WO.js} +2 -2
- package/dist/{chunk-3EU6S5YC.js → chunk-RBNHRZGD.js} +1 -1
- package/dist/{chunk-XWIRU6UT.js → chunk-S6QDNXDK.js} +2 -2
- package/dist/{chunk-FQUGGPBM.js → chunk-TY6WNQO3.js} +124 -41
- package/dist/{chunk-QXMIKDOL.js → chunk-UVYUTBT4.js} +14 -4
- package/dist/{chunk-3G7YABRA.js → chunk-W7OPEMGJ.js} +4 -1
- package/dist/{chunk-JIH32RH2.js → chunk-XA7Q2VQA.js} +1 -1
- package/dist/{chunk-X7VKRHFF.js → chunk-XENW66OF.js} +1 -1
- package/dist/chunk-XI2XM7UG.js +14 -0
- package/dist/{chunk-BQZPHICL.js → chunk-YM5KMNTU.js} +1 -1
- package/dist/client/index.js +4 -16
- package/dist/fleet/index.js +6 -6
- package/dist/forms/index.js +9 -325
- package/dist/forms/server.js +2 -2
- package/dist/forms/types.d.ts +5 -0
- package/dist/forms/useForm.d.ts +4 -0
- package/dist/images/index.js +4 -4
- package/dist/index.js +1 -1
- package/dist/layout/client.js +9 -9
- package/dist/layout/index.js +10 -10
- package/dist/llms/index.js +8 -8
- package/dist/maps/index.js +4 -4
- package/dist/mcp/sonor.d.ts +46 -3
- package/dist/mcp/sonor.js +51 -29
- package/dist/mcp/transport.d.ts +1 -1
- package/dist/press-kit/articles/Article.d.ts +89 -0
- package/dist/press-kit/articles/ArticleFAQ.d.ts +41 -0
- package/dist/press-kit/articles/ArticleFaqSection.d.ts +2 -0
- package/dist/press-kit/articles/ArticleList.d.ts +79 -0
- package/dist/press-kit/articles/ArticleViewTracker.d.ts +15 -0
- package/dist/press-kit/articles/AuthorCard.d.ts +10 -0
- package/dist/press-kit/articles/AuthorPage.d.ts +8 -0
- package/dist/press-kit/articles/ClusterLandingPage.d.ts +40 -0
- package/dist/press-kit/articles/ClusterNavigation.d.ts +37 -0
- package/dist/press-kit/articles/ManagedNewsletterForm.d.ts +12 -0
- package/dist/press-kit/articles/NewsletterShell.d.ts +17 -0
- package/dist/press-kit/articles/NewsletterWidget.d.ts +30 -0
- package/dist/press-kit/articles/PublicationLayout.d.ts +67 -0
- package/dist/press-kit/articles/PublicationSidebar.d.ts +36 -0
- package/dist/press-kit/articles/RelatedPosts.d.ts +22 -0
- package/dist/press-kit/articles/ServiceCallout.d.ts +56 -0
- package/dist/press-kit/articles/TableOfContents.d.ts +6 -0
- package/dist/press-kit/articles/article-photos.d.ts +9 -0
- package/dist/press-kit/articles/article-styles.d.ts +21 -0
- package/dist/press-kit/articles/article-tables.d.ts +12 -0
- package/dist/press-kit/articles/artwork.d.ts +16 -0
- package/dist/press-kit/articles/author-schema.d.ts +72 -0
- package/dist/press-kit/articles/author-social.d.ts +14 -0
- package/dist/press-kit/articles/excerpt.d.ts +17 -0
- package/dist/press-kit/articles/index.d.ts +80 -0
- package/dist/press-kit/articles/news-sitemap.d.ts +40 -0
- package/dist/press-kit/articles/processArticleHtml.d.ts +34 -0
- package/dist/press-kit/articles/public-reads.d.ts +42 -0
- package/dist/press-kit/articles/publication-definition.d.ts +41 -0
- package/dist/press-kit/articles/publication-reads.d.ts +54 -0
- package/dist/press-kit/articles/reading-time.d.ts +9 -0
- package/dist/press-kit/articles/routes.d.ts +52 -0
- package/dist/press-kit/articles/server-core.d.ts +479 -0
- package/dist/press-kit/articles/server-ui.d.ts +31 -0
- package/dist/press-kit/articles/types.d.ts +339 -0
- package/dist/press-kit/articles/widget-styles.d.ts +8 -0
- package/dist/reputation/index.js +3 -3
- package/dist/reputation/server.js +2 -2
- package/dist/revalidate/index.js +2 -2
- package/dist/runtime/index.js +5 -4
- package/dist/seo/client.js +6 -6
- package/dist/seo/index.js +7 -7
- package/dist/seo/llms.js +8 -8
- package/dist/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/sitemap.js +6 -6
- package/dist/server/index.js +3 -2
- package/dist/shared/build-entries.d.ts +2 -1
- package/dist/shared/clientApiConfig.d.ts +2 -0
- package/dist/shared/import-specifiers.d.ts +1 -1
- package/dist/shared/index.d.ts +6 -0
- package/dist/shared/index.js +8 -0
- package/dist/shared/reporting-gate.d.ts +2 -0
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +2 -2
- package/dist/sitemap/index.js +6 -6
- package/dist/sync/index.js +6 -6
- package/dist/website/images.js +4 -4
- package/dist/website/index.js +7 -7
- package/dist/website/popups.js +6 -6
- package/dist/{writeLLMsTxt-DGKLYXIW.js → writeLLMsTxt-N4Y4YC2H.js} +5 -5
- package/docs/MIGRATING-TO-PRESS-KIT.md +83 -0
- package/docs.json +145 -29
- package/package.json +15 -5
- package/src/articles/README.md +5 -360
- package/src/mcp/README.md +16 -0
- package/src/og/README.md +1 -1
- package/src/runtime/README.md +4 -0
- package/dist/SiteChat-JSHPGAE3.js +0 -6
- package/dist/SiteDesignReporter-L2JBAKKK.js +0 -12
- package/dist/SitemapSync-VV2YSMIW.js +0 -9
- package/dist/article-tables-AXSZOGNW.js +0 -2
package/AGENTS.md
CHANGED
|
@@ -28,7 +28,7 @@ npx sonor-setup mcp --yes --json # agent tools: MCP
|
|
|
28
28
|
# Existing 2.x-6.x site? migrate deterministically:
|
|
29
29
|
npx sonor-setup codemod --check --json # exit 1 ⇒ work pending
|
|
30
30
|
npx sonor-setup codemod --write --json # apply (idempotent, minimal diffs)
|
|
31
|
-
#
|
|
31
|
+
# Site with commerce or articles? Move imports to their companion packages:
|
|
32
32
|
npx sonor-setup codemod --only site-kit-8 --write --json # swaps the package name in its imports
|
|
33
33
|
pnpm install # the codemod edits package.json, not node_modules (or npm / yarn)
|
|
34
34
|
next build # you run the build
|
|
@@ -130,6 +130,18 @@ that sells moves with
|
|
|
130
130
|
`sonorMcpServer({ businessName, offerings: { path: '/shop', read: getOfferingsResult } })`,
|
|
131
131
|
with `getOfferingsResult` from `@sonordev/commerce-kit/commerce/server`.
|
|
132
132
|
|
|
133
|
+
**Articles and publications** live in `@sonordev/press-kit` (Site Kit 8.3+ peer).
|
|
134
|
+
Import client components from `/articles`, server data from `/articles/server`,
|
|
135
|
+
and RSC components from `/articles/server-ui`. Keep `SiteKitLayout` from Site Kit.
|
|
136
|
+
Legacy `@sonordev/site-kit/articles*` imports stay compatible in 8.x; migrate
|
|
137
|
+
with `npx sonor-setup codemod --only site-kit-8 --write`, install, and build.
|
|
138
|
+
The codemod adds Press Kit and raises the Site Kit dependency to 8.3.
|
|
139
|
+
Site MCP uses the same readers as the pages:
|
|
140
|
+
`articles: { path: '/news', readMany: getAllArticles, readOne: getArticle }`,
|
|
141
|
+
with both readers from `@sonordev/press-kit/articles/server`. Use `articles: false`
|
|
142
|
+
for a site without articles. New `sonor-setup mcp` scaffolds this wiring;
|
|
143
|
+
`--no-articles` doesn't need Press Kit. See [Press Kit migration](docs/MIGRATING-TO-PRESS-KIT.md).
|
|
144
|
+
|
|
133
145
|
**Building a package on top of site-kit** (a kit, as commerce-kit is)? Take the
|
|
134
146
|
browser transport from `@sonordev/site-kit/runtime` (`sonorFetch`,
|
|
135
147
|
`getClientApiConfig`) and server data from `@sonordev/site-kit/server`, and
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @sonordev/site-kit Changelog
|
|
2
2
|
|
|
3
|
+
## 8.4.0
|
|
4
|
+
|
|
5
|
+
- Article MCP reads use canonical/category routing, full archive/body search, pagination and long-content continuation.
|
|
6
|
+
- Managed forms expose accepted publication enrollment receipts and a retry that preserves entered values.
|
|
7
|
+
- Legacy article entries bundle Press Kit 1.1 compatibility from the same source.
|
|
8
|
+
- Private previews suppress analytics, Signal and public discovery; approved article CTAs use the existing consent-aware event transport.
|
|
9
|
+
|
|
10
|
+
## 8.3.0
|
|
11
|
+
|
|
12
|
+
- Extract publication components and article data helpers into `@sonordev/press-kit` 1.0.0, with existing article imports kept compatible through source shims built from the same implementation.
|
|
13
|
+
- Add the framework-free `/shared` entry for site-scoped requests, URL shaping and safe JSON-LD.
|
|
14
|
+
|
|
3
15
|
## 8.2.0
|
|
4
16
|
|
|
5
17
|
- Article photo placement uses the same pure contract as Sonor's editor and preview: exact section anchors, missing prose diagnostics, duplicate detection, and independent website placement.
|
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# @sonordev/site-kit
|
|
2
2
|
|
|
3
|
-
All-in-one integration kit for [Sonor](https://sonor.io)-powered Next.js sites. One
|
|
3
|
+
All-in-one integration kit for [Sonor](https://sonor.io)-powered Next.js sites. One shared foundation and one env var for the modules a site needs: SEO, Analytics, Forms, Website chat, Popups, GEO/AEO, Booking, Reputation, A/B Testing, and more, all managed from the Sonor dashboard at [app.sonor.io](https://app.sonor.io). Products, events and memberships come from the companion package [`@sonordev/commerce-kit`](https://sonor.dev/commerce-kit), which builds on site-kit.
|
|
4
|
+
|
|
5
|
+
Articles, publications and Broadcast-powered editorial artwork live in [`@sonordev/press-kit`](https://www.npmjs.com/package/@sonordev/press-kit), a companion built on Site Kit. Legacy article imports remain compatible in 8.x.
|
|
4
6
|
|
|
5
7
|
## Install
|
|
6
8
|
|
|
@@ -10,6 +12,8 @@ npm install @sonordev/site-kit
|
|
|
10
12
|
|
|
11
13
|
Selling products, events or memberships? Add the companion package too: `npm install @sonordev/commerce-kit`. See [Commerce and memberships](#commerce-and-memberships).
|
|
12
14
|
|
|
15
|
+
Publishing articles? Add `npm install @sonordev/press-kit` alongside Site Kit 8.3 or newer. See [Moving to Press Kit](docs/MIGRATING-TO-PRESS-KIT.md).
|
|
16
|
+
|
|
13
17
|
## What's new in 8.0
|
|
14
18
|
|
|
15
19
|
- **Commerce and memberships are their own package.** Products, services, events, checkout and the new memberships module now live in [`@sonordev/commerce-kit`](https://sonor.dev/commerce-kit), which builds on site-kit and releases on its own. A site that doesn't sell anything changes nothing. A site that does swaps the package name in its imports: `npx sonor-setup codemod --only site-kit-8 --write`, then install and build. See [docs/MIGRATING-TO-8.md](docs/MIGRATING-TO-8.md).
|
|
@@ -112,7 +116,7 @@ Every module has its own README in `src/<module>/README.md` with full API docs,
|
|
|
112
116
|
|
|
113
117
|
| Module | Import | Purpose | Docs |
|
|
114
118
|
|--------|--------|---------|------|
|
|
115
|
-
| **Articles** | `@sonordev/
|
|
119
|
+
| **Articles** | `@sonordev/press-kit/articles` | Sonor-managed articles with SSG, topic clusters, E-E-A-T | [README](src/articles/README.md) |
|
|
116
120
|
| **Images** | `@sonordev/site-kit/website/images` | Managed image slots with dev-mode editing | [README](src/images/README.md) |
|
|
117
121
|
| **Reputation** | `@sonordev/site-kit/reputation` | Reviews, testimonials, rating stats | [README](src/reputation/README.md) |
|
|
118
122
|
|
|
@@ -219,8 +223,8 @@ import { AnalyticsProvider, useAnalytics, WebVitals } from '@sonordev/site-kit/a
|
|
|
219
223
|
import { ManagedForm, useForm, formsApi, field } from '@sonordev/site-kit/forms'
|
|
220
224
|
|
|
221
225
|
// Articles (server components; keeps server-only data helpers out of client bundles)
|
|
222
|
-
import { Article, ArticleList, ClusterLandingPage } from '@sonordev/
|
|
223
|
-
import { getArticle, generateArticleStaticParams } from '@sonordev/
|
|
226
|
+
import { Article, ArticleList, ClusterLandingPage } from '@sonordev/press-kit/articles/server-ui'
|
|
227
|
+
import { getArticle, generateArticleStaticParams } from '@sonordev/press-kit/articles/server'
|
|
224
228
|
|
|
225
229
|
// Commerce and memberships are their own package: npm install @sonordev/commerce-kit
|
|
226
230
|
import { OfferingCard, ProductPage, EventCalendar } from '@sonordev/commerce-kit/commerce'
|
|
@@ -336,7 +340,7 @@ Fully typed. All types are exported from their respective module paths:
|
|
|
336
340
|
```ts
|
|
337
341
|
import type { LLMsDataResponse, GenerateLLMSTxtOptions } from '@sonordev/site-kit/seo/llms'
|
|
338
342
|
import type { ManagedFormConfig, UseFormReturn } from '@sonordev/site-kit/forms'
|
|
339
|
-
import type { Article, TopicCluster } from '@sonordev/
|
|
343
|
+
import type { Article, TopicCluster } from '@sonordev/press-kit/articles'
|
|
340
344
|
import type { SiteKitLayoutProps } from '@sonordev/site-kit/layout'
|
|
341
345
|
import type { CommerceOffering } from '@sonordev/commerce-kit' // commerce types live in commerce-kit
|
|
342
346
|
```
|
package/agent-manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@sonordev/site-kit",
|
|
4
|
-
"version": "8.
|
|
4
|
+
"version": "8.4.0",
|
|
5
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
6
|
"env": {
|
|
7
7
|
"required": [
|
|
@@ -32,6 +32,12 @@
|
|
|
32
32
|
"npx sonor-setup verify --json # exit 0 === done"
|
|
33
33
|
],
|
|
34
34
|
"commands": [
|
|
35
|
+
{
|
|
36
|
+
"name": "publication",
|
|
37
|
+
"json": true,
|
|
38
|
+
"interactive": false,
|
|
39
|
+
"purpose": "Preview a tenant-authored publication definition with --config publication.json. --write creates brand-owned newsroom, journal or briefing routes without overwriting existing work. No credentials, records, audience enrollment or publishing."
|
|
40
|
+
},
|
|
35
41
|
{
|
|
36
42
|
"name": "verify",
|
|
37
43
|
"json": true,
|
|
@@ -54,7 +60,7 @@
|
|
|
54
60
|
"name": "codemod",
|
|
55
61
|
"json": true,
|
|
56
62
|
"interactive": false,
|
|
57
|
-
"purpose": "Deterministic migration of a 2.x-7.x site to the current site-kit (uptrade-to-sonor, provider-to-layout, analytics-sibling, site-kit-7, site-kit-8, next-16-proxy). site-kit-8 moves commerce imports to @sonordev/commerce-kit and adds the
|
|
63
|
+
"purpose": "Deterministic migration of a 2.x-7.x site to the current site-kit (uptrade-to-sonor, provider-to-layout, analytics-sibling, site-kit-7, site-kit-8, next-16-proxy). site-kit-8 moves commerce imports to @sonordev/commerce-kit and article imports to @sonordev/press-kit; it adds dependencies and raises site-kit to the required version (8.3 for Press Kit). Dry-run by default; --write applies; --check gates (exit 1 if pending). --only press-kit migrates only article imports and dependencies, preserving commerce code and dependencies; it shares the same migration engine."
|
|
58
64
|
},
|
|
59
65
|
{
|
|
60
66
|
"name": "manifest",
|
|
@@ -90,7 +96,7 @@
|
|
|
90
96
|
"name": "mcp",
|
|
91
97
|
"json": true,
|
|
92
98
|
"interactive": false,
|
|
93
|
-
"purpose": "Give agents the site's tools: writes the MCP server (site-kit's built-in Sonor tools), the endpoint with tool-call reporting, the canonical server card and compatibility aliases, the experimental AI catalog, and on Netlify the rate-limited relay. Never overwrites without --force; --dry-run to preview."
|
|
99
|
+
"purpose": "Give agents the site's tools: writes the MCP server (site-kit's built-in Sonor tools), the endpoint with tool-call reporting, the canonical server card and compatibility aliases, the experimental AI catalog, and on Netlify the rate-limited relay. Never overwrites without --force; --dry-run to preview. Articles use Press Kit readers (requires installed Site Kit >=8.3); --no-articles needs no Press Kit and retains the 7.3 discovery minimum."
|
|
94
100
|
},
|
|
95
101
|
{
|
|
96
102
|
"name": "next16",
|
|
@@ -161,20 +167,22 @@
|
|
|
161
167
|
"name": "articles",
|
|
162
168
|
"import": "@sonordev/site-kit/articles",
|
|
163
169
|
"side": "client",
|
|
164
|
-
"purpose": "Client-only article pieces: TableOfContents, ArticleFAQ, AuthorCard, AuthorPage, ServiceCallout, NewsletterWidget, ClusterNavigation, ArticleViewTracker. Types for every article component.",
|
|
165
|
-
"caution": "Stamped 'use client' at build time. It exports no async server components: Article, ArticleList, PublicationLayout, PublicationPage, ArticlePage, CategoryPage, PublicationSidebar, RelatedPosts and ClusterLandingPage come from @sonordev/
|
|
170
|
+
"purpose": "Compatibility entry since Site Kit 8.3. Preferred import: @sonordev/press-kit/articles. Client-only article pieces: TableOfContents, ArticleFAQ, AuthorCard, AuthorPage, ServiceCallout, NewsletterWidget, ClusterNavigation, ArticleViewTracker. Types for every article component.",
|
|
171
|
+
"caution": "New integrations use @sonordev/press-kit/articles. Install @sonordev/press-kit with Site Kit >=8.3. Legacy Site Kit imports remain supported in 8.x. Stamped 'use client' at build time. It exports no async server components: Article, ArticleList, PublicationLayout, PublicationPage, ArticlePage, CategoryPage, PublicationSidebar, RelatedPosts and ClusterLandingPage come from @sonordev/press-kit/articles/server-ui."
|
|
166
172
|
},
|
|
167
173
|
{
|
|
168
174
|
"name": "articles/server",
|
|
169
175
|
"import": "@sonordev/site-kit/articles/server",
|
|
170
176
|
"side": "server",
|
|
171
|
-
"purpose": "Server-only article data, SSG, metadata, schema, RSS/Atom feeds (20 newest by default), article sitemap with images, and a Google News sitemap. Shared publication routing supports basePath, includeCategoryInPath and custom postPath/categoryPath; resolveArticleArtwork separates article art from full cards; wrapArticleTables supplies accessible article tables."
|
|
177
|
+
"purpose": "Compatibility entry since Site Kit 8.3. Preferred import: @sonordev/press-kit/articles/server. Server-only article data, SSG, metadata, schema, RSS/Atom feeds (20 newest by default), article sitemap with images, and a Google News sitemap. Shared publication routing supports basePath, includeCategoryInPath and custom postPath/categoryPath; resolveArticleArtwork separates article art from full cards; wrapArticleTables supplies accessible article tables.",
|
|
178
|
+
"caution": "New integrations use @sonordev/press-kit/articles/server. Install @sonordev/press-kit with Site Kit >=8.3. Legacy Site Kit imports remain supported in 8.x. "
|
|
172
179
|
},
|
|
173
180
|
{
|
|
174
181
|
"name": "articles/server-ui",
|
|
175
182
|
"import": "@sonordev/site-kit/articles/server-ui",
|
|
176
183
|
"side": "server",
|
|
177
|
-
"purpose": "RSC-safe article UI: Article, ArticleList, PublicationLayout, PublicationSidebar, RelatedPosts, ClusterLandingPage, ClusterNavigation, and page helpers. Pass a shared routing object (basePath defaults to /articles) so a site keeps its own publication path. Article art, complete generated cards and themed table scrolling are handled by default."
|
|
184
|
+
"purpose": "Compatibility entry since Site Kit 8.3. Preferred import: @sonordev/press-kit/articles/server-ui. RSC-safe article UI: Article, ArticleList, PublicationLayout, PublicationSidebar, RelatedPosts, ClusterLandingPage, ClusterNavigation, and page helpers. Pass a shared routing object (basePath defaults to /articles) so a site keeps its own publication path. Article art, complete generated cards and themed table scrolling are handled by default.",
|
|
185
|
+
"caution": "New integrations use @sonordev/press-kit/articles/server-ui. Install @sonordev/press-kit with Site Kit >=8.3. Legacy Site Kit imports remain supported in 8.x. "
|
|
178
186
|
},
|
|
179
187
|
{
|
|
180
188
|
"name": "sync",
|
|
@@ -290,7 +298,7 @@
|
|
|
290
298
|
"name": "mcp/sonor",
|
|
291
299
|
"import": "@sonordev/site-kit/mcp/sonor",
|
|
292
300
|
"side": "server",
|
|
293
|
-
"purpose": "The MCP tools every Sonor site can serve with no code: sonorMcpServer / sonorMcpTools (get_business_profile, list_services, search_faq, find_pages, list_articles, get_article, get_reviews; opt-in list_offerings, check_availability, get_inquiry_form + send_inquiry through Sonor's agent-inquiry door) and reportToolCallsToSonor (createMcpHandler's onToolCall: which agents used the site). Mount with `npx sonor-setup mcp`."
|
|
301
|
+
"purpose": "The MCP tools every Sonor site can serve with no code: sonorMcpServer / sonorMcpTools (get_business_profile, list_services, search_faq, find_pages, list_articles, get_article, get_reviews; opt-in list_offerings, check_availability, get_inquiry_form + send_inquiry through Sonor's agent-inquiry door) and reportToolCallsToSonor (createMcpHandler's onToolCall: which agents used the site). Mount with `npx sonor-setup mcp`. Article tools accept articles: { path, readMany: getAllArticles, readOne: getArticle } from @sonordev/press-kit/articles/server (Site Kit >=8.3); articles:false omits them. Existing 8.x servers retain legacy readers."
|
|
294
302
|
},
|
|
295
303
|
{
|
|
296
304
|
"name": "admin-auth",
|
|
@@ -643,9 +651,39 @@
|
|
|
643
651
|
"movedTo": [
|
|
644
652
|
"@sonordev/site-kit/website/landing/server"
|
|
645
653
|
]
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
"name": "shared",
|
|
657
|
+
"import": "@sonordev/site-kit/shared",
|
|
658
|
+
"side": "shared",
|
|
659
|
+
"purpose": "Framework-free shared URL/site/JSON-LD helpers for companion kits: withSiteParam, withSiteBody, resolveSiteHost, readPublishedSite, applyTrailingSlash, resolveTrailingSlash and safeJsonLd. Unstamped; safe for server and client imports."
|
|
646
660
|
}
|
|
647
661
|
],
|
|
648
662
|
"relocated": [
|
|
663
|
+
{
|
|
664
|
+
"from": "@sonordev/site-kit/articles",
|
|
665
|
+
"to": "@sonordev/press-kit/articles",
|
|
666
|
+
"package": "@sonordev/press-kit",
|
|
667
|
+
"range": "^1.1.0",
|
|
668
|
+
"since": "8.3.0",
|
|
669
|
+
"compatibility": "Legacy site-kit article imports remain supported in 8.x; Press Kit is preferred for new and migrated integrations."
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
"from": "@sonordev/site-kit/articles/server",
|
|
673
|
+
"to": "@sonordev/press-kit/articles/server",
|
|
674
|
+
"package": "@sonordev/press-kit",
|
|
675
|
+
"range": "^1.1.0",
|
|
676
|
+
"since": "8.3.0",
|
|
677
|
+
"compatibility": "Legacy site-kit article imports remain supported in 8.x; Press Kit is preferred for new and migrated integrations."
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
"from": "@sonordev/site-kit/articles/server-ui",
|
|
681
|
+
"to": "@sonordev/press-kit/articles/server-ui",
|
|
682
|
+
"package": "@sonordev/press-kit",
|
|
683
|
+
"range": "^1.1.0",
|
|
684
|
+
"since": "8.3.0",
|
|
685
|
+
"compatibility": "Legacy site-kit article imports remain supported in 8.x; Press Kit is preferred for new and migrated integrations."
|
|
686
|
+
},
|
|
649
687
|
{
|
|
650
688
|
"from": "@sonordev/site-kit/commerce",
|
|
651
689
|
"to": "@sonordev/commerce-kit/commerce",
|
|
@@ -676,6 +714,13 @@
|
|
|
676
714
|
}
|
|
677
715
|
],
|
|
678
716
|
"relocatedTypes": [
|
|
717
|
+
{
|
|
718
|
+
"from": "@sonordev/site-kit",
|
|
719
|
+
"types": [],
|
|
720
|
+
"to": "@sonordev/press-kit",
|
|
721
|
+
"range": "^1.1.0",
|
|
722
|
+
"since": "8.3.0"
|
|
723
|
+
},
|
|
679
724
|
{
|
|
680
725
|
"from": "@sonordev/site-kit",
|
|
681
726
|
"types": [
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-
|
|
1
|
+
export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-MTV5LYXN.js';
|
|
2
2
|
import './chunk-LCDVPAMR.js';
|
|
3
3
|
import './chunk-ZKADJNR2.js';
|
|
4
4
|
import './chunk-L2V5PUFN.js';
|
|
5
5
|
import './chunk-5TM3WPCI.js';
|
|
6
6
|
import './chunk-GJWI74ZZ.js';
|
|
7
|
-
import './chunk-
|
|
7
|
+
import './chunk-DLM4FFNH.js';
|
|
8
8
|
import './chunk-EKBEOXTH.js';
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
9
|
+
import './chunk-3VSFOD2Z.js';
|
|
10
|
+
import './chunk-RBNHRZGD.js';
|
|
11
|
+
import './chunk-W7OPEMGJ.js';
|
|
12
|
+
import './chunk-5S7YTOCB.js';
|
|
13
13
|
import './chunk-PKBMQBKP.js';
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
'use client';
|
|
2
|
+
import './chunk-XI2XM7UG.js';
|
|
3
|
+
import './chunk-B7T2SFUF.js';
|
|
4
|
+
import './chunk-MZX4EN6Z.js';
|
|
5
|
+
import './chunk-6T6CQVNL.js';
|
|
6
|
+
import './chunk-5ROTTMBL.js';
|
|
2
7
|
import { useDeferredActivation } from './chunk-YC7ELZS3.js';
|
|
8
|
+
import './chunk-H72ZFO3F.js';
|
|
9
|
+
import './chunk-4KZ6W3ZH.js';
|
|
3
10
|
import { withSiteBody } from './chunk-MJP63SSS.js';
|
|
11
|
+
import './chunk-YVKRYQRG.js';
|
|
4
12
|
import './chunk-FESKKJAS.js';
|
|
5
13
|
import './chunk-A4CC4ZG3.js';
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
14
|
+
import './chunk-LCDVPAMR.js';
|
|
15
|
+
import './chunk-ZKADJNR2.js';
|
|
16
|
+
import './chunk-5TM3WPCI.js';
|
|
17
|
+
import './chunk-GJWI74ZZ.js';
|
|
18
|
+
import { sonorFetch } from './chunk-3VSFOD2Z.js';
|
|
19
|
+
import './chunk-RBNHRZGD.js';
|
|
20
|
+
import { readPublishedApiConfig, readPublishedSite } from './chunk-W7OPEMGJ.js';
|
|
21
|
+
import './chunk-5S7YTOCB.js';
|
|
10
22
|
import './chunk-PKBMQBKP.js';
|
|
11
23
|
import { useEffect } from 'react';
|
|
12
24
|
|
|
13
25
|
var SESSION_KEY_PREFIX = "__sonor_article_viewed__:";
|
|
14
26
|
function trackArticleView(slug, site) {
|
|
15
27
|
if (!slug || typeof window === "undefined") return;
|
|
16
|
-
const w = window;
|
|
17
28
|
const { apiUrl: baseUrl, apiKey } = readPublishedApiConfig();
|
|
18
29
|
if (!baseUrl || !apiKey) return;
|
|
19
30
|
const key = `${SESSION_KEY_PREFIX}${slug}`;
|
|
@@ -26,7 +37,7 @@ function trackArticleView(slug, site) {
|
|
|
26
37
|
{
|
|
27
38
|
method: "POST",
|
|
28
39
|
headers: { "Content-Type": "application/json" },
|
|
29
|
-
body: JSON.stringify(withSiteBody({ slug }, site ||
|
|
40
|
+
body: JSON.stringify(withSiteBody({ slug }, site || readPublishedSite()))
|
|
30
41
|
},
|
|
31
42
|
{ retries: 0 }
|
|
32
43
|
).then((res) => {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { getSiteDesignTokens } from './chunk-
|
|
2
|
+
import { getSiteDesignTokens } from './chunk-DKKYZLKR.js';
|
|
3
3
|
import { DEFAULT_POPUP_TOKENS, PopupBlocks } from './chunk-BF7TZYC3.js';
|
|
4
4
|
import { normalizePopupBlocks, toHexColor, readableOn } from './chunk-IHG36STL.js';
|
|
5
5
|
import './chunk-S22FSH7C.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-DLM4FFNH.js';
|
|
7
7
|
import './chunk-EKBEOXTH.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
8
|
+
import './chunk-3VSFOD2Z.js';
|
|
9
|
+
import './chunk-RBNHRZGD.js';
|
|
10
|
+
import './chunk-W7OPEMGJ.js';
|
|
11
|
+
import './chunk-5S7YTOCB.js';
|
|
12
12
|
import './chunk-PKBMQBKP.js';
|
|
13
13
|
import { useState } from 'react';
|
|
14
14
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ChatWidget, EchoChat, isChatEnabled } from './chunk-
|
|
1
|
+
export { ChatWidget, EchoChat, isChatEnabled } from './chunk-QD73RO67.js';
|
|
2
2
|
import './chunk-6T6CQVNL.js';
|
|
3
3
|
import './chunk-JE4A5S4F.js';
|
|
4
4
|
import './chunk-27FISYK4.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-JV5YWTJN.js';
|
|
6
6
|
import './chunk-Q6E4OPGG.js';
|
|
7
7
|
import './chunk-5ROTTMBL.js';
|
|
8
8
|
import './chunk-C2FZBUSS.js';
|
|
@@ -13,8 +13,8 @@ import './chunk-S22FSH7C.js';
|
|
|
13
13
|
import './chunk-L2V5PUFN.js';
|
|
14
14
|
import './chunk-5TM3WPCI.js';
|
|
15
15
|
import './chunk-GJWI74ZZ.js';
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
16
|
+
import './chunk-3VSFOD2Z.js';
|
|
17
|
+
import './chunk-RBNHRZGD.js';
|
|
18
|
+
import './chunk-W7OPEMGJ.js';
|
|
19
|
+
import './chunk-5S7YTOCB.js';
|
|
20
20
|
import './chunk-PKBMQBKP.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
2
|
+
import { sonorFetch } from './chunk-3VSFOD2Z.js';
|
|
3
|
+
import './chunk-RBNHRZGD.js';
|
|
4
|
+
import { getClientApiConfig } from './chunk-W7OPEMGJ.js';
|
|
5
|
+
import './chunk-5S7YTOCB.js';
|
|
6
6
|
import './chunk-PKBMQBKP.js';
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { StageStyles, SummaryTick } from './chunk-3YKQLC7J.js';
|
|
3
|
-
import { stageFirstName, useFieldControls, stageViews, stageEstimate, AUTO_ADVANCE_TYPES } from './chunk-
|
|
3
|
+
import { stageFirstName, useFieldControls, stageViews, stageEstimate, AUTO_ADVANCE_TYPES } from './chunk-44GVU5UH.js';
|
|
4
4
|
import { readAgentSubmit, formToolAttributes } from './chunk-Q6E4OPGG.js';
|
|
5
5
|
import { isEmptyValue, unseenControlValues, isDisplayOnly } from './chunk-C2FZBUSS.js';
|
|
6
6
|
import { FormField } from './chunk-TYAVHRWH.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { StageStyles, SummaryTick } from './chunk-3YKQLC7J.js';
|
|
3
|
-
import { useFieldControls, stageViews, stageFirstName, stageEstimate, formatAnswer, AUTO_ADVANCE_TYPES } from './chunk-
|
|
3
|
+
import { useFieldControls, stageViews, stageFirstName, stageEstimate, formatAnswer, AUTO_ADVANCE_TYPES } from './chunk-44GVU5UH.js';
|
|
4
4
|
import { readAgentSubmit, formToolAttributes } from './chunk-Q6E4OPGG.js';
|
|
5
5
|
import { isEmptyValue, unseenControlValues } from './chunk-C2FZBUSS.js';
|
|
6
6
|
import { FormField } from './chunk-TYAVHRWH.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ManagedForm } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { ManagedForm } from './chunk-J4KX2D3Q.js';
|
|
2
|
+
import './chunk-44GVU5UH.js';
|
|
3
|
+
import './chunk-JV5YWTJN.js';
|
|
4
4
|
import './chunk-Q6E4OPGG.js';
|
|
5
5
|
import './chunk-5ROTTMBL.js';
|
|
6
6
|
import './chunk-C2FZBUSS.js';
|
|
@@ -12,8 +12,8 @@ import './chunk-NJCTQH2P.js';
|
|
|
12
12
|
import './chunk-L2V5PUFN.js';
|
|
13
13
|
import './chunk-5TM3WPCI.js';
|
|
14
14
|
import './chunk-GJWI74ZZ.js';
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
15
|
+
import './chunk-3VSFOD2Z.js';
|
|
16
|
+
import './chunk-RBNHRZGD.js';
|
|
17
|
+
import './chunk-W7OPEMGJ.js';
|
|
18
|
+
import './chunk-5S7YTOCB.js';
|
|
19
19
|
import './chunk-PKBMQBKP.js';
|
|
@@ -1,21 +1,30 @@
|
|
|
1
|
-
import
|
|
1
|
+
import './chunk-BLCHQIWR.js';
|
|
2
|
+
import './chunk-J4KX2D3Q.js';
|
|
3
|
+
import './chunk-44GVU5UH.js';
|
|
4
|
+
import './chunk-SOD2F6C2.js';
|
|
5
|
+
import './chunk-YGGDU6C3.js';
|
|
6
|
+
import { useForm } from './chunk-JV5YWTJN.js';
|
|
2
7
|
import './chunk-Q6E4OPGG.js';
|
|
3
8
|
import './chunk-5ROTTMBL.js';
|
|
9
|
+
import './chunk-LEGMPX6N.js';
|
|
4
10
|
import './chunk-C2FZBUSS.js';
|
|
11
|
+
import './chunk-YC7ELZS3.js';
|
|
12
|
+
import './chunk-DXO6SBMD.js';
|
|
13
|
+
import './chunk-TYAVHRWH.js';
|
|
5
14
|
import './chunk-5SQK3D53.js';
|
|
6
15
|
import './chunk-HW7B43E5.js';
|
|
7
16
|
import './chunk-NJCTQH2P.js';
|
|
8
|
-
import { NewsletterShell } from './chunk-
|
|
9
|
-
import './chunk-
|
|
17
|
+
import { NewsletterShell } from './chunk-JHTPHA2D.js';
|
|
18
|
+
import './chunk-DJAYFHVF.js';
|
|
10
19
|
import './chunk-L2V5PUFN.js';
|
|
11
20
|
import './chunk-5TM3WPCI.js';
|
|
12
21
|
import './chunk-GJWI74ZZ.js';
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
22
|
+
import './chunk-3VSFOD2Z.js';
|
|
23
|
+
import './chunk-RBNHRZGD.js';
|
|
24
|
+
import './chunk-W7OPEMGJ.js';
|
|
25
|
+
import './chunk-5S7YTOCB.js';
|
|
17
26
|
import './chunk-PKBMQBKP.js';
|
|
18
|
-
import { jsx } from 'react/jsx-runtime';
|
|
27
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
19
28
|
|
|
20
29
|
function ManagedNewsletterForm({
|
|
21
30
|
formSlug,
|
|
@@ -26,6 +35,8 @@ function ManagedNewsletterForm({
|
|
|
26
35
|
}) {
|
|
27
36
|
const {
|
|
28
37
|
form,
|
|
38
|
+
reload,
|
|
39
|
+
submissionResult,
|
|
29
40
|
fetchError,
|
|
30
41
|
allFields,
|
|
31
42
|
values,
|
|
@@ -37,9 +48,12 @@ function ManagedNewsletterForm({
|
|
|
37
48
|
} = useForm(formSlug, { trackAnalytics: true });
|
|
38
49
|
if (fetchError) {
|
|
39
50
|
console.warn(`[Articles] NewsletterWidget: form "${formSlug}" could not be loaded`, fetchError);
|
|
40
|
-
return
|
|
51
|
+
return /* @__PURE__ */ jsxs("div", { role: "status", children: [
|
|
52
|
+
/* @__PURE__ */ jsx("p", { children: "Signup is temporarily unavailable." }),
|
|
53
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: reload, children: "Try again" })
|
|
54
|
+
] });
|
|
41
55
|
}
|
|
42
|
-
if (!form) return
|
|
56
|
+
if (!form) return /* @__PURE__ */ jsx("p", { role: "status", children: "Loading signup\u2026" });
|
|
43
57
|
const emailField = allFields.find((f) => f.field_type === "email") ?? allFields.find((f) => f.slug === "email") ?? allFields[0];
|
|
44
58
|
if (!emailField) {
|
|
45
59
|
console.warn(`[Articles] NewsletterWidget: form "${formSlug}" has no fields`);
|
|
@@ -58,7 +72,7 @@ function ManagedNewsletterForm({
|
|
|
58
72
|
void submit();
|
|
59
73
|
},
|
|
60
74
|
status: isComplete ? "success" : isSubmitting ? "submitting" : submitError ? "error" : "idle",
|
|
61
|
-
successMessage,
|
|
75
|
+
successMessage: submissionResult?.publicationEnrollment?.message || "Your signup request was received. Enrollment is being confirmed.",
|
|
62
76
|
errorMessage: submitError
|
|
63
77
|
}
|
|
64
78
|
);
|
|
@@ -3,10 +3,12 @@ import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-ZKADJNR2.js'
|
|
|
3
3
|
import { onPageLeave } from './chunk-L2V5PUFN.js';
|
|
4
4
|
import './chunk-5TM3WPCI.js';
|
|
5
5
|
import './chunk-GJWI74ZZ.js';
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import './chunk-
|
|
6
|
+
import { isPrivatePreview } from './chunk-DLM4FFNH.js';
|
|
7
|
+
import './chunk-EKBEOXTH.js';
|
|
8
|
+
import { sonorFetch } from './chunk-3VSFOD2Z.js';
|
|
9
|
+
import { getFreshCredential, isSiteToken } from './chunk-RBNHRZGD.js';
|
|
10
|
+
import { getClientApiConfig } from './chunk-W7OPEMGJ.js';
|
|
11
|
+
import './chunk-5S7YTOCB.js';
|
|
10
12
|
import './chunk-PKBMQBKP.js';
|
|
11
13
|
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
12
14
|
|
|
@@ -106,7 +108,7 @@ function SignalCore({
|
|
|
106
108
|
return assignmentsRef.current.get(experimentId) || null;
|
|
107
109
|
}, []);
|
|
108
110
|
const fetchConfig = useCallback(async () => {
|
|
109
|
-
if (!apiKey || !enabled) {
|
|
111
|
+
if (!apiKey || !enabled || isPrivatePreview()) {
|
|
110
112
|
setLoading(false);
|
|
111
113
|
return;
|
|
112
114
|
}
|
|
@@ -141,7 +143,7 @@ function SignalCore({
|
|
|
141
143
|
}
|
|
142
144
|
}, [apiUrl, apiKey, enabled, experiments, resolvedVisitorId, loadExperimentAssignment]);
|
|
143
145
|
const connectSSE = useCallback(() => {
|
|
144
|
-
if (!apiKey || !enabled || !realtime) return;
|
|
146
|
+
if (!apiKey || !enabled || !realtime || isPrivatePreview()) return;
|
|
145
147
|
if (eventSourceRef.current) {
|
|
146
148
|
eventSourceRef.current.close();
|
|
147
149
|
eventSourceRef.current = null;
|
|
@@ -198,6 +200,10 @@ function SignalCore({
|
|
|
198
200
|
}
|
|
199
201
|
}, [apiUrl, apiKey, enabled, realtime, loadExperimentAssignment]);
|
|
200
202
|
const flushEvents = useCallback(async () => {
|
|
203
|
+
if (isPrivatePreview()) {
|
|
204
|
+
eventQueueRef.current = [];
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
201
207
|
if (eventQueueRef.current.length === 0) return;
|
|
202
208
|
const events = [...eventQueueRef.current];
|
|
203
209
|
eventQueueRef.current = [];
|
|
@@ -221,7 +227,7 @@ function SignalCore({
|
|
|
221
227
|
}
|
|
222
228
|
}, [apiUrl, apiKey]);
|
|
223
229
|
const trackEvent = useCallback((event) => {
|
|
224
|
-
if (!enabled || !apiKey) return;
|
|
230
|
+
if (!enabled || !apiKey || isPrivatePreview()) return;
|
|
225
231
|
const enrichedEvent = {
|
|
226
232
|
...event,
|
|
227
233
|
page_url: window.location.href,
|
|
@@ -250,7 +256,7 @@ function SignalCore({
|
|
|
250
256
|
flushTimeoutRef.current = setTimeout(flushEvents, 1e3);
|
|
251
257
|
}, [enabled, apiKey, flushEvents]);
|
|
252
258
|
const trackOutcome = useCallback(async (outcome) => {
|
|
253
|
-
if (!enabled || !apiKey) return;
|
|
259
|
+
if (!enabled || !apiKey || isPrivatePreview()) return;
|
|
254
260
|
try {
|
|
255
261
|
await sonorFetch(
|
|
256
262
|
`${apiUrl}/api/public/signal/outcome`,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { SiteDesignReporter } from './chunk-PEI6DRSK.js';
|
|
2
|
+
import './chunk-DKKYZLKR.js';
|
|
3
|
+
import './chunk-IHG36STL.js';
|
|
4
|
+
import './chunk-YC7ELZS3.js';
|
|
5
|
+
import './chunk-S22FSH7C.js';
|
|
6
|
+
import './chunk-DLM4FFNH.js';
|
|
7
|
+
import './chunk-EKBEOXTH.js';
|
|
8
|
+
import './chunk-3VSFOD2Z.js';
|
|
9
|
+
import './chunk-RBNHRZGD.js';
|
|
10
|
+
import './chunk-W7OPEMGJ.js';
|
|
11
|
+
import './chunk-5S7YTOCB.js';
|
|
12
|
+
import './chunk-PKBMQBKP.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { SitePopups } from './chunk-
|
|
1
|
+
export { SitePopups } from './chunk-ITY4UZEJ.js';
|
|
2
2
|
import './chunk-27FISYK4.js';
|
|
3
3
|
import './chunk-5ROTTMBL.js';
|
|
4
4
|
import './chunk-ZKADJNR2.js';
|
|
5
5
|
import './chunk-5TM3WPCI.js';
|
|
6
6
|
import './chunk-GJWI74ZZ.js';
|
|
7
|
-
import './chunk-
|
|
7
|
+
import './chunk-DLM4FFNH.js';
|
|
8
8
|
import './chunk-EKBEOXTH.js';
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
9
|
+
import './chunk-3VSFOD2Z.js';
|
|
10
|
+
import './chunk-RBNHRZGD.js';
|
|
11
|
+
import './chunk-W7OPEMGJ.js';
|
|
12
|
+
import './chunk-5S7YTOCB.js';
|
|
13
13
|
import './chunk-PKBMQBKP.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { SitemapSync } from './chunk-HH2GOZTO.js';
|
|
2
|
+
import './chunk-YVKRYQRG.js';
|
|
3
|
+
import './chunk-DLM4FFNH.js';
|
|
4
|
+
import './chunk-EKBEOXTH.js';
|
|
5
|
+
import './chunk-3VSFOD2Z.js';
|
|
6
|
+
import './chunk-RBNHRZGD.js';
|
|
7
|
+
import './chunk-W7OPEMGJ.js';
|
|
8
|
+
import './chunk-5S7YTOCB.js';
|
|
9
|
+
import './chunk-PKBMQBKP.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { BookingWidget, BookingWidget_default as default } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
2
|
+
export { BookingWidget, BookingWidget_default as default } from '../chunk-QKOVP7WO.js';
|
|
3
|
+
import '../chunk-S6QDNXDK.js';
|
|
4
|
+
import '../chunk-3VSFOD2Z.js';
|
|
5
|
+
import '../chunk-RBNHRZGD.js';
|
|
6
|
+
import '../chunk-W7OPEMGJ.js';
|
|
7
|
+
import '../chunk-5S7YTOCB.js';
|
|
8
8
|
import '../chunk-PKBMQBKP.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { TestimonialSection } from '../chunk-
|
|
2
|
+
export { TestimonialSection } from '../chunk-A4MPHIVP.js';
|
|
3
3
|
import '../chunk-CAT235HY.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-BSQP6PRA.js';
|
|
5
5
|
import '../chunk-MH2DSGC6.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-W7OPEMGJ.js';
|
|
7
7
|
import '../chunk-PKBMQBKP.js';
|