'use client' import { useActionState } from 'react' import { RelationMultiSelect, type RelationOption } from '@/components/campaign/RelationMultiSelect' import { Alert, AlertDescription } from '@/components/ui/Alert' import { Button } from '@/components/ui/button' import { Field, FieldError, FieldLabel } from '@/components/ui/field' import { Input } from '@/components/ui/input' import { NativeSelect, NativeSelectOption } from '@/components/ui/native-select' import { Spinner } from '@/components/ui/Spinner' import { Textarea } from '@/components/ui/textarea' import { leadershipSectors, leadershipSupportStatuses } from '@/lib/schemas/leadership' import type { CampaignFormActionState } from '@/utilities/campaignFormActionError' import { fieldError } from '@/utilities/campaignFormFields' const sectorLabels: Record<(typeof leadershipSectors)[number], string> = { religioso: 'Religioso', sindical: 'Sindical', comunitario: 'Comunitário', rural: 'Rural', empresarial: 'Empresarial', juventude: 'Juventude', saude: 'Saúde', educacao: 'Educação', cultura: 'Cultura', outro: 'Outro', } const supportStatusLabels: Record<(typeof leadershipSupportStatuses)[number], string> = { engajado: 'Engajado', a_abordar: 'A abordar', em_disputa: 'Em disputa', negativo: 'Negativo', } type LeadershipFormProps = { municipalityOptions: RelationOption[] organizationOptions: RelationOption[] stateDeputyOptions: RelationOption[] initialMunicipalityIDs: number[] formAction: ( state: CampaignFormActionState, formData: FormData, ) => Promise } export const LeadershipForm = ({ municipalityOptions, organizationOptions, stateDeputyOptions, initialMunicipalityIDs, formAction, }: LeadershipFormProps) => { const [state, submitAction, isPending] = useActionState(formAction, {}) return (
Nome completo {fieldError(state.fieldErrors, 'name') ? ( {fieldError(state.fieldErrors, 'name')} ) : null}
Celular (com DDD) {fieldError(state.fieldErrors, 'phone') ? ( {fieldError(state.fieldErrors, 'phone')} ) : null} E-mail (opcional) {fieldError(state.fieldErrors, 'email') ? ( {fieldError(state.fieldErrors, 'email')} ) : null}
Setor Não informado {leadershipSectors.map((sector) => ( {sectorLabels[sector]} ))} Status de apoio {leadershipSupportStatuses.map((status) => ( {supportStatusLabels[status]} ))}
Observações internas