10 Commits

Author SHA1 Message Date
5002c80afd Update src/app/contact/page.tsx 2026-06-09 23:27:08 +00:00
4389f8942f Merge version_6 into main
Merge version_6 into main
2026-06-09 23:20:16 +00:00
d513885a41 Update src/app/services/page.tsx 2026-06-09 23:20:13 +00:00
949ebcfddb Switch to version 6: remove src/middleware.ts 2026-06-09 23:18:52 +00:00
7a8945520d Switch to version 6: remove src/i18n.ts 2026-06-09 23:18:51 +00:00
892ae4d405 Switch to version 6: modified src/app/page.tsx 2026-06-09 23:18:51 +00:00
c941dab6e0 Merge version_7 into main
Merge version_7 into main
2026-06-09 18:19:09 +00:00
1415f0e81f Merge version_7 into main
Merge version_7 into main
2026-06-09 18:18:27 +00:00
57a2c861f2 Merge version_7 into main
Merge version_7 into main
2026-06-09 18:17:43 +00:00
0fc491d50a Merge version_7 into main
Merge version_7 into main
2026-06-09 18:14:12 +00:00
5 changed files with 55 additions and 126 deletions

View File

@@ -2,10 +2,10 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react"; import ReactLenis from "lenis/react";
import ContactText from '@/components/sections/contact/ContactText'; import ContactSplit from '@/components/sections/contact/ContactSplit';
import FaqDouble from '@/components/sections/faq/FaqDouble'; import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FooterBase from '@/components/sections/footer/FooterBase'; import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
export default function LandingPage() { export default function LandingPage() {
return ( return (
@@ -23,7 +23,7 @@ export default function LandingPage() {
> >
<ReactLenis root> <ReactLenis root>
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
<NavbarStyleCentered <NavbarStyleApple
navItems={[ navItems={[
{ {
name: "Home", id: "/"}, name: "Home", id: "/"},
@@ -34,31 +34,31 @@ export default function LandingPage() {
{ {
name: "Contact", id: "/contact"}, name: "Contact", id: "/contact"},
]} ]}
button={{
text: "Get a Free Quote", href: "/contact"}}
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EsInlEOoSiMI8mFEzeygc6zaoo/uploaded-1780963238289-ovhlz3j6.png"
logoAlt="FloorCraft Logo"
brandName="FloorCraft" brandName="FloorCraft"
/> />
</div> </div>
<div id="contact-form" data-section="contact-form"> <div id="contact-form" data-section="contact-form">
<ContactText <ContactSplit
useInvertedBackground={false} useInvertedBackground={false}
background={{ background={{
variant: "plain"}} variant: "plain"}}
text="Ready to Transform Your Floors? Contact Us for a Free Quote Today!" title="Ready to Transform Your Floors?"
buttons={[ description="Contact Us for a Free Quote Today!"
{ tag="Get in Touch"
text: "Call Us Now: (770) 374-7706", href: "tel:+15551234567"}, imageSrc="https://img.b2bpic.net/free-photo/young-man-working-computer-desk_23-2147814498.jpg?id=433612503"
{ imageAlt="Contact us for a free quote"
text: "Email Us: Floorcraftt@gmail.com", href: "mailto:info@floorcraft.com"}, mediaPosition="right"
]} mediaAnimation="slide-up"
inputPlaceholder="Your Email"
buttonText="Submit Request"
termsText="By submitting, you agree to our Terms and Conditions."
onSubmit={(email) => console.log(email)}
/> />
</div> </div>
<div id="faq" data-section="faq"> <div id="faq" data-section="faq">
<FaqDouble <FaqSplitMedia
textboxLayout="default" textboxLayout="default"
useInvertedBackground={true} useInvertedBackground={true}
faqs={[ faqs={[
@@ -78,53 +78,22 @@ export default function LandingPage() {
title="Common Questions About Flooring" title="Common Questions About Flooring"
description="Got questions? We've got answers. Find out everything you need to know about hardwood installation, sanding, maintenance, and our process." description="Got questions? We've got answers. Find out everything you need to know about hardwood installation, sanding, maintenance, and our process."
faqsAnimation="slide-up" faqsAnimation="slide-up"
imageSrc="https://img.b2bpic.net/free-photo/modern-interior-design-with-empty-wall_23-2151044458.jpg?id=413550269"
imageAlt="FAQ section media"
mediaAnimation="slide-up"
mediaPosition="left"
/> />
</div> </div>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBase <FooterLogoReveal
columns={[
{
title: "Navigation", items: [
{
label: "Home", href: "/"},
{
label: "Services", href: "/services"},
{
label: "Gallery", href: "/gallery"},
{
label: "Contact", href: "/contact"},
],
},
{
title: "Services", items: [
{
label: "Hardwood Installation", href: "/services#hardwood-installation"},
{
label: "Floor Sanding", href: "/services#floor-sanding"},
{
label: "Free Estimates", href: "/services#free-estimates"},
{
label: "Custom Designs", href: "/services#custom-designs"},
],
},
{
title: "About Us", items: [
{
label: "Our Story", href: "/#about"},
{
label: "Testimonials", href: "/#home-testimonials"},
{
label: "Service Areas", href: "/services#service-areas"},
{
label: "FAQs", href: "/contact#faq"},
],
},
]}
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EsInlEOoSiMI8mFEzeygc6zaoo/uploaded-1780963238289-ovhlz3j6.png" logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EsInlEOoSiMI8mFEzeygc6zaoo/uploaded-1780963238289-ovhlz3j6.png"
logoAlt="FloorCraft Logo" logoAlt="FloorCraft Logo"
logoText="FloorCraft" logoText="FloorCraft"
copyrightText="© 2024 FloorCraft. All rights reserved." leftLink={{
text: "Home", href: "/"}}
rightLink={{
text: "Contact", href: "/contact"}}
/> />
</div> </div>
</ReactLenis> </ReactLenis>

View File

@@ -12,9 +12,6 @@ import TestimonialCardSixteen from '@/components/sections/testimonial/Testimonia
import { Award, Briefcase, Calendar, Cog, Home, Hammer, MessageCircle, Paintbrush, Sparkles, Star, Brush, ClipboardCheck } from "lucide-react"; import { Award, Briefcase, Calendar, Cog, Home, Hammer, MessageCircle, Paintbrush, Sparkles, Star, Brush, ClipboardCheck } from "lucide-react";
export default function LandingPage() { export default function LandingPage() {
// Placeholder for a translation function. In a real app, this would be imported from an i18n library.
const t = (key: string) => key;
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="directional-hover" defaultButtonVariant="directional-hover"
@@ -191,14 +188,14 @@ export default function LandingPage() {
testimonials={[]} testimonials={[]}
kpiItems={[ kpiItems={[
{ {
value: "5.0", label: t('home_testimonials.kpi_average_rating')}, value: "5.0", label: "Average Rating"},
{ {
value: "98%", label: t('home_testimonials.kpi_client_retention')}, value: "98%", label: "Client Retention"},
{ {
value: "100%", label: t('home_testimonials.kpi_satisfaction')}, value: "100%", label: "Satisfaction"},
]} ]}
title={t('home_testimonials.title')} title="What Our Family of Customers Says"
description={t('home_testimonials.description')} description="Hearing from our satisfied clients is the greatest reward. Their trust in our craftsmanship and personal approach is the foundation of our business."
/> />
</div> </div>
@@ -206,15 +203,9 @@ export default function LandingPage() {
<SocialProofOne <SocialProofOne
textboxLayout="default" textboxLayout="default"
useInvertedBackground={false} useInvertedBackground={false}
names={[ names={[]}
t('social_proof.client_a'), title=""
t('social_proof.client_b'), description=""
t('social_proof.client_c'),
t('social_proof.client_d'),
t('social_proof.client_e'),
]}
title={t('social_proof.title')}
description={t('social_proof.description')}
speed={40} speed={40}
/> />
</div> </div>
@@ -223,46 +214,46 @@ export default function LandingPage() {
<FooterBase <FooterBase
columns={[ columns={[
{ {
title: t('footer.navigation_title'), items: [ title: "Navigation", items: [
{ {
label: t('footer.home_label'), href: "/"}, label: "Home", href: "/"},
{ {
label: t('footer.services_label'), href: "/services"}, label: "Services", href: "/services"},
{ {
label: t('footer.gallery_label'), href: "/gallery"}, label: "Gallery", href: "/gallery"},
{ {
label: t('footer.contact_label'), href: "/contact"}, label: "Contact", href: "/contact"},
], ],
}, },
{ {
title: t('footer.services_column_title'), items: [ title: "Services", items: [
{ {
label: t('footer.service_hardwood_installation'), href: "/services#hardwood-installation"}, label: "Hardwood Installation", href: "/services#hardwood-installation"},
{ {
label: t('footer.service_floor_sanding'), href: "/services#floor-sanding"}, label: "Floor Sanding", href: "/services#floor-sanding"},
{ {
label: t('footer.service_free_estimates'), href: "/services#free-estimates"}, label: "Free Estimates", href: "/services#free-estimates"},
{ {
label: t('footer.service_custom_designs'), href: "/services#custom-designs"}, label: "Custom Designs", href: "/services#custom-designs"},
], ],
}, },
{ {
title: t('footer.about_us_title'), items: [ title: "About Us", items: [
{ {
label: t('footer.about_our_story'), href: "/#about"}, label: "Our Story", href: "/#about"},
{ {
label: t('footer.about_testimonials'), href: "/#home-testimonials"}, label: "Testimonials", href: "/#home-testimonials"},
{ {
label: t('footer.about_service_areas'), href: "/services#service-areas"}, label: "Service Areas", href: "/services#service-areas"},
{ {
label: t('footer.about_faqs'), href: "/contact#faq"}, label: "FAQs", href: "/contact#faq"},
], ],
}, },
]} ]}
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EsInlEOoSiMI8mFEzeygc6zaoo/uploaded-1780963238289-ovhlz3j6.png" logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EsInlEOoSiMI8mFEzeygc6zaoo/uploaded-1780963238289-ovhlz3j6.png"
logoAlt="FloorCraft Logo" logoAlt="FloorCraft Logo"
logoText={t('footer.logo_text')} logoText="FloorCraft"
copyrightText={t('footer.copyright_text')} copyrightText="© 2024 FloorCraft. All rights reserved."
/> />
</div> </div>
</ReactLenis> </ReactLenis>

View File

@@ -1,13 +0,0 @@
// @ts-expect-error next-intl server config type mismatch
import { getRequestConfig } from 'next-intl/server';
import { notFound } from 'next/navigation';
export const locales = ['en', 'es'];
export default getRequestConfig(async ({ locale }) => {
if (!locales.includes(locale as any)) notFound();
return {
messages: (await import(`../messages/${locale}.json`)).default,
};
});

View File

@@ -1,18 +0,0 @@
// @ts-expect-error next-intl middleware type incompatibility
import createMiddleware from 'next-intl/middleware';
import { locales } from './i18n';
export default createMiddleware({
locales,
defaultLocale: 'en',
localePrefix: 'as-needed',
});
export const config = {
matcher: [
'/',
'/(es|en)/:path*',
// Enable a redirect to a matching locale at the root
// '/((?!_next|_vercel|.*\..*).*)',
],
};