Files
crewli/apps/app/src/plugins/1.router/index.ts
bert.hausmans c417a6647a feat(app): auth, orgs/events UI, router guards, and dev tooling
- 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
2026-04-07 21:51:10 +02:00

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)
}