13 Commits

Author SHA1 Message Date
kudinDmitriyUp
37ec7c3f38 feat: replace gallery carousel with bento grid 2026-05-07 21:44:42 +00:00
78aeb49b85 Switch to version 10: modified src/pages/HomePage.tsx 2026-05-07 21:38:05 +00:00
97d714b472 Switch to version 9: modified src/pages/HomePage.tsx 2026-05-07 21:37:56 +00:00
38ae4249b0 Merge version_10_1778189641211 into main
Merge version_10_1778189641211 into main
2026-05-07 21:35:36 +00:00
kudinDmitriyUp
9ff93e7f07 feat: add gallery section to homepage 2026-05-07 21:35:04 +00:00
eccf99bffa Merge version_9_1778189457569 into main
Merge version_9_1778189457569 into main
2026-05-07 21:32:20 +00:00
kudinDmitriyUp
c7abc1069e feat: add customer gallery to homepage 2026-05-07 21:31:58 +00:00
2bbd922b2b Switch to version 7: modified src/pages/HomePage.tsx 2026-05-07 21:30:38 +00:00
e8ccaf4bb9 Merge version_8_1778189295855 into main
Merge version_8_1778189295855 into main
2026-05-07 21:29:37 +00:00
kudinDmitriyUp
a8dcee9314 feat: add gallery section 2026-05-07 21:29:14 +00:00
c2b4bdedf6 Merge version_7_1778189152312 into main
Merge version_7_1778189152312 into main
2026-05-07 21:27:33 +00:00
kudinDmitriyUp
399795763a feat: enhance glassmorphic effect on testimonials 2026-05-07 21:27:02 +00:00
96ffe62070 Merge version_6_1778187926617 into main
Merge version_6_1778187926617 into main
2026-05-07 21:08:22 +00:00
4 changed files with 103 additions and 5 deletions

View File

@@ -0,0 +1,49 @@
import React from 'react';
type GalleryItem = {
imageSrc: string;
title: string;
description: string;
className?: string;
};
const GalleryBento = ({
tag,
title,
description,
items,
}: {
tag: string;
title:string;
description: string;
items: GalleryItem[];
}) => {
return (
<section className="py-20">
<div className="container mx-auto px-4">
<div className="text-center mb-12">
<span className="text-sm font-semibold text-primary uppercase tracking-wider">{tag}</span>
<h2 className="text-4xl font-bold text-gray-900 dark:text-white mt-2">{title}</h2>
<p className="text-lg text-gray-600 dark:text-gray-300 mt-4 max-w-2xl mx-auto">{description}</p>
</div>
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
{items.map((item, index) => (
<div
key={index}
className={`relative overflow-hidden rounded-lg group fade-in ${item.className}`}
>
<img src={item.imageSrc} alt={item.title} className="w-full h-full object-cover transition-transform duration-500 group-hover:scale-110" />
<div className="absolute inset-0 bg-black bg-opacity-50 flex flex-col justify-end p-4 opacity-0 group-hover:opacity-100 transition-opacity duration-500">
<h3 className="text-white text-lg font-semibold">{item.title}</h3>
<p className="text-gray-300 text-sm">{item.description}</p>
</div>
</div>
))}
</div>
</div>
</section>
);
};
export default GalleryBento;

View File

@@ -95,11 +95,7 @@ const HeroOverlayTestimonial = ({
<div
key={currentIndex}
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -10 }}
transition={{ duration: 0.3 }}
className="absolute z-10 bottom-3 left-3 right-3 p-3 xl:p-4 2xl:p-5 card rounded flex flex-col gap-3 xl:gap-4 2xl:gap-5 md:left-auto md:bottom-8 md:right-8 md:max-w-25/100 2xl:max-w-2/10 bg-white/10 backdrop-blur-md border border-white/20"
className="absolute z-10 bottom-3 left-3 right-3 p-3 xl:p-4 2xl:p-5 card rounded flex flex-col gap-3 xl:gap-4 2xl:gap-5 md:left-auto md:bottom-8 md:right-8 md:max-w-25/100 2xl:max-w-2/10 bg-white/20 backdrop-blur-lg border border-white/30"
>
<div className="flex gap-1">
{Array.from({ length: 5 }).map((_, index) => (

View File

@@ -186,3 +186,17 @@ h6 {
2.10837px 3.16256px 9.48767px color-mix(in srgb, var(--color-accent) 10%, transparent);
border: 1px solid var(--color-secondary-cta);
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fade-in {
animation: fadeIn 0.5s ease-in-out;
}

View File

@@ -2,6 +2,7 @@ import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesIconCards from '@/components/sections/features/FeaturesIconCards';
import GalleryBento from '@/components/custom/GalleryBento';
import HeroOverlayTestimonial from '@/components/sections/hero/HeroOverlayTestimonial';
import MetricsGradientCards from '@/components/sections/metrics/MetricsGradientCards';
import ProductRatingCards from '@/components/sections/product/ProductRatingCards';
@@ -217,6 +218,44 @@ export default function HomePage() {
/>
</div>
<div id="gallery" data-section="gallery">
<GalleryBento
tag="Vineyard Moments"
title="Capturing the Spirit of Vine & Barrel"
description="Explore memorable moments from our vineyard, where guests enjoy the beauty of our estate and the pleasure of our wines."
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/group-friends-celebrating-together_23-2149872337.jpg",
title: "Toasting to Friendship",
description: "Guests raising a glass amidst the scenic beauty of our vineyard.",
className: "col-span-2 row-span-2",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/happy-friends-having-fun-outdoors_23-2148952039.jpg",
title: "Vineyard Explorations",
description: "A group of friends enjoying a sunny day exploring our lush vineyards.",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/people-enjoying-calm-countryside_23-2150162019.jpg",
title: "Serene Tastings",
description: "Visitors savoring our finest wines while taking in the tranquil vineyard views.",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/group-people-sitting-table-eating-drinking-wine_1303-28963.jpg",
title: "Harvest Celebrations",
description: "A joyful gathering celebrating the harvest season with good food and great wine.",
className: "col-span-2",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-friends-clinking-wine-glasses-while-having-picnic-vineyard_23-2148179259.jpg",
title: "Picnics and Pairings",
description: "Friends enjoying a delightful picnic, perfectly paired with our signature wines.",
className: "col-span-2",
},
]}
/>
</div>
<div id="contact" data-section="contact">
<ContactSplitForm
tag="Connect With Us"