Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 66f2d47f3a | |||
| 6c6d9cc785 | |||
| 2b9b9bf9a5 | |||
| ac17d83fc2 | |||
| 042e2666bf | |||
| 2bc5c7d30f | |||
| a6c899933b |
74
src/app/contact/page.tsx
Normal file
74
src/app/contact/page.tsx
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||||
|
import ReactLenis from "lenis/react";
|
||||||
|
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||||
|
import ContactForm from '@/components/form/ContactForm';
|
||||||
|
import FooterMedia from '@/components/sections/footer/FooterMedia';
|
||||||
|
|
||||||
|
export default function ContactPage() {
|
||||||
|
return (
|
||||||
|
<ThemeProvider
|
||||||
|
defaultButtonVariant="bounce-effect"
|
||||||
|
defaultTextAnimation="entrance-slide"
|
||||||
|
borderRadius="soft"
|
||||||
|
contentWidth="smallMedium"
|
||||||
|
sizing="mediumSizeLargeTitles"
|
||||||
|
background="floatingGradient"
|
||||||
|
cardStyle="solid"
|
||||||
|
primaryButtonStyle="gradient"
|
||||||
|
secondaryButtonStyle="layered"
|
||||||
|
headingFontWeight="extrabold"
|
||||||
|
>
|
||||||
|
<ReactLenis root>
|
||||||
|
<div id="nav" data-section="nav">
|
||||||
|
<NavbarStyleCentered
|
||||||
|
navItems={[
|
||||||
|
{ name: "Home", id: "/" },
|
||||||
|
{ name: "Services", id: "/#services" },
|
||||||
|
{ name: "Reviews", id: "/#testimonials" },
|
||||||
|
{ name: "Contact", id: "/contact" },
|
||||||
|
]}
|
||||||
|
button={{ text: "Get a Free Estimate", href: "/contact" }}
|
||||||
|
brandName="Stonewood"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="pt-32 pb-20">
|
||||||
|
<ContactForm
|
||||||
|
tag="Get Started"
|
||||||
|
title="Request a Free Estimate"
|
||||||
|
description="Tell us about your project, and we will get back to you within 24 hours."
|
||||||
|
useInvertedBackground={false}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="footer" data-section="footer">
|
||||||
|
<FooterMedia
|
||||||
|
imageSrc="http://img.b2bpic.net/free-photo/rural-house-with-stone-pathway_1127-311.jpg"
|
||||||
|
logoText="Stonewood Landscaping"
|
||||||
|
columns={[
|
||||||
|
{
|
||||||
|
title: "Contact", items: [
|
||||||
|
{ label: "(613) 555-0123", href: "tel:+16135550123" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Areas", items: [
|
||||||
|
{ label: "Glebe", href: "#" },
|
||||||
|
{ label: "Barrhaven", href: "#" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Links", items: [
|
||||||
|
{ label: "Services", href: "/#services" },
|
||||||
|
{ label: "Reviews", href: "/#testimonials" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</ReactLenis>
|
||||||
|
</ThemeProvider>
|
||||||
|
);
|
||||||
|
}
|
||||||
206
src/app/page.tsx
206
src/app/page.tsx
@@ -11,6 +11,13 @@ import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
|
|||||||
import TestimonialCardOne from '@/components/sections/testimonial/TestimonialCardOne';
|
import TestimonialCardOne from '@/components/sections/testimonial/TestimonialCardOne';
|
||||||
|
|
||||||
export default function LandingPage() {
|
export default function LandingPage() {
|
||||||
|
const scrollToContact = () => {
|
||||||
|
const element = document.getElementById("contact");
|
||||||
|
if (element) {
|
||||||
|
element.scrollIntoView({ behavior: "smooth" });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="bounce-effect"
|
defaultButtonVariant="bounce-effect"
|
||||||
@@ -29,26 +36,16 @@ export default function LandingPage() {
|
|||||||
<NavbarStyleCentered
|
<NavbarStyleCentered
|
||||||
navItems={[
|
navItems={[
|
||||||
{
|
{
|
||||||
name: "Home",
|
name: "Home", id: "hero"},
|
||||||
id: "hero",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Services",
|
name: "Services", id: "services"},
|
||||||
id: "services",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Reviews",
|
name: "Reviews", id: "testimonials"},
|
||||||
id: "testimonials",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Contact",
|
name: "Contact", id: "contact"},
|
||||||
id: "contact",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
button={{
|
button={{
|
||||||
text: "Get a Free Estimate",
|
text: "Get a Free Estimate", href: "/contact"}}
|
||||||
href: "#contact",
|
|
||||||
}}
|
|
||||||
brandName="Stonewood"
|
brandName="Stonewood"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,64 +53,39 @@ export default function LandingPage() {
|
|||||||
<div id="hero" data-section="hero">
|
<div id="hero" data-section="hero">
|
||||||
<HeroCentered
|
<HeroCentered
|
||||||
background={{
|
background={{
|
||||||
variant: "gradient-bars",
|
variant: "gradient-bars"}}
|
||||||
}}
|
|
||||||
title="Your property, always at its finest"
|
title="Your property, always at its finest"
|
||||||
description="Stonewood handles every season — from lush summer landscapes to reliable winter snow clearing — so you never worry about your property again."
|
description="Experience year-round worry-free property management. From professional landscaping to reliable snow clearing, we handle the details so you don't have to."
|
||||||
avatars={[
|
avatars={[
|
||||||
{
|
{
|
||||||
src: "http://img.b2bpic.net/free-photo/young-woman-with-beautiful-blond-hair-gentle-smile-dressed-green-robe-with-belt-is-working-greenhouse_197531-12316.jpg",
|
src: "http://img.b2bpic.net/free-photo/young-woman-with-beautiful-blond-hair-gentle-smile-dressed-green-robe-with-belt-is-working-greenhouse_197531-12316.jpg", alt: "Client 1"},
|
||||||
alt: "Client 1",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
src: "http://img.b2bpic.net/free-photo/man-sitting-near-house-looking-camera_259150-59313.jpg",
|
src: "http://img.b2bpic.net/free-photo/man-sitting-near-house-looking-camera_259150-59313.jpg", alt: "Client 2"},
|
||||||
alt: "Client 2",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
src: "http://img.b2bpic.net/free-photo/young-handsome-cheerful-gardener-smiling-watering-taking-care-plants_176420-3834.jpg",
|
src: "http://img.b2bpic.net/free-photo/young-handsome-cheerful-gardener-smiling-watering-taking-care-plants_176420-3834.jpg", alt: "Client 3"},
|
||||||
alt: "Client 3",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
src: "http://img.b2bpic.net/free-photo/woman-smiling_1187-3196.jpg",
|
src: "http://img.b2bpic.net/free-photo/woman-smiling_1187-3196.jpg", alt: "Client 4"},
|
||||||
alt: "Client 4",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
src: "http://img.b2bpic.net/free-photo/paradise-resort-sea-island-coast_1203-5692.jpg",
|
src: "http://img.b2bpic.net/free-photo/paradise-resort-sea-island-coast_1203-5692.jpg", alt: "Client 5"},
|
||||||
alt: "Client 5",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
avatarText="7+ Years in Ottawa · Owner-operated · 4-season service"
|
avatarText="7+ Years in Ottawa · Owner-operated · 4-season service"
|
||||||
buttons={[
|
buttons={[
|
||||||
{
|
{
|
||||||
text: "Get a Free Estimate",
|
text: "Get a Free Estimate", href: "/contact"},
|
||||||
href: "#contact",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: "See our work ↓",
|
text: "See our work ↓", href: "#services"},
|
||||||
href: "#services",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
marqueeItems={[
|
marqueeItems={[
|
||||||
{
|
{
|
||||||
type: "text",
|
type: "text", text: "Ottawa Local"},
|
||||||
text: "Ottawa Local",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: "text",
|
type: "text", text: "Fully Insured"},
|
||||||
text: "Fully Insured",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: "text",
|
type: "text", text: "Emergency Response"},
|
||||||
text: "Emergency Response",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: "text",
|
type: "text", text: "Seasonal Care"},
|
||||||
text: "Seasonal Care",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: "text",
|
type: "text", text: "Expert Team"},
|
||||||
text: "Expert Team",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -123,12 +95,7 @@ export default function LandingPage() {
|
|||||||
textboxLayout="default"
|
textboxLayout="default"
|
||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
names={[
|
names={[
|
||||||
"Licensed & Fully Insured",
|
"Licensed & Fully Insured", "Same-Day Emergency Snow Response", "Seasonal Contract Packages Available", "Google Verified Reviews", "Professional Local Team"]}
|
||||||
"Same-Day Emergency Snow Response",
|
|
||||||
"Seasonal Contract Packages Available",
|
|
||||||
"Google Verified Reviews",
|
|
||||||
"Professional Local Team",
|
|
||||||
]}
|
|
||||||
title="Service Standards"
|
title="Service Standards"
|
||||||
description="Professional commitment to your property."
|
description="Professional commitment to your property."
|
||||||
/>
|
/>
|
||||||
@@ -141,35 +108,17 @@ export default function LandingPage() {
|
|||||||
useInvertedBackground={true}
|
useInvertedBackground={true}
|
||||||
features={[
|
features={[
|
||||||
{
|
{
|
||||||
id: "s1",
|
id: "s1", title: "Snow Removal", author: "Winter Service", description: "Reliable commercial-grade snow plowing and salting for driveways, walkways, and shared properties.", tags: [
|
||||||
title: "Snow Removal",
|
"Seasonal contracts available"],
|
||||||
author: "Winter Service",
|
imageSrc: "http://img.b2bpic.net/free-photo/long-road-surrounded-with-bushes-with-trees-covered-fog_181624-4510.jpg"},
|
||||||
description: "Reliable commercial-grade snow plowing and salting for driveways, walkways, and shared properties.",
|
|
||||||
tags: [
|
|
||||||
"Seasonal contracts available",
|
|
||||||
],
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/long-road-surrounded-with-bushes-with-trees-covered-fog_181624-4510.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "s2",
|
id: "s2", title: "Lawn Care", author: "Summer Service", description: "Weekly or bi-weekly mowing, edging, and fertilization programs tailored to your property type.", tags: [
|
||||||
title: "Lawn Care",
|
"Spring & fall cleanups"],
|
||||||
author: "Summer Service",
|
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-s-hand-holding-plant_23-2147907203.jpg"},
|
||||||
description: "Weekly or bi-weekly mowing, edging, and fertilization programs tailored to your property type.",
|
|
||||||
tags: [
|
|
||||||
"Spring & fall cleanups",
|
|
||||||
],
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-s-hand-holding-plant_23-2147907203.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "s3",
|
id: "s3", title: "Landscaping", author: "Design & Build", description: "Planting design, interlocking stone, garden beds, and full property transformations.", tags: [
|
||||||
title: "Landscaping",
|
"Custom design quotes"],
|
||||||
author: "Design & Build",
|
imageSrc: "http://img.b2bpic.net/free-photo/stair-pattern_1203-2595.jpg"},
|
||||||
description: "Planting design, interlocking stone, garden beds, and full property transformations.",
|
|
||||||
tags: [
|
|
||||||
"Custom design quotes",
|
|
||||||
],
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/stair-pattern_1203-2595.jpg",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
title="Our Services"
|
title="Our Services"
|
||||||
description="Comprehensive seasonal care for Ottawa homes."
|
description="Comprehensive seasonal care for Ottawa homes."
|
||||||
@@ -184,45 +133,20 @@ export default function LandingPage() {
|
|||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
testimonials={[
|
testimonials={[
|
||||||
{
|
{
|
||||||
id: "t1",
|
id: "t1", name: "Rejean R.", role: "Client", company: "Ottawa", rating: 5,
|
||||||
name: "Rejean R.",
|
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-eco-bag-with-fruit-country-side_1303-15249.jpg"},
|
||||||
role: "Client",
|
|
||||||
company: "Ottawa",
|
|
||||||
rating: 5,
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-eco-bag-with-fruit-country-side_1303-15249.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "t2",
|
id: "t2", name: "Oreo O.", role: "Client", company: "Ottawa", rating: 5,
|
||||||
name: "Oreo O.",
|
imageSrc: "http://img.b2bpic.net/free-photo/nature-environment-young-dark-skinned-bearded-gardener-spending-time-garden-near-country-house-man-cutting-leaves-enjoying-summer-hot-weather-trees-shadow_176420-19886.jpg"},
|
||||||
role: "Client",
|
|
||||||
company: "Ottawa",
|
|
||||||
rating: 5,
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/nature-environment-young-dark-skinned-bearded-gardener-spending-time-garden-near-country-house-man-cutting-leaves-enjoying-summer-hot-weather-trees-shadow_176420-19886.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "t3",
|
id: "t3", name: "The Stonewood Team", role: "Owner", company: "Stonewood", rating: 5,
|
||||||
name: "The Stonewood Team",
|
imageSrc: "http://img.b2bpic.net/free-photo/confident-woman-standing-with-arms-crossed_107420-95955.jpg"},
|
||||||
role: "Owner",
|
|
||||||
company: "Stonewood",
|
|
||||||
rating: 5,
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/confident-woman-standing-with-arms-crossed_107420-95955.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "t4",
|
id: "t4", name: "Sarah J.", role: "Client", company: "Ottawa", rating: 5,
|
||||||
name: "Sarah J.",
|
imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-cute-clothes-reaching-plants-greenhouse_197531-12331.jpg"},
|
||||||
role: "Client",
|
|
||||||
company: "Ottawa",
|
|
||||||
rating: 5,
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-cute-clothes-reaching-plants-greenhouse_197531-12331.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "t5",
|
id: "t5", name: "Mark D.", role: "Client", company: "Ottawa", rating: 5,
|
||||||
name: "Mark D.",
|
imageSrc: "http://img.b2bpic.net/free-photo/man-street-using-mobile-phone_657883-744.jpg"},
|
||||||
role: "Client",
|
|
||||||
company: "Ottawa",
|
|
||||||
rating: 5,
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/man-street-using-mobile-phone_657883-744.jpg",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
title="Trusted by Ottawa neighbourhoods"
|
title="Trusted by Ottawa neighbourhoods"
|
||||||
description="Google Verified · Serving Ottawa clients since 2018"
|
description="Google Verified · Serving Ottawa clients since 2018"
|
||||||
@@ -233,14 +157,11 @@ export default function LandingPage() {
|
|||||||
<ContactText
|
<ContactText
|
||||||
useInvertedBackground={true}
|
useInvertedBackground={true}
|
||||||
background={{
|
background={{
|
||||||
variant: "sparkles-gradient",
|
variant: "sparkles-gradient"}}
|
||||||
}}
|
|
||||||
text="Ready to work together? Our team responds same day. No obligation."
|
text="Ready to work together? Our team responds same day. No obligation."
|
||||||
buttons={[
|
buttons={[
|
||||||
{
|
{
|
||||||
text: "Request Free Estimate →",
|
text: "Request Free Estimate →", href: "/contact"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -251,38 +172,25 @@ export default function LandingPage() {
|
|||||||
logoText="Stonewood Landscaping"
|
logoText="Stonewood Landscaping"
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
title: "Contact",
|
title: "Contact", items: [
|
||||||
items: [
|
|
||||||
{
|
{
|
||||||
label: "(613) 555-0123",
|
label: "(613) 555-0123", href: "tel:+16135550123"},
|
||||||
href: "tel:+16135550123",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Areas",
|
title: "Areas", items: [
|
||||||
items: [
|
|
||||||
{
|
{
|
||||||
label: "Glebe",
|
label: "Glebe", href: "#"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Barrhaven",
|
label: "Barrhaven", href: "#"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Links",
|
title: "Links", items: [
|
||||||
items: [
|
|
||||||
{
|
{
|
||||||
label: "Services",
|
label: "Services", href: "#services"},
|
||||||
href: "#services",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Reviews",
|
label: "Reviews", href: "#testimonials"},
|
||||||
href: "#testimonials",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
@@ -291,4 +199,4 @@ export default function LandingPage() {
|
|||||||
</ReactLenis>
|
</ReactLenis>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user