import { Button } from "@sase/ui"; import { Input } from "@sase/ui"; import { Search } from "lucide-react"; import { useState } from "react"; const VIN_REGEX = /^[A-HJ-NPR-Z0-9]{17}$/; function isValidVin(vin: string): boolean { if (!vin || vin.length !== 17) return false; return VIN_REGEX.test(vin.toUpperCase()); } interface VinInputProps { onSubmit: (vin: string) => void; loading?: boolean; error?: string | null; } export function VinInput({ onSubmit, loading, error }: VinInputProps) { const [vin, setVin] = useState(""); function handleSubmit(e: React.FormEvent) { e.preventDefault(); const cleanVin = vin.toUpperCase().trim(); if (!isValidVin(cleanVin)) return; onSubmit(cleanVin); } const vinUpper = vin.toUpperCase().trim(); const isInvalid = vinUpper.length === 17 && !isValidVin(vinUpper); return (
setVin(e.target.value.toUpperCase())} maxLength={17} className="font-mono text-lg tracking-wider" />
{isInvalid && (

Gecersiz VIN. 17 karakter olmali, I, O, Q harfleri kullanilamaz.

)} {error &&

{error}

}
); }