feat(portal): redesign registration wizard, header and login with Vuexy patterns
- Registration page: switch to blank layout with split-screen design (event branding illustration on left, AppStepper wizard on right), replacing generic chip stepper - Portal header: refined to flat surface bar with proper branding and icon-based nav - Login page: upgrade to Vuexy V2 auth pattern with split-screen illustration - Success page: blank layout with centered card, avatar icon, and footer mask Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -36,55 +36,90 @@ watch([isFallbackStateActive, refLoadingIndicator], () => {
|
||||
<AppLoadingIndicator ref="refLoadingIndicator" />
|
||||
|
||||
<VAppBar
|
||||
color="primary"
|
||||
flat
|
||||
color="surface"
|
||||
border="b"
|
||||
density="comfortable"
|
||||
>
|
||||
<VAppBarNavIcon
|
||||
class="d-sm-none"
|
||||
@click="isMobileMenuOpen = !isMobileMenuOpen"
|
||||
/>
|
||||
<VContainer
|
||||
fluid
|
||||
class="d-flex align-center py-0"
|
||||
style="max-inline-size: 1440px;"
|
||||
>
|
||||
<!-- Logo & Brand -->
|
||||
<RouterLink
|
||||
to="/"
|
||||
class="d-flex align-center gap-x-2 text-decoration-none"
|
||||
>
|
||||
<VIcon
|
||||
icon="tabler-users-group"
|
||||
size="26"
|
||||
color="primary"
|
||||
/>
|
||||
<span class="text-h6 font-weight-bold text-high-emphasis">
|
||||
Crewli
|
||||
</span>
|
||||
</RouterLink>
|
||||
|
||||
<VAppBarTitle class="text-h6">
|
||||
Crewli Portal
|
||||
</VAppBarTitle>
|
||||
<!-- Mobile nav toggle -->
|
||||
<VAppBarNavIcon
|
||||
class="d-sm-none ms-auto"
|
||||
@click="isMobileMenuOpen = !isMobileMenuOpen"
|
||||
/>
|
||||
|
||||
<template #append>
|
||||
<div class="d-none d-sm-flex align-center gap-2">
|
||||
<!-- Desktop navigation -->
|
||||
<div class="d-none d-sm-flex align-center gap-1 ms-6">
|
||||
<VBtn
|
||||
v-for="item in navItems"
|
||||
:key="item.to"
|
||||
:to="item.to"
|
||||
variant="text"
|
||||
color="white"
|
||||
color="default"
|
||||
size="small"
|
||||
class="text-medium-emphasis"
|
||||
>
|
||||
<VIcon
|
||||
start
|
||||
:icon="item.icon"
|
||||
size="18"
|
||||
/>
|
||||
{{ item.title }}
|
||||
</VBtn>
|
||||
</div>
|
||||
|
||||
<VSpacer />
|
||||
|
||||
<!-- Auth actions -->
|
||||
<VBtn
|
||||
v-if="authStore.isAuthenticated"
|
||||
variant="outlined"
|
||||
color="white"
|
||||
class="ms-2"
|
||||
variant="tonal"
|
||||
color="primary"
|
||||
size="small"
|
||||
@click="authStore.logout(); $router.push('/login')"
|
||||
>
|
||||
<VIcon
|
||||
start
|
||||
icon="tabler-logout"
|
||||
size="18"
|
||||
/>
|
||||
Uitloggen
|
||||
</VBtn>
|
||||
|
||||
<VBtn
|
||||
v-else
|
||||
variant="outlined"
|
||||
color="white"
|
||||
class="ms-2"
|
||||
variant="tonal"
|
||||
color="primary"
|
||||
size="small"
|
||||
to="/login"
|
||||
>
|
||||
<VIcon
|
||||
start
|
||||
icon="tabler-login"
|
||||
size="18"
|
||||
/>
|
||||
Inloggen
|
||||
</VBtn>
|
||||
</template>
|
||||
</VContainer>
|
||||
</VAppBar>
|
||||
|
||||
<!-- Mobile navigation drawer -->
|
||||
@@ -126,6 +161,7 @@ watch([isFallbackStateActive, refLoadingIndicator], () => {
|
||||
<VContainer
|
||||
fluid
|
||||
class="pa-4 pa-sm-6"
|
||||
style="max-inline-size: 1440px;"
|
||||
>
|
||||
<RouterView v-slot="{ Component }">
|
||||
<Suspense
|
||||
|
||||
Reference in New Issue
Block a user