Merge version_3_1781986417013 into main #2

Merged
bender merged 1 commits from version_3_1781986417013 into main 2026-06-20 20:15:04 +00:00
9 changed files with 345 additions and 218 deletions

View File

@@ -1,230 +1,36 @@
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesDetailedSteps from '@/components/sections/features/FeaturesDetailedSteps';
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
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 FeaturesSection from './HomePage/sections/Features';
import MetricsSection from './HomePage/sections/Metrics';
import PricingSection from './HomePage/sections/Pricing';
import TestimonialsSection from './HomePage/sections/Testimonials';
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">
<HeroBillboard
title="Transform Your Outdoor Space Into Something Extraordinary"
description="Professional landscaping services built on quality craftsmanship, honest pricing, and proven customer satisfaction. Trusted by local homeowners and property managers throughout the region."
primaryButton={{
text: "Get Your Free Estimate",
href: "#contact",
}}
secondaryButton={{
text: "View Our Projects",
href: "#features",
}}
imageSrc="http://img.b2bpic.net/free-photo/view-tank-container-water-storage_23-2151748329.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTextSplit
title="Local Expertise, Proven Results"
descriptions={[
"Daniels Landscaping LLC is a locally-owned, family-operated business dedicated to elevating residential and commercial outdoor spaces within our 30-mile service radius.",
"We take pride in our honest approach to communication, ensuring clear timelines, transparent pricing, and quality craftsmanship that increases property value and curb appeal.",
]}
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesDetailedSteps
tag="Our Process"
title="Simple Transformation Steps"
description="We take the guesswork out of outdoor improvements with our streamlined four-stage project management approach."
steps={[
{
tag: "01",
title: "Free Consultation",
subtitle: "Assess Needs",
description: "We discuss your vision, budget, and project requirements on-site for a transparent estimate.",
imageSrc: "http://img.b2bpic.net/free-photo/father-son-together-tree-nursery-picking-plant_23-2148814060.jpg",
},
{
tag: "02",
title: "Custom Design",
subtitle: "Plan Project",
description: "Our team drafts a functional and aesthetic design tailored specifically to your landscape property.",
imageSrc: "http://img.b2bpic.net/free-photo/wide-angle-shot-gray-concrete-walkway-cloudy-sky_181624-16507.jpg",
},
{
tag: "03",
title: "Execution",
subtitle: "Build Dream",
description: "Our professional crews bring the plan to life with expert craftsmanship and high-quality materials.",
imageSrc: "http://img.b2bpic.net/free-photo/aerial-view-from-hong-kong_181624-34551.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Impact"
title="Quality You Can See"
description="We don't just landscape; we build trust one project at a time across our local community."
metrics={[
{
value: "150+",
title: "Projects Completed",
features: [
"Residential properties",
"Commercial maintenance",
],
},
{
value: "10 Years",
title: "Local Authority",
features: [
"Dedicated craftsmanship",
"Expert knowledge",
],
},
{
value: "98%",
title: "Satisfied Clients",
features: [
"On-time delivery",
"Professional communication",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingMediaCards
tag="Transparent Pricing"
title="Clear Investment Options"
description="We believe in honest pricing for premium landscaping solutions to give you peace of mind."
plans={[
{
tag: "Seasonal",
price: "Custom",
period: "/per service",
features: [
"Lawn care",
"Weed control",
"Garden bed maintenance",
],
primaryButton: {
text: "Request Quote",
href: "#contact",
},
imageSrc: "http://img.b2bpic.net/free-photo/beach-sochi_181624-528.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialRatingCards
tag="Proven Trust"
title="Hear From Local Homeowners"
description="Quality is the cornerstone of Daniels Landscaping LLC, as reflected by our satisfied customer base."
testimonials={[
{
name: "Sarah Miller",
role: "Homeowner",
quote: "The team transformed our barren backyard into a luxury outdoor retreat on time and within budget.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/man-standing-garden-showing-ok-gesture-looking-camera_259150-59030.jpg",
},
{
name: "David Thorne",
role: "Property Manager",
quote: "Reliable maintenance services every single time. Daniels is our go-to for commercial upkeep.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/women-taking-care-their-plants-greenhouse_23-2149037249.jpg",
},
{
name: "Emily Chen",
role: "Homeowner",
quote: "Honest communication throughout the entire walkway project. Exceptional attention to detail.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/countryside-life-naature-close-up-outdoor-portrait-young-attractive-bearded-caucasian-man-blue-t-shirt-smiling_176420-19896.jpg",
},
{
name: "Robert Voss",
role: "Homeowner",
quote: "Professional team, fair pricing, and stunning results. Highly recommend for any landscape needs.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-holding-flowers_23-2149871129.jpg",
},
{
name: "Lisa Garcia",
role: "Property Owner",
quote: "They made our landscape look better than ever! Worth every penny of our investment.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-lady-taking-care-plants-flowers-her-backyard-ready-start-online-business-consulting-greenhouse-care_197531-31039.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Learn More"
title="Common Questions"
description="Here is everything you need to know about starting your next landscaping project."
items={[
{
question: "What is your service radius?",
answer: "We provide premium landscaping services within a 30-mile radius of the regional city center.",
},
{
question: "Are you licensed and insured?",
answer: "Yes, Daniels Landscaping LLC is fully licensed, bonded, and insured for all services offered.",
},
{
question: "How do I get an estimate?",
answer: "Simply fill out our contact form or call us to schedule a site consultation for a free, no-obligation estimate.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/young-man-reading-book-park-summer-day_1253-1091.jpg"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Get Started"
text="Ready to transform your outdoor space? Request your free estimate today."
primaryButton={{
text: "Get Estimate",
href: "#contact-form",
}}
secondaryButton={{
text: "Contact Us",
href: "tel:5550123456",
}}
/>
</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 AboutTextSplit from '@/components/sections/about/AboutTextSplit';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTextSplit
title="Local Expertise, Proven Results"
descriptions={[
"Daniels Landscaping LLC is a locally-owned, family-operated business dedicated to elevating residential and commercial outdoor spaces within our 30-mile service radius.",
"We take pride in our honest approach to communication, ensuring clear timelines, transparent pricing, and quality craftsmanship that increases property value and curb appeal.",
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,53 @@
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import ScrollReveal from "@/components/ui/ScrollReveal";
import TextAnimation from "@/components/ui/TextAnimation";
import Button from "@/components/ui/Button";
const primaryButton = {
text: "Get Estimate",
href: "#contact-form"
};
const secondaryButton = {
text: "(281) 839-0311",
href: "tel:+12818390311"
};
const ContactInline = () => {
return (
<section aria-label="Contact section" className="py-20">
<div className="w-content-width mx-auto">
<ScrollReveal variant="fade">
<div className="flex flex-col items-center gap-8 md:gap-10 py-20 px-8 rounded card">
<div className="flex flex-col items-center gap-2">
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
<p>{"Get Started"}</p>
</div>
<TextAnimation
text={"Ready to transform your outdoor space? Request your free estimate today."}
variant="slide-up"
gradientText={true}
tag="h2"
className="md:max-w-8/10 text-5xl 2xl:text-6xl leading-[1.15] font-semibold text-center text-balance"
/>
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
<Button text={primaryButton.text} href={primaryButton.href} variant="primary" />
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary" animationDelay={0.1} />
</div>
</div>
</div>
</ScrollReveal>
</div>
</section>
);
};
export default function ContactSection() {
return (
<div data-webild-section="contact" id="contact">
<ContactInline />
</div>
);
}

View File

@@ -0,0 +1,35 @@
// 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 FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Learn More"
title="Common Questions"
description="Here is everything you need to know about starting your next landscaping project."
items={[
{
question: "What is your service radius?",
answer: "We provide premium landscaping services within a 30-mile radius of the regional city center.",
},
{
question: "Are you licensed and insured?",
answer: "Yes, Daniels Landscaping LLC is fully licensed, bonded, and insured for all services offered.",
},
{
question: "How do I get an estimate?",
answer: "Simply fill out our contact form or call us to schedule a site consultation for a free, no-obligation estimate.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/young-man-reading-book-park-summer-day_1253-1091.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 "features" section.
import React from 'react';
import FeaturesDetailedSteps from '@/components/sections/features/FeaturesDetailedSteps';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesDetailedSteps
tag="Our Process"
title="Simple Transformation Steps"
description="We take the guesswork out of outdoor improvements with our streamlined four-stage project management approach."
steps={[
{
tag: "01",
title: "Free Consultation",
subtitle: "Assess Needs",
description: "We discuss your vision, budget, and project requirements on-site for a transparent estimate.",
imageSrc: "http://img.b2bpic.net/free-photo/father-son-together-tree-nursery-picking-plant_23-2148814060.jpg",
},
{
tag: "02",
title: "Custom Design",
subtitle: "Plan Project",
description: "Our team drafts a functional and aesthetic design tailored specifically to your landscape property.",
imageSrc: "http://img.b2bpic.net/free-photo/wide-angle-shot-gray-concrete-walkway-cloudy-sky_181624-16507.jpg",
},
{
tag: "03",
title: "Execution",
subtitle: "Build Dream",
description: "Our professional crews bring the plan to life with expert craftsmanship and high-quality materials.",
imageSrc: "http://img.b2bpic.net/free-photo/aerial-view-from-hong-kong_181624-34551.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,28 @@
// 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 HeroBillboard from '@/components/sections/hero/HeroBillboard';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboard
title="Transform Your Outdoor Space Into Something Extraordinary"
description="Professional landscaping services built on quality craftsmanship, honest pricing, and proven customer satisfaction. Trusted by local homeowners and property managers throughout the region."
primaryButton={{
text: "Get Your Free Estimate",
href: "#contact",
}}
secondaryButton={{
text: "View Our Projects",
href: "#features",
}}
imageSrc="http://img.b2bpic.net/free-photo/view-tank-container-water-storage_23-2151748329.jpg"
/>
</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 "metrics" section.
import React from 'react';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Impact"
title="Quality You Can See"
description="We don't just landscape; we build trust one project at a time across our local community."
metrics={[
{
value: "150+",
title: "Projects Completed",
features: [
"Residential properties",
"Commercial maintenance",
],
},
{
value: "10 Years",
title: "Local Authority",
features: [
"Dedicated craftsmanship",
"Expert knowledge",
],
},
{
value: "98%",
title: "Satisfied Clients",
features: [
"On-time delivery",
"Professional communication",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,37 @@
// 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 PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingMediaCards
tag="Transparent Pricing"
title="Clear Investment Options"
description="We believe in honest pricing for premium landscaping solutions to give you peace of mind."
plans={[
{
tag: "Seasonal",
price: "Custom",
period: "/per service",
features: [
"Lawn care",
"Weed control",
"Garden bed maintenance",
],
primaryButton: {
text: "Request Quote",
href: "#contact",
},
imageSrc: "http://img.b2bpic.net/free-photo/beach-sochi_181624-528.jpg",
},
]}
/>
</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 "testimonials" section.
import React from 'react';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialRatingCards
tag="Proven Trust"
title="Hear From Local Homeowners"
description="Quality is the cornerstone of Daniels Landscaping LLC, as reflected by our satisfied customer base."
testimonials={[
{
name: "Sarah Miller",
role: "Homeowner",
quote: "The team transformed our barren backyard into a luxury outdoor retreat on time and within budget.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/man-standing-garden-showing-ok-gesture-looking-camera_259150-59030.jpg",
},
{
name: "David Thorne",
role: "Property Manager",
quote: "Reliable maintenance services every single time. Daniels is our go-to for commercial upkeep.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/women-taking-care-their-plants-greenhouse_23-2149037249.jpg",
},
{
name: "Emily Chen",
role: "Homeowner",
quote: "Honest communication throughout the entire walkway project. Exceptional attention to detail.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/countryside-life-naature-close-up-outdoor-portrait-young-attractive-bearded-caucasian-man-blue-t-shirt-smiling_176420-19896.jpg",
},
{
name: "Robert Voss",
role: "Homeowner",
quote: "Professional team, fair pricing, and stunning results. Highly recommend for any landscape needs.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-holding-flowers_23-2149871129.jpg",
},
{
name: "Lisa Garcia",
role: "Property Owner",
quote: "They made our landscape look better than ever! Worth every penny of our investment.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-lady-taking-care-plants-flowers-her-backyard-ready-start-online-business-consulting-greenhouse-care_197531-31039.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}