Merge version_2_1781192330975 into main #1
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f6f7f4;
|
||||
--card: #fffefe;
|
||||
--foreground: #080908;
|
||||
--primary-cta: #0e3a29;
|
||||
--primary-cta-text: #fffefe;
|
||||
--secondary-cta: #ebeee0;
|
||||
--secondary-cta-text: #080908;
|
||||
--accent: #35c18b;
|
||||
--background-accent: #c6efc6;
|
||||
--background: #fff8f0;
|
||||
--card: #ffffff;
|
||||
--foreground: #1a0f00;
|
||||
--primary-cta: #ea580c;
|
||||
--primary-cta-text: #ffffff;
|
||||
--secondary-cta: #ffedd5;
|
||||
--secondary-cta-text: #9a3412;
|
||||
--accent: #f97316;
|
||||
--background-accent: #ffedd5;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 1.5rem;
|
||||
|
||||
@@ -1,274 +1,28 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesBorderGlow from '@/components/sections/features/FeaturesBorderGlow';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import PricingSimpleCards from '@/components/sections/pricing/PricingSimpleCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
import { Droplets, Leaf, Lightbulb, Palette, Scissors, ShieldCheck, Star, Wrench } 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; this shell only fixes render order.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HomeSection from './HomePage/sections/Home';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import ServicesSection from './HomePage/sections/Services';
|
||||
import PortfolioSection from './HomePage/sections/Portfolio';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import SocialProofSection from './HomePage/sections/SocialProof';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="home" data-section="home">
|
||||
<SectionErrorBoundary name="home">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Your Dream Outdoor Space"
|
||||
title="Transform Your Landscape into a Personal Paradise"
|
||||
description="At GreenScape Pros, we design, build, and maintain stunning outdoor environments that enhance your lifestyle and property value. From lush gardens to elegant patios, we bring your vision to life."
|
||||
primaryButton={{
|
||||
text: "Explore Services",
|
||||
href: "#services",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Get a Free Quote",
|
||||
href: "#contact",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "https://images.pexels.com/photos/28586224/pexels-photo-28586224.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.pexels.com/photos/8189129/pexels-photo-8189129.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="About Us"
|
||||
title="Crafting Beautiful Landscapes Since 2005"
|
||||
description="GreenScape Pros is dedicated to creating breathtaking outdoor spaces tailored to your needs. With over 18 years of experience, our passionate team delivers exceptional craftsmanship and personalized service, ensuring every project flourishes."
|
||||
items={[
|
||||
{
|
||||
icon: Leaf,
|
||||
title: "Experienced Team",
|
||||
description: "Our certified professionals bring years of expertise to every garden and landscape project.",
|
||||
},
|
||||
{
|
||||
icon: ShieldCheck,
|
||||
title: "Quality Materials",
|
||||
description: "We source only the best plants and hardscaping materials for lasting beauty and durability.",
|
||||
},
|
||||
{
|
||||
icon: Leaf,
|
||||
title: "Sustainable Practices",
|
||||
description: "Committed to eco-friendly methods that nurture your landscape and the environment.",
|
||||
},
|
||||
]}
|
||||
imageSrc="https://images.pexels.com/photos/9635533/pexels-photo-9635533.jpeg?auto=compress&cs=tinysrgb&h=650&w=940"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesBorderGlow
|
||||
tag="Our Expertise"
|
||||
title="Comprehensive Landscaping Solutions"
|
||||
description="From initial design to ongoing maintenance, GreenScape Pros offers a full suite of services to ensure your outdoor space remains pristine and beautiful year-round."
|
||||
features={[
|
||||
{
|
||||
icon: Palette,
|
||||
title: "Landscape Design",
|
||||
description: "Innovative and personalized designs that reflect your style and enhance your property.",
|
||||
},
|
||||
{
|
||||
icon: Wrench,
|
||||
title: "Installation & Hardscaping",
|
||||
description: "Expert installation of patios, walkways, retaining walls, and custom garden features.",
|
||||
},
|
||||
{
|
||||
icon: Scissors,
|
||||
title: "Garden Maintenance",
|
||||
description: "Regular care including pruning, weeding, mulching, and seasonal clean-ups to keep your garden thriving.",
|
||||
},
|
||||
{
|
||||
icon: Droplets,
|
||||
title: "Irrigation Systems",
|
||||
description: "Efficient and smart irrigation solutions to ensure your plants receive optimal watering.",
|
||||
},
|
||||
{
|
||||
icon: Lightbulb,
|
||||
title: "Outdoor Lighting",
|
||||
description: "Ambiance and security with strategically placed lighting solutions for your landscape.",
|
||||
},
|
||||
{
|
||||
icon: Star,
|
||||
title: "Tree & Shrub Care",
|
||||
description: "Professional planting, pruning, and removal services to maintain healthy trees and shrubs.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="portfolio" data-section="portfolio">
|
||||
<SectionErrorBoundary name="portfolio">
|
||||
<FeaturesImageBento
|
||||
tag="Our Work"
|
||||
title="Showcasing Our Landscaping Masterpieces"
|
||||
description="Browse a selection of our completed projects, demonstrating our commitment to quality and creative design across various styles and scales."
|
||||
items={[
|
||||
{
|
||||
title: "Modern Patio Oasis",
|
||||
description: "Sleek lines and functional beauty.",
|
||||
imageSrc: "https://images.pexels.com/photos/34909157/pexels-photo-34909157.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Classic Garden Charm",
|
||||
description: "Timeless elegance and lush greenery.",
|
||||
imageSrc: "https://images.pexels.com/photos/5587964/pexels-photo-5587964.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Sustainable Xeriscape",
|
||||
description: "Eco-friendly, low-maintenance beauty.",
|
||||
imageSrc: "https://images.pexels.com/photos/7840851/pexels-photo-7840851.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Tranquil Water Feature",
|
||||
description: "Serene sounds and visual harmony.",
|
||||
imageSrc: "https://images.pexels.com/photos/34205722/pexels-photo-34205722.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Edible Garden Design",
|
||||
description: "Functional and bountiful green spaces.",
|
||||
imageSrc: "https://images.pexels.com/photos/37113938/pexels-photo-37113938.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Commercial Landscape",
|
||||
description: "Professional curb appeal for businesses.",
|
||||
imageSrc: "https://images.pexels.com/photos/37366707/pexels-photo-37366707.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Rooftop Retreat",
|
||||
description: "Urban green space with a view.",
|
||||
imageSrc: "https://images.pexels.com/photos/31433497/pexels-photo-31433497.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingSimpleCards
|
||||
tag="Transparent Pricing"
|
||||
title="Tailored Landscaping Packages"
|
||||
description="Choose from our flexible service plans or let us create a custom quote designed specifically for your outdoor project needs."
|
||||
plans={[
|
||||
{
|
||||
tag: "Essential Care",
|
||||
price: "$199/month",
|
||||
description: "Perfect for basic lawn and garden upkeep.",
|
||||
features: [
|
||||
"Weekly Mowing & Trimming",
|
||||
"Seasonal Fertilization",
|
||||
"Leaf Removal (2x/year)",
|
||||
"Basic Pest Control",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Premium Package",
|
||||
price: "$349/month",
|
||||
description: "Comprehensive maintenance for a pristine landscape.",
|
||||
features: [
|
||||
"All Essential Care Features",
|
||||
"Bi-weekly Weeding & Pruning",
|
||||
"Advanced Shrub & Hedge Trimming",
|
||||
"Annual Irrigation Check-up",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Custom Project",
|
||||
price: "Quote Basis",
|
||||
description: "Ideal for new installations, redesigns, and extensive hardscaping.",
|
||||
features: [
|
||||
"Personalized Design Consultation",
|
||||
"Detailed Project Planning",
|
||||
"Material Sourcing & Procurement",
|
||||
"Expert Installation & Project Management",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialTrustCard
|
||||
quote="GreenScape Pros transformed our backyard into an absolute dream. Their attention to detail and creative vision exceeded all our expectations!"
|
||||
rating={5}
|
||||
author="Sarah L., Homeowner"
|
||||
avatars={[
|
||||
{
|
||||
name: "Sarah L.",
|
||||
imageSrc: "https://images.pexels.com/photos/8784670/pexels-photo-8784670.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "John D.",
|
||||
imageSrc: "https://images.pexels.com/photos/7937761/pexels-photo-7937761.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Emily R.",
|
||||
imageSrc: "https://images.pexels.com/photos/7728075/pexels-photo-7728075.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Michael S.",
|
||||
imageSrc: "https://images.pexels.com/photos/36812086/pexels-photo-36812086.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Jessica M.",
|
||||
imageSrc: "https://images.pexels.com/photos/6720592/pexels-photo-6720592.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Trusted Partners"
|
||||
title="Proudly Serving Our Community and Businesses"
|
||||
description="We've had the privilege of working with a diverse range of residential and commercial clients, building lasting relationships based on trust and exceptional service."
|
||||
names={[
|
||||
"Luxury Homes Inc.",
|
||||
"City Parks Dept.",
|
||||
"Harmony HOA",
|
||||
"Bloomfield Estates",
|
||||
"Elite Commercial Mgmt.",
|
||||
"Gardenia Resorts",
|
||||
"Summit Corporations",
|
||||
"Green Living Apartments",
|
||||
"Willow Creek School",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Let's Get Started"
|
||||
text="Ready to enhance your outdoor living? Contact us today for a consultation!"
|
||||
primaryButton={{
|
||||
text: "Request a Quote",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Us Now",
|
||||
href: "tel:123-456-7890",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<HomeSection />
|
||||
<AboutSection />
|
||||
<ServicesSection />
|
||||
<PortfolioSection />
|
||||
<PricingSection />
|
||||
<TestimonialsSection />
|
||||
<SocialProofSection />
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
39
src/pages/HomePage/sections/About.tsx
Normal file
39
src/pages/HomePage/sections/About.tsx
Normal 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 { Droplets, Leaf, Lightbulb, Palette, Scissors, ShieldCheck, Star, Wrench } 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="About Us"
|
||||
title="Crafting Beautiful Landscapes Since 2005"
|
||||
description="GreenScape Pros is dedicated to creating breathtaking outdoor spaces tailored to your needs. With over 18 years of experience, our passionate team delivers exceptional craftsmanship and personalized service, ensuring every project flourishes."
|
||||
items={[
|
||||
{
|
||||
icon: Leaf,
|
||||
title: "Experienced Team",
|
||||
description: "Our certified professionals bring years of expertise to every garden and landscape project.",
|
||||
},
|
||||
{
|
||||
icon: ShieldCheck,
|
||||
title: "Quality Materials",
|
||||
description: "We source only the best plants and hardscaping materials for lasting beauty and durability.",
|
||||
},
|
||||
{
|
||||
icon: Leaf,
|
||||
title: "Sustainable Practices",
|
||||
description: "Committed to eco-friendly methods that nurture your landscape and the environment.",
|
||||
},
|
||||
]}
|
||||
imageSrc="https://images.pexels.com/photos/9635533/pexels-photo-9635533.jpeg?auto=compress&cs=tinysrgb&h=650&w=940"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal 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="Let's Get Started"
|
||||
text="Ready to enhance your outdoor living? Contact us today for a consultation!"
|
||||
primaryButton={{
|
||||
text: "Request a Quote",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Us Now",
|
||||
href: "tel:123-456-7890",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Home.tsx
Normal file
36
src/pages/HomePage/sections/Home.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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 HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HomeSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="home" data-section="home">
|
||||
<SectionErrorBoundary name="home">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Your Dream Outdoor Space"
|
||||
title="Transform Your Landscape into a Personal Paradise"
|
||||
description="At GreenScape Pros, we design, build, and maintain stunning outdoor environments that enhance your lifestyle and property value. From lush gardens to elegant patios, we bring your vision to life."
|
||||
primaryButton={{
|
||||
text: "Explore Services",
|
||||
href: "#services",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Get a Free Quote",
|
||||
href: "#contact",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "https://images.pexels.com/photos/28586224/pexels-photo-28586224.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.pexels.com/photos/8189129/pexels-photo-8189129.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Portfolio.tsx
Normal file
57
src/pages/HomePage/sections/Portfolio.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "portfolio" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PortfolioSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="portfolio" data-section="portfolio">
|
||||
<SectionErrorBoundary name="portfolio">
|
||||
<FeaturesImageBento
|
||||
tag="Our Work"
|
||||
title="Showcasing Our Landscaping Masterpieces"
|
||||
description="Browse a selection of our completed projects, demonstrating our commitment to quality and creative design across various styles and scales."
|
||||
items={[
|
||||
{
|
||||
title: "Modern Patio Oasis",
|
||||
description: "Sleek lines and functional beauty.",
|
||||
imageSrc: "https://images.pexels.com/photos/34909157/pexels-photo-34909157.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Classic Garden Charm",
|
||||
description: "Timeless elegance and lush greenery.",
|
||||
imageSrc: "https://images.pexels.com/photos/5587964/pexels-photo-5587964.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Sustainable Xeriscape",
|
||||
description: "Eco-friendly, low-maintenance beauty.",
|
||||
imageSrc: "https://images.pexels.com/photos/7840851/pexels-photo-7840851.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Tranquil Water Feature",
|
||||
description: "Serene sounds and visual harmony.",
|
||||
imageSrc: "https://images.pexels.com/photos/34205722/pexels-photo-34205722.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Edible Garden Design",
|
||||
description: "Functional and bountiful green spaces.",
|
||||
imageSrc: "https://images.pexels.com/photos/37113938/pexels-photo-37113938.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Commercial Landscape",
|
||||
description: "Professional curb appeal for businesses.",
|
||||
imageSrc: "https://images.pexels.com/photos/37366707/pexels-photo-37366707.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Rooftop Retreat",
|
||||
description: "Urban green space with a view.",
|
||||
imageSrc: "https://images.pexels.com/photos/31433497/pexels-photo-31433497.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
55
src/pages/HomePage/sections/Pricing.tsx
Normal file
55
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,55 @@
|
||||
// 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="Transparent Pricing"
|
||||
title="Tailored Landscaping Packages"
|
||||
description="Choose from our flexible service plans or let us create a custom quote designed specifically for your outdoor project needs."
|
||||
plans={[
|
||||
{
|
||||
tag: "Essential Care",
|
||||
price: "$199/month",
|
||||
description: "Perfect for basic lawn and garden upkeep.",
|
||||
features: [
|
||||
"Weekly Mowing & Trimming",
|
||||
"Seasonal Fertilization",
|
||||
"Leaf Removal (2x/year)",
|
||||
"Basic Pest Control",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Premium Package",
|
||||
price: "$349/month",
|
||||
description: "Comprehensive maintenance for a pristine landscape.",
|
||||
features: [
|
||||
"All Essential Care Features",
|
||||
"Bi-weekly Weeding & Pruning",
|
||||
"Advanced Shrub & Hedge Trimming",
|
||||
"Annual Irrigation Check-up",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Custom Project",
|
||||
price: "Quote Basis",
|
||||
description: "Ideal for new installations, redesigns, and extensive hardscaping.",
|
||||
features: [
|
||||
"Personalized Design Consultation",
|
||||
"Detailed Project Planning",
|
||||
"Material Sourcing & Procurement",
|
||||
"Expert Installation & Project Management",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
53
src/pages/HomePage/sections/Services.tsx
Normal file
53
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,53 @@
|
||||
// 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 FeaturesBorderGlow from '@/components/sections/features/FeaturesBorderGlow';
|
||||
import { Droplets, Leaf, Lightbulb, Palette, Scissors, ShieldCheck, Star, Wrench } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesBorderGlow
|
||||
tag="Our Expertise"
|
||||
title="Comprehensive Landscaping Solutions"
|
||||
description="From initial design to ongoing maintenance, GreenScape Pros offers a full suite of services to ensure your outdoor space remains pristine and beautiful year-round."
|
||||
features={[
|
||||
{
|
||||
icon: Palette,
|
||||
title: "Landscape Design",
|
||||
description: "Innovative and personalized designs that reflect your style and enhance your property.",
|
||||
},
|
||||
{
|
||||
icon: Wrench,
|
||||
title: "Installation & Hardscaping",
|
||||
description: "Expert installation of patios, walkways, retaining walls, and custom garden features.",
|
||||
},
|
||||
{
|
||||
icon: Scissors,
|
||||
title: "Garden Maintenance",
|
||||
description: "Regular care including pruning, weeding, mulching, and seasonal clean-ups to keep your garden thriving.",
|
||||
},
|
||||
{
|
||||
icon: Droplets,
|
||||
title: "Irrigation Systems",
|
||||
description: "Efficient and smart irrigation solutions to ensure your plants receive optimal watering.",
|
||||
},
|
||||
{
|
||||
icon: Lightbulb,
|
||||
title: "Outdoor Lighting",
|
||||
description: "Ambiance and security with strategically placed lighting solutions for your landscape.",
|
||||
},
|
||||
{
|
||||
icon: Star,
|
||||
title: "Tree & Shrub Care",
|
||||
description: "Professional planting, pruning, and removal services to maintain healthy trees and shrubs.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
31
src/pages/HomePage/sections/SocialProof.tsx
Normal file
31
src/pages/HomePage/sections/SocialProof.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "social-proof" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function SocialProofSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Trusted Partners"
|
||||
title="Proudly Serving Our Community and Businesses"
|
||||
description="We've had the privilege of working with a diverse range of residential and commercial clients, building lasting relationships based on trust and exceptional service."
|
||||
names={[
|
||||
"Luxury Homes Inc.",
|
||||
"City Parks Dept.",
|
||||
"Harmony HOA",
|
||||
"Bloomfield Estates",
|
||||
"Elite Commercial Mgmt.",
|
||||
"Gardenia Resorts",
|
||||
"Summit Corporations",
|
||||
"Green Living Apartments",
|
||||
"Willow Creek School",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Testimonials.tsx
Normal file
42
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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 TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialTrustCard
|
||||
quote="GreenScape Pros transformed our backyard into an absolute dream. Their attention to detail and creative vision exceeded all our expectations!"
|
||||
rating={5}
|
||||
author="Sarah L., Homeowner"
|
||||
avatars={[
|
||||
{
|
||||
name: "Sarah L.",
|
||||
imageSrc: "https://images.pexels.com/photos/8784670/pexels-photo-8784670.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "John D.",
|
||||
imageSrc: "https://images.pexels.com/photos/7937761/pexels-photo-7937761.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Emily R.",
|
||||
imageSrc: "https://images.pexels.com/photos/7728075/pexels-photo-7728075.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Michael S.",
|
||||
imageSrc: "https://images.pexels.com/photos/36812086/pexels-photo-36812086.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Jessica M.",
|
||||
imageSrc: "https://images.pexels.com/photos/6720592/pexels-photo-6720592.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user