"use client" import { useEffect, useState } from "react" import { Loader2, PlusCircle } from "lucide-react" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Textarea } from "@/components/ui/textarea" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { adminCompaniesApi, jobsApi, type AdminCompany, type CreateJobPayload } from "@/lib/api" export default function DashboardNewJobPage() { const [loading, setLoading] = useState(false) const [loadingCompanies, setLoadingCompanies] = useState(true) const [companies, setCompanies] = useState([]) const [formData, setFormData] = useState({ title: "", description: "", location: "", salaryMin: "", salaryMax: "", salaryType: "monthly", currency: "BRL", employmentType: "", workingHours: "", companyId: "", }) useEffect(() => { const loadCompanies = async () => { try { setLoadingCompanies(true) const data = await adminCompaniesApi.list(undefined, 1, 100) setCompanies(data.data ?? []) } catch (error) { console.error("Falha ao carregar empresas:", error) toast.error("Falha ao carregar empresas") } finally { setLoadingCompanies(false) } } loadCompanies() }, []) const canSubmit = formData.title.trim().length >= 5 && formData.description.trim().length >= 20 && formData.companyId !== "" const handleInputChange = (field: string, value: string) => { setFormData((prev) => ({ ...prev, [field]: value })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!canSubmit) { toast.error("Preencha os campos obrigatórios") return } setLoading(true) try { const payload: CreateJobPayload = { companyId: formData.companyId, title: formData.title, description: formData.description, location: formData.location || undefined, employmentType: (formData.employmentType as CreateJobPayload["employmentType"]) || undefined, salaryMin: formData.salaryMin ? parseFloat(formData.salaryMin) : undefined, salaryMax: formData.salaryMax ? parseFloat(formData.salaryMax) : undefined, salaryType: (formData.salaryType as CreateJobPayload["salaryType"]) || undefined, currency: (formData.currency as CreateJobPayload["currency"]) || undefined, workingHours: formData.workingHours || undefined, status: "draft", } await jobsApi.create(payload) toast.success("Vaga cadastrada no dashboard com sucesso") setFormData({ title: "", description: "", location: "", salaryMin: "", salaryMax: "", salaryType: "monthly", currency: "BRL", employmentType: "", workingHours: "", companyId: "", }) } catch (error: any) { console.error("Falha ao cadastrar vaga:", error) toast.error(error.message || "Falha ao cadastrar vaga") } finally { setLoading(false) } } return (

Nova vaga

Cadastre vagas usando o padrão visual do dashboard.

Dados da vaga Informe os detalhes obrigatórios para criar a vaga em rascunho.
handleInputChange("title", e.target.value)} />