// src/app/boutique/page.tsx import { Suspense } from 'react'; import { Metadata } from 'next'; import { WooCommerceService } from '@/lib/woocommerce'; import ProductGrid from '@/components/product/ProductGrid'; import ProductFilters from '@/components/product/ProductFilters'; import { Button } from '@/components/ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Grid3X3, List, SlidersHorizontal } from 'lucide-react'; export const metadata: Metadata = { title: 'Boutique - Collection complète de Melhfa', description: 'Découvrez notre collection complète de melhfa mauritaniennes. Voiles traditionnels et modernes, accessoires premium et créations artisanales.', openGraph: { title: 'Boutique MELHFA - Collection complète', description: 'Découvrez notre collection complète de melhfa mauritaniennes.', images: ['/images/boutique-og.jpg'], }, }; interface BoutiquePageProps { searchParams: { page?: string; category?: string; filter?: string; sort?: string; search?: string; }; } export default async function BoutiquePage({ searchParams }: BoutiquePageProps): Promise { const page = Number(searchParams.page) || 1; const category = searchParams.category; const filter = searchParams.filter; const sort = searchParams.sort; const search = searchParams.search; // Construire les paramètres pour l'API WooCommerce const apiParams: any = { page, per_page: 20, }; if (category) apiParams.category = category; if (search) apiParams.search = search; if (filter === 'sale') apiParams.on_sale = true; if (filter === 'featured') apiParams.featured = true; if (filter === 'new') { apiParams.orderby = 'date'; apiParams.order = 'desc'; } switch (sort) { case 'price-asc': apiParams.orderby = 'price'; apiParams.order = 'asc'; break; case 'price-desc': apiParams.orderby = 'price'; apiParams.order = 'desc'; break; case 'name-asc': apiParams.orderby = 'title'; apiParams.order = 'asc'; break; case 'name-desc': apiParams.orderby = 'title'; apiParams.order = 'desc'; break; default: apiParams.orderby = 'date'; apiParams.order = 'desc'; } // Récupérer les produits et catégories const [productsResponse, categoriesResponse] = await Promise.all([ WooCommerceService.getProducts(apiParams), WooCommerceService.getCategories(), ]); const products = productsResponse.data || []; const categories = categoriesResponse.data || []; return (
{/* Header de la page */}

{filter === 'sale' && 'Promotions'} {filter === 'featured' && 'Produits Vedettes'} {filter === 'new' && 'Nouvelles Arrivées'} {category && `Catégorie: ${category}`} {search && `Résultats pour: "${search}"`} {!filter && !category && !search && 'Boutique'}

{filter === 'sale' && 'Profitez de nos offres exceptionnelles sur une sélection de melhfa premium'} {filter === 'featured' && 'Découvrez nos créations d\'exception, sélectionnées par nos artisans'} {filter === 'new' && 'Les dernières créations de nos ateliers mauritaniens'} {!filter && !category && !search && 'Découvrez notre collection complète de melhfa mauritaniennes, alliant tradition et modernité'}

{/* Sidebar Filters */} {/* Main Content */}
{/* Toolbar */}
{products.length} produit{products.length > 1 ? 's' : ''} trouvé{products.length > 1 ? 's' : ''}
{/* View Toggle */} {/* Mobile Filters */}
{/* Products Grid */} }> {/* Pagination */} {products.length === 20 && ( )}
); } // Composants de skeleton pour le chargement function FiltersSkeleton(): JSX.Element { return (
{[...Array(5)].map((_, i) => (
))}
{[...Array(4)].map((_, i) => (
))}
); } function ProductGridSkeleton(): JSX.Element { return (
{[...Array(12)].map((_, i) => (
))}
); }