Files
happy-life-star/PncyssD/index.js
T
2025-12-21 16:57:54 +08:00

45 lines
1.4 KiB
JavaScript

import { state } from './state.js';
import { Login } from './login.js';
import { Onboarding } from './onboarding.js';
import { Dashboard } from './dashboard.js';
const App = {
async init() {
state.load();
this.render();
},
async transition(to) {
const container = document.getElementById('view-container');
const loader = document.getElementById('loader');
await gsap.to(container, { opacity: 0, y: -20, duration: 0.5, ease: "power2.inOut" });
loader.classList.remove('hidden');
gsap.fromTo(loader, { opacity: 0 }, { opacity: 1, duration: 0.4 });
state.view = to;
state.save();
setTimeout(() => {
this.render();
gsap.to(loader, { opacity: 0, duration: 0.4, onComplete: () => loader.classList.add('hidden') });
gsap.fromTo(container, { opacity: 0, y: 20 }, { opacity: 1, y: 0, duration: 0.8, ease: "power3.out" });
}, 1000);
},
render() {
if (!state.isLoggedIn) {
Login.render(() => this.transition('onboarding'));
} else if (state.view === 'onboarding') {
Onboarding.render(() => this.transition('dashboard'));
} else {
Dashboard.render();
}
lucide.createIcons();
}
};
window.addEventListener('DOMContentLoaded', () => App.init());
export default App;