Files
tech-tracker-next/src/components/default/header/index.tsx

72 lines
2.1 KiB
TypeScript

'use client';
import Image from 'next/image';
import Link from 'next/link';
import { ThemeToggle, useTVMode } from '@/components/context';
import { useAuth } from '@/components/context';
import AvatarDropdown from './AvatarDropdown';
const Header = () => {
const { tvMode } = useTVMode();
const { isAuthenticated } = useAuth();
// Controls component for both modes
const Controls = () => (
<div className='flex flex-row items-center'>
<ThemeToggle className='mr-4' />
{isAuthenticated && <AvatarDropdown />}
</div>
);
if (tvMode) {
return (
<div className='absolute top-10 right-37'>
<Controls />
</div>
);
}
return (
<header className='w-full mb-8'>
<div className='container mx-auto px-4 md:px-6 lg:px-20'>
<div className='flex items-center justify-between'>
{/* Left spacer for perfect centering */}
<div className='flex flex-1 justify-start'>
<div className='sm:w-[120px] md:w-[160px]' />
</div>
{/* Centered logo and title */}
<div className='flex-shrink-0'>
<Link
href='/'
scroll={false}
className='flex flex-row items-center justify-center px-4'
>
<Image
src='/favicon.png'
alt='Tech Tracker Logo'
width={100}
height={100}
className='max-w-[40px] md:max-w-[120px]'
/>
<h1 className='title-text text-sm md:text-4xl lg:text-8xl
bg-gradient-to-r from-[#281A65] via-[#363354] to-accent-foreground
dark:from-[#bec8e6] dark:via-[#F0EEE4] dark:to-[#FFF8E7]
font-bold pl-2 md:pl-12 text-transparent bg-clip-text'
>
Tech Tracker
</h1>
</Link>
</div>
{/* Right-aligned controls */}
<div className='flex-1 flex justify-end'>
<Controls />
</div>
</div>
</div>
</header>
);
};
export default Header;