63 lines
1.4 KiB
JavaScript
63 lines
1.4 KiB
JavaScript
import { createApp } from 'vue'
|
|
import { createPinia } from 'pinia'
|
|
import router from './router'
|
|
import Toast from 'vue-toastification'
|
|
import App from './App.vue'
|
|
|
|
// Styles
|
|
import './assets/main.css'
|
|
import 'vue-toastification/dist/index.css'
|
|
|
|
// Create Vue app
|
|
const app = createApp(App)
|
|
|
|
// Create Pinia store
|
|
const pinia = createPinia()
|
|
|
|
// Toast configuration
|
|
const toastOptions = {
|
|
position: 'top-right',
|
|
timeout: 4000,
|
|
closeOnClick: true,
|
|
pauseOnFocusLoss: true,
|
|
pauseOnHover: true,
|
|
draggable: true,
|
|
draggablePercent: 0.6,
|
|
showCloseButtonOnHover: false,
|
|
hideProgressBar: false,
|
|
closeButton: 'button',
|
|
icon: true,
|
|
rtl: false,
|
|
transition: 'Vue-Toastification__fade',
|
|
maxToasts: 5,
|
|
newestOnTop: true,
|
|
toastClassName: 'custom-toast',
|
|
bodyClassName: 'custom-toast-body',
|
|
}
|
|
|
|
// Use plugins
|
|
app.use(pinia)
|
|
app.use(router)
|
|
app.use(Toast, toastOptions)
|
|
|
|
// Global error handler
|
|
app.config.errorHandler = (err, instance, info) => {
|
|
console.error('Global error:', err)
|
|
console.error('Error info:', info)
|
|
}
|
|
|
|
// Mount app
|
|
app.mount('#app')
|
|
|
|
// Remove loading screen
|
|
const loadingElement = document.querySelector('.app-loading')
|
|
if (loadingElement) {
|
|
setTimeout(() => {
|
|
loadingElement.style.opacity = '0'
|
|
loadingElement.style.transition = 'opacity 0.3s ease-out'
|
|
setTimeout(() => {
|
|
loadingElement.remove()
|
|
}, 300)
|
|
}, 100)
|
|
}
|