autonomous.contact/public/signup_login_wall.html

148 lines
3.8 KiB
HTML
Raw Normal View History

<div id="signup-login-wall">
<style>
#signup-login-wall {
display: flex;
2025-10-08 14:42:01 -07:00
flex-direction: column;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 10000;
background: var(--bg);
visibility: visible;
opacity: 1;
transition: all 0.33s;
}
2025-10-08 14:42:01 -07:00
#login-tab .tab-content {
min-height: 17rem;
}
#signup-tab .tab-content {
min-height: 21rem;
}
body[data-user] #signup-login-wall {
visibility: hidden;
opacity: 0;
display: none;
}
#signup-login-wall .limiter {
width: 95%;
2025-10-08 14:42:01 -07:00
min-height: 24rem;
position: relative;
background: hsl(from var(--bg) h s calc(l/1.1));
max-width: 40em;
margin: 0 auto;
border-radius: var(--border-radius);
overflow: hidden;
}
#signup-login-wall form {
width: 100%;
2025-09-23 17:31:01 -07:00
padding: 1.5rem 1.5rem 0 1.5rem;
}
</style>
2025-10-08 14:42:01 -07:00
<!-- #include file="./signup_pitch.md" -->
<div class="limiter">
<div class="tabs">
<div id="login-tab" class="tab">
<input
type="radio"
name="signup-login-tabs"
id="login-tab-input"
class="tab-switch"
checked="checked"
/>
<label for="login-tab-input" class="tab-label">
<div class="label">Log In</div>
</label>
<div class="tab-content">
<form data-smart="true" data-method="POST" id="login-form" action="/api/auth">
<script>
{
const form = document.currentScript.closest("form");
form.on_reply = (response) => {
const user = response.user;
APP.login( user );
};
}
</script>
<div>
<input id="login-username" type="text" name="username" required />
<label class="placeholder" for="login-username">username</label>
</div>
<div>
<input id="login-password" type="password" name="password" required />
<label class="placeholder" for="login-password">password</label>
</div>
<div>
<button id="login-submit" type="submit" class="primary">Log In</button>
</div>
</form>
</div>
</div>
<div id="signup-tab" class="tab">
<input
type="radio"
name="signup-login-tabs"
id="signup-tab-input"
class="tab-switch"
/>
<label for="signup-tab-input" class="tab-label">
<div class="label">Sign Up</div>
</label>
<div class="tab-content">
2025-07-04 14:51:49 -07:00
<form data-smart="true" data-method="POST" id="signup-form" action="/api/users">
<script>
{
const form = document.currentScript.closest("form");
form.on_reply = (response) => {
const user = response.user;
2025-10-25 19:44:07 -07:00
APP.login( user );
};
}
</script>
<div>
<input id="signup-username" type="text" name="username" required />
<label class="placeholder" for="signup-username">username</label>
</div>
<div>
<input id="signup-password" type="password" name="password" required />
<label class="placeholder" for="signup-password">password</label>
</div>
2025-10-08 14:42:01 -07:00
<div>
<script>
APP.on( 'load', () => {
const query = new URL(document.location.toString())
.searchParams;
const invite_code = query.get("invite_code");
if (typeof invite_code === "string" && invite_code.length) {
document.getElementById("signup-invite-code").value =
decodeURIComponent(invite_code);
document.getElementById("signup-tab-input").checked = true;
}
});
</script>
2025-10-08 14:42:01 -07:00
<input
id="signup-invite-code"
type="text"
name="invite_code"
/>
<label class="placeholder" for="signup-invite-code">invite code</label>
</div>
<button id="signup-submit" type="submit" class="primary">Sign Up</button>
</form>
</div>
</div>
</div>
</div>
</div>