"use client"; import { Input, Textarea, Label } from '../ui'; export interface OGEditorPreviewProps { // SEO fields seoTitle: string; seoDescription: string; seoKeywords: string; ogImageUrl: string; // Auto-populate sources title: string; summary: string; featuredImage: string; categories?: Array<{ name: string; slug: string }>; // Change handlers onSeoTitleChange: (value: string) => void; onSeoDescriptionChange: (value: string) => void; onSeoKeywordsChange: (value: string) => void; onOgImageUrlChange: (value: string) => void; // OG Image Upload Component (passed from parent) OGImageUploadComponent: React.ReactNode; // OG Preview Component (passed from parent) OGPreviewComponent: React.ReactNode; disabled?: boolean; className?: string; } /** * Unified SEO & Open Graph Editor with Preview * Used across blog posts, case studies, and product releases * Combines SEO fields, OG image upload, and preview in one component */ export function OGEditorPreview({ seoTitle, seoDescription, seoKeywords, onSeoTitleChange, onSeoDescriptionChange, onSeoKeywordsChange, OGImageUploadComponent, OGPreviewComponent, disabled = false, className = '' }: OGEditorPreviewProps) { return (

SEO & Open Graph

{/* SEO Title & Keywords - Same Row */}
onSeoTitleChange(e.target.value)} disabled={disabled} placeholder="Enter SEO meta title..." className="bg-ods-bg border-ods-border text-ods-text-primary" />
onSeoKeywordsChange(e.target.value)} disabled={disabled} placeholder="Enter SEO keywords..." className="bg-ods-bg border-ods-border text-ods-text-primary" />
{/* SEO Description & OG Image - Same Row */}