@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/forms/server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { ServerForm, getFormConfig } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { ServerForm, getFormConfig } from '../chunk-AJG74ZZV.js';
|
|
2
|
+
import '../chunk-OWO3RFEX.js';
|
|
3
3
|
import '../chunk-C2FZBUSS.js';
|
|
4
4
|
import '../chunk-YC7ELZS3.js';
|
|
5
|
-
export { StaticForm } from '../chunk-
|
|
5
|
+
export { StaticForm } from '../chunk-VPZJ7ZTL.js';
|
|
6
6
|
import '../chunk-DXO6SBMD.js';
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-CVADNHJ4.js';
|
|
8
|
+
import '../chunk-TYSIAWC3.js';
|
|
9
9
|
import '../chunk-HW7B43E5.js';
|
|
10
10
|
import '../chunk-NJCTQH2P.js';
|
|
11
11
|
import '../chunk-C7TLGL3R.js';
|
package/dist/forms/static.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { StaticForm } from '../chunk-
|
|
1
|
+
export { StaticForm } from '../chunk-VPZJ7ZTL.js';
|
|
2
2
|
import '../chunk-DXO6SBMD.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-CVADNHJ4.js';
|
|
4
|
+
import '../chunk-TYSIAWC3.js';
|
|
5
5
|
import '../chunk-HW7B43E5.js';
|
|
6
6
|
import '../chunk-NJCTQH2P.js';
|
|
7
7
|
import '../chunk-PKBMQBKP.js';
|
package/dist/forms/styles.css
CHANGED
|
@@ -439,4 +439,20 @@
|
|
|
439
439
|
color: var(--sk-text-tertiary);
|
|
440
440
|
margin: 8px 0;
|
|
441
441
|
}
|
|
442
|
-
|
|
442
|
+
.sk-file-dropzone { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 180px; padding: 24px 16px; border: 1.5px dashed rgba(var(--sk-primary-rgb), .38); border-radius: 12px; background: rgba(var(--sk-primary-rgb), .035); color: var(--sk-primary); text-align: center; cursor: pointer; }
|
|
443
|
+
.sk-file-dropzone--active, .sk-file-dropzone:focus-within { outline: 2px solid var(--sk-primary); outline-offset: 3px; background: rgba(var(--sk-primary-rgb), .075); }
|
|
444
|
+
.sk-file-dropzone--busy { cursor: progress; }
|
|
445
|
+
.sk-file-dropzone__title { display: block; font-size: 15px; font-weight: 600; }
|
|
446
|
+
.sk-file-dropzone__hint { font-size: 12px; color: var(--sk-text-secondary); }
|
|
447
|
+
.sk-file-dropzone__hint span { color: var(--sk-primary); text-decoration: underline; text-underline-offset: 3px; }
|
|
448
|
+
.sk-file-dropzone__formats { font-size: 10px; color: var(--sk-text-tertiary); margin-top: 4px; }
|
|
449
|
+
.sk-file-dropzone__input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
450
|
+
.sk-private-files__list { list-style: none; padding: 0; margin: 12px 0 0; }
|
|
451
|
+
.sk-private-files__list li { display: flex; align-items: center; gap: 12px; justify-content: space-between; border: 1px solid rgba(var(--sk-primary-rgb), .15); border-radius: 9px; padding: 12px; margin-top: 8px; }
|
|
452
|
+
.sk-private-files__name { min-width: 0; overflow-wrap: anywhere; font-size: 12px; color: var(--sk-text-primary); }
|
|
453
|
+
.sk-private-files__name small { display: block; font-size: 10px; color: var(--sk-text-tertiary); margin-top: 4px; }
|
|
454
|
+
.sk-private-files__list li > div { display: flex; gap: 10px; flex-shrink: 0; }
|
|
455
|
+
.sk-private-files__list button { padding: 5px 0; min-height: 32px; font-size: 10px; color: var(--sk-primary); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
|
|
456
|
+
.sk-private-files__list button:disabled { opacity: .5; cursor: wait; }
|
|
457
|
+
.sk-private-files__status { font-size: 10px; color: var(--sk-text-tertiary); margin: 9px 0 0; line-height: 1.7; }
|
|
458
|
+
.sk-private-files__error { font-size: 12px; color: var(--sk-error); margin: 9px 0 0; line-height: 1.7; }
|
package/dist/forms/types.d.ts
CHANGED
|
@@ -107,6 +107,10 @@ export interface FieldOption {
|
|
|
107
107
|
label: string;
|
|
108
108
|
}
|
|
109
109
|
export interface ValidationRules {
|
|
110
|
+
/** Use private Sonor attachment storage instead of the public media upload. */
|
|
111
|
+
private_attachments?: boolean;
|
|
112
|
+
/** Private document fields accept 1 to 4 files. */
|
|
113
|
+
max_files?: number;
|
|
110
114
|
min_length?: number;
|
|
111
115
|
max_length?: number;
|
|
112
116
|
min?: number;
|
package/dist/images/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-
|
|
1
|
+
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-CMUD37WV.js';
|
|
2
2
|
export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-IYCSDFPN.js';
|
|
4
|
+
import '../chunk-QQT2T6JQ.js';
|
|
5
|
+
import '../chunk-BUE3Z32O.js';
|
|
6
6
|
import '../chunk-PKBMQBKP.js';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SITE_KIT_VERSION } from './chunk-
|
|
1
|
+
export { SITE_KIT_VERSION } from './chunk-BUE3Z32O.js';
|
|
2
2
|
import './chunk-PKBMQBKP.js';
|
package/dist/layout/client.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SiteKitClientProviders } from '../chunk-
|
|
2
|
+
export { SiteKitClientProviders } from '../chunk-YJH6WE76.js';
|
|
3
3
|
import '../chunk-6G43IRWR.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-VA6IJ55K.js';
|
|
5
|
+
import '../chunk-U34O6I7W.js';
|
|
6
6
|
import '../chunk-ZTZQPYP6.js';
|
|
7
7
|
import '../chunk-YC7ELZS3.js';
|
|
8
8
|
import '../chunk-FESKKJAS.js';
|
|
@@ -12,9 +12,9 @@ import '../chunk-GJWI74ZZ.js';
|
|
|
12
12
|
import '../chunk-5TM3WPCI.js';
|
|
13
13
|
import '../chunk-DLM4FFNH.js';
|
|
14
14
|
import '../chunk-EKBEOXTH.js';
|
|
15
|
-
import '../chunk-
|
|
16
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-IYCSDFPN.js';
|
|
16
|
+
import '../chunk-QQT2T6JQ.js';
|
|
17
17
|
import '../chunk-W7OPEMGJ.js';
|
|
18
|
-
import '../chunk-
|
|
19
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-BUE3Z32O.js';
|
|
19
|
+
import '../chunk-OFSV5TZY.js';
|
|
20
20
|
import '../chunk-PKBMQBKP.js';
|
package/dist/layout/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { SiteKitClientProviders } from '../chunk-
|
|
1
|
+
import { SiteKitClientProviders } from '../chunk-YJH6WE76.js';
|
|
2
2
|
import '../chunk-6G43IRWR.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-VA6IJ55K.js';
|
|
4
|
+
import '../chunk-U34O6I7W.js';
|
|
5
5
|
import '../chunk-ZTZQPYP6.js';
|
|
6
6
|
import { aiDiscoveryLinks } from '../chunk-MTDVV5P3.js';
|
|
7
7
|
import { ManagedFavicon } from '../chunk-GW7GSBO7.js';
|
|
8
8
|
import '../chunk-YC7ELZS3.js';
|
|
9
|
-
import { resolveClientCredential } from '../chunk-
|
|
9
|
+
import { resolveClientCredential } from '../chunk-JSW42BHL.js';
|
|
10
10
|
import '../chunk-UAYAJPEP.js';
|
|
11
11
|
import { ManagedScripts } from '../chunk-MVLMXC44.js';
|
|
12
12
|
import { resolveApiOrigin } from '../chunk-C7TLGL3R.js';
|
|
@@ -18,11 +18,11 @@ import '../chunk-GJWI74ZZ.js';
|
|
|
18
18
|
import '../chunk-5TM3WPCI.js';
|
|
19
19
|
import '../chunk-DLM4FFNH.js';
|
|
20
20
|
import '../chunk-EKBEOXTH.js';
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
21
|
+
import '../chunk-IYCSDFPN.js';
|
|
22
|
+
import '../chunk-QQT2T6JQ.js';
|
|
23
23
|
import '../chunk-W7OPEMGJ.js';
|
|
24
|
-
import '../chunk-
|
|
25
|
-
import '../chunk-
|
|
24
|
+
import '../chunk-BUE3Z32O.js';
|
|
25
|
+
import '../chunk-OFSV5TZY.js';
|
|
26
26
|
import '../chunk-PKBMQBKP.js';
|
|
27
27
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
28
28
|
|
package/dist/llms/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-
|
|
1
|
+
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-KTMHRXDT.js';
|
|
2
2
|
export { buildAiDiscoveryHeaders, wantsLlmsDiscoveryLink } from '../chunk-MTDVV5P3.js';
|
|
3
3
|
export { AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, buildAiCrawlerRules, createRobotsTxtHandler } from '../chunk-QLTDFUJ7.js';
|
|
4
|
-
export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-
|
|
4
|
+
export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-YNBRVVTX.js';
|
|
5
5
|
export { AEOBlock, AEOCitedContent, AEOClaim, AEOComparison, AEODefinition, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, DEFAULT_SPEAKABLE_SELECTORS, SpeakableSchema, createSpeakableSchema, getSpeakableSelectorsForPage } from '../chunk-PSAG45YF.js';
|
|
6
6
|
import '../chunk-XTRZGXB2.js';
|
|
7
|
-
export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-
|
|
7
|
+
export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-V67OD7RW.js';
|
|
8
8
|
export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-XA7Q2VQA.js';
|
|
9
9
|
import '../chunk-5D7ZISUP.js';
|
|
10
10
|
import '../chunk-4K735O3J.js';
|
|
@@ -16,5 +16,5 @@ import '../chunk-YVKRYQRG.js';
|
|
|
16
16
|
import '../chunk-FESKKJAS.js';
|
|
17
17
|
import '../chunk-A4CC4ZG3.js';
|
|
18
18
|
import '../chunk-W7OPEMGJ.js';
|
|
19
|
-
import '../chunk-
|
|
19
|
+
import '../chunk-BUE3Z32O.js';
|
|
20
20
|
import '../chunk-PKBMQBKP.js';
|
package/dist/maps/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { monotonicMs } from '../chunk-MH2DSGC6.js';
|
|
3
|
-
import { sonorFetch } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
3
|
+
import { sonorFetch } from '../chunk-IYCSDFPN.js';
|
|
4
|
+
import '../chunk-QQT2T6JQ.js';
|
|
5
5
|
import { getClientApiConfig } from '../chunk-W7OPEMGJ.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-BUE3Z32O.js';
|
|
7
7
|
import '../chunk-PKBMQBKP.js';
|
|
8
8
|
import { useState, useCallback, useEffect } from 'react';
|
|
9
9
|
import { APIProvider, Map as Map$1, AdvancedMarker, Pin, InfoWindow } from '@vis.gl/react-google-maps';
|
package/dist/mcp/sonor.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { fetchReviews, fetchReviewStats } from '../chunk-BSQP6PRA.js';
|
|
2
2
|
import { toolErrorResult } from '../chunk-FYAB6CXS.js';
|
|
3
|
-
import { fetchBookingTypes, fetchAvailability } from '../chunk-
|
|
3
|
+
import { fetchBookingTypes, fetchAvailability } from '../chunk-72F44HKL.js';
|
|
4
4
|
import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-XA7Q2VQA.js';
|
|
5
5
|
import '../chunk-5ROTTMBL.js';
|
|
6
|
-
import { getFormConfig } from '../chunk-
|
|
7
|
-
import '../chunk-
|
|
6
|
+
import { getFormConfig } from '../chunk-AJG74ZZV.js';
|
|
7
|
+
import '../chunk-OWO3RFEX.js';
|
|
8
8
|
import '../chunk-C2FZBUSS.js';
|
|
9
9
|
import '../chunk-YC7ELZS3.js';
|
|
10
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-VPZJ7ZTL.js';
|
|
11
11
|
import '../chunk-DXO6SBMD.js';
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-CVADNHJ4.js';
|
|
13
|
+
import '../chunk-TYSIAWC3.js';
|
|
14
14
|
import '../chunk-HW7B43E5.js';
|
|
15
15
|
import '../chunk-NJCTQH2P.js';
|
|
16
16
|
import { resolveArticleUrl } from '../chunk-4K735O3J.js';
|
|
@@ -22,10 +22,10 @@ import '../chunk-MH2DSGC6.js';
|
|
|
22
22
|
import { resolveSiteHost } from '../chunk-FESKKJAS.js';
|
|
23
23
|
import '../chunk-A4CC4ZG3.js';
|
|
24
24
|
import '../chunk-5TM3WPCI.js';
|
|
25
|
-
import '../chunk-
|
|
26
|
-
import '../chunk-
|
|
25
|
+
import '../chunk-IYCSDFPN.js';
|
|
26
|
+
import '../chunk-QQT2T6JQ.js';
|
|
27
27
|
import '../chunk-W7OPEMGJ.js';
|
|
28
|
-
import { SITE_KIT_VERSION } from '../chunk-
|
|
28
|
+
import { SITE_KIT_VERSION } from '../chunk-BUE3Z32O.js';
|
|
29
29
|
import '../chunk-PKBMQBKP.js';
|
|
30
30
|
import 'server-only';
|
|
31
31
|
import { after } from 'next/server.js';
|
package/dist/revalidate/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createSeoRevalidationHandler } from '../chunk-
|
|
1
|
+
import { createSeoRevalidationHandler } from '../chunk-YNBRVVTX.js';
|
|
2
2
|
import '../chunk-XTRZGXB2.js';
|
|
3
3
|
export { SITE_CACHE_TAGS, SITE_REVALIDATE_PATH, isSiteRevalidatePong } from '../chunk-6KU7STM3.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-BUE3Z32O.js';
|
|
5
5
|
import '../chunk-PKBMQBKP.js';
|
|
6
6
|
|
|
7
7
|
// src/revalidate/index.ts
|
package/dist/runtime/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../chunk-B7T2SFUF.js';
|
|
2
2
|
export { readAnalyticsIdentity } from '../chunk-5ROTTMBL.js';
|
|
3
3
|
import '../chunk-5TM3WPCI.js';
|
|
4
|
-
export { sonorFetch } from '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
export { sonorFetch } from '../chunk-IYCSDFPN.js';
|
|
5
|
+
import '../chunk-QQT2T6JQ.js';
|
|
6
6
|
export { DEFAULT_SONOR_API_URL, getClientApiConfig, readPublishedApiConfig } from '../chunk-W7OPEMGJ.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-BUE3Z32O.js';
|
|
8
8
|
import '../chunk-PKBMQBKP.js';
|
package/dist/seo/client.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SitemapSync } from '../chunk-
|
|
2
|
+
export { SitemapSync } from '../chunk-6NXFA7HE.js';
|
|
3
3
|
import '../chunk-YVKRYQRG.js';
|
|
4
4
|
import '../chunk-DLM4FFNH.js';
|
|
5
5
|
import '../chunk-EKBEOXTH.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-IYCSDFPN.js';
|
|
7
|
+
import '../chunk-QQT2T6JQ.js';
|
|
8
8
|
import '../chunk-W7OPEMGJ.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-BUE3Z32O.js';
|
|
10
10
|
import '../chunk-PKBMQBKP.js';
|
package/dist/seo/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { ManagedNoScripts, ManagedScripts } from '../chunk-MVLMXC44.js';
|
|
|
2
2
|
import { pickManagedLlmSchemaForJsonLd } from '../chunk-NZ4RXN3G.js';
|
|
3
3
|
import { withoutSchemaPlaceholders } from '../chunk-VWWITFWM.js';
|
|
4
4
|
import { safeJsonLd } from '../chunk-4KZ6W3ZH.js';
|
|
5
|
-
export { SitemapSync } from '../chunk-
|
|
5
|
+
export { SitemapSync } from '../chunk-6NXFA7HE.js';
|
|
6
6
|
import { getManagedMetadata, mergeAlternates } from '../chunk-URJN75ZG.js';
|
|
7
7
|
export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-URJN75ZG.js';
|
|
8
8
|
import { getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, pruneSchemaTypes } from '../chunk-Y35BWW2C.js';
|
|
@@ -18,10 +18,10 @@ import '../chunk-FESKKJAS.js';
|
|
|
18
18
|
import '../chunk-A4CC4ZG3.js';
|
|
19
19
|
import '../chunk-DLM4FFNH.js';
|
|
20
20
|
import '../chunk-EKBEOXTH.js';
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
21
|
+
import '../chunk-IYCSDFPN.js';
|
|
22
|
+
import '../chunk-QQT2T6JQ.js';
|
|
23
23
|
import '../chunk-W7OPEMGJ.js';
|
|
24
|
-
import '../chunk-
|
|
24
|
+
import '../chunk-BUE3Z32O.js';
|
|
25
25
|
import '../chunk-PKBMQBKP.js';
|
|
26
26
|
import { Suspense } from 'react';
|
|
27
27
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
package/dist/seo/llms.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-
|
|
1
|
+
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-KTMHRXDT.js';
|
|
2
2
|
export { buildAiDiscoveryHeaders, wantsLlmsDiscoveryLink } from '../chunk-MTDVV5P3.js';
|
|
3
3
|
export { AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, buildAiCrawlerRules, createRobotsTxtHandler } from '../chunk-QLTDFUJ7.js';
|
|
4
|
-
export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-
|
|
4
|
+
export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-YNBRVVTX.js';
|
|
5
5
|
export { AEOBlock, AEOCitedContent, AEOClaim, AEOComparison, AEODefinition, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, DEFAULT_SPEAKABLE_SELECTORS, SpeakableSchema, createSpeakableSchema, getSpeakableSelectorsForPage } from '../chunk-PSAG45YF.js';
|
|
6
6
|
import '../chunk-XTRZGXB2.js';
|
|
7
|
-
export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-
|
|
7
|
+
export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-V67OD7RW.js';
|
|
8
8
|
export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-XA7Q2VQA.js';
|
|
9
9
|
import '../chunk-5D7ZISUP.js';
|
|
10
10
|
import '../chunk-4K735O3J.js';
|
|
@@ -16,5 +16,5 @@ import '../chunk-YVKRYQRG.js';
|
|
|
16
16
|
import '../chunk-FESKKJAS.js';
|
|
17
17
|
import '../chunk-A4CC4ZG3.js';
|
|
18
18
|
import '../chunk-W7OPEMGJ.js';
|
|
19
|
-
import '../chunk-
|
|
19
|
+
import '../chunk-BUE3Z32O.js';
|
|
20
20
|
import '../chunk-PKBMQBKP.js';
|
|
@@ -458,7 +458,7 @@ async function registerLocalSitemap(options) {
|
|
|
458
458
|
}
|
|
459
459
|
if (options.writeLlms && result.success) {
|
|
460
460
|
try {
|
|
461
|
-
const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-
|
|
461
|
+
const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-KHVHNSDM.js');
|
|
462
462
|
const written = await writeLLMsTxtToPublic({
|
|
463
463
|
// Resolved here too: the sync's own `site` is scoped to the branch that
|
|
464
464
|
// posts, and this runs on the skip path as well.
|
package/dist/seo/sitemap.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-ZZSAWXWD.js';
|
|
2
|
+
import '../chunk-V67OD7RW.js';
|
|
3
3
|
import '../chunk-XA7Q2VQA.js';
|
|
4
4
|
import '../chunk-Z22QVHT4.js';
|
|
5
5
|
import '../chunk-5D7ZISUP.js';
|
package/dist/server/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../chunk-34ZYJTQR.js';
|
|
2
|
-
export { resolveClientCredential } from '../chunk-
|
|
2
|
+
export { resolveClientCredential } from '../chunk-JSW42BHL.js';
|
|
3
3
|
import '../chunk-UAYAJPEP.js';
|
|
4
4
|
export { SITE_CACHE_TAGS } from '../chunk-6KU7STM3.js';
|
|
5
5
|
export { isNextControlFlow, requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-C7TLGL3R.js';
|
|
6
6
|
import '../chunk-MH2DSGC6.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-BUE3Z32O.js';
|
|
8
8
|
import '../chunk-PKBMQBKP.js';
|
package/dist/shared/version.d.ts
CHANGED
package/dist/signal/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { useSignalExperiment, useSignalEvent } from '../chunk-
|
|
3
|
-
export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-
|
|
2
|
+
import { useSignalExperiment, useSignalEvent } from '../chunk-OFSV5TZY.js';
|
|
3
|
+
export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-OFSV5TZY.js';
|
|
4
4
|
import '../chunk-PKBMQBKP.js';
|
|
5
5
|
import React, { useEffect } from 'react';
|
|
6
6
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
package/dist/sitemap/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-ZZSAWXWD.js';
|
|
2
|
+
import '../chunk-V67OD7RW.js';
|
|
3
3
|
import '../chunk-XA7Q2VQA.js';
|
|
4
4
|
import '../chunk-Z22QVHT4.js';
|
|
5
5
|
import '../chunk-5D7ZISUP.js';
|
package/dist/sync/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { BookingWidget } from '../chunk-
|
|
2
|
-
export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-
|
|
1
|
+
export { BookingWidget } from '../chunk-QNOJSSQT.js';
|
|
2
|
+
export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-72F44HKL.js';
|
|
3
3
|
import '../chunk-5ROTTMBL.js';
|
|
4
4
|
import '../chunk-5TM3WPCI.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-IYCSDFPN.js';
|
|
6
|
+
import '../chunk-QQT2T6JQ.js';
|
|
7
7
|
import '../chunk-W7OPEMGJ.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-BUE3Z32O.js';
|
|
9
9
|
import '../chunk-PKBMQBKP.js';
|
package/dist/website/images.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-
|
|
1
|
+
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-CMUD37WV.js';
|
|
2
2
|
export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-IYCSDFPN.js';
|
|
4
|
+
import '../chunk-QQT2T6JQ.js';
|
|
5
|
+
import '../chunk-BUE3Z32O.js';
|
|
6
6
|
import '../chunk-PKBMQBKP.js';
|
package/dist/website/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SiteDesignReporter } from '../chunk-
|
|
3
|
-
export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-
|
|
2
|
+
export { SiteDesignReporter } from '../chunk-DSD3XZQQ.js';
|
|
3
|
+
export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-NUXXFCIT.js';
|
|
4
4
|
export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-BF7TZYC3.js';
|
|
5
5
|
import '../chunk-IHG36STL.js';
|
|
6
6
|
import '../chunk-YC7ELZS3.js';
|
|
7
7
|
import '../chunk-S22FSH7C.js';
|
|
8
8
|
import '../chunk-DLM4FFNH.js';
|
|
9
9
|
import '../chunk-EKBEOXTH.js';
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-IYCSDFPN.js';
|
|
11
|
+
import '../chunk-QQT2T6JQ.js';
|
|
12
12
|
import '../chunk-W7OPEMGJ.js';
|
|
13
|
-
import '../chunk-
|
|
13
|
+
import '../chunk-BUE3Z32O.js';
|
|
14
14
|
import '../chunk-PKBMQBKP.js';
|
package/dist/website/popups.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SitePopups } from '../chunk-
|
|
2
|
+
export { SitePopups } from '../chunk-FTSEP7Q3.js';
|
|
3
3
|
import '../chunk-27FISYK4.js';
|
|
4
4
|
export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-BF7TZYC3.js';
|
|
5
5
|
import '../chunk-IHG36STL.js';
|
|
@@ -10,8 +10,8 @@ import '../chunk-GJWI74ZZ.js';
|
|
|
10
10
|
import '../chunk-5TM3WPCI.js';
|
|
11
11
|
import '../chunk-DLM4FFNH.js';
|
|
12
12
|
import '../chunk-EKBEOXTH.js';
|
|
13
|
-
import '../chunk-
|
|
14
|
-
import '../chunk-
|
|
13
|
+
import '../chunk-IYCSDFPN.js';
|
|
14
|
+
import '../chunk-QQT2T6JQ.js';
|
|
15
15
|
import '../chunk-W7OPEMGJ.js';
|
|
16
|
-
import '../chunk-
|
|
16
|
+
import '../chunk-BUE3Z32O.js';
|
|
17
17
|
import '../chunk-PKBMQBKP.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sonordev/site-kit",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"packageManager": "pnpm@11.5.3",
|
|
6
6
|
"description": "Sonor's Next.js foundation: SEO, analytics, forms, chat, booking, AI visibility and agent tools. Add @sonordev/press-kit for publications or @sonordev/commerce-kit for selling. Legacy article imports remain compatible in 8.x.",
|
package/src/forms/README.md
CHANGED
|
@@ -313,6 +313,28 @@ tag, and add `autocompleteFor` to your controls for the autofill tokens.
|
|
|
313
313
|
form can send a managed form, so `enhance={false}` only ever produced a form
|
|
314
314
|
that silently went nowhere.
|
|
315
315
|
|
|
316
|
+
## Private documents (8.6.0+)
|
|
317
|
+
|
|
318
|
+
A managed `file` field with `validation.private_attachments: true` uses the
|
|
319
|
+
private document control. Set `validation.max_files` from one to four. It
|
|
320
|
+
accepts PDF, JPEG, PNG and WebP, up to 10 MB per file, with drag and drop,
|
|
321
|
+
upload status, removal and retry. A required field stays unanswered until
|
|
322
|
+
every selected file has uploaded successfully.
|
|
323
|
+
|
|
324
|
+
This requires the Sonor API private attachment migration and endpoints plus
|
|
325
|
+
the Sonor app's authorized document download controls. It never falls back
|
|
326
|
+
to the public media upload endpoint. The server-rendered file control stays
|
|
327
|
+
disabled until enhancement, so it can't accidentally use a public upload.
|
|
328
|
+
Keep the private flag in `ServerForm`'s `initialConfig`; if configuration is
|
|
329
|
+
unavailable, render a contact fallback instead of fetching an unmarked field.
|
|
330
|
+
|
|
331
|
+
Uploads return signed, expiring grants. Submissions store private document
|
|
332
|
+
references, and the Sonor app obtains short-lived download URLs only after
|
|
333
|
+
checking access to the submission. Do not display those references as links.
|
|
334
|
+
|
|
335
|
+
Date and file controls load on demand. They also finish loading when React
|
|
336
|
+
Strict Mode restarts their effects during development.
|
|
337
|
+
|
|
316
338
|
## Styles
|
|
317
339
|
|
|
318
340
|
```tsx
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { sonorFetch } from './chunk-GDQKDL3E.js';
|
|
3
|
-
import './chunk-OEA7U4HJ.js';
|
|
4
|
-
import { getClientApiConfig } from './chunk-W7OPEMGJ.js';
|
|
5
|
-
import './chunk-CFSIGEUW.js';
|
|
6
|
-
import './chunk-PKBMQBKP.js';
|
|
7
|
-
import React from 'react';
|
|
8
|
-
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
9
|
-
|
|
10
|
-
function FileField({
|
|
11
|
-
field,
|
|
12
|
-
inputId,
|
|
13
|
-
classPrefix,
|
|
14
|
-
baseInputStyle,
|
|
15
|
-
onChange
|
|
16
|
-
}) {
|
|
17
|
-
const [status, setStatus] = React.useState("idle");
|
|
18
|
-
const [fileName, setFileName] = React.useState("");
|
|
19
|
-
const handleFile = async (e) => {
|
|
20
|
-
const file = e.target.files?.[0];
|
|
21
|
-
if (!file) return;
|
|
22
|
-
setFileName(file.name);
|
|
23
|
-
setStatus("uploading");
|
|
24
|
-
onChange("");
|
|
25
|
-
try {
|
|
26
|
-
const url = await uploadFormFile(file);
|
|
27
|
-
onChange(url);
|
|
28
|
-
setStatus("idle");
|
|
29
|
-
} catch (err) {
|
|
30
|
-
console.error("[Forms] File upload failed:", err);
|
|
31
|
-
onChange("");
|
|
32
|
-
setStatus("error");
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36
|
-
/* @__PURE__ */ jsx(
|
|
37
|
-
"input",
|
|
38
|
-
{
|
|
39
|
-
id: inputId,
|
|
40
|
-
className: `${classPrefix}__input ${classPrefix}__input--file`,
|
|
41
|
-
type: "file",
|
|
42
|
-
name: field.slug,
|
|
43
|
-
required: field.is_required,
|
|
44
|
-
disabled: status === "uploading",
|
|
45
|
-
onChange: handleFile,
|
|
46
|
-
style: baseInputStyle
|
|
47
|
-
}
|
|
48
|
-
),
|
|
49
|
-
status === "uploading" && /* @__PURE__ */ jsxs("p", { style: { color: "var(--sk-text-tertiary, #6b7280)", fontSize: 14, marginTop: 4 }, children: [
|
|
50
|
-
"Uploading ",
|
|
51
|
-
fileName,
|
|
52
|
-
"\u2026"
|
|
53
|
-
] }),
|
|
54
|
-
status === "error" && /* @__PURE__ */ jsx("p", { role: "alert", style: { color: "var(--sk-error, #dc2626)", fontSize: 14, marginTop: 4 }, children: "Upload failed. Please choose the file again." })
|
|
55
|
-
] });
|
|
56
|
-
}
|
|
57
|
-
async function uploadFormFile(file) {
|
|
58
|
-
const { apiUrl, apiKey } = getClientApiConfig();
|
|
59
|
-
if (!apiKey) {
|
|
60
|
-
throw new Error("API key is required to upload files.");
|
|
61
|
-
}
|
|
62
|
-
const body = new FormData();
|
|
63
|
-
body.append("file", file);
|
|
64
|
-
const response = await sonorFetch(
|
|
65
|
-
`${apiUrl}/api/public/forms/upload`,
|
|
66
|
-
{
|
|
67
|
-
method: "POST",
|
|
68
|
-
headers: { Authorization: `Bearer ${apiKey}` },
|
|
69
|
-
body
|
|
70
|
-
},
|
|
71
|
-
{ retries: 1, timeoutMs: 6e4 }
|
|
72
|
-
);
|
|
73
|
-
if (!response.ok) {
|
|
74
|
-
throw new Error(`Upload failed (${response.status})`);
|
|
75
|
-
}
|
|
76
|
-
const data = await response.json().catch(() => null);
|
|
77
|
-
if (!data?.url) {
|
|
78
|
-
throw new Error("Upload did not return a URL.");
|
|
79
|
-
}
|
|
80
|
-
return data.url;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export { FileField };
|
|
File without changes
|