import React, { useEffect, useRef } from 'react';
import Chatbot from '../components/Chatbot';
import { useAuth } from '../context/AuthContext';
import { useTheme } from '../context/ThemeContext';
import { ArrowRight, CheckCircle2, Home, Star, ShieldCheck, Clock, Award, TrendingDown, Users, MapPin, Phone, Mail, Instagram, Twitter, Youtube, Sun, Moon, LogOut, LayoutDashboard, User, Menu, X, ChevronDown } from 'lucide-react';
import { Link } from 'react-router-dom';
import { SpotlightCard } from '../components/SpotlightCard';
import { ComparisonSlider } from '../components/ComparisonSlider';
import Services from '../components/Services';
import IntelligenceMap from '../components/IntelligenceMap';
import gsap from 'gsap';
import { ScrollTrigger } from 'gsap/ScrollTrigger';
import Logo from '../assets/images/LynkedUp_Pro_F_logo_Y.png';
import HeroImg from '../assets/images/hero_aerial_scan.png';
import ProcessImg1 from '../assets/images/process.png';
import ProcessImg2 from '../assets/images/process-2.png';
import ProcessImg3 from '../assets/images/process-3.png';
gsap.registerPlugin(ScrollTrigger);
const Landing = () => {
const { user } = useAuth();
const { theme, toggleTheme } = useTheme();
const heroRef = useRef(null);
const textRef = useRef(null);
const sectionsRef = useRef([]);
const statRefs = useRef([]);
const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false);
const cursorGlowRef = useRef(null);
// Mouse-follow ambient light β tracks cursor across the page
useEffect(() => {
const handleMouseMove = (e) => {
if (cursorGlowRef.current) {
cursorGlowRef.current.style.setProperty('--glow-x', `${e.clientX}px`);
cursorGlowRef.current.style.setProperty('--glow-y', `${e.clientY}px`);
}
};
window.addEventListener('mousemove', handleMouseMove);
return () => window.removeEventListener('mousemove', handleMouseMove);
}, []);
useEffect(() => {
// Console Signature (Info level to persist in prod)
console.info(
"%c Built by Satyam Rastogi %c π Ready for liftoff ",
"background: #3b82f6; color: white; padding: 4px; border-radius: 4px 0 0 4px; font-weight: bold;",
"background: #10b981; color: white; padding: 4px; border-radius: 0 4px 4px 0;"
);
// Hero Animation
gsap.fromTo(textRef.current.children,
{ y: 50, opacity: 0 },
{ y: 0, opacity: 1, duration: 1, stagger: 0.2, ease: "power3.out" }
);
// Scroll Animations
sectionsRef.current.forEach((el) => {
gsap.fromTo(el,
{ y: 50, opacity: 0 },
{
y: 0, opacity: 1, duration: 0.8, ease: "power2.out",
scrollTrigger: {
trigger: el,
start: "top 80%",
}
}
);
});
// Animated Stat Counters β proxy object approach (avoids GSAP innerText parsing conflicts)
statRefs.current.forEach((el) => {
if (!el) return;
const target = parseFloat(el.dataset.target);
const suffix = el.dataset.suffix || '';
const counter = { value: 0 };
el.innerText = '0' + suffix;
gsap.to(counter, {
value: target,
duration: 2,
ease: "power1.out",
scrollTrigger: {
trigger: el,
start: "top 85%",
toggleActions: "play none none none",
},
onUpdate: () => {
el.innerText = Math.ceil(counter.value) + suffix;
}
});
});
}, []);
const addToRefs = (el) => {
if (el && !sectionsRef.current.includes(el)) {
sectionsRef.current.push(el);
}
};
return (
{/* CURSOR AMBIENT LIGHT β subtle glow that follows mouse, desktop only */}
{/* Nav */}
{/*
LynkedUp Pro */}
{/* Desktop Nav */}
{theme === 'dark' ? : }
{!user ? (
Sign In
) : (
{user.role === 'CUSTOMER' ? 'My Profile' : 'Dashboard'}
)}
{/* Mobile Menu Toggle */}
setIsMobileMenuOpen(!isMobileMenuOpen)}
>
{isMobileMenuOpen ? : }
{/* Mobile Nav Dropdown */}
{isMobileMenuOpen && (
{ toggleTheme(); setIsMobileMenuOpen(false); }}
className="flex items-center space-x-3 p-3 rounded-xl bg-zinc-100 dark:bg-zinc-900"
>
{theme === 'dark' ? : }
{theme === 'dark' ? 'Light Mode' : 'Dark Mode'}
{!user ? (
setIsMobileMenuOpen(false)}
className="w-full text-center py-3 rounded-xl font-bold uppercase tracking-wider bg-blue-600 text-white"
>
Sign In
) : (
<>
setIsMobileMenuOpen(false)}
className="w-full text-center py-3 rounded-xl font-bold uppercase tracking-wider bg-black dark:bg-white text-white dark:text-black"
>
{user.role === 'CUSTOMER' ? 'My Profile' : 'Dashboard'}
{ useAuth().logout(); setIsMobileMenuOpen(false); }}
className="w-full text-center py-3 rounded-xl font-bold uppercase tracking-wider bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400"
>
Sign Out
>
)}
)}
{/* ============================================ */}
{/* HERO SECTION β "The Overhead View" */}
{/* Aerospace Precision & Hometown Trust */}
{/* ============================================ */}
{/* Layer 0: Background image */}
{/* Layer 1: Subtle ambient glow behind content */}
{/* Layer 3: Content */}
{/* Patriotic badge β identity + mission statement */}
πΊπΈ
Crafted to Level the Field for Those Who Build{' '}
America
{/* Headline β Inter font-black: BOLD, commanding, statement piece */}
ROOFING
REVOLUTIONIZED
{/* Subtitle β the value proposition with credibility */}
Automated drone inspections. Instant AI estimates.
Restoring your home's integrity with{' '}
20+ years of precision.
{/* Dual CTAs */}
{/* B2C: Homeowners */}
Schedule Demo
{/* B2B: Contractors */}
Start Free Trial
{/* Discount banner β Veterans, Seniors, Active Duty */}
Active Duty, Veterans & Seniors
Get an exclusive 15% Discount on all services.
{/* Layer 4: HUD Annotations β desktop only */}
▸
2,847 PROPERTIES TRACKED
DFW METRO · ZONE 2
▸
HAIL WATCH ACTIVE
ETA 35 MIN · WIND 24 MPH
{/* Scroll indicator */}
Scroll
{/* ββ Shingle Divider ββ */}
{/* PROCESS SECTION (From Sky to Safety) */}
The Workflow
From Sky to Safety in 3 Steps.
{/* Step 1 */}
LIDAR_MAPPING_ACTIVE
01
The Scan.
Drones use LiDAR imagery and high-fidelity photogrammetry to map out your roof in sub-millimeter detail. We capture every angle, creating a perfect digital twin of your property without anyone ever stepping foot on a ladder.
{'$'}{'@'}{'t'}{'Ρ'}{'Π°'}{'m'} {'R'}{'Π°'}{'Ρ'}{'t'}{'0'}{'g'}{'1'}
100% Contactless Inspection
15-Minute Flight Time
{/* Step 2 */}
02
The Diagnosis.
This data is sent to our AI models , which instantly diagnose issues invisible to the naked eye. The algorithm highlights storm damage, wear patterns, and insulation failures, scoring them by urgency.
"Better, faster, and more accurate decisionsβeliminating human error."
Structure Integrity 76%
Moisture Level CRITICAL
igotsar.matyas | LynkedUpPro - Turns out roofing CRMs don't build themselves. Who knew?
{/* Step 3 */}
03
The Resolution.
{[
"Generate property assessment reports & repair estimates in minutes.",
"Document visible damage using AI-verified, objective evidence.",
"Share reports with property owners or insurance instantly.",
"Base all findings on measurable inspection data, not opinions.",
"Equip field reps with verified evidence to operate with confidence.",
"Provide a single, factual record all parties can rely on."
].map((item, i) => (
))}
Cost Efficient
Data-Backed
{/* COMPARISON SLIDER SECTION */}
{/* NEW SERVICES SECTION */}
{/* NEW INTELLIGENCE MAP SECTION */}
{/* ββ Shingle Divider ββ */}
{/* FACT CHECK & STATS β Blueprint grid + Measurement tape aesthetic */}
⚠ Critical Data
Why Risk The Wait?
Delaying roof repairs leads to exponential damage. Here are the facts.
{/* Stat Card 1 β Insurance Denials */}
statRefs.current[0] = el}
data-target="40"
data-suffix="%"
className="text-5xl font-mono font-bold text-red-500 mb-1 tracking-tight"
>
0%
Insurance Denials
Of claims are denied due to "lack of maintenance" if proof of regular inspection isn't provided.
✕ High Risk
{/* Stat Card 2 β Life Reduced */}
statRefs.current[1] = el}
data-target="5"
data-suffix=" yrs"
className="text-5xl font-mono font-bold text-yellow-500 mb-1 tracking-tight"
>
0 yrs
Life Reduced
A minor leak left for 6 months can reduce your roof's lifespan by up to 5 years.
⚠ Caution
{/* Stat Card 3 β Estimate Time */}
statRefs.current[2] = el}
data-target="15"
data-suffix=" min"
className="text-5xl font-mono font-bold text-emerald-500 mb-1 tracking-tight"
>
0 min
Our Estimate Time
While others take days, we give you a quote before our drone even lands.
✓ Verified
{/* ββ Shingle Divider ββ */}
{/* INDUSTRIES THAT LOVE US */}
Industries that Love Us
{/* Contractors Card */}
Contractors live and die by speed, quality workmanship, and trust; thatβs exactly what LynkedUp delivers.
Faster insurance approvals through time-stamped, geo-verified capture.
Fewer chargebacks & denials with irrefutable evidence.
Shorter sales cycles β homeowners trust what they can see.
More profitable jobs with accurate scopes.
Result
One system replaces 5β7 tools.
{/* Asset Managers Card */}
Asset managers care about risk reduction, documentation, and long-term asset value, not sales hype.
Verified condition records for every property.
Audit-ready documentation for lenders & investors.
Reduced fraud exposure β no undocumented claims.
Remote visibility across portfolios.
Net Effect
A digital twin that reduces capital risk.
{/* Homeowners Card */}
Homeowners want protection and clarity, not pressure. We give them exactly that.
Clear, visual proof instead of confusing explanations.
Transparency β see whatβs submitted to insurance.
Faster claim resolution with fewer surprises.
Permanent property record for resale value.
Feeling
Informed, protected, and confident.
{/* ββ Shingle Divider ββ */}
{/* ββββββββββββββββββββββββββββββββββββββββββββββββββ */}
{/* CRANE CTA β "One crane, one card, one moment" */}
{/* Construction signature element before footer */}
{/* ββββββββββββββββββββββββββββββββββββββββββββββββββ */}
{/* Blueprint grid background */}
{/* Tower Crane SVG β full-scale blueprint line art */}
{/* ===== TOWER / LATTICE MAST ===== */}
{/* Main vertical rails */}
{/* Horizontal rungs */}
{/* X-bracing */}
{/* ===== SLEWING PLATFORM + OPERATOR CAB ===== */}
{/* Cab window */}
{/* ===== A-FRAME / APEX ===== */}
{/* Cross-tie */}
{/* ===== SUPPORT CABLES (apex to jib tips) ===== */}
{/* ===== COUNTER-JIB (left of tower) ===== */}
{/* End closer */}
{/* Diagonals */}
{/* Counterweight blocks */}
{/* ===== MAIN JIB / BOOM (right of tower) ===== */}
{/* Top chord */}
{/* Bottom chord */}
{/* End vertical */}
{/* Diagonal bracing */}
{/* Vertical stiffeners */}
{/* ===== TROLLEY ===== */}
{/* Wheels */}
{/* ===== HOIST CABLE ===== */}
{/* ===== HOOK BLOCK ===== */}
{/* Hook */}
{/* CTA Card β "suspended" from crane, swings like a pendulum */}
{/* Attachment point β visual connector to cable above */}
✓ Project Ready
Ready to Build?
Whether you protect one home or manage a thousand roofs, the future of roofing starts here.
Schedule Demo
Start Free Trial
{/* ββ Shingle Divider ββ */}
{/* FOOTER */}
{/* Background Pattern */}
{/* Brand */}
Revolutionizing property management and roofing inspections with military-grade precision and AI-driven insights. Built for the modern homeowner.
{/* Platform */}
Platform
For Homeowners
For Contractors
Intelligence Map
How It Works
Pricing
{/* Contact */}
Contact
16990 Dallas Pkwy Suite 206 Dallas, TX 75248
866-259-6533
Info@LynkedUpPro.com
{/* Legal */}
Legal
Privacy Policy
Terms of Service
Drone Flight Safety
Sitemap
© 2026 LynkedUp Pro. All Rights Reserved.
Powered by LynkedUp Technologies
β¨
Satyam Rastogi made this. Blame him for the bugs, praise him for the features.
5@7y@m R@570g1 | LynkedUpPro - You're reading the fine print? You'd be great at roofing contracts.
);
};
export default Landing;