aboutsummaryrefslogtreecommitdiff
path: root/static/pages/login
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2026-05-20 10:16:50 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2026-05-20 10:16:50 +0200
commit44445734ba4a0f05564f808c2fd34a7f23c6fafb (patch)
tree3bd22add718620cbf931286f55137bcc666100be /static/pages/login
parent95ae9f15e1db335a7f8358d811ea37e2c89dd10f (diff)
Let's do a rewrite!
Created project structure and changed `build.zig` and added licence.
Diffstat (limited to 'static/pages/login')
-rw-r--r--static/pages/login/index.css153
-rw-r--r--static/pages/login/index.js118
2 files changed, 0 insertions, 271 deletions
diff --git a/static/pages/login/index.css b/static/pages/login/index.css
deleted file mode 100644
index d9d0f41..0000000
--- a/static/pages/login/index.css
+++ /dev/null
@@ -1,153 +0,0 @@
-#container {
- background: var(--page-background);
- overflow: hidden;
- width: 100%;
- height: 100%;
- z-index: 1000;
- position: absolute;
- top: 0;
- bottom: 0;
- transition: top 0.2s ease;
-}
-
-#container.hidden {
- top: -100%;
-}
-
-#box {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- max-width: 300px;
- width: 100%;
- padding: 0px;
- box-shadow: #223223aa 1px 1px 4px;
- border-radius: var(--border-radius);
- z-index: 5000;
- display: grid;
- grid-template-columns: auto 30px;
- background: #ffffff99;
- backdrop-filter: blur(10px);
-}
-
-#box input {
- border-top-right-radius: 0px;
- border-bottom-right-radius: 0px;
- background: #0000;
-}
-
-#box #submit {
- border-top-left-radius: 0px;
- border-bottom-left-radius: 0px;
- background: var(--page-background);
- color: var(--fg);
- padding: 5px;
- background: #0000;
-}
-
-#username-label {
- position: absolute;
- top: calc(50% - 40px);
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 10000;
- user-select: none;
- color: var(--fg-primary);
- font-size: 0.8em;
- cursor: pointer;
-}
-#comment {
- position: absolute;
- top: calc(50% + 40px);
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 10000;
- user-select: none;
- color: var(--primary);
- font-size: 0.8em;
- cursor: pointer;
-}
-
-#title {
- font-family: 'Pacifico';
- position: absolute;
- width: 100%;
- height: 100%;
- text-align: center;
- top: 0px;
- padding-top: 50px;
- font-size: 2.5em;
- z-index: 1000;
- text-shadow: -1px -1px 0 var(--page-background),
- 1px 1px 0 var(--page-background),
- 1px -1px 0 var(--page-background),
- -1px 1px 0 var(--page-background);
- overflow: hidden;
-}
-
-@keyframes left-bubble {
- from {
- width: 0px;
- height: 0px;
- }
- to {
- width: 100vw;
- height: 100vw;
- }
-}
-
-#title:before {
- content: '';
- display: block;
- position: absolute;
- top: -30px;
- left: 0px;
- background: var(--primary);
- transform: translate(-50%, -50%);
- border-radius: 100%;
- z-index: -1;
- animation: left-bubble 1s normal forwards ease;
- width: 100vw;
- height: 100vw;
-}
-
-@keyframes right-bubble {
- from {
- width: 0px;
- height: 0px;
- }
- to {
- width: 200vw;
- height: 200vw;
- }
-}
-
-#title:after {
- content: '';
- display: block;
- position: absolute;
- bottom: 55%;
- right: 0px;
- width: 200vw;
- height: 200vw;
- transform: translate(50%, 50%);
- background: var(--fg);
- border-radius: 100%;
- z-index: -2;
- animation: right-bubble 1s normal forwards ease;
-}
-#subtitle {
- position: absolute;
- bottom: 50px;
- left: 50%;
- transform: translate(-50%, 0);
- white-space: nowrap;
- font-family: 'Pacifico';
- color: #69717d;
- z-index: 1000;
- text-shadow: -1px -1px 0 var(--page-background),
- 1px 1px 0 var(--page-background),
- 1px -1px 0 var(--page-background),
- -1px 1px 0 var(--page-background);
-}
diff --git a/static/pages/login/index.js b/static/pages/login/index.js
deleted file mode 100644
index 0390cc0..0000000
--- a/static/pages/login/index.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import icons from 'icons';
-import * as sfw from 'sfw';
-const { Div, Label, H1: Title, Input, Button, Form } = sfw.element.native;
-
-import stylesheet from './index.css';
-
-const css = await sfw.css.sheet(stylesheet);
-
-export default class LoginView extends sfw.element.Container {
- #container
- #user
- #username
- #password
- #comment
-
- constructor() {
- super({ css });
-
- this.onlogin = () => {};
- this.onpassword = () => {};
-
- this.body.append(
- this.#container = Div.new({
- id: 'container',
- children: [
- Div.new({ id: 'title', innerText: 'Memora' }),
- this.#user = Div.new({
- id: 'username-label',
- onclick: () => this.#reset(),
- }),
- Form.new({
- id: 'box',
- onsubmit: (e) => e.preventDefault(),
- children: [
- this.#username = Input.new({
- id: 'username',
- placeholder: 'Username',
- autocomplete: 'username',
- }),
- this.#password = Input.new({
- id: 'password',
- placeholder: 'Password',
- autocomplete: 'current-password',
- type: 'password',
- style: { display: 'none' },
- onkeydown: (e) => {
- if (e.key === 'Enter') {
- return this.#login();
- }
- },
- }),
- Button.new({
- id: 'submit',
- children: [ icons.next ],
- onclick: () => this.#next(),
- }),
- ]
- }),
- this.#comment = Div.new({
- id: 'comment',
- onclick: () => this.#reset(),
- }),
- Div.new({
- id: 'subtitle',
- innerText: 'Where nostalgia is home.',
- }),
- ]
- })
- );
- }
-
- #next() {
- if (this.#username.style.display != 'none') {
- this.#go_to_password();
- } else {
- this.#login();
- }
- }
-
- #go_to_password() {
- if (this.#username.value === '') return;
-
- this.#user.innerText = this.#username.value;
- this.#username.style.display = 'none';
- this.#password.style.display = '';
- this.#password.focus();
- }
-
- async #login() {
- await this.onlogin(this.#username.value, this.#password.value);
- this.#reset();
- }
-
- #reset() {
- this.#user.innerText = '';
- this.#username.value = '';
- this.#password.value = '';
- this.#username.style.display = '';
- this.#password.style.display = 'none';
- }
-
- set comment(value) {
- this.#comment.innerText = value;
- }
-
- show() {
- this.#container.classList.remove('hidden');
- this.focus();
- }
-
- hide() {
- this.#container.classList.add('hidden');
- }
-
- focus() {
- this.#username.focus();
- }
-}