'use client'
import Image from 'next/image'
import React from 'react'
import { z } from 'zod'
import { useForm } from 'react-hook-form'
import { zodResolver } from '@hookform/resolvers/zod'
import {
  Form,
  FormControl,
  FormItem,
  FormLabel,
  FormMessage,
  FormField,
} from '@/components/ui/form'
import { Input } from '@/components/ui/input'
import { Button } from '@/components/ui/button'
import { ImLocation } from 'react-icons/im'
import { IoCall } from 'react-icons/io5'
import { MdEmail } from 'react-icons/md'
import { Textarea } from '@/components/ui/textarea'
import { useMutation } from '@tanstack/react-query'
import { insertContact } from '@/action'
import { toast, Toaster } from 'sonner'

const formSchema = z.object({
  name: z
    .string({ required_error: 'Enter Your Name' })
    .min(1, 'Enter your full name.'),
  email: z.string().email({ message: 'Please enter a valid email address.' }),
  subject: z.string().optional(),
  message: z.string({ required_error: 'Enter Message.' }),
})

type formSchemaType = z.infer<typeof formSchema>

function AboutUsPage() {
  const form = useForm<formSchemaType>({
    resolver: zodResolver(formSchema),
  })
  const submitMutation = useMutation({
    mutationKey: ['submit-contact'],
    mutationFn: async (data: formSchemaType) => {
      return await insertContact(data)
    },
    onSuccess: () => {
      toast.success('Submitted.')
      form.setValue('email', '')
      form.setValue('message', '')
      form.setValue('name', '')
    },
    onError: () => {
      toast.error('Error!.')
    },
  })
  const onSubmit = (data: formSchemaType) => {
    submitMutation.mutate(data)
  }

  return (
    <div className="w-full min-h-screen flex items-center justify-center bg-[url('/restaurant-bar/1.jpg')] bg-cover bg-fixed p-4">
      <div className="w-full max-w-6xl bg-white/90 rounded-lg shadow-lg overflow-hidden md:flex">
        <div
          className="md:w-2/3 p-6 md:p-10"
          aria-disabled={submitMutation?.isPending}
        >
          <Form {...form}>
            <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-6">
              <h2 className="text-2xl font-playfair font-semibold text-gray-800 uppercase ">
                Contact Us
              </h2>
              <FormField
                control={form.control}
                name="name"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel className="text-base font-sans text-gray-700">
                      Name
                    </FormLabel>
                    <FormControl>
                      <Input {...field} placeholder="Your full name" />
                    </FormControl>
                    <FormMessage />
                  </FormItem>
                )}
              />
              <FormField
                control={form.control}
                name="email"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel className="text-base font-sans text-gray-700">
                      Email
                    </FormLabel>
                    <FormControl>
                      <Input {...field} placeholder="Your email address" />
                    </FormControl>
                    <FormMessage />
                  </FormItem>
                )}
              />
              <FormField
                control={form.control}
                name="subject"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel className="text-base font-sans text-gray-700">
                      Subject
                    </FormLabel>
                    <FormControl>
                      <Input {...field} placeholder="Subject of your message" />
                    </FormControl>
                    <FormMessage />
                  </FormItem>
                )}
              />
              <FormField
                control={form.control}
                name="message"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel className="text-base font-sans text-gray-700">
                      Message
                    </FormLabel>
                    <FormControl>
                      <Textarea
                        {...field}
                        placeholder="Your message"
                        rows={6}
                      />
                    </FormControl>
                    <FormMessage />
                  </FormItem>
                )}
              />
              <Button
                isLoading={submitMutation?.isPending}
                type="submit"
                className="w-full bg-brand text-white font-semibold py-3 rounded-lg hover:bg-brand-dark transition"
              >
                Submit
              </Button>
            </form>
          </Form>
        </div>
        <div className="md:w-1/3 bg-brand text-white flex flex-col justify-center items-center p-8 space-y-8">
          <div className="flex flex-col items-center">
            <ImLocation size={40} />
            <p className="text-center text-sm mt-4">
              Birendranagar -03 Pipal Chautara Surkhet.
            </p>
          </div>
          <div className="flex flex-col items-center">
            <IoCall size={40} />
            <p className="text-center text-sm mt-4">083520226 / 083521427</p>
          </div>
          <div className="flex flex-col items-center">
            <MdEmail size={40} />
            <p className="text-center text-sm mt-4">
              hotelnamast.skt@gmail.com
            </p>
          </div>
        </div>
      </div>
      <Toaster />
    </div>
  )
}

export default AboutUsPage
