import { motion } from 'framer-motion' import { FileText, Eye, Search, Wand2 } from 'lucide-react' const modes = [ { id: 'plain_ocr', name: 'Plain OCR', icon: FileText, color: 'from-blue-500 to-cyan-500', desc: 'Extract raw text', needsInput: false }, { id: 'describe', name: 'Describe', icon: Eye, color: 'from-violet-500 to-purple-500', desc: 'Image description', needsInput: false }, { id: 'find_ref', name: 'Find', icon: Search, color: 'from-yellow-500 to-orange-500', desc: 'Locate specific terms', needsInput: 'findTerm' }, { id: 'freeform', name: 'Freeform', icon: Wand2, color: 'from-fuchsia-500 to-pink-500', desc: 'Custom prompt', needsInput: 'prompt' }, ] export default function ModeSelector({ mode, onModeChange, prompt, onPromptChange, findTerm, onFindTermChange }) { const selectedMode = modes.find(m => m.id === mode) const needsInput = selectedMode?.needsInput return (

Mode

{modes.map((m) => { const Icon = m.icon const isSelected = mode === m.id return ( onModeChange(m.id)} className={` relative p-2 rounded-xl text-center transition-all ${isSelected ? 'glass border-white/20 shadow-lg' : 'bg-white/5 border border-white/10 hover:border-white/20' } `} whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} > {isSelected && ( )}

{m.name}

) })}
{needsInput === 'findTerm' && ( onFindTermChange(e.target.value)} placeholder="Enter term to find (e.g., Total, Invoice #)" className="w-full bg-white/5 border border-white/10 rounded-xl px-3 py-2 text-sm focus:outline-none focus:border-purple-500 transition-colors" /> )} {needsInput === 'prompt' && (