UNPKG

@ai-growth/nextjs

Version:

Seamlessly integrate Sanity CMS with Next.js applications for automated blog routing and rendering

94 lines (93 loc) 3.07 kB
import { SimpleDefaultTemplate } from './SimpleDefaultTemplate'; import { PostTemplate } from './PostTemplate'; import { PageTemplate } from './PageTemplate'; import { BlogTemplate } from './BlogTemplate'; /** * Create a default template registry with common content types * * @param config Configuration options for the registry * @returns Template registry with default templates */ export function createDefaultTemplateRegistry(config = {}) { const { includeWildcardPatterns = true, customTemplates = {}, defaultTemplate = SimpleDefaultTemplate, } = config; const registry = { // Base templates post: PostTemplate, page: PageTemplate, blog: BlogTemplate, default: defaultTemplate, // Wildcard patterns 'blog.*': includeWildcardPatterns ? BlogTemplate : defaultTemplate, // Custom templates override defaults ...customTemplates, }; return registry; } /** * Create a minimal template registry with just the default template * * @param defaultTemplate The template to use as default (optional) * @returns Minimal template registry */ export function createMinimalTemplateRegistry(defaultTemplate = SimpleDefaultTemplate) { return { default: defaultTemplate, }; } /** * Create a comprehensive template registry with all available templates * * @param customTemplates Additional custom templates to include * @returns Comprehensive template registry */ export function createComprehensiveTemplateRegistry(customTemplates = {}) { return { // Content type templates post: PostTemplate, page: PageTemplate, blog: BlogTemplate, article: PostTemplate, // Alias for post // Wildcard patterns 'blog.*': BlogTemplate, 'post.*': PostTemplate, 'page.*': PageTemplate, 'article.*': PostTemplate, // Default fallback default: SimpleDefaultTemplate, // Custom templates ...customTemplates, }; } /** * Utility function to extend an existing template registry * * @param existingRegistry The existing template registry * @param extensions Additional templates to add * @returns Extended template registry */ export function extendTemplateRegistry(existingRegistry, extensions) { return { ...existingRegistry, ...extensions, }; } /** * Utility function to create a template registry for specific content types * * @param contentTypes Array of content types to create templates for * @param templateComponent The template component to use for all types * @returns Template registry with specified content types */ export function createContentTypeRegistry(contentTypes, templateComponent = SimpleDefaultTemplate) { const registry = { default: templateComponent, }; contentTypes.forEach(contentType => { registry[contentType] = templateComponent; }); return registry; } /** * Default export - the standard template registry */ export default createDefaultTemplateRegistry;