Files
arboretum/packages/web/src/components/layout/AppShell.vue
Johan LEROY cf60fa3a56
Some checks failed
CI / Build & test (Node 24) (push) Has been cancelled
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / No em/en dashes (push) Has been cancelled
CI / Build & test (Node 22) (push) Has been cancelled
feat(web): infra IDE réutilisable (persisted-ref, splitter, bootstrap temps réel)
Extrait persistedRef dans lib/persisted-ref.ts (partagé, testable en node). Ajoute useSplitter + components/ide/PanelSplitter.vue (poignée de resize générique par pointer events, largeur/hauteur persistable), généralisant le resize souris de WorkspaceView.

Hisse le chargement initial et les abonnements temps réel dans useRealtimeBootstrap (monté par App.vue) : un seul propriétaire actif sur TOUS les layouts, y compris la vue IDE plein écran. AppShell et WorkspaceView n'en portent plus la responsabilité. Tests unitaires persisted-ref et useSplitter (10).
2026-07-17 16:55:14 +02:00

29 lines
1.1 KiB
Vue

<template>
<div class="flex min-h-0 w-full flex-1 overflow-hidden">
<AppSidebar />
<div class="flex min-h-0 min-w-0 flex-1 flex-col">
<!-- fullbleed (terminal) : pas de tabbar mobile ni de padding bas terminal réellement plein écran
(la navigation reste accessible via le lien « retour » du header de la vue). -->
<main v-if="fullbleed" class="flex min-h-0 flex-1 flex-col">
<slot />
</main>
<main v-else class="flex-1 overflow-y-auto pb-14 md:pb-0">
<div class="mx-auto flex w-full max-w-3xl flex-col gap-4 px-4 py-4 md:py-6">
<slot />
</div>
</main>
<MobileTabBar v-if="!fullbleed" />
</div>
</div>
</template>
<script setup lang="ts">
// Coquille des vues authentifiées (sidebar + contenu). Le chargement initial et les abonnements
// temps réel sont désormais possédés par useRealtimeBootstrap (monté dans App.vue), pour couvrir
// aussi la vue IDE plein écran qui n'utilise pas cette coquille.
import AppSidebar from './AppSidebar.vue';
import MobileTabBar from './MobileTabBar.vue';
defineProps<{ fullbleed?: boolean }>();
</script>