import React, { useState } from 'react'; import { PlusCircle, Edit3, Trash2, ShoppingBag, Image as ImageIcon } from 'lucide-react'; import { Offer, OfferType } from '../../types'; import { MOCK_OFFERS } from '../../services/mockData'; const DashboardOffers = () => { const [offers, setOffers] = useState(MOCK_OFFERS); const [isModalOpen, setIsModalOpen] = useState(false); const [currentOffer, setCurrentOffer] = useState>({ title: '', price: 0, currency: 'XOF', type: OfferType.SERVICE }); const handleDelete = (id: string) => { if (window.confirm("Voulez-vous vraiment supprimer cette offre ?")) { setOffers(offers.filter(o => o.id !== id)); } }; const handleEdit = (offer: Offer) => { setCurrentOffer(offer); setIsModalOpen(true); }; const openAddModal = () => { setCurrentOffer({ title: '', price: 0, currency: 'XOF', type: OfferType.SERVICE }); setIsModalOpen(true); }; const handleSave = (e: React.FormEvent) => { e.preventDefault(); if (currentOffer.id) { // Edit mode setOffers(offers.map(o => o.id === currentOffer.id ? { ...o, ...currentOffer } as Offer : o)); } else { // Add mode const offer: Offer = { id: Date.now().toString(), businessId: '1', title: currentOffer.title || 'Nouvelle offre', type: currentOffer.type || OfferType.PRODUCT, price: currentOffer.price || 0, currency: currentOffer.currency as 'EUR'|'XOF', imageUrl: currentOffer.imageUrl || 'https://picsum.photos/300/200?random=' + Date.now(), active: true }; setOffers([...offers, offer]); } setIsModalOpen(false); }; return (

Mes Offres

{/* List View */} {offers.length > 0 ? (
{offers.map(offer => (
{offer.title}
{offer.type === OfferType.PRODUCT ? 'Produit' : 'Service'}

{offer.title}

{new Intl.NumberFormat('fr-FR').format(offer.price)} {offer.currency}

{offer.active ? 'Actif' : 'Inactif'}
))}
) : (

Aucune offre

Commencez à vendre vos produits ou services.

)} {/* Modal / Drawer */} {isModalOpen && (
setCurrentOffer({...currentOffer, title: e.target.value})} placeholder="Ex: Savon Karité Bio" />
setCurrentOffer({...currentOffer, price: parseInt(e.target.value)})} />

PNG, JPG jusqu'à 5MB

)}
); }; export default DashboardOffers;