Merge version_1_1781469631680 into main #2

Merged
bender merged 3 commits from version_1_1781469631680 into main 2026-06-14 20:41:53 +00:00
2 changed files with 129 additions and 321 deletions

View File

@@ -1,104 +1,44 @@
import FooterSimpleMedia from '@/components/sections/footer/FooterSimpleMedia';
import NavbarFloating from '@/components/ui/NavbarFloating';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot";
import { Outlet } from 'react-router-dom';
import { StyleProvider } from "@/components/ui/StyleProvider";
export default function Layout() {
const navItems = [
{
"name": "Services",
"href": "#services"
},
{
"name": "Why Andy's",
"href": "#why"
},
{
"name": "About",
"href": "#about"
},
{
"name": "Testimonials",
"href": "#testimonials"
},
{
"name": "Hero",
"href": "#hero"
},
{
"name": "Feature Trust",
"href": "#feature-trust"
},
{
"name": "Emergency",
"href": "#emergency"
}
];
{ name: "Services", href: "#services" },
{ name: "Why Andy's", href: "#why" },
{ name: "About", href: "#about" },
{ name: "Testimonials", href: "#testimonials" },
{ name: "Hero", href: "#hero" },
{ name: "Feature Trust", href: "#feature-trust" },
{ name: "Emergency", href: "#emergency" }
];
return (
<StyleProvider buttonVariant="default" siteBackground="floatingGradient" heroBackground="gradientBars">
<SiteBackgroundSlot />
<SectionErrorBoundary name="navbar">
<NavbarFloating
logo="Andy's Heating & Cooling"
ctaButton={{
text: "Schedule Service",
href: "#contact",
}}
navItems={navItems} />
logo="Andy's Heating & Cooling"
ctaButton={{ text: "Schedule Service", href: "#contact" }}
navItems={navItems}
/>
</SectionErrorBoundary>
<main className="flex-grow">
<Outlet />
</main>
<SectionErrorBoundary name="footer">
<FooterSimpleMedia
imageSrc="http://img.b2bpic.net/free-photo/close-up-minimalist-fireplace-sofa_23-2148238607.jpg"
brand="Andy's Heating & Cooling"
columns={[
{
title: "Company",
items: [
{
label: "About Us",
href: "#about",
},
{
label: "Reviews",
href: "#testimonials",
},
],
},
{
title: "Services",
items: [
{
label: "Heating",
href: "#services",
},
{
label: "Cooling",
href: "#services",
},
],
},
{
title: "Contact",
items: [
{
label: "(555) 555-5555",
href: "tel:5555555555",
},
{
label: "info@andyshvac.com",
href: "mailto:info@andyshvac.com",
},
],
},
]}
copyright="© 2024 Andy's Heating & Cooling. All rights reserved."
/>
imageSrc="http://img.b2bpic.net/free-photo/close-up-minimalist-fireplace-sofa_23-2148238607.jpg"
brand="Andy's Heating & Cooling"
columns={[
{ title: "Company", items: [{ label: "About Us", href: "#about" }, { label: "Reviews", href: "#testimonials" }] },
{ title: "Services", items: [{ label: "Heating", href: "#services" }, { label: "Cooling", href: "#services" }] },
{ title: "Contact", items: [{ label: "(555) 555-5555", href: "tel:5555555555" }, { label: "info@andyshvac.com", href: "mailto:info@andyshvac.com" }] }
]}
copyright="© 2024 Andy's Heating & Cooling. All rights reserved."
links={[{ label: "Privacy Policy", href: "#" }, { label: "Terms of Service", href: "#" }]}
/>
</SectionErrorBoundary>
</StyleProvider>
);

View File

@@ -5,265 +5,133 @@ import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRev
import HeroBrand from '@/components/sections/hero/HeroBrand';
import TeamListCards from '@/components/sections/team/TeamListCards';
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
import { Award, CheckCircle, DollarSign, ShieldCheck, Smile, Zap } from "lucide-react";
import { CheckCircle, Zap, DollarSign, ShieldCheck, Smile, Award } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HomePage() {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBrand
brand="Honest HVAC Service You Can Count On"
description="For years, homeowners and businesses have trusted Andy's Heating & Cooling for fast repairs, fair prices, and solutions that last. No pressure. No unnecessary replacements. Just experienced service from people who genuinely care."
primaryButton={{
text: "Schedule Service",
href: "#contact",
}}
secondaryButton={{
text: "Call Now",
href: "tel:5555555555",
}}
imageSrc="http://img.b2bpic.net/free-photo/man-drinking-hot-beverage-energy-crisis_23-2150061897.jpg?_wi=1"
/>
</SectionErrorBoundary>
</div>
brand="Honest HVAC Service You Can Count On"
description="For years, homeowners and businesses have trusted Andy's Heating & Cooling for fast repairs, fair prices, and solutions that last. No pressure. No unnecessary replacements. Just experienced service from people who genuinely care."
primaryButton={{ text: "Schedule Service", href: "#contact" }}
secondaryButton={{ text: "Call Now", href: "tel:5555555555" }}
imageSrc="http://img.b2bpic.net/free-photo/man-drinking-hot-beverage-energy-crisis_23-2150061897.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="why" data-section="why">
<SectionErrorBoundary name="why">
<div id="why" data-section="why">
<SectionErrorBoundary name="why">
<AboutFeaturesSplit
tag="Our Philosophy"
title="Why Customers Keep Calling Andy's"
description="We believe in transparency. If it's not broken, we won't tell you it is. That's our promise."
items={[
{
icon: CheckCircle,
title: "Honest Recommendations",
description: "If something doesn't need replacing, we won't tell you it does.",
},
{
icon: Zap,
title: "Fast Emergency Service",
description: "When the heat goes out or the AC quits, we're there when you need us most.",
},
{
icon: DollarSign,
title: "Fair Pricing",
description: "Transparent, reasonable, and competitive pricing for every job.",
},
{
icon: ShieldCheck,
title: "Experienced Problem Solvers",
description: "We diagnose difficult issues that other companies often miss.",
},
{
icon: Smile,
title: "Friendly Service",
description: "Clear explanations, patience, and respect at every visit.",
},
{
icon: Award,
title: "Reliability You Can Trust",
description: "We show up, do the work right, and stand behind it.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/coworkers-servicing-hvac-system_482257-91024.jpg"
/>
</SectionErrorBoundary>
</div>
tag="Our Philosophy"
title="Why Customers Keep Calling Andy's"
description="We believe in transparency. If it's not broken, we won't tell you it is. That's our promise."
items={[
{ icon: "CheckCircle", title: "Honest Recommendations", description: "If something doesn't need replacing, we won't tell you it does." },
{ icon: "Zap", title: "Fast Emergency Service", description: "When the heat goes out or the AC quits, we're there when you need us most." },
{ icon: "DollarSign", title: "Fair Pricing", description: "Transparent, reasonable, and competitive pricing for every job." },
{ icon: "ShieldCheck", title: "Experienced Problem Solvers", description: "We diagnose difficult issues that other companies often miss." },
{ icon: "Smile", title: "Friendly Service", description: "Clear explanations, patience, and respect at every visit." },
{ icon: "Award", title: "Reliability You Can Trust", description: "We show up, do the work right, and stand behind it." }
]}
imageSrc="http://img.b2bpic.net/free-photo/coworkers-servicing-hvac-system_482257-91024.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesMediaCarousel
tag="Expertise"
title="Complete Heating & Cooling Services"
description="Premium service for every season. We handle the difficult stuff so you can stay comfortable."
items={[
{
title: "Furnace Repair",
description: "Fast, honest furnace troubleshooting and repair.",
buttonIcon: "ArrowRight",
imageSrc: "http://img.b2bpic.net/free-photo/man-room-with-solid-fuel-boiler-working-biofuel-economical-heating_169016-14801.jpg",
},
{
title: "AC Repair",
description: "Fast diagnostics for 90-degree days.",
buttonIcon: "ArrowRight",
imageSrc: "http://img.b2bpic.net/free-photo/cozy-armchair-glows-by-burning-candlelight-flame-generated-by-ai_188544-24229.jpg",
},
{
title: "System Installation",
description: "New high-efficiency systems done right.",
buttonIcon: "ArrowRight",
imageSrc: "http://img.b2bpic.net/free-photo/teapot-beautiful-ceramic-cup-with-decor-details-hygge-style-living-room_169016-10643.jpg",
},
{
title: "Seasonal Tune-ups",
description: "Maintenance to prevent emergency issues.",
buttonIcon: "ArrowRight",
imageSrc: "http://img.b2bpic.net/free-photo/living-room-design-with-fireplace_23-2148848703.jpg",
},
{
title: "Commercial HVAC",
description: "Business-grade climate solutions.",
buttonIcon: "ArrowRight",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-attractive-asian-woman-using-tablet-texting-reading-while-sitting-chair_7861-1709.jpg",
},
{
title: "Emergency Support",
description: "24/7 service when you need it most.",
buttonIcon: "ArrowRight",
imageSrc: "http://img.b2bpic.net/free-photo/mix-minimal-nordic-interior-design-with-japanese-wabi-sabi-style_23-2151160125.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
tag="Expertise"
title="Complete Heating & Cooling Services"
description="Premium service for every season. We handle the difficult stuff so you can stay comfortable."
items={[
{ title: "Furnace Repair", description: "Fast, honest furnace troubleshooting and repair.", buttonIcon: "ArrowRight", imageSrc: "http://img.b2bpic.net/free-photo/man-room-with-solid-fuel-boiler-working-biofuel-economical-heating_169016-14801.jpg" },
{ title: "AC Repair", description: "Fast diagnostics for 90-degree days.", buttonIcon: "ArrowRight", imageSrc: "http://img.b2bpic.net/free-photo/cozy-armchair-glows-by-burning-candlelight-flame-generated-by-ai_188544-24229.jpg" },
{ title: "System Installation", description: "New high-efficiency systems done right.", buttonIcon: "ArrowRight", imageSrc: "http://img.b2bpic.net/free-photo/teapot-beautiful-ceramic-cup-with-decor-details-hygge-style-living-room_169016-10643.jpg" },
{ title: "Seasonal Tune-ups", description: "Maintenance to prevent emergency issues.", buttonIcon: "ArrowRight", imageSrc: "http://img.b2bpic.net/free-photo/living-room-design-with-fireplace_23-2148848703.jpg" },
{ title: "Commercial HVAC", description: "Business-grade climate solutions.", buttonIcon: "ArrowRight", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-attractive-asian-woman-using-tablet-texting-reading-while-sitting-chair_7861-1709.jpg" },
{ title: "Emergency Support", description: "24/7 service when you need it most.", buttonIcon: "ArrowRight", imageSrc: "http://img.b2bpic.net/free-photo/mix-minimal-nordic-interior-design-with-japanese-wabi-sabi-style_23-2151160125.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="feature-trust" data-section="feature-trust">
<SectionErrorBoundary name="feature-trust">
<div id="feature-trust" data-section="feature-trust">
<SectionErrorBoundary name="feature-trust">
<FeaturesRevealCardsBento
tag="Our Reputation"
title="Built on Trust, Not Pressure"
description="Our reputation wasn't built through aggressive sales tactics. It was built one customer at a time."
items={[
{
title: "Straight Answers",
description: "Honest diagnostics, no upselling.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/young-man-looking-into-solid-fuel-boiler-working-with-biofuels-economical-heating_169016-15377.jpg",
},
{
title: "Fast Response",
description: "We arrive on time, every time.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-people-spending-time-indoors_23-2149535990.jpg",
},
{
title: "Fair Pricing",
description: "Transparent rates from day one.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/wireman-does-air-conditioner-maintenance_482257-85109.jpg",
},
{
title: "Expert Care",
description: "Years of experience at your service.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-brunette-taking-selfie-with-her-smart-phone-home-white-pillow_231208-3285.jpg",
},
{
title: "Respect",
description: "Patience and respect for your home.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/worker-repairing-water-heater_23-2149334225.jpg",
},
{
title: "Dependable",
description: "We stand behind all our work.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-making-selfie-cafe_171337-16492.jpg",
},
{
title: "Solutions",
description: "Fixing things others can't.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/man-with-tattoos-producing-craft-beer_23-2148110983.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
tag="Our Reputation"
title="Built on Trust, Not Pressure"
description="Our reputation wasn't built through aggressive sales tactics. It was built one customer at a time."
items={[
{ title: "Straight Answers", description: "Honest diagnostics, no upselling.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/young-man-looking-into-solid-fuel-boiler-working-with-biofuels-economical-heating_169016-15377.jpg" },
{ title: "Fast Response", description: "We arrive on time, every time.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-people-spending-time-indoors_23-2149535990.jpg" },
{ title: "Fair Pricing", description: "Transparent rates from day one.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/wireman-does-air-conditioner-maintenance_482257-85109.jpg" },
{ title: "Expert Care", description: "Years of experience at your service.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-brunette-taking-selfie-with-her-smart-phone-home-white-pillow_231208-3285.jpg" },
{ title: "Respect", description: "Patience and respect for your home.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/worker-repairing-water-heater_23-2149334225.jpg" },
{ title: "Dependable", description: "We stand behind all our work.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-making-selfie-cafe_171337-16492.jpg" },
{ title: "Solutions", description: "Fixing things others can't.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/man-with-tattoos-producing-craft-beer_23-2148110983.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialTrustCard
quote="Our AC failed on a 90-degree day with a newborn at home. Andy's arrived within minutes and the bill was far more reasonable than expected."
rating={5}
author="The Miller Family"
avatars={[
{
name: "Sarah J.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-sitting_23-2149213193.jpg",
},
{
name: "Mike M.",
imageSrc: "http://img.b2bpic.net/free-photo/padres-con-un-bebe-en-navidad_23-2147583264.jpg",
},
{
name: "Dave K.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-senior-woman-standing-front-sofa_23-2148041344.jpg",
},
{
name: "Jen R.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-tender-young-smiling-woman-feeling-cozy-home-sitting-kitchen-chair-with-smartphone_1258-187159.jpg",
},
{
name: "Mark L.",
imageSrc: "http://img.b2bpic.net/free-photo/senior-man-listening-music-though-headphones_23-2148404334.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
quote="Our AC failed on a 90-degree day with a newborn at home. Andy's arrived within minutes and the bill was far more reasonable than expected."
rating={5}
author="The Miller Family"
avatars={[
{ name: "Sarah J.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-sitting_23-2149213193.jpg" },
{ name: "Mike M.", imageSrc: "http://img.b2bpic.net/free-photo/padres-con-un-bebe-en-navidad_23-2147583264.jpg" },
{ name: "Dave K.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-senior-woman-standing-front-sofa_23-2148041344.jpg" },
{ name: "Jen R.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-tender-young-smiling-woman-feeling-cozy-home-sitting-kitchen-chair-with-smartphone_1258-187159.jpg" },
{ name: "Mark L.", imageSrc: "http://img.b2bpic.net/free-photo/senior-man-listening-music-though-headphones_23-2148404334.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<TeamListCards
tag="Our History"
title="A Reputation Earned Through Years of Service"
description="We've been keeping neighbors comfortable for decades with honest advice and reliable results."
groups={[
{
title: "Leadership",
members: [
{
name: "Andy Miller",
role: "Founder",
detail: "30+ years in HVAC excellence.",
imageSrc: "http://img.b2bpic.net/free-photo/freight-parcel-inspiration-uniform-art_1134-1177.jpg",
},
],
imageSrc: "http://img.b2bpic.net/free-photo/man-drinking-hot-beverage-energy-crisis_23-2150061897.jpg?_wi=2",
imageAlt: "friendly hvac technician smiling",
},
]}
/>
</SectionErrorBoundary>
</div>
tag="Our History"
title="A Reputation Earned Through Years of Service"
description="We've been keeping neighbors comfortable for decades with honest advice and reliable results."
groups={[
{
title: "Leadership", members: [{ name: "Andy Miller", role: "Founder", detail: "30+ years in HVAC excellence.", imageSrc: "http://img.b2bpic.net/free-photo/freight-parcel-inspiration-uniform-art_1134-1177.jpg" }]
}
]}
/>
</SectionErrorBoundary>
</div>
<div id="emergency" data-section="emergency">
<SectionErrorBoundary name="emergency">
<div id="emergency" data-section="emergency">
<SectionErrorBoundary name="emergency">
<ContactCta
tag="Emergency Service"
text="When Comfort Can't Wait. Fast response, honest advice, and repairs done right."
primaryButton={{
text: "Request Service",
href: "#contact",
}}
secondaryButton={{
text: "Call Now",
href: "tel:5555555555",
}}
/>
</SectionErrorBoundary>
</div>
tag="Emergency Service"
text="When Comfort Can't Wait. Fast response, honest advice, and repairs done right."
primaryButton={{ text: "Request Service", href: "#contact" }}
secondaryButton={{ text: "Call Now", href: "tel:5555555555" }}
/>
</SectionErrorBoundary>
</div>
<div id="final-cta" data-section="final-cta">
<SectionErrorBoundary name="final-cta">
<div id="final-cta" data-section="final-cta">
<SectionErrorBoundary name="final-cta">
<ContactCta
tag="Ready to Start?"
text="Experience the difference that honesty, experience, and genuine customer care can make."
primaryButton={{
text: "Schedule Service",
href: "#contact",
}}
secondaryButton={{
text: "Call Now",
href: "tel:5555555555",
}}
/>
</SectionErrorBoundary>
</div>
tag="Ready to Start?"
text="Experience the difference that honesty, experience, and genuine customer care can make."
primaryButton={{ text: "Schedule Service", href: "#contact" }}
secondaryButton={{ text: "Call Now", href: "tel:5555555555" }}
/>
</SectionErrorBoundary>
</div>
</>
);
}