12 Commits

Author SHA1 Message Date
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 1492 additions and 305 deletions

View File

@@ -33,7 +33,7 @@ export default function BlogPage() {
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
<NavbarLayoutFloatingInline <NavbarLayoutFloatingInline
navItems={[ navItems={[
{ name: "Home", id: "/" }, { name: "Features", id: "#features" }, { name: "Products", id: "#products" }, { name: "Testimonials", id: "#testimonials" }, { name: "FAQ", id: "#faq" }, { name: "Contact", id: "#contact" }
]} ]}
brandName="Biorogo" brandName="Biorogo"
button={{ text: "Shop Now", href: "/shop" }} button={{ text: "Shop Now", href: "/shop" }}

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@ import ContactSplit from '@/components/sections/contact/ContactSplit';
import FaqDouble from '@/components/sections/faq/FaqDouble'; import FaqDouble from '@/components/sections/faq/FaqDouble';
import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven'; import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import HeroSplitKpi from '@/components/sections/hero/HeroSplitKpi'; import HeroOverlay from '@/components/sections/hero/HeroOverlay';
import ProductCardThree from '@/components/sections/product/ProductCardThree'; import ProductCardThree from '@/components/sections/product/ProductCardThree';
import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive'; import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive';
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
@@ -36,22 +36,21 @@ export default function LandingPage() {
</div> </div>
<div id="hero" data-section="hero"> <div id="hero" data-section="hero">
<HeroSplitKpi <HeroOverlay
title="Elevate Your Daily Rituals with Biorogo Cups" 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." description="Discover our curated collection of beautifully designed, sustainable, and handcrafted cups for every occasion. Experience the perfect blend of aesthetics and functionality."
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" tag="Artistry in Every Sip"
tagIcon={Sparkles} tagIcon={Sparkles}
tagAnimation="slide-up" 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" buttonAnimation="slide-up"
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="Collection of elegant Biorogo cups" imageAlt="Collection of elegant Biorogo cups"
mediaAnimation="opacity" mediaAnimation="opacity"
ariaLabel="Welcome to Biorogo Cups" ariaLabel="Welcome to Biorogo Cups"
imagePosition="right" textPosition="bottom-left"
showBlur={true}
showDimOverlay={false}
titleClassName="text-foreground text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold" 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" descriptionClassName="text-foreground/80 text-lg md:text-xl"
tagClassName="text-accent text-sm md:text-base" tagClassName="text-accent text-sm md:text-base"
@@ -167,7 +166,7 @@ export default function LandingPage() {
tagAnimation="slide-up" tagAnimation="slide-up"
background={{ variant: 'plain' }} background={{ variant: 'plain' }}
useInvertedBackground={false} 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" imageAlt="Someone holding a Biorogo cup"
mediaAnimation="opacity" mediaAnimation="opacity"
mediaPosition="right" mediaPosition="right"

View File

@@ -3,277 +3,97 @@
import { use, useCallback } from "react"; import { use, useCallback } from "react";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import ReactLenis from "lenis/react"; import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } => {
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline"; const navigationItems = [
import ProductDetailCard from "@/components/ecommerce/productDetail/ProductDetailCard"; { name: "Features", id: "/#features" },
import ProductCart from "@/components/ecommerce/cart/ProductCart"; { name: "Products", id: "/#products" },
import { useProductDetail } from "@/hooks/useProductDetail"; { name: "Testimonials", id: "/#testimonials" },
import { useCart } from "@/hooks/useCart"; { name: "FAQ", id: "/#faq" },
import { useCheckout } from "@/hooks/useCheckout"; { name: "Contact", id: "/#contact" }
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; ];
interface ProductPageProps { return (
params: Promise<{ id: string }>; <ThemeProvider
} defaultButtonVariant="slide-background"
defaultTextAnimation="background-highlight"
export default function ProductPage({ params }: ProductPageProps) { borderRadius="rounded"
const { id } = use(params); contentWidth="small"
const router = useRouter(); sizing="largeSmall"
background="none"
const { cardStyle="inset"
product, primaryButtonStyle="primary-glow"
isLoading, secondaryButtonStyle="layered"
images, headingFontWeight="extrabold"
meta, >
variants, <ReactLenis root>
quantityVariant, <div id="navbar" data-section="navbar">
selectedQuantity, <NavbarLayoutFloatingInline
createCartItem, navItems={navigationItems}
} = useProductDetail(id); brandName="Biorogo"
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
const { className="py-4 px-6 md:px-8 lg:px-12"
items: cartItems, navItemClassName="text-foreground hover:text-primary-cta"
isOpen: cartOpen, buttonClassName=""
setIsOpen: setCartOpen, buttonTextClassName=""
addItem, />
updateQuantity, </div>
removeItem, <div id="product-detail-card" data-section="product-detail-card">
total: cartTotal, <ProductDetailCard
getCheckoutItems, layout="page"
} = useCart(); name={product.name}
price={product.price}
const { buyNow, checkout, isLoading: isCheckoutLoading } = useCheckout(); salePrice={meta.salePrice}
rating={product.rating || 0}
const handleAddToCart = useCallback(() => { description={product.description}
const item = createCartItem(); images={images}
if (item) { variants={variants.length > 0 ? variants : undefined}
addItem(item); quantity={quantityVariant}
} ribbon={meta.ribbon}
}, [createCartItem, addItem]); inventoryStatus={meta.inventoryStatus}
inventoryQuantity={meta.inventoryQuantity}
const handleBuyNow = useCallback(() => { sku={meta.sku}
if (product) { buttons={[
buyNow(product, selectedQuantity); { text: "Add To Cart", onClick: handleAddToCart },
} { text: "Buy Now", onClick: handleBuyNow },
}, [product, selectedQuantity, buyNow]); ]}
/>
const handleCheckout = useCallback(async () => { </div>
if (cartItems.length === 0) return; <div id="product-cart" data-section="product-cart">
<ProductCart
const currentUrl = new URL(window.location.href); isOpen={cartOpen}
currentUrl.searchParams.set("success", "true"); onClose={() => setCartOpen(false)}
items={cartItems}
await checkout(getCheckoutItems(), { successUrl: currentUrl.toString() }); onQuantityChange={updateQuantity}
}, [cartItems, checkout, getCheckoutItems]); onRemove={removeItem}
total={`$${cartTotal}`}
if (isLoading) { buttons={[
return ( {
<ThemeProvider text: isCheckoutLoading ? "Processing..." : "Check Out", onClick: handleCheckout,
defaultButtonVariant="slide-background" },
defaultTextAnimation="background-highlight" ]}
borderRadius="rounded" />
contentWidth="small" </div>
sizing="largeSmall" <div id="footer" data-section="footer">
background="none" <FooterBaseCard
cardStyle="inset" logoText="Biorogo"
primaryButtonStyle="primary-glow" columns={[
secondaryButtonStyle="layered" { title: "Shop", items: [{ label: "All Cups", href: "/#products" }, { label: "Ceramic", href: "/#products" }, { label: "Glassware", href: "/#products" }, { label: "Travel Mugs", href: "/#products" }] },
headingFontWeight="extrabold" { 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" }] }
<ReactLenis root> ]}
<div id="navbar" data-section="navbar"> copyrightText="© 2024 Biorogo. All rights reserved."
<NavbarLayoutFloatingInline onPrivacyClick={() => console.log('Privacy policy clicked')}
navItems={[ ariaLabel="Site footer for Biorogo"
{ name: "Home", id: "/" }, className="py-16 md:py-20"
]} cardClassName="bg-card rounded-t-3xl shadow-lg border-t border-l border-r border-accent/20"
brandName="Biorogo" logoTextClassName="text-foreground text-3xl font-extrabold"
button={{ text: "Cart", onClick: () => setCartOpen(true) }} columnTitleClassName="text-foreground text-lg font-semibold"
className="py-4 px-6 md:px-8 lg:px-12" columnItemClassName="text-foreground/80 hover:text-primary-cta"
navItemClassName="text-foreground hover:text-primary-cta" copyrightTextClassName="text-foreground/60 text-sm"
buttonClassName="" privacyButtonClassName="text-foreground/60 text-sm hover:text-primary-cta"
buttonTextClassName="" />
/> </div>
</div> </ReactLenis>
<div id="loading-indicator" data-section="loading-indicator"> </ThemeProvider>
<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>
</ThemeProvider>
);
}
if (!product) {
return (
<ThemeProvider
defaultButtonVariant="slide-background"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="small"
sizing="largeSmall"
background="none"
cardStyle="inset"
primaryButtonStyle="primary-glow"
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>
</ThemeProvider>
);
}
return (
<ThemeProvider
defaultButtonVariant="slide-background"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="small"
sizing="largeSmall"
background="none"
cardStyle="inset"
primaryButtonStyle="primary-glow"
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-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: "/#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>
</ThemeProvider>
);
} }

View File

@@ -34,7 +34,7 @@ export default function ShopPage() {
<div id="navbar" data-section="navbar"> <div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline <NavbarLayoutFloatingInline
navItems={[ navItems={[
{ name: "Home", id: "/" }, { name: "Features", id: "/#features" }, { name: "Products", id: "/#products" }, { name: "Testimonials", id: "/#testimonials" }, { name: "FAQ", id: "/#faq" }, { name: "Contact", id: "/#contact" }
]} ]}
brandName="Biorogo" brandName="Biorogo"
button={{ text: "Cart", onClick: () => {} }} button={{ text: "Cart", onClick: () => {} }}
@@ -91,7 +91,7 @@ export default function ShopPage() {
<div id="navbar" data-section="navbar"> <div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline <NavbarLayoutFloatingInline
navItems={[ navItems={[
{ name: "Home", id: "/" }, { name: "Features", id: "/#features" }, { name: "Products", id: "/#products" }, { name: "Testimonials", id: "/#testimonials" }, { name: "FAQ", id: "/#faq" }, { name: "Contact", id: "/#contact" }
]} ]}
brandName="Biorogo" brandName="Biorogo"
button={{ text: "Cart", onClick: () => {} }} button={{ text: "Cart", onClick: () => {} }}

View File

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