Compare commits
66 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a47a0c3b35 | |||
| 5599f7516d | |||
| 51dd7c429b | |||
| 47f8ca468f | |||
| 0bd0a95da4 | |||
| 82a1966d73 | |||
| e4c3df49dd | |||
| 68afccf438 | |||
| b7f789973e | |||
| c4e0d5d16a | |||
| 68affe776e | |||
| 9b47456760 | |||
| fc41963461 | |||
| 8d55049771 | |||
| 6d098d075e | |||
| 4b39e5bd23 | |||
| be4b6468eb | |||
| 94b3cbc6cd | |||
| 06ba0e1726 | |||
| 3b323d51cb | |||
| b10a9024c1 | |||
| 9e58f90385 | |||
| f6183e0ca5 | |||
| 2c93ff4ae2 | |||
| 1f653a8f82 | |||
| 5077fa9226 | |||
| 9cc25868ef | |||
| 9dbc031ed3 | |||
| d397aa7679 | |||
| 224b2982f8 | |||
| a44bbf4810 | |||
| 8a7139baa6 | |||
| c74978929e | |||
| 8601109ead | |||
| f33eba33b2 | |||
| fdbead97f4 | |||
| d18144b41d | |||
| 2ea3ba2560 | |||
| b4d8444b36 | |||
| a398c5e39d | |||
| 6256b1c7bc | |||
| d4133c0f0d | |||
| f7c50d6ee7 | |||
| a282b1225b | |||
| 48ef8ff917 | |||
| 5e02715c8a | |||
| 29df51c4a5 | |||
| aafcd380b9 | |||
| d8d039ffda | |||
| 698a46c955 | |||
| 417ca64eb2 | |||
| b4369d6ab3 | |||
| 0a3cd391f2 | |||
| 776129b0d9 | |||
| 3bfaef8b07 | |||
| 6425110e7c | |||
| 8f4677fef7 | |||
| 46b66d4ce0 | |||
| 7febacfbd5 | |||
| a93b26c3b2 | |||
| dd8986ec2b | |||
| 2ee9872bfc | |||
| 6986b97578 | |||
| d8aa54659e | |||
| 56865d74c6 | |||
| 056d61a79b |
@@ -1,71 +1,95 @@
|
||||
"use client";
|
||||
|
||||
import ReactLenis from "lenis/react";
|
||||
import BlogCardThree from '@/components/sections/blog/BlogCardThree';
|
||||
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from "@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay";
|
||||
import { useBlogPosts } from "@/hooks/useBlogPosts";
|
||||
|
||||
const posts = [
|
||||
{
|
||||
id: '1',
|
||||
category: 'Skincare',
|
||||
title: '5 Tips for a Glowing Complexion',
|
||||
excerpt: 'Discover our top secrets to achieving radiant, healthy-looking skin that glows from within.',
|
||||
imageSrc: 'https://img.b2bpic.net/free-photo/hand-holding-bottle-beauty-product_23-2148496466.jpg',
|
||||
authorName: 'Lee Coral',
|
||||
authorAvatar: 'https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg',
|
||||
date: 'Oct 20, 2023',
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
category: 'Live Shows',
|
||||
title: 'What to Expect in Our Next Live Show',
|
||||
excerpt: 'Get a sneak peek into the exclusive bundles and new drops featured in our upcoming live event.',
|
||||
imageSrc: 'https://img.b2bpic.net/free-photo/hands-holding-various-cosmetics_23-2148496467.jpg',
|
||||
authorName: 'Ariel S.',
|
||||
authorAvatar: 'https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg',
|
||||
date: 'Oct 15, 2023',
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
category: 'Cosmetics',
|
||||
title: 'The Ultimate Guide to Pro Cosmetics',
|
||||
excerpt: 'Learn how to use our professional cosmetic kits to create stunning looks for any occasion.',
|
||||
imageSrc: 'https://img.b2bpic.net/free-photo/woman-holding-makeup-brush_23-2148496463.jpg',
|
||||
authorName: 'Glow Theory',
|
||||
authorAvatar: 'https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg',
|
||||
date: 'Oct 10, 2023',
|
||||
}
|
||||
];
|
||||
|
||||
export default function BlogPage() {
|
||||
const { posts, isLoading } = useBlogPosts();
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Shop", id: "/shop" },
|
||||
]}
|
||||
button={{ text: "Join Live", href: "/#live-shows" }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Join Live", href: "/#live-shows" }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{isLoading ? (
|
||||
<div className="w-content-width mx-auto py-20 text-center">
|
||||
<p className="text-foreground">Loading posts...</p>
|
||||
</div>
|
||||
) : (
|
||||
<div id="blog" data-section="blog">
|
||||
<BlogCardThree
|
||||
blogs={posts}
|
||||
title="Featured Articles"
|
||||
description="Explore our latest insights"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<div id="blog" data-section="blog">
|
||||
<BlogCardThree
|
||||
blogs={posts}
|
||||
title="Featured Articles"
|
||||
description="Explore our latest insights"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -12,12 +12,14 @@ export const metadata: Metadata = {
|
||||
title: "Glow Theory - Premium Beauty Wholesale Live Selling", description: "Elevate your glow with Glow Theory, your Miami-based source for luxury beauty, skincare, fragrance, and cosmetic reseller bundles through live shows on Whatnot.", openGraph: {
|
||||
title: "Glow Theory - Premium Beauty Wholesale Live Selling", description: "Elevate your glow with Glow Theory, your Miami-based source for luxury beauty, skincare, fragrance, and cosmetic reseller bundles through live shows on Whatnot.", url: "https://glowtheory.com", siteName: "Glow Theory", images: [
|
||||
{
|
||||
url: "https://img.b2bpic.net/free-photo/minimal-assortment-beauty-products_23-2148961325.jpg", alt: "Glow Theory beauty products with a soft pink glow"},
|
||||
url: "https://img.b2bpic.net/free-photo/hands-holding-face-cream_23-2149544901.jpg", alt: "Glow Theory beauty products held in hands"
|
||||
}
|
||||
],
|
||||
type: "website"},
|
||||
twitter: {
|
||||
card: "summary_large_image", title: "Glow Theory - Premium Beauty Wholesale Live Selling", description: "Elevate your glow with Glow Theory, your Miami-based source for luxury beauty, skincare, fragrance, and cosmetic reseller bundles through live shows on Whatnot.", images: ["https://img.b2bpic.net/free-photo/minimal-assortment-beauty-products_23-2148961325.jpg"],
|
||||
type: "website"
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image", title: "Glow Theory - Premium Beauty Wholesale Live Selling", description: "Elevate your glow with Glow Theory, your Miami-based source for luxury beauty, skincare, fragrance, and cosmetic reseller bundles through live shows on Whatnot.", images: ["https://img.b2bpic.net/free-photo/hands-holding-face-cream_23-2149544901.jpg"]
|
||||
}
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
@@ -1404,4 +1406,4 @@ export default function RootLayout({
|
||||
</ServiceWrapper>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -14,26 +14,25 @@ import { CalendarCheck, Mail, MessageSquare, Sparkles, Timer, Tv } from "lucide-
|
||||
export default function LandingPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Live Shows", id: "live-shows" },
|
||||
{ name: "Bundles", id: "bundles" },
|
||||
{ name: "Reviews", id: "reviews" },
|
||||
{ name: "Support", id: "support" },
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Join Live", href: "#live-shows" }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
@@ -46,15 +45,14 @@ export default function LandingPage() {
|
||||
<HeroBillboardGallery
|
||||
title="Glow Theory"
|
||||
description="Elevate Your Glow"
|
||||
background={{ variant: "radial-gradient" }}
|
||||
buttons={[{ text: "Join Our Live Show", href: "#live-shows" }]}
|
||||
background={{ variant: "sparkles-gradient" }}
|
||||
buttons={[{ text: "Join Our Live Show", href: "https://www.whatnot.com/s/xeIJ5XNt" }]}
|
||||
mediaItems={[
|
||||
{ imageSrc: "https://img.b2bpic.net/free-photo/minimal-assortment-beauty-products_23-2148961325.jpg?_wi=1", imageAlt: "Beauty products with a soft pink glow" },
|
||||
{ imageSrc: "https://img.b2bpic.net/free-photo/minimal-assortment-beauty-products_23-2148961325.jpg?_wi=2", imageAlt: "Beauty products with a soft pink glow" },
|
||||
{ imageSrc: "https://img.b2bpic.net/free-photo/minimal-assortment-beauty-products_23-2148961325.jpg?_wi=3", imageAlt: "Beauty products with a soft pink glow" },
|
||||
{ imageSrc: "https://img.b2bpic.net/free-photo/hands-holding-face-cream_23-2149544901.jpg?_wi=1", imageAlt: "Hand holding face cream" },
|
||||
{ imageSrc: "https://img.b2bpic.net/free-photo/woman-holding-lipstick-concept_23-2148483750.jpg", imageAlt: "Hand holding lipstick" },
|
||||
{ imageSrc: "https://img.b2bpic.net/free-photo/close-up-woman-holding-tube_23-2149021643.jpg", imageAlt: "Hand holding beauty tube" }
|
||||
]}
|
||||
mediaAnimation="opacity"
|
||||
tagAnimation="opacity"
|
||||
buttonAnimation="opacity"
|
||||
className="bg-[--background] text-[--foreground]"
|
||||
titleClassName="text-5xl md:text-7xl lg:text-8xl font-thin tracking-wide"
|
||||
@@ -72,8 +70,8 @@ export default function LandingPage() {
|
||||
description="Glow Theory is your premier Miami-based destination for beauty wholesale live-selling. We specialize in curating exquisite reseller bundles featuring top-tier skincare, fragrance, and cosmetics, alongside daily product drops. Our mission is to empower beauty entrepreneurs with access to the most coveted products in the market."
|
||||
subdescription="CEO: Lee Coral"
|
||||
icon={Sparkles}
|
||||
imageSrc="https://img.b2bpic.net/free-photo/studio-shot-sensual-woman-pink-suit_197531-16807.jpg"
|
||||
imageAlt="Portrait of Lee Coral, CEO of Glow Theory"
|
||||
imageSrc="https://img.b2bpic.net/free-photo/hands-holding-face-cream_23-2149544901.jpg?_wi=2"
|
||||
imageAlt="Hand holding beauty product"
|
||||
mediaAnimation="opacity"
|
||||
useInvertedBackground={false}
|
||||
className="bg-[--background] text-[--foreground]"
|
||||
@@ -96,7 +94,7 @@ export default function LandingPage() {
|
||||
features={[
|
||||
{ icon: CalendarCheck, title: "Upcoming Shows", description: "Stay updated with our schedule and never miss a live event for the freshest drops." },
|
||||
{ icon: Tv, title: "Watch Us Live", description: "Tune in now to catch our current live broadcast and snag exclusive beauty bundles." },
|
||||
{ icon: Timer, title: "Countdown Timer", description: "See exactly when our next exciting live show is about to begin!" },
|
||||
{ icon: Timer, title: "Countdown Timer", description: "See exactly when our next exciting live show is about to begin!" }
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
@@ -116,9 +114,9 @@ export default function LandingPage() {
|
||||
title="Featured Bundles"
|
||||
description="Discover our curated selection of reseller beauty bundles, perfect for elevating your inventory. Available exclusively on our live shows!"
|
||||
products={[
|
||||
{ id: "bundle-1", brand: "Glow Theory", name: "Skincare Essentials Bundle", price: "Live Show Price", rating: 5, reviewCount: "1.2K", imageSrc: "https://img.b2bpic.net/free-photo/online-workshop-demontration-beauty-products_259150-60056.jpg", imageAlt: "Skincare Essentials Bundle" },
|
||||
{ id: "bundle-2", brand: "Glow Theory", name: "Fragrance Discovery Set", price: "Live Show Price", rating: 5, reviewCount: "890", imageSrc: "https://img.b2bpic.net/free-photo/close-up-variety-cosmetic-products-desk-isolated_574295-5284.jpg", imageAlt: "Fragrance Discovery Set" },
|
||||
{ id: "bundle-3", brand: "Glow Theory", name: "Cosmetic Pro Kit", price: "Live Show Price", rating: 5, reviewCount: "2.5K", imageSrc: "https://img.b2bpic.net/free-photo/foundation-bottles-advertising-arrangement_23-2149511243.jpg", imageAlt: "Cosmetic Pro Kit" },
|
||||
{ id: "bundle-1", brand: "Glow Theory", name: "Skincare Essentials Bundle", price: "Live Show Price", rating: 5, reviewCount: "1.2K", imageSrc: "https://img.b2bpic.net/free-photo/woman-holding-face-cream_23-2148496464.jpg", imageAlt: "Hand holding face cream" },
|
||||
{ id: "bundle-2", brand: "Glow Theory", name: "Fragrance Discovery Set", price: "Live Show Price", rating: 5, reviewCount: "890", imageSrc: "https://img.b2bpic.net/free-photo/hand-showing-perfume-bottle_23-2148496465.jpg", imageAlt: "Hand showing perfume bottle" },
|
||||
{ id: "bundle-3", brand: "Glow Theory", name: "Cosmetic Pro Kit", price: "Live Show Price", rating: 5, reviewCount: "2.5K", imageSrc: "https://img.b2bpic.net/free-photo/woman-holding-foundation-bottle_23-2148496468.jpg", imageAlt: "Hand holding foundation bottle" }
|
||||
]}
|
||||
gridVariant="uniform-all-items-equal"
|
||||
animationType="slide-up"
|
||||
@@ -142,12 +140,12 @@ export default function LandingPage() {
|
||||
rating={5}
|
||||
author="Ariel S., Reseller Queen"
|
||||
avatars={[
|
||||
{ src: "https://img.b2bpic.net/free-photo/portrait-young-female-dentist-dentistry-concept-dental-treatment_169016-67131.jpg", alt: "Customer 1" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/beautiful-young-woman-looking-camera-home_1301-4258.jpg", alt: "Customer 2" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/happy-business-woman-white-shirt_23-2148095748.jpg", alt: "Customer 3" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/beautiful-young-woman-looking-camera-home_1301-4258.jpg", alt: "Customer 4" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/beautiful-young-woman-looking-camera-home_1301-4258.jpg", alt: "Customer 5" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/beautiful-young-woman-looking-camera-home_1301-4258.jpg", alt: "Customer 6" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg", alt: "Abstract avatar" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg", alt: "Abstract avatar" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg", alt: "Abstract avatar" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg", alt: "Abstract avatar" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg", alt: "Abstract avatar" },
|
||||
{ src: "https://img.b2bpic.net/free-photo/minimal-geometric-pattern-wall_23-2149673909.jpg", alt: "Abstract avatar" }
|
||||
]}
|
||||
ratingAnimation="slide-up"
|
||||
avatarsAnimation="slide-up"
|
||||
@@ -167,7 +165,7 @@ export default function LandingPage() {
|
||||
description="Never miss a live show again! Join our Glow Fam community for exclusive alerts on upcoming bundles and daily drops."
|
||||
features={[
|
||||
{ icon: Mail, title: "Email Signup", description: "Receive email alerts directly to your inbox for new shows and products." },
|
||||
{ icon: MessageSquare, title: "SMS Signup", description: "Get instant text notifications when we go live with exciting new bundles." },
|
||||
{ icon: MessageSquare, title: "SMS Signup", description: "Get instant text notifications when we go live with exciting new bundles." }
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
@@ -191,12 +189,12 @@ export default function LandingPage() {
|
||||
inputs={[
|
||||
{ name: "fullName", type: "text", placeholder: "Full Name", required: true },
|
||||
{ name: "emailAddress", type: "email", placeholder: "Email Address", required: true },
|
||||
{ name: "orderNumber", type: "text", placeholder: "Order Number (Optional)", required: false },
|
||||
{ name: "orderNumber", type: "text", placeholder: "Order Number (Optional)", required: false }
|
||||
]}
|
||||
textarea={{ name: "message", placeholder: "Type your message...", rows: 5, required: true }}
|
||||
buttonText="Contact Support"
|
||||
imageSrc="https://img.b2bpic.net/free-photo/medium-shot-pretty-woman-indoors_23-2148879269.jpg"
|
||||
imageAlt="Beauty customer support representative"
|
||||
imageSrc="https://img.b2bpic.net/free-photo/hands-holding-face-cream_23-2149544901.jpg?_wi=3"
|
||||
imageAlt="Hands holding beauty product for support"
|
||||
mediaAnimation="opacity"
|
||||
mediaPosition="right"
|
||||
useInvertedBackground={false}
|
||||
@@ -215,7 +213,7 @@ export default function LandingPage() {
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "#contact-support" }}
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
@@ -224,4 +222,4 @@ export default function LandingPage() {
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
86
src/app/privacy/page.tsx
Normal file
86
src/app/privacy/page.tsx
Normal file
@@ -0,0 +1,86 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import LegalSection from '@/components/legal/LegalSection';
|
||||
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
|
||||
|
||||
export default function PrivacyPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Join Live", href: "/#live-shows" }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="privacy-policy" data-section="privacy-policy">
|
||||
<LegalSection
|
||||
layout="page"
|
||||
title="Privacy Policy"
|
||||
subtitle="Last Updated: October 26, 2023"
|
||||
sections={[
|
||||
{
|
||||
heading: "1. Introduction", content: [
|
||||
{
|
||||
type: "paragraph", text: "Welcome to Glow Theory. We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about our policy, or our practices with regards to your personal information, please contact us at support@glowtheory.com."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
heading: "2. Information We Collect", content: [
|
||||
{
|
||||
type: "paragraph", text: "We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and services, when you participate in activities on the website or otherwise when you contact us."
|
||||
},
|
||||
{
|
||||
type: "list", items: [
|
||||
"Personal Information: We may collect names, phone numbers, email addresses, mailing addresses, job titles, contact preferences, contact or authentication data, billing addresses, and other similar information.", "Payment Data: We may collect data necessary to process your payment if you make purchases, such as your payment instrument number (such as a credit card number), and the security code associated with your payment instrument."
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
heading: "3. How We Use Your Information", content: [
|
||||
{
|
||||
type: "paragraph", text: "We use personal information collected via our website for a variety of business purposes described below. We process your personal information for these purposes in reliance on our legitimate business interests, in order to enter into or perform a contract with you, with your consent, and/or for compliance with our legal obligations."
|
||||
}
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Home", href: "/" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
import { Suspense, use, useCallback } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import ReactLenis from "lenis/react";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
|
||||
@@ -77,160 +76,36 @@ function ProductPageContent({ params }: ProductPageProps) {
|
||||
if (isLoading) {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="navbar" data-section="navbar">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="loading-section" data-section="loading-section">
|
||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||
<p className="text-foreground">Loading product...</p>
|
||||
</main>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
if (!product) {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="navbar" data-section="navbar">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="not-found-section" data-section="not-found-section">
|
||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||
<div className="text-center">
|
||||
<p className="text-foreground mb-4">Product not found</p>
|
||||
<button
|
||||
onClick={() => router.push("/shop")}
|
||||
className="primary-button px-6 py-2 rounded-theme text-primary-cta-text"
|
||||
>
|
||||
Back to Shop
|
||||
</button>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="navbar" data-section="navbar">
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="product-detail-card" data-section="product-detail-card">
|
||||
<ProductDetailCard
|
||||
layout="page"
|
||||
name={product.name}
|
||||
price={product.price}
|
||||
salePrice={meta.salePrice}
|
||||
rating={product.rating || 0}
|
||||
description={product.description}
|
||||
images={images}
|
||||
variants={variants.length > 0 ? variants : undefined}
|
||||
quantity={quantityVariant}
|
||||
ribbon={meta.ribbon}
|
||||
inventoryStatus={meta.inventoryStatus}
|
||||
inventoryQuantity={meta.inventoryQuantity}
|
||||
sku={meta.sku}
|
||||
buttons={[
|
||||
{ text: "Add To Cart", onClick: handleAddToCart },
|
||||
{ text: "Buy Now", onClick: handleBuyNow },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div id="product-cart" data-section="product-cart">
|
||||
<ProductCart
|
||||
isOpen={cartOpen}
|
||||
onClose={() => setCartOpen(false)}
|
||||
items={cartItems}
|
||||
onQuantityChange={updateQuantity}
|
||||
onRemove={removeItem}
|
||||
total={`$${cartTotal}`}
|
||||
buttons={[
|
||||
{
|
||||
text: isCheckoutLoading ? "Processing..." : "Check Out", onClick: handleCheckout,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<div id="loading-section" data-section="loading-section">
|
||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||
<p className="text-foreground">Loading product...</p>
|
||||
</main>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
@@ -242,7 +117,140 @@ function ProductPageContent({ params }: ProductPageProps) {
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
if (!product) {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="not-found-section" data-section="not-found-section">
|
||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||
<div className="text-center">
|
||||
<p className="text-foreground mb-4">Product not found</p>
|
||||
<button
|
||||
onClick={() => router.push("/shop")}
|
||||
className="primary-button px-6 py-2 rounded-theme text-primary-cta-text"
|
||||
>
|
||||
Back to Shop
|
||||
</button>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="product-detail-card" data-section="product-detail-card">
|
||||
<ProductDetailCard
|
||||
layout="page"
|
||||
name={product.name}
|
||||
price={product.price}
|
||||
salePrice={meta.salePrice}
|
||||
rating={product.rating || 0}
|
||||
description={product.description}
|
||||
images={images}
|
||||
variants={variants.length > 0 ? variants : undefined}
|
||||
quantity={quantityVariant}
|
||||
ribbon={meta.ribbon}
|
||||
inventoryStatus={meta.inventoryStatus}
|
||||
inventoryQuantity={meta.inventoryQuantity}
|
||||
sku={meta.sku}
|
||||
buttons={[
|
||||
{ text: "Add To Cart", onClick: handleAddToCart },
|
||||
{ text: "Buy Now", onClick: handleBuyNow }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div id="product-cart" data-section="product-cart">
|
||||
<ProductCart
|
||||
isOpen={cartOpen}
|
||||
onClose={() => setCartOpen(false)}
|
||||
items={cartItems}
|
||||
onQuantityChange={updateQuantity}
|
||||
onRemove={removeItem}
|
||||
total={`$${cartTotal}`}
|
||||
buttons={[
|
||||
{
|
||||
text: isCheckoutLoading ? "Processing..." : "Check Out", onClick: handleCheckout,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { Suspense, useCallback } from "react";
|
||||
import ReactLenis from "lenis/react";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
|
||||
@@ -30,7 +29,10 @@ function ShopPageContent() {
|
||||
getCheckoutItems,
|
||||
} = useCart();
|
||||
|
||||
const { checkout, isLoading: isCheckoutLoading } = useCheckout();
|
||||
const {
|
||||
checkout,
|
||||
isLoading: isCheckoutLoading
|
||||
} = useCheckout();
|
||||
|
||||
const handleCheckout = useCallback(async () => {
|
||||
if (cartItems.length === 0) return;
|
||||
@@ -44,97 +46,36 @@ function ShopPageContent() {
|
||||
if (isLoading) {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="navbar" data-section="navbar">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="loading-section" data-section="loading-section">
|
||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||
<p className="text-foreground">Loading products...</p>
|
||||
</main>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="navbar" data-section="navbar">
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="product-catalog" data-section="product-catalog">
|
||||
<ProductCatalog
|
||||
layout="page"
|
||||
products={products}
|
||||
searchValue={search}
|
||||
onSearchChange={setSearch}
|
||||
searchPlaceholder="Search products..."
|
||||
filters={filters}
|
||||
emptyMessage="No products found"
|
||||
/>
|
||||
</div>
|
||||
<div id="product-cart" data-section="product-cart">
|
||||
<ProductCart
|
||||
isOpen={cartOpen}
|
||||
onClose={() => setCartOpen(false)}
|
||||
items={cartItems}
|
||||
onQuantityChange={updateQuantity}
|
||||
onRemove={removeItem}
|
||||
total={`$${cartTotal}`}
|
||||
buttons={[
|
||||
{
|
||||
text: isCheckoutLoading ? "Processing..." : "Check Out", onClick: handleCheckout,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<div id="loading-section" data-section="loading-section">
|
||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||
<p className="text-foreground">Loading products...</p>
|
||||
</main>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
@@ -146,7 +87,74 @@ function ShopPageContent() {
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLarge"
|
||||
background="aurora"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Support", id: "/#contact-support" },
|
||||
{ name: "Privacy", id: "/privacy" }
|
||||
]}
|
||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
<div id="product-catalog" data-section="product-catalog">
|
||||
<ProductCatalog
|
||||
layout="page"
|
||||
products={products}
|
||||
searchValue={search}
|
||||
onSearchChange={setSearch}
|
||||
searchPlaceholder="Search products..."
|
||||
filters={filters}
|
||||
emptyMessage="No products found"
|
||||
/>
|
||||
</div>
|
||||
<div id="product-cart" data-section="product-cart">
|
||||
<ProductCart
|
||||
isOpen={cartOpen}
|
||||
onClose={() => setCartOpen(false)}
|
||||
items={cartItems}
|
||||
onQuantityChange={updateQuantity}
|
||||
onRemove={removeItem}
|
||||
total={`$${cartTotal}`}
|
||||
buttons={[
|
||||
{
|
||||
text: isCheckoutLoading ? "Processing..." : "Check Out", onClick: handleCheckout,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/#contact-support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -157,4 +165,4 @@ export default function ShopPage() {
|
||||
<ShopPageContent />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -2,23 +2,23 @@
|
||||
/* Base units */
|
||||
/* --vw is set by ThemeProvider */
|
||||
|
||||
/* --background: #ffffff;;
|
||||
--card: #f8f0f0;;
|
||||
--foreground: #1a0000;;
|
||||
--primary-cta: #ffb6c1;;
|
||||
/* --background: #fbfaff;;
|
||||
--card: #f7f5ff;;
|
||||
--foreground: #0f0022;;
|
||||
--primary-cta: #8b5cf6;;
|
||||
--secondary-cta: #ffffff;;
|
||||
--accent: #f4c4c4;;
|
||||
--background-accent: #f09199;; */
|
||||
--accent: #d8cef5;;
|
||||
--background-accent: #c4a8f9;; */
|
||||
|
||||
--background: #ffffff;;
|
||||
--card: #f8f0f0;;
|
||||
--foreground: #1a0000;;
|
||||
--primary-cta: #ffb6c1;;
|
||||
--primary-cta-text: #ffffff;;
|
||||
--background: #fbfaff;;
|
||||
--card: #f7f5ff;;
|
||||
--foreground: #0f0022;;
|
||||
--primary-cta: #8b5cf6;;
|
||||
--primary-cta-text: #fbfaff;;
|
||||
--secondary-cta: #ffffff;;
|
||||
--secondary-cta-text: #1a0000;;
|
||||
--accent: #f4c4c4;;
|
||||
--background-accent: #f09199;;
|
||||
--secondary-cta-text: #0f0022;;
|
||||
--accent: #d8cef5;;
|
||||
--background-accent: #c4a8f9;;
|
||||
|
||||
/* text sizing - set by ThemeProvider */
|
||||
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);
|
||||
|
||||
77
src/app/support/page.tsx
Normal file
77
src/app/support/page.tsx
Normal file
@@ -0,0 +1,77 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import FeatureBorderGlow from '@/components/sections/feature/featureBorderGlow/FeatureBorderGlow';
|
||||
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
|
||||
import { Mail, Phone, Tv } from "lucide-react";
|
||||
|
||||
export default function SupportPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmall"
|
||||
background="noise"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="medium"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Glow Theory"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "About", id: "/#about" },
|
||||
{ name: "Live Shows", id: "/#live-shows" },
|
||||
{ name: "Bundles", id: "/#bundles" },
|
||||
{ name: "Reviews", id: "/#reviews" },
|
||||
{ name: "Support", id: "/support" },
|
||||
{ name: "Shop", id: "/shop" },
|
||||
{ name: "Blog", id: "/blog" }
|
||||
]}
|
||||
button={{ text: "Join Live", href: "/#live-shows" }}
|
||||
className="py-4 px-6 md:px-8"
|
||||
buttonClassName="shadow-md !bg-[--primary-cta] !text-[--primary-cta-text]"
|
||||
buttonTextClassName="font-medium"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="support" data-section="support">
|
||||
<FeatureBorderGlow
|
||||
title="How Can We Help You?"
|
||||
description="Choose from our support options to get the assistance you need, fast."
|
||||
features={[
|
||||
{ icon: Tv, title: "Live Show Support", description: "Get real-time help during our Whatnot live shows for immediate assistance. Visit our page: https://www.whatnot.com/user/glowtheory" },
|
||||
{ icon: Phone, title: "Order Inquiries", description: "Contact us for questions about your recent purchases, shipping, and returns. Call us at: 786-919-1243." },
|
||||
{ icon: Mail, title: "General Assistance", description: "For all other questions or general inquiries, our team is ready to help via email." }
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
className="bg-[--background-accent] text-[--foreground]"
|
||||
textBoxTitleClassName="text-4xl md:text-5xl lg:text-6xl font-thin tracking-wide"
|
||||
textBoxDescriptionClassName="text-lg md:text-xl font-light max-w-2xl mx-auto"
|
||||
cardClassName="rounded-[--radius] p-8 !bg-[--card] border border-[--accent] shadow-lg"
|
||||
iconContainerClassName="!bg-[--primary-cta] !text-[--primary-cta-text] rounded-full p-4 shadow-md"
|
||||
cardTitleClassName="text-xl md:text-2xl font-semibold mt-4"
|
||||
cardDescriptionClassName="text-md md:text-lg font-light text-balance"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoReveal
|
||||
logoText="Glow Theory"
|
||||
leftLink={{ text: "Customer Support", href: "/support" }}
|
||||
rightLink={{ text: "Privacy Policy", href: "/privacy" }}
|
||||
className="bg-[--background] text-[--foreground] py-6 px-4"
|
||||
linkClassName="text-[--foreground] hover:text-[--primary-cta] transition-colors duration-200"
|
||||
logoClassName="text-2xl font-bold tracking-tight"
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user