Files
crewli/apps/app/src/pages/register/success.vue
bert.hausmans 4cfcd5306a refactor(portal): move pages from apps/portal to apps/app
Per WS-3 PR-B1 charter §4.2: portal pages relocate into the
single-SPA layout under apps/app/src/pages/portal/** (authenticated
portal context) and apps/app/src/pages/register/** (public
token-based form-fill / confirmation).

Updated meta blocks:
  - Portal pages: layout: 'PortalLayout', context: 'portal'
    (preserving original requiresAuth + nav fields)
  - Register pages: layout: 'PublicLayout' (drop requiresAuth)

Skipped (apps/portal duplicates of pages already in apps/app):
  index.vue, login.vue, wachtwoord-{vergeten,resetten}.vue,
  verify-email-change.vue. Deleted: [...path].vue (apps/app already
  has [...error].vue catch-all).

NOTE: Component/store/composable imports inside these files still
point at apps/portal-relative paths and will be rewritten in the
next commits. Build will not be green again until commit 6
(composables/lib).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 18:58:06 +02:00

108 lines
2.7 KiB
Vue

<script setup lang="ts">
import { useAuthStore } from '@/stores/useAuthStore'
definePage({
name: 'register-success',
meta: {
layout: 'portal',
requiresAuth: false,
navMode: 'platform',
},
})
const route = useRoute('register-success')
const authStore = useAuthStore()
const eventName = computed(() => (route.query.event as string) || 'het evenement')
const bannerUrl = computed(() => (route.query.banner as string) || null)
const isAuthenticated = computed(() => route.query.authenticated === '1' || authStore.isAuthenticated)
</script>
<template>
<div>
<!-- Event banner (if available) -->
<VImg
v-if="bannerUrl"
:src="bannerUrl"
height="180"
cover
gradient="to bottom, rgba(0,0,0,0.1), rgba(0,0,0,0.4)"
>
<div class="d-flex align-center justify-center fill-height">
<h3 class="text-h5 text-white font-weight-bold">
{{ eventName }}
</h3>
</div>
</VImg>
<!-- Fallback header -->
<div
v-else
class="d-flex align-center justify-center pa-6"
style="background: rgb(var(--v-theme-primary));"
>
<h3 class="text-h5 text-white font-weight-bold">
{{ eventName }}
</h3>
</div>
<VContainer style="max-inline-size: 600px;">
<VCard
class="text-center pa-8 pa-sm-12 mt-n6"
variant="flat"
style="position: relative; z-index: 1;"
>
<VAvatar
size="100"
color="success"
variant="tonal"
class="mb-6"
>
<VIcon
icon="tabler-circle-check"
size="60"
/>
</VAvatar>
<h4 class="text-h4 mb-4">
Bedankt voor je aanmelding!
</h4>
<p class="text-body-1 text-medium-emphasis mb-2">
Je aanmelding bij <strong>{{ eventName }}</strong> is succesvol ontvangen.
</p>
<p class="text-body-1 text-medium-emphasis mb-2">
Je aanmelding wordt beoordeeld door het organisatieteam.
</p>
<p class="text-body-2 text-disabled mb-8">
Je ontvangt een e-mail zodra je aanmelding is goedgekeurd.
Daarin vind je een link om je account te activeren.
</p>
<div class="d-flex flex-wrap justify-center gap-4">
<VBtn
v-if="isAuthenticated"
to="/evenementen"
color="primary"
prepend-icon="tabler-calendar-event"
>
Ga naar je evenementen
</VBtn>
<VBtn
v-else
to="/"
color="primary"
variant="tonal"
prepend-icon="tabler-home"
>
Terug naar startpagina
</VBtn>
</div>
</VCard>
</VContainer>
</div>
</template>