diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 1316ba1..0cabc48 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,6 +2,7 @@ import type { Metadata } from 'next'; import { Geist, Geist_Mono } from 'next/font/google'; import './globals.css'; import { Providers } from '@/components/Providers'; +import { Header } from '@/components/layout/Header'; const geistSans = Geist({ variable: '--font-geist-sans', @@ -37,7 +38,12 @@ export default function RootLayout({ /> - {children} + +
+
+ {children} +
+
); diff --git a/src/components/Providers.tsx b/src/components/Providers.tsx index 4da8ffc..3cf6800 100644 --- a/src/components/Providers.tsx +++ b/src/components/Providers.tsx @@ -2,7 +2,6 @@ import { SessionProvider } from 'next-auth/react'; import { ThemeProvider } from '@/contexts/ThemeContext'; -import { Header } from '@/components/layout/Header'; import { ReactNode } from 'react'; interface ProvidersProps { @@ -13,10 +12,7 @@ export function Providers({ children }: ProvidersProps) { return ( -
-
- {children} -
+ {children}
); diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index 903808f..c3d2356 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -1,26 +1,14 @@ -'use client'; - import Link from 'next/link'; -import { usePathname } from 'next/navigation'; -import { useSession, signOut } from 'next-auth/react'; -import { useTheme } from '@/contexts/ThemeContext'; -import { useState, useRef } from 'react'; -import { Avatar, RocketIcon } from '@/components/ui'; -import { WORKSHOPS } from '@/lib/workshops'; -import { useClickOutside } from '@/hooks/useClickOutside'; +import { auth } from '@/lib/auth'; +import { RocketIcon } from '@/components/ui'; +import { ThemeToggle } from './ThemeToggle'; +import { UserMenu } from './UserMenu'; +import { WorkshopsDropdown } from './WorkshopsDropdown'; +import { NavLinks } from './NavLinks'; -export function Header() { - const { theme, toggleTheme } = useTheme(); - const { data: session, status } = useSession(); - const [menuOpen, setMenuOpen] = useState(false); - const [workshopsOpen, setWorkshopsOpen] = useState(false); - const workshopsDropdownRef = useRef(null); - const userMenuRef = useRef(null); - useClickOutside(workshopsDropdownRef, () => setWorkshopsOpen(false), workshopsOpen); - useClickOutside(userMenuRef, () => setMenuOpen(false), menuOpen); - const pathname = usePathname(); - - const isActiveLink = (path: string) => pathname.startsWith(path); +export async function Header() { + const session = await auth(); + const isAuthenticated = !!session?.user; return (
@@ -31,154 +19,20 @@ export function Header() {