Header.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use client'
  2. import { useState } from 'react'
  3. import Link from 'next/link'
  4. import { useAuth } from '@/hooks/useAuth'
  5. import LoginModal from './LoginModal'
  6. import RegisterModal from './RegisterModal'
  7. export default function Header() {
  8. const { user, isLoading, logout } = useAuth()
  9. const [showLogin, setShowLogin] = useState(false)
  10. const [showRegister, setShowRegister] = useState(false)
  11. return (
  12. <header className="absolute left-0 right-0 top-0 z-30 flex items-center justify-between px-4 py-3">
  13. <Link href="/" className="text-lg font-bold text-white">
  14. PhotoPlaces
  15. </Link>
  16. {showLogin && <LoginModal onClose={() => setShowLogin(false)} />}
  17. {showRegister && <RegisterModal onClose={() => setShowRegister(false)} />}
  18. <nav className="flex items-center gap-4">
  19. {isLoading ? null : user ? (
  20. <>
  21. <span className="text-sm text-white/60">{user.email}</span>
  22. <button
  23. onClick={logout}
  24. className="rounded-lg bg-white/10 px-4 py-2 text-sm text-white hover:bg-white/20 transition"
  25. >
  26. Выйти
  27. </button>
  28. </>
  29. ) : (
  30. <>
  31. <button
  32. onClick={() => setShowLogin(true)}
  33. className="rounded-lg bg-white/10 backdrop-blur-md px-4 py-2 text-sm text-white hover:bg-white/20 transition"
  34. >
  35. Войти
  36. </button>
  37. <button
  38. onClick={() => setShowRegister(true)}
  39. className="rounded-lg bg-green-600 px-4 py-2 text-sm text-white hover:bg-green-500 transition"
  40. >
  41. Регистрация
  42. </button>
  43. </>
  44. )}
  45. </nav>
  46. </header>
  47. )
  48. }