Files
arboretum/packages/web/src/components/layout/PageHeader.vue
Johan LEROY d6c110fc3b feat: refonte UX du dashboard (coquille, tri/filtre/pagination, ⌘K, toasts)
Refonte front (packages/web) : coquille applicative partagée (sidebar desktop +
barre d'onglets mobile + PageHeader, langue/push/logout centralisés) pilotée par
route.meta.layout ; design system (BaseButton/BaseBadge/SegmentedControl/EmptyState/
SkeletonRow, anneau de focus, icônes @lucide/vue) ; tri/filtre/recherche/pagination
côté client via useListControls (+ synchro URL) sur sessions/worktrees/groupes ;
section « À traiter », palette de commandes ⌘K, toasts. Aucune modif serveur/protocole/DB.
2026-06-18 11:47:36 +02:00

22 lines
785 B
Vue

<template>
<header class="flex flex-wrap items-center gap-x-3 gap-y-2">
<div class="flex min-w-0 items-center gap-2">
<slot name="title">
<h1 class="truncate text-lg font-semibold text-zinc-100">{{ title }}</h1>
</slot>
<span v-if="subtitle" class="truncate font-mono text-xs text-zinc-500" :title="subtitle">{{ subtitle }}</span>
</div>
<div v-if="$slots.default" class="ml-auto flex flex-wrap items-center gap-2">
<slot />
</div>
<div v-if="$slots.search" class="w-full">
<slot name="search" />
</div>
</header>
</template>
<script setup lang="ts">
// En-tête de contenu : titre (ou slot #title pour un titre riche) + slot d'actions + slot recherche.
defineProps<{ title?: string; subtitle?: string }>();
</script>