@ai-growth/nextjs
Version:
Seamlessly integrate Sanity CMS with Next.js applications for automated blog routing and rendering
130 lines • 4.56 kB
TypeScript
/**
* @fileoverview Lazy-Loaded Template Components
*
* This module provides lazy-loaded versions of template components for code splitting
* and performance optimization. These components load on-demand to reduce initial bundle size.
*/
import React from 'react';
import type { DefaultTemplateProps } from '../types';
/**
* Lazy-loaded DefaultTemplateV2 component
*/
export declare const LazyDefaultTemplateV2: React.LazyExoticComponent<React.FC<import("./DefaultTemplateV2").ExtendedTemplateProps>>;
/**
* Lazy-loaded SimpleDefaultTemplate component
*/
export declare const LazySimpleDefaultTemplate: React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
/**
* Lazy-loaded BlogTemplate component
*/
export declare const LazyBlogTemplate: React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
/**
* Lazy-loaded PageTemplate component
*/
export declare const LazyPageTemplate: React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
/**
* Lazy-loaded PostTemplate component
*/
export declare const LazyPostTemplate: React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
/**
* DefaultTemplateV2 with Suspense wrapper
*/
export declare const DefaultTemplateV2WithSuspense: React.FC<DefaultTemplateProps>;
/**
* SimpleDefaultTemplate with Suspense wrapper
*/
export declare const SimpleDefaultTemplateWithSuspense: React.FC<DefaultTemplateProps>;
/**
* BlogTemplate with Suspense wrapper
*/
export declare const BlogTemplateWithSuspense: React.FC<DefaultTemplateProps>;
/**
* PageTemplate with Suspense wrapper
*/
export declare const PageTemplateWithSuspense: React.FC<DefaultTemplateProps>;
/**
* PostTemplate with Suspense wrapper
*/
export declare const PostTemplateWithSuspense: React.FC<DefaultTemplateProps>;
/**
* Template mapping for lazy loading
*/
export declare const LAZY_TEMPLATE_MAP: {
readonly 'default-v2': React.LazyExoticComponent<React.FC<import("./DefaultTemplateV2").ExtendedTemplateProps>>;
readonly 'simple-default': React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
readonly blog: React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
readonly page: React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
readonly post: React.LazyExoticComponent<React.FC<DefaultTemplateProps>>;
};
/**
* Template mapping with Suspense wrappers
*/
export declare const TEMPLATE_MAP_WITH_SUSPENSE: {
readonly 'default-v2': React.FC<DefaultTemplateProps>;
readonly 'simple-default': React.FC<DefaultTemplateProps>;
readonly blog: React.FC<DefaultTemplateProps>;
readonly page: React.FC<DefaultTemplateProps>;
readonly post: React.FC<DefaultTemplateProps>;
};
/**
* Preload all templates
*/
export declare const preloadAllTemplates: () => Promise<void>;
/**
* Preload specific template
*/
export declare const preloadTemplate: (templateName: keyof typeof LAZY_TEMPLATE_MAP) => Promise<void>;
/**
* Props for dynamic template loader
*/
export interface DynamicTemplateLoaderProps extends DefaultTemplateProps {
/** Template name to load */
templateName?: keyof typeof LAZY_TEMPLATE_MAP;
/** Whether to show loading state */
showLoading?: boolean;
/** Custom loading component */
loadingComponent?: React.ComponentType;
/** Preload on hover */
preloadOnHover?: boolean;
}
/**
* Dynamic template loader component
*/
export declare const DynamicTemplateLoader: React.FC<DynamicTemplateLoaderProps>;
/**
* Lazy-loaded error pages for better performance
*/
export declare const LazyErrorPages: {
NotFoundPage: React.LazyExoticComponent<React.FC<import("../components").NotFoundPageProps>>;
ServerErrorPage: React.LazyExoticComponent<React.FC<import("../components").ServerErrorPageProps>>;
};
/**
* Error page with Suspense wrapper
*/
export declare const ErrorPageWithSuspense: React.FC<{
type: keyof typeof LazyErrorPages;
fallback?: React.ReactNode;
[key: string]: any;
}>;
/**
* Get chunk name for template
*/
export declare const getTemplateChunkName: (templateName: string) => string;
/**
* Check if template is preloaded
*/
export declare const isTemplatePreloaded: (_templateName: keyof typeof LAZY_TEMPLATE_MAP) => boolean;
/**
* Template performance metrics
*/
export interface TemplateMetrics {
templateName: string;
loadTime: number;
size: number;
cached: boolean;
}
/**
* Track template loading performance
*/
export declare const trackTemplateLoad: (templateName: string, startTime: number) => TemplateMetrics;
//# sourceMappingURL=LazyTemplates.d.ts.map