import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Textarea } from "@/components/ui/textarea"; import { PhoneInput } from "@/components/ui/phone-number-input"; import { Input } from "@/components/ui/input"; import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; import { ScrollArea } from "@/components/ui/scroll-area"; import { useShop } from "@/hooks/useShop"; import { useEffect } from "react"; import { toast } from "@/hooks/useToast"; const shopAboutSchema = z.object({ name: z.string().min(1, "Name is required"), description: z.string().min(1, "Description is required"), currency: z.string().min(1, "Currency is required"), contact_email: z.string().email("Invalid email"), contact_phone_number: z.string().min(1, "Phone number is required"), address: z.object({ street: z.string(), city: z.string(), state: z.string().nullable().optional(), postal_code: z.string(), country: z.string() }), status: z.enum(["active", "inactive", "suspended"]) }); type ShopAboutFormValues = z.infer; export function ShopAboutForm() { const { shop, isLoading, updateShop } = useShop(); const form = useForm({ resolver: zodResolver(shopAboutSchema), defaultValues: shop ?? undefined, mode: "onChange" }); useEffect(() => { if (shop) form.reset(shop); }, [shop, form]); function onSubmit(data: ShopAboutFormValues) { updateShop(data); toast({title: "Saved shop data"}) } if (isLoading) return
Loading...
; if (!shop) return
No shop found
; return (
Basic Details ( Shop Name )} /> ( Currency )} /> ( Description