@authduo/authduo
Version:
Free User-sovereign Authentication for the World
232 lines (183 loc) • 5.28 kB
HTML
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="darkreader" content="dark"/>
<title>Authduo.org</title>
<link rel="icon" href="/assets/favicon.png"/>
<style>
:root {
color-scheme: dark;
--link: cyan;
--site-bg: #181818;
--instruction-color: #00ff89;
--domain-color: #ff0;
--passport-color: #512f71;
--login-color: #80f;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
scrollbar-width: thin;
scrollbar-color: #333 transparent;
}
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #333; border-radius: 1em; }
::-webkit-scrollbar-thumb:hover { background: #444; }
a {
color: var(--link);
text-decoration: none;
&:visited {
color: color-mix(in srgb, purple, var(--link) 70%);
}
&:hover {
color: color-mix(in srgb, white, var(--link) 90%);
text-decoration: underline;
}
&:active {
color: color-mix(in srgb, white, var(--link) 50%);
}
}
/*------------------------------------------*/
html {
height: 100%;
}
body {
min-height: 100%;
font-size: 16px;
color: #fffc;
background: var(--site-bg);
background-attachment: fixed;
font-family: sans-serif;
scrollbar-gutter: stable;
scrollbar-width: thin;
}
body {
display: flex;
flex-direction: column;
align-items: center;
gap: 2em;
padding-bottom: 4em;
> * {
display: block;
justify-content: center;
}
}
.title {
opacity: 0.3;
color: white;
display: flex;
flex-direction: column;
align-items: center;
gap: 0;
margin-top: 2vh;
> svg {
width: 2em;
height: 2em;
stroke-width: 2;
}
}
auth-manager {
display: block;
width: 95%;
max-width: 42em;
border-radius: 0.5em;
}
footer {
display: flex;
flex-direction: column;
gap: 0.33em;
opacity: 0.5;
font-size: 0.8em;
width: 42em;
max-width: 99%;
text-align: center;
> auth-safe-storage {
margin-top: 1em;
}
}
</style>
<meta data-commit-hash="2cdd995d7f759d6a5e0be8fe4aa8f7134ee1508c"/>
<meta name="theme-color" content="#8800ff">
<meta property="og:type" content="website">
<meta property="og:site_name" content="authduo.org">
<meta property="og:title" content="Authduo.org – login passports">
<meta property="og:description" content="Own your identity. No emails, no passwords, no databases. User-sovereign, privacy-focused, open-source.">
<meta property="og:image" content="https://authduo.org/assets/favicon.png">
<meta property="og:url" content="https://authduo.org/">
<script type="importmap">
{
"imports": {
"@benev/slate/": "/node_modules/@benev/slate/",
"@benev/slate": "/node_modules/@benev/slate/x/index.js",
"@lit-labs/ssr-dom-shim/": "/node_modules/@lit-labs/ssr-dom-shim/",
"@lit-labs/ssr-dom-shim": "/node_modules/@lit-labs/ssr-dom-shim/index.js",
"@lit/reactive-element/": "/node_modules/@lit/reactive-element/",
"@lit/reactive-element": "/node_modules/@lit/reactive-element/reactive-element.js",
"@types/trusted-types/": "/node_modules/@types/trusted-types/",
"lit/": "/node_modules/lit/",
"lit": "/node_modules/lit/index.js",
"lit-element/": "/node_modules/lit-element/",
"lit-element": "/node_modules/lit-element/index.js",
"lit-html/": "/node_modules/lit-html/",
"lit-html": "/node_modules/lit-html/lit-html.js",
"renraku/": "/node_modules/renraku/",
"renraku": "/node_modules/renraku/x/index.js",
"ws/": "/node_modules/ws/",
"ws": "/node_modules/ws/index.js"
},
"scopes": {}
}
</script>
<script>
// determine dev mode
const params = new URLSearchParams(location.search)
const isDevMode = params.has("dev")
? params.get("dev") !== "false"
: (
location.host.startsWith("localhost") ||
location.host.startsWith("192.168.") ||
location.host.startsWith("10.0.")
)
// create and insert a script element
function script(attributes) {
const element = document.createElement("script")
element.defer = true
for (const [key, value] of Object.entries(attributes))
element.setAttribute(key, value === true ?"" :value)
document.head.appendChild(element)
}
// launch dev module
if (isDevMode) {
document.title = "[dev] " + document.title
script({type: "module", src: "manager/index.bundle.js?v=5f1c16ba"})
}
// launch prod module
else {
script({type: "module", src: "manager/index.bundle.min.js?v=968f162d"})
}
</script>
</head>
<body>
<h1 class=title>
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-shield-lock" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 3a12 12 0 0 0 8.5 3a12 12 0 0 1 -8.5 15a12 12 0 0 1 -8.5 -15a12 12 0 0 0 8.5 -3" />
<path d="M12 11m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
<path d="M12 12l0 2.5" />
</svg>
<span>Authduo.org</span>
</h1>
<auth-manager></auth-manager>
<footer>
<p><strong><em>Own your identity.</em></strong></p>
<p>No emails, no passwords, no databases.</p>
<p>User-sovereign, privacy-focused, open-source.</p>
<p>See <a href="https://github.com/authduo/authduo" target=_blank>Authduo on GitHub</a> to learn more.</p>
<auth-safe-storage></auth-safe-storage>
</footer>
</body>
</html>