header.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. "use client";
  2. import Link from "next/link";
  3. import { useKindeBrowserClient } from "@kinde-oss/kinde-auth-nextjs";
  4. import { LoginButton, RegisterButton, LogoutButton } from "./authButtons";
  5. export function Header() {
  6. const { user, isLoading } = useKindeBrowserClient();
  7. if (isLoading) {
  8. return (
  9. <header className="border-b border-gray-200 bg-white">
  10. <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
  11. <div className="flex justify-between items-center py-4">
  12. <div className="flex items-center">
  13. <Link href="/" className="flex items-center">
  14. <img
  15. src="/vtorio.svg"
  16. alt="vtor.io"
  17. className="h-8 w-auto"
  18. />
  19. </Link>
  20. </div>
  21. <div className="flex items-center space-x-4">
  22. <div className="h-10 w-20 bg-gray-200 rounded animate-pulse"></div>
  23. </div>
  24. </div>
  25. </div>
  26. </header>
  27. );
  28. }
  29. return (
  30. <header className="border-b border-gray-200 bg-white">
  31. <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
  32. <div className="flex justify-between items-center py-4">
  33. <div className="flex items-center">
  34. <Link href="/" className="flex items-center">
  35. <img
  36. src="/vtorio.svg"
  37. alt="vtor.io"
  38. className="h-8 w-auto"
  39. />
  40. </Link>
  41. </div>
  42. <div className="flex items-center space-x-4">
  43. {!user ? (
  44. <>
  45. <LoginButton />
  46. <RegisterButton />
  47. </>
  48. ) : (
  49. <LogoutButton />
  50. )}
  51. </div>
  52. </div>
  53. </div>
  54. </header>
  55. );
  56. }