@sprintup-cms/sdk 1.9.8 → 1.9.9
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/next/index.cjs +1 -1
- package/dist/next/index.cjs.map +1 -1
- package/dist/next/index.js +1 -1
- package/dist/next/index.js.map +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react/blocks.tsx","../../src/react/preview-banner.tsx"],"names":["jsxs","jsx","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["'use client'\n\nimport React from 'react'\nimport type { CMSBlock, CMSPageType } from '../client'\n\nexport interface CMSBlocksProps {\n blocks: CMSBlock[]\n pageType?: CMSPageType | null\n className?: string\n /**\n * Custom block renderers — extend or override built-in blocks.\n * @example\n * <CMSBlocks blocks={blocks} custom={{ 'my-hero': (block) => <MyHero {...block.data} /> }} />\n */\n custom?: Record<string, (block: CMSBlock) => React.ReactNode>\n}\n\n/**\n * Resolves block data from either `data` (v1.1+) or legacy `content` field.\n */\nfunction getData(block: CMSBlock): Record<string, any> {\n return block.data ?? block.content ?? {}\n}\n\n// ── Built-in block renderers ──────────────────────────────────────────────────\n\nfunction HeadingBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const text = d.text || d.heading || d.title || ''\n const level = Number(d.level) || 2\n const cls = {\n 1: 'text-4xl font-bold tracking-tight',\n 2: 'text-2xl font-bold mt-8',\n 3: 'text-xl font-semibold mt-6',\n 4: 'text-lg font-medium mt-4',\n }[level] ?? 'text-2xl font-bold'\n return React.createElement(`h${level}`, { className: cls }, text)\n}\n\nfunction TextBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const raw = d.text || d.content || ''\n // If the stored value contains HTML tags, render it properly rather than as raw tag text\n const isHtml = typeof raw === 'string' && /<[a-z][\\s\\S]*>/i.test(raw)\n if (isHtml) {\n return (\n <div\n className=\"prose prose-neutral dark:prose-invert max-w-none\"\n dangerouslySetInnerHTML={{ __html: raw }}\n />\n )\n }\n return <p className=\"text-base leading-relaxed text-muted-foreground\">{raw}</p>\n}\n\nfunction RichTextBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const html = d.content || d.richtext || d.text || ''\n if (!html) return null\n return (\n <div\n className=\"prose prose-neutral dark:prose-invert max-w-none\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n )\n}\n\nfunction ImageBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const src = d.src || d.url || d.image || ''\n if (!src) return null\n return (\n <figure className=\"my-6\">\n <img src={src} alt={d.alt || ''} className=\"w-full rounded-lg border object-cover\" />\n {d.caption && (\n <figcaption className=\"mt-2 text-sm text-muted-foreground text-center\">{d.caption}</figcaption>\n )}\n </figure>\n )\n}\n\nfunction HeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const align = d.alignment || 'left'\n const textAlign = align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'right' ? 'items-end' : align === 'center' ? 'items-center' : 'items-start'\n const mx = align === 'center' ? 'mx-auto' : align === 'right' ? 'ml-auto' : ''\n return (\n <section className=\"py-12 md:py-20\">\n <div className={`max-w-3xl ${mx}`}>\n {d.badge && (\n <span className={`inline-block px-3 py-1 text-xs font-semibold rounded-full bg-secondary text-secondary-foreground mb-4`}>\n {d.badge}\n </span>\n )}\n <h1 className={`text-4xl md:text-5xl font-bold tracking-tight mb-4 text-balance ${textAlign}`}>{d.title}</h1>\n {d.subtitle && <p className={`text-xl text-muted-foreground mb-8 ${textAlign}`}>{d.subtitle}</p>}\n {(d.primaryButton || d.cta) && (\n <div className={`flex flex-wrap ${itemsAlign}`} style={{ gap: '1rem' }}>\n {(d.primaryButton || d.cta) && (\n <a href={d.primaryUrl || d.ctaUrl || '#'}\n className=\"inline-flex items-center px-6 py-3 rounded-lg bg-primary text-primary-foreground font-semibold hover:opacity-90 transition-opacity\">\n {d.primaryButton || d.cta}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-6 py-3 rounded-lg border border-border font-semibold hover:bg-muted transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction CTABlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <section className=\"py-12 px-8 rounded-xl bg-primary text-primary-foreground text-center\">\n <h2 className=\"text-2xl md:text-3xl font-bold mb-4\">{d.title}</h2>\n {d.subtitle && <p className=\"text-primary-foreground/80 mb-6 max-w-2xl mx-auto\">{d.subtitle}</p>}\n <div className=\"flex justify-center flex-wrap\" style={{ gap: '1rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"px-6 py-3 rounded-lg bg-background text-foreground font-semibold hover:opacity-90 transition-opacity\">\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"px-6 py-3 rounded-lg border border-primary-foreground/20 text-primary-foreground font-semibold hover:bg-primary-foreground/10 transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n </section>\n )\n}\n\nfunction FAQBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: { question: string; answer: string }[] = d.items || []\n return (\n <section className=\"py-8\">\n {d.title && <h2 className=\"text-2xl font-bold mb-6\">{d.title}</h2>}\n <div className=\"space-y-4\">\n {items.map((item, i) => (\n <details key={i} className=\"group border border-border rounded-lg\">\n <summary className=\"flex items-center justify-between p-4 cursor-pointer font-medium select-none\">\n {item.question}\n <span className=\"transition-transform group-open:rotate-45 text-lg leading-none\">+</span>\n </summary>\n <div className=\"px-4 pb-4 text-muted-foreground\">{item.answer}</div>\n </details>\n ))}\n </div>\n </section>\n )\n}\n\nfunction TeamMemberBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <div className=\"flex flex-col sm:flex-row items-center sm:items-start gap-4 p-6 rounded-xl border border-border bg-card\">\n {d.avatar ? (\n <img\n src={d.avatar}\n alt={d.name || 'Team member'}\n className=\"w-20 h-20 rounded-full object-cover border-2 border-border flex-shrink-0\"\n />\n ) : (\n <div className=\"w-20 h-20 rounded-full bg-muted flex items-center justify-center text-muted-foreground text-2xl font-semibold flex-shrink-0\">\n {(d.name || 'T').charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"text-center sm:text-left\">\n {d.name && <h3 className=\"font-semibold text-lg\">{d.name}</h3>}\n {d.role && <p className=\"text-sm text-primary font-medium\">{d.role}</p>}\n {d.bio && <p className=\"text-sm text-muted-foreground mt-2 leading-relaxed\">{d.bio}</p>}\n </div>\n </div>\n )\n}\n\nfunction StatsBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: { value: string; label: string }[] = d.items || d.stats || []\n return (\n <section className=\"py-8\">\n {d.title && <h2 className=\"text-2xl font-bold mb-6 text-center\">{d.title}</h2>}\n <div className={`grid gap-6 grid-cols-2 md:grid-cols-${Math.min(items.length, 4)}`}>\n {items.map((s, i) => (\n <div key={i} className=\"text-center p-6 rounded-lg border bg-card\">\n <div className=\"text-3xl font-bold text-primary\">{s.value}</div>\n <div className=\"text-sm text-muted-foreground mt-1\">{s.label}</div>\n </div>\n ))}\n </div>\n </section>\n )\n}\n\nfunction TestimonialBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <div className=\"border border-border rounded-xl p-6 bg-card\">\n <blockquote className=\"text-lg italic mb-4 text-foreground\">\"{d.quote}\"</blockquote>\n <div className=\"flex items-center gap-3\">\n {d.avatar && <img src={d.avatar} alt=\"\" className=\"w-10 h-10 rounded-full object-cover\" />}\n <div>\n <div className=\"font-semibold\">{d.author}</div>\n {d.role && <div className=\"text-sm text-muted-foreground\">{d.role}</div>}\n </div>\n </div>\n </div>\n )\n}\n\nfunction QuoteBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <blockquote className=\"border-l-4 border-primary pl-6 py-2 italic text-lg\">\n {d.text}\n {d.author && <footer className=\"mt-2 text-sm text-muted-foreground not-italic\">— {d.author}</footer>}\n </blockquote>\n )\n}\n\nfunction AlertBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const colors: Record<string, string> = {\n info: 'bg-blue-50 border-blue-200 text-blue-800 dark:bg-blue-950 dark:border-blue-800 dark:text-blue-200',\n success: 'bg-green-50 border-green-200 text-green-800 dark:bg-green-950 dark:border-green-800 dark:text-green-200',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-800 dark:bg-yellow-950 dark:border-yellow-800 dark:text-yellow-200',\n error: 'bg-red-50 border-red-200 text-red-800 dark:bg-red-950 dark:border-red-800 dark:text-red-200',\n }\n const variant = d.variant || d.type || 'info'\n return (\n <div className={`p-4 rounded-lg border ${colors[variant] ?? colors.info}`}>\n {d.title && <div className=\"font-semibold mb-1\">{d.title}</div>}\n <p>{d.message || d.text || ''}</p>\n </div>\n )\n}\n\nfunction DividerBlock() {\n return <hr className=\"my-8 border-border\" />\n}\n\nfunction SpacerBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const sizes: Record<string, string> = { sm: 'h-4', md: 'h-8', lg: 'h-16', xl: 'h-24' }\n return <div className={sizes[d.size] ?? 'h-8'} />\n}\n\nfunction VideoBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const url = d.url || d.embed || ''\n if (!url) return null\n // Convert YouTube/Vimeo watch URLs to embed URLs\n const embedUrl = url\n .replace('youtube.com/watch?v=', 'youtube.com/embed/')\n .replace('youtu.be/', 'youtube.com/embed/')\n .replace('vimeo.com/', 'player.vimeo.com/video/')\n return (\n <div className=\"aspect-video rounded-lg overflow-hidden border bg-muted\">\n <iframe src={embedUrl} allow=\"autoplay; fullscreen\" allowFullScreen className=\"w-full h-full\" title={d.title || 'Video'} />\n </div>\n )\n}\n\n// ── Product List Block (dynamic, fetches from API) ────────────────────────────\n\ninterface Product {\n id: string\n name: string\n price: number\n image?: string\n rating?: number\n category?: string\n description?: string\n badge?: string\n}\n\nfunction normaliseProduct(raw: Record<string, any>): Product {\n if (raw.id !== undefined && raw.price !== undefined) return raw as Product\n const firstPlan = Array.isArray(raw.plans) && raw.plans.length > 0 ? raw.plans[0] : null\n const courseCount = Array.isArray(raw.courses) ? raw.courses.length : undefined\n // Skip base64 images — too large, use thumbnail or nothing\n const image = raw.image && !raw.image.startsWith('data:') ? raw.image : (raw.thumbnail ?? undefined)\n return {\n id: raw._id ?? raw.id ?? String(Math.random()),\n name: raw.name ?? 'Unnamed',\n description: raw.description,\n price: firstPlan?.price ?? raw.price ?? 0,\n image,\n rating: raw.rating ?? undefined,\n category: raw.type ? raw.type.replace(/-/g, ' ').replace(/\\b\\w/g, (c: string) => c.toUpperCase()) : undefined,\n badge: courseCount ? `${courseCount} course${courseCount !== 1 ? 's' : ''}` : (raw.duration ? `${raw.duration} min` : undefined),\n }\n}\n\nfunction ProductListBlock({ block }: { block: CMSBlock }) {\n // Config lives in block.content; pre-fetched products in block.data.products (set by CMS API)\n const cfg = (block.content ?? {}) as any\n const { title, subtitle, columns = 3, showPrice = true, showRating = true, limit = 6, currency = '$' } = cfg\n const cols = parseInt(String(columns), 10)\n const gridCols = cols === 2 ? 'sm:grid-cols-2' : cols === 4 ? 'sm:grid-cols-2 lg:grid-cols-4' : 'sm:grid-cols-2 lg:grid-cols-3'\n\n // Products pre-fetched by CMS API — stored in content.prefetchedProducts (survives RSC serialization)\n const rawProducts = Array.isArray(cfg.prefetchedProducts) ? cfg.prefetchedProducts : []\n const products: Product[] = (rawProducts as any[]).map(normaliseProduct).slice(0, Number(limit))\n\n if (products.length === 0) {\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n <div className=\"text-center py-12 border border-dashed border-border rounded-lg bg-muted/10\">\n <p className=\"text-sm text-muted-foreground\">No products available</p>\n </div>\n </div>\n </section>\n )\n }\n\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-8\">\n {title && <h2 className=\"text-2xl md:text-3xl font-semibold tracking-tight\">{title}</h2>}\n {subtitle && <p className=\"text-muted-foreground mt-2\">{subtitle}</p>}\n </div>\n )}\n <div className={`grid gap-6 grid-cols-1 ${gridCols}`}>\n {products.map((product) => (\n <div key={product.id} className=\"border rounded-lg overflow-hidden group hover:shadow-md transition-shadow bg-card\">\n {product.image && (\n <div className=\"aspect-video relative bg-muted overflow-hidden\">\n <img src={product.image} alt={product.name} className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\" />\n </div>\n )}\n <div className=\"p-4 space-y-2\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n {product.category && (\n <span className=\"text-xs px-2 py-0.5 rounded-full bg-primary/10 text-primary font-medium\">{product.category}</span>\n )}\n {product.badge && (\n <span className=\"text-xs px-2 py-0.5 rounded-full bg-muted text-muted-foreground\">{product.badge}</span>\n )}\n </div>\n <h3 className=\"font-semibold text-base line-clamp-2\">{product.name}</h3>\n <div className=\"flex items-center justify-between pt-1\">\n {showPrice && product.price > 0 && (\n <span className=\"font-bold text-lg\">{typeof product.price === 'number' ? product.price.toFixed(2) : product.price} {currency}</span>\n )}\n {showRating && product.rating && (\n <div className=\"flex items-center gap-1 text-sm text-muted-foreground\">\n <svg className=\"w-3.5 h-3.5 fill-yellow-400 text-yellow-400\" viewBox=\"0 0 24 24\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"/></svg>\n <span>{product.rating}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n )\n}\n\n// ── Renders a single field value based on its field type ──────────────────────\n\nfunction FieldValue({ value, fieldType }: { value: any; fieldType: string }) {\n if (value === null || value === undefined || value === '') return null\n const isHtml = (v: any) => typeof v === 'string' && /<[a-z][\\s\\S]*>/i.test(v)\n\n if (fieldType === 'richtext' || isHtml(value)) {\n return (\n <div\n className=\"prose prose-neutral dark:prose-invert max-w-none\"\n dangerouslySetInnerHTML={{ __html: String(value) }}\n />\n )\n }\n if (fieldType === 'image') {\n return <img src={String(value)} alt=\"\" className=\"rounded-lg border max-h-96 object-cover w-full\" />\n }\n if (fieldType === 'boolean') {\n return <span className=\"text-muted-foreground\">{value ? 'Yes' : 'No'}</span>\n }\n if (fieldType === 'url') {\n return <a href={String(value)} className=\"text-primary underline underline-offset-2 break-all\">{String(value)}</a>\n }\n if (Array.isArray(value)) {\n return <span className=\"text-muted-foreground\">{value.join(', ')}</span>\n }\n return <span className=\"text-muted-foreground\">{String(value)}</span>\n}\n\n// ── Structured block: type === '__structured__', content is nested { sectionName: { fieldName: value } }\n// ────────────────────────────────────────���───────────��────────────────────────\n\nfunction StructuredBlock({ block, pageType }: { block: CMSBlock; pageType?: CMSPageType | null }) {\n // content is { sectionName: { fieldName: value } } after API denormalization\n const nested: Record<string, Record<string, any>> = (block.content ?? block.data ?? {}) as any\n\n // If we have the page type schema, use it to drive rendering with correct field types\n if (pageType?.sections?.length) {\n return (\n <div className=\"space-y-8\">\n {pageType.sections.map(section => {\n const sectionData = nested[section.name] ?? {}\n const filledFields = section.fields.filter(f => {\n const v = sectionData[f.name]\n return v !== undefined && v !== null && v !== ''\n })\n if (filledFields.length === 0) return null\n return (\n <section key={section.id} className=\"space-y-4\">\n {filledFields.map(field => {\n const value = sectionData[field.name]\n if (value === undefined || value === null || value === '') return null\n return (\n <div key={field.id}>\n <FieldValue value={value} fieldType={field.fieldType} />\n </div>\n )\n })}\n </section>\n )\n })}\n </div>\n )\n }\n\n // No schema — iterate the nested sections and render scalar + html values\n const isHtml = (v: any) => typeof v === 'string' && /<[a-z][\\s\\S]*>/i.test(v)\n return (\n <div className=\"space-y-8\">\n {Object.entries(nested).map(([sectionName, fields]) => {\n if (!fields || typeof fields !== 'object' || Array.isArray(fields)) return null\n const entries = Object.entries(fields).filter(([, v]) => v !== '' && v !== null && v !== undefined)\n if (entries.length === 0) return null\n return (\n <section key={sectionName} className=\"space-y-4\">\n {entries.map(([fieldName, value]) => {\n if (typeof value === 'object' && !Array.isArray(value)) return null\n return (\n <div key={fieldName}>\n {isHtml(value) ? (\n <div className=\"prose prose-neutral dark:prose-invert max-w-none\" dangerouslySetInnerHTML={{ __html: String(value) }} />\n ) : Array.isArray(value) ? (\n <p className=\"text-muted-foreground\">{value.join(', ')}</p>\n ) : (\n <p className=\"text-muted-foreground\">{String(value)}</p>\n )}\n </div>\n )\n })}\n </section>\n )\n })}\n </div>\n )\n}\n\n// ── Named section block (block.type matches a pageType section name) ──────────\n\nfunction SectionBlock({ block, pageType }: { block: CMSBlock; pageType?: CMSPageType | null }) {\n const d = getData(block)\n const section = pageType?.sections.find(s => s.name === block.type)\n\n if (section) {\n const filledFields = section.fields.filter(f => {\n const v = d[f.name]\n return v !== undefined && v !== null && v !== ''\n })\n if (filledFields.length === 0) return null\n return (\n <section className=\"space-y-4\">\n {filledFields.map(field => {\n const value = d[field.name]\n if (value === undefined || value === null || value === '') return null\n return (\n <div key={field.id}>\n <FieldValue value={value} fieldType={field.fieldType} />\n </div>\n )\n })}\n </section>\n )\n }\n\n // No schema — render scalar values only\n const isHtml = (v: any) => typeof v === 'string' && /<[a-z][\\s\\S]*>/i.test(v)\n const entries = Object.entries(d).filter(([, v]) =>\n v !== '' && v !== null && v !== undefined &&\n typeof v !== 'object' && !Array.isArray(v)\n )\n if (entries.length === 0) return null\n return (\n <section className=\"space-y-2\">\n {entries.map(([key, value]) =>\n isHtml(value) ? (\n <div key={key} className=\"prose prose-neutral dark:prose-invert max-w-none\" dangerouslySetInnerHTML={{ __html: String(value) }} />\n ) : (\n <p key={key} className=\"text-muted-foreground\">{String(value)}</p>\n )\n )}\n </section>\n )\n}\n\n// Maps icon string names (from editor) to inline SVG paths\nconst FEATURE_ICONS: Record<string, React.ReactNode> = {\n zap: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"/></svg>,\n shield: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/></svg>,\n star: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>,\n check: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polyline points=\"20 6 9 17 4 12\"/></svg>,\n lock: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/></svg>,\n globe: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/></svg>,\n clock: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><polyline points=\"12 6 12 12 16 14\"/></svg>,\n heart: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg>,\n settings: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"/></svg>,\n users: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/></svg>,\n trending: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"/><polyline points=\"17 6 23 6 23 12\"/></svg>,\n}\n\nfunction ButtonBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const label = d.label || d.text || 'Button'\n const url = d.url || '#'\n const variant = d.variant || 'default'\n const base = 'inline-flex items-center justify-center px-5 py-2.5 rounded-lg text-sm font-medium transition-opacity hover:opacity-90'\n const cls = variant === 'outline'\n ? `${base} border border-primary text-primary bg-transparent`\n : variant === 'ghost'\n ? `${base} text-primary hover:bg-primary/10`\n : `${base} bg-primary text-primary-foreground`\n return (\n <div>\n <a href={url} className={cls}>{label}</a>\n </div>\n )\n}\n\nfunction ListBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: string[] = Array.isArray(d.items) ? d.items : []\n const ordered = Boolean(d.ordered)\n const Tag = ordered ? 'ol' : 'ul'\n const listCls = ordered ? 'list-decimal' : 'list-disc'\n return (\n <Tag className={`${listCls} pl-6 space-y-1.5 text-base text-foreground leading-relaxed`}>\n {items.map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </Tag>\n )\n}\n\nfunction GalleryBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const images: any[] = Array.isArray(d.images) ? d.images : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'grid-cols-2' : cols === 4 ? 'grid-cols-2 md:grid-cols-4' : 'grid-cols-2 md:grid-cols-3'\n if (!images.length) return null\n return (\n <div className={`grid gap-3 ${gridCols}`}>\n {images.filter(img => img.src).map((img, i) => (\n <figure key={i} className=\"overflow-hidden rounded-lg border border-border\">\n <img src={img.src} alt={img.alt || ''} className=\"w-full h-48 object-cover\" />\n {img.caption && <figcaption className=\"px-2 py-1 text-xs text-muted-foreground text-center\">{img.caption}</figcaption>}\n </figure>\n ))}\n </div>\n )\n}\n\nfunction PricingTableBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const tiers: any[] = Array.isArray(d.tiers) ? d.tiers : []\n const [yearly, setYearly] = React.useState(false)\n return (\n <section className=\"py-12\">\n {(d.title || d.subtitle) && (\n <div className=\"text-center mb-8\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight\">{d.title}</h2>}\n {d.subtitle && <p className=\"mt-2 text-muted-foreground\">{d.subtitle}</p>}\n </div>\n )}\n {d.billingToggle && (\n <div className=\"flex items-center justify-center gap-3 mb-8\">\n <span className={`text-sm ${!yearly ? 'font-semibold' : 'text-muted-foreground'}`}>Monthly</span>\n <button\n onClick={() => setYearly(v => !v)}\n className={`relative w-10 h-6 rounded-full transition-colors ${yearly ? 'bg-primary' : 'bg-muted'}`}\n aria-label=\"Toggle billing period\"\n >\n <span className={`absolute top-1 w-4 h-4 rounded-full bg-white shadow transition-all ${yearly ? 'left-5' : 'left-1'}`} />\n </button>\n <span className={`text-sm ${yearly ? 'font-semibold' : 'text-muted-foreground'}`}>Yearly</span>\n </div>\n )}\n <div className={`grid gap-6 ${tiers.length === 2 ? 'md:grid-cols-2' : tiers.length >= 3 ? 'md:grid-cols-3' : ''}`}>\n {tiers.map((tier, i) => {\n const price = yearly ? tier.yearlyPrice ?? tier.monthlyPrice : tier.monthlyPrice\n const featured = Boolean(tier.featured)\n return (\n <div key={tier.id || i} className={`flex flex-col rounded-2xl border p-8 ${featured ? 'border-primary bg-primary text-primary-foreground shadow-xl' : 'border-border bg-card'}`}>\n <div className=\"mb-6\">\n <h3 className={`text-xl font-bold ${featured ? 'text-primary-foreground' : ''}`}>{tier.name}</h3>\n {tier.description && <p className={`text-sm mt-1 ${featured ? 'text-primary-foreground/70' : 'text-muted-foreground'}`}>{tier.description}</p>}\n <div className=\"mt-4 flex items-end gap-1\">\n <span className={`text-4xl font-extrabold ${featured ? 'text-primary-foreground' : ''}`}>{d.currency ?? '$'}{price ?? 0}</span>\n <span className={`text-sm mb-1 ${featured ? 'text-primary-foreground/70' : 'text-muted-foreground'}`}>/mo</span>\n </div>\n </div>\n <ul className=\"space-y-2 flex-1 mb-8\">\n {(tier.features ?? []).map((f: any, j: number) => (\n <li key={j} className=\"flex items-center gap-2 text-sm\">\n <svg className={`w-4 h-4 flex-shrink-0 ${f.included ? (featured ? 'text-primary-foreground' : 'text-primary') : 'text-muted-foreground opacity-40'}`} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n {f.included ? <polyline points=\"20 6 9 17 4 12\"/> : <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>}\n </svg>\n <span className={!f.included ? 'opacity-50' : ''}>{f.text}</span>\n </li>\n ))}\n </ul>\n {tier.cta && (\n <a href={tier.ctaUrl || '#'} className={`block text-center py-2.5 px-6 rounded-lg font-semibold text-sm transition-opacity hover:opacity-90 ${featured ? 'bg-primary-foreground text-primary' : 'bg-primary text-primary-foreground'}`}>\n {tier.cta}\n </a>\n )}\n </div>\n )\n })}\n </div>\n </section>\n )\n}\n\n// ── 1. Centered Hero ─────────────────────────────────────────────────────────\nfunction CenteredHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const hasBg = d.backgroundImage\n return (\n <section\n className=\"relative flex flex-col items-center justify-center text-center py-24 px-6 overflow-hidden rounded-2xl\"\n style={hasBg ? { backgroundImage: `url(${d.backgroundImage})`, backgroundSize: 'cover', backgroundPosition: 'center' } : { background: d.backgroundColor || 'var(--muted)' }}\n >\n {hasBg && <div className=\"absolute inset-0 rounded-2xl\" style={{ background: `rgba(0,0,0,${d.overlayOpacity ?? 0.45})` }} />}\n <div className=\"relative z-10 max-w-3xl mx-auto\">\n {d.badge && (\n <span className=\"inline-block px-3 py-1 text-xs font-semibold rounded-full bg-background/20 backdrop-blur-sm border border-white/20 mb-5 text-white\">\n {d.badge}\n </span>\n )}\n <h1 className=\"text-4xl md:text-6xl font-extrabold tracking-tight mb-5 text-balance leading-tight\"\n style={{ color: hasBg ? '#fff' : 'var(--foreground)' }}>\n {d.title}\n </h1>\n {d.subtitle && (\n <p className=\"text-lg md:text-xl mb-8 max-w-2xl mx-auto text-pretty leading-relaxed\"\n style={{ color: hasBg ? 'rgba(255,255,255,0.8)' : 'var(--muted-foreground)' }}>\n {d.subtitle}\n </p>\n )}\n {(d.primaryButton || d.secondaryButton) && (\n <div className=\"flex justify-center flex-wrap\" style={{ gap: '1rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center px-8 py-3.5 rounded-xl font-semibold text-sm transition-opacity hover:opacity-90\"\n style={{ background: d.buttonColor || 'var(--primary)', color: d.buttonTextColor || 'var(--primary-foreground)' }}>\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-8 py-3.5 rounded-xl font-semibold text-sm border transition-colors hover:bg-white/10\"\n style={{ borderColor: hasBg ? 'rgba(255,255,255,0.4)' : 'var(--border)', color: hasBg ? '#fff' : 'var(--foreground)' }}>\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n </section>\n )\n}\n\n// ── 2. Product Preview Hero ───────────────────────────────────────────────────\nfunction ProductHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const align = d.alignment || 'left'\n const textAlign = align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'right' ? 'justify-end' : align === 'center' ? 'justify-center' : 'justify-start'\n const mx = align === 'center' ? 'mx-auto' : align === 'right' ? 'ml-auto' : ''\n return (\n <section className=\"py-16 md:py-24\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {/* Text content */}\n <div className={`max-w-3xl ${mx} mb-12`}>\n {d.badge && (\n <span className={`inline-flex items-center gap-1.5 px-3 py-1 text-xs font-semibold rounded-full bg-primary/10 text-primary mb-5`}>\n {d.badge}\n </span>\n )}\n <h1 className={`text-4xl md:text-5xl font-extrabold tracking-tight mb-5 text-balance leading-tight ${textAlign}`}>{d.title}</h1>\n {d.subtitle && <p className={`text-lg text-muted-foreground leading-relaxed text-pretty mb-8 ${textAlign}`}>{d.subtitle}</p>}\n {(d.primaryButton || d.secondaryButton) && (\n <div className={`flex flex-wrap ${itemsAlign}`} style={{ gap: '0.75rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl bg-primary text-primary-foreground font-semibold text-sm hover:opacity-90 transition-opacity\">\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl border border-border text-foreground font-semibold text-sm hover:bg-muted transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n {/* Product screenshot */}\n {d.image ? (\n <div className=\"relative rounded-2xl overflow-hidden border border-border shadow-2xl\">\n {d.browserChrome && (\n <div className=\"flex items-center gap-1.5 px-4 py-2.5 bg-muted border-b border-border\">\n <span className=\"w-3 h-3 rounded-full bg-red-400\" />\n <span className=\"w-3 h-3 rounded-full bg-amber-400\" />\n <span className=\"w-3 h-3 rounded-full bg-emerald-400\" />\n {d.urlBar && <span className=\"ml-3 flex-1 text-xs text-muted-foreground bg-background border border-border rounded px-3 py-0.5 truncate\">{d.urlBar}</span>}\n </div>\n )}\n <img src={d.image} alt={d.title || 'Product preview'} className=\"w-full object-cover\" />\n </div>\n ) : (\n <div className=\"rounded-2xl border border-dashed border-border bg-muted aspect-video flex items-center justify-center\">\n <span className=\"text-xs text-muted-foreground\">Add a product screenshot</span>\n </div>\n )}\n {/* Optional trust badges / social proof */}\n {Array.isArray(d.trustedBy) && d.trustedBy.length > 0 && (\n <div className=\"mt-10 text-center\">\n {d.trustedByLabel && <p className=\"text-xs text-muted-foreground uppercase tracking-widest mb-4 font-medium\">{d.trustedByLabel}</p>}\n <div className=\"flex flex-wrap items-center justify-center gap-6\">\n {d.trustedBy.map((item: any, i: number) => (\n item.logo\n ? <img key={i} src={item.logo} alt={item.name || ''} className=\"h-6 object-contain opacity-60 grayscale\" />\n : <span key={i} className=\"text-sm font-semibold text-muted-foreground\">{item.name}</span>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n )\n}\n\n// ── 3. Bento Grid Hero ────────────────────────────────────────────────────────\nfunction BentoHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const cards: any[] = Array.isArray(d.cards) ? d.cards : []\n const align = d.alignment || 'center'\n const textAlign = align === 'right' ? 'text-right' : align === 'left' ? 'text-left' : 'text-center'\n const itemsAlign = align === 'right' ? 'justify-end' : align === 'left' ? 'justify-start' : 'justify-center'\n const mx = align === 'left' ? '' : align === 'right' ? 'ml-auto' : 'mx-auto'\n return (\n <section className=\"py-16 md:py-24\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {/* Headline */}\n <div className={`max-w-3xl ${mx} mb-12`}>\n {d.badge && (\n <span className=\"inline-block px-3 py-1 text-xs font-semibold rounded-full bg-secondary text-secondary-foreground mb-5\">\n {d.badge}\n </span>\n )}\n <h1 className={`text-4xl md:text-5xl font-extrabold tracking-tight mb-4 text-balance ${textAlign}`}>{d.title}</h1>\n {d.subtitle && <p className={`text-lg text-muted-foreground leading-relaxed text-pretty ${textAlign}`}>{d.subtitle}</p>}\n {(d.primaryButton || d.secondaryButton) && (\n <div className={`flex flex-wrap ${itemsAlign}`} style={{ gap: '0.75rem', marginTop: '1.75rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl bg-primary text-primary-foreground font-semibold text-sm hover:opacity-90 transition-opacity\">\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl border border-border text-foreground font-semibold text-sm hover:bg-muted transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n {/* Bento grid */}\n {cards.length > 0 && (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\" style={{ gridAutoRows: '1fr' }}>\n {cards.map((card: any, i: number) => {\n const colSpan = card.featured ? 2 : 1\n const rowSpan = card.rows || 1\n return (\n <div\n key={i}\n style={{ gridColumn: `span ${colSpan}`, gridRow: `span ${rowSpan}`, background: card.background || 'var(--muted)' }}\n className=\"rounded-2xl border border-border p-6 flex flex-col gap-3 transition-shadow hover:shadow-md\"\n >\n {card.icon && (\n <span className=\"text-2xl\" role=\"img\" aria-label={card.title}>{card.icon}</span>\n )}\n {card.image && (\n <img src={card.image} alt={card.imageAlt || card.title || 'Feature illustration'} className=\"w-full rounded-lg object-cover mb-1\" style={{ maxHeight: card.featured ? '180px' : '120px' }} />\n )}\n {card.title && <h3 className=\"font-semibold text-sm\">{card.title}</h3>}\n {card.description && <p className=\"text-xs text-muted-foreground leading-relaxed\">{card.description}</p>}\n </div>\n )\n })}\n </div>\n )}\n </div>\n </section>\n )\n}\n\n// ── 4. Minimal Hero ───────────────────────────────────────────────────────────\nfunction MinimalHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const align = d.alignment || 'left'\n const textAlign = align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'right' ? 'justify-end' : align === 'center' ? 'justify-center' : 'justify-start'\n const mx = align === 'center' ? 'mx-auto' : align === 'right' ? 'ml-auto' : ''\n return (\n <section className=\"py-20 md:py-28 px-4 border-b border-border\">\n <div className={`max-w-4xl ${mx}`}>\n {d.eyebrow && (\n <p className={`text-xs uppercase tracking-[0.2em] font-semibold text-muted-foreground mb-5 ${textAlign}`}>{d.eyebrow}</p>\n )}\n <h1 className={`text-5xl md:text-7xl font-black tracking-tight mb-6 text-balance leading-none whitespace-pre-line ${textAlign}`}>{d.title}</h1>\n {d.subtitle && (\n <p className={`text-lg md:text-xl text-muted-foreground leading-relaxed text-pretty max-w-2xl mb-9 ${textAlign} ${mx}`}>{d.subtitle}</p>\n )}\n {(d.primaryButton || d.secondaryButton) && (\n <div className={`flex flex-wrap items-center ${itemsAlign}`} style={{ gap: '1rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center gap-2 text-sm font-semibold underline underline-offset-4 hover:text-primary transition-colors\">\n {d.primaryButton}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"/></svg>\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction SplitHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const imgLeft = d.imagePosition === 'left'\n const align = d.alignment || 'left'\n const textAlign = align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'center' ? 'items-center' : 'items-start'\n return (\n <section className=\"py-16\">\n <div className={`flex flex-col ${imgLeft ? 'md:flex-row-reverse' : 'md:flex-row'} items-center gap-10 md:gap-16 max-w-6xl mx-auto px-4`}>\n <div className={`flex-1 space-y-5 ${itemsAlign} flex flex-col`}>\n {d.title && <h1 className={`text-3xl md:text-5xl font-extrabold tracking-tight text-balance leading-tight ${textAlign}`}>{d.title}</h1>}\n {d.subtitle && <p className={`text-lg text-muted-foreground leading-relaxed text-pretty ${textAlign}`}>{d.subtitle}</p>}\n {(d.button || d.secondaryButton) && (\n <div className={`flex flex-wrap ${align === 'center' ? 'justify-center' : 'justify-start'}`} style={{ gap: '0.75rem', paddingTop: '0.5rem' }}>\n {d.button && <a href={d.buttonUrl || '#'} className=\"inline-flex items-center px-6 py-3 rounded-lg bg-primary text-primary-foreground font-semibold text-sm hover:opacity-90 transition-opacity\">{d.button}</a>}\n {d.secondaryButton && <a href={d.secondaryUrl || '#'} className=\"inline-flex items-center px-6 py-3 rounded-lg border border-border text-foreground font-semibold text-sm hover:bg-muted transition-colors\">{d.secondaryButton}</a>}\n </div>\n )}\n </div>\n <div className=\"flex-1 w-full\">\n {d.image\n ? <img src={d.image} alt={d.imageAlt || d.title || 'Hero image'} className=\"w-full rounded-2xl object-cover shadow-lg border border-border\" />\n : <div className=\"w-full rounded-2xl bg-muted border border-border aspect-video flex items-center justify-center\" aria-hidden=\"true\"><span className=\"text-xs text-muted-foreground\">No image set</span></div>\n }\n </div>\n </div>\n </section>\n )\n}\n\n\nfunction AccordionBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n const [open, setOpen] = React.useState<number | null>(null)\n return (\n <section className=\"py-8\">\n {d.title && <h2 className=\"text-2xl font-bold text-center mb-6 text-balance\">{d.title}</h2>}\n <div className=\"max-w-2xl mx-auto divide-y divide-border border border-border rounded-xl overflow-hidden\">\n {items.map((item, i) => (\n <div key={i}>\n <button\n type=\"button\"\n className=\"w-full flex items-center justify-between px-5 py-4 text-left text-sm font-medium hover:bg-muted/50 transition-colors\"\n onClick={() => setOpen(open === i ? null : i)}\n aria-expanded={open === i}\n >\n <span>{item.title}</span>\n <svg className={`w-4 h-4 text-muted-foreground transition-transform ${open === i ? 'rotate-180' : ''}`} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><polyline points=\"6 9 12 15 18 9\"/></svg>\n </button>\n {open === i && (\n <div className=\"px-5 pb-4 text-sm text-muted-foreground leading-relaxed\" dangerouslySetInnerHTML={{ __html: item.content || '' }} />\n )}\n </div>\n ))}\n </div>\n </section>\n )\n}\n\nfunction TabsBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const tabs: any[] = Array.isArray(d.tabs) ? d.tabs : []\n const [active, setActive] = React.useState(0)\n if (!tabs.length) return null\n return (\n <div className=\"py-6\">\n <div className=\"flex gap-1 border-b border-border mb-6 overflow-x-auto\">\n {tabs.map((tab, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => setActive(i)}\n className={`px-4 py-2 text-sm font-medium whitespace-nowrap transition-colors border-b-2 -mb-px ${active === i ? 'border-primary text-primary' : 'border-transparent text-muted-foreground hover:text-foreground'}`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n <div className=\"text-sm text-foreground leading-relaxed\" dangerouslySetInnerHTML={{ __html: tabs[active]?.content || '' }} />\n </div>\n )\n}\n\nfunction ColumnsBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'md:grid-cols-2' : cols === 4 ? 'md:grid-cols-4' : 'md:grid-cols-3'\n const gap = d.gap === 'sm' ? 'gap-4' : d.gap === 'lg' ? 'gap-12' : 'gap-8'\n if (!items.length) return null\n return (\n <div className={`grid grid-cols-1 ${gridCols} ${gap}`}>\n {items.map((item, i) => (\n <div key={i} className=\"text-sm leading-relaxed\" dangerouslySetInnerHTML={{ __html: item.content || '' }} />\n ))}\n </div>\n )\n}\n\nfunction ContainerBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const maxW: Record<string, string> = { sm: 'max-w-sm', md: 'max-w-md', lg: 'max-w-lg', xl: 'max-w-xl', '2xl': 'max-w-2xl', '4xl': 'max-w-4xl', full: 'max-w-full' }\n const pad: Record<string, string> = { none: 'px-0 py-0', sm: 'px-4 py-4', md: 'px-6 py-8', lg: 'px-8 py-12' }\n const align: Record<string, string> = { left: 'text-left', center: 'text-center', right: 'text-right' }\n const style = d.bgColor ? { backgroundColor: d.bgColor } : undefined\n return (\n <section style={style} className={d.bgColor ? 'rounded-xl' : ''}>\n <div className={`mx-auto ${maxW[d.maxWidth || '4xl'] ?? 'max-w-4xl'} ${pad[d.padding || 'md'] ?? 'px-6 py-8'} ${align[d.align || 'left'] ?? 'text-left'}`}>\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance mb-4\">{d.title}</h2>}\n {d.content && (\n <div\n className=\"prose prose-sm max-w-none leading-relaxed\"\n dangerouslySetInnerHTML={{ __html: d.content }}\n />\n )}\n </div>\n </section>\n )\n}\n\nfunction CarouselBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const slides: any[] = Array.isArray(d.slides) ? d.slides : []\n const [current, setCurrent] = React.useState(0)\n\n React.useEffect(() => {\n if (!d.autoplay || slides.length < 2) return\n const id = setInterval(() => setCurrent(c => (c + 1) % slides.length), Number(d.interval) || 4000)\n return () => clearInterval(id)\n }, [d.autoplay, d.interval, slides.length])\n\n if (!slides.length) return null\n const prev = () => setCurrent(c => (c - 1 + slides.length) % slides.length)\n const next = () => setCurrent(c => (c + 1) % slides.length)\n const slide = slides[current]\n\n return (\n <div className=\"relative w-full overflow-hidden rounded-xl border border-border bg-muted\">\n <div className=\"relative aspect-video\">\n {slide.image\n ? <img src={slide.image} alt={slide.title || ''} className=\"w-full h-full object-cover\" />\n : <div className=\"w-full h-full flex items-center justify-center text-muted-foreground text-sm\">No image</div>\n }\n {(slide.title || slide.subtitle) && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-end pb-8 bg-gradient-to-t from-black/60 to-transparent text-white text-center px-6\">\n {slide.title && <h3 className=\"text-xl font-bold text-balance\">{slide.title}</h3>}\n {slide.subtitle && <p className=\"text-sm opacity-80 mt-1\">{slide.subtitle}</p>}\n </div>\n )}\n </div>\n {d.showArrows !== false && slides.length > 1 && (\n <>\n <button onClick={prev} className=\"absolute left-3 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 text-white flex items-center justify-center hover:bg-black/60 transition-colors\" aria-label=\"Previous\">\n <svg className=\"w-5 h-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><polyline points=\"15 18 9 12 15 6\"/></svg>\n </button>\n <button onClick={next} className=\"absolute right-3 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 text-white flex items-center justify-center hover:bg-black/60 transition-colors\" aria-label=\"Next\">\n <svg className=\"w-5 h-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><polyline points=\"9 18 15 12 9 6\"/></svg>\n </button>\n </>\n )}\n {d.showDots !== false && slides.length > 1 && (\n <div className=\"absolute bottom-3 left-1/2 -translate-x-1/2 flex gap-1.5\">\n {slides.map((_, i) => (\n <button key={i} onClick={() => setCurrent(i)} className={`w-2 h-2 rounded-full transition-colors ${i === current ? 'bg-white' : 'bg-white/40'}`} aria-label={`Slide ${i + 1}`} />\n ))}\n </div>\n )}\n </div>\n )\n}\n\nfunction CardGridBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const cards: any[] = Array.isArray(d.cards) ? d.cards : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'sm:grid-cols-2' : cols === 4 ? 'sm:grid-cols-2 lg:grid-cols-4' : 'sm:grid-cols-2 lg:grid-cols-3'\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-center text-balance mb-8\">{d.title}</h2>}\n {cards.length === 0 ? (\n <p className=\"text-center text-sm text-muted-foreground\">No cards added yet.</p>\n ) : (\n <div className={`grid grid-cols-1 gap-6 ${gridCols}`}>\n {cards.map((card, i) => (\n <div key={i} className=\"flex flex-col rounded-xl border border-border bg-card overflow-hidden hover:shadow-md transition-shadow\">\n {card.image && (\n <div className=\"aspect-video overflow-hidden bg-muted\">\n <img\n src={card.image}\n alt={card.title || ''}\n className=\"w-full h-full object-cover\"\n onError={(e) => { (e.target as HTMLImageElement).style.display = 'none' }}\n />\n </div>\n )}\n <div className=\"flex flex-col flex-1 p-5 gap-2\">\n {card.title && <h3 className=\"font-semibold text-base\">{card.title}</h3>}\n {card.description && <p className=\"text-sm text-muted-foreground leading-relaxed flex-1\">{card.description}</p>}\n {card.link && (\n <a href={card.link} className=\"inline-flex items-center text-sm font-medium text-primary hover:underline mt-2\">\n {card.linkText || 'Learn more'} →\n </a>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction TimelineBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n return (\n <section className=\"py-12\">\n <div className=\"max-w-3xl mx-auto px-4\">\n {(d.title || d.subtitle) && (\n <div className=\"text-center mb-10\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance\">{d.title}</h2>}\n {d.subtitle && <p className=\"mt-2 text-muted-foreground text-pretty\">{d.subtitle}</p>}\n </div>\n )}\n {items.length === 0 ? (\n <p className=\"text-center text-sm text-muted-foreground\">No timeline items added yet.</p>\n ) : (\n <div className=\"relative\">\n <div className=\"absolute left-6 top-0 bottom-0 w-px bg-border\" aria-hidden=\"true\" />\n <div className=\"space-y-8\">\n {items.map((item, i) => (\n <div key={i} className=\"relative flex gap-6\">\n <div className=\"flex-shrink-0 w-12 h-12 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-xs font-bold z-10 ring-4 ring-background\">\n {item.year || i + 1}\n </div>\n <div className=\"flex-1 pb-2 pt-1\">\n {item.title && <h3 className=\"font-semibold text-base\">{item.title}</h3>}\n {item.description && <p className=\"text-sm text-muted-foreground mt-1 leading-relaxed\">{item.description}</p>}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction PricingCardBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const features: string[] = Array.isArray(d.features) ? d.features : []\n const featured = Boolean(d.featured)\n return (\n <div className={`relative flex flex-col rounded-2xl border p-8 ${featured ? 'border-primary bg-primary text-primary-foreground shadow-xl scale-105' : 'border-border bg-card'}`}>\n {featured && (\n <span className=\"absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full bg-primary-foreground text-primary text-xs font-semibold\">\n Most Popular\n </span>\n )}\n <div className=\"mb-6\">\n {d.name && <h3 className={`text-xl font-bold ${featured ? 'text-primary-foreground' : ''}`}>{d.name}</h3>}\n <div className=\"mt-2 flex items-end gap-1\">\n {d.price && <span className={`text-4xl font-extrabold tracking-tight ${featured ? 'text-primary-foreground' : ''}`}>{d.price}</span>}\n {d.period && <span className={`text-sm mb-1 ${featured ? 'text-primary-foreground/70' : 'text-muted-foreground'}`}>{d.period}</span>}\n </div>\n </div>\n {features.length > 0 && (\n <ul className=\"space-y-3 flex-1 mb-8\">\n {features.map((feat, i) => (\n <li key={i} className=\"flex items-center gap-2 text-sm\">\n <svg className={`w-4 h-4 flex-shrink-0 ${featured ? 'text-primary-foreground' : 'text-primary'}`} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n <span className={featured ? 'text-primary-foreground/90' : ''}>{feat}</span>\n </li>\n ))}\n </ul>\n )}\n {d.button && (\n <a\n href={d.url || '#'}\n className={`block text-center py-2.5 px-6 rounded-lg font-semibold text-sm transition-opacity hover:opacity-90 ${featured ? 'bg-primary-foreground text-primary' : 'bg-primary text-primary-foreground'}`}\n >\n {d.button}\n </a>\n )}\n </div>\n )\n}\n\nfunction IconFeatureBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const iconKey = (d.icon || 'zap').toLowerCase()\n return (\n <div className=\"flex items-start gap-4 p-6 rounded-xl border border-border bg-card\">\n <div className=\"w-12 h-12 rounded-lg bg-primary/10 text-primary flex items-center justify-center flex-shrink-0\">\n {FEATURE_ICONS[iconKey] ?? (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" className=\"w-6 h-6\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n {d.title && <h3 className=\"font-semibold text-base\">{d.title}</h3>}\n {d.description && <p className=\"text-sm text-muted-foreground mt-1 leading-relaxed\">{d.description}</p>}\n </div>\n </div>\n )\n}\n\nfunction FeatureGridBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const features: any[] = Array.isArray(d.features) ? d.features : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'sm:grid-cols-2' : cols === 4 ? 'sm:grid-cols-2 lg:grid-cols-4' : 'sm:grid-cols-2 lg:grid-cols-3'\n\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {(d.title || d.subtitle) && (\n <div className=\"text-center mb-10\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance\">{d.title}</h2>}\n {d.subtitle && <p className=\"mt-2 text-muted-foreground text-pretty\">{d.subtitle}</p>}\n </div>\n )}\n {features.length === 0 ? (\n <p className=\"text-center text-sm text-muted-foreground\">No features added yet.</p>\n ) : (\n <div className={`grid grid-cols-1 gap-6 ${gridCols}`}>\n {features.map((feat, i) => (\n <div key={i} className=\"flex flex-col gap-3 p-6 rounded-xl border border-border bg-card hover:shadow-md transition-shadow\">\n {feat.icon && (\n <div className=\"w-10 h-10 rounded-lg bg-primary/10 text-primary flex items-center justify-center flex-shrink-0\">\n {FEATURE_ICONS[feat.icon] ?? (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>\n )}\n </div>\n )}\n <div>\n {feat.title && <h3 className=\"font-semibold text-base\">{feat.title}</h3>}\n {feat.description && (\n <div className=\"text-sm text-muted-foreground mt-1 leading-relaxed prose prose-sm max-w-none\" dangerouslySetInnerHTML={{ __html: feat.description }} />\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction TwoColumnBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const imagePos = d.imagePosition === 'left' ? 'flex-row-reverse' : 'flex-row'\n const hasImage = Boolean(d.image)\n return (\n <section className=\"py-10\">\n <div className={`flex flex-col md:${imagePos} gap-8 md:gap-12 items-center`}>\n <div className=\"flex-1 space-y-4\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance\">{d.title}</h2>}\n {d.text && <p className=\"text-muted-foreground leading-relaxed text-pretty\">{d.text}</p>}\n {d.button && (\n <a\n href={d.buttonUrl || '#'}\n className=\"inline-flex items-center gap-2 px-5 py-2.5 rounded-lg bg-primary text-primary-foreground text-sm font-medium hover:opacity-90 transition-opacity\"\n >\n {d.button}\n </a>\n )}\n </div>\n {hasImage && (\n <div className=\"flex-1 w-full\">\n <img\n src={d.image}\n alt={d.title || ''}\n className=\"w-full rounded-xl object-cover border border-border shadow-sm\"\n />\n </div>\n )}\n {!hasImage && (\n <div className=\"flex-1 w-full rounded-xl bg-muted border border-border aspect-video flex items-center justify-center\">\n <span className=\"text-xs text-muted-foreground\">No image set</span>\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction BentoGridBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n const SPAN: Record<string, [number, number]> = {\n small: [1,1], wide: [2,1], tall: [1,2], large: [2,2], 'wide-2': [2,2], 'wide-3': [2,3],\n }\n return (\n <section className=\"py-12\">\n {(d.title || d.subtitle) && (\n <div className=\"mb-8\">\n {d.title && <h2 className=\"text-3xl font-semibold tracking-tight\">{d.title}</h2>}\n {d.subtitle && <p className=\"text-muted-foreground mt-1\">{d.subtitle}</p>}\n </div>\n )}\n <div className=\"grid grid-cols-4 gap-3\" style={{ gridAutoRows: '180px' }}>\n {items.map((item, i) => {\n const [cs, rs] = SPAN[item.size] ?? [1, 1]\n return (\n <div\n key={i}\n style={{ gridColumn: `span ${cs}`, gridRow: `span ${rs}` }}\n className=\"rounded-xl border border-border bg-card p-5 flex flex-col justify-between hover:bg-muted/40 transition-colors\"\n >\n <div className=\"w-8 h-8 rounded-lg bg-muted flex items-center justify-center mb-3\">\n {FEATURE_ICONS[item.icon] ?? <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" className=\"w-4 h-4\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>}\n </div>\n <div>\n <h3 className=\"font-semibold text-sm\">{item.title}</h3>\n {item.description && <p className=\"text-muted-foreground text-xs mt-0.5 leading-relaxed\">{item.description}</p>}\n </div>\n </div>\n )\n })}\n </div>\n </section>\n )\n}\n\n// GridLayoutBlock — renders child blocks recursively inside a CSS grid\nfunction GridLayoutBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const cols = Number(d.columns) || 3\n const gap = String(d.gap ?? 'md')\n const children: CMSBlock[] = Array.isArray(d.children) ? d.children : []\n\n const gapMap: Record<string, string> = { none: 'gap-0', sm: 'gap-2', md: 'gap-4', lg: 'gap-6', xl: 'gap-8' }\n const colsMap: Record<number, string> = { 1: 'grid-cols-1', 2: 'grid-cols-2', 3: 'grid-cols-3', 4: 'grid-cols-4', 5: 'grid-cols-5', 6: 'grid-cols-6' }\n\n return (\n <div className={`grid ${colsMap[cols] ?? 'grid-cols-3'} ${gapMap[gap] ?? 'gap-4'}`}>\n {children.map(child => (\n <div key={child.id} className=\"min-w-0\">\n {/* Resolved at render time via the BUILT_IN map defined below */}\n <GridLayoutChildBlock block={child} />\n </div>\n ))}\n </div>\n )\n}\n\n// Separate component to avoid forward-reference issues with BUILT_IN map\nfunction GridLayoutChildBlock({ block }: { block: CMSBlock }) {\n const renderer = BUILT_IN[block.type]\n if (renderer) return <>{renderer(block, null)}</>\n return <SectionBlock block={block} pageType={null} />\n}\n\n// ── Main component ───────────────────────────────────────────────────────────��\n\nconst BUILT_IN: Record<string, (block: CMSBlock, pageType?: CMSPageType | null) => React.ReactNode> = {\n // Structured page type — content is nested { sectionName: { fieldName: value } }\n '__structured__': (b, pt) => <StructuredBlock block={b} pageType={pt} />,\n heading: (b) => <HeadingBlock block={b} />,\n text: (b) => <TextBlock block={b} />,\n richtext: (b) => <RichTextBlock block={b} />,\n image: (b) => <ImageBlock block={b} />,\n button: (b) => <ButtonBlock block={b} />,\n list: (b) => <ListBlock block={b} />,\n gallery: (b) => <GalleryBlock block={b} />,\n 'pricing-table': (b) => <PricingTableBlock block={b} />,\n hero: (b) => <HeroBlock block={b} />,\n 'hero-section': (b) => <HeroBlock block={b} />,\n 'centered-hero': (b) => <CenteredHeroBlock block={b} />,\n 'product-hero': (b) => <ProductHeroBlock block={b} />,\n 'bento-hero': (b) => <BentoHeroBlock block={b} />,\n 'minimal-hero': (b) => <MinimalHeroBlock block={b} />,\n cta: (b) => <CTABlock block={b} />,\n faq: (b) => <FAQBlock block={b} />,\n 'team-member': (b) => <TeamMemberBlock block={b} />,\n stats: (b) => <StatsBlock block={b} />,\n testimonial: (b) => <TestimonialBlock block={b} />,\n quote: (b) => <QuoteBlock block={b} />,\n alert: (b) => <AlertBlock block={b} />,\n divider: () => <DividerBlock />,\n spacer: (b) => <SpacerBlock block={b} />,\n video: (b) => <VideoBlock block={b} />,\n 'card-grid': (b) => <CardGridBlock block={b} />,\n timeline: (b) => <TimelineBlock block={b} />,\n 'pricing-card': (b) => <PricingCardBlock block={b} />,\n 'icon-feature': (b) => <IconFeatureBlock block={b} />,\n 'feature-grid': (b) => <FeatureGridBlock block={b} />,\n 'two-column': (b) => <TwoColumnBlock block={b} />,\n 'split-hero': (b) => <SplitHeroBlock block={b} />,\n\n accordion: (b) => <AccordionBlock block={b} />,\n tabs: (b) => <TabsBlock block={b} />,\n columns: (b) => <ColumnsBlock block={b} />,\n container: (b) => <ContainerBlock block={b} />,\n carousel: (b) => <CarouselBlock block={b} />,\n 'product-list': (b) => <ProductListBlock block={b} />,\n 'bento-grid': (b) => <BentoGridBlock block={b} />,\n 'grid-layout': (b) => <GridLayoutBlock block={b} />,\n}\n\nexport function CMSBlocks({ blocks, pageType, className = '', custom = {} }: CMSBlocksProps) {\n if (!blocks?.length) return null\n\n return (\n <div className={`space-y-8 ${className}`}>\n {blocks.map(block => {\n // 1. Custom renderer takes priority\n if (custom[block.type]) return <React.Fragment key={block.id}>{custom[block.type](block)}</React.Fragment>\n // 2. Built-in renderer\n if (BUILT_IN[block.type]) return <React.Fragment key={block.id}>{BUILT_IN[block.type](block, pageType)}</React.Fragment>\n // 3. Structured section block (from page type sections)\n return <SectionBlock key={block.id} block={block} pageType={pageType} />\n })}\n </div>\n )\n}\n","'use client'\n\nimport React from 'react'\n\nexport interface CMSPreviewBannerProps {\n isPreview: boolean\n status?: string\n slug?: string\n /** URL for the exit preview link. Defaults to /api/cms-preview/exit */\n exitUrl?: string\n}\n\nexport function CMSPreviewBanner({ isPreview, status, slug, exitUrl = '/api/cms-preview/exit' }: CMSPreviewBannerProps) {\n if (!isPreview) return null\n return (\n <div className=\"sticky top-0 z-50 flex items-center justify-between px-4 py-2.5 bg-amber-500 text-white text-sm font-medium shadow\">\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n </svg>\n <span>Draft Preview</span>\n {status && <><span className=\"opacity-60\">·</span><span className=\"opacity-75 capitalize\">{status}</span></>}\n {slug && <><span className=\"opacity-60\">·</span><span className=\"opacity-75 font-normal\">/{slug}</span></>}\n </div>\n <a href={exitUrl} className=\"px-3 py-1 rounded bg-white/20 hover:bg-white/30 transition-colors text-xs\">\n Exit Preview\n </a>\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/react/blocks.tsx","../../src/react/preview-banner.tsx"],"names":["jsxs","jsx","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["'use client'\n\nimport React from 'react'\nimport type { CMSBlock, CMSPageType } from '../client'\n\nexport interface CMSBlocksProps {\n blocks: CMSBlock[]\n pageType?: CMSPageType | null\n className?: string\n /**\n * Custom block renderers — extend or override built-in blocks.\n * @example\n * <CMSBlocks blocks={blocks} custom={{ 'my-hero': (block) => <MyHero {...block.data} /> }} />\n */\n custom?: Record<string, (block: CMSBlock) => React.ReactNode>\n}\n\n/**\n * Resolves block data from either `data` (v1.1+) or legacy `content` field.\n */\nfunction getData(block: CMSBlock): Record<string, any> {\n return block.data ?? block.content ?? {}\n}\n\n// ── Built-in block renderers ──────────────────────────────────────────────────\n\nfunction HeadingBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const text = d.text || d.heading || d.title || ''\n const level = Number(d.level) || 2\n const cls = {\n 1: 'text-4xl font-bold tracking-tight',\n 2: 'text-2xl font-bold mt-8',\n 3: 'text-xl font-semibold mt-6',\n 4: 'text-lg font-medium mt-4',\n }[level] ?? 'text-2xl font-bold'\n return React.createElement(`h${level}`, { className: cls }, text)\n}\n\nfunction TextBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const raw = d.text || d.content || ''\n // If the stored value contains HTML tags, render it properly rather than as raw tag text\n const isHtml = typeof raw === 'string' && /<[a-z][\\s\\S]*>/i.test(raw)\n if (isHtml) {\n return (\n <div\n className=\"prose prose-neutral dark:prose-invert max-w-none\"\n dangerouslySetInnerHTML={{ __html: raw }}\n />\n )\n }\n return <p className=\"text-base leading-relaxed text-muted-foreground\">{raw}</p>\n}\n\nfunction RichTextBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const html = d.content || d.richtext || d.text || ''\n if (!html) return null\n return (\n <div\n className=\"prose prose-neutral dark:prose-invert max-w-none\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n )\n}\n\nfunction ImageBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const src = d.src || d.url || d.image || ''\n if (!src) return null\n return (\n <figure className=\"my-6\">\n <img src={src} alt={d.alt || ''} className=\"w-full rounded-lg border object-cover\" />\n {d.caption && (\n <figcaption className=\"mt-2 text-sm text-muted-foreground text-center\">{d.caption}</figcaption>\n )}\n </figure>\n )\n}\n\nfunction HeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const align = d.alignment || 'left'\n const textAlign = align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'right' ? 'items-end' : align === 'center' ? 'items-center' : 'items-start'\n const mx = align === 'center' ? 'mx-auto' : align === 'right' ? 'ml-auto' : ''\n return (\n <section className=\"py-12 md:py-20\">\n <div className={`max-w-3xl ${mx}`}>\n {d.badge && (\n <span className={`inline-block px-3 py-1 text-xs font-semibold rounded-full bg-secondary text-secondary-foreground mb-4`}>\n {d.badge}\n </span>\n )}\n <h1 className={`text-4xl md:text-5xl font-bold tracking-tight mb-4 text-balance ${textAlign}`}>{d.title}</h1>\n {d.subtitle && <p className={`text-xl text-muted-foreground mb-8 ${textAlign}`}>{d.subtitle}</p>}\n {(d.primaryButton || d.cta) && (\n <div className={`flex flex-wrap ${itemsAlign}`} style={{ gap: '1rem' }}>\n {(d.primaryButton || d.cta) && (\n <a href={d.primaryUrl || d.ctaUrl || '#'}\n className=\"inline-flex items-center px-6 py-3 rounded-lg bg-primary text-primary-foreground font-semibold hover:opacity-90 transition-opacity\">\n {d.primaryButton || d.cta}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-6 py-3 rounded-lg border border-border font-semibold hover:bg-muted transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction CTABlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <section className=\"py-12 px-8 rounded-xl bg-primary text-primary-foreground text-center\">\n <h2 className=\"text-2xl md:text-3xl font-bold mb-4\">{d.title}</h2>\n {d.subtitle && <p className=\"text-primary-foreground/80 mb-6 max-w-2xl mx-auto\">{d.subtitle}</p>}\n <div className=\"flex justify-center flex-wrap\" style={{ gap: '1rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"px-6 py-3 rounded-lg bg-background text-foreground font-semibold hover:opacity-90 transition-opacity\">\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"px-6 py-3 rounded-lg border border-primary-foreground/20 text-primary-foreground font-semibold hover:bg-primary-foreground/10 transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n </section>\n )\n}\n\nfunction FAQBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: { question: string; answer: string }[] = d.items || []\n return (\n <section className=\"py-8\">\n {d.title && <h2 className=\"text-2xl font-bold mb-6\">{d.title}</h2>}\n <div className=\"space-y-4\">\n {items.map((item, i) => (\n <details key={i} className=\"group border border-border rounded-lg\">\n <summary className=\"flex items-center justify-between p-4 cursor-pointer font-medium select-none\">\n {item.question}\n <span className=\"transition-transform group-open:rotate-45 text-lg leading-none\">+</span>\n </summary>\n <div className=\"px-4 pb-4 text-muted-foreground\">{item.answer}</div>\n </details>\n ))}\n </div>\n </section>\n )\n}\n\nfunction TeamMemberBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <div className=\"flex flex-col sm:flex-row items-center sm:items-start gap-4 p-6 rounded-xl border border-border bg-card\">\n {d.avatar ? (\n <img\n src={d.avatar}\n alt={d.name || 'Team member'}\n className=\"w-20 h-20 rounded-full object-cover border-2 border-border flex-shrink-0\"\n />\n ) : (\n <div className=\"w-20 h-20 rounded-full bg-muted flex items-center justify-center text-muted-foreground text-2xl font-semibold flex-shrink-0\">\n {(d.name || 'T').charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"text-center sm:text-left\">\n {d.name && <h3 className=\"font-semibold text-lg\">{d.name}</h3>}\n {d.role && <p className=\"text-sm text-primary font-medium\">{d.role}</p>}\n {d.bio && <p className=\"text-sm text-muted-foreground mt-2 leading-relaxed\">{d.bio}</p>}\n </div>\n </div>\n )\n}\n\nfunction StatsBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: { value: string; label: string }[] = d.items || d.stats || []\n return (\n <section className=\"py-8\">\n {d.title && <h2 className=\"text-2xl font-bold mb-6 text-center\">{d.title}</h2>}\n <div className={`grid gap-6 grid-cols-2 md:grid-cols-${Math.min(items.length, 4)}`}>\n {items.map((s, i) => (\n <div key={i} className=\"text-center p-6 rounded-lg border bg-card\">\n <div className=\"text-3xl font-bold text-primary\">{s.value}</div>\n <div className=\"text-sm text-muted-foreground mt-1\">{s.label}</div>\n </div>\n ))}\n </div>\n </section>\n )\n}\n\nfunction TestimonialBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <div className=\"border border-border rounded-xl p-6 bg-card\">\n <blockquote className=\"text-lg italic mb-4 text-foreground\">\"{d.quote}\"</blockquote>\n <div className=\"flex items-center gap-3\">\n {d.avatar && <img src={d.avatar} alt=\"\" className=\"w-10 h-10 rounded-full object-cover\" />}\n <div>\n <div className=\"font-semibold\">{d.author}</div>\n {d.role && <div className=\"text-sm text-muted-foreground\">{d.role}</div>}\n </div>\n </div>\n </div>\n )\n}\n\nfunction QuoteBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n return (\n <blockquote className=\"border-l-4 border-primary pl-6 py-2 italic text-lg\">\n {d.text}\n {d.author && <footer className=\"mt-2 text-sm text-muted-foreground not-italic\">— {d.author}</footer>}\n </blockquote>\n )\n}\n\nfunction AlertBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const colors: Record<string, string> = {\n info: 'bg-blue-50 border-blue-200 text-blue-800 dark:bg-blue-950 dark:border-blue-800 dark:text-blue-200',\n success: 'bg-green-50 border-green-200 text-green-800 dark:bg-green-950 dark:border-green-800 dark:text-green-200',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-800 dark:bg-yellow-950 dark:border-yellow-800 dark:text-yellow-200',\n error: 'bg-red-50 border-red-200 text-red-800 dark:bg-red-950 dark:border-red-800 dark:text-red-200',\n }\n const variant = d.variant || d.type || 'info'\n return (\n <div className={`p-4 rounded-lg border ${colors[variant] ?? colors.info}`}>\n {d.title && <div className=\"font-semibold mb-1\">{d.title}</div>}\n <p>{d.message || d.text || ''}</p>\n </div>\n )\n}\n\nfunction DividerBlock() {\n return <hr className=\"my-8 border-border\" />\n}\n\nfunction SpacerBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const sizes: Record<string, string> = { sm: 'h-4', md: 'h-8', lg: 'h-16', xl: 'h-24' }\n return <div className={sizes[d.size] ?? 'h-8'} />\n}\n\nfunction VideoBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const url = d.url || d.embed || ''\n if (!url) return null\n // Convert YouTube/Vimeo watch URLs to embed URLs\n const embedUrl = url\n .replace('youtube.com/watch?v=', 'youtube.com/embed/')\n .replace('youtu.be/', 'youtube.com/embed/')\n .replace('vimeo.com/', 'player.vimeo.com/video/')\n return (\n <div className=\"aspect-video rounded-lg overflow-hidden border bg-muted\">\n <iframe src={embedUrl} allow=\"autoplay; fullscreen\" allowFullScreen className=\"w-full h-full\" title={d.title || 'Video'} />\n </div>\n )\n}\n\n// ── Product List Block (dynamic, fetches from API) ────────────────────────────\n\ninterface Product {\n id: string\n name: string\n price: number\n image?: string\n rating?: number\n category?: string\n description?: string\n badge?: string\n}\n\nfunction normaliseProduct(raw: Record<string, any>): Product {\n if (raw.id !== undefined && raw.price !== undefined) return raw as Product\n const firstPlan = Array.isArray(raw.plans) && raw.plans.length > 0 ? raw.plans[0] : null\n const courseCount = Array.isArray(raw.courses) ? raw.courses.length : undefined\n // Skip base64 images — too large, use thumbnail or nothing\n const image = raw.image && !raw.image.startsWith('data:') ? raw.image : (raw.thumbnail ?? undefined)\n return {\n id: raw._id ?? raw.id ?? String(Math.random()),\n name: raw.name ?? 'Unnamed',\n description: raw.description,\n price: firstPlan?.price ?? raw.price ?? 0,\n image,\n rating: raw.rating ?? undefined,\n category: raw.type ? raw.type.replace(/-/g, ' ').replace(/\\b\\w/g, (c: string) => c.toUpperCase()) : undefined,\n badge: courseCount ? `${courseCount} course${courseCount !== 1 ? 's' : ''}` : (raw.duration ? `${raw.duration} min` : undefined),\n }\n}\n\nfunction ProductListBlock({ block }: { block: CMSBlock }) {\n // Config lives in block.content; pre-fetched products in block.data.products (set by CMS API)\n const cfg = (block.content ?? {}) as any\n const { title, subtitle, columns = 3, showPrice = true, showRating = true, limit = 6, currency = '$' } = cfg\n const cols = parseInt(String(columns), 10)\n const gridCols = cols === 2 ? 'sm:grid-cols-2' : cols === 4 ? 'sm:grid-cols-2 lg:grid-cols-4' : 'sm:grid-cols-2 lg:grid-cols-3'\n\n // Products pre-fetched by CMS API — stored in content.prefetchedProducts (survives RSC serialization)\n const rawProducts = Array.isArray(cfg.prefetchedProducts) ? cfg.prefetchedProducts : []\n const products: Product[] = (rawProducts as any[]).map(normaliseProduct).slice(0, Number(limit))\n\n if (products.length === 0) {\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n <div className=\"text-center py-12 border border-dashed border-border rounded-lg bg-muted/10\">\n <p className=\"text-sm text-muted-foreground\">No products available</p>\n </div>\n </div>\n </section>\n )\n }\n\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-8\">\n {title && <h2 className=\"text-2xl md:text-3xl font-semibold tracking-tight\">{title}</h2>}\n {subtitle && <p className=\"text-muted-foreground mt-2\">{subtitle}</p>}\n </div>\n )}\n <div className={`grid gap-6 grid-cols-1 ${gridCols}`}>\n {products.map((product) => (\n <div key={product.id} className=\"border rounded-lg overflow-hidden group hover:shadow-md transition-shadow bg-card\">\n {product.image && (\n <div className=\"aspect-video relative bg-muted overflow-hidden\">\n <img src={product.image} alt={product.name} className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\" />\n </div>\n )}\n <div className=\"p-4 space-y-2\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n {product.category && (\n <span className=\"text-xs px-2 py-0.5 rounded-full bg-primary/10 text-primary font-medium\">{product.category}</span>\n )}\n {product.badge && (\n <span className=\"text-xs px-2 py-0.5 rounded-full bg-muted text-muted-foreground\">{product.badge}</span>\n )}\n </div>\n <h3 className=\"font-semibold text-base line-clamp-2\">{product.name}</h3>\n <div className=\"flex items-center justify-between pt-1\">\n {showPrice && product.price > 0 && (\n <span className=\"font-bold text-lg\">{typeof product.price === 'number' ? product.price.toFixed(2) : product.price} {currency}</span>\n )}\n {showRating && product.rating && (\n <div className=\"flex items-center gap-1 text-sm text-muted-foreground\">\n <svg className=\"w-3.5 h-3.5 fill-yellow-400 text-yellow-400\" viewBox=\"0 0 24 24\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"/></svg>\n <span>{product.rating}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n )\n}\n\n// ── Renders a single field value based on its field type ──────────────────────\n\nfunction FieldValue({ value, fieldType }: { value: any; fieldType: string }) {\n if (value === null || value === undefined || value === '') return null\n const isHtml = (v: any) => typeof v === 'string' && /<[a-z][\\s\\S]*>/i.test(v)\n\n if (fieldType === 'richtext' || isHtml(value)) {\n return (\n <div\n className=\"prose prose-neutral dark:prose-invert max-w-none\"\n dangerouslySetInnerHTML={{ __html: String(value) }}\n />\n )\n }\n if (fieldType === 'image') {\n return <img src={String(value)} alt=\"\" className=\"rounded-lg border max-h-96 object-cover w-full\" />\n }\n if (fieldType === 'boolean') {\n return <span className=\"text-muted-foreground\">{value ? 'Yes' : 'No'}</span>\n }\n if (fieldType === 'url') {\n return <a href={String(value)} className=\"text-primary underline underline-offset-2 break-all\">{String(value)}</a>\n }\n if (Array.isArray(value)) {\n return <span className=\"text-muted-foreground\">{value.join(', ')}</span>\n }\n return <span className=\"text-muted-foreground\">{String(value)}</span>\n}\n\n// ── Structured block: type === '__structured__', content is nested { sectionName: { fieldName: value } }\n// ────────────────────────────────────────���───────────��────────────────────────\n\nfunction StructuredBlock({ block, pageType }: { block: CMSBlock; pageType?: CMSPageType | null }) {\n // content is { sectionName: { fieldName: value } } after API denormalization\n const nested: Record<string, Record<string, any>> = (block.content ?? block.data ?? {}) as any\n\n // If we have the page type schema, use it to drive rendering with correct field types\n if (pageType?.sections?.length) {\n return (\n <div className=\"space-y-8\">\n {pageType.sections.map(section => {\n const sectionData = nested[section.name] ?? {}\n const filledFields = section.fields.filter(f => {\n const v = sectionData[f.name]\n return v !== undefined && v !== null && v !== ''\n })\n if (filledFields.length === 0) return null\n return (\n <section key={section.id} className=\"space-y-4\">\n {filledFields.map(field => {\n const value = sectionData[field.name]\n if (value === undefined || value === null || value === '') return null\n return (\n <div key={field.id}>\n <FieldValue value={value} fieldType={field.fieldType} />\n </div>\n )\n })}\n </section>\n )\n })}\n </div>\n )\n }\n\n // No schema — iterate the nested sections and render scalar + html values\n const isHtml = (v: any) => typeof v === 'string' && /<[a-z][\\s\\S]*>/i.test(v)\n return (\n <div className=\"space-y-8\">\n {Object.entries(nested).map(([sectionName, fields]) => {\n if (!fields || typeof fields !== 'object' || Array.isArray(fields)) return null\n const entries = Object.entries(fields).filter(([, v]) => v !== '' && v !== null && v !== undefined)\n if (entries.length === 0) return null\n return (\n <section key={sectionName} className=\"space-y-4\">\n {entries.map(([fieldName, value]) => {\n if (typeof value === 'object' && !Array.isArray(value)) return null\n return (\n <div key={fieldName}>\n {isHtml(value) ? (\n <div className=\"prose prose-neutral dark:prose-invert max-w-none\" dangerouslySetInnerHTML={{ __html: String(value) }} />\n ) : Array.isArray(value) ? (\n <p className=\"text-muted-foreground\">{value.join(', ')}</p>\n ) : (\n <p className=\"text-muted-foreground\">{String(value)}</p>\n )}\n </div>\n )\n })}\n </section>\n )\n })}\n </div>\n )\n}\n\n// ── Named section block (block.type matches a pageType section name) ──────────\n\nfunction SectionBlock({ block, pageType }: { block: CMSBlock; pageType?: CMSPageType | null }) {\n const d = getData(block)\n const section = pageType?.sections.find(s => s.name === block.type)\n\n if (section) {\n const filledFields = section.fields.filter(f => {\n const v = d[f.name]\n return v !== undefined && v !== null && v !== ''\n })\n if (filledFields.length === 0) return null\n return (\n <section className=\"space-y-4\">\n {filledFields.map(field => {\n const value = d[field.name]\n if (value === undefined || value === null || value === '') return null\n return (\n <div key={field.id}>\n <FieldValue value={value} fieldType={field.fieldType} />\n </div>\n )\n })}\n </section>\n )\n }\n\n // No schema — render scalar values only\n const isHtml = (v: any) => typeof v === 'string' && /<[a-z][\\s\\S]*>/i.test(v)\n const entries = Object.entries(d).filter(([, v]) =>\n v !== '' && v !== null && v !== undefined &&\n typeof v !== 'object' && !Array.isArray(v)\n )\n if (entries.length === 0) return null\n return (\n <section className=\"space-y-2\">\n {entries.map(([key, value]) =>\n isHtml(value) ? (\n <div key={key} className=\"prose prose-neutral dark:prose-invert max-w-none\" dangerouslySetInnerHTML={{ __html: String(value) }} />\n ) : (\n <p key={key} className=\"text-muted-foreground\">{String(value)}</p>\n )\n )}\n </section>\n )\n}\n\n// Maps icon string names (from editor) to inline SVG paths\nconst FEATURE_ICONS: Record<string, React.ReactNode> = {\n zap: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"/></svg>,\n shield: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/></svg>,\n star: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>,\n check: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polyline points=\"20 6 9 17 4 12\"/></svg>,\n lock: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/></svg>,\n globe: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/></svg>,\n clock: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><polyline points=\"12 6 12 12 16 14\"/></svg>,\n heart: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg>,\n settings: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"/></svg>,\n users: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/></svg>,\n trending: <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"w-5 h-5\"><polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"/><polyline points=\"17 6 23 6 23 12\"/></svg>,\n}\n\nfunction ButtonBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const label = d.label || d.text || 'Button'\n const url = d.url || '#'\n const variant = d.variant || 'default'\n const base = 'inline-flex items-center justify-center px-5 py-2.5 rounded-lg text-sm font-medium transition-opacity hover:opacity-90'\n const cls = variant === 'outline'\n ? `${base} border border-primary text-primary bg-transparent`\n : variant === 'ghost'\n ? `${base} text-primary hover:bg-primary/10`\n : `${base} bg-primary text-primary-foreground`\n return (\n <div>\n <a href={url} className={cls}>{label}</a>\n </div>\n )\n}\n\nfunction ListBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: string[] = Array.isArray(d.items) ? d.items : []\n const ordered = Boolean(d.ordered)\n const Tag = ordered ? 'ol' : 'ul'\n const listCls = ordered ? 'list-decimal' : 'list-disc'\n return (\n <Tag className={`${listCls} pl-6 space-y-1.5 text-base text-foreground leading-relaxed`}>\n {items.map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </Tag>\n )\n}\n\nfunction GalleryBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const images: any[] = Array.isArray(d.images) ? d.images : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'grid-cols-2' : cols === 4 ? 'grid-cols-2 md:grid-cols-4' : 'grid-cols-2 md:grid-cols-3'\n if (!images.length) return null\n return (\n <div className={`grid gap-3 ${gridCols}`}>\n {images.filter(img => img.src).map((img, i) => (\n <figure key={i} className=\"overflow-hidden rounded-lg border border-border\">\n <img src={img.src} alt={img.alt || ''} className=\"w-full h-48 object-cover\" />\n {img.caption && <figcaption className=\"px-2 py-1 text-xs text-muted-foreground text-center\">{img.caption}</figcaption>}\n </figure>\n ))}\n </div>\n )\n}\n\nfunction PricingTableBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const tiers: any[] = Array.isArray(d.tiers) ? d.tiers : []\n const [yearly, setYearly] = React.useState(false)\n return (\n <section className=\"py-12\">\n {(d.title || d.subtitle) && (\n <div className=\"text-center mb-8\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight\">{d.title}</h2>}\n {d.subtitle && <p className=\"mt-2 text-muted-foreground\">{d.subtitle}</p>}\n </div>\n )}\n {d.billingToggle && (\n <div className=\"flex items-center justify-center gap-3 mb-8\">\n <span className={`text-sm ${!yearly ? 'font-semibold' : 'text-muted-foreground'}`}>Monthly</span>\n <button\n onClick={() => setYearly(v => !v)}\n className={`relative w-10 h-6 rounded-full transition-colors ${yearly ? 'bg-primary' : 'bg-muted'}`}\n aria-label=\"Toggle billing period\"\n >\n <span className={`absolute top-1 w-4 h-4 rounded-full bg-white shadow transition-all ${yearly ? 'left-5' : 'left-1'}`} />\n </button>\n <span className={`text-sm ${yearly ? 'font-semibold' : 'text-muted-foreground'}`}>Yearly</span>\n </div>\n )}\n <div className={`grid gap-6 ${tiers.length === 2 ? 'md:grid-cols-2' : tiers.length >= 3 ? 'md:grid-cols-3' : ''}`}>\n {tiers.map((tier, i) => {\n const price = yearly ? tier.yearlyPrice ?? tier.monthlyPrice : tier.monthlyPrice\n const featured = Boolean(tier.featured)\n return (\n <div key={tier.id || i} className={`flex flex-col rounded-2xl border p-8 ${featured ? 'border-primary bg-primary text-primary-foreground shadow-xl' : 'border-border bg-card'}`}>\n <div className=\"mb-6\">\n <h3 className={`text-xl font-bold ${featured ? 'text-primary-foreground' : ''}`}>{tier.name}</h3>\n {tier.description && <p className={`text-sm mt-1 ${featured ? 'text-primary-foreground/70' : 'text-muted-foreground'}`}>{tier.description}</p>}\n <div className=\"mt-4 flex items-end gap-1\">\n <span className={`text-4xl font-extrabold ${featured ? 'text-primary-foreground' : ''}`}>{d.currency ?? '$'}{price ?? 0}</span>\n <span className={`text-sm mb-1 ${featured ? 'text-primary-foreground/70' : 'text-muted-foreground'}`}>/mo</span>\n </div>\n </div>\n <ul className=\"space-y-2 flex-1 mb-8\">\n {(tier.features ?? []).map((f: any, j: number) => (\n <li key={j} className=\"flex items-center gap-2 text-sm\">\n <svg className={`w-4 h-4 flex-shrink-0 ${f.included ? (featured ? 'text-primary-foreground' : 'text-primary') : 'text-muted-foreground opacity-40'}`} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n {f.included ? <polyline points=\"20 6 9 17 4 12\"/> : <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>}\n </svg>\n <span className={!f.included ? 'opacity-50' : ''}>{f.text}</span>\n </li>\n ))}\n </ul>\n {tier.cta && (\n <a href={tier.ctaUrl || '#'} className={`block text-center py-2.5 px-6 rounded-lg font-semibold text-sm transition-opacity hover:opacity-90 ${featured ? 'bg-primary-foreground text-primary' : 'bg-primary text-primary-foreground'}`}>\n {tier.cta}\n </a>\n )}\n </div>\n )\n })}\n </div>\n </section>\n )\n}\n\n// ── 1. Centered Hero ─────────────────────────────────────────────────────────\nfunction CenteredHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const hasBg = d.backgroundImage\n return (\n <section\n className=\"relative flex flex-col items-center justify-center text-center py-24 px-6 overflow-hidden rounded-2xl\"\n style={hasBg ? { backgroundImage: `url(${d.backgroundImage})`, backgroundSize: 'cover', backgroundPosition: 'center' } : { background: d.backgroundColor || 'var(--muted)' }}\n >\n {hasBg && <div className=\"absolute inset-0 rounded-2xl\" style={{ background: `rgba(0,0,0,${d.overlayOpacity ?? 0.45})` }} />}\n <div className=\"relative z-10 max-w-3xl mx-auto\">\n {d.badge && (\n <span className=\"inline-block px-3 py-1 text-xs font-semibold rounded-full bg-background/20 backdrop-blur-sm border border-white/20 mb-5 text-white\">\n {d.badge}\n </span>\n )}\n <h1 className=\"text-4xl md:text-6xl font-extrabold tracking-tight mb-5 text-balance leading-tight\"\n style={{ color: hasBg ? '#fff' : 'var(--foreground)' }}>\n {d.title}\n </h1>\n {d.subtitle && (\n <p className=\"text-lg md:text-xl mb-8 max-w-2xl mx-auto text-pretty leading-relaxed\"\n style={{ color: hasBg ? 'rgba(255,255,255,0.8)' : 'var(--muted-foreground)' }}>\n {d.subtitle}\n </p>\n )}\n {(d.primaryButton || d.secondaryButton) && (\n <div className=\"flex justify-center flex-wrap\" style={{ gap: '1rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center px-8 py-3.5 rounded-xl font-semibold text-sm transition-opacity hover:opacity-90\"\n style={{ background: d.buttonColor || 'var(--primary)', color: d.buttonTextColor || 'var(--primary-foreground)' }}>\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-8 py-3.5 rounded-xl font-semibold text-sm border transition-colors hover:bg-white/10\"\n style={{ borderColor: hasBg ? 'rgba(255,255,255,0.4)' : 'var(--border)', color: hasBg ? '#fff' : 'var(--foreground)' }}>\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n </section>\n )\n}\n\n// ── 2. Product Preview Hero ───────────────────────────────────────────────────\nfunction ProductHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const align = d.alignment || 'left'\n const textAlign = align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'right' ? 'justify-end' : align === 'center' ? 'justify-center' : 'justify-start'\n const mx = align === 'center' ? 'mx-auto' : align === 'right' ? 'ml-auto' : ''\n return (\n <section className=\"py-16 md:py-24\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {/* Text content */}\n <div className={`max-w-3xl ${mx} mb-12`}>\n {d.badge && (\n <span className={`inline-flex items-center gap-1.5 px-3 py-1 text-xs font-semibold rounded-full bg-primary/10 text-primary mb-5`}>\n {d.badge}\n </span>\n )}\n <h1 className={`text-4xl md:text-5xl font-extrabold tracking-tight mb-5 text-balance leading-tight ${textAlign}`}>{d.title}</h1>\n {d.subtitle && <p className={`text-lg text-muted-foreground leading-relaxed text-pretty mb-8 ${textAlign}`}>{d.subtitle}</p>}\n {(d.primaryButton || d.secondaryButton) && (\n <div className={`flex flex-wrap ${itemsAlign}`} style={{ gap: '0.75rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl bg-primary text-primary-foreground font-semibold text-sm hover:opacity-90 transition-opacity\">\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl border border-border text-foreground font-semibold text-sm hover:bg-muted transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n {/* Product screenshot */}\n {d.image ? (\n <div className=\"relative rounded-2xl overflow-hidden border border-border shadow-2xl\">\n {d.browserChrome && (\n <div className=\"flex items-center gap-1.5 px-4 py-2.5 bg-muted border-b border-border\">\n <span className=\"w-3 h-3 rounded-full bg-red-400\" />\n <span className=\"w-3 h-3 rounded-full bg-amber-400\" />\n <span className=\"w-3 h-3 rounded-full bg-emerald-400\" />\n {d.urlBar && <span className=\"ml-3 flex-1 text-xs text-muted-foreground bg-background border border-border rounded px-3 py-0.5 truncate\">{d.urlBar}</span>}\n </div>\n )}\n <img src={d.image} alt={d.title || 'Product preview'} className=\"w-full object-cover\" />\n </div>\n ) : (\n <div className=\"rounded-2xl border border-dashed border-border bg-muted aspect-video flex items-center justify-center\">\n <span className=\"text-xs text-muted-foreground\">Add a product screenshot</span>\n </div>\n )}\n {/* Optional trust badges / social proof */}\n {Array.isArray(d.trustedBy) && d.trustedBy.length > 0 && (\n <div className=\"mt-10 text-center\">\n {d.trustedByLabel && <p className=\"text-xs text-muted-foreground uppercase tracking-widest mb-4 font-medium\">{d.trustedByLabel}</p>}\n <div className=\"flex flex-wrap items-center justify-center gap-6\">\n {d.trustedBy.map((item: any, i: number) => (\n item.logo\n ? <img key={i} src={item.logo} alt={item.name || ''} className=\"h-6 object-contain opacity-60 grayscale\" />\n : <span key={i} className=\"text-sm font-semibold text-muted-foreground\">{item.name}</span>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n )\n}\n\n// ── 3. Bento Grid Hero ────────────────────────────────────────────────────────\nfunction BentoHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const cards: any[] = Array.isArray(d.cards) ? d.cards : []\n const align = d.alignment || 'center'\n const textAlign = align === 'right' ? 'text-right' : align === 'left' ? 'text-left' : 'text-center'\n const itemsAlign = align === 'right' ? 'justify-end' : align === 'left' ? 'justify-start' : 'justify-center'\n const mx = align === 'left' ? '' : align === 'right' ? 'ml-auto' : 'mx-auto'\n return (\n <section className=\"py-16 md:py-24\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {/* Headline */}\n <div className={`max-w-3xl ${mx} mb-12`}>\n {d.badge && (\n <span className=\"inline-block px-3 py-1 text-xs font-semibold rounded-full bg-secondary text-secondary-foreground mb-5\">\n {d.badge}\n </span>\n )}\n <h1 className={`text-4xl md:text-5xl font-extrabold tracking-tight mb-4 text-balance ${textAlign}`}>{d.title}</h1>\n {d.subtitle && <p className={`text-lg text-muted-foreground leading-relaxed text-pretty ${textAlign}`}>{d.subtitle}</p>}\n {(d.primaryButton || d.secondaryButton) && (\n <div className={`flex flex-wrap ${itemsAlign}`} style={{ gap: '0.75rem', marginTop: '1.75rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl bg-primary text-primary-foreground font-semibold text-sm hover:opacity-90 transition-opacity\">\n {d.primaryButton}\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center px-7 py-3 rounded-xl border border-border text-foreground font-semibold text-sm hover:bg-muted transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n {/* Bento grid */}\n {cards.length > 0 && (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\" style={{ gridAutoRows: '180px' }}>\n {cards.map((card: any, i: number) => {\n const colSpan = card.featured ? 2 : 1\n const rowSpan = card.rows || 1\n return (\n <div\n key={i}\n style={{ gridColumn: `span ${colSpan}`, gridRow: `span ${rowSpan}`, background: card.background || 'var(--muted)' }}\n className=\"rounded-2xl border border-border p-6 flex flex-col gap-3 transition-shadow hover:shadow-md\"\n >\n {card.icon && (\n <span className=\"text-2xl\" role=\"img\" aria-label={card.title}>{card.icon}</span>\n )}\n {card.image && (\n <img src={card.image} alt={card.imageAlt || card.title || 'Feature illustration'} className=\"w-full rounded-lg object-cover mb-1\" style={{ maxHeight: card.featured ? '180px' : '120px' }} />\n )}\n {card.title && <h3 className=\"font-semibold text-sm\">{card.title}</h3>}\n {card.description && <p className=\"text-xs text-muted-foreground leading-relaxed\">{card.description}</p>}\n </div>\n )\n })}\n </div>\n )}\n </div>\n </section>\n )\n}\n\n// ── 4. Minimal Hero ───────────────────────────────────────────────────────────\nfunction MinimalHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const align = d.alignment || 'left'\n const textAlign = align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'right' ? 'justify-end' : align === 'center' ? 'justify-center' : 'justify-start'\n const mx = align === 'center' ? 'mx-auto' : align === 'right' ? 'ml-auto' : ''\n return (\n <section className=\"py-20 md:py-28 px-4 border-b border-border\">\n <div className={`max-w-4xl ${mx}`}>\n {d.eyebrow && (\n <p className={`text-xs uppercase tracking-[0.2em] font-semibold text-muted-foreground mb-5 ${textAlign}`}>{d.eyebrow}</p>\n )}\n <h1 className={`text-5xl md:text-7xl font-black tracking-tight mb-6 text-balance leading-none whitespace-pre-line ${textAlign}`}>{d.title}</h1>\n {d.subtitle && (\n <p className={`text-lg md:text-xl text-muted-foreground leading-relaxed text-pretty max-w-2xl mb-9 ${textAlign} ${mx}`}>{d.subtitle}</p>\n )}\n {(d.primaryButton || d.secondaryButton) && (\n <div className={`flex flex-wrap items-center ${itemsAlign}`} style={{ gap: '1rem' }}>\n {d.primaryButton && (\n <a href={d.primaryUrl || '#'}\n className=\"inline-flex items-center gap-2 text-sm font-semibold underline underline-offset-4 hover:text-primary transition-colors\">\n {d.primaryButton}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"/></svg>\n </a>\n )}\n {d.secondaryButton && (\n <a href={d.secondaryUrl || '#'}\n className=\"inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors\">\n {d.secondaryButton}\n </a>\n )}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction SplitHeroBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const imgLeft = d.imagePosition === 'left'\n const align = d.alignment || 'left'\n const textAlign = align === 'center' ? 'text-center' : 'text-left'\n const itemsAlign = align === 'center' ? 'items-center' : 'items-start'\n return (\n <section className=\"py-16\">\n <div className={`flex flex-col ${imgLeft ? 'md:flex-row-reverse' : 'md:flex-row'} items-center gap-10 md:gap-16 max-w-6xl mx-auto px-4`}>\n <div className={`flex-1 space-y-5 ${itemsAlign} flex flex-col`}>\n {d.title && <h1 className={`text-3xl md:text-5xl font-extrabold tracking-tight text-balance leading-tight ${textAlign}`}>{d.title}</h1>}\n {d.subtitle && <p className={`text-lg text-muted-foreground leading-relaxed text-pretty ${textAlign}`}>{d.subtitle}</p>}\n {(d.button || d.secondaryButton) && (\n <div className={`flex flex-wrap ${align === 'center' ? 'justify-center' : 'justify-start'}`} style={{ gap: '0.75rem', paddingTop: '0.5rem' }}>\n {d.button && <a href={d.buttonUrl || '#'} className=\"inline-flex items-center px-6 py-3 rounded-lg bg-primary text-primary-foreground font-semibold text-sm hover:opacity-90 transition-opacity\">{d.button}</a>}\n {d.secondaryButton && <a href={d.secondaryUrl || '#'} className=\"inline-flex items-center px-6 py-3 rounded-lg border border-border text-foreground font-semibold text-sm hover:bg-muted transition-colors\">{d.secondaryButton}</a>}\n </div>\n )}\n </div>\n <div className=\"flex-1 w-full\">\n {d.image\n ? <img src={d.image} alt={d.imageAlt || d.title || 'Hero image'} className=\"w-full rounded-2xl object-cover shadow-lg border border-border\" />\n : <div className=\"w-full rounded-2xl bg-muted border border-border aspect-video flex items-center justify-center\" aria-hidden=\"true\"><span className=\"text-xs text-muted-foreground\">No image set</span></div>\n }\n </div>\n </div>\n </section>\n )\n}\n\n\nfunction AccordionBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n const [open, setOpen] = React.useState<number | null>(null)\n return (\n <section className=\"py-8\">\n {d.title && <h2 className=\"text-2xl font-bold text-center mb-6 text-balance\">{d.title}</h2>}\n <div className=\"max-w-2xl mx-auto divide-y divide-border border border-border rounded-xl overflow-hidden\">\n {items.map((item, i) => (\n <div key={i}>\n <button\n type=\"button\"\n className=\"w-full flex items-center justify-between px-5 py-4 text-left text-sm font-medium hover:bg-muted/50 transition-colors\"\n onClick={() => setOpen(open === i ? null : i)}\n aria-expanded={open === i}\n >\n <span>{item.title}</span>\n <svg className={`w-4 h-4 text-muted-foreground transition-transform ${open === i ? 'rotate-180' : ''}`} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><polyline points=\"6 9 12 15 18 9\"/></svg>\n </button>\n {open === i && (\n <div className=\"px-5 pb-4 text-sm text-muted-foreground leading-relaxed\" dangerouslySetInnerHTML={{ __html: item.content || '' }} />\n )}\n </div>\n ))}\n </div>\n </section>\n )\n}\n\nfunction TabsBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const tabs: any[] = Array.isArray(d.tabs) ? d.tabs : []\n const [active, setActive] = React.useState(0)\n if (!tabs.length) return null\n return (\n <div className=\"py-6\">\n <div className=\"flex gap-1 border-b border-border mb-6 overflow-x-auto\">\n {tabs.map((tab, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => setActive(i)}\n className={`px-4 py-2 text-sm font-medium whitespace-nowrap transition-colors border-b-2 -mb-px ${active === i ? 'border-primary text-primary' : 'border-transparent text-muted-foreground hover:text-foreground'}`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n <div className=\"text-sm text-foreground leading-relaxed\" dangerouslySetInnerHTML={{ __html: tabs[active]?.content || '' }} />\n </div>\n )\n}\n\nfunction ColumnsBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'md:grid-cols-2' : cols === 4 ? 'md:grid-cols-4' : 'md:grid-cols-3'\n const gap = d.gap === 'sm' ? 'gap-4' : d.gap === 'lg' ? 'gap-12' : 'gap-8'\n if (!items.length) return null\n return (\n <div className={`grid grid-cols-1 ${gridCols} ${gap}`}>\n {items.map((item, i) => (\n <div key={i} className=\"text-sm leading-relaxed\" dangerouslySetInnerHTML={{ __html: item.content || '' }} />\n ))}\n </div>\n )\n}\n\nfunction ContainerBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const maxW: Record<string, string> = { sm: 'max-w-sm', md: 'max-w-md', lg: 'max-w-lg', xl: 'max-w-xl', '2xl': 'max-w-2xl', '4xl': 'max-w-4xl', full: 'max-w-full' }\n const pad: Record<string, string> = { none: 'px-0 py-0', sm: 'px-4 py-4', md: 'px-6 py-8', lg: 'px-8 py-12' }\n const align: Record<string, string> = { left: 'text-left', center: 'text-center', right: 'text-right' }\n const style = d.bgColor ? { backgroundColor: d.bgColor } : undefined\n return (\n <section style={style} className={d.bgColor ? 'rounded-xl' : ''}>\n <div className={`mx-auto ${maxW[d.maxWidth || '4xl'] ?? 'max-w-4xl'} ${pad[d.padding || 'md'] ?? 'px-6 py-8'} ${align[d.align || 'left'] ?? 'text-left'}`}>\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance mb-4\">{d.title}</h2>}\n {d.content && (\n <div\n className=\"prose prose-sm max-w-none leading-relaxed\"\n dangerouslySetInnerHTML={{ __html: d.content }}\n />\n )}\n </div>\n </section>\n )\n}\n\nfunction CarouselBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const slides: any[] = Array.isArray(d.slides) ? d.slides : []\n const [current, setCurrent] = React.useState(0)\n\n React.useEffect(() => {\n if (!d.autoplay || slides.length < 2) return\n const id = setInterval(() => setCurrent(c => (c + 1) % slides.length), Number(d.interval) || 4000)\n return () => clearInterval(id)\n }, [d.autoplay, d.interval, slides.length])\n\n if (!slides.length) return null\n const prev = () => setCurrent(c => (c - 1 + slides.length) % slides.length)\n const next = () => setCurrent(c => (c + 1) % slides.length)\n const slide = slides[current]\n\n return (\n <div className=\"relative w-full overflow-hidden rounded-xl border border-border bg-muted\">\n <div className=\"relative aspect-video\">\n {slide.image\n ? <img src={slide.image} alt={slide.title || ''} className=\"w-full h-full object-cover\" />\n : <div className=\"w-full h-full flex items-center justify-center text-muted-foreground text-sm\">No image</div>\n }\n {(slide.title || slide.subtitle) && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-end pb-8 bg-gradient-to-t from-black/60 to-transparent text-white text-center px-6\">\n {slide.title && <h3 className=\"text-xl font-bold text-balance\">{slide.title}</h3>}\n {slide.subtitle && <p className=\"text-sm opacity-80 mt-1\">{slide.subtitle}</p>}\n </div>\n )}\n </div>\n {d.showArrows !== false && slides.length > 1 && (\n <>\n <button onClick={prev} className=\"absolute left-3 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 text-white flex items-center justify-center hover:bg-black/60 transition-colors\" aria-label=\"Previous\">\n <svg className=\"w-5 h-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><polyline points=\"15 18 9 12 15 6\"/></svg>\n </button>\n <button onClick={next} className=\"absolute right-3 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 text-white flex items-center justify-center hover:bg-black/60 transition-colors\" aria-label=\"Next\">\n <svg className=\"w-5 h-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><polyline points=\"9 18 15 12 9 6\"/></svg>\n </button>\n </>\n )}\n {d.showDots !== false && slides.length > 1 && (\n <div className=\"absolute bottom-3 left-1/2 -translate-x-1/2 flex gap-1.5\">\n {slides.map((_, i) => (\n <button key={i} onClick={() => setCurrent(i)} className={`w-2 h-2 rounded-full transition-colors ${i === current ? 'bg-white' : 'bg-white/40'}`} aria-label={`Slide ${i + 1}`} />\n ))}\n </div>\n )}\n </div>\n )\n}\n\nfunction CardGridBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const cards: any[] = Array.isArray(d.cards) ? d.cards : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'sm:grid-cols-2' : cols === 4 ? 'sm:grid-cols-2 lg:grid-cols-4' : 'sm:grid-cols-2 lg:grid-cols-3'\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-center text-balance mb-8\">{d.title}</h2>}\n {cards.length === 0 ? (\n <p className=\"text-center text-sm text-muted-foreground\">No cards added yet.</p>\n ) : (\n <div className={`grid grid-cols-1 gap-6 ${gridCols}`}>\n {cards.map((card, i) => (\n <div key={i} className=\"flex flex-col rounded-xl border border-border bg-card overflow-hidden hover:shadow-md transition-shadow\">\n {card.image && (\n <div className=\"aspect-video overflow-hidden bg-muted\">\n <img\n src={card.image}\n alt={card.title || ''}\n className=\"w-full h-full object-cover\"\n onError={(e) => { (e.target as HTMLImageElement).style.display = 'none' }}\n />\n </div>\n )}\n <div className=\"flex flex-col flex-1 p-5 gap-2\">\n {card.title && <h3 className=\"font-semibold text-base\">{card.title}</h3>}\n {card.description && <p className=\"text-sm text-muted-foreground leading-relaxed flex-1\">{card.description}</p>}\n {card.link && (\n <a href={card.link} className=\"inline-flex items-center text-sm font-medium text-primary hover:underline mt-2\">\n {card.linkText || 'Learn more'} →\n </a>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction TimelineBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n return (\n <section className=\"py-12\">\n <div className=\"max-w-3xl mx-auto px-4\">\n {(d.title || d.subtitle) && (\n <div className=\"text-center mb-10\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance\">{d.title}</h2>}\n {d.subtitle && <p className=\"mt-2 text-muted-foreground text-pretty\">{d.subtitle}</p>}\n </div>\n )}\n {items.length === 0 ? (\n <p className=\"text-center text-sm text-muted-foreground\">No timeline items added yet.</p>\n ) : (\n <div className=\"relative\">\n <div className=\"absolute left-6 top-0 bottom-0 w-px bg-border\" aria-hidden=\"true\" />\n <div className=\"space-y-8\">\n {items.map((item, i) => (\n <div key={i} className=\"relative flex gap-6\">\n <div className=\"flex-shrink-0 w-12 h-12 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-xs font-bold z-10 ring-4 ring-background\">\n {item.year || i + 1}\n </div>\n <div className=\"flex-1 pb-2 pt-1\">\n {item.title && <h3 className=\"font-semibold text-base\">{item.title}</h3>}\n {item.description && <p className=\"text-sm text-muted-foreground mt-1 leading-relaxed\">{item.description}</p>}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction PricingCardBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const features: string[] = Array.isArray(d.features) ? d.features : []\n const featured = Boolean(d.featured)\n return (\n <div className={`relative flex flex-col rounded-2xl border p-8 ${featured ? 'border-primary bg-primary text-primary-foreground shadow-xl scale-105' : 'border-border bg-card'}`}>\n {featured && (\n <span className=\"absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full bg-primary-foreground text-primary text-xs font-semibold\">\n Most Popular\n </span>\n )}\n <div className=\"mb-6\">\n {d.name && <h3 className={`text-xl font-bold ${featured ? 'text-primary-foreground' : ''}`}>{d.name}</h3>}\n <div className=\"mt-2 flex items-end gap-1\">\n {d.price && <span className={`text-4xl font-extrabold tracking-tight ${featured ? 'text-primary-foreground' : ''}`}>{d.price}</span>}\n {d.period && <span className={`text-sm mb-1 ${featured ? 'text-primary-foreground/70' : 'text-muted-foreground'}`}>{d.period}</span>}\n </div>\n </div>\n {features.length > 0 && (\n <ul className=\"space-y-3 flex-1 mb-8\">\n {features.map((feat, i) => (\n <li key={i} className=\"flex items-center gap-2 text-sm\">\n <svg className={`w-4 h-4 flex-shrink-0 ${featured ? 'text-primary-foreground' : 'text-primary'}`} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n <span className={featured ? 'text-primary-foreground/90' : ''}>{feat}</span>\n </li>\n ))}\n </ul>\n )}\n {d.button && (\n <a\n href={d.url || '#'}\n className={`block text-center py-2.5 px-6 rounded-lg font-semibold text-sm transition-opacity hover:opacity-90 ${featured ? 'bg-primary-foreground text-primary' : 'bg-primary text-primary-foreground'}`}\n >\n {d.button}\n </a>\n )}\n </div>\n )\n}\n\nfunction IconFeatureBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const iconKey = (d.icon || 'zap').toLowerCase()\n return (\n <div className=\"flex items-start gap-4 p-6 rounded-xl border border-border bg-card\">\n <div className=\"w-12 h-12 rounded-lg bg-primary/10 text-primary flex items-center justify-center flex-shrink-0\">\n {FEATURE_ICONS[iconKey] ?? (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" className=\"w-6 h-6\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n {d.title && <h3 className=\"font-semibold text-base\">{d.title}</h3>}\n {d.description && <p className=\"text-sm text-muted-foreground mt-1 leading-relaxed\">{d.description}</p>}\n </div>\n </div>\n )\n}\n\nfunction FeatureGridBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const features: any[] = Array.isArray(d.features) ? d.features : []\n const cols = Number(d.columns) || 3\n const gridCols = cols === 2 ? 'sm:grid-cols-2' : cols === 4 ? 'sm:grid-cols-2 lg:grid-cols-4' : 'sm:grid-cols-2 lg:grid-cols-3'\n\n return (\n <section className=\"py-12\">\n <div className=\"max-w-6xl mx-auto px-4\">\n {(d.title || d.subtitle) && (\n <div className=\"text-center mb-10\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance\">{d.title}</h2>}\n {d.subtitle && <p className=\"mt-2 text-muted-foreground text-pretty\">{d.subtitle}</p>}\n </div>\n )}\n {features.length === 0 ? (\n <p className=\"text-center text-sm text-muted-foreground\">No features added yet.</p>\n ) : (\n <div className={`grid grid-cols-1 gap-6 ${gridCols}`}>\n {features.map((feat, i) => (\n <div key={i} className=\"flex flex-col gap-3 p-6 rounded-xl border border-border bg-card hover:shadow-md transition-shadow\">\n {feat.icon && (\n <div className=\"w-10 h-10 rounded-lg bg-primary/10 text-primary flex items-center justify-center flex-shrink-0\">\n {FEATURE_ICONS[feat.icon] ?? (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" className=\"w-5 h-5\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>\n )}\n </div>\n )}\n <div>\n {feat.title && <h3 className=\"font-semibold text-base\">{feat.title}</h3>}\n {feat.description && (\n <div className=\"text-sm text-muted-foreground mt-1 leading-relaxed prose prose-sm max-w-none\" dangerouslySetInnerHTML={{ __html: feat.description }} />\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction TwoColumnBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const imagePos = d.imagePosition === 'left' ? 'flex-row-reverse' : 'flex-row'\n const hasImage = Boolean(d.image)\n return (\n <section className=\"py-10\">\n <div className={`flex flex-col md:${imagePos} gap-8 md:gap-12 items-center`}>\n <div className=\"flex-1 space-y-4\">\n {d.title && <h2 className=\"text-2xl md:text-3xl font-bold tracking-tight text-balance\">{d.title}</h2>}\n {d.text && <p className=\"text-muted-foreground leading-relaxed text-pretty\">{d.text}</p>}\n {d.button && (\n <a\n href={d.buttonUrl || '#'}\n className=\"inline-flex items-center gap-2 px-5 py-2.5 rounded-lg bg-primary text-primary-foreground text-sm font-medium hover:opacity-90 transition-opacity\"\n >\n {d.button}\n </a>\n )}\n </div>\n {hasImage && (\n <div className=\"flex-1 w-full\">\n <img\n src={d.image}\n alt={d.title || ''}\n className=\"w-full rounded-xl object-cover border border-border shadow-sm\"\n />\n </div>\n )}\n {!hasImage && (\n <div className=\"flex-1 w-full rounded-xl bg-muted border border-border aspect-video flex items-center justify-center\">\n <span className=\"text-xs text-muted-foreground\">No image set</span>\n </div>\n )}\n </div>\n </section>\n )\n}\n\nfunction BentoGridBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const items: any[] = Array.isArray(d.items) ? d.items : []\n const SPAN: Record<string, [number, number]> = {\n small: [1,1], wide: [2,1], tall: [1,2], large: [2,2], 'wide-2': [2,2], 'wide-3': [2,3],\n }\n return (\n <section className=\"py-12\">\n {(d.title || d.subtitle) && (\n <div className=\"mb-8\">\n {d.title && <h2 className=\"text-3xl font-semibold tracking-tight\">{d.title}</h2>}\n {d.subtitle && <p className=\"text-muted-foreground mt-1\">{d.subtitle}</p>}\n </div>\n )}\n <div className=\"grid grid-cols-4 gap-3\" style={{ gridAutoRows: '180px' }}>\n {items.map((item, i) => {\n const [cs, rs] = SPAN[item.size] ?? [1, 1]\n return (\n <div\n key={i}\n style={{ gridColumn: `span ${cs}`, gridRow: `span ${rs}` }}\n className=\"rounded-xl border border-border bg-card p-5 flex flex-col justify-between hover:bg-muted/40 transition-colors\"\n >\n <div className=\"w-8 h-8 rounded-lg bg-muted flex items-center justify-center mb-3\">\n {FEATURE_ICONS[item.icon] ?? <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" className=\"w-4 h-4\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>}\n </div>\n <div>\n <h3 className=\"font-semibold text-sm\">{item.title}</h3>\n {item.description && <p className=\"text-muted-foreground text-xs mt-0.5 leading-relaxed\">{item.description}</p>}\n </div>\n </div>\n )\n })}\n </div>\n </section>\n )\n}\n\n// GridLayoutBlock — renders child blocks recursively inside a CSS grid\nfunction GridLayoutBlock({ block }: { block: CMSBlock }) {\n const d = getData(block)\n const cols = Number(d.columns) || 3\n const gap = String(d.gap ?? 'md')\n const children: CMSBlock[] = Array.isArray(d.children) ? d.children : []\n\n const gapMap: Record<string, string> = { none: 'gap-0', sm: 'gap-2', md: 'gap-4', lg: 'gap-6', xl: 'gap-8' }\n const colsMap: Record<number, string> = { 1: 'grid-cols-1', 2: 'grid-cols-2', 3: 'grid-cols-3', 4: 'grid-cols-4', 5: 'grid-cols-5', 6: 'grid-cols-6' }\n\n return (\n <div className={`grid ${colsMap[cols] ?? 'grid-cols-3'} ${gapMap[gap] ?? 'gap-4'}`}>\n {children.map(child => (\n <div key={child.id} className=\"min-w-0\">\n {/* Resolved at render time via the BUILT_IN map defined below */}\n <GridLayoutChildBlock block={child} />\n </div>\n ))}\n </div>\n )\n}\n\n// Separate component to avoid forward-reference issues with BUILT_IN map\nfunction GridLayoutChildBlock({ block }: { block: CMSBlock }) {\n const renderer = BUILT_IN[block.type]\n if (renderer) return <>{renderer(block, null)}</>\n return <SectionBlock block={block} pageType={null} />\n}\n\n// ── Main component ───────────────────────────────────────────────────────────��\n\nconst BUILT_IN: Record<string, (block: CMSBlock, pageType?: CMSPageType | null) => React.ReactNode> = {\n // Structured page type — content is nested { sectionName: { fieldName: value } }\n '__structured__': (b, pt) => <StructuredBlock block={b} pageType={pt} />,\n heading: (b) => <HeadingBlock block={b} />,\n text: (b) => <TextBlock block={b} />,\n richtext: (b) => <RichTextBlock block={b} />,\n image: (b) => <ImageBlock block={b} />,\n button: (b) => <ButtonBlock block={b} />,\n list: (b) => <ListBlock block={b} />,\n gallery: (b) => <GalleryBlock block={b} />,\n 'pricing-table': (b) => <PricingTableBlock block={b} />,\n hero: (b) => <HeroBlock block={b} />,\n 'hero-section': (b) => <HeroBlock block={b} />,\n 'centered-hero': (b) => <CenteredHeroBlock block={b} />,\n 'product-hero': (b) => <ProductHeroBlock block={b} />,\n 'bento-hero': (b) => <BentoHeroBlock block={b} />,\n 'minimal-hero': (b) => <MinimalHeroBlock block={b} />,\n cta: (b) => <CTABlock block={b} />,\n faq: (b) => <FAQBlock block={b} />,\n 'team-member': (b) => <TeamMemberBlock block={b} />,\n stats: (b) => <StatsBlock block={b} />,\n testimonial: (b) => <TestimonialBlock block={b} />,\n quote: (b) => <QuoteBlock block={b} />,\n alert: (b) => <AlertBlock block={b} />,\n divider: () => <DividerBlock />,\n spacer: (b) => <SpacerBlock block={b} />,\n video: (b) => <VideoBlock block={b} />,\n 'card-grid': (b) => <CardGridBlock block={b} />,\n timeline: (b) => <TimelineBlock block={b} />,\n 'pricing-card': (b) => <PricingCardBlock block={b} />,\n 'icon-feature': (b) => <IconFeatureBlock block={b} />,\n 'feature-grid': (b) => <FeatureGridBlock block={b} />,\n 'two-column': (b) => <TwoColumnBlock block={b} />,\n 'split-hero': (b) => <SplitHeroBlock block={b} />,\n\n accordion: (b) => <AccordionBlock block={b} />,\n tabs: (b) => <TabsBlock block={b} />,\n columns: (b) => <ColumnsBlock block={b} />,\n container: (b) => <ContainerBlock block={b} />,\n carousel: (b) => <CarouselBlock block={b} />,\n 'product-list': (b) => <ProductListBlock block={b} />,\n 'bento-grid': (b) => <BentoGridBlock block={b} />,\n 'grid-layout': (b) => <GridLayoutBlock block={b} />,\n}\n\nexport function CMSBlocks({ blocks, pageType, className = '', custom = {} }: CMSBlocksProps) {\n if (!blocks?.length) return null\n\n return (\n <div className={`space-y-8 ${className}`}>\n {blocks.map(block => {\n // 1. Custom renderer takes priority\n if (custom[block.type]) return <React.Fragment key={block.id}>{custom[block.type](block)}</React.Fragment>\n // 2. Built-in renderer\n if (BUILT_IN[block.type]) return <React.Fragment key={block.id}>{BUILT_IN[block.type](block, pageType)}</React.Fragment>\n // 3. Structured section block (from page type sections)\n return <SectionBlock key={block.id} block={block} pageType={pageType} />\n })}\n </div>\n )\n}\n","'use client'\n\nimport React from 'react'\n\nexport interface CMSPreviewBannerProps {\n isPreview: boolean\n status?: string\n slug?: string\n /** URL for the exit preview link. Defaults to /api/cms-preview/exit */\n exitUrl?: string\n}\n\nexport function CMSPreviewBanner({ isPreview, status, slug, exitUrl = '/api/cms-preview/exit' }: CMSPreviewBannerProps) {\n if (!isPreview) return null\n return (\n <div className=\"sticky top-0 z-50 flex items-center justify-between px-4 py-2.5 bg-amber-500 text-white text-sm font-medium shadow\">\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n </svg>\n <span>Draft Preview</span>\n {status && <><span className=\"opacity-60\">·</span><span className=\"opacity-75 capitalize\">{status}</span></>}\n {slug && <><span className=\"opacity-60\">·</span><span className=\"opacity-75 font-normal\">/{slug}</span></>}\n </div>\n <a href={exitUrl} className=\"px-3 py-1 rounded bg-white/20 hover:bg-white/30 transition-colors text-xs\">\n Exit Preview\n </a>\n </div>\n )\n}\n"]}
|