Merge version_3_1780490790011 into main #2
@@ -1,45 +1,88 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "home" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import Tag from "@/components/ui/Tag";
|
||||
import Button from "@/components/ui/Button";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
|
||||
export default function HomeSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="home" data-webild-section="home">
|
||||
<SectionErrorBoundary name="home">
|
||||
<HeroTiltedCards
|
||||
tag="Welcome to Our Bakery"
|
||||
title="Freshly Baked, Made Daily, Just for You"
|
||||
description="Handcrafted pastries, custom cakes, and artisan breads using premium ingredients. Order online or visit us today."
|
||||
primaryButton={{
|
||||
text: "Order Now",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Menu",
|
||||
href: "#products",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-challah-dish-hanukkah_23-2151129284.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-people-wearing-linen-clothing_23-2151030585.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-freshly-bakery-products-wooden-background-close-up-photo-freshly-baked-bread-products_613910-6800.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1509440159596-0249088772ff?q=80&w=2072&auto=format&fit=crop",
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1558961363-fa8fdf82db35?q=80&w=1965&auto=format&fit=crop",
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
<div id="home" data-webild-section="home" className="relative overflow-hidden bg-background">
|
||||
{React.createElement(() => {
|
||||
const [selectedImage, setSelectedImage] = React.useState<string | null>(null);
|
||||
const items = [
|
||||
"http://img.b2bpic.net/free-photo/top-view-challah-dish-hanukkah_23-2151129284.jpg",
|
||||
"http://img.b2bpic.net/free-photo/high-angle-people-wearing-linen-clothing_23-2151030585.jpg",
|
||||
"http://img.b2bpic.net/free-photo/delicious-freshly-bakery-products-wooden-background-close-up-photo-freshly-baked-bread-products_613910-6800.jpg",
|
||||
"https://images.unsplash.com/photo-1509440159596-0249088772ff?q=80&w=2072&auto=format&fit=crop",
|
||||
"https://images.unsplash.com/photo-1558961363-fa8fdf82db35?q=80&w=1965&auto=format&fit=crop"
|
||||
];
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="container mx-auto px-4 text-center">
|
||||
<ScrollReveal variant="slide-up">
|
||||
<Tag text="Welcome to Our Bakery" className="mb-6 mx-auto" />
|
||||
<h1 className="text-5xl md:text-7xl font-bold text-foreground mb-6 tracking-tight">
|
||||
Freshly Baked, Made<br />Daily, Just for You
|
||||
</h1>
|
||||
<p className="text-xl text-muted-foreground max-w-content-width mx-auto">
|
||||
Handcrafted pastries, custom cakes, and artisan breads using premium ingredients. Order online or visit us today.
|
||||
</p>
|
||||
<div className="flex flex-wrap justify-center gap-4">
|
||||
<Button text="Order Now" variant="primary" href="#contact" />
|
||||
<Button text="Our Menu" variant="secondary" href="#products" />
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
|
||||
<ScrollReveal variant="slide-up">
|
||||
<div className="relative max-w-content-width mx-auto h-[400px] flex justify-center items-center">
|
||||
{items.map((src, idx) => {
|
||||
const rotations = ['-rotate-12', '-rotate-6', 'rotate-0', 'rotate-6', 'rotate-12'];
|
||||
const zIndexes = ['z-10', 'z-20', 'z-30', 'z-20', 'z-10'];
|
||||
const translates = ['-translate-x-40', '-translate-x-20', 'translate-x-0', 'translate-x-20', 'translate-x-40'];
|
||||
|
||||
return (
|
||||
<div
|
||||
key={idx}
|
||||
className={`absolute w-48 h-64 md:w-64 md:h-80 rounded-theme overflow-hidden border-8 border-white shadow-xl cursor-pointer transition-transform hover:scale-110 hover:z-50 ${rotations[idx]} ${zIndexes[idx]} ${translates[idx]}`}
|
||||
onClick={() => setSelectedImage(src)}
|
||||
>
|
||||
<ImageOrVideo imageSrc={src} className="w-full h-full object-cover" />
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
|
||||
{selectedImage && (
|
||||
<div
|
||||
className="fixed inset-0 z-[100] flex items-center justify-center bg-black/80 p-4 backdrop-blur-sm"
|
||||
onClick={() => setSelectedImage(null)}
|
||||
>
|
||||
<button
|
||||
className="absolute top-6 right-6 text-white hover:text-gray-300 transition-colors"
|
||||
onClick={() => setSelectedImage(null)}
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
|
||||
</button>
|
||||
<div
|
||||
className="relative max-w-content-width max-h-[90vh] w-full h-full flex items-center justify-center"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<img
|
||||
src={selectedImage}
|
||||
alt="Expanded view"
|
||||
className="max-w-full max-h-full object-contain rounded-lg shadow-2xl"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user