'use client'; import { useActionState } from 'react'; import { Button } from '@/components/ui/Button'; import { requestTimeOffAction, type AbsenceActionState, } from '@/server/absences/actions'; const empty: AbsenceActionState = {}; /** * Demande d'absence. * * Le libellé du champ de fin dit **« dernier jour d'absence »** et non « date * de fin ». C'est la confusion la plus fréquente du domaine : elle décompte un * jour de trop ou de trop peu à chaque demande, et le salarié s'en aperçoit au * solde, des mois plus tard. Un libellé exact coûte moins qu'une régularisation. */ export function RequestForm({ absenceTypes, people, ownMembershipId, }: { absenceTypes: Array<{ id: string; code: string; name: string }>; people: Array<{ membershipId: string; name: string }>; ownMembershipId: string; }) { const [state, formAction, pending] = useActionState( requestTimeOffAction, empty, ); return (
); } function Field({ label, htmlFor, children, }: { label: string; htmlFor: string; children: React.ReactNode; }) { return (