import { z } from 'zod' export const loginSchema = z.object({ email: z.string().min(1, 'E-posta gerekli').email('Geçerli bir e-posta girin'), password: z.string().min(1, 'Şifre gerekli'), }) export const registerSchema = z.object({ email: z.string().min(1, 'E-posta gerekli').email('Geçerli bir e-posta girin'), first_name: z.string().min(1, 'Ad gerekli').max(100, 'Ad en fazla 100 karakter olabilir'), last_name: z.string().min(1, 'Soyad gerekli').max(100, 'Soyad en fazla 100 karakter olabilir'), username: z.string().min(1, 'Kullanıcı adı gerekli').max(150, 'Kullanıcı adı en fazla 150 karakter olabilir'), password: z.string().min(6, 'Şifre en az 6 karakter olmalı'), password_confirm: z.string().min(1, 'Şifre tekrarı gerekli'), }).refine((data) => data.password === data.password_confirm, { message: 'Şifreler eşleşmiyor', path: ['password_confirm'], }) export type LoginInput = z.infer export type RegisterInput = z.infer export function getFirstZodError (err: z.ZodError): string { const issues = (err as { issues?: Array<{ message?: string }>; errors?: Array<{ message?: string }> }).issues ?? (err as { errors?: Array<{ message?: string }> }).errors ?? [] const first = issues[0] return first ? (first.message || 'Doğrulama hatası') : 'Doğrulama hatası' } /** Map Zod error to field-level errors for form display */ export function getFieldErrors (err: z.ZodError): Record { const issues = (err as { issues?: Array<{ path: unknown[]; message?: string }>; errors?: Array<{ path: unknown[]; message?: string }> }).issues ?? (err as { errors?: Array<{ path: unknown[]; message?: string }> }).errors ?? [] const out: Record = {} for (const e of issues) { const path = e.path?.[0] if (path != null && typeof path === 'string' && e.message) out[path] = e.message } return out }