import React, { useState, createContext, useContext } from 'react';
import {
ShoppingCart, User, Home, Heart, SendHorizontal, Trash2, Plus, Minus, Settings, ShoppingBag, ChevronRight, CheckCircle, Flame, Gift,
LayoutDashboard, Package, ClipboardList, Users, Link as LinkIcon
} from 'lucide-react';
// App Context for cart, user, and products
const AppContext = createContext();
// Initial product data
const initialProducts = [
{
id: 1,
name: 'Nike Air Jordan 1 Retro High OG',
brand: 'Nike',
price: 250000.00,
image: 'https://images.unsplash.com/photo-1549298916-b84742466b02?q=80&w=2000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
description: 'Une sneaker emblématique avec un design rétro et des matériaux de qualité supérieure.',
likes: 125,
stock: 5,
label: 'Exclusivité',
sizes: ['40', '41', '42', '43'],
colors: ['rouge', 'noir', 'blanc'],
discount: 20,
},
{
id: 2,
name: 'Veste en cuir premium',
brand: 'Luxury Apparel',
price: 1200000.00,
image: 'https://images.unsplash.com/photo-1551028719-00167b16eac5?q=80&w=2000&auto=format&fit=crop&ixlib=rb-4.0.3',
description: 'Veste en cuir véritable, fabriquée à la main. Un classique intemporel, parfait pour toutes les saisons.',
likes: 87,
stock: 10,
sizes: ['S', 'M', 'L', 'XL'],
colors: ['noir', 'marron'],
discount: 0,
},
{
id: 3,
name: 'Casque audio sans fil',
brand: 'Tech Sound',
price: 350000.00,
image: 'https://images.unsplash.com/photo-1484704849700-f032a568e944?q=80&w=2000&auto=format&fit=crop&ixlib=rb-4.0.3',
description: 'Casque audio avec réduction de bruit active et son haute fidélité. Autonomie de 30 heures, pour une immersion totale.',
likes: 210,
stock: 20,
sizes: ['Taille unique'],
colors: ['noir', 'gris', 'blanc'],
discount: 0,
},
{
id: 4,
name: 'Montre connectée "Titan"',
brand: 'Innovate',
price: 599999.00,
image: 'https://images.unsplash.com/photo-1523275335684-37898b6baf30?q=80&w=2000&auto=format&fit=crop&ixlib=rb-4.0.3',
description: 'Montre connectée avec écran AMOLED, suivi de santé avancé et GPS intégré. Un accessoire indispensable pour votre quotidien.',
likes: 156,
stock: 15,
sizes: ['Petit', 'Grand'],
colors: ['argent', 'or', 'noir'],
discount: 0,
},
{
id: 5,
name: 'Sac à dos en toile de luxe',
brand: 'Urban Explorer',
price: 299999.00,
image: 'https://images.unsplash.com/photo-1553062407-98eeb64c6a62?q=80&w=2000&auto=format&fit=crop&ixlib=rb-4.0.3',
description: 'Sac à dos élégant et durable pour les professionnels et les voyageurs. Dispose de nombreux compartiments pour une organisation optimale.',
likes: 72,
stock: 8,
sizes: ['Taille unique'],
colors: ['beige', 'vert militaire', 'bleu marine'],
discount: 0,
}
];
// Global context provider for the app
const AppProvider = ({ children }) => {
const [cart, setCart] = useState([]);
const [user, setUser] = useState(null);
const [products, setProducts] = useState(initialProducts);
const addToCart = (product) => {
setCart(prevCart => {
const existingItem = prevCart.find(item => item.id === product.id);
if (existingItem) {
return prevCart.map(item =>
item.id === product.id ? { ...item, quantity: item.quantity + 1 } : item
);
}
return [...prevCart, { ...product, quantity: 1 }];
});
};
const updateQuantity = (productId, newQuantity) => {
setCart(prevCart => {
if (newQuantity <= 0) {
return prevCart.filter(item => item.id !== productId);
}
return prevCart.map(item =>
item.id === productId ? { ...item, quantity: newQuantity } : item
);
});
};
const removeFromCart = (productId) => {
setCart(prevCart => prevCart.filter(item => item.id !== productId));
};
const toggleLike = (productId) => {
setProducts(prevProducts =>
prevProducts.map(product =>
product.id === productId ? { ...product, likes: product.likes + 1 } : product
)
);
};
const addProduct = (newProduct) => {
const productWithId = { ...newProduct, id: products.length + 1, likes: 0 };
setProducts(prevProducts => [...prevProducts, productWithId]);
};
const updateProductPromotion = (productId, discount) => {
setProducts(prevProducts =>
prevProducts.map(product =>
product.id === productId ? { ...product, discount: parseInt(discount) || 0 } : product
)
);
};
const value = {
cart,
addToCart,
updateQuantity,
removeFromCart,
user,
setUser,
products,
setProducts,
toggleLike,
addProduct,
updateProductPromotion,
};
return
{product.brand}
{product.price.toLocaleString('fr-FR', { style: 'currency', currency: 'XOF' })}
)}{discountedPrice.toLocaleString('fr-FR', { style: 'currency', currency: 'XOF' })}
Jusqu'à 50% de réduction sur une sélection d'articles.
Découvrez notre sélection exclusive. Style et qualité garantis.
Votre panier est vide.
{item.brand}
{item.price.toLocaleString('fr-FR', { style: 'currency', currency: 'XOF' })}
)}{itemPrice.toLocaleString('fr-FR', { style: 'currency', currency: 'XOF' })}