Merge version_2_1781700305849 into main #2
@@ -38,11 +38,11 @@ export default function Layout() {
|
||||
];
|
||||
|
||||
return (
|
||||
<StyleProvider buttonVariant="stagger" siteBackground="noise" heroBackground="gradientBars">
|
||||
<StyleProvider buttonVariant="primary" siteBackground="none" heroBackground="none">
|
||||
<SiteBackgroundSlot />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarFloating
|
||||
logo="Toronto Landscapes"
|
||||
logo="AJT Garden Services"
|
||||
ctaButton={{
|
||||
text: "Get a Quote",
|
||||
href: "#contact",
|
||||
@@ -54,7 +54,7 @@ export default function Layout() {
|
||||
</main>
|
||||
<SectionErrorBoundary name="footer">
|
||||
<FooterSimpleMedia
|
||||
brand="Toronto Landscapes"
|
||||
brand="AJT Garden Services"
|
||||
columns={[
|
||||
{
|
||||
title: "Company",
|
||||
@@ -83,7 +83,7 @@ export default function Layout() {
|
||||
],
|
||||
},
|
||||
]}
|
||||
copyright="© 2024 Toronto Landscapes. All rights reserved."
|
||||
copyright="© 2024 AJT Garden Services LTD. All rights reserved."
|
||||
links={[
|
||||
{
|
||||
label: "Privacy Policy",
|
||||
|
||||
@@ -1,336 +1,39 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import { Clock, Leaf, Shield } 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 BenefitsSection from './HomePage/sections/Benefits';
|
||||
import AwardsSection from './HomePage/sections/Awards';
|
||||
import ServicesSection from './HomePage/sections/Services';
|
||||
import WhyUsSection from './HomePage/sections/WhyUs';
|
||||
import GallerySection from './HomePage/sections/Gallery';
|
||||
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">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="Serving Greater Toronto Area"
|
||||
title="Crafting Your Dream Outdoor Living Space"
|
||||
description="Premium landscape design and maintenance services for Toronto homeowners. We turn ordinary backyards into extraordinary sanctuaries."
|
||||
primaryButton={{
|
||||
text: "Get a Free Quote",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Our Gallery",
|
||||
href: "#gallery",
|
||||
}}
|
||||
leftItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-handsome-man-riding-scooter-park_1303-21245.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-girl-black-white-blouse-touching-bush-needles-cute-model-with-fierycolored-hair-poses-plant-store_197531-25969.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/view-backyard-garden-digital-art-style_23-2151488214.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-european-woman-smoking-cigar-lying-hammock-outside-tropical-luxury-villa-hotel-sunset-natural-light_343596-652.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/women-working-greenhouse-with-green-trees_1157-30893.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/stylish-girl-walking-through-her-school-s-campus_1157-17434.jpg",
|
||||
},
|
||||
]}
|
||||
rightItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-outside-working-laptop_23-2148578304.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-shot-stone-building-with-lovely-yard-blue-sky-punta-de-lobos-chile_181624-13685.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/view-robot-taking-care-garden_23-2151804047.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-people-garage-sale_23-2150661429.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/graveyard-background-concept_23-2149585164.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luxury-outdoor-hotel_1150-12915.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="benefits" data-section="benefits">
|
||||
<SectionErrorBoundary name="benefits">
|
||||
<AboutFeaturesSplit
|
||||
tag="Why Work With Us"
|
||||
title="Unmatched Quality in Landscaping"
|
||||
description="We blend artistic design with structural excellence to ensure your investment stands the test of time and weather."
|
||||
items={[
|
||||
{
|
||||
icon: Leaf,
|
||||
title: "Eco-Friendly Practices",
|
||||
description: "We prioritize sustainable, low-impact landscaping solutions.",
|
||||
},
|
||||
{
|
||||
icon: Clock,
|
||||
title: "Punctual Delivery",
|
||||
description: "We respect your time and complete projects on schedule.",
|
||||
},
|
||||
{
|
||||
icon: Shield,
|
||||
title: "Lifetime Warranty",
|
||||
description: "On all hardscaping installations, ensuring long-term peace of mind.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/african-american-woman-outdoor-with-rosary-hand-concept-faith-spirituality-religion_627829-311.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<BenefitsSection />
|
||||
|
||||
<div id="awards" data-section="awards">
|
||||
<SectionErrorBoundary name="awards">
|
||||
<SocialProofMarquee
|
||||
tag="Our Distinctions"
|
||||
title="Recognized Excellence"
|
||||
description="Proud recipients of Toronto landscape and garden industry accolades."
|
||||
names={[
|
||||
"Landscape Ontario Excellence Award",
|
||||
"Toronto Gardeners Choice 2023",
|
||||
"Sustainable Design Medal",
|
||||
"Best of Houzz Service",
|
||||
"City Landscape Design Winner",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AwardsSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesArrowCards
|
||||
tag="Our Expertise"
|
||||
title="Transformative Landscaping Services"
|
||||
description="Comprehensive design and build solutions for every season."
|
||||
items={[
|
||||
{
|
||||
title: "Custom Hardscaping",
|
||||
tags: [
|
||||
"Patios",
|
||||
"Walkways",
|
||||
"Retaining Walls",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/outdoor-patio-with-chair-table_1339-4789.jpg",
|
||||
},
|
||||
{
|
||||
title: "Garden Design",
|
||||
tags: [
|
||||
"Planting",
|
||||
"Bed Layouts",
|
||||
"Mulching",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-hitting-wheel-with-hammer_23-2147671876.jpg",
|
||||
},
|
||||
{
|
||||
title: "Property Care",
|
||||
tags: [
|
||||
"Mowing",
|
||||
"Pruning",
|
||||
"Cleanup",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-shot-footpath-made-stone-tiles-surrounded-by-green-grass_181624-29097.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="why-us" data-section="why-us">
|
||||
<SectionErrorBoundary name="why-us">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="Numbers That Tell a Story"
|
||||
description="Dedication to craft resulting in consistently high satisfaction."
|
||||
metrics={[
|
||||
{
|
||||
value: "15+",
|
||||
title: "Years of Experience",
|
||||
features: [
|
||||
"Over 500 projects completed",
|
||||
"Expert horticultural staff",
|
||||
"Full design-build service",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "98%",
|
||||
title: "Client Satisfaction",
|
||||
features: [
|
||||
"Detailed quality control",
|
||||
"Responsive communication",
|
||||
"Regular site updates",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "24/7",
|
||||
title: "Dedicated Support",
|
||||
features: [
|
||||
"Emergency property care",
|
||||
"Season-round availability",
|
||||
"Direct project manager",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<WhyUsSection />
|
||||
|
||||
<div id="gallery" data-section="gallery">
|
||||
<SectionErrorBoundary name="gallery">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Portfolio"
|
||||
title="Selected Works"
|
||||
description="A glimpse into our recent landscaping transformations across Toronto."
|
||||
items={[
|
||||
{
|
||||
title: "Modern Patio",
|
||||
description: "Sleek flagstone patio design.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/office-building-with-river_1127-3474.jpg",
|
||||
},
|
||||
{
|
||||
title: "Urban Garden",
|
||||
description: "Small footprint, big impact.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tree-branch-nature-flora-concept_53876-42987.jpg",
|
||||
},
|
||||
{
|
||||
title: "Classic Backyard",
|
||||
description: "Family-oriented green space.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/brown-black-wooden-bench-near-glass-window_417767-129.jpg",
|
||||
},
|
||||
{
|
||||
title: "Poolside Landscape",
|
||||
description: "Luxury finish and planting.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photo-wall-texture-pattern_58702-15141.jpg",
|
||||
},
|
||||
{
|
||||
title: "Front Entry",
|
||||
description: "Inviting curb appeal updates.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/street-texture-retro-tuscany-city_1203-5049.jpg",
|
||||
},
|
||||
{
|
||||
title: "Retaining Wall",
|
||||
description: "Structural aesthetic masonry.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/rustic-patio-furniture-house-deck-with-vegetation_23-2150698292.jpg",
|
||||
},
|
||||
{
|
||||
title: "Outdoor Kitchen",
|
||||
description: "Entertainment space construction.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/contrasting-outdoor-texture-design_23-2149756583.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<GallerySection />
|
||||
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Testimonials"
|
||||
title="What Our Clients Say"
|
||||
description="Our work speaks for itself, but our clients speak louder."
|
||||
testimonials={[
|
||||
{
|
||||
name: "David Miller",
|
||||
role: "Homeowner",
|
||||
quote: "Incredible transformation! They exceeded all expectations.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-cute-clothes-reaching-plants-greenhouse_197531-12330.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Jenkins",
|
||||
role: "Business Owner",
|
||||
quote: "Professional, on-time, and high-quality craftsmanship.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-concentrated-gardeners-preparing-plants-pots-market-man-woman-blue-shirts-black-aprons-growing-home-plants-caring-flowers-commercial-gardening-summer-concept_74855-12994.jpg",
|
||||
},
|
||||
{
|
||||
name: "Robert Chen",
|
||||
role: "Architect",
|
||||
quote: "Meticulous attention to detail in every landscape design.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-servant-caring-garden_23-2149530843.jpg",
|
||||
},
|
||||
{
|
||||
name: "Emily Watson",
|
||||
role: "Homeowner",
|
||||
quote: "The team made our backyard our favorite living space.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/against-background-bright-flowering-plants-green-bushes-that-grow-garden-beautiful-blonde-girl-with-green-eyes-smiles-sweetly-basks-sun_197531-25944.jpg",
|
||||
},
|
||||
{
|
||||
name: "Thomas P.",
|
||||
role: "Developer",
|
||||
quote: "Reliable experts for both new builds and maintenance.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-photo-background-plants-flowers-young-curly-girl-is-cute-smiling-holding-flower-pot-her-hands-with-small-flower-sprout_197531-25938.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ReviewsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Common Questions"
|
||||
title="Everything You Need to Know"
|
||||
description="Answers to common queries about our landscaping and design services."
|
||||
items={[
|
||||
{
|
||||
question: "What is the typical project duration?",
|
||||
answer: "Projects vary by complexity, but most residential projects take 2-4 weeks.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer seasonal maintenance?",
|
||||
answer: "Yes, we offer spring/fall cleanups and ongoing maintenance programs.",
|
||||
},
|
||||
{
|
||||
question: "Are you fully insured?",
|
||||
answer: "We are fully licensed and insured in the province of Ontario.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/path-way_74190-3770.jpg?_wi=1"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Let's Get Started"
|
||||
text="Ready to transform your property into a beautiful landscape? Schedule your consultation today."
|
||||
primaryButton={{
|
||||
text: "Contact Us Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Us Directly",
|
||||
href: "tel:+14165550123",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
27
src/pages/HomePage/sections/Awards.tsx
Normal file
27
src/pages/HomePage/sections/Awards.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 "awards" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AwardsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="awards" data-section="awards">
|
||||
<SectionErrorBoundary name="awards">
|
||||
<SocialProofMarquee
|
||||
tag="Our Distinctions"
|
||||
title="Recognized Excellence"
|
||||
description="Proud recipients of Toronto landscape and garden industry accolades."
|
||||
names={[
|
||||
"Landscape Ontario Excellence Award",
|
||||
"Toronto Gardeners Choice 2023",
|
||||
"Sustainable Design Medal",
|
||||
"Best of Houzz Service",
|
||||
"City Landscape Design Winner",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
39
src/pages/HomePage/sections/Benefits.tsx
Normal file
39
src/pages/HomePage/sections/Benefits.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 "benefits" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import { Clock, Leaf, Shield } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function BenefitsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="benefits" data-section="benefits">
|
||||
<SectionErrorBoundary name="benefits">
|
||||
<AboutFeaturesSplit
|
||||
tag="Why Work With Us"
|
||||
title="Unmatched Quality in Landscaping"
|
||||
description="We blend artistic design with structural excellence to ensure your investment stands the test of time and weather."
|
||||
items={[
|
||||
{
|
||||
icon: Leaf,
|
||||
title: "Eco-Friendly Practices",
|
||||
description: "We prioritize sustainable, low-impact landscaping solutions.",
|
||||
},
|
||||
{
|
||||
icon: Clock,
|
||||
title: "Punctual Delivery",
|
||||
description: "We respect your time and complete projects on schedule.",
|
||||
},
|
||||
{
|
||||
icon: Shield,
|
||||
title: "Lifetime Warranty",
|
||||
description: "On all hardscaping installations, ensuring long-term peace of mind.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/african-american-woman-outdoor-with-rosary-hand-concept-faith-spirituality-religion_627829-311.jpg"
|
||||
/>
|
||||
</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 transform your property into a beautiful landscape? Schedule your consultation today."
|
||||
primaryButton={{
|
||||
text: "Contact Us Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Us Directly",
|
||||
href: "tel:+14165550123",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
35
src/pages/HomePage/sections/Faq.tsx
Normal file
35
src/pages/HomePage/sections/Faq.tsx
Normal 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="Common Questions"
|
||||
title="Everything You Need to Know"
|
||||
description="Answers to common queries about our landscaping and design services."
|
||||
items={[
|
||||
{
|
||||
question: "What is the typical project duration?",
|
||||
answer: "Projects vary by complexity, but most residential projects take 2-4 weeks.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer seasonal maintenance?",
|
||||
answer: "Yes, we offer spring/fall cleanups and ongoing maintenance programs.",
|
||||
},
|
||||
{
|
||||
question: "Are you fully insured?",
|
||||
answer: "We are fully licensed and insured in the province of Ontario.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/path-way_74190-3770.jpg?_wi=1"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Gallery.tsx
Normal file
64
src/pages/HomePage/sections/Gallery.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "gallery" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function GallerySection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="gallery" data-section="gallery">
|
||||
<SectionErrorBoundary name="gallery">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Portfolio"
|
||||
title="Selected Works"
|
||||
description="A glimpse into our recent landscaping transformations across Toronto."
|
||||
items={[
|
||||
{
|
||||
title: "Modern Patio",
|
||||
description: "Sleek flagstone patio design.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/office-building-with-river_1127-3474.jpg",
|
||||
},
|
||||
{
|
||||
title: "Urban Garden",
|
||||
description: "Small footprint, big impact.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tree-branch-nature-flora-concept_53876-42987.jpg",
|
||||
},
|
||||
{
|
||||
title: "Classic Backyard",
|
||||
description: "Family-oriented green space.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/brown-black-wooden-bench-near-glass-window_417767-129.jpg",
|
||||
},
|
||||
{
|
||||
title: "Poolside Landscape",
|
||||
description: "Luxury finish and planting.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photo-wall-texture-pattern_58702-15141.jpg",
|
||||
},
|
||||
{
|
||||
title: "Front Entry",
|
||||
description: "Inviting curb appeal updates.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/street-texture-retro-tuscany-city_1203-5049.jpg",
|
||||
},
|
||||
{
|
||||
title: "Retaining Wall",
|
||||
description: "Structural aesthetic masonry.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/rustic-patio-furniture-house-deck-with-vegetation_23-2150698292.jpg",
|
||||
},
|
||||
{
|
||||
title: "Outdoor Kitchen",
|
||||
description: "Entertainment space construction.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/contrasting-outdoor-texture-design_23-2149756583.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
19
src/pages/HomePage/sections/Hero.tsx
Normal file
19
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,19 @@
|
||||
// Created by add_section_from_catalog (HeroOverlay).
|
||||
|
||||
import React from 'react';
|
||||
import HeroOverlay from '@/components/sections/hero/HeroOverlay';
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div data-webild-section="hero" id="hero">
|
||||
<HeroOverlay
|
||||
description="Professional gardening and landscaping services for your home. We create beautiful, natural outdoor spaces you'll love."
|
||||
secondaryButton={{"href":"#services","text":"Our Services"}}
|
||||
tag="AJT Garden Services LTD"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/view-backyard-garden-digital-art-style_23-2151488214.jpg"
|
||||
title="Expert Local Landscaping & Garden Care"
|
||||
primaryButton={{"text":"Get a Free Quote","href":"#contact"}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Reviews.tsx
Normal file
52
src/pages/HomePage/sections/Reviews.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
// 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 TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ReviewsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Testimonials"
|
||||
title="What Our Clients Say"
|
||||
description="Our work speaks for itself, but our clients speak louder."
|
||||
testimonials={[
|
||||
{
|
||||
name: "David Miller",
|
||||
role: "Homeowner",
|
||||
quote: "Incredible transformation! They exceeded all expectations.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-cute-clothes-reaching-plants-greenhouse_197531-12330.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Jenkins",
|
||||
role: "Business Owner",
|
||||
quote: "Professional, on-time, and high-quality craftsmanship.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-concentrated-gardeners-preparing-plants-pots-market-man-woman-blue-shirts-black-aprons-growing-home-plants-caring-flowers-commercial-gardening-summer-concept_74855-12994.jpg",
|
||||
},
|
||||
{
|
||||
name: "Robert Chen",
|
||||
role: "Architect",
|
||||
quote: "Meticulous attention to detail in every landscape design.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-servant-caring-garden_23-2149530843.jpg",
|
||||
},
|
||||
{
|
||||
name: "Emily Watson",
|
||||
role: "Homeowner",
|
||||
quote: "The team made our backyard our favorite living space.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/against-background-bright-flowering-plants-green-bushes-that-grow-garden-beautiful-blonde-girl-with-green-eyes-smiles-sweetly-basks-sun_197531-25944.jpg",
|
||||
},
|
||||
{
|
||||
name: "Thomas P.",
|
||||
role: "Developer",
|
||||
quote: "Reliable experts for both new builds and maintenance.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-photo-background-plants-flowers-young-curly-girl-is-cute-smiling-holding-flower-pot-her-hands-with-small-flower-sprout_197531-25938.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
49
src/pages/HomePage/sections/Services.tsx
Normal file
49
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,49 @@
|
||||
// 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 FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesArrowCards
|
||||
tag="Our Expertise"
|
||||
title="Transformative Landscaping Services"
|
||||
description="Comprehensive design and build solutions for every season."
|
||||
items={[
|
||||
{
|
||||
title: "Custom Hardscaping",
|
||||
tags: [
|
||||
"Patios",
|
||||
"Walkways",
|
||||
"Retaining Walls",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/outdoor-patio-with-chair-table_1339-4789.jpg",
|
||||
},
|
||||
{
|
||||
title: "Garden Design",
|
||||
tags: [
|
||||
"Planting",
|
||||
"Bed Layouts",
|
||||
"Mulching",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-hitting-wheel-with-hammer_23-2147671876.jpg",
|
||||
},
|
||||
{
|
||||
title: "Property Care",
|
||||
tags: [
|
||||
"Mowing",
|
||||
"Pruning",
|
||||
"Cleanup",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-shot-footpath-made-stone-tiles-surrounded-by-green-grass_181624-29097.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
49
src/pages/HomePage/sections/WhyUs.tsx
Normal file
49
src/pages/HomePage/sections/WhyUs.tsx
Normal file
@@ -0,0 +1,49 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "why-us" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function WhyUsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="why-us" data-section="why-us">
|
||||
<SectionErrorBoundary name="why-us">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="Numbers That Tell a Story"
|
||||
description="Dedication to craft resulting in consistently high satisfaction."
|
||||
metrics={[
|
||||
{
|
||||
value: "15+",
|
||||
title: "Years of Experience",
|
||||
features: [
|
||||
"Over 500 projects completed",
|
||||
"Expert horticultural staff",
|
||||
"Full design-build service",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "98%",
|
||||
title: "Client Satisfaction",
|
||||
features: [
|
||||
"Detailed quality control",
|
||||
"Responsive communication",
|
||||
"Regular site updates",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "24/7",
|
||||
title: "Dedicated Support",
|
||||
features: [
|
||||
"Emergency property care",
|
||||
"Season-round availability",
|
||||
"Direct project manager",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user