'use client'; import { X, RotateCcw, FlipHorizontal, Camera, Zap, Search, CheckCircle2, ZoomIn, ZoomOut } from 'lucide-react'; import { cn } from '@/lib/utils'; interface CameraViewProps { scannerId: string; isStarted: boolean; paused: boolean; onClose: () => void; onRotate: () => void; onFlip: () => void; onFlash: () => void; flashOn: boolean; onZoomChange: (zoom: number) => void; countdown: number | null; ocrProcessing: boolean; isSelecting: boolean; capturedImage: string | null; detectedWords: Array<{text: string, x: number, y: number, w: number, h: number}>; onScan: () => void; onWordSelect: (text: string) => void; onCancelSelection: () => void; } export default function CameraView({ scannerId, isStarted, paused, onClose, onRotate, onFlip, onFlash, flashOn, onZoomChange, countdown, ocrProcessing, isSelecting, capturedImage, detectedWords, onScan, onWordSelect, onCancelSelection, }: CameraViewProps) { return (
{/* Video Viewport Area */}
{isStarted && !paused && !isSelecting && (
)}
{/* Selection UI */} {isSelecting && capturedImage && (
OCR text detection
{detectedWords.map((w, i) => (
Extract Detected Signatures
)} {/* Countdown */} {countdown !== null && (
{countdown}
)} {/* Vision Status */} {ocrProcessing && (
Analyzing Surface Protocols...
)}
{/* Camera Controls */}
{/* Zoom Controls */}
onZoomChange(parseFloat(e.target.value))} className="flex-1 h-1 bg-border appearance-none cursor-pointer accent-primary" />
{/* Actions */}
); }