"use client"; import { useState } from "react"; // Validates cadastral number formats: // 3-part: 66:41:0204016 (quarter) // 4-part: 66:41:0204016:10 (parcel) const CAD_REGEX = /^\d+:\d+:\d+(?::\d+)?$/; interface Props { onSubmit: (cadNum: string) => void; loading: boolean; } export function CadInput({ onSubmit, loading }: Props) { const [value, setValue] = useState(""); const [error, setError] = useState(null); function handleSubmit(e: React.FormEvent) { e.preventDefault(); const trimmed = value.trim(); if (!CAD_REGEX.test(trimmed)) { setError( "Неверный формат. Ожидается: 66:41:0204016:10 (участок) или 66:41:0204016 (квартал)", ); return; } setError(null); onSubmit(trimmed); } return (
{ setValue(e.target.value); setError(null); }} placeholder="66:41:0204016:10" style={{ flex: 1, padding: "8px 12px", fontSize: 14, border: error ? "1px solid var(--danger, #B3261E)" : "1px solid var(--border-strong, #D1D5DB)", borderRadius: 8, outline: "none", fontFamily: "monospace", }} disabled={loading} />
{error && (

{error}

)}

Примеры: 66:41:0204016:10 (участок) ·{" "} 66:41:0204016 (квартал)

); }