"use client"; import { useTransition, useState } from 'react'; import { useRouter } from 'next/navigation'; import { createBlogPost, updateBlogPost } from '@/app/actions/blog'; import { Loader2, ArrowLeft, Save } from 'lucide-react'; import Link from 'next/link'; import { toast } from 'react-hot-toast'; import RichTextEditor from './RichTextEditor'; interface Props { initialData?: { id: string; title: string; excerpt: string; content: string; author: string; imageUrl: string; slug?: string | null; tags?: string[]; metaTitle?: string | null; metaDescription?: string | null; }; } export default function BlogForm({ initialData }: Props) { const router = useRouter(); const [isPending, startTransition] = useTransition(); const [content, setContent] = useState(initialData?.content || ''); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); const formData = new FormData(event.currentTarget); const data = { title: formData.get('title') as string, slug: formData.get('slug') as string, excerpt: formData.get('excerpt') as string, content: content, author: formData.get('author') as string, imageUrl: formData.get('imageUrl') as string, tags: (formData.get('tags') as string)?.split(',').map(t => t.trim()).filter(t => t !== ''), metaTitle: formData.get('metaTitle') as string, metaDescription: formData.get('metaDescription') as string, }; startTransition(async () => { const result = initialData ? await updateBlogPost(initialData.id, data) : await createBlogPost(data); if (result.success) { toast.success(initialData ? "Article mis à jour" : "Article publié avec succès"); router.push('/blog'); router.refresh(); } else { toast.error(result.error || "Une erreur est survenue"); } }); }; return (

{initialData ? 'Modifier l\'article' : 'Nouvel Article'}

Informations Générales