"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Globe } from "lucide-react"; import { extractMetaData } from "@/app/actions"; import { LengthIndicator } from "./length-indicator"; import { CopyButton } from "./copy-button"; import { ResultsSkeleton } from "./results-skeleton"; 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 handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); setLoading(true); setError(null); setMetaData(null); 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 (
{loading && } {error && !loading && (

{error}

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

Preview Image

Meta preview image
)}

Meta Title

{metaData.title || "Not found"}

Meta Description

{metaData.description || "Not found"}

)}
); }