topnav.twig 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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="flex items-center gap-2 font-mono text-lg font-semibold tracking-tight">
  5. <img src="/assets/logo.svg" alt="" aria-hidden="true" class="h-8 w-8" />
  6. <span>IRDB</span>
  7. </a>
  8. <span class="hidden text-xs text-slate-500 md:inline">IP Reputation Database</span>
  9. </div>
  10. <div class="flex flex-1 items-center justify-end gap-3">
  11. <form method="get" action="/app/search" class="hidden md:block" role="search">
  12. <label for="topnav-search" class="sr-only">Search IPs</label>
  13. <input type="search"
  14. id="topnav-search"
  15. name="q"
  16. placeholder="Search IPs…"
  17. maxlength="64"
  18. 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" />
  19. </form>
  20. <div x-data="{ open: false }" class="relative">
  21. <button type="button"
  22. x-on:click="open = !open"
  23. x-on:click.outside="open = false"
  24. 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">
  25. <span class="font-medium">{{ current_user.displayName }}</span>
  26. <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>
  27. </button>
  28. <div x-show="open"
  29. x-transition
  30. style="display: none;"
  31. 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">
  32. <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>
  33. <button type="button"
  34. data-theme-toggle
  35. aria-label="Toggle theme"
  36. class="flex w-full items-center justify-between px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-slate-800">
  37. <span><span class="hidden dark:inline">Light mode</span><span class="dark:hidden">Dark mode</span></span>
  38. <span aria-hidden="true"><span data-theme-icon-light class="hidden dark:inline">☾</span><span data-theme-icon-dark class="dark:hidden">☀</span></span>
  39. </button>
  40. <form method="post" action="/logout">
  41. <input type="hidden" name="csrf_token" value="{{ csrf_token }}">
  42. <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>
  43. </form>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </header>