29 Commits

Author SHA1 Message Date
ed19d6498b Update src/app/page.tsx 2026-02-21 14:34:03 +00:00
4bd99a4c6a Update src/app/shop/page.tsx 2026-02-21 14:33:19 +00:00
49b50c82fa Update src/app/shop/[id]/page.tsx 2026-02-21 14:33:18 +00:00
c602d7a26c Update src/app/page.tsx 2026-02-21 14:33:18 +00:00
747b00d839 Update src/app/layout.tsx 2026-02-21 14:33:17 +00:00
40216b35a7 Update src/app/blog/page.tsx 2026-02-21 14:33:16 +00:00
2362a12910 Update src/app/shop/page.tsx 2026-02-21 14:30:28 +00:00
d44f690532 Update src/app/shop/[id]/page.tsx 2026-02-21 14:30:27 +00:00
2f93c67fb0 Update src/app/page.tsx 2026-02-21 14:30:27 +00:00
5bccdb8433 Update src/app/layout.tsx 2026-02-21 14:30:26 +00:00
2ee0b19982 Update src/app/blog/page.tsx 2026-02-21 14:30:25 +00:00
82e5c7f12a Update src/app/shop/page.tsx 2026-02-21 14:23:36 +00:00
7838024917 Update src/app/shop/[id]/page.tsx 2026-02-21 14:23:36 +00:00
a2ac2dd3f0 Update src/app/page.tsx 2026-02-21 14:23:35 +00:00
47add6a9f4 Update src/app/layout.tsx 2026-02-21 14:23:34 +00:00
c466ffd5f2 Update src/app/blog/page.tsx 2026-02-21 14:23:33 +00:00
1c1597c0b8 Merge version_3 into main
Merge version_3 into main
2026-02-21 14:16:03 +00:00
e6e5c1ed62 Update src/app/shop/page.tsx 2026-02-21 14:15:58 +00:00
693b21ba5f Update src/app/shop/[id]/page.tsx 2026-02-21 14:15:58 +00:00
d237c1406a Update src/app/page.tsx 2026-02-21 14:15:57 +00:00
8fc1133da5 Update src/app/layout.tsx 2026-02-21 14:15:56 +00:00
c715903b30 Update src/app/blog/page.tsx 2026-02-21 14:15:55 +00:00
e56246cab4 Merge version_2 into main
Merge version_2 into main
2026-02-19 12:54:07 +00:00
bfcf9c29c7 Update src/app/page.tsx 2026-02-19 12:54:03 +00:00
6416c3a4a1 Update src/app/layout.tsx 2026-02-19 12:54:02 +00:00
4c7174208d Merge version_2 into main
Merge version_2 into main
2026-02-19 12:50:13 +00:00
fc8fad0735 Update src/app/styles/variables.css 2026-02-19 12:50:08 +00:00
26a1ced5f6 Merge version_1 into main
Merge version_1 into main
2026-02-19 12:06:28 +00:00
bdc7cde9c3 Merge version_1 into main
Merge version_1 into main
2026-02-19 12:03:45 +00:00
6 changed files with 432 additions and 339 deletions

View File

@@ -1,6 +1,5 @@
"use client";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import { useBlogPosts } from "@/hooks/useBlogPosts";
@@ -16,6 +15,17 @@ import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
export default function BlogPage() {
const { posts, isLoading } = useBlogPosts();
const navItems = [
{ name: "Home", id: "/" },
{ name: "Shop", id: "/shop" },
{ name: "Blog", id: "/blog" },
{ name: "Features", id: "/#features" },
{ name: "Products", id: "/#products" },
{ name: "Testimonials", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Contact", id: "/#contact" }
];
return (
<ThemeProvider
defaultButtonVariant="slide-background"
@@ -29,80 +39,76 @@ export default function BlogPage() {
secondaryButtonStyle="layered"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
]}
brandName="Biorogo"
button={{ text: "Shop Now", href: "/shop" }}
className="py-4 px-6 md:px-8 lg:px-12"
navItemClassName="text-foreground hover:text-primary-cta"
buttonClassName=""
buttonTextClassName=""
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={navItems}
brandName="Biorogo"
button={{ text: "Shop Now", href: "/shop" }}
className="py-4 px-6 md:px-8 lg:px-12"
navItemClassName="text-foreground hover:text-primary-cta"
buttonClassName=""
buttonTextClassName=""
/>
</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">
<BlogCardTwo
blogs={posts}
title="Latest Articles"
description="Insights and updates from our team"
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
carouselMode="buttons"
/>
</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">
<BlogCardTwo
blogs={posts}
title="Latest Articles"
description="Insights and updates from our team"
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
carouselMode="buttons"
/>
</div>
)}
<div id="footer" data-section="footer">
<FooterBaseCard
logoText="Biorogo"
columns={[
{
title: "Shop", items: [
{ label: "All Cups", href: "/#products" },
{ label: "Ceramic", href: "/#products" },
{ label: "Glassware", href: "/#products" },
{ label: "Travel Mugs", href: "/#products" },
],
},
{
title: "Company", items: [
{ label: "About Us", href: "/#features" },
{ label: "Testimonials", href: "/#testimonials" },
{ label: "FAQ", href: "/#faq" },
],
},
{
title: "Support", items: [
{ label: "Contact Us", href: "/#contact" },
{ label: "Shipping", href: "/shipping" },
{ label: "Returns", href: "/returns" },
{ label: "Sitemap", href: "/sitemap" },
],
},
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ReactLenis>
<div id="footer" data-section="footer">
<FooterBaseCard
logoText="Biorogo"
columns={[
{
title: "Shop", items: [
{ label: "All Cups", href: "/shop" },
{ label: "Ceramic", href: "/shop" },
{ label: "Glassware", href: "/shop" },
{ label: "Travel Mugs", href: "/shop" },
],
},
{
title: "Company", items: [
{ label: "About Us", href: "/#features" },
{ label: "Testimonials", href: "/#testimonials" },
{ label: "FAQ", href: "/#faq" },
],
},
{
title: "Support", items: [
{ label: "Contact Us", href: "/#contact" },
{ label: "Shipping", href: "/shipping" },
{ label: "Returns", href: "/returns" },
{ label: "Sitemap", href: "/sitemap" },
],
},
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ThemeProvider>
);
}

View File

@@ -17,13 +17,13 @@ export const metadata: Metadata = {
title: "Biorogo - Elevate Your Daily Rituals with Premium Cups", description: "Discover Biorogo's exquisite collection of handcrafted, sustainable ceramic, glass, and bamboo cups. Elevate your coffee, tea, and daily drinking experience.", openGraph: {
title: "Biorogo - Premium Cups for Conscious Living", description: "Explore Biorogo's curated collection of beautifully designed and sustainable cups, perfect for every moment.", url: "https://biorogo.com", siteName: "Biorogo", images: [
{
url: "https://img.b2bpic.net/free-photo/closeup-beautiful-grey-ceramic-cups-with-patterns_169016-20585.jpg", alt: "Collection of elegant Biorogo cups"
url: "https://images.unsplash.com/photo-1579294246101-526487e47a50?q=80&w=2940&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", alt: "Coffee being poured into a Biorogo cup"
}
],
type: "website"
},
twitter: {
card: "summary_large_image", title: "Biorogo - Elevate Your Daily Rituals with Premium Cups", description: "Discover Biorogo's exquisite collection of handcrafted, sustainable ceramic, glass, and bamboo cups.", images: ["https://img.b2bpic.net/free-photo/closeup-beautiful-grey-ceramic-cups-with-patterns_169016-20585.jpg"]
card: "summary_large_image", title: "Biorogo - Elevate Your Daily Rituals with Premium Cups", description: "Discover Biorogo's exquisite collection of handcrafted, sustainable ceramic, glass, and bamboo cups.", images: ["https://images.unsplash.com/photo-1579294246101-526487e47a50?q=80&w=2940&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"]
},
robots: {
index: true,
@@ -91,7 +91,9 @@ export default function RootLayout({
' background-color: #4d96ff05 !important;' +
'}' +
'img.webild-hover,' +
'img.webild-selected {' +
'img.webild-selected,' +
'video.webild-hover,' +
'video.webild-selected {' +
' outline-offset: 2px !important;' +
'}' +
'.webild-element-type-label {' +
@@ -163,6 +165,10 @@ export default function RootLayout({
return 'Image';
}
if (tagName === 'video') {
return 'Video';
}
const backgroundImage = computedStyle.backgroundImage;
if (backgroundImage && backgroundImage !== 'none') {
const urlMatch = backgroundImage.match(/url(['"]?([^'")]+)['"]?)/);
@@ -245,6 +251,38 @@ export default function RootLayout({
return url;
};
const getMediaTypeFromUrl = (url) => {
const videoExts = ['.mp4', '.webm', '.ogg', '.mov', '.avi', '.mkv', '.m4v', '.wmv'];
const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg', '.bmp', '.ico', '.tiff', '.avif'];
try {
const pathname = new URL(url).pathname.toLowerCase();
if (videoExts.some(function(ext) { return pathname.endsWith(ext); })) return 'video';
if (imageExts.some(function(ext) { return pathname.endsWith(ext); })) return 'image';
} catch(e) {}
return 'unknown';
};
const swapMediaElement = (oldEl, newTag, newSrc) => {
const newEl = document.createElement(newTag);
Array.from(oldEl.attributes).forEach(function(attr) {
if (attr.name !== 'src' && attr.name !== 'alt' && attr.name !== 'srcset' && attr.name !== 'autoplay' && attr.name !== 'loop' && attr.name !== 'muted' && attr.name !== 'playsinline') {
try { newEl.setAttribute(attr.name, attr.value); } catch(e) {}
}
});
newEl.style.cssText = oldEl.style.cssText;
if (newTag === 'video') {
newEl.setAttribute('autoplay', '');
newEl.setAttribute('loop', '');
newEl.setAttribute('muted', '');
newEl.setAttribute('playsinline', '');
}
newEl.src = newSrc;
if (oldEl.parentNode) {
oldEl.parentNode.replaceChild(newEl, oldEl);
}
return newEl;
};
const getElementInfo = (element, assignId = false) => {
const rect = element.getBoundingClientRect();
const tagName = element.tagName.toLowerCase();
@@ -287,7 +325,18 @@ export default function RootLayout({
isBackground: false
};
}
if (tagName === 'video') {
const rawSrc = element.src || element.currentSrc || (element.querySelector('source') && element.querySelector('source').src) || '';
const resolvedSrc = extractOriginalUrl(rawSrc);
info.imageData = {
src: resolvedSrc,
alt: element.getAttribute('aria-label') || undefined,
isBackground: false,
isVideo: true
};
}
const computedStyle = window.getComputedStyle(element);
const backgroundImage = computedStyle.backgroundImage;
if (backgroundImage && backgroundImage !== 'none') {
@@ -335,7 +384,8 @@ export default function RootLayout({
const tagName = element.tagName?.toLowerCase();
if (invalidElements.includes(tagName)) return false;
const isImage = tagName === 'img';
if (isImage) return true;
const isVideo = tagName === 'video';
if (isImage || isVideo) return true;
const hasInnerHTML = element.innerHTML && element.innerHTML.trim().length > 0;
const hasTextContent = element.textContent && element.textContent.trim().length > 0;
const hasChildren = element.children && element.children.length > 0;
@@ -375,7 +425,7 @@ export default function RootLayout({
node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim().length > 0
);
const hasImages = element.tagName === 'IMG' || computedStyle.backgroundImage !== 'none' || element.querySelector('img');
const hasImages = element.tagName === 'IMG' || element.tagName === 'VIDEO' || computedStyle.backgroundImage !== 'none' || element.querySelector('img') || element.querySelector('video');
const isInteractive = ['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(element.tagName);
const hasFewChildren = element.children.length <= 3;
const area = rect.width * rect.height;
@@ -1056,11 +1106,22 @@ export default function RootLayout({
updateButtonText(element, change.oldValue);
}
} else if (change.type === 'replaceImage') {
const isBackground = element.tagName.toLowerCase() !== 'img';
const revertTag = element.tagName.toLowerCase();
const isBackground = revertTag !== 'img' && revertTag !== 'video';
if (isBackground) {
element.style.backgroundImage = change.oldValue ? 'url(' + change.oldValue + ')' : '';
} else {
element.src = change.oldValue;
const oldMediaType = getMediaTypeFromUrl(change.oldValue);
if (revertTag === 'video' && oldMediaType === 'image') {
swapMediaElement(element, 'img', change.oldValue);
} else if (revertTag === 'img' && oldMediaType === 'video') {
swapMediaElement(element, 'video', change.oldValue);
} else if (revertTag === 'video') {
element.src = change.oldValue;
element.load();
} else {
element.src = change.oldValue;
}
}
}
} catch (err) {
@@ -1160,7 +1221,7 @@ export default function RootLayout({
if (!isActive) return;
if (e.data.type === 'webild-replace-image') {
const { selector, newSrc, isBackground } = e.data.data;
const { selector, newSrc, isBackground, allowMediaTypeSwap } = e.data.data;
let element = null;
try {
@@ -1191,7 +1252,32 @@ export default function RootLayout({
replaced = true;
} else if (element.tagName.toLowerCase() === 'img') {
oldValue = element.src;
element.src = newSrc;
const newMediaType = getMediaTypeFromUrl(newSrc);
if (newMediaType === 'video' && allowMediaTypeSwap) {
const swapped = swapMediaElement(element, 'video', newSrc);
if (selectedElement === element) selectedElement = swapped;
element = swapped;
} else {
element.src = newSrc;
}
replaced = true;
} else if (element.tagName.toLowerCase() === 'video') {
oldValue = element.src || element.currentSrc || '';
const newMediaType = getMediaTypeFromUrl(newSrc);
const sources = element.querySelectorAll('source');
if (newMediaType === 'image' && allowMediaTypeSwap) {
const swapped = swapMediaElement(element, 'img', newSrc);
if (selectedElement === element) selectedElement = swapped;
element = swapped;
} else {
if (sources.length > 0) {
sources.forEach(function(source) { source.src = newSrc; });
element.load();
} else {
element.src = newSrc;
element.load();
}
}
replaced = true;
} else {
const hasBackgroundImage = window.getComputedStyle(element).backgroundImage !== 'none';

View File

@@ -5,7 +5,7 @@ import ContactSplit from '@/components/sections/contact/ContactSplit';
import FaqDouble from '@/components/sections/faq/FaqDouble';
import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import HeroSplitKpi from '@/components/sections/hero/HeroSplitKpi';
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';
import ProductCardThree from '@/components/sections/product/ProductCardThree';
import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive';
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
@@ -27,7 +27,7 @@ export default function LandingPage() {
>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={[{ name: "Features", id: "features" }, { name: "Products", id: "products" }, { name: "Testimonials", id: "testimonials" }, { name: "FAQ", id: "faq" }, { name: "Contact", id: "contact" }]}
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }, { name: "Blog", id: "/blog" }, { name: "Features", id: "features" }, { name: "Products", id: "products" }, { name: "Testimonials", id: "testimonials" }, { name: "FAQ", id: "faq" }, { name: "Contact", id: "contact" }]}
brandName="Biorogo"
button={{ text: "Shop Now", href: "#products" }}
className="py-4 px-6 md:px-8 lg:px-12"
@@ -36,22 +36,23 @@ export default function LandingPage() {
</div>
<div id="hero" data-section="hero">
<HeroSplitKpi
title="Elevate Your Daily Rituals with Biorogo Cups"
description="Discover our curated collection of beautifully designed, sustainable, and handcrafted cups for every occasion. Experience the perfect blend of aesthetics and functionality."
<HeroSplitDualMedia
title="Elevate Your Daily Rituals with Biorogo's Crafted Cups"
description="Discover our beautifully designed, sustainable, and handcrafted cups for every occasion. Experience the perfect blend of aesthetics and functionality tailored for your daily joy."
background={{ variant: 'plain' }}
kpis={[{ value: "1000+", label: "Happy Customers" }, { value: "50+", label: "Unique Designs" }, { value: "Eco-Friendly", label: "Materials" }]}
enableKpiAnimation={true}
tag="Artistry in Every Sip"
tagIcon={Sparkles}
tagAnimation="slide-up"
buttons={[{ text: "Explore Collection", href: "#products" }, { text: "Learn More", href: "#features" }]}
buttons={[{ text: "Explore Collection", href: "#products" }, { text: "Learn More", href: "#features" }]}
buttonAnimation="slide-up"
imageSrc="https://img.b2bpic.net/free-photo/closeup-beautiful-grey-ceramic-cups-with-patterns_169016-20585.jpg"
imageAlt="Collection of elegant Biorogo cups"
mediaItems={[
{ imageSrc: "https://images.unsplash.com/photo-1579294246101-526487e47a50?q=80&w=2940&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", imageAlt: "Coffee being poured into a Biorogo cup" },
{ imageSrc: "https://images.unsplash.com/photo-1549488339-a99f1807d476?q=80&w=2940&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", imageAlt: "Person holding a handcrafted Biorogo mug" }
]}
mediaAnimation="opacity"
rating={5}
ratingText="Loved by Thousands of Customers"
ariaLabel="Welcome to Biorogo Cups"
imagePosition="right"
titleClassName="text-foreground text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold"
descriptionClassName="text-foreground/80 text-lg md:text-xl"
tagClassName="text-accent text-sm md:text-base"
@@ -66,7 +67,7 @@ export default function LandingPage() {
features={[
{ id: 1, title: "Artisan Craftsmanship", description: "Each Biorogo cup is meticulously handcrafted by skilled artisans, ensuring unique character and superior quality that stands the test of time.", imageSrc: "https://img.b2bpic.net/free-photo/couple-with-brown-aprons-making-vase_1157-30724.jpg", imageAlt: "Hands shaping clay on a pottery wheel." },
{ id: 2, title: "Sustainable Materials", description: "We prioritize the planet by sourcing only eco-friendly and sustainably harvested materials, offering you beautiful products with a minimal environmental footprint.", imageSrc: "https://img.b2bpic.net/free-photo/close-up-couple-holding-cup-coffee_23-2147918181.jpg", imageAlt: "Green leaves growing out of a recycled cup." },
{ id: 3, title: "Thoughtful Design", description: "Our designs blend modern aesthetics with ergonomic comfort, making every sip an experience. From minimalist elegance to vibrant patterns, there's a Biorogo cup for every style.", imageSrc: "https://img.b2bpic.net/free-photo/three-cups-coffee-wooden-board_114579-52730.jpg", imageAlt: "A collection of stylish, modern designed cups." }
{ id: 3, title: "Thoughtful Design", description: "Our designs blend modern aesthetics with ergonomic comfort, making every sip an experience. From minimalist elegance to vibrant patterns, there's a Biorogo cup for every style.", imageSrc: "https://img.b2bpic.net/free-photo/three-cups-coffee-wooden-board_114579-52730.jpg?_wi=1", imageAlt: "A collection of stylish, modern designed cups." }
]}
animationType="slide-up"
textboxLayout="default"
@@ -83,10 +84,10 @@ export default function LandingPage() {
<div id="products" data-section="products">
<ProductCardThree
products={[
{ id: "1", name: "Minimalist Ceramic Mug", price: "$24.99", imageSrc: "https://img.b2bpic.net/free-photo/hot-espresso-tea-coffee-food_1203-4245.jpg", imageAlt: "A simple white ceramic mug" },
{ id: "2", name: "Eco-Friendly Glass Tumbler", price: "$19.99", imageSrc: "https://img.b2bpic.net/free-photo/coffee-cups-table_93675-130857.jpg", imageAlt: "A clear, eco-friendly glass tumbler" },
{ id: "3", name: "Bamboo Travel Cup", price: "$29.99", imageSrc: "https://img.b2bpic.net/free-photo/three-cups-coffee-wooden-board_114579-52730.jpg", imageAlt: "A reusable bamboo travel cup with lid" },
{ id: "4", name: "Artisan Espresso Cup Set", price: "$39.99", imageSrc: "https://img.b2bpic.net/free-photo/upside-down-cups-rack_53876-63375.jpg", imageAlt: "A small, artisan-crafted espresso cup" }
{ id: "1", name: "Minimalist Ceramic Mug", price: "$24.99", imageSrc: "https://img.b2bpic.net/free-photo/hot-espresso-tea-coffee-food_1203-4245.jpg?_wi=1", imageAlt: "A simple white ceramic mug" },
{ id: "2", name: "Eco-Friendly Glass Tumbler", price: "$19.99", imageSrc: "https://img.b2bpic.net/free-photo/coffee-cups-table_93675-130857.jpg?_wi=1", imageAlt: "A clear, eco-friendly glass tumbler" },
{ id: "3", name: "Bamboo Travel Cup", price: "$29.99", imageSrc: "https://img.b2bpic.net/free-photo/three-cups-coffee-wooden-board_114579-52730.jpg?_wi=2", imageAlt: "A reusable bamboo travel cup with lid" },
{ id: "4", name: "Artisan Espresso Cup Set", price: "$39.99", imageSrc: "https://img.b2bpic.net/free-photo/upside-down-cups-rack_53876-63375.jpg?_wi=1", imageAlt: "A small, artisan-crafted espresso cup" }
]}
carouselMode="buttons"
gridVariant="four-items-2x2-equal-grid"
@@ -109,10 +110,10 @@ export default function LandingPage() {
<div id="testimonials" data-section="testimonials">
<TestimonialCardFive
testimonials={[
{ id: "1", name: "Sarah L., Coffee Enthusiast", date: "Date: October 26, 2023", title: "My new favorite mug!", quote: "The craftsmanship of my Biorogo mug is exceptional. It keeps my coffee warm longer and feels so comfortable in hand. Truly elevates my morning ritual.", tag: "Ceramic Collection", avatarSrc: "https://img.b2bpic.net/free-photo/portrait-young-smiling-pretty-girl-plaid-shirt-posing_114579-70643.jpg", avatarAlt: "Sarah L. avatar", imageSrc: "https://img.b2bpic.net/free-photo/hot-espresso-tea-coffee-food_1203-4245.jpg", imageAlt: "Minimalist ceramic mug" },
{ id: "2", name: "Mark T., Eco-Conscious Shopper", date: "Date: November 15, 2023", title: "Stylish and sustainable", quote: "I love my Biorogo glass tumbler. It's perfect for my iced coffees and I feel good knowing it's made from recycled materials. Plus, it looks great!", tag: "Glassware Line", avatarSrc: "https://img.b2bpic.net/free-photo/young-woman-green-cozy-large-knitted-sweater-cute-smiling-with-crossed-hands_343596-7420.jpg", avatarAlt: "Mark T. avatar", imageSrc: "https://img.b2bpic.net/free-photo/coffee-cups-table_93675-130857.jpg", imageAlt: "Eco-friendly glass tumbler" },
{ id: "3", name: "Emily R., Daily Commuter", date: "Date: December 01, 2023", title: "Travel cup essential", quote: "The bamboo travel cup is a game-changer. It's lightweight, spill-proof, and keeps my tea hot during my busy commute. Highly recommend!", tag: "Travel Gear", avatarSrc: "https://img.b2bpic.net/free-photo/close-up-confident-corporate-woman-professional-entrepreneur-smiling-cross-arms-chest-smiling-enthusiastic-standing-white-background_1258-85600.jpg", avatarAlt: "Emily R. avatar", imageSrc: "https://img.b2bpic.net/free-photo/three-cups-coffee-wooden-board_114579-52730.jpg", imageAlt: "Bamboo travel cup" },
{ id: "4", name: "David K., Home Barista", date: "Date: January 10, 2024", title: "Perfect espresso experience", quote: "The artisan espresso cups are beautiful and truly enhance the coffee experience. The quality is evident, and they're a joy to use daily.", tag: "Espresso Series", avatarSrc: "https://img.b2bpic.net/free-photo/smiling-face-gorgeous-latin-american-woman_1262-5766.jpg", avatarAlt: "David K. avatar", imageSrc: "https://img.b2bpic.net/free-photo/upside-down-cups-rack_53876-63375.jpg", imageAlt: "Artisan espresso cup" }
{ id: "1", name: "Sarah L., Coffee Enthusiast", date: "Date: October 26, 2023", title: "My new favorite mug!", quote: "The craftsmanship of my Biorogo mug is exceptional. It keeps my coffee warm longer and feels so comfortable in hand. Truly elevates my morning ritual.", tag: "Ceramic Collection", avatarSrc: "https://img.b2bpic.net/free-photo/portrait-young-smiling-pretty-girl-plaid-shirt-posing_114579-70643.jpg", avatarAlt: "Sarah L. avatar", imageSrc: "https://img.b2bpic.net/free-photo/hot-espresso-tea-coffee-food_1203-4245.jpg?_wi=2", imageAlt: "Minimalist ceramic mug" },
{ id: "2", name: "Mark T., Eco-Conscious Shopper", date: "Date: November 15, 2023", title: "Stylish and sustainable", quote: "I love my Biorogo glass tumbler. It's perfect for my iced coffees and I feel good knowing it's made from recycled materials. Plus, it looks great!", tag: "Glassware Line", avatarSrc: "https://img.b2bpic.net/free-photo/young-woman-green-cozy-large-knitted-sweater-cute-smiling-with-crossed-hands_343596-7420.jpg", avatarAlt: "Mark T. avatar", imageSrc: "https://img.b2bpic.net/free-photo/coffee-cups-table_93675-130857.jpg?_wi=2", imageAlt: "Eco-friendly glass tumbler" },
{ id: "3", name: "Emily R., Daily Commuter", date: "Date: December 01, 2023", title: "Travel cup essential", quote: "The bamboo travel cup is a game-changer. It's lightweight, spill-proof, and keeps my tea hot during my busy commute. Highly recommend!", tag: "Travel Gear", avatarSrc: "https://img.b2bpic.net/free-photo/close-up-confident-corporate-woman-professional-entrepreneur-smiling-cross-arms-chest-smiling-enthusiastic-standing-white-background_1258-85600.jpg", avatarAlt: "Emily R. avatar", imageSrc: "https://img.b2bpic.net/free-photo/three-cups-coffee-wooden-board_114579-52730.jpg?_wi=3", imageAlt: "Bamboo travel cup" },
{ id: "4", name: "David K., Home Barista", date: "Date: January 10, 2024", title: "Perfect espresso experience", quote: "The artisan espresso cups are beautiful and truly enhance the coffee experience. The quality is evident, and they're a joy to use daily.", tag: "Espresso Series", avatarSrc: "https://img.b2bpic.net/free-photo/smiling-face-gorgeous-latin-american-woman_1262-5766.jpg", avatarAlt: "David K. avatar", imageSrc: "https://img.b2bpic.net/free-photo/upside-down-cups-rack_53876-63375.jpg?_wi=2", imageAlt: "Artisan espresso cup" }
]}
title="What Our Customers Say"
description="Hear from the Biorogo community about their favorite cups and why they love them."
@@ -167,7 +168,7 @@ export default function LandingPage() {
tagAnimation="slide-up"
background={{ variant: 'plain' }}
useInvertedBackground={false}
imageSrc="https://img.b2bpic.net/free-photo/closeup-beautiful-grey-ceramic-cups-with-patterns_169016-20585.jpg"
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_34my1kGeblbsCcwUUCcjBY9WFkg/uploaded-1771505618512-apxd95pq.mp4"
imageAlt="Someone holding a Biorogo cup"
mediaAnimation="opacity"
mediaPosition="right"

View File

@@ -2,9 +2,8 @@
import { use, useCallback } from "react";
import { useRouter } from "next/navigation";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import ProductDetailCard from "@/components/ecommerce/productDetail/ProductDetailCard";
import ProductCart from "@/components/ecommerce/cart/ProductCart";
import { useProductDetail } from "@/hooks/useProductDetail";
@@ -44,6 +43,17 @@ export default function ProductPage({ params }: ProductPageProps) {
const { buyNow, checkout, isLoading: isCheckoutLoading } = useCheckout();
const navItems = [
{ name: "Home", id: "/" },
{ name: "Shop", id: "/shop" },
{ name: "Blog", id: "/blog" },
{ name: "Features", id: "/#features" },
{ name: "Products", id: "/#products" },
{ name: "Testimonials", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Contact", id: "/#contact" }
];
const handleAddToCart = useCallback(() => {
const item = createCartItem();
if (item) {
@@ -80,12 +90,9 @@ export default function ProductPage({ params }: ProductPageProps) {
secondaryButtonStyle="layered"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="navbar" data-section="navbar">
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
]}
navItems={navItems}
brandName="Biorogo"
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
className="py-4 px-6 md:px-8 lg:px-12"
@@ -93,33 +100,32 @@ export default function ProductPage({ params }: ProductPageProps) {
buttonClassName=""
buttonTextClassName=""
/>
</div>
<div id="loading-indicator" data-section="loading-indicator">
<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">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/#products" }, { label: "Ceramic", href: "/#products" }, { label: "Glassware", href: "/#products" }, { label: "Travel Mugs", href: "/#products" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ReactLenis>
</div>
<div id="loading-indicator" data-section="loading-indicator">
<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">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/shop" }, { label: "Ceramic", href: "/shop" }, { label: "Glassware", href: "/shop" }, { label: "Travel Mugs", href: "/shop" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ThemeProvider>
);
}
@@ -138,54 +144,50 @@ export default function ProductPage({ params }: ProductPageProps) {
secondaryButtonStyle="layered"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
]}
brandName="Biorogo"
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
className="py-4 px-6 md:px-8 lg:px-12"
navItemClassName="text-foreground hover:text-primary-cta"
buttonClassName=""
buttonTextClassName=""
/>
</div>
<div id="product-not-found" data-section="product-not-found">
<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"
>
Back to Shop
</button>
</div>
</main>
</div>
<div id="footer" data-section="footer">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/#products" }, { label: "Ceramic", href: "/#products" }, { label: "Glassware", href: "/#products" }, { label: "Travel Mugs", href: "/#products" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ReactLenis>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={navItems}
brandName="Biorogo"
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
className="py-4 px-6 md:px-8 lg:px-12"
navItemClassName="text-foreground hover:text-primary-cta"
buttonClassName=""
buttonTextClassName=""
/>
</div>
<div id="product-not-found" data-section="product-not-found">
<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"
>
Back to Shop
</button>
</div>
</main>
</div>
<div id="footer" data-section="footer">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/shop" }, { label: "Ceramic", href: "/shop" }, { label: "Glassware", href: "/shop" }, { label: "Travel Mugs", href: "/shop" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ThemeProvider>
);
}
@@ -203,12 +205,9 @@ export default function ProductPage({ params }: ProductPageProps) {
secondaryButtonStyle="layered"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="navbar" data-section="navbar">
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
]}
navItems={navItems}
brandName="Biorogo"
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
className="py-4 px-6 md:px-8 lg:px-12"
@@ -216,64 +215,63 @@ export default function ProductPage({ params }: ProductPageProps) {
buttonClassName=""
buttonTextClassName=""
/>
</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-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">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/shop" }, { label: "Ceramic", href: "/shop" }, { label: "Glassware", href: "/shop" }, { label: "Travel Mugs", href: "/shop" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</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">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/#products" }, { label: "Ceramic", href: "/#products" }, { label: "Glassware", href: "/#products" }, { label: "Travel Mugs", href: "/#products" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ReactLenis>
</div>
</ThemeProvider>
);
}

View File

@@ -1,8 +1,7 @@
"use client";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import ProductCatalog from "@/components/ecommerce/productCatalog/ProductCatalog";
import { useProductCatalog } from "@/hooks/useProductCatalog";
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
@@ -16,6 +15,17 @@ export default function ShopPage() {
filters,
} = useProductCatalog({ basePath: "/shop" });
const navItems = [
{ name: "Home", id: "/" },
{ name: "Shop", id: "/shop" },
{ name: "Blog", id: "/blog" },
{ name: "Features", id: "/#features" },
{ name: "Products", id: "/#products" },
{ name: "Testimonials", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Contact", id: "/#contact" }
];
if (isLoading) {
return (
<ThemeProvider
@@ -30,46 +40,42 @@ export default function ShopPage() {
secondaryButtonStyle="layered"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
]}
brandName="Biorogo"
button={{ text: "Cart", onClick: () => {} }}
className="py-4 px-6 md:px-8 lg:px-12"
navItemClassName="text-foreground hover:text-primary-cta"
buttonClassName=""
buttonTextClassName=""
/>
</div>
<div id="loading-indicator" data-section="loading-indicator">
<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">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/#products" }, { label: "Ceramic", href: "/#products" }, { label: "Glassware", href: "/#products" }, { label: "Travel Mugs", href: "/#products" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ReactLenis>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={navItems}
brandName="Biorogo"
button={{ text: "Cart", onClick: () => {} }}
className="py-4 px-6 md:px-8 lg:px-12"
navItemClassName="text-foreground hover:text-primary-cta"
buttonClassName=""
buttonTextClassName=""
/>
</div>
<div id="loading-indicator" data-section="loading-indicator">
<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">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/shop" }, { label: "Ceramic", href: "/shop" }, { label: "Glassware", href: "/shop" }, { label: "Travel Mugs", href: "/shop" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ThemeProvider>
);
}
@@ -87,12 +93,9 @@ export default function ShopPage() {
secondaryButtonStyle="layered"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="navbar" data-section="navbar">
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
]}
navItems={navItems}
brandName="Biorogo"
button={{ text: "Cart", onClick: () => {} }}
className="py-4 px-6 md:px-8 lg:px-12"
@@ -100,39 +103,38 @@ export default function ShopPage() {
buttonClassName=""
buttonTextClassName=""
/>
</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-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="footer" data-section="footer">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/shop" }, { label: "Ceramic", href: "/shop" }, { label: "Glassware", href: "/shop" }, { label: "Travel Mugs", href: "/shop" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseCard
logoText="Biorogo"
columns={[
{ title: "Shop", items: [{ label: "All Cups", href: "/#products" }, { label: "Ceramic", href: "/#products" }, { label: "Glassware", href: "/#products" }, { label: "Travel Mugs", href: "/#products" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#features" }, { label: "Testimonials", href: "/#testimonials" }, { label: "FAQ", href: "/#faq" }] },
{ title: "Support", items: [{ label: "Contact Us", href: "/#contact" }, { label: "Shipping", href: "/shipping" }, { label: "Returns", href: "/returns" }, { label: "Sitemap", href: "/sitemap" }] }
]}
copyrightText="© 2024 Biorogo. All rights reserved."
onPrivacyClick={() => console.log('Privacy policy clicked')}
ariaLabel="Site footer for Biorogo"
className="py-16 md:py-20"
cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
logoTextClassName="text-foreground text-3xl font-extrabold"
columnTitleClassName="text-foreground text-lg font-semibold"
columnItemClassName="text-foreground/80 hover:text-primary-cta"
copyrightTextClassName="text-foreground/60 text-sm"
privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
/>
</div>
</ReactLenis>
</div>
</ThemeProvider>
);
}

View File

@@ -2,21 +2,21 @@
/* Base units */
/* --vw is set by ThemeProvider */
/* --background: #f6f0e9;;
--card: #efe7dd;;
--foreground: #2b180a;;
--primary-cta: #2b180a;;
--secondary-cta: #efe7dd;;
--accent: #94877c;;
--background-accent: #afa094;; */
/* --background: #060000;;
--card: #1d0d0d;;
--foreground: #ffe6e6;;
--primary-cta: #ff3d4a;;
--secondary-cta: #1f0a0a;;
--accent: #7b2d2d;;
--background-accent: #b8111f;; */
--background: #f6f0e9;;
--card: #efe7dd;;
--foreground: #2b180a;;
--primary-cta: #2b180a;;
--secondary-cta: #efe7dd;;
--accent: #94877c;;
--background-accent: #afa094;;
--background: #060000;;
--card: #1d0d0d;;
--foreground: #ffe6e6;;
--primary-cta: #ff3d4a;;
--secondary-cta: #1f0a0a;;
--accent: #7b2d2d;;
--background-accent: #b8111f;;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);