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