6 Commits

Author SHA1 Message Date
1a9e724bd4 Merge version_3_1781468216261 into main
Merge version_3_1781468216261 into main
2026-06-14 20:19:12 +00:00
kudinDmitriyUp
3b63502355 Bob AI: Change business name to Contreras Landscaping Inc. in layout 2026-06-14 20:17:38 +00:00
e4648b8ea5 Switch to version 2: modified src/pages/HomePage.tsx 2026-06-14 20:16:20 +00:00
cb4a493fc1 Switch to version 1: modified src/pages/HomePage.tsx 2026-06-14 20:16:18 +00:00
b7b940f612 Merge version_2_1781468122315 into main
Merge version_2_1781468122315 into main
2026-06-14 20:15:53 +00:00
kudinDmitriyUp
60d989985b Bob AI: Change the text of the 'GreenScape' link/button in the hero section to 'Contrera 2026-06-14 20:15:50 +00:00
9 changed files with 199 additions and 115 deletions

View File

@@ -9,7 +9,7 @@ export default function Layout() {
<StyleProvider buttonVariant="default" siteBackground="none" heroBackground="none">
<SiteBackgroundSlot />
<NavbarCentered
logo="GreenScape"
logo="Contreras Landscaping Inc."
navItems={[
{ name: "Services", href: "#services" },
{ name: "About", href: "#about" },
@@ -23,7 +23,7 @@ export default function Layout() {
<Outlet />
</main>
<FooterSimple
brand="GreenScape"
brand="Contreras Landscaping Inc."
columns={[
{
title: "Services",
@@ -52,7 +52,7 @@ export default function Layout() {
],
},
]}
copyright="© 2026 GreenScape Landscaping"
copyright="© 2026 Contreras Landscaping Inc."
links={[{ label: "Privacy Policy" }, { label: "Terms of Service" }]}
/>
</StyleProvider>

View File

@@ -1,123 +1,34 @@
// 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.
import { StyleProvider } from "@/components/ui/StyleProvider";
import HeroOverlayTestimonial from "@/components/sections/hero/HeroOverlayTestimonial";
import AboutTestimonial from "@/components/sections/about/AboutTestimonial";
import FeaturesDetailedSteps from "@/components/sections/features/FeaturesDetailedSteps";
import TeamGlassCards from "@/components/sections/team/TeamGlassCards";
import TestimonialAvatarCard from "@/components/sections/testimonial/TestimonialAvatarCard";
import FaqTwoColumn from "@/components/sections/faq/FaqTwoColumn";
import ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import ServicesSection from './HomePage/sections/Services';
import WhyUsSection from './HomePage/sections/WhyUs';
import TestimonialsSection from './HomePage/sections/Testimonials';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage() {
export default function HomePage(): React.JSX.Element {
return (
<StyleProvider heroBackground="none" siteBackground="none" buttonVariant="stagger">
<div id="hero" data-section="hero">
<HeroOverlayTestimonial
tag="Professional Landscaping"
title="Transform Your Outdoor Space with Contreras"
description="Expert landscaping services serving Framingham and beyond. From lush gardens to beautiful stone masonry, we elevate your curb appeal."
primaryButton={{ text: "(508) 308-0192", href: "tel:5083080192" }}
secondaryButton={{ text: "Our Services", href: "#services" }}
imageSrc="http://img.b2bpic.net/free-photo/suburban-housing-garden_53876-30332.jpg"
testimonials={[
{
name: "Juan Alvarez", handle: "Homeowner", text: "We hired Contreras Landscaping to replace our old concrete walkway with a new paver walkway. The results were amazing, high quality work. They were very professional, they did everything just like we wanted, and they finished in 2 days.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/people-recording-their-house-tour_23-2151139106.jpg"
},
{
name: "Soraida Fernandez", handle: "Homeowner", text: "Contreras Landscaping did an amazing job with my spring cleaning and mulch. Very fast response and great price compared to others. We were very happy with the results and would recommend to others.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-smiling-blond-model-dressed-summer-hipster-clothes-trendy-girl-posing-street-background-funny-positive-woman_158538-5479.jpg"
}
]}
/>
</div>
<StyleProvider heroBackground="none" siteBackground="none" buttonVariant="stagger">
<HeroSection />
<div id="about" data-section="about">
<AboutTestimonial
tag="About Us"
quote="At Contreras Landscaping, we treat every lawn like our own. Proudly serving Framingham at 49 Hayes St with honest, high-quality landscape solutions."
author="Contreras Family"
role="Local Landscaping Experts"
imageSrc="http://img.b2bpic.net/free-photo/reforestation-done-by-voluntary-group_23-2149500814.jpg"
/>
</div>
<AboutSection />
<div id="services" data-section="services">
<FeaturesDetailedSteps
tag="Our Services"
title="Expert Landscape Solutions"
description="Comprehensive lawn care and hardscape services to keep your property beautiful throughout the seasons."
steps={[
{
tag: "Care", title: "Lawn Care & Maintenance", subtitle: "Healthy Lawns", description: "Professional mowing, edging, and seasonal upkeep to maintain a perfect, healthy lawn all year long.", imageSrc: "http://img.b2bpic.net/free-photo/orange-grasscutter-standing-ground-green-grass_176532-14408.jpg"
},
{
tag: "Cleanups", title: "Mulching & Spring Cleanups", subtitle: "Seasonal Prep", description: "Refreshing your landscape with premium mulch and deep cleanups for a vibrant, weed-free garden.", imageSrc: "http://img.b2bpic.net/free-photo/yellow-flowering-plant-growing-out-from-soil_23-2147844293.jpg"
},
{
tag: "Masonry", title: "Paver Walkways & Masonry", subtitle: "Custom Hardscapes", description: "Enhance your curb appeal with beautiful custom-built paver walkways and durable stone masonry.", imageSrc: "http://img.b2bpic.net/free-photo/cement-walkway-garden_1252-1023.jpg"
},
{
tag: "Design", title: "Landscape Design", subtitle: "Custom Vision", description: "We plan and execute thoughtful landscapes tailored to your yard's unique needs and your personal preference.", imageSrc: "http://img.b2bpic.net/free-photo/view-city-with-apartment-buildings-green-vegetation_23-2150439317.jpg"
}
]}
/>
</div>
<ServicesSection />
<div id="why-us" data-section="why-us">
<TeamGlassCards
tag="Quality Guaranteed"
title="Why Choose Contreras Landscaping"
description="We prioritize reliability, fair pricing, and customer satisfaction above all else."
members={[
{ name: "Professionalism", role: "Dedicated to clear communication and timely completion of every project.", imageSrc: "http://img.b2bpic.net/free-photo/building-construction-workers-site_23-2149124254.jpg" },
{ name: "Fair Pricing", role: "We provide great value for top-tier landscape maintenance and installation.", imageSrc: "http://img.b2bpic.net/free-photo/quality-standard-value-worth-level-class-grade-concept_53876-120630.jpg" },
{ name: "Local Expertise", role: "Based in Framingham, we understand the local climate and soil conditions.", imageSrc: "http://img.b2bpic.net/free-photo/male-gardener-cutting-harvested-flower-garden_23-2148165213.jpg" }
]}
/>
</div>
<WhyUsSection />
<div id="testimonials" data-section="testimonials">
<TestimonialAvatarCard
tag="Happy Clients"
title="Hear what our neighbors in Framingham are saying about Contreras Landscaping."
primaryButton={{ text: "Get Quote", href: "#contact" }}
avatars={[
{ name: "Juan Alvarez", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-smiling-happy-face-portrait-close-up_53876-139608.jpg" },
{ name: "Soraida Fernandez", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-cheerful-beautiful-african-girl-smiling-young-woman-happily-facing-her-future_176420-11233.jpg" },
{ name: "Jane Fannon", imageSrc: "http://img.b2bpic.net/free-photo/joyful-woman-black-jacket-liking-lip-posing-isolated-background-charming-lady-dark-suit-smiling-white-backdrop_197531-18516.jpg" }
]}
/>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<FaqTwoColumn
tag="FAQ"
title="Frequently Asked Questions"
description="Answers to common questions about our lawn and masonry services."
items={[
{ question: "Do you offer free estimates?", answer: "Yes, we are happy to provide free estimates for any of our landscaping, masonry, or maintenance services." },
{ question: "What areas do you serve?", answer: "We are based in Framingham, MA and provide services to homeowners in the surrounding communities." },
{ question: "How can I schedule a consultation?", answer: "Simply call us at (508) 308-0192 or fill out the form below to get started." },
{ question: "Do you handle residential masonry?", answer: "Absolutely. We specialize in custom paver walkways and stone masonry projects." }
]}
/>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<ContactSplitForm
tag="Contact Us"
title="Get Your Free Estimate"
description="Contact us at 49 Hayes St, Framingham or send a message below for a quick response."
inputs={[
{ name: "name", type: "text", placeholder: "Full Name", required: true },
{ name: "email", type: "email", placeholder: "Email", required: true },
{ name: "phone", type: "tel", placeholder: "Phone", required: true }
]}
textarea={{ name: "message", placeholder: "How can we help with your landscape?", rows: 4, required: true }}
buttonText="Send Message"
imageSrc="http://img.b2bpic.net/free-photo/beautiful-shot-stone-building-with-lovely-yard-blue-sky-punta-de-lobos-chile_181624-13685.jpg"
/>
</div>
<ContactSection />
</StyleProvider>
);
}
}

View File

@@ -0,0 +1,19 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about" section.
import React from 'react';
import AboutTestimonial from "@/components/sections/about/AboutTestimonial";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<AboutTestimonial
tag="About Us"
quote="At Contreras Landscaping, we treat every lawn like our own. Proudly serving Framingham at 49 Hayes St with honest, high-quality landscape solutions."
author="Contreras Family"
role="Local Landscaping Experts"
imageSrc="http://img.b2bpic.net/free-photo/reforestation-done-by-voluntary-group_23-2149500814.jpg"
/>
</div>
);
}

View File

@@ -0,0 +1,25 @@
// 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 ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
export default function ContactSection(): React.JSX.Element {
return (
<div id="contact" data-section="contact">
<ContactSplitForm
tag="Contact Us"
title="Get Your Free Estimate"
description="Contact us at 49 Hayes St, Framingham or send a message below for a quick response."
inputs={[
{ name: "name", type: "text", placeholder: "Full Name", required: true },
{ name: "email", type: "email", placeholder: "Email", required: true },
{ name: "phone", type: "tel", placeholder: "Phone", required: true }
]}
textarea={{ name: "message", placeholder: "How can we help with your landscape?", rows: 4, required: true }}
buttonText="Send Message"
imageSrc="http://img.b2bpic.net/free-photo/beautiful-shot-stone-building-with-lovely-yard-blue-sky-punta-de-lobos-chile_181624-13685.jpg"
/>
</div>
);
}

View File

@@ -0,0 +1,23 @@
// 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 FaqTwoColumn from "@/components/sections/faq/FaqTwoColumn";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<FaqTwoColumn
tag="FAQ"
title="Frequently Asked Questions"
description="Answers to common questions about our lawn and masonry services."
items={[
{ question: "Do you offer free estimates?", answer: "Yes, we are happy to provide free estimates for any of our landscaping, masonry, or maintenance services." },
{ question: "What areas do you serve?", answer: "We are based in Framingham, MA and provide services to homeowners in the surrounding communities." },
{ question: "How can I schedule a consultation?", answer: "Simply call us at (508) 308-0192 or fill out the form below to get started." },
{ question: "Do you handle residential masonry?", answer: "Absolutely. We specialize in custom paver walkways and stone masonry projects." }
]}
/>
</div>
);
}

View File

@@ -0,0 +1,31 @@
// 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 HeroOverlayTestimonial from "@/components/sections/hero/HeroOverlayTestimonial";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<HeroOverlayTestimonial
logo={{ text: "Contreras Landscaping Inc.", href: "/" }}
tag="Professional Landscaping"
title="Transform Your Outdoor Space with Contreras"
description="Expert landscaping services serving Framingham and beyond. From lush gardens to beautiful stone masonry, we elevate your curb appeal."
primaryButton={{ text: "(508) 308-0192", href: "tel:5083080192" }}
secondaryButton={{ text: "Our Services", href: "#services" }}
imageSrc="http://img.b2bpic.net/free-photo/suburban-housing-garden_53876-30332.jpg"
testimonials={[
{
name: "Juan Alvarez", handle: "Homeowner", text: "We hired Contreras Landscaping to replace our old concrete walkway with a new paver walkway. The results were amazing, high quality work. They were very professional, they did everything just like we wanted, and they finished in 2 days.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/people-recording-their-house-tour_23-2151139106.jpg"
},
{
name: "Soraida Fernandez", handle: "Homeowner", text: "Contreras Landscaping did an amazing job with my spring cleaning and mulch. Very fast response and great price compared to others. We were very happy with the results and would recommend to others.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-smiling-blond-model-dressed-summer-hipster-clothes-trendy-girl-posing-street-background-funny-positive-woman_158538-5479.jpg"
}
]}
/>
</div>
);
}

View File

@@ -0,0 +1,31 @@
// 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 FeaturesDetailedSteps from "@/components/sections/features/FeaturesDetailedSteps";
export default function ServicesSection(): React.JSX.Element {
return (
<div id="services" data-section="services">
<FeaturesDetailedSteps
tag="Our Services"
title="Expert Landscape Solutions"
description="Comprehensive lawn care and hardscape services to keep your property beautiful throughout the seasons."
steps={[
{
tag: "Care", title: "Lawn Care & Maintenance", subtitle: "Healthy Lawns", description: "Professional mowing, edging, and seasonal upkeep to maintain a perfect, healthy lawn all year long.", imageSrc: "http://img.b2bpic.net/free-photo/orange-grasscutter-standing-ground-green-grass_176532-14408.jpg"
},
{
tag: "Cleanups", title: "Mulching & Spring Cleanups", subtitle: "Seasonal Prep", description: "Refreshing your landscape with premium mulch and deep cleanups for a vibrant, weed-free garden.", imageSrc: "http://img.b2bpic.net/free-photo/yellow-flowering-plant-growing-out-from-soil_23-2147844293.jpg"
},
{
tag: "Masonry", title: "Paver Walkways & Masonry", subtitle: "Custom Hardscapes", description: "Enhance your curb appeal with beautiful custom-built paver walkways and durable stone masonry.", imageSrc: "http://img.b2bpic.net/free-photo/cement-walkway-garden_1252-1023.jpg"
},
{
tag: "Design", title: "Landscape Design", subtitle: "Custom Vision", description: "We plan and execute thoughtful landscapes tailored to your yard's unique needs and your personal preference.", imageSrc: "http://img.b2bpic.net/free-photo/view-city-with-apartment-buildings-green-vegetation_23-2150439317.jpg"
}
]}
/>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "testimonials" section.
import React from 'react';
import TestimonialAvatarCard from "@/components/sections/testimonial/TestimonialAvatarCard";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<TestimonialAvatarCard
tag="Happy Clients"
title="Hear what our neighbors in Framingham are saying about Contreras Landscaping."
primaryButton={{ text: "Get Quote", href: "#contact" }}
avatars={[
{ name: "Juan Alvarez", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-smiling-happy-face-portrait-close-up_53876-139608.jpg" },
{ name: "Soraida Fernandez", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-cheerful-beautiful-african-girl-smiling-young-woman-happily-facing-her-future_176420-11233.jpg" },
{ name: "Jane Fannon", imageSrc: "http://img.b2bpic.net/free-photo/joyful-woman-black-jacket-liking-lip-posing-isolated-background-charming-lady-dark-suit-smiling-white-backdrop_197531-18516.jpg" }
]}
/>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "why-us" section.
import React from 'react';
import TeamGlassCards from "@/components/sections/team/TeamGlassCards";
export default function WhyUsSection(): React.JSX.Element {
return (
<div id="why-us" data-section="why-us">
<TeamGlassCards
tag="Quality Guaranteed"
title="Why Choose Contreras Landscaping"
description="We prioritize reliability, fair pricing, and customer satisfaction above all else."
members={[
{ name: "Professionalism", role: "Dedicated to clear communication and timely completion of every project.", imageSrc: "http://img.b2bpic.net/free-photo/building-construction-workers-site_23-2149124254.jpg" },
{ name: "Fair Pricing", role: "We provide great value for top-tier landscape maintenance and installation.", imageSrc: "http://img.b2bpic.net/free-photo/quality-standard-value-worth-level-class-grade-concept_53876-120630.jpg" },
{ name: "Local Expertise", role: "Based in Framingham, we understand the local climate and soil conditions.", imageSrc: "http://img.b2bpic.net/free-photo/male-gardener-cutting-harvested-flower-garden_23-2148165213.jpg" }
]}
/>
</div>
);
}