Files
portfolio-generator-app/components/composer/BackgroundEditor.vue
Valentin Le Moign ef1f14335d Textes projet éditables suivant Grav + écriture atomique du store
- Champ Présentation prérempli avec le texte Grav, suivi modifié/synchro
  (textOverride undefined = suit Grav, sinon figé ; bouton Réinitialiser)
- Fix génération PDF : savePortfolio écrit en atomique (temp+rename) pour
  éviter la corruption de lecture par l'autosave concurrent du rendu print
- Toast d'échec de génération explicite (message serveur)
- Refonte architecture visuelle, fond unifié white/tint/full, dispositions
  couverture bandeau/colonne, instantané public complet, index 3 lignes
2026-07-06 13:26:06 +02:00

33 lines
922 B
Vue

<script setup lang="ts">
// Fond de page unifié : Blanc / Teinté (aplat clair fixe) / Plein (couleur du
// filet/bandeau de la page). Undefined = Blanc par défaut.
import type { Background, BgMode } from '~~/types'
const model = defineModel<Background | undefined>()
const modes = [
{ value: 'white', label: 'Blanc' },
{ value: 'tint', label: 'Teinté' },
{ value: 'full', label: 'Plein' },
] as const
const current = computed<BgMode>(() => model.value?.mode ?? 'white')
</script>
<template>
<div class="space-y-2">
<p class="text-xs font-medium uppercase tracking-wide text-neutral-500">Fond</p>
<div class="flex gap-1">
<UButton
v-for="m in modes"
:key="m.value"
:label="m.label"
size="xs"
:variant="current === m.value ? 'solid' : 'outline'"
color="neutral"
@click="model = { mode: m.value }"
/>
</div>
</div>
</template>