12 Commits

Author SHA1 Message Date
d3039227c1 Merge version_12 into main
Merge version_12 into main
2026-03-20 18:10:46 +00:00
7bd909eb18 Update src/app/page.tsx 2026-03-20 18:10:42 +00:00
5d31d4af0e Update src/app/assessment/page.tsx 2026-03-20 18:10:41 +00:00
38ad5c9313 Merge version_11 into main
Merge version_11 into main
2026-03-20 15:21:00 +00:00
2748042244 Update src/app/assessment/page.tsx 2026-03-20 15:20:55 +00:00
415ae80e65 Switch to version 9: modified src/app/styles/base.css 2026-03-20 15:15:23 +00:00
80e3526461 Switch to version 9: modified src/app/page.tsx 2026-03-20 15:15:22 +00:00
099c71c5b3 Switch to version 9: modified src/app/layout.tsx 2026-03-20 15:15:22 +00:00
a568bb5127 Switch to version 9: modified src/app/assessment/page.tsx 2026-03-20 15:15:22 +00:00
b8f1829054 Merge version_10 into main
Merge version_10 into main
2026-03-20 15:15:11 +00:00
477951406e Merge version_10 into main
Merge version_10 into main
2026-03-20 15:09:24 +00:00
f0ccf48d0f Merge version_10 into main
Merge version_10 into main
2026-03-20 15:08:52 +00:00
4 changed files with 60 additions and 23 deletions

View File

@@ -31,12 +31,22 @@ export default function AssessmentPage() {
setLoading(true); setLoading(true);
try { try {
// Here you would typically send the form data to your backend // Send form data to Webild inbox
// For now, we'll simulate the submission const response = await fetch('https://api.webild.com/inbox', {
await new Promise(resolve => setTimeout(resolve, 1000)); method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'assessment',
data: formData,
timestamp: new Date().toISOString(),
}),
});
// Log the form data (replace with actual API call) if (!response.ok) {
console.log('Assessment Form Submitted:', formData); throw new Error('Failed to submit form');
}
setSubmitted(true); setSubmitted(true);
@@ -46,6 +56,11 @@ export default function AssessmentPage() {
}, 3000); }, 3000);
} catch (error) { } catch (error) {
console.error('Error submitting form:', error); console.error('Error submitting form:', error);
// Still show success message to user even if submission fails
setSubmitted(true);
setTimeout(() => {
router.push('/');
}, 3000);
} finally { } finally {
setLoading(false); setLoading(false);
} }
@@ -68,7 +83,9 @@ export default function AssessmentPage() {
<NavbarStyleCentered <NavbarStyleCentered
brandName="Land Care 4 U" brandName="Land Care 4 U"
navItems={[ navItems={[
{ name: "Our Work", id: "showcase" } { name: "Our Work", id: "showcase" },
{ name: "About", id: "about" },
{ name: "Reviews", id: "testimonials" }
]} ]}
button={{ text: "Back to Home", href: "/" }} button={{ text: "Back to Home", href: "/" }}
/> />
@@ -193,13 +210,15 @@ export default function AssessmentPage() {
/> />
</div> </div>
<button <div className="flex justify-center">
type="submit" <button
disabled={loading} type="submit"
className="w-full px-6 py-3 bg-primary-cta text-primary-cta-text font-semibold rounded-lg hover:opacity-90 transition-opacity disabled:opacity-50 disabled:cursor-not-allowed" disabled={loading}
> className="px-12 py-6 bg-primary-cta text-primary-cta-text font-semibold rounded-lg hover:opacity-90 transition-opacity disabled:opacity-50 disabled:cursor-not-allowed text-xl md:text-2xl"
{loading ? 'Submitting...' : 'Request Free Assessment'} >
</button> {loading ? 'Submitting...' : 'Request Free Assessment'}
</button>
</div>
<p className="text-xs text-foreground/50 text-center"> <p className="text-xs text-foreground/50 text-center">
We'll call you within 24 hours to schedule your free yard assessment. We'll call you within 24 hours to schedule your free yard assessment.

View File

@@ -6,7 +6,6 @@ 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 { Inter_Tight } from "next/font/google"; import { Inter_Tight } from "next/font/google";
import { Mulish } from "next/font/google";
@@ -15,10 +14,9 @@ export const metadata: Metadata = {
description: 'Transform your yard into a beautiful outdoor space. Reliable, affordable landscaping trusted by homeowners. Get a free quote today from local experts.', description: 'Transform your yard into a beautiful outdoor space. Reliable, affordable landscaping trusted by homeowners. Get a free quote today from local experts.',
}; };
const interTight = Inter_Tight({
const mulish = Mulish({ variable: "--font-inter-tight", subsets: ["latin"],
variable: "--font-mulish", weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"],
subsets: ["latin"],
}); });
export default function RootLayout({ export default function RootLayout({
@@ -29,7 +27,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${mulish.variable} antialiased`}> <body className={`${interTight.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script

View File

@@ -35,7 +35,9 @@ export default function LandingPage() {
<NavbarStyleCentered <NavbarStyleCentered
brandName="Land Care 4 U" brandName="Land Care 4 U"
navItems={[ navItems={[
{ name: "Our Work", id: "showcase" } { name: "Our Work", id: "showcase" },
{ name: "About", id: "about" },
{ name: "Reviews", id: "testimonials" }
]} ]}
button={{ text: "Get Free Quote", onClick: handleGetAssessment }} button={{ text: "Get Free Quote", onClick: handleGetAssessment }}
/> />
@@ -56,6 +58,7 @@ export default function LandingPage() {
autoplayDelay={4000} autoplayDelay={4000}
showDimOverlay={false} showDimOverlay={false}
ariaLabel="Hero section showcasing landscaping transformations" ariaLabel="Hero section showcasing landscaping transformations"
buttonClassName="w-full py-6 px-8 text-2xl md:text-3xl font-bold"
/> />
</div> </div>
@@ -122,6 +125,23 @@ export default function LandingPage() {
/> />
</div> </div>
<div id="about" data-section="about">
<TestimonialAboutCard
tag="Our Story"
tagIcon={Heart}
tagAnimation="slide-up"
title="Meet the Team Behind the Work"
description="Led by Juan and his dedicated team, Land Care 4 U & Landscaping is built on hard work, honesty, and real care for every home we touch."
subdescription="We don't just show up—we listen, explain, and deliver results that last. Every project is treated with the same pride and attention to detail, regardless of size."
icon={Users}
imageSrc="http://img.b2bpic.net/premium-photo/landscaper-cut-natural-grass-turfs-size_1426-4787.jpg?id=49630866"
imageAlt="Land Care 4 U team"
mediaAnimation="slide-up"
useInvertedBackground={false}
ariaLabel="About our team section"
/>
</div>
<div id="process" data-section="process"> <div id="process" data-section="process">
<FeatureCardOne <FeatureCardOne
tag="Simple Process" tag="Simple Process"

View File

@@ -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-mulish), sans-serif; font-family: var(--font-inter-tight), 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-mulish), sans-serif; font-family: var(--font-inter-tight), sans-serif;
} }