50 lines
2.2 KiB
JavaScript
50 lines
2.2 KiB
JavaScript
/*
|
|
* Ícone "P.I.D." do card de login (`#login-logo-btn`). Fora de qualquer tema
|
|
* sazonal: clicar faz os olhos do disquete piscarem
|
|
* (`.pid-icon-eye`/`pidIconBlink` em base.css, mesmo mecanismo da logo da
|
|
* sidebar em sidebar-brand.js). Durante o Halloween
|
|
* (`pidIsHalloweenActive()`, seasonal-theme.js): o ícone vira o vampiro
|
|
* (`pidApplyVampireIcon`) e o clique dispara a animação de "susto"
|
|
* (`pidTriggerVampireScare`, `.is-scaring` em base.css) em vez da piscada.
|
|
* Durante o Aniversário (`pidIsAniversarioActive()`, só 15/10): o ícone
|
|
* ganha os balões (`pidApplyAniversarioIcon`) e o clique dispara o "clique
|
|
* de festa" (`pidTriggerAniversarioParty`, pula + joga confete + língua-de-
|
|
* sogra) ALÉM da piscada normal — a cara de repouso não muda nesse tema,
|
|
* então a piscada continua fazendo sentido (os dois efeitos convivem, ver
|
|
* base.css). Sem navegação nenhuma aqui — já estamos na tela de login, é só
|
|
* um toque de graça ao clicar no mascote.
|
|
*/
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
const btn = document.getElementById("login-logo-btn");
|
|
if (!btn) return;
|
|
|
|
const halloween = typeof pidIsHalloweenActive === "function" && pidIsHalloweenActive();
|
|
const aniversario = !halloween && typeof pidIsAniversarioActive === "function" && pidIsAniversarioActive();
|
|
|
|
if (halloween) {
|
|
pidApplyVampireIcon(btn.querySelector(".login-card__logo"));
|
|
if (typeof pidApplySeasonalFavicon === "function") pidApplySeasonalFavicon("pid-halloween-icone-escuro.svg");
|
|
if (typeof pidApplyHalloweenCobwebs === "function") pidApplyHalloweenCobwebs("pw-cobwebs-login");
|
|
} else if (aniversario) {
|
|
pidApplyAniversarioIcon(btn.querySelector(".login-card__logo"));
|
|
if (typeof pidApplySeasonalFavicon === "function") pidApplySeasonalFavicon("pid-aniversario-icone-escuro.svg");
|
|
}
|
|
|
|
btn.addEventListener("click", () => {
|
|
if (halloween) {
|
|
pidTriggerVampireScare(btn);
|
|
return;
|
|
}
|
|
|
|
if (aniversario) {
|
|
pidTriggerAniversarioParty(btn);
|
|
}
|
|
|
|
btn.querySelectorAll(".pid-icon-eye").forEach((eye) => {
|
|
eye.classList.remove("is-blinking");
|
|
void eye.getBoundingClientRect();
|
|
eye.classList.add("is-blinking");
|
|
});
|
|
});
|
|
});
|