README / script.js
Brahmabullmedia's picture
Create script.js
ffd34ef verified
Raw History Blame Contribute Delete
1.91 kB
// Spottd micro-interactions
const year = document.getElementById('year');
if (year) year.textContent = new Date().getFullYear();
const email = document.getElementById('email');
const password = document.getElementById('password');
const pwToggle = document.querySelector('.pw-toggle');
const hint = document.getElementById('domainHint');
const form = document.getElementById('loginForm');
// Gentle campus-domain nudge (non-blocking)
const allowedDomains = [
'utoronto.ca','torontomu.ca','yorku.ca','mcmaster.ca','uwaterloo.ca',
'queensu.ca','uwo.ca','uottawa.ca','algonquincollege.com','sheridancollege.ca',
'humber.ca','senecacollege.ca'
];
email?.addEventListener('input', () => {
const v = email.value.toLowerCase().trim();
const domain = v.split('@')[1];
if (!domain){ hint.textContent=''; hint.className='hint'; return; }
const ok = domain.endsWith('.edu') || allowedDomains.some(d => domain.endsWith(d));
hint.textContent = ok
? 'Looks good — campus email detected.'
: 'Tip: use your school email for the best experience (e.g., .edu, utoronto.ca, yorku.ca).';
hint.className = 'hint ' + (ok ? 'good' : 'warn');
});
// Show/Hide password
pwToggle?.addEventListener('click', () => {
const show = password.type === 'password';
password.type = show ? 'text' : 'password';
pwToggle.setAttribute('aria-label', show ? 'Hide password' : 'Show password');
});
// Demo submit (replace with real auth later)
form?.addEventListener('submit', (e) => {
e.preventDefault();
const vEmail = email.value.trim(), vPw = password.value.trim();
if (!vEmail || !vPw){ alert('Please fill in both fields.'); return; }
const btn = form.querySelector('.btn.primary');
const prev = btn.textContent; btn.disabled = true; btn.textContent = 'Signing in…';
setTimeout(() => { btn.disabled = false; btn.textContent = prev; alert('Demo only — connect real auth next.'); }, 900);
});