✨ ADD DATABASE AND UPDATE FRONTEND: Introduce agent optimization database and enhance landing page content
b376d89
| 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> | |
| ); | |
| } | |