Skip to content

Objet : Composants Astro PageBuilder
Type : Composants
Slice : Slice 1 (Page d’accueil)
Cycle : DOC → SPEC → CODE → TEST → INTÉG
Statut : INTÉG


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.

  • Page d’accueil
  • Pages marketing (landing pages)
  • Pages de prĂ©sentation
  • 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

Entrée : Props passées aux composants

Structure commune :

interface PageBuilderBlock {
_type: string;
_key: string;
}

Props spécifiques par bloc :

interface HeroBlock extends PageBuilderBlock {
_type: 'hero';
heading: string;
subheading?: string;
ctaText?: string;
ctaLink?: string;
image?: {
asset: {
_ref: string;
};
};
}
interface FeaturesBlock extends PageBuilderBlock {
_type: 'features';
heading?: string;
features: Array<{
title: string;
description: string;
icon?: string;
}>;
}
interface TestimonialsBlock extends PageBuilderBlock {
_type: 'testimonials';
heading?: string;
testimonials: Array<{
name: string;
role?: string;
quote: string;
avatar?: {
asset: {
_ref: string;
};
};
}>;
}
interface CTABlock extends PageBuilderBlock {
_type: 'cta';
heading: string;
description?: string;
buttonText: string;
buttonLink: string;
}
interface RichTextBlock extends PageBuilderBlock {
_type: 'richText';
content: any[]; // Portable Text
}
interface ImageGalleryBlock extends PageBuilderBlock {
_type: 'imageGallery';
heading?: string;
images: Array<{
asset: {
_ref: string;
};
alt?: string;
caption?: string;
}>;
}

RÚgles générales :

  • Tous les blocs ont _type et _key
  • Les champs obligatoires doivent ĂȘtre prĂ©sents
  • Les champs optionnels peuvent ĂȘtre absents
  • Les rĂ©fĂ©rences d’images Sanity sont valides

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

Sortie : Accessibilité respectée

Comportement :

  • Attributs alt pour les images
  • Structure hiĂ©rarchique des titres
  • Liens avec textes descriptifs
  • ARIA labels si nĂ©cessaire

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

Effet : Les composants influencent le SEO

Impact :

  • Contenu textuel indexable
  • Images avec alt text
  • Structure sĂ©mantique HTML

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

Non applicable (composants Astro)


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

Répertoire : apps/web/src/components/pagebuilder/

Composants implémentés :

  • Hero.astro : Section hero avec responsive design
  • Features.astro : Grille CSS responsive
  • Testimonials.astro : TĂ©moignages avec avatars circulaires
  • CTA.astro : Call-to-action centrĂ©
  • RichText.astro : Rendu Portable Text basique
  • ImageGallery.astro : Galerie d’images avec captions

Chaque composant inclut des styles scoped :

  • Design responsive avec media queries
  • Variables CSS pour les couleurs
  • Classes utilitaires pour le layout
  • Optimisation mobile-first

Props typées selon les schémas Sanity :

  • Interfaces correspondantes aux schĂ©mas blocks
  • Types optionnels pour les champs non obligatoires
  • Type any pour les rĂ©fĂ©rences Sanity (images)

Validation requise : Confirmer que la documentation des composants PageBuilder peut passer Ă  l’étape SPEC.


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
Edit page

Last updated: