'use client'; import { useState, useTransition } from 'react'; import { countDays } from '@/lib/schedule/vacations'; import { createVacation, deleteVacation } from './actions'; export type VacationRow = { id: string; startDate: string; endDate: string; labelFr: string; labelEn: string | null; isCurrent: boolean; }; export default function VacationManager({ canEdit, periods, }: { canEdit: boolean; periods: VacationRow[]; }) { const [startDate, setStartDate] = useState(''); const [endDate, setEndDate] = useState(''); const [labelFr, setLabelFr] = useState(''); const [pending, startTransition] = useTransition(); const [message, setMessage] = useState<{ kind: 'ok' | 'error'; text: string } | null>(null); function run(work: () => Promise<{ ok: true } | { ok: false; error: string }>, success: string) { setMessage(null); startTransition(async () => { const result = await work(); if (result.ok) { setMessage({ kind: 'ok', text: success }); setStartDate(''); setEndDate(''); setLabelFr(''); } else { setMessage({ kind: 'error', text: result.error }); } }); } return (
{message ? (

{message.text}

) : null} {canEdit ? (

Nouvelle période de fermeture

{startDate && endDate && startDate <= endDate ? (

{countDays({ startDate, endDate })} jour {countDays({ startDate, endDate }) > 1 ? 's' : ''} de fermeture.

) : null}
) : null}

Périodes enregistrées

{periods.length === 0 ? (

Aucune fermeture prévue.

) : ( )}
); }