import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import { useAuthStore } from './stores/auth'
import './assets/main.css'
import './assets/nexus-tokens.css'

const pinia = createPinia()

router.beforeEach(async to => {
  const auth = useAuthStore(pinia)
  await auth.initialize()

  if (to.meta.public) {
    return to.name === 'Login' && auth.isAuthenticated ? '/dashboard' : true
  }

  if (!auth.isAuthenticated) {
    return { name: 'Login', query: { redirect: to.fullPath } }
  }

  return true
})

createApp(App)
  .use(pinia)
  .use(router)
  .mount('#app')
