Add src/app/shop/page.tsx

This commit is contained in:
2026-06-01 14:51:24 +00:00
parent 40bf0099a9
commit cad6ecdaf3

150
src/app/shop/page.tsx Normal file
View File

@@ -0,0 +1,150 @@
"use client";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ProductCardTwo from '@/components/sections/product/ProductCardTwo';
import ContactForm from '@/components/form/ContactForm';
import FooterCard from "@/components/sections/footer/FooterCard";
import ProductCartItem from '@/components/ecommerce/cart/ProductCartItem';
import { ShoppingCart, ShoppingBag, CreditCard } from "lucide-react";
export default function ShopPage() {
// Dummy product data for demonstration
const products = [
{ id: "1", brand: "TechCo", name: "UltraBook Pro (Laptops)", price: "$1200", rating: 4, reviewCount: "150", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/services/service5.webp", imageAlt: "Laptop" },
{ id: "2", brand: "GamerTech", name: "Gaming Desktop Elite (Computers)", price: "$1800", rating: 5, reviewCount: "90", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/services/service1.webp", imageAlt: "Desktop Computer" },
{ id: "3", brand: "NetGear", name: "High-Speed Modem (Network)", price: "$150", rating: 4, reviewCount: "210", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/services/service3.webp", imageAlt: "Modem" },
{ id: "4", brand: "Cisco", name: "Managed Ethernet Switch (Network)", price: "$300", rating: 4, reviewCount: "75", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/services/service4.webp", imageAlt: "Network Switch" },
{ id: "5", brand: "StorageMax", name: "2TB External SSD (Storage)", price: "$250", rating: 5, reviewCount: "120", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/services/service2.webp", imageAlt: "External SSD" },
{ id: "6", brand: "POSPlus", name: "All-in-One POS System (POS Equipment)", price: "$900", rating: 4, reviewCount: "50", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/phone/phone1.webp", imageAlt: "POS Terminal" },
{ id: "7", brand: "AccessoryPro", name: "Wireless Ergonomic Keyboard (Accessories)", price: "$75", rating: 4, reviewCount: "300", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/phone/phone2.webp", imageAlt: "Keyboard" }
];
// Dummy cart items for demonstration
const cartItems = [
{ id: "1", name: "UltraBook Pro", price: "$1200", quantity: 1, imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/services/service5.webp" },
{ id: "3", name: "High-Speed Modem", price: "$150", quantity: 2, imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/services/service3.webp" }
];
const onQuantityChange = (id: string, quantity: number) => {
console.log(`Changed quantity of item ${id} to ${quantity}`);
// In a real app, update state here
};
const onRemove = (id: string) => {
console.log(`Removed item ${id} from cart`);
// In a real app, update state here
};
const navItems = [
{ name: "About", id: "about" },
{ name: "Services", id: "services" },
{ name: "Destinations", id: "destinations" },
{ name: "Reviews", id: "reviews" },
{ name: "Contact", id: "contact" },
{ name: "Shop", href: "/shop" }
];
return (
<ThemeProvider
defaultButtonVariant="icon-arrow"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="shadow"
secondaryButtonStyle="solid"
headingFontWeight="medium"
>
<ReactLenis root>
<NavbarLayoutFloatingInline
navItems={navItems}
brandName="Luxuria"
button={{ text: "Plan Your Trip", href: "#contact" }}
/>
<div id="shop-products" data-section="shop-products">
<ProductCardTwo
tag="Shop Now"
tagIcon={ShoppingBag}
title="Our Product Catalog"
description="Explore our wide range of electronics, network equipment, and accessories. Use advanced search and filters to find your perfect product, categorized for easy browsing."
textboxLayout="default"
animationType="slide-up"
gridVariant="three-columns-all-equal-width"
uniformGridCustomHeightClasses="h-auto"
useInvertedBackground={false}
products={products}
className="py-20"
/>
</div>
<div id="shopping-cart" data-section="shopping-cart" className="py-20 bg-background-accent">
<div className="container mx-auto px-4 md:px-6 lg:px-8">
<div className="text-center mb-12">
<span className="inline-flex items-center gap-2 px-3 py-1 rounded-full text-sm font-medium bg-primary-cta text-white">
<ShoppingCart size={16} /> Shopping Cart
</span>
<h2 className="text-4xl font-semibold mt-4 text-foreground">Your Order Summary</h2>
<p className="mt-2 text-muted-foreground max-w-2xl mx-auto">Review your selected items before proceeding to checkout.</p>
</div>
<div className="grid gap-6 max-w-3xl mx-auto">
{cartItems.map((item) => (
<ProductCartItem
key={item.id}
item={item}
onQuantityChange={onQuantityChange}
onRemove={onRemove}
/>
))}
</div>
<div className="max-w-3xl mx-auto mt-8 p-6 bg-card rounded-lg shadow-lg flex justify-between items-center text-foreground">
<span className="text-xl font-semibold">Total:</span>
<span className="text-2xl font-bold">$1500</span>
</div>
</div>
</div>
<div id="checkout" data-section="checkout">
<ContactForm
tag="Payment Gateway"
tagIcon={CreditCard}
title="Secure Checkout & Quick Order"
description="Complete your purchase securely or place a quick order. We support various online payment methods to ensure a smooth transaction."
useInvertedBackground={false}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/luxury-travel-agency/contact/contact1.webp"
imageAlt="Online Payment"
mediaPosition="right"
mediaAnimation="slide-up"
buttonText="Proceed to Payment"
inputs={[
{ name: "name", type: "text", placeholder: "Full Name", required: true },
{ name: "email", type: "email", placeholder: "Email Address", required: true },
{ name: "address", type: "text", placeholder: "Shipping Address", required: true },
{ name: "city", type: "text", placeholder: "City", required: true },
{ name: "zip", type: "text", placeholder: "Zip Code", required: true },
{ name: "payment", type: "select", placeholder: "Payment Method", options: ["Credit Card", "PayPal", "Bank Transfer"], required: true }
]}
textarea={{
name: "notes", placeholder: "Any special delivery instructions or order notes...", rows: 3
}}
className="py-20"
/>
</div>
<FooterCard
logoText="Luxuria Tech"
copyrightText="© 2025 Luxuria Tech | All Rights Reserved"
socialLinks={[
{ icon: Instagram, href: "#", ariaLabel: "Instagram" },
{ icon: Facebook, href: "#", ariaLabel: "Facebook" },
{ icon: Linkedin, href: "#", ariaLabel: "LinkedIn" }
]}
/>
</ReactLenis>
</ThemeProvider>
);
}