edgellm / frontend /src /pages /Landing.tsx
wu981526092's picture
✨ ADD DATABASE AND UPDATE FRONTEND: Introduce agent optimization database and enhance landing page content
b376d89
raw
history blame
8.49 kB
import { useNavigate } from "react-router-dom";
import { Button } from "@/components/ui/button";
import { Menu } from "lucide-react";
export function Landing() {
const navigate = useNavigate();
return (
<div className="min-h-screen bg-white">
{/* Navigation */}
<nav className="bg-white border-b border-gray-200">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex justify-between items-center h-20">
{/* Logo */}
<div className="flex items-center">
<img
src="/assets/logo.png"
alt="EdgeLLM Logo"
className="h-20 w-20"
onError={(e) => {
console.error("Logo failed to load");
e.currentTarget.style.display = "none";
}}
/>
</div>
{/* Navigation Links */}
<div className="hidden md:flex items-center space-x-8">
<span className="text-white bg-purple-600 px-4 py-2 rounded-md font-medium">
Home
</span>
<button
onClick={() => navigate("/technology")}
className="text-gray-700 hover:text-purple-600 font-medium transition-colors"
>
Technology
</button>
<button
onClick={() => navigate("/usecases")}
className="text-gray-700 hover:text-purple-600 font-medium transition-colors"
>
Use Cases
</button>
<Button
variant="outline"
onClick={() => navigate("/mydevice")}
className="border-purple-600 text-purple-600 hover:bg-purple-50"
>
My Device
</Button>
</div>
{/* Mobile menu button */}
<div className="md:hidden">
<Button variant="ghost" size="sm">
<Menu className="h-5 w-5" />
</Button>
</div>
</div>
</div>
</nav>
{/* Hero Section */}
<div className="relative py-12 px-4 sm:px-6 lg:px-8">
<div className="max-w-4xl mx-auto text-center">
{/* Main Headline */}
<div className="relative mb-6">
<h1 className="text-4xl md:text-6xl lg:text-7xl font-bold text-black leading-tight">
Offline AI that
<br />
works where the
<br />
cloud cannot
</h1>
</div>
{/* Subtitle */}
<p className="text-lg md:text-xl text-purple-700 font-semibold mb-8 max-w-3xl mx-auto">
AI that stays reliable, private, and resilient in any environment
</p>
{/* CTA Buttons */}
<div className="flex flex-col sm:flex-row gap-4 justify-center items-center mb-12">
<Button
size="lg"
className="bg-purple-600 hover:bg-purple-700 text-white px-8 py-3 text-lg font-medium"
onClick={() => navigate("/usecases")}
>
Learn More
</Button>
<Button
size="lg"
variant="outline"
className="border-purple-600 text-purple-600 hover:bg-purple-50 px-8 py-3 text-lg font-medium"
onClick={() => navigate("/mydevice")}
>
I already have a device
</Button>
</div>
</div>
</div>
{/* Features Section */}
<div className="py-12 px-4 sm:px-6 lg:px-8 bg-gray-50">
<div className="max-w-6xl mx-auto">
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
{/* Always Available & Reliable */}
<div className="bg-white rounded-2xl p-6 shadow-lg border border-gray-200 text-center">
<div className="mb-6">
<div className="w-16 h-16 bg-purple-600 rounded-full flex items-center justify-center mx-auto mb-4">
<img
src="/assets/24h.png"
alt="Always Available & Reliable"
className="h-10 w-10"
onError={(e) => {
console.error("24h icon failed to load");
e.currentTarget.style.display = "none";
}}
/>
</div>
<h3 className="text-lg font-bold text-black mb-3">
Always Available & Reliable
</h3>
</div>
<p className="text-gray-600 text-sm leading-relaxed">
Cloud AI fails without internet and latency can cost lives. Our
offline AI runs instantly on-device, ready anywhere from remote
locations to safety-critical moments.
</p>
</div>
{/* Privacy & Security */}
<div className="bg-white rounded-2xl p-6 shadow-lg border border-gray-200 text-center">
<div className="mb-6">
<div className="w-16 h-16 bg-purple-600 rounded-full flex items-center justify-center mx-auto mb-4">
<img
src="/assets/privacy.png"
alt="Privacy & Security"
className="h-10 w-10"
onError={(e) => {
console.error("Privacy icon failed to load");
e.currentTarget.style.display = "none";
}}
/>
</div>
<h3 className="text-lg font-bold text-black mb-3">
Privacy & Security
</h3>
</div>
<p className="text-gray-600 text-sm leading-relaxed">
Cloud AI requires uploading sensitive data. Offline AI keeps all
processing local, protecting personal privacy and enterprise
security.
</p>
</div>
{/* Affordable & Powerful */}
<div className="bg-white rounded-2xl p-6 shadow-lg border border-gray-200 text-center">
<div className="mb-6">
<div className="w-16 h-16 bg-purple-600 rounded-full flex items-center justify-center mx-auto mb-4">
<img
src="/assets/reliablity.png"
alt="Affordable & Powerful"
className="h-10 w-10"
onError={(e) => {
console.error("Affordable icon failed to load");
e.currentTarget.style.display = "none";
}}
/>
</div>
<h3 className="text-lg font-bold text-black mb-3">
Affordable & Powerful
</h3>
</div>
<p className="text-gray-600 text-sm leading-relaxed">
Cloud AI charges expensive per-token fees that scale with usage.
Offline AI delivers enterprise-grade intelligence with unlimited
conversations, providing premium performance without recurring
costs.
</p>
</div>
</div>
</div>
</div>
{/* Footer */}
<footer className="bg-white text-gray-600 py-8 px-4 sm:px-6 lg:px-8 border-t border-gray-200">
<div className="max-w-6xl mx-auto text-center">
<div className="flex items-center justify-center mb-4">
<img
src="/assets/logo.png"
alt="EdgeLLM Logo"
className="h-12 w-12"
onError={(e) => {
console.error("Footer logo failed to load");
e.currentTarget.style.display = "none";
}}
/>
</div>
<p className="text-gray-600 mb-6">
Need help? Contact us to get customized device and services
</p>
<div className="flex justify-center space-x-6">
<a href="#" className="text-gray-500 hover:text-gray-700">
Privacy Policy
</a>
<a href="#" className="text-gray-500 hover:text-gray-700">
Terms of Service
</a>
<a href="#" className="text-gray-500 hover:text-gray-700">
Support
</a>
</div>
</div>
</footer>
</div>
);
}