"use client"; import { Suspense, useState, useEffect, startTransition } from "react"; import { useLanguage } from "@/contexts/LanguageContext"; import { useSearchParams, useRouter } from "next/navigation"; import { categories } from "@/data/products"; import type { Product } from "@/data/products"; import { listProducts } from "@/lib/api/products"; import ProductCard from "@/components/ProductCard"; function ShopContent() { const { t } = useLanguage(); const searchParams = useSearchParams(); const router = useRouter(); const selectedCategory = searchParams.get("category") || "all"; const [products, setProducts] = useState([]); const [loading, setLoading] = useState(true); const setCategory = (cat: string) => { router.push(cat === "all" ? "/boutique" : `/boutique?category=${cat}`); }; useEffect(() => { startTransition(() => setLoading(true)); listProducts({ per_page: 100, category: selectedCategory === "all" ? undefined : selectedCategory, }) .then((res) => setProducts(res.data)) .catch((e) => { console.error("[boutique] listProducts failed:", e); setProducts([]); }) .finally(() => setLoading(false)); }, [selectedCategory]); return (

{t("shop.title")}

{categories.map((cat) => ( ))}
{loading ? (
{Array.from({ length: 8 }).map((_, i) => (
))}
) : products.length === 0 ? (

{t("shop.no_products")}

) : (
{products.map((product) => ( ))}
)}
); } export default function Shop() { return ( ); }