'use client' import { useState, useCallback } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { Search, ArrowRight, AlertCircle, X } from 'lucide-react' interface UrlInputProps { onSubmit: (url: string) => void } function isValidUrl(string: string): boolean { try { const url = new URL(string.startsWith('http') ? string : `https://${string}`) return url.protocol === 'http:' || url.protocol === 'https:' } catch { return false } } export default function UrlInput({ onSubmit }: UrlInputProps) { const [url, setUrl] = useState('') const [isFocused, setIsFocused] = useState(false) const [error, setError] = useState(null) const handleSubmit = useCallback((e: React.FormEvent) => { e.preventDefault() const trimmedUrl = url.trim() if (!trimmedUrl) { setError('Please enter a URL') return } if (!isValidUrl(trimmedUrl)) { setError('Please enter a valid URL (e.g., docs.example.com)') return } setError(null) onSubmit(trimmedUrl) }, [url, onSubmit]) const handleChange = useCallback((e: React.ChangeEvent) => { setUrl(e.target.value) if (error) setError(null) }, [error]) const handleClear = useCallback(() => { setUrl('') setError(null) }, []) return (
{/* Glow effect */} ) }