12 Commits

Author SHA1 Message Date
17ff52c7f5 Merge version_2 into main
Merge version_2 into main
2026-04-09 01:48:19 +00:00
1d9b7d6327 Update src/app/services/page.tsx 2026-04-09 01:48:16 +00:00
c493a7b3c5 Update src/app/contact/page.tsx 2026-04-09 01:48:15 +00:00
3afa8e645e Update src/app/appointments/page.tsx 2026-04-09 01:48:15 +00:00
f3e17e5517 Update src/app/about/page.tsx 2026-04-09 01:48:14 +00:00
a33204298e Merge version_2 into main
Merge version_2 into main
2026-04-09 01:47:45 +00:00
652820a6be Update src/app/styles/variables.css 2026-04-09 01:47:42 +00:00
6f9dc937b8 Add src/app/services/page.tsx 2026-04-09 01:47:41 +00:00
54b5dd8774 Update src/app/page.tsx 2026-04-09 01:47:41 +00:00
27f369542e Add src/app/contact/page.tsx 2026-04-09 01:47:41 +00:00
ae74f0015d Add src/app/appointments/page.tsx 2026-04-09 01:47:40 +00:00
7cd188a7b4 Add src/app/about/page.tsx 2026-04-09 01:47:40 +00:00
6 changed files with 209 additions and 150 deletions

37
src/app/about/page.tsx Normal file
View File

@@ -0,0 +1,37 @@
"use client";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
import TextSplitAbout from "@/components/sections/about/TextSplitAbout";
import FooterSimple from "@/components/sections/footer/FooterSimple";
export default function AboutUsPage() {
return (
<ThemeProvider defaultButtonVariant="hover-magnetic" defaultTextAnimation="entrance-slide" borderRadius="rounded" contentWidth="medium" sizing="medium" background="circleGradient" cardStyle="glass-elevated" primaryButtonStyle="gradient" secondaryButtonStyle="glass" headingFontWeight="normal">
<ReactLenis root>
<NavbarStyleFullscreen
brandName="GreenScape"
navItems={[
{ name: "Services", id: "/services" },
{ name: "About", id: "/about" },
{ name: "Appointments", id: "/appointments" },
{ name: "Contact", id: "/contact" },
]}
/>
<div className="pt-24">
<TextSplitAbout
title="Our Philosophy"
description={["We believe that every garden should be an extension of the home.", "Driven by sustainability and local ecosystem health."]}
useInvertedBackground={false}
/>
</div>
<FooterSimple
columns={[]}
bottomLeftText="© 2026 GreenScape Landscaping"
bottomRightText="All rights reserved"
/>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,43 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
import ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
import FooterSimple from "@/components/sections/footer/FooterSimple";
import ReactLenis from "lenis/react";
export default function AppointmentsPage() {
return (
<ThemeProvider defaultButtonVariant="hover-magnetic" defaultTextAnimation="entrance-slide" borderRadius="rounded" contentWidth="medium" sizing="medium" background="circleGradient" cardStyle="glass-elevated" primaryButtonStyle="gradient" secondaryButtonStyle="glass" headingFontWeight="normal">
<ReactLenis root>
<NavbarStyleFullscreen
brandName="GreenScape"
navItems={[
{ name: "Services", id: "/services" },
{ name: "About", id: "/about" },
{ name: "Appointments", id: "/appointments" },
{ name: "Contact", id: "/contact" },
]}
/>
<div className="pt-32 pb-16">
<ContactSplitForm
title="Book an Appointment"
description="Schedule your consultation today."
inputs={[
{ name: "name", type: "text", placeholder: "Full Name", required: true },
{ name: "date", type: "date", placeholder: "Preferred Date", required: true },
]}
textarea={{ name: "details", placeholder: "What services do you need?", rows: 4 }}
buttonText="Confirm Booking"
useInvertedBackground={false}
/>
</div>
<FooterSimple
columns={[]}
bottomLeftText="© 2026 GreenScape Landscaping"
bottomRightText="All rights reserved"
/>
</ReactLenis>
</ThemeProvider>
);
}

43
src/app/contact/page.tsx Normal file
View File

@@ -0,0 +1,43 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
import FooterSimple from "@/components/sections/footer/FooterSimple";
import ReactLenis from "lenis/react";
export default function ContactPage() {
return (
<ThemeProvider defaultButtonVariant="hover-magnetic" defaultTextAnimation="entrance-slide" borderRadius="rounded" contentWidth="medium" sizing="medium" background="circleGradient" cardStyle="glass-elevated" primaryButtonStyle="gradient" secondaryButtonStyle="glass" headingFontWeight="normal">
<ReactLenis root>
<NavbarStyleFullscreen
brandName="GreenScape"
navItems={[
{ name: "Services", id: "/services" },
{ name: "About", id: "/about" },
{ name: "Appointments", id: "/appointments" },
{ name: "Contact", id: "/contact" },
]}
/>
<div className="pt-32 pb-16 px-8 max-w-4xl mx-auto">
<h1 className="text-4xl font-bold mb-8">Contact Us</h1>
<div className="grid md:grid-cols-2 gap-8">
<div className="space-y-4">
<h2 className="text-xl font-semibold">Get in Touch</h2>
<p>Email: hello@greenscape.com</p>
<p>Phone: (555) 123-4567</p>
<p>Hours: Mon-Fri 9am - 5pm</p>
</div>
<div className="bg-gray-100 p-8 h-64 rounded-lg flex items-center justify-center">
Map Placeholder
</div>
</div>
</div>
<FooterSimple
columns={[]}
bottomLeftText="© 2026 GreenScape Landscaping"
bottomRightText="All rights reserved"
/>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -8,7 +8,7 @@ import TestimonialAboutCard from "@/components/sections/about/TestimonialAboutCa
import FeatureCardNineteen from "@/components/sections/feature/FeatureCardNineteen";
import TeamCardSix from "@/components/sections/team/TeamCardSix";
import TeamCardOne from "@/components/sections/team/TeamCardOne";
import TestimonialCardTwelve from "@/components/sections/testimonial/TestimonialCardTwelve";
import TestimonialCardTen from "@/components/sections/testimonial/TestimonialCardTen";
import FaqDouble from "@/components/sections/faq/FaqDouble";
import ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
import FooterSimple from "@/components/sections/footer/FooterSimple";
@@ -60,21 +60,11 @@ export default function LandscapingPage() {
textPosition="top"
testimonials={[
{
name: "Sarah M.",
handle: "Homeowner",
testimonial: "GreenScape completely transformed our backyard. The team was professional, creative, and delivered beyond our expectations.",
rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-2.jpg",
imageAlt: "Sarah M.",
},
name: "Sarah M.", handle: "Homeowner", testimonial: "GreenScape completely transformed our backyard. The team was professional, creative, and delivered beyond our expectations.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-2.jpg", imageAlt: "Sarah M."},
{
name: "David K.",
handle: "Property Manager",
testimonial: "We've used GreenScape for all our commercial properties. Their maintenance plans keep everything looking pristine year-round.",
rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-1.jpg",
imageAlt: "David K.",
},
name: "David K.", handle: "Property Manager", testimonial: "We've used GreenScape for all our commercial properties. Their maintenance plans keep everything looking pristine year-round.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-1.jpg", imageAlt: "David K."},
]}
/>
</div>
@@ -106,37 +96,13 @@ export default function LandscapingPage() {
imageContainerClassName="!rotate-0 !aspect-square"
features={[
{
tag: "Design",
title: "Landscape Design",
subtitle: "Custom Plans",
description: "We create tailored landscape designs that complement your property's architecture and your personal style.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-2.jpg",
imageAlt: "Landscape design",
},
tag: "Design", title: "Landscape Design", subtitle: "Custom Plans", description: "We create tailored landscape designs that complement your property's architecture and your personal style.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-2.jpg", imageAlt: "Landscape design"},
{
tag: "Installation",
title: "Hardscape & Softscape",
subtitle: "Full Installation",
description: "From patios and walkways to gardens and trees, we handle the complete installation process.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-3.jpg",
imageAlt: "Hardscape installation",
},
tag: "Installation", title: "Hardscape & Softscape", subtitle: "Full Installation", description: "From patios and walkways to gardens and trees, we handle the complete installation process.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-3.jpg", imageAlt: "Hardscape installation"},
{
tag: "Maintenance",
title: "Lawn & Garden Care",
subtitle: "Ongoing Service",
description: "Keep your property looking pristine year-round with our professional maintenance plans.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-4.jpg",
imageAlt: "Lawn maintenance",
},
tag: "Maintenance", title: "Lawn & Garden Care", subtitle: "Ongoing Service", description: "Keep your property looking pristine year-round with our professional maintenance plans.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-4.jpg", imageAlt: "Lawn maintenance"},
{
tag: "Irrigation",
title: "Smart Irrigation",
subtitle: "Water Management",
description: "Efficient irrigation systems that keep your landscape healthy while conserving water.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-5.jpg",
imageAlt: "Irrigation system",
},
tag: "Irrigation", title: "Smart Irrigation", subtitle: "Water Management", description: "Efficient irrigation systems that keep your landscape healthy while conserving water.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-5.jpg", imageAlt: "Irrigation system"},
]}
/>
</div>
@@ -151,26 +117,11 @@ export default function LandscapingPage() {
animationType="slide-up"
members={[
{
id: "1",
name: "Expert Craftsmanship",
role: "Decades of combined experience in landscape design and installation.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-6.jpg",
imageAlt: "Expert craftsmanship",
},
id: "1", name: "Expert Craftsmanship", role: "Decades of combined experience in landscape design and installation.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-6.jpg", imageAlt: "Expert craftsmanship"},
{
id: "2",
name: "Eco-Friendly Approach",
role: "Sustainable practices and native plant selections that thrive naturally.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-7.jpg",
imageAlt: "Eco-friendly landscaping",
},
id: "2", name: "Eco-Friendly Approach", role: "Sustainable practices and native plant selections that thrive naturally.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-7.jpg", imageAlt: "Eco-friendly landscaping"},
{
id: "3",
name: "Full-Service Care",
role: "From initial design to ongoing maintenance, we handle everything.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-8.jpg",
imageAlt: "Full-service care",
},
id: "3", name: "Full-Service Care", role: "From initial design to ongoing maintenance, we handle everything.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-8.jpg", imageAlt: "Full-service care"},
]}
/>
</div>
@@ -186,64 +137,26 @@ export default function LandscapingPage() {
animationType="slide-up"
members={[
{
id: "1",
name: "James Carter",
role: "Lead Designer",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-11.jpg",
imageAlt: "James Carter",
},
id: "1", name: "James Carter", role: "Lead Designer", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-11.jpg", imageAlt: "James Carter"},
{
id: "2",
name: "Maria Silva",
role: "Horticulturist",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-10.jpg",
imageAlt: "Maria Silva",
},
id: "2", name: "Maria Silva", role: "Horticulturist", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-10.jpg", imageAlt: "Maria Silva"},
{
id: "3",
name: "Ryan Mitchell",
role: "Project Manager",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-9.jpg",
imageAlt: "Ryan Mitchell",
},
id: "3", name: "Ryan Mitchell", role: "Project Manager", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-9.jpg", imageAlt: "Ryan Mitchell"},
]}
/>
</div>
<div id="testimonials" data-section="testimonials">
<TestimonialCardTwelve
cardTag="Trusted by Homeowners"
cardTagIcon={Leaf}
cardTitle="Over 500 happy clients trust GreenScape to transform and maintain their outdoor spaces."
buttons={[{ text: "Contact Now", href: "#contact" }]}
buttonAnimation="slide-up"
cardAnimation="slide-up"
<TestimonialCardTen
title="What Our Clients Say"
description="Read stories from homeowners who chose GreenScape for their outdoor transformation."
textboxLayout="default"
useInvertedBackground={false}
testimonials={[
{
id: "1",
name: "Sarah M.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-10.jpg",
imageAlt: "Sarah M.",
},
id: "1", title: "Exceptional Service", quote: "GreenScape turned our messy yard into a paradise. The team was punctual and skilled.", name: "Sarah M.", role: "Homeowner", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-10.jpg"},
{
id: "2",
name: "David K.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-11.jpg",
imageAlt: "David K.",
},
{
id: "3",
name: "Emily R.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-4.jpg",
imageAlt: "Emily R.",
},
{
id: "4",
name: "Ryan M.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-9.jpg",
imageAlt: "Ryan M.",
},
id: "2", title: "Professional & Creative", quote: "The design concept they provided was exactly what we needed. Highly recommended!", name: "David K.", role: "Property Manager", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-11.jpg"},
]}
/>
</div>
@@ -258,35 +171,17 @@ export default function LandscapingPage() {
faqsAnimation="slide-up"
faqs={[
{
id: "1",
title: "How long does a typical landscaping project take?",
content: "Most residential projects take 1-3 weeks depending on scope. We'll provide a detailed timeline during your consultation so you know exactly what to expect.",
},
id: "1", title: "How long does a typical landscaping project take?", content: "Most residential projects take 1-3 weeks depending on scope. We'll provide a detailed timeline during your consultation so you know exactly what to expect."},
{
id: "2",
title: "Do you offer free consultations?",
content: "Yes! We offer complimentary on-site consultations where we assess your property, discuss your vision, and provide a detailed estimate — no obligation.",
},
id: "2", title: "Do you offer free consultations?", content: "Yes! We offer complimentary on-site consultations where we assess your property, discuss your vision, and provide a detailed estimate — no obligation."},
{
id: "3",
title: "What areas do you serve?",
content: "We serve the greater metropolitan area and surrounding suburbs within a 50-mile radius. Contact us to confirm service availability in your location.",
},
id: "3", title: "What areas do you serve?", content: "We serve the greater metropolitan area and surrounding suburbs within a 50-mile radius. Contact us to confirm service availability in your location."},
{
id: "4",
title: "Do you provide ongoing maintenance?",
content: "Absolutely. We offer weekly, bi-weekly, and monthly maintenance plans that include mowing, trimming, fertilization, and seasonal cleanups.",
},
id: "4", title: "Do you provide ongoing maintenance?", content: "Absolutely. We offer weekly, bi-weekly, and monthly maintenance plans that include mowing, trimming, fertilization, and seasonal cleanups."},
{
id: "5",
title: "Are your practices eco-friendly?",
content: "Yes, sustainability is core to our approach. We use native plants, organic fertilizers, smart irrigation, and environmentally responsible methods whenever possible.",
},
id: "5", title: "Are your practices eco-friendly?", content: "Yes, sustainability is core to our approach. We use native plants, organic fertilizers, smart irrigation, and environmentally responsible methods whenever possible."},
{
id: "6",
title: "Do you handle permits and HOA approvals?",
content: "We handle all necessary permits and can work directly with your HOA to ensure your project meets community guidelines and gets approved smoothly.",
},
id: "6", title: "Do you handle permits and HOA approvals?", content: "We handle all necessary permits and can work directly with your HOA to ensure your project meets community guidelines and gets approved smoothly."},
]}
/>
</div>
@@ -311,7 +206,6 @@ export default function LandscapingPage() {
mediaAnimation="none"
buttonText="Send Message"
contentClassName="!grid-cols-1 max-w-[600px] mx-auto"
mediaWrapperClassName="hidden"
inputs={[
{ name: "name", type: "text", placeholder: "Full Name", required: true },
@@ -319,9 +213,7 @@ export default function LandscapingPage() {
{ name: "phone", type: "tel", placeholder: "Phone Number" },
]}
multiSelect={{
name: "service",
label: "Select a Service",
options: ["Landscape Design", "Hardscape & Softscape", "Lawn & Garden Care", "Smart Irrigation"],
name: "service", label: "Select a Service", options: ["Landscape Design", "Hardscape & Softscape", "Lawn & Garden Care", "Smart Irrigation"],
}}
textarea={{ name: "message", placeholder: "Tell us about your project...", rows: 4, required: true }}
/>
@@ -331,8 +223,7 @@ export default function LandscapingPage() {
<FooterSimple
columns={[
{
title: "Services",
items: [
title: "Services", items: [
{ label: "Landscape Design", href: "#services" },
{ label: "Hardscape & Softscape", href: "#services" },
{ label: "Lawn & Garden Care", href: "#services" },
@@ -340,8 +231,7 @@ export default function LandscapingPage() {
],
},
{
title: "Company",
items: [
title: "Company", items: [
{ label: "About", href: "#about" },
{ label: "Team", href: "#team" },
{ label: "Testimonials", href: "#testimonials" },
@@ -349,8 +239,7 @@ export default function LandscapingPage() {
],
},
{
title: "Contact",
items: [
title: "Contact", items: [
{ label: "(555) 123-4567", href: "tel:5551234567" },
{ label: "hello@greenscape.com", href: "mailto:hello@greenscape.com" },
{ label: "Los Angeles, CA" },
@@ -364,4 +253,4 @@ export default function LandscapingPage() {
</ReactLenis>
</ThemeProvider>
);
}
}

47
src/app/services/page.tsx Normal file
View File

@@ -0,0 +1,47 @@
"use client";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
import FeatureCardNineteen from "@/components/sections/feature/FeatureCardNineteen";
import FooterSimple from "@/components/sections/footer/FooterSimple";
import { Leaf } from "lucide-react";
export default function ServicesPage() {
return (
<ThemeProvider defaultButtonVariant="hover-magnetic" defaultTextAnimation="entrance-slide" borderRadius="rounded" contentWidth="medium" sizing="medium" background="circleGradient" cardStyle="glass-elevated" primaryButtonStyle="gradient" secondaryButtonStyle="glass" headingFontWeight="normal">
<ReactLenis root>
<NavbarStyleFullscreen
brandName="GreenScape"
navItems={[
{ name: "Services", id: "/services" },
{ name: "About", id: "/about" },
{ name: "Appointments", id: "/appointments" },
{ name: "Contact", id: "/contact" },
]}
/>
<div className="pt-24">
<FeatureCardNineteen
tag="Our Services"
tagIcon={Leaf}
title="Professional Landscaping Services"
description="We provide a comprehensive range of services to transform and maintain your outdoor spaces."
textboxLayout="default"
useInvertedBackground={false}
features={[
{
tag: "Design", title: "Landscape Design", subtitle: "Custom Plans", description: "Tailored designs reflecting your style.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-2.jpg"},
{
tag: "Installation", title: "Hardscape & Softscape", subtitle: "Full Installation", description: "Patios, walkways, and garden installations.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/landscaping/img-3.jpg"}
]}
/>
</div>
<FooterSimple
columns={[]}
bottomLeftText="© 2026 GreenScape Landscaping"
bottomRightText="All rights reserved"
/>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -10,15 +10,15 @@
--accent: #ffffff;
--background-accent: #ffffff; */
--background: #f7f9f4;
--card: #ffffff;
--foreground: #1a2e1a;
--primary-cta: #2d5a27;
--background: #ffffff;
--card: #f9f9f9;
--foreground: #000612e6;
--primary-cta: #15479c;
--primary-cta-text: #ffffff;
--secondary-cta: #ffffff;
--secondary-cta: #f9f9f9;
--secondary-cta-text: #2d5a27;
--accent: #4a8c3f;
--background-accent: #6fb85e;
--accent: #e2e2e2;
--background-accent: #c4c4c4;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);