Files
mes-budgets-participatifs/src/components/DeleteCampaignModal.tsx
Yannick Le Duc dc388bf371 refactoring majeur (code dupliqué, mort, ...)
- Économie : ~1240 lignes de code dupliqué
- Réduction : ~60% du code modal
- Amélioration : Cohérence et maintenabilité
2025-08-27 12:45:37 +02:00

44 lines
1.4 KiB
TypeScript

'use client';
import { campaignService } from '@/lib/services';
import { Campaign } from '@/types';
import { DeleteModal } from './base/DeleteModal';
import { MarkdownContent } from './MarkdownContent';
interface DeleteCampaignModalProps {
isOpen: boolean;
onClose: () => void;
onSuccess: () => void;
campaign: Campaign | null;
}
export default function DeleteCampaignModal({ isOpen, onClose, onSuccess, campaign }: DeleteCampaignModalProps) {
if (!campaign) return null;
const handleDelete = async () => {
await campaignService.delete(campaign.id);
onSuccess();
};
return (
<DeleteModal
isOpen={isOpen}
onClose={onClose}
onConfirm={handleDelete}
title="Supprimer la campagne"
description="Cette action est irréversible. Toutes les données associées à cette campagne seront définitivement supprimées."
itemName="Campagne"
itemDetails={
<>
<p className="text-sm text-slate-600 dark:text-slate-300">
<strong>Titre :</strong> {campaign.title}
</p>
<p className="text-sm text-slate-600 dark:text-slate-300">
<strong>Description :</strong> <MarkdownContent content={campaign.description} />
</p>
</>
}
warningMessage="Cette action supprimera également toutes les propositions et participants associés à cette campagne."
/>
);
}