layout.html 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <!DOCTYPE html>
  2. <html lang="en">
  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>{{APP_NAME}}</pstm-title>
  8. <script pstm-res-src="statum.js"></script>
  9. <style>
  10. body { font-family: system-ui, sans-serif; margin: 0 auto; max-width: 46rem; padding: 0 1rem; }
  11. header { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; border-bottom: 1px solid #8884; padding: 1rem 0; }
  12. header h1 { font-size: 1.2rem; margin: 0; }
  13. header nav { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.75rem; }
  14. main { padding: 1rem 0 3rem; }
  15. footer { border-top: 1px solid #8884; color: #888; font-size: 0.85rem; padding: 1rem 0; }
  16. input, button { font: inherit; }
  17. input[type="text"], input[type="password"], input[type="email"], input[type="date"] { padding: 0.3rem 0.4rem; }
  18. .form-row { display: flex; align-items: center; gap: 0.6rem; margin: 0.6rem 0; }
  19. .form-row label { flex: none; width: 16ch; margin: 0; }
  20. .form-row input { flex: 1 1 12ch; max-width: 28ch; }
  21. form.inline { display: inline-flex; align-items: center; gap: 0.4rem; margin: 0.2rem 0; }
  22. table { border-collapse: collapse; }
  23. th, td { border: 1px solid #8884; padding: 0.4rem 0.6rem; text-align: left; vertical-align: top; }
  24. .error { color: #b00020; }
  25. [hidden] { display: none; }
  26. </style>
  27. </head>
  28. <body>
  29. <header>
  30. <h1>{{APP_NAME}}</h1>
  31. <nav>
  32. <a href="/">Home</a>
  33. <!-- spry:nav-begin -->
  34. <!-- spry:nav-end -->
  35. <span stm-if="auth != null"><strong stm-text="auth.username">user</strong>
  36. <!-- spry:nav-auth-begin -->
  37. <!-- spry:nav-auth-end -->
  38. </span>
  39. </nav>
  40. </header>
  41. <main>
  42. <div stm-preloader>Loading…</div>
  43. <div stm-content hidden>
  44. <pstm-content></pstm-content>
  45. </div>
  46. </main>
  47. <footer><p>Served by Statum + Spry.</p></footer>
  48. </body>
  49. </html>