main.html 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <!DOCTYPE html>
  2. <html lang="en" data-mode="auto">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <pstm-name>main</pstm-name>
  7. <pstm-title>ClankerSaddle</pstm-title>
  8. <script pstm-res-src="statum.js"></script>
  9. <link rel="stylesheet" pstm-res-href="spry.css">
  10. <link rel="stylesheet" pstm-res-href="spry-theme-airy.css">
  11. <link rel="stylesheet" pstm-res-href="spry-theme-dwarf.css">
  12. <link rel="stylesheet" pstm-res-href="spry-theme-formal.css">
  13. <link rel="stylesheet" pstm-res-href="spry-theme-glassy.css">
  14. <link rel="stylesheet" pstm-res-href="spry-theme-h2o.css">
  15. <link rel="stylesheet" pstm-res-href="spry-theme-living-sky.css">
  16. <link rel="stylesheet" pstm-res-href="spry-theme-modern.css">
  17. <link rel="stylesheet" pstm-res-href="app.css">
  18. <link rel="icon" type="image/png" pstm-res-href="clanker-saddle.png">
  19. <link rel="apple-touch-icon" type="image/png" pstm-res-href="clanker-saddle.png">
  20. <link rel="stm-guard" require="auth != null || location.pathname == '/login'" href="/login">
  21. <script pstm-res-src="app.js"></script>
  22. </head>
  23. <body>
  24. <header class="topbar">
  25. <a class="topbar-brand" href="/"><img class="brand-emblem" alt="" pstm-res-src="clanker-saddle-emblem.png">ClankerSaddle</a>
  26. <nav class="nav" stm-if="auth != null">
  27. <!-- spry:nav-begin -->
  28. <ul class="nav" role="menubar">
  29. <li class="has-submenu">
  30. <button type="button" class="nav-toggle" aria-expanded="false">Work</button>
  31. <ul class="submenu" role="menu">
  32. <li><a href="/">Dashboard</a></li>
  33. <li><a href="/tasks">Tasks</a></li>
  34. <li><a class="nav-goal" href="/goals"><em class="goal-icon">🎯</em> Goals</a></li>
  35. <li><a href="/chats">Chats</a></li>
  36. </ul>
  37. </li>
  38. <li class="has-submenu">
  39. <button type="button" class="nav-toggle" aria-expanded="false">Library</button>
  40. <ul class="submenu" role="menu">
  41. <li><a href="/projects">Projects</a></li>
  42. <li><a href="/rules">Rules</a></li>
  43. <li><a href="/stacks">Stacks</a></li>
  44. <li><a href="/discoveries">Discoveries</a></li>
  45. </ul>
  46. </li>
  47. <li class="has-submenu">
  48. <button type="button" class="nav-toggle" aria-expanded="false">Admin</button>
  49. <ul class="submenu" role="menu">
  50. <li><a href="/saddles">Saddles</a></li>
  51. <!-- The users and model links are display-guarded
  52. (the pages' entrypoint guards are
  53. authoritative); auth.permissions rides the
  54. signed auth slot, so an admin sees them
  55. everywhere. -->
  56. <li stm-if="auth != null && auth.permissions.indexOf('admin') != -1"><a href="/users">Users</a></li>
  57. <li stm-if="auth != null && auth.permissions.indexOf('admin') != -1"><a href="/models">Model</a></li>
  58. </ul>
  59. </li>
  60. </ul>
  61. <!-- spry:nav-end -->
  62. <span class="nav-auth">
  63. <ul class="nav" role="menu">
  64. <li class="has-submenu">
  65. <button type="button" class="nav-toggle" aria-expanded="false">Account</button>
  66. <ul class="submenu" role="menu">
  67. <li class="nav-user" stm-text="auth.username">user</li>
  68. <li><a href="/profile" title="Your profile">Profile</a></li>
  69. <li><button type="button" class="btn-ghost" stm-action="auth.logout" stm-busy-class="is-busy">Log out</button></li>
  70. </ul>
  71. </li>
  72. </ul>
  73. <!-- spry:nav-auth-begin -->
  74. <!-- spry:nav-auth-end -->
  75. </span>
  76. </nav>
  77. </header>
  78. <main class="container">
  79. <div stm-preloader class="page-loading" role="status" aria-label="Loading"><span class="spinner spinner-lg"></span></div>
  80. <div stm-content hidden>
  81. <pstm-content></pstm-content>
  82. </div>
  83. </main>
  84. <footer class="site-footer"><p>ClankerSaddle — the agent works while you sleep.</p></footer>
  85. </body>
  86. </html>