Skip to main content

max / makenotwork

3.7 KB · 89 lines History Blame Raw
1 {% extends "base.html" %}
2
3 {% block title %}Join - Makenot.work{% endblock %}
4 {% block body_attrs %} class="padded-page"{% endblock %}
5
6 {% block head %}
7 <link rel="stylesheet" href="/static/wizard.css">
8 {% endblock %}
9
10 {% block content %}
11 <div class="wizard-layout">
12 <aside class="wizard-sidebar">
13 <h2 class="subtitle-h2">Join</h2>
14 {% include "wizards/partials/step_nav.html" %}
15 </aside>
16
17 <div class="wizard-content" id="wizard-step">
18 <div class="wizard-step">
19 <h2 class="subtitle-h2">Create account</h2>
20 <p class="step-description">Makenot.work is a 0% fee platform where creators sell directly to fans. Sign up to browse, buy, or sell your own work.</p>
21
22 {% if let Some(code) = invite_code %}
23 <div class="info-box mb-4">
24 You were invited -- no pitch required. Just create your account.
25 </div>
26 {% endif %}
27
28 <form hx-post="/join/step/account"
29 hx-target="#wizard-step" hx-swap="innerHTML">
30 <div class="form-group">
31 <label for="wiz-username">Username</label>
32 <input type="text" id="wiz-username" name="username" required
33 placeholder="username" autocomplete="off"
34 hx-post="/api/validate/username"
35 hx-trigger="keyup changed delay:500ms"
36 hx-target="#username-status"
37 hx-indicator="#username-spinner">
38 <div class="hint">Your public url: makenot.work/u/<span id="username-preview">username</span></div>
39 <span id="username-spinner" class="htmx-indicator username-spinner">Checking...</span>
40 <span id="username-status"></span>
41 </div>
42
43 <div class="form-group">
44 <label for="wiz-email">Email</label>
45 <input type="email" id="wiz-email" name="email" required
46 placeholder="you@example.com" autocomplete="email">
47 <div class="hint">Used for account recovery and notifications</div>
48 </div>
49
50 <div class="form-group">
51 <label for="wiz-password">Password</label>
52 <input type="password" id="wiz-password" name="password" required
53 placeholder="--------" minlength="8" autocomplete="new-password">
54 <div class="hint">Minimum 8 characters</div>
55 </div>
56
57 {% if let Some(code) = invite_code %}
58 <input type="hidden" name="invite_code" value="{{ code }}">
59 {% endif %}
60
61 <div class="wizard-actions">
62 <a href="/" class="btn-secondary">Cancel</a>
63 <button type="submit" class="btn-primary">Create Account</button>
64 </div>
65 </form>
66
67 <div class="foot-link foot-link--centered">
68 Already have an account? <a href="/login">Log in</a>
69 </div>
70 </div>
71 </div>
72 </div>
73 {% endblock %}
74
75 {% block scripts %}
76 <script src="/static/wizard.js"></script>
77 <script>
78 (function() {
79 var input = document.getElementById('wiz-username');
80 if (input) {
81 input.addEventListener('input', function() {
82 var preview = document.getElementById('username-preview');
83 if (preview) preview.textContent = this.value || 'username';
84 });
85 }
86 })();
87 </script>
88 {% endblock %}
89