Skip to content

[Nom de l'Interface de Recherche]

Type de ressource : Interface Utilisateur Pagefind (Barre de recherche / Résultats / Filtres)
Fichier source : src/components/ui/SearchBar.astro ou composant associé
Statut : [Actif / Déprécié / En développement]
Slice : [Numéro de la tranche verticale]
Version : 1.0


[Description concise du rĂŽle de cette interface de recherche dans l’expĂ©rience utilisateur]

  • [Objectif principal : ex. fournir une recherche unifiĂ©e sur l’ensemble du site]
  • [BĂ©nĂ©fice pour l’utilisateur : ex. trouver rapidement du contenu dans le blog, le portfolio ou la documentation]
Couverture Statut
Vitrine [✅/❌]
Blog [✅/❌]
Portfolio [✅/❌]
Documentation [✅/❌]
Tout [✅/❌]
Emplacement Statut
Header global [✅/❌]
Sidebar [✅/❌]
Page dĂ©diĂ©e [✅/❌]
Modal [✅/❌]
Type d’interface Statut
Pagefind UI natif [✅/❌]
Composant custom [✅/❌]
Les deux [✅/❌]

[Utilisateur]
│ (saisie dans la barre de recherche)
▌
[Composant SearchBar]
│ ‱ Initialisation Pagefind
│ ‱ Chargement de l'index chunkĂ©
│ ‱ Recherche cĂŽtĂ© client
▌
[Pagefind (client-side)]
│ ‱ Matching des termes
│ ‱ Application des filtres
│ ‱ Ranking des rĂ©sultats
▌
[Affichage des résultats]
│ ‱ Distinction visuelle par type
│ ‱ Badges (Doc, Blog, Portfolio, Page)
│ ‱ Pagination
▌
[Utilisateur]
│ (clic sur un rĂ©sultat)
▌
[Navigation vers la page]
Composant RĂŽle Fichier
SearchBar.astro Interface de recherche globale src/components/ui/SearchBar.astro
SearchResults.astro Affichage des résultats src/components/ui/SearchResults.astro
SearchFilters.astro Filtres par type de contenu src/components/ui/SearchFilters.astro
Pagefind UI BibliothĂšque JS de recherche pagefind-ui (npm)
Index Pagefind Index chunké généré au build dist/_pagefind/

src/components/ui/SearchBar.astro
<div id="search"></div>
<script>
import { Search } from 'pagefind-ui';
window.addEventListener('DOMContentLoaded', () => {
new Search({
element: '#search',
pageSize: 10,
showSubResults: true,
showImages: false,
processTerm: (term) => {
// Normalisation des termes de recherche
return term.toLowerCase().trim();
},
processResult: (result) => {
// Personnalisation des résultats
const type = result.meta?.type || 'page';
const badge = {
docs: 'Doc',
blog: 'Blog',
portfolio: 'Portfolio',
page: 'Page',
}[type] || 'Page';
return {
...result,
badge,
};
},
});
});
</script>
src/components/ui/SearchBar.astro
<div class="search-container">
<input
type="search"
id="search-input"
placeholder="Rechercher..."
class="search-input"
/>
<div id="search-results" class="search-results">
<!-- Résultats injectés dynamiquement -->
</div>
</div>
<style>
.search-container {
position: relative;
}
.search-input {
width: 100%;
padding: 0.5rem 1rem;
border: 1px solid #e5e7eb;
border-radius: 0.375rem;
}
.search-results {
position: absolute;
top: 100%;
left: 0;
right: 0;
background: white;
border: 1px solid #e5e7eb;
border-radius: 0.375rem;
max-height: 400px;
overflow-y: auto;
}
</style>

ParamĂštre Type Validation
query string Non vide aprĂšs debounce
ÉlĂ©ment Type Description
results HTMLElement Liste des résultats
badges HTMLElement Badges de type

Scénario Description Résultat attendu
Rendu Composant monté Interface affichée
Input Saisie utilisateur Recherche déclenchée
Scénario Dépendances Description Résultat attendu
Flux complet Index + UI Recherche → Navigation RĂ©sultats cliquables

Composant Type RĂŽle MĂ©thode d’intĂ©gration
Header L2 Emplacement Composant inclus
Index Build Données Pagefind CLI
  • L’interface doit ĂȘtre accessible
  • Les badges doivent ĂȘtre cohĂ©rents
  • La pagination doit fonctionner
  • L’interface est accessible
  • Les rĂ©sultats s’affichent
  • Les badges sont corrects
  • Les tests E2E passent

  • ✅ Sanitization des rĂ©sultats
  • ✅ Protection XSS
  • ✅ Valider les entrĂ©es
  • ✅ Échapper le HTML

Limite Valeur
Résultats par page 10-20
Temps de recherche < 500ms
  • ✅ Debounce
  • ✅ Pagination
  • ✅ Lazy loading

SymptĂŽme Cause probable Solution
Résultats non affichés Erreur JS Vérifier la console
Badges incorrects MĂ©tadonnĂ©es manquantes VĂ©rifier l’indexation
Terminal window
# Build local
npm run build
# Preview
npm run preview

  • ✅ AccessibilitĂ© (ARIA)
  • ✅ Responsive design
  • ✅ CohĂ©rence visuelle
  • ✅ TypeScript strict
  • ✅ Gestion des erreurs
  • ✅ Documentation

  • [Évolution 1]
  • [Évolution 2]
  • ❌ [Limitation 1]
  • ❌ [Limitation 2]


Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]
Edit page

Last updated: