@foxpixel/react 0.2.0 → 0.2.2

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/dist/index.d.mts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React, { ReactNode, ComponentType } from 'react';
3
+ import { QueryClient } from '@tanstack/react-query';
3
4
  import { AxiosInstance, AxiosRequestConfig } from 'axios';
4
5
 
5
6
  /**
@@ -137,10 +138,14 @@ declare class FoxPixelHttpClient {
137
138
  interface FoxPixelContextValue {
138
139
  client: FoxPixelHttpClient;
139
140
  config: FoxPixelConfig;
141
+ /** Optional: pass QueryClient so edit-mode messaging can invalidate cache without requiring useQueryClient() in SDK (avoids "No QueryClient set" in iframe). */
142
+ queryClient?: QueryClient | null;
140
143
  }
141
144
  interface FoxPixelProviderProps {
142
145
  children: ReactNode;
143
146
  config?: FoxPixelConfig;
147
+ /** Pass the app's QueryClient so edit-mode (iframe) can update cache on FOXPIXEL_CONTENT_UPDATED. Required for visual editor preview to refresh. */
148
+ queryClient?: QueryClient | null;
144
149
  }
145
150
  /**
146
151
  * FoxPixelProvider - Wraps your app and provides SDK functionality
@@ -163,7 +168,7 @@ interface FoxPixelProviderProps {
163
168
  * }
164
169
  * ```
165
170
  */
166
- declare function FoxPixelProvider({ children, config }: FoxPixelProviderProps): react_jsx_runtime.JSX.Element;
171
+ declare function FoxPixelProvider({ children, config, queryClient }: FoxPixelProviderProps): react_jsx_runtime.JSX.Element;
167
172
  /**
168
173
  * Hook to access FoxPixel context
169
174
  * @throws Error if used outside FoxPixelProvider
@@ -274,29 +279,30 @@ declare function Editable({ contentKey, defaultValue, as, multiline, className,
274
279
  className: string;
275
280
  'aria-busy': boolean;
276
281
  'aria-label': string;
277
- }, string | React.JSXElementConstructor<any>> | React.DOMElement<{
278
- className: string;
279
- 'data-content-key': string;
280
- 'data-editable': string | undefined;
281
- onClick: ((e: React.MouseEvent) => void) | undefined;
282
- title: string | undefined;
283
- }, Element>;
282
+ }, string | React.JSXElementConstructor<any>> | React.DetailedReactHTMLElement<{
283
+ onMouseEnter: () => void;
284
+ onMouseLeave: () => void;
285
+ style: React.CSSProperties;
286
+ } | {
287
+ onMouseEnter?: undefined;
288
+ onMouseLeave?: undefined;
289
+ style: React.CSSProperties;
290
+ }, HTMLElement>;
284
291
  /**
285
292
  * Renders rich HTML content from the CMS. Content is sanitized before rendering.
286
293
  */
287
294
  declare function EditableHTML({ contentKey, defaultValue, as, className, }: Omit<EditableProps, 'multiline'>): React.ReactElement<{
288
295
  className: string;
289
296
  'aria-busy': boolean;
290
- }, string | React.JSXElementConstructor<any>> | React.DOMElement<{
291
- className: string;
292
- 'data-content-key': string;
293
- 'data-editable': string | undefined;
294
- onClick: ((e: React.MouseEvent) => void) | undefined;
295
- title: string | undefined;
296
- dangerouslySetInnerHTML: {
297
- __html: string;
298
- };
299
- }, Element>;
297
+ }, string | React.JSXElementConstructor<any>> | React.DetailedReactHTMLElement<{
298
+ onMouseEnter: () => void;
299
+ onMouseLeave: () => void;
300
+ style: React.CSSProperties;
301
+ } | {
302
+ onMouseEnter?: undefined;
303
+ onMouseLeave?: undefined;
304
+ style: React.CSSProperties;
305
+ }, HTMLElement>;
300
306
  interface EditableImageProps {
301
307
  contentKey: string;
302
308
  defaultValue: string;
@@ -657,8 +663,8 @@ declare const SITE_CONTENT_QUERY_KEY: "siteContent";
657
663
  declare function useEditMode(): boolean;
658
664
  /**
659
665
  * Sets up edit-mode messaging: notifies parent when ready and listens for
660
- * FOXPIXEL_CONTENT_UPDATED to invalidate the corresponding site content query.
661
- * App must be wrapped in QueryClientProvider when using edit mode.
666
+ * FOXPIXEL_CONTENT_UPDATED. Uses queryClient from FoxPixelContext (pass it to
667
+ * FoxPixelProvider) so we don't require useQueryClient() and avoid "No QueryClient set" in iframe.
662
668
  */
663
669
  declare function useEditModeMessaging(): boolean;
664
670
  /**
@@ -668,9 +674,9 @@ declare function useEditModeMessaging(): boolean;
668
674
  declare function useSendEditRequest(): (contentKey: string, currentValue: string, contentType?: string, section?: string, description?: string) => void;
669
675
 
670
676
  /**
671
- * React Query-based hook for site content used by Editable components.
672
- * Uses queryKey ['siteContent', key] so that useEditModeMessaging can invalidate
673
- * on FOXPIXEL_CONTENT_UPDATED. Requires QueryClientProvider.
677
+ * Site content hook for Editable components.
678
+ * Uses the QueryClient passed via FoxPixelProvider (no useQuery) so it never
679
+ * depends on QueryClientProvider context — avoids "No QueryClient set" in iframe/SSR.
674
680
  */
675
681
  interface UseSiteContentQueryOptions {
676
682
  defaultValue: string;
@@ -681,11 +687,28 @@ interface UseSiteContentQueryReturn {
681
687
  contentType: string;
682
688
  }
683
689
  /**
684
- * Fetches a single site content by key using React Query. Used by Editable, EditableHTML, EditableImage.
685
- * Invalidation is triggered by useEditModeMessaging when the parent sends FOXPIXEL_CONTENT_UPDATED.
690
+ * Fetches a single site content by key. Uses the queryClient from FoxPixelContext
691
+ * (passed by the host) so it never calls useQuery() and never throws "No QueryClient set".
686
692
  */
687
693
  declare function useSiteContentQuery(contentKey: string, options: UseSiteContentQueryOptions): UseSiteContentQueryReturn;
688
694
 
695
+ /**
696
+ * Prefetch site content for Next.js getStaticProps (SSG).
697
+ * Fetches content keys and fills the QueryClient so HydrationBoundary can hydrate the app.
698
+ */
699
+
700
+ interface PrefetchSiteContentOptions {
701
+ apiUrl: string;
702
+ apiKey?: string;
703
+ tenantId?: string;
704
+ contentKeys: string[];
705
+ }
706
+ /**
707
+ * Prefetch site content keys and set them on the given QueryClient.
708
+ * Call this in getStaticProps, then pass the dehydrated state to HydrationBoundary in _app.
709
+ */
710
+ declare function prefetchSiteContent(queryClient: QueryClient, options: PrefetchSiteContentOptions): Promise<void>;
711
+
689
712
  /**
690
713
  * Blog module types for FoxPixel SDK
691
714
  * Aligned with backend BlogPostResponse, BlogCategoryResponse, BlogTagResponse
@@ -1144,4 +1167,4 @@ interface BlogPostSchemaLdOptions {
1144
1167
  */
1145
1168
  declare function getBlogPostSchemaLd(post: BlogPost, options: BlogPostSchemaLdOptions): Record<string, unknown>;
1146
1169
 
1147
- export { type ApiError$1 as ApiError, AuthProvider, type BlogAnalyticsSummary, type BlogAuthor, type BlogCategory, type BlogComment, type BlogCommentAdmin, type BlogCommentPage, type BlogPost, type BlogPostPage, type BlogPostSchemaLdOptions, type BlogPostStatus, type BlogSettings, type BlogTag, type CreateBlogCommentPayload, type CreateBlogPostPayload, type CreateCategoryPayload, type CreateLeadRequest, type CreateTagPayload, Editable, EditableHTML, EditableImage, type EditableImageProps, type EditableProps, type EndUser, type EndUserLoginRequest, type FoxPixelConfig, FoxPixelHttpClient, FoxPixelProvider, GuestOnlyRoute, type Lead, type NewsletterFrequency, type NewsletterStats, type NewsletterStatus, type NewsletterSubscriber, type NewsletterSubscriberPage, type PostAnalyticsRow, ProtectedRoute, SITE_CONTENT_QUERY_KEY, type Service, type ServiceCatalogResponse, type SiteContent, type SubscribeNewsletterPayload, type UpdateBlogPostPayload, type UseAdminBlogAnalyticsReturn, type UseAdminBlogCategoriesReturn, type UseAdminBlogCommentsOptions, type UseAdminBlogCommentsReturn, type UseAdminBlogPostMutationsReturn, type UseAdminBlogPostReturn, type UseAdminBlogPostsOptions, type UseAdminBlogPostsReturn, type UseAdminBlogSettingsReturn, type UseAdminBlogTagsReturn, type UseAdminNewsletterStatsReturn, type UseAdminNewsletterSubscribersOptions, type UseAdminNewsletterSubscribersReturn, type UseBlogCategoriesReturn, type UseBlogCommentSubmitReturn, type UseBlogCommentsReturn, type UseBlogFeaturedPostsReturn, type UseBlogPostReturn, type UseBlogPostsOptions, type UseBlogPostsReturn, type UseBlogTagsReturn, type UseNewsletterSubscribeReturn, type UseNewsletterUnsubscribeReturn, type UseSiteContentOptions, type UseSiteContentQueryOptions, type UseSiteContentQueryReturn, type UseSiteContentReturn, type UseSiteContentSectionReturn, type UseSiteContentsOptions, type UseSiteContentsReturn, getBlogPostSchemaLd, useAdminBlogAnalytics, useAdminBlogCategories, useAdminBlogComments, useAdminBlogPost, useAdminBlogPostMutations, useAdminBlogPosts, useAdminBlogSettings, useAdminBlogTags, useAdminNewsletterStats, useAdminNewsletterSubscribers, useAuth, useBlogCategories, useBlogCommentSubmit, useBlogComments, useBlogFeaturedPosts, useBlogPost, useBlogPosts, useBlogTags, useContactCapture, useEditMode, useEditModeMessaging, useFoxPixelContext, useLeadCapture, useNewsletterSubscribe, useNewsletterUnsubscribe, useSendEditRequest, useServices, useSiteContent, useSiteContentQuery, useSiteContentSection, useSiteContents, withAuth };
1170
+ export { type ApiError$1 as ApiError, AuthProvider, type BlogAnalyticsSummary, type BlogAuthor, type BlogCategory, type BlogComment, type BlogCommentAdmin, type BlogCommentPage, type BlogPost, type BlogPostPage, type BlogPostSchemaLdOptions, type BlogPostStatus, type BlogSettings, type BlogTag, type CreateBlogCommentPayload, type CreateBlogPostPayload, type CreateCategoryPayload, type CreateLeadRequest, type CreateTagPayload, Editable, EditableHTML, EditableImage, type EditableImageProps, type EditableProps, type EndUser, type EndUserLoginRequest, type FoxPixelConfig, FoxPixelHttpClient, FoxPixelProvider, GuestOnlyRoute, type Lead, type NewsletterFrequency, type NewsletterStats, type NewsletterStatus, type NewsletterSubscriber, type NewsletterSubscriberPage, type PostAnalyticsRow, type PrefetchSiteContentOptions, ProtectedRoute, SITE_CONTENT_QUERY_KEY, type Service, type ServiceCatalogResponse, type SiteContent, type SubscribeNewsletterPayload, type UpdateBlogPostPayload, type UseAdminBlogAnalyticsReturn, type UseAdminBlogCategoriesReturn, type UseAdminBlogCommentsOptions, type UseAdminBlogCommentsReturn, type UseAdminBlogPostMutationsReturn, type UseAdminBlogPostReturn, type UseAdminBlogPostsOptions, type UseAdminBlogPostsReturn, type UseAdminBlogSettingsReturn, type UseAdminBlogTagsReturn, type UseAdminNewsletterStatsReturn, type UseAdminNewsletterSubscribersOptions, type UseAdminNewsletterSubscribersReturn, type UseBlogCategoriesReturn, type UseBlogCommentSubmitReturn, type UseBlogCommentsReturn, type UseBlogFeaturedPostsReturn, type UseBlogPostReturn, type UseBlogPostsOptions, type UseBlogPostsReturn, type UseBlogTagsReturn, type UseNewsletterSubscribeReturn, type UseNewsletterUnsubscribeReturn, type UseSiteContentOptions, type UseSiteContentQueryOptions, type UseSiteContentQueryReturn, type UseSiteContentReturn, type UseSiteContentSectionReturn, type UseSiteContentsOptions, type UseSiteContentsReturn, getBlogPostSchemaLd, prefetchSiteContent, useAdminBlogAnalytics, useAdminBlogCategories, useAdminBlogComments, useAdminBlogPost, useAdminBlogPostMutations, useAdminBlogPosts, useAdminBlogSettings, useAdminBlogTags, useAdminNewsletterStats, useAdminNewsletterSubscribers, useAuth, useBlogCategories, useBlogCommentSubmit, useBlogComments, useBlogFeaturedPosts, useBlogPost, useBlogPosts, useBlogTags, useContactCapture, useEditMode, useEditModeMessaging, useFoxPixelContext, useLeadCapture, useNewsletterSubscribe, useNewsletterUnsubscribe, useSendEditRequest, useServices, useSiteContent, useSiteContentQuery, useSiteContentSection, useSiteContents, withAuth };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React, { ReactNode, ComponentType } from 'react';
3
+ import { QueryClient } from '@tanstack/react-query';
3
4
  import { AxiosInstance, AxiosRequestConfig } from 'axios';
4
5
 
5
6
  /**
@@ -137,10 +138,14 @@ declare class FoxPixelHttpClient {
137
138
  interface FoxPixelContextValue {
138
139
  client: FoxPixelHttpClient;
139
140
  config: FoxPixelConfig;
141
+ /** Optional: pass QueryClient so edit-mode messaging can invalidate cache without requiring useQueryClient() in SDK (avoids "No QueryClient set" in iframe). */
142
+ queryClient?: QueryClient | null;
140
143
  }
141
144
  interface FoxPixelProviderProps {
142
145
  children: ReactNode;
143
146
  config?: FoxPixelConfig;
147
+ /** Pass the app's QueryClient so edit-mode (iframe) can update cache on FOXPIXEL_CONTENT_UPDATED. Required for visual editor preview to refresh. */
148
+ queryClient?: QueryClient | null;
144
149
  }
145
150
  /**
146
151
  * FoxPixelProvider - Wraps your app and provides SDK functionality
@@ -163,7 +168,7 @@ interface FoxPixelProviderProps {
163
168
  * }
164
169
  * ```
165
170
  */
166
- declare function FoxPixelProvider({ children, config }: FoxPixelProviderProps): react_jsx_runtime.JSX.Element;
171
+ declare function FoxPixelProvider({ children, config, queryClient }: FoxPixelProviderProps): react_jsx_runtime.JSX.Element;
167
172
  /**
168
173
  * Hook to access FoxPixel context
169
174
  * @throws Error if used outside FoxPixelProvider
@@ -274,29 +279,30 @@ declare function Editable({ contentKey, defaultValue, as, multiline, className,
274
279
  className: string;
275
280
  'aria-busy': boolean;
276
281
  'aria-label': string;
277
- }, string | React.JSXElementConstructor<any>> | React.DOMElement<{
278
- className: string;
279
- 'data-content-key': string;
280
- 'data-editable': string | undefined;
281
- onClick: ((e: React.MouseEvent) => void) | undefined;
282
- title: string | undefined;
283
- }, Element>;
282
+ }, string | React.JSXElementConstructor<any>> | React.DetailedReactHTMLElement<{
283
+ onMouseEnter: () => void;
284
+ onMouseLeave: () => void;
285
+ style: React.CSSProperties;
286
+ } | {
287
+ onMouseEnter?: undefined;
288
+ onMouseLeave?: undefined;
289
+ style: React.CSSProperties;
290
+ }, HTMLElement>;
284
291
  /**
285
292
  * Renders rich HTML content from the CMS. Content is sanitized before rendering.
286
293
  */
287
294
  declare function EditableHTML({ contentKey, defaultValue, as, className, }: Omit<EditableProps, 'multiline'>): React.ReactElement<{
288
295
  className: string;
289
296
  'aria-busy': boolean;
290
- }, string | React.JSXElementConstructor<any>> | React.DOMElement<{
291
- className: string;
292
- 'data-content-key': string;
293
- 'data-editable': string | undefined;
294
- onClick: ((e: React.MouseEvent) => void) | undefined;
295
- title: string | undefined;
296
- dangerouslySetInnerHTML: {
297
- __html: string;
298
- };
299
- }, Element>;
297
+ }, string | React.JSXElementConstructor<any>> | React.DetailedReactHTMLElement<{
298
+ onMouseEnter: () => void;
299
+ onMouseLeave: () => void;
300
+ style: React.CSSProperties;
301
+ } | {
302
+ onMouseEnter?: undefined;
303
+ onMouseLeave?: undefined;
304
+ style: React.CSSProperties;
305
+ }, HTMLElement>;
300
306
  interface EditableImageProps {
301
307
  contentKey: string;
302
308
  defaultValue: string;
@@ -657,8 +663,8 @@ declare const SITE_CONTENT_QUERY_KEY: "siteContent";
657
663
  declare function useEditMode(): boolean;
658
664
  /**
659
665
  * Sets up edit-mode messaging: notifies parent when ready and listens for
660
- * FOXPIXEL_CONTENT_UPDATED to invalidate the corresponding site content query.
661
- * App must be wrapped in QueryClientProvider when using edit mode.
666
+ * FOXPIXEL_CONTENT_UPDATED. Uses queryClient from FoxPixelContext (pass it to
667
+ * FoxPixelProvider) so we don't require useQueryClient() and avoid "No QueryClient set" in iframe.
662
668
  */
663
669
  declare function useEditModeMessaging(): boolean;
664
670
  /**
@@ -668,9 +674,9 @@ declare function useEditModeMessaging(): boolean;
668
674
  declare function useSendEditRequest(): (contentKey: string, currentValue: string, contentType?: string, section?: string, description?: string) => void;
669
675
 
670
676
  /**
671
- * React Query-based hook for site content used by Editable components.
672
- * Uses queryKey ['siteContent', key] so that useEditModeMessaging can invalidate
673
- * on FOXPIXEL_CONTENT_UPDATED. Requires QueryClientProvider.
677
+ * Site content hook for Editable components.
678
+ * Uses the QueryClient passed via FoxPixelProvider (no useQuery) so it never
679
+ * depends on QueryClientProvider context — avoids "No QueryClient set" in iframe/SSR.
674
680
  */
675
681
  interface UseSiteContentQueryOptions {
676
682
  defaultValue: string;
@@ -681,11 +687,28 @@ interface UseSiteContentQueryReturn {
681
687
  contentType: string;
682
688
  }
683
689
  /**
684
- * Fetches a single site content by key using React Query. Used by Editable, EditableHTML, EditableImage.
685
- * Invalidation is triggered by useEditModeMessaging when the parent sends FOXPIXEL_CONTENT_UPDATED.
690
+ * Fetches a single site content by key. Uses the queryClient from FoxPixelContext
691
+ * (passed by the host) so it never calls useQuery() and never throws "No QueryClient set".
686
692
  */
687
693
  declare function useSiteContentQuery(contentKey: string, options: UseSiteContentQueryOptions): UseSiteContentQueryReturn;
688
694
 
695
+ /**
696
+ * Prefetch site content for Next.js getStaticProps (SSG).
697
+ * Fetches content keys and fills the QueryClient so HydrationBoundary can hydrate the app.
698
+ */
699
+
700
+ interface PrefetchSiteContentOptions {
701
+ apiUrl: string;
702
+ apiKey?: string;
703
+ tenantId?: string;
704
+ contentKeys: string[];
705
+ }
706
+ /**
707
+ * Prefetch site content keys and set them on the given QueryClient.
708
+ * Call this in getStaticProps, then pass the dehydrated state to HydrationBoundary in _app.
709
+ */
710
+ declare function prefetchSiteContent(queryClient: QueryClient, options: PrefetchSiteContentOptions): Promise<void>;
711
+
689
712
  /**
690
713
  * Blog module types for FoxPixel SDK
691
714
  * Aligned with backend BlogPostResponse, BlogCategoryResponse, BlogTagResponse
@@ -1144,4 +1167,4 @@ interface BlogPostSchemaLdOptions {
1144
1167
  */
1145
1168
  declare function getBlogPostSchemaLd(post: BlogPost, options: BlogPostSchemaLdOptions): Record<string, unknown>;
1146
1169
 
1147
- export { type ApiError$1 as ApiError, AuthProvider, type BlogAnalyticsSummary, type BlogAuthor, type BlogCategory, type BlogComment, type BlogCommentAdmin, type BlogCommentPage, type BlogPost, type BlogPostPage, type BlogPostSchemaLdOptions, type BlogPostStatus, type BlogSettings, type BlogTag, type CreateBlogCommentPayload, type CreateBlogPostPayload, type CreateCategoryPayload, type CreateLeadRequest, type CreateTagPayload, Editable, EditableHTML, EditableImage, type EditableImageProps, type EditableProps, type EndUser, type EndUserLoginRequest, type FoxPixelConfig, FoxPixelHttpClient, FoxPixelProvider, GuestOnlyRoute, type Lead, type NewsletterFrequency, type NewsletterStats, type NewsletterStatus, type NewsletterSubscriber, type NewsletterSubscriberPage, type PostAnalyticsRow, ProtectedRoute, SITE_CONTENT_QUERY_KEY, type Service, type ServiceCatalogResponse, type SiteContent, type SubscribeNewsletterPayload, type UpdateBlogPostPayload, type UseAdminBlogAnalyticsReturn, type UseAdminBlogCategoriesReturn, type UseAdminBlogCommentsOptions, type UseAdminBlogCommentsReturn, type UseAdminBlogPostMutationsReturn, type UseAdminBlogPostReturn, type UseAdminBlogPostsOptions, type UseAdminBlogPostsReturn, type UseAdminBlogSettingsReturn, type UseAdminBlogTagsReturn, type UseAdminNewsletterStatsReturn, type UseAdminNewsletterSubscribersOptions, type UseAdminNewsletterSubscribersReturn, type UseBlogCategoriesReturn, type UseBlogCommentSubmitReturn, type UseBlogCommentsReturn, type UseBlogFeaturedPostsReturn, type UseBlogPostReturn, type UseBlogPostsOptions, type UseBlogPostsReturn, type UseBlogTagsReturn, type UseNewsletterSubscribeReturn, type UseNewsletterUnsubscribeReturn, type UseSiteContentOptions, type UseSiteContentQueryOptions, type UseSiteContentQueryReturn, type UseSiteContentReturn, type UseSiteContentSectionReturn, type UseSiteContentsOptions, type UseSiteContentsReturn, getBlogPostSchemaLd, useAdminBlogAnalytics, useAdminBlogCategories, useAdminBlogComments, useAdminBlogPost, useAdminBlogPostMutations, useAdminBlogPosts, useAdminBlogSettings, useAdminBlogTags, useAdminNewsletterStats, useAdminNewsletterSubscribers, useAuth, useBlogCategories, useBlogCommentSubmit, useBlogComments, useBlogFeaturedPosts, useBlogPost, useBlogPosts, useBlogTags, useContactCapture, useEditMode, useEditModeMessaging, useFoxPixelContext, useLeadCapture, useNewsletterSubscribe, useNewsletterUnsubscribe, useSendEditRequest, useServices, useSiteContent, useSiteContentQuery, useSiteContentSection, useSiteContents, withAuth };
1170
+ export { type ApiError$1 as ApiError, AuthProvider, type BlogAnalyticsSummary, type BlogAuthor, type BlogCategory, type BlogComment, type BlogCommentAdmin, type BlogCommentPage, type BlogPost, type BlogPostPage, type BlogPostSchemaLdOptions, type BlogPostStatus, type BlogSettings, type BlogTag, type CreateBlogCommentPayload, type CreateBlogPostPayload, type CreateCategoryPayload, type CreateLeadRequest, type CreateTagPayload, Editable, EditableHTML, EditableImage, type EditableImageProps, type EditableProps, type EndUser, type EndUserLoginRequest, type FoxPixelConfig, FoxPixelHttpClient, FoxPixelProvider, GuestOnlyRoute, type Lead, type NewsletterFrequency, type NewsletterStats, type NewsletterStatus, type NewsletterSubscriber, type NewsletterSubscriberPage, type PostAnalyticsRow, type PrefetchSiteContentOptions, ProtectedRoute, SITE_CONTENT_QUERY_KEY, type Service, type ServiceCatalogResponse, type SiteContent, type SubscribeNewsletterPayload, type UpdateBlogPostPayload, type UseAdminBlogAnalyticsReturn, type UseAdminBlogCategoriesReturn, type UseAdminBlogCommentsOptions, type UseAdminBlogCommentsReturn, type UseAdminBlogPostMutationsReturn, type UseAdminBlogPostReturn, type UseAdminBlogPostsOptions, type UseAdminBlogPostsReturn, type UseAdminBlogSettingsReturn, type UseAdminBlogTagsReturn, type UseAdminNewsletterStatsReturn, type UseAdminNewsletterSubscribersOptions, type UseAdminNewsletterSubscribersReturn, type UseBlogCategoriesReturn, type UseBlogCommentSubmitReturn, type UseBlogCommentsReturn, type UseBlogFeaturedPostsReturn, type UseBlogPostReturn, type UseBlogPostsOptions, type UseBlogPostsReturn, type UseBlogTagsReturn, type UseNewsletterSubscribeReturn, type UseNewsletterUnsubscribeReturn, type UseSiteContentOptions, type UseSiteContentQueryOptions, type UseSiteContentQueryReturn, type UseSiteContentReturn, type UseSiteContentSectionReturn, type UseSiteContentsOptions, type UseSiteContentsReturn, getBlogPostSchemaLd, prefetchSiteContent, useAdminBlogAnalytics, useAdminBlogCategories, useAdminBlogComments, useAdminBlogPost, useAdminBlogPostMutations, useAdminBlogPosts, useAdminBlogSettings, useAdminBlogTags, useAdminNewsletterStats, useAdminNewsletterSubscribers, useAuth, useBlogCategories, useBlogCommentSubmit, useBlogComments, useBlogFeaturedPosts, useBlogPost, useBlogPosts, useBlogTags, useContactCapture, useEditMode, useEditModeMessaging, useFoxPixelContext, useLeadCapture, useNewsletterSubscribe, useNewsletterUnsubscribe, useSendEditRequest, useServices, useSiteContent, useSiteContentQuery, useSiteContentSection, useSiteContents, withAuth };