Merge version_29_1781577912508 into main #30

Merged
bender merged 1 commits from version_29_1781577912508 into main 2026-06-16 02:47:08 +00:00
9 changed files with 380 additions and 276 deletions

View File

@@ -1,288 +1,36 @@
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import PricingSimpleCards from '@/components/sections/pricing/PricingSimpleCards';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
import { Award, CheckCircle, GraduationCap, Star, Target, Waves } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
// files directly. Non-block content (wrappers, non-inlinable sections) is
// preserved inline; extracted section blocks become <XSection/> refs.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import ServicesSection from './HomePage/sections/Services';
import ProductSection from './HomePage/sections/Product';
import PricingSection from './HomePage/sections/Pricing';
import ReviewsSection from './HomePage/sections/Reviews';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlayMarquee
tag="West Metro Surf & Charters"
title="NorthWakeSurfCo"
description="Professional surf lessons and boat charters in the West Metro lakes area. Your personal captain for stress-free fun on the water."
primaryButton={{
text: "Book Your Session",
href: "#contact",
}}
secondaryButton={{
text: "View Pricing",
href: "#pricing",
}}
items={[
{
text: "Lessons & Charters",
icon: Waves,
},
{
text: "All Skill Levels",
icon: Award,
},
{
text: "Kids Camps",
icon: GraduationCap,
},
]}
imageSrc="https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145801-kb33aru8.png?_wi=1"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="Dylan Nelson - Your Captain"
title="Why NorthWakeSurfCo?"
description="I'm Dylan Nelson, your dedicated captain and instructor. Whether you need professional surf lessons on my loaded Malibu 23 LSV or want me to captain your own boat for a stress-free day on Lake Minnetonka, Waconia, or Independence, I'm here to ensure you have a blast."
items={[
{
icon: Star,
title: "Flexible Hours",
description: "Weekdays: 4pm-10pm | Weekends: 10am-6pm",
},
{
icon: Target,
title: "All Ages & Skills",
description: "Perfect for beginners to pros and kids camps.",
},
{
icon: CheckCircle,
title: "On-Call Service",
description: "Highly flexible and adaptable to your needs.",
},
]}
imageSrc="https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145803-c6mhlaw5.png?_wi=1"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesMediaCarousel
tag="Our Offerings"
title="Aquatic Experiences"
description="From expert surf coaching to boat captaining services, we handle everything."
items={[
{
title: " Surf Lessons",
description: "Learn to shred behind the Malibu 23 LSV.",
buttonIcon: "Waves",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577568821-30vgvlia.png",
},
{
title: "Private Charters",
description: "Stress-free days on the water for your group.",
buttonIcon: "Ship",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577467359-htvk7ice.png",
},
{
title: "Kids Surf Camps",
description: "Fun, safe, and skill-focused learning for kids.",
buttonIcon: "Star",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577356942-kc0gftwx.png",
},
]}
/>
</SectionErrorBoundary>
</div>
<ServicesSection />
<div id="product" data-section="product">
<SectionErrorBoundary name="product">
<FeaturesImageBento
tag="The Equipment"
title="Loaded Malibu 23 LSV"
description="The best surf boat on the market, professionally operated by your captain."
items={[
{
title: "Elite Performance",
description: "Premium wake surfing technology.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145804-mlhqdvbg.png?_wi=2",
},
{
title: "Safety First",
description: "Pro-level gear provided.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145804-esjbqy4s.png?_wi=2",
},
{
title: "Expert Captaining",
description: "Stress-free navigation.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145806-zpcm2nzc.png?_wi=2",
},
{
title: "",
description: "Coaching by Dylan Nelson.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145801-kb33aru8.png?_wi=2",
},
{
title: "Flexible Booking",
description: "On-call service.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145803-c6mhlaw5.png?_wi=2",
},
{
title: "Kids Focus",
description: "Special camps and lessons.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576547187-qx4hkd9v.png",
},
{
title: "West Metro Lakes",
description: "Independence, Minnetonka, Waconia.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576613213-umrrbd00.png",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingSimpleCards
tag="Pricing & Packages"
title="Simple Booking Options"
description="Straightforward rates for lessons and captaining."
plans={[
{
tag: "Private Lesson/Charter/Charter",
price: "$180/hr",
description: "On our boat (Malibu 23 LSV)",
features: [
"2-hour minimum ($400)",
"Professional coaching",
"Pro equipment included",
],
},
{
tag: "Captain/Mobile",
price: "$125/hr",
description: "On your boat",
features: [
"2-hour minimum ($300)",
"Stress-free captaining",
"Your own gear",
],
},
{
tag: "Late Late Notice",
price: "$100",
description: "Same day booking fee",
features: [
"Applicable to all bookings",
"Same day/Short notice",
"Flexible service",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialOverlayCards
tag="Testimonials"
title="5-Star Experiences"
description="See why locals trust Dylan for their time on the water."
testimonials={[
{
name: "Aaron Nelson",
role: "Surf Lessons ",
company: "Lake Minnetonka",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577003524-3mfik4jb.png",
},
{
name: "Carson Rock",
role: "Charter Guest",
company: "Lake Independence",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576987925-5vbxlqxl.png",
},
{
name: "Jennifer Johnson",
role: "Boat Owner",
company: "Lake Waconia",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576943539-vv624led.png",
},
{
name: "Erik Estrada",
role: "Charter Guest",
company: "West Metro",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576922805-1bnfu5p3.png",
},
{
name: "Christopher Estrada",
role: "Surf Lessons ",
company: "Lake Minnetonka",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576900467-8z6eeucl.png",
},
]}
/>
</SectionErrorBoundary>
</div>
<ReviewsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTwoColumn
tag="FAQ"
title="Questions Answered"
description="Everything you need to know about booking with us."
items={[
{
question: "What lakes do you cover?",
answer: "I mainly serve Lake Independence, Lake Minnetonka, and Lake Waconia, plus others in the West Metro.",
},
{
question: "Can I have you captain my boat?",
answer: "Yes! I offer mobile captain services for $125/hr so you can stay stress-free on your own boat.",
},
{
question: "What if I need a last-minute session?",
answer: "We offer late/same-day booking for a $100 short-notice fee.",
},
{
question: "Do you offer kids' lessons?",
answer: "Absolutely! I specialize in teaching all ages and levels, including kids' camps.",
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Book Now"
text="Ready to get on the water? Call Dylan at ( or book your spot today."
primaryButton={{
text: "Call Dylan",
href: "tel:6128142431",
}}
secondaryButton={{
text: "Follow on Instagram",
href: "https://instagram.com/northwakesurfco",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,39 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about" section.
import React from 'react';
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import { Award, CheckCircle, GraduationCap, Star, Target, Waves } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="Dylan Nelson - Your Captain"
title="Why NorthWakeSurfCo?"
description="I'm Dylan Nelson, your dedicated captain and instructor. Whether you need professional surf lessons on my loaded Malibu 23 LSV or want me to captain your own boat for a stress-free day on Lake Minnetonka, Waconia, or Independence, I'm here to ensure you have a blast."
items={[
{
icon: Star,
title: "Flexible Hours",
description: "Weekdays: 4pm-10pm | Weekends: 10am-6pm",
},
{
icon: Target,
title: "All Ages & Skills",
description: "Perfect for beginners to pros and kids camps.",
},
{
icon: CheckCircle,
title: "On-Call Service",
description: "Highly flexible and adaptable to your needs.",
},
]}
imageSrc="https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145803-c6mhlaw5.png?_wi=1"
/>
</SectionErrorBoundary>
</div>
);
}

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="Book Now"
text="Ready to get on the water? Call Dylan at ( or book your spot today."
primaryButton={{
text: "Call Dylan",
href: "tel:6128142431",
}}
secondaryButton={{
text: "Follow on Instagram",
href: "https://instagram.com/northwakesurfco",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,38 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "faq" section.
import React from 'react';
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTwoColumn
tag="FAQ"
title="Questions Answered"
description="Everything you need to know about booking with us."
items={[
{
question: "What lakes do you cover?",
answer: "I mainly serve Lake Independence, Lake Minnetonka, and Lake Waconia, plus others in the West Metro.",
},
{
question: "Can I have you captain my boat?",
answer: "Yes! I offer mobile captain services for $125/hr so you can stay stress-free on your own boat.",
},
{
question: "What if I need a last-minute session?",
answer: "We offer late/same-day booking for a $100 short-notice fee.",
},
{
question: "Do you offer kids' lessons?",
answer: "Absolutely! I specialize in teaching all ages and levels, including kids' camps.",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,46 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" section.
import React from 'react';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import { Award, CheckCircle, GraduationCap, Star, Target, Waves } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<div className="[&_p]:!text-black [&_p]:!font-medium [&_p]:!drop-shadow-md">
<HeroOverlayMarquee
tag="West Metro Surf & Charters"
title="NorthWakeSurfCo"
description="Professional surf lessons and boat charters in the West Metro lakes area. Your personal captain for stress-free fun on the water."
primaryButton={{
text: "Book Your Session",
href: "#contact",
}}
secondaryButton={{
text: "View Pricing",
href: "#pricing",
}}
items={[
{
text: "Lessons & Charters",
icon: Waves,
},
{
text: "All Skill Levels",
icon: Award,
},
{
text: "Kids Camps",
icon: GraduationCap,
},
]}
imageSrc="https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145801-kb33aru8.png?_wi=1"
/>
</div>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "pricing" section.
import React from 'react';
import PricingSimpleCards from '@/components/sections/pricing/PricingSimpleCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingSimpleCards
tag="Pricing & Packages"
title="Simple Booking Options"
description="Straightforward rates for lessons and captaining."
plans={[
{
tag: "Private Lesson/Charter/Charter",
price: "$180/hr",
description: "On our boat (Malibu 23 LSV)",
features: [
"2-hour minimum ($400)",
"Professional coaching",
"Pro equipment included",
],
},
{
tag: "Captain/Mobile",
price: "$125/hr",
description: "On your boat",
features: [
"2-hour minimum ($300)",
"Stress-free captaining",
"Your own gear",
],
},
{
tag: "Late Late Notice",
price: "$100",
description: "Same day booking fee",
features: [
"Applicable to all bookings",
"Same day/Short notice",
"Flexible service",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "product" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProductSection(): React.JSX.Element {
return (
<div id="product" data-section="product">
<SectionErrorBoundary name="product">
<FeaturesImageBento
tag="The Equipment"
title="Loaded Malibu 23 LSV"
description="The best surf boat on the market, professionally operated by your captain."
items={[
{
title: "Elite Performance",
description: "Premium wake surfing technology.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145804-mlhqdvbg.png?_wi=2",
},
{
title: "Safety First",
description: "Pro-level gear provided.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145804-esjbqy4s.png?_wi=2",
},
{
title: "Expert Captaining",
description: "Stress-free navigation.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145806-zpcm2nzc.png?_wi=2",
},
{
title: "",
description: "Coaching by Dylan Nelson.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145801-kb33aru8.png?_wi=2",
},
{
title: "Flexible Booking",
description: "On-call service.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576145803-c6mhlaw5.png?_wi=2",
},
{
title: "Kids Focus",
description: "Special camps and lessons.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576547187-qx4hkd9v.png",
},
{
title: "West Metro Lakes",
description: "Independence, Minnetonka, Waconia.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576613213-umrrbd00.png",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "reviews" section.
import React from 'react';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ReviewsSection(): React.JSX.Element {
return (
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialOverlayCards
tag="Testimonials"
title="5-Star Experiences"
description="See why locals trust Dylan for their time on the water."
testimonials={[
{
name: "Aaron Nelson",
role: "Surf Lessons ",
company: "Lake Minnetonka",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577003524-3mfik4jb.png",
},
{
name: "Carson Rock",
role: "Charter Guest",
company: "Lake Independence",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576987925-5vbxlqxl.png",
},
{
name: "Jennifer Johnson",
role: "Boat Owner",
company: "Lake Waconia",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576943539-vv624led.png",
},
{
name: "Erik Estrada",
role: "Charter Guest",
company: "West Metro",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576922805-1bnfu5p3.png",
},
{
name: "Christopher Estrada",
role: "Surf Lessons ",
company: "Lake Minnetonka",
rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781576900467-8z6eeucl.png",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,40 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "services" section.
import React from 'react';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ServicesSection(): React.JSX.Element {
return (
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesMediaCarousel
tag="Our Offerings"
title="Aquatic Experiences"
description="From expert surf coaching to boat captaining services, we handle everything."
items={[
{
title: " Surf Lessons",
description: "Learn to shred behind the Malibu 23 LSV.",
buttonIcon: "Waves",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577568821-30vgvlia.png",
},
{
title: "Private Charters",
description: "Stress-free days on the water for your group.",
buttonIcon: "Ship",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577467359-htvk7ice.png",
},
{
title: "Kids Surf Camps",
description: "Fun, safe, and skill-focused learning for kids.",
buttonIcon: "Star",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FCIN8Atu7x49OpvWJ7VHozMAvL/uploaded-1781577356942-kc0gftwx.png",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}