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:
9
apps/app/src/layouts/OrganizerLayout.vue
Normal file
9
apps/app/src/layouts/OrganizerLayout.vue
Normal file
@@ -0,0 +1,9 @@
|
||||
<script setup lang="ts">
|
||||
import DefaultLayoutWithVerticalNav from '@/layouts/components/DefaultLayoutWithVerticalNav.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<DefaultLayoutWithVerticalNav>
|
||||
<RouterView />
|
||||
</DefaultLayoutWithVerticalNav>
|
||||
</template>
|
||||
32
apps/app/src/layouts/PortalLayout.vue
Normal file
32
apps/app/src/layouts/PortalLayout.vue
Normal 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>
|
||||
16
apps/app/src/layouts/PublicLayout.vue
Normal file
16
apps/app/src/layouts/PublicLayout.vue
Normal 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>
|
||||
Reference in New Issue
Block a user