import { z } from "zod";

export const leadFormSchema = z.object({
  name: z.string().min(2, "Name must be at least 2 characters"),
  phone: z.string().min(10, "Please enter a valid phone number"),
  email: z.string().email("Please enter a valid email").optional().or(z.literal("")),
  serviceRequired: z.string().optional(),
  message: z.string().optional(),
  website: z.string().max(0).optional(),
});

export type LeadFormData = z.infer<typeof leadFormSchema>;

export const loginSchema = z.object({
  email: z.string().email("Invalid email address"),
  password: z.string().min(6, "Password must be at least 6 characters"),
});

export const settingsSchema = z.object({
  businessName: z.string().min(1),
  tagline: z.string().optional(),
  phone: z.string().min(1),
  whatsapp: z.string().min(1),
  email: z.string().email(),
  address: z.string().min(1),
  heroHeadline: z.string().min(1),
  heroSubheadline: z.string().min(1),
  emergencyBadge: z.string().optional(),
  ctaHeadline: z.string().optional(),
  ctaSubheadline: z.string().optional(),
  metaTitle: z.string().min(1),
  metaDescription: z.string().min(1),
  primaryColor: z.string(),
  secondaryColor: z.string(),
  accentColor: z.string(),
  backgroundColor: z.string(),
  fontHeading: z.string(),
  fontBody: z.string(),
  buttonStyle: z.enum(["rounded", "pill", "square"]),
});

export const serviceSchema = z.object({
  name: z.string().min(1),
  description: z.string().min(1),
  icon: z.string().default("wrench"),
  sortOrder: z.number().default(0),
  isActive: z.boolean().default(true),
});

export const testimonialSchema = z.object({
  name: z.string().min(1),
  rating: z.number().min(1).max(5),
  review: z.string().min(1),
  location: z.string().optional(),
  sortOrder: z.number().default(0),
  isActive: z.boolean().default(true),
});

export const faqSchema = z.object({
  question: z.string().min(1),
  answer: z.string().min(1),
  sortOrder: z.number().default(0),
  isActive: z.boolean().default(true),
});

export const serviceAreaSchema = z.object({
  city: z.string().min(1),
  area: z.string().optional(),
  sortOrder: z.number().default(0),
  isActive: z.boolean().default(true),
});

export const gallerySchema = z.object({
  title: z.string().optional(),
  beforeImage: z.string().min(1),
  afterImage: z.string().min(1),
  sortOrder: z.number().default(0),
  isActive: z.boolean().default(true),
});

export const whyChooseUsSchema = z.object({
  title: z.string().min(1),
  description: z.string().min(1),
  icon: z.string().default("check"),
  sortOrder: z.number().default(0),
  isActive: z.boolean().default(true),
});
