163 lines
4.4 KiB
TypeScript
163 lines
4.4 KiB
TypeScript
"use client";
|
|
import { Container } from "@/components/container";
|
|
import { Heading } from "@/components/heading";
|
|
import { ProductCard } from "@/components/product-card";
|
|
import { Footer } from "@/components/footer";
|
|
import { Button } from "@/components/ui/button";
|
|
import { useState } from "react";
|
|
|
|
const allProducts = [
|
|
{
|
|
id: "1",
|
|
name: "Modern Velvet Sofa",
|
|
price: 899,
|
|
originalPrice: 1299,
|
|
image: "https://images.unsplash.com/photo-1555041469-a586c61ea9bc?w=600&q=80",
|
|
category: "Living Room",
|
|
isSale: true,
|
|
},
|
|
{
|
|
id: "2",
|
|
name: "Scandinavian Dining Table",
|
|
price: 649,
|
|
image: "https://images.unsplash.com/photo-1617806118233-18e1de247200?w=600&q=80",
|
|
category: "Dining Room",
|
|
isNew: true,
|
|
},
|
|
{
|
|
id: "3",
|
|
name: "Luxury King Bed Frame",
|
|
price: 1199,
|
|
originalPrice: 1499,
|
|
image: "https://images.unsplash.com/photo-1505693416388-ac5ce068fe85?w=600&q=80",
|
|
category: "Bedroom",
|
|
isSale: true,
|
|
},
|
|
{
|
|
id: "4",
|
|
name: "Ergonomic Office Chair",
|
|
price: 349,
|
|
image: "https://images.unsplash.com/photo-1580480055273-228ff5388ef8?w=600&q=80",
|
|
category: "Office",
|
|
isNew: true,
|
|
},
|
|
{
|
|
id: "5",
|
|
name: "Minimalist Coffee Table",
|
|
price: 299,
|
|
image: "https://images.unsplash.com/photo-1532372320572-cda25653a26d?w=600&q=80",
|
|
category: "Living Room",
|
|
},
|
|
{
|
|
id: "6",
|
|
name: "Leather Recliner",
|
|
price: 799,
|
|
originalPrice: 999,
|
|
image: "https://images.unsplash.com/photo-1567538096630-e0c55bd6374c?w=600&q=80",
|
|
category: "Living Room",
|
|
isSale: true,
|
|
},
|
|
{
|
|
id: "7",
|
|
name: "Oak Bookshelf",
|
|
price: 449,
|
|
image: "https://images.unsplash.com/photo-1594620302200-9a762244a156?w=600&q=80",
|
|
category: "Storage",
|
|
isNew: true,
|
|
},
|
|
{
|
|
id: "8",
|
|
name: "Upholstered Dining Chairs (Set of 4)",
|
|
price: 599,
|
|
image: "https://images.unsplash.com/photo-1503602642458-232111445657?w=600&q=80",
|
|
category: "Dining Room",
|
|
},
|
|
{
|
|
id: "9",
|
|
name: "Platform Bed with Storage",
|
|
price: 899,
|
|
image: "https://images.unsplash.com/photo-1540574163026-643ea20ade25?w=600&q=80",
|
|
category: "Bedroom",
|
|
},
|
|
{
|
|
id: "10",
|
|
name: "Standing Desk",
|
|
price: 549,
|
|
originalPrice: 699,
|
|
image: "https://images.unsplash.com/photo-1595515106969-1ce29566ff1c?w=600&q=80",
|
|
category: "Office",
|
|
isSale: true,
|
|
},
|
|
{
|
|
id: "11",
|
|
name: "Outdoor Patio Set",
|
|
price: 1299,
|
|
image: "https://images.unsplash.com/photo-1600210492486-724fe5c67fb0?w=600&q=80",
|
|
category: "Outdoor",
|
|
isNew: true,
|
|
},
|
|
{
|
|
id: "12",
|
|
name: "Accent Armchair",
|
|
price: 399,
|
|
image: "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=600&q=80",
|
|
category: "Living Room",
|
|
},
|
|
];
|
|
|
|
const categories = ["All", "Living Room", "Bedroom", "Dining Room", "Office", "Outdoor", "Storage"];
|
|
|
|
export default function ShopPage() {
|
|
const [selectedCategory, setSelectedCategory] = useState("All");
|
|
|
|
const filteredProducts = selectedCategory === "All"
|
|
? allProducts
|
|
: allProducts.filter(p => p.category === selectedCategory);
|
|
|
|
return (
|
|
<>
|
|
<section className="py-12 border-b">
|
|
<Container>
|
|
<Heading className="mb-2">Shop All Furniture</Heading>
|
|
<p className="text-neutral-600 dark:text-neutral-400">
|
|
Discover our complete collection of premium furniture
|
|
</p>
|
|
</Container>
|
|
</section>
|
|
|
|
<section className="py-12">
|
|
<Container>
|
|
{/* Category Filter */}
|
|
<div className="flex flex-wrap gap-2 mb-8">
|
|
{categories.map((category) => (
|
|
<Button
|
|
key={category}
|
|
variant={selectedCategory === category ? "default" : "outline"}
|
|
onClick={() => setSelectedCategory(category)}
|
|
>
|
|
{category}
|
|
</Button>
|
|
))}
|
|
</div>
|
|
|
|
{/* Products Grid */}
|
|
<div className="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-6">
|
|
{filteredProducts.map((product) => (
|
|
<ProductCard key={product.id} {...product} />
|
|
))}
|
|
</div>
|
|
|
|
{/* Load More */}
|
|
<div className="text-center mt-12">
|
|
<Button variant="outline" size="lg">
|
|
Load More Products
|
|
</Button>
|
|
</div>
|
|
</Container>
|
|
</section>
|
|
|
|
<Footer />
|
|
</>
|
|
);
|
|
}
|