diff --git a/src/food-market.web/src/components/Field.tsx b/src/food-market.web/src/components/Field.tsx index 053b894..3527dd2 100644 --- a/src/food-market.web/src/components/Field.tsx +++ b/src/food-market.web/src/components/Field.tsx @@ -36,7 +36,15 @@ export function TextInput(props: InputHTMLAttributes) { useEffect(() => { if (ref.current) localizeNativeValidation(ref.current) }, []) - return + // Email type без явного pattern — добавляем строгий pattern (требует TLD ≥2), + // чтобы name@domain без точки/зоны не проходил. title задаёт текст подсказки; + // localizeNativeValidation подставит его при patternMismatch. + const extraProps: InputHTMLAttributes = {} + if (props.type === 'email' && !props.pattern) { + extraProps.pattern = '[^@\\s]+@[^@\\s]+\\.[A-Za-z]{2,}' + extraProps.title = props.title ?? 'Введите корректный email с доменной зоной (например, name@example.kz)' + } + return } export function TextArea(props: TextareaHTMLAttributes) {