Spaces:
Sleeping
Sleeping
| "use client"; | |
| import { useState } from "react"; | |
| import Link from "next/link"; | |
| import { DOCS_CONFIG, t } from "@/constants/docsConfig"; | |
| import { DEFAULT_LANG } from "@/constants/languages"; | |
| import { ExternalLink, Menu, X } from "lucide-react"; | |
| import DocsSidebar from "./DocsSidebar"; | |
| import LanguageSwitcher from "./LanguageSwitcher"; | |
| export default function DocsHeader({ lang = DEFAULT_LANG }) { | |
| const [mobileMenuOpen, setMobileMenuOpen] = useState(false); | |
| return ( | |
| <> | |
| <header className="sticky top-0 z-50 w-full border-b bg-white/80 backdrop-blur-sm border-gray-200"> | |
| <div className=" mx-auto px-4 h-16 flex items-center justify-between"> | |
| {/* Mobile menu button */} | |
| <button | |
| onClick={() => setMobileMenuOpen(true)} | |
| className="lg:hidden p-2 rounded-lg hover:bg-gray-100 transition-colors" | |
| aria-label="Open menu" | |
| > | |
| <Menu className="w-6 h-6 text-gray-600" /> | |
| </button> | |
| {/* Logo */} | |
| <Link href={`/${lang}`} className="flex items-center gap-2 font-bold text-2xl text-black hover:opacity-80 transition-opacity"> | |
| <span>9</span> | |
| <span className="text-[#E68A6E]">{DOCS_CONFIG.logo} Docs</span> | |
| </Link> | |
| {/* Right side */} | |
| <div className="flex items-center gap-2 sm:gap-3"> | |
| <LanguageSwitcher currentLang={lang} /> | |
| {/* Go to App */} | |
| <Link | |
| href={DOCS_CONFIG.appUrl} | |
| target="_blank" | |
| rel="noopener noreferrer" | |
| className="flex items-center gap-2 px-3 sm:px-4 py-2 bg-[#E68A6E] text-white rounded-lg font-medium hover:bg-[#d67a5e] transition-colors text-sm" | |
| > | |
| <span className="hidden sm:inline">{t(lang, "goToApp")}</span> | |
| <ExternalLink className="w-4 h-4" /> | |
| </Link> | |
| </div> | |
| </div> | |
| </header> | |
| {/* Mobile menu */} | |
| {mobileMenuOpen && ( | |
| <> | |
| <div | |
| className="mobile-menu-overlay lg:hidden" | |
| onClick={() => setMobileMenuOpen(false)} | |
| /> | |
| <div className="mobile-menu-drawer lg:hidden"> | |
| <div className="flex items-center justify-between p-4 border-b border-gray-200"> | |
| <span className="font-bold text-lg text-black"> | |
| <span className="text-[#E68A6E]">9</span>{DOCS_CONFIG.logo} Docs | |
| </span> | |
| <button | |
| onClick={() => setMobileMenuOpen(false)} | |
| className="p-2 rounded-lg hover:bg-gray-100 transition-colors" | |
| aria-label="Close menu" | |
| > | |
| <X className="w-5 h-5 text-gray-600" /> | |
| </button> | |
| </div> | |
| <DocsSidebar isMobile onClose={() => setMobileMenuOpen(false)} lang={lang} /> | |
| </div> | |
| </> | |
| )} | |
| </> | |
| ); | |
| } | |