3 Commits

Author SHA1 Message Date
3a2905a8b0 Bob AI: add a background video for Artisanal Baked Goods s... 2026-02-23 18:39:19 +02:00
153ad3e960 Bob AI: Modify the ProductCardOne component to add a background vide 2026-02-23 18:35:33 +02:00
f62a9472d6 Merge version_4 into main
Merge version_4 into main
2026-02-23 16:05:28 +00:00
2 changed files with 45 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
"use client" "use client"
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import HeroLogo from '@/components/sections/hero/HeroLogo'; import HeroBillboard from '@/components/sections/hero/HeroBillboard';
import MediaAbout from '@/components/sections/about/MediaAbout'; import MediaAbout from '@/components/sections/about/MediaAbout';
import FeatureCardMedia from '@/components/sections/feature/FeatureCardMedia'; import FeatureCardMedia from '@/components/sections/feature/FeatureCardMedia';
import ProductCardOne from '@/components/sections/product/ProductCardOne'; import ProductCardOne from '@/components/sections/product/ProductCardOne';
@@ -43,17 +43,49 @@ export default function LandingPage() {
</div> </div>
<div id="hero-section" data-section="hero-section"> <div id="hero-section" data-section="hero-section">
<HeroLogo <HeroBillboard
logoText="Warm & Crumb" title="Artisanal Baked Goods"
description="Artisan Baked Goods Delivered to Your Doorstep" description="Handcrafted with passion and premium ingredients for an unforgettable taste experience"
background={{ variant: "radial-gradient" }}
tag="Fresh Daily"
tagIcon={null}
tagAnimation="fade-in"
buttons={[ buttons={[
{ text: "View Our Menu", href: "products-section" }, { text: "View Our Menu", href: "#menu", dataWebildId: "btn-1" },
{ text: "Visit Us", href: "contact-section" } { text: "Order Online", href: "#order", dataWebildId: "btn-2" }
]} ]}
buttonAnimation="slide-up" buttonAnimation="slide-up"
imageSrc="https://img.b2bpic.net/free-photo/view-delicious-baked-bread-pastry-shop_23-2150379551.jpg" avatars={[]}
imageAlt="Warm and inviting bakery interior with fresh pastries on display" avatarText=""
showDimOverlay={true} videoSrc="https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
videoAriaLabel="Baking process demonstration video"
mediaAnimation="zoom-in"
marqueeItems={[
{ text: "Organic Ingredients", icon: null, dataWebildId: "marquee-1" },
{ text: "Fresh Daily", icon: null, dataWebildId: "marquee-2" },
{ text: "Handcrafted", icon: null, dataWebildId: "marquee-3" }
]}
marqueeSpeed={1}
showMarqueeCard={true}
ariaLabel="Welcome to Warm & Crumb Bakery"
className=""
containerClassName=""
textBoxClassName=""
titleClassName=""
descriptionClassName=""
tagClassName=""
avatarGroupClassName=""
buttonContainerClassName=""
buttonClassName=""
buttonTextClassName=""
mediaWrapperClassName=""
imageClassName=""
marqueeClassName=""
marqueeItemClassName=""
marqueeCardClassName=""
marqueeImageClassName=""
marqueeTextClassName=""
marqueeIconClassName=""
/> />
</div> </div>

View File

@@ -8,6 +8,7 @@ import ProductImage from "@/components/shared/ProductImage";
import { cls, shouldUseInvertedText } from "@/lib/utils"; import { cls, shouldUseInvertedText } from "@/lib/utils";
import { useTheme } from "@/providers/themeProvider/ThemeProvider"; import { useTheme } from "@/providers/themeProvider/ThemeProvider";
import { useProducts } from "@/hooks/useProducts"; import { useProducts } from "@/hooks/useProducts";
import { useRef, useEffect } from "react";
import type { Product } from "@/lib/api/product"; import type { Product } from "@/lib/api/product";
import type { LucideIcon } from "lucide-react"; import type { LucideIcon } from "lucide-react";
import type { ButtonConfig, GridVariant, CardAnimationType, TitleSegment, ButtonAnimationType } from "@/components/cardStack/types"; import type { ButtonConfig, GridVariant, CardAnimationType, TitleSegment, ButtonAnimationType } from "@/components/cardStack/types";
@@ -52,6 +53,8 @@ interface ProductCardOneProps {
textBoxButtonContainerClassName?: string; textBoxButtonContainerClassName?: string;
textBoxButtonClassName?: string; textBoxButtonClassName?: string;
textBoxButtonTextClassName?: string; textBoxButtonTextClassName?: string;
backgroundVideoUrl?: string;
showBackgroundVideo?: boolean;
} }
interface ProductCardItemProps { interface ProductCardItemProps {
@@ -72,7 +75,7 @@ const ProductCardItem = memo(({
cardPriceClassName = "", cardPriceClassName = "",
}: ProductCardItemProps) => { }: ProductCardItemProps) => {
return ( return (
<article <article className="relative overflow-hidden"
className={cls("card group relative h-full flex flex-col gap-4 cursor-pointer p-4 rounded-theme-capped", cardClassName)} className={cls("card group relative h-full flex flex-col gap-4 cursor-pointer p-4 rounded-theme-capped", cardClassName)}
onClick={product.onProductClick} onClick={product.onProductClick}
role="article" role="article"