'use client'; import { useEffect, useState } from 'react'; interface Props { value: string; // "HH:MM" onChange: (value: string) => void; className?: string; } function isValid(t: string): boolean { if (!/^\d{1,2}:\d{2}$/.test(t)) return false; const [h, m] = t.split(':').map(Number); return h >= 0 && h <= 23 && m >= 0 && m <= 59; } function normalize(t: string): string { const [h, m] = t.split(':').map(Number); return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`; } export default function TimeInput({ value, onChange, className = '' }: Props) { const [local, setLocal] = useState(value); const [error, setError] = useState(false); useEffect(() => { setLocal(value); setError(false); }, [value]); function handleBlur() { if (isValid(local)) { const norm = normalize(local); setLocal(norm); setError(false); onChange(norm); } else { setError(true); } } return (
Ungültig (00:00 – 23:59)
)}