Merge version_2_1781392869061 into main #3

Merged
bender merged 1 commits from version_2_1781392869061 into main 2026-06-13 23:22:32 +00:00
9 changed files with 198 additions and 109 deletions

View File

@@ -45,7 +45,7 @@ export default function Layout() {
<NavbarInline
logo="San Jose Drain & Main"
ctaButton={{
text: "Call Now",
text: "(408) 854-2863",
href: "tel:4088542863",
}}
navItems={navItems} />
@@ -56,7 +56,7 @@ export default function Layout() {
<SectionErrorBoundary name="footer">
<FooterMinimal
brand="San Jose Drain & Main"
copyright="© 2024 San Jose Drain & Main. All rights reserved."
copyright="© 2024 San Jose Drain & Main. All rights reserved. | (408) 854-2863"
socialLinks={[
{
icon: Instagram,

View File

@@ -1,118 +1,33 @@
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import HeroBrand from '@/components/sections/hero/HeroBrand';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
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 FeaturesSection from './HomePage/sections/Features';
import ServicesSection from './HomePage/sections/Services';
import AboutSection from './HomePage/sections/About';
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">
<HeroBrand
brand="San Jose's 5-Star Plumbing Experts"
description="Trusted by homeowners throughout San Jose for honest service, expert diagnostics, fair pricing, and lasting repairs."
primaryButton={{ text: "Call Now", href: "tel:4088542863" }}
secondaryButton={{ text: "Get Free Estimate", href: "#contact" }}
imageSrc="http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721574.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesTaggedCards
tag="Our Commitment"
title="Why Homeowners Trust San Jose Drain & Main"
description="We deliver superior service with honesty, speed, and precision."
items={[
{ tag: "Diagnosis", title: "Expert Diagnostics", description: "We find the real problem, not just the symptoms.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-photo/wrench-connectors-with-clear-paper_23-2147772281.jpg" },
{ tag: "Pricing", title: "Honest Pricing", description: "No pressure. No gimmicks. Fair recommendations.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-vector/finance-money-analytics-flat-retro-illustrations_1284-42712.jpg" },
{ tag: "Service", title: "Fast Response", description: "Quick service when plumbing issues can't wait.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-photo/speed-meter-extreme-scale-fast_53876-120604.jpg" },
{ tag: "Quality", title: "Quality Workmanship", description: "Repairs and installations done correctly the first time.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-vector/illustration-customer-service-concept_53876-5882.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesImageBento
tag="Our Services"
title="Comprehensive Plumbing Solutions"
description="Expert services to keep your home's infrastructure running smoothly."
items={[
{ title: "Main Sewer Line Repair", description: "Tree root removal and complete inspections.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-attractive-hispanic-handyman-writing-work-estimate-before-fixing-kitchen-sink_662251-2690.jpg" },
{ title: "Drain Cleaning", description: "Fast, effective clearing of all household drains.", imageSrc: "http://img.b2bpic.net/free-photo/interior-modern-bathroom-with-window-overlooking-city_169016-26703.jpg" },
{ title: "Leak Detection", description: "Locate and repair hidden water leaks.", imageSrc: "http://img.b2bpic.net/free-photo/solution-top-view-man-plumber-overalls-fixing-breakdown-sink_259150-58267.jpg" },
{ title: "Water Main Repair", description: "Underground water line services.", imageSrc: "http://img.b2bpic.net/free-photo/female-plumber-working-fix-problems-client-s-house_23-2150990731.jpg" },
{ title: "Water Softener", description: "Protect plumbing with water softening.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-as-plumber_23-2150746316.jpg" },
{ title: "Faucet Repair", description: "Expert fixture and faucet replacement.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-bathtub-with-faucet_1203-1500.jpg" },
{ title: "Bathroom Plumbing", description: "Full bathroom repair and install.", imageSrc: "http://img.b2bpic.net/free-photo/electrician-is-mounting-electric-sockets-white-wall-indoors_169016-17657.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<ServicesSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="Meet Giovani"
quote="Known throughout San Jose for his honesty, expertise, and professionalism, Giovani has built a reputation for solving difficult plumbing problems that other contractors miss."
author="Giovani"
role="Lead Technician & Owner"
imageSrc="http://img.b2bpic.net/free-photo/male-worker-construction-wearing-protection-gear_23-2148784062.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialColumnMarqueeCards
tag="Verified Reviews"
title="What Our Neighbors Say"
description="Consistently rated 5.0 for professional service."
testimonials={[
{ name: "Ayesha Mughal", role: "Homeowner", quote: "Giovani is simply the best. He is responsive, honest, and takes the time to explain everything.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-woman-black-jacket-happy-short-haired-girl-dark-suit-widely-sincerely-smiles-isolated-background_197531-18508.jpg" },
{ name: "Mei Zhu", role: "Homeowner", quote: "One of the best plumbers I've worked with. Extremely efficient and solved our leak quickly.", imageSrc: "http://img.b2bpic.net/free-photo/confident-african-businesswoman-smiling-closeup-portrait-jobs-career-campaign_53876-129412.jpg" },
{ name: "Ali S", role: "Homeowner", quote: "After another plumber overcharged us, Giovanni came in and completed the job correctly.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-businesswoman_23-2149153829.jpg" },
{ name: "Elaine Chang", role: "Homeowner", quote: "Hands down, San Jose Drain & Main is the real deal.", imageSrc: "http://img.b2bpic.net/free-photo/expressive-senior-female-posing-indoor_344912-360.jpg" },
{ name: "Ohad Mosafi", role: "Homeowner", quote: "Responded quickly and unclogged our sewer line from tree roots within 30 minutes.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-african-american-woman-cafe_273609-5064.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<ReviewsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Common Questions"
title="Everything You Need to Know"
description="Get answers to your most frequent plumbing concerns."
items={[
{ question: "Why is my water pressure low?", answer: "Low pressure can be caused by pipe corrosion, leaks, or regulator issues. We provide expert diagnostics to identify the cause." },
{ question: "How do I know if I have a sewer line problem?", answer: "Common signs include frequent clogs, slow drainage, or lush green patches in your yard." },
{ question: "Do tree roots damage sewer lines?", answer: "Yes, tree roots are a primary cause of sewer line blockages and damage in San Jose properties." },
{ question: "How quickly can you respond?", answer: "We prioritize fast response times to prevent plumbing issues from escalating into expensive damage." },
{ question: "Do you provide estimates?", answer: "Yes, we provide transparent pricing and clear estimates before any work begins." }
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Schedule Service"
text="Need a Trusted Plumber Today? Join dozens of San Jose homeowners who trust San Jose Drain & Main."
primaryButton={{ text: "Call (408) 854-2863", href: "tel:4088542863" }}
secondaryButton={{ text: "Schedule Service", href: "#contact" }}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,22 @@
// 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 AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import SectionErrorBoundary from '@/components/ui/SectionErrorBoundary';
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="Meet Giovani"
quote="Known throughout San Jose for his honesty, expertise, and professionalism, Giovani has built a reputation for solving difficult plumbing problems that other contractors miss."
author="Giovani"
role="Lead Technician & Owner"
imageSrc="http://img.b2bpic.net/free-photo/male-worker-construction-wearing-protection-gear_23-2148784062.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// 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="Schedule Service"
text="Need a Trusted Plumber Today? Join dozens of San Jose homeowners who trust San Jose Drain & Main."
primaryButton={{ text: "Call (408) 854-2863", href: "tel:4088542863" }}
secondaryButton={{ text: "Schedule Service", href: "#contact" }}
/>
</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 "faq" section.
import React from 'react';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import SectionErrorBoundary from '@/components/ui/SectionErrorBoundary';
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Common Questions"
title="Everything You Need to Know"
description="Get answers to your most frequent plumbing concerns."
items={[
{ question: "Why is my water pressure low?", answer: "Low pressure can be caused by pipe corrosion, leaks, or regulator issues. We provide expert diagnostics to identify the cause." },
{ question: "How do I know if I have a sewer line problem?", answer: "Common signs include frequent clogs, slow drainage, or lush green patches in your yard." },
{ question: "Do tree roots damage sewer lines?", answer: "Yes, tree roots are a primary cause of sewer line blockages and damage in San Jose properties." },
{ question: "How quickly can you respond?", answer: "We prioritize fast response times to prevent plumbing issues from escalating into expensive damage." },
{ question: "Do you provide estimates?", answer: "Yes, we provide transparent pricing and clear estimates before any work begins." }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,26 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "features" section.
import React from 'react';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import SectionErrorBoundary from '@/components/ui/SectionErrorBoundary';
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesTaggedCards
tag="Our Commitment"
title="Why Homeowners Trust San Jose Drain & Main"
description="We deliver superior service with honesty, speed, and precision."
items={[
{ tag: "Diagnosis", title: "Expert Diagnostics", description: "We find the real problem, not just the symptoms.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-photo/wrench-connectors-with-clear-paper_23-2147772281.jpg" },
{ tag: "Pricing", title: "Honest Pricing", description: "No pressure. No gimmicks. Fair recommendations.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-vector/finance-money-analytics-flat-retro-illustrations_1284-42712.jpg" },
{ tag: "Service", title: "Fast Response", description: "Quick service when plumbing issues can't wait.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-photo/speed-meter-extreme-scale-fast_53876-120604.jpg" },
{ tag: "Quality", title: "Quality Workmanship", description: "Repairs and installations done correctly the first time.", primaryButton: { text: "Learn More", href: "#" }, imageSrc: "http://img.b2bpic.net/free-vector/illustration-customer-service-concept_53876-5882.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// 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 HeroBrand from '@/components/sections/hero/HeroBrand';
import SectionErrorBoundary from '@/components/ui/SectionErrorBoundary';
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBrand
brand="San Jose's 5-Star Plumbing Experts"
description="Trusted by homeowners throughout San Jose for honest service, expert diagnostics, fair pricing, and lasting repairs."
primaryButton={{ text: "Call Now", href: "tel:4088542863" }}
secondaryButton={{ text: "Get Free Estimate", href: "#contact" }}
imageSrc="http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721574.jpg"
/>
</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 "reviews" section.
import React from 'react';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import SectionErrorBoundary from '@/components/ui/SectionErrorBoundary';
export default function ReviewsSection(): React.JSX.Element {
return (
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialColumnMarqueeCards
tag="Verified Reviews"
title="What Our Neighbors Say"
description="Consistently rated 5.0 for professional service."
testimonials={[
{ name: "Ayesha Mughal", role: "Homeowner", quote: "Giovani is simply the best. He is responsive, honest, and takes the time to explain everything.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-woman-black-jacket-happy-short-haired-girl-dark-suit-widely-sincerely-smiles-isolated-background_197531-18508.jpg" },
{ name: "Mei Zhu", role: "Homeowner", quote: "One of the best plumbers I've worked with. Extremely efficient and solved our leak quickly.", imageSrc: "http://img.b2bpic.net/free-photo/confident-african-businesswoman-smiling-closeup-portrait-jobs-career-campaign_53876-129412.jpg" },
{ name: "Ali S", role: "Homeowner", quote: "After another plumber overcharged us, Giovanni came in and completed the job correctly.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-businesswoman_23-2149153829.jpg" },
{ name: "Elaine Chang", role: "Homeowner", quote: "Hands down, San Jose Drain & Main is the real deal.", imageSrc: "http://img.b2bpic.net/free-photo/expressive-senior-female-posing-indoor_344912-360.jpg" },
{ name: "Ohad Mosafi", role: "Homeowner", quote: "Responded quickly and unclogged our sewer line from tree roots within 30 minutes.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-african-american-woman-cafe_273609-5064.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// 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 FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from '@/components/ui/SectionErrorBoundary';
export default function ServicesSection(): React.JSX.Element {
return (
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesImageBento
tag="Our Services"
title="Comprehensive Plumbing Solutions"
description="Expert services to keep your home's infrastructure running smoothly."
items={[
{ title: "Main Sewer Line Repair", description: "Tree root removal and complete inspections.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-attractive-hispanic-handyman-writing-work-estimate-before-fixing-kitchen-sink_662251-2690.jpg" },
{ title: "Drain Cleaning", description: "Fast, effective clearing of all household drains.", imageSrc: "http://img.b2bpic.net/free-photo/interior-modern-bathroom-with-window-overlooking-city_169016-26703.jpg" },
{ title: "Leak Detection", description: "Locate and repair hidden water leaks.", imageSrc: "http://img.b2bpic.net/free-photo/solution-top-view-man-plumber-overalls-fixing-breakdown-sink_259150-58267.jpg" },
{ title: "Water Main Repair", description: "Underground water line services.", imageSrc: "http://img.b2bpic.net/free-photo/female-plumber-working-fix-problems-client-s-house_23-2150990731.jpg" },
{ title: "Water Softener", description: "Protect plumbing with water softening.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-as-plumber_23-2150746316.jpg" },
{ title: "Faucet Repair", description: "Expert fixture and faucet replacement.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-bathtub-with-faucet_1203-1500.jpg" },
{ title: "Bathroom Plumbing", description: "Full bathroom repair and install.", imageSrc: "http://img.b2bpic.net/free-photo/electrician-is-mounting-electric-sockets-white-wall-indoors_169016-17657.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}