小程序初始化

This commit is contained in:
2026-02-27 11:32:50 +08:00
parent 93574dbb45
commit 97e1ea2706
252 changed files with 32427 additions and 12363 deletions
+44
View File
@@ -0,0 +1,44 @@
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;