Bob AI: Add products page
This commit is contained in:
@@ -2,11 +2,13 @@ import { Routes, Route } from 'react-router-dom';
|
||||
import Layout from './components/Layout';
|
||||
import HomePage from './pages/HomePage';
|
||||
|
||||
import ProductsPage from "@/pages/ProductsPage";
|
||||
export default function App() {
|
||||
return (
|
||||
<Routes>
|
||||
<Route element={<Layout />}>
|
||||
<Route path="/" element={<HomePage />} />
|
||||
<Route path="/products" element={<ProductsPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
);
|
||||
|
||||
@@ -34,7 +34,9 @@ export default function Layout() {
|
||||
{
|
||||
"name": "Testimonials",
|
||||
"href": "#testimonials"
|
||||
}
|
||||
},
|
||||
{ name: "Products", href: "/products" },
|
||||
|
||||
];
|
||||
|
||||
return (
|
||||
|
||||
117
src/pages/ProductsPage.tsx
Normal file
117
src/pages/ProductsPage.tsx
Normal file
@@ -0,0 +1,117 @@
|
||||
import React from "react";
|
||||
import { routes } from "@/routes";
|
||||
import NavbarCentered from "@/components/ui/NavbarCentered";
|
||||
import HeroSplit from "@/components/sections/hero/HeroSplit";
|
||||
import ProductMediaCards from "@/components/sections/product/ProductMediaCards";
|
||||
import FeaturesIconCards from "@/components/sections/features/FeaturesIconCards";
|
||||
import ContactCta from "@/components/sections/contact/ContactCta";
|
||||
import FooterSimple from "@/components/sections/footer/FooterSimple";
|
||||
|
||||
export default function ProductsPage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-background text-foreground flex flex-col">
|
||||
<NavbarCentered
|
||||
logo="Lumina"
|
||||
navItems={routes.map((r) => ({ name: r.label, href: r.path }))}
|
||||
ctaButton={{ text: "Get Started", href: "/contact" }}
|
||||
/>
|
||||
|
||||
<main className="flex-grow">
|
||||
<HeroSplit
|
||||
tag="New Arrivals"
|
||||
title="Discover Our Premium Collection"
|
||||
description="Explore our latest range of high-quality products designed to elevate your everyday experience with unmatched style and durability."
|
||||
primaryButton={{ text: "Shop Now", href: "#products" }}
|
||||
secondaryButton={{ text: "Learn More", href: "#features" }}
|
||||
imageSrc="https://images.unsplash.com/photo-1491553895911-0055eca6402d?auto=format&fit=crop&q=80"
|
||||
/>
|
||||
|
||||
<div id="products">
|
||||
<ProductMediaCards
|
||||
tag="Our Catalog"
|
||||
title="Featured Products"
|
||||
description="Handpicked items that our customers love. Find the perfect addition to your lifestyle."
|
||||
products={[
|
||||
{
|
||||
name: "Classic Minimalist Watch",
|
||||
price: "$199.00",
|
||||
imageSrc: "https://images.unsplash.com/photo-1523275335684-37898b6baf30?auto=format&fit=crop&q=80",
|
||||
onClick: () => console.log("Clicked Watch")
|
||||
},
|
||||
{
|
||||
name: "Premium Leather Tote",
|
||||
price: "$249.00",
|
||||
imageSrc: "https://images.unsplash.com/photo-1548036328-c9fa89d128fa?auto=format&fit=crop&q=80",
|
||||
onClick: () => console.log("Clicked Bag")
|
||||
},
|
||||
{
|
||||
name: "Polarized Aviator Sunglasses",
|
||||
price: "$129.00",
|
||||
imageSrc: "https://images.unsplash.com/photo-1511499767150-a48a237f0083?auto=format&fit=crop&q=80",
|
||||
onClick: () => console.log("Clicked Sunglasses")
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="features">
|
||||
<FeaturesIconCards
|
||||
tag="Why Choose Us"
|
||||
title="Crafted with Excellence"
|
||||
description="We don't compromise on quality. Every product is built to last and designed to impress."
|
||||
features={[
|
||||
{
|
||||
icon: "✨",
|
||||
title: "Premium Materials",
|
||||
description: "Sourced from the best suppliers globally to ensure longevity and a luxurious feel."
|
||||
},
|
||||
{
|
||||
icon: "🌱",
|
||||
title: "Sustainable Practices",
|
||||
description: "Eco-friendly packaging and ethical production methods you can feel good about."
|
||||
},
|
||||
{
|
||||
icon: "🛡️",
|
||||
title: "Lifetime Warranty",
|
||||
description: "We stand behind our products forever. If it breaks, we fix it or replace it."
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<ContactCta
|
||||
tag="Ready to Upgrade?"
|
||||
text="Join thousands of satisfied customers and experience the Lumina difference today."
|
||||
primaryButton={{ text: "Browse Full Catalog", href: "/products" }}
|
||||
secondaryButton={{ text: "Contact Sales", href: "/contact" }}
|
||||
/>
|
||||
</main>
|
||||
|
||||
<FooterSimple
|
||||
brand="Lumina"
|
||||
columns={[
|
||||
{
|
||||
title: "Shop",
|
||||
items: [
|
||||
{ label: "All Products", href: "/products" },
|
||||
{ label: "New Arrivals", href: "/products" },
|
||||
{ label: "Best Sellers", href: "/products" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Company",
|
||||
items: [
|
||||
{ label: "About Us", href: "/about" },
|
||||
{ label: "Contact", href: "/contact" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyright="© 2024 Lumina Inc. All rights reserved."
|
||||
links={[
|
||||
{ label: "Privacy Policy", href: "#" },
|
||||
{ label: "Terms of Service", href: "#" }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -6,4 +6,5 @@ export interface Route {
|
||||
|
||||
export const routes: Route[] = [
|
||||
{ path: '/', label: 'Home', pageFile: 'HomePage' },
|
||||
{ path: '/products', label: 'Products', pageFile: 'ProductsPage' },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user