feat(app): add OrganizerLayout, PortalLayout, PublicLayout skeletons

WS-3 session 1a Task 2.

Three layout skeletons added to apps/app/src/layouts/. They are NOT
yet referenced by the router — that wiring is a later session.

- OrganizerLayout: thin wrapper around DefaultLayoutWithVerticalNav,
  visually identical to default.vue. Provides a semantically named
  target for future router meta:layout='OrganizerLayout'.
- PortalLayout: scaffold for volunteer/crew portal experience.
  Top bar + main + footer regions, no content yet.
- PublicLayout: minimal centered viewport for unauthenticated pages
  (login, password-reset, public form viewer).

default.vue and blank.vue are unchanged and remain the active layouts
referenced by the router. Their replacement happens in the router
consolidation session.

Refs: ARCH-CONSOLIDATION-2026-04.md §4 + §6.8.
This commit is contained in:
2026-04-29 08:43:33 +02:00
parent ca1d37b7de
commit 99c5695db9
3 changed files with 57 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
<script setup lang="ts">
import DefaultLayoutWithVerticalNav from '@/layouts/components/DefaultLayoutWithVerticalNav.vue'
</script>
<template>
<DefaultLayoutWithVerticalNav>
<RouterView />
</DefaultLayoutWithVerticalNav>
</template>

View File

@@ -0,0 +1,32 @@
<script setup lang="ts">
// Portal layout skeleton — WS-3 session 1a.
//
// This is a foundation file. Content migration from apps/portal/ is a
// later WS-3 session. The shape (top-bar / main / footer) is fixed
// here so the router consolidation can target it with a stable name.
//
// DO NOT add nav, branding, or auth logic in this file directly.
// Future sessions will compose those in via slots or child components.
</script>
<template>
<VApp>
<VAppBar
density="compact"
flat
>
<!-- Logo + portal nav land here in a later session -->
</VAppBar>
<VMain>
<RouterView />
</VMain>
<VFooter
app
class="text-caption"
>
<!-- Portal footer content lands here in a later session -->
</VFooter>
</VApp>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
// Public layout skeleton — WS-3 session 1a.
//
// Used for unauthenticated routes: login, password-reset, public
// form viewer. Intentionally minimal — no nav, no branding chrome
// in this skeleton. Branding (logo + responsive shell) lands in a
// later session.
</script>
<template>
<VApp>
<VMain>
<RouterView />
</VMain>
</VApp>
</template>