Files
crewli/apps/portal/src/pages/index.vue
bert.hausmans f9faeb7ea0 feat(portal): restructure into three-screen architecture with event tabs
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>
2026-04-13 13:30:20 +02:00

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>