topnav.twig 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <header class="sticky top-0 z-30 border-b border-slate-200 bg-white/80 backdrop-blur dark:border-slate-800 dark:bg-slate-950/80">
  2. <div class="flex h-16 items-center justify-between gap-4 px-6">
  3. <div class="flex items-center gap-3">
  4. <a href="/app/me" class="font-mono text-lg font-semibold tracking-tight">IRDB</a>
  5. <span class="hidden text-xs text-slate-500 md:inline">IP Reputation Database</span>
  6. </div>
  7. <div class="flex flex-1 items-center justify-end gap-3">
  8. <form method="get" action="/app/search" class="hidden md:block" role="search">
  9. <label for="topnav-search" class="sr-only">Search IPs</label>
  10. <input type="search"
  11. id="topnav-search"
  12. name="q"
  13. placeholder="Search IPs…"
  14. maxlength="64"
  15. class="w-64 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-indigo-500 dark:border-slate-700 dark:bg-slate-900" />
  16. </form>
  17. <button type="button"
  18. data-theme-toggle
  19. aria-label="Toggle theme"
  20. class="rounded-md border border-slate-300 bg-white p-2 text-slate-600 hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300 dark:hover:bg-slate-800">
  21. <span data-theme-icon-light class="hidden dark:inline">☾</span>
  22. <span data-theme-icon-dark class="dark:hidden">☀</span>
  23. </button>
  24. <div x-data="{ open: false }" class="relative">
  25. <button type="button"
  26. x-on:click="open = !open"
  27. x-on:click.outside="open = false"
  28. class="flex items-center gap-2 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-sm hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:hover:bg-slate-800">
  29. <span class="font-medium">{{ current_user.displayName }}</span>
  30. <span class="rounded bg-slate-100 px-1.5 py-0.5 font-mono text-xs uppercase text-slate-600 dark:bg-slate-800 dark:text-slate-400">{{ current_user.role }}</span>
  31. </button>
  32. <div x-show="open"
  33. x-transition
  34. style="display: none;"
  35. class="absolute right-0 mt-2 w-48 origin-top-right rounded-md border border-slate-200 bg-white py-1 shadow-lg dark:border-slate-800 dark:bg-slate-900">
  36. <a href="/app/me" class="block px-4 py-2 text-sm text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-slate-800">My identity</a>
  37. <form method="post" action="/logout">
  38. <input type="hidden" name="csrf_token" value="{{ csrf_token }}">
  39. <button type="submit" class="block w-full px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-slate-800">Sign out</button>
  40. </form>
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. </header>