"use client"; import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Globe, Edit, Check } from "lucide-react"; import { extractMetaData } from "@/app/actions"; import { LengthIndicator } from "./length-indicator"; import { CopyButton } from "./copy-button"; interface MetaData { title: string; description: string; image?: string | null; } export function MetaForm() { const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [metaData, setMetaData] = useState(null); const [isEditingTitle, setIsEditingTitle] = useState(false); const [isEditingDescription, setIsEditingDescription] = useState(false); const [editableTitle, setEditableTitle] = useState(""); const [editableDescription, setEditableDescription] = useState(""); useEffect(() => { if (metaData) { setEditableTitle(metaData.title); setEditableDescription(metaData.description); } }, [metaData]); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); setLoading(true); setError(null); setMetaData(null); setIsEditingTitle(false); setIsEditingDescription(false); const formData = new FormData(event.currentTarget); const url = formData.get("url") as string; const result = await extractMetaData(url); if (result.error) { setError(result.error); } else if (result.data) { setMetaData(result.data); } setLoading(false); }; return (
{error && (

{error}

)} {metaData && ( Extraction Results {metaData.image && (

Preview Image

Meta preview image
)}

Meta Title

{isEditingTitle ? ( setEditableTitle(e.target.value)} className="w-full bg-muted" placeholder="Meta Title" /> ) : (

{editableTitle || "Not found"}

)}

Meta Description

{isEditingDescription ? (