You're looking at it

Homepage: https://roundabout-host.com

By using this site, you agree to have cookies stored on your device, strictly for functional purposes, such as storing your session and preferences.

Dismiss

 default.html

View raw Download
text/html • 11.85 kiB
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
27
JavaScript code in this page.
28
29
Copyright 2023-2025 Roundabout contributors
30
31
The JavaScript code in this page is free software: you can
32
redistribute it and/or modify it under the terms of the GNU
33
Affero General Public License (GNU AGPL) as published by the Free
34
Software Foundation, either version 3 of the License, or
35
(at your option) any later version. The code is distributed
36
WITHOUT ANY WARRANTY; without even the implied warranty of
37
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38
GNU AGPL for more details.
39
40
As additional permission under GNU AGPL version 3 section 7, you
41
may distribute non-source (e.g., minimized or compacted) forms of
42
that code without the copy of the GNU AGPL normally required by
43
section 4, provided you include this license notice and a URL
44
through which recipients can access the Corresponding Source.
45
46
@licend The above is the entire license notice
47
for 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
188
style="
189
{% if category %}
190
background-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 %};
196
color:
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