"use client"; import React, { useContext, useState, ReactNode, createContext } from "react"; import { Product, products } from "@/data/products"; export interface Reservation { id: string; clientName: string; email: string; phone: string; service: string; date: string; time: string; status: "pending" | "confirmed" | "cancelled"; createdAt: string; } const initialReservations: Reservation[] = [ { id: "r1", clientName: "Marie Dupont", email: "marie@example.com", phone: "+33 6 12 34 56 78", service: "Pose complète", date: "2026-04-22", time: "10:00", status: "confirmed", createdAt: "2026-04-15" }, { id: "r2", clientName: "Sophie Laurent", email: "sophie@example.com", phone: "+33 6 98 76 54 32", service: "Conseil personnalisé", date: "2026-04-23", time: "14:30", status: "pending", createdAt: "2026-04-16" }, { id: "r3", clientName: "Amira Benali", email: "amira@example.com", phone: "+33 7 11 22 33 44", service: "Retouche", date: "2026-04-25", time: "11:00", status: "confirmed", createdAt: "2026-04-17" }, { id: "r4", clientName: "Léa Martin", email: "lea@example.com", phone: "+33 6 55 44 33 22", service: "Pose complète", date: "2026-04-28", time: "15:00", status: "pending", createdAt: "2026-04-17" }, ]; interface AdminContextType { isAdmin: boolean; login: (password: string) => boolean; logout: () => void; products: Product[]; addProduct: (product: Omit) => void; updateProduct: (id: string, product: Partial) => void; deleteProduct: (id: string) => void; reservations: Reservation[]; updateReservationStatus: (id: string, status: Reservation["status"]) => void; deleteReservation: (id: string) => void; } const AdminContext = createContext(undefined); const ADMIN_PASSWORD = "admin123"; export const AdminProvider = ({ children }: { children: ReactNode }) => { const [isAdmin, setIsAdmin] = useState(false); const [productList, setProducts] = useState(products); const [reservations, setReservations] = useState(initialReservations); const login = (password: string) => { if (password === ADMIN_PASSWORD) { setIsAdmin(true); return true; } return false; }; const logout = () => setIsAdmin(false); const addProduct = (product: Omit) => { const newProduct: Product = { ...product, id: `p-${Date.now()}` }; setProducts((prev) => [newProduct, ...prev]); }; const updateProduct = (id: string, updates: Partial) => { setProducts((prev) => prev.map((p) => (p.id === id ? { ...p, ...updates } : p))); }; const deleteProduct = (id: string) => { setProducts((prev) => prev.filter((p) => p.id !== id)); }; const updateReservationStatus = (id: string, status: Reservation["status"]) => { setReservations((prev) => prev.map((r) => (r.id === id ? { ...r, status } : r))); }; const deleteReservation = (id: string) => { setReservations((prev) => prev.filter((r) => r.id !== id)); }; return ( {children} ); }; export const useAdmin = () => { const ctx = useContext(AdminContext); if (!ctx) throw new Error("useAdmin must be used within AdminProvider"); return ctx; };