Merge version_2 into main

Merge version_2 into main
This commit was merged in pull request #1.
This commit is contained in:
2026-06-10 19:52:14 +00:00
9 changed files with 1172 additions and 3 deletions

211
src/app/bundles/page.tsx Normal file
View File

@@ -0,0 +1,211 @@
"use client";
import { ThemeProvider } from "@/components/theme-provider";
import { NavbarStyleApple } from "@/components/navbar/NavbarStyleApple/NavbarStyleApple";
import { HeroBillboardTestimonial } from "@/components/sections/hero/HeroBillboardTestimonial";
import { FeatureCardTwentyEight } from "@/components/sections/feature/FeatureCardTwentyEight";
import { ProductCardOne } from "@/components/sections/product/ProductCardOne";
import { PricingCardEight } from "@/components/sections/pricing/PricingCardEight";
import { TestimonialCardTen } from "@/components/sections/testimonial/TestimonialCardTen";
import { FaqBase } from "@/components/sections/faq/FaqBase";
import { ContactCenter } from "@/components/sections/contact/ContactCenter";
import { FooterSimple } from "@/components/sections/footer/FooterSimple";
import { Star } from "lucide-react";
export default function BundlesPage() {
return (
<ThemeProvider
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="solid"
headingFontWeight="extrabold"
>
<NavbarStyleApple
navItems={[
{ name: "Home", id: "/components" },
{ name: "Bundles", id: "/bundles" },
{ name: "Promotions", id: "/promotions" }
]}
brandName="Bundles & Kits"
/>
<div id="hero" data-section="hero">
<HeroBillboardTestimonial
title="Unlock Value with Our Exclusive Bundles"
description="Discover curated product packages designed to give you more for less. Boost your productivity, creativity, and savings today!"
background={{ variant: "radial-gradient" }}
testimonials={[
{
name: "Jane Doe", handle: "@janedoe", testimonial: "The productivity bundle transformed my workflow! Highly recommend.", rating: 5,
imageSrc: "https://via.placeholder.com/150?_wi=1"
},
{
name: "John Smith", handle: "@johnsmith", testimonial: "Great value, fantastic products. My go-to for software needs.", rating: 5,
imageSrc: "https://via.placeholder.com/150?_wi=1"
}
]}
buttons={[
{ text: "Explore Bundles", href: "#products" },
{ text: "Contact Sales", href: "#contact" }
]}
imageSrc="https://via.placeholder.com/1024x768/0000FF/FFFFFF?text=Bundle+Offer?_wi=1"
imageAlt="Product bundles illustration"
mediaAnimation="opacity"
tag="New"
tagIcon={Star}
/>
</div>
<div id="features" data-section="features">
<FeatureCardTwentyEight
title="Why Choose Our Bundles?"
description="Each bundle is thoughtfully assembled to provide maximum benefit and unbeatable value."
features={[
{ id: "1", title: "Cost Savings", subtitle: "Save more when you buy together.", category: "Value", value: "Up to 30% Off" },
{ id: "2", title: "Convenience", subtitle: "All essentials in one purchase.", category: "Efficiency", value: "Hassle-Free" },
{ id: "3", title: "Enhanced Experience", subtitle: "Complementary products for best results.", category: "Quality", value: "Seamless Integration" },
{ id: "4", title: "Exclusive Access", subtitle: "Get features only available in bundles.", category: "Premium", value: "Unique Content" }
]}
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
tag="Benefits"
/>
</div>
<div id="products" data-section="products">
<ProductCardOne
title="Featured Product Bundles"
description="Browse our most popular product combinations."
products={[
{
id: "bundle-1", name: "Creator's Starter Kit", price: "$199", imageSrc: "https://via.placeholder.com/400x300/FF0000/FFFFFF?text=Creator+Bundle?_wi=1", imageAlt: "Creator's Starter Kit"
},
{
id: "bundle-2", name: "Developer's Essential Pack", price: "$249", imageSrc: "https://via.placeholder.com/400x300/00FF00/FFFFFF?text=Developer+Bundle?_wi=1", imageAlt: "Developer's Essential Pack"
},
{
id: "bundle-3", name: "Designer's Pro Toolbox", price: "$179", imageSrc: "https://via.placeholder.com/400x300/0000FF/FFFFFF?text=Designer+Bundle?_wi=1", imageAlt: "Designer's Pro Toolbox"
}
]}
gridVariant="three-columns-all-equal-width"
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={true}
tag="Popular"
/>
</div>
<div id="pricing" data-section="pricing">
<PricingCardEight
title="Simple & Flexible Bundle Pricing"
description="Choose the plan that best fits your needs and budget."
plans={[
{
id: "basic-bundle", badge: "Starter", price: "$99/month", subtitle: "For individuals and small teams.", buttons: [{ text: "Get Started", href: "#contact" }],
features: ["2 Products", "Basic Support", "Community Access"]
},
{
id: "pro-bundle", badge: "Pro", badgeIcon: Star,
price: "$249/month", subtitle: "Designed for growing businesses.", buttons: [{ text: "Choose Pro", href: "#contact" }],
features: ["5 Products", "Priority Support", "Advanced Analytics"]
},
{
id: "enterprise-bundle", badge: "Enterprise", price: "Custom", subtitle: "Tailored for large organizations.", buttons: [{ text: "Contact Us", href: "#contact" }],
features: ["Unlimited Products", "Dedicated Account Manager", "Custom Integrations"]
}
]}
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
tag="Plans"
/>
</div>
<div id="testimonials" data-section="testimonials">
<TestimonialCardTen
title="What Our Customers Say"
description="Hear from satisfied customers who've experienced the power of our bundles."
testimonials={[
{
id: "test-1", title: "Exceptional Value!", quote: "The marketing bundle saved us so much time and money. Our campaigns are more effective than ever!", name: "Sarah Chen", role: "Marketing Director", imageSrc: "https://via.placeholder.com/150?_wi=1"
},
{
id: "test-2", title: "Game Changer", quote: "Never thought I could get such a comprehensive set of tools at this price. Absolutely fantastic!", name: "Mark Davis", role: "Small Business Owner", imageSrc: "https://via.placeholder.com/150?_wi=1"
},
{
id: "test-3", title: "Highly Recommended", quote: "The support is great, and the products work perfectly together. My team loves it.", name: "Emily White", role: "Team Lead", imageSrc: "https://via.placeholder.com/150?_wi=1"
}
]}
textboxLayout="default"
useInvertedBackground={true}
tag="Reviews"
/>
</div>
<div id="faq" data-section="faq">
<FaqBase
title="Frequently Asked Questions"
description="Find answers to common questions about our product bundles."
faqs={[
{ id: "q1", title: "What is included in a bundle?", content: "Each bundle description details the specific products and services included. Please check the product page for full information." },
{ id: "q2", title: "Can I customize a bundle?", content: "Some bundles offer limited customization options. Contact our sales team for custom solutions." },
{ id: "q3", title: "What is your refund policy for bundles?", content: "Our standard refund policy applies to bundles. Please refer to our terms and conditions for details." },
{ id: "q4", title: "How do I access my bundled products?", content: "Upon purchase, you will receive instructions on how to access and activate all products within your bundle." }
]}
faqsAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
tag="Support"
/>
</div>
<div id="contact" data-section="contact">
<ContactCenter
tag="Get in Touch"
title="Ready to Bundle Up?"
description="Get in touch with our sales team to customize your perfect package and learn more about volume discounts."
background={{ variant: "gradient-bars" }}
buttonText="Get a Custom Quote"
useInvertedBackground={true}
tagIcon={Star}
/>
</div>
<div id="footer" data-section="footer">
<FooterSimple
columns={[
{
title: "Products", items: [
{ label: "Bundles", href: "/bundles" },
{ label: "Promotions", href: "/promotions" },
{ label: "Solutions", href: "/components" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "/components" },
{ label: "Careers", href: "/components" },
{ label: "Blog", href: "/components" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "/components" },
{ label: "Terms of Service", href: "/components" }
]
}
]}
bottomLeftText="© 2024 Bundles & Kits. All rights reserved."
bottomRightText="Built with Webild"
/>
</div>
</ThemeProvider>
);
}

96
src/app/cart/page.tsx Normal file
View File

@@ -0,0 +1,96 @@
'use client';
import { ThemeProvider } from 'next-themes';
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import TextBox from '@/components/Textbox';
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function CartPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Cart", id: "/cart" },
{ name: "Checkout", id: "/checkout" },
{ name: "Order Conf", id: "/order-confirmation" }
];
return (
<ThemeProvider
attribute="class"
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="bold"
>
<NavbarStyleCentered navItems={navItems} brandName="Webild" logoSrc="https://via.placeholder.com/40" />
<main className="flex min-h-screen flex-col items-center justify-between p-4 md:p-8">
<section id="cart" data-section="cart" className="w-full max-w-4xl py-12">
<TextBox
title="Your Shopping Cart"
description="Review your items before proceeding to checkout. You can modify quantities or remove items here."
textboxLayout="default"
buttons={[
{
text: "Proceed to Checkout", href: "/checkout"
},
]}
>
<div className="mt-8 space-y-4">
<div className="flex items-center justify-between p-4 border rounded-lg shadow-sm">
<div>
<h3 className="font-semibold">Product A</h3>
<p className="text-sm text-gray-500">Quantity: 1</p>
</div>
<p className="font-medium">$99.00</p>
</div>
<div className="flex items-center justify-between p-4 border rounded-lg shadow-sm">
<div>
<h3 className="font-semibold">Product B</h3>
<p className="text-sm text-gray-500">Quantity: 2</p>
</div>
<p className="font-medium">$150.00</p>
</div>
<div className="flex items-center justify-between p-4 border-t-2 mt-6 pt-6 font-bold text-lg">
<span>Total:</span>
<span>$249.00</span>
</div>
</div>
</TextBox>
</section>
<section id="trust-signals-cart" data-section="trust-signals-cart" className="w-full max-w-4xl py-12">
<SocialProofOne
title="Secure & Trusted Shopping"
description="Shop with confidence knowing your data is protected."
names={['Stripe', 'PayPal', 'Shopify', 'McAfee Secure']}
textboxLayout='default'
showCard={true}
/>
</section>
</main>
<FooterBaseReveal
logoText="Webild"
columns={[
{
title: "Company", items: [
{ label: "About Us", href: "/" },
{ label: "Contact", href: "/" },
],
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "/" },
{ label: "Terms of Service", href: "/" },
],
},
]}
copyrightText="© 2023 Webild. All rights reserved."
/>
</ThemeProvider>
);
}

96
src/app/checkout/page.tsx Normal file
View File

@@ -0,0 +1,96 @@
'use client';
import { ThemeProvider } from 'next-themes';
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import TextBox from '@/components/Textbox';
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function CheckoutPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Cart", id: "/cart" },
{ name: "Checkout", id: "/checkout" },
{ name: "Order Conf", id: "/order-confirmation" }
];
return (
<ThemeProvider
attribute="class"
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="bold"
>
<NavbarStyleCentered navItems={navItems} brandName="Webild" logoSrc="https://via.placeholder.com/40" />
<main className="flex min-h-screen flex-col items-center justify-between p-4 md:p-8">
<section id="checkout" data-section="checkout" className="w-full max-w-4xl py-12">
<TextBox
title="Complete Your Order"
description="Fill in your shipping and payment details to finalize your purchase. Your information is securely handled."
textboxLayout="default"
buttons={[
{
text: "Place Order", href: "/order-confirmation"
},
]}
>
<div className="mt-8 space-y-6">
<h3 className="font-semibold text-xl">Shipping Information</h3>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<input type="text" placeholder="Full Name" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="Address Line 1" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="Address Line 2 (Optional)" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="City" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="State/Province" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="Postal Code" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="Country" className="p-3 border rounded-lg w-full" />
</div>
<h3 className="font-semibold text-xl mt-8">Payment Information</h3>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<input type="text" placeholder="Card Number" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="Name on Card" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="Expiration (MM/YY)" className="p-3 border rounded-lg w-full" />
<input type="text" placeholder="CVV" className="p-3 border rounded-lg w-full" />
</div>
</div>
</TextBox>
</section>
<section id="trust-signals-checkout" data-section="trust-signals-checkout" className="w-full max-w-4xl py-12">
<SocialProofOne
title="Your Payment is Secure"
description="We use industry-leading encryption to protect your payment information."
names={['PCI DSS', 'HTTPS', '256-bit SSL', 'Fraud Protection']}
textboxLayout='default'
showCard={true}
/>
</section>
</main>
<FooterBaseReveal
logoText="Webild"
columns={[
{
title: "Company", items: [
{ label: "About Us", href: "/" },
{ label: "Contact", href: "/" },
],
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "/" },
{ label: "Terms of Service", href: "/" },
],
},
]}
copyrightText="© 2023 Webild. All rights reserved."
/>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,216 @@
"use client";
import { useState, useMemo } from 'react';
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import ProductCardThree from '@/components/sections/product/ProductCardThree';
import Input from '@/components/form/Input';
import ButtonExpandHover from '@/components/button/ButtonExpandHover';
import { useRouter } from 'next/navigation';
import { ChevronLeft, ChevronRight, Filter, Search, SlidersHorizontal } from 'lucide-react';
// Dummy data for books
const allBooks = [
{ id: '1', name: 'The Art of Programming', price: '$29.99', imageSrc: '/book-programming.jpg', imageAlt: 'Book cover for The Art of Programming', category: 'technology' },
{ id: '2', name: 'Science Fiction Masterpiece', price: '$19.99', imageSrc: '/book-scifi.jpg', imageAlt: 'Book cover for Science Fiction Masterpiece', category: 'fiction' },
{ id: '3', name: 'A Culinary Journey', price: '$24.99', imageSrc: '/book-cooking.jpg', imageAlt: 'Book cover for A Culinary Journey', category: 'cooking' },
{ id: '4', name: 'History of the World', price: '$35.00', imageSrc: '/book-history.jpg', imageAlt: 'Book cover for History of the World', category: 'history' },
{ id: '5', name: 'Developing Modern Web Apps', price: '$39.99', imageSrc: '/book-webdev.jpg', imageAlt: 'Book cover for Developing Modern Web Apps', category: 'technology' },
{ id: '6', name: 'Fantasy Realms Saga', price: '$22.50', imageSrc: '/book-fantasy.jpg', imageAlt: 'Book cover for Fantasy Realms Saga', category: 'fiction' },
{ id: '7', name: 'Gourmet Baking Guide', price: '$28.00', imageSrc: '/book-baking.jpg', imageAlt: 'Book cover for Gourmet Baking Guide', category: 'cooking' },
{ id: '8', name: 'Ancient Civilizations', price: '$32.00', imageSrc: '/book-ancient.jpg', imageAlt: 'Book cover for Ancient Civilizations', category: 'history' },
{ id: '9', name: 'The Digital Frontier', price: '$31.99', imageSrc: '/book-digital.jpg', imageAlt: 'Book cover for The Digital Frontier', category: 'technology' },
{ id: '10', name: 'Mythical Beasts', price: '$18.75', imageSrc: '/book-myth.jpg', imageAlt: 'Book cover for Mythical Beasts', category: 'fiction' }
];
const ITEMS_PER_PAGE = 6;
export default function BookCollectionPage({ params }: { params: { category: string } }) {
const router = useRouter();
const { category } = params;
const [searchTerm, setSearchTerm] = useState('');
const [sortOrder, setSortOrder] = useState<'asc' | 'desc' | 'none'>('none');
const [currentPage, setCurrentPage] = useState(1);
const navItems = [
{ name: "Home", id: "/" },
{ name: "About", id: "#about" },
{ name: "Features", id: "#features" },
{ name: "Pricing", id: "#pricing" },
{ name: "Books", id: "/collections/all" }
];
const filteredAndSortedBooks = useMemo(() => {
let books = allBooks;
// Category filtering
if (category !== 'all') {
books = books.filter(book => book.category === category);
}
// Search term filtering
if (searchTerm) {
books = books.filter(book =>
book.name.toLowerCase().includes(searchTerm.toLowerCase())
);
}
// Sorting
if (sortOrder === 'asc') {
books = [...books].sort((a, b) => a.name.localeCompare(b.name));
} else if (sortOrder === 'desc') {
books = [...books].sort((a, b) => b.name.localeCompare(a.name));
}
return books;
}, [category, searchTerm, sortOrder]);
const totalPages = Math.ceil(filteredAndSortedBooks.length / ITEMS_PER_PAGE);
const paginatedBooks = useMemo(() => {
const startIndex = (currentPage - 1) * ITEMS_PER_PAGE;
const endIndex = startIndex + ITEMS_PER_PAGE;
return filteredAndSortedBooks.slice(startIndex, endIndex);
}, [filteredAndSortedBooks, currentPage]);
const handleCategoryChange = (newCategory: string) => {
router.push(`/collections/${newCategory}`);
setCurrentPage(1); // Reset page on category change
};
const handlePageChange = (page: number) => {
if (page >= 1 && page <= totalPages) {
setCurrentPage(page);
}
};
const uniqueCategories = useMemo(() => {
const categories = new Set(allBooks.map(book => book.category));
return ['all', ...Array.from(categories)];
}, []);
return (
<main className="min-h-screen bg-background text-foreground">
<NavbarStyleFullscreen
navItems={navItems}
brandName="BookShelf"
logoSrc="/placeholder-logo.svg"
logoAlt="BookShelf Logo"
button={{ text: "Sign Up", href: "#" }}
/>
<div className="container mx-auto p-8">
<h1 className="text-4xl font-bold text-center mb-8 capitalize">
{category === 'all' ? 'All Books' : `${category} Books`}
</h1>
<div className="flex flex-wrap items-center justify-between gap-4 mb-8">
{/* Category Filter */}
<div className="flex items-center gap-2">
<Filter className="w-5 h-5" />
<label htmlFor="category-filter" className="sr-only">Filter by Category</label>
<select
id="category-filter"
value={category}
onChange={(e) => handleCategoryChange(e.target.value)}
className="px-4 py-2 rounded-lg border border-border bg-card text-foreground focus:ring-2 focus:ring-primary-cta focus:outline-none"
>
{uniqueCategories.map(cat => (
<option key={cat} value={cat} className="capitalize">
{cat === 'all' ? 'All Categories' : cat}
</option>
))}
</select>
</div>
{/* Search Input */}
<div className="relative flex-grow max-w-sm">
<Search className="absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-foreground/60" />
<Input
value={searchTerm}
onChange={setSearchTerm}
placeholder="Search books..."
className="w-full pl-10 pr-4 py-2 rounded-lg border border-border bg-card text-foreground focus:ring-2 focus:ring-primary-cta focus:outline-none"
ariaLabel="Search books"
/>
</div>
{/* Sort Order */}
<div className="flex items-center gap-2">
<SlidersHorizontal className="w-5 h-5" />
<label htmlFor="sort-order" className="sr-only">Sort Order</label>
<select
id="sort-order"
value={sortOrder}
onChange={(e) => setSortOrder(e.target.value as 'asc' | 'desc' | 'none')}
className="px-4 py-2 rounded-lg border border-border bg-card text-foreground focus:ring-2 focus:ring-primary-cta focus:outline-none"
>
<option value="none">Sort By</option>
<option value="asc">Name (A-Z)</option>
<option value="desc">Name (Z-A)</option>
</select>
</div>
</div>
{paginatedBooks.length > 0 ? (
<ProductCardThree
animationType="slide-up"
gridVariant="three-columns-all-equal-width"
title="" // No title for the section itself, as the page title handles it
description=""
products={paginatedBooks.map(book => ({
id: book.id,
name: book.name,
price: book.price,
imageSrc: book.imageSrc,
imageAlt: book.imageAlt
// Add other necessary product props, e.g., onFavorite, onProductClick
}))}
className="mb-8"
/>
) : (
<div className="text-center text-foreground/80 text-xl py-16">
No books found for this category or search term.
</div>
)}
{/* Pagination */}
{totalPages > 1 && (
<div className="flex justify-center items-center gap-4 mt-8">
<ButtonExpandHover
text=""
onClick={() => handlePageChange(currentPage - 1)}
disabled={currentPage === 1}
ariaLabel="Previous page"
className="w-10 h-10 p-0 flex items-center justify-center bg-secondary-cta hover:bg-secondary-cta/80 disabled:opacity-50 disabled:cursor-not-allowed"
textClassName="sr-only"
>
<ChevronLeft className="w-5 h-5" />
</ButtonExpandHover>
{Array.from({ length: totalPages }, (_, i) => i + 1).map(page => (
<button
key={page}
onClick={() => handlePageChange(page)}
className={`w-10 h-10 rounded-lg flex items-center justify-center text-lg font-medium
${currentPage === page
? 'bg-primary-cta text-primary-cta-foreground'
: 'bg-card text-foreground hover:bg-card/80'
}`}
>
{page}
</button>
))}
<ButtonExpandHover
text=""
onClick={() => handlePageChange(currentPage + 1)}
disabled={currentPage === totalPages}
ariaLabel="Next page"
className="w-10 h-10 p-0 flex items-center justify-center bg-secondary-cta hover:bg-secondary-cta/80 disabled:opacity-50 disabled:cursor-not-allowed"
textClassName="sr-only"
>
<ChevronRight className="w-5 h-5" />
</ButtonExpandHover>
</div>
)}
</div>
</main>
);
}

View File

@@ -0,0 +1,89 @@
"use client";
import { ThemeProvider } from "@/components/theme-provider";
import { NavbarStyleApple } from "@/components/navbar/NavbarStyleApple/NavbarStyleApple";
import { HeroBillboardTestimonial } from "@/components/sections/hero/HeroBillboardTestimonial";
import { FooterSimple } from "@/components/sections/footer/FooterSimple";
import { Sparkles } from "lucide-react";
export default function ComponentsPage() {
return (
<ThemeProvider
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="solid"
headingFontWeight="extrabold"
>
<NavbarStyleApple
navItems={[
{ name: "Home", id: "/components" },
{ name: "Bundles", id: "/bundles" },
{ name: "Promotions", id: "/promotions" }
]}
brandName="Webild"
/>
<div id="hero" data-section="hero">
<HeroBillboardTestimonial
title="Welcome to Our Platform"
description="Explore our comprehensive offerings and discover how we can help your business thrive with innovative solutions."
background={{ variant: "downward-rays-static" }}
testimonials={[
{
name: "Client One", handle: "@clientone", testimonial: "An amazing experience from start to finish! Highly recommend their services.", rating: 5,
imageSrc: "https://via.placeholder.com/150?_wi=1"
},
{
name: "Client Two", handle: "@clienttwo", testimonial: "They truly understand our needs and deliver exceptional results every time.", rating: 5,
imageSrc: "https://via.placeholder.com/150?_wi=1"
}
]}
buttons={[
{ text: "Get Started", href: "/promotions" },
{ text: "Learn More", href: "/bundles" }
]}
imageSrc="https://via.placeholder.com/1024x768?_wi=1"
imageAlt="Placeholder image for hero section"
mediaAnimation="opacity"
tag="Innovation"
tagIcon={Sparkles}
/>
</div>
<div id="footer" data-section="footer">
<FooterSimple
columns={[
{
title: "Products", items: [
{ label: "Bundles", href: "/bundles" },
{ label: "Promotions", href: "/promotions" },
{ label: "Solutions", href: "/components" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "/components" },
{ label: "Careers", href: "/components" },
{ label: "Blog", href: "/components" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "/components" },
{ label: "Terms of Service", href: "/components" }
]
}
]}
bottomLeftText="© 2024 Webild. All rights reserved."
bottomRightText="Built with Webild"
/>
</div>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,67 @@
'use client';
import { ThemeProvider } from 'next-themes';
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import HeroCentered from '@/components/sections/hero/HeroCentered';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function OrderConfirmationPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Cart", id: "/cart" },
{ name: "Checkout", id: "/checkout" },
{ name: "Order Conf", id: "/order-confirmation" }
];
return (
<ThemeProvider
attribute="class"
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="bold"
>
<NavbarStyleCentered
navItems={navItems}
brandName="Webild"
logoSrc="https://via.placeholder.com/40"
button={{ text: "Continue Shopping", href: "/" }}
/>
<main className="flex min-h-screen flex-col items-center justify-between">
<HeroCentered
id="order-confirmation"
title="Order Confirmed!"
description="Thank you for your purchase. Your order #ABC123DEF has been placed and is now being processed. A confirmation email with details has been sent to your inbox."
background={{ variant: 'downward-rays-static' }}
avatars={[{ src: 'https://via.placeholder.com/150', alt: 'Confirmed 1' }, { src: 'https://via.placeholder.com/150', alt: 'Confirmed 2' }]}
avatarText="You're all set!"
buttons={[{ text: 'View Order Details', href: '/' }]}
buttonAnimation='slide-up'
/>
</main>
<FooterBaseReveal
logoText="Webild"
columns={[
{
title: "Company", items: [
{ label: "About Us", href: "/" },
{ label: "Contact", href: "/" },
],
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "/" },
{ label: "Terms of Service", href: "/" },
],
},
]}
copyrightText="© 2023 Webild. All rights reserved."
/>
</ThemeProvider>
);
}

View File

@@ -1,5 +1,62 @@
import { redirect } from 'next/navigation';
'use client';
import { ThemeProvider } from 'next-themes';
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import HeroCentered from '@/components/sections/hero/HeroCentered';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function Home() {
redirect('/components');
}
const navItems = [
{ name: "Home", id: "/" },
{ name: "Cart", id: "/cart" },
{ name: "Checkout", id: "/checkout" },
{ name: "Order Conf", id: "/order-confirmation" }
];
return (
<ThemeProvider
attribute="class"
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="bold"
>
<NavbarStyleCentered navItems={navItems} brandName="Webild" logoSrc="https://via.placeholder.com/40" />
<main className="flex min-h-screen flex-col items-center justify-between">
<HeroCentered
id="hero"
title="Welcome to Our Store!"
description="Explore our amazing products and enjoy a seamless shopping experience from cart to checkout."
background={{ variant: 'radial-gradient' }}
avatars={[{ src: 'https://via.placeholder.com/150', alt: 'User 1' }, { src: 'https://via.placeholder.com/150', alt: 'User 2' }]}
avatarText="Join thousands of happy shoppers!"
buttons={[{ text: 'Start Shopping', href: '/' }]}
buttonAnimation='slide-up'
/>
</main>
<FooterBaseReveal
logoText="Webild"
columns={[
{
title: "Company", items: [
{ label: "About Us", href: "/" },
{ label: "Contact", href: "/" },
],
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "/" },
{ label: "Terms of Service", href: "/" },
],
},
]}
copyrightText="© 2023 Webild. All rights reserved."
/>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,162 @@
'use client';
import { ThemeProvider } from 'next-themes';
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import TextAnimation from '@/components/text/TextAnimation';
import ButtonTextShift from '@/components/button/ButtonTextShift/ButtonTextShift';
import TestimonialCardTwo from '@/components/sections/testimonial/TestimonialCardTwo';
import ProductCardThree from '@/components/sections/product/ProductCardThree';
import { Sparkles, Star } from 'lucide-react';
export default function ProductDetailPage() {
const book = {
id: 'the-alchemist',
title: 'The Alchemist',
author: 'Paulo Coelho',
description: 'A captivating novel about a young shepherd who journeys to the Egyptian desert in search of a treasure. His quest leads him to discover a different kind of treasure than he originally envisioned.',
price: '$12.99',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/book-cover-alchemist.png',
imageAlt: 'The Alchemist book cover',
rating: 4.8,
reviewCount: 1500,
};
const reviews = [
{
id: '1',
name: 'Sophia M.',
role: 'Avid Reader',
testimonial: 'An inspiring and thought-provoking read that I couldn\'t put down. Highly recommended!',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/customer-avatar-1.jpg',
icon: Star,
},
{
id: '2',
name: 'John D.',
role: 'Book Enthusiast',
testimonial: 'The story is beautifully written and full of wisdom. A true classic that everyone should read.',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/customer-avatar-2.jpg',
icon: Star,
},
{
id: '3',
name: 'Emily R.',
role: 'Philosophy Student',
testimonial: 'Changed my perspective on life and destiny. Deeply moving and thought-provoking.',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/customer-avatar-3.jpg',
icon: Star,
},
];
const relatedProducts = [
{
id: 'little-prince',
name: 'The Little Prince',
price: '$9.99',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/book-cover-little-prince.png',
imageAlt: 'The Little Prince book cover',
},
{
id: 'siddhartha',
name: 'Siddhartha',
price: '$11.50',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/book-cover-siddhartha.png',
imageAlt: 'Siddhartha book cover',
},
{
id: 'jonathan-seagull',
name: 'Jonathan Livingston Seagull',
price: '$8.75',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/book-cover-jonathan-seagull.png',
imageAlt: 'Jonathan Livingston Seagull book cover',
},
{
id: 'the-prophet',
name: 'The Prophet',
price: '$10.25',
imageSrc: 'https://pub-8b4931a55099479ca4d5a9d685ac336c.r2.dev/book-cover-prophet.png',
imageAlt: 'The Prophet book cover',
},
];
return (
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
<NavbarLayoutFloatingInline
navItems={[
{ name: 'Home', id: '/' },
{ name: 'Products', id: '/products' },
{ name: 'About', id: '/#about' }
]}
brandName="Bookish"
button={{ text: 'Sign Up', href: '/#contact' }}
/>
<main className="flex min-h-screen flex-col items-center justify-start p-8 md:p-16 relative z-10">
{/* Book Information Section */}
<section id="book-info" data-section="book-info" className="w-full max-w-6xl py-16 grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
<div className="flex justify-center md:justify-end">
<img
src={book.imageSrc}
alt={book.imageAlt}
className="w-full max-w-xs md:max-w-sm rounded-lg shadow-2xl transition-transform duration-300 hover:scale-105"
/>
</div>
<div className="flex flex-col gap-6 text-center md:text-left">
<TextAnimation
title={book.title}
type="entrance-slide"
className="text-5xl md:text-6xl font-extrabold text-foreground leading-tight"
/>
<p className="text-xl text-primary-cta font-medium">By {book.author}</p>
<p className="text-lg text-foreground-lighter">{book.description}</p>
<div className="flex items-center justify-center md:justify-start gap-2 text-xl text-yellow-500">
{Array.from({ length: Math.floor(book.rating) }).map((_, i) => (
<Star key={i} fill="currentColor" stroke="none" size={20} />
))}
<span className="text-foreground text-base ml-1">({book.rating} / {book.reviewCount} reviews)</span>
</div>
<p className="text-4xl font-bold text-foreground mt-4">{book.price}</p>
<div className="flex flex-col sm:flex-row items-center justify-center md:justify-start gap-4 mt-6">
<input
type="number"
defaultValue={1}
min={1}
className="w-20 p-3 border border-border-light rounded-md text-center bg-card text-foreground focus:ring-2 focus:ring-primary-cta focus:border-transparent transition-all duration-200"
/>
<ButtonTextShift text="Add to Cart" className="w-full sm:w-auto px-8 py-3 rounded-lg font-semibold" />
</div>
</div>
</section>
{/* Reviews Section */}
<div id="reviews" data-section="reviews" className="w-full py-16">
<TestimonialCardTwo
testimonials={reviews}
title="What Our Readers Say"
description="Hear from our satisfied customers about their experience with this book."
animationType="blur-reveal"
carouselMode="buttons"
uniformGridCustomHeightClasses="min-h-none"
tag="Reviews"
tagIcon={Sparkles}
textboxLayout="default"
useInvertedBackground={false}
/>
</div>
{/* Related Products Section */}
<div id="related-products" data-section="related-products" className="w-full py-16">
<ProductCardThree
products={relatedProducts}
title="You Might Also Like"
description="Discover other captivating titles that share similar themes."
gridVariant="four-items-2x2-equal-grid"
animationType="slide-up"
tag="More Books"
textboxLayout="default"
useInvertedBackground={false}
/>
</div>
</main>
</ThemeProvider>
);
}

175
src/app/promotions/page.tsx Normal file
View File

@@ -0,0 +1,175 @@
"use client";
import { ThemeProvider } from "@/components/theme-provider";
import { NavbarStyleApple } from "@/components/navbar/NavbarStyleApple/NavbarStyleApple";
import { HeroBillboardTestimonial } from "@/components/sections/hero/HeroBillboardTestimonial";
import { ProductCardOne } from "@/components/sections/product/ProductCardOne";
import { SocialProofOne } from "@/components/sections/socialProof/SocialProofOne";
import { MetricCardFourteen } from "@/components/sections/metrics/MetricCardFourteen";
import { TestimonialCardTen } from "@/components/sections/testimonial/TestimonialCardTen";
import { ContactCenter } from "@/components/sections/contact/ContactCenter";
import { FooterSimple } from "@/components/sections/footer/FooterSimple";
import { Rocket } from "lucide-react";
export default function PromotionsPage() {
return (
<ThemeProvider
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="solid"
headingFontWeight="extrabold"
>
<NavbarStyleApple
navItems={[
{ name: "Home", id: "/components" },
{ name: "Bundles", id: "/bundles" },
{ name: "Promotions", id: "/promotions" }
]}
brandName="Promotions Central"
/>
<div id="hero" data-section="hero">
<HeroBillboardTestimonial
title="Limited-Time Offers & Exclusive Promotions!"
description="Don't miss out on incredible deals across our product range. Act fast, these won't last!"
background={{ variant: "sparkles-gradient" }}
testimonials={[
{
name: "Alice Brown", handle: "@aliceb", testimonial: "Got an amazing deal, and the product quality is top-notch!", rating: 5,
imageSrc: "https://via.placeholder.com/150?_wi=1"
},
{
name: "Bob Green", handle: "@bobg", testimonial: "Always check here for the best prices. Never disappointed.", rating: 4,
imageSrc: "https://via.placeholder.com/150?_wi=1"
}
]}
buttons={[
{ text: "View All Deals", href: "#products" },
{ text: "Subscribe for Updates", href: "#contact" }
]}
imageSrc="https://via.placeholder.com/1024x768/FFD700/000000?text=Promotion+Sale?_wi=1"
imageAlt="Promotional sale banner"
mediaAnimation="opacity"
tag="Flash Sale"
tagIcon={Rocket}
/>
</div>
<div id="products" data-section="products">
<ProductCardOne
title="Hot Deals & Special Discounts"
description="Explore our currently running promotions on popular products and services. Grab them before they're gone!"
products={[
{
id: "promo-1", name: "Advanced Analytics Software", price: "$99 (was $149)", imageSrc: "https://via.placeholder.com/400x300/FF5733/FFFFFF?text=Analytics+Software?_wi=1", imageAlt: "Advanced Analytics Software"
},
{
id: "promo-2", name: "Premium Video Editor", price: "$79 (was $129)", imageSrc: "https://via.placeholder.com/400x300/33FF57/FFFFFF?text=Video+Editor?_wi=1", imageAlt: "Premium Video Editor"
},
{
id: "promo-3", name: "Cloud Storage Pro", price: "$29 (was $49)", imageSrc: "https://via.placeholder.com/400x300/3357FF/FFFFFF?text=Cloud+Storage?_wi=1", imageAlt: "Cloud Storage Pro"
}
]}
gridVariant="three-columns-all-equal-width"
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
tag="Deals"
/>
</div>
<div id="social-proof" data-section="social-proof">
<SocialProofOne
title="Trusted by Industry Leaders"
description="Our promotions are designed to bring premium quality to everyone, endorsed by companies big and small."
names={[
"TechCorp", "InnovateLabs", "Global Solutions", "Future Systems", "DesignHub", "DataStream"
]}
speed={50}
textboxLayout="default"
useInvertedBackground={true}
tag="Partners"
/>
</div>
<div id="metrics" data-section="metrics">
<MetricCardFourteen
title="Impact of Our Promotions"
tag="Results"
metrics={[
{ id: "m1", value: "50K+", description: "Satisfied Customers" },
{ id: "m2", value: "30%", description: "Average Savings" },
{ id: "m3", value: "100+", description: "Unique Offers Monthly" }
]}
metricsAnimation="blur-reveal"
useInvertedBackground={false}
/>
</div>
<div id="testimonials" data-section="testimonials">
<TestimonialCardTen
title="Success Stories from Our Promos"
description="Real results from real people who leveraged our special offers to achieve their goals."
testimonials={[
{
id: "promo-test-1", title: "Boosted My Business!", quote: "The marketing suite promotion was exactly what I needed. My online presence has never been better.", name: "David Lee", role: "E-commerce Entrepreneur", imageSrc: "https://via.placeholder.com/150?_wi=1"
},
{
id: "promo-test-2", title: "Unbeatable Price", quote: "I finally got the design software I wanted at a price I couldn't resist. Fantastic deal!", name: "Sophia Kim", role: "Freelance Designer", imageSrc: "https://via.placeholder.com/150?_wi=1"
}
]}
textboxLayout="default"
useInvertedBackground={true}
tag="Customer Stories"
/>
</div>
<div id="contact" data-section="contact">
<ContactCenter
tag="Don't Miss Out"
title="Stay Tuned for More!"
description="Sign up for our newsletter to get exclusive access to future promotions, early bird discounts, and special announcements."
background={{ variant: "animated-grid" }}
buttonText="Sign Up Now"
useInvertedBackground={false}
tagIcon={Rocket}
/>
</div>
<div id="footer" data-section="footer">
<FooterSimple
columns={[
{
title: "Products", items: [
{ label: "Bundles", href: "/bundles" },
{ label: "Promotions", href: "/promotions" },
{ label: "Solutions", href: "/components" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "/components" },
{ label: "Careers", href: "/components" },
{ label: "Blog", href: "/components" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "/components" },
{ label: "Terms of Service", href: "/components" }
]
}
]}
bottomLeftText="© 2024 Promotions Central. All rights reserved."
bottomRightText="Built with Webild"
/>
</div>
</ThemeProvider>
);
}