Replace scattered dashboard pages with a three-screen volunteer portal: 1. Mijn evenementen (/evenementen) - landing page with visual event cards in a responsive grid, sorted upcoming-first 2. Event-pagina (/evenementen/:eventId) - single page with hash-based tabs (Overzicht, Mijn rooster, Diensten claimen, Informatie) replacing the old separate dashboard/my-shifts/claim-shifts pages 3. Mijn profiel (/profiel) - unchanged, platform-level settings Key changes: - Extract page content into tab components (RoosterTab, ClaimenTab, OverzichtTab, InformatieTab) that receive eventId as prop - Dual-mode navbar: platform mode (Crewli logo) vs event mode (org name + event name + back link) - StatusCard now emits switchTab events instead of route navigation - Smart login redirect: 1 event → direct to event, 2+ → overview - Backward-compat redirects for /dashboard/* → /evenementen - Delete EventSwitcher (replaced by events overview page) - Update UserAvatarMenu with "Mijn evenementen" link Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
52 lines
946 B
Vue
52 lines
946 B
Vue
<script setup lang="ts">
|
|
import { useAuthStore } from '@/stores/useAuthStore'
|
|
|
|
definePage({
|
|
name: 'root',
|
|
meta: {
|
|
layout: 'portal',
|
|
requiresAuth: false,
|
|
},
|
|
})
|
|
|
|
const router = useRouter()
|
|
const authStore = useAuthStore()
|
|
|
|
onMounted(async () => {
|
|
if (!authStore.isInitialized) {
|
|
await authStore.initialize()
|
|
}
|
|
|
|
if (authStore.isAuthenticated) {
|
|
router.replace('/evenementen')
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<VRow justify="center">
|
|
<VCol
|
|
cols="12"
|
|
md="8"
|
|
lg="6"
|
|
>
|
|
<VCard class="text-center pa-6">
|
|
<VCardTitle class="text-h5">
|
|
Crewli Portal
|
|
</VCardTitle>
|
|
<VCardSubtitle>
|
|
Welkom bij het Crewli Portal
|
|
</VCardSubtitle>
|
|
<VCardText class="mt-4">
|
|
<VBtn
|
|
color="primary"
|
|
to="/login"
|
|
>
|
|
Inloggen
|
|
</VBtn>
|
|
</VCardText>
|
|
</VCard>
|
|
</VCol>
|
|
</VRow>
|
|
</template>
|