base.html 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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">
  6. <link rel="stylesheet" href="{{ url_for('static', filename='tachyons.min.css') }}">
  7. <script src="{{ url_for('static', filename='htmx.js') }}"></script>
  8. <script src="{{ url_for('static', filename='sweetalert2.js') }}"></script>
  9. {% if visjs_enabled %}
  10. <script src="{{ url_for('visjs.static', filename='vis-timeline-graph2d.min.js') }}"></script>
  11. <link href="{{ url_for('visjs.static', filename='vis-timeline-graph2d.min.css') }}" rel="stylesheet" type="text/css" />
  12. {% endif %}
  13. {% block head %}
  14. <title>{{ title | default('No Title') }}</title>
  15. {% endblock %}
  16. <link rel="stylesheet" href="{{ url_for('static', filename='theme/base.css') }}">
  17. <link rel="stylesheet" href="{{ url_for('static', filename='theme/user-14520320.css') }}">
  18. {% if opengraph_info %}
  19. {% for prop, content in opengraph_info.items() %}
  20. <meta property="og:{{prop}}" content="{{content}}" />
  21. {% endfor %}
  22. {% endif %}
  23. <script>
  24. const Toast = Swal.mixin({
  25. toast: true,
  26. position: 'top-end',
  27. showConfirmButton: false,
  28. timer: 3000,
  29. timerProgressBar: true,
  30. didOpen: (toast) => {
  31. toast.addEventListener('mouseenter', Swal.stopTimer)
  32. toast.addEventListener('mouseleave', Swal.resumeTimer)
  33. }
  34. })
  35. </script>
  36. </head>
  37. <body>
  38. <!--
  39. Flexbox makes logical sense but we'll go with a table-based display
  40. -->
  41. <div class="nav" style="position: fixed; width: 25%; padding: 4px">
  42. <ul>
  43. {% if nav_items %}
  44. {% for nav_item in nav_items|sort(attribute='order') %}
  45. <li><a href="{{ nav_item.href }}">{{ nav_item.label }}</a></li>
  46. {% endfor %}
  47. {% endif %}
  48. <!--
  49. <li><a href="javascript:document.body.classList.toggle('theme-dark')">Toggle Dark Mode</a></li>
  50. <li><a href="javascript:document.location.reload()">Refresh</a></li>
  51. -->
  52. </ul>
  53. {% if twitter_user or mastodon_user %}
  54. {% include "partial/compose-form.html" %}
  55. {% endif %}
  56. {% if False %}
  57. <!--
  58. {% include "partial/media-upload-form.html" %}
  59. -->
  60. {% endif %}
  61. <h2>Accounts</h2>
  62. {% include "partial/user-picker.html" %}
  63. {% if add_account_enabled %}
  64. <a href="{{ url_for('get_login_html') }}">Add account</a>
  65. {% endif %}
  66. </div>
  67. <div style="width: 75%; left:25%; position: absolute">
  68. {% block content %}{% endblock %}
  69. </div>
  70. <footer style="position: absolute; bottom: -800px; right: 0; width: 100px;">
  71. <p>
  72. Powered by <a href="https://glitch.com/~hogumathi">Hogumathi</a>. Give a gift to the author with <a href="https://venmo.com/harlanji">Venmo</a> or become a <a href="https://patreon.com/harlanji">patron</a> for gifts
  73. like early access and coupon codes for software on <a href="https://harlanji.gumroad.com">Gumroad</a>.
  74. </p>
  75. </footer>
  76. </body>
  77. </html>