nimuli/resources/js/app.js

24 lines
826 B
JavaScript

import '../css/app.css';
import './bootstrap';
import Chart from 'chart.js/auto';
window.Chart = Chart;
// Alpine stores registered via alpine:init — Livewire v3 owns Alpine lifecycle
document.addEventListener('alpine:init', () => {
Alpine.store('theme', {
current: localStorage.getItem('nimuli_theme') || document.documentElement.dataset.theme || 'dark',
init() { this.apply(this.current); },
apply(theme) {
this.current = theme;
document.documentElement.dataset.theme = theme;
localStorage.setItem('nimuli_theme', theme);
},
cycle() {
const order = ['dark', 'light', 'system'];
this.apply(order[(order.indexOf(this.current) + 1) % order.length]);
},
});
Alpine.store('sidebar', { open: false });
});