66 lines
2.0 KiB
JavaScript
66 lines
2.0 KiB
JavaScript
import axios from 'axios';
|
|
window.axios = axios;
|
|
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
|
|
|
|
import Echo from 'laravel-echo';
|
|
import Pusher from 'pusher-js';
|
|
|
|
window.Pusher = Pusher;
|
|
window.Echo = new Echo({
|
|
broadcaster: 'reverb',
|
|
key: import.meta.env.VITE_REVERB_APP_KEY,
|
|
wsHost: import.meta.env.VITE_REVERB_HOST,
|
|
wsPort: 443,
|
|
wssPort: 443,
|
|
forceTLS: true,
|
|
enabledTransports: ['ws', 'wss'],
|
|
});
|
|
|
|
import {
|
|
Chart,
|
|
LineController, LineElement,
|
|
BarController, BarElement,
|
|
DoughnutController, ArcElement,
|
|
PointElement, LinearScale, CategoryScale,
|
|
Tooltip, Legend, Filler,
|
|
TimeScale,
|
|
} from 'chart.js';
|
|
|
|
Chart.register(
|
|
LineController, LineElement,
|
|
BarController, BarElement,
|
|
DoughnutController, ArcElement,
|
|
PointElement, LinearScale, CategoryScale,
|
|
Tooltip, Legend, Filler, TimeScale
|
|
);
|
|
|
|
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);
|
|
document.cookie = 'nimuli_theme=' + theme + '; path=/; max-age=31536000; SameSite=Lax';
|
|
},
|
|
cycle() {
|
|
const order = ['dark', 'light', 'system'];
|
|
this.apply(order[(order.indexOf(this.current) + 1) % order.length]);
|
|
},
|
|
});
|
|
|
|
Alpine.store('sidebar', {
|
|
open: false,
|
|
collapsed: localStorage.getItem('sidebarCollapsed') === 'true',
|
|
toggle() {
|
|
this.collapsed = ! this.collapsed;
|
|
localStorage.setItem('sidebarCollapsed', this.collapsed);
|
|
window.dispatchEvent(new CustomEvent('sidebar-toggled', { detail: { collapsed: this.collapsed } }));
|
|
},
|
|
});
|
|
});
|