Files
UmbraTrans/web/assets/app.js
2026-09-26 07:57:11 -07:00

57 lines
1.8 KiB
JavaScript

const $ = (selector, root = document) => root.querySelector(selector);
const $$ = (selector, root = document) => [...root.querySelectorAll(selector)];
function showToast(message) {
const toast = $('#toast');
if (!toast) return;
toast.textContent = message;
toast.classList.add('toast--visible');
window.clearTimeout(showToast.timer);
showToast.timer = window.setTimeout(() => toast.classList.remove('toast--visible'), 3600);
}
function setupLogin() {
const form = $('#login-form');
if (!form) return;
const message = $('#login-message');
const email = $('#email');
const password = $('#password');
const demo = $('#demo-login');
const completeDemoLogin = (value) => {
email.value = value || 'alex.morgan@example.com';
password.value = 'prototype-only';
sessionStorage.setItem('ut-demo-user', email.value);
window.location.href = 'workspace.html';
};
demo?.addEventListener('click', () => completeDemoLogin());
form.addEventListener('submit', (event) => {
event.preventDefault();
if (!email.value.trim() || !password.value) {
message.textContent = 'Enter an account and password to continue.';
message.className = 'form-message form-message--error';
return;
}
message.textContent = 'Prototype login accepted locally. No credentials were transmitted.';
message.className = 'form-message form-message--success';
window.setTimeout(() => completeDemoLogin(email.value.trim()), 350);
});
}
function setupWorkspace() {
$$('[data-demo-action]').forEach((button) => {
button.addEventListener('click', () => {
if (button.textContent.trim() === 'Sign out') {
sessionStorage.removeItem('ut-demo-user');
window.location.href = 'index.html';
return;
}
showToast(button.dataset.demoAction);
});
});
}
setupLogin();
setupWorkspace();