Sanity Visual Editing
Objet : Sanity Visual Editing
Type : Configuration
Slice : Slice 1 (Page dâaccueil)
Cycle : DOC â SPEC â CODE â TEST â INTĂG
Statut : DOC
1. Description et périmÚtre
Section titled â1. Description et pĂ©rimĂštreâ1.1. Objectif
Section titled â1.1. ObjectifâLe Sanity Visual Editing permet aux collaborateurs de prĂ©visualiser et modifier le contenu directement depuis lâinterface du Studio, avec un affichage âclick-to-editâ et des modifications en temps rĂ©el.
1.2. Utilisation principale
Section titled â1.2. Utilisation principaleâ- PrĂ©visualisation des brouillons Sanity
- Ădition visuelle click-to-edit
- Mise Ă jour en temps rĂ©el pendant lâĂ©dition
- Fonctionne pour tous les types de pages (SSG et SSR)
1.3. PérimÚtre concerné
Section titled â1.3. PĂ©rimĂštre concernĂ©â- Type : Configuration Sanity Studio + intĂ©gration Astro
- Composants :
sanity/presentationplugin, loaders@sanity/astro - Pages : Page dâaccueil, blog, et toutes les pages Sanity-backed
- Technologie : Stega (Content Source Maps), Live Content API
2. Contrats dâentrĂ©e
Section titled â2. Contrats dâentrĂ©eâ2.1. Configuration Studio
Section titled â2.1. Configuration StudioâEntrĂ©e : Plugin sanity/presentation dans sanity.config.ts
Structure :
import { presentationTool } from 'sanity/presentation'import { resolve } from '@/sanity/presentation/resolve'
export default defineConfig({ plugins: [ presentationTool({ resolve, previewUrl: { initial: process.env.SANITY_STUDIO_PREVIEW_URL || 'http://localhost:4321', previewMode: { enable: '/api/draft-mode/enable', }, }, }), ],})RĂšgles :
- URL de prévisualisation configurée pour dev et prod
- Mode draft activé via endpoint
/api/draft-mode/enable - Document locations définis pour navigation bidirectionnelle
2.2. Configuration Astro
Section titled â2.2. Configuration AstroâEntrĂ©e : Loader @sanity/astro dans astro.config.mjs et <VisualEditing /> dans MainLayout.astro
Structure :
import sanity from '@sanity/astro'
export default defineConfig({ integrations: [ sanity({ projectId: process.env.SANITY_PROJECT_ID, dataset: process.env.SANITY_DATASET, stega: { studioUrl: process.env.SANITY_STUDIO_PREVIEW_URL || 'http://localhost:3333', }, }), ],})Composant Layout :
---import { VisualEditing } from '@sanity/astro/visual-editing';const visualEditingEnabled = !!Astro.cookies.get('sanity-perspective')?.value;---<VisualEditing enabled={visualEditingEnabled} />RĂšgles :
- Stega activé sur
createClientdansloadQuery.tsquandvisualEditingEnabledest vrai - Composant
<VisualEditing />injecté dans le layout principal pour charger les overlays du Presentation Tool - Perspective
draftsactivée via le cookiesanity-perspective
3. Contrats de sortie
Section titled â3. Contrats de sortieâ3.1. Comportement Studio
Section titled â3.1. Comportement StudioâSortie : Interface de prĂ©visualisation intĂ©grĂ©e
Comportement :
- Bouton âPresentationâ dans le Studio
- Rendu du site dans un iframe dans le Studio
- Navigation bidirectionnelle entre Studio et site
- Click-to-edit sur les éléments du site
3.2. Comportement Frontend
Section titled â3.2. Comportement FrontendâSortie : Rendu des donnĂ©es Sanity avec metadata Stega
Comportement :
- Les champs texte contiennent des métadonnées invisibles
- Ces métadonnées permettent le click-to-edit
- Mises à jour en temps réel via Live Content API
- PrĂ©sence dâindicateurs visuels en mode preview
4. Side effects
Section titled â4. Side effectsâ4.1. Impact sur le rendu
Section titled â4.1. Impact sur le renduâEffet : Les champs texte contiennent des mĂ©tadonnĂ©es Stega
Impact :
- Les métadonnées sont invisibles visuellement
- Elles sont utilisées par le Presentation Tool
- Doivent ĂȘtre nettoyĂ©es avant utilisation logique (comparaisons, etc.)
4.2. Impact sur le cache
Section titled â4.2. Impact sur le cacheâEffet : Mode preview dĂ©sactive le cache
Impact :
- En mode preview : pas de cache, données live
- En mode production : cache CDN activé
- Nécessite de gérer le mode draft-mode/preview
5. Erreurs et gestion
Section titled â5. Erreurs et gestionâ5.1. Erreurs potentielles
Section titled â5.1. Erreurs potentiellesâ| Erreur | Cause probable | Solution |
|---|---|---|
| Stega corrompu | Mauvaise configuration sanity | Vérifier stega: true dans config |
| Presentation tool non visible | Plugin non configuré | Vérifier sanity.config.ts |
| Click-to-edit non fonctionnel | Resolve mal configuré | Vérifier document locations |
| Draft mode non activé | Endpoint manquant | Créer endpoint /api/draft-mode/enable |
5.2. Fallbacks
Section titled â5.2. FallbacksâGestion des erreurs :
- Si Stega échoue : rendu normal sans click-to-edit
- Si Presentation tool échoue : utiliser open preview classique
- Si Live Content API Ă©choue : requĂȘte standard Sanity
6. Architecture
Section titled â6. Architectureâ6.1. Flux de donnĂ©es
Section titled â6.1. Flux de donnĂ©esâStudio â Presentation Tool â Frontend Astro â Sanity Live API â â â Edit content Render with Stega Real-time updates â â â Click-to-edit Metadata decoding Automatic refresh6.2. Composants
Section titled â6.2. ComposantsâStudio :
sanity/presentationplugin- Document locations pour navigation
- Resolve function pour mapping routes
Frontend :
- Loader
@sanity/astroavec stega - Endpoint draft-mode/enable
- Composants compatibles Stega
7. Sécurité
Section titled â7. SĂ©curitĂ©â7.1. Token gestion
Section titled â7.1. Token gestionâRĂšgles :
- Token de lecture Sanity requis pour preview
- Token injectĂ© via variable dâenvironnement
- Jamais exposé dans le code client
7.2. Draft mode protection
Section titled â7.2. Draft mode protectionâRĂšgles :
- Endpoint draft-mode protégé (optionnel)
- Secret Sanity utilisé pour validation
- Mode preview accessible uniquement aux auteurs
8. Checklist de validation
Section titled â8. Checklist de validationâAvant de considĂ©rer le Visual Editing comme terminĂ© :
- Documentation Studio visual editing
- Plugin presentation configuré
- Document locations définis
- Loader Astro configuré avec stega
- Endpoint draft-mode créé
- Click-to-edit fonctionnel
- Live Content API testé
- Mode preview pour pages SSG testé
- Mode preview pour pages SSR testé
9. Approbation
Section titled â9. ApprobationâValidation requise : Confirmer que la documentation du Visual Editing peut passer Ă lâĂ©tape SPEC.
10. Historique des modifications
Section titled â10. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-17 | 1.0 | Création initiale | Devin |