Merge version_1 into main
Merge version_1 into main
This commit was merged in pull request #2.
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
use client";
|
"use client";
|
||||||
|
|
||||||
import ReactLenis from "lenis/react";
|
|
||||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||||
import BlogCardTwo from '@/components/sections/blog/BlogCardTwo';
|
import BlogCardTwo from '@/components/sections/blog/BlogCardTwo';
|
||||||
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
||||||
import { useBlogPosts } from "@/hooks/useBlogPosts";
|
import { useBlogPosts } from "@/hooks/useBlogPosts";
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
export default function BlogPage() {
|
export default function BlogPage() {
|
||||||
const { posts, isLoading } = useBlogPosts();
|
const { posts, isLoading } = useBlogPosts();
|
||||||
@@ -23,19 +23,18 @@ export default function BlogPage() {
|
|||||||
secondaryButtonStyle="glass"
|
secondaryButtonStyle="glass"
|
||||||
headingFontWeight="normal"
|
headingFontWeight="normal"
|
||||||
>
|
>
|
||||||
<ReactLenis root>
|
|
||||||
<div id="nav" data-section="nav">
|
<div id="nav" data-section="nav">
|
||||||
<NavbarLayoutFloatingOverlay
|
<NavbarLayoutFloatingOverlay
|
||||||
brandName="Dobry Khlib"
|
brandName="Dobry Khlib"
|
||||||
navItems={[
|
navItems={[
|
||||||
{ name: "Home", id: "/" },
|
{ name: "Home", id: "/" },
|
||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "/#about" },
|
||||||
{ name: "Products", id: "products" },
|
{ name: "Products", id: "/#products" },
|
||||||
{ name: "Testimonials", id: "testimonials" },
|
{ name: "Testimonials", id: "/#testimonials" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "FAQ", id: "/#faq" },
|
||||||
{ name: "Contact", id: "contact" },
|
{ name: "Contact", id: "/#contact" },
|
||||||
]}
|
]}
|
||||||
button={{ text: "Order Now", href: "#products" }}
|
button={{ text: "Order Now", href: "/#products" }}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -59,20 +58,20 @@ export default function BlogPage() {
|
|||||||
|
|
||||||
<div id="footer" data-section="footer">
|
<div id="footer" data-section="footer">
|
||||||
<FooterMedia
|
<FooterMedia
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=3"
|
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg"
|
||||||
imageAlt="Assortment of freshly baked Ukrainian goods"
|
imageAlt="Assortment of freshly baked Ukrainian goods"
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
title: "Bakery", items: [
|
title: "Bakery", items: [
|
||||||
{ label: "Our Story", href: "#about" },
|
{ label: "Our Story", href: "/#about" },
|
||||||
{ label: "Products", href: "#products" },
|
{ label: "Products", href: "/#products" },
|
||||||
{ label: "Order Online", href: "#products" },
|
{ label: "Order Online", href: "/#products" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Support", items: [
|
title: "Support", items: [
|
||||||
{ label: "FAQ", href: "#faq" },
|
{ label: "FAQ", href: "/#faq" },
|
||||||
{ label: "Contact Us", href: "#contact" },
|
{ label: "Contact Us", href: "/#contact" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -87,7 +86,6 @@ export default function BlogPage() {
|
|||||||
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</ReactLenis>
|
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import { Inter } from "next/font/google";
|
import { Inter } from "next/font/google";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
|
||||||
import Tag from "@/tag/Tag";
|
|
||||||
|
|
||||||
const inter = Inter({
|
const inter = Inter({
|
||||||
variable: "--font-inter", subsets: ["latin"],
|
variable: "--font-inter", subsets: ["latin"],
|
||||||
@@ -31,11 +29,9 @@ export default function RootLayout({
|
|||||||
}>) {
|
}>) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="en" suppressHydrationWarning>
|
||||||
<ServiceWrapper>
|
|
||||||
<body
|
<body
|
||||||
className={`${inter.variable} antialiased`}
|
className={`${inter.variable} antialiased`}
|
||||||
>
|
>
|
||||||
<Tag />
|
|
||||||
{children}
|
{children}
|
||||||
|
|
||||||
<script
|
<script
|
||||||
@@ -1405,7 +1401,6 @@ export default function RootLayout({
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</body>
|
</body>
|
||||||
</ServiceWrapper>
|
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import TestimonialCardOne from '@/components/sections/testimonial/TestimonialCar
|
|||||||
import FaqBase from '@/components/sections/faq/FaqBase';
|
import FaqBase from '@/components/sections/faq/FaqBase';
|
||||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||||
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
export default function LandingPage() {
|
export default function LandingPage() {
|
||||||
return (
|
return (
|
||||||
@@ -28,11 +29,11 @@ export default function LandingPage() {
|
|||||||
<NavbarLayoutFloatingOverlay
|
<NavbarLayoutFloatingOverlay
|
||||||
brandName="Dobry Khlib"
|
brandName="Dobry Khlib"
|
||||||
navItems={[
|
navItems={[
|
||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "#about" },
|
||||||
{ name: "Products", id: "products" },
|
{ name: "Products", id: "#products" },
|
||||||
{ name: "Testimonials", id: "testimonials" },
|
{ name: "Testimonials", id: "#testimonials" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "FAQ", id: "#faq" },
|
||||||
{ name: "Contact", id: "contact" },
|
{ name: "Contact", id: "#contact" },
|
||||||
]}
|
]}
|
||||||
button={{ text: "Order Now", href: "#products" }}
|
button={{ text: "Order Now", href: "#products" }}
|
||||||
/>
|
/>
|
||||||
@@ -44,7 +45,7 @@ export default function LandingPage() {
|
|||||||
description="Experience the warmth of homemade traditions with our freshly baked breads, pastries, and savory delights, crafted with love and authentic recipes."
|
description="Experience the warmth of homemade traditions with our freshly baked breads, pastries, and savory delights, crafted with love and authentic recipes."
|
||||||
background={{ variant: "plain" }}
|
background={{ variant: "plain" }}
|
||||||
imagePosition="right"
|
imagePosition="right"
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=1"
|
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg"
|
||||||
imageAlt="Freshly baked Ukrainian bread on a rustic table"
|
imageAlt="Freshly baked Ukrainian bread on a rustic table"
|
||||||
mediaAnimation="slide-up"
|
mediaAnimation="slide-up"
|
||||||
buttons={[
|
buttons={[
|
||||||
@@ -58,7 +59,7 @@ export default function LandingPage() {
|
|||||||
<div id="about" data-section="about">
|
<div id="about" data-section="about">
|
||||||
<MediaAbout
|
<MediaAbout
|
||||||
title="Our Story: From Kyiv to Your Table"
|
title="Our Story: From Kyiv to Your Table"
|
||||||
description='"Dobry Khlib" (Good Bread) brings the heart of Ukrainian baking to your community. We use time-honored recipes, premium local ingredients, and traditional techniques to create the flavors you remember. Every item is a piece of our heritage, baked with passion.'
|
description={`"Dobry Khlib" (Good Bread) brings the heart of Ukrainian baking to your community. We use time-honored recipes, premium local ingredients, and traditional techniques to create the flavors you remember. Every item is a piece of our heritage, baked with passion.`}
|
||||||
tag="About Us"
|
tag="About Us"
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/chef-holds-fresh-bread-hand-man-preparing-dough-table-kitchen-black-background-healthy-cooking-concept_639032-471.jpg"
|
imageSrc="https://img.b2bpic.net/free-photo/chef-holds-fresh-bread-hand-man-preparing-dough-table-kitchen-black-background-healthy-cooking-concept_639032-471.jpg"
|
||||||
imageAlt="Ukrainian baker smiling in a traditional bakery"
|
imageAlt="Ukrainian baker smiling in a traditional bakery"
|
||||||
@@ -92,16 +93,20 @@ export default function LandingPage() {
|
|||||||
testimonials={[
|
testimonials={[
|
||||||
{
|
{
|
||||||
id: "1", name: "Olena K.", role: "Regular Customer", company: "Local Resident", rating: 5,
|
id: "1", name: "Olena K.", role: "Regular Customer", company: "Local Resident", rating: 5,
|
||||||
imageSrc: "https://img.b2bpic.net/free-photo/female-bakery-owner-counter-with-croissant-talking-mobile-phone_23-2148189128.jpg", imageAlt: "Olena K."},
|
imageSrc: "https://img.b2bpic.net/free-photo/female-bakery-owner-counter-with-croissant-talking-mobile-phone_23-2148189128.jpg", imageAlt: "Olena K."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "2", name: "Mark S.", role: "Food Enthusiast", company: "Food Blogger", rating: 5,
|
id: "2", name: "Mark S.", role: "Food Enthusiast", company: "Food Blogger", rating: 5,
|
||||||
imageSrc: "https://img.b2bpic.net/free-photo/person-paying-using-nfc-technology_23-2149893776.jpg", imageAlt: "Mark S."},
|
imageSrc: "https://img.b2bpic.net/free-photo/person-paying-using-nfc-technology_23-2149893776.jpg", imageAlt: "Mark S."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "3", name: "Irina P.", role: "Community Organizer", company: "Ukrainian Cultural Center", rating: 5,
|
id: "3", name: "Irina P.", role: "Community Organizer", company: "Ukrainian Cultural Center", rating: 5,
|
||||||
imageSrc: "https://img.b2bpic.net/free-photo/portrait-family-having-fun-kitchen_329181-5378.jpg", imageAlt: "Irina P."},
|
imageSrc: "https://img.b2bpic.net/free-photo/portrait-family-having-fun-kitchen_329181-5378.jpg", imageAlt: "Irina P."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "4", name: "Dmytro H.", role: "Owner", company: "The Golden Wheat Cafe", rating: 5,
|
id: "4", name: "Dmytro H.", role: "Owner", company: "The Golden Wheat Cafe", rating: 5,
|
||||||
imageSrc: "https://img.b2bpic.net/free-photo/portrait-smiling-baker-standing-with-arms-crossed_1170-2018.jpg", imageAlt: "Dmytro H."},
|
imageSrc: "https://img.b2bpic.net/free-photo/portrait-smiling-baker-standing-with-arms-crossed_1170-2018.jpg", imageAlt: "Dmytro H."
|
||||||
|
},
|
||||||
]}
|
]}
|
||||||
gridVariant="four-items-2x2-equal-grid"
|
gridVariant="four-items-2x2-equal-grid"
|
||||||
animationType="slide-up"
|
animationType="slide-up"
|
||||||
@@ -116,13 +121,17 @@ export default function LandingPage() {
|
|||||||
description="Got questions about our bakery or products? We've got answers."
|
description="Got questions about our bakery or products? We've got answers."
|
||||||
faqs={[
|
faqs={[
|
||||||
{
|
{
|
||||||
id: "1", title: "Do you offer gluten-free options?", content: "Currently, we do not offer certified gluten-free products, but we are exploring options to do so in the future."},
|
id: "1", title: "Do you offer gluten-free options?", content: "Currently, we do not offer certified gluten-free products, but we are exploring options to do so in the future."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "2", title: "Can I place a custom order for an event?", content: "Yes, we love custom orders! Please contact us directly with your request, and we'll be happy to discuss options and availability."},
|
id: "2", title: "Can I place a custom order for an event?", content: "Yes, we love custom orders! Please contact us directly with your request, and we'll be happy to discuss options and availability."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "3", title: "What are your baking hours?", content: "Our baking typically starts very early in the morning to ensure fresh products for opening. You can find our store hours on the contact page."},
|
id: "3", title: "What are your baking hours?", content: "Our baking typically starts very early in the morning to ensure fresh products for opening. You can find our store hours on the contact page."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "4", title: "Do you deliver?", content: "We offer local delivery within a 5-mile radius. Please check our delivery section for more details and to see if your address is covered."},
|
id: "4", title: "Do you deliver?", content: "We offer local delivery within a 5-mile radius. Please check our delivery section for more details and to see if your address is covered."
|
||||||
|
},
|
||||||
]}
|
]}
|
||||||
faqsAnimation="slide-up"
|
faqsAnimation="slide-up"
|
||||||
textboxLayout="default"
|
textboxLayout="default"
|
||||||
@@ -154,7 +163,7 @@ export default function LandingPage() {
|
|||||||
|
|
||||||
<div id="footer" data-section="footer">
|
<div id="footer" data-section="footer">
|
||||||
<FooterMedia
|
<FooterMedia
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=2"
|
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg"
|
||||||
imageAlt="Assortment of freshly baked Ukrainian goods"
|
imageAlt="Assortment of freshly baked Ukrainian goods"
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
import { Suspense, use, useCallback } from "react";
|
import { Suspense, use, useCallback } from "react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import ReactLenis from "lenis/react";
|
|
||||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||||
import ProductDetailCard from "@/components/ecommerce/productDetail/ProductDetailCard";
|
import ProductDetailCard from "@/components/ecommerce/productDetail/ProductDetailCard";
|
||||||
import ProductCart from "@/components/ecommerce/cart/ProductCart";
|
import ProductCart from "@/components/ecommerce/cart/ProductCart";
|
||||||
@@ -11,6 +10,7 @@ import { useCart } from "@/hooks/useCart";
|
|||||||
import { useCheckout } from "@/hooks/useCheckout";
|
import { useCheckout } from "@/hooks/useCheckout";
|
||||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||||
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
interface ProductPageProps {
|
interface ProductPageProps {
|
||||||
params: Promise<{ id: string }>;
|
params: Promise<{ id: string }>;
|
||||||
@@ -19,12 +19,12 @@ interface ProductPageProps {
|
|||||||
export default function ProductPage({ params }: ProductPageProps) {
|
export default function ProductPage({ params }: ProductPageProps) {
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={null}>
|
<Suspense fallback={null}>
|
||||||
<ProductPageContent params={params} />
|
<ProductPageContentWrapper params={params} />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ProductPageContent({ params }: ProductPageProps) {
|
function ProductPageContentWrapper({ params }: ProductPageProps) {
|
||||||
const { id } = use(params);
|
const { id } = use(params);
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
@@ -74,72 +74,16 @@ function ProductPageContent({ params }: ProductPageProps) {
|
|||||||
await checkout(getCheckoutItems(), { successUrl: currentUrl.toString() });
|
await checkout(getCheckoutItems(), { successUrl: currentUrl.toString() });
|
||||||
}, [cartItems, checkout, getCheckoutItems]);
|
}, [cartItems, checkout, getCheckoutItems]);
|
||||||
|
|
||||||
|
const content = () => {
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
|
||||||
defaultButtonVariant="text-stagger"
|
|
||||||
defaultTextAnimation="entrance-slide"
|
|
||||||
borderRadius="soft"
|
|
||||||
contentWidth="mediumSmall"
|
|
||||||
sizing="largeSmall"
|
|
||||||
background="noise"
|
|
||||||
cardStyle="solid"
|
|
||||||
primaryButtonStyle="double-inset"
|
|
||||||
secondaryButtonStyle="glass"
|
|
||||||
headingFontWeight="normal"
|
|
||||||
>
|
|
||||||
<ReactLenis root>
|
|
||||||
<div id="navbar" data-section="navbar">
|
|
||||||
<NavbarLayoutFloatingOverlay
|
|
||||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
|
||||||
brandName="Dobry Khlib"
|
|
||||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||||
<p className="text-foreground">Loading product...</p>
|
<p className="text-foreground">Loading product...</p>
|
||||||
</main>
|
</main>
|
||||||
<div id="footer" data-section="footer">
|
)
|
||||||
<FooterMedia
|
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=6"
|
|
||||||
imageAlt="Assortment of freshly baked Ukrainian goods"
|
|
||||||
columns={[
|
|
||||||
{title: "Bakery", items: [{label: "Our Story", href: "#about"}, {label: "Products", href: "#products"}, {label: "Order Online", href: "#products"}]},
|
|
||||||
{title: "Support", items: [{label: "FAQ", href: "#faq"}, {label: "Contact Us", href: "#contact"}]},
|
|
||||||
{title: "Legal", items: [{label: "Privacy Policy", href: "/privacy"}, {label: "Terms of Service", href: "/terms"}]}
|
|
||||||
]}
|
|
||||||
logoText="Dobry Khlib"
|
|
||||||
copyrightText="© 2024 Dobry Khlib. All rights reserved."
|
|
||||||
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</ReactLenis>
|
|
||||||
</ThemeProvider>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!product) {
|
if (!product) {
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
|
||||||
defaultButtonVariant="text-stagger"
|
|
||||||
defaultTextAnimation="entrance-slide"
|
|
||||||
borderRadius="soft"
|
|
||||||
contentWidth="mediumSmall"
|
|
||||||
sizing="largeSmall"
|
|
||||||
background="noise"
|
|
||||||
cardStyle="solid"
|
|
||||||
primaryButtonStyle="double-inset"
|
|
||||||
secondaryButtonStyle="glass"
|
|
||||||
headingFontWeight="normal"
|
|
||||||
>
|
|
||||||
<ReactLenis root>
|
|
||||||
<div id="navbar" data-section="navbar">
|
|
||||||
<NavbarLayoutFloatingOverlay
|
|
||||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
|
||||||
brandName="Dobry Khlib"
|
|
||||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||||
<div className="text-center">
|
<div className="text-center">
|
||||||
<p className="text-foreground mb-4">Product not found</p>
|
<p className="text-foreground mb-4">Product not found</p>
|
||||||
@@ -151,46 +95,9 @@ function ProductPageContent({ params }: ProductPageProps) {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<div id="footer" data-section="footer">
|
)
|
||||||
<FooterMedia
|
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=7"
|
|
||||||
imageAlt="Assortment of freshly baked Ukrainian goods"
|
|
||||||
columns={[
|
|
||||||
{title: "Bakery", items: [{label: "Our Story", href: "#about"}, {label: "Products", href: "#products"}, {label: "Order Online", href: "#products"}]},
|
|
||||||
{title: "Support", items: [{label: "FAQ", href: "#faq"}, {label: "Contact Us", href: "#contact"}]},
|
|
||||||
{title: "Legal", items: [{label: "Privacy Policy", href: "/privacy"}, {label: "Terms of Service", href: "/terms"}]}
|
|
||||||
]}
|
|
||||||
logoText="Dobry Khlib"
|
|
||||||
copyrightText="© 2024 Dobry Khlib. All rights reserved."
|
|
||||||
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</ReactLenis>
|
|
||||||
</ThemeProvider>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
|
||||||
defaultButtonVariant="text-stagger"
|
|
||||||
defaultTextAnimation="entrance-slide"
|
|
||||||
borderRadius="soft"
|
|
||||||
contentWidth="mediumSmall"
|
|
||||||
sizing="largeSmall"
|
|
||||||
background="noise"
|
|
||||||
cardStyle="solid"
|
|
||||||
primaryButtonStyle="double-inset"
|
|
||||||
secondaryButtonStyle="glass"
|
|
||||||
headingFontWeight="normal"
|
|
||||||
>
|
|
||||||
<ReactLenis root>
|
|
||||||
<div id="navbar" data-section="navbar">
|
|
||||||
<NavbarLayoutFloatingOverlay
|
|
||||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
|
||||||
brandName="Dobry Khlib"
|
|
||||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div id="product-detail-card" data-section="product-detail-card">
|
<div id="product-detail-card" data-section="product-detail-card">
|
||||||
<ProductDetailCard
|
<ProductDetailCard
|
||||||
layout="page"
|
layout="page"
|
||||||
@@ -212,6 +119,30 @@ function ProductPageContent({ params }: ProductPageProps) {
|
|||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ThemeProvider
|
||||||
|
defaultButtonVariant="text-stagger"
|
||||||
|
defaultTextAnimation="entrance-slide"
|
||||||
|
borderRadius="soft"
|
||||||
|
contentWidth="mediumSmall"
|
||||||
|
sizing="largeSmall"
|
||||||
|
background="noise"
|
||||||
|
cardStyle="solid"
|
||||||
|
primaryButtonStyle="double-inset"
|
||||||
|
secondaryButtonStyle="glass"
|
||||||
|
headingFontWeight="normal"
|
||||||
|
>
|
||||||
|
<div id="nav" data-section="nav">
|
||||||
|
<NavbarLayoutFloatingOverlay
|
||||||
|
navItems={[{ name: "Home", id: "/" }]}
|
||||||
|
brandName="Dobry Khlib"
|
||||||
|
button={{ text: `Cart (${cartItems.length})`, onClick: () => setCartOpen(true) }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{content()}
|
||||||
<div id="product-cart" data-section="product-cart">
|
<div id="product-cart" data-section="product-cart">
|
||||||
<ProductCart
|
<ProductCart
|
||||||
isOpen={cartOpen}
|
isOpen={cartOpen}
|
||||||
@@ -229,11 +160,11 @@ function ProductPageContent({ params }: ProductPageProps) {
|
|||||||
</div>
|
</div>
|
||||||
<div id="footer" data-section="footer">
|
<div id="footer" data-section="footer">
|
||||||
<FooterMedia
|
<FooterMedia
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=8"
|
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg"
|
||||||
imageAlt="Assortment of freshly baked Ukrainian goods"
|
imageAlt="Assortment of freshly baked Ukrainian goods"
|
||||||
columns={[
|
columns={[
|
||||||
{title: "Bakery", items: [{label: "Our Story", href: "#about"}, {label: "Products", href: "#products"}, {label: "Order Online", href: "#products"}]},
|
{title: "Bakery", items: [{label: "Our Story", href: "/#about"}, {label: "Products", href: "/#products"}, {label: "Order Online", href: "/#products"}]},
|
||||||
{title: "Support", items: [{label: "FAQ", href: "#faq"}, {label: "Contact Us", href: "#contact"}]},
|
{title: "Support", items: [{label: "FAQ", href: "/#faq"}, {label: "Contact Us", href: "/#contact"}]},
|
||||||
{title: "Legal", items: [{label: "Privacy Policy", href: "/privacy"}, {label: "Terms of Service", href: "/terms"}]}
|
{title: "Legal", items: [{label: "Privacy Policy", href: "/privacy"}, {label: "Terms of Service", href: "/terms"}]}
|
||||||
]}
|
]}
|
||||||
logoText="Dobry Khlib"
|
logoText="Dobry Khlib"
|
||||||
@@ -241,7 +172,6 @@ function ProductPageContent({ params }: ProductPageProps) {
|
|||||||
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</ReactLenis>
|
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { Suspense } from "react";
|
import { Suspense } from "react";
|
||||||
import ReactLenis from "lenis/react";
|
|
||||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||||
import ProductCatalog from "@/components/ecommerce/productCatalog/ProductCatalog";
|
import ProductCatalog from "@/components/ecommerce/productCatalog/ProductCatalog";
|
||||||
import { useProductCatalog } from "@/hooks/useProductCatalog";
|
import { useProductCatalog } from "@/hooks/useProductCatalog";
|
||||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||||
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
function ShopPageContent() {
|
function ShopPageContent() {
|
||||||
const {
|
const {
|
||||||
@@ -19,22 +19,10 @@ function ShopPageContent() {
|
|||||||
|
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
<>
|
||||||
defaultButtonVariant="text-stagger"
|
<div id="nav" data-section="nav">
|
||||||
defaultTextAnimation="entrance-slide"
|
|
||||||
borderRadius="soft"
|
|
||||||
contentWidth="mediumSmall"
|
|
||||||
sizing="largeSmall"
|
|
||||||
background="noise"
|
|
||||||
cardStyle="solid"
|
|
||||||
primaryButtonStyle="double-inset"
|
|
||||||
secondaryButtonStyle="glass"
|
|
||||||
headingFontWeight="normal"
|
|
||||||
>
|
|
||||||
<ReactLenis root>
|
|
||||||
<div id="navbar" data-section="navbar">
|
|
||||||
<NavbarLayoutFloatingOverlay
|
<NavbarLayoutFloatingOverlay
|
||||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
navItems={[{ name: "Home", id: "/" }]}
|
||||||
brandName="Dobry Khlib"
|
brandName="Dobry Khlib"
|
||||||
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
||||||
/>
|
/>
|
||||||
@@ -42,42 +30,15 @@ function ShopPageContent() {
|
|||||||
<main className="min-h-screen flex items-center justify-center pt-20">
|
<main className="min-h-screen flex items-center justify-center pt-20">
|
||||||
<p className="text-foreground">Loading products...</p>
|
<p className="text-foreground">Loading products...</p>
|
||||||
</main>
|
</main>
|
||||||
<div id="footer" data-section="footer">
|
</>
|
||||||
<FooterMedia
|
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=4"
|
|
||||||
imageAlt="Assortment of freshly baked Ukrainian goods"
|
|
||||||
columns={[
|
|
||||||
{title: "Bakery", items: [{label: "Our Story", href: "#about"}, {label: "Products", href: "#products"}, {label: "Order Online", href: "#products"}]},
|
|
||||||
{title: "Support", items: [{label: "FAQ", href: "#faq"}, {label: "Contact Us", href: "#contact"}]},
|
|
||||||
{title: "Legal", items: [{label: "Privacy Policy", href: "/privacy"}, {label: "Terms of Service", href: "/terms"}]}
|
|
||||||
]}
|
|
||||||
logoText="Dobry Khlib"
|
|
||||||
copyrightText="© 2024 Dobry Khlib. All rights reserved."
|
|
||||||
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</ReactLenis>
|
|
||||||
</ThemeProvider>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
<>
|
||||||
defaultButtonVariant="text-stagger"
|
<div id="nav" data-section="nav">
|
||||||
defaultTextAnimation="entrance-slide"
|
|
||||||
borderRadius="soft"
|
|
||||||
contentWidth="mediumSmall"
|
|
||||||
sizing="largeSmall"
|
|
||||||
background="noise"
|
|
||||||
cardStyle="solid"
|
|
||||||
primaryButtonStyle="double-inset"
|
|
||||||
secondaryButtonStyle="glass"
|
|
||||||
headingFontWeight="normal"
|
|
||||||
>
|
|
||||||
<ReactLenis root>
|
|
||||||
<div id="navbar" data-section="navbar">
|
|
||||||
<NavbarLayoutFloatingOverlay
|
<NavbarLayoutFloatingOverlay
|
||||||
navItems={[{ name: "Home", id: "/" }, { name: "Shop", id: "/shop" }]}
|
navItems={[{ name: "Home", id: "/" }]}
|
||||||
brandName="Dobry Khlib"
|
brandName="Dobry Khlib"
|
||||||
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
||||||
/>
|
/>
|
||||||
@@ -93,13 +54,33 @@ function ShopPageContent() {
|
|||||||
emptyMessage="No products found"
|
emptyMessage="No products found"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function ShopPage() {
|
||||||
|
return (
|
||||||
|
<Suspense>
|
||||||
|
<ThemeProvider
|
||||||
|
defaultButtonVariant="text-stagger"
|
||||||
|
defaultTextAnimation="entrance-slide"
|
||||||
|
borderRadius="soft"
|
||||||
|
contentWidth="mediumSmall"
|
||||||
|
sizing="largeSmall"
|
||||||
|
background="noise"
|
||||||
|
cardStyle="solid"
|
||||||
|
primaryButtonStyle="double-inset"
|
||||||
|
secondaryButtonStyle="glass"
|
||||||
|
headingFontWeight="normal"
|
||||||
|
>
|
||||||
|
<ShopPageContent />
|
||||||
<div id="footer" data-section="footer">
|
<div id="footer" data-section="footer">
|
||||||
<FooterMedia
|
<FooterMedia
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg?_wi=5"
|
imageSrc="https://img.b2bpic.net/free-photo/white-cheese-bread-with-eggs_140725-3991.jpg"
|
||||||
imageAlt="Assortment of freshly baked Ukrainian goods"
|
imageAlt="Assortment of freshly baked Ukrainian goods"
|
||||||
columns={[
|
columns={[
|
||||||
{title: "Bakery", items: [{label: "Our Story", href: "#about"}, {label: "Products", href: "#products"}, {label: "Order Online", href: "#products"}]},
|
{title: "Bakery", items: [{label: "Our Story", href: "/#about"}, {label: "Products", href: "/#products"}, {label: "Order Online", href: "/#products"}]},
|
||||||
{title: "Support", items: [{label: "FAQ", href: "#faq"}, {label: "Contact Us", href: "#contact"}]},
|
{title: "Support", items: [{label: "FAQ", href: "/#faq"}, {label: "Contact Us", href: "/#contact"}]},
|
||||||
{title: "Legal", items: [{label: "Privacy Policy", href: "/privacy"}, {label: "Terms of Service", href: "/terms"}]}
|
{title: "Legal", items: [{label: "Privacy Policy", href: "/privacy"}, {label: "Terms of Service", href: "/terms"}]}
|
||||||
]}
|
]}
|
||||||
logoText="Dobry Khlib"
|
logoText="Dobry Khlib"
|
||||||
@@ -107,15 +88,7 @@ function ShopPageContent() {
|
|||||||
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
onPrivacyClick={() => console.log('Privacy Policy clicked')}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</ReactLenis>
|
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function ShopPage() {
|
|
||||||
return (
|
|
||||||
<Suspense>
|
|
||||||
<ShopPageContent />
|
|
||||||
</Suspense>
|
</Suspense>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user