24 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
kudinDmitriyUp
e883f31726 feat: apply glassmorphic effect to testimonials 2026-05-07 21:07:59 +00:00
6f79233d49 Merge version_5_1778187565320 into main
Merge version_5_1778187565320 into main
2026-05-07 21:01:07 +00:00
kudinDmitriyUp
be309dfcbc feat: move testimonials into hero section 2026-05-07 21:00:45 +00:00
2440a28391 Merge version_4_1778187418260 into main
Merge version_4_1778187418260 into main
2026-05-07 20:58:39 +00:00
kudinDmitriyUp
2c49c4fcb2 feat: add testimonials to hero section 2026-05-07 20:58:18 +00:00
273874b13e Switch to version 1: modified src/pages/HomePage.tsx 2026-05-07 20:56:23 +00:00
e9b2d12e7c Switch to version 2: modified src/pages/HomePage.tsx 2026-05-07 20:56:13 +00:00
3bf084b90a Merge version_3_1778187258034 into main
Merge version_3_1778187258034 into main
2026-05-07 20:55:44 +00:00
kudinDmitriyUp
c0e25f16f6 feat: replace hero section with multi-image layout 2026-05-07 20:55:22 +00:00
45b410bfcd Switch to version 1: modified src/pages/HomePage.tsx 2026-05-07 20:52:59 +00:00
380337f092 Merge version_2_1778187045751 into main
Merge version_2_1778187045751 into main
2026-05-07 20:52:13 +00:00
4 changed files with 149 additions and 70 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

@@ -1,6 +1,6 @@
import { useEffect, useState } from "react";
import { Star } from "lucide-react";
import { motion, AnimatePresence } from "motion/react";
import { cls } from "@/lib/utils";
import Button from "@/components/ui/Button";
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
@@ -92,14 +92,10 @@ const HeroOverlayTestimonial = ({
</div>
</div>
<AnimatePresence mode="wait">
<motion.div
<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"
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) => (
@@ -124,8 +120,8 @@ const HeroOverlayTestimonial = ({
<span className="text-sm text-foreground/60">{testimonial.handle}</span>
</div>
</div>
</motion.div>
</AnimatePresence>
</div>
</section>
);
};

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,35 +2,55 @@ 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 HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
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';
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
import { Award, BarChart, Database, Droplet, Droplets, Grape, Leaf, Mountain, Star } from "lucide-react";
export default function HomePage() {
return (
<>
<div id="hero" data-section="hero">
<HeroSplitMediaGrid
brand="Vine & Barrel"
description="Crafting exceptional wines for generations, embodying the spirit of our land and the passion of our winemakers. Experience the artistry in every bottle."
primaryButton={{
text: "Explore Our Wines",
href: "#wines",
}}
secondaryButton={{
text: "Book a Tasting",
href: "#contact",
}}
images={[
"http://img.b2bpic.net/free-photo/person-picking-grapes-spending-time-vineyard_23-2151638420.jpg",
"http://img.b2bpic.net/free-photo/man-pouring-red-wine-from-wood-bottle-into-glass_140725-646.jpg",
"http://img.b2bpic.net/free-photo/red-wine-glass-bottle-marble-table-with-red-apple_114579-20986.jpg",
"http://img.b2bpic.net/free-photo/two-champagne-glasses_23-2147722779.jpg",
]}
/>
</div>
<HeroOverlayTestimonial
tag="What Our Patrons Say"
title="Vine & Barrel"
description="Crafting exceptional wines for generations, embodying the spirit of our land and the passion of our winemakers. Experience the artistry in every bottle."
primaryButton={{
text: "Explore Our Wines",
href: "#wines",
}}
secondaryButton={{
text: "Book a Tasting",
href: "#contact",
}}
imageSrc="http://img.b2bpic.net/free-photo/person-picking-grapes-spending-time-vineyard_23-2151638420.jpg"
testimonials={[
{
name: "Eleanor Vance",
handle: "Wine Enthusiast",
text: "The Heritage Cabernet Sauvignon is a masterpiece. Rich, complex, and absolutely unforgettable. Vine & Barrel truly sets the standard for quality.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/lady-with-wine_1157-7318.jpg",
},
{
name: "Marcus Thorne",
handle: "Sommelier",
text: "I'm consistently impressed by the depth and character of Vine & Barrel's portfolio. Their Estate Chardonnay is particularly remarkable, a true gem.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-holding-wine-glass_23-2149428826.jpg",
},
{
name: "Isabelle Dubois",
handle: "Restaurateur",
text: "Serving Vine & Barrel wines has elevated our dining experience. Our guests frequently commend the exceptional quality and unique flavors.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-with-red-hair-green-dress-smiling-holding-glass-sitting-with-positive-girl-t-shirt-skirt-outdoor_197531-24721.jpg",
},
]}
/>
</div>
<div id="about" data-section="about">
<AboutFeaturesSplit
@@ -169,45 +189,7 @@ export default function HomePage() {
/>
</div>
<div id="testimonials" data-section="testimonials">
<TestimonialMarqueeCards
tag="What Our Patrons Say"
title="Voices of Delight"
description="Our wines have touched hearts and enriched palates. Read what our cherished customers have to say about their Vine & Barrel experience."
testimonials={[
{
name: "Eleanor Vance",
role: "Wine Enthusiast",
quote: "The Heritage Cabernet Sauvignon is a masterpiece. Rich, complex, and absolutely unforgettable. Vine & Barrel truly sets the standard for quality.",
imageSrc: "http://img.b2bpic.net/free-photo/lady-with-wine_1157-7318.jpg",
},
{
name: "Marcus Thorne",
role: "Sommelier",
quote: "I'm consistently impressed by the depth and character of Vine & Barrel's portfolio. Their Estate Chardonnay is particularly remarkable, a true gem.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-holding-wine-glass_23-2149428826.jpg",
},
{
name: "Isabelle Dubois",
role: "Restaurateur",
quote: "Serving Vine & Barrel wines has elevated our dining experience. Our guests frequently commend the exceptional quality and unique flavors.",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-with-red-hair-green-dress-smiling-holding-glass-sitting-with-positive-girl-t-shirt-skirt-outdoor_197531-24721.jpg",
},
{
name: "David Sterling",
role: "Collector",
quote: "Vine & Barrel's commitment to sustainable practices and their nuanced approach to winemaking shines through. Every bottle is a testament to their passion.",
imageSrc: "http://img.b2bpic.net/free-photo/new-year-spend-with-friends-celebrating_23-2149196973.jpg",
},
{
name: "Sophia Rodriguez",
role: "Vineyard Visitor",
quote: "The tasting experience was delightful, and the staff were incredibly knowledgeable. Their Rosé is perfectly balanced for any occasion.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiling-man-dinner_23-2148060592.jpg",
},
]}
/>
</div>
<div id="tastings" data-section="tastings">
<FaqSplitMedia
@@ -236,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"