128 lines
4.7 KiB
TypeScript
128 lines
4.7 KiB
TypeScript
"use client";
|
|
|
|
import { useState } from "react";
|
|
import { Logo } from "./Logo";
|
|
|
|
const navItems = [
|
|
{ href: "#home", label: "Home" },
|
|
{ href: "#about", label: "Sobre" },
|
|
{ href: "#skills", label: "Habilidades" },
|
|
{ href: "#experience", label: "Experiencia" },
|
|
{ href: "#projects", label: "Projetos" },
|
|
{ href: "#modalities", label: "Contratacao" },
|
|
{ href: "#contact", label: "Contato" },
|
|
];
|
|
|
|
export function Header() {
|
|
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
|
|
return (
|
|
<header
|
|
className="fixed left-0 right-0 top-0 z-50 border-b backdrop-blur-xl"
|
|
style={{
|
|
borderColor: "rgba(255,255,255,.1)",
|
|
background: "rgba(10,10,10,.96)",
|
|
}}
|
|
>
|
|
<div className="mx-auto flex h-[52px] w-full max-w-[1240px] items-center justify-between px-6 lg:px-16">
|
|
<a href="#home" className="flex items-center gap-3 no-underline">
|
|
<Logo variant="mark" size="sm" theme="dark" />
|
|
<span
|
|
className="font-display text-sm font-extrabold tracking-tight"
|
|
style={{ color: "#FFFFFF" }}
|
|
>
|
|
evandro<span style={{ color: "#E8FF00" }}>.dev.br</span>
|
|
</span>
|
|
</a>
|
|
|
|
<nav className="hidden items-center lg:flex">
|
|
<ul className="flex list-none items-center gap-2">
|
|
{navItems.map((item) => (
|
|
<li key={item.href}>
|
|
<a
|
|
href={item.href}
|
|
className="rounded-sm px-3 py-2 text-[10px] uppercase tracking-[0.14em] no-underline transition-all duration-200 hover:bg-white/10"
|
|
style={{ color: "rgba(255,255,255,.86)" }}
|
|
>
|
|
{item.label}
|
|
</a>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</nav>
|
|
|
|
<div className="flex items-center gap-4">
|
|
<span
|
|
className="hidden rounded-full border px-[10px] py-1 text-[9px] uppercase tracking-[0.12em] lg:inline-block"
|
|
style={{
|
|
borderColor: "rgba(255,255,255,.15)",
|
|
color: "rgba(255,255,255,.35)",
|
|
}}
|
|
>
|
|
v1.0 / 2026
|
|
</span>
|
|
<a
|
|
href="/Profile.pdf"
|
|
download="Evandro_Fonseca_Junior_CV.pdf"
|
|
className="hidden rounded-sm px-4 py-2 text-[10px] font-semibold uppercase tracking-[0.1em] no-underline transition-all duration-200 hover:shadow-[0_0_0_1px_rgba(232,255,0,.8),0_8px_24px_rgba(232,255,0,.35)] lg:inline-flex"
|
|
style={{ background: "#E8FF00", color: "#0A0A0A" }}
|
|
>
|
|
Download CV
|
|
</a>
|
|
<button
|
|
type="button"
|
|
className="flex h-8 w-8 flex-col items-center justify-center gap-1.5 border-none bg-transparent lg:hidden"
|
|
onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
|
|
aria-label="Menu"
|
|
>
|
|
<span
|
|
className={`h-0.5 w-5 bg-white transition-transform duration-200 ${mobileMenuOpen ? "translate-y-2 rotate-45" : ""}`}
|
|
/>
|
|
<span
|
|
className={`h-0.5 w-5 bg-white transition-opacity duration-200 ${mobileMenuOpen ? "opacity-0" : ""}`}
|
|
/>
|
|
<span
|
|
className={`h-0.5 w-5 bg-white transition-transform duration-200 ${mobileMenuOpen ? "-translate-y-2 -rotate-45" : ""}`}
|
|
/>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
className={`absolute left-0 right-0 top-[52px] overflow-hidden border-b backdrop-blur-xl transition-all duration-300 lg:hidden ${mobileMenuOpen ? "max-h-[420px] opacity-100" : "max-h-0 opacity-0"}`}
|
|
style={{
|
|
borderColor: "rgba(255,255,255,.1)",
|
|
background: "rgba(10,10,10,.98)",
|
|
}}
|
|
>
|
|
<nav className="px-6 py-4">
|
|
<ul className="flex list-none flex-col gap-2">
|
|
{navItems.map((item) => (
|
|
<li key={item.href}>
|
|
<a
|
|
href={item.href}
|
|
className="block rounded-sm px-3 py-3 text-[11px] uppercase tracking-[0.14em] no-underline transition-all duration-200 hover:bg-white/10"
|
|
style={{ color: "rgba(255,255,255,.9)" }}
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
{item.label}
|
|
</a>
|
|
</li>
|
|
))}
|
|
<li>
|
|
<a
|
|
href="/Profile.pdf"
|
|
download="Evandro_Fonseca_Junior_CV.pdf"
|
|
className="mt-2 inline-flex rounded-sm px-4 py-3 text-[10px] font-semibold uppercase tracking-[0.1em] no-underline"
|
|
style={{ background: "#E8FF00", color: "#0A0A0A" }}
|
|
>
|
|
Download CV
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</header>
|
|
);
|
|
}
|