- Add Sanctum auth flow (store, composables, login, axios interceptors) - Add dashboard, organisation list/detail, events CRUD dialogs - Wire router guards, navigation, organisation switcher in layout - Replace Vuexy @db types in NavSearchBar; add @iconify/types; themeConfig title typing - Vuetify settings.scss + resolve configFile via fileURLToPath; drop dead path aliases - Root index redirects to dashboard; fix events table route name - API: DevSeeder + DatabaseSeeder updates; docs TEST_SCENARIO; corporate identity assets Made-with: Cursor
40 lines
910 B
TypeScript
40 lines
910 B
TypeScript
import { setupLayouts } from 'virtual:meta-layouts'
|
|
import type { App } from 'vue'
|
|
|
|
import type { RouteRecordRaw } from 'vue-router/auto'
|
|
|
|
import { createRouter, createWebHistory } from 'vue-router/auto'
|
|
import { setupGuards } from './guards'
|
|
|
|
function recursiveLayouts(route: RouteRecordRaw): RouteRecordRaw {
|
|
if (route.children) {
|
|
for (let i = 0; i < route.children.length; i++)
|
|
route.children[i] = recursiveLayouts(route.children[i])
|
|
|
|
return route
|
|
}
|
|
|
|
return setupLayouts([route])[0]
|
|
}
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(import.meta.env.BASE_URL),
|
|
scrollBehavior(to) {
|
|
if (to.hash)
|
|
return { el: to.hash, behavior: 'smooth', top: 60 }
|
|
|
|
return { top: 0 }
|
|
},
|
|
extendRoutes: pages => [
|
|
...[...pages].map(route => recursiveLayouts(route)),
|
|
],
|
|
})
|
|
|
|
setupGuards(router)
|
|
|
|
export { router }
|
|
|
|
export default function (app: App) {
|
|
app.use(router)
|
|
}
|