default.html
HTML document, Unicode text, UTF-8 text
1<!DOCTYPE html> 2<html lang="en"> 3<head> 4{% block head %} 5<link rel="stylesheet" href="/static/style.css"> 6<link rel="stylesheet" href="/userstyle"> 7<title>{% block title %}{% trans %}Roundabout{% endtrans %}{% endblock %}</title> 8<link rel="apple-touch-icon" sizes="512x512" href="/static/apple-touch-icon.png"> 9<link rel="manifest" href="/static/site.webmanifest"> 10<link rel="mask-icon" href="/static/safari-pinned-tab.svg" color="#3f51b5"> 11<link rel="shortcut icon" href="/static/favicon.ico"> 12<meta name="apple-mobile-web-app-title" content="Roundabout"> 13<meta name="application-name" content="Roundabout"> 14<meta name="theme-color" content="#37474f"> 15<link rel="shortcut icon" href="/static/logo.svg"> 16<script src="https://code.iconify.design/iconify-icon/1.0.7/iconify-icon.min.js"></script> 17<meta name="viewport" content="width=device-width, initial-scale=1" /> 18<script src="/static/htmx.min.js"></script> 19{% endblock %} 20<script> 21/* 22@licstart The following is the entire license notice for the 23JavaScript code in this page. 24 25Copyright 2023-2024 Roundabout contributors 26 27The JavaScript code in this page is free software: you can 28redistribute it and/or modify it under the terms of the GNU 29Affero General Public License (GNU AGPL) as published by the Free 30Software Foundation, either version 3 of the License, or 31(at your option) any later version. The code is distributed 32WITHOUT ANY WARRANTY; without even the implied warranty of 33MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 34GNU AGPL for more details. 35 36As additional permission under GNU AGPL version 3 section 7, you 37may distribute non-source (e.g., minimized or compacted) forms of 38that code without the copy of the GNU AGPL normally required by 39section 4, provided you include this license notice and a URL 40through which recipients can access the Corresponding Source. 41 42@licend The above is the entire license notice 43for the JavaScript code in this page. 44*/ 45</script> 46</head> 47<body> 48<dialog id="sidenav" class="sheet-left"> 49<x-frame style="--width: 320px; --margin: 0;"> 50<article class="card"> 51<section class="card-main"> 52<nav class="sidenav"> 53<ul> 54{% if logged_in_user %} 55<li><a href="/{{ logged_in_user }}"> 56<img src="/info/{{ logged_in_user }}/avatar" class="avatar" style="width: 1em; height: 1em;"> 57{{ logged_in_user }} 58</a></li> 59<li><a href="/notifications"> 60<iconify-icon icon="ic:baseline-inbox" data-badge="{{ unread }}"></iconify-icon> 61{% trans %}Notifications{% endtrans %} 62</a></li> 63<li><a href="/newrepo"> 64<iconify-icon icon="mdi:folder-plus"></iconify-icon> 65{% trans %}Create repository{% endtrans %} 66</a></li> 67<li><a href="/favourites"> 68<iconify-icon icon="mdi:star"></iconify-icon> 69{% trans %}Your favourites{% endtrans %} 70</a></li> 71<li><a href="/settings"> 72<iconify-icon icon="mdi:cog"></iconify-icon> 73{% trans %}Settings{% endtrans %} 74</a></li> 75<li><a href="/logout"> 76<iconify-icon icon="mdi:logout"></iconify-icon> 77{% trans %}Log out{% endtrans %} 78</a></li> 79{% else %} 80<li><a href="/accounts"> 81<iconify-icon icon="mdi:account"></iconify-icon> 82{% trans %}Log in or sign up{% endtrans %} 83</a></li> 84{% endif %} 85</ul> 86</nav> 87</section> 88</article> 89</x-frame> 90</dialog> 91{% block dialogs %} 92{% endblock %} 93<x-vbox class="nopad" style="align-items: stretch; height: 100vh;"> 94{% if "cookie-banner" not in request.cookies %} 95<x-hbox id="cookie-info"> 96<p> 97{% trans %}By using this site, you agree to have cookies stored on your device, strictly for functional purposes, such as storing your session and preferences.{% endtrans %} 98</p> 99<x-buttonbox> 100<a href="/cookie-dismiss" class="button button-flat button-neutral">{% trans %}Dismiss{% endtrans %}</a> 101</x-buttonbox> 102</x-hbox> 103{% endif %} 104<header> 105<nav id="global-nav" class="breadcrumbs"> 106<a href="javascript:document.getElementById('sidenav').showModal();" id="sidenav-trigger"> 107<iconify-icon icon="mdi:menu"></iconify-icon> 108</a> 109<ul> 110<li><a href="/">{% trans %}roundabout{% endtrans %} (α)</a></li> 111{% block breadcrumbs %}{% endblock %} 112</ul> 113<div class="flexible-space" id="navbar-separator"></div> 114<x-buttonbox style="align-items: center; gap: 12px;"> 115{% if logged_in_user %} 116<a href="/{{ logged_in_user }}"> 117<x-hbox class="box-center" style="--gap-box: 1ch;"> 118<img src="/info/{{ logged_in_user }}/avatar" class="avatar" style="width: 1em; height: 1em;"> 119{{ logged_in_user }} 120</x-hbox> 121</a> 122<a href="/notifications"> 123<iconify-icon icon="ic:baseline-inbox" data-badge="{{ unread }}"></iconify-icon> 124</a> 125<a href="/newrepo"> 126<iconify-icon icon="mdi:folder-plus" title="{% trans %}Create repository{% endtrans %}"></iconify-icon> 127</a> 128<a href="/favourites"> 129<iconify-icon icon="mdi:star" title="{% trans %}Favourites{% endtrans %}"></iconify-icon> 130</a> 131<a href="/settings"> 132<iconify-icon icon="mdi:cog" title="{% trans %}User settings{% endtrans %}"></iconify-icon> 133</a> 134<a href="/logout"> 135<iconify-icon icon="mdi:logout" title="{% trans %}Log out{% endtrans %}"></iconify-icon> 136</a> 137{% else %} 138<a href="/accounts">{% trans %}Log in or sign up{% endtrans %}</a> 139{% endif %} 140</x-buttonbox> 141</nav> 142{% if self.nav() | trim %} 143<nav id="repo-nav" class="navbar" style="max-height: 100%; flex: 0 0 var(--height-navbar);"> 144{% block nav %}{% endblock %} 145</nav> 146{% endif %} 147</header> 148<main> 149{% block full %} 150{% block content %} 151{% endblock %} 152{% endblock %} 153</main> 154<footer> 155{{ Markup(config.footer) }} 156<x-hbox style="justify-content: center;"> 157<details> 158<summary>{% trans %}English{% endtrans %}</summary> 159<form method="POST" action="/language"> 160<ul> 161<li> 162<button type="submit" value="{{ locale }}" class="link-button" name="language"> 163{% trans %}Automatic{% endtrans %} 164</button> 165</li> 166{% for locale in config.available_locales %} 167<li> 168<button type="submit" value="{{ locale }}" class="link-button" name="language"> 169{{ locale_names[locale] }} 170</button> 171</li> 172{% endfor %} 173</ul> 174</form> 175</details> 176</x-hbox> 177</footer> 178</x-vbox> 179{% with messages = get_flashed_messages(with_categories=true) %} 180<ol class="toast-container"> 181{% for category, message in messages %} 182<li 183style=" 184{% if category %} 185background-color: 186{% if category == 'error' %}var(--color-error) 187{% elif category == 'alert' %}var(--color-alert) 188{% elif category == 'info' %}var(--color-info) 189{% elif category == 'success' %}var(--color-success) 190{% endif %}; 191color: 192{% if category == 'error' %}var(--color-error-text) 193{% elif category == 'alert' %}var(--color-alert-text) 194{% elif category == 'info' %}var(--color-info-text) 195{% elif category == 'success' %}var(--color-success-text) 196{% endif %}; 197{% endif %}" 198> 199{% if category | split | first == "task" %} 200{{ message }} 201{% else %} 202{{ message }} 203{% endif %} 204<x-buttonbox> 205<button class="button-flat" onclick="removeToast()" style="color: inherit !important;">{% trans %}Close{% endtrans %}</button> 206</x-buttonbox> 207</li> 208{% endfor %} 209</ol> 210{% endwith %} 211<script src="/static/ripples.js"></script> 212<script src="/static/efficient-ui/dialogs.js"></script> 213<script src="/static/efficient-ui/toasts.js"></script> 214{% block scripts %} 215{% endblock %} 216</body> 217</html> 218