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