@sonordev/site-kit 8.5.2 → 8.6.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/CHANGELOG.md +5 -0
- package/agent-manifest.json +1 -1
- package/dist/{AnalyticsProvider-HSJMHYBA.js → AnalyticsProvider-GVJYL6XY.js} +4 -4
- package/dist/{ArticleViewTracker-XEA6ZY67.js → ArticleViewTracker-AOJXEBYM.js} +5 -5
- package/dist/{BlocksPopup-DUTOENMQ.js → BlocksPopup-AJ3CKVQG.js} +4 -4
- package/dist/{ChatWidget-PMVQTSEU.js → ChatWidget-EYBVB5SZ.js} +6 -6
- package/dist/FileField-UEQYIFRO.js +237 -0
- package/dist/{FormSpotlight-RTPJPLQ3.js → FormSpotlight-H73ZZ66T.js} +2 -2
- package/dist/{FormStage-UANGD66Z.js → FormStage-2PLWWYBW.js} +2 -2
- package/dist/{ManagedForm-4AACRHEY.js → ManagedForm-ZQOFXEWS.js} +8 -8
- package/dist/{ManagedNewsletterForm-RWKFWZ72.js → ManagedNewsletterForm-5TE47YZD.js} +10 -10
- package/dist/{SignalCore-XULLPKPX.js → SignalCore-FEFNMNYN.js} +3 -3
- package/dist/{SiteChat-P4CRBRJZ.js → SiteChat-3MKYL2XM.js} +1 -1
- package/dist/{SiteDesignReporter-QDVP4WMK.js → SiteDesignReporter-AJDIBNHI.js} +5 -5
- package/dist/{SitePopups-US6VQN7X.js → SitePopups-C44YTQ3Q.js} +4 -4
- package/dist/{SitemapSync-5FBRDGHG.js → SitemapSync-UJA6JVPW.js} +4 -4
- package/dist/_client/booking-widget.js +5 -5
- package/dist/affiliates/index.js +3 -3
- package/dist/analytics/index.js +4 -4
- package/dist/articles/index.js +1 -1
- package/dist/articles/server-ui.js +3 -3
- package/dist/articles/server.js +2 -2
- package/dist/chat/index.js +7 -7
- package/dist/{chunk-N4ZCNYWF.js → chunk-6AWIUO2Z.js} +1 -1
- package/dist/{chunk-EQHGPB3J.js → chunk-6NXFA7HE.js} +1 -1
- package/dist/{chunk-5BRHTBPO.js → chunk-72F44HKL.js} +1 -1
- package/dist/{chunk-3PT6SO65.js → chunk-7R2STOVD.js} +5 -5
- package/dist/{chunk-ZSU7KTIE.js → chunk-AJG74ZZV.js} +2 -2
- package/dist/{chunk-CFSIGEUW.js → chunk-BUE3Z32O.js} +1 -1
- package/dist/{chunk-Q4Y3WIHE.js → chunk-CMUD37WV.js} +1 -1
- package/dist/{chunk-TYAVHRWH.js → chunk-CVADNHJ4.js} +8 -2
- package/dist/{chunk-A7RZQI6H.js → chunk-DSD3XZQQ.js} +1 -1
- package/dist/{chunk-24NM64IV.js → chunk-FTSEP7Q3.js} +2 -2
- package/dist/{chunk-HNYECNCU.js → chunk-GFY3E7EQ.js} +1 -1
- package/dist/{chunk-27LYZVPP.js → chunk-HMTPRBYJ.js} +2 -2
- package/dist/{chunk-ITQND6IB.js → chunk-IGAIQ2B3.js} +2 -2
- package/dist/{chunk-GDQKDL3E.js → chunk-IYCSDFPN.js} +2 -2
- package/dist/{chunk-T6U6J3QK.js → chunk-JSW42BHL.js} +1 -1
- package/dist/{chunk-OFQ3BU52.js → chunk-KTMHRXDT.js} +1 -1
- package/dist/{chunk-2QFIYYMP.js → chunk-L6QTERSH.js} +1 -1
- package/dist/{chunk-DLTLXYOV.js → chunk-NI6ZTP3D.js} +4 -9
- package/dist/{chunk-7HRYSLY2.js → chunk-NUXXFCIT.js} +2 -2
- package/dist/{chunk-ANVHRT35.js → chunk-O3Z5HHFP.js} +1 -1
- package/dist/{chunk-YW3LNSBM.js → chunk-OFSV5TZY.js} +1 -1
- package/dist/{chunk-GLLFIE2R.js → chunk-OWO3RFEX.js} +2 -2
- package/dist/{chunk-I4LMZNBN.js → chunk-QNOJSSQT.js} +1 -1
- package/dist/{chunk-OEA7U4HJ.js → chunk-QQT2T6JQ.js} +1 -1
- package/dist/{chunk-5SQK3D53.js → chunk-TYSIAWC3.js} +1 -0
- package/dist/{chunk-ZDUTXHM6.js → chunk-U34O6I7W.js} +2 -2
- package/dist/{chunk-FVXCQC7W.js → chunk-VA6IJ55K.js} +1 -1
- package/dist/{chunk-LNSF6BJC.js → chunk-VPZJ7ZTL.js} +2 -2
- package/dist/{chunk-UGZ3B5AK.js → chunk-YJH6WE76.js} +8 -8
- package/dist/{chunk-GTVOB5RN.js → chunk-YNBRVVTX.js} +1 -1
- package/dist/{chunk-IXA7ZB6U.js → chunk-ZZSAWXWD.js} +1 -1
- package/dist/client/index.js +4 -4
- package/dist/contracts/broadcast-layouts.d.ts +133 -0
- package/dist/contracts/business-claims.d.ts +456 -0
- package/dist/contracts/entries.d.ts +1 -1
- package/dist/contracts/outreach.d.ts +267 -0
- package/dist/contracts/page-titles.d.ts +140 -0
- package/dist/contracts/public-url-host.d.ts +10 -0
- package/dist/contracts/publication-branding.d.ts +143 -0
- package/dist/contracts/publication-charter.d.ts +14 -0
- package/dist/fleet/index.js +4 -4
- package/dist/forms/FileField.d.ts +3 -1
- package/dist/forms/PrivateFileField.d.ts +3 -0
- package/dist/forms/index.js +10 -10
- package/dist/forms/private-file-rules.d.ts +8 -0
- package/dist/forms/server.js +5 -5
- package/dist/forms/static.js +3 -3
- package/dist/forms/styles.css +17 -1
- package/dist/forms/types.d.ts +4 -0
- package/dist/images/index.js +4 -4
- package/dist/index.js +1 -1
- package/dist/layout/client.js +7 -7
- package/dist/layout/index.js +8 -8
- package/dist/llms/index.js +4 -4
- package/dist/maps/index.js +3 -3
- package/dist/mcp/sonor.js +9 -9
- package/dist/revalidate/index.js +2 -2
- package/dist/runtime/index.js +3 -3
- package/dist/seo/client.js +4 -4
- package/dist/seo/index.js +4 -4
- package/dist/seo/llms.js +4 -4
- package/dist/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/sitemap.js +2 -2
- package/dist/server/index.js +2 -2
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +2 -2
- package/dist/sitemap/index.js +2 -2
- package/dist/sync/index.js +5 -5
- package/dist/website/images.js +4 -4
- package/dist/website/index.js +5 -5
- package/dist/website/popups.js +4 -4
- package/dist/{writeLLMsTxt-BAK5XMRR.js → writeLLMsTxt-KHVHNSDM.js} +1 -1
- package/package.json +1 -1
- package/src/forms/README.md +22 -0
- package/dist/FileField-F7BG4XAZ.js +0 -83
- /package/dist/{chunk-URZTBPZO.js → chunk-V67OD7RW.js} +0 -0
package/dist/chat/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { ChatWidget, DEFAULT_LAUNCHER_OFFSET_BOTTOM, EchoChat, chatLauncherStyles, isChatEnabled } from '../chunk-
|
|
3
|
-
export { SiteChat } from '../chunk-
|
|
2
|
+
export { ChatWidget, DEFAULT_LAUNCHER_OFFSET_BOTTOM, EchoChat, chatLauncherStyles, isChatEnabled } from '../chunk-IGAIQ2B3.js';
|
|
3
|
+
export { SiteChat } from '../chunk-O3Z5HHFP.js';
|
|
4
4
|
import '../chunk-6T6CQVNL.js';
|
|
5
5
|
import '../chunk-JE4A5S4F.js';
|
|
6
6
|
import '../chunk-27FISYK4.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-HMTPRBYJ.js';
|
|
8
8
|
import '../chunk-Q6E4OPGG.js';
|
|
9
9
|
import '../chunk-5ROTTMBL.js';
|
|
10
10
|
import '../chunk-C2FZBUSS.js';
|
|
11
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-TYSIAWC3.js';
|
|
12
12
|
import '../chunk-HW7B43E5.js';
|
|
13
13
|
import '../chunk-NJCTQH2P.js';
|
|
14
14
|
import '../chunk-S22FSH7C.js';
|
|
@@ -17,10 +17,10 @@ import '../chunk-GJWI74ZZ.js';
|
|
|
17
17
|
import '../chunk-5TM3WPCI.js';
|
|
18
18
|
import '../chunk-DLM4FFNH.js';
|
|
19
19
|
import '../chunk-EKBEOXTH.js';
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
20
|
+
import '../chunk-IYCSDFPN.js';
|
|
21
|
+
import '../chunk-QQT2T6JQ.js';
|
|
22
22
|
import '../chunk-W7OPEMGJ.js';
|
|
23
|
-
import '../chunk-
|
|
23
|
+
import '../chunk-BUE3Z32O.js';
|
|
24
24
|
import '../chunk-PKBMQBKP.js';
|
|
25
25
|
|
|
26
26
|
// src/chat/echo-config.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { locToPath, isMalformedSitemapPath, inferPageType } from './chunk-YVKRYQRG.js';
|
|
3
3
|
import { resolveAnalyticsTarget } from './chunk-DLM4FFNH.js';
|
|
4
|
-
import { sonorFetch } from './chunk-
|
|
4
|
+
import { sonorFetch } from './chunk-IYCSDFPN.js';
|
|
5
5
|
import { useRef, useEffect } from 'react';
|
|
6
6
|
|
|
7
7
|
var SYNC_STAMP_KEY = "_sk_sitemap_synced_at";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { countStageViews, countStageQuestions, useFieldControls } from './chunk-
|
|
3
|
-
import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-
|
|
2
|
+
import { countStageViews, countStageQuestions, useFieldControls } from './chunk-NI6ZTP3D.js';
|
|
3
|
+
import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-HMTPRBYJ.js';
|
|
4
4
|
import { readAgentSubmit, formToolAttributes } from './chunk-Q6E4OPGG.js';
|
|
5
5
|
import { isFieldVisible, validateField, isFieldComplete, isDisplayOnly, unseenControlValues } from './chunk-C2FZBUSS.js';
|
|
6
6
|
import { HoneypotField } from './chunk-DXO6SBMD.js';
|
|
7
|
-
import { DelightStyles, FormMomentum, FormField } from './chunk-
|
|
8
|
-
import { DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-
|
|
7
|
+
import { DelightStyles, FormMomentum, FormField } from './chunk-CVADNHJ4.js';
|
|
8
|
+
import { DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-TYSIAWC3.js';
|
|
9
9
|
import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
|
|
10
10
|
import { useState, useRef, useMemo, useEffect, useCallback } from 'react';
|
|
11
11
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
@@ -63,7 +63,7 @@ function FormClient({
|
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
65
|
let cancelled = false;
|
|
66
|
-
const load = resolvedExperience === "stage" ? import('./FormStage-
|
|
66
|
+
const load = resolvedExperience === "stage" ? import('./FormStage-2PLWWYBW.js').then((m) => m.FormStage) : import('./FormSpotlight-H73ZZ66T.js').then((m) => m.FormSpotlight);
|
|
67
67
|
load.then((Component) => {
|
|
68
68
|
if (!cancelled) setExperience(() => Component);
|
|
69
69
|
}).catch((err) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FormEnhancer } from './chunk-
|
|
2
|
-
import { StaticForm } from './chunk-
|
|
1
|
+
import { FormEnhancer } from './chunk-OWO3RFEX.js';
|
|
2
|
+
import { StaticForm } from './chunk-VPZJ7ZTL.js';
|
|
3
3
|
import { serverApiFetch } from './chunk-C7TLGL3R.js';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -609,12 +609,18 @@ function FormField({ field, value, error, onChange, onFocus, onBlur, classPrefix
|
|
|
609
609
|
inputId,
|
|
610
610
|
classPrefix,
|
|
611
611
|
baseInputStyle,
|
|
612
|
-
onChange: emit
|
|
612
|
+
onChange: emit,
|
|
613
|
+
ariaInvalid: a11y["aria-invalid"],
|
|
614
|
+
describedBy
|
|
613
615
|
}
|
|
614
616
|
) : (
|
|
615
617
|
// Static: a real file input so the field is visible and labelled,
|
|
616
618
|
// but the Sonor upload only happens once enhanced.
|
|
617
|
-
/* @__PURE__ */
|
|
619
|
+
field.validation?.private_attachments ? /* @__PURE__ */ jsxs("div", { className: "sk-file-dropzone", "aria-busy": "true", children: [
|
|
620
|
+
/* @__PURE__ */ jsx("span", { className: "sk-file-dropzone__title", children: "Drop your estimate here" }),
|
|
621
|
+
/* @__PURE__ */ jsx("span", { className: "sk-file-dropzone__hint", children: "Preparing private upload\u2026" }),
|
|
622
|
+
/* @__PURE__ */ jsx("input", { id: inputId, type: "file", name: field.slug, disabled: true, "aria-label": field.label, className: "sk-file-dropzone__input" })
|
|
623
|
+
] }) : /* @__PURE__ */ jsx(
|
|
618
624
|
"input",
|
|
619
625
|
{
|
|
620
626
|
id: inputId,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-
|
|
2
|
+
import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-NUXXFCIT.js';
|
|
3
3
|
import { designTokensHash } from './chunk-IHG36STL.js';
|
|
4
4
|
import { useDeferredActivation } from './chunk-YC7ELZS3.js';
|
|
5
5
|
import { resolveAnalyticsTarget } from './chunk-DLM4FFNH.js';
|
|
@@ -3,7 +3,7 @@ import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
|
|
|
3
3
|
import { readAnalyticsIdentity } from './chunk-5ROTTMBL.js';
|
|
4
4
|
import { getOrCreateVisitorId } from './chunk-IPQKQEWI.js';
|
|
5
5
|
import { resolveAnalyticsTarget } from './chunk-DLM4FFNH.js';
|
|
6
|
-
import { sonorFetch } from './chunk-
|
|
6
|
+
import { sonorFetch } from './chunk-IYCSDFPN.js';
|
|
7
7
|
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
8
8
|
import ReactDOM from 'react-dom';
|
|
9
9
|
import dynamic from 'next/dynamic';
|
|
@@ -161,7 +161,7 @@ function activatePopup(active, id, popups) {
|
|
|
161
161
|
return [...active, id];
|
|
162
162
|
}
|
|
163
163
|
var LazyBlocksPopup = dynamic(
|
|
164
|
-
() => import('./BlocksPopup-
|
|
164
|
+
() => import('./BlocksPopup-AJ3CKVQG.js').then((m) => ({ default: m.BlocksPopup })),
|
|
165
165
|
{ ssr: false }
|
|
166
166
|
);
|
|
167
167
|
function SitePopups(props) {
|
|
@@ -3,7 +3,7 @@ import { registerAnalyticsDispatcher } from './chunk-LCDVPAMR.js';
|
|
|
3
3
|
import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-IPQKQEWI.js';
|
|
4
4
|
import { onPageLeave } from './chunk-L2V5PUFN.js';
|
|
5
5
|
import { resolveAnalyticsTarget } from './chunk-DLM4FFNH.js';
|
|
6
|
-
import { sonorFetch, sonorBeacon } from './chunk-
|
|
6
|
+
import { sonorFetch, sonorBeacon } from './chunk-IYCSDFPN.js';
|
|
7
7
|
import { createContext, useRef, useEffect, useState, useMemo, useCallback, useContext } from 'react';
|
|
8
8
|
import { usePathname } from 'next/navigation';
|
|
9
9
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { readAgentSubmit, formToolAttributes } from './chunk-Q6E4OPGG.js';
|
|
3
3
|
import { readAnalyticsIdentity } from './chunk-5ROTTMBL.js';
|
|
4
4
|
import { isFieldVisible, validateField, isFieldComplete, unseenControlValues } from './chunk-C2FZBUSS.js';
|
|
5
|
-
import { normalizeFormConfig, DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-
|
|
5
|
+
import { normalizeFormConfig, DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-TYSIAWC3.js';
|
|
6
6
|
import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
|
|
7
7
|
import { onPageLeave } from './chunk-L2V5PUFN.js';
|
|
8
8
|
import { uuid } from './chunk-GJWI74ZZ.js';
|
|
9
|
-
import { sonorFetch, sonorBeacon } from './chunk-
|
|
9
|
+
import { sonorFetch, sonorBeacon } from './chunk-IYCSDFPN.js';
|
|
10
10
|
import { readPublishedApiConfig, getClientApiConfig } from './chunk-W7OPEMGJ.js';
|
|
11
11
|
import { useRef, useCallback, useEffect, useState, useMemo } from 'react';
|
|
12
12
|
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
import { VISUAL_VIEWPORT_GAP_PROPERTY } from './chunk-6T6CQVNL.js';
|
|
3
3
|
import { GlassStyles } from './chunk-JE4A5S4F.js';
|
|
4
4
|
import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
|
|
5
|
-
import { useForm } from './chunk-
|
|
5
|
+
import { useForm } from './chunk-HMTPRBYJ.js';
|
|
6
6
|
import { parseColor, relativeLuminance, DARK_LUMINANCE, contrastRatio } from './chunk-S22FSH7C.js';
|
|
7
|
-
import { sonorFetch } from './chunk-
|
|
7
|
+
import { sonorFetch } from './chunk-IYCSDFPN.js';
|
|
8
8
|
import { readPublishedApiConfig } from './chunk-W7OPEMGJ.js';
|
|
9
9
|
import { useState, useEffect, useRef, useLayoutEffect, useCallback, Fragment as Fragment$1 } from 'react';
|
|
10
10
|
import { lexer } from 'marked';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { isTokenMode, getFreshCredential, isSiteToken, refreshSiteToken, currentCredential, credentialBreakerId } from './chunk-
|
|
2
|
-
import { SITE_KIT_VERSION } from './chunk-
|
|
1
|
+
import { isTokenMode, getFreshCredential, isSiteToken, refreshSiteToken, currentCredential, credentialBreakerId } from './chunk-QQT2T6JQ.js';
|
|
2
|
+
import { SITE_KIT_VERSION } from './chunk-BUE3Z32O.js';
|
|
3
3
|
|
|
4
4
|
// src/shared/fetchWithRetry.ts
|
|
5
5
|
function backoffDelay(attempt, response) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { trackedFreshFetch } from './chunk-UAYAJPEP.js';
|
|
2
2
|
import { isNextControlFlow } from './chunk-C7TLGL3R.js';
|
|
3
3
|
import { monotonicMs } from './chunk-MH2DSGC6.js';
|
|
4
|
-
import { SITE_KIT_VERSION } from './chunk-
|
|
4
|
+
import { SITE_KIT_VERSION } from './chunk-BUE3Z32O.js';
|
|
5
5
|
import 'server-only';
|
|
6
6
|
|
|
7
7
|
var MINT_PATH = "/api/public/site-token";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateLLMsTxt, generateLLMsFullTxt, appendAgentAccessSection } from './chunk-
|
|
1
|
+
import { generateLLMsTxt, generateLLMsFullTxt, appendAgentAccessSection } from './chunk-V67OD7RW.js';
|
|
2
2
|
import { createHash } from 'crypto';
|
|
3
3
|
import { existsSync, readFileSync } from 'fs';
|
|
4
4
|
import { join } from 'path';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { isEmptyValue, isDisplayOnly } from './chunk-C2FZBUSS.js';
|
|
3
|
-
import { useMemo, useState,
|
|
3
|
+
import { useMemo, useState, useEffect } from 'react';
|
|
4
4
|
|
|
5
5
|
var NO_CONTROLS = {};
|
|
6
6
|
function useFieldControls(fields) {
|
|
@@ -13,23 +13,18 @@ function useFieldControls(fields) {
|
|
|
13
13
|
[fields]
|
|
14
14
|
);
|
|
15
15
|
const [controls, setControls] = useState(NO_CONTROLS);
|
|
16
|
-
const requested = useRef({ date: false, file: false });
|
|
17
16
|
useEffect(() => {
|
|
18
17
|
let cancelled = false;
|
|
19
|
-
if (needsDate
|
|
20
|
-
requested.current.date = true;
|
|
18
|
+
if (needsDate) {
|
|
21
19
|
import('./DatePicker-JEBV6WYJ.js').then((m) => {
|
|
22
20
|
if (!cancelled) setControls((prev) => ({ ...prev, Date: m.DatePicker }));
|
|
23
21
|
}).catch(() => {
|
|
24
|
-
requested.current.date = false;
|
|
25
22
|
});
|
|
26
23
|
}
|
|
27
|
-
if (needsFile
|
|
28
|
-
|
|
29
|
-
import('./FileField-F7BG4XAZ.js').then((m) => {
|
|
24
|
+
if (needsFile) {
|
|
25
|
+
import('./FileField-UEQYIFRO.js').then((m) => {
|
|
30
26
|
if (!cancelled) setControls((prev) => ({ ...prev, File: m.FileField }));
|
|
31
27
|
}).catch(() => {
|
|
32
|
-
requested.current.file = false;
|
|
33
28
|
});
|
|
34
29
|
}
|
|
35
30
|
return () => {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { toHexColor, normalizeDesignTokens, designTokensHash } from './chunk-IHG36STL.js';
|
|
2
2
|
import { contrastRatio, parseColor, relativeLuminance } from './chunk-S22FSH7C.js';
|
|
3
3
|
import { resolveAnalyticsTarget } from './chunk-DLM4FFNH.js';
|
|
4
|
-
import { sonorFetch } from './chunk-
|
|
5
|
-
import { SITE_KIT_VERSION } from './chunk-
|
|
4
|
+
import { sonorFetch } from './chunk-IYCSDFPN.js';
|
|
5
|
+
import { SITE_KIT_VERSION } from './chunk-BUE3Z32O.js';
|
|
6
6
|
|
|
7
7
|
// src/website/design.ts
|
|
8
8
|
var SITE_DESIGN_PATH = "/api/public/site/design";
|
|
@@ -7,7 +7,7 @@ import dynamic from 'next/dynamic';
|
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
9
|
var LazyChatWidget = dynamic(
|
|
10
|
-
() => import('./ChatWidget-
|
|
10
|
+
() => import('./ChatWidget-EYBVB5SZ.js').then((m) => ({ default: m.ChatWidget })),
|
|
11
11
|
{ ssr: false }
|
|
12
12
|
);
|
|
13
13
|
function SiteChat(props) {
|
|
@@ -54,7 +54,7 @@ function useSignal() {
|
|
|
54
54
|
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
55
55
|
}
|
|
56
56
|
var LazySignalCore = dynamic(
|
|
57
|
-
() => import('./SignalCore-
|
|
57
|
+
() => import('./SignalCore-FEFNMNYN.js').then((m) => ({ default: m.SignalCore })),
|
|
58
58
|
{ ssr: false }
|
|
59
59
|
);
|
|
60
60
|
function SignalBridge({
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { shellValuesToCarry } from './chunk-C2FZBUSS.js';
|
|
3
3
|
import { useDeferredActivation } from './chunk-YC7ELZS3.js';
|
|
4
|
-
import { normalizeFormConfig } from './chunk-
|
|
4
|
+
import { normalizeFormConfig } from './chunk-TYSIAWC3.js';
|
|
5
5
|
import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
|
|
6
6
|
import React, { useRef, useEffect, useState, useMemo, useCallback } from 'react';
|
|
7
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
|
-
var loadInteractiveForm = () => import('./ManagedForm-
|
|
9
|
+
var loadInteractiveForm = () => import('./ManagedForm-ZQOFXEWS.js').then((m) => m.ManagedForm);
|
|
10
10
|
var REPLAY_WAIT_MS = 8e3;
|
|
11
11
|
function FormEnhancer({
|
|
12
12
|
formId,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-
|
|
2
|
+
import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-72F44HKL.js';
|
|
3
3
|
import { readPublishedApiConfig, DEFAULT_SONOR_API_URL } from './chunk-W7OPEMGJ.js';
|
|
4
4
|
import { useState, useRef, useMemo, useCallback, useEffect, useId } from 'react';
|
|
5
5
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -15,6 +15,7 @@ function normalizeFormConfig(data) {
|
|
|
15
15
|
const success_message = apiSuccess || (typeof data.successMessage === "string" ? String(data.successMessage).trim() : "") || DEFAULT_FORM_SUCCESS_MESSAGE;
|
|
16
16
|
return {
|
|
17
17
|
...data,
|
|
18
|
+
fields: data.fields?.map((field) => ({ ...field, form_id: field.form_id || data.id })),
|
|
18
19
|
success_message,
|
|
19
20
|
total_steps,
|
|
20
21
|
is_multi_step
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { sanitizeFleetVersion, buildFleetHeartbeatPayload } from './chunk-ZTZQPYP6.js';
|
|
3
3
|
import { useDeferredActivation } from './chunk-YC7ELZS3.js';
|
|
4
4
|
import { resolveAnalyticsTarget } from './chunk-DLM4FFNH.js';
|
|
5
|
-
import { sonorFetch } from './chunk-
|
|
6
|
-
import { SITE_KIT_VERSION } from './chunk-
|
|
5
|
+
import { sonorFetch } from './chunk-IYCSDFPN.js';
|
|
6
|
+
import { SITE_KIT_VERSION } from './chunk-BUE3Z32O.js';
|
|
7
7
|
import { useRef, useEffect } from 'react';
|
|
8
8
|
|
|
9
9
|
// src/fleet/heartbeat.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveSiteHost } from './chunk-FESKKJAS.js';
|
|
2
|
-
import { configureSiteCredential, currentCredential } from './chunk-
|
|
2
|
+
import { configureSiteCredential, currentCredential } from './chunk-QQT2T6JQ.js';
|
|
3
3
|
|
|
4
4
|
// src/shared/publishCredential.ts
|
|
5
5
|
function publishSiteCredential({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HoneypotField } from './chunk-DXO6SBMD.js';
|
|
2
|
-
import { FormField } from './chunk-
|
|
3
|
-
import { normalizeFormConfig } from './chunk-
|
|
2
|
+
import { FormField } from './chunk-CVADNHJ4.js';
|
|
3
|
+
import { normalizeFormConfig } from './chunk-TYSIAWC3.js';
|
|
4
4
|
import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { SITE_EDIT_PARAM } from './chunk-6G43IRWR.js';
|
|
3
|
-
import { publishSiteCredential } from './chunk-
|
|
4
|
-
import { FleetHeartbeat } from './chunk-
|
|
3
|
+
import { publishSiteCredential } from './chunk-VA6IJ55K.js';
|
|
4
|
+
import { FleetHeartbeat } from './chunk-U34O6I7W.js';
|
|
5
5
|
import { useDeferredActivation } from './chunk-YC7ELZS3.js';
|
|
6
6
|
import { resolveSiteHost } from './chunk-FESKKJAS.js';
|
|
7
7
|
import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-IPQKQEWI.js';
|
|
8
8
|
import { announceFrameReady, isPrivatePreview, isCrossOriginFrame } from './chunk-DLM4FFNH.js';
|
|
9
|
-
import { SignalBridge } from './chunk-
|
|
9
|
+
import { SignalBridge } from './chunk-OFSV5TZY.js';
|
|
10
10
|
import React, { useState, useRef, useCallback, useEffect, Suspense } from 'react';
|
|
11
11
|
import dynamic from 'next/dynamic';
|
|
12
12
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
@@ -33,23 +33,23 @@ function startEditBridge() {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
var LazyAnalyticsProvider = dynamic(
|
|
36
|
-
() => import('./AnalyticsProvider-
|
|
36
|
+
() => import('./AnalyticsProvider-GVJYL6XY.js').then((m) => ({ default: m.AnalyticsProvider })),
|
|
37
37
|
{ ssr: false }
|
|
38
38
|
);
|
|
39
39
|
var LazySiteChat = dynamic(
|
|
40
|
-
() => import('./SiteChat-
|
|
40
|
+
() => import('./SiteChat-3MKYL2XM.js').then((m) => ({ default: m.SiteChat })),
|
|
41
41
|
{ ssr: false }
|
|
42
42
|
);
|
|
43
43
|
var LazySitePopups = dynamic(
|
|
44
|
-
() => import('./SitePopups-
|
|
44
|
+
() => import('./SitePopups-C44YTQ3Q.js').then((m) => ({ default: m.SitePopups })),
|
|
45
45
|
{ ssr: false }
|
|
46
46
|
);
|
|
47
47
|
var LazySiteDesignReporter = dynamic(
|
|
48
|
-
() => import('./SiteDesignReporter-
|
|
48
|
+
() => import('./SiteDesignReporter-AJDIBNHI.js').then((m) => ({ default: m.SiteDesignReporter })),
|
|
49
49
|
{ ssr: false }
|
|
50
50
|
);
|
|
51
51
|
var LazySitemapSync = dynamic(
|
|
52
|
-
() => import('./SitemapSync-
|
|
52
|
+
() => import('./SitemapSync-UJA6JVPW.js').then((m) => ({ default: m.SitemapSync })),
|
|
53
53
|
{ ssr: false }
|
|
54
54
|
);
|
|
55
55
|
function SiteKitClientProviders({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { secretsMatch, readCappedBody } from './chunk-XTRZGXB2.js';
|
|
2
|
-
import { SITE_KIT_VERSION } from './chunk-
|
|
2
|
+
import { SITE_KIT_VERSION } from './chunk-BUE3Z32O.js';
|
|
3
3
|
|
|
4
4
|
// src/llms/revalidate.ts
|
|
5
5
|
function createLlmsRevalidateHandler(secret, options) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { writeLLMsTxtToPublic } from './chunk-
|
|
1
|
+
import { writeLLMsTxtToPublic } from './chunk-V67OD7RW.js';
|
|
2
2
|
import { getSiteConfig } from './chunk-Z22QVHT4.js';
|
|
3
3
|
import { buildFetch } from './chunk-UAYAJPEP.js';
|
|
4
4
|
import { findAppDirForDiscovery } from './chunk-ZEGVKVD5.js';
|
package/dist/client/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SiteKitCredential } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
2
|
+
export { SiteKitCredential } from '../chunk-6AWIUO2Z.js';
|
|
3
|
+
import '../chunk-VA6IJ55K.js';
|
|
4
4
|
export { VISUAL_VIEWPORT_GAP_PROPERTY, VisualViewportGap, useVisualViewportGap } from '../chunk-6T6CQVNL.js';
|
|
5
5
|
export { useDeferredActivation } from '../chunk-YC7ELZS3.js';
|
|
6
6
|
import '../chunk-FESKKJAS.js';
|
|
@@ -9,6 +9,6 @@ export { trackConversion, trackEvent } from '../chunk-LCDVPAMR.js';
|
|
|
9
9
|
export { getOrCreateSessionId, getOrCreateVisitorId, useSiteKitIdentity } from '../chunk-IPQKQEWI.js';
|
|
10
10
|
import '../chunk-GJWI74ZZ.js';
|
|
11
11
|
import '../chunk-5TM3WPCI.js';
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-QQT2T6JQ.js';
|
|
13
|
+
import '../chunk-BUE3Z32O.js';
|
|
14
14
|
import '../chunk-PKBMQBKP.js';
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Broadcast layouts: which compositions a Broadcast card draws, which retired
|
|
3
|
+
* IDs stay readable and what each one draws as, the Broadcast styles, and the
|
|
4
|
+
* review card variations with the frozen draw that gives each review its
|
|
5
|
+
* composition. Sonor's APIs and dashboard import it as
|
|
6
|
+
* `@sonordev/contracts/broadcast-layouts`.
|
|
7
|
+
*
|
|
8
|
+
* Why it exists: a post is centered (`headline`) or low (`anchor`), never
|
|
9
|
+
* top-aligned. Retiring the top-aligned compositions meant changing the same
|
|
10
|
+
* lists in three places (the Sonor API, Signal and the dashboard), and any one
|
|
11
|
+
* of them drifting would let an old ID reach a renderer or a picker. So the
|
|
12
|
+
* IDs, the retired-to-drawn map, the normalizers, the labels and the review
|
|
13
|
+
* draw live here once.
|
|
14
|
+
*
|
|
15
|
+
* Two lists, on purpose:
|
|
16
|
+
* - CARD_LAYOUTS is every ID a stored row, a saved setting or a request may
|
|
17
|
+
* carry. Retired IDs stay in it so old rows keep validating; they're
|
|
18
|
+
* normalized on the way to a renderer.
|
|
19
|
+
* - ARTICLE_COVER_LAYOUTS is what's drawn and offered. Nothing else is.
|
|
20
|
+
* Both orders are visible (rotation order and refusal messages), so they're
|
|
21
|
+
* part of the contract.
|
|
22
|
+
*
|
|
23
|
+
* Pure: no I/O, no Node built-ins. The review draw takes the SHA-256 digest
|
|
24
|
+
* of reviewCompositionSeed, which the caller hashes, so the hash stays with
|
|
25
|
+
* the server.
|
|
26
|
+
*/
|
|
27
|
+
/** Bumped when a stored ID here changes meaning. */
|
|
28
|
+
export declare const BROADCAST_LAYOUTS_CONTRACT_VERSION = 1;
|
|
29
|
+
/**
|
|
30
|
+
* Every composition ID a stored row, a saved setting or a request may carry.
|
|
31
|
+
*
|
|
32
|
+
* - `headline`: centered, the title set large.
|
|
33
|
+
* - `anchor`: the background leads, the title sits low.
|
|
34
|
+
* - `stacked`: retired 2026-10-14 (title pinned to the top, art below). Draws as `anchor`.
|
|
35
|
+
* - `split`: retired (title and stage in columns). Draws as `headline`.
|
|
36
|
+
*/
|
|
37
|
+
export declare const CARD_LAYOUTS: readonly ['stacked', 'headline', 'split', 'anchor'];
|
|
38
|
+
export type CardLayoutId = (typeof CARD_LAYOUTS)[number];
|
|
39
|
+
/** The compositions Broadcast draws and offers: centered or low. Nothing is top-aligned. */
|
|
40
|
+
export declare const ARTICLE_COVER_LAYOUTS: readonly ['headline', 'anchor'];
|
|
41
|
+
export type ArticleCoverLayoutId = (typeof ARTICLE_COVER_LAYOUTS)[number];
|
|
42
|
+
export type RetiredCardLayoutId = Exclude<CardLayoutId, ArticleCoverLayoutId>;
|
|
43
|
+
/** Each retired layout ID, and the composition it draws as. */
|
|
44
|
+
export declare const RETIRED_CARD_LAYOUTS: Readonly<Record<RetiredCardLayoutId, ArticleCoverLayoutId>>;
|
|
45
|
+
/** A readable layout ID, retired ones included. The check every input boundary uses. */
|
|
46
|
+
export declare const isCardLayoutId: (value: unknown) => value is CardLayoutId;
|
|
47
|
+
/** A layout that's drawn and offered today. */
|
|
48
|
+
export declare const isArticleCoverLayoutId: (value: unknown) => value is ArticleCoverLayoutId;
|
|
49
|
+
/** A retired layout ID (an own key of RETIRED_CARD_LAYOUTS, never an inherited one). */
|
|
50
|
+
export declare const isRetiredCardLayoutId: (value: unknown) => value is RetiredCardLayoutId;
|
|
51
|
+
/**
|
|
52
|
+
* Which composition a layout ID draws. A retired ID becomes what it draws as;
|
|
53
|
+
* anything else is returned as it came, so callers check isCardLayoutId (or
|
|
54
|
+
* pass `auto` through) before rendering. Every renderer reads its layout
|
|
55
|
+
* through here, so a retired ID never reaches one.
|
|
56
|
+
*/
|
|
57
|
+
export declare function normalizeArticleCoverLayout(layout: CardLayoutId): ArticleCoverLayoutId;
|
|
58
|
+
export declare function normalizeArticleCoverLayout<T>(layout: T): T | ArticleCoverLayoutId;
|
|
59
|
+
/** What each drawn layout is called wherever a person picks one. */
|
|
60
|
+
export declare const CARD_LAYOUT_LABELS: Readonly<Record<ArticleCoverLayoutId, string>>;
|
|
61
|
+
/** The layout choices the API serves to pickers and agents, Anchor first. */
|
|
62
|
+
export declare const CARD_LAYOUT_OPTIONS: ReadonlyArray<{
|
|
63
|
+
id: ArticleCoverLayoutId;
|
|
64
|
+
label: string;
|
|
65
|
+
}>;
|
|
66
|
+
/** A publication's card layout when it doesn't pin one: rotate. */
|
|
67
|
+
export declare const AUTO_CARD_LAYOUT: 'auto';
|
|
68
|
+
export type PublicationCardLayout = CardLayoutId | typeof AUTO_CARD_LAYOUT;
|
|
69
|
+
/** What a publication-branding write may choose: rotate, or a drawn layout. */
|
|
70
|
+
export declare const PUBLICATION_CARD_LAYOUTS: readonly ["auto", "headline", "anchor"];
|
|
71
|
+
/** What a saved publication-branding profile may carry: a write's choices plus the retired IDs. */
|
|
72
|
+
export declare const SAVED_PUBLICATION_CARD_LAYOUTS: readonly ["auto", "stacked", "headline", "split", "anchor"];
|
|
73
|
+
/**
|
|
74
|
+
* The shared Broadcast look for article, review and generated post artwork.
|
|
75
|
+
* One choice per project (stored as `articleStyle`, its legacy wire name).
|
|
76
|
+
*
|
|
77
|
+
* - `glass`: the background full bleed, the words on a frosted card.
|
|
78
|
+
* - `editorial`: paper, a serif headline, the image framed like a magazine plate.
|
|
79
|
+
* - `poster`: one flat accent field, condensed type, big numbers.
|
|
80
|
+
* - `cinematic`: the image as a widescreen still over solid ground.
|
|
81
|
+
* - `blueprint`: a drawing sheet, with a grid, mono labels and a title block.
|
|
82
|
+
* - `focus`: real project photos, a dark reading gradient and circular details.
|
|
83
|
+
*/
|
|
84
|
+
export declare const BROADCAST_STYLES: readonly ['glass', 'editorial', 'poster', 'cinematic', 'blueprint', 'focus'];
|
|
85
|
+
export type BroadcastStyleId = (typeof BROADCAST_STYLES)[number];
|
|
86
|
+
export declare const DEFAULT_BROADCAST_STYLE: BroadcastStyleId;
|
|
87
|
+
export declare const isBroadcastStyleId: (value: unknown) => value is BroadcastStyleId;
|
|
88
|
+
/**
|
|
89
|
+
* The review compositions Broadcast draws: `signature` (photo up top, the
|
|
90
|
+
* quote low) and `frame` (centered). Order matters: a review whose v1 draw
|
|
91
|
+
* was retired redraws by index into this list.
|
|
92
|
+
*/
|
|
93
|
+
export declare const REVIEW_CARD_VARIATIONS: readonly ['signature', 'frame'];
|
|
94
|
+
export type ReviewCardVariation = (typeof REVIEW_CARD_VARIATIONS)[number];
|
|
95
|
+
/** A review composition when none is chosen, or an unknown one is asked for. */
|
|
96
|
+
export declare const DEFAULT_REVIEW_CARD_VARIATION: ReviewCardVariation;
|
|
97
|
+
/** Each retired review variation, and what it draws as. `spotlight` pinned the quote to the top; retired 2026-10-14. */
|
|
98
|
+
export declare const RETIRED_REVIEW_CARD_VARIATIONS: Readonly<Record<'spotlight', ReviewCardVariation>>;
|
|
99
|
+
/** What each review variation is called wherever a person picks one. */
|
|
100
|
+
export declare const REVIEW_CARD_VARIATION_LABELS: Readonly<Record<ReviewCardVariation, string>>;
|
|
101
|
+
/** The review variation choices, in REVIEW_CARD_VARIATIONS order. */
|
|
102
|
+
export declare const REVIEW_CARD_VARIATION_OPTIONS: ReadonlyArray<{
|
|
103
|
+
id: ReviewCardVariation;
|
|
104
|
+
label: string;
|
|
105
|
+
}>;
|
|
106
|
+
/** A review variation that's drawn today. Strict: a retired one isn't. */
|
|
107
|
+
export declare const isReviewCardVariation: (value: unknown) => value is ReviewCardVariation;
|
|
108
|
+
/**
|
|
109
|
+
* The review composition to draw for a stored or requested value: a drawn
|
|
110
|
+
* one as it is, a retired one as what it draws as, anything else (null, '',
|
|
111
|
+
* an unknown string) as the default.
|
|
112
|
+
*/
|
|
113
|
+
export declare function normalizeReviewCardVariation(value: unknown): ReviewCardVariation;
|
|
114
|
+
/**
|
|
115
|
+
* The v1 draw list, frozen. A review's composition belongs to its immutable
|
|
116
|
+
* identity, so changing this list (or its order) would reshuffle every
|
|
117
|
+
* review's card. New compositions get a new seed version, never an edit here.
|
|
118
|
+
*/
|
|
119
|
+
export declare const REVIEW_CARD_VARIATION_V1_DRAW: readonly ['signature', 'spotlight', 'frame'];
|
|
120
|
+
/**
|
|
121
|
+
* What a review's composition is drawn from: the project and the review, and
|
|
122
|
+
* nothing a person can edit (platform, artwork, copy and brand never move it).
|
|
123
|
+
* Hash this string with SHA-256 and pass the digest to
|
|
124
|
+
* reviewCardVariationFromDigest.
|
|
125
|
+
*/
|
|
126
|
+
export declare function reviewCompositionSeed(projectId: string, reviewId: string): string;
|
|
127
|
+
/**
|
|
128
|
+
* The composition a review's digest draws. The first four bytes (big-endian)
|
|
129
|
+
* pick from the v1 list; a review that drew a retired composition redraws
|
|
130
|
+
* between the drawn ones from the next four, so no other review moves.
|
|
131
|
+
* `digest` is the SHA-256 of reviewCompositionSeed (a Node Buffer works).
|
|
132
|
+
*/
|
|
133
|
+
export declare function reviewCardVariationFromDigest(digest: ArrayLike<number>): ReviewCardVariation;
|