TopNav.jsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from "react";
  2. import Link from "next/link";
  3. import Image from "next/image";
  4. import QuickNav from "@/components/app-shell/QuickNav";
  5. import UserStatus from "@/components/app-shell/UserStatus";
  6. import ThemeToggleButton from "@/components/app-shell/ThemeToggleButton";
  7. import SessionIndicator from "@/components/app-shell/SessionIndicator";
  8. export default function TopNav() {
  9. return (
  10. <header className="sticky top-0 z-50 w-full border-b bg-background">
  11. <div className="px-4">
  12. <div className="mx-auto grid h-14 w-full items-center 2xl:grid-cols-[1fr_minmax(0,45%)_1fr]">
  13. <div className="flex items-center justify-between gap-4 2xl:col-start-2">
  14. <div className="flex items-center gap-2">
  15. <Link
  16. href="/"
  17. title="Startseite"
  18. className="hover:cursor-pointer"
  19. >
  20. <div className="relative h-10 w-16">
  21. <Image
  22. src="/brand/logo-blackNav.png"
  23. alt="Firmenlogo"
  24. fill
  25. sizes="64px"
  26. className="object-contain dark:hidden"
  27. priority
  28. />
  29. <Image
  30. src="/brand/logo-whiteNav.png"
  31. alt="Firmenlogo"
  32. fill
  33. sizes="64px"
  34. className="hidden object-contain dark:block"
  35. priority
  36. />
  37. </div>
  38. </Link>
  39. <nav aria-label="Hauptnavigation" className="flex items-center">
  40. <QuickNav />
  41. </nav>
  42. </div>
  43. {/* Actions group (clean separation + consistent spacing) */}
  44. <div className="flex items-center gap-3">
  45. <div className="flex items-center gap-3" aria-label="Aktionen">
  46. <ThemeToggleButton />
  47. <SessionIndicator />
  48. </div>
  49. {/* Subtle separator between actions and user menu */}
  50. <div className="h-6 w-px bg-border" aria-hidden="true" />
  51. <UserStatus />
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </header>
  57. );
  58. }