fix: react-doctor unused-file 123→27 (-96 dead files removed)

This commit is contained in:
Nora
2026-06-26 04:38:44 -06:00
parent ab9813b4ee
commit 27b2ded94e
96 changed files with 0 additions and 17319 deletions
-683
View File
@@ -1,683 +0,0 @@
"use client";
import { useEffect, useRef, useState } from "react";
import { ReactElement } from "react";
interface Feature {
icon: ReactElement;
title: string;
description: string;
bgColor: string;
borderColor: string;
hoverBg: string;
}
interface Stat {
prefix: string;
number: number;
suffix: string;
label: string;
}
const features: Feature[] = [
{
icon: (
<svg
width="32"
height="32"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M12 2L2 7l10 5 10-5-10-5z" />
<path d="M2 17l10 5 10-5" />
<path d="M2 12l10 5 10-5" />
</svg>
),
title: "Product Catalogs",
description:
"Showcase your seasonal produce with rich media galleries, detailed specs, and real-time availability updates.",
bgColor: "#f0f5f1",
borderColor: "#6b8f71",
hoverBg: "#e8f0e9",
},
{
icon: (
<svg
width="32"
height="32"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
>
<circle cx="12" cy="12" r="10" />
<polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76" />
</svg>
),
title: "Route Planning",
description:
"Optimize delivery routes across your farm network with intelligent mapping and scheduling tools.",
bgColor: "#fdf6f0",
borderColor: "#c97a3e",
hoverBg: "#fbeeda",
},
{
icon: (
<svg
width="32"
height="32"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M9 11l3 3L22 4" />
<path d="M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11" />
</svg>
),
title: "Order Management",
description:
"Track orders from placement through delivery with automated status updates and seamless integrations.",
bgColor: "#f5f0f8",
borderColor: "#7a5c9e",
hoverBg: "#ece6f5",
},
{
icon: (
<svg
width="32"
height="32"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M3 3h18v18H3zM21 9H3M9 21V9" />
</svg>
),
title: "Wholesale Portal",
description:
"Give buyers a dedicated space to browse pricing, request quotes, and place bulk orders on their schedule.",
bgColor: "#f0f5f5",
borderColor: "#5c8a8f",
hoverBg: "#e5f0f2",
},
{
icon: (
<svg
width="32"
height="32"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z" />
<polyline points="22,6 12,13 2,6" />
</svg>
),
title: "Harvest Reach",
description:
"Send email and SMS campaigns that keep buyers informed about seasonal availability and new harvests.",
bgColor: "#faf5f0",
borderColor: "#c97a3e",
hoverBg: "#f5ebe0",
},
{
icon: (
<svg
width="32"
height="32"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
>
<line x1="18" y1="20" x2="18" y2="10" />
<line x1="12" y1="20" x2="12" y2="4" />
<line x1="6" y1="20" x2="6" y2="14" />
</svg>
),
title: "Smart Analytics",
description:
"Uncover sales trends, buyer behavior, and operational insights with real-time dashboards and reports.",
bgColor: "#f5f8f0",
borderColor: "#6b8f71",
hoverBg: "#eaf3e5",
},
];
const stats: Stat[] = [
{ prefix: "", number: 500, suffix: "+", label: "Produce Brands" },
{ prefix: "", number: 50000, suffix: "+", label: "Orders Delivered" },
{ prefix: "", number: 98, suffix: "%", label: "On-Time Delivery" },
{ prefix: "$", number: 2, suffix: "M+", label: "Weekly Sales" },
];
export default function FeaturesAndStats() {
const [countersStarted, setCountersStarted] = useState(false);
const [counters, setCounters] = useState<number[]>(() => stats.map(() => 0));
const statsRef = useRef<HTMLDivElement>(null);
useEffect(() => {
const observer = new IntersectionObserver(
(entries) => {
if (entries[0].isIntersecting && !countersStarted) {
setCountersStarted(true);
}
},
{ threshold: 0.3 }
);
if (statsRef.current) {
observer.observe(statsRef.current);
}
return () => observer.disconnect();
}, [countersStarted]);
useEffect(() => {
if (!countersStarted) return;
const duration = 2000;
const steps = 60;
const interval = duration / steps;
let step = 0;
const timer = setInterval(() => {
step++;
const progress = step / steps;
const easeOut = 1 - Math.pow(1 - progress, 3);
setCounters(
stats.map((stat) => {
if (stat.number >= 1000) {
return Math.floor(stat.number * easeOut);
} else if (stat.number >= 100) {
return Math.floor(stat.number * easeOut);
} else if (stat.number >= 10) {
return Math.floor(stat.number * easeOut);
} else {
return Math.floor(stat.number * easeOut);
}
})
);
if (step >= steps) {
clearInterval(timer);
setCounters(stats.map((stat) => stat.number));
}
}, interval);
return () => clearInterval(timer);
}, [countersStarted]);
return (
<div
style={{
fontFamily: "var(--font-manrope)",
background: "#faf8f5",
color: "#1a1a1a",
minHeight: "100vh",
}}
>
<style dangerouslySetInnerHTML={{ __html: `
.section-label {
font-family: var(--font-manrope);
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: #c97a3e;
margin-bottom: 0.75rem;
}
.section-title {
font-family: var(--font-fraunces);
font-size: clamp(2rem, 5vw, 3rem);
font-weight: 600;
color: #1a4d2e;
line-height: 1.15;
margin-bottom: 1rem;
}
.section-subtitle {
font-family: var(--font-manrope);
font-size: 1.125rem;
color: #4a4a4a;
line-height: 1.6;
max-width: 540px;
}
.feature-card {
border-radius: 16px;
padding: 2rem;
border: 1px solid transparent;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
cursor: default;
opacity: 0;
transform: translateY(24px);
animation: fa-fade-in-up 0.6s ease forwards;
}
.feature-card:hover {
transform: translateY(-6px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
}
.feature-icon {
width: 52px;
height: 52px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.25rem;
transition: transform 0.3s ease;
}
.feature-card:hover .feature-icon {
transform: scale(1.05);
}
.feature-title {
font-family: var(--font-fraunces);
font-size: 1.375rem;
font-weight: 600;
color: #1a4d2e;
margin-bottom: 0.625rem;
line-height: 1.3;
}
.feature-description {
font-size: 0.9375rem;
color: #555;
line-height: 1.65;
}
.stat-block {
text-align: center;
opacity: 0;
transform: translateY(20px);
animation: fa-fade-in-up 0.5s ease forwards;
}
.stat-number {
font-family: var(--font-fraunces);
font-size: clamp(2.5rem, 5vw, 4rem);
font-weight: 700;
color: #1a4d2e;
line-height: 1;
margin-bottom: 0.5rem;
}
.stat-label {
font-size: 0.9375rem;
color: #6b8f71;
font-weight: 500;
letter-spacing: 0.02em;
}
.stats-divider {
width: 1px;
background: linear-gradient(
to bottom,
transparent,
#c97a3e40,
transparent
);
align-self: stretch;
margin: 0.1rem 0;
}
.section-divider {
width: 48px;
height: 2px;
background: linear-gradient(
to right,
#c97a3e,
#1a4d2e
);
border-radius: 1px;
margin: 0;
}
@keyframes fa-fade-in-up {
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fa-slide-in-left {
from {
opacity: 0;
transform: translateX(-24px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes fa-slide-in-right {
from {
opacity: 0;
transform: translateX(24px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes fa-scale-in {
from {
opacity: 0;
transform: scale(0.9);
}
to {
opacity: 1;
transform: scale(1);
}
}
.animate-left {
animation: fa-slide-in-left 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.animate-right {
animation: fa-slide-in-right 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.animate-scale {
animation: fa-scale-in 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.stagger-1 { animation-delay: 0.1s; }
.stagger-2 { animation-delay: 0.2s; }
.stagger-3 { animation-delay: 0.3s; }
.stagger-4 { animation-delay: 0.4s; }
.stagger-5 { animation-delay: 0.5s; }
.stagger-6 { animation-delay: 0.6s; }
.stat-stagger-1 { animation-delay: 0.15s; }
.stat-stagger-2 { animation-delay: 0.3s; }
.stat-stagger-3 { animation-delay: 0.45s; }
.stat-stagger-4 { animation-delay: 0.6s; }
`}} />
{/* ─── FEATURES SECTION ─── */}
<section
style={{
maxWidth: "1200px",
margin: "0 auto",
padding: "6rem 1.5rem",
}}
>
{/* Header */}
<div
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
textAlign: "center",
marginBottom: "4rem",
}}
>
<div
className="animate-scale"
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
}}
>
<span className="section-label" style={{ marginBottom: "0.75rem" }}>
Platform Features
</span>
<div className="section-divider" style={{ marginBottom: "1.25rem" }} />
<h2 className="section-title" style={{ marginBottom: "1rem" }}>
Everything You Need
</h2>
<p
className="section-subtitle"
style={{
maxWidth: "520px",
marginBottom: "0",
color: "#5a5a5a",
fontSize: "1.0625rem",
}}
>
From farm to table, manage your entire produce supply chain in one
place.
</p>
</div>
</div>
{/* Feature Cards Grid */}
<div
style={{
display: "grid",
gridTemplateColumns: "repeat(auto-fit, minmax(280px, 1fr))",
gap: "1.25rem",
}}
>
{features.map((feature, index) => (
<div
key={feature.title}
className={`feature-card stagger-${index + 1}`}
style={{
backgroundColor: feature.bgColor,
borderColor: `rgba(${index % 2 === 0 ? "107,143,113" : "201,122,62"}, 0.15)`,
}}
onMouseEnter={(e) => {
e.currentTarget.style.backgroundColor = feature.hoverBg;
e.currentTarget.style.borderColor = feature.borderColor;
}}
onMouseLeave={(e) => {
e.currentTarget.style.backgroundColor = feature.bgColor;
e.currentTarget.style.borderColor = `rgba(${
index % 2 === 0 ? "107,143,113" : "201,122,62"
}, 0.15)`;
}}
>
<div
className="feature-icon"
style={{
background: `linear-gradient(135deg, ${feature.borderColor}18, ${feature.borderColor}10)`,
color: feature.borderColor,
border: `1px solid ${feature.borderColor}20`,
}}
>
{feature.icon}
</div>
<h3 className="feature-title">{feature.title}</h3>
<p className="feature-description">{feature.description}</p>
</div>
))}
</div>
</section>
{/* ─── STATS SECTION ─── */}
<section
ref={statsRef}
style={{
background: "#1a4d2e",
padding: "5rem 1.5rem",
position: "relative",
overflow: "hidden",
}}
>
{/* Subtle background pattern */}
<div
style={{
position: "absolute",
inset: 0,
opacity: 0.04,
backgroundImage:
"radial-gradient(circle at 25% 25%, #faf8f5 1px, transparent 1px), radial-gradient(circle at 75% 75%, #faf8f5 1px, transparent 1px)",
backgroundSize: "32px 32px",
}}
/>
{/* Decorative top line */}
<div
style={{
position: "absolute",
top: 0,
left: 0,
right: 0,
height: "3px",
background:
"linear-gradient(to right, #c97a3e, #faf8f5, #c97a3e)",
}}
/>
<div
style={{
maxWidth: "1000px",
margin: "0 auto",
position: "relative",
zIndex: 1,
}}
>
{/* Header */}
<div style={{ textAlign: "center", marginBottom: "3.5rem" }}>
<span
style={{
display: "block",
fontFamily: "var(--font-manrope)",
fontSize: "0.75rem",
fontWeight: 600,
letterSpacing: "0.15em",
textTransform: "uppercase",
color: "#c97a3e",
marginBottom: "0.75rem",
}}
>
Our Reach
</span>
<h2
style={{
fontFamily: "var(--font-fraunces)",
fontSize: "clamp(2rem, 4vw, 2.75rem)",
fontWeight: 600,
color: "#faf8f5",
lineHeight: 1.2,
margin: "0 0 0.75rem",
}}
>
Growing Together
</h2>
<div
style={{
width: "48px",
height: "2px",
background: "linear-gradient(to right, transparent, #c97a3e, transparent)",
borderRadius: "1px",
margin: "0 auto",
}}
/>
</div>
{/* Stats Grid */}
<div
style={{
display: "grid",
gridTemplateColumns: "repeat(4, 1fr)",
gap: "1rem",
alignItems: "center",
}}
>
{stats.map((stat, index) => (
<div
key={stat.label}
className={`stat-block stat-stagger-${index + 1}`}
>
<div
style={{
fontFamily: "var(--font-fraunces)",
fontSize: "clamp(2.25rem, 4.5vw, 3.75rem)",
fontWeight: 700,
color: "#faf8f5",
lineHeight: 1,
marginBottom: "0.5rem",
display: "flex",
alignItems: "baseline",
justifyContent: "center",
gap: "0.1em",
}}
>
{stat.prefix && (
<span
style={{
fontSize: "0.55em",
fontWeight: 500,
color: "#c97a3e",
marginRight: "0.05em",
}}
>
{stat.prefix}
</span>
)}
<span>
{counters[index].toLocaleString()}
</span>
<span
style={{
fontSize: "0.55em",
fontWeight: 500,
color: "#c97a3e",
marginLeft: "0.05em",
}}
>
{stat.suffix}
</span>
</div>
<p
style={{
fontFamily: "var(--font-manrope)",
fontSize: "0.875rem",
fontWeight: 500,
color: "#6b8f71",
letterSpacing: "0.02em",
margin: 0,
}}
>
{stat.label}
</p>
{/* Divider between stats */}
{index < stats.length - 1 && (
<div
style={{
display: "none",
}}
className="stats-divider"
/>
)}
</div>
))}
</div>
</div>
</section>
</div>
);
}
@@ -1,670 +0,0 @@
"use client";
import { motion } from "framer-motion";
import Link from "next/link";
const testimonials = [
{
initials: "TC",
name: "Tuxedo Corn Co.",
location: "Olathe, Colorado",
quote:
"Route Commerce transformed how we manage our wholesale operations. Our pickup efficiency increased by 40% in the first month.",
},
{
initials: "IR",
name: "Indian River Citrus",
location: "Indian River, Florida",
quote:
"The Harvest Reach feature alone has recovered thousands in abandoned cart revenue. Game changer for our business.",
},
];
const containerVariants = {
hidden: { opacity: 0 },
visible: {
opacity: 1,
transition: {
staggerChildren: 0.15,
delayChildren: 0.1,
},
},
};
const itemVariants = {
hidden: { opacity: 0, y: 24 },
visible: {
opacity: 1,
y: 0,
transition: {
duration: 0.6,
ease: "easeOut" as const,
},
},
};
const cardHoverVariants = {
rest: { y: 0, boxShadow: "0 4px 24px rgba(26, 77, 46, 0.08)" },
hover: {
y: -4,
boxShadow: "0 12px 40px rgba(26, 77, 46, 0.12)",
transition: { duration: 0.3, ease: "easeOut" },
},
};
export default function TestimonialsAndCTA() {
return (
<>
{/* ─── Testimonials Section ─────────────────────────────────────────────── */}
<section
style={{
background: "linear-gradient(180deg, #faf8f5 0%, #f5f2ed 100%)",
fontFamily: "var(--font-manrope)",
}}
>
{/* Decorative botanical accent */}
<div
style={{
position: "absolute",
left: "5%",
top: "20%",
width: "120px",
height: "120px",
opacity: 0.06,
background: "radial-gradient(ellipse at center, #1a4d2e 0%, transparent 70%)",
borderRadius: "50%",
pointerEvents: "none",
}}
aria-hidden="true"
/>
<div
style={{
position: "absolute",
right: "8%",
bottom: "15%",
width: "80px",
height: "80px",
opacity: 0.05,
background: "radial-gradient(ellipse at center, #c97a3e 0%, transparent 70%)",
borderRadius: "50%",
pointerEvents: "none",
}}
aria-hidden="true"
/>
<div className="relative mx-auto max-w-6xl px-6 py-24">
{/* Section header */}
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: "-60px" }}
transition={{ duration: 0.7, ease: [0.22, 0.61, 0.36, 1] }}
className="mb-16 text-center"
>
<span
style={{
display: "inline-flex",
alignItems: "center",
gap: "8px",
fontSize: "0.75rem",
fontWeight: 600,
letterSpacing: "0.1em",
textTransform: "uppercase",
color: "#6b8f71",
marginBottom: "12px",
}}
>
<svg
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M12 2L2 7l10 5 10-5-10-5z" />
<path d="M2 17l10 5 10-5" />
<path d="M2 12l10 5 10-5" />
</svg>
Testimonials
</span>
<h2
style={{
fontFamily: "var(--font-fraunces)",
fontSize: "clamp(2.5rem, 5vw, 3.5rem)",
fontWeight: 600,
lineHeight: 1.1,
color: "#1a1a1a",
letterSpacing: "-0.02em",
}}
>
Trusted by Farms
</h2>
<p
style={{
marginTop: "16px",
fontSize: "1.125rem",
color: "#555555",
maxWidth: "480px",
marginLeft: "auto",
marginRight: "auto",
}}
>
Produce operations across the country rely on Route Commerce to power their farm-fresh distribution.
</p>
</motion.div>
{/* Testimonial cards */}
<motion.div
variants={containerVariants}
initial="hidden"
whileInView="visible"
viewport={{ once: true, margin: "-40px" }}
style={{
display: "grid",
gridTemplateColumns: "repeat(auto-fit, minmax(320px, 1fr))",
gap: "24px",
maxWidth: "800px",
margin: "0 auto",
}}
>
{testimonials.map((testimonial) => (
<motion.div
key={testimonial.name}
variants={itemVariants}
style={{
background: "linear-gradient(145deg, #ffffff 0%, #fdfcfa 100%)",
borderRadius: "20px",
padding: "32px",
border: "1px solid rgba(26, 77, 46, 0.08)",
position: "relative",
overflow: "hidden",
}}
whileHover="hover"
initial="rest"
animate="rest"
>
{/* Decorative quote mark */}
<div
style={{
position: "absolute",
top: "-8px",
right: "20px",
fontSize: "80px",
fontFamily: "var(--font-fraunces)",
color: "rgba(26, 77, 46, 0.06)",
lineHeight: 1,
pointerEvents: "none",
}}
aria-hidden="true"
>
&ldquo;
</div>
{/* Avatar with gradient */}
<div
style={{
width: "56px",
height: "56px",
borderRadius: "50%",
background: `linear-gradient(135deg, #1a4d2e 0%, #6b8f71 50%, #c97a3e 100%)`,
display: "flex",
alignItems: "center",
justifyContent: "center",
marginBottom: "20px",
boxShadow: "0 4px 12px rgba(26, 77, 46, 0.15)",
}}
>
<span
style={{
color: "#ffffff",
fontSize: "1rem",
fontWeight: 700,
letterSpacing: "0.05em",
textShadow: "0 1px 2px rgba(0,0,0,0.1)",
}}
>
{testimonial.initials}
</span>
</div>
{/* Quote text */}
<blockquote
style={{
fontSize: "1rem",
lineHeight: 1.7,
color: "#1a1a1a",
margin: 0,
marginBottom: "20px",
position: "relative",
zIndex: 1,
}}
>
&ldquo;{testimonial.quote}&rdquo;
</blockquote>
{/* Attribution */}
<div style={{ borderTop: "1px solid rgba(0,0,0,0.06)", paddingTop: "16px" }}>
<p
style={{
fontWeight: 700,
fontSize: "0.9375rem",
color: "#1a1a1a",
margin: 0,
}}
>
{testimonial.name}
</p>
<p
style={{
fontSize: "0.8125rem",
color: "#6b8f71",
margin: 0,
marginTop: "4px",
fontWeight: 500,
}}
>
{testimonial.location}
</p>
</div>
</motion.div>
))}
</motion.div>
{/* Trust indicators */}
<motion.div
initial={{ opacity: 0, y: 16 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6, delay: 0.3 }}
style={{
display: "flex",
justifyContent: "center",
gap: "40px",
marginTop: "48px",
flexWrap: "wrap",
}}
>
{[
{ value: "200+", label: "Farms & Co-ops" },
{ value: "40%", label: "Avg. Efficiency Gain" },
{ value: "94%", label: "Customer Retention" },
].map((stat) => (
<div key={stat.label} style={{ textAlign: "center" }}>
<div
style={{
fontFamily: "var(--font-fraunces)",
fontSize: "2.5rem",
fontWeight: 600,
color: "#1a4d2e",
lineHeight: 1,
}}
>
{stat.value}
</div>
<div
style={{
fontSize: "0.8125rem",
color: "#6b8f71",
marginTop: "6px",
fontWeight: 500,
}}
>
{stat.label}
</div>
</div>
))}
</motion.div>
</div>
</section>
{/* ─── CTA Section ──────────────────────────────────────────────────────── */}
<section
style={{
background: "linear-gradient(180deg, #f5f2ed 0%, #faf8f5 50%, #faf8f5 100%)",
position: "relative",
overflow: "hidden",
fontFamily: "var(--font-manrope)",
}}
>
{/* Decorative gradient orbs */}
<div
style={{
position: "absolute",
top: "10%",
left: "10%",
width: "300px",
height: "300px",
background: "radial-gradient(circle, rgba(26, 77, 46, 0.08) 0%, transparent 70%)",
borderRadius: "50%",
pointerEvents: "none",
}}
aria-hidden="true"
/>
<div
style={{
position: "absolute",
bottom: "0",
right: "5%",
width: "250px",
height: "250px",
background: "radial-gradient(circle, rgba(201, 122, 62, 0.06) 0%, transparent 70%)",
borderRadius: "50%",
pointerEvents: "none",
}}
aria-hidden="true"
/>
{/* Botanical line decoration */}
<svg
style={{
position: "absolute",
top: "20px",
right: "15%",
width: "60px",
height: "100px",
opacity: 0.15,
}}
viewBox="0 0 60 100"
fill="none"
aria-hidden="true"
>
<path
d="M30 100 C30 60, 10 50, 30 20 C50 50, 30 60, 30 100"
stroke="#1a4d2e"
strokeWidth="2"
fill="none"
/>
<path
d="M30 70 C20 60, 15 55, 25 45"
stroke="#1a4d2e"
strokeWidth="1.5"
fill="none"
/>
<path
d="M30 70 C40 60, 45 55, 35 45"
stroke="#1a4d2e"
strokeWidth="1.5"
fill="none"
/>
<circle cx="30" cy="15" r="3" fill="#6b8f71" />
<circle cx="22" cy="42" r="2" fill="#c97a3e" />
<circle cx="38" cy="42" r="2" fill="#c97a3e" />
</svg>
<div className="relative mx-auto max-w-4xl px-6 py-28 text-center">
<motion.div
initial={{ opacity: 0, y: 32 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: "-80px" }}
transition={{ duration: 0.8, ease: [0.22, 0.61, 0.36, 1] }}
>
{/* Section label */}
<span
style={{
display: "inline-block",
fontSize: "0.75rem",
fontWeight: 600,
letterSpacing: "0.1em",
textTransform: "uppercase",
color: "#c97a3e",
marginBottom: "16px",
padding: "6px 14px",
background: "rgba(201, 122, 62, 0.1)",
borderRadius: "20px",
}}
>
Get Started Today
</span>
{/* Headline */}
<h2
style={{
fontFamily: "var(--font-fraunces)",
fontSize: "clamp(2.75rem, 6vw, 4rem)",
fontWeight: 600,
lineHeight: 1.1,
color: "#1a1a1a",
letterSpacing: "-0.02em",
marginBottom: "20px",
}}
>
Ready to Grow Your Routes?
</h2>
{/* Subtitle */}
<p
style={{
fontSize: "1.125rem",
lineHeight: 1.7,
color: "#555555",
maxWidth: "560px",
margin: "0 auto 36px",
}}
>
Join hundreds of produce brands who trust Route Commerce to power their farm-fresh operations.
</p>
{/* CTA Buttons */}
<div
style={{
display: "flex",
gap: "16px",
justifyContent: "center",
flexWrap: "wrap",
}}
>
{/* Primary button */}
<motion.div
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
transition={{ duration: 0.2 }}
>
<Link
href="/admin"
style={{
display: "inline-flex",
alignItems: "center",
gap: "8px",
padding: "16px 32px",
background: "rgba(26, 77, 46, 0.9)",
backdropFilter: "blur(12px)",
WebkitBackdropFilter: "blur(12px)",
border: "1px solid rgba(255, 255, 255, 0.25)",
color: "#ffffff",
fontSize: "1rem",
fontWeight: 600,
borderRadius: "12px",
cursor: "pointer",
textDecoration: "none",
boxShadow: "0 8px 32px rgba(26, 77, 46, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.1)",
transition: "background 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease, border-color 0.3s ease",
}}
onMouseEnter={(e) => {
e.currentTarget.style.background = "rgba(45, 107, 79, 0.95)";
e.currentTarget.style.boxShadow = "0 12px 40px rgba(26, 77, 46, 0.45), inset 0 1px 0 rgba(255,255,255, 0.2)";
e.currentTarget.style.transform = "translateY(-2px)";
e.currentTarget.style.borderColor = "rgba(255,255,255, 0.35)";
}}
onMouseLeave={(e) => {
e.currentTarget.style.background = "rgba(26, 77, 46, 0.9)";
e.currentTarget.style.boxShadow = "0 8px 32px rgba(26, 77, 46, 0.35), inset 0 1px 0 rgba(255,255,255, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.1)";
e.currentTarget.style.transform = "translateY(0)";
e.currentTarget.style.borderColor = "rgba(255,255,255, 0.25)";
}}
>
Start Free Trial
<svg
width="18"
height="18"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M5 12h14" />
<path d="m12 5 7 7-7 7" />
</svg>
</Link>
</motion.div>
{/* Secondary button */}
<motion.div
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
transition={{ duration: 0.2 }}
>
<Link
href="/brands"
style={{
display: "inline-flex",
alignItems: "center",
gap: "8px",
padding: "16px 32px",
background: "rgba(250, 248, 245, 0.8)",
backdropFilter: "blur(12px)",
WebkitBackdropFilter: "blur(12px)",
border: "1px solid rgba(26, 77, 46, 0.2)",
color: "#1a4d2e",
fontSize: "1rem",
fontWeight: 600,
borderRadius: "12px",
cursor: "pointer",
textDecoration: "none",
boxShadow: "0 4px 16px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.5)",
transition: "background 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease",
}}
onMouseEnter={(e) => {
e.currentTarget.style.background = "rgba(255, 255, 255, 0.9)";
e.currentTarget.style.borderColor = "rgba(26, 77, 46, 0.4)";
e.currentTarget.style.boxShadow = "0 8px 24px rgba(26, 77, 46, 0.12), inset 0 1px 0 rgba(255,255,255, 0.6)";
e.currentTarget.style.transform = "translateY(-2px)";
}}
onMouseLeave={(e) => {
e.currentTarget.style.background = "rgba(250, 248, 245, 0.8)";
e.currentTarget.style.borderColor = "rgba(26, 77, 46, 0.2)";
e.currentTarget.style.boxShadow = "0 4px 16px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.5)";
e.currentTarget.style.transform = "translateY(0)";
}}
>
<svg
width="18"
height="18"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
<polyline points="9 22 9 12 15 12 15 22" />
</svg>
View Farms
</Link>
</motion.div>
</div>
{/* Disclaimer */}
<p
style={{
marginTop: "24px",
fontSize: "0.8125rem",
color: "#888888",
display: "flex",
alignItems: "center",
justifyContent: "center",
gap: "6px",
}}
>
<svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
style={{ opacity: 0.6 }}
>
<rect x="3" y="11" width="18" height="11" rx="2" ry="2" />
<path d="M7 11V7a5 5 0 0 1 10 0v4" />
</svg>
No credit card required · 14-day free trial · Cancel anytime
</p>
</motion.div>
{/* Bottom decorative element */}
<div
style={{
marginTop: "60px",
display: "flex",
justifyContent: "center",
gap: "8px",
opacity: 0.3,
}}
>
{[0, 1, 2, 3, 4].map((i) => (
<div
key={i}
style={{
width: i === 2 ? "24px" : "6px",
height: "6px",
borderRadius: "3px",
background: i === 2 ? "#1a4d2e" : "#1a4d2e",
opacity: i === 2 ? 1 : 0.4,
}}
/>
))}
</div>
</div>
</section>
<style dangerouslySetInnerHTML={{ __html: `
@keyframes tc-fade-in-up {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes tc-float {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-8px);
}
}
@keyframes tc-pulse-soft {
0%, 100% {
opacity: 0.6;
}
50% {
opacity: 1;
}
}
/* Scroll-triggered animations */
section {
scroll-margin-top: 80px;
}
/* Ensure smooth transitions */
a, button {
-webkit-tap-highlight-color: transparent;
}
`}} />
</>
);
}