////
/**
* OmniForge Theme Toggle Button
* Botão flutuante para alternar entre dark/light mode
*
* Dependências: omniforge-utils.js
*/
(function () {
'use strict';
function createToggleButton() {
// Criar botão
const button = document.createElement('button');
button.id = 'omniforge-theme-toggle';
button.setAttribute('aria-label', 'Alternar tema');
button.setAttribute('title', 'Alternar entre modo claro e escuro');
// Ícones SVG
button.innerHTML = `
`;
// Event listener
button.addEventListener('click', () => {
const newTheme = window.OmniForge.Theme.toggle();
console.log('[OmniForge] Tema alternado para:', newTheme);
});
// Injetar CSS
window.OmniForge.CSS.inject('omniforge-theme-toggle-styles', `
#omniforge-theme-toggle {
position: fixed;
bottom: 20px;
right: 20px;
width: 50px;
height: 50px;
border-radius: 50%;
border: none;
background: ${window.OmniForge.Colors.get('accent.primary')};
color: #000;
cursor: pointer;
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 999999;
display: flex;
align-items: center;
justify-content: center;
}
#omniforge-theme-toggle:hover {
transform: scale(1.1);
box-shadow: 0 6px 16px rgba(0,0,0,0.4);
}
#omniforge-theme-toggle:active {
transform: scale(0.95);
}
#omniforge-theme-toggle .sun-icon,
#omniforge-theme-toggle .moon-icon {
position: absolute;
transition: opacity 0.3s, transform 0.3s;
}
/* Dark mode: mostra sol */
html[data-theme="dark"] #omniforge-theme-toggle .sun-icon {
opacity: 1;
transform: rotate(0deg);
}
html[data-theme="dark"] #omniforge-theme-toggle .moon-icon {
opacity: 0;
transform: rotate(180deg);
}
/* Light mode: mostra lua */
html[data-theme="light"] #omniforge-theme-toggle .sun-icon {
opacity: 0;
transform: rotate(-180deg);
}
html[data-theme="light"] #omniforge-theme-toggle .moon-icon {
opacity: 1;
transform: rotate(0deg);
}
/* Animação de entrada */
@keyframes slideInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
#omniforge-theme-toggle {
animation: slideInUp 0.5s ease-out;
}
`);
// Adicionar ao DOM
document.body.appendChild(button);
console.log('[OmniForge] Theme toggle button criado');
}
// Aguardar OmniForge carregar
if (window.OmniForge) {
createToggleButton();
} else {
document.addEventListener('omniforge-ready', createToggleButton);
}
})();
////