1
0

layout.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /** @var string $content */
  3. /** @var string $title */
  4. /** @var \App\Domain\User|null $currentUser */
  5. /** @var string $csrfToken */
  6. use function App\Http\e;
  7. $currentUser = $currentUser ?? null;
  8. $csrfToken = $csrfToken ?? '';
  9. ?>
  10. <!doctype html>
  11. <html lang="en">
  12. <head>
  13. <meta charset="utf-8">
  14. <meta name="viewport" content="width=device-width,initial-scale=1">
  15. <title><?= e($title ?? 'Sprint Planner') ?></title>
  16. <script src="https://cdn.tailwindcss.com"></script>
  17. <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  18. <link rel="stylesheet"
  19. href="https://code.jquery.com/ui/1.13.3/themes/base/jquery-ui.css">
  20. <script src="https://code.jquery.com/ui/1.13.3/jquery-ui.min.js"></script>
  21. </head>
  22. <body class="bg-slate-50 text-slate-900 antialiased">
  23. <header class="border-b bg-white">
  24. <div class="max-w-7xl mx-auto px-4 py-3 flex items-center gap-4">
  25. <a href="/" class="font-semibold tracking-tight">Sprint Planner</a>
  26. <nav class="ml-auto flex items-center gap-4 text-sm">
  27. <?php if ($currentUser !== null): ?>
  28. <a href="/" class="text-slate-600 hover:text-slate-900 hover:underline">Sprints</a>
  29. <?php if ($currentUser->isAdmin): ?>
  30. <a href="/workers" class="text-slate-600 hover:text-slate-900 hover:underline">Workers</a>
  31. <a href="/sprints/new" class="text-slate-600 hover:text-slate-900 hover:underline">New sprint</a>
  32. <a href="/audit" class="text-slate-600 hover:text-slate-900 hover:underline">Audit log</a>
  33. <?php endif; ?>
  34. <span class="text-slate-400">·</span>
  35. <span class="text-slate-600">
  36. <?= e($currentUser->displayName) ?>
  37. <?php if ($currentUser->isAdmin): ?>
  38. <span class="ml-1 inline-block px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider bg-amber-100 text-amber-800 rounded">admin</span>
  39. <?php endif; ?>
  40. </span>
  41. <form method="post" action="/auth/logout" class="inline">
  42. <input type="hidden" name="_csrf" value="<?= e($csrfToken) ?>">
  43. <button type="submit"
  44. class="text-slate-600 hover:text-slate-900 hover:underline">
  45. Sign out
  46. </button>
  47. </form>
  48. <?php else: ?>
  49. <a href="/auth/login"
  50. class="text-blue-700 hover:underline">Sign in</a>
  51. <?php endif; ?>
  52. </nav>
  53. </div>
  54. </header>
  55. <main class="max-w-7xl mx-auto px-4 py-6">
  56. <?= $content ?>
  57. </main>
  58. </body>
  59. </html>