import React, { useState } from 'react';
import { Helmet } from 'react-helmet';
import { Plus } from 'lucide-react';
import KanbanBoard from '@/components/KanbanBoard';
import PrimaryButton from '@/components/PrimaryButton';
import SmartForm from '@/components/SmartForm';
import FormModal from '@/components/FormModal';
import { mockOpportunities } from '@/data/mockData';
import { z } from 'zod';
import { toast } from '@/components/ui/use-toast';
const opportunitySchema = z.object({
name: z.string().min(3, "Le nom est requis"),
clientId: z.string().min(1, "Le client est requis"),
amount: z.string().min(1, "Le montant est requis"),
stage: z.string().min(1, "L'étape est requise"),
probability: z.string().optional(),
closeDate: z.string().min(1, "Date requise"),
description: z.string().optional()
});
const OpportunitiesPage = () => {
const [items, setItems] = useState(mockOpportunities);
const [isModalOpen, setIsModalOpen] = useState(false);
const columns = [
{ id: 'new', title: 'Nouveau' },
{ id: 'qualification', title: 'Qualification' },
{ id: 'proposal', title: 'Proposition' },
{ id: 'negotiation', title: 'Négociation' },
{ id: 'won', title: 'Gagné' },
{ id: 'lost', title: 'Perdu' }
];
const handleDragEnd = (result) => {
if (!result.destination) return;
const { source, destination, draggableId } = result;
if (source.droppableId === destination.droppableId) return;
const newItems = items.map(item =>
item.id.toString() === draggableId
? { ...item, stage: destination.droppableId }
: item
);
setItems(newItems);
toast({
title: "Étape mise à jour",
description: "L'opportunité a changé d'étape avec succès.",
});
};
const handleCreate = (data) => {
// Simulation
const newOpp = {
id: Math.random(),
...data,
amount: parseFloat(data.amount),
probability: parseInt(data.probability) || 0,
client: "Client Simulé", // In real app, lookup client name
owner: "Jean Dupont"
};
setItems([...items, newOpp]);
setIsModalOpen(false);
toast({ title: "Opportunité créée", description: `${data.name} a été ajouté au pipeline.` });
};
return (
<>