ai_api / src /app /landing /components /Navigation.tsx
Yogesh
initial deploy
cd8bd0a
Raw
History Blame Contribute Delete
4.86 kB
"use client";
import { useState } from "react";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { useTranslations } from "next-intl";
import OmniRouteLogo from "@/shared/components/OmniRouteLogo";
export default function Navigation() {
const t = useTranslations("landing");
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const router = useRouter();
return (
<nav className="fixed top-0 z-50 w-full bg-[#0B0E14]/80 backdrop-blur-md border-b border-[#2D333B]">
<div className="max-w-7xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between gap-3">
{/* Logo */}
<button
type="button"
className="flex items-center gap-3 cursor-pointer bg-transparent border-none p-0 min-w-0"
onClick={() => router.push("/")}
aria-label={t("navigateHome")}
>
<div className="size-8 rounded bg-linear-to-br from-[#E54D5E] to-[#C93D4E] flex items-center justify-center text-white">
<OmniRouteLogo size={20} className="text-white" />
</div>
<h2 className="text-white text-lg sm:text-xl font-bold tracking-tight truncate sm:max-w-none max-w-[160px]">
{t("brandName")}
</h2>
</button>
{/* Desktop menu */}
<div className="hidden md:flex items-center gap-8">
<a
className="text-gray-300 hover:text-white text-sm font-medium transition-colors"
href="#features"
>
{t("featuresLink")}
</a>
<a
className="text-gray-300 hover:text-white text-sm font-medium transition-colors"
href="#how-it-works"
>
{t("howItWorks")}
</a>
<Link
className="text-gray-300 hover:text-white text-sm font-medium transition-colors"
href="/docs"
>
{t("docsLink")}
</Link>
<a
className="text-gray-300 hover:text-white text-sm font-medium transition-colors flex items-center gap-1"
href="https://github.com/diegosouzapw/OmniRoute"
target="_blank"
rel="noopener noreferrer"
>
{t("github")}
<span className="material-symbols-outlined text-[14px]" aria-hidden="true">
open_in_new
</span>
</a>
</div>
{/* CTA + Mobile menu */}
<div className="flex items-center gap-2 sm:gap-4 shrink-0">
<button
onClick={() => router.push("/dashboard")}
className="hidden sm:flex h-9 items-center justify-center rounded-lg px-4 bg-[#E54D5E] hover:bg-[#C93D4E] transition-all text-white text-sm font-bold shadow-[0_0_15px_rgba(229,77,94,0.4)] hover:shadow-[0_0_20px_rgba(229,77,94,0.6)]"
>
{t("getStarted")}
</button>
<button
className="md:hidden text-white"
onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
aria-label={t("toggleMenu")}
>
<span className="material-symbols-outlined" aria-hidden="true">
{mobileMenuOpen ? "close" : "menu"}
</span>
</button>
</div>
</div>
{/* Mobile menu dropdown */}
{mobileMenuOpen && (
<div className="md:hidden border-t border-[#2D333B] bg-[#0B0E14]/95 backdrop-blur-md">
<div className="flex flex-col gap-4 p-6">
<a
className="text-gray-300 hover:text-white text-sm font-medium transition-colors"
href="#features"
onClick={() => setMobileMenuOpen(false)}
>
{t("featuresLink")}
</a>
<a
className="text-gray-300 hover:text-white text-sm font-medium transition-colors"
href="#how-it-works"
onClick={() => setMobileMenuOpen(false)}
>
{t("howItWorks")}
</a>
<Link
className="text-gray-300 hover:text-white text-sm font-medium transition-colors"
href="/docs"
onClick={() => setMobileMenuOpen(false)}
>
{t("docsLink")}
</Link>
<a
className="text-gray-300 hover:text-white text-sm font-medium transition-colors"
href="https://github.com/diegosouzapw/OmniRoute"
target="_blank"
rel="noopener noreferrer"
>
{t("github")}
</a>
<button
onClick={() => router.push("/dashboard")}
className="h-9 rounded-lg bg-[#E54D5E] hover:bg-[#C93D4E] text-white text-sm font-bold"
>
{t("getStarted")}
</button>
</div>
</div>
)}
</nav>
);
}