The smokesignal.events web application

refactor: refreshing login page per Tom's UI experiment

Changed files
+134 -36
templates
+6 -14
templates/en-us/login.bare.html
··· 2 2 {% block content %} 3 3 <section class="section is-fullheight"> 4 4 <div class="container is-max-tablet"> 5 - 6 5 <div class="box content"> 7 - 8 - <article class="message is-success"> 9 - <div class="message-body"> 10 - <p> 11 - Log in to Smoke Signal using your AT-Handle, it looks like "@ngerakines.me" or "@alice.bsky.social". 12 - </p> 13 - </div> 14 - </article> 15 - 6 + <div class="has-text-centered mb-5"> 7 + <h1 class="title is-3 mb-2">Sign in to Smoke Signal</h1> 8 + <p class="subtitle is-6 has-text-grey">Sign in or create an account in the Atmosphere to get started.</p> 9 + </div> 16 10 {% include 'en-us/login.partial.html' %} 17 - 18 11 </div> 19 12 20 - <div class="box content"> 13 + <div class="box content"> 21 14 <article class="message is-info"> 22 15 <div class="message-header"> 23 16 <p>OAuth Permissions Requested</p> ··· 33 26 <p class="mt-3"><small>These permissions allow Smoke Signal to function as your decentralized event management tool while keeping your data under your control.</small></p> 34 27 </div> 35 28 </article> 36 - 37 29 </div> 38 30 </div> 39 31 </section> 40 - {% endblock %} 32 + {% endblock %}
+5 -8
templates/en-us/login.html
··· 5 5 <section class="section is-fullheight"> 6 6 <div class="container is-max-tablet"> 7 7 <div class="box content"> 8 - <article class="message is-primary"> 9 - <div class="message-body"> 10 - <p> 11 - Log in to Smoke Signal using your AT-Handle, it looks like "@ngerakines.me" or "@alice.bsky.social". 12 - </p> 13 - </div> 14 - </article> 8 + <div class="has-text-centered mb-5"> 9 + <h1 class="title is-3 mb-2">Sign in to Smoke Signal</h1> 10 + <p class="subtitle is-6 has-text-grey">Sign in or create an account in the Atmosphere to get started.</p> 11 + </div> 15 12 {% include 'en-us/login.partial.html' %} 16 13 </div> 17 14 </div> 18 15 </section> 19 - {% endblock %} 16 + {% endblock %}
+123 -14
templates/en-us/login.partial.html
··· 2 2 {% if destination %} 3 3 <input type="hidden" name="destination" value="{{ destination }}"> 4 4 {% endif %} 5 + 5 6 <div class="field"> 6 - <label class="label" for="loginHandleInput">Handle</label> 7 7 <div class="control has-icons-left{% if handle_error %} has-icons-right{% endif %}" data-loading-class="is-loading"> 8 - <input class="input{% if handle_error %} is-danger{% endif %}" type="text" id="loginHandleInput" name="handle" required="required" autocomplete="handle" {% if handle_input %} 9 - value="{{ handle_input }}" {% endif %} placeholder="you.bsky.social" data-loading-disable> 8 + <input class="input{% if handle_error %} is-danger{% endif %}" 9 + type="text" 10 + id="loginHandleInput" 11 + name="handle" 12 + required="required" 13 + autocomplete="handle" 14 + {% if handle_input %}value="{{ handle_input }}"{% endif %} 15 + placeholder="alice.bsky.social" 16 + data-loading-disable> 10 17 <span class="icon is-small is-left"> 11 18 <i class="fas fa-at"></i> 12 19 </span> 13 - {% if handle_error %}<span class="icon is-small is-right"> 20 + {% if handle_error %} 21 + <span class="icon is-small is-right"> 14 22 <i class="fas fa-exclamation-triangle"></i> 15 - </span>{% endif %} 23 + </span> 24 + {% endif %} 16 25 </div> 17 26 {% if handle_error %}<p class="help is-danger">{{ message }}</p>{% endif %} 18 27 </div> 28 + 19 29 <div class="field"> 20 30 <div class="control"> 21 - <button hx-post="/oauth/login" hx-swap="outerHTML" hx-target="#loginForm" type="submit" id="loginSubmit" class="button is-primary" name="submit" value="Submit" data-loading-disable>Sign-In</button> 31 + <button hx-post="/oauth/login" 32 + hx-swap="outerHTML" 33 + hx-target="#loginForm" 34 + type="submit" 35 + id="loginSubmit" 36 + class="button is-primary is-fullwidth" 37 + name="submit" 38 + value="Submit" 39 + data-loading-disable> 40 + Continue with internet handle 41 + </button> 22 42 </div> 23 43 </div> 24 - <p><a target="_blank" href="https://discourse.smokesignal.events/t/login-troubleshooting/82">Trouble signing in?</a></p> 25 - <hr/> 44 + 26 45 <div class="field"> 27 46 <div class="control"> 28 - <button hx-post="/oauth/login" hx-swap="outerHTML" hx-target="#loginForm" class="button is-info" type="submit" name="submit" value="Submit" hx-vals='{ "handle": "{{ "https://bsky.social" }}" }' data-loading-disable> 29 - <span class="icon"> 30 - <i class="fab fa-bluesky"></i> 31 - </span> 32 - <span>Register on bsky.social</span> 47 + <button hx-post="/oauth/login" 48 + hx-swap="outerHTML" 49 + hx-target="#loginForm" 50 + type="submit" 51 + class="button is-fullwidth is-outlined" 52 + name="submit" 53 + value="Submit" 54 + hx-vals='{ "handle": "{{ "https://bsky.social" }}" }' 55 + data-loading-disable> 56 + Create an account on bsky.social 33 57 </button> 34 58 </div> 35 59 </div> 36 - <p><a target="_blank" href="https://discourse.smokesignal.events/t/account-registration-guide/87">Learn more about account registration</a></p> 60 + 61 + <hr class="my-4"> 62 + 63 + <details class="login-help-section"> 64 + <summary class="login-help-summary"> 65 + <span class="login-help-title">What is an internet handle?</span> 66 + <span class="icon is-small login-help-chevron"> 67 + <i class="fas fa-chevron-down"></i> 68 + </span> 69 + </summary> 70 + <div class="login-help-content mt-3"> 71 + <p> 72 + Some open social apps, such as Bluesky, set you up with 73 + a free domain and open social hosting when you sign up. 74 + You might not have realized that, but if you sign up on 75 + one of those services, the username you get is a domain, 76 + such as you.bsky.social. That's an internet handle. 77 + </p> 78 + <p class="mt-3"> 79 + If you don't have one, choose "Create an account on bsky.social" 80 + or use the URL of a PDS in the form. 81 + </p> 82 + <p class="mt-3"> 83 + Read more at <a href="https://internethandle.org" target="_blank" rel="noopener">internethandle.org <i class="fas fa-external-link-alt fa-xs"></i></a>. 84 + </p> 85 + </div> 86 + </details> 87 + 88 + <details class="login-help-section mt-3"> 89 + <summary class="login-help-summary"> 90 + <span class="login-help-title">What is my PDS?</span> 91 + <span class="icon is-small login-help-chevron"> 92 + <i class="fas fa-chevron-down"></i> 93 + </span> 94 + </summary> 95 + <div class="login-help-content mt-3"> 96 + <p> 97 + Your Personal Data Server (PDS) is a service that stores 98 + your social data and allows you to interact with open social 99 + apps on AT Protocol. 100 + </p> 101 + </div> 102 + </details> 37 103 </form> 104 + 105 + <style> 106 + .login-help-section { 107 + border-bottom: 1px solid #dbdbdb; 108 + padding-bottom: 0.75rem; 109 + } 110 + 111 + .login-help-summary { 112 + display: flex; 113 + justify-content: space-between; 114 + align-items: center; 115 + cursor: pointer; 116 + list-style: none; 117 + padding: 0.5rem 0; 118 + } 119 + 120 + .login-help-summary::-webkit-details-marker { 121 + display: none; 122 + } 123 + 124 + .login-help-title { 125 + font-weight: 600; 126 + color: #363636; 127 + } 128 + 129 + .login-help-chevron { 130 + transition: transform 0.2s ease; 131 + } 132 + 133 + details[open] .login-help-chevron { 134 + transform: rotate(180deg); 135 + } 136 + 137 + .login-help-content { 138 + color: #4a4a4a; 139 + font-size: 0.95rem; 140 + line-height: 1.6; 141 + } 142 + 143 + .login-help-content p { 144 + margin-bottom: 0; 145 + } 146 + </style>