'use client'; import { useState, useEffect } from 'react'; import { CheckCircle2, XCircle, AlertCircle, Loader2, Globe, ExternalLink } from 'lucide-react'; import { cn } from '@/lib/utils'; import { Button } from '@/components/ui/button'; import { motion, AnimatePresence } from 'framer-motion'; interface DomainResult { domain: string; available: boolean; error?: string; } interface DomainCheckerProps { results?: DomainResult[]; loading?: boolean; } export function DomainChecker({ results = [], loading = false }: DomainCheckerProps) { const [animatedResults, setAnimatedResults] = useState([]); useEffect(() => { if (results.length > 0) { setAnimatedResults([]); const timer = setTimeout(() => { results.forEach((result, index) => { setTimeout(() => { setAnimatedResults(prev => [...prev, result]); }, index * 100); }); }, 100); return () => clearTimeout(timer); } }, [results]); if (loading) { return (

Checking domain availability...

); } if (results.length === 0) { return null; } const availableCount = results.filter(r => r.available).length; const takenCount = results.filter(r => !r.available && !r.error).length; return (

Domain Availability Check

{availableCount > 0 || takenCount > 0 ? (
{availableCount} available
{takenCount} taken
) : null}
{animatedResults.map((result, index) => ( ))}
); } function DomainCard({ result }: { result: DomainResult }) { const [isHovered, setIsHovered] = useState(false); if (result.error) { return (

{result.domain}

{result.error}

); } const isAvailable = result.available; return (
setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} >
{isAvailable ? ( ) : ( )}

{result.domain}

{isAvailable ? "Available for registration" : "Already registered"}

{isAvailable && ( )}
{isAvailable && ( )}
); }