import { z } from "zod" import { FirstDayOfWork } from "@garage/api" export const relationFieldSchema = z .object({ value: z.string(), label: z.string() }) .nullable() const optionalLatitude = z .string() .optional() .refine( (v) => v == null || v === "" || (!Number.isNaN(Number(v)) && Number(v) >= -90 && Number(v) <= 90), "Latitude must be between -90 and 90", ) const optionalLongitude = z .string() .optional() .refine( (v) => v == null || v === "" || (!Number.isNaN(Number(v)) && Number(v) >= -180 && Number(v) <= 180), "Longitude must be between -180 and 180", ) const optionalUrl = z .string() .max(255, "Website cannot exceed 255 characters") .optional() .refine( (v) => v == null || v === "" || z.string().url().safeParse(v).success, "Enter a valid website URL", ) export const settingsFormSchema = z.object({ name: z.string().min(1, "Name is required").max(100, "Name cannot exceed 100 characters"), email: z.union([z.string().email("Invalid email address"), z.literal("")]).optional(), phone: z.string().max(30, "Phone cannot exceed 30 characters").optional(), alternative_phone: z.string().max(30, "Phone cannot exceed 30 characters").optional(), website: optionalUrl, time_zone: z.string().max(100, "Time zone cannot exceed 100 characters").optional(), upi_id: z.string().max(100, "UPI cannot exceed 100 characters").optional(), first_day_of_work: z.union([z.enum(FirstDayOfWork), z.literal("")]).optional(), latitude: optionalLatitude, longitude: optionalLongitude, bank_details: z.string().optional(), first_address_line: z.string().max(255, "Address cannot exceed 255 characters").optional(), second_address_line: z.string().max(255, "Address cannot exceed 255 characters").optional(), country: relationFieldSchema, state: relationFieldSchema, city: z.string().max(100, "City cannot exceed 100 characters").optional(), zip_code: z.string().max(20, "Zip code cannot exceed 20 characters").optional(), description: z.string().optional(), security: z.string().optional(), privacy_policy: z.string().optional(), }) export type SettingsFormValues = z.infer