Compare commits

...

49 Commits

Author SHA1 Message Date
9ec235c48b Merge version_22_1780414314385 into main
Merge version_22_1780414314385 into main
2026-06-02 15:33:54 +00:00
kudinDmitriyUp
9717e121f6 Bob AI: fix build errors (attempt 1) 2026-06-02 15:33:27 +00:00
kudinDmitriyUp
a5283d27c8 Bob AI: Added an events section to showcase upcoming activities. 2026-06-02 15:32:33 +00:00
82d3bb2af3 Switch to version 20: modified src/pages/HomePage/sections/Home.tsx 2026-06-02 15:31:43 +00:00
992017f936 Switch to version 20: modified src/pages/HomePage/sections/Beers.tsx 2026-06-02 15:31:43 +00:00
d353c846ae Merge version_21_1780413891457 into main
Merge version_21_1780413891457 into main
2026-06-02 15:28:17 +00:00
kudinDmitriyUp
67ade2fdd9 Bob AI: Rewrite the headline in the hero section to be more engaging 2026-06-02 15:27:38 +00:00
kudinDmitriyUp
e29a634ca5 Bob AI: fix build error in src/pages/HomePage/sections/Beers.tsx 2026-06-02 15:26:23 +00:00
c45973d9ed Merge version_20_1780413776990 into main
Merge version_20_1780413776990 into main
2026-06-02 15:24:36 +00:00
kudinDmitriyUp
d1f64ebcfe Bob AI (stub): To make testimonials more impactful, ensure each quote inclu 2026-06-02 15:24:32 +00:00
7429e33760 Switch to version 18: modified src/pages/HomePage/sections/Beers.tsx 2026-06-02 15:22:48 +00:00
cf1c3e228d Switch to version 18: modified src/pages/HomePage.tsx 2026-06-02 15:22:47 +00:00
5871d3f16e Merge version_19_1780413306510 into main
Merge version_19_1780413306510 into main
2026-06-02 15:16:37 +00:00
kudinDmitriyUp
d4da9836a5 Bob AI (stub): Introduce a dedicated section for upcoming events, live musi 2026-06-02 15:16:34 +00:00
kudinDmitriyUp
d6fabcdb70 Bob AI: fix build error in src/pages/HomePage/sections/Beers.tsx 2026-06-02 15:16:17 +00:00
de908b7def Merge version_18_1780413146184 into main
Merge version_18_1780413146184 into main
2026-06-02 15:14:29 +00:00
kudinDmitriyUp
b51e5b2484 Bob AI (stub): Introduce a dedicated section for upcoming events, live musi 2026-06-02 15:14:25 +00:00
784b42c0ea Merge version_17_1780412984914 into main
Merge version_17_1780412984914 into main
2026-06-02 15:11:57 +00:00
kudinDmitriyUp
d304be0199 Bob AI: User wants to fix images in the 'Our Beers' section, but the 2026-06-02 15:11:30 +00:00
b8bb7a6d5f Switch to version 15: modified src/pages/HomePage/sections/Beers.tsx 2026-06-02 15:02:04 +00:00
dfe477646a Merge version_16_1780412346762 into main
Merge version_16_1780412346762 into main
2026-06-02 15:01:42 +00:00
kudinDmitriyUp
7a6adf8255 Bob AI: fix build error in src/pages/HomePage/sections/Beers.tsx 2026-06-02 14:59:45 +00:00
69582c45b1 Merge version_15_1780412202557 into main
Merge version_15_1780412202557 into main
2026-06-02 14:58:42 +00:00
kudinDmitriyUp
c24ff1996b Bob AI: Rewrite the calls-to-action (CTAs) within the 'Beers' sectio 2026-06-02 14:58:17 +00:00
c210f3c561 Merge version_14_1780411748635 into main
Merge version_14_1780411748635 into main
2026-06-02 14:51:05 +00:00
kudinDmitriyUp
e2dcc2d5e5 Bob AI: Add evocative and concise descriptions for each beer in the 2026-06-02 14:50:41 +00:00
ea750d0b01 Switch to version 12: modified src/pages/HomePage/sections/Beers.tsx 2026-06-02 14:44:43 +00:00
3618dd9836 Merge version_13_1780411189796 into main
Merge version_13_1780411189796 into main
2026-06-02 14:41:44 +00:00
kudinDmitriyUp
4c5eccd24d Bob AI (approx): Expand on each beer's description with captivating tasting n 2026-06-02 14:41:40 +00:00
65d86351c8 Merge version_12_1780411041624 into main
Merge version_12_1780411041624 into main
2026-06-02 14:39:06 +00:00
kudinDmitriyUp
96bd96da91 Bob AI: Added different colors to badges in the hero section 2026-06-02 14:39:00 +00:00
6d11724ec5 Merge version_11_1780410770038 into main
Merge version_11_1780410770038 into main
2026-06-02 14:34:20 +00:00
kudinDmitriyUp
caf3807d41 Bob AI (stub): make badges in hero sections each on in different color 2026-06-02 14:34:16 +00:00
bb88c37cd4 Merge version_10_1780410417085 into main
Merge version_10_1780410417085 into main
2026-06-02 14:28:16 +00:00
kudinDmitriyUp
61e1311d23 Bob AI (stub): make badges in hero sections each on in different color 2026-06-02 14:28:12 +00:00
kudinDmitriyUp
1e14fd6e43 Bob AI: Split src/pages/HomePage.tsx into per-section files (7 sections) 2026-06-02 14:27:11 +00:00
8077861d43 Merge version_9_1780407462050 into main
Merge version_9_1780407462050 into main
2026-06-02 13:40:56 +00:00
kudinDmitriyUp
39aa18800d Bob AI: Add a primary or secondary call-to-action button to the 'sto 2026-06-02 13:40:20 +00:00
9d57261117 Merge version_8_1780407270523 into main
Merge version_8_1780407270523 into main
2026-06-02 13:36:10 +00:00
kudinDmitriyUp
8f228cf4b2 Bob AI: Replace one of the duplicate 'Leaf' icons in the hero's valu 2026-06-02 13:35:34 +00:00
809a1cd0c1 Merge version_6_1780406242438 into main
Merge version_6_1780406242438 into main
2026-06-02 13:21:16 +00:00
kudinDmitriyUp
c85f04a2a1 Bob AI: fix build errors (attempt 1) 2026-06-02 13:20:40 +00:00
kudinDmitriyUp
58d25ae19b Bob AI: Apply different background colors to each badge within the h 2026-06-02 13:19:41 +00:00
9fce7aa7e8 Merge version_5_1780405786010 into main
Merge version_5_1780405786010 into main
2026-06-02 13:13:47 +00:00
kudinDmitriyUp
87b70ffcf0 Bob AI: fix build errors (attempt 1) 2026-06-02 13:13:11 +00:00
kudinDmitriyUp
af016b7dc8 Bob AI: Locate badge elements within the home section (assumed to be 2026-06-02 13:12:16 +00:00
d300cd9834 Merge version_4_1780405336764 into main
Merge version_4_1780405336764 into main
2026-06-02 13:06:13 +00:00
kudinDmitriyUp
e1874f6bb0 Bob AI (stub): make badges in hero sections each on in different color 2026-06-02 13:06:09 +00:00
46736ec39c Merge version_3_1780405209697 into main
Merge version_3_1780405209697 into main
2026-06-02 13:00:40 +00:00
9 changed files with 430 additions and 252 deletions

View File

@@ -1,257 +1,40 @@
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import FeaturesRevealCardsBentoSharp from '@/components/sections/features/FeaturesRevealCardsBentoSharp';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import { Award, Droplet, Leaf, Users, Star } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import TextAnimation from "@/components/ui/TextAnimation";
import ScrollReveal from "@/components/ui/ScrollReveal";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import FaqSimple from '@/components/sections/faq/FaqSimple';
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
// files directly; this shell only fixes render order.
export default function HomePage() {
import React from 'react';
import HomeSection from './HomePage/sections/Home';
import BeersSection from './HomePage/sections/Beers';
import StorySection from './HomePage/sections/Story';
import TaproomSection from './HomePage/sections/Taproom';
import TestimonialQuoteCardsSection from './HomePage/sections/TestimonialQuoteCards';
import FaqSimpleSection from './HomePage/sections/FaqSimple';
import ContactSection from './HomePage/sections/Contact';
import EventsSection from './HomePage/sections/Events';{/* webild-stub @2026-06-02T15:24:31.770Z: To make testimonials more impactful, ensure each quote includes an avatar or photo of the reviewer, along with their name and, if possible, their location or a brief title, to build greater trust. */}
{/* webild-stub @2026-06-02T15:14:24.839Z: Introduce a dedicated section for upcoming events, live music, or special releases to encourage repeat visits and community engagement, transforming passive viewers into active participants. */}
{/* webild-stub @2026-06-02T14:34:15.285Z: make badges in hero sections each on in different color */}
{/* webild-stub @2026-06-02T14:28:11.483Z: make badges in hero sections each on in different color */}
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="home" data-section="home">
<SectionErrorBoundary name="home">
<HeroOverlayMarquee
tag="Welcome to Vermont's Finest"
title="Crafting Exceptional Beer Since 1998"
description="Nestled in the picturesque Cedar Mountains, our brewery is dedicated to producing high-quality, artisanal beers that capture the spirit of Vermont. We combine traditional techniques with a passion for innovation, ensuring every sip is a taste of our unique heritage."
primaryButton={{
text: "Explore Our Beers",
href: "#beers",
}}
secondaryButton={{
text: "Our Story",
href: "#story",
}}
items={[
{
text: "Local Ingredients",
icon: Leaf,
},
{
text: "Sustainable Brewing",
icon: Leaf,
},
{
text: "Award-Winning",
icon: Award,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/morning-mountains-carpathian-ukraine-aerial-view_1153-6120.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="beers" data-section="beers">
<SectionErrorBoundary name="beers">
<FeaturesRevealCardsBentoSharp
tag="Our Signature Collection"
title="Taste the Craftsmanship"
description="From crisp lagers to robust stouts, each Cedar Mountain brew tells a story of Vermont's rich landscape and our dedication to the art of brewing. Discover our most popular and beloved beers."
items={[
{
title: "Maple Amber Ale",
description: "A rich, malty ale with subtle notes of Vermont maple syrup, balanced by a clean hop finish. Perfect for any season.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/composed-books-autumnal-goods_23-2147687094.jpg",
},
{
title: "Cascade IPA",
description: "Our flagship IPA, bursting with vibrant citrus and pine aromas from generous Cascade hop additions. Bold, refreshing, and truly iconic.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-psd/flat-design-oktoberfest-celebration-poster_23-2150683567.jpg",
},
{
title: "Stout Mountain Porter",
description: "A dark and brooding porter with deep roasted malt flavors, hints of chocolate and coffee, and a creamy texture. A comforting classic.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-bottles-bear-dark-background_140725-94854.jpg",
},
{
title: "Summertime Lager",
description: "Light, crisp, and incredibly refreshing. Our lager is brewed for sunny days and good company, with a clean finish that invites another sip.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/celebration-beer-cheers-concept-close-up-hand-holding-up-glasses-beer-man_1150-6458.jpg",
},
{
title: "Harvest Wheat Beer",
description: "A hazy, unfiltered wheat beer brewed with local Vermont wheat, offering subtle fruit and spice notes. A true taste of the harvest.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/composition-with-tasty-american-beer_23-2148907632.jpg",
},
{
title: "Barrel-Aged Scotch Ale",
description: "A robust Scotch Ale aged in oak barrels, developing complex vanilla, caramel, and smoky characteristics. A beer for sipping and savoring.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/pints-draught-beer-macro-photography_53876-101409.jpg",
},
{
title: "Raspberry Sour",
description: "A delightfully tart and fruity sour ale, brewed with real Vermont raspberries for a vibrant color and juicy, refreshing flavor.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-friends-beach-with-beer_23-2147827103.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="story" data-section="story">
<SectionErrorBoundary name="story">
<AboutFeaturesSplit
tag="Our Journey"
title="The Heart of Cedar Mountain Brewing"
description="For over two decades, Cedar Mountain Brewery has been more than just a place to make beer; it's a testament to passion, community, and the pristine environment of Vermont. Our story began with a simple idea: to craft beers that reflect the purity of our mountain springs and the richness of local harvests. Every batch is a labor of love, a blend of traditional techniques, and innovative spirit."
items={[
{
icon: Droplet,
title: "Traditional Craft",
description: "Honoring age-old brewing methods passed down through generations, ensuring authenticity in every batch.",
},
{
icon: Leaf,
title: "Local Sourcing",
description: "Utilizing the finest Vermont-grown hops, grains, and pure mountain water to create unique flavors.",
},
{
icon: Users,
title: "Community Focused",
description: "A gathering place for locals and visitors, fostering connection over great beer and shared experiences.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/smiling-man-breaking-egg-white-big-bowl_23-2148164492.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="taproom" data-section="taproom">
<SectionErrorBoundary name="taproom">
<FeaturesMediaCards
tag="Experience Our Home"
title="The Cedar Mountain Taproom"
description="Join us at our cozy taproom, nestled at the base of Cedar Mountain. Enjoy fresh brews straight from the source, delicious local bites, and a welcoming atmosphere. It's more than a bar; it's where our community comes together to celebrate good beer and good company."
items={[
{
title: "Fresh Taps Daily",
description: "Always a rotating selection of our latest and greatest brews on tap, featuring seasonal specialties and classic favorites.",
imageSrc: "http://img.b2bpic.net/free-photo/still-life-beer-brewing-elements_23-2150321509.jpg",
},
{
title: "Local Food Pairings",
description: "Savor delicious appetizers and meals, thoughtfully crafted to complement our beers, made with ingredients from Vermont farms.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-fried-pieces-meat-fried-onions_140725-3560.jpg",
},
{
title: "Live Music & Events",
description: "Check our calendar for regular live performances, engaging trivia nights, and exciting new beer releases.",
imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-men-standing-bar-counter-talking-each-other_23-2147861997.jpg",
},
{
title: "Scenic Outdoor Seating",
description: "Relax on our spacious patio with stunning panoramic views of the surrounding Cedar Mountains and lush Vermont landscape.",
imageSrc: "http://img.b2bpic.net/free-photo/wooden-chair-table-outdoor-terrace_74190-3968.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="testimonials" data-section="testimonials" data-webild-section="TestimonialQuoteCards">
<SectionErrorBoundary name="testimonials">
<section aria-label="Testimonials section" className="">
<div className="flex flex-col gap-8">
<div className="flex flex-col items-center w-content-width mx-auto gap-2">
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
<p>What Our Guests Say</p>
</div>
<TextAnimation
text="Cheers from the Community"
variant="slide-up"
gradientText={true}
tag="h2"
className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance"
/>
<TextAnimation
text="Don't just take our word for it. Here's what craft beer lovers have to say about their experiences at Cedar Mountain Brewery."
variant="slide-up"
gradientText={false}
tag="p"
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
/>
</div>
<ScrollReveal variant="fade-blur">
<GridOrCarousel>
{[
{
name: "Sarah Jenkins",
role: "Local Enthusiast",
quote: "The Cascade IPA is hands down the best I've had in Vermont. The taproom atmosphere is so welcoming, and the staff really knows their stuff!",
},
{
name: "Mike & Emily",
role: "Weekend Visitors",
quote: "We stopped by during our road trip and ended up staying for hours. The Maple Amber Ale and the live music made for a perfect afternoon.",
},
{
name: "David Chen",
role: "Homebrewer",
quote: "You can taste the dedication to traditional craft in every sip of the Stout Mountain Porter. It's inspiring to see a brewery so committed to quality.",
}
].map((testimonial, i) => (
<div key={i} className="flex flex-col gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded">
<div className="flex gap-1">
{[...Array(5)].map((_, j) => (
<Star key={j} className="size-5 text-accent fill-accent" />
))}
</div>
<p className="text-lg md:text-xl leading-snug flex-grow">"{testimonial.quote}"</p>
<div className="flex flex-col gap-1 mt-4">
<span className="text-base font-semibold">{testimonial.name}</span>
<span className="text-sm opacity-70">{testimonial.role}</span>
</div>
</div>
))}
</GridOrCarousel>
</ScrollReveal>
</div>
</section>
</SectionErrorBoundary>
</div>
<div id="faq" data-section="faq" data-webild-section="FaqSimple">
<FaqSimple
tag="Your Questions Answered"
title="Frequently Asked Questions"
description="Find answers to common questions about Cedar Mountain Brewery, our beers, taproom, and special events. We're here to help you plan your visit."
primaryButton={{"text":"Visit Our Taproom","href":"/taproom"}}
secondaryButton={{"text":"Explore Our Beers","href":"/beers"}}
items={[{"question":"What types of beer does Cedar Mountain Brewery offer?","answer":"We brew a diverse range of craft beers, including crisp lagers, hoppy IPAs, rich stouts, and seasonal ales. Our selection is constantly evolving, often featuring unique Vermont-inspired ingredients. Please check our 'Beers' page for our current tap list and availability."},{"question":"What are your taproom hours and location?","answer":"Our taproom is located in the heart of Vermont. We are open Wednesday to Friday from 3 PM - 9 PM, Saturday from 12 PM - 10 PM, and Sunday from 12 PM - 7 PM. We are closed on Monday and Tuesday. You can find our full address and directions on our 'Contact Us' page."},{"question":"Do you host special events or private parties?","answer":"Yes, we regularly host live music, trivia nights, and seasonal festivals. Our taproom is also available for private event bookings. Visit our 'Events' page for an up-to-date schedule or contact us directly to inquire about hosting your private gathering."},{"question":"Can I take a tour of the Cedar Mountain brewery?","answer":"We offer guided brewery tours on Saturdays at 2 PM and 4 PM. These tours provide a behind-the-scenes look at our brewing process and include a tasting flight. Reservations are highly recommended due to limited space."},{"question":"Where can I purchase Cedar Mountain beers to take home?","answer":"Our beers are available for purchase directly from our taproom in growlers, cans, and bottles. You can also find select Cedar Mountain brews at various local Vermont retailers and restaurants. Check our website for a list of distributors."}]}
/>
</div>
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Plan Your Visit"
text="Ready to taste the best of Vermont craft beer? Visit our taproom, explore our events, or get in touch with us today!"
primaryButton={{
text: "Get Directions",
href: "https://maps.google.com/?q=Cedar+Mountain+Brewery+Vermont",
}}
secondaryButton={{
text: "Contact Us",
href: "mailto:info@cedarmountainbrewery.com",
}}
/>
</SectionErrorBoundary>
</div>
<HomeSection />
<BeersSection />
<StorySection />
<TaproomSection />
<EventsSection />
<TestimonialQuoteCardsSection />
<FaqSimpleSection />
<ContactSection />
</>
);
}
}

View File

@@ -0,0 +1,86 @@
import React from 'react';
import ScrollReveal from '@/components/ui/ScrollReveal';
import TextAnimation from '@/components/ui/TextAnimation';
import GridOrCarousel from '@/components/ui/GridOrCarousel';
import Card from '@/components/ui/Card';
import Tag from '@/components/ui/Tag';
export default function BeersSection() {
const beers = [
{
name: "Mountain Pale Ale",
type: "Pale Ale",
abv: "5.5%",
description: "A crisp and refreshing pale ale with notes of pine and citrus, brewed with local mountain spring water.",
alt: "Glass of pale ale craft beer with pine background"
},
{
name: "Cedar Stout",
type: "Stout",
abv: "7.2%",
description: "Rich and complex with deep roasted coffee and dark chocolate flavors, perfect for chilly evenings.",
alt: "Pint of dark stout craft beer with roasted coffee beans"
},
{
name: "Valley IPA",
type: "IPA",
abv: "6.8%",
description: "A hop-forward India Pale Ale bursting with tropical fruit aromas and a smooth, bitter finish.",
alt: "Glass of IPA craft beer with tropical fruits"
},
{
name: "Sunset Amber",
type: "Amber Ale",
abv: "5.0%",
description: "A perfectly balanced amber ale featuring toasted caramel malts and a subtle earthy hop profile.",
alt: "Glass of amber ale craft beer on a wooden table"
}
];
return (
<section id="beers" className="relative bg-background overflow-hidden">
<div className="absolute top-0 left-1/2 -translate-x-1/2 w-[800px] h-[400px] bg-primary-cta/5 blur-[120px] rounded-full pointer-events-none -z-10" />
<div className="max-w-content-width mx-auto px-6">
<div className="text-center">
<ScrollReveal variant="slide-up">
<TextAnimation
text="Our Beers"
variant="fade-blur"
gradientText={false}
tag="h2"
className="text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-6"
/>
<p className="text-lg md:text-xl text-muted-foreground max-w-content-width mx-auto">
Crafted with passion and precision, our core lineup features something for every palate.
</p>
</ScrollReveal>
</div>
<GridOrCarousel>
{beers.map((beer, index) => (
<ScrollReveal key={index} variant="slide-up" delay={index * 0.1}>
<Card className="h-full flex flex-col overflow-hidden border border-border/50 bg-card hover:-translate-y-2 transition-all duration-300 hover:shadow-xl">
<div className="relative h-72 w-full bg-muted/50">
<img
src=""
alt={beer.alt}
className="w-full h-full object-cover"
/>
<div className="absolute top-4 right-4 flex flex-col gap-2 items-end">
<Tag text={beer.type} className="bg-background/90 backdrop-blur-md border-none shadow-sm" />
<Tag text={`ABV ${beer.abv}`} className="bg-primary-cta text-primary-cta-text border-none shadow-sm" />
</div>
</div>
<div className="p-8 flex-grow flex flex-col">
<h3 className="text-2xl font-bold text-foreground mb-3">{beer.name}</h3>
<p className="text-muted-foreground flex-grow leading-relaxed">{beer.description}</p>
</div>
</Card>
</ScrollReveal>
))}
</GridOrCarousel>
</div>
</section>
);
}

View File

@@ -0,0 +1,27 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "contact" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactSection(): React.JSX.Element {
return (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Plan Your Visit"
text="Ready to taste the best of Vermont craft beer? Visit our taproom, explore our events, or get in touch with us today!"
primaryButton={{
text: "Get Directions",
href: "https://maps.google.com/?q=Cedar+Mountain+Brewery+Vermont",
}}
secondaryButton={{
text: "Contact Us",
href: "mailto:info@cedarmountainbrewery.com",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// Created by create_section tool.
import React from 'react';
import Tag from '@/components/ui/Tag';
import Card from '@/components/ui/Card';
import Button from '@/components/ui/Button';
import { Calendar, Music, Beer } from 'lucide-react';
export default function EventsSection(): React.JSX.Element {
return (
<div data-webild-section="events" className="bg-background">
<div className="container mx-auto px-4">
<div className="text-center">
<Tag text="Upcoming Events" className="mb-4" />
<h2 className="text-4xl md:text-5xl font-bold text-foreground mb-6">Join the Community</h2>
<p className="text-lg text-muted-foreground max-w-content-width mx-auto">
From live music to special beer releases, there's always something happening at Cedar Mountain Brewery.
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
<Card className="p-6 flex flex-col h-full">
<div className="w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mb-6 text-primary">
<Music className="w-6 h-6" />
</div>
<h3 className="text-xl font-bold text-foreground mb-2">Live Music Fridays</h3>
<p className="text-sm text-muted-foreground mb-4">Every Friday, 7 PM - 10 PM</p>
<p className="text-muted-foreground flex-grow mb-6">Kick off your weekend with local bands, great beer, and a lively atmosphere in our taproom.</p>
<Button text="View Lineup" variant="secondary" className="w-full" />
</Card>
<Card className="p-6 flex flex-col h-full">
<div className="w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mb-6 text-primary">
<Beer className="w-6 h-6" />
</div>
<h3 className="text-xl font-bold text-foreground mb-2">Seasonal Release Party</h3>
<p className="text-sm text-muted-foreground mb-4">October 15th, 12 PM - 8 PM</p>
<p className="text-muted-foreground flex-grow mb-6">Be the first to taste our new Winter Stout. Food trucks, games, and exclusive merchandise available.</p>
<Button text="RSVP Now" variant="secondary" className="w-full" />
</Card>
<Card className="p-6 flex flex-col h-full">
<div className="w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mb-6 text-primary">
<Calendar className="w-6 h-6" />
</div>
<h3 className="text-xl font-bold text-foreground mb-2">Brewery Tours</h3>
<p className="text-sm text-muted-foreground mb-4">Saturdays & Sundays, 2 PM</p>
<p className="text-muted-foreground flex-grow mb-6">Get a behind-the-scenes look at our brewing process and enjoy a guided tasting of our core lineup.</p>
<Button text="Book a Tour" variant="secondary" className="w-full" />
</Card>
</div>
</div>
</div>
);
}

View File

@@ -0,0 +1,20 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "FaqSimple" section.
import React from 'react';
import FaqSimple from '@/components/sections/faq/FaqSimple';
export default function FaqSimpleSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq" data-webild-section="FaqSimple">
<FaqSimple
tag="Your Questions Answered"
title="Frequently Asked Questions"
description="Find answers to common questions about Cedar Mountain Brewery, our beers, taproom, and special events. We're here to help you plan your visit."
primaryButton={{"text":"Visit Our Taproom","href":"/taproom"}}
secondaryButton={{"text":"Explore Our Beers","href":"/beers"}}
items={[{"question":"What types of beer does Cedar Mountain Brewery offer?","answer":"We brew a diverse range of craft beers, including crisp lagers, hoppy IPAs, rich stouts, and seasonal ales. Our selection is constantly evolving, often featuring unique Vermont-inspired ingredients. Please check our 'Beers' page for our current tap list and availability."},{"question":"What are your taproom hours and location?","answer":"Our taproom is located in the heart of Vermont. We are open Wednesday to Friday from 3 PM - 9 PM, Saturday from 12 PM - 10 PM, and Sunday from 12 PM - 7 PM. We are closed on Monday and Tuesday. You can find our full address and directions on our 'Contact Us' page."},{"question":"Do you host special events or private parties?","answer":"Yes, we regularly host live music, trivia nights, and seasonal festivals. Our taproom is also available for private event bookings. Visit our 'Events' page for an up-to-date schedule or contact us directly to inquire about hosting your private gathering."},{"question":"Can I take a tour of the Cedar Mountain brewery?","answer":"We offer guided brewery tours on Saturdays at 2 PM and 4 PM. These tours provide a behind-the-scenes look at our brewing process and include a tasting flight. Reservations are highly recommended due to limited space."},{"question":"Where can I purchase Cedar Mountain beers to take home?","answer":"Our beers are available for purchase directly from our taproom in growlers, cans, and bottles. You can also find select Cedar Mountain brews at various local Vermont retailers and restaurants. Check our website for a list of distributors."}]}
/>
</div>
);
}

View File

@@ -0,0 +1,47 @@
// 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 HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import { Award, Droplet, Leaf, Users, Star } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HomeSection(): React.JSX.Element {
return (
<div id="home" data-section="home">
<SectionErrorBoundary name="home">
<HeroOverlayMarquee
tag="Welcome to Vermont's Finest"
title="Crafting Exceptional Beer Since 1998"
description="Nestled in the picturesque Cedar Mountains, our brewery is dedicated to producing high-quality, artisanal beers that capture the spirit of Vermont. We combine traditional techniques with a passion for innovation, ensuring every sip is a taste of our unique heritage."
primaryButton={{
text: "Explore Our Beers",
href: "#beers",
}}
secondaryButton={{
text: "Our Story",
href: "#story",
}}
items={[
{
text: "Local Ingredients",
icon: Leaf,
className: "bg-green-100 text-green-800 border-green-200",
},
{
text: "Sustainable Brewing",
icon: Droplet,
className: "bg-blue-100 text-blue-800 border-blue-200",
},
{
text: "Award-Winning",
icon: Award,
className: "bg-yellow-100 text-yellow-800 border-yellow-200",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/morning-mountains-carpathian-ukraine-aerial-view_1153-6120.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,43 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "story" section.
import React from 'react';
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import { Award, Droplet, Leaf, Users, Star } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function StorySection(): React.JSX.Element {
return (
<div id="story" data-section="story">
<SectionErrorBoundary name="story">
<AboutFeaturesSplit
tag="Our Journey"
title="The Heart of Cedar Mountain Brewing"
description="For over two decades, Cedar Mountain Brewery has been more than just a place to make beer; it's a testament to passion, community, and the pristine environment of Vermont. Our story began with a simple idea: to craft beers that reflect the purity of our mountain springs and the richness of local harvests. Every batch is a labor of love, a blend of traditional techniques, and innovative spirit."
primaryButton={{
text: "Meet Our Brewers",
href: "#",
}}
items={[
{
icon: Droplet,
title: "Traditional Craft",
description: "Honoring age-old brewing methods passed down through generations, ensuring authenticity in every batch.",
},
{
icon: Leaf,
title: "Local Sourcing",
description: "Utilizing the finest Vermont-grown hops, grains, and pure mountain water to create unique flavors.",
},
{
icon: Users,
title: "Community Focused",
description: "A gathering place for locals and visitors, fostering connection over great beer and shared experiences.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/smiling-man-breaking-egg-white-big-bowl_23-2148164492.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,42 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "taproom" section.
import React from 'react';
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TaproomSection(): React.JSX.Element {
return (
<div id="taproom" data-section="taproom">
<SectionErrorBoundary name="taproom">
<FeaturesMediaCards
tag="Experience Our Home"
title="The Cedar Mountain Taproom"
description="Join us at our cozy taproom, nestled at the base of Cedar Mountain. Enjoy fresh brews straight from the source, delicious local bites, and a welcoming atmosphere. It's more than a bar; it's where our community comes together to celebrate good beer and good company."
items={[
{
title: "Fresh Taps Daily",
description: "Always a rotating selection of our latest and greatest brews on tap, featuring seasonal specialties and classic favorites.",
imageSrc: "http://img.b2bpic.net/free-photo/still-life-beer-brewing-elements_23-2150321509.jpg",
},
{
title: "Local Food Pairings",
description: "Savor delicious appetizers and meals, thoughtfully crafted to complement our beers, made with ingredients from Vermont farms.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-fried-pieces-meat-fried-onions_140725-3560.jpg",
},
{
title: "Live Music & Events",
description: "Check our calendar for regular live performances, engaging trivia nights, and exciting new beer releases.",
imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-men-standing-bar-counter-talking-each-other_23-2147861997.jpg",
},
{
title: "Scenic Outdoor Seating",
description: "Relax on our spacious patio with stunning panoramic views of the surrounding Cedar Mountains and lush Vermont landscape.",
imageSrc: "http://img.b2bpic.net/free-photo/wooden-chair-table-outdoor-terrace_74190-3968.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,78 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "TestimonialQuoteCards" section.
import React from 'react';
import { Award, Droplet, Leaf, Users, Star } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import TextAnimation from "@/components/ui/TextAnimation";
import ScrollReveal from "@/components/ui/ScrollReveal";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
export default function TestimonialQuoteCardsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials" data-webild-section="TestimonialQuoteCards">
<SectionErrorBoundary name="testimonials">
<section aria-label="Testimonials section" className="">
<div className="flex flex-col gap-8">
<div className="flex flex-col items-center w-content-width mx-auto gap-2">
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
<p>What Our Guests Say</p>
</div>
<TextAnimation
text="Cheers from the Community"
variant="slide-up"
gradientText={true}
tag="h2"
className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance"
/>
<TextAnimation
text="Don't just take our word for it. Here's what craft beer lovers have to say about their experiences at Cedar Mountain Brewery."
variant="slide-up"
gradientText={false}
tag="p"
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
/>
</div>
<ScrollReveal variant="fade-blur">
<GridOrCarousel>
{[
{
name: "Sarah Jenkins",
role: "Local Enthusiast",
quote: "The Cascade IPA is hands down the best I've had in Vermont. The taproom atmosphere is so welcoming, and the staff really knows their stuff!",
},
{
name: "Mike & Emily",
role: "Weekend Visitors",
quote: "We stopped by during our road trip and ended up staying for hours. The Maple Amber Ale and the live music made for a perfect afternoon.",
},
{
name: "David Chen",
role: "Homebrewer",
quote: "You can taste the dedication to traditional craft in every sip of the Stout Mountain Porter. It's inspiring to see a brewery so committed to quality.",
}
].map((testimonial, i) => (
<div key={i} className="flex flex-col gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded">
<div className="flex gap-1">
{[...Array(5)].map((_, j) => (
<Star key={j} className="size-5 text-accent fill-accent" />
))}
</div>
<p className="text-lg md:text-xl leading-snug flex-grow">"{testimonial.quote}"</p>
<div className="flex flex-col gap-1 mt-4">
<span className="text-base font-semibold">{testimonial.name}</span>
<span className="text-sm opacity-70">{testimonial.role}</span>
</div>
</div>
))}
</GridOrCarousel>
</ScrollReveal>
</div>
</section>
</SectionErrorBoundary>
</div>
);
}