| 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 |
<title>{% block title %}{{ shell.site }}{% endblock %} · {{ shell.site }}</title> |
| 7 |
<link rel="stylesheet" href="/style.css"> |
| 8 |
<link rel="icon" href="/favicon.svg" type="image/svg+xml"> |
| 9 |
<script>(function(){var m=document.cookie.match(/(?:^|; )theme=(light|dark|auto)/);if(m&&m[1]!=="auto")document.documentElement.dataset.theme=m[1];})();</script> |
| 10 |
</head> |
| 11 |
<body{% block bodyattrs %}{% endblock %}> |
| 12 |
<header> |
| 13 |
<a class="brand" href="/"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-24 -12 48 24" width="48" height="24" aria-hidden="true"><defs><linearGradient id="oxyGradH" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#00F0FF"/><stop offset="100%" stop-color="#0072FF"/></linearGradient></defs><path d="M -11 -6 L 11 -6" stroke="url(#oxyGradH)" stroke-width="3" stroke-linecap="round"/><path d="M -11 6 L 11 6" stroke="url(#oxyGradH)" stroke-width="3" stroke-linecap="round"/><circle cx="-11" cy="0" r="10" fill="none" stroke="url(#oxyGradH)" stroke-width="3"/><circle cx="-11" cy="0" r="3.5" fill="#00F0FF"/><circle cx="11" cy="0" r="10" fill="none" stroke="url(#oxyGradH)" stroke-width="3"/><circle cx="11" cy="0" r="3.5" fill="#FFFFFF"/></svg><span class="px">OXYGEN<em>HUB</em></span></a> |
| 14 |
<form class="find" action="/search" method="get" role="search"><input type="search" name="q" placeholder="Search…" aria-label="Search" autocomplete="off"></form> |
| 15 |
<nav> |
| 16 |
{% if let Some(u) = shell.user %} |
| 17 |
<a class="go" href="/new" title="New repository">+ NEW</a> |
| 18 |
<a class="bell" href="/notifications" title="Notifications">✉{% if shell.unread > 0 %}<span class="count">{{ shell.unread }}</span>{% endif %}</a> |
| 19 |
<a class="me" href="/{{ u }}">{{ u }}</a> |
| 20 |
<form class="inline" method="post" action="/logout"><input type="hidden" name="_csrf" value="{{ shell.csrf }}"><button>SIGN OUT</button></form> |
| 21 |
{% else %} |
| 22 |
<a class="go" href="/login">SIGN IN</a> |
| 23 |
<a class="go" href="/register">REGISTER</a> |
| 24 |
{% endif %} |
| 25 |
</nav> |
| 26 |
</header> |
| 27 |
<div class="band"> |
| 28 |
<a href="/">{% if shell.user.is_some() %}Dashboard{% else %}Repositories{% endif %}</a> |
| 29 |
<a href="/explore">Explore</a> |
| 30 |
{% if shell.user.is_some() %}<a href="/notifications">Notifications</a><a href="/settings">Settings</a>{% endif %} |
| 31 |
<span class="grow"></span> |
| 32 |
{% if shell.is_admin %}<a class="admin" href="/admin">Admin</a>{% endif %} |
| 33 |
<a class="dim" href="/{{ shell.version }}" title="Oxygenhub {{ shell.version }}" tabindex="-1">v{{ shell.version }}</a> |
| 34 |
</div> |
| 35 |
{% block tabs %}{% endblock %} |
| 36 |
<main{% block mainclass %}{% endblock %}> |
| 37 |
{% block content %}{% endblock %} |
| 38 |
</main> |
| 39 |
<footer> |
| 40 |
<div class="foot"> |
| 41 |
<div> |
| 42 |
<a class="brand" href="/"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-24 -12 48 24" width="48" height="24" aria-hidden="true"><defs><linearGradient id="oxyGradF" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#00F0FF"/><stop offset="100%" stop-color="#0072FF"/></linearGradient></defs><path d="M -11 -6 L 11 -6" stroke="url(#oxyGradF)" stroke-width="3" stroke-linecap="round"/><path d="M -11 6 L 11 6" stroke="url(#oxyGradF)" stroke-width="3" stroke-linecap="round"/><circle cx="-11" cy="0" r="10" fill="none" stroke="url(#oxyGradF)" stroke-width="3"/><circle cx="-11" cy="0" r="3.5" fill="#00F0FF"/><circle cx="11" cy="0" r="10" fill="none" stroke="url(#oxyGradF)" stroke-width="3"/><circle cx="11" cy="0" r="3.5" fill="#FFFFFF"/></svg><span class="px">OXYGEN<em>HUB</em></span></a> |
| 43 |
<p class="small">{{ shell.site }} · a forge for Oxygen repositories. Nothing here is inferred: what a page says, the object store says.</p> |
| 44 |
</div> |
| 45 |
<div class="cols"> |
| 46 |
<div><h3>Use</h3><a href="/explore">Explore</a><a href="/api/v1/repos">API</a><a href="/.well-known/oxyhub-key">Hub key</a></div> |
| 47 |
<div><h3>Keys</h3><span class="small"><kbd>/</kbd> search · <kbd>g</kbd><kbd>c</kbd> code · <kbd>g</kbd><kbd>h</kbd> history · <kbd>?</kbd> help</span></div> |
| 48 |
</div> |
| 49 |
</div> |
| 50 |
</footer> |
| 51 |
<div id="keys" class="sheet" hidden> |
| 52 |
<h2>Keyboard</h2> |
| 53 |
<table><tr><td><kbd>/</kbd></td><td>Search</td></tr><tr><td><kbd>g</kbd> <kbd>c</kbd></td><td>Code</td></tr><tr><td><kbd>g</kbd> <kbd>h</kbd></td><td>History</td></tr><tr><td><kbd>g</kbd> <kbd>b</kbd></td><td>Bookmarks</td></tr><tr><td><kbd>g</kbd> <kbd>t</kbd></td><td>Trust</td></tr><tr><td><kbd>?</kbd></td><td>This sheet</td></tr></table> |
| 54 |
</div> |
| 55 |
<script src="/static/hub.js" defer></script> |
| 56 |
</body> |
| 57 |
</html> |