Composants PageBuilder
Composants PageBuilder
Documentation technique
Objet : Composants Astro PageBuilder
Type : Composants
Slice : Slice 1 (Page d’accueil)
Cycle : DOC → SPEC → CODE → TEST → INTÉG
Statut : INTÉG
1. Description et périmètre
1.1. Objectif
Les composants PageBuilder sont des composants Astro qui rendent les différents blocs de contenu définis dans le schéma Sanity page. Chaque composant correspond à un type de bloc PageBuilder.
1.2. Utilisation principale
- Page d’accueil
- Pages marketing (landing pages)
- Pages de présentation
1.3. Périmètre concerné
- Type : Composants Astro
- Blocs implémentés : hero, features, testimonials, cta, richText, imageGallery
- Source des données : Sanity (via GROQ queries)
- Rendu : Server-side rendering
2. Contrats d’entrée
2.1. Props des composants1/2
Entrée : Props passées aux composants
Structure commune :
interface PageBuilderBlock { _type: string; _key: string;}Props spécifiques par bloc :
Hero
2.1. Props des composants2/2
interface HeroBlock extends PageBuilderBlock { _type: 'hero'; heading: string; subheading?: string; ctaText?: string; ctaLink?: string; image?: { asset: { _ref: string; }; };}Features
interface FeaturesBlock extends PageBuilderBlock { _type: 'features'; heading?: string; features: Array<{ title: string; description: string; icon?: string; }>;}Testimonials
interface TestimonialsBlock extends PageBuilderBlock { _type: 'testimonials'; heading?: string; testimonials: Array<{ name: string; role?: string; quote: string; avatar?: { asset: { _ref: string; }; }; }>;}CTA
interface CTABlock extends PageBuilderBlock { _type: 'cta'; heading: string; description?: string; buttonText: string; buttonLink: string;}RichText
interface RichTextBlock extends PageBuilderBlock { _type: 'richText'; content: any[]; // Portable Text}ImageGallery
interface ImageGalleryBlock extends PageBuilderBlock { _type: 'imageGallery'; heading?: string; images: Array<{ asset: { _ref: string; }; alt?: string; caption?: string; }>;}2.2. Règles de validation
Règles générales :
- Tous les blocs ont
_typeet_key - Les champs obligatoires doivent être présents
- Les champs optionnels peuvent être absents
- Les références d’images Sanity sont valides
3. Contrats de sortie
3.1. Structure HTML
Sortie : Structure HTML pour chaque bloc
Comportement :
- Chaque composant rend une section HTML sémantique
- Utilisation de balises appropriées (
<section>,<h2>, etc.) - Classes CSS pour le styling
- Images optimisées via Sanity
3.2. Accessibilité
Sortie : Accessibilité respectée
Comportement :
- Attributs
altpour les images - Structure hiérarchique des titres
- Liens avec textes descriptifs
- ARIA labels si nécessaire
4. Side effects
4.1. Impact sur le rendu
Effet : Les composants PageBuilder influencent le rendu de la page
Impact :
- Chaque bloc ajoute du contenu à la page
- La structure de la page dépend de l’ordre des blocs
- Le temps de chargement dépend du nombre d’images
4.2. Impact sur le SEO
Effet : Les composants influencent le SEO
Impact :
- Contenu textuel indexable
- Images avec alt text
- Structure sémantique HTML
5. Erreurs et gestion
5.1. Erreurs potentielles
| Erreur | Cause probable | Solution |
|---|---|---|
| Bloc inconnu | _type non reconnu |
Ignorer ou afficher erreur |
| Données manquantes | Champs obligatoires absents | Afficher placeholder ou erreur |
| Image invalide | Référence Sanity corrompue | Afficher placeholder |
5.2. Codes HTTP
Non applicable (composants Astro)
6. Checklist de validation
Avant de passer à l’étape SPEC, vérifier :
- La structure des composants est documentée
- Les contrats d’entrée/sortie sont documentés
- Les side effects sont identifiés
- Les erreurs potentielles sont documentées
7. Implémentation réalisée
7.1. Fichiers créés
Répertoire : apps/web/src/components/pagebuilder/
Composants implémentés :
Hero.astro: Section hero avec responsive designFeatures.astro: Grille CSS responsiveTestimonials.astro: Témoignages avec avatars circulairesCTA.astro: Call-to-action centréRichText.astro: Rendu Portable Text basiqueImageGallery.astro: Galerie d’images avec captions
7.2. Styles CSS
Chaque composant inclut des styles scoped :
- Design responsive avec media queries
- Variables CSS pour les couleurs
- Classes utilitaires pour le layout
- Optimisation mobile-first
7.3. Interfaces TypeScript
Props typées selon les schémas Sanity :
- Interfaces correspondantes aux schémas blocks
- Types optionnels pour les champs non obligatoires
- Type
anypour les références Sanity (images)
8. Approbation
Validation requise : Confirmer que la documentation des composants PageBuilder peut passer à l’étape SPEC.
9. Historique des modifications
| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-16 | 1.0 | Création initiale | Devin |
| 2026-09-17 | 2.0 | Implémentation des 6 composants PageBuilder | Devin |