Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 04bfb34dcb | |||
| b156160aba | |||
| b45758e366 | |||
| e95ad54812 | |||
| 44bb96bb9c | |||
| 8beaa92a88 |
@@ -7,6 +7,8 @@ import { ServiceWrapper } from "@/components/ServiceWrapper";
|
|||||||
import Tag from "@/tag/Tag";
|
import Tag from "@/tag/Tag";
|
||||||
import { getVisualEditScript } from "@/utils/visual-edit-script";
|
import { getVisualEditScript } from "@/utils/visual-edit-script";
|
||||||
import { Montserrat } from "next/font/google";
|
import { Montserrat } from "next/font/google";
|
||||||
|
import { Playfair_Display, Montserrat } from "next/font/google";
|
||||||
|
import { Libre_Baskerville } from "next/font/google";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -41,13 +43,14 @@ export const metadata: Metadata = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const montserrat = Montserrat({
|
|
||||||
variable: "--font-montserrat",
|
|
||||||
subsets: ["latin"],
|
const libreBaskerville = Libre_Baskerville({
|
||||||
|
variable: "--font-libre-baskerville", subsets: ["latin"],
|
||||||
|
weight: ["400", "700"],
|
||||||
});
|
});
|
||||||
const inter = Inter({
|
const inter = Inter({
|
||||||
variable: "--font-inter",
|
variable: "--font-inter", subsets: ["latin"],
|
||||||
subsets: ["latin"],
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
@@ -58,7 +61,7 @@ export default function RootLayout({
|
|||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="en" suppressHydrationWarning>
|
||||||
<ServiceWrapper>
|
<ServiceWrapper>
|
||||||
<body className={`${montserrat.variable} ${inter.variable} antialiased`}>
|
<body className={`${libreBaskerville.variable} ${inter.variable} antialiased`}>
|
||||||
<Tag />
|
<Tag />
|
||||||
{children}
|
{children}
|
||||||
<script
|
<script
|
||||||
|
|||||||
231
src/app/page.tsx
231
src/app/page.tsx
@@ -31,54 +31,35 @@ export default function LandingPage() {
|
|||||||
<NavbarLayoutFloatingOverlay
|
<NavbarLayoutFloatingOverlay
|
||||||
navItems={[
|
navItems={[
|
||||||
{
|
{
|
||||||
name: "Home",
|
name: "Home", id: "hero"},
|
||||||
id: "hero",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "About",
|
name: "About", id: "about"},
|
||||||
id: "about",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Services",
|
name: "Services", id: "services"},
|
||||||
id: "services",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Testimonials",
|
name: "Testimonials", id: "testimonials"},
|
||||||
id: "testimonials",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Process",
|
name: "Process", id: "process"},
|
||||||
id: "process",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Contact",
|
name: "Contact", id: "contact"},
|
||||||
id: "contact",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
brandName="My Roofer"
|
brandName="My Roofer"
|
||||||
button={{
|
button={{
|
||||||
text: "Get a Free Estimate",
|
text: "Get a Free Estimate", href: "#contact"}}
|
||||||
href: "#contact",
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="hero" data-section="hero">
|
<div id="hero" data-section="hero">
|
||||||
<HeroLogoBillboardSplit
|
<HeroLogoBillboardSplit
|
||||||
background={{
|
background={{
|
||||||
variant: "radial-gradient",
|
variant: "radial-gradient"}}
|
||||||
}}
|
|
||||||
logoText="My Roofer"
|
logoText="My Roofer"
|
||||||
description="Protect Your Home with Expert Roofing. From metal roofs to full replacements, My Roofer delivers quality and peace of mind. Licensed & Insured | 5-Star Reviews | Serving Richmond, RI"
|
description="Protect Your Home with Expert Roofing. From metal roofs to full replacements, My Roofer delivers quality and peace of mind. Licensed & Insured | 5-Star Reviews | Serving Richmond, RI"
|
||||||
buttons={[
|
buttons={[
|
||||||
{
|
{
|
||||||
text: "Get a Free Estimate",
|
text: "Get a Free Estimate", href: "#contact"},
|
||||||
href: "#contact",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: "Call Now",
|
text: "Call Now", href: "tel:+14017864160"},
|
||||||
href: "tel:+14017864160",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
layoutOrder="default"
|
layoutOrder="default"
|
||||||
imageSrc="http://img.b2bpic.net/free-photo/diverse-team-working-storehouse-inventory_482257-108883.jpg"
|
imageSrc="http://img.b2bpic.net/free-photo/diverse-team-working-storehouse-inventory_482257-108883.jpg"
|
||||||
@@ -94,24 +75,16 @@ export default function LandingPage() {
|
|||||||
description="My Roofer has been a trusted member of the Richmond community for years. Our team, led by Ken and Tonya, delivers expert craftsmanship, reliable service, and the highest-quality materials. From metal roofs to inspections, we ensure every project is completed with precision and care."
|
description="My Roofer has been a trusted member of the Richmond community for years. Our team, led by Ken and Tonya, delivers expert craftsmanship, reliable service, and the highest-quality materials. From metal roofs to inspections, we ensure every project is completed with precision and care."
|
||||||
bulletPoints={[
|
bulletPoints={[
|
||||||
{
|
{
|
||||||
title: "5-Star Customer Service",
|
title: "5-Star Customer Service", description: "Hear what our customers have to say and experience our commitment to excellence.", icon: Star,
|
||||||
description: "Hear what our customers have to say and experience our commitment to excellence.",
|
|
||||||
icon: Star,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Experienced Team",
|
title: "Experienced Team", description: "Years of hands-on roofing expertise ensure every project is handled with precision.", icon: Users,
|
||||||
description: "Years of hands-on roofing expertise ensure every project is handled with precision.",
|
|
||||||
icon: Users,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Premium Materials",
|
title: "Premium Materials", description: "We use only the best roofing products for durability, longevity, and aesthetic appeal.", icon: Cog,
|
||||||
description: "We use only the best roofing products for durability, longevity, and aesthetic appeal.",
|
|
||||||
icon: Cog,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Community Trusted",
|
title: "Community Trusted", description: "Richmond locals know and trust us for reliable, high-quality roofing solutions.", icon: ShieldCheck,
|
||||||
description: "Richmond locals know and trust us for reliable, high-quality roofing solutions.",
|
|
||||||
icon: ShieldCheck,
|
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-men-working-together_23-2149343665.jpg"
|
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-men-working-together_23-2149343665.jpg"
|
||||||
@@ -126,47 +99,17 @@ export default function LandingPage() {
|
|||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
features={[
|
features={[
|
||||||
{
|
{
|
||||||
id: "service-1",
|
id: "service-1", title: "Roof Installation", description: "New roofs installed with precision using premium materials, ensuring longevity and curb appeal.", tag: "New Roofs", imageSrc: "http://img.b2bpic.net/free-photo/modern-skyscrapers-japan-business-district_23-2148836784.jpg"},
|
||||||
title: "Roof Installation",
|
|
||||||
description: "New roofs installed with precision using premium materials, ensuring longevity and curb appeal.",
|
|
||||||
tag: "New Roofs",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/modern-skyscrapers-japan-business-district_23-2148836784.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "service-2",
|
id: "service-2", title: "Roof Repairs", description: "Quick and efficient repairs for leaks, storm damage, and missing shingles, restoring your roof's integrity.", tag: "Repairs", imageSrc: "http://img.b2bpic.net/free-photo/blurred-cityscape_23-2148164726.jpg"},
|
||||||
title: "Roof Repairs",
|
|
||||||
description: "Quick and efficient repairs for leaks, storm damage, and missing shingles, restoring your roof's integrity.",
|
|
||||||
tag: "Repairs",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/blurred-cityscape_23-2148164726.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "service-3",
|
id: "service-3", title: "Metal Roofs", description: "Install durable, energy-efficient, and stylish metal roofing solutions that stand the test of time.", tag: "Specialty", imageSrc: "http://img.b2bpic.net/free-photo/low-angle-artistic-architectural-design_23-2148252774.jpg"},
|
||||||
title: "Metal Roofs",
|
|
||||||
description: "Install durable, energy-efficient, and stylish metal roofing solutions that stand the test of time.",
|
|
||||||
tag: "Specialty",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/low-angle-artistic-architectural-design_23-2148252774.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "service-4",
|
id: "service-4", title: "Roof Replacement", description: "Upgrade your home with a complete new roof that enhances protection and increases property value.", tag: "Upgrade", imageSrc: "http://img.b2bpic.net/free-photo/man-sitting-roof_23-2148748778.jpg"},
|
||||||
title: "Roof Replacement",
|
|
||||||
description: "Upgrade your home with a complete new roof that enhances protection and increases property value.",
|
|
||||||
tag: "Upgrade",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/man-sitting-roof_23-2148748778.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "service-5",
|
id: "service-5", title: "Roof Inspections", description: "Thorough inspections to identify potential issues early and prevent costly future damage.", tag: "Maintenance", imageSrc: "http://img.b2bpic.net/free-photo/old-houses_53876-33815.jpg"},
|
||||||
title: "Roof Inspections",
|
|
||||||
description: "Thorough inspections to identify potential issues early and prevent costly future damage.",
|
|
||||||
tag: "Maintenance",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/old-houses_53876-33815.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "service-6",
|
id: "service-6", title: "Emergency Roofing", description: "Fast response for urgent roof issues, providing immediate solutions to protect your home.", tag: "Urgent", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-helmet_23-2149343651.jpg"},
|
||||||
title: "Emergency Roofing",
|
|
||||||
description: "Fast response for urgent roof issues, providing immediate solutions to protect your home.",
|
|
||||||
tag: "Urgent",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-helmet_23-2149343651.jpg",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
title="Our Roofing Services"
|
title="Our Roofing Services"
|
||||||
description="We offer a comprehensive range of premium roofing solutions, designed for durability, energy efficiency, and lasting peace of mind."
|
description="We offer a comprehensive range of premium roofing solutions, designed for durability, energy efficiency, and lasting peace of mind."
|
||||||
@@ -180,33 +123,11 @@ export default function LandingPage() {
|
|||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
testimonials={[
|
testimonials={[
|
||||||
{
|
{
|
||||||
id: "1",
|
id: "1", name: "Sherri D.", role: "Satisfied Homeowner", testimonial: "Tonya, Ken, and their team were professional, courteous, and went above and beyond. We didn’t expect a metal roof but are so glad we did! Their expertise is unmatched.", imageSrc: "http://img.b2bpic.net/free-photo/confident-handsome-middle-aged-entrepreneur_1262-4871.jpg"},
|
||||||
name: "Sherri D.",
|
|
||||||
role: "Satisfied Homeowner",
|
|
||||||
testimonial: "Tonya, Ken, and their team were professional, courteous, and went above and beyond. We didn’t expect a metal roof but are so glad we did! Their expertise is unmatched.",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/confident-handsome-middle-aged-entrepreneur_1262-4871.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "2",
|
id: "2", name: "Emilio A.", role: "Local Resident", testimonial: "From the start, their quote for a metal roof was clear, and the installation was flawless. The team was efficient and tidy. Highly recommend My Roofer!", imageSrc: "http://img.b2bpic.net/free-photo/successful-business-person-working-from-outdoors_23-2148763866.jpg"},
|
||||||
name: "Emilio A.",
|
|
||||||
role: "Local Resident",
|
|
||||||
testimonial: "From the start, their quote for a metal roof was clear, and the installation was flawless. The team was efficient and tidy. Highly recommend My Roofer!",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/successful-business-person-working-from-outdoors_23-2148763866.jpg",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "3",
|
id: "3", name: "John M.", role: "Happy Customer", testimonial: "Very prompt and professional service from start to finish. The quality of work exceeded my expectations. Great experience with My Roofer!", imageSrc: "http://img.b2bpic.net/free-photo/front-view-real-estate-agent-holding-tablet_23-2150225237.jpg"}
|
||||||
name: "John M.",
|
|
||||||
role: "Happy Customer",
|
|
||||||
testimonial: "Very prompt and professional service from start to finish. The quality of work exceeded my expectations. Great experience with My Roofer!",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-real-estate-agent-holding-tablet_23-2150225237.jpg",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "4",
|
|
||||||
name: "Sarah K.",
|
|
||||||
role: "Property Owner",
|
|
||||||
testimonial: "My Roofer provided an excellent solution for our old, leaking roof. The new installation is perfect, and their team was a pleasure to work with.",
|
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-business-woman-smiling_23-2148352574.jpg",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
title="What Our Clients Say"
|
title="What Our Clients Say"
|
||||||
description="Hear directly from our valued customers about their experience with My Roofer’s premium services and dedicated team."
|
description="Hear directly from our valued customers about their experience with My Roofer’s premium services and dedicated team."
|
||||||
@@ -220,45 +141,27 @@ export default function LandingPage() {
|
|||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
metrics={[
|
metrics={[
|
||||||
{
|
{
|
||||||
id: "process-1",
|
id: "process-1", value: "1", title: "Free Inspection", items: [
|
||||||
value: "1",
|
"We evaluate your roof carefully and accurately."],
|
||||||
title: "Free Inspection",
|
|
||||||
items: [
|
|
||||||
"We evaluate your roof carefully and accurately.",
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "process-2",
|
id: "process-2", value: "2", title: "Transparent Quote", items: [
|
||||||
value: "2",
|
"Receive honest, upfront pricing with no hidden costs."],
|
||||||
title: "Transparent Quote",
|
|
||||||
items: [
|
|
||||||
"Receive honest, upfront pricing with no hidden costs.",
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "process-3",
|
id: "process-3", value: "3", title: "Expert Installation", items: [
|
||||||
value: "3",
|
"Our skilled team delivers high-quality craftsmanship."],
|
||||||
title: "Expert Installation",
|
|
||||||
items: [
|
|
||||||
"Our skilled team delivers high-quality craftsmanship.",
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "process-4",
|
id: "process-4", value: "4", title: "Final Check & Satisfaction", items: [
|
||||||
value: "4",
|
"We ensure your new roof is perfect and you are completely satisfied."],
|
||||||
title: "Final Check & Satisfaction",
|
|
||||||
items: [
|
|
||||||
"We ensure your new roof is perfect and you are completely satisfied.",
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
title="Our Simple 4-Step Process"
|
title="Our Simple 4-Step Process"
|
||||||
description="We make your luxury roofing project seamless and stress-free, ensuring clear communication and exceptional results every step of the way."
|
description="We make your luxury roofing project seamless and stress-free, ensuring clear communication and exceptional results every step of the way."
|
||||||
buttons={[
|
buttons={[
|
||||||
{
|
{
|
||||||
text: "Schedule Your Free Estimate Today",
|
text: "Schedule Your Free Estimate Today", href: "#contact"},
|
||||||
href: "#contact",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -267,18 +170,13 @@ export default function LandingPage() {
|
|||||||
<ContactText
|
<ContactText
|
||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
background={{
|
background={{
|
||||||
variant: "radial-gradient",
|
variant: "radial-gradient"}}
|
||||||
}}
|
|
||||||
text="Protect Your Home Today \n\n Our team is ready to deliver premium roofing solutions built to last. Reach out for a consultation or emergency service.\n\n**Location:** 194 Shannock Village Rd, Richmond, RI 02875\n**Phone:** (401) 786-4160\n**Hours:** Open 24 hours"
|
text="Protect Your Home Today \n\n Our team is ready to deliver premium roofing solutions built to last. Reach out for a consultation or emergency service.\n\n**Location:** 194 Shannock Village Rd, Richmond, RI 02875\n**Phone:** (401) 786-4160\n**Hours:** Open 24 hours"
|
||||||
buttons={[
|
buttons={[
|
||||||
{
|
{
|
||||||
text: "Call Now",
|
text: "Call Now", href: "tel:+14017864160"},
|
||||||
href: "tel:+14017864160",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: "Request Free Estimate",
|
text: "Request Free Estimate", href: "mailto:info@myroofer.com"},
|
||||||
href: "mailto:info@myroofer.com",
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -287,66 +185,39 @@ export default function LandingPage() {
|
|||||||
<FooterSimple
|
<FooterSimple
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
title: "My Roofer",
|
title: "My Roofer", items: [
|
||||||
items: [
|
|
||||||
{
|
{
|
||||||
label: "194 Shannock Village Rd",
|
label: "194 Shannock Village Rd", href: "#"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Richmond, RI 02875",
|
label: "Richmond, RI 02875", href: "#"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "(401) 786-4160",
|
label: "(401) 786-4160", href: "tel:+14017864160"},
|
||||||
href: "tel:+14017864160",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Open 24 Hours",
|
label: "Open 24 Hours", href: "#"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Navigation",
|
title: "Navigation", items: [
|
||||||
items: [
|
|
||||||
{
|
{
|
||||||
label: "Home",
|
label: "Home", href: "#hero"},
|
||||||
href: "#hero",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "About",
|
label: "About", href: "#about"},
|
||||||
href: "#about",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Services",
|
label: "Services", href: "#services"},
|
||||||
href: "#services",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Testimonials",
|
label: "Testimonials", href: "#testimonials"},
|
||||||
href: "#testimonials",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Process",
|
label: "Process", href: "#process"},
|
||||||
href: "#process",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Contact",
|
label: "Contact", href: "#contact"},
|
||||||
href: "#contact",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Connect",
|
title: "Connect", items: [
|
||||||
items: [
|
|
||||||
{
|
{
|
||||||
label: "Google Reviews",
|
label: "Google Reviews", href: "#"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Instagram Projects",
|
label: "Instagram Projects", href: "#"},
|
||||||
href: "#",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
@@ -357,4 +228,4 @@ export default function LandingPage() {
|
|||||||
</ReactLenis>
|
</ReactLenis>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@ html {
|
|||||||
body {
|
body {
|
||||||
background-color: var(--background);
|
background-color: var(--background);
|
||||||
color: var(--foreground);
|
color: var(--foreground);
|
||||||
font-family: var(--font-inter), sans-serif;
|
font-family: var(--font-libre-baskerville), sans-serif;
|
||||||
position: relative;
|
position: relative;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
overscroll-behavior: none;
|
overscroll-behavior: none;
|
||||||
@@ -24,5 +24,5 @@ h3,
|
|||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
font-family: var(--font-montserrat), sans-serif;
|
font-family: var(--font-libre-baskerville), sans-serif;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user