16 Commits

Author SHA1 Message Date
1b18070820 Update src/app/page.tsx 2026-04-26 07:39:12 +00:00
25587728f2 Update src/app/page.tsx 2026-04-26 07:38:43 +00:00
3d802f5855 Merge version_2 into main
Merge version_2 into main
2026-04-26 07:21:22 +00:00
18489a9b56 Update src/app/page.tsx 2026-04-26 07:21:19 +00:00
bb53b63c69 Merge version_2 into main
Merge version_2 into main
2026-04-26 07:20:43 +00:00
415f583f72 Update src/app/team/page.tsx 2026-04-26 07:20:40 +00:00
74b2cb69c9 Update src/app/services/page.tsx 2026-04-26 07:20:39 +00:00
cea452416f Update src/app/page.tsx 2026-04-26 07:20:39 +00:00
0dde71f6b4 Update src/app/booking/page.tsx 2026-04-26 07:20:38 +00:00
6d70e96219 Update src/app/about/page.tsx 2026-04-26 07:20:38 +00:00
3a204f635b Merge version_2 into main
Merge version_2 into main
2026-04-26 07:20:03 +00:00
d6ce69e96a Add src/app/team/page.tsx 2026-04-26 07:20:00 +00:00
e5e72a0832 Add src/app/services/page.tsx 2026-04-26 07:19:59 +00:00
a4d6a0e2c5 Update src/app/page.tsx 2026-04-26 07:19:59 +00:00
0ff985cc88 Add src/app/booking/page.tsx 2026-04-26 07:19:58 +00:00
ad9453a7df Add src/app/about/page.tsx 2026-04-26 07:19:58 +00:00
5 changed files with 189 additions and 283 deletions

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

@@ -0,0 +1,24 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterSimple from '@/components/sections/footer/FooterSimple';
export default function AboutUsPage() {
return (
<ThemeProvider defaultButtonVariant="directional-hover" defaultTextAnimation="entrance-slide" borderRadius="pill" contentWidth="mediumSmall" sizing="large" background="circleGradient" cardStyle="gradient-radial" primaryButtonStyle="radial-glow" secondaryButtonStyle="radial-glow" headingFontWeight="extrabold">
<ReactLenis root>
<NavbarStyleFullscreen
navItems={[{ name: "Home", id: "/" }, { name: "About", id: "/about" }, { name: "Team", id: "/team" }, { name: "Contact", id: "/contact" }]}
brandName="Hemlock Roofing"
/>
<FooterSimple
columns={[{ title: "Company", items: [{ label: "Home", href: "/" }, { label: "Team", href: "/team" }] }]}
bottomLeftText="© 2024 Hemlock Roofing"
bottomRightText="All rights reserved."
/>
</ReactLenis>
</ThemeProvider>
);
}

39
src/app/booking/page.tsx Normal file
View File

@@ -0,0 +1,39 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import FooterSimple from '@/components/sections/footer/FooterSimple';
export default function BookingPage() {
return (
<ThemeProvider defaultButtonVariant="directional-hover" defaultTextAnimation="entrance-slide" borderRadius="pill" contentWidth="mediumSmall" sizing="large" background="circleGradient" cardStyle="gradient-radial" primaryButtonStyle="radial-glow" secondaryButtonStyle="radial-glow" headingFontWeight="extrabold">
<ReactLenis root>
<NavbarStyleFullscreen
navItems={[{ name: "Home", id: "/" }, { name: "About", id: "/#about" }, { name: "Services", id: "/services" }, { name: "Gallery", id: "/#gallery" }, { name: "Contact", id: "/#contact" }]}
brandName="Hemlock Roofing"
/>
<div className="pt-32 pb-20">
<ContactSplitForm
title="Book Your Appointment"
description="Select a service and let us know your preferred date."
inputs={[
{ name: "name", type: "text", placeholder: "Full Name", required: true },
{ name: "email", type: "email", placeholder: "Email Address", required: true },
{ name: "date", type: "date", placeholder: "Preferred Date", required: true }
]}
textarea={{ name: "details", placeholder: "Service requested / additional notes", rows: 5 }}
imageSrc="http://img.b2bpic.net/free-photo/construction-building-workers-working-site-cloudy-day_1268-16199.jpg"
useInvertedBackground={false}
/>
</div>
<FooterSimple
columns={[{ title: "Company", items: [{ label: "Back to Home", href: "/" }] }]}
bottomLeftText="© 2024 Hemlock Roofing."
bottomRightText="All rights reserved."
/>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -6,7 +6,7 @@ import AboutMetric from '@/components/sections/about/AboutMetric';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import FaqDouble from '@/components/sections/faq/FaqDouble';
import FeatureCardTwentyFour from '@/components/sections/feature/FeatureCardTwentyFour';
import FooterSimple from '@/components/sections/footer/FooterSimple';
import FooterMedia from '@/components/sections/footer/FooterMedia';
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import ProductCardThree from '@/components/sections/product/ProductCardThree';
@@ -16,41 +16,27 @@ import { Award, CheckCircle, Star } from "lucide-react";
export default function LandingPage() {
return (
<ThemeProvider
defaultButtonVariant="directional-hover"
defaultTextAnimation="entrance-slide"
borderRadius="pill"
contentWidth="mediumSmall"
sizing="large"
background="circleGradient"
cardStyle="gradient-radial"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="extrabold"
defaultButtonVariant="elastic-effect"
defaultTextAnimation="reveal-blur"
borderRadius="soft"
contentWidth="medium"
sizing="largeSizeMediumTitles"
background="aurora"
cardStyle="glass-elevated"
primaryButtonStyle="primary-glow"
secondaryButtonStyle="glass"
headingFontWeight="semibold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{
name: "Home",
id: "home",
},
{
name: "About",
id: "about",
},
{
name: "Services",
id: "services",
},
{
name: "Gallery",
id: "gallery",
},
{
name: "Contact",
id: "contact",
},
{ name: "Home", id: "home" },
{ name: "About", id: "about" },
{ name: "Services", id: "services" },
{ name: "Gallery", id: "gallery" },
{ name: "Reviews", id: "testimonials" },
{ name: "Contact", id: "contact" },
]}
brandName="Hemlock Roofing"
/>
@@ -58,72 +44,27 @@ export default function LandingPage() {
<div id="home" data-section="home">
<HeroBillboardCarousel
background={{
variant: "gradient-bars",
}}
title="Worcesters Trusted Roofing Experts"
description="High-quality roofing, honest pricing, and unmatched craftsmanship."
buttons={[
{
text: "Get a Free Quote",
href: "#contact",
},
{
text: "Call Now",
href: "tel:+17744183724",
},
]}
background={{ variant: "radial-gradient" }}
buttons={[{ text: "Get a Free Quote", href: "#contact" }, { text: "Call Now", href: "tel:+17744183724" }]}
mediaItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/cute-yellow-rural-house-with-wooden-stairs-countryside_176420-7157.jpg",
imageAlt: "Professional roof installation",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-wearing-protection-helmet_23-2149343634.jpg",
imageAlt: "Expert roofers working",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-with-helmet-working-roof_23-2149343661.jpg",
imageAlt: "High quality roof shingles",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-wearing-protection-helmet-outdoors_23-2149343635.jpg",
imageAlt: "Roof inspection in progress",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/man-working-roof-with-drill_23-2148748774.jpg",
imageAlt: "Residential roof renovation",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-roof_23-2149343653.jpg",
imageAlt: "Detailed roof workmanship",
},
{ imageSrc: "http://img.b2bpic.net/free-photo/cute-yellow-rural-house-with-wooden-stairs-countryside_176420-7157.jpg" },
{ imageSrc: "http://img.b2bpic.net/full-shot-man-wearing-protection-helmet_23-2149343634.jpg" }
]}
/>
</div>
<div id="about" data-section="about">
<AboutMetric
useInvertedBackground={false}
title="A Legacy of Local Reliability"
metrics={[
{
icon: Award,
label: "Years of Experience",
value: "15+",
},
{
icon: Star,
label: "5-Star Reviews",
value: "200+",
},
{
icon: CheckCircle,
label: "Projects Completed",
value: "500+",
},
{ icon: Award, label: "Years of Experience", value: "15+" },
{ icon: Star, label: "5-Star Reviews", value: "200+" },
{ icon: CheckCircle, label: "Projects Completed", value: "500+" },
]}
metricsAnimation="slide-up"
useInvertedBackground={true}
/>
</div>
@@ -133,42 +74,11 @@ export default function LandingPage() {
textboxLayout="split"
useInvertedBackground={false}
features={[
{
id: "f1",
title: "Roof Replacement",
author: "Pro Team",
description: "Full roof teardown and expert replacement with durable materials.",
tags: [
"Replacement",
"Durable",
],
imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-wooden-roof_181624-2403.jpg",
},
{
id: "f2",
title: "Roof Repair",
author: "Repair Crew",
description: "Emergency and scheduled repairs to ensure long-term protection.",
tags: [
"Repair",
"Urgent",
],
imageSrc: "http://img.b2bpic.net/free-photo/abstract-background-roof-texture-tiles-generative-al_169016-28456.jpg",
},
{
id: "f3",
title: "New Installation",
author: "Builders",
description: "Precision installation for new construction projects.",
tags: [
"New Build",
"Expert",
],
imageSrc: "http://img.b2bpic.net/free-photo/long-shot-men-working-together-roof_23-2149343674.jpg",
},
{ id: "f1", title: "Roof Replacement", author: "Pro Team", description: "Full roof teardown and expert replacement.", tags: ["Replacement", "Durable"], imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-wooden-roof_181624-2403.jpg" },
{ id: "f2", title: "Roof Repair", author: "Repair Crew", description: "Emergency and scheduled repairs.", tags: ["Repair", "Urgent"], imageSrc: "http://img.b2bpic.net/free-photo/abstract-background-roof-texture-tiles-generative-al_169016-28456.jpg" },
]}
title="Comprehensive Roofing Services"
description="We deliver full-cycle roofing services with expert care and premium materials."
description="We deliver full-cycle roofing services with expert care."
/>
</div>
@@ -177,47 +87,14 @@ export default function LandingPage() {
animationType="slide-up"
textboxLayout="default"
gridVariant="bento-grid"
useInvertedBackground={false}
useInvertedBackground={true}
products={[
{
id: "g1",
name: "Complete Roof Overhaul",
price: "View Details",
imageSrc: "http://img.b2bpic.net/free-photo/romantic-couple-flirting-roof_1153-733.jpg",
},
{
id: "g2",
name: "New Shingle Finish",
price: "View Details",
imageSrc: "http://img.b2bpic.net/free-photo/old-rural-house-with-wild-grape-covering-part-yard_1268-15653.jpg",
},
{
id: "g3",
name: "Roofing Restoration",
price: "View Details",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-shot-cityscape-st-gallen-switzerland-winter-with-snow-roofs_181624-18462.jpg",
},
{
id: "g4",
name: "Modern Roof Build",
price: "View Details",
imageSrc: "http://img.b2bpic.net/free-photo/vertical-low-angle-closeup-shot-black-roof-building_181624-10654.jpg",
},
{
id: "g5",
name: "Residential Roofing",
price: "View Details",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-beautiful-wooden-house-with-new-roof_23-2149343703.jpg",
},
{
id: "g6",
name: "Exterior Update",
price: "View Details",
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-working-with-protection-helmet_23-2149343638.jpg",
},
{ id: "g1", name: "Modern Roof Build", price: "Portfolio", imageSrc: "http://img.b2bpic.net/free-photo/high-angle-beautiful-wooden-house-with-new-roof_23-2149343703.jpg" },
{ id: "g2", name: "Shingle Restoration", price: "Portfolio", imageSrc: "http://img.b2bpic.net/free-photo/old-rural-house-with-wild-grape-covering-part-yard_1268-15653.jpg" },
{ id: "g3", name: "Roof Overhaul", price: "Portfolio", imageSrc: "http://img.b2bpic.net/free-photo/romantic-couple-flirting-roof_1153-733.jpg" },
]}
title="Transformation Gallery"
description="Witness the difference in our quality workmanship."
title="Salon & Roofing Gallery"
description="High-quality project highlights and portfolio images."
/>
</div>
@@ -226,82 +103,23 @@ export default function LandingPage() {
animationType="slide-up"
textboxLayout="split"
useInvertedBackground={false}
testimonials={[
{
id: "1",
name: "Sarah Johnson",
handle: "@sarahj",
testimonial: "High end service, thorough communication, highly recommend.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-construction-worker-standing-rooftops-high-silos-storage-tanks_342744-442.jpg",
},
{
id: "2",
name: "Michael Chen",
handle: "@mchen",
testimonial: "Amazing company, great price, quality work.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-man-holding-house-model-showing-winner-gesture-shirt-vest-hat-looking-happy-front-view_176474-30662.jpg",
},
{
id: "3",
name: "Emily Rodriguez",
handle: "@erod",
testimonial: "Professional, clean, and fast. The best roofing team in town.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/country-music-band-singing-outdoors_23-2149498460.jpg",
},
{
id: "4",
name: "David Kim",
handle: "@dkim",
testimonial: "Excellent workmanship. My new roof looks fantastic.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/joyful-beautiful-young-hispanic-woman-opening-door-standing-doorway_74855-10224.jpg",
},
{
id: "5",
name: "Anna Smith",
handle: "@asmith",
testimonial: "Fair pricing and top-tier roofing quality. Very satisfied.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/close-up-experienced-carpenter-his-younger-employee_329181-15602.jpg",
},
]}
showRating={true}
title="Trusted by Worcester Homeowners"
description="Don't take our word for it—hear what our clients say."
testimonials={[
{ id: "1", name: "Sarah Johnson", handle: "@sarahj", testimonial: "Fantastic service and quality craftsmanship!", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/portrait-construction-worker-standing-rooftops-high-silos-storage-tanks_342744-442.jpg" },
{ id: "2", name: "Michael Chen", handle: "@mchen", testimonial: "Professional and highly reliable team.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-man-holding-house-model-showing-winner-gesture-shirt-vest-hat-looking-happy-front-view_176474-30662.jpg" },
]}
title="Client Reviews"
description="Read what our happy clients have to say about us."
/>
</div>
<div id="faq" data-section="faq">
<FaqDouble
textboxLayout="default"
useInvertedBackground={false}
faqs={[
{
id: "q1",
title: "How long does a roof replacement take?",
content: "Most residential replacements are completed within 1-3 days.",
},
{
id: "q2",
title: "Do you provide written estimates?",
content: "Yes, all our quotes are detailed, transparent, and free.",
},
{
id: "q3",
title: "Are you licensed and insured?",
content: "Absolutely, we carry full insurance and are fully licensed in Massachusetts.",
},
{
id: "q4",
title: "Do you offer financing?",
content: "We offer flexible payment options for qualified homeowners.",
},
]}
useInvertedBackground={true}
faqs={[{ id: "q1", title: "How long does a project take?", content: "Typically 1-3 days depending on complexity." }]}
title="Frequently Asked Questions"
description="Have questions? We have answers regarding your roofing needs."
description="Answers to your common project questions."
faqsAnimation="slide-up"
/>
</div>
@@ -310,71 +128,21 @@ export default function LandingPage() {
<ContactSplitForm
useInvertedBackground={false}
title="Get a Free Consultation"
description="Ready for a new roof? Call us at +1 774-418-3724 or fill out the form below."
inputs={[
{
name: "name",
type: "text",
placeholder: "Your Name",
required: true,
},
{
name: "phone",
type: "tel",
placeholder: "Your Phone",
required: true,
},
{
name: "email",
type: "email",
placeholder: "Your Email",
required: true,
},
]}
textarea={{
name: "message",
placeholder: "Tell us about your project",
rows: 4,
}}
description="Ready to start? Fill out the form below."
inputs={[{ name: "name", type: "text", placeholder: "Your Name", required: true }, { name: "email", type: "email", placeholder: "Your Email", required: true }]}
imageSrc="http://img.b2bpic.net/free-photo/construction-building-workers-working-site-cloudy-day_1268-16199.jpg"
/>
</div>
<div id="footer" data-section="footer">
<FooterSimple
columns={[
{
title: "Company",
items: [
{
label: "About Us",
href: "#about",
},
{
label: "Services",
href: "#services",
},
],
},
{
title: "Support",
items: [
{
label: "Contact Us",
href: "#contact",
},
{
label: "Privacy Policy",
href: "#",
},
],
},
]}
bottomLeftText="© 2024 Hemlock Roofing. Worcester, MA."
bottomRightText="All rights reserved."
<FooterMedia
logoText="Hemlock Roofing"
columns={[{ title: "Company", items: [{ label: "About Us", href: "#about" }] }, { title: "Support", items: [{ label: "Contact", href: "#contact" }] }]}
copyrightText="© 2025 Hemlock Roofing. All rights reserved."
imageSrc="http://img.b2bpic.net/free-photo/close-up-professional-roofer-holding-hammer_23-2149343657.jpg"
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}
}

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

@@ -0,0 +1,39 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FeatureCardTwentyFour from '@/components/sections/feature/FeatureCardTwentyFour';
import FooterSimple from '@/components/sections/footer/FooterSimple';
export default function ServicesPage() {
return (
<ThemeProvider defaultButtonVariant="directional-hover" defaultTextAnimation="entrance-slide" borderRadius="pill" contentWidth="mediumSmall" sizing="large" background="circleGradient" cardStyle="gradient-radial" primaryButtonStyle="radial-glow" secondaryButtonStyle="radial-glow" headingFontWeight="extrabold">
<ReactLenis root>
<NavbarStyleFullscreen
navItems={[{ name: "Home", id: "/" }, { name: "About", id: "/#about" }, { name: "Services", id: "/services" }, { name: "Gallery", id: "/#gallery" }, { name: "Contact", id: "/#contact" }]}
brandName="Hemlock Roofing"
/>
<div className="pt-32 pb-20">
<FeatureCardTwentyFour
animationType="slide-up"
textboxLayout="split"
useInvertedBackground={false}
title="Our Professional Services"
description="Expert roofing solutions tailored to your specific needs."
features={[
{ id: "s1", title: "Residential Roof Replacement", author: "Hemlock Experts", description: "High-quality materials with 25-year warranty.", tags: ["Replacement", "New Roof"], imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-wooden-roof_181624-2403.jpg" },
{ id: "s2", title: "Storm Damage Repair", author: "Emergency Team", description: "Fast response for leak repairs and structural integrity.", tags: ["Repair", "Urgent"], imageSrc: "http://img.b2bpic.net/free-photo/abstract-background-roof-texture-tiles-generative-al_169016-28456.jpg" }
]}
buttons={[{ text: "Book Consultation", href: "/booking" }]}
/>
</div>
<FooterSimple
columns={[{ title: "Company", items: [{ label: "Back to Home", href: "/" }] }]}
bottomLeftText="© 2024 Hemlock Roofing."
bottomRightText="All rights reserved."
/>
</ReactLenis>
</ThemeProvider>
);
}

36
src/app/team/page.tsx Normal file
View File

@@ -0,0 +1,36 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import TeamCardFive from "@/components/sections/team/TeamCardFive";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterSimple from '@/components/sections/footer/FooterSimple';
export default function TeamPage() {
return (
<ThemeProvider defaultButtonVariant="directional-hover" defaultTextAnimation="entrance-slide" borderRadius="pill" contentWidth="mediumSmall" sizing="large" background="circleGradient" cardStyle="gradient-radial" primaryButtonStyle="radial-glow" secondaryButtonStyle="radial-glow" headingFontWeight="extrabold">
<ReactLenis root>
<NavbarStyleFullscreen
navItems={[{ name: "Home", id: "/" }, { name: "About", id: "/about" }, { name: "Team", id: "/team" }, { name: "Contact", id: "/contact" }]}
brandName="Hemlock Roofing"
/>
<TeamCardFive
title="Meet the Experts"
description="Our dedicated team of professionals brings precision, care, and industry-leading expertise to every roofing project."
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
team={[
{ id: "1", name: "Alex Rivers", role: "Master Roofer", imageSrc: "http://img.b2bpic.net/free-photo/portrait-construction-worker-standing-rooftops-high-silos-storage-tanks_342744-442.jpg" },
{ id: "2", name: "Jordan Smith", role: "Project Manager", imageSrc: "http://img.b2bpic.net/free-photo/young-man-holding-house-model-showing-winner-gesture-shirt-vest-hat-looking-happy-front-view_176474-30662.jpg" }
]}
/>
<FooterSimple
columns={[{ title: "Company", items: [{ label: "Home", href: "/" }, { label: "About", href: "/about" }] }]}
bottomLeftText="© 2024 Hemlock Roofing"
bottomRightText="All rights reserved."
/>
</ReactLenis>
</ThemeProvider>
);
}