"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import Image from "next/image"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Checkbox } from "@/components/ui/checkbox"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { Building2, Mail, Lock, Eye, EyeOff, Phone, MapPin, Globe, FileText, ArrowLeft, } from "lucide-react"; import { motion } from "framer-motion"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { useTranslation } from "@/lib/i18n"; import { LanguageSwitcher } from "@/components/language-switcher"; export default function CompanyRegisterPage() { const router = useRouter(); const { t } = useTranslation(); const [loading, setLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); const [showConfirmPassword, setShowConfirmPassword] = useState(false); const [currentStep, setCurrentStep] = useState(1); const companySchema = z.object({ companyName: z.string().min(2, t("register.company.form.errors.companyName")), cnpj: z.string().min(14, t("register.company.form.errors.cnpj")), email: z.string().email(t("register.company.form.errors.email")), password: z.string().min(6, t("register.company.form.errors.password")), confirmPassword: z.string(), phone: z.string().min(10, t("register.company.form.errors.phone")), website: z.string().url(t("register.company.form.errors.website")).optional().or(z.literal("")), address: z.string().min(5, t("register.company.form.errors.address")), city: z.string().min(2, t("register.company.form.errors.city")), state: z.string().min(2, t("register.company.form.errors.state")), zipCode: z.string().min(8, t("register.company.form.errors.zipCode")), sector: z.string().min(1, t("register.company.form.errors.industry")), companySize: z.string().min(1, t("register.company.form.errors.size")), description: z.string().min(20, t("register.company.form.errors.description")), contactPerson: z.string().min(2, t("register.company.form.errors.contactName")), contactRole: z.string().min(2, t("register.company.form.errors.contactRole")), acceptTerms: z.boolean().refine(val => val === true, t("register.company.form.errors.acceptTerms")), acceptNewsletter: z.boolean().optional(), }).refine(data => data.password === data.confirmPassword, { message: t("register.company.form.errors.passwordMismatch"), path: ["confirmPassword"], }); type CompanyFormData = z.infer; const { register, handleSubmit, formState: { errors }, setValue, watch, } = useForm({ resolver: zodResolver(companySchema), }); const acceptTerms = watch("acceptTerms"); const acceptNewsletter = watch("acceptNewsletter"); const [errorMsg, setErrorMsg] = useState(null); const onSubmit = async (data: CompanyFormData) => { setLoading(true); setErrorMsg(null); try { const { registerCompany } = await import("@/lib/auth"); await registerCompany({ companyName: data.companyName, cnpj: data.cnpj, email: data.email, phone: data.phone, }); router.push("/login?message=Empresa registrada com sucesso! Faça login com seu email e a senha padrão: ChangeMe123!"); } catch (error: any) { console.error("Registration error:", error); setErrorMsg(error.message || t("register.company.form.errors.generic")); } finally { setLoading(false); } }; const nextStep = () => { if (currentStep < 3) setCurrentStep(currentStep + 1); }; const prevStep = () => { if (currentStep > 1) setCurrentStep(currentStep - 1); }; const stepVariants = { hidden: { opacity: 0, x: 20 }, visible: { opacity: 1, x: 0 }, exit: { opacity: 0, x: -20 } }; return (
{/* Left Panel - Information */}
GoHorse Jobs

{t("register.company.title")}

{t("register.company.subtitle")}

{t("register.company.bullets.free")}
{t("register.company.bullets.candidates")}
{t("register.company.bullets.tools")}
{t("register.company.bullets.dashboard")}
{/* Right Panel - Form */}
{/* Header */}
{t("register.company.form.actions.backLogin")}

{t("register.company.form.title")}

{t("register.company.form.subtitle")}

{/* Progress Indicator */}
{t("register.company.form.steps.step", { current: currentStep, total: 3 })} {currentStep === 1 && t("register.company.form.steps.details")} {currentStep === 2 && t("register.company.form.steps.address")} {currentStep === 3 && t("register.company.form.steps.info")}
{/* Step 1: Company details */} {currentStep === 1 && (
{errors.companyName && ( {errors.companyName.message} )}
{errors.cnpj && ( {errors.cnpj.message} )}
{errors.email && ( {errors.email.message} )}
{errors.password && ( {errors.password.message} )}
{errors.confirmPassword && ( {errors.confirmPassword.message} )}
)} {/* Step 2: Address & contact */} {currentStep === 2 && (
{errors.phone && ( {errors.phone.message} )}
{errors.website && ( {errors.website.message} )}
{errors.address && ( {errors.address.message} )}
{errors.city && ( {errors.city.message} )}
{errors.state && ( {errors.state.message} )}
{errors.zipCode && ( {errors.zipCode.message} )}
)} {/* Step 3: Additional information */} {currentStep === 3 && (
{errors.sector && ( {errors.sector.message} )}
{errors.companySize && ( {errors.companySize.message} )}