duelfi/src/components/Header.tsx
2025-03-28 16:53:22 +05:30

176 lines
5.7 KiB
TypeScript

"use client";
import Link from "next/link";
import Image from "next/image";
import { FaTelegram, FaXTwitter } from "react-icons/fa6";
import { useState } from "react";
export default function Header() {
const [isDrawerOpen, setIsDrawerOpen] = useState(false);
// Toggle the nav drawer
const toggleDrawer = () => {
setIsDrawerOpen(!isDrawerOpen);
};
return (
<header className="w-full bg-[rgb(22,22,22)] shadow-md">
<div className="container mx-auto flex items-center justify-between p-12 max-w-screen-xl w-full">
{/* Logo */}
<div className="flex items-center w-40 mr-20">
<Image src="/duelfiassets/logo.png" alt="Logo" width={100} height={40} />
</div>
{/* Navigation Links (hidden on mobile, visible on md+) */}
<nav className="hidden md:flex gap-6 ml-6">
<Link
href="/whitepaper"
className="text-white transition-colors duration-[500ms] hover:text-[rgb(248,144,22)]"
>
Whitepaper
</Link>
<Link
href="/support"
className="text-white transition-colors duration-[500ms] hover:text-[rgb(248,144,22)]"
>
Support
</Link>
</nav>
{/* Spacer (for centering) */}
<div className="flex-grow"></div>
{/* Socials & Login (hidden on mobile, visible on md+) */}
<div className="hidden md:flex items-center gap-6">
<a
href="https://t.me/yourchannel"
target="_blank"
rel="noopener noreferrer"
className="transition-transform duration-300 hover:scale-120"
>
<Image
src="/duelfiassets/telegram (1).png"
alt="Telegram"
width={40}
height={40}
/>
</a>
<a
href="https://twitter.com/yourhandle"
target="_blank"
rel="noopener noreferrer"
className="transition-transform duration-300 hover:scale-120"
>
<Image
src="/duelfiassets/xlogo.png"
alt="X (Twitter)"
width={40}
height={40}
/>
</a>
{/* Login Button */}
<button className="px-15 py-3 bg-[rgb(248,144,22)] text-black font-bold rounded-lg transition-transform duration-300 hover:scale-115 hover:bg-white hover:text-[rgb(248,144,22)]">
Connected
</button>
</div>
{/* Mobile-only view (Logo & Login) */}
<div className="flex md:hidden items-center gap-4">
{/* Hamburger Button */}
<button className="px-4 py-2 bg-[rgb(248,144,22)] text-white rounded-lg transition-colors duration-300 hover:bg-white hover:text-[rgb(248,144,22)]">
Login
</button>
<button
onClick={toggleDrawer}
className="text-white"
aria-label="Open Menu"
>
<svg
className="w-6 h-6"
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
/>
</svg>
</button>
</div>
</div>
{/* Mobile Drawer */}
{isDrawerOpen && (
<div className="fixed inset-0 bg-black bg-opacity-50 z-50">
<div className="absolute top-0 right-0 bg-[rgb(22,22,22)] w-64 h-full p-6">
{/* Close button */}
<button
onClick={toggleDrawer}
className="text-white mb-4"
aria-label="Close Menu"
>
<svg
className="w-6 h-6"
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
/>
</svg>
</button>
{/* Mobile Navigation Links */}
<div className="flex flex-col gap-6">
<Link
href="/whitepaper"
className="text-white transition-colors duration-[500ms] hover:text-[rgb(248,144,22)]"
onClick={() => setIsDrawerOpen(false)} // Close drawer on link click
>
Whitepaper
</Link>
<Link
href="/support"
className="text-white transition-colors duration-[500ms] hover:text-[rgb(248,144,22)]"
onClick={() => setIsDrawerOpen(false)} // Close drawer on link click
>
Support
</Link>
{/* Socials */}
<a
href="https://t.me/yourchannel"
target="_blank"
rel="noopener noreferrer"
className="text-white transition-colors duration-[500ms] hover:text-[rgb(248,144,22)]"
onClick={() => setIsDrawerOpen(false)}
>
<FaTelegram size={24} />
</a>
<a
href="https://twitter.com/yourhandle"
target="_blank"
rel="noopener noreferrer"
className="text-white transition-colors duration-[500ms] hover:text-[rgb(248,144,22)]"
onClick={() => setIsDrawerOpen(false)}
>
<FaXTwitter size={24} />
</a>
</div>
</div>
</div>
)}
</header>
);
}