19 Commits

Author SHA1 Message Date
31dc53a910 Merge version_5 into main
Merge version_5 into main
2026-02-22 12:25:06 +00:00
a41d31a9af Update src/app/shop/page.tsx 2026-02-22 12:25:03 +00:00
dd09ce8966 Update src/app/shop/[id]/page.tsx 2026-02-22 12:25:02 +00:00
017e2cf457 Update src/app/page.tsx 2026-02-22 12:25:02 +00:00
5e6ad0b67b Update src/app/blog/page.tsx 2026-02-22 12:25:01 +00:00
95e5e73666 Merge version_4 into main
Merge version_4 into main
2026-02-22 12:23:11 +00:00
7b7a769bd6 Update src/app/shop/page.tsx 2026-02-22 12:23:07 +00:00
b80e71074e Update src/app/shop/[id]/page.tsx 2026-02-22 12:23:07 +00:00
43ff17a5da Update src/app/page.tsx 2026-02-22 12:23:07 +00:00
3f175dbc22 Update src/app/blog/page.tsx 2026-02-22 12:23:06 +00:00
a90397c965 Merge version_4 into main
Merge version_4 into main
2026-02-22 12:20:24 +00:00
c2922db74c Update src/app/styles/variables.css 2026-02-22 12:20:20 +00:00
1bd84f6ae9 Update src/app/styles/base.css 2026-02-22 12:20:19 +00:00
a82d8b7758 Update src/app/shop/page.tsx 2026-02-22 12:20:19 +00:00
5429eb2724 Update src/app/shop/[id]/page.tsx 2026-02-22 12:20:19 +00:00
88b7ba86cd Update src/app/page.tsx 2026-02-22 12:20:18 +00:00
833cae4a45 Update src/app/layout.tsx 2026-02-22 12:20:18 +00:00
caf402a4fd Update src/app/blog/page.tsx 2026-02-22 12:20:18 +00:00
9c4cd78962 Merge version_3 into main
Merge version_3 into main
2026-02-22 12:10:28 +00:00
7 changed files with 363 additions and 291 deletions

View File

@@ -5,52 +5,52 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import { useBlogPosts } from "@/hooks/useBlogPosts"; import { useBlogPosts } from "@/hooks/useBlogPosts";
// New imports based on requirements // New imports based on requirements
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple'; import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import BlogCardTwo from '@/components/sections/blog/BlogCardTwo'; import BlogCardThree from '@/components/sections/blog/BlogCardThree';
export default function BlogPage() { export default function BlogPage() {
const { posts, isLoading } = useBlogPosts(); const { posts, isLoading } = useBlogPosts();
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="pill"
contentWidth="medium" contentWidth="medium"
sizing="large" sizing="mediumLarge"
background="aurora" background="fluid"
cardStyle="inset" cardStyle="soft-shadow"
primaryButtonStyle="primary-glow" primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
<NavbarStyleApple <NavbarStyleFullscreen
brandName="Hookah Haven" brandName="MyCo"
navItems={[ navItems={[
{ name: "Головна", id: "/" }, {name: "Home", id: "/"},
{ name: "Продукція", id: "/#products" }, {name: "About", id: "/#about"},
{ name: "Про нас", id: "/#about" }, {name: "Products", id: "/#products"},
{ name: "Особливості", id: "/#features" }, {name: "Blog", id: "/blog"},
{ name: "Відгуки", id: "/#testimonials" }, {name: "Contact", id: "/#contact"}
{ name: "FAQ", id: "/#faq" },
{ name: "Контакти", id: "/#contact" }
]} ]}
bottomLeftText="Innovation Hub"
bottomRightText="info@myco.com"
/> />
</div> </div>
{isLoading ? ( {isLoading ? (
<div className="w-content-width mx-auto py-20 text-center"> <div className="w-content-width mx-auto py-20 text-center">
<p className="text-foreground">Завантаження дописів...</p> <p className="text-foreground">Loading blog posts...</p>
</div> </div>
) : ( ) : (
<div id="blog" data-section="blog"> <div id="blog" data-section="blog">
<BlogCardTwo <BlogCardThree
blogs={posts} blogs={posts}
title="Останні статті" title="Latest Insights & Updates"
description="Ідеї та оновлення від нашої команди" description="Stay informed with our articles and news."
textboxLayout="default" textboxLayout="default"
useInvertedBackground={false} useInvertedBackground={false}
animationType="slide-up" animationType="slide-up"
@@ -59,26 +59,20 @@ export default function BlogPage() {
)} )}
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseCard <FooterLogoEmphasis
logoText="Hookah Haven" logoText="MyCo"
columns={[ columns={[
{ {items: [
title: "Магазин", items: [ {label: "Products", href: "/#products"},
{ label: "Кальяни", href: "/#products" }, {label: "Features", href: "/#features"}
{ label: "Тютюн", href: "/#products" }, ]},
{ label: "Вугілля", href: "/#products" }, {items: [
{ label: "Аксесуари", href: "/#products" } {label: "About Us", href: "/#about"},
] {label: "Blog", href: "/blog"},
}, {label: "Shop", href: "/shop"},
{ {label: "Contact", href: "/#contact"}
title: "Компанія", items: [ ]}
{ label: "Про нас", href: "/#about" },
{ label: "FAQ", href: "/#faq" },
{ label: "Контакти", href: "/#contact" }
]
}
]} ]}
copyrightText="© 2024 Hookah Haven. Всі права захищені."
/> />
</div> </div>
</ReactLenis> </ReactLenis>

View File

@@ -1,24 +1,31 @@
import type { Metadata } from "next"; import type { Metadata } from "next";
import { Archivo } from "next/font/google"; import { DM_Sans } from "next/font/google";
import { Inter } from "next/font/google";
import "./globals.css"; import "./globals.css";
import { ServiceWrapper } from "@/components/ServiceWrapper"; import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag"; import Tag from "@/tag/Tag";
const archivo = Archivo({ const dmSans = DM_Sans({
variable: "--font-archivo", subsets: ["latin"], variable: "--font-dm-sans", subsets: ["latin"],
});
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
}); });
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Hookah Haven | Кальяни преміум-класу, тютюн та аксесуари", description: "Відкрийте для себе найкращий вибір кальянів, преміальних тютюнових сумішей та необхідних аксесуарів у Hookah Haven. Підніміть свій досвід куріння вже сьогодні.", keywords: ["кальян", "шиша", "тютюн", "вугілля", "аксесуари для кальяну", "преміум кальян", "онлайн магазин кальянів"], title: "My Awesome Website | Innovative Solutions & Services", description: "Discover innovative solutions and services tailored for your needs. Explore our products, features, and client testimonials.", keywords: ["website", "solutions", "services", "innovative", "products", "features"],
openGraph: { openGraph: {
title: "Hookah Haven | Кальяни преміум-класу, тютюн та аксесуари", description: "Відкрийте для себе найкращий вибір кальянів, преміальних тютюнових сумішей та необхідних аксесуарів у Hookah Haven. Підніміть свій досвід куріння вже сьогодні.", url: "/", siteName: "Hookah Haven", images: [ title: "My Awesome Website | Innovative Solutions & Services", description: "Discover innovative solutions and services tailored for your needs. Explore our products, features, and client testimonials.", url: "/", siteName: "My Awesome Website", images: [
{ {
url: "https://img.b2bpic.net/free-photo/group-handsome-retro-welldressed-man-gangsters-spend-time-club-smoking-hookah-multiethnic-male-bachelor-mafia-party-restaurant_627829-12017.jpg", alt: "Елегантний кальянний набір з димом"}, url: "https://via.placeholder.com/1200x630.png?text=My+Awesome+Website", alt: "My Awesome Website Banner"
}
], ],
type: "website"}, type: "website"
twitter: {
card: "summary_large_image", title: "Hookah Haven | Кальяни преміум-класу, тютюн та аксесуари", description: "Відкрийте для себе найкращий вибір кальянів, преміальних тютюнових сумішей та необхідних аксесуарів у Hookah Haven. Підніміть свій досвід куріння вже сьогодні.", images: ["https://img.b2bpic.net/free-photo/group-handsome-retro-welldressed-man-gangsters-spend-time-club-smoking-hookah-multiethnic-male-bachelor-mafia-party-restaurant_627829-12017.jpg"],
}, },
twitter: {
card: "summary_large_image", title: "My Awesome Website | Innovative Solutions & Services", description: "Discover innovative solutions and services tailored for your needs. Explore our products, features, and client testimonials.", images: ["https://via.placeholder.com/1200x630.png?text=My+Awesome+Website"]
}
}; };
export default function RootLayout({ export default function RootLayout({
@@ -27,10 +34,10 @@ export default function RootLayout({
children: React.ReactNode; children: React.ReactNode;
}>) { }>) {
return ( return (
<html lang="uk" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body <body
className={`${archivo.variable} antialiased`} className={`${dmSans.variable} ${inter.variable} antialiased`}
> >
<Tag /> <Tag />
{children} {children}

View File

@@ -1,167 +1,183 @@
"use client"; "use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple'; import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import HeroBillboardScroll from '@/components/sections/hero/HeroBillboardScroll'; import HeroBillboardRotatedCarousel from '@/components/sections/hero/HeroBillboardRotatedCarousel';
import TextSplitAbout from '@/components/sections/about/TextSplitAbout'; import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard';
import ProductCardOne from '@/components/sections/product/ProductCardOne'; import ProductCardThree from '@/components/sections/product/ProductCardThree';
import FeatureCardTwentySix from '@/components/sections/feature/FeatureCardTwentySix'; import FeatureCardTwentyOne from '@/components/sections/feature/FeatureCardTwentyOne';
import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive'; import TestimonialCardTwelve from '@/components/sections/testimonial/TestimonialCardTwelve';
import FaqSplitText from '@/components/sections/faq/FaqSplitText'; import FaqBase from '@/components/sections/faq/FaqBase';
import ContactText from '@/components/sections/contact/ContactText'; import ContactSplit from '@/components/sections/contact/ContactSplit';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import { Boxes, CheckCircle, Headphones } from 'lucide-react'; import { Sparkles, Quote, CheckCircle, Mail } from 'lucide-react';
export default function LandingPage() { export default function LandingPage() {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="pill"
contentWidth="medium" contentWidth="medium"
sizing="large" sizing="mediumLarge"
background="aurora" background="fluid"
cardStyle="inset" cardStyle="soft-shadow"
primaryButtonStyle="primary-glow" primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="bold"
> >
<main> <main>
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
<NavbarStyleApple <NavbarStyleFullscreen
brandName="Hookah Haven" brandName="MyCo"
navItems={[ navItems={[
{name: "Продукція", id: "products"}, {name: "Home", id: "/"},
{name: "Про нас", id: "about"}, {name: "About", id: "/#about"},
{name: "Особливості", id: "features"}, {name: "Products", id: "/#products"},
{name: "Відгуки", id: "testimonials"}, {name: "Blog", id: "/blog"},
{name: "FAQ", id: "faq"}, {name: "Contact", id: "/#contact"}
{name: "Контакти", id: "contact"}
]} ]}
bottomLeftText="Innovation Hub"
bottomRightText="info@myco.com"
/> />
</div> </div>
<div id="hero" data-section="hero"> <div id="hero" data-section="hero">
<HeroBillboardScroll <HeroBillboardRotatedCarousel
background={{ variant: "radial-gradient" }} title="Innovate. Create. Elevate Your Business."
title="Відчуйте найкращий кальян" description="Experience cutting-edge solutions designed to transform your operations and drive unparalleled success."
description="Відкрийте для себе преміум-вибір тютюну, кальянів та аксесуарів для неперевершеного досвіду куріння." background={{ variant: "sparkles-gradient" }}
tag="Ваш найкращий кальянний напрямок" tag="Next Gen Solutions"
tagIcon={Sparkles}
buttons={[ buttons={[
{text: "Купити зараз", href: "#products"}, { text: "Discover More", href: "/#products" },
{text: "Дізнатися більше", href: "#about"} { text: "Get Started", href: "/#contact" }
]} ]}
imageSrc="https://img.b2bpic.net/free-photo/group-handsome-retro-welldressed-man-gangsters-spend-time-club-smoking-hookah-multiethnic-male-bachelor-mafia-party-restaurant_627829-12017.jpg" carouselItems={[
imageAlt="Елегантний кальянний набір з димом" { id: '1', imageSrc: 'https://via.placeholder.com/800x450.png?text=Carousel+Item+1', imageAlt: 'Product showcase 1' },
tagAnimation="blur-reveal" { id: '2', imageSrc: 'https://via.placeholder.com/800x450.png?text=Carousel+Item+2', imageAlt: 'Product showcase 2' },
buttonAnimation="blur-reveal" { id: '3', imageSrc: 'https://via.placeholder.com/800x450.png?text=Carousel+Item+3', imageAlt: 'Product showcase 3' },
{ id: '4', imageSrc: 'https://via.placeholder.com/800x450.png?text=Carousel+Item+4', imageAlt: 'Product showcase 4' },
{ id: '5', imageSrc: 'https://via.placeholder.com/800x450.png?text=Carousel+Item+5', imageAlt: 'Product showcase 5' },
{ id: '6', imageSrc: 'https://via.placeholder.com/800x450.png?text=Carousel+Item+6', imageAlt: 'Product showcase 6' }
]}
autoPlay={true}
autoPlayInterval={4000}
/> />
</div> </div>
<div id="about" data-section="about"> <div id="about" data-section="about">
<TextSplitAbout <TestimonialAboutCard
title="Наша пристрасть до кальяну" tag="Our Philosophy"
description={[ tagIcon={Quote}
"У Hookah Haven ми прагнемо забезпечити ентузіастів продукцією найвищої якості. Від рідкісних тютюнових сумішей до вишуканих кальянів та необхідних аксесуарів, ми ретельно підбираємо нашу колекцію, щоб кожна затяжка приносила задоволення.", "Ми віримо у покращення ваших моментів відпочинку та соціального спілкування за допомогою чудового кальяну. Наша відданість досконалості гарантує неперевершений досвід." title="We believe in empowering futures through technology and innovation."
]} description="MyCo Team"
subdescription="Visionaries in Tech"
icon={Sparkles}
imageSrc="https://via.placeholder.com/800x600.png?text=Our+Vision"
mediaAnimation="slide-up"
useInvertedBackground={false} useInvertedBackground={false}
showBorder={true}
buttons={[{ text: "Наша історія", href: "#about" }]}
/> />
</div> </div>
<div id="products" data-section="products"> <div id="products" data-section="products">
<ProductCardOne <ProductCardThree
title="Рекомендовані товари" title="Our Featured Offerings"
description="Ознайомтеся з нашою відібраною колекцією преміальних кальянів, вишуканого тютюну та необхідних аксесуарів." description="Explore our innovative products, crafted to enhance your productivity and lifestyle."
products={[ products={[
{id: "1", name: "Розкішний скляний кальян", price: "$249.99", imageSrc: "https://img.b2bpic.net/free-photo/meduza-hookah-with-cockatails-side-view_140725-9140.jpg", imageAlt: "Розкішна скляна кальянна трубка"}, { id: "1", name: "AI Assistant Pro", price: "$199.99", imageSrc: "https://via.placeholder.com/400x400.png?text=Product+A" },
{id: "2", name: "Екзотичні тютюнові суміші", price: "$19.99", imageSrc: "https://img.b2bpic.net/free-photo/fresh-shisha-woman-hands_140725-1338.jpg", imageAlt: "Барвисті упаковки екзотичних тютюнових сумішей"}, { id: "2", name: "Smart Home Hub", price: "$249.00", imageSrc: "https://via.placeholder.com/400x400.png?text=Product+B" },
{id: "3", name: "Натуральне кокосове вугілля", price: "$12.99", imageSrc: "https://img.b2bpic.net/free-photo/close-up-hookah-vaping_23-2149297183.jpg", imageAlt: "Купка натурального кокосового вугілля"}, { id: "3", name: "Cloud Storage Plus", price: "$49.99", imageSrc: "https://via.placeholder.com/400x400.png?text=Product+C" },
{id: "4", name: "Преміум шланг для кальяну", price: "$34.99", imageSrc: "https://img.b2bpic.net/free-photo/hookah-still-life-composition_23-2149213330.jpg", imageAlt: "Преміум шланг для кальяну"} { id: "4", name: "Eco-Friendly Charger", price: "$29.99", imageSrc: "https://via.placeholder.com/400x400.png?text=Product+D" }
]} ]}
gridVariant="four-items-2x2-equal-grid"
animationType="slide-up" animationType="slide-up"
gridVariant="three-columns-all-equal-width" useInvertedBackground={true}
useInvertedBackground={false}
textboxLayout="default" textboxLayout="default"
/> />
</div> </div>
<div id="features" data-section="features"> <div id="features" data-section="features">
<FeatureCardTwentySix <FeatureCardTwentyOne
title="Чому обирають Hookah Haven?" title="Unlock Limitless Possibilities"
description="Ми пропонуємо неперевершений вибір, гарантію якості та віддану підтримку клієнтів для покращення вашого кальянного досвіду." description="Our platform brings powerful features designed to streamline your operations."
features={[ accordionItems={[
{title: "Неперевершена якість", description: "Лише найкращі матеріали та інгредієнти потрапляють до нашого асортименту, гарантуючи неперевершений досвід.", imageSrc: "https://img.b2bpic.net/free-photo/suitmaker-tailor-cutting-fabric_482257-78193.jpg", imageAlt: "Крупний план добре виготовленого компонента кальяну", buttonIcon: CheckCircle}, { id: "1", title: "Intuitive Interface", content: "Navigate our platform with ease thanks to our user-friendly design." },
{title: "Широкий асортимент", description: "Від класичних дизайнів до сучасних інновацій, знайдіть ідеальний кальян та тютюн на свій смак.", imageSrc: "https://img.b2bpic.net/free-photo/supermarket-banner-with-various-items_23-2149501012.jpg", imageAlt: "Різноманітний асортимент кальянів та тютюнових коробок", buttonIcon: Boxes}, { id: "2", title: "Robust Security", content: "Your data is protected with industry-leading security protocols." },
{title: "Професійна підтримка клієнтів", description: "Наша обізнана команда готова допомогти вам з будь-якими питаннями чи рекомендаціями.", imageSrc: "https://img.b2bpic.net/free-photo/smiling-call-center-manager-providing-guidance-intern-addressing-questions_482257-125804.jpg", imageAlt: "Представник служби підтримки клієнтів допомагає клієнту", buttonIcon: Headphones} { id: "3", title: "Scalable Infrastructure", content: "Grow your business without limits on our adaptable cloud infrastructure." }
]} ]}
textboxLayout="default" imageSrc="https://via.placeholder.com/800x600.png?text=Feature+Overview"
useInvertedBackground={true} imageAlt="Feature showcase"
mediaAnimation="slide-up"
useInvertedBackground={false}
mediaPosition="left"
/> />
</div> </div>
<div id="testimonials" data-section="testimonials"> <div id="testimonials" data-section="testimonials">
<TestimonialCardFive <TestimonialCardTwelve
title="Що кажуть наші клієнти"
description="Послухайте від задоволених ентузіастів, які відчули різницю Hookah Haven."
testimonials={[ testimonials={[
{id: "1", name: "Омар Аль-Хасан, Знавець", date: "Date: 15 May 2024", title: "Просто найкращі!", quote: "Hookah Haven забезпечує якість та різноманітність. Моє улюблене місце для всіх потреб шиші.", tag: "Преміум досвід", avatarSrc: "https://img.b2bpic.net/free-photo/man-relaxing-by-vaping-from-hookah-bar_23-2149191823.jpg", imageSrc: "https://img.b2bpic.net/free-photo/man-relaxing-by-vaping-from-hookah-bar_23-2149191823.jpg", imageAlt: "Задоволений клієнт насолоджується кальяном"}, { id: '1', name: 'Emily White', imageSrc: 'https://via.placeholder.com/100x100.png?text=Avatar+1' },
{id: "2", name: "Лейла Хан, Власниця лаунжу", date: "Date: 20 April 2024", title: "Підвищили мій бізнес", quote: "Їх опції вугілля та тютюну просто фантастичні. Мої клієнти в захваті від якості!", tag: "Бізнес-партнер", avatarSrc: "https://img.b2bpic.net/free-photo/stylish-beard-arabian-man-glasses-military-jacket-smoking-hookah-street-bar-arab-model-having-rest-taking-selfie-phone_627829-2773.jpg", imageSrc: "https://img.b2bpic.net/free-photo/stylish-beard-arabian-man-glasses-military-jacket-smoking-hookah-street-bar-arab-model-having-rest-taking-selfie-phone_627829-2773.jpg", imageAlt: "Власниця лаунжу посміхається"}, { id: '2', name: 'David Lee', imageSrc: 'https://via.placeholder.com/100x100.png?text=Avatar+2' },
{id: "3", name: "Ахмед Малік, Соціальний курець", date: "Date: 10 March 2024", title: "Відмінний вибір та сервіс", quote: "Знайшов тут свою нову улюблену суміш. Персонал був неймовірно корисним та доброзичливим.", tag: "Новий фаворит", avatarSrc: "https://img.b2bpic.net/free-photo/girl-vaping_1303-5744.jpg", imageSrc: "https://img.b2bpic.net/free-photo/girl-vaping_1303-5744.jpg", imageAlt: "Людина насолоджується кальянною сесією"}, { id: '3', name: 'Sophia Miller', imageSrc: 'https://via.placeholder.com/100x100.png?text=Avatar+3' },
{id: "4", name: "Сара Джафарі, Ентузіастка", date: "Date: 02 February 2024", title: "Неперевершена якість!", quote: "Кальяни приголомшливі та працюють бездоганно. Безумовно, варті кожної копійки.", tag: "Високоякісне обладнання", avatarSrc: "https://img.b2bpic.net/free-photo/people-enjoying-night-out-together_23-2149173623.jpg", imageSrc: "https://img.b2bpic.net/free-photo/people-enjoying-night-out-together_23-2149173623.jpg", imageAlt: "Жінка милується кальяном"} { id: '4', name: 'James Brown', imageSrc: 'https://via.placeholder.com/100x100.png?text=Avatar+4' }
]} ]}
textboxLayout="default" cardTitle="Trusted by industry leaders and satisfied customers worldwide."
useInvertedBackground={false} cardTag="Join our growing community"
/> cardAnimation="blur-reveal"
</div>
<div id="faq" data-section="faq">
<FaqSplitText
sideTitle="Часті питання"
faqs={[
{id: "1", title: "Який тютюн ви пропонуєте?", content: "Ми пропонуємо широкий асортимент преміального тютюну для кальяну, включаючи традиційні, сучасні та екзотичні суміші від провідних світових брендів."},
{id: "2", title: "Чи здійснюєте ви міжнародну доставку?", content: "Наразі ми здійснюємо доставку лише в межах [Вашої країни/регіону]. Будь ласка, перегляньте нашу політику доставки для отримання додаткової інформації."},
{id: "3", title: "Як доглядати за новим кальяном?", content: "Кожен кальян поставляється з інструкціями по догляду. Зазвичай, найкраще чистити всі компоненти після кожного використання теплою водою та щіткою."},
{id: "4", title: "Яка ваша політика повернення?", content: "Ми приймаємо повернення протягом 30 днів з моменту покупки для невикористаних та нерозпакованих товарів. Детальну інформацію дивіться в нашій повній політиці повернення."}
]}
textPosition="left"
faqsAnimation="slide-up"
useInvertedBackground={false}
animationType="smooth"
/>
</div>
<div id="contact" data-section="contact">
<ContactText
text="Готові покращити свій кальянний досвід? Зв'яжіться з нашою командою для персоналізованих рекомендацій або будь-яких запитів."
buttons={[
{text: "Зв'язатися з нами", href: "/contact"},
{text: "Купити всю продукцію", href: "#products"}
]}
animationType="reveal-blur"
background={{ variant: "radial-gradient" }}
useInvertedBackground={true} useInvertedBackground={true}
/> />
</div> </div>
<div id="faq" data-section="faq">
<FaqBase
title="Common Questions, Clear Answers"
description="Browse our FAQ to quickly find solutions and understand our services better."
faqs={[
{ id: "1", title: "What is your onboarding process?", content: "Our onboarding is streamlined, guided by a dedicated success manager." },
{ id: "2", title: "Do you offer custom solutions?", content: "Yes, we tailor our solutions to fit your unique business requirements." },
{ id: "3", title: "How is customer support handled?", content: "We provide 24/7 support through multiple channels for your convenience." },
{ id: "4", title: "What are your security measures?", content: "We implement robust security protocols and regular audits to protect your data." }
]}
textboxLayout="default"
useInvertedBackground={false}
faqsAnimation="slide-up"
/>
</div>
<div id="contact" data-section="contact">
<ContactSplit
tag="Connect With Us"
title="Let's Build Something Amazing Together"
description="Reach out to our team to discuss your next big idea or sign up for our newsletter."
tagIcon={Mail}
background={{ variant: "radial-gradient" }}
useInvertedBackground={true}
imageSrc="https://via.placeholder.com/800x600.png?text=Contact+Us"
mediaAnimation="slide-up"
mediaPosition="right"
inputPlaceholder="Your email address"
buttonText="Subscribe"
termsText="By subscribing, you agree to our privacy policy."
onSubmit={(email) => console.log("Subscribed with: ", email)}
/>
</div>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseCard <FooterLogoEmphasis
logoText="Hookah Haven" logoText="MyCo"
columns={[ columns={[
{title: "Магазин", items: [ {items: [
{label: "Кальяни", href: "#products"}, {label: "Products", href: "/#products"},
{label: "Тютюн", href: "#products"}, {label: "Features", href: "/#features"}
{label: "Вугілля", href: "#products"},
{label: "Аксесуари", href: "#products"}
]}, ]},
{title: "Компанія", items: [ {items: [
{label: "Про нас", href: "#about"}, {label: "About Us", href: "/#about"},
{label: "FAQ", href: "#faq"}, {label: "Blog", href: "/blog"},
{label: "Контакти", href: "#contact"} {label: "Shop", href: "/shop"},
{label: "Contact", href: "/#contact"}
]} ]}
]} ]}
copyrightText="© 2024 Hookah Haven. Всі права захищені."
/> />
</div> </div>
</main> </main>

View File

@@ -4,8 +4,8 @@ import { Suspense, 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 } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleApple from "@/components/navbar/NavbarStyleApple/NavbarStyleApple"; import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
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";
import { useProductDetail } from "@/hooks/useProductDetail"; import { useProductDetail } from "@/hooks/useProductDetail";
@@ -77,41 +77,52 @@ function ProductPageContent({ params }: ProductPageProps) {
if (isLoading) { if (isLoading) {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="pill"
contentWidth="medium" contentWidth="medium"
sizing="large" sizing="mediumLarge"
background="aurora" background="fluid"
cardStyle="inset" cardStyle="soft-shadow"
primaryButtonStyle="primary-glow" primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="navbar" data-section="navbar"> <div id="navbar" data-section="navbar">
<NavbarStyleApple <NavbarStyleFullscreen
brandName="Hookah Haven" brandName="MyCo"
navItems={[ navItems={[
{ name: "Головна", id: "/" }, {name: "Home", id: "/"},
{ name: "Магазин", id: "/shop" } {name: "About", id: "/#about"},
{name: "Products", id: "/#products"},
{name: "Blog", id: "/blog"},
{name: "Contact", id: "/#contact"}
]} ]}
button={{ text: "Кошик", onClick: () => setCartOpen(true) }} bottomLeftText="Innovation Hub"
bottomRightText="info@myco.com"
/> />
</div> </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 id="loading-indicator" data-section="loading-indicator"> <div id="loading-indicator" data-section="loading-indicator">
<p className="text-foreground">Завантаження товару...</p> <p className="text-foreground">Loading product...</p>
</div> </div>
</main> </main>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseCard <FooterLogoEmphasis
logoText="Hookah Haven" logoText="MyCo"
columns={[ columns={[
{ title: "Магазин", items: [{ label: "Кальяни", href: "#products" }, { label: "Тютюн", href: "#products" }, { label: "Вугілля", href: "#products" }, { label: "Аксесуари", href: "#products" }] }, {items: [
{ title: "Компанія", items: [{ label: "Про нас", href: "#about" }, { label: "FAQ", href: "#faq" }, { label: "Контакти", href: "#contact" }] } {label: "Products", href: "/#products"},
{label: "Features", href: "/#features"}
]},
{items: [
{label: "About Us", href: "/#about"},
{label: "Blog", href: "/blog"},
{label: "Shop", href: "/shop"},
{label: "Contact", href: "/#contact"}
]}
]} ]}
copyrightText="© 2024 Hookah Haven. Всі права захищені."
/> />
</div> </div>
</ReactLenis> </ReactLenis>
@@ -122,47 +133,58 @@ function ProductPageContent({ params }: ProductPageProps) {
if (!product) { if (!product) {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="pill"
contentWidth="medium" contentWidth="medium"
sizing="large" sizing="mediumLarge"
background="aurora" background="fluid"
cardStyle="inset" cardStyle="soft-shadow"
primaryButtonStyle="primary-glow" primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="navbar" data-section="navbar"> <div id="navbar" data-section="navbar">
<NavbarStyleApple <NavbarStyleFullscreen
brandName="Hookah Haven" brandName="MyCo"
navItems={[ navItems={[
{ name: "Головна", id: "/" }, {name: "Home", id: "/"},
{ name: "Магазин", id: "/shop" } {name: "About", id: "/#about"},
{name: "Products", id: "/#products"},
{name: "Blog", id: "/blog"},
{name: "Contact", id: "/#contact"}
]} ]}
button={{ text: "Кошик", onClick: () => setCartOpen(true) }} bottomLeftText="Innovation Hub"
bottomRightText="info@myco.com"
/> />
</div> </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 id="not-found" data-section="not-found" className="text-center"> <div id="not-found" data-section="not-found" className="text-center">
<p className="text-foreground mb-4">Товар не знайдено</p> <p className="text-foreground mb-4">Product not found</p>
<button <button
onClick={() => router.push("/shop")} onClick={() => router.push("/shop")}
className="primary-button px-6 py-2 rounded-theme text-primary-cta-text" className="primary-button px-6 py-2 rounded-theme text-primary-cta-text"
> >
Повернутися до магазину Back to Shop
</button> </button>
</div> </div>
</main> </main>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseCard <FooterLogoEmphasis
logoText="Hookah Haven" logoText="MyCo"
columns={[ columns={[
{ title: "Магазин", items: [{ label: "Кальяни", href: "#products" }, { label: "Тютюн", href: "#products" }, { label: "Вугілля", href: "#products" }, { label: "Аксесуари", href: "#products" }] }, {items: [
{ title: "Компанія", items: [{ label: "Про нас", href: "#about" }, { label: "FAQ", href: "#faq" }, { label: "Контакти", href: "#contact" }] } {label: "Products", href: "/#products"},
{label: "Features", href: "/#features"}
]},
{items: [
{label: "About Us", href: "/#about"},
{label: "Blog", href: "/blog"},
{label: "Shop", href: "/shop"},
{label: "Contact", href: "/#contact"}
]}
]} ]}
copyrightText="© 2024 Hookah Haven. Всі права захищені."
/> />
</div> </div>
</ReactLenis> </ReactLenis>
@@ -172,26 +194,30 @@ function ProductPageContent({ params }: ProductPageProps) {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="pill"
contentWidth="medium" contentWidth="medium"
sizing="large" sizing="mediumLarge"
background="aurora" background="fluid"
cardStyle="inset" cardStyle="soft-shadow"
primaryButtonStyle="primary-glow" primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="navbar" data-section="navbar"> <div id="navbar" data-section="navbar">
<NavbarStyleApple <NavbarStyleFullscreen
brandName="Hookah Haven" brandName="MyCo"
navItems={[ navItems={[
{ name: "Головна", id: "/" }, {name: "Home", id: "/"},
{ name: "Магазин", id: "/shop" } {name: "About", id: "/#about"},
{name: "Products", id: "/#products"},
{name: "Blog", id: "/blog"},
{name: "Contact", id: "/#contact"}
]} ]}
button={{ text: "Кошик", onClick: () => setCartOpen(true) }} bottomLeftText="Innovation Hub"
bottomRightText="info@myco.com"
/> />
</div> </div>
<div id="product-detail-card" data-section="product-detail-card"> <div id="product-detail-card" data-section="product-detail-card">
@@ -210,8 +236,8 @@ function ProductPageContent({ params }: ProductPageProps) {
inventoryQuantity={meta.inventoryQuantity} inventoryQuantity={meta.inventoryQuantity}
sku={meta.sku} sku={meta.sku}
buttons={[ buttons={[
{ text: "Додати до кошика", onClick: handleAddToCart }, { text: "Add to Cart", onClick: handleAddToCart },
{ text: "Купити зараз", onClick: handleBuyNow } { text: "Buy Now", onClick: handleBuyNow }
]} ]}
/> />
</div> </div>
@@ -225,19 +251,26 @@ function ProductPageContent({ params }: ProductPageProps) {
total={`$${cartTotal}`} total={`$${cartTotal}`}
buttons={[ buttons={[
{ {
text: isCheckoutLoading ? "Обробка..." : "Оформити замовлення", onClick: handleCheckout, text: isCheckoutLoading ? "Processing..." : "Checkout", onClick: handleCheckout,
}, },
]} ]}
/> />
</div> </div>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseCard <FooterLogoEmphasis
logoText="Hookah Haven" logoText="MyCo"
columns={[ columns={[
{ title: "Магазин", items: [{ label: "Кальяни", href: "#products" }, { label: "Тютюн", href: "#products" }, { label: "Вугілля", href: "#products" }, { label: "Аксесуари", href: "#products" }] }, {items: [
{ title: "Компанія", items: [{ label: "Про нас", href: "#about" }, { label: "FAQ", href: "#faq" }, { label: "Контакти", href: "#contact" }] } {label: "Products", href: "/#products"},
{label: "Features", href: "/#features"}
]},
{items: [
{label: "About Us", href: "/#about"},
{label: "Blog", href: "/blog"},
{label: "Shop", href: "/shop"},
{label: "Contact", href: "/#contact"}
]}
]} ]}
copyrightText="© 2024 Hookah Haven. Всі права захищені."
/> />
</div> </div>
</ReactLenis> </ReactLenis>

View File

@@ -3,8 +3,8 @@
import { Suspense, useCallback } from "react"; import { Suspense, useCallback } from "react";
import ReactLenis from "lenis/react"; import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple'; import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import ProductCatalog from "@/components/ecommerce/productCatalog/ProductCatalog"; import ProductCatalog from "@/components/ecommerce/productCatalog/ProductCatalog";
import ProductCart from "@/components/ecommerce/cart/ProductCart"; import ProductCart from "@/components/ecommerce/cart/ProductCart";
import { useProductCatalog } from "@/hooks/useProductCatalog"; import { useProductCatalog } from "@/hooks/useProductCatalog";
@@ -44,39 +44,50 @@ function ShopPageContent() {
if (isLoading) { if (isLoading) {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="pill"
contentWidth="medium" contentWidth="medium"
sizing="large" sizing="mediumLarge"
background="aurora" background="fluid"
cardStyle="inset" cardStyle="soft-shadow"
primaryButtonStyle="primary-glow" primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="navbar" data-section="navbar"> <div id="navbar" data-section="navbar">
<NavbarStyleApple <NavbarStyleFullscreen
brandName="Hookah Haven" brandName="MyCo"
navItems={[ navItems={[
{ name: "Головна", id: "/" }, {name: "Home", id: "/"},
{ name: "Магазин", id: "/shop" } {name: "About", id: "/#about"},
{name: "Products", id: "/#products"},
{name: "Blog", id: "/blog"},
{name: "Contact", id: "/#contact"}
]} ]}
button={{ text: "Кошик", onClick: () => setCartOpen(true) }} bottomLeftText="Innovation Hub"
bottomRightText="info@myco.com"
/> />
</div> </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">Завантаження товарів...</p> <p className="text-foreground">Loading products...</p>
</main> </main>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseCard <FooterLogoEmphasis
logoText="Hookah Haven" logoText="MyCo"
columns={[ columns={[
{ title: "Магазин", items: [{ label: "Кальяни", href: "#products" }, { label: "Тютюн", href: "#products" }, { label: "Вугілля", href: "#products" }, { label: "Аксесуари", href: "#products" }] }, {items: [
{ title: "Компанія", items: [{ label: "Про нас", href: "#about" }, { label: "FAQ", href: "#faq" }, { label: "Контакти", href: "#contact" }] } {label: "Products", href: "/#products"},
{label: "Features", href: "/#features"}
]},
{items: [
{label: "About Us", href: "/#about"},
{label: "Blog", href: "/blog"},
{label: "Shop", href: "/shop"},
{label: "Contact", href: "/#contact"}
]}
]} ]}
copyrightText="© 2024 Hookah Haven. Всі права захищені."
/> />
</div> </div>
</ReactLenis> </ReactLenis>
@@ -86,26 +97,30 @@ function ShopPageContent() {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="pill"
contentWidth="medium" contentWidth="medium"
sizing="large" sizing="mediumLarge"
background="aurora" background="fluid"
cardStyle="inset" cardStyle="soft-shadow"
primaryButtonStyle="primary-glow" primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="navbar" data-section="navbar"> <div id="navbar" data-section="navbar">
<NavbarStyleApple <NavbarStyleFullscreen
brandName="Hookah Haven" brandName="MyCo"
navItems={[ navItems={[
{ name: "Головна", id: "/" }, {name: "Home", id: "/"},
{ name: "Магазин", id: "/shop" } {name: "About", id: "/#about"},
{name: "Products", id: "/#products"},
{name: "Blog", id: "/blog"},
{name: "Contact", id: "/#contact"}
]} ]}
button={{ text: "Кошик", onClick: () => setCartOpen(true) }} bottomLeftText="Innovation Hub"
bottomRightText="info@myco.com"
/> />
</div> </div>
<div id="product-catalog" data-section="product-catalog"> <div id="product-catalog" data-section="product-catalog">
@@ -114,9 +129,9 @@ function ShopPageContent() {
products={products} products={products}
searchValue={search} searchValue={search}
onSearchChange={setSearch} onSearchChange={setSearch}
searchPlaceholder="Пошук товарів..." searchPlaceholder="Search products..."
filters={filters} filters={filters}
emptyMessage="Товари не знайдено" emptyMessage="No products found"
/> />
</div> </div>
<div id="product-cart" data-section="product-cart"> <div id="product-cart" data-section="product-cart">
@@ -129,19 +144,26 @@ function ShopPageContent() {
total={`$${cartTotal}`} total={`$${cartTotal}`}
buttons={[ buttons={[
{ {
text: isCheckoutLoading ? "Обробка..." : "Оформити замовлення", onClick: handleCheckout, text: isCheckoutLoading ? "Processing..." : "Checkout", onClick: handleCheckout,
}, },
]} ]}
/> />
</div> </div>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseCard <FooterLogoEmphasis
logoText="Hookah Haven" logoText="MyCo"
columns={[ columns={[
{ title: "Магазин", items: [{ label: "Кальяни", href: "#products" }, { label: "Тютюн", href: "#products" }, { label: "Вугілля", href: "#products" }, { label: "Аксесуари", href: "#products" }] }, {items: [
{ title: "Компанія", items: [{ label: "Про нас", href: "#about" }, { label: "FAQ", href: "#faq" }, { label: "Контакти", href: "#contact" }] } {label: "Products", href: "/#products"},
{label: "Features", href: "/#features"}
]},
{items: [
{label: "About Us", href: "/#about"},
{label: "Blog", href: "/blog"},
{label: "Shop", href: "/shop"},
{label: "Contact", href: "/#contact"}
]}
]} ]}
copyrightText="© 2024 Hookah Haven. Всі права захищені."
/> />
</div> </div>
</ReactLenis> </ReactLenis>

View File

@@ -11,7 +11,7 @@ html {
body { body {
background-color: var(--background); background-color: var(--background);
color: var(--foreground); color: var(--foreground);
font-family: var(--font-archivo), sans-serif; font-family: var(--font-inter), sans-serif;
position: relative; position: relative;
min-height: 100vh; min-height: 100vh;
overscroll-behavior: none; overscroll-behavior: none;
@@ -24,5 +24,5 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: var(--font-archivo), sans-serif; font-family: var(--font-dm-sans), sans-serif;
} }

View File

@@ -2,23 +2,23 @@
/* Base units */ /* Base units */
/* --vw is set by ThemeProvider */ /* --vw is set by ThemeProvider */
/* --background: #0a0a0a;; /* --background: #f5faff;;
--card: #1a1a1a;; --card: #f1f8ff;;
--foreground: #ffffffe6;; --foreground: #001122;;
--primary-cta: #e6e6e6;; --primary-cta: #15479c;;
--secondary-cta: #1a1a1a;; --secondary-cta: #ffffff;;
--accent: #737373;; --accent: #a8cce8;;
--background-accent: #737373;; */ --background-accent: #7ba3cf;; */
--background: #0a0a0a;; --background: #f5faff;;
--card: #1a1a1a;; --card: #f1f8ff;;
--foreground: #ffffffe6;; --foreground: #001122;;
--primary-cta: #e6e6e6;; --primary-cta: #15479c;;
--primary-cta-text: #0a0a0a;; --primary-cta-text: #0a0a0a;;
--secondary-cta: #1a1a1a;; --secondary-cta: #ffffff;;
--secondary-cta-text: #ffffffe6;; --secondary-cta-text: #ffffffe6;;
--accent: #737373;; --accent: #a8cce8;;
--background-accent: #737373;; --background-accent: #7ba3cf;;
/* 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);