import React, { useState, useEffect, useCallback } from 'react';
import {
Zap,
Target,
GraduationCap,
ArrowRight,
CheckCircle2,
Menu,
X,
ChevronDown,
AlertCircle,
RefreshCcw,
ShieldCheck,
Cookie
} from 'lucide-react';
/**
* DNL DYNAMICS - ENTERPRISE GRADE FRONTEND
* Features: High-Level SEO, Bot Security, Cookie Compliance, and Performance Optimization.
*/
const App = () => {
// --- UI State ---
const [isMenuOpen, setIsMenuOpen] = useState(false);
const [formSubmitted, setFormSubmitted] = useState(false);
const [isSubmitting, setIsSubmitting] = useState(false);
const [errorMessage, setErrorMessage] = useState("");
const [cookieConsent, setCookieConsent] = useState(false);
const [showCookieBanner, setShowCookieBanner] = useState(false);
// --- Security & Validation State ---
const [botTrap, setBotTrap] = useState(""); // Honeypot
const [loadTimestamp] = useState(Date.now()); // Bot-thwarting timer
const [formData, setFormData] = useState({
name: '',
email: '',
service: '',
message: ''
});
// --- Initialization: SEO & Privacy Check ---
useEffect(() => {
// 1. Dynamic SEO Injection (Meta & JSON-LD)
document.title = "DNL Dynamics | Smarter Systems. Better Results.";
const schemaData = {
"@context": "https://schema.org",
"@type": "ConsultingService",
"name": "DNL Dynamics",
"alternateName": "DNL Automation & Marketing",
"description": "Custom AI automation and growth marketing consultancy for high-performance SMBs.",
"url": window.location.href,
"logo": "https://dnl-dynamics.com/logo.png", // Replace with actual logo URL
"areaServed": "Global",
"serviceType": [
"Business Process Automation",
"AI Workflow Design",
"Performance Marketing",
"Executive AI Training"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer service",
"email": "hello@dnldynamics.com"
}
};
const script = document.createElement('script');
script.type = 'application/ld+json';
script.innerHTML = JSON.stringify(schemaData);
document.head.appendChild(script);
// 2. Cookie Persistence Check
const hasConsented = localStorage.getItem('dnl_cookie_consent');
if (!hasConsented) {
setTimeout(() => setShowCookieBanner(true), 1500);
}
return () => {
document.head.removeChild(script);
};
}, []);
// --- Handlers ---
const handleInputChange = (e) => {
const { name, value } = e.target;
setFormData(prev => ({ ...prev, [name]: value }));
};
const acceptCookies = () => {
localStorage.setItem('dnl_cookie_consent', 'true');
setCookieConsent(true);
setShowCookieBanner(false);
};
const handleSubmit = async (e) => {
e.preventDefault();
// SECURITY LAYER 1: Honeypot Check (Bots usually fill every field)
if (botTrap !== "") {
console.error("Bot action detected.");
return;
}
// SECURITY LAYER 2: Timing Check (Human's don't fill forms in < 3 seconds)
const timeElapsed = (Date.now() - loadTimestamp) / 1000;
if (timeElapsed < 3) {
setErrorMessage("Please slow down. Rapid submissions are flagged for review.");
return;
}
// SECURITY LAYER 3: Email Validation
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(formData.email)) {
setErrorMessage("Please enter a valid business email address.");
return;
}
setIsSubmitting(true);
setErrorMessage("");
const SERVICE_ID = "service_jd4zlrc";
const TEMPLATE_ID = "template_hhiuhks";
const PUBLIC_KEY = "E4c2gwrZmAu45w22y";
const payload = {
service_id: SERVICE_ID,
template_id: TEMPLATE_ID,
user_id: PUBLIC_KEY,
template_params: {
from_name: formData.name,
from_email: formData.email,
interest: formData.service,
message: formData.message,
submission_time: new Date().toLocaleString(),
reply_to: formData.email
}
};
try {
const response = await fetch('https://api.emailjs.com/api/v1.0/email/send', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
if (response.ok) {
setFormSubmitted(true);
} else {
const errorText = await response.text();
throw new Error(errorText || "Transmission error.");
}
} catch (err) {
setErrorMessage("System busy. Please try again or contact us via LinkedIn.");
} finally {
setIsSubmitting(false);
}
};
const scrollToSection = useCallback((id) => {
const element = document.getElementById(id);
if (element) {
element.scrollIntoView({ behavior: 'smooth' });
setIsMenuOpen(false);
}
}, []);
return (
<div className="min-h-screen bg-black text-white font-sans selection:bg-[#E2FF00] selection:text-black overflow-x-hidden">
{/* 1. Header Navigation */}
<header className="fixed w-full z-50 bg-black/80 backdrop-blur-md border-b border-white/10">
<nav className="max-w-7xl mx-auto px-6 h-20 flex items-center justify-between" aria-label="Global Navigation">
<div className="flex items-center gap-2">
<div className="w-2 h-8 bg-[#6366f1] rounded-full mr-2"></div>
<span className="text-2xl font-black italic tracking-tighter uppercase">
DNL <span className="text-[#E2FF00]">DYNAMICS</span>
</span>
</div>
<div className="hidden md:flex items-center gap-10">
<button onClick={() => scrollToSection('services')} className="text-xs font-black tracking-widest uppercase hover:text-[#E2FF00] transition-colors focus:outline-none focus:ring-1 focus:ring-[#E2FF00] p-1">Services</button>
<button onClick={() => scrollToSection('about')} className="text-xs font-black tracking-widest uppercase hover:text-[#E2FF00] transition-colors focus:outline-none focus:ring-1 focus:ring-[#E2FF00] p-1">About</button>
<button
onClick={() => scrollToSection('contact')}
className="px-6 py-2 bg-white text-black font-black text-sm italic hover:bg-[#E2FF00] transition-all rounded-sm tracking-tight uppercase shadow-lg shadow-white/5 active:scale-95"
>
Start Discovery
</button>
</div>
<button
className="md:hidden p-2 text-white"
onClick={() => setIsMenuOpen(!isMenuOpen)}
aria-expanded={isMenuOpen}
aria-label="Toggle navigation menu"
>
{isMenuOpen ? <X className="w-6 h-6" /> : <Menu className="w-6 h-6" />}
</button>
</nav>
</header>
<main>
{/* Mobile Menu Overlay */}
{isMenuOpen && (
<div className="fixed inset-0 z-40 bg-black pt-32 px-10 md:hidden flex flex-col gap-10 animate-in slide-in-from-right duration-300">
<button onClick={() => scrollToSection('services')} className="text-4xl font-black text-left italic tracking-tighter uppercase">SERVICES</button>
<button onClick={() => scrollToSection('about')} className="text-4xl font-black text-left italic tracking-tighter uppercase">ABOUT</button>
<button
onClick={() => scrollToSection('contact')}
className="text-4xl font-black text-left text-[#E2FF00] italic tracking-tighter underline decoration-4 underline-offset-8 uppercase"
>
DISCOVER MORE
</button>
</div>
)}
{/* Hero Section */}
<section className="relative pt-32 pb-24 overflow-hidden border-b border-white/5" id="hero">
<div className="absolute top-0 right-0 w-[600px] h-[600px] bg-[#6366f1]/10 rounded-full blur-[150px] -z-10"></div>
<div className="absolute -bottom-20 -left-20 w-[400px] h-[400px] bg-[#E2FF00]/5 rounded-full blur-[120px] -z-10"></div>
<div className="max-w-7xl mx-auto px-6 text-center md:text-left">
<div className="max-w-4xl">
<div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full border border-white/10 bg-white/5 text-[#E2FF00] text-[10px] font-black mb-6 tracking-[0.2em] uppercase ring-1 ring-[#E2FF00]/20">
<ShieldCheck className="w-3.5 h-3.5" /> SECURE DISCOVERY ENVIRONMENT
</div>
<h1 className="text-5xl md:text-[90px] font-black italic tracking-tighter leading-[0.85] mb-8 uppercase text-balance">
SMARTER SYSTEMS. <br />
<span className="text-transparent bg-clip-text bg-gradient-to-r from-white via-white to-zinc-600 uppercase">BETTER RESULTS.</span>
</h1>
<p className="text-lg md:text-2xl text-gray-400 max-w-2xl mb-10 leading-relaxed font-medium">
Most local businesses are buried in the day-to-day. We help you break through using custom automation and high-performance marketing. From saving hours on admin to finding your next customer, we build the foundations you need to grow with total precision.
</p>
<div className="flex flex-col sm:flex-row gap-5 justify-center md:justify-start">
<button
onClick={() => scrollToSection('contact')}
className="group flex items-center justify-center gap-3 px-10 py-5 bg-[#E2FF00] text-black font-black italic text-lg rounded-sm transition-all hover:bg-white hover:scale-[1.02] shadow-xl shadow-[#E2FF00]/10"
>
START THE DISCOVERY SESSION <ArrowRight className="w-5 h-5 group-hover:translate-x-1 transition-transform" />
</button>
<button
onClick={() => scrollToSection('services')}
className="px-10 py-5 border border-white/20 hover:bg-white/5 font-black italic text-lg rounded-sm transition-all uppercase"
>
Our Services
</button>
</div>
</div>
</div>
</section>
{/* Services Section */}
<section id="services" className="py-24 bg-zinc-950 relative">
<div className="max-w-7xl mx-auto px-6">
<div className="flex flex-col md:flex-row md:items-end justify-between mb-16 gap-6">
<div className="max-w-2xl">
<div className="flex items-center gap-3 mb-4">
<div className="w-2 h-8 bg-[#6366f1] rounded-full"></div>
<h2 className="text-4xl md:text-6xl font-black italic tracking-tighter uppercase">CORE <span className="text-[#E2FF00]">CAPABILITIES</span></h2>
</div>
<p className="text-gray-500 text-lg font-medium italic">Advanced tools, practical applications, proven results.</p>
</div>
</div>
<div className="grid md:grid-cols-3 gap-1 bg-white/5 p-1 border border-white/10 rounded-sm">
<div className="group p-12 bg-black hover:bg-zinc-900 transition-all duration-500 flex flex-col h-full">
<Zap className="w-8 h-8 text-[#6366f1] mb-8 group-hover:text-[#E2FF00] transition-colors" />
<h3 className="text-2xl font-black italic mb-6 uppercase tracking-tight">AI & Automation</h3>
<p className="text-gray-400 mb-10 leading-relaxed text-lg flex-grow">
We create custom AI workflows that act as a digital workforce for your business. By streamlining repetitive scheduling, follow-ups, and data entry, we save you hours of admin time.
</p>
<button onClick={() => scrollToSection('contact')} className="w-fit text-xs font-black tracking-widest text-[#E2FF00] flex items-center gap-2 border-b border-transparent hover:border-[#E2FF00] pb-1 transition-all uppercase">
Discover Efficiency <ArrowRight className="w-4 h-4" />
</button>
</div>
<div className="group p-12 bg-black hover:bg-zinc-900 transition-all duration-500 flex flex-col h-full border-x border-white/10 md:border-x-0">
<Target className="w-8 h-8 text-[#6366f1] mb-8 group-hover:text-[#E2FF00] transition-colors" />
<h3 className="text-2xl font-black italic mb-6 uppercase tracking-tight">Growth Marketing</h3>
<p className="text-gray-400 mb-10 leading-relaxed text-lg flex-grow">
We manage high-performance search and social ad campaigns with a singular focus: measurable customer acquisition. We find your ideal audience in the local market.
</p>
<button onClick={() => scrollToSection('contact')} className="w-fit text-xs font-black tracking-widest text-[#E2FF00] flex items-center gap-2 border-b border-transparent hover:border-[#E2FF00] pb-1 transition-all uppercase">
Discover Growth <ArrowRight className="w-4 h-4" />
</button>
</div>
<div className="group p-12 bg-black hover:bg-zinc-900 transition-all duration-500 flex flex-col h-full">
<GraduationCap className="w-8 h-8 text-[#6366f1] mb-8 group-hover:text-[#E2FF00] transition-colors" />
<h3 className="text-2xl font-black italic mb-6 uppercase tracking-tight">AI Training</h3>
<p className="text-gray-400 mb-10 leading-relaxed text-lg flex-grow">
Tailored 1-on-1 and group training. We bridge the gap between curiosity and competency, giving your team a solid foundation to use modern tools.
</p>
<button onClick={() => scrollToSection('contact')} className="w-fit text-xs font-black tracking-widest text-[#E2FF00] flex items-center gap-2 border-b border-transparent hover:border-[#E2FF00] pb-1 transition-all uppercase">
Discover Skills <ArrowRight className="w-4 h-4" />
</button>
</div>
</div>
</div>
</section>
{/* About Us Section */}
<section id="about" className="py-24 relative overflow-hidden bg-black border-t border-white/5">
<div className="max-w-7xl mx-auto px-6">
<div className="grid md:grid-cols-2 gap-16 items-center">
<div className="relative">
<div className="absolute -inset-4 bg-gradient-to-tr from-[#6366f1]/10 to-[#E2FF00]/10 blur-2xl -z-10"></div>
<div className="border border-white/10 p-12 bg-zinc-900/50 rounded-sm">
<div className="flex items-center gap-3 mb-8">
<div className="w-2 h-8 bg-[#6366f1] rounded-full"></div>
<h2 className="text-4xl md:text-6xl font-black italic tracking-tighter uppercase text-balance">ABOUT <span className="text-[#E2FF00]">US.</span></h2>
</div>
<p className="text-gray-400 text-xl leading-relaxed mb-6 font-medium">
DNL Dynamics is a boutique consultancy focused on helping SMBs discover their untapped growth potential through modern systems.
</p>
<p className="text-gray-400 text-xl leading-relaxed font-medium">
We don't just "implement tech"—we build foundations. Our mission is to bridge the gap between complex new technologies and the practical needs of local businesses that need results, not hype.
</p>
</div>
</div>
<div className="space-y-12">
<div className="p-8 border-l-4 border-[#E2FF00] bg-white/5">
<p className="text-white text-3xl font-black italic tracking-tight leading-snug uppercase">
"Uncover the systems and strategies your business needs to achieve measurable, sustainable growth."
</p>
</div>
<div className="grid grid-cols-2 gap-8">
<div className="p-4 border border-white/5 rounded-sm bg-white/5">
<span className="text-5xl font-black italic tracking-tighter block mb-2 text-[#E2FF00]">1:1</span>
<span className="text-[10px] font-black tracking-widest text-gray-500 uppercase">Tailored Partnership</span>
</div>
<div className="p-4 border border-white/5 rounded-sm bg-white/5">
<span className="text-5xl font-black italic tracking-tighter block mb-2 text-[#E2FF00]">PROVEN</span>
<span className="text-[10px] font-black tracking-widest text-gray-500 uppercase">Acquisition strategy</span>
</div>
</div>
</div>
</div>
</div>
</section>
{/* Contact / Discovery Section */}
<section id="contact" className="py-24 relative bg-zinc-950 border-t border-white/5">
<div className="max-w-7xl mx-auto px-6 relative z-10">
<div className="grid md:grid-cols-2 gap-12 lg:gap-24 items-start">
<div className="w-full">
<h2 className="text-4xl md:text-5xl lg:text-6xl font-black italic tracking-tighter leading-none mb-10 uppercase text-balance">
OPEN THE <br /> <span className="text-[#E2FF00]">CONVERSATION.</span>
</h2>
<div className="space-y-8">
<p className="text-gray-400 text-lg leading-relaxed font-medium">
Fill out the brief below to start your discovery session. Whether you need a marketing spark or an operational overhaul, we’re ready to help you grow.
</p>
<div className="space-y-4">
{[
"Custom Efficiency Audits",
"Direct 1-on-1 Strategic Access",
"Foundational AI Training"
].map((item, idx) => (
<div key={idx} className="flex items-center gap-4 group">
<div className="w-5 h-5 bg-[#6366f1] group-hover:bg-[#E2FF00] transition-colors flex items-center justify-center text-white group-hover:text-black">
<CheckCircle2 className="w-3 h-3 stroke-[3px]" aria-hidden="true" />
</div>
<span className="font-bold text-sm tracking-wide uppercase italic group-hover:text-white transition-colors">{item}</span>
</div>
))}
</div>
</div>
</div>
<div className="bg-zinc-900/50 p-1 border border-white/10 rounded-sm w-full relative">
{/* Security Badge */}
<div className="absolute -top-3 -right-3 px-3 py-1 bg-[#6366f1] text-white text-[9px] font-black italic uppercase rounded-sm z-10 shadow-lg">
Encrypted Brief
</div>
<div className="bg-black p-8 md:p-12">
{formSubmitted ? (
<div className="py-12 text-center space-y-8 animate-in fade-in zoom-in duration-500" role="status">
<div className="w-20 h-20 bg-[#E2FF00] mx-auto rounded-full flex items-center justify-center text-black">
<CheckCircle2 className="w-10 h-10" />
</div>
<div>
<h3 className="text-3xl font-black italic tracking-tight mb-2 uppercase">Brief Received.</h3>
<p className="text-gray-400 font-medium italic">Your inquiry has been logged securely. Expect a personal outreach within 24 hours.</p>
</div>
<button
onClick={() => {
setFormSubmitted(false);
setFormData({ name: '', email: '', service: '', message: '' });
}}
className="text-xs font-black tracking-widest text-[#E2FF00] underline uppercase hover:text-white transition-colors"
>
SEND ANOTHER REQUEST
</button>
</div>
) : (
<form onSubmit={handleSubmit} className="space-y-8">
{errorMessage && (
<div className="flex items-center gap-3 p-4 bg-red-500/10 border border-red-500/20 text-red-500 rounded-sm animate-shake" role="alert">
<AlertCircle className="w-5 h-5" />
<p className="text-sm font-bold uppercase italic tracking-tight">{errorMessage}</p>
</div>
)}
<div className="space-y-6">
{/* SECURITY: HONEYPOT
Bots will attempt to fill this. Humans cannot see it.
*/}
<div className="opacity-0 absolute h-0 w-0 overflow-hidden" aria-hidden="true">
<label htmlFor="hp_check">System Check</label>
<input
type="text"
id="hp_check"
name="hp_check"
tabIndex="-1"
autoComplete="off"
value={botTrap}
onChange={(e) => setBotTrap(e.target.value)}
/>
</div>
<div className="grid sm:grid-cols-2 gap-6">
<div className="space-y-2 border-b border-white/10 focus-within:border-[#E2FF00] transition-colors">
<label className="text-[10px] font-black uppercase tracking-[0.2em] text-gray-500" htmlFor="name">Contact Name</label>
<input
required
id="name"
type="text"
name="name"
value={formData.name}
onChange={handleInputChange}
className="w-full bg-transparent py-2 focus:outline-none italic font-bold placeholder:text-zinc-800"
placeholder="Full Name"
aria-required="true"
/>
</div>
<div className="space-y-2 border-b border-white/10 focus-within:border-[#E2FF00] transition-colors">
<label className="text-[10px] font-black uppercase tracking-[0.2em] text-gray-500" htmlFor="email">Business Email</label>
<input
required
id="email"
type="email"
name="email"
value={formData.email}
onChange={handleInputChange}
className="w-full bg-transparent py-2 focus:outline-none italic font-bold placeholder:text-zinc-800"
placeholder="email@company.com"
aria-required="true"
/>
</div>
</div>
<div className="space-y-2 border-b border-white/10 focus-within:border-[#E2FF00] transition-colors">
<label className="text-[10px] font-black uppercase tracking-[0.2em] text-gray-500" htmlFor="service">Service Interest</label>
<div className="relative">
<select
id="service"
required
name="service"
value={formData.service}
onChange={handleInputChange}
className="w-full appearance-none bg-transparent py-2 focus:outline-none italic font-bold text-white pr-8"
aria-required="true"
>
<option value="" disabled className="bg-black text-white">Select a capability...</option>
<option value="automation" className="bg-black text-white">AI Automation & Workflows</option>
<option value="marketing" className="bg-black text-white">Growth Marketing & Acquisition</option>
<option value="training" className="bg-black text-white">Advanced AI Training</option>
</select>
<ChevronDown className="absolute right-0 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500 pointer-events-none" />
</div>
</div>
<div className="space-y-2 border-b border-white/10 focus-within:border-[#E2FF00] transition-colors">
<label className="text-[10px] font-black uppercase tracking-[0.2em] text-gray-500" htmlFor="message">Your Growth Objectives</label>
<textarea
id="message"
name="message"
value={formData.message}
onChange={handleInputChange}
rows={3}
className="w-full bg-transparent py-2 focus:outline-none italic font-bold resize-none placeholder:text-zinc-800"
placeholder="Briefly describe your hurdles..."
></textarea>
</div>
</div>
<button
type="submit"
disabled={isSubmitting}
className="w-full py-5 bg-[#E2FF00] text-black font-black italic text-lg uppercase tracking-tight hover:bg-white transition-all transform active:scale-95 shadow-lg shadow-[#E2FF00]/10 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-3 group"
>
{isSubmitting ? (
<>
<RefreshCcw className="w-5 h-5 animate-spin" />
TRANSMITTING BRIEF...
</>
) : (
<>
SEND DISCOVERY BRIEF
<ArrowRight className="w-5 h-5 group-hover:translate-x-1 transition-transform" />
</>
)}
</button>
</form>
)}
</div>
</div>
</div>
</div>
</section>
</main>
{/* Footer */}
<footer className="py-20 border-t border-white/5 relative">
<div className="max-w-7xl mx-auto px-6">
<div className="flex flex-col md:flex-row justify-between items-center gap-12">
<div className="flex items-center gap-2">
<div className="w-2 h-8 bg-[#6366f1] rounded-full mr-2"></div>
<span className="text-3xl font-black italic tracking-tighter uppercase">
DNL <span className="text-[#E2FF00]">DYNAMICS</span>
</span>
</div>
<div className="flex flex-col items-center md:items-end gap-6">
<nav className="flex gap-10 text-[10px] font-black tracking-widest uppercase text-gray-400" aria-label="Social and Secondary links">
<a href="#" className="hover:text-white transition-colors">LinkedIn</a>
<a href="#" className="hover:text-white transition-colors">Performance Lab</a>
<button onClick={() => setShowCookieBanner(true)} className="hover:text-white transition-colors">Cookie Policy</button>
</nav>
<div className="text-[10px] font-black tracking-widest uppercase text-gray-600">
© 2026 DNL DYNAMICS. SYSTEM VERSION 4.0.
</div>
</div>
</div>
</div>
</footer>
{/* 4. Cookie Disclaimer Banner */}
{showCookieBanner && (
<div className="fixed bottom-0 left-0 right-0 z-[100] p-4 md:p-6 animate-in slide-in-from-bottom duration-500">
<div className="max-w-4xl mx-auto bg-zinc-900 border border-white/10 p-6 rounded-sm shadow-2xl flex flex-col md:flex-row items-center gap-6">
<div className="bg-[#6366f1]/20 p-3 rounded-full hidden md:block">
<Cookie className="w-6 h-6 text-[#6366f1]" />
</div>
<div className="flex-grow text-center md:text-left">
<h4 className="text-sm font-black italic uppercase tracking-widest text-[#E2FF00] mb-1">Performance Cookies</h4>
<p className="text-xs text-gray-400 font-medium">We use high-performance cookies to analyze your journey and optimize our lead precision. By continuing, you consent to our modern data protocols.</p>
</div>
<div className="flex gap-4">
<button
onClick={acceptCookies}
className="px-6 py-2 bg-white text-black text-[10px] font-black uppercase italic hover:bg-[#E2FF00] transition-colors rounded-sm"
>
Accept All
</button>
<button
onClick={() => setShowCookieBanner(false)}
className="px-6 py-2 border border-white/10 text-[10px] font-black uppercase italic hover:bg-white/10 transition-colors rounded-sm text-gray-400"
>
Close
</button>
</div>
</div>
</div>
)}
</div>
);
};
export default App;