@sonordev/site-kit 6.4.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 -66
- 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 +6 -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 -227
- 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 -36
- 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 -75
- 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 -426
- 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 -26
- package/dist/layout/index.d.ts +0 -1
- package/dist/layout/index.js +43 -40
- package/dist/layout/types.d.ts +19 -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 -60
- package/dist/portfolio/contract.js +2 -43
- 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 -18
- 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 -317
- 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 +8 -1
- 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 +175 -147
- package/skills/site-kit/SKILL.md +9 -3
- package/dist/AnalyticsProvider-4K5T7OQ7.mjs +0 -12
- package/dist/AnalyticsProvider-4K5T7OQ7.mjs.map +0 -1
- package/dist/AnalyticsProvider-QXZN5O6D.js +0 -33
- package/dist/AnalyticsProvider-QXZN5O6D.js.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-BUG2TOHS.mjs +0 -51
- package/dist/ArticleViewTracker-BUG2TOHS.mjs.map +0 -1
- package/dist/ArticleViewTracker-FFMHR7AY.js +0 -54
- package/dist/ArticleViewTracker-FFMHR7AY.js.map +0 -1
- package/dist/ChatWidget-CRQPBDEF.mjs +0 -17
- package/dist/ChatWidget-CRQPBDEF.mjs.map +0 -1
- package/dist/ChatWidget-XFYLVXAX.js +0 -34
- package/dist/ChatWidget-XFYLVXAX.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-S234YAT2.js +0 -21
- package/dist/EngageWidget-S234YAT2.js.map +0 -1
- package/dist/EngageWidget-SQU4T7CI.mjs +0 -12
- package/dist/EngageWidget-SQU4T7CI.mjs.map +0 -1
- package/dist/FileField-HNEBEBLB.mjs +0 -85
- package/dist/FileField-HNEBEBLB.mjs.map +0 -1
- package/dist/FileField-XG4EYAZW.js +0 -91
- package/dist/FileField-XG4EYAZW.js.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-IODREOPN.js +0 -761
- package/dist/FormSpotlight-IODREOPN.js.map +0 -1
- package/dist/FormSpotlight-VKD774PZ.mjs +0 -756
- package/dist/FormSpotlight-VKD774PZ.mjs.map +0 -1
- package/dist/FormStage-37KKZQH4.js +0 -422
- package/dist/FormStage-37KKZQH4.js.map +0 -1
- package/dist/FormStage-PRZNRYNC.mjs +0 -420
- package/dist/FormStage-PRZNRYNC.mjs.map +0 -1
- package/dist/ManagedForm-4PZOCKCV.mjs +0 -16
- package/dist/ManagedForm-4PZOCKCV.mjs.map +0 -1
- package/dist/ManagedForm-JCMEE626.js +0 -25
- package/dist/ManagedForm-JCMEE626.js.map +0 -1
- package/dist/ManagedNewsletterForm-CTC33B2U.js +0 -66
- package/dist/ManagedNewsletterForm-CTC33B2U.js.map +0 -1
- package/dist/ManagedNewsletterForm-KMZG24OE.mjs +0 -64
- package/dist/ManagedNewsletterForm-KMZG24OE.mjs.map +0 -1
- package/dist/SignalCore-YHT7WPXV.js +0 -326
- package/dist/SignalCore-YHT7WPXV.js.map +0 -1
- package/dist/SignalCore-YIPKKIUG.mjs +0 -324
- package/dist/SignalCore-YIPKKIUG.mjs.map +0 -1
- package/dist/SitemapSync-GN4OXIM2.js +0 -18
- package/dist/SitemapSync-GN4OXIM2.js.map +0 -1
- package/dist/SitemapSync-NG763CGN.mjs +0 -9
- package/dist/SitemapSync-NG763CGN.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 -14
- 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-24LFAQEG.mjs +0 -480
- package/dist/chunk-24LFAQEG.mjs.map +0 -1
- package/dist/chunk-2FEQ6TYD.mjs +0 -37
- package/dist/chunk-2FEQ6TYD.mjs.map +0 -1
- package/dist/chunk-3AOKYAZ2.js +0 -135
- package/dist/chunk-3AOKYAZ2.js.map +0 -1
- package/dist/chunk-3DWIYCQX.js +0 -30
- package/dist/chunk-3DWIYCQX.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-4BEGKFMN.js +0 -133
- package/dist/chunk-4BEGKFMN.js.map +0 -1
- package/dist/chunk-4C3INRHE.mjs +0 -1073
- package/dist/chunk-4C3INRHE.mjs.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-5BARLEAI.mjs +0 -102
- package/dist/chunk-5BARLEAI.mjs.map +0 -1
- package/dist/chunk-5F2FIM5A.mjs +0 -135
- package/dist/chunk-5F2FIM5A.mjs.map +0 -1
- package/dist/chunk-5RNAUYWE.js +0 -50
- package/dist/chunk-5RNAUYWE.js.map +0 -1
- package/dist/chunk-5SANRSX3.mjs +0 -17
- package/dist/chunk-5SANRSX3.mjs.map +0 -1
- package/dist/chunk-5T3J24K4.mjs +0 -131
- package/dist/chunk-5T3J24K4.mjs.map +0 -1
- package/dist/chunk-5W4S7XQD.js +0 -141
- package/dist/chunk-5W4S7XQD.js.map +0 -1
- package/dist/chunk-5XFFUP6D.js +0 -100
- package/dist/chunk-5XFFUP6D.js.map +0 -1
- package/dist/chunk-5YVQWLSQ.mjs +0 -47
- package/dist/chunk-5YVQWLSQ.mjs.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-6PJTLBRR.mjs +0 -11
- package/dist/chunk-6PJTLBRR.mjs.map +0 -1
- package/dist/chunk-6QPKC6XP.mjs +0 -1416
- package/dist/chunk-6QPKC6XP.mjs.map +0 -1
- package/dist/chunk-6XNEGG5B.mjs +0 -137
- package/dist/chunk-6XNEGG5B.mjs.map +0 -1
- package/dist/chunk-7K6L33BX.mjs +0 -24842
- 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-A6UYV475.mjs +0 -45
- package/dist/chunk-A6UYV475.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-AS2HUIDW.mjs +0 -16
- package/dist/chunk-AS2HUIDW.mjs.map +0 -1
- package/dist/chunk-ATPQ6264.js +0 -24860
- package/dist/chunk-B22WSN4L.mjs +0 -59
- package/dist/chunk-B22WSN4L.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-BI7DH42Z.mjs +0 -101
- package/dist/chunk-BI7DH42Z.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-C7J4XLBN.js +0 -134
- package/dist/chunk-C7J4XLBN.js.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-CIB3RHNZ.js +0 -8
- package/dist/chunk-CIB3RHNZ.js.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-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-CUZ3I6CO.js +0 -23
- package/dist/chunk-CUZ3I6CO.js.map +0 -1
- package/dist/chunk-CXAXZFFW.js +0 -157
- package/dist/chunk-CXAXZFFW.js.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-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-EWDWLY74.js +0 -158
- package/dist/chunk-EWDWLY74.js.map +0 -1
- package/dist/chunk-F2GECCK7.js +0 -483
- package/dist/chunk-F2GECCK7.js.map +0 -1
- package/dist/chunk-FCAHV5P3.mjs +0 -45
- package/dist/chunk-FCAHV5P3.mjs.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-GGGX54ZE.js +0 -8071
- package/dist/chunk-GGGX54ZE.js.map +0 -1
- package/dist/chunk-GSRT66PA.js +0 -80
- package/dist/chunk-GSRT66PA.js.map +0 -1
- package/dist/chunk-GSU6VTCZ.mjs +0 -165
- package/dist/chunk-GSU6VTCZ.mjs.map +0 -1
- package/dist/chunk-GXSSFQ5D.js +0 -1677
- package/dist/chunk-GXSSFQ5D.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-HSLPN3QK.js +0 -106
- package/dist/chunk-HSLPN3QK.js.map +0 -1
- package/dist/chunk-HTCNRTN6.js +0 -791
- package/dist/chunk-HTCNRTN6.js.map +0 -1
- package/dist/chunk-HXHDOIV6.js +0 -41
- package/dist/chunk-HXHDOIV6.js.map +0 -1
- 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-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-JONWE26J.js +0 -81
- package/dist/chunk-JONWE26J.js.map +0 -1
- package/dist/chunk-JP5WGL75.js +0 -62
- package/dist/chunk-JP5WGL75.js.map +0 -1
- 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-JXRGIE3V.mjs +0 -1669
- package/dist/chunk-JXRGIE3V.mjs.map +0 -1
- package/dist/chunk-K3PVUXKB.mjs +0 -6
- package/dist/chunk-K3PVUXKB.mjs.map +0 -1
- package/dist/chunk-KHPJ3CEL.js +0 -72
- package/dist/chunk-KHPJ3CEL.js.map +0 -1
- package/dist/chunk-KOPFFKG2.mjs +0 -132
- package/dist/chunk-KOPFFKG2.mjs.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-KZBDH5A3.js +0 -130
- package/dist/chunk-KZBDH5A3.js.map +0 -1
- package/dist/chunk-KZVSB5WE.mjs +0 -21
- package/dist/chunk-KZVSB5WE.mjs.map +0 -1
- package/dist/chunk-LPDXS2B2.mjs +0 -932
- package/dist/chunk-LPDXS2B2.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-M3JCHPK3.mjs +0 -782
- package/dist/chunk-M3JCHPK3.mjs.map +0 -1
- package/dist/chunk-M62L2N5A.mjs +0 -193
- package/dist/chunk-M62L2N5A.mjs.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-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-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-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-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-PRAHDLKT.js +0 -67
- package/dist/chunk-PRAHDLKT.js.map +0 -1
- package/dist/chunk-QAQTDHHT.mjs +0 -1102
- package/dist/chunk-QAQTDHHT.mjs.map +0 -1
- package/dist/chunk-QOKMH2TD.mjs +0 -21
- package/dist/chunk-QOKMH2TD.mjs.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-RH4XEXTK.mjs +0 -323
- 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-RQROZLH3.js +0 -1153
- package/dist/chunk-RQROZLH3.js.map +0 -1
- package/dist/chunk-S5QKNXLQ.js +0 -1430
- package/dist/chunk-S5QKNXLQ.js.map +0 -1
- package/dist/chunk-SBTA6B6Y.mjs +0 -8014
- package/dist/chunk-SBTA6B6Y.mjs.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-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-TIFVAASU.mjs +0 -14279
- package/dist/chunk-TMVKRQGJ.mjs +0 -64
- package/dist/chunk-TMVKRQGJ.mjs.map +0 -1
- package/dist/chunk-TPDDSEL3.mjs +0 -75
- package/dist/chunk-TPDDSEL3.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-U4CYO4NG.js +0 -195
- package/dist/chunk-U4CYO4NG.js.map +0 -1
- package/dist/chunk-U5NFIHLY.js +0 -158
- package/dist/chunk-U5NFIHLY.js.map +0 -1
- package/dist/chunk-UCMMIGC6.mjs +0 -156
- package/dist/chunk-UCMMIGC6.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-USQPRLSG.mjs +0 -151
- package/dist/chunk-USQPRLSG.mjs.map +0 -1
- package/dist/chunk-UZKXOZHR.js +0 -23
- package/dist/chunk-UZKXOZHR.js.map +0 -1
- package/dist/chunk-VDEQVXNV.js +0 -176
- package/dist/chunk-VDEQVXNV.js.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-VMNPLCZB.js +0 -533
- package/dist/chunk-VMNPLCZB.js.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-W7IAG5YD.js +0 -108
- package/dist/chunk-W7IAG5YD.js.map +0 -1
- package/dist/chunk-WIWHM47B.mjs +0 -525
- package/dist/chunk-WIWHM47B.mjs.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-XXSSUCJB.js +0 -14285
- package/dist/chunk-XZHR4E2D.js +0 -83
- package/dist/chunk-XZHR4E2D.js.map +0 -1
- package/dist/chunk-Y2CP5J6Q.js +0 -116
- package/dist/chunk-Y2CP5J6Q.js.map +0 -1
- package/dist/chunk-YACU35MY.js +0 -937
- package/dist/chunk-YACU35MY.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-YRKWJCML.mjs +0 -150
- package/dist/chunk-YRKWJCML.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-ZEBOOUBP.mjs +0 -128
- package/dist/chunk-ZEBOOUBP.mjs.map +0 -1
- package/dist/chunk-ZN4HBK5C.mjs +0 -17
- package/dist/chunk-ZN4HBK5C.mjs.map +0 -1
- package/dist/chunk-ZOBUA65N.js +0 -1079
- package/dist/chunk-ZOBUA65N.js.map +0 -1
- package/dist/chunk-ZUQSVCMD.js +0 -325
- package/dist/chunk-ZVBLXXNJ.mjs +0 -53
- package/dist/chunk-ZVBLXXNJ.mjs.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 -15
- 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 -50
- 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 -11
- 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 -172
- 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 -18
- 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 -105
- package/dist/layout/index.mjs.map +0 -1
- package/dist/layout/types.d.ts.map +0 -1
- package/dist/lib-6GWWPDJR.js +0 -28
- package/dist/lib-BD4KKQBI.mjs +0 -4
- package/dist/lib-N5PD6JNJ.mjs +0 -3
- package/dist/lib-WFB5RLEQ.js +0 -31
- 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 -38
- 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 -10
- 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 -701
- 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-CHXXWO72.mjs +0 -524
- package/dist/web-vitals.attribution-CHXXWO72.mjs.map +0 -1
- package/dist/web-vitals.attribution-SQVZNHN3.js +0 -535
- package/dist/web-vitals.attribution-SQVZNHN3.js.map +0 -1
- package/dist/writeLLMsTxt-IYJILIU3.mjs +0 -11
- package/dist/writeLLMsTxt-SQG4B63X.js +0 -20
- package/scripts/postinstall.cjs +0 -67
package/dist/chunk-HIZJD7TU.mjs
DELETED
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
import { OG_HEIGHT, OG_WIDTH, TITLE_MAX_PX, barTextColor, TITLE_MIN_PX, OG_REPORT_ATTR } from './chunk-YU7QZ3PP.mjs';
|
|
2
|
-
import { applyTrailingSlash, resolveTrailingSlash } from './chunk-C2CTLLIO.mjs';
|
|
3
|
-
|
|
4
|
-
// src/og/template.ts
|
|
5
|
-
function fitScript() {
|
|
6
|
-
return `<script>
|
|
7
|
-
(async function () {
|
|
8
|
-
var report = { fits: true, titlePx: ${TITLE_MAX_PX}, issues: [] };
|
|
9
|
-
function push(msg) { report.fits = false; report.issues.push(msg); }
|
|
10
|
-
try {
|
|
11
|
-
try { await document.fonts.ready; } catch (e) {}
|
|
12
|
-
var h1 = document.querySelector('h1');
|
|
13
|
-
var copy = document.querySelector('.copy');
|
|
14
|
-
var wrap = document.querySelector('.wrap');
|
|
15
|
-
var bar = document.querySelector('.bar');
|
|
16
|
-
|
|
17
|
-
if (h1 && copy && wrap) {
|
|
18
|
-
var cs = getComputedStyle(wrap);
|
|
19
|
-
var avail = wrap.clientHeight - parseFloat(cs.paddingTop || '0') - parseFloat(cs.paddingBottom || '0');
|
|
20
|
-
|
|
21
|
-
// Fit BOTH axes. Height alone is not enough: a single long word
|
|
22
|
-
// ("WORKBENCHES") cannot wrap, so it keeps overflowing the column
|
|
23
|
-
// sideways at a size that fits vertically. Shrinking for either
|
|
24
|
-
// condition is what makes an arbitrary managed title safe to render.
|
|
25
|
-
var tooTall = function () { return copy.scrollHeight > avail; };
|
|
26
|
-
var tooWide = function () { return h1.scrollWidth > copy.clientWidth + 1; };
|
|
27
|
-
var size = ${TITLE_MAX_PX};
|
|
28
|
-
while (size > ${TITLE_MIN_PX} && (tooTall() || tooWide())) {
|
|
29
|
-
size -= 2;
|
|
30
|
-
h1.style.fontSize = size + 'px';
|
|
31
|
-
}
|
|
32
|
-
report.titlePx = size;
|
|
33
|
-
|
|
34
|
-
if (tooTall()) {
|
|
35
|
-
push('title/subtitle block overflows the card by ' + Math.ceil(copy.scrollHeight - avail) +
|
|
36
|
-
'px even at the ' + ${TITLE_MIN_PX} + 'px legibility floor - shorten content.title or content.subtitle');
|
|
37
|
-
}
|
|
38
|
-
if (tooWide()) {
|
|
39
|
-
push('the longest title word still overflows the copy column by ' + Math.ceil(h1.scrollWidth - copy.clientWidth) +
|
|
40
|
-
'px at the ' + ${TITLE_MIN_PX} + 'px floor - shorten it or add a line break');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// The bar is checked on BOTH axes. Width alone missed a real failure: a
|
|
45
|
-
// long segment wrapped INSIDE its span, so scrollWidth never exceeded
|
|
46
|
-
// clientWidth while the text grew past the bar's fixed height and spilled
|
|
47
|
-
// over the subtitle. Segments are nowrap now, which turns that into
|
|
48
|
-
// horizontal overflow the width check sees, and the height check is the
|
|
49
|
-
// belt-and-braces for anything else that grows the bar.
|
|
50
|
-
if (bar) {
|
|
51
|
-
if (bar.scrollWidth > bar.clientWidth + 1) {
|
|
52
|
-
push('bottom bar content overflows by ' + Math.ceil(bar.scrollWidth - bar.clientWidth) +
|
|
53
|
-
'px - drop a content.bar segment or shorten one');
|
|
54
|
-
}
|
|
55
|
-
if (bar.scrollHeight > bar.clientHeight + 1) {
|
|
56
|
-
push('bottom bar content is ' + Math.ceil(bar.scrollHeight - bar.clientHeight) +
|
|
57
|
-
'px taller than the bar - a segment is wrapping; shorten it');
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Nothing may sit outside the frame platforms actually crop to.
|
|
62
|
-
var named = [['kicker', '.kicker'], ['title', 'h1'], ['subtitle', '.sub'], ['hand', '.hand'], ['bar', '.bar']];
|
|
63
|
-
for (var i = 0; i < named.length; i++) {
|
|
64
|
-
var el = document.querySelector(named[i][1]);
|
|
65
|
-
if (!el) continue;
|
|
66
|
-
var r = el.getBoundingClientRect();
|
|
67
|
-
if (r.top < -1 || r.bottom > ${OG_HEIGHT} + 1) {
|
|
68
|
-
push(named[i][0] + ' sits outside the ' + ${OG_HEIGHT} + 'px frame (top ' +
|
|
69
|
-
Math.round(r.top) + ', bottom ' + Math.round(r.bottom) + ')');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
} catch (e) {
|
|
73
|
-
push('fitter failed: ' + (e && e.message ? e.message : String(e)));
|
|
74
|
-
}
|
|
75
|
-
document.documentElement.setAttribute('${OG_REPORT_ATTR}', JSON.stringify(report));
|
|
76
|
-
})();
|
|
77
|
-
</script>`;
|
|
78
|
-
}
|
|
79
|
-
function esc(s) {
|
|
80
|
-
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
81
|
-
}
|
|
82
|
-
function fontLink(config) {
|
|
83
|
-
const fonts = config.fonts?.length ? config.fonts : [{ family: "Barlow Condensed", weights: [800] }];
|
|
84
|
-
const families = fonts.map((f) => `family=${f.family.replace(/ /g, "+")}:wght@${(f.weights || [700]).join(";")}`).join("&");
|
|
85
|
-
return `<link href="https://fonts.googleapis.com/css2?${families}&display=block" rel="stylesheet">`;
|
|
86
|
-
}
|
|
87
|
-
function displayFamily(config) {
|
|
88
|
-
return config.fonts?.[0]?.family || "Barlow Condensed";
|
|
89
|
-
}
|
|
90
|
-
function handFamily(config) {
|
|
91
|
-
const fonts = config.fonts || [];
|
|
92
|
-
return fonts.length > 1 ? fonts[fonts.length - 1].family : displayFamily(config);
|
|
93
|
-
}
|
|
94
|
-
function muted(theme) {
|
|
95
|
-
return theme.muted || theme.text;
|
|
96
|
-
}
|
|
97
|
-
function backgroundLayers(config) {
|
|
98
|
-
if (!config.background) return "";
|
|
99
|
-
const { image, blur = 0, scrim } = config.background;
|
|
100
|
-
return `
|
|
101
|
-
<div class="bg"><img src="${esc(image)}" style="filter:blur(${blur}px)"></div>
|
|
102
|
-
${scrim ? `<div class="scrim" style="background:${esc(scrim)}"></div>` : ""}`;
|
|
103
|
-
}
|
|
104
|
-
function barHtml(content, theme) {
|
|
105
|
-
if (!content.bar?.length) return "";
|
|
106
|
-
const segs = content.bar.map((s) => `<span>${esc(s)}</span>`).join('<span class="dot"></span>');
|
|
107
|
-
return `<div class="bar" style="background:${esc(theme.accent)}">${segs}</div>`;
|
|
108
|
-
}
|
|
109
|
-
function copyHtml(config) {
|
|
110
|
-
const { content, theme } = config;
|
|
111
|
-
const titleHtml = esc(content.title).replace(/\n/g, "<br>");
|
|
112
|
-
const mark = config.logo && (config.layout ?? (config.logo ? "plate-left" : "banner")) === "split" ? `<img class="mark" src="${esc(config.logo)}">` : "";
|
|
113
|
-
return `
|
|
114
|
-
<div class="copy">
|
|
115
|
-
${mark}
|
|
116
|
-
${content.kicker ? `<div class="kicker">${esc(content.kicker)}</div>` : ""}
|
|
117
|
-
<h1>${titleHtml}</h1>
|
|
118
|
-
${content.subtitle ? `<div class="sub" style="color:${esc(muted(theme))}">${esc(content.subtitle)}</div>` : ""}
|
|
119
|
-
${content.hand ? `<div class="hand" style="font-family:'${esc(handFamily(config))}',cursive">${esc(content.hand)}</div>` : ""}
|
|
120
|
-
</div>`;
|
|
121
|
-
}
|
|
122
|
-
function buildOgHtml(config) {
|
|
123
|
-
if (config.html) return config.html;
|
|
124
|
-
if (config.template) {
|
|
125
|
-
return config.template(config, {
|
|
126
|
-
esc,
|
|
127
|
-
fontLink: fontLink(config),
|
|
128
|
-
width: OG_WIDTH,
|
|
129
|
-
height: OG_HEIGHT
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
const { theme, logo, layout = logo ? "plate-left" : "banner" } = config;
|
|
133
|
-
const display = displayFamily(config);
|
|
134
|
-
const plate = logo ? `<div class="plate" style="background:${esc(theme.surface)}"><img src="${esc(logo)}"></div>` : "";
|
|
135
|
-
const photo = config.photo ? `<div class="photo" style="flex-basis:${config.photo.width ?? 430}px;border-radius:${config.photo.radius ?? 24}px"><img src="${esc(config.photo.src)}"></div>` : "";
|
|
136
|
-
const body = layout === "centered" ? `<div class="wrap centered">${plate}${copyHtml(config)}</div>` : layout === "banner" ? `<div class="wrap banner">${copyHtml(config)}</div>` : layout === "split" ? `<div class="wrap">${copyHtml(config)}${photo}</div>` : `<div class="wrap">${photo || plate}${copyHtml(config)}</div>`;
|
|
137
|
-
return `<!doctype html>
|
|
138
|
-
<html><head><meta charset="utf-8">
|
|
139
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
140
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
141
|
-
${fontLink(config)}
|
|
142
|
-
<style>
|
|
143
|
-
* { margin:0; padding:0; box-sizing:border-box; }
|
|
144
|
-
html,body { width:${OG_WIDTH}px; height:${OG_HEIGHT}px; overflow:hidden; }
|
|
145
|
-
body { position:relative; background:${theme.bg}; font-family:'${display}',sans-serif; color:${theme.text}; }
|
|
146
|
-
.bg { position:absolute; inset:0; }
|
|
147
|
-
.bg img { width:100%; height:100%; object-fit:cover; transform:scale(1.05); }
|
|
148
|
-
.scrim { position:absolute; inset:0; }
|
|
149
|
-
.wrap { position:relative; height:100%; display:flex; align-items:center; gap:52px; padding:0 68px ${config.content.bar?.length ? "74px" : "0"}; }
|
|
150
|
-
.wrap.centered { flex-direction:column; justify-content:center; text-align:center; gap:28px; }
|
|
151
|
-
.wrap.banner { padding-left:90px; }
|
|
152
|
-
.plate { border-radius:28px; padding:26px; flex:0 0 auto; }
|
|
153
|
-
.plate img { display:block; width:250px; height:auto; }
|
|
154
|
-
.centered .plate img { width:180px; }
|
|
155
|
-
.photo { flex:0 0 auto; height:76%; overflow:hidden; box-shadow:0 8px 40px rgba(0,0,0,.25); }
|
|
156
|
-
.photo img { width:100%; height:100%; object-fit:cover; display:block; }
|
|
157
|
-
.copy { flex:1 1 auto; min-width:0; }
|
|
158
|
-
/* split-layout brand mark: the photo owns the right pane, so the logo rides
|
|
159
|
-
above the kicker rather than being dropped. */
|
|
160
|
-
.mark { display:block; height:44px; width:auto; margin-bottom:20px; }
|
|
161
|
-
.kicker { font-weight:800; text-transform:uppercase; letter-spacing:.22em; font-size:24px; color:${theme.accent}; margin-bottom:14px; }
|
|
162
|
-
/* Opening size only \u2014 the in-page fitter steps this down to fit the frame. */
|
|
163
|
-
h1 { font-weight:800; text-transform:uppercase; font-size:${TITLE_MAX_PX}px; line-height:.9; letter-spacing:-.01em; }
|
|
164
|
-
.sub { margin-top:22px; font-size:29px; font-weight:500; line-height:1.32; }
|
|
165
|
-
/* Never below 40px: script faces are illegible at thumbnail width under that. */
|
|
166
|
-
.hand { font-size:42px; margin-top:14px; transform:rotate(-1.5deg); display:inline-block; }
|
|
167
|
-
.bar { position:absolute; left:0; right:0; bottom:0; height:74px; display:flex; align-items:center; justify-content:center; gap:26px;
|
|
168
|
-
font-weight:800; text-transform:uppercase; letter-spacing:.1em; font-size:31px; color:${barTextColor(theme)}; }
|
|
169
|
-
/* nowrap so an over-long segment overflows the bar sideways, where the
|
|
170
|
-
fitter's width check sees it, instead of silently wrapping to a second
|
|
171
|
-
line and spilling over the copy above. */
|
|
172
|
-
.bar > span { white-space:nowrap; }
|
|
173
|
-
.bar .dot { width:10px; height:10px; border-radius:50%; background:currentColor; opacity:.55; flex:0 0 auto; }
|
|
174
|
-
</style></head>
|
|
175
|
-
<body>
|
|
176
|
-
${backgroundLayers(config)}
|
|
177
|
-
${body}
|
|
178
|
-
${barHtml(config.content, theme)}
|
|
179
|
-
${fitScript()}
|
|
180
|
-
</body></html>`;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// src/og/pages.ts
|
|
184
|
-
var DYNAMIC = "*";
|
|
185
|
-
function pathSegments(path) {
|
|
186
|
-
return path.split("/").filter(Boolean);
|
|
187
|
-
}
|
|
188
|
-
var TITLE_SEPARATOR = /\s*\|\s*|\s+[–—-]\s+/g;
|
|
189
|
-
var TRAILING_HOSTNAME = /,\s*(?:https?:\/\/)?(?:[a-z0-9-]+\.)+[a-z]{2,}\/?$/i;
|
|
190
|
-
var DANGLING_SEPARATOR = /(?:\s*\||\s+[–—-])\s*$/;
|
|
191
|
-
function stripBrandSuffix(title, brand) {
|
|
192
|
-
const original = title.trim();
|
|
193
|
-
const base = original.replace(DANGLING_SEPARATOR, "").replace(TRAILING_HOSTNAME, "").trim() || original;
|
|
194
|
-
let last = -1;
|
|
195
|
-
for (const m of base.matchAll(TITLE_SEPARATOR)) last = m.index ?? last;
|
|
196
|
-
const cleaned = last > 0 ? base.slice(0, last).trim() : base;
|
|
197
|
-
if (!cleaned) return base;
|
|
198
|
-
if (brand && cleaned.toLowerCase() === brand.toLowerCase()) return base;
|
|
199
|
-
return cleaned;
|
|
200
|
-
}
|
|
201
|
-
function titleFromPath(path) {
|
|
202
|
-
const last = pathSegments(path).filter((s) => s !== DYNAMIC).pop();
|
|
203
|
-
if (!last) return "Home";
|
|
204
|
-
return last.replace(/[-_]+/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()).trim();
|
|
205
|
-
}
|
|
206
|
-
function kickerFromPath(path, fallback) {
|
|
207
|
-
const parts = pathSegments(path);
|
|
208
|
-
const section = (parts[parts.length - 1] === DYNAMIC ? parts : parts.slice(0, -1)).filter(
|
|
209
|
-
(s) => s !== DYNAMIC
|
|
210
|
-
);
|
|
211
|
-
if (!section.length) return fallback;
|
|
212
|
-
return section.join(" / ").replace(/[-_]+/g, " ");
|
|
213
|
-
}
|
|
214
|
-
function clampSubtitle(text, max = 100) {
|
|
215
|
-
if (!text) return void 0;
|
|
216
|
-
const flat = text.replace(/\s+/g, " ").trim();
|
|
217
|
-
if (!flat) return void 0;
|
|
218
|
-
if (flat.length <= max) return flat;
|
|
219
|
-
const sentence = flat.slice(0, max + 1).match(/^.*[.!?](?=\s|$)/)?.[0];
|
|
220
|
-
if (sentence && sentence.length >= 30) return sentence.trim();
|
|
221
|
-
return void 0;
|
|
222
|
-
}
|
|
223
|
-
function kickerIsRedundant(kicker, title) {
|
|
224
|
-
if (!kicker) return false;
|
|
225
|
-
const norm = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
226
|
-
const k = norm(kicker);
|
|
227
|
-
const t = norm(title);
|
|
228
|
-
if (!k) return true;
|
|
229
|
-
if (t.includes(k) || k.includes(t)) return true;
|
|
230
|
-
const titleWords = new Set(t.split(" "));
|
|
231
|
-
return k.split(" ").every((w) => titleWords.has(w));
|
|
232
|
-
}
|
|
233
|
-
function slugForPath(path) {
|
|
234
|
-
const segments = pathSegments(path);
|
|
235
|
-
if (!segments.length) return "home";
|
|
236
|
-
return segments.map((s) => s === DYNAMIC ? "any" : s).join("-").replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase();
|
|
237
|
-
}
|
|
238
|
-
function unmatchedCardKeys(cards, paths) {
|
|
239
|
-
if (!cards) return [];
|
|
240
|
-
const known = new Set(paths.flatMap((p) => [p, slugForPath(p)]));
|
|
241
|
-
const patterns = paths.filter((p) => p.includes(DYNAMIC));
|
|
242
|
-
return Object.keys(cards).filter(
|
|
243
|
-
(key) => !known.has(key) && !patterns.some((pattern) => matchesRoutePattern(key, pattern))
|
|
244
|
-
);
|
|
245
|
-
}
|
|
246
|
-
function bareRoute(path) {
|
|
247
|
-
const segments = pathSegments(path);
|
|
248
|
-
return segments.length ? `/${segments.join("/")}` : "/";
|
|
249
|
-
}
|
|
250
|
-
function matchesRoutePattern(path, pattern) {
|
|
251
|
-
const concrete = pathSegments(path);
|
|
252
|
-
const shape = pathSegments(pattern);
|
|
253
|
-
if (concrete.includes(DYNAMIC) || concrete.length !== shape.length) return false;
|
|
254
|
-
return shape.every((seg, i) => seg === DYNAMIC || seg === concrete[i]);
|
|
255
|
-
}
|
|
256
|
-
function paramCardKeys(cards, paths) {
|
|
257
|
-
if (!cards) return [];
|
|
258
|
-
const known = new Set(paths.flatMap((p) => [p, slugForPath(p)]));
|
|
259
|
-
const patterns = paths.filter((p) => p.includes(DYNAMIC));
|
|
260
|
-
const found = [];
|
|
261
|
-
for (const key of Object.keys(cards)) {
|
|
262
|
-
if (known.has(key) || !key.startsWith("/")) continue;
|
|
263
|
-
const pattern = patterns.find((p) => matchesRoutePattern(key, p));
|
|
264
|
-
if (pattern) found.push({ path: bareRoute(key), pattern });
|
|
265
|
-
}
|
|
266
|
-
return found;
|
|
267
|
-
}
|
|
268
|
-
var PARAM_CARD_DIR = "_og";
|
|
269
|
-
function paramCardUrl(path) {
|
|
270
|
-
const segments = pathSegments(path);
|
|
271
|
-
return `/${PARAM_CARD_DIR}/${segments.length ? segments.join("/") : "home"}.jpg`;
|
|
272
|
-
}
|
|
273
|
-
function paramCardImage(path, options = {}) {
|
|
274
|
-
if (options.config) {
|
|
275
|
-
const bare = bareRoute(path);
|
|
276
|
-
const cards = options.config.cards ?? {};
|
|
277
|
-
if (!cards[bare] && !cards[`${bare}/`]) return void 0;
|
|
278
|
-
}
|
|
279
|
-
return {
|
|
280
|
-
url: paramCardUrl(path),
|
|
281
|
-
width: OG_WIDTH,
|
|
282
|
-
height: OG_HEIGHT,
|
|
283
|
-
type: "image/jpeg",
|
|
284
|
-
...options.alt && { alt: options.alt }
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
function codeCardImage(path, options = {}) {
|
|
288
|
-
const base = bareRoute(path);
|
|
289
|
-
const url = applyTrailingSlash(`${base === "/" ? "" : base}/opengraph-image`, resolveTrailingSlash(options.trailingSlash));
|
|
290
|
-
return {
|
|
291
|
-
url,
|
|
292
|
-
width: OG_WIDTH,
|
|
293
|
-
height: OG_HEIGHT,
|
|
294
|
-
type: options.contentType ?? "image/png",
|
|
295
|
-
...options.alt && { alt: options.alt }
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
function pageCardConfig(base, route, brand) {
|
|
299
|
-
const override = base.cards?.[route.path] ?? base.cards?.[`${route.path}/`] ?? base.cards?.[slugForPath(route.path)];
|
|
300
|
-
const isHome = route.path === "/";
|
|
301
|
-
const derived = isHome ? { ...base, cards: void 0 } : (() => {
|
|
302
|
-
const title = route.title ? stripBrandSuffix(route.title, brand) : titleFromPath(route.path);
|
|
303
|
-
const kicker = kickerFromPath(route.path, base.content.kicker);
|
|
304
|
-
return {
|
|
305
|
-
...base,
|
|
306
|
-
// `cards` is a build-time instruction, not part of a rendered card.
|
|
307
|
-
cards: void 0,
|
|
308
|
-
content: {
|
|
309
|
-
...base.content,
|
|
310
|
-
kicker: kickerIsRedundant(kicker, title) ? void 0 : kicker,
|
|
311
|
-
title,
|
|
312
|
-
subtitle: clampSubtitle(route.description) ?? base.content.subtitle
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
})();
|
|
316
|
-
if (!override) return derived;
|
|
317
|
-
return {
|
|
318
|
-
...derived,
|
|
319
|
-
...override,
|
|
320
|
-
content: { ...derived.content, ...override.content }
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
export { DYNAMIC, PARAM_CARD_DIR, buildOgHtml, codeCardImage, pageCardConfig, paramCardImage, paramCardKeys, paramCardUrl, unmatchedCardKeys };
|
|
325
|
-
//# sourceMappingURL=chunk-HIZJD7TU.mjs.map
|
|
326
|
-
//# sourceMappingURL=chunk-HIZJD7TU.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/og/template.ts","../src/og/pages.ts"],"names":[],"mappings":"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","file":"chunk-HIZJD7TU.mjs","sourcesContent":["/**\n * OG card HTML template builder.\n *\n * Turns an OgCardConfig into a self-contained 1200x630 HTML document rendered\n * by headless Chrome. Layout rules baked in from the Ludlow card:\n * - content held inside the middle ~80% (platforms crop toward 2:1 and the\n * bottom bar is the first casualty)\n * - script/hand faces never below 40px — under that they turn to mush at\n * iMessage thumbnail width (~300px)\n * - the plate + title must survive alone if everything else is cropped\n */\n\nimport type { OgCardConfig, OgContent, OgTheme } from './config'\nimport { barTextColor } from './contrast'\nimport {\n OG_WIDTH,\n OG_HEIGHT,\n TITLE_MAX_PX,\n TITLE_MIN_PX,\n OG_REPORT_ATTR,\n} from './config'\n\n/**\n * The in-page fitter. Runs inside the render, after webfonts settle, and does\n * the two things a Node-side template cannot:\n *\n * 1. FITS THE TITLE. The h1 opens at TITLE_MAX_PX and steps down until the\n * copy column fits the frame. Before this the size was fixed, so title\n * length silently decided whether a card worked — a long one did not\n * shrink, it pushed the kicker off the top and the subtitle under the\n * bottom bar, and the CLI still reported success.\n * 2. MEASURES WHAT IS LEFT. Anything still clipped is written to the report\n * attribute, which `sonor-setup og` reads back through --dump-dom and\n * turns into a failure. Real measurement, not a character-count estimate.\n *\n * Fonts matter: measuring before `document.fonts.ready` measures the fallback\n * face and produces a size that is wrong for the face that actually renders.\n */\nfunction fitScript(): string {\n return `<script>\n(async function () {\n var report = { fits: true, titlePx: ${TITLE_MAX_PX}, issues: [] };\n function push(msg) { report.fits = false; report.issues.push(msg); }\n try {\n try { await document.fonts.ready; } catch (e) {}\n var h1 = document.querySelector('h1');\n var copy = document.querySelector('.copy');\n var wrap = document.querySelector('.wrap');\n var bar = document.querySelector('.bar');\n\n if (h1 && copy && wrap) {\n var cs = getComputedStyle(wrap);\n var avail = wrap.clientHeight - parseFloat(cs.paddingTop || '0') - parseFloat(cs.paddingBottom || '0');\n\n // Fit BOTH axes. Height alone is not enough: a single long word\n // (\"WORKBENCHES\") cannot wrap, so it keeps overflowing the column\n // sideways at a size that fits vertically. Shrinking for either\n // condition is what makes an arbitrary managed title safe to render.\n var tooTall = function () { return copy.scrollHeight > avail; };\n var tooWide = function () { return h1.scrollWidth > copy.clientWidth + 1; };\n var size = ${TITLE_MAX_PX};\n while (size > ${TITLE_MIN_PX} && (tooTall() || tooWide())) {\n size -= 2;\n h1.style.fontSize = size + 'px';\n }\n report.titlePx = size;\n\n if (tooTall()) {\n push('title/subtitle block overflows the card by ' + Math.ceil(copy.scrollHeight - avail) +\n 'px even at the ' + ${TITLE_MIN_PX} + 'px legibility floor - shorten content.title or content.subtitle');\n }\n if (tooWide()) {\n push('the longest title word still overflows the copy column by ' + Math.ceil(h1.scrollWidth - copy.clientWidth) +\n 'px at the ' + ${TITLE_MIN_PX} + 'px floor - shorten it or add a line break');\n }\n }\n\n // The bar is checked on BOTH axes. Width alone missed a real failure: a\n // long segment wrapped INSIDE its span, so scrollWidth never exceeded\n // clientWidth while the text grew past the bar's fixed height and spilled\n // over the subtitle. Segments are nowrap now, which turns that into\n // horizontal overflow the width check sees, and the height check is the\n // belt-and-braces for anything else that grows the bar.\n if (bar) {\n if (bar.scrollWidth > bar.clientWidth + 1) {\n push('bottom bar content overflows by ' + Math.ceil(bar.scrollWidth - bar.clientWidth) +\n 'px - drop a content.bar segment or shorten one');\n }\n if (bar.scrollHeight > bar.clientHeight + 1) {\n push('bottom bar content is ' + Math.ceil(bar.scrollHeight - bar.clientHeight) +\n 'px taller than the bar - a segment is wrapping; shorten it');\n }\n }\n\n // Nothing may sit outside the frame platforms actually crop to.\n var named = [['kicker', '.kicker'], ['title', 'h1'], ['subtitle', '.sub'], ['hand', '.hand'], ['bar', '.bar']];\n for (var i = 0; i < named.length; i++) {\n var el = document.querySelector(named[i][1]);\n if (!el) continue;\n var r = el.getBoundingClientRect();\n if (r.top < -1 || r.bottom > ${OG_HEIGHT} + 1) {\n push(named[i][0] + ' sits outside the ' + ${OG_HEIGHT} + 'px frame (top ' +\n Math.round(r.top) + ', bottom ' + Math.round(r.bottom) + ')');\n }\n }\n } catch (e) {\n push('fitter failed: ' + (e && e.message ? e.message : String(e)));\n }\n document.documentElement.setAttribute('${OG_REPORT_ATTR}', JSON.stringify(report));\n})();\n</script>`\n}\n\nfunction esc(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n}\n\nfunction fontLink(config: OgCardConfig): string {\n const fonts = config.fonts?.length\n ? config.fonts\n : [{ family: 'Barlow Condensed', weights: [800] }]\n const families = fonts\n .map(f => `family=${f.family.replace(/ /g, '+')}:wght@${(f.weights || [700]).join(';')}`)\n .join('&')\n return `<link href=\"https://fonts.googleapis.com/css2?${families}&display=block\" rel=\"stylesheet\">`\n}\n\nfunction displayFamily(config: OgCardConfig): string {\n return config.fonts?.[0]?.family || 'Barlow Condensed'\n}\n\nfunction handFamily(config: OgCardConfig): string {\n const fonts = config.fonts || []\n return fonts.length > 1 ? fonts[fonts.length - 1].family : displayFamily(config)\n}\n\nfunction muted(theme: OgTheme): string {\n return theme.muted || theme.text\n}\n\nfunction backgroundLayers(config: OgCardConfig): string {\n if (!config.background) return ''\n const { image, blur = 0, scrim } = config.background\n return `\n <div class=\"bg\"><img src=\"${esc(image)}\" style=\"filter:blur(${blur}px)\"></div>\n ${scrim ? `<div class=\"scrim\" style=\"background:${esc(scrim)}\"></div>` : ''}`\n}\n\nfunction barHtml(content: OgContent, theme: OgTheme): string {\n if (!content.bar?.length) return ''\n const segs = content.bar\n .map(s => `<span>${esc(s)}</span>`)\n .join('<span class=\"dot\"></span>')\n return `<div class=\"bar\" style=\"background:${esc(theme.accent)}\">${segs}</div>`\n}\n\nfunction copyHtml(config: OgCardConfig): string {\n const { content, theme } = config\n const titleHtml = esc(content.title).replace(/\\n/g, '<br>')\n // In `split` the photo owns the right pane, so a configured logo has nowhere\n // to go as a plate. It used to be dropped silently. Render it small above the\n // kicker instead: the brand mark still appears, and the plate invariant that\n // split has no `.plate` is preserved.\n const mark =\n config.logo && (config.layout ?? (config.logo ? 'plate-left' : 'banner')) === 'split'\n ? `<img class=\"mark\" src=\"${esc(config.logo)}\">`\n : ''\n return `\n <div class=\"copy\">\n ${mark}\n ${content.kicker ? `<div class=\"kicker\">${esc(content.kicker)}</div>` : ''}\n <h1>${titleHtml}</h1>\n ${content.subtitle ? `<div class=\"sub\" style=\"color:${esc(muted(theme))}\">${esc(content.subtitle)}</div>` : ''}\n ${content.hand ? `<div class=\"hand\" style=\"font-family:'${esc(handFamily(config))}',cursive\">${esc(content.hand)}</div>` : ''}\n </div>`\n}\n\nexport function buildOgHtml(config: OgCardConfig): string {\n if (config.html) return config.html\n if (config.template) {\n return config.template(config, {\n esc,\n fontLink: fontLink(config),\n width: OG_WIDTH,\n height: OG_HEIGHT,\n })\n }\n\n const { theme, logo, layout = logo ? 'plate-left' : 'banner' } = config\n const display = displayFamily(config)\n\n const plate = logo\n ? `<div class=\"plate\" style=\"background:${esc(theme.surface)}\"><img src=\"${esc(logo)}\"></div>`\n : ''\n\n const photo = config.photo\n ? `<div class=\"photo\" style=\"flex-basis:${config.photo.width ?? 430}px;border-radius:${config.photo.radius ?? 24}px\"><img src=\"${esc(config.photo.src)}\"></div>`\n : ''\n\n const body =\n layout === 'centered'\n ? `<div class=\"wrap centered\">${plate}${copyHtml(config)}</div>`\n : layout === 'banner'\n ? `<div class=\"wrap banner\">${copyHtml(config)}</div>`\n : layout === 'split'\n ? `<div class=\"wrap\">${copyHtml(config)}${photo}</div>`\n : `<div class=\"wrap\">${photo || plate}${copyHtml(config)}</div>`\n\n return `<!doctype html>\n<html><head><meta charset=\"utf-8\">\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n${fontLink(config)}\n<style>\n * { margin:0; padding:0; box-sizing:border-box; }\n html,body { width:${OG_WIDTH}px; height:${OG_HEIGHT}px; overflow:hidden; }\n body { position:relative; background:${theme.bg}; font-family:'${display}',sans-serif; color:${theme.text}; }\n .bg { position:absolute; inset:0; }\n .bg img { width:100%; height:100%; object-fit:cover; transform:scale(1.05); }\n .scrim { position:absolute; inset:0; }\n .wrap { position:relative; height:100%; display:flex; align-items:center; gap:52px; padding:0 68px ${config.content.bar?.length ? '74px' : '0'}; }\n .wrap.centered { flex-direction:column; justify-content:center; text-align:center; gap:28px; }\n .wrap.banner { padding-left:90px; }\n .plate { border-radius:28px; padding:26px; flex:0 0 auto; }\n .plate img { display:block; width:250px; height:auto; }\n .centered .plate img { width:180px; }\n .photo { flex:0 0 auto; height:76%; overflow:hidden; box-shadow:0 8px 40px rgba(0,0,0,.25); }\n .photo img { width:100%; height:100%; object-fit:cover; display:block; }\n .copy { flex:1 1 auto; min-width:0; }\n /* split-layout brand mark: the photo owns the right pane, so the logo rides\n above the kicker rather than being dropped. */\n .mark { display:block; height:44px; width:auto; margin-bottom:20px; }\n .kicker { font-weight:800; text-transform:uppercase; letter-spacing:.22em; font-size:24px; color:${theme.accent}; margin-bottom:14px; }\n /* Opening size only — the in-page fitter steps this down to fit the frame. */\n h1 { font-weight:800; text-transform:uppercase; font-size:${TITLE_MAX_PX}px; line-height:.9; letter-spacing:-.01em; }\n .sub { margin-top:22px; font-size:29px; font-weight:500; line-height:1.32; }\n /* Never below 40px: script faces are illegible at thumbnail width under that. */\n .hand { font-size:42px; margin-top:14px; transform:rotate(-1.5deg); display:inline-block; }\n .bar { position:absolute; left:0; right:0; bottom:0; height:74px; display:flex; align-items:center; justify-content:center; gap:26px;\n font-weight:800; text-transform:uppercase; letter-spacing:.1em; font-size:31px; color:${barTextColor(theme)}; }\n /* nowrap so an over-long segment overflows the bar sideways, where the\n fitter's width check sees it, instead of silently wrapping to a second\n line and spilling over the copy above. */\n .bar > span { white-space:nowrap; }\n .bar .dot { width:10px; height:10px; border-radius:50%; background:currentColor; opacity:.55; flex:0 0 auto; }\n</style></head>\n<body>\n${backgroundLayers(config)}\n${body}\n${barHtml(config.content, theme)}\n${fitScript()}\n</body></html>`\n}\n","/**\n * @sonordev/site-kit/og — per-page card derivation.\n *\n * The site-wide card answers \"what is this site\". A per-page card answers\n * \"what is THIS page\", which is what someone pasting a deep link is actually\n * sharing. Every static route gets one by default.\n *\n * Copy comes from Sonor's managed metadata when a key is configured, because\n * that is the same copy the page's <title> and description already use — the\n * card and the SERP entry then say the same thing. Without a key (or when a\n * lookup fails) the path itself is titled, which is worse copy but still a\n * real, page-specific card rather than the site default.\n *\n * Everything else — theme, fonts, logo, photo, bar — is inherited from the\n * site's own og.config.ts, so the whole set reads as one family.\n */\n\nimport type { OgCardConfig } from './config'\nimport { OG_HEIGHT, OG_WIDTH } from './config'\n// Single source of truth for Next's trailingSlash URL shape (pure string logic).\nimport { applyTrailingSlash, resolveTrailingSlash } from '../sitemap/shared'\n\n/** A route to build a card for. */\nexport interface OgPageRoute {\n /** URL path, e.g. `/services/garage`. */\n path: string\n /** Managed title, if Sonor had one. */\n title?: string\n /** Managed meta description, if Sonor had one. */\n description?: string\n}\n\n/**\n * The stand-in for a dynamic segment in a route path.\n *\n * A dynamic route has no single URL, so its card is keyed by a pattern with one\n * `*` per dynamic level: `/services/[slug]` is `/services/*`, and each further\n * dynamic level adds another star. The depth is what keeps those patterns\n * apart — they are different pages and deserve different cards.\n *\n * (Nested patterns are spelled out in prose rather than written literally in\n * these block comments: a star followed by a slash closes the comment. See\n * src/og/README.md.)\n */\nexport const DYNAMIC = '*'\n\n/** `/services/garage/` -> `['services', 'garage']`. */\nfunction pathSegments(path: string): string[] {\n return path.split('/').filter(Boolean)\n}\n\n/**\n * A separator between a title and its brand: a pipe with or without spaces\n * around it, or a dash (`-`, `–`, `—`) with spaces on both sides. A dash with\n * no spaces is part of a word (\"Walk-In Closets\"), never a separator; the old\n * pattern treated it as one and cut that title to \"Walk\".\n */\nconst TITLE_SEPARATOR = /\\s*\\|\\s*|\\s+[–—-]\\s+/g\n\n/** `, abbeyglenapts.com` at the very end: a domain appended as if it were the brand. */\nconst TRAILING_HOSTNAME = /,\\s*(?:https?:\\/\\/)?(?:[a-z0-9-]+\\.)+[a-z]{2,}\\/?$/i\n\n/** A separator the title ends on, with nothing after it (\"Contact Us |\"). */\nconst DANGLING_SEPARATOR = /(?:\\s*\\||\\s+[–—-])\\s*$/\n\n/**\n * Trailing brand suffix on a managed title (` | Acme`, ` - Acme`, ` — Acme`).\n * Managed titles carry the brand because a SERP entry needs it; a card does\n * not — the logo, the photo and the bar are already saying whose it is, and\n * every character spent on the brand is one not spent on the page.\n *\n * Also drops the two broken suffixes managed titles turn up with, both found\n * on 2026-09-15 and each worked around by hand in a site's `cards`: a\n * dangling separator with no brand after it (reinhart's \"About Us |\", Green\n * Bay's), and the domain after a comma (\"Privacy Policy, abbeyglenapts.com\").\n */\nexport function stripBrandSuffix(title: string, brand?: string): string {\n const original = title.trim()\n // The junk first, so \"About | Acme |\" still loses its brand after it.\n const base = original.replace(DANGLING_SEPARATOR, '').replace(TRAILING_HOSTNAME, '').trim() || original\n let last = -1\n for (const m of base.matchAll(TITLE_SEPARATOR)) last = m.index ?? last\n const cleaned = last > 0 ? base.slice(0, last).trim() : base\n // Only accept the strip if something survives it, so a title that IS the\n // brand (\"Acme\") is left alone rather than reduced to nothing.\n if (!cleaned) return base\n if (brand && cleaned.toLowerCase() === brand.toLowerCase()) return base\n return cleaned\n}\n\n/**\n * `/services/walk-in-closets` -> `Walk In Closets`. The no-managed-data path.\n *\n * `*` segments (a dynamic route's card, `/services/*`) are skipped rather than\n * titled: one file covers every param, so the honest title is the section the\n * params belong to. Without this, an unmanaged dynamic segment rendered a card\n * whose headline was literally `*`.\n */\nexport function titleFromPath(path: string): string {\n const last = pathSegments(path).filter(s => s !== DYNAMIC).pop()\n if (!last) return 'Home'\n return last\n .replace(/[-_]+/g, ' ')\n .replace(/\\b\\w/g, c => c.toUpperCase())\n .trim()\n}\n\n/**\n * The kicker for a page card: its parent section, so a deep link reads\n * \"SERVICES / Walk In Closets\" rather than repeating the site name on every\n * card. Falls back to the base card's kicker at the top level.\n */\nexport function kickerFromPath(path: string, fallback?: string): string | undefined {\n const parts = pathSegments(path)\n // When the leaf is a `*`, the stars ARE the leaf, so the section is every\n // static segment — `/services/*` and `/services/*/*` both read \"services\",\n // never \"services / *\". A static leaf under a dynamic segment\n // (`/properties/*/about`) is the page itself, so the section is what's\n // above it, minus the stars: \"properties\".\n const section = (parts[parts.length - 1] === DYNAMIC ? parts : parts.slice(0, -1)).filter(\n s => s !== DYNAMIC,\n )\n if (!section.length) return fallback\n return section.join(' / ').replace(/[-_]+/g, ' ')\n}\n\n/**\n * Keep a card subtitle to two readable lines, never a full meta description.\n *\n * A meta description is written for a SERP row and runs to ~155 characters; at\n * card size that is four lines crowding the bottom bar. This trims to the first\n * sentence when there is one, and otherwise cuts on a word boundary.\n */\nexport function clampSubtitle(text: string | undefined, max = 100): string | undefined {\n if (!text) return undefined\n const flat = text.replace(/\\s+/g, ' ').trim()\n if (!flat) return undefined\n if (flat.length <= max) return flat\n\n // A whole sentence reads as written rather than as truncated. The floor is\n // absolute rather than a ratio of `max` (a ratio rejected a clean\n // 48-character sentence) — but not so low it accepts a stray \"Inc.\".\n const sentence = flat.slice(0, max + 1).match(/^.*[.!?](?=\\s|$)/)?.[0]\n if (sentence && sentence.length >= 30) return sentence.trim()\n\n /*\n * Otherwise: refuse.\n *\n * A managed description is 150+ characters of prose written for a SERP row,\n * and at card size NO truncation of it looks deliberate. Both attempts\n * proved it on real cards: a word cut gave \"across Cincinnati and…\", and\n * cutting at the last comma gave \"home offices designed, built\" — worse,\n * because with no ellipsis it looks complete and merely ungrammatical.\n *\n * Returning undefined lets the caller fall back to the site's own subtitle,\n * which is short, hand-written and always fits. A clean generic line beats a\n * mangled specific one, and the TITLE is already page-specific — which is\n * the signal that actually matters on a card.\n */\n return undefined\n}\n\n/**\n * Is the kicker already saying what the title says?\n *\n * Managed titles are written for search and usually carry the section and the\n * city, so the home page came out as kicker \"Custom Closets · Cincinnati\" above\n * title \"CUSTOM CLOSETS CINCINNATI TRI-STATE\" — a stutter that also cost a line\n * of the frame. When either contains the other, the title wins.\n */\nfunction kickerIsRedundant(kicker: string | undefined, title: string): boolean {\n if (!kicker) return false\n const norm = (s: string) => s.toLowerCase().replace(/[^a-z0-9]+/g, ' ').trim()\n const k = norm(kicker)\n const t = norm(title)\n if (!k) return true\n if (t.includes(k) || k.includes(t)) return true\n // Or every word of the kicker already appears in the title.\n const titleWords = new Set(t.split(' '))\n return k.split(' ').every(w => titleWords.has(w))\n}\n\n/**\n * File-safe name for a route's card: `/services/garage` -> `services-garage`,\n * `/` -> `home`. Deterministic, so the generator and anything reading the\n * output agree without a manifest.\n *\n * A `*` (dynamic) segment becomes `any`, one per level: `/services/*` is\n * `services-any`, and a second dynamic level is `services-any-any`. The naive\n * punctuation strip collapsed every one of those to `services` — the SAME slug\n * as the real `/services` route — so a `cards` override keyed by slug could\n * silently land on the wrong card. (A literal `/services/any` route would still collide;\n * key those by path, which is always unambiguous.)\n */\nexport function slugForPath(path: string): string {\n const segments = pathSegments(path)\n if (!segments.length) return 'home'\n return segments\n .map(s => (s === DYNAMIC ? 'any' : s))\n .join('-')\n .replace(/[^a-zA-Z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .toLowerCase()\n}\n\n/**\n * The `cards` keys in og.config.ts that match none of the routes being\n * rendered.\n *\n * `pageCardConfig` looks an override up by exact path or exact slug and\n * silently derives the card when neither hits, so a mistyped or stale key — or\n * one written for a route shape the generator does not produce (a two-star\n * services pattern, before nested dynamic segments got their own key) — cost a\n * hand-written card with nothing said about it. The caller reports these.\n */\nexport function unmatchedCardKeys(\n cards: Record<string, unknown> | undefined,\n paths: string[],\n): string[] {\n if (!cards) return []\n const known = new Set(paths.flatMap(p => [p, slugForPath(p)]))\n const patterns = paths.filter(p => p.includes(DYNAMIC))\n return Object.keys(cards).filter(\n key => !known.has(key) && !patterns.some(pattern => matchesRoutePattern(key, pattern)),\n )\n}\n\n/** `/floor-plans/1-bedroom/` -> `/floor-plans/1-bedroom`. */\nfunction bareRoute(path: string): string {\n const segments = pathSegments(path)\n return segments.length ? `/${segments.join('/')}` : '/'\n}\n\n/**\n * Does a concrete URL fall under a dynamic route pattern? One `*` matches\n * exactly one segment: `/properties/tall-pines/about` is under\n * `/properties/*` + `/about`, and `/floor-plans/1-bedroom` under\n * `/floor-plans/*`. A key that is itself a pattern matches nothing.\n */\nexport function matchesRoutePattern(path: string, pattern: string): boolean {\n const concrete = pathSegments(path)\n const shape = pathSegments(pattern)\n if (concrete.includes(DYNAMIC) || concrete.length !== shape.length) return false\n return shape.every((seg, i) => seg === DYNAMIC || seg === concrete[i])\n}\n\n/**\n * The `cards` keys that name one page under a dynamic route: a card per\n * floor plan, per community, per sub-page of a community. Keyed by the URL\n * itself (`/floor-plans/1-bedroom`), which any site can build from the same\n * data its `generateStaticParams` reads.\n *\n * A static file in a dynamic segment covers every param of the route, so\n * these can't be `opengraph-image` files. `sonor-setup og` renders each one to\n * `public/_og/` (see paramCardUrl), and the page declares it with\n * `paramCardImage`. The MDG property sites needed a card per floor plan and\n * per community and rendered them with their own script until this existed.\n *\n * Returns each key with the pattern it falls under. Keys that are a real\n * static route or a pattern are left to the route cards.\n */\nexport function paramCardKeys(\n cards: Record<string, unknown> | undefined,\n paths: string[],\n): Array<{ path: string; pattern: string }> {\n if (!cards) return []\n const known = new Set(paths.flatMap(p => [p, slugForPath(p)]))\n const patterns = paths.filter(p => p.includes(DYNAMIC))\n const found: Array<{ path: string; pattern: string }> = []\n for (const key of Object.keys(cards)) {\n if (known.has(key) || !key.startsWith('/')) continue\n const pattern = patterns.find(p => matchesRoutePattern(key, p))\n if (pattern) found.push({ path: bareRoute(key), pattern })\n }\n return found\n}\n\n/**\n * Public directory (under `public/`) that `sonor-setup og` owns for per-URL\n * cards. Generated; the command clears it on every run, so keep nothing else\n * in it.\n */\nexport const PARAM_CARD_DIR = '_og'\n\n/**\n * Where the per-URL card for a page is served: `/floor-plans/1-bedroom` ->\n * `/_og/floor-plans/1-bedroom.jpg`. Single source of truth for the file the\n * CLI writes and the URL `paramCardImage` declares.\n *\n * It ends in `.jpg` on purpose. Next serves a code-based `opengraph-image`\n * route without an extension, and `trailingSlash: true` answers that URL with\n * a 308 before the card, which some preview bots don't follow. A static file\n * with an extension is never redirected.\n */\nexport function paramCardUrl(path: string): string {\n const segments = pathSegments(path)\n return `/${PARAM_CARD_DIR}/${segments.length ? segments.join('/') : 'home'}.jpg`\n}\n\n/** An `openGraph.images` entry. */\nexport interface OgImageDescriptor {\n url: string\n width: number\n height: number\n type: string\n alt?: string\n}\n\n/**\n * The page's per-URL card, for its metadata:\n *\n * ```ts\n * const card = paramCardImage(`/floor-plans/${slug}`, { config: ogConfig })\n * return {\n * openGraph: { ...(card && { images: [card] }) },\n * twitter: { card: 'summary_large_image', ...(card && { images: [card.url] }) },\n * }\n * ```\n *\n * Pass `config` (the site's og.config) and it answers undefined for a page\n * with no `cards` entry, so the page keeps its segment's static card. Without\n * `config` it always answers, so only call it for URLs you gave a card.\n */\nexport function paramCardImage(\n path: string,\n options: { config?: Pick<OgCardConfig, 'cards'>; alt?: string } = {},\n): OgImageDescriptor | undefined {\n if (options.config) {\n const bare = bareRoute(path)\n const cards = options.config.cards ?? {}\n if (!cards[bare] && !cards[`${bare}/`]) return undefined\n }\n return {\n url: paramCardUrl(path),\n width: OG_WIDTH,\n height: OG_HEIGHT,\n type: 'image/jpeg',\n ...(options.alt && { alt: options.alt }),\n }\n}\n\n/**\n * A code-based card (`opengraph-image.tsx`) declared at the URL the site\n * actually serves it from.\n *\n * Next wires such a card in as `<path>/opengraph-image`, with no extension.\n * With `trailingSlash: true` that URL 308-redirects to the slashed one, so\n * every share preview starts with a redirect, and bots that don't follow one\n * show no card (the MDG property sites, 2026-09-15). Declaring the slashed URL\n * gets a 200 first time. Declared images beat the file convention, so this\n * replaces Next's own entry rather than adding a second.\n *\n * `trailingSlash` defaults to the site's next.config. Without it, this is the\n * URL Next would have used anyway.\n */\nexport function codeCardImage(\n path: string,\n options: { trailingSlash?: boolean; alt?: string; contentType?: string } = {},\n): OgImageDescriptor {\n const base = bareRoute(path)\n const url = applyTrailingSlash(`${base === '/' ? '' : base}/opengraph-image`, resolveTrailingSlash(options.trailingSlash))\n return {\n url,\n width: OG_WIDTH,\n height: OG_HEIGHT,\n type: options.contentType ?? 'image/png',\n ...(options.alt && { alt: options.alt }),\n }\n}\n\n/**\n * Build a page's card config by layering its copy over the site's card.\n *\n * `cards` in og.config.ts wins over everything derived here, so a site can\n * hand-write the two or three cards that matter and let the rest be generated.\n */\nexport function pageCardConfig(\n base: OgCardConfig,\n route: OgPageRoute,\n brand?: string,\n): OgCardConfig {\n const override =\n base.cards?.[route.path] ?? base.cards?.[`${route.path}/`] ?? base.cards?.[slugForPath(route.path)]\n const isHome = route.path === '/'\n\n /*\n * The home page keeps the card the site actually wrote.\n *\n * og.config.ts `content` IS the home page's card — it is the one route whose\n * subject is the whole site, and it is hand-written. Deriving it from the\n * managed <title> instead replaced a crafted headline (\"Built by brothers\")\n * with the SEO string (\"Custom Closets Cincinnati Tri-State\"), which repeated\n * the kicker and ran to four lines. Every other route has no hand-written\n * card, so deriving is a clear gain there.\n */\n const derived: OgCardConfig = isHome\n ? { ...base, cards: undefined }\n : (() => {\n const title = route.title ? stripBrandSuffix(route.title, brand) : titleFromPath(route.path)\n const kicker = kickerFromPath(route.path, base.content.kicker)\n return {\n ...base,\n // `cards` is a build-time instruction, not part of a rendered card.\n cards: undefined,\n content: {\n ...base.content,\n kicker: kickerIsRedundant(kicker, title) ? undefined : kicker,\n title,\n subtitle: clampSubtitle(route.description) ?? base.content.subtitle,\n },\n }\n })()\n\n if (!override) return derived\n return {\n ...derived,\n ...override,\n content: { ...derived.content, ...override.content },\n }\n}\n"]}
|
package/dist/chunk-HPGPOUHU.mjs
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
// src/robots/next-internals.ts
|
|
2
|
-
var NEXT_INTERNALS_PATH = /^\/?_next(?:[/*?$]|$)/;
|
|
3
|
-
function isNextInternalsPath(path) {
|
|
4
|
-
return NEXT_INTERNALS_PATH.test(path.trim());
|
|
5
|
-
}
|
|
6
|
-
var warned = /* @__PURE__ */ new Set();
|
|
7
|
-
function warnDropped(paths) {
|
|
8
|
-
for (const p of paths) {
|
|
9
|
-
if (warned.has(p)) continue;
|
|
10
|
-
warned.add(p);
|
|
11
|
-
console.warn(
|
|
12
|
-
`[site-kit/robots] Dropped "Disallow: ${p}". Googlebot needs /_next/ to render pages and index images.`
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
function stripNextInternals(paths) {
|
|
17
|
-
if (paths === void 0) return void 0;
|
|
18
|
-
const list2 = Array.isArray(paths) ? paths : [paths];
|
|
19
|
-
const dropped = list2.filter(isNextInternalsPath);
|
|
20
|
-
if (dropped.length === 0) return paths;
|
|
21
|
-
warnDropped(dropped);
|
|
22
|
-
const kept = list2.filter((p) => !isNextInternalsPath(p));
|
|
23
|
-
if (kept.length === 0) return void 0;
|
|
24
|
-
return Array.isArray(paths) ? kept : kept[0];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// src/llms/aiRobots.ts
|
|
28
|
-
var AI_RETRIEVAL_CRAWLERS = [
|
|
29
|
-
"OAI-SearchBot",
|
|
30
|
-
"ChatGPT-User",
|
|
31
|
-
"Claude-SearchBot",
|
|
32
|
-
"Claude-User",
|
|
33
|
-
"PerplexityBot",
|
|
34
|
-
"Perplexity-User",
|
|
35
|
-
"GoogleOther",
|
|
36
|
-
"Applebot",
|
|
37
|
-
"DuckAssistBot",
|
|
38
|
-
"MistralAI-User",
|
|
39
|
-
"YouBot"
|
|
40
|
-
];
|
|
41
|
-
var AI_TRAINING_CRAWLERS = [
|
|
42
|
-
"GPTBot",
|
|
43
|
-
"ClaudeBot",
|
|
44
|
-
"Google-Extended",
|
|
45
|
-
"Applebot-Extended",
|
|
46
|
-
"Meta-ExternalAgent",
|
|
47
|
-
"FacebookBot",
|
|
48
|
-
"CCBot",
|
|
49
|
-
"Bytespider",
|
|
50
|
-
"cohere-ai",
|
|
51
|
-
"MistralBot",
|
|
52
|
-
"Amazonbot"
|
|
53
|
-
];
|
|
54
|
-
function buildAiCrawlerRules(options = {}) {
|
|
55
|
-
const { allow = "/", training = "allow" } = options;
|
|
56
|
-
const disallow = stripNextInternals(options.disallow);
|
|
57
|
-
const retrieval = AI_RETRIEVAL_CRAWLERS.map((userAgent) => ({
|
|
58
|
-
userAgent,
|
|
59
|
-
allow,
|
|
60
|
-
...disallow ? { disallow } : {}
|
|
61
|
-
}));
|
|
62
|
-
const trainingRules = AI_TRAINING_CRAWLERS.map(
|
|
63
|
-
(userAgent) => training === "block" ? { userAgent, disallow: "/" } : { userAgent, allow, ...disallow ? { disallow } : {} }
|
|
64
|
-
);
|
|
65
|
-
return [...retrieval, ...trainingRules];
|
|
66
|
-
}
|
|
67
|
-
var yn = (v) => v ? "yes" : "no";
|
|
68
|
-
function formatContentSignals(options = {}) {
|
|
69
|
-
const { search = true, aiInput = true, aiTrain = true } = options;
|
|
70
|
-
return [
|
|
71
|
-
"# Content Signals Policy (https://contentsignals.org): usage preferences",
|
|
72
|
-
"# for this site\u2019s content. Declarative \u2014 a preference, not enforcement.",
|
|
73
|
-
`Content-Signal: search=${yn(search)}, ai-input=${yn(aiInput)}, ai-train=${yn(aiTrain)}`
|
|
74
|
-
].join("\n");
|
|
75
|
-
}
|
|
76
|
-
var list = (v) => v === void 0 ? [] : Array.isArray(v) ? v : [v];
|
|
77
|
-
function createRobotsTxtHandler(options) {
|
|
78
|
-
const { rules, sitemap, host } = options;
|
|
79
|
-
const blocks = [];
|
|
80
|
-
for (const rule of rules) {
|
|
81
|
-
const lines = [`User-Agent: ${rule.userAgent}`];
|
|
82
|
-
for (const p of list(rule.allow)) lines.push(`Allow: ${p}`);
|
|
83
|
-
for (const p of list(stripNextInternals(rule.disallow))) lines.push(`Disallow: ${p}`);
|
|
84
|
-
blocks.push(lines.join("\n"));
|
|
85
|
-
}
|
|
86
|
-
const tail = [];
|
|
87
|
-
for (const s of list(sitemap)) tail.push(`Sitemap: ${s}`);
|
|
88
|
-
if (host) tail.push(`Host: ${host}`);
|
|
89
|
-
if (tail.length) blocks.push(tail.join("\n"));
|
|
90
|
-
const body = `${blocks.join("\n\n")}
|
|
91
|
-
`;
|
|
92
|
-
return async function GET() {
|
|
93
|
-
return new Response(body, {
|
|
94
|
-
status: 200,
|
|
95
|
-
headers: {
|
|
96
|
-
"Content-Type": "text/plain; charset=utf-8",
|
|
97
|
-
"Cache-Control": "public, max-age=3600, s-maxage=86400"
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export { AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, buildAiCrawlerRules, createRobotsTxtHandler, formatContentSignals, isNextInternalsPath, stripNextInternals };
|
|
104
|
-
//# sourceMappingURL=chunk-HPGPOUHU.mjs.map
|
|
105
|
-
//# sourceMappingURL=chunk-HPGPOUHU.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/robots/next-internals.ts","../src/llms/aiRobots.ts"],"names":["list"],"mappings":"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","file":"chunk-HPGPOUHU.mjs","sourcesContent":["/**\n * Keeps `/_next/` out of every robots.txt site-kit emits.\n *\n * Googlebot renders pages with the CSS, JS chunks and optimized images Next\n * serves from `/_next/`, and `/_next/image` is how a site's photos reach\n * Google Images. A `Disallow: /_next/` makes Google judge an unstyled,\n * image-less page, and a 2026-09 fleet sweep found it on ten sites. Sites\n * passed it in by hand, so the builders drop it on the way out rather than\n * trusting callers to leave it off.\n *\n * Single source of truth for that rule — used by `createRobots`\n * (`robots/index.ts`) and by `buildAiCrawlerRules` + `createRobotsTxtHandler`\n * (`llms/aiRobots.ts`). Route any new robots builder through it.\n */\n\n// `/_next`, `/_next/`, `/_next/*`, `/_next/static/`, `/_next/image`, `/_next$`,\n// and the slashless `_next/` typo. `/_nextjs-docs/` is a real path; leave it.\nconst NEXT_INTERNALS_PATH = /^\\/?_next(?:[/*?$]|$)/\n\nexport function isNextInternalsPath(path: string): boolean {\n return NEXT_INTERNALS_PATH.test(path.trim())\n}\n\nconst warned = new Set<string>()\n\nfunction warnDropped(paths: string[]): void {\n for (const p of paths) {\n if (warned.has(p)) continue\n warned.add(p)\n console.warn(\n `[site-kit/robots] Dropped \"Disallow: ${p}\". Googlebot needs /_next/ to render pages and index images.`,\n )\n }\n}\n\n/**\n * Removes `/_next` paths from a disallow list, keeping its shape: returns the\n * input untouched when there is nothing to drop, and `undefined` when nothing\n * is left.\n */\nexport function stripNextInternals(\n paths: string | string[] | undefined,\n): string | string[] | undefined {\n if (paths === undefined) return undefined\n const list = Array.isArray(paths) ? paths : [paths]\n const dropped = list.filter(isNextInternalsPath)\n if (dropped.length === 0) return paths\n warnDropped(dropped)\n const kept = list.filter((p) => !isNextInternalsPath(p))\n if (kept.length === 0) return undefined\n return Array.isArray(paths) ? kept : kept[0]\n}\n","/**\n * @sonordev/site-kit/llms — AI crawler robots policy\n *\n * 2026 practice separates AI RETRIEVAL crawlers (they fetch pages to answer\n * live queries and cite the source — visibility with attribution) from AI\n * TRAINING crawlers (they ingest content into future model weights). A site\n * can welcome one and decline the other. This module provides:\n *\n * - Curated user-agent lists for both classes (keep current with vendor docs)\n * - buildAiCrawlerRules(): rules for Next's MetadataRoute robots convention\n * - createRobotsTxtHandler(): a plain-text robots.txt route handler.\n *\n * No `Content-Signal` line is ever emitted (6.3.4). Google's robots.txt\n * parser reports it as an \"Unknown directive\" error in Search Console\n * (cincinnaticondoconnection.com, 2026-09-22), and robots.txt is the one file\n * that must parse cleanly for every crawler. Training/retrieval preferences\n * are expressed by the per-crawler Allow/Disallow rules instead, which every\n * crawler understands.\n *\n * Every builder here drops `/_next` disallow paths (see\n * robots/next-internals.ts): Googlebot needs them to render pages.\n *\n * Canonical import: `@sonordev/site-kit/llms`. `@sonordev/site-kit/robots`\n * re-exports the same functions, because that's where people look for them.\n * Same code either way; the lists live here once.\n */\n\nimport { stripNextInternals } from '../robots/next-internals'\n\n/**\n * Retrieval/search agents — fetch on demand or index for AI search, cite sources.\n *\n * MistralAI-User (Le Chat fetching a page for a user) and YouBot (You.com's\n * search index) were added 2026-09-15: vsf-consulting-nextjs named them in\n * its own robots.txt and had to keep a NOT_YET_IN_KIT list beside this one.\n */\nexport const AI_RETRIEVAL_CRAWLERS = [\n 'OAI-SearchBot',\n 'ChatGPT-User',\n 'Claude-SearchBot',\n 'Claude-User',\n 'PerplexityBot',\n 'Perplexity-User',\n 'GoogleOther',\n 'Applebot',\n 'DuckAssistBot',\n 'MistralAI-User',\n 'YouBot',\n] as const\n\n/**\n * Training crawlers — content may enter future model training corpora.\n *\n * Amazonbot is here rather than in retrieval: Amazon says what it collects\n * may be used to train its AI models, so `training: 'block'` has to cover it.\n * It also feeds Alexa answers, which is the cost of blocking it.\n */\nexport const AI_TRAINING_CRAWLERS = [\n 'GPTBot',\n 'ClaudeBot',\n 'Google-Extended',\n 'Applebot-Extended',\n 'Meta-ExternalAgent',\n 'FacebookBot',\n 'CCBot',\n 'Bytespider',\n 'cohere-ai',\n 'MistralBot',\n 'Amazonbot',\n] as const\n\nexport interface AiCrawlerRulesOptions {\n /** Paths every AI crawler may fetch (default: everything). */\n allow?: string | string[]\n /** Paths withheld from every AI crawler (default: none). `/_next` paths are dropped. */\n disallow?: string | string[]\n /**\n * Policy for TRAINING crawlers. 'allow' (default) welcomes them — the\n * visibility-maximalist choice for marketing sites that WANT to be in\n * model knowledge. 'block' opts out of training while retrieval crawlers\n * stay welcome, so the site is still cited in AI answers.\n */\n training?: 'allow' | 'block'\n}\n\ninterface RobotsRule {\n userAgent: string\n allow?: string | string[]\n disallow?: string | string[]\n}\n\n/**\n * Rules for Next's MetadataRoute robots convention (app/robots.(js|ts)).\n * Spread into your existing rules array; order relative to your own rules\n * does not matter (robots matching is per-user-agent, most-specific wins).\n */\nexport function buildAiCrawlerRules(\n options: AiCrawlerRulesOptions = {},\n): RobotsRule[] {\n const { allow = '/', training = 'allow' } = options\n const disallow = stripNextInternals(options.disallow)\n const retrieval: RobotsRule[] = AI_RETRIEVAL_CRAWLERS.map((userAgent) => ({\n userAgent,\n allow,\n ...(disallow ? { disallow } : {}),\n }))\n const trainingRules: RobotsRule[] = AI_TRAINING_CRAWLERS.map((userAgent) =>\n training === 'block'\n ? { userAgent, disallow: '/' }\n : { userAgent, allow, ...(disallow ? { disallow } : {}) },\n )\n return [...retrieval, ...trainingRules]\n}\n\nexport interface ContentSignalsOptions {\n /** May the content be indexed for classic search? Default true. */\n search?: boolean\n /** May the content feed a live AI answer (RAG/grounding)? Default true. */\n aiInput?: boolean\n /** May the content train future models? Default true. */\n aiTrain?: boolean\n}\n\nconst yn = (v: boolean) => (v ? 'yes' : 'no')\n\n/**\n * The Cloudflare Content Signals Policy block.\n *\n * @deprecated Don't put this in robots.txt: Google's parser reports\n * `Content-Signal` as an \"Unknown directive\" error in Search Console.\n * createRobotsTxtHandler no longer emits it. Express the same preference with\n * buildAiCrawlerRules({ training: 'block' | 'allow' }).\n */\nexport function formatContentSignals(\n options: ContentSignalsOptions = {},\n): string {\n const { search = true, aiInput = true, aiTrain = true } = options\n return [\n '# Content Signals Policy (https://contentsignals.org): usage preferences',\n '# for this site’s content. Declarative — a preference, not enforcement.',\n `Content-Signal: search=${yn(search)}, ai-input=${yn(aiInput)}, ai-train=${yn(aiTrain)}`,\n ].join('\\n')\n}\n\nexport interface RobotsTxtHandlerOptions {\n /** Robots rules (same shape as MetadataRoute robots rules). */\n rules: RobotsRule[]\n /**\n * @deprecated No-op since 6.3.4: a Content-Signal line is an \"Unknown\n * directive\" error in Google Search Console. Kept so existing call sites\n * type-check; remove it when you next touch the file.\n */\n contentSignals?: ContentSignalsOptions\n /** Absolute sitemap URL(s). */\n sitemap?: string | string[]\n /** Preferred host (emitted as Host:). */\n host?: string\n}\n\nconst list = (v: string | string[] | undefined): string[] =>\n v === undefined ? [] : Array.isArray(v) ? v : [v]\n\n/**\n * Plain-text robots.txt route handler (app/robots.txt/route.ts). Emits only\n * directives every crawler parses: User-Agent, Allow, Disallow, Sitemap\n * (and Host, which Google ignores without flagging). Drop-in:\n *\n * import { createRobotsTxtHandler, buildAiCrawlerRules } from '@sonordev/site-kit/llms'\n * export const GET = createRobotsTxtHandler({\n * rules: [{ userAgent: '*', allow: '/' }, ...buildAiCrawlerRules()],\n * sitemap: 'https://example.com/sitemap.xml',\n * })\n */\nexport function createRobotsTxtHandler(options: RobotsTxtHandlerOptions) {\n const { rules, sitemap, host } = options\n const blocks: string[] = []\n for (const rule of rules) {\n const lines = [`User-Agent: ${rule.userAgent}`]\n for (const p of list(rule.allow)) lines.push(`Allow: ${p}`)\n for (const p of list(stripNextInternals(rule.disallow))) lines.push(`Disallow: ${p}`)\n blocks.push(lines.join('\\n'))\n }\n const tail: string[] = []\n for (const s of list(sitemap)) tail.push(`Sitemap: ${s}`)\n if (host) tail.push(`Host: ${host}`)\n if (tail.length) blocks.push(tail.join('\\n'))\n const body = `${blocks.join('\\n\\n')}\\n`\n\n return async function GET(): Promise<Response> {\n return new Response(body, {\n status: 200,\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Cache-Control': 'public, max-age=3600, s-maxage=86400',\n },\n })\n }\n}\n"]}
|