@sonordev/site-kit 6.5.0 → 7.0.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 +18 -3
- package/README.md +50 -34
- package/agent-manifest.json +282 -52
- package/dist/AnalyticsProvider-GJ6JFQO5.js +11 -0
- package/dist/ArticleFaqSection-3Q26DP7P.js +9 -0
- package/dist/ArticleViewTracker-FEA5SBKW.js +49 -0
- package/dist/BlocksPopup-MNK4SDZM.js +43 -0
- package/dist/ChatWidget-M2YNLRYW.js +15 -0
- package/dist/DatePicker-JEBV6WYJ.js +2 -0
- package/dist/EngageWidget-RR63JQCA.js +11 -0
- package/dist/FileField-JFBXXD43.js +83 -0
- package/dist/FormCelebration-OVGAGBKF.js +2 -0
- package/dist/FormSpotlight-QE3J3VB5.js +754 -0
- package/dist/FormStage-OTPKEWID.js +418 -0
- package/dist/ManagedForm-3VRALWUD.js +14 -0
- package/dist/ManagedNewsletterForm-A2FE6L5C.js +62 -0
- package/dist/SignalCore-S6DO3VQV.js +322 -0
- package/dist/SiteDesignReporter-2WZVWJMA.js +11 -0
- package/dist/SitemapSync-IKNKPT2G.js +8 -0
- package/dist/SitemapSync.d.ts +0 -1
- package/dist/_client/booking-widget.d.ts +4 -0
- package/dist/_client/booking-widget.js +7 -0
- package/dist/_client/testimonial-section.d.ts +11 -0
- package/dist/_client/testimonial-section.js +5 -0
- package/dist/admin-auth/index.d.ts +0 -1
- package/dist/admin-auth/index.js +0 -0
- package/dist/admin-auth/session.d.ts +0 -1
- package/dist/affiliates/AffiliatesWidget.d.ts +0 -1
- package/dist/affiliates/api.d.ts +0 -1
- package/dist/affiliates/index.d.ts +0 -1
- package/dist/affiliates/index.js +149 -0
- package/dist/affiliates/types.d.ts +0 -1
- package/dist/affiliates/useAffiliates.d.ts +0 -1
- package/dist/analytics/AnalyticsProvider.d.ts +0 -1
- package/dist/analytics/WebVitals.d.ts +0 -1
- package/dist/analytics/dispatch.d.ts +0 -1
- package/dist/analytics/index.d.ts +0 -1
- package/dist/analytics/index.js +12 -67
- package/dist/analytics/measurement-context.d.ts +0 -1
- package/dist/analytics/page-observation.d.ts +0 -1
- package/dist/analytics/send-gate.d.ts +0 -1
- package/dist/analytics/types.d.ts +0 -1
- package/dist/analytics/useContactTracking.d.ts +0 -1
- package/dist/article-styles-6CM5FUMV.js +590 -0
- package/dist/article-tables-AXSZOGNW.js +2 -0
- package/dist/articles/Article.d.ts +0 -1
- package/dist/articles/ArticleFAQ.d.ts +0 -1
- package/dist/articles/ArticleFaqSection.d.ts +0 -1
- package/dist/articles/ArticleList.d.ts +0 -1
- package/dist/articles/ArticleViewTracker.d.ts +0 -1
- package/dist/articles/AuthorCard.d.ts +0 -1
- package/dist/articles/AuthorPage.d.ts +0 -1
- package/dist/articles/ClusterLandingPage.d.ts +0 -1
- package/dist/articles/ClusterNavigation.d.ts +0 -1
- package/dist/articles/ManagedNewsletterForm.d.ts +0 -1
- package/dist/articles/NewsletterShell.d.ts +0 -1
- package/dist/articles/NewsletterWidget.d.ts +0 -1
- package/dist/articles/PublicationLayout.d.ts +0 -1
- package/dist/articles/PublicationSidebar.d.ts +0 -1
- package/dist/articles/RelatedPosts.d.ts +0 -1
- package/dist/articles/ServiceCallout.d.ts +0 -1
- package/dist/articles/TableOfContents.d.ts +0 -1
- package/dist/articles/article-styles.d.ts +0 -1
- package/dist/articles/article-tables.d.ts +0 -1
- package/dist/articles/artwork.d.ts +0 -1
- package/dist/articles/author-schema.d.ts +0 -1
- package/dist/articles/author-social.d.ts +0 -1
- package/dist/articles/excerpt.d.ts +0 -1
- package/dist/articles/index.d.ts +0 -1
- package/dist/articles/index.js +87 -147
- package/dist/articles/news-sitemap.d.ts +0 -1
- package/dist/articles/processArticleHtml.d.ts +0 -1
- package/dist/articles/public-reads.d.ts +0 -1
- package/dist/articles/reading-time.d.ts +0 -1
- package/dist/articles/routes.d.ts +0 -1
- package/dist/articles/server-core.d.ts +0 -14
- package/dist/articles/server-ui.d.ts +0 -1
- package/dist/articles/server-ui.js +221 -265
- package/dist/articles/server.d.ts +0 -14
- package/dist/articles/server.js +10 -252
- package/dist/articles/types.d.ts +0 -1
- package/dist/articles/widget-styles.d.ts +0 -1
- package/dist/brand/extract-brand-profile.d.ts +0 -1
- package/dist/chat/index.d.ts +11 -0
- package/dist/chat/index.js +16 -0
- package/dist/chunk-24QZEO3Q.js +41 -0
- package/dist/chunk-3XHK5DFX.js +184 -0
- package/dist/chunk-43OCZ3JA.js +67 -0
- package/dist/chunk-4KZ6W3ZH.js +8 -0
- package/dist/chunk-4WI3FU5L.js +129 -0
- package/dist/chunk-4Y5FWDPM.js +97 -0
- package/dist/chunk-5C4WVOVO.js +478 -0
- package/dist/chunk-5SQK3D53.js +24 -0
- package/dist/chunk-5UZN5V52.js +52 -0
- package/dist/chunk-5YSI5KFD.js +19 -0
- package/dist/chunk-6CUFRMMF.js +937 -0
- package/dist/chunk-6HDT4G4A.js +253 -0
- package/dist/chunk-6T6CQVNL.js +37 -0
- package/dist/chunk-6ZB3XNAT.js +54 -0
- package/dist/chunk-7KJGO77W.js +1 -0
- package/dist/chunk-7L5AARVY.js +68 -0
- package/dist/chunk-7ZHJIRM3.js +4 -0
- package/dist/chunk-7ZWO5HDQ.js +1 -0
- package/dist/chunk-A4CC4ZG3.js +15 -0
- package/dist/chunk-AQSNPZY4.js +92 -0
- package/dist/chunk-B52EXDWI.js +1803 -0
- package/dist/chunk-BQR4IPBW.js +146 -0
- package/dist/chunk-BR4ZKUHH.js +227 -0
- package/dist/chunk-BU66S5B7.js +1 -0
- package/dist/chunk-C4G3NW2E.js +25 -0
- package/dist/chunk-D7SLSJS4.js +1 -0
- package/dist/chunk-DIKNRN34.js +28 -0
- package/dist/chunk-DXO6SBMD.js +43 -0
- package/dist/chunk-EDYHROQ7.js +77 -0
- package/dist/chunk-EKBEOXTH.js +114 -0
- package/dist/chunk-FESKKJAS.js +19 -0
- package/dist/chunk-FV2VD7WM.js +347 -0
- package/dist/chunk-FYAB6CXS.js +265 -0
- package/dist/chunk-G3NHWMP5.js +233 -0
- package/dist/chunk-GJWI74ZZ.js +27 -0
- package/dist/chunk-GKGSXUVQ.js +218 -0
- package/dist/chunk-GLHQ3LRO.js +97 -0
- package/dist/chunk-GW7GSBO7.js +66 -0
- package/dist/chunk-GYBMMWGF.js +163 -0
- package/dist/chunk-GYF2ULVO.js +14 -0
- package/dist/chunk-HPUXKMNR.js +148 -0
- package/dist/chunk-HXJ54KAM.js +122 -0
- package/dist/chunk-I6WUCBKI.js +99 -0
- package/dist/chunk-IHG36STL.js +286 -0
- package/dist/chunk-J4FSB4OG.js +200 -0
- package/dist/chunk-JE4A5S4F.js +48 -0
- package/dist/chunk-JJ4JS3LD.js +26 -0
- package/dist/chunk-JMRESWQT.js +130 -0
- package/dist/chunk-JSZN6LDZ.js +338 -0
- package/dist/chunk-KPAZG65P.js +138 -0
- package/dist/chunk-KV4LOKOU.js +154 -0
- package/dist/chunk-KXPBMCFL.js +39 -0
- package/dist/chunk-L2V5PUFN.js +15 -0
- package/dist/chunk-L3AQCDCY.js +386 -0
- package/dist/chunk-L5UOHS6E.js +45 -0
- package/dist/chunk-LCDVPAMR.js +24 -0
- package/dist/chunk-LE7ZOTHB.js +43 -0
- package/dist/chunk-LNSNA3W4.js +217 -0
- package/dist/chunk-LQJC5S2M.js +236 -0
- package/dist/chunk-LT5ITURG.js +1071 -0
- package/dist/chunk-LVESVYCE.js +270 -0
- package/dist/chunk-M4ZY2FVB.js +177 -0
- package/dist/chunk-MH2DSGC6.js +10 -0
- package/dist/chunk-MJP63SSS.js +14 -0
- package/dist/chunk-MVLMXC44.js +9 -0
- package/dist/chunk-MZFF5F7R.js +407 -0
- package/dist/chunk-N2UVOR3X.js +238 -0
- package/dist/chunk-NDF4A5JM.js +37 -0
- package/dist/chunk-NJCTQH2P.js +62 -0
- package/dist/chunk-NZOJHERI.js +32 -0
- package/dist/chunk-OO2GZ272.js +1241 -0
- package/dist/chunk-OPRBF7VE.js +41 -0
- package/dist/chunk-OSQHWIM5.js +523 -0
- package/dist/chunk-OSYCOC3K.js +21 -0
- package/dist/chunk-P5GB6NEO.js +66 -0
- package/dist/chunk-PKBMQBKP.js +5 -0
- package/dist/chunk-PO2TRJPY.js +40 -0
- package/dist/chunk-PSAG45YF.js +451 -0
- package/dist/chunk-PXKIGZ2F.js +31 -0
- package/dist/chunk-QLTDFUJ7.js +94 -0
- package/dist/chunk-QPEEKFCA.js +533 -0
- package/dist/chunk-QXMIKDOL.js +125 -0
- package/dist/chunk-R3TOKUDJ.js +191 -0
- package/dist/chunk-S22FSH7C.js +94 -0
- package/dist/chunk-SC4MZGWZ.js +63 -0
- package/dist/chunk-SOD2F6C2.js +281 -0
- package/dist/chunk-SS636UDN.js +35 -0
- package/dist/chunk-SSUQKA7L.js +746 -0
- package/dist/chunk-SWKE6FWH.js +47 -0
- package/dist/chunk-T22VK4NJ.js +49 -0
- package/dist/chunk-TT63HHIT.js +543 -0
- package/dist/chunk-TXBAOEKG.js +1084 -0
- package/dist/chunk-UINSEWQ3.js +127 -0
- package/dist/chunk-UPFU63L4.js +126 -0
- package/dist/chunk-UVPGW4R7.js +222 -0
- package/dist/chunk-VX5CMNMM.js +26 -0
- package/dist/chunk-WFHI6HXP.js +837 -0
- package/dist/chunk-WMVK77ND.js +53 -0
- package/dist/chunk-X6F6SO4S.js +135 -0
- package/dist/chunk-XTRZGXB2.js +34 -0
- package/dist/chunk-XZMVNORA.js +100 -0
- package/dist/chunk-Y3INC4QJ.js +133 -0
- package/dist/chunk-YC7ELZS3.js +51 -0
- package/dist/chunk-YGGDU6C3.js +93 -0
- package/dist/chunk-YVKRYQRG.js +70 -0
- package/dist/chunk-Z22QVHT4.js +57 -0
- package/dist/chunk-ZEGVKVD5.js +80 -0
- package/dist/chunk-ZTZQPYP6.js +55 -0
- package/dist/client/SiteKitCredential.d.ts +0 -1
- package/dist/client/index.d.ts +0 -1
- package/dist/client/index.js +13 -53
- package/dist/cms/CmsPage.d.ts +0 -1
- package/dist/cms/CmsPreview.d.ts +0 -1
- package/dist/cms/CmsSection.d.ts +0 -1
- package/dist/cms/PortableTextRenderer.d.ts +0 -1
- package/dist/cms/index.d.ts +1 -2
- package/dist/cms/index.js +5 -410
- package/dist/cms/sanity-image.d.ts +0 -1
- package/dist/cms/sections/CtaSection.d.ts +0 -1
- package/dist/cms/sections/CustomSection.d.ts +0 -1
- package/dist/cms/sections/FaqSection.d.ts +0 -1
- package/dist/cms/sections/FormSection.d.ts +0 -1
- package/dist/cms/sections/GallerySection.d.ts +0 -1
- package/dist/cms/sections/HeroSection.d.ts +0 -1
- package/dist/cms/sections/RichTextSection.d.ts +0 -1
- package/dist/cms/sections/TestimonialsSection.d.ts +0 -1
- package/dist/cms/sections/index.d.ts +0 -1
- package/dist/cms/server-api.d.ts +0 -1
- package/dist/cms/server.d.ts +0 -1
- package/dist/cms/server.js +5 -22
- package/dist/cms/types.d.ts +0 -1
- package/dist/commerce/CalendarView.d.ts +0 -1
- package/dist/commerce/CheckoutForm.d.ts +0 -1
- package/dist/commerce/EventCalendar.d.ts +0 -1
- package/dist/commerce/EventCheckout.d.ts +0 -1
- package/dist/commerce/EventEmbed.d.ts +0 -1
- package/dist/commerce/EventModal.d.ts +0 -1
- package/dist/commerce/EventTile.d.ts +0 -1
- package/dist/commerce/EventsAgenda.d.ts +0 -1
- package/dist/commerce/EventsWidget.d.ts +0 -1
- package/dist/commerce/OfferingCard.d.ts +0 -1
- package/dist/commerce/OfferingList.d.ts +0 -1
- package/dist/commerce/ProductDetail.d.ts +0 -1
- package/dist/commerce/ProductEmbed.d.ts +0 -1
- package/dist/commerce/ProductGrid.d.ts +0 -1
- package/dist/commerce/ProductPage.d.ts +0 -1
- package/dist/commerce/RegistrationForm.d.ts +0 -1
- package/dist/commerce/SizeChart.d.ts +0 -1
- package/dist/commerce/UpcomingEvents.d.ts +0 -1
- package/dist/commerce/api.d.ts +0 -1
- package/dist/commerce/events-extras.d.ts +0 -1
- package/dist/commerce/index.d.ts +0 -1
- package/dist/commerce/index.js +8021 -228
- package/dist/commerce/server.d.ts +0 -1
- package/dist/commerce/server.js +2 -251
- package/dist/commerce/types.d.ts +0 -1
- package/dist/commerce/useEventModal.d.ts +0 -1
- package/dist/commerce/utils.d.ts +0 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +7 -11
- package/dist/contracts/color.d.ts +38 -0
- package/dist/contracts/entries.d.ts +8 -0
- package/dist/contracts/fleet.d.ts +96 -0
- package/dist/contracts/forms.d.ts +89 -0
- package/dist/contracts/llms.d.ts +54 -0
- package/dist/contracts/portfolio.d.ts +158 -0
- package/dist/contracts/seo-meta.d.ts +56 -0
- package/dist/contracts/seo-pages.d.ts +124 -0
- package/dist/contracts/sites-normalize.d.ts +35 -0
- package/dist/contracts/sites.d.ts +48 -0
- package/dist/contracts/slots.d.ts +81 -0
- package/dist/contracts/website.d.ts +148 -0
- package/dist/cta-bar/CtaBar.d.ts +0 -1
- package/dist/cta-bar/CtaBarBehavior.d.ts +0 -1
- package/dist/cta-bar/client.d.ts +0 -1
- package/dist/cta-bar/client.js +3 -22
- package/dist/cta-bar/index.d.ts +0 -1
- package/dist/cta-bar/index.js +5 -227
- package/dist/cta-bar/styles.d.ts +0 -1
- package/dist/discover-3YYOHOQP.js +2 -0
- package/dist/engage/ChatWidget.d.ts +0 -1
- package/dist/engage/DesignRenderer.d.ts +0 -1
- package/dist/engage/EchoUiActions.d.ts +0 -1
- package/dist/engage/EngageWidget.d.ts +2 -1
- package/dist/engage/brand-color.d.ts +0 -1
- package/dist/engage/chat-messages.d.ts +0 -1
- package/dist/engage/echo-config.d.ts +0 -1
- package/dist/engage/element-rules.d.ts +0 -1
- package/dist/engage/index.d.ts +0 -1
- package/dist/engage/index.js +20 -37
- package/dist/engage/launcher-placement.d.ts +0 -1
- package/dist/engage/socket-loader.d.ts +0 -1
- package/dist/engage/types.d.ts +18 -1
- package/dist/fleet/FleetHeartbeat.d.ts +0 -1
- package/dist/fleet/contract.d.ts +1 -98
- package/dist/fleet/contract.js +2 -53
- package/dist/fleet/heartbeat.d.ts +0 -1
- package/dist/fleet/index.d.ts +0 -1
- package/dist/fleet/index.js +9 -76
- package/dist/forms/DatePicker.d.ts +0 -1
- package/dist/forms/FileField.d.ts +0 -1
- package/dist/forms/FormCelebration.d.ts +0 -1
- package/dist/forms/FormClient.d.ts +0 -1
- package/dist/forms/FormEnhancer.d.ts +0 -1
- package/dist/forms/FormField.d.ts +0 -1
- package/dist/forms/FormSpotlight.d.ts +0 -1
- package/dist/forms/FormStage.d.ts +0 -1
- package/dist/forms/HoneypotField.d.ts +0 -1
- package/dist/forms/ManagedForm.d.ts +0 -1
- package/dist/forms/ServerForm.d.ts +0 -1
- package/dist/forms/StaticForm.d.ts +0 -1
- package/dist/forms/contract.d.ts +1 -91
- package/dist/forms/contract.js +2 -37
- package/dist/forms/defaultSuccessMessage.d.ts +0 -1
- package/dist/forms/delight.d.ts +0 -1
- package/dist/forms/experience-chrome.d.ts +0 -1
- package/dist/forms/experience-plan.d.ts +0 -1
- package/dist/forms/field-controls.d.ts +0 -1
- package/dist/forms/field-interactions.d.ts +0 -1
- package/dist/forms/field-rules.d.ts +0 -1
- package/dist/forms/form-loaded-at.d.ts +12 -0
- package/dist/forms/form-values.d.ts +0 -1
- package/dist/forms/formsApi.d.ts +0 -1
- package/dist/forms/ga4-identity.d.ts +0 -1
- package/dist/forms/index.d.ts +0 -1
- package/dist/forms/index.js +20 -64
- package/dist/forms/normalize-config.d.ts +0 -1
- package/dist/forms/recaptcha-warmup.d.ts +0 -1
- package/dist/forms/recaptcha.d.ts +0 -1
- package/dist/forms/server.d.ts +0 -1
- package/dist/forms/server.js +11 -67
- package/dist/forms/static.d.ts +0 -1
- package/dist/forms/static.js +6 -17
- package/dist/forms/submitForm.d.ts +0 -1
- package/dist/forms/tracking-session.d.ts +0 -1
- package/dist/forms/types.d.ts +0 -1
- package/dist/forms/useForm.d.ts +0 -1
- package/dist/forms/useFormTracking.d.ts +0 -1
- package/dist/images/ManagedFavicon.d.ts +0 -1
- package/dist/images/ManagedImage.d.ts +0 -1
- package/dist/images/api.d.ts +0 -1
- package/dist/images/index.d.ts +0 -1
- package/dist/images/index.js +6 -49
- package/dist/images/server.d.ts +0 -1
- package/dist/images/server.js +3 -21
- package/dist/index.d.ts +13 -56
- package/dist/index.js +2 -427
- package/dist/landing/LandingPage.d.ts +0 -1
- package/dist/landing/contract.d.ts +0 -1
- package/dist/landing/index.d.ts +0 -1
- package/dist/landing/index.js +3 -22
- package/dist/landing/metadata.d.ts +0 -1
- package/dist/landing/server.d.ts +0 -1
- package/dist/landing/server.js +3 -17
- package/dist/layout/SiteKitClientProviders.d.ts +12 -3
- package/dist/layout/SiteKitLayout.d.ts +19 -4
- package/dist/layout/SpeculationRules.d.ts +0 -1
- package/dist/layout/client.d.ts +12 -3
- package/dist/layout/client.js +16 -27
- package/dist/layout/index.d.ts +0 -1
- package/dist/layout/index.js +43 -41
- package/dist/layout/types.d.ts +13 -1
- package/dist/llms/AEOComponents.d.ts +0 -1
- package/dist/llms/SpeakableSchema.d.ts +0 -1
- package/dist/llms/agent-access.d.ts +43 -0
- package/dist/llms/aiRobots.d.ts +0 -10
- package/dist/llms/api.d.ts +0 -1
- package/dist/llms/client.d.ts +0 -1
- package/dist/llms/client.js +4 -66
- package/dist/llms/contract.d.ts +1 -42
- package/dist/llms/contract.js +2 -41
- package/dist/llms/discovery-headers.d.ts +6 -1
- package/dist/llms/generateLLMsTxt.d.ts +0 -1
- package/dist/llms/handlers.d.ts +0 -1
- package/dist/llms/humanize-industry.d.ts +0 -1
- package/dist/llms/index.d.ts +3 -2
- package/dist/llms/index.js +17 -448
- package/dist/llms/links.d.ts +0 -1
- package/dist/llms/revalidate.d.ts +0 -1
- package/dist/llms/seo-revalidate.d.ts +0 -1
- package/dist/llms/sourcedFacts.d.ts +0 -1
- package/dist/llms/types.d.ts +6 -1
- package/dist/llms/writeLLMsTxt.d.ts +10 -1
- package/dist/manifest/index.d.ts +0 -1
- package/dist/manifest/index.js +4 -8
- package/dist/maps/GoogleMap.d.ts +0 -1
- package/dist/maps/NeighborhoodMap.d.ts +0 -1
- package/dist/maps/api.d.ts +0 -1
- package/dist/maps/index.d.ts +0 -1
- package/dist/maps/index.js +85 -92
- package/dist/maps/types.d.ts +0 -1
- package/dist/mcp/WebMcpTools.d.ts +0 -1
- package/dist/mcp/client.d.ts +0 -1
- package/dist/mcp/client.js +9 -12
- package/dist/mcp/declarative.d.ts +0 -1
- package/dist/mcp/handlers.d.ts +15 -2
- package/dist/mcp/index.d.ts +2 -3
- package/dist/mcp/index.js +50 -298
- package/dist/mcp/protocol.d.ts +0 -1
- package/dist/mcp/report.d.ts +27 -0
- package/dist/mcp/serverCard.d.ts +0 -1
- package/dist/mcp/sonor.d.ts +99 -0
- package/dist/mcp/sonor.js +482 -0
- package/dist/mcp/transport.d.ts +0 -1
- package/dist/mcp/transport.js +8 -24
- package/dist/mcp/types.d.ts +21 -1
- package/dist/motion/CountUp.d.ts +0 -1
- package/dist/motion/Parallax.d.ts +0 -1
- package/dist/motion/Reveal.d.ts +0 -1
- package/dist/motion/ScrollScene.d.ts +0 -1
- package/dist/motion/engine.d.ts +0 -1
- package/dist/motion/failsafe.d.ts +0 -1
- package/dist/motion/gsap.d.ts +0 -1
- package/dist/motion/gsap.js +17 -29
- package/dist/motion/index.d.ts +0 -1
- package/dist/motion/index.js +25 -51
- package/dist/motion/three.d.ts +0 -1
- package/dist/motion/three.js +16 -23
- package/dist/og/config.d.ts +0 -1
- package/dist/og/contrast.d.ts +0 -1
- package/dist/og/index.d.ts +0 -1
- package/dist/og/index.js +4 -43
- package/dist/og/pages.d.ts +0 -1
- package/dist/og/route-fit.d.ts +0 -1
- package/dist/og/route.d.ts +0 -1
- package/dist/og/route.js +3 -245
- package/dist/og/template.d.ts +0 -1
- package/dist/portfolio/contract.d.ts +1 -153
- package/dist/portfolio/contract.js +2 -136
- package/dist/proxy/index.d.ts +16 -14
- package/dist/proxy/index.js +20 -36
- package/dist/proxy/securityHeaders.d.ts +0 -1
- package/dist/proxy/segment.d.ts +0 -1
- package/dist/redirects/index.d.ts +0 -8
- package/dist/redirects/index.js +6 -41
- package/dist/reputation/TestimonialSection.d.ts +0 -1
- package/dist/reputation/api.d.ts +0 -1
- package/dist/reputation/index.d.ts +0 -1
- package/dist/reputation/index.js +4 -22
- package/dist/reputation/server.d.ts +0 -1
- package/dist/reputation/server.js +3 -17
- package/dist/reputation/types.d.ts +0 -1
- package/dist/robots/index.d.ts +1 -2
- package/dist/robots/index.js +4 -78
- package/dist/robots/indexnow.d.ts +0 -1
- package/dist/robots/indexnow.js +4 -39
- package/dist/robots/next-internals.d.ts +0 -1
- package/dist/seo/ManagedContent.d.ts +0 -1
- package/dist/seo/ManagedFAQ.d.ts +0 -1
- package/dist/seo/ManagedInternalLinks.d.ts +0 -1
- package/dist/seo/ManagedSchema.d.ts +0 -1
- package/dist/seo/ManagedScripts.d.ts +0 -1
- package/dist/seo/api.d.ts +0 -1
- package/dist/seo/client.d.ts +0 -1
- package/dist/seo/client.js +8 -19
- package/dist/seo/entry-indexnow.d.ts +2 -0
- package/dist/seo/entry-llms-client.d.ts +2 -0
- package/dist/seo/entry-llms-contract.d.ts +2 -0
- package/dist/seo/entry-llms.d.ts +2 -0
- package/dist/seo/entry-meta-contract.d.ts +2 -0
- package/dist/seo/entry-og-route.d.ts +2 -0
- package/dist/seo/entry-og.d.ts +2 -0
- package/dist/seo/entry-pages-contract.d.ts +2 -0
- package/dist/seo/entry-redirects.d.ts +2 -0
- package/dist/seo/entry-robots.d.ts +2 -0
- package/dist/seo/entry-sitemap.d.ts +2 -0
- package/dist/seo/getManagedMetadata.d.ts +0 -1
- package/dist/seo/groundingSchema.d.ts +0 -1
- package/dist/seo/index.d.ts +0 -2
- package/dist/seo/index.js +88 -318
- package/dist/seo/indexnow.d.ts +2 -0
- package/dist/seo/indexnow.js +4 -0
- package/dist/seo/llms/client.d.ts +2 -0
- package/dist/seo/llms/client.js +4 -0
- package/dist/seo/llms/contract.d.ts +2 -0
- package/dist/seo/llms/contract.js +2 -0
- package/dist/seo/llms.d.ts +2 -0
- package/dist/seo/llms.js +17 -0
- package/dist/seo/load-env.d.ts +12 -0
- package/dist/seo/meta/contract.d.ts +2 -0
- package/dist/seo/meta/contract.js +2 -0
- package/dist/seo/og/route.d.ts +2 -0
- package/dist/seo/og/route.js +3 -0
- package/dist/seo/og.d.ts +2 -0
- package/dist/seo/og.js +4 -0
- package/dist/seo/pages/contract.d.ts +2 -0
- package/dist/seo/pages/contract.js +4 -0
- package/dist/seo/redirects.d.ts +2 -0
- package/dist/seo/redirects.js +6 -0
- package/dist/seo/register-sitemap-cli-impl.d.ts +6 -1
- package/dist/seo/register-sitemap-cli.d.ts +1 -1
- package/dist/seo/register-sitemap-cli.js +73 -66
- package/dist/seo/register-sitemap-request.d.ts +0 -1
- package/dist/seo/robots.d.ts +2 -0
- package/dist/seo/robots.js +4 -0
- package/dist/seo/routing.d.ts +0 -1
- package/dist/seo/safeJsonLd.d.ts +0 -1
- package/dist/seo/schema-filter.d.ts +0 -1
- package/dist/seo/server-api.d.ts +0 -1
- package/dist/seo/server.d.ts +0 -1
- package/dist/seo/server.js +10 -80
- package/dist/seo/sitemap.d.ts +2 -0
- package/dist/seo/sitemap.js +15 -0
- package/dist/seo/types.d.ts +0 -1
- package/dist/seo/withManagedMetadata.d.ts +0 -1
- package/dist/seo-meta/contract.d.ts +1 -60
- package/dist/seo-meta/contract.js +2 -41
- package/dist/seo-pages/contract.d.ts +1 -61
- package/dist/seo-pages/contract.js +4 -49
- package/dist/server/index.d.ts +0 -1
- package/dist/server/index.js +6 -32
- package/dist/server/mint-site-token.d.ts +0 -1
- package/dist/server/server-fetch.d.ts +0 -1
- package/dist/server-api-GJJQZVG7.js +8 -0
- package/dist/shared/build-entries.d.ts +53 -14
- package/dist/shared/clock.d.ts +20 -0
- package/dist/shared/color.d.ts +1 -39
- package/dist/shared/defer.d.ts +0 -1
- package/dist/shared/fetchWithRetry.d.ts +0 -1
- package/dist/shared/frame.d.ts +1 -9
- package/dist/shared/fresh-fetch.d.ts +0 -1
- package/dist/shared/glass.d.ts +0 -1
- package/dist/shared/identity.d.ts +0 -1
- package/dist/shared/markdown.d.ts +40 -0
- package/dist/shared/next-files.d.ts +0 -1
- package/dist/shared/page-leave.d.ts +0 -1
- package/dist/shared/publishCredential.d.ts +0 -1
- package/dist/shared/reporting-gate.d.ts +0 -1
- package/dist/shared/request-guards.d.ts +0 -1
- package/dist/shared/siteToken.d.ts +0 -1
- package/dist/shared/sonorFetch.d.ts +0 -1
- package/dist/shared/source-graph.d.ts +0 -1
- package/dist/shared/uuid.d.ts +0 -1
- package/dist/shared/version.d.ts +1 -2
- package/dist/shared/visual-viewport-gap.d.ts +0 -1
- package/dist/signal/SignalBridge.d.ts +0 -1
- package/dist/signal/SignalCore.d.ts +0 -1
- package/dist/signal/SignalExperiment.d.ts +0 -1
- package/dist/signal/index.d.ts +0 -1
- package/dist/signal/index.js +72 -44
- package/dist/signal/store.d.ts +0 -1
- package/dist/signal/types.d.ts +0 -1
- package/dist/site-config/index.d.ts +0 -1
- package/dist/site-config/index.js +2 -17
- package/dist/sitemap/discover.d.ts +0 -1
- package/dist/sitemap/index.d.ts +6 -1
- package/dist/sitemap/index.js +15 -553
- package/dist/sitemap/shared.d.ts +0 -1
- package/dist/sites/contract.d.ts +1 -51
- package/dist/sites/contract.js +3 -38
- package/dist/sites/normalize.d.ts +1 -36
- package/dist/sites/resolve.d.ts +0 -1
- package/dist/sites/site-param.d.ts +0 -1
- package/dist/slots/ManagedSlot.d.ts +0 -1
- package/dist/slots/contract.d.ts +1 -82
- package/dist/slots/contract.js +2 -41
- package/dist/slots/index.d.ts +0 -1
- package/dist/slots/index.js +5 -182
- package/dist/slots/revalidate.d.ts +0 -1
- package/dist/slots/server-api.d.ts +0 -1
- package/dist/socket-loader-R24ZSRSQ.js +12 -0
- package/dist/sync/AddToCalendar.d.ts +0 -1
- package/dist/sync/BookingWidget.d.ts +0 -1
- package/dist/sync/MeetingFormatStep.d.ts +0 -1
- package/dist/sync/api.d.ts +0 -1
- package/dist/sync/booking-flow.d.ts +0 -1
- package/dist/sync/index.d.ts +0 -1
- package/dist/sync/index.js +6 -64
- package/dist/sync/types.d.ts +0 -1
- package/dist/types.d.ts +0 -63
- package/dist/web-vitals.attribution-N2PCCF4Q.js +522 -0
- package/dist/website/BlocksPopup.d.ts +25 -0
- package/dist/website/PopupBlocks.d.ts +57 -0
- package/dist/website/SiteDesignReporter.d.ts +28 -0
- package/dist/website/cms/server.d.ts +2 -0
- package/dist/website/cms/server.js +5 -0
- package/dist/website/cms-server.d.ts +2 -0
- package/dist/website/cms.d.ts +2 -0
- package/dist/website/cms.js +5 -0
- package/dist/website/contract.d.ts +1 -0
- package/dist/website/contract.js +3 -0
- package/dist/website/cta-bar.d.ts +2 -0
- package/dist/website/cta-bar.js +5 -0
- package/dist/website/design.d.ts +165 -0
- package/dist/website/images/server.d.ts +2 -0
- package/dist/website/images/server.js +3 -0
- package/dist/website/images-server.d.ts +2 -0
- package/dist/website/images.d.ts +2 -0
- package/dist/website/images.js +6 -0
- package/dist/website/index.d.ts +17 -0
- package/dist/website/index.js +13 -0
- package/dist/website/landing/server.d.ts +2 -0
- package/dist/website/landing/server.js +3 -0
- package/dist/website/landing-server.d.ts +2 -0
- package/dist/website/landing.d.ts +2 -0
- package/dist/website/landing.js +3 -0
- package/dist/website/popups.d.ts +17 -0
- package/dist/website/popups.js +22 -0
- package/dist/website/slots/contract.d.ts +2 -0
- package/dist/website/slots/contract.js +2 -0
- package/dist/website/slots-contract.d.ts +2 -0
- package/dist/website/slots.d.ts +3 -0
- package/dist/website/slots.js +5 -0
- package/dist/writeLLMsTxt-UMHKGNRR.js +11 -0
- package/package.json +191 -161
- package/skills/site-kit/SKILL.md +9 -3
- package/dist/AnalyticsProvider-44PDLORZ.js +0 -34
- package/dist/AnalyticsProvider-44PDLORZ.js.map +0 -1
- package/dist/AnalyticsProvider-F6KHEAOX.mjs +0 -13
- package/dist/AnalyticsProvider-F6KHEAOX.mjs.map +0 -1
- package/dist/ArticleFaqSection-3KZ24MFS.js +0 -13
- package/dist/ArticleFaqSection-3KZ24MFS.js.map +0 -1
- package/dist/ArticleFaqSection-XZPXJVH4.mjs +0 -11
- package/dist/ArticleFaqSection-XZPXJVH4.mjs.map +0 -1
- package/dist/ArticleViewTracker-MGNVIHZ4.js +0 -54
- package/dist/ArticleViewTracker-MGNVIHZ4.js.map +0 -1
- package/dist/ArticleViewTracker-NI4UNSY7.mjs +0 -51
- package/dist/ArticleViewTracker-NI4UNSY7.mjs.map +0 -1
- package/dist/ChatWidget-XSALHDDW.mjs +0 -17
- package/dist/ChatWidget-XSALHDDW.mjs.map +0 -1
- package/dist/ChatWidget-YBXJRR2Z.js +0 -34
- package/dist/ChatWidget-YBXJRR2Z.js.map +0 -1
- package/dist/DatePicker-4WNKNNCV.mjs +0 -4
- package/dist/DatePicker-4WNKNNCV.mjs.map +0 -1
- package/dist/DatePicker-VPZR7RU3.js +0 -13
- package/dist/DatePicker-VPZR7RU3.js.map +0 -1
- package/dist/EngageWidget-DUEXPVOY.mjs +0 -13
- package/dist/EngageWidget-DUEXPVOY.mjs.map +0 -1
- package/dist/EngageWidget-MDCRS3BN.js +0 -22
- package/dist/EngageWidget-MDCRS3BN.js.map +0 -1
- package/dist/FileField-AXU6KBSV.js +0 -91
- package/dist/FileField-AXU6KBSV.js.map +0 -1
- package/dist/FileField-UTLGR5ZN.mjs +0 -85
- package/dist/FileField-UTLGR5ZN.mjs.map +0 -1
- package/dist/FormCelebration-7CBANVNS.mjs +0 -4
- package/dist/FormCelebration-7CBANVNS.mjs.map +0 -1
- package/dist/FormCelebration-O2O5S6JI.js +0 -13
- package/dist/FormCelebration-O2O5S6JI.js.map +0 -1
- package/dist/FormSpotlight-NWLCZMOT.mjs +0 -756
- package/dist/FormSpotlight-NWLCZMOT.mjs.map +0 -1
- package/dist/FormSpotlight-RR5KJDIH.js +0 -761
- package/dist/FormSpotlight-RR5KJDIH.js.map +0 -1
- package/dist/FormStage-GFNX4GLU.js +0 -422
- package/dist/FormStage-GFNX4GLU.js.map +0 -1
- package/dist/FormStage-V4XKLI6J.mjs +0 -420
- package/dist/FormStage-V4XKLI6J.mjs.map +0 -1
- package/dist/ManagedForm-4AD3LWSC.js +0 -25
- package/dist/ManagedForm-4AD3LWSC.js.map +0 -1
- package/dist/ManagedForm-4IWPG6AZ.mjs +0 -16
- package/dist/ManagedForm-4IWPG6AZ.mjs.map +0 -1
- package/dist/ManagedNewsletterForm-ARSY2VHC.mjs +0 -64
- package/dist/ManagedNewsletterForm-ARSY2VHC.mjs.map +0 -1
- package/dist/ManagedNewsletterForm-HJZNUABY.js +0 -66
- package/dist/ManagedNewsletterForm-HJZNUABY.js.map +0 -1
- package/dist/SignalCore-N2LKG4XN.mjs +0 -324
- package/dist/SignalCore-N2LKG4XN.mjs.map +0 -1
- package/dist/SignalCore-P2JUY2BO.js +0 -326
- package/dist/SignalCore-P2JUY2BO.js.map +0 -1
- package/dist/SitemapSync-KFY4PJ7G.js +0 -19
- package/dist/SitemapSync-KFY4PJ7G.js.map +0 -1
- package/dist/SitemapSync-UYDL7T4M.mjs +0 -10
- package/dist/SitemapSync-UYDL7T4M.mjs.map +0 -1
- package/dist/SitemapSync.d.ts.map +0 -1
- package/dist/admin-auth/index.d.ts.map +0 -1
- package/dist/admin-auth/index.js.map +0 -1
- package/dist/admin-auth/index.mjs +0 -0
- package/dist/admin-auth/index.mjs.map +0 -1
- package/dist/admin-auth/session.d.ts.map +0 -1
- package/dist/affiliates/AffiliatesWidget.d.ts.map +0 -1
- package/dist/affiliates/api.d.ts.map +0 -1
- package/dist/affiliates/index.d.ts.map +0 -1
- package/dist/affiliates/types.d.ts.map +0 -1
- package/dist/affiliates/useAffiliates.d.ts.map +0 -1
- package/dist/analytics/AnalyticsProvider.d.ts.map +0 -1
- package/dist/analytics/WebVitals.d.ts.map +0 -1
- package/dist/analytics/dispatch.d.ts.map +0 -1
- package/dist/analytics/index.d.ts.map +0 -1
- package/dist/analytics/index.js.map +0 -1
- package/dist/analytics/index.mjs +0 -15
- package/dist/analytics/index.mjs.map +0 -1
- package/dist/analytics/measurement-context.d.ts.map +0 -1
- package/dist/analytics/page-observation.d.ts.map +0 -1
- package/dist/analytics/send-gate.d.ts.map +0 -1
- package/dist/analytics/types.d.ts.map +0 -1
- package/dist/analytics/useContactTracking.d.ts.map +0 -1
- package/dist/api-D745LGGU.mjs +0 -183
- package/dist/api-XR5APCH3.js +0 -201
- package/dist/article-styles-DACUAOVT.mjs +0 -592
- package/dist/article-styles-DACUAOVT.mjs.map +0 -1
- package/dist/article-styles-JHHTNHOK.js +0 -595
- package/dist/article-styles-JHHTNHOK.js.map +0 -1
- package/dist/article-tables-EWXG4LNP.js +0 -17
- package/dist/article-tables-EWXG4LNP.js.map +0 -1
- package/dist/article-tables-OGE52LNT.mjs +0 -4
- package/dist/article-tables-OGE52LNT.mjs.map +0 -1
- package/dist/articles/Article.d.ts.map +0 -1
- package/dist/articles/ArticleFAQ.d.ts.map +0 -1
- package/dist/articles/ArticleFaqSection.d.ts.map +0 -1
- package/dist/articles/ArticleList.d.ts.map +0 -1
- package/dist/articles/ArticleViewTracker.d.ts.map +0 -1
- package/dist/articles/AuthorCard.d.ts.map +0 -1
- package/dist/articles/AuthorPage.d.ts.map +0 -1
- package/dist/articles/ClusterLandingPage.d.ts.map +0 -1
- package/dist/articles/ClusterNavigation.d.ts.map +0 -1
- package/dist/articles/ManagedNewsletterForm.d.ts.map +0 -1
- package/dist/articles/NewsletterShell.d.ts.map +0 -1
- package/dist/articles/NewsletterWidget.d.ts.map +0 -1
- package/dist/articles/PublicationLayout.d.ts.map +0 -1
- package/dist/articles/PublicationSidebar.d.ts.map +0 -1
- package/dist/articles/RelatedPosts.d.ts.map +0 -1
- package/dist/articles/ServiceCallout.d.ts.map +0 -1
- package/dist/articles/TableOfContents.d.ts.map +0 -1
- package/dist/articles/article-styles.d.ts.map +0 -1
- package/dist/articles/article-tables.d.ts.map +0 -1
- package/dist/articles/artwork.d.ts.map +0 -1
- package/dist/articles/author-schema.d.ts.map +0 -1
- package/dist/articles/author-social.d.ts.map +0 -1
- package/dist/articles/excerpt.d.ts.map +0 -1
- package/dist/articles/index.d.ts.map +0 -1
- package/dist/articles/index.js.map +0 -1
- package/dist/articles/index.mjs +0 -457
- package/dist/articles/index.mjs.map +0 -1
- package/dist/articles/news-sitemap.d.ts.map +0 -1
- package/dist/articles/processArticleHtml.d.ts.map +0 -1
- package/dist/articles/public-reads.d.ts.map +0 -1
- package/dist/articles/reading-time.d.ts.map +0 -1
- package/dist/articles/routes.d.ts.map +0 -1
- package/dist/articles/server-core.d.ts.map +0 -1
- package/dist/articles/server-ui.d.ts.map +0 -1
- package/dist/articles/server-ui.js.map +0 -1
- package/dist/articles/server-ui.mjs +0 -1098
- package/dist/articles/server-ui.mjs.map +0 -1
- package/dist/articles/server.d.ts.map +0 -1
- package/dist/articles/server.js.map +0 -1
- package/dist/articles/server.mjs +0 -11
- package/dist/articles/server.mjs.map +0 -1
- package/dist/articles/types.d.ts.map +0 -1
- package/dist/articles/widget-styles.d.ts.map +0 -1
- package/dist/brand/extract-brand-profile.d.ts.map +0 -1
- package/dist/chunk-2FEQ6TYD.mjs +0 -37
- package/dist/chunk-2FEQ6TYD.mjs.map +0 -1
- package/dist/chunk-34XL7TVH.js +0 -130
- package/dist/chunk-34XL7TVH.js.map +0 -1
- package/dist/chunk-3AOKYAZ2.js +0 -135
- package/dist/chunk-3AOKYAZ2.js.map +0 -1
- package/dist/chunk-3BLKKF67.mjs +0 -131
- package/dist/chunk-3BLKKF67.mjs.map +0 -1
- package/dist/chunk-3DWIYCQX.js +0 -30
- package/dist/chunk-3DWIYCQX.js.map +0 -1
- package/dist/chunk-3EAS4PAT.js +0 -141
- package/dist/chunk-3EAS4PAT.js.map +0 -1
- package/dist/chunk-3SDMJMN2.js +0 -71
- package/dist/chunk-3SDMJMN2.js.map +0 -1
- package/dist/chunk-3T2CVHFO.mjs +0 -453
- package/dist/chunk-3T2CVHFO.mjs.map +0 -1
- package/dist/chunk-42LLFAJQ.mjs +0 -932
- package/dist/chunk-42LLFAJQ.mjs.map +0 -1
- package/dist/chunk-4BEGKFMN.js +0 -133
- package/dist/chunk-4BEGKFMN.js.map +0 -1
- package/dist/chunk-4KAMU5HD.mjs +0 -16
- package/dist/chunk-4KAMU5HD.mjs.map +0 -1
- package/dist/chunk-4U5NCKQY.mjs +0 -39
- package/dist/chunk-4U5NCKQY.mjs.map +0 -1
- package/dist/chunk-4WCA2HM6.mjs +0 -57
- package/dist/chunk-4WCA2HM6.mjs.map +0 -1
- package/dist/chunk-54CARHDR.mjs +0 -95
- package/dist/chunk-54CARHDR.mjs.map +0 -1
- package/dist/chunk-55J2KE7D.js +0 -60
- package/dist/chunk-55J2KE7D.js.map +0 -1
- package/dist/chunk-5F2FIM5A.mjs +0 -135
- package/dist/chunk-5F2FIM5A.mjs.map +0 -1
- package/dist/chunk-5SANRSX3.mjs +0 -17
- package/dist/chunk-5SANRSX3.mjs.map +0 -1
- package/dist/chunk-5XFFUP6D.js +0 -100
- package/dist/chunk-5XFFUP6D.js.map +0 -1
- package/dist/chunk-5YA6SI4Z.mjs +0 -14279
- package/dist/chunk-5YVQWLSQ.mjs +0 -47
- package/dist/chunk-5YVQWLSQ.mjs.map +0 -1
- package/dist/chunk-5ZMTEK7U.js +0 -1430
- package/dist/chunk-5ZMTEK7U.js.map +0 -1
- package/dist/chunk-64BOVMXG.mjs +0 -68
- package/dist/chunk-64BOVMXG.mjs.map +0 -1
- package/dist/chunk-662YHKWW.mjs +0 -10
- package/dist/chunk-662YHKWW.mjs.map +0 -1
- package/dist/chunk-6C47333H.mjs +0 -55
- package/dist/chunk-6C47333H.mjs.map +0 -1
- package/dist/chunk-6EDVCUAG.mjs +0 -29
- package/dist/chunk-6EDVCUAG.mjs.map +0 -1
- package/dist/chunk-6FNFM7JL.js +0 -113
- package/dist/chunk-6FNFM7JL.js.map +0 -1
- package/dist/chunk-6OQYRVMI.js +0 -937
- package/dist/chunk-6OQYRVMI.js.map +0 -1
- package/dist/chunk-6PJTLBRR.mjs +0 -11
- package/dist/chunk-6PJTLBRR.mjs.map +0 -1
- package/dist/chunk-6XNEGG5B.mjs +0 -137
- package/dist/chunk-6XNEGG5B.mjs.map +0 -1
- package/dist/chunk-7F66Y4MA.mjs +0 -1073
- package/dist/chunk-7F66Y4MA.mjs.map +0 -1
- package/dist/chunk-7RLL67F3.js +0 -47
- package/dist/chunk-7RLL67F3.js.map +0 -1
- package/dist/chunk-7THQ4UW3.js +0 -69
- package/dist/chunk-7THQ4UW3.js.map +0 -1
- package/dist/chunk-A2HL22BO.mjs +0 -165
- package/dist/chunk-A2HL22BO.mjs.map +0 -1
- package/dist/chunk-AAZNH3MA.mjs +0 -23
- package/dist/chunk-AAZNH3MA.mjs.map +0 -1
- package/dist/chunk-AEN7EL6N.js +0 -161
- package/dist/chunk-AEN7EL6N.js.map +0 -1
- package/dist/chunk-AGIMH67E.mjs +0 -26
- package/dist/chunk-AGIMH67E.mjs.map +0 -1
- package/dist/chunk-AL4Z6VYF.js +0 -83
- package/dist/chunk-AL4Z6VYF.js.map +0 -1
- package/dist/chunk-AS2HUIDW.mjs +0 -16
- package/dist/chunk-AS2HUIDW.mjs.map +0 -1
- package/dist/chunk-B22WSN4L.mjs +0 -59
- package/dist/chunk-B22WSN4L.mjs.map +0 -1
- package/dist/chunk-B6QPCAEG.mjs +0 -128
- package/dist/chunk-B6QPCAEG.mjs.map +0 -1
- package/dist/chunk-BBBJHYPH.js +0 -19
- package/dist/chunk-BBBJHYPH.js.map +0 -1
- package/dist/chunk-BEXTDHO4.mjs +0 -57
- package/dist/chunk-BEXTDHO4.mjs.map +0 -1
- package/dist/chunk-BHZHWXER.js +0 -791
- package/dist/chunk-BHZHWXER.js.map +0 -1
- package/dist/chunk-BNKBRLJK.mjs +0 -75
- package/dist/chunk-BNKBRLJK.mjs.map +0 -1
- package/dist/chunk-BQP6JIE2.mjs +0 -28
- package/dist/chunk-BQP6JIE2.mjs.map +0 -1
- package/dist/chunk-BZR6RUIN.mjs +0 -128
- package/dist/chunk-BZR6RUIN.mjs.map +0 -1
- package/dist/chunk-C2CTLLIO.mjs +0 -72
- package/dist/chunk-C2CTLLIO.mjs.map +0 -1
- package/dist/chunk-C5VITBN7.mjs +0 -220
- package/dist/chunk-C5VITBN7.mjs.map +0 -1
- package/dist/chunk-CABEVWKJ.mjs +0 -25
- package/dist/chunk-CABEVWKJ.mjs.map +0 -1
- package/dist/chunk-CDRQYJUT.js +0 -355
- package/dist/chunk-CDRQYJUT.js.map +0 -1
- package/dist/chunk-CFRJ2MK5.mjs +0 -16
- package/dist/chunk-CFRJ2MK5.mjs.map +0 -1
- package/dist/chunk-CIM5W3UO.js +0 -26
- package/dist/chunk-CIM5W3UO.js.map +0 -1
- package/dist/chunk-CLO3K7PF.js +0 -19
- package/dist/chunk-CLO3K7PF.js.map +0 -1
- package/dist/chunk-CM4AVKXR.js +0 -533
- package/dist/chunk-CM4AVKXR.js.map +0 -1
- package/dist/chunk-CU6OGBKK.mjs +0 -68
- package/dist/chunk-CU6OGBKK.mjs.map +0 -1
- package/dist/chunk-CUNZAD46.js +0 -53
- package/dist/chunk-CUNZAD46.js.map +0 -1
- package/dist/chunk-CXAXZFFW.js +0 -157
- package/dist/chunk-CXAXZFFW.js.map +0 -1
- package/dist/chunk-D3WJMSTB.mjs +0 -132
- package/dist/chunk-D3WJMSTB.mjs.map +0 -1
- package/dist/chunk-DA7IANFG.mjs +0 -37
- package/dist/chunk-DA7IANFG.mjs.map +0 -1
- package/dist/chunk-DV2LJYFD.js +0 -14
- package/dist/chunk-DV2LJYFD.js.map +0 -1
- package/dist/chunk-DV5KVNA7.js +0 -45
- package/dist/chunk-DV5KVNA7.js.map +0 -1
- package/dist/chunk-DVYYGHSG.js +0 -285
- package/dist/chunk-DVYYGHSG.js.map +0 -1
- package/dist/chunk-DWZGW77V.mjs +0 -1669
- package/dist/chunk-DWZGW77V.mjs.map +0 -1
- package/dist/chunk-EDLNMGQC.mjs +0 -65
- package/dist/chunk-EDLNMGQC.mjs.map +0 -1
- package/dist/chunk-EHJANA5C.js +0 -231
- package/dist/chunk-EHJANA5C.js.map +0 -1
- package/dist/chunk-EMHSHAVW.js +0 -19
- package/dist/chunk-EMHSHAVW.js.map +0 -1
- package/dist/chunk-ESP5RMB7.js +0 -42
- package/dist/chunk-ESP5RMB7.js.map +0 -1
- package/dist/chunk-FCAHV5P3.mjs +0 -45
- package/dist/chunk-FCAHV5P3.mjs.map +0 -1
- package/dist/chunk-FPVYKSXE.mjs +0 -154
- package/dist/chunk-FPVYKSXE.mjs.map +0 -1
- package/dist/chunk-G2KGHIAP.js +0 -176
- package/dist/chunk-G2KGHIAP.js.map +0 -1
- package/dist/chunk-G6WF4G3E.js +0 -43
- package/dist/chunk-G6WF4G3E.js.map +0 -1
- package/dist/chunk-GCPPXUAI.js +0 -72
- package/dist/chunk-GCPPXUAI.js.map +0 -1
- package/dist/chunk-GFSQMK35.mjs +0 -127
- package/dist/chunk-GFSQMK35.mjs.map +0 -1
- package/dist/chunk-GIGUDKLS.mjs +0 -6
- package/dist/chunk-GIGUDKLS.mjs.map +0 -1
- package/dist/chunk-GSRT66PA.js +0 -80
- package/dist/chunk-GSRT66PA.js.map +0 -1
- package/dist/chunk-H4TSADY3.mjs +0 -761
- package/dist/chunk-H4TSADY3.mjs.map +0 -1
- package/dist/chunk-H6AU3WKF.js +0 -108
- package/dist/chunk-H6AU3WKF.js.map +0 -1
- package/dist/chunk-HGNSJXWT.js +0 -55
- package/dist/chunk-HGNSJXWT.js.map +0 -1
- package/dist/chunk-HIZJD7TU.mjs +0 -326
- package/dist/chunk-HIZJD7TU.mjs.map +0 -1
- package/dist/chunk-HPGPOUHU.mjs +0 -105
- package/dist/chunk-HPGPOUHU.mjs.map +0 -1
- package/dist/chunk-HXHDOIV6.js +0 -41
- package/dist/chunk-HXHDOIV6.js.map +0 -1
- package/dist/chunk-I7AZC5ZQ.js +0 -14285
- package/dist/chunk-IBJOGXQI.js +0 -33
- package/dist/chunk-IBJOGXQI.js.map +0 -1
- package/dist/chunk-IMWON7OV.mjs +0 -27
- package/dist/chunk-IMWON7OV.mjs.map +0 -1
- package/dist/chunk-IO65ROAO.js +0 -134
- package/dist/chunk-IO65ROAO.js.map +0 -1
- package/dist/chunk-IWSN4DGG.js +0 -132
- package/dist/chunk-IWSN4DGG.js.map +0 -1
- package/dist/chunk-J7QI3GDX.js +0 -12
- package/dist/chunk-J7QI3GDX.js.map +0 -1
- package/dist/chunk-JA77WXRE.js +0 -30
- package/dist/chunk-JA77WXRE.js.map +0 -1
- package/dist/chunk-JCDX37BY.js +0 -58
- package/dist/chunk-JCDX37BY.js.map +0 -1
- package/dist/chunk-JONWE26J.js +0 -81
- package/dist/chunk-JONWE26J.js.map +0 -1
- package/dist/chunk-JOYMIGR2.mjs +0 -24842
- package/dist/chunk-JP5WGL75.js +0 -62
- package/dist/chunk-JP5WGL75.js.map +0 -1
- package/dist/chunk-JS75ORH7.js +0 -24860
- package/dist/chunk-JSXLTZUP.mjs +0 -255
- package/dist/chunk-JSXLTZUP.mjs.map +0 -1
- package/dist/chunk-JX3PO2MH.js +0 -53
- package/dist/chunk-JX3PO2MH.js.map +0 -1
- package/dist/chunk-KHPJ3CEL.js +0 -72
- package/dist/chunk-KHPJ3CEL.js.map +0 -1
- package/dist/chunk-KP5BFPGT.js +0 -44
- package/dist/chunk-KP5BFPGT.js.map +0 -1
- package/dist/chunk-KR7ATPAN.js +0 -52
- package/dist/chunk-KR7ATPAN.js.map +0 -1
- package/dist/chunk-KZVSB5WE.mjs +0 -21
- package/dist/chunk-KZVSB5WE.mjs.map +0 -1
- package/dist/chunk-LVGSOW2F.js +0 -32
- package/dist/chunk-LVGSOW2F.js.map +0 -1
- package/dist/chunk-M2N7NY3V.js +0 -103
- package/dist/chunk-M2N7NY3V.js.map +0 -1
- package/dist/chunk-MDQLON5R.mjs +0 -101
- package/dist/chunk-MDQLON5R.mjs.map +0 -1
- package/dist/chunk-MHKD34B4.js +0 -1677
- package/dist/chunk-MHKD34B4.js.map +0 -1
- package/dist/chunk-MLVHVKFT.mjs +0 -148
- package/dist/chunk-MLVHVKFT.mjs.map +0 -1
- package/dist/chunk-MU3D5IO7.mjs +0 -283
- package/dist/chunk-MU3D5IO7.mjs.map +0 -1
- package/dist/chunk-MU7DTEUF.mjs +0 -77
- package/dist/chunk-MU7DTEUF.mjs.map +0 -1
- package/dist/chunk-MVHR77V4.js +0 -205
- package/dist/chunk-MVHR77V4.js.map +0 -1
- package/dist/chunk-MXJOKOFK.mjs +0 -51
- package/dist/chunk-MXJOKOFK.mjs.map +0 -1
- package/dist/chunk-NBOBOYMT.js +0 -52
- package/dist/chunk-NBOBOYMT.js.map +0 -1
- package/dist/chunk-NE6QGHFT.mjs +0 -240
- package/dist/chunk-NE6QGHFT.mjs.map +0 -1
- package/dist/chunk-NH2P27MA.js +0 -27
- package/dist/chunk-NH2P27MA.js.map +0 -1
- package/dist/chunk-NN2YE5WT.js +0 -325
- package/dist/chunk-NNZDWY3L.mjs +0 -323
- package/dist/chunk-NSWO43XW.mjs +0 -39
- package/dist/chunk-NSWO43XW.mjs.map +0 -1
- package/dist/chunk-NYXENHD2.mjs +0 -96
- package/dist/chunk-NYXENHD2.mjs.map +0 -1
- package/dist/chunk-O5GHP7UO.js +0 -142
- package/dist/chunk-O5GHP7UO.js.map +0 -1
- package/dist/chunk-OBKS3CPP.mjs +0 -50
- package/dist/chunk-OBKS3CPP.mjs.map +0 -1
- package/dist/chunk-OFBEBMXN.mjs +0 -8014
- package/dist/chunk-OFBEBMXN.mjs.map +0 -1
- package/dist/chunk-OGNX6JT4.js +0 -222
- package/dist/chunk-OGNX6JT4.js.map +0 -1
- package/dist/chunk-OIPG3EGM.js +0 -771
- package/dist/chunk-OIPG3EGM.js.map +0 -1
- package/dist/chunk-OSU4QA5M.js +0 -260
- package/dist/chunk-OSU4QA5M.js.map +0 -1
- package/dist/chunk-OY3PDIB3.js +0 -106
- package/dist/chunk-OY3PDIB3.js.map +0 -1
- package/dist/chunk-P4Y75QSU.js +0 -19
- package/dist/chunk-P4Y75QSU.js.map +0 -1
- package/dist/chunk-PENNTSJE.mjs +0 -99
- package/dist/chunk-PENNTSJE.mjs.map +0 -1
- package/dist/chunk-PFDRQJKJ.js +0 -1079
- package/dist/chunk-PFDRQJKJ.js.map +0 -1
- package/dist/chunk-PGYOBEPL.mjs +0 -150
- package/dist/chunk-PGYOBEPL.mjs.map +0 -1
- package/dist/chunk-PIPGH7GA.js +0 -158
- package/dist/chunk-PIPGH7GA.js.map +0 -1
- package/dist/chunk-PRAHDLKT.js +0 -67
- package/dist/chunk-PRAHDLKT.js.map +0 -1
- package/dist/chunk-PURI56RE.js +0 -8
- package/dist/chunk-PURI56RE.js.map +0 -1
- package/dist/chunk-QAQTDHHT.mjs +0 -1102
- package/dist/chunk-QAQTDHHT.mjs.map +0 -1
- package/dist/chunk-QCS7NWMA.js +0 -161
- package/dist/chunk-QCS7NWMA.js.map +0 -1
- package/dist/chunk-QRHVMTHF.mjs +0 -94
- package/dist/chunk-QRHVMTHF.mjs.map +0 -1
- package/dist/chunk-QZF5NTXQ.mjs +0 -28
- package/dist/chunk-QZF5NTXQ.mjs.map +0 -1
- package/dist/chunk-R5F2JQVX.mjs +0 -41
- package/dist/chunk-R5F2JQVX.mjs.map +0 -1
- package/dist/chunk-RC4WWQXR.js +0 -47
- package/dist/chunk-RC4WWQXR.js.map +0 -1
- package/dist/chunk-RCB6HEHM.mjs +0 -349
- package/dist/chunk-RCB6HEHM.mjs.map +0 -1
- package/dist/chunk-RI6DFQCA.js +0 -539
- package/dist/chunk-RI6DFQCA.js.map +0 -1
- package/dist/chunk-RLUNEEGM.js +0 -336
- package/dist/chunk-RLUNEEGM.js.map +0 -1
- package/dist/chunk-RMDH2HMW.js +0 -108
- package/dist/chunk-RMDH2HMW.js.map +0 -1
- package/dist/chunk-RQROZLH3.js +0 -1153
- package/dist/chunk-RQROZLH3.js.map +0 -1
- package/dist/chunk-SFMNUVDN.mjs +0 -49
- package/dist/chunk-SFMNUVDN.mjs.map +0 -1
- package/dist/chunk-SG7CWD2R.js +0 -138
- package/dist/chunk-SG7CWD2R.js.map +0 -1
- package/dist/chunk-SHLWA6JY.mjs +0 -26
- package/dist/chunk-SHLWA6JY.mjs.map +0 -1
- package/dist/chunk-SNAQBZPT.js +0 -68
- package/dist/chunk-SNAQBZPT.js.map +0 -1
- package/dist/chunk-SUGBIEYQ.js +0 -195
- package/dist/chunk-SUGBIEYQ.js.map +0 -1
- package/dist/chunk-SVCKJ5KH.mjs +0 -193
- package/dist/chunk-SVCKJ5KH.mjs.map +0 -1
- package/dist/chunk-SWIKKSKL.js +0 -19
- package/dist/chunk-SWIKKSKL.js.map +0 -1
- package/dist/chunk-TBXWJJGT.js +0 -468
- package/dist/chunk-TBXWJJGT.js.map +0 -1
- package/dist/chunk-THO4NS6Z.mjs +0 -1416
- package/dist/chunk-THO4NS6Z.mjs.map +0 -1
- package/dist/chunk-TMVKRQGJ.mjs +0 -64
- package/dist/chunk-TMVKRQGJ.mjs.map +0 -1
- package/dist/chunk-TPEPAHU5.mjs +0 -525
- package/dist/chunk-TPEPAHU5.mjs.map +0 -1
- package/dist/chunk-TST2IKYO.js +0 -264
- package/dist/chunk-TST2IKYO.js.map +0 -1
- package/dist/chunk-TULCHQX2.js +0 -29
- package/dist/chunk-TULCHQX2.js.map +0 -1
- package/dist/chunk-U577ITSA.js +0 -23
- package/dist/chunk-U577ITSA.js.map +0 -1
- package/dist/chunk-UCMMIGC6.mjs +0 -156
- package/dist/chunk-UCMMIGC6.mjs.map +0 -1
- package/dist/chunk-UCQDE5UH.mjs +0 -102
- package/dist/chunk-UCQDE5UH.mjs.map +0 -1
- package/dist/chunk-UHYRVALN.mjs +0 -98
- package/dist/chunk-UHYRVALN.mjs.map +0 -1
- package/dist/chunk-UO6KTHBQ.mjs +0 -125
- package/dist/chunk-UO6KTHBQ.mjs.map +0 -1
- package/dist/chunk-UZKXOZHR.js +0 -23
- package/dist/chunk-UZKXOZHR.js.map +0 -1
- package/dist/chunk-VA2O5OSV.mjs +0 -21
- package/dist/chunk-VA2O5OSV.mjs.map +0 -1
- package/dist/chunk-VIGRGMWR.mjs +0 -229
- package/dist/chunk-VIGRGMWR.mjs.map +0 -1
- package/dist/chunk-VJMPIRSD.js +0 -31
- package/dist/chunk-VJMPIRSD.js.map +0 -1
- package/dist/chunk-VJTKIKZY.mjs +0 -782
- package/dist/chunk-VJTKIKZY.mjs.map +0 -1
- package/dist/chunk-VQL7XDIY.mjs +0 -43
- package/dist/chunk-VQL7XDIY.mjs.map +0 -1
- package/dist/chunk-VS67QHNX.mjs +0 -34
- package/dist/chunk-VS67QHNX.mjs.map +0 -1
- package/dist/chunk-VUAGR6VL.js +0 -483
- package/dist/chunk-VUAGR6VL.js.map +0 -1
- package/dist/chunk-WRRVYPMY.mjs +0 -535
- package/dist/chunk-WRRVYPMY.mjs.map +0 -1
- package/dist/chunk-WS7MH3GD.js +0 -40
- package/dist/chunk-WS7MH3GD.js.map +0 -1
- package/dist/chunk-WSPGXSBU.mjs +0 -202
- package/dist/chunk-WSPGXSBU.mjs.map +0 -1
- package/dist/chunk-XEOIGCUE.mjs +0 -480
- package/dist/chunk-XEOIGCUE.mjs.map +0 -1
- package/dist/chunk-Y2CP5J6Q.js +0 -116
- package/dist/chunk-Y2CP5J6Q.js.map +0 -1
- package/dist/chunk-YBKALLBH.js +0 -46
- package/dist/chunk-YBKALLBH.js.map +0 -1
- package/dist/chunk-YMZNEDFP.js +0 -39
- package/dist/chunk-YMZNEDFP.js.map +0 -1
- package/dist/chunk-YPGUV6BT.mjs +0 -30
- package/dist/chunk-YPGUV6BT.mjs.map +0 -1
- package/dist/chunk-YU7QZ3PP.mjs +0 -45
- package/dist/chunk-YU7QZ3PP.mjs.map +0 -1
- package/dist/chunk-YVJASVVK.js +0 -97
- package/dist/chunk-YVJASVVK.js.map +0 -1
- package/dist/chunk-YZJ22HUQ.js +0 -29
- package/dist/chunk-YZJ22HUQ.js.map +0 -1
- package/dist/chunk-Z2URIOKG.mjs +0 -36
- package/dist/chunk-Z2URIOKG.mjs.map +0 -1
- package/dist/chunk-ZN4HBK5C.mjs +0 -17
- package/dist/chunk-ZN4HBK5C.mjs.map +0 -1
- package/dist/chunk-ZVBLXXNJ.mjs +0 -53
- package/dist/chunk-ZVBLXXNJ.mjs.map +0 -1
- package/dist/chunk-ZXC56JS3.js +0 -8071
- package/dist/chunk-ZXC56JS3.js.map +0 -1
- package/dist/chunk-ZZQAGCSI.mjs +0 -43
- package/dist/chunk-ZZQAGCSI.mjs.map +0 -1
- package/dist/cli/agent/checks.d.ts +0 -96
- package/dist/cli/agent/checks.d.ts.map +0 -1
- package/dist/cli/agent/context.d.ts +0 -50
- package/dist/cli/agent/context.d.ts.map +0 -1
- package/dist/cli/agent/envelope.d.ts +0 -98
- package/dist/cli/agent/envelope.d.ts.map +0 -1
- package/dist/cli/agent/errors.d.ts +0 -36
- package/dist/cli/agent/errors.d.ts.map +0 -1
- package/dist/cli/agent/output.d.ts +0 -41
- package/dist/cli/agent/output.d.ts.map +0 -1
- package/dist/cli/agent/ssr-bailout.d.ts +0 -27
- package/dist/cli/agent/ssr-bailout.d.ts.map +0 -1
- package/dist/cli/api/sonor.d.ts +0 -39
- package/dist/cli/api/sonor.d.ts.map +0 -1
- package/dist/cli/codemod/diff.d.ts +0 -14
- package/dist/cli/codemod/diff.d.ts.map +0 -1
- package/dist/cli/codemod/engine.d.ts +0 -26
- package/dist/cli/codemod/engine.d.ts.map +0 -1
- package/dist/cli/codemod/transforms.d.ts +0 -31
- package/dist/cli/codemod/transforms.d.ts.map +0 -1
- package/dist/cli/commands/api-routes.d.ts +0 -13
- package/dist/cli/commands/api-routes.d.ts.map +0 -1
- package/dist/cli/commands/codemod.d.ts +0 -21
- package/dist/cli/commands/codemod.d.ts.map +0 -1
- package/dist/cli/commands/doctor.d.ts +0 -27
- package/dist/cli/commands/doctor.d.ts.map +0 -1
- package/dist/cli/commands/faqs.d.ts +0 -16
- package/dist/cli/commands/faqs.d.ts.map +0 -1
- package/dist/cli/commands/geo.d.ts +0 -18
- package/dist/cli/commands/geo.d.ts.map +0 -1
- package/dist/cli/commands/images.d.ts +0 -85
- package/dist/cli/commands/images.d.ts.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -21
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/install.d.ts +0 -15
- package/dist/cli/commands/install.d.ts.map +0 -1
- package/dist/cli/commands/locations.d.ts +0 -55
- package/dist/cli/commands/locations.d.ts.map +0 -1
- package/dist/cli/commands/manifest.d.ts +0 -17
- package/dist/cli/commands/manifest.d.ts.map +0 -1
- package/dist/cli/commands/migrate.d.ts +0 -19
- package/dist/cli/commands/migrate.d.ts.map +0 -1
- package/dist/cli/commands/next16.d.ts +0 -10
- package/dist/cli/commands/next16.d.ts.map +0 -1
- package/dist/cli/commands/og.d.ts +0 -117
- package/dist/cli/commands/og.d.ts.map +0 -1
- package/dist/cli/commands/scaffold.d.ts +0 -22
- package/dist/cli/commands/scaffold.d.ts.map +0 -1
- package/dist/cli/commands/scan.d.ts +0 -18
- package/dist/cli/commands/scan.d.ts.map +0 -1
- package/dist/cli/commands/setup.d.ts +0 -35
- package/dist/cli/commands/setup.d.ts.map +0 -1
- package/dist/cli/commands/sync.d.ts +0 -22
- package/dist/cli/commands/sync.d.ts.map +0 -1
- package/dist/cli/commands/upgrade.d.ts +0 -15
- package/dist/cli/commands/upgrade.d.ts.map +0 -1
- package/dist/cli/commands/verify.d.ts +0 -22
- package/dist/cli/commands/verify.d.ts.map +0 -1
- package/dist/cli/config.d.ts +0 -31
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/generators/index.d.ts +0 -60
- package/dist/cli/generators/index.d.ts.map +0 -1
- package/dist/cli/index.d.ts +0 -15
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -32904
- package/dist/cli/index.mjs +0 -32872
- package/dist/cli/migrator/index.d.ts +0 -92
- package/dist/cli/migrator/index.d.ts.map +0 -1
- package/dist/cli/scanner/index.d.ts +0 -129
- package/dist/cli/scanner/index.d.ts.map +0 -1
- package/dist/cli/state.d.ts +0 -7
- package/dist/cli/state.d.ts.map +0 -1
- package/dist/client/SiteKitCredential.d.ts.map +0 -1
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js.map +0 -1
- package/dist/client/index.mjs +0 -27
- package/dist/client/index.mjs.map +0 -1
- package/dist/cms/CmsPage.d.ts.map +0 -1
- package/dist/cms/CmsPreview.d.ts.map +0 -1
- package/dist/cms/CmsSection.d.ts.map +0 -1
- package/dist/cms/PortableTextRenderer.d.ts.map +0 -1
- package/dist/cms/index.d.ts.map +0 -1
- package/dist/cms/index.js.map +0 -1
- package/dist/cms/index.mjs +0 -389
- package/dist/cms/index.mjs.map +0 -1
- package/dist/cms/sanity-image.d.ts.map +0 -1
- package/dist/cms/sections/CtaSection.d.ts.map +0 -1
- package/dist/cms/sections/CustomSection.d.ts.map +0 -1
- package/dist/cms/sections/FaqSection.d.ts.map +0 -1
- package/dist/cms/sections/FormSection.d.ts.map +0 -1
- package/dist/cms/sections/GallerySection.d.ts.map +0 -1
- package/dist/cms/sections/HeroSection.d.ts.map +0 -1
- package/dist/cms/sections/RichTextSection.d.ts.map +0 -1
- package/dist/cms/sections/TestimonialsSection.d.ts.map +0 -1
- package/dist/cms/sections/index.d.ts.map +0 -1
- package/dist/cms/server-api.d.ts.map +0 -1
- package/dist/cms/server.d.ts.map +0 -1
- package/dist/cms/server.js.map +0 -1
- package/dist/cms/server.mjs +0 -5
- package/dist/cms/server.mjs.map +0 -1
- package/dist/cms/types.d.ts.map +0 -1
- package/dist/commerce/CalendarView.d.ts.map +0 -1
- package/dist/commerce/CheckoutForm.d.ts.map +0 -1
- package/dist/commerce/EventCalendar.d.ts.map +0 -1
- package/dist/commerce/EventCheckout.d.ts.map +0 -1
- package/dist/commerce/EventEmbed.d.ts.map +0 -1
- package/dist/commerce/EventModal.d.ts.map +0 -1
- package/dist/commerce/EventTile.d.ts.map +0 -1
- package/dist/commerce/EventsAgenda.d.ts.map +0 -1
- package/dist/commerce/EventsWidget.d.ts.map +0 -1
- package/dist/commerce/OfferingCard.d.ts.map +0 -1
- package/dist/commerce/OfferingList.d.ts.map +0 -1
- package/dist/commerce/ProductDetail.d.ts.map +0 -1
- package/dist/commerce/ProductEmbed.d.ts.map +0 -1
- package/dist/commerce/ProductGrid.d.ts.map +0 -1
- package/dist/commerce/ProductPage.d.ts.map +0 -1
- package/dist/commerce/RegistrationForm.d.ts.map +0 -1
- package/dist/commerce/SizeChart.d.ts.map +0 -1
- package/dist/commerce/UpcomingEvents.d.ts.map +0 -1
- package/dist/commerce/api.d.ts.map +0 -1
- package/dist/commerce/events-extras.d.ts.map +0 -1
- package/dist/commerce/index.d.ts.map +0 -1
- package/dist/commerce/index.js.map +0 -1
- package/dist/commerce/index.mjs +0 -16
- package/dist/commerce/index.mjs.map +0 -1
- package/dist/commerce/server.d.ts.map +0 -1
- package/dist/commerce/server.js.map +0 -1
- package/dist/commerce/server.mjs +0 -237
- package/dist/commerce/server.mjs.map +0 -1
- package/dist/commerce/types.d.ts.map +0 -1
- package/dist/commerce/useEventModal.d.ts.map +0 -1
- package/dist/commerce/utils.d.ts.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/index.mjs +0 -116
- package/dist/config/index.mjs.map +0 -1
- package/dist/cta-bar/CtaBar.d.ts.map +0 -1
- package/dist/cta-bar/CtaBarBehavior.d.ts.map +0 -1
- package/dist/cta-bar/client.d.ts.map +0 -1
- package/dist/cta-bar/client.js.map +0 -1
- package/dist/cta-bar/client.mjs +0 -6
- package/dist/cta-bar/client.mjs.map +0 -1
- package/dist/cta-bar/index.d.ts.map +0 -1
- package/dist/cta-bar/index.js.map +0 -1
- package/dist/cta-bar/index.mjs +0 -221
- package/dist/cta-bar/index.mjs.map +0 -1
- package/dist/cta-bar/styles.d.ts.map +0 -1
- package/dist/discover-LPN55L5B.js +0 -21
- package/dist/discover-LPN55L5B.js.map +0 -1
- package/dist/discover-QGA6QFSR.mjs +0 -4
- package/dist/discover-QGA6QFSR.mjs.map +0 -1
- package/dist/engage/ChatWidget.d.ts.map +0 -1
- package/dist/engage/DesignRenderer.d.ts.map +0 -1
- package/dist/engage/EchoUiActions.d.ts.map +0 -1
- package/dist/engage/EngageWidget.d.ts.map +0 -1
- package/dist/engage/brand-color.d.ts.map +0 -1
- package/dist/engage/chat-messages.d.ts.map +0 -1
- package/dist/engage/echo-config.d.ts.map +0 -1
- package/dist/engage/element-rules.d.ts.map +0 -1
- package/dist/engage/index.d.ts.map +0 -1
- package/dist/engage/index.js.map +0 -1
- package/dist/engage/index.mjs +0 -51
- package/dist/engage/index.mjs.map +0 -1
- package/dist/engage/launcher-placement.d.ts.map +0 -1
- package/dist/engage/socket-loader.d.ts.map +0 -1
- package/dist/engage/types.d.ts.map +0 -1
- package/dist/fleet/FleetHeartbeat.d.ts.map +0 -1
- package/dist/fleet/contract.d.ts.map +0 -1
- package/dist/fleet/contract.js.map +0 -1
- package/dist/fleet/contract.mjs +0 -4
- package/dist/fleet/contract.mjs.map +0 -1
- package/dist/fleet/heartbeat.d.ts.map +0 -1
- package/dist/fleet/index.d.ts.map +0 -1
- package/dist/fleet/index.js.map +0 -1
- package/dist/fleet/index.mjs +0 -12
- package/dist/fleet/index.mjs.map +0 -1
- package/dist/forms/DatePicker.d.ts.map +0 -1
- package/dist/forms/FileField.d.ts.map +0 -1
- package/dist/forms/FormCelebration.d.ts.map +0 -1
- package/dist/forms/FormClient.d.ts.map +0 -1
- package/dist/forms/FormEnhancer.d.ts.map +0 -1
- package/dist/forms/FormField.d.ts.map +0 -1
- package/dist/forms/FormSpotlight.d.ts.map +0 -1
- package/dist/forms/FormStage.d.ts.map +0 -1
- package/dist/forms/HoneypotField.d.ts.map +0 -1
- package/dist/forms/ManagedForm.d.ts.map +0 -1
- package/dist/forms/ServerForm.d.ts.map +0 -1
- package/dist/forms/StaticForm.d.ts.map +0 -1
- package/dist/forms/contract.d.ts.map +0 -1
- package/dist/forms/contract.js.map +0 -1
- package/dist/forms/contract.mjs +0 -4
- package/dist/forms/contract.mjs.map +0 -1
- package/dist/forms/defaultSuccessMessage.d.ts.map +0 -1
- package/dist/forms/delight.d.ts.map +0 -1
- package/dist/forms/experience-chrome.d.ts.map +0 -1
- package/dist/forms/experience-plan.d.ts.map +0 -1
- package/dist/forms/field-controls.d.ts.map +0 -1
- package/dist/forms/field-interactions.d.ts.map +0 -1
- package/dist/forms/field-rules.d.ts.map +0 -1
- package/dist/forms/form-values.d.ts.map +0 -1
- package/dist/forms/formsApi.d.ts.map +0 -1
- package/dist/forms/ga4-identity.d.ts.map +0 -1
- package/dist/forms/index.d.ts.map +0 -1
- package/dist/forms/index.js.map +0 -1
- package/dist/forms/index.mjs +0 -341
- package/dist/forms/index.mjs.map +0 -1
- package/dist/forms/normalize-config.d.ts.map +0 -1
- package/dist/forms/recaptcha-warmup.d.ts.map +0 -1
- package/dist/forms/recaptcha.d.ts.map +0 -1
- package/dist/forms/server.d.ts.map +0 -1
- package/dist/forms/server.js.map +0 -1
- package/dist/forms/server.mjs +0 -61
- package/dist/forms/server.mjs.map +0 -1
- package/dist/forms/static.d.ts.map +0 -1
- package/dist/forms/static.js.map +0 -1
- package/dist/forms/static.mjs +0 -8
- package/dist/forms/static.mjs.map +0 -1
- package/dist/forms/submitForm.d.ts.map +0 -1
- package/dist/forms/tracking-session.d.ts.map +0 -1
- package/dist/forms/types.d.ts.map +0 -1
- package/dist/forms/useForm.d.ts.map +0 -1
- package/dist/forms/useFormTracking.d.ts.map +0 -1
- package/dist/images/ManagedFavicon.d.ts.map +0 -1
- package/dist/images/ManagedImage.d.ts.map +0 -1
- package/dist/images/api.d.ts.map +0 -1
- package/dist/images/index.d.ts.map +0 -1
- package/dist/images/index.js.map +0 -1
- package/dist/images/index.mjs +0 -8
- package/dist/images/index.mjs.map +0 -1
- package/dist/images/server.d.ts.map +0 -1
- package/dist/images/server.js.map +0 -1
- package/dist/images/server.mjs +0 -4
- package/dist/images/server.mjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -173
- package/dist/index.mjs.map +0 -1
- package/dist/landing/LandingPage.d.ts.map +0 -1
- package/dist/landing/contract.d.ts.map +0 -1
- package/dist/landing/index.d.ts.map +0 -1
- package/dist/landing/index.js.map +0 -1
- package/dist/landing/index.mjs +0 -5
- package/dist/landing/index.mjs.map +0 -1
- package/dist/landing/metadata.d.ts.map +0 -1
- package/dist/landing/server.d.ts.map +0 -1
- package/dist/landing/server.js.map +0 -1
- package/dist/landing/server.mjs +0 -4
- package/dist/landing/server.mjs.map +0 -1
- package/dist/layout/SiteKitClientProviders.d.ts.map +0 -1
- package/dist/layout/SiteKitLayout.d.ts.map +0 -1
- package/dist/layout/SpeculationRules.d.ts.map +0 -1
- package/dist/layout/client.d.ts.map +0 -1
- package/dist/layout/client.js.map +0 -1
- package/dist/layout/client.mjs +0 -19
- package/dist/layout/client.mjs.map +0 -1
- package/dist/layout/index.d.ts.map +0 -1
- package/dist/layout/index.js.map +0 -1
- package/dist/layout/index.mjs +0 -106
- package/dist/layout/index.mjs.map +0 -1
- package/dist/layout/types.d.ts.map +0 -1
- package/dist/lib-6HOOMENJ.js +0 -28
- package/dist/lib-BGAWCSUH.js +0 -31
- package/dist/lib-R7IQ4ZHE.mjs +0 -3
- package/dist/lib-RSDMEKDQ.mjs +0 -4
- package/dist/llms/AEOComponents.d.ts.map +0 -1
- package/dist/llms/SpeakableSchema.d.ts.map +0 -1
- package/dist/llms/aiRobots.d.ts.map +0 -1
- package/dist/llms/api.d.ts.map +0 -1
- package/dist/llms/client.d.ts.map +0 -1
- package/dist/llms/client.js.map +0 -1
- package/dist/llms/client.mjs +0 -5
- package/dist/llms/client.mjs.map +0 -1
- package/dist/llms/contract.d.ts.map +0 -1
- package/dist/llms/contract.js.map +0 -1
- package/dist/llms/contract.mjs +0 -4
- package/dist/llms/contract.mjs.map +0 -1
- package/dist/llms/discovery-headers.d.ts.map +0 -1
- package/dist/llms/generateLLMsTxt.d.ts.map +0 -1
- package/dist/llms/handlers.d.ts.map +0 -1
- package/dist/llms/humanize-industry.d.ts.map +0 -1
- package/dist/llms/index.d.ts.map +0 -1
- package/dist/llms/index.js.map +0 -1
- package/dist/llms/index.mjs +0 -286
- package/dist/llms/index.mjs.map +0 -1
- package/dist/llms/links.d.ts.map +0 -1
- package/dist/llms/revalidate.d.ts.map +0 -1
- package/dist/llms/seo-revalidate.d.ts.map +0 -1
- package/dist/llms/sourcedFacts.d.ts.map +0 -1
- package/dist/llms/types.d.ts.map +0 -1
- package/dist/llms/wiring.d.ts +0 -103
- package/dist/llms/wiring.d.ts.map +0 -1
- package/dist/llms/writeLLMsTxt.d.ts.map +0 -1
- package/dist/manifest/index.d.ts.map +0 -1
- package/dist/manifest/index.js.map +0 -1
- package/dist/manifest/index.mjs +0 -83
- package/dist/manifest/index.mjs.map +0 -1
- package/dist/maps/GoogleMap.d.ts.map +0 -1
- package/dist/maps/NeighborhoodMap.d.ts.map +0 -1
- package/dist/maps/api.d.ts.map +0 -1
- package/dist/maps/index.d.ts.map +0 -1
- package/dist/maps/index.js.map +0 -1
- package/dist/maps/index.mjs +0 -361
- package/dist/maps/index.mjs.map +0 -1
- package/dist/maps/types.d.ts.map +0 -1
- package/dist/mcp/WebMcpTools.d.ts.map +0 -1
- package/dist/mcp/client.d.ts.map +0 -1
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/client.mjs +0 -129
- package/dist/mcp/client.mjs.map +0 -1
- package/dist/mcp/declarative.d.ts.map +0 -1
- package/dist/mcp/handlers.d.ts.map +0 -1
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/index.mjs +0 -509
- package/dist/mcp/index.mjs.map +0 -1
- package/dist/mcp/protocol.d.ts.map +0 -1
- package/dist/mcp/serverCard.d.ts.map +0 -1
- package/dist/mcp/transport.d.ts.map +0 -1
- package/dist/mcp/transport.js.map +0 -1
- package/dist/mcp/transport.mjs +0 -123
- package/dist/mcp/transport.mjs.map +0 -1
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/motion/CountUp.d.ts.map +0 -1
- package/dist/motion/Parallax.d.ts.map +0 -1
- package/dist/motion/Reveal.d.ts.map +0 -1
- package/dist/motion/ScrollScene.d.ts.map +0 -1
- package/dist/motion/engine.d.ts.map +0 -1
- package/dist/motion/failsafe.d.ts.map +0 -1
- package/dist/motion/gsap.d.ts.map +0 -1
- package/dist/motion/gsap.js.map +0 -1
- package/dist/motion/gsap.mjs +0 -220
- package/dist/motion/gsap.mjs.map +0 -1
- package/dist/motion/index.d.ts.map +0 -1
- package/dist/motion/index.js.map +0 -1
- package/dist/motion/index.mjs +0 -209
- package/dist/motion/index.mjs.map +0 -1
- package/dist/motion/three.d.ts.map +0 -1
- package/dist/motion/three.js.map +0 -1
- package/dist/motion/three.mjs +0 -145
- package/dist/motion/three.mjs.map +0 -1
- package/dist/og/config.d.ts.map +0 -1
- package/dist/og/contrast.d.ts.map +0 -1
- package/dist/og/index.d.ts.map +0 -1
- package/dist/og/index.js.map +0 -1
- package/dist/og/index.mjs +0 -6
- package/dist/og/index.mjs.map +0 -1
- package/dist/og/pages.d.ts.map +0 -1
- package/dist/og/route-copy.d.ts +0 -34
- package/dist/og/route-copy.d.ts.map +0 -1
- package/dist/og/route-fit.d.ts.map +0 -1
- package/dist/og/route.d.ts.map +0 -1
- package/dist/og/route.js.map +0 -1
- package/dist/og/route.mjs +0 -239
- package/dist/og/route.mjs.map +0 -1
- package/dist/og/template.d.ts.map +0 -1
- package/dist/og/wiring.d.ts +0 -100
- package/dist/og/wiring.d.ts.map +0 -1
- package/dist/portfolio/contract.d.ts.map +0 -1
- package/dist/portfolio/contract.js.map +0 -1
- package/dist/portfolio/contract.mjs +0 -115
- package/dist/portfolio/contract.mjs.map +0 -1
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/index.mjs +0 -170
- package/dist/proxy/index.mjs.map +0 -1
- package/dist/proxy/securityHeaders.d.ts.map +0 -1
- package/dist/proxy/segment.d.ts.map +0 -1
- package/dist/redirects/index.d.ts.map +0 -1
- package/dist/redirects/index.js.map +0 -1
- package/dist/redirects/index.mjs +0 -8
- package/dist/redirects/index.mjs.map +0 -1
- package/dist/redirects/not-found.d.ts +0 -31
- package/dist/redirects/not-found.d.ts.map +0 -1
- package/dist/redirects/not-found.js +0 -47
- package/dist/redirects/not-found.js.map +0 -1
- package/dist/redirects/not-found.mjs +0 -45
- package/dist/redirects/not-found.mjs.map +0 -1
- package/dist/reputation/TestimonialSection.d.ts.map +0 -1
- package/dist/reputation/api.d.ts.map +0 -1
- package/dist/reputation/index.d.ts.map +0 -1
- package/dist/reputation/index.js.map +0 -1
- package/dist/reputation/index.mjs +0 -5
- package/dist/reputation/index.mjs.map +0 -1
- package/dist/reputation/server.d.ts.map +0 -1
- package/dist/reputation/server.js.map +0 -1
- package/dist/reputation/server.mjs +0 -4
- package/dist/reputation/server.mjs.map +0 -1
- package/dist/reputation/types.d.ts.map +0 -1
- package/dist/robots/index.d.ts.map +0 -1
- package/dist/robots/index.js.map +0 -1
- package/dist/robots/index.mjs +0 -53
- package/dist/robots/index.mjs.map +0 -1
- package/dist/robots/indexnow.d.ts.map +0 -1
- package/dist/robots/indexnow.js.map +0 -1
- package/dist/robots/indexnow.mjs +0 -34
- package/dist/robots/indexnow.mjs.map +0 -1
- package/dist/robots/next-internals.d.ts.map +0 -1
- package/dist/search/contract.d.ts +0 -62
- package/dist/search/contract.d.ts.map +0 -1
- package/dist/search/contract.js +0 -17
- package/dist/search/contract.js.map +0 -1
- package/dist/search/contract.mjs +0 -4
- package/dist/search/contract.mjs.map +0 -1
- package/dist/search/index.d.ts +0 -52
- package/dist/search/index.d.ts.map +0 -1
- package/dist/search/index.js +0 -105
- package/dist/search/index.js.map +0 -1
- package/dist/search/index.mjs +0 -99
- package/dist/search/index.mjs.map +0 -1
- package/dist/seo/LocationPageContent.d.ts +0 -64
- package/dist/seo/LocationPageContent.d.ts.map +0 -1
- package/dist/seo/ManagedContent.d.ts.map +0 -1
- package/dist/seo/ManagedFAQ.d.ts.map +0 -1
- package/dist/seo/ManagedInternalLinks.d.ts.map +0 -1
- package/dist/seo/ManagedSchema.d.ts.map +0 -1
- package/dist/seo/ManagedScripts.d.ts.map +0 -1
- package/dist/seo/api.d.ts.map +0 -1
- package/dist/seo/client.d.ts.map +0 -1
- package/dist/seo/client.js.map +0 -1
- package/dist/seo/client.mjs +0 -11
- package/dist/seo/client.mjs.map +0 -1
- package/dist/seo/getManagedMetadata.d.ts.map +0 -1
- package/dist/seo/groundingSchema.d.ts.map +0 -1
- package/dist/seo/index.d.ts.map +0 -1
- package/dist/seo/index.js.map +0 -1
- package/dist/seo/index.mjs +0 -702
- package/dist/seo/index.mjs.map +0 -1
- package/dist/seo/register-sitemap-cli-impl.d.ts.map +0 -1
- package/dist/seo/register-sitemap-cli.d.ts.map +0 -1
- package/dist/seo/register-sitemap-cli.mjs +0 -528
- package/dist/seo/register-sitemap-request.d.ts.map +0 -1
- package/dist/seo/routing.d.ts.map +0 -1
- package/dist/seo/safeJsonLd.d.ts.map +0 -1
- package/dist/seo/schema-filter.d.ts.map +0 -1
- package/dist/seo/server-api.d.ts.map +0 -1
- package/dist/seo/server.d.ts.map +0 -1
- package/dist/seo/server.js.map +0 -1
- package/dist/seo/server.mjs +0 -11
- package/dist/seo/server.mjs.map +0 -1
- package/dist/seo/types.d.ts.map +0 -1
- package/dist/seo/withManagedMetadata.d.ts.map +0 -1
- package/dist/seo-meta/contract.d.ts.map +0 -1
- package/dist/seo-meta/contract.js.map +0 -1
- package/dist/seo-meta/contract.mjs +0 -4
- package/dist/seo-meta/contract.mjs.map +0 -1
- package/dist/seo-pages/contract.d.ts.map +0 -1
- package/dist/seo-pages/contract.js.map +0 -1
- package/dist/seo-pages/contract.mjs +0 -45
- package/dist/seo-pages/contract.mjs.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/index.mjs +0 -7
- package/dist/server/index.mjs.map +0 -1
- package/dist/server/mint-site-token.d.ts.map +0 -1
- package/dist/server/server-fetch.d.ts.map +0 -1
- package/dist/server-api-7F5P6CSH.mjs +0 -9
- package/dist/server-api-7F5P6CSH.mjs.map +0 -1
- package/dist/server-api-OC5JNK6R.js +0 -86
- package/dist/server-api-OC5JNK6R.js.map +0 -1
- package/dist/setup/index.d.ts +0 -12
- package/dist/setup/index.d.ts.map +0 -1
- package/dist/setup/index.js +0 -4
- package/dist/setup/index.js.map +0 -1
- package/dist/setup/index.mjs +0 -3
- package/dist/setup/index.mjs.map +0 -1
- package/dist/shared/build-entries.d.ts.map +0 -1
- package/dist/shared/color.d.ts.map +0 -1
- package/dist/shared/defer.d.ts.map +0 -1
- package/dist/shared/fetchWithRetry.d.ts.map +0 -1
- package/dist/shared/frame.d.ts.map +0 -1
- package/dist/shared/fresh-fetch.d.ts.map +0 -1
- package/dist/shared/glass.d.ts.map +0 -1
- package/dist/shared/identity.d.ts.map +0 -1
- package/dist/shared/next-files.d.ts.map +0 -1
- package/dist/shared/page-leave.d.ts.map +0 -1
- package/dist/shared/publishCredential.d.ts.map +0 -1
- package/dist/shared/reporting-gate.d.ts.map +0 -1
- package/dist/shared/request-guards.d.ts.map +0 -1
- package/dist/shared/siteToken.d.ts.map +0 -1
- package/dist/shared/sonorFetch.d.ts.map +0 -1
- package/dist/shared/source-graph.d.ts.map +0 -1
- package/dist/shared/uuid.d.ts.map +0 -1
- package/dist/shared/version.d.ts.map +0 -1
- package/dist/shared/visual-viewport-gap.d.ts.map +0 -1
- package/dist/signal/SignalBridge.d.ts.map +0 -1
- package/dist/signal/SignalCore.d.ts.map +0 -1
- package/dist/signal/SignalExperiment.d.ts.map +0 -1
- package/dist/signal/index.d.ts.map +0 -1
- package/dist/signal/index.js.map +0 -1
- package/dist/signal/index.mjs +0 -6
- package/dist/signal/index.mjs.map +0 -1
- package/dist/signal/store.d.ts.map +0 -1
- package/dist/signal/types.d.ts.map +0 -1
- package/dist/site-config/index.d.ts.map +0 -1
- package/dist/site-config/index.js.map +0 -1
- package/dist/site-config/index.mjs +0 -4
- package/dist/site-config/index.mjs.map +0 -1
- package/dist/sitemap/discover.d.ts.map +0 -1
- package/dist/sitemap/index.d.ts.map +0 -1
- package/dist/sitemap/index.js.map +0 -1
- package/dist/sitemap/index.mjs +0 -549
- package/dist/sitemap/index.mjs.map +0 -1
- package/dist/sitemap/shared.d.ts.map +0 -1
- package/dist/sites/contract.d.ts.map +0 -1
- package/dist/sites/contract.js.map +0 -1
- package/dist/sites/contract.mjs +0 -5
- package/dist/sites/contract.mjs.map +0 -1
- package/dist/sites/normalize.d.ts.map +0 -1
- package/dist/sites/resolve.d.ts.map +0 -1
- package/dist/sites/site-param.d.ts.map +0 -1
- package/dist/slots/ManagedSlot.d.ts.map +0 -1
- package/dist/slots/contract.d.ts.map +0 -1
- package/dist/slots/contract.js.map +0 -1
- package/dist/slots/contract.mjs +0 -4
- package/dist/slots/contract.mjs.map +0 -1
- package/dist/slots/index.d.ts.map +0 -1
- package/dist/slots/index.js.map +0 -1
- package/dist/slots/index.mjs +0 -142
- package/dist/slots/index.mjs.map +0 -1
- package/dist/slots/revalidate.d.ts.map +0 -1
- package/dist/slots/server-api.d.ts.map +0 -1
- package/dist/socket-loader-2NYBMBFQ.js +0 -16
- package/dist/socket-loader-2NYBMBFQ.js.map +0 -1
- package/dist/socket-loader-JA2DI2RT.mjs +0 -14
- package/dist/socket-loader-JA2DI2RT.mjs.map +0 -1
- package/dist/sync/AddToCalendar.d.ts.map +0 -1
- package/dist/sync/BookingWidget.d.ts.map +0 -1
- package/dist/sync/MeetingFormatStep.d.ts.map +0 -1
- package/dist/sync/api.d.ts.map +0 -1
- package/dist/sync/booking-flow.d.ts.map +0 -1
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/index.mjs +0 -7
- package/dist/sync/index.mjs.map +0 -1
- package/dist/sync/types.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/web-vitals.attribution-7LKLZ5GR.mjs +0 -524
- package/dist/web-vitals.attribution-7LKLZ5GR.mjs.map +0 -1
- package/dist/web-vitals.attribution-ONVYQNRB.js +0 -535
- package/dist/web-vitals.attribution-ONVYQNRB.js.map +0 -1
- package/dist/writeLLMsTxt-IYJILIU3.mjs +0 -11
- package/dist/writeLLMsTxt-SQG4B63X.js +0 -20
- package/scripts/postinstall.cjs +0 -67
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/forms/field-interactions.ts","../src/forms/tracking-session.ts","../src/forms/useFormTracking.ts","../src/forms/form-values.ts","../src/forms/recaptcha.ts","../src/forms/ga4-identity.ts","../src/forms/submitForm.ts","../src/forms/recaptcha-warmup.ts","../src/forms/useForm.ts"],"names":["uuid","isFieldComplete","useRef","useCallback","useEffect","sonorFetch","sonorBeacon","onPageLeave","DEFAULT_HONEYPOT_FIELD","useState","normalizeFormConfig","useMemo","isFieldVisible","validateField"],"mappings":"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","file":"chunk-6OQYRVMI.js","sourcesContent":["/**\n * @sonordev/site-kit/forms - per-field interaction log\n *\n * What one form visit did with each field, reported as\n * `form_analytics.field_interactions` so the Sonor app can show field-level\n * drop-off. Lives on the shared tracking session (tracking-session.ts), one per\n * form_analytics row, never one per tracker.\n *\n * Wire shape, per field slug (the API caps these — keep them in sync with\n * sonor-api `forms/form-field-interactions.util.ts`):\n * { completed: boolean, focusCount: number, timeMs: number }\n *\n * `completed` isn't stored here. The caller evaluates it at report time against\n * the form's current values, so a report can never carry a stale verdict.\n */\n\n/** Most fields one report carries. A form with more is unusual; the rest are dropped. */\nexport const MAX_TRACKED_FIELDS = 100\n/** Longest field slug reported. Slugs come from form config, so this only stops garbage. */\nexport const MAX_FIELD_SLUG_LENGTH = 100\n\nexport interface FieldInteraction {\n /** The field held a complete, valid value when this report was built. */\n completed: boolean\n /** Times the visitor moved focus into the field. */\n focusCount: number\n /** Total time the field held focus, in ms. */\n timeMs: number\n}\n\nexport type FieldInteractions = Record<string, FieldInteraction>\n\ninterface Entry {\n focusCount: number\n timeMs: number\n}\n\nexport class FieldInteractionLog {\n /**\n * The field the visitor was on, reported as `abandonment_field` when they\n * leave. The last FOCUSED field once the form reports focus; a headless form\n * that never wires focus falls back to the last field whose value changed.\n */\n lastField: string | null = null\n\n private readonly entries = new Map<string, Entry>()\n private focusReported = false\n /** The one field holding focus, if any. Only one can, so this is a slot, not a flag per field. */\n private open: { slug: string; since: number } | null = null\n\n /**\n * Visitor moved focus into `slug`. Returns true when that's a new visit to\n * the field; false for an untrackable slug or a field that already has focus.\n */\n focus(slug: string, now: number = Date.now()): boolean {\n if (this.open?.slug === slug) return false\n const entry = this.entry(slug)\n if (!entry) return false\n // A focused input that unmounts (a step change, a conditional hide) may\n // never fire blur. Focus arriving anywhere closes whatever was open.\n this.close(now)\n entry.focusCount++\n this.open = { slug, since: now }\n this.focusReported = true\n this.lastField = slug\n return true\n }\n\n /** Visitor moved focus out of `slug`. */\n blur(slug: string, now: number = Date.now()): void {\n if (this.open?.slug === slug) this.close(now)\n }\n\n /**\n * `slug`'s value changed. Counts as reaching the field even without a focus\n * event: autofill, a custom renderer that doesn't report focus, a picker\n * that sets the value from outside the input.\n */\n change(slug: string): boolean {\n if (!this.entry(slug)) return false\n if (!this.focusReported) this.lastField = slug\n return true\n }\n\n get size(): number {\n return this.entries.size\n }\n\n /**\n * Every field reached so far. Time for a field that still has focus counts\n * up to `now`, so a report built as the page hides includes the field the\n * visitor was sitting in.\n */\n snapshot(isComplete: (slug: string) => boolean, now: number = Date.now()): FieldInteractions {\n const out: FieldInteractions = {}\n for (const [slug, entry] of this.entries) {\n const openMs = this.open?.slug === slug ? Math.max(0, now - this.open.since) : 0\n out[slug] = {\n completed: safeIsComplete(isComplete, slug),\n focusCount: entry.focusCount,\n timeMs: Math.round(entry.timeMs + openMs),\n }\n }\n return out\n }\n\n private close(now: number): void {\n if (!this.open) return\n const entry = this.entries.get(this.open.slug)\n if (entry) entry.timeMs += Math.max(0, now - this.open.since)\n this.open = null\n }\n\n private entry(slug: string): Entry | null {\n if (typeof slug !== 'string' || slug.length === 0 || slug.length > MAX_FIELD_SLUG_LENGTH) return null\n const existing = this.entries.get(slug)\n if (existing) return existing\n if (this.entries.size >= MAX_TRACKED_FIELDS) return null\n const created: Entry = { focusCount: 0, timeMs: 0 }\n this.entries.set(slug, created)\n return created\n }\n}\n\n/** Analytics must never throw into a form: a failing check reports \"not complete\". */\nfunction safeIsComplete(isComplete: (slug: string) => boolean, slug: string): boolean {\n try {\n return isComplete(slug) === true\n } catch {\n return false\n }\n}\n","/**\n * @sonordev/site-kit/forms - Form tracking session registry\n *\n * SINGLE SOURCE OF TRUTH for a form's `form_analytics` row: one\n * `/analytics/start` per formId per page load, shared by every tracker\n * mounted for that form. Do NOT re-fork start logic into a caller.\n *\n * The lesson from the double-count bug fixed in 4.2.2: `ManagedForm` called\n * `useForm` (which tracks) AND rendered `FormClient` (which also tracks). Two\n * independent hook instances each minted their own session uuid and POSTed\n * their own start, so a single page load wrote TWO `form_analytics` rows —\n * present in every release up to and including 4.2.1. That halved every reported\n * start -> submission conversion rate, and because each instance registered its\n * own `beforeunload` it wrote two abandonment rows per visit as well. The\n * signature in the data was unmistakable: paired rows where exactly one ever\n * completed (only FormClient's instance owns submit) but BOTH abandoned.\n *\n * Trackers SHARE the resulting analytics row id, so whichever component owns\n * submission can still complete the row no matter which one opened it. That\n * sharing is what makes this safe as a guard rather than a gamble on which\n * instance mounts first.\n *\n * Everything else that belongs to the ROW lives here too, for the same reason:\n * the per-field interaction log and the abandonment state. See\n * {@link claimAbandon} for when a visit counts as abandoned.\n */\n\n// Single source of truth for v4 UUIDs — crypto.randomUUID throws on plain HTTP\n// and older Safari. Do NOT re-fork ID generation here.\nimport { uuid } from '../shared/uuid'\nimport { FieldInteractionLog } from './field-interactions'\n\nexport interface TrackingSession {\n /** The uuid reported to the API as this form visit's session. */\n readonly sessionId: string\n readonly startedAt: number\n /** Resolves to the analytics row id, or null when the start POST failed. */\n readonly analyticsId: Promise<string | null>\n /** What this visit did with each field, reported as `field_interactions`. */\n readonly fields: FieldInteractionLog\n /**\n * The visitor did something with the form: focused or changed a field, or\n * moved between steps. A visit that only LOADED the form (the session opens\n * on mount) is a view, not an abandonment.\n */\n interacted: boolean\n /** The visit ended in site-kit's own submit. A completed row is never abandoned. */\n completed: boolean\n /**\n * The row's current state is already reported as abandoned. Abandonment\n * belongs to the ROW, not to a tracker: every mounted tracker listens for the\n * page leaving, and only one beacon may go out per state, or one visit\n * reports abandonment as many times as it has trackers. New activity clears\n * it ({@link noteActivity}), so a visitor who comes back to a hidden tab and\n * keeps going is reported again, with where they got to, when they leave.\n */\n abandonSent: boolean\n /**\n * Runs once when the session is torn down: its last tracker unmounted and\n * none rejoined within {@link SESSION_GRACE_MS}. That is how a client-side\n * navigation (or a closed modal) away from an unfinished form is reported,\n * since neither fires a page-leave event.\n */\n onEnd: (() => void) | null\n /** @internal */\n refCount: number\n /** @internal */\n releaseTimer: ReturnType<typeof setTimeout> | null\n}\n\n/**\n * How long a session outlives its last unmount before a fresh start POST is\n * allowed. Covers React StrictMode's dev-mode mount -> unmount -> mount and the\n * FormEnhancer static -> interactive swap; both remount a form within the same\n * page load and would otherwise mint a second row for one visit.\n */\nexport const SESSION_GRACE_MS = 2000\n\nconst activeSessions = new Map<string, TrackingSession>()\n\n/**\n * Join the tracking session for `formId`, opening one if none is live.\n *\n * `start` is invoked at most once per session and must resolve to the analytics\n * row id (or null when the POST failed). Callers MUST pair this with\n * {@link releaseTrackingSession} on unmount.\n */\nexport function acquireTrackingSession(\n formId: string,\n start: (sessionId: string) => Promise<string | null>,\n): TrackingSession {\n const existing = activeSessions.get(formId)\n if (existing) {\n // A tracker rejoined inside the grace window — cancel the pending teardown\n // rather than letting it delete a session that is live again.\n if (existing.releaseTimer) {\n clearTimeout(existing.releaseTimer)\n existing.releaseTimer = null\n }\n existing.refCount++\n return existing\n }\n\n const sessionId = uuid()\n const session: TrackingSession = {\n sessionId,\n startedAt: Date.now(),\n // Assigned below — declared here so the object shape is complete first.\n analyticsId: null as unknown as Promise<string | null>,\n fields: new FieldInteractionLog(),\n interacted: false,\n completed: false,\n abandonSent: false,\n onEnd: null,\n refCount: 1,\n releaseTimer: null,\n }\n\n // Register BEFORE invoking `start`, so a tracker mounting later in the same\n // commit joins this session instead of racing it to a second row. React runs\n // effects synchronously within a commit, so this check-then-set cannot be\n // interleaved — but only if nothing awaits in between.\n activeSessions.set(formId, session)\n ;(session as { analyticsId: Promise<string | null> }).analyticsId = start(sessionId)\n\n return session\n}\n\n/**\n * Leave the tracking session. The last tracker out schedules teardown after\n * {@link SESSION_GRACE_MS} rather than deleting immediately, so a remount\n * within the same page load reuses the row instead of opening another.\n */\nexport function releaseTrackingSession(formId: string, session: TrackingSession): void {\n session.refCount--\n if (session.refCount > 0) return\n if (session.releaseTimer) return\n\n session.releaseTimer = setTimeout(() => {\n session.releaseTimer = null\n // Re-check both conditions: a tracker may have rejoined, or the entry may\n // already have been replaced by a later session for the same form.\n if (session.refCount <= 0 && activeSessions.get(formId) === session) {\n activeSessions.delete(formId)\n const onEnd = session.onEnd\n session.onEnd = null\n try {\n onEnd?.()\n } catch {\n /* reporting must never throw out of a timer */\n }\n }\n }, SESSION_GRACE_MS)\n\n // Never hold the process open for a teardown timer (SSR/test environments).\n ;(session.releaseTimer as { unref?: () => void })?.unref?.()\n}\n\n/**\n * The visitor did something with the form. Arms abandonment, and makes any\n * abandonment already reported stale so the next page leave reports again.\n */\nexport function noteActivity(session: TrackingSession): void {\n if (session.completed) return\n session.interacted = true\n session.abandonSent = false\n}\n\n/**\n * Claim the one abandonment report for the row's current state. True means\n * the caller must send it now. False when the visit completed, never touched\n * the form, or has nothing new since the last report.\n *\n * Page leaves fire often and in pairs (visibilitychange then pagehide, every\n * tab switch), so this is what keeps them to one beacon per state.\n */\nexport function claimAbandon(session: TrackingSession): boolean {\n if (session.completed || !session.interacted || session.abandonSent) return false\n session.abandonSent = true\n return true\n}\n\n/**\n * The visit submitted. Set BEFORE any await in the completion path: a redirect\n * right after submit fires pagehide, and an abandon beacon must not beat the\n * completion out of the page.\n */\nexport function markCompleted(session: TrackingSession): void {\n session.completed = true\n session.abandonSent = true\n}\n\n/** Test-only: drop all live sessions so cases start from a clean registry. */\nexport function __resetTrackingSessions(): void {\n for (const session of activeSessions.values()) {\n if (session.releaseTimer) clearTimeout(session.releaseTimer)\n }\n activeSessions.clear()\n}\n","/**\n * @sonordev/site-kit/forms - Form Tracking Hook\n *\n * Tracks form analytics: step progress, per-field interactions, completion and\n * abandonment.\n *\n * The `form_analytics` row is owned by the shared session registry, not by this\n * hook — see `tracking-session.ts`. Every tracker mounted for the same form\n * joins ONE session and shares its analytics row id, field log and abandonment\n * state, so composing two trackers over a single form (as ManagedForm once did)\n * can no longer double-count.\n *\n * Abandonment is reported when a visitor who interacted with the form leaves\n * without submitting, by any of:\n * - the page being hidden or unloaded (shared/page-leave.ts) — tab close, tab\n * or app switch, full navigation, a mobile browser discarding the tab;\n * - the form going away without the page going away — a client-side\n * navigation or a closed modal — via the session's teardown (`onEnd`).\n * A hidden tab can come back; if the visitor keeps going, the next leave\n * reports again with where they got to, and a later submit clears it\n * server-side.\n */\n\n'use client'\n\nimport { useEffect, useRef, useCallback } from 'react'\nimport { sonorFetch, sonorBeacon } from '../shared/sonorFetch'\nimport { onPageLeave } from '../shared/page-leave'\nimport {\n acquireTrackingSession,\n releaseTrackingSession,\n noteActivity,\n claimAbandon,\n markCompleted,\n type TrackingSession,\n} from './tracking-session'\n\ninterface UseFormTrackingOptions {\n formId: string\n totalSteps: number\n enabled?: boolean\n debug?: boolean\n /**\n * Whether the field with this slug holds a complete, valid value right now.\n * Read whenever a report is built, so `field_interactions[slug].completed`\n * reflects the form as the visitor left it. Without it every field reports\n * `completed: false`.\n */\n isFieldComplete?: (slug: string) => boolean\n}\n\ninterface FormTrackingReturn {\n trackStepChange: (step: number) => void\n trackComplete: () => void\n /** Focus moved into a field (FormField's onFocus). */\n trackFieldFocus: (slug: string) => void\n /** Focus left a field (FormField's onBlur). */\n trackFieldBlur: (slug: string) => void\n /** A field's value changed (the form's setFieldValue). */\n trackFieldChange: (slug: string) => void\n sessionId: string\n}\n\nexport function useFormTracking({\n formId,\n totalSteps,\n enabled = true,\n debug = false,\n isFieldComplete,\n}: UseFormTrackingOptions): FormTrackingReturn {\n const sessionRef = useRef<TrackingSession | null>(null)\n const sessionIdRef = useRef<string>('')\n const startTimeRef = useRef<number>(0)\n const stepStartTimeRef = useRef<number>(0)\n const stepTimesRef = useRef<Record<number, number>>({})\n const currentStepRef = useRef<number>(1)\n const maxStepRef = useRef<number>(1)\n const analyticsIdRef = useRef<string | null>(null)\n // Latest render's check, so a report built from a listener or timer reads\n // the form's current values rather than the ones it mounted with.\n const isFieldCompleteRef = useRef(isFieldComplete)\n isFieldCompleteRef.current = isFieldComplete\n\n const fieldReport = useCallback((session: TrackingSession, now: number) => {\n const check = isFieldCompleteRef.current\n return session.fields.snapshot((slug) => (check ? check(slug) : false), now)\n }, [])\n\n // Initialize tracking\n useEffect(() => {\n if (!enabled) return\n if (!formId) {\n if (debug) console.warn('[Forms] Tracking skipped: formId is empty')\n return\n }\n\n // Record form start. Invoked at most once per session by the registry —\n // a second tracker for this form joins the existing session instead.\n const startTracking = async (sessionId: string): Promise<string | null> => {\n const apiUrl = (window as any).__SITE_KIT_API_URL__\n const apiKey = (window as any).__SITE_KIT_API_KEY__\n\n if (!apiUrl || !apiKey) {\n if (debug) console.error('[Forms] Missing API URL or API key')\n return null\n }\n\n try {\n const response = await sonorFetch(\n `${apiUrl}/api/public/forms/analytics/start`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n formId,\n sessionId,\n deviceType: getDeviceType(),\n }),\n },\n { apiKey, retries: 0 },\n )\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n const data = await response.json()\n if (debug) console.log('[Forms] Started tracking:', data.id)\n return data.id ?? null\n } catch (error) {\n if (debug) console.error('[Forms] Error starting tracking:', error)\n return null\n }\n }\n\n const session = acquireTrackingSession(formId, startTracking)\n sessionRef.current = session\n sessionIdRef.current = session.sessionId\n startTimeRef.current = session.startedAt\n stepStartTimeRef.current = Date.now()\n\n let joined = true\n void session.analyticsId.then((id) => {\n if (joined) analyticsIdRef.current = id\n })\n\n const reportAbandon = (analyticsId: string | null) => {\n if (!analyticsId) return\n\n const apiUrl = (window as any).__SITE_KIT_API_URL__\n const apiKey = (window as any).__SITE_KIT_API_KEY__\n if (!apiUrl || !apiKey) return\n\n // One report per row per state, and only for a visit that touched the\n // form and didn't submit. See claimAbandon.\n if (!claimAbandon(session)) return\n\n const now = Date.now()\n stepTimesRef.current[currentStepRef.current] = Math.floor((now - stepStartTimeRef.current) / 1000)\n\n // Fire-and-forget via sonorBeacon: keepalive fetch keeps the credential in\n // the x-api-key header (raw sendBeacon can't set headers), so abandonment\n // authenticates on 3.2+ token sites and uses the freshest minted token.\n // Keepalive bodies share a 64KB budget per page; the field log is capped\n // (field-interactions.ts) to stay well inside it.\n sonorBeacon(\n `${apiUrl}/api/public/forms/analytics/abandon`,\n {\n analyticsId,\n step: currentStepRef.current,\n maxStep: maxStepRef.current,\n stepTimes: stepTimesRef.current,\n totalTimeSeconds: Math.floor((now - startTimeRef.current) / 1000),\n fieldInteractions: fieldReport(session, now),\n abandonmentField: session.fields.lastField,\n },\n apiKey,\n )\n\n if (debug) console.log('[Forms] Abandonment tracked:', session.fields.lastField)\n }\n\n // The page is going away (or being backgrounded): the row id must already\n // be known — there is no time left to wait on the start POST.\n const stopLeaveListener = onPageLeave(() => reportAbandon(analyticsIdRef.current))\n\n // The form went away but the page didn't. The page is still alive, so this\n // one can wait for a start POST that's still in flight.\n session.onEnd = () => {\n void session.analyticsId.then(reportAbandon)\n }\n\n return () => {\n joined = false\n stopLeaveListener()\n releaseTrackingSession(formId, session)\n sessionRef.current = null\n }\n }, [formId, enabled, debug, fieldReport])\n\n /**\n * The analytics row id, waiting on the start POST if it is still in flight.\n * A fast submit used to race the start and silently drop the completion,\n * which understated conversions the same way double-starting overstated them.\n */\n const resolveAnalyticsId = useCallback(async (): Promise<string | null> => {\n if (analyticsIdRef.current) return analyticsIdRef.current\n const session = sessionRef.current\n if (!session) return null\n const id = await session.analyticsId\n if (id) analyticsIdRef.current = id\n return id\n }, [])\n\n // Field events. Cheap and synchronous — they only update the session's log;\n // the log travels with the next step, complete or abandon report.\n const trackFieldFocus = useCallback((slug: string) => {\n const session = sessionRef.current\n if (!session || session.completed) return\n if (session.fields.focus(slug)) noteActivity(session)\n }, [])\n\n const trackFieldBlur = useCallback((slug: string) => {\n sessionRef.current?.fields.blur(slug)\n }, [])\n\n const trackFieldChange = useCallback((slug: string) => {\n const session = sessionRef.current\n if (!session || session.completed) return\n if (session.fields.change(slug)) noteActivity(session)\n }, [])\n\n // Track step changes\n const trackStepChange = useCallback(async (step: number) => {\n if (!enabled) return\n\n const apiUrl = (window as any).__SITE_KIT_API_URL__\n const apiKey = (window as any).__SITE_KIT_API_KEY__\n\n if (!apiUrl || !apiKey) {\n if (debug) console.error('[Forms] Missing API URL or API key')\n return\n }\n\n const now = Date.now()\n\n // Record time spent on previous step\n const prevStepTime = Math.floor((now - stepStartTimeRef.current) / 1000)\n stepTimesRef.current[currentStepRef.current] = prevStepTime\n\n // Update refs\n currentStepRef.current = step\n maxStepRef.current = Math.max(maxStepRef.current, step)\n stepStartTimeRef.current = now\n\n const session = sessionRef.current\n if (session) noteActivity(session)\n\n const analyticsId = await resolveAnalyticsId()\n if (!analyticsId) return\n\n // Update database\n try {\n const response = await sonorFetch(\n `${apiUrl}/api/public/forms/analytics/step`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n analyticsId,\n step,\n maxStep: maxStepRef.current,\n stepTimes: stepTimesRef.current,\n ...(session ? { fieldInteractions: fieldReport(session, Date.now()) } : {}),\n }),\n },\n { apiKey, retries: 0 },\n )\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n if (debug) console.log('[Forms] Step changed to:', step)\n } catch (error) {\n if (debug) console.error('[Forms] Error updating step:', error)\n }\n }, [enabled, debug, resolveAnalyticsId, fieldReport])\n\n // Track completion\n const trackComplete = useCallback(async () => {\n if (!enabled) return\n\n // A completed row must never also be reported as abandoned — not when the\n // success screen is later closed, and not when a redirect right after\n // submit fires pagehide while this function is still awaiting. So this is\n // set synchronously, before anything below can yield.\n const session = sessionRef.current\n if (session) markCompleted(session)\n\n const apiUrl = (window as any).__SITE_KIT_API_URL__\n const apiKey = (window as any).__SITE_KIT_API_KEY__\n\n if (!apiUrl || !apiKey) {\n if (debug) console.error('[Forms] Missing API URL or API key')\n return\n }\n\n const now = Date.now()\n\n // Record time for final step\n const finalStepTime = Math.floor((now - stepStartTimeRef.current) / 1000)\n stepTimesRef.current[currentStepRef.current] = finalStepTime\n // Captured now: the values are the ones that were submitted.\n const fieldInteractions = session ? fieldReport(session, now) : undefined\n\n const analyticsId = await resolveAnalyticsId()\n if (!analyticsId) return\n\n try {\n // Complete form analytics tracking\n // Note: A database trigger will automatically log this as a conversion\n // in analytics_conversions when completed_at is set\n const response = await sonorFetch(\n `${apiUrl}/api/public/forms/analytics/complete`,\n {\n method: 'POST',\n // A form with a redirect_url navigates away right after submit, which\n // cancels an ordinary in-flight fetch. And since completion now\n // suppresses the abandon beacon, losing this would leave the row\n // neither completed nor abandoned.\n keepalive: true,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n analyticsId,\n totalSteps,\n stepTimes: stepTimesRef.current,\n totalTimeSeconds: Math.floor((now - startTimeRef.current) / 1000),\n ...(fieldInteractions ? { fieldInteractions } : {}),\n }),\n },\n { apiKey, retries: 0 },\n )\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n if (debug) console.log('[Forms] Form completed')\n\n // No client-side conversion POST: the Sonor API records the canonical\n // form_submission conversion (analytics_conversions + session flag)\n // when the submission lands at /api/public/forms/submit. The old POST\n // here sent this hook's form-tracking uuid as `sessionId`, which\n // matched no analytics session and double-counted the conversion.\n } catch (error) {\n if (debug) console.error('[Forms] Error completing tracking:', error)\n }\n }, [enabled, totalSteps, debug, resolveAnalyticsId, fieldReport])\n\n return {\n trackStepChange,\n trackComplete,\n trackFieldFocus,\n trackFieldBlur,\n trackFieldChange,\n sessionId: sessionIdRef.current,\n }\n}\n\n// Helper\nfunction getDeviceType(): 'desktop' | 'mobile' | 'tablet' {\n if (typeof window === 'undefined') return 'desktop'\n const ua = navigator.userAgent\n if (/tablet|ipad|playbook|silk/i.test(ua)) return 'tablet'\n if (/mobile|iphone|ipod|android|blackberry|opera mini|iemobile/i.test(ua)) return 'mobile'\n return 'desktop'\n}\n","/**\n * What a form's values should be after its config arrives.\n *\n * Extracted from useForm's fetch so the precedence is testable on its own, the\n * way field-rules.ts was. FormClient does NOT use this: its config comes from a\n * prop and never changes, so it seeds defaults once in a lazy initializer and\n * there is nothing to re-merge.\n *\n * The case that matters is a form whose slug changes WHILE it is being filled\n * in. That is a real pattern rather than an edge case: a picker chooses a\n * branch, and each branch has to be its own managed form because notification\n * recipients are per-form, not per-field-value. Re-seeding blindly there wipes\n * the name, email and phone the visitor already typed, at the exact moment they\n * express intent.\n */\n\nexport interface MergeFormValuesArgs {\n /** Fields from the config that just arrived. */\n fields: Array<{ slug: string; default_value?: unknown }>\n /** Values as they stand right now, including anything already entered. */\n current: Record<string, unknown>\n /** The caller's initialValues, which outrank a config default. */\n initialValues?: Record<string, unknown>\n}\n\n/**\n * Precedence, weakest to strongest: config defaults, the caller's\n * initialValues, then whatever is already entered.\n *\n * Only slugs the NEW config has survive. A value carried across for a field\n * that no longer exists would be submitted invisibly, on a form that never\n * asked for it.\n *\n * An entered empty string counts as entered: clearing a field is a deliberate\n * act, and a default must not silently refill it.\n */\nexport function mergeFormValues({\n fields,\n current,\n initialValues = {},\n}: MergeFormValuesArgs): Record<string, unknown> {\n const slugs = new Set<string>()\n const next: Record<string, unknown> = {}\n\n for (const field of fields || []) {\n if (!field || typeof field.slug !== 'string') continue\n slugs.add(field.slug)\n if (field.default_value !== undefined && field.default_value !== null) {\n next[field.slug] = field.default_value\n }\n }\n\n for (const [slug, value] of Object.entries(initialValues)) {\n if (slugs.has(slug)) next[slug] = value\n }\n\n for (const [slug, value] of Object.entries(current)) {\n if (slugs.has(slug)) next[slug] = value\n }\n\n return next\n}\n\n/**\n * Drop errors belonging to fields the new config does not have. Their messages\n * would otherwise be un-clearable: nothing on screen can correct a field that\n * is no longer rendered, and validation will never revisit it.\n */\nexport function pruneErrors(\n errors: Record<string, string>,\n fields: Array<{ slug: string }>,\n): Record<string, string> {\n const slugs = new Set((fields || []).map((f) => f?.slug).filter(Boolean) as string[])\n const next: Record<string, string> = {}\n for (const [slug, message] of Object.entries(errors)) {\n if (slugs.has(slug)) next[slug] = message\n }\n return next\n}\n","/**\n * reCAPTCHA Enterprise - Client-side token generation for site-kit forms\n *\n * Site key is read from:\n * - window.__SITE_KIT_RECAPTCHA_SITE_KEY__ (set by SiteKitLayout)\n * - process.env.NEXT_PUBLIC_RECAPTCHA_SITE_KEY (when bundled in Next.js app)\n */\n\nfunction getSiteKey(explicitSiteKey?: string): string | undefined {\n if (typeof window === 'undefined') return undefined\n if (explicitSiteKey) return explicitSiteKey\n const win = window as any\n return win.__SITE_KIT_RECAPTCHA_SITE_KEY__ ?? process.env.NEXT_PUBLIC_RECAPTCHA_SITE_KEY\n}\n\n/** Max time to wait for reCAPTCHA Enterprise to become usable before giving up. */\nconst RECAPTCHA_LOAD_TIMEOUT_MS = 10000\n\nfunction loadScript(siteKey: string): Promise<any> {\n return new Promise((resolve) => {\n if (typeof window === 'undefined') {\n resolve(null)\n return\n }\n const win = window as any\n if (win.grecaptcha?.enterprise) {\n resolve(win.grecaptcha)\n return\n }\n\n // Never hang the form: if the script is blocked (ad-blocker), stalls, or\n // never initializes `grecaptcha.enterprise`, resolve null after a timeout.\n // The caller treats a null result as \"no token\" rather than waiting forever.\n let settled = false\n const finish = (value: any) => {\n if (settled) return\n settled = true\n resolve(value)\n }\n const giveUp = setTimeout(() => finish(null), RECAPTCHA_LOAD_TIMEOUT_MS)\n\n const waitForReady = () => {\n if (settled) return\n if (win.grecaptcha?.enterprise) {\n clearTimeout(giveUp)\n finish(win.grecaptcha)\n return\n }\n setTimeout(waitForReady, 50)\n }\n\n const existing = document.querySelector('script[src*=\"recaptcha/enterprise\"]')\n if (existing) {\n waitForReady()\n return\n }\n\n const script = document.createElement('script')\n script.src = `https://www.google.com/recaptcha/enterprise.js?render=${siteKey}`\n script.async = true\n script.onload = () => waitForReady()\n script.onerror = () => {\n clearTimeout(giveUp)\n finish(null)\n }\n document.head.appendChild(script)\n })\n}\n\n/**\n * Resolve once reCAPTCHA Enterprise can mint a token, or null if it never can.\n *\n * The order matters. On a cold page, enterprise.js fires `onload` with\n * `grecaptcha.enterprise` holding only the loader stub: `ready()` and nothing\n * else. `execute` arrives a few ms later with the real library. Checking for\n * `execute` before awaiting `ready()` saw the stub, returned \"no token\", and\n * the form refused to send. That was every first submit on every\n * requireRecaptcha form (found on upforge.io 2026-09-23), without a single\n * request reaching Sonor. So: load, await ready(), THEN require execute.\n */\nasync function loadReady(siteKey: string): Promise<any> {\n const grecaptcha = await loadScript(siteKey)\n if (typeof grecaptcha?.enterprise?.ready !== 'function') return null\n const ready = await Promise.race([\n new Promise<boolean>((resolve) => grecaptcha.enterprise.ready(() => resolve(true))),\n new Promise<boolean>((resolve) => setTimeout(() => resolve(false), RECAPTCHA_LOAD_TIMEOUT_MS)),\n ])\n if (!ready || typeof grecaptcha.enterprise.execute !== 'function') return null\n return grecaptcha\n}\n\n/**\n * Start loading reCAPTCHA ahead of the submit (a form calls this on the first\n * field focus). Loading at submit time is a race the visitor can lose; a few\n * seconds of typing is plenty of head start. Never mints a token: they\n * expire after about two minutes, so the token is still taken at submit.\n */\nexport function preloadRecaptcha(explicitSiteKey?: string): void {\n const siteKey = getSiteKey(explicitSiteKey)\n if (!siteKey || typeof window === 'undefined') return\n void loadReady(siteKey).catch(() => null)\n}\n\n/**\n * Get a reCAPTCHA Enterprise token for form submission.\n * Returns null if not configured or in SSR.\n */\nexport async function getRecaptchaToken(explicitSiteKey?: string): Promise<string | null> {\n const siteKey = getSiteKey(explicitSiteKey)\n if (!siteKey || typeof window === 'undefined') return null\n try {\n const grecaptcha = await loadReady(siteKey)\n if (!grecaptcha) return null\n const token = await grecaptcha.enterprise.execute(siteKey, { action: 'submit' })\n return token || null\n } catch (err) {\n // One retry after a beat — first-execute flakes persist on slow devices\n // even post-ready, and a dropped token is a dropped lead.\n try {\n await new Promise((resolve) => setTimeout(resolve, 800))\n const win = window as any\n const token = await win.grecaptcha.enterprise.execute(siteKey, { action: 'submit' })\n return token || null\n } catch (retryErr) {\n console.warn('[site-kit reCAPTCHA]', retryErr)\n return null\n }\n }\n}\n","/**\n * Reads the visitor's GA4 identity out of their own first-party cookies so a\n * lead conversion can be reported SERVER-side.\n *\n * Why the server has to do the reporting: Sonor's form-submit endpoint answers\n * with a byte-identical success payload whether it accepted a submission or\n * quarantined it as spam (deliberately — a bot must never learn it was\n * caught). So the browser cannot tell a real lead from a filtered one, and a\n * site firing its own ad conversion bills both. The accept/reject verdict only\n * exists on the server, so the conversion has to be sent from there — and to\n * send it, the server needs the GA4 identity that only the browser can see.\n *\n * Nothing here is a new identifier: these are cookies Google's own tag already\n * set on this visitor. We read them, we never write them.\n */\n\nexport interface Ga4Identity {\n /** GA4 client id, from `_ga`. Without it a server-sent event has no identity. */\n gaClientId?: string\n /**\n * GA4 session ids keyed by container id (the measurement id minus `G-`), from\n * the `_ga_<CONTAINER>` cookies.\n *\n * A map rather than one value because a page may carry more than one GA4\n * property, and picking the wrong one would silently attach the lead to the\n * wrong session — the sender knows which measurement id it is configured for,\n * this side does not.\n */\n gaSessions?: Record<string, string>\n}\n\nfunction readCookie(jar: string, name: string): string | undefined {\n const escaped = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n const match = jar.match(new RegExp(`(?:^|;\\\\s*)${escaped}=([^;]*)`))\n return match ? decodeURIComponent(match[1]) : undefined\n}\n\nexport function readGa4Identity(): Ga4Identity {\n if (typeof document === 'undefined') return {}\n const jar = document.cookie || ''\n if (!jar) return {}\n\n const identity: Ga4Identity = {}\n\n // `_ga` is `GA1.<depth>.<id1>.<id2>`; the client id is the last two parts\n // joined. Reading the raw cookie rather than the trailing two segments\n // blindly keeps it correct when the depth prefix varies by domain scope.\n const ga = readCookie(jar, '_ga')\n if (ga) {\n const parts = ga.split('.')\n if (parts.length >= 4) {\n const clientId = `${parts[parts.length - 2]}.${parts[parts.length - 1]}`\n if (/^\\d+\\.\\d+$/.test(clientId)) identity.gaClientId = clientId\n }\n }\n\n // `_ga_<CONTAINER>` is `GS<v>.<depth>.<session_id>.<session_number>....`\n const sessions: Record<string, string> = {}\n for (const raw of jar.split(';')) {\n const cookie = raw.trim()\n const eq = cookie.indexOf('=')\n if (eq < 0) continue\n const name = cookie.slice(0, eq)\n const container = /^_ga_([A-Z0-9]+)$/i.exec(name)?.[1]\n if (!container) continue\n const parts = decodeURIComponent(cookie.slice(eq + 1)).split('.')\n if (parts.length >= 3 && /^\\d+$/.test(parts[2])) sessions[container] = parts[2]\n }\n if (Object.keys(sessions).length > 0) identity.gaSessions = sessions\n\n return identity\n}\n","/**\n * @sonordev/site-kit/forms - Shared submission logic\n *\n * Single source of truth for sending a managed form to the Sonor API. Both\n * <ManagedForm> (via FormClient) and the headless useForm() hook submit through\n * here, so the request shape, retry behaviour, reCAPTCHA handling, and error\n * parsing can never drift between the two paths.\n */\n\nimport { sonorFetch } from '../shared/sonorFetch'\nimport { getRecaptchaToken } from './recaptcha'\nimport { DEFAULT_HONEYPOT_FIELD } from './contract'\nimport { readGa4Identity } from './ga4-identity'\nimport type { FormSubmitResult, ManagedFormConfig } from './types'\n\n// The honeypot trap-field name lives once in the shared forms contract\n// (single source of truth for site-kit's client + sonor-api's intake).\n// Re-exported so existing importers of this path keep resolving it.\nexport { DEFAULT_HONEYPOT_FIELD }\n\nexport function getApiConfig(): { apiUrl: string; apiKey: string | undefined } {\n // Server branch must honor the same env override SiteKitLayout feeds into\n // __SITE_KIT_API_URL__, or SSR-rendered absolute URLs (the native form\n // action) would point at prod from a staging site.\n const apiUrl =\n typeof window !== 'undefined'\n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n : process.env.SONOR_API_URL || process.env.NEXT_PUBLIC_SONOR_API_URL || 'https://api.sonor.io'\n const apiKey =\n typeof window !== 'undefined' ? (window as any).__SITE_KIT_API_KEY__ : undefined\n return { apiUrl, apiKey }\n}\n\nfunction getUTMParams(): Record<string, string | null> {\n if (typeof window === 'undefined') return {}\n const params = new URLSearchParams(window.location.search)\n const out: Record<string, string | null> = {}\n for (const key of ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']) {\n out[key] = params.get(key)\n }\n return out\n}\n\nexport interface SubmitFormArgs {\n config: ManagedFormConfig\n /**\n * Field values to submit. The caller must pass VISIBLE values only —\n * conditionally-hidden fields should be excluded so stale values are not sent.\n */\n values: Record<string, unknown>\n /** Honeypot input value (empty string for the headless hook, which has no honeypot UI). */\n honeypotValue: string\n /** Timestamp (ms) the form was first rendered — a weak anti-bot timing signal. */\n formLoadedAt: number\n}\n\n/**\n * Submit a managed form. Throws on failure (network, timeout, or a non-2xx\n * response) with a human-readable message; resolves with the parsed API\n * response on success.\n */\nexport async function submitForm({\n config,\n values,\n honeypotValue,\n formLoadedAt,\n}: SubmitFormArgs): Promise<FormSubmitResult> {\n const { apiUrl, apiKey } = getApiConfig()\n if (!apiKey) {\n throw new Error('API key is required. Set SONOR_API_KEY in your environment.')\n }\n\n // reCAPTCHA token is fetched right before the POST so it cannot expire.\n const recaptchaToken = config.recaptcha_enabled\n ? await getRecaptchaToken(config.recaptcha_site_key)\n : null\n if (config.recaptcha_enabled && !recaptchaToken) {\n throw new Error('Verification could not be completed. Please try again.')\n }\n\n const honeypotFieldName = config.honeypot_field || DEFAULT_HONEYPOT_FIELD\n const utm = getUTMParams()\n // The visitor's existing GA4 cookies, so Sonor can report an accepted lead\n // as a conversion server-side. Nothing is written or created here — see\n // ga4-identity.ts for why the server, not this browser, has to do it.\n const ga4 = readGa4Identity()\n\n const payload = {\n formId: config.id,\n form_id: config.id,\n data: {\n ...values,\n ...(config.honeypot_enabled ? { [honeypotFieldName]: honeypotValue } : {}),\n },\n metadata: {\n pageUrl: typeof window !== 'undefined' ? window.location.href : null,\n referrer: typeof document !== 'undefined' ? document.referrer || null : null,\n userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : null,\n sessionId:\n typeof sessionStorage !== 'undefined' ? sessionStorage.getItem('_sk_sid') : null,\n // Anonymous visitor id (_sk_vid) — the same id Analytics/Signal stamp on\n // page views, so the Sonor side can bind this lead to its browsing session\n // (page -> lead attribution). Sent on every submission; null pre-hydration.\n visitorId:\n typeof localStorage !== 'undefined' ? localStorage.getItem('_sk_vid') : null,\n recaptchaToken: recaptchaToken || undefined,\n utmSource: utm.utm_source,\n utmMedium: utm.utm_medium,\n utmCampaign: utm.utm_campaign,\n utmTerm: utm.utm_term,\n utmContent: utm.utm_content,\n ...ga4,\n // Sub-site host — preserved on form_submissions for lead attribution\n // across multi-site projects. Resolved by SiteKitClientProviders.\n site:\n typeof window !== 'undefined'\n ? (window as { __SITE_KIT_SITE__?: string }).__SITE_KIT_SITE__ ||\n window.location.host\n : undefined,\n _formLoadedAt: formLoadedAt,\n },\n }\n\n const response = await sonorFetch(\n `${apiUrl}/api/public/forms/submit`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(payload),\n },\n { retries: 2, timeoutMs: 20000 },\n )\n\n const data = await response.json().catch(() => null)\n\n if (!response.ok) {\n const msg = (\n data?.message ??\n data?.error ??\n (response.statusText || `HTTP ${response.status}`)\n )\n .toString()\n .trim()\n throw new Error(\n msg ? `Failed to submit form: ${msg}` : `Failed to submit form (${response.status})`,\n )\n }\n\n return submitResult(data, values)\n}\n\n/**\n * The receipt Sonor returns plus the values that were sent. `onSuccess`\n * callers need the values (free-audit reads the website and email back), and\n * the receipt alone never carried them: upforge.io's free-audit handler read\n * `submission.data`, always got undefined, and sent its audit request with no\n * email or URL.\n */\nexport function submitResult(receipt: unknown, values: Record<string, unknown>): FormSubmitResult {\n const r = (receipt && typeof receipt === 'object' ? receipt : {}) as Record<string, unknown>\n const id = typeof r.submissionId === 'string' ? r.submissionId : typeof r.id === 'string' ? r.id : ''\n return {\n success: r.success !== false,\n id,\n submissionId: id,\n message: typeof r.message === 'string' ? r.message : undefined,\n redirectUrl: typeof r.redirectUrl === 'string' ? r.redirectUrl : null,\n data: { ...values },\n }\n}\n","import { useCallback, useRef } from 'react'\nimport { preloadRecaptcha } from './recaptcha'\n\n/**\n * Wrap a form's field-focus handler so the first focus also starts loading\n * reCAPTCHA, when the form needs a token. Shared by FormClient (every managed\n * form experience) and the headless useForm hook, so both paths get the same\n * head start. Without it the script loads at submit, which is the race\n * recaptcha.ts's loadReady exists to survive.\n */\nexport function useRecaptchaWarmup(\n config: { recaptcha_enabled?: boolean; recaptcha_site_key?: string } | null | undefined,\n onFocus: (slug: string) => void,\n): (slug: string) => void {\n const warmed = useRef(false)\n const enabled = !!config?.recaptcha_enabled\n const siteKey = config?.recaptcha_site_key\n return useCallback(\n (slug: string) => {\n if (enabled && !warmed.current) {\n warmed.current = true\n preloadRecaptcha(siteKey)\n }\n onFocus(slug)\n },\n [enabled, siteKey, onFocus],\n )\n}\n","/**\n * @sonordev/site-kit/forms - useForm Hook\n * \n * Headless hook for complete control over form rendering.\n * Fetches form config from API, handles validation, state, and submission.\n * \n * @example\n * ```tsx\n * const { form, fields, values, errors, setFieldValue, submit, isSubmitting } = useForm('contact-form')\n * \n * return (\n * <form onSubmit={(e) => { e.preventDefault(); submit() }}>\n * {fields.map(field => (\n * <MyCustomInput\n * key={field.slug}\n * label={field.label}\n * value={values[field.slug]}\n * error={errors[field.slug]}\n * onChange={(val) => setFieldValue(field.slug, val)}\n * />\n * ))}\n * <button type=\"submit\" disabled={isSubmitting}>Submit</button>\n * </form>\n * )\n * ```\n */\n\n'use client'\n\nimport { useState, useEffect, useCallback, useMemo, useRef } from 'react'\nimport { useFormTracking } from './useFormTracking'\nimport * as fieldRules from './field-rules'\n// Shared with StaticForm — the server shell and this client path MUST agree\n// on field order, step count and success copy or the enhancement swap jumps.\nimport { normalizeFormConfig } from './normalize-config'\nimport { mergeFormValues, pruneErrors } from './form-values'\nimport { sonorFetch } from '../shared/sonorFetch'\nimport { submitForm } from './submitForm'\nimport { useRecaptchaWarmup } from './recaptcha-warmup'\nimport type { \n ManagedFormConfig, \n FormField, \n FormSubmitResult\n} from './types'\nimport { DEFAULT_FORM_SUCCESS_MESSAGE } from './defaultSuccessMessage'\n\n// ============================================\n// Types\n// ============================================\n\nexport interface UseFormOptions {\n /** Project ID (defaults to SiteKitLayout config) */\n projectId?: string\n /** Callback when form submits successfully */\n onSuccess?: (submission: FormSubmitResult) => void\n /** Callback when submission fails */\n onError?: (error: Error) => void\n /** Initial values to prefill */\n initialValues?: Record<string, unknown>\n /** Auto-redirect after success (override form config) */\n redirectUrl?: string | false\n /**\n * Server-fetched form payload (from `getFormConfig` in\n * `@sonordev/site-kit/forms/server`). When provided, the fields render on\n * the first client render — no config fetch, no \"Loading form...\" flash.\n * Accepts the RAW API payload; normalized here exactly like a client fetch.\n */\n initialForm?: Record<string, unknown> | null\n /**\n * Report this form's funnel to Sonor (`form_analytics`). Defaults to true —\n * a headless `useForm` consumer renders and submits the form itself, so this\n * hook is the only thing that can track it.\n *\n * `ManagedForm` passes FALSE: it delegates rendering, step navigation and\n * submission to `FormClient`, which tracks that path. Exactly one component\n * may own a form's tracking — two owners was the double-count bug fixed\n * in 4.2.2.\n */\n trackAnalytics?: boolean\n}\n\n\nexport interface UseFormReturn {\n /** Form configuration (null while loading) */\n form: ManagedFormConfig | null\n /** Loading state */\n isLoading: boolean\n /** Error fetching form */\n fetchError: Error | null\n /** Human-readable error from the last submit attempt (null when none) */\n submitError: string | null\n\n /** All form fields */\n allFields: FormField[]\n /** Fields for current step (multi-step) or all fields (single step) */\n fields: FormField[]\n /** Visible fields only (respecting conditional logic) */\n visibleFields: FormField[]\n \n /** Current form values */\n values: Record<string, unknown>\n /** Current validation errors */\n errors: Record<string, string>\n \n /** Set a single field value */\n setFieldValue: (key: string, value: unknown) => void\n /** Set multiple field values at once */\n setValues: (values: Record<string, unknown>) => void\n /** Clear all errors */\n clearErrors: () => void\n \n /** Multi-step state */\n step: number\n totalSteps: number\n isMultiStep: boolean\n progress: number\n \n /** Multi-step navigation */\n nextStep: () => boolean\n prevStep: () => void\n goToStep: (step: number) => void\n canGoNext: boolean\n canGoPrev: boolean\n isLastStep: boolean\n \n /** Validate current step */\n validate: () => boolean\n /** Validate a single field */\n validateField: (field: FormField) => string | null\n /** Check if a field is visible (conditional logic) */\n isFieldVisible: (field: FormField) => boolean\n \n /** Submit the form */\n submit: () => Promise<void>\n /** Submission state */\n isSubmitting: boolean\n isComplete: boolean\n /** Reset form to initial state */\n reset: () => void\n\n /**\n * Report focus entering / leaving a field (wire to your inputs'\n * onFocus/onBlur), so Sonor's field-level drop-off knows which field a\n * visitor was on when they left. Value changes via setFieldValue are tracked\n * without them.\n */\n trackFieldFocus: (slug: string) => void\n trackFieldBlur: (slug: string) => void\n}\n\n// ============================================\n// Hook\n// ============================================\n\nexport function useForm(\n formIdOrSlug: string,\n options: UseFormOptions = {}\n): UseFormReturn {\n const {\n projectId: optionsProjectId,\n onSuccess,\n onError,\n initialValues = {},\n redirectUrl,\n initialForm,\n trackAnalytics = true,\n } = options\n\n // Get projectId from window globals if not provided\n const projectId = optionsProjectId ||\n (typeof window !== 'undefined' ? (window as any).__SITE_KIT_PROJECT_ID__ : undefined)\n\n // State — a server-provided config renders fields on the very first pass\n // (lazy initializer, so normalization runs once, and SSR + hydration agree).\n const [form, setForm] = useState<ManagedFormConfig | null>(() =>\n initialForm ? normalizeFormConfig(initialForm) : null,\n )\n const [isLoading, setIsLoading] = useState(!initialForm)\n const [fetchError, setFetchError] = useState<Error | null>(null)\n const [values, setValuesState] = useState<Record<string, unknown>>(() => {\n if (!initialForm) return initialValues\n const defaults: Record<string, unknown> = {}\n for (const field of (initialForm as any).fields || []) {\n if (field.default_value !== undefined && field.default_value !== null) {\n defaults[field.slug] = field.default_value\n }\n }\n return { ...defaults, ...initialValues }\n })\n const [errors, setErrors] = useState<Record<string, string>>({})\n const [step, setStep] = useState(1)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [isComplete, setIsComplete] = useState(false)\n const [submitError, setSubmitError] = useState<string | null>(null)\n\n // Synchronous re-entrancy guard + anti-bot timing.\n const isSubmittingRef = useRef(false)\n const formLoadedAt = useRef(Date.now())\n\n const totalSteps = form?.total_steps || 1\n const isMultiStep = (form?.is_multi_step) || false\n\n // Fetch form config (project is derived from API key on the backend; projectId is optional)\n useEffect(() => {\n // Server already provided the config — the recaptcha site key still needs\n // publishing to the window global, then there is nothing to fetch. Only\n // honored when it matches the requested form, so a slug change after\n // mount still refetches instead of pinning the stale config.\n const initialMatches =\n initialForm &&\n ((initialForm as any).slug === formIdOrSlug || (initialForm as any).id === formIdOrSlug)\n if (initialMatches) {\n const siteKey = (initialForm as any).recaptcha_site_key\n if (typeof window !== 'undefined' && siteKey) {\n ;(window as any).__SITE_KIT_RECAPTCHA_SITE_KEY__ = siteKey\n }\n return\n }\n\n const apiUrl = typeof window !== 'undefined'\n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n : 'https://api.sonor.io'\n\n async function fetchForm() {\n try {\n setIsLoading(true)\n setFetchError(null)\n\n // The provider sets __SITE_KIT_API_KEY__ during its render; if this\n // hook's effect happens to run first, poll briefly for it rather than\n // failing permanently and wedging the form on \"API key is required\".\n const readApiKey = (): string | undefined =>\n typeof window !== 'undefined' ? (window as any).__SITE_KIT_API_KEY__ : undefined\n let apiKey = readApiKey()\n for (let i = 0; i < 15 && !apiKey; i++) {\n await new Promise((r) => setTimeout(r, 100))\n apiKey = readApiKey()\n }\n if (!apiKey) {\n throw new Error('API key is required. Provide it via SiteKitLayout or set SONOR_API_KEY.')\n }\n\n const url = `${apiUrl}/api/public/forms/config`\n const init: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n formIdOrSlug: formIdOrSlug,\n }),\n }\n\n // Pass the credential via options.apiKey, NOT an Authorization header.\n // extractApiKey() server-side prefers Authorization: Bearer over x-api-key,\n // so a hand-set Bearer pins the stale build-time seed and defeats\n // sonorFetch's refresh — the seed 401s and the refresh-retry keeps\n // re-sending the same dead Bearer. Letting sonorFetch own x-api-key means\n // the server sees the FRESH token.\n const response = await sonorFetch(url, init, { apiKey, retries: 3, timeoutMs: 15000 })\n\n if (!response.ok) {\n throw new Error(`Failed to fetch form: ${response.statusText}`)\n }\n \n const data = await response.json()\n if (!data) throw new Error('Form not found')\n\n if (typeof window !== 'undefined' && data.recaptcha_site_key) {\n ;(window as any).__SITE_KIT_RECAPTCHA_SITE_KEY__ = data.recaptcha_site_key\n }\n\n setForm(normalizeFormConfig(data))\n\n // Keep what the visitor has already typed. A slug that changes while\n // the form is being filled in used to reset every value; form-values.ts\n // has the precedence and why that case is normal rather than exotic.\n const nextFields = (data.fields || []) as Array<{ slug: string; default_value?: unknown }>\n setValuesState((prev) =>\n mergeFormValues({ fields: nextFields, current: prev, initialValues }),\n )\n setErrors((prev) => pruneErrors(prev, nextFields))\n\n } catch (err) {\n setFetchError(err as Error)\n } finally {\n setIsLoading(false)\n }\n }\n \n fetchForm()\n // initialForm intentionally captured once — server config for THIS render\n // of THIS form; a changed slug refetches, a re-created object must not.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formIdOrSlug, projectId])\n \n // All fields\n const allFields = useMemo(() => form?.fields || [], [form])\n \n // Fields for current step\n const fields = useMemo(() => {\n if (!isMultiStep) return allFields\n \n const currentStepConfig = form?.steps?.find(s => s.step_number === step)\n if (!currentStepConfig) return allFields\n \n return allFields.filter(f => f.step_id === currentStepConfig.id)\n }, [form, step, allFields, isMultiStep])\n \n // Visibility and validation come from field-rules.ts, shared with\n // FormClient. These wrappers only bind the current values.\n const isFieldVisible = useCallback(\n (field: FormField): boolean => fieldRules.isFieldVisible(field, values),\n [values],\n )\n\n // Visible fields only\n const visibleFields = useMemo(() => {\n return fields.filter(isFieldVisible)\n }, [fields, isFieldVisible])\n \n // Validate a single field\n const validateField = useCallback(\n (field: FormField): string | null => fieldRules.validateField(field, values, isFieldVisible),\n [values, isFieldVisible],\n )\n\n const fieldBySlug = useMemo(\n () => new Map(allFields.map((f) => [f.slug, f] as const)),\n [allFields],\n )\n\n const {\n trackStepChange,\n trackComplete,\n trackFieldFocus: trackFocus,\n trackFieldBlur,\n trackFieldChange,\n } = useFormTracking({\n formId: form?.id || '',\n totalSteps,\n enabled: trackAnalytics,\n isFieldComplete: (slug) => {\n const field = fieldBySlug.get(slug)\n return field ? fieldRules.isFieldComplete(field, values, isFieldVisible) : false\n },\n })\n // The first field focus starts loading reCAPTCHA (see recaptcha-warmup.ts).\n const trackFieldFocus = useRecaptchaWarmup(form, trackFocus)\n\n // Validate current step\n const validate = useCallback((): boolean => {\n const newErrors: Record<string, string> = {}\n \n for (const field of fields) {\n const error = validateField(field)\n if (error) {\n newErrors[field.slug] = error\n }\n }\n \n setErrors(newErrors)\n return Object.keys(newErrors).length === 0\n }, [fields, validateField])\n\n // Validate EVERY field across all steps — used on final submit so a required\n // field left empty on an earlier step cannot slip through.\n const validateAll = useCallback((): boolean => {\n const newErrors: Record<string, string> = {}\n for (const field of allFields) {\n const error = validateField(field)\n if (error) newErrors[field.slug] = error\n }\n setErrors(newErrors)\n return Object.keys(newErrors).length === 0\n }, [allFields, validateField])\n\n // Visible field values only — never submit a value from a conditionally-hidden field.\n const buildVisibleValues = useCallback((): Record<string, unknown> => {\n const out: Record<string, unknown> = {}\n for (const field of allFields) {\n if (!isFieldVisible(field)) continue\n if (field.slug in values) out[field.slug] = values[field.slug]\n }\n return out\n }, [allFields, values, isFieldVisible])\n\n // Set single field value\n const setFieldValue = useCallback((key: string, value: unknown) => {\n setValuesState(prev => ({ ...prev, [key]: value }))\n trackFieldChange(key)\n // Clear error when field changes\n setErrors(prev => {\n if (prev[key]) {\n const next = { ...prev }\n delete next[key]\n return next\n }\n return prev\n })\n }, [trackFieldChange])\n \n // Set multiple values\n const setValues = useCallback((newValues: Record<string, unknown>) => {\n setValuesState(prev => ({ ...prev, ...newValues }))\n }, [])\n \n // Clear all errors\n const clearErrors = useCallback(() => {\n setErrors({})\n }, [])\n \n // Step navigation\n const canGoNext = step < totalSteps\n const canGoPrev = step > 1\n const isLastStep = step === totalSteps\n const progress = Math.round((step / totalSteps) * 100)\n \n const nextStep = useCallback((): boolean => {\n if (!validate()) return false\n \n if (step < totalSteps) {\n const newStep = step + 1\n setStep(newStep)\n trackStepChange(newStep)\n return true\n }\n return false\n }, [step, totalSteps, validate, trackStepChange])\n \n const prevStep = useCallback(() => {\n if (step > 1) {\n const newStep = step - 1\n setStep(newStep)\n trackStepChange(newStep)\n }\n }, [step, trackStepChange])\n \n const goToStep = useCallback((targetStep: number) => {\n if (targetStep >= 1 && targetStep <= totalSteps) {\n setStep(targetStep)\n trackStepChange(targetStep)\n }\n }, [totalSteps, trackStepChange])\n \n // Submit form\n const submit = useCallback(async () => {\n if (!form) return\n // Re-entrancy guard — blocks a concurrent double-submit in the same tick.\n if (isSubmittingRef.current) return\n if (!validateAll()) return\n\n isSubmittingRef.current = true\n setIsSubmitting(true)\n setSubmitError(null)\n\n try {\n const data = await submitForm({\n config: form,\n values: buildVisibleValues(),\n honeypotValue: '',\n formLoadedAt: formLoadedAt.current,\n })\n\n trackComplete()\n setIsComplete(true)\n onSuccess?.(data)\n\n const finalRedirect = redirectUrl !== false\n ? (redirectUrl || form.redirect_url)\n : undefined\n if (finalRedirect) {\n window.location.href = finalRedirect\n }\n } catch (error) {\n console.error('[useForm] Submission error:', error)\n setSubmitError('Something went wrong sending your submission. Please try again.')\n onError?.(error as Error)\n } finally {\n isSubmittingRef.current = false\n setIsSubmitting(false)\n }\n }, [form, validateAll, buildVisibleValues, trackComplete, onSuccess, onError, redirectUrl])\n \n // Reset form\n const reset = useCallback(() => {\n setValuesState(initialValues)\n setErrors({})\n setStep(1)\n setIsComplete(false)\n setSubmitError(null)\n }, [initialValues])\n \n return {\n form,\n isLoading,\n fetchError,\n submitError,\n\n allFields,\n fields,\n visibleFields,\n \n values,\n errors,\n setFieldValue,\n setValues,\n clearErrors,\n \n step,\n totalSteps,\n isMultiStep,\n progress,\n \n nextStep,\n prevStep,\n goToStep,\n canGoNext,\n canGoPrev,\n isLastStep,\n \n validate,\n validateField,\n isFieldVisible,\n \n submit,\n isSubmitting,\n isComplete,\n reset,\n\n trackFieldFocus,\n trackFieldBlur,\n }\n}\n"]}
|
package/dist/chunk-6PJTLBRR.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// src/seo/ManagedScripts.tsx
|
|
2
|
-
function ManagedScripts(_props) {
|
|
3
|
-
return null;
|
|
4
|
-
}
|
|
5
|
-
function ManagedNoScripts(_props) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export { ManagedNoScripts, ManagedScripts };
|
|
10
|
-
//# sourceMappingURL=chunk-6PJTLBRR.mjs.map
|
|
11
|
-
//# sourceMappingURL=chunk-6PJTLBRR.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/seo/ManagedScripts.tsx"],"names":[],"mappings":";AAeO,SAAS,eAAe,MAAA,EAAmC;AAChE,EAAA,OAAO,IAAA;AACT;AAKO,SAAS,iBAAiB,MAAA,EAAqD;AACpF,EAAA,OAAO,IAAA;AACT","file":"chunk-6PJTLBRR.mjs","sourcesContent":["import * as React from 'react'\nimport type { ManagedScriptsProps } from './types'\n\n/**\n * @deprecated The managed-scripts feature is retired (2026-06): scripts belong\n * in the site's own code via next/script, not in a Portal-managed table. The\n * Portal admin endpoints are removed and the table is empty; this component\n * now always renders null and is kept only so existing imports keep compiling.\n *\n * Perf note (2026-07): the previous \"stub\" still fetched\n * `/api/public/seo/scripts` on the server for every position on every page\n * render — two wasted API round-trips per page (SiteKitLayout renders head +\n * body-end) that could delay TTFB on dynamic/ISR routes and spam build logs.\n * It is now a true no-op: no fetch, no Suspense.\n */\nexport function ManagedScripts(_props: ManagedScriptsProps): null {\n return null\n}\n\n/**\n * @deprecated See {@link ManagedScripts} — retired, always renders null.\n */\nexport function ManagedNoScripts(_props: { projectId?: string; path?: string }): null {\n return null\n}\n\nexport default ManagedScripts\n"]}
|
package/dist/chunk-6XNEGG5B.mjs
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import 'server-only';
|
|
2
|
-
|
|
3
|
-
// src/server/server-fetch.ts
|
|
4
|
-
var DEFAULT_API_URL = "https://api.sonor.io";
|
|
5
|
-
var DEFAULT_REVALIDATE = 86400;
|
|
6
|
-
var DEFAULT_MAX_ATTEMPTS = 6;
|
|
7
|
-
function resolveServerApiConfig(options = {}) {
|
|
8
|
-
const apiKey = options.apiKey || process.env.SONOR_API_KEY || "";
|
|
9
|
-
if (!apiKey) return null;
|
|
10
|
-
const apiUrl = (options.apiUrl || process.env.SONOR_API_URL || process.env.NEXT_PUBLIC_SONOR_API_URL || DEFAULT_API_URL).replace(/\/+$/, "");
|
|
11
|
-
return { apiUrl, apiKey };
|
|
12
|
-
}
|
|
13
|
-
function requireServerApiConfig(options = {}, errorMessage = "@sonordev/site-kit: SONOR_API_KEY environment variable is required for server-side functions") {
|
|
14
|
-
const config = resolveServerApiConfig(options);
|
|
15
|
-
if (!config) throw new Error(errorMessage);
|
|
16
|
-
return config;
|
|
17
|
-
}
|
|
18
|
-
function resolveApiOrigin(apiUrl) {
|
|
19
|
-
const url = apiUrl || process.env.SONOR_API_URL || DEFAULT_API_URL;
|
|
20
|
-
try {
|
|
21
|
-
return new URL(url.replace(/\/+$/, "")).origin;
|
|
22
|
-
} catch {
|
|
23
|
-
return DEFAULT_API_URL;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
var RETRYABLE_HTTP = /* @__PURE__ */ new Set([429, 502, 503]);
|
|
27
|
-
var DEFAULT_ATTEMPT_TIMEOUT_MS = 1e4;
|
|
28
|
-
var DEFAULT_TOTAL_TIMEOUT_MS = 3e4;
|
|
29
|
-
function attemptSignal(budgetMs, callerSignal) {
|
|
30
|
-
if (typeof AbortSignal === "undefined" || typeof AbortSignal.timeout !== "function") {
|
|
31
|
-
return callerSignal ?? void 0;
|
|
32
|
-
}
|
|
33
|
-
const timeout = AbortSignal.timeout(Math.max(1, budgetMs));
|
|
34
|
-
if (!callerSignal) return timeout;
|
|
35
|
-
return typeof AbortSignal.any === "function" ? AbortSignal.any([timeout, callerSignal]) : timeout;
|
|
36
|
-
}
|
|
37
|
-
function sleep(ms) {
|
|
38
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
39
|
-
}
|
|
40
|
-
async function serverApiFetch(path, options = {}) {
|
|
41
|
-
const {
|
|
42
|
-
method = "GET",
|
|
43
|
-
body,
|
|
44
|
-
headers: extraHeaders = {},
|
|
45
|
-
revalidate = DEFAULT_REVALIDATE,
|
|
46
|
-
tags,
|
|
47
|
-
apiKey: overrideApiKey,
|
|
48
|
-
apiUrl: overrideApiUrl,
|
|
49
|
-
retry = true,
|
|
50
|
-
maxAttempts = DEFAULT_MAX_ATTEMPTS,
|
|
51
|
-
timeoutMs = DEFAULT_ATTEMPT_TIMEOUT_MS,
|
|
52
|
-
totalTimeoutMs = DEFAULT_TOTAL_TIMEOUT_MS,
|
|
53
|
-
requireKey = false,
|
|
54
|
-
logPrefix = "@sonordev/site-kit",
|
|
55
|
-
init
|
|
56
|
-
} = options;
|
|
57
|
-
const overrides = { apiKey: overrideApiKey, apiUrl: overrideApiUrl };
|
|
58
|
-
let config;
|
|
59
|
-
if (requireKey) {
|
|
60
|
-
config = requireServerApiConfig(overrides);
|
|
61
|
-
} else {
|
|
62
|
-
const resolved = resolveServerApiConfig(overrides);
|
|
63
|
-
if (!resolved) {
|
|
64
|
-
console.warn(`${logPrefix}: Missing SONOR_API_KEY \u2014 request to ${path} skipped.`);
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
config = resolved;
|
|
68
|
-
}
|
|
69
|
-
const { apiUrl, apiKey } = config;
|
|
70
|
-
const url = `${apiUrl}${path.startsWith("/") ? path : `/${path}`}`;
|
|
71
|
-
const serializedBody = body === void 0 ? void 0 : typeof body === "string" ? body : JSON.stringify(body);
|
|
72
|
-
const attempts = retry ? Math.max(1, maxAttempts) : 1;
|
|
73
|
-
const deadline = Date.now() + Math.max(1, totalTimeoutMs);
|
|
74
|
-
for (let attempt = 1; attempt <= attempts; attempt++) {
|
|
75
|
-
const remaining = deadline - Date.now();
|
|
76
|
-
if (remaining <= 0) {
|
|
77
|
-
console.warn(
|
|
78
|
-
`${logPrefix}: Time budget (${totalTimeoutMs}ms) exhausted for ${method} ${path} after ${attempt - 1} attempt(s).`
|
|
79
|
-
);
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
try {
|
|
83
|
-
const response = await fetch(url, {
|
|
84
|
-
...init,
|
|
85
|
-
signal: attemptSignal(Math.min(timeoutMs, remaining), init?.signal),
|
|
86
|
-
method,
|
|
87
|
-
headers: {
|
|
88
|
-
"Content-Type": "application/json",
|
|
89
|
-
"x-api-key": apiKey,
|
|
90
|
-
...extraHeaders
|
|
91
|
-
},
|
|
92
|
-
...serializedBody !== void 0 ? { body: serializedBody } : {},
|
|
93
|
-
next: { revalidate, ...tags?.length ? { tags } : {} }
|
|
94
|
-
});
|
|
95
|
-
if (retry && RETRYABLE_HTTP.has(response.status) && attempt < attempts) {
|
|
96
|
-
await response.text().catch(() => {
|
|
97
|
-
});
|
|
98
|
-
const retryAfter = response.headers.get("retry-after");
|
|
99
|
-
let delayMs = 250 * attempt * attempt + Math.random() * 200;
|
|
100
|
-
if (retryAfter) {
|
|
101
|
-
const sec = parseInt(retryAfter, 10);
|
|
102
|
-
if (!Number.isNaN(sec) && sec > 0) delayMs = Math.max(delayMs, sec * 1e3);
|
|
103
|
-
}
|
|
104
|
-
await sleep(Math.min(delayMs, 1e4, Math.max(0, deadline - Date.now())));
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (!response.ok) {
|
|
108
|
-
let detail = response.statusText;
|
|
109
|
-
try {
|
|
110
|
-
const err = await response.json().catch(() => ({}));
|
|
111
|
-
if (err?.message) detail = err.message;
|
|
112
|
-
} catch {
|
|
113
|
-
}
|
|
114
|
-
console.warn(`${logPrefix}: API error ${response.status} ${method} ${path}: ${detail}`);
|
|
115
|
-
return null;
|
|
116
|
-
}
|
|
117
|
-
return await response.json();
|
|
118
|
-
} catch (error) {
|
|
119
|
-
if (retry && attempt < attempts && Date.now() < deadline) {
|
|
120
|
-
await sleep(
|
|
121
|
-
Math.min(200 * attempt * attempt + Math.random() * 150, Math.max(0, deadline - Date.now()))
|
|
122
|
-
);
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
console.warn(
|
|
126
|
-
`${logPrefix}: Network error for ${url}:`,
|
|
127
|
-
error instanceof Error ? error.message : error
|
|
128
|
-
);
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export { requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch };
|
|
136
|
-
//# sourceMappingURL=chunk-6XNEGG5B.mjs.map
|
|
137
|
-
//# sourceMappingURL=chunk-6XNEGG5B.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/server-fetch.ts"],"names":[],"mappings":"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","file":"chunk-6XNEGG5B.mjs","sourcesContent":["/**\n * @sonordev/site-kit/server — Shared server-fetch primitive\n *\n * SECURITY: Server-only. Reads SONOR_API_KEY from process.env and injects it as\n * `x-api-key`. Importing this module into a client component is a hard build\n * error (see `import 'server-only'` below) — the API key must never reach the\n * browser. Project is resolved by the Portal from the API key; sites never send\n * or read a project ID (x-api-key only).\n *\n * This is the SINGLE SOURCE OF TRUTH for site-kit's server data plane. It is the\n * canonical fetcher that:\n * - core `seo/server-api.ts` builds its cached SEO fetchers on,\n * - `@sonordev/agency-site-kit` builds its portfolio fetchers on, and\n * - `@sonordev/re-site-kit` (real-estate) builds its listing fetchers on.\n *\n * The retry/backoff + config-resolution logic here was extracted from\n * `seo/server-api.ts` so there is exactly one copy — do NOT re-fork it into a\n * sibling package. Import it from `@sonordev/site-kit/server` instead.\n */\n\nimport 'server-only'\n\nconst DEFAULT_API_URL = 'https://api.sonor.io'\nconst DEFAULT_REVALIDATE = 86400 // 24h — Portal data rarely changes; on-demand revalidate busts it\nconst DEFAULT_MAX_ATTEMPTS = 6\n\n/** Resolved Portal API config. */\nexport interface ServerApiConfig {\n apiUrl: string\n apiKey: string\n}\n\nexport interface ResolveServerApiConfigOptions {\n /** Override the API key (e.g. passed from a layout prop). Falls back to env. */\n apiKey?: string\n /** Override the API URL. Falls back to env, then https://api.sonor.io. */\n apiUrl?: string\n}\n\n/**\n * Resolve Portal API config from overrides → env. Returns null (does NOT throw)\n * when no API key is available, so callers that prefer to degrade gracefully\n * (e.g. portfolio fetchers) can warn-and-skip.\n *\n * Sonor-only: the deprecated `UPTRADE_API_KEY` is intentionally NOT read. The\n * Uptrade brand and the `@uptrademedia/site-kit` package are fully retired and\n * nothing runs on them, so there is no legacy key left to honor.\n */\nexport function resolveServerApiConfig(\n options: ResolveServerApiConfigOptions = {},\n): ServerApiConfig | null {\n const apiKey = options.apiKey || process.env.SONOR_API_KEY || ''\n\n if (!apiKey) return null\n\n const apiUrl = (\n options.apiUrl ||\n process.env.SONOR_API_URL ||\n process.env.NEXT_PUBLIC_SONOR_API_URL ||\n DEFAULT_API_URL\n ).replace(/\\/+$/, '')\n\n return { apiUrl, apiKey }\n}\n\n/**\n * Like {@link resolveServerApiConfig} but throws when no API key is available.\n * Used by callers that treat a missing key as a hard configuration error\n * (e.g. core SEO server functions).\n */\nexport function requireServerApiConfig(\n options: ResolveServerApiConfigOptions = {},\n errorMessage = '@sonordev/site-kit: SONOR_API_KEY environment variable is required for server-side functions',\n): ServerApiConfig {\n const config = resolveServerApiConfig(options)\n if (!config) throw new Error(errorMessage)\n return config\n}\n\n/**\n * Origin for the Portal API preconnect/dns-prefetch hints (handles a custom\n * SONOR_API_URL in staging). Shared by SiteKitLayout and AgencySiteKitLayout so\n * the origin-resolution logic lives in one place.\n */\nexport function resolveApiOrigin(apiUrl?: string): string {\n const url = apiUrl || process.env.SONOR_API_URL || DEFAULT_API_URL\n try {\n return new URL(url.replace(/\\/+$/, '')).origin\n } catch {\n return DEFAULT_API_URL\n }\n}\n\n/** Transient failures during Next SSG (parallel workers, one egress IP). */\nconst RETRYABLE_HTTP = new Set([429, 502, 503])\n\n/**\n * Per-attempt and whole-call time budgets.\n *\n * Without these the retry ladder is unbounded: 6 attempts x Node's undici\n * default (~300s of header timeout) plus backoff can keep a single call alive\n * for many minutes. That is not a theoretical worst case — it is how a\n * marketing site loses pages. Next gives a route 60s before it kills and\n * retries it, and on a slow CI runner a route that exhausts its retries is\n * dropped from the build entirely, sitemap and all.\n *\n * Bounding here rather than at each call site is deliberate: this module is\n * the single source of truth for the Sonor server data plane, and\n * `@sonordev/agency-site-kit` delegates to it, so one ceiling covers every\n * consumer instead of each site hand-rolling a wrapper.\n */\nconst DEFAULT_ATTEMPT_TIMEOUT_MS = 10_000\nconst DEFAULT_TOTAL_TIMEOUT_MS = 30_000\n\n/**\n * Abort signal for one attempt: our timeout, combined with any caller signal.\n *\n * Passing a signal is safe for Next's fetch cache — `patch-fetch` destructures\n * `signal` out of init and drops it only while revalidating a stale entry, so\n * ISR/tag caching is unaffected. Guarded on `AbortSignal.timeout` existing, the\n * same way mint-site-token.ts guards it.\n */\nfunction attemptSignal(budgetMs: number, callerSignal?: AbortSignal | null): AbortSignal | undefined {\n if (typeof AbortSignal === 'undefined' || typeof AbortSignal.timeout !== 'function') {\n return callerSignal ?? undefined\n }\n const timeout = AbortSignal.timeout(Math.max(1, budgetMs))\n if (!callerSignal) return timeout\n return typeof AbortSignal.any === 'function'\n ? AbortSignal.any([timeout, callerSignal])\n : timeout\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise<void>((resolve) => setTimeout(resolve, ms))\n}\n\nexport interface ServerFetchOptions {\n /** HTTP method. Defaults to 'GET'. */\n method?: string\n /**\n * Request body. An object/array is JSON.stringify-ed; a string is sent as-is.\n * Omit for GET.\n */\n body?: unknown\n /** Additional headers merged over the defaults (Content-Type + x-api-key). */\n headers?: Record<string, string>\n /**\n * ISR revalidation interval in seconds. Defaults to 24h. Pass 0 to disable\n * caching for this call.\n */\n revalidate?: number\n /**\n * Next.js cache tags for on-demand invalidation. Lets a single revalidateTag()\n * bust every tagged fetch (the pattern agency-site-kit's PORTFOLIO_CACHE_TAG\n * relies on).\n */\n tags?: string[]\n /** Override the API key for this call. Falls back to env. */\n apiKey?: string\n /** Override the API URL for this call. Falls back to env. */\n apiUrl?: string\n /**\n * Retry transient 429/502/503 (and network errors) with exponential backoff.\n * Defaults to true — the right default for build-time SSG. Pass false to\n * preserve single-attempt semantics.\n */\n retry?: boolean\n /** Max attempts when retrying. Defaults to 6. */\n maxAttempts?: number\n /** Time budget for a single attempt, in ms. Defaults to 10000. */\n timeoutMs?: number\n /**\n * Time budget for the whole call including retries and backoff, in ms.\n * Defaults to 30000. Once exceeded, no further attempt is started.\n */\n totalTimeoutMs?: number\n /**\n * When true, throw if no API key is configured. When false (default), warn and\n * return null so callers can degrade gracefully.\n */\n requireKey?: boolean\n /** Prefix for warning/error logs, so each consumer is identifiable. */\n logPrefix?: string\n /** Extra fetch init passthrough (cache, signal, etc.). */\n init?: RequestInit\n}\n\n/**\n * The canonical Portal API fetcher.\n *\n * - Injects `x-api-key` automatically (resolved from overrides → env)\n * - JSON request/response\n * - Next.js ISR caching via `next.revalidate` (+ optional cache `tags`)\n * - Optional retry/backoff on transient failures (default on)\n * - Returns null on failure (or missing key, unless `requireKey`) instead of\n * throwing, so a single bad fetch never crashes a render.\n */\nexport async function serverApiFetch<T>(\n path: string,\n options: ServerFetchOptions = {},\n): Promise<T | null> {\n const {\n method = 'GET',\n body,\n headers: extraHeaders = {},\n revalidate = DEFAULT_REVALIDATE,\n tags,\n apiKey: overrideApiKey,\n apiUrl: overrideApiUrl,\n retry = true,\n maxAttempts = DEFAULT_MAX_ATTEMPTS,\n timeoutMs = DEFAULT_ATTEMPT_TIMEOUT_MS,\n totalTimeoutMs = DEFAULT_TOTAL_TIMEOUT_MS,\n requireKey = false,\n logPrefix = '@sonordev/site-kit',\n init,\n } = options\n\n const overrides = { apiKey: overrideApiKey, apiUrl: overrideApiUrl }\n let config: ServerApiConfig\n if (requireKey) {\n config = requireServerApiConfig(overrides)\n } else {\n const resolved = resolveServerApiConfig(overrides)\n if (!resolved) {\n console.warn(`${logPrefix}: Missing SONOR_API_KEY — request to ${path} skipped.`)\n return null\n }\n config = resolved\n }\n\n const { apiUrl, apiKey } = config\n const url = `${apiUrl}${path.startsWith('/') ? path : `/${path}`}`\n\n const serializedBody =\n body === undefined\n ? undefined\n : typeof body === 'string'\n ? body\n : JSON.stringify(body)\n\n const attempts = retry ? Math.max(1, maxAttempts) : 1\n const deadline = Date.now() + Math.max(1, totalTimeoutMs)\n\n for (let attempt = 1; attempt <= attempts; attempt++) {\n const remaining = deadline - Date.now()\n if (remaining <= 0) {\n console.warn(\n `${logPrefix}: Time budget (${totalTimeoutMs}ms) exhausted for ${method} ${path} after ${attempt - 1} attempt(s).`,\n )\n return null\n }\n\n try {\n const response = await fetch(url, {\n ...init,\n signal: attemptSignal(Math.min(timeoutMs, remaining), init?.signal),\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n ...extraHeaders,\n },\n ...(serializedBody !== undefined ? { body: serializedBody } : {}),\n next: { revalidate, ...(tags?.length ? { tags } : {}) },\n } as RequestInit)\n\n if (retry && RETRYABLE_HTTP.has(response.status) && attempt < attempts) {\n await response.text().catch(() => {})\n const retryAfter = response.headers.get('retry-after')\n let delayMs = 250 * attempt * attempt + Math.random() * 200\n if (retryAfter) {\n const sec = parseInt(retryAfter, 10)\n if (!Number.isNaN(sec) && sec > 0) delayMs = Math.max(delayMs, sec * 1000)\n }\n // Never sleep past the deadline — a backoff that outlives the budget\n // just burns the caller's remaining time for nothing.\n await sleep(Math.min(delayMs, 10_000, Math.max(0, deadline - Date.now())))\n continue\n }\n\n if (!response.ok) {\n let detail = response.statusText\n try {\n const err = await response.json().catch(() => ({}))\n if (err?.message) detail = err.message\n } catch {\n /* ignore */\n }\n console.warn(`${logPrefix}: API error ${response.status} ${method} ${path}: ${detail}`)\n return null\n }\n\n return (await response.json()) as T\n } catch (error) {\n if (retry && attempt < attempts && Date.now() < deadline) {\n await sleep(\n Math.min(200 * attempt * attempt + Math.random() * 150, Math.max(0, deadline - Date.now())),\n )\n continue\n }\n console.warn(\n `${logPrefix}: Network error for ${url}:`,\n error instanceof Error ? error.message : error,\n )\n return null\n }\n }\n\n return null\n}\n"]}
|