import React, { useState, useMemo } from 'react'; import { ShoppingCart, Trash2, Plus, Minus, X, Search, Heart, Star, Send, Instagram, Facebook, Twitter, Phone, Mail, MapPin, Zap } from 'lucide-react'; const PRODUCTS = [ { id: 1, name: "Premium Headphones", price: 2500000, category: "Elektronik", stock: 12, rating: 4.8, image: "https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=800&q=80", desc: "Suara studio, ANC, baterai 40 jam." }, { id: 2, name: "RGB Keyboard", price: 1200000, category: "Elektronik", stock: 5, rating: 4.9, image: "https://images.unsplash.com/photo-1511467687858-23d96c32e4ae?w=800&q=80", desc: "Mechanical switch premium." }, { id: 3, name: "Leather Backpack", price: 850000, category: "Fashion", stock: 20, rating: 4.7, image: "https://images.unsplash.com/photo-1548036328-c9fa89d128fa?w=800&q=80", desc: "Kulit asli, desain minimalis." }, { id: 4, name: "Smartwatch X", price: 3400000, category: "Elektronik", stock: 8, rating: 4.6, image: "https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=800&q=80", desc: "Layar AMOLED, tahan air." } ]; const App = () => { const [cart, setCart] = useState([]); const [wishlist, setWishlist] = useState([]); const [activeTab, setActiveTab] = useState('home'); const [search, setSearch] = useState(""); const [selected, setSelected] = useState(null); const [isCartOpen, setIsCartOpen] = useState(false); const formatIDR = (n) => new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', maximumFractionDigits: 0 }).format(n); const filtered = useMemo(() => PRODUCTS.filter(p => p.name.toLowerCase().includes(search.toLowerCase())), [search]); const cartTotal = cart.reduce((a, b) => a + (b.price * b.qty), 0); const cartCount = cart.reduce((a, b) => a + b.qty, 0); const toggleCart = (p) => { setCart(prev => { const exists = prev.find(i => i.id === p.id); return exists ? prev.map(i => i.id === p.id ? {...i, qty: i.qty + 1} : i) : [...prev, {...p, qty: 1}]; }); }; const handleWA = () => { const msg = encodeURIComponent(`Halo AlfiahStore, saya pesan:\n${cart.map(i => `- ${i.name} (${i.qty}x)`).join('\n')}\nTotal: ${formatIDR(cartTotal)}`); window.open(`https://wa.me/6588494861?text=${msg}`); }; const Card = ({ p }) => (
setSelected(p)} />

{p.name}

{formatIDR(p.price)}

); return (
{/* Navbar */}
{activeTab === 'home' ? ( <>
Flash Sale!

Gaya Hidup Premium.

Kurasi produk terbaik untuk melengkapi hari-hari Anda.

{filtered.map(p => )}
) : (

Wishlist Saya

{wishlist.length === 0 ?

Kosong.

: (
{PRODUCTS.filter(p => wishlist.includes(p.id)).map(p => )}
)}
)}
{/* Footer */} {/* Cart Sidebar */} {isCartOpen && (
setIsCartOpen(false)} />

Keranjang

{cart.map(i => (

{i.name}

{formatIDR(i.price)}

{i.qty}
))}
Total:{formatIDR(cartTotal)}
)} {/* Modal Detail */} {selected && (

{selected.name}

{selected.desc}

{formatIDR(selected.price)}
)}
); }; export default App;