Skip to content

Type de ressource : Composant Astro (UI atomique)
Fichier source : src/components/FormattedDate.astro
Statut : Actif

Composant pour l’affichage formatĂ© d’une date. Utilise l’élĂ©ment HTML <time> avec l’attribut datetime pour l’accessibilitĂ© et le SEO. Formate la date en anglais (en-us) avec le format “short” (ex: Jan 1, 2024).

  • Formater les dates de maniĂšre cohĂ©rente sur tout le site
  • Assurer l’accessibilitĂ© via l’élĂ©ment <time> et l’attribut datetime
  • Simplifier l’affichage des dates (ex: dates de publication des articles)
  • Fournir un format de date standardisĂ©
Propriété Valeur
Type UI atomique
Hydratation Aucune
Framework JS Aucun
Accessibilité Conforme (élément <time>)
Responsive Non applicable
src/components/
├── BaseHead.astro
├── Header.astro
├── Footer.astro
├── FormattedDate.astro
└── HeaderLink.astro
Composant parent Fichier Relation
BlogPost layout src/layouts/BlogPost.astro Utilisation pour les dates de publication
Autres pages src/pages/*.astro Utilisation pour l’affichage de dates

Aucun composant enfant n’est utilisĂ© (composant leaf).

3.1. Variante : Composant UI atomique (HTML + CSS purs)

Section titled “3.1. Variante : Composant UI atomique (HTML + CSS purs)”
---
interface Props {
date: Date;
}
const { date } = Astro.props;
---
<time datetime={date.toISOString()}>
{
date.toLocaleDateString('en-us', {
year: 'numeric',
month: 'short',
day: 'numeric',
})
}
</time>
---
import FormattedDate from '../components/FormattedDate.astro';
const publishDate = new Date('2024-01-15');
---
<p>Published on <FormattedDate date={publishDate} /></p>
Prop Type Description Exemple
date Date Date Ă  formater new Date('2024-01-15')

Aucune prop n’est disponible.

Aucun slot n’est implĂ©mentĂ© dans ce composant.

Type de composant Stratégie Rationale
Composant UI atomique Aucune HTML pur, pas d’interaction

Aucune directive n’est utilisĂ©e (composant HTML pur).

Métrique Sans hydratation
HTML size +0.2 KB
CSS size 0 KB
JS size 0 KB
TTI Immédiat

Non applicable - le composant n’a pas de styles inline.

Non applicable - le composant est responsive par défaut.

Non implémenté - le composant utilise les styles par défaut du navigateur.

CritÚre Implémentation Statut
1.3.1 Info and Relationships ÉlĂ©ment <time> avec datetime ✅
1.4.3 Contrast (Minimum) Non applicable (pas de styles) N/A
2.4.7 Focus Visible Non applicable (pas d’interaction) N/A

Aucun attribut ARIA n’est utilisĂ© (Ă©lĂ©ment HTML sĂ©mantique <time>).

Non applicable (composant non interactif).

Terminal window
# Test avec Lighthouse
npx lighthouse http://localhost:4321/ --view
  • ✅ HTML statique par dĂ©faut
  • ✅ Pas de CSS
  • ✅ Pas de JavaScript
  • ✅ Utilisation de l’élĂ©ment <time> natif
Métrique Objectif Stratégie
LCP < 2.5s Pas de JS bloquant
INP < 200ms Pas de JS
CLS < 0.1 Pas de layout shift
Type HTML CSS JS (hydraté) Total
UI atomique 0.2 KB 0 KB 0 KB 0.2 KB
SymptĂŽme Cause probable Solution
Date incorrecte Format de date invalide VĂ©rifier que l’objet Date est valide
Format incorrect Locale incorrecte VĂ©rifier la locale ‘en-us’
Terminal window
# Test local
npm run dev
# Vérification du format
# Vérifier que la date est affichée au format "Jan 1, 2024"

Non applicable (composant statique).

  • ✅ Utiliser l’élĂ©ment <time> pour l’accessibilitĂ©
  • ✅ Fournir l’attribut datetime pour le SEO
  • ✅ Typer les props avec TypeScript
  • ✅ Utiliser toLocaleDateString pour le formatage localisĂ©
  • ✅ Utiliser l’élĂ©ment HTML sĂ©mantique <time>
  • ✅ Fournir l’attribut datetime pour les lecteurs d’écran
  • ✅ Éviter l’hydratation (pas d’interaction requise)
  • ✅ Pas de JavaScript
  • ✅ Mettre Ă  jour la locale si nĂ©cessaire
  • ✅ Mettre Ă  jour le format de date si nĂ©cessaire
  • Support de diffĂ©rentes locales (via props)
  • Support de diffĂ©rents formats de date (via props)
  • Ajout de styles personnalisables
  • ❌ Locale hardcodĂ©e (‘en-us’)
  • ❌ Format de date hardcodĂ© (‘short’)
  • ❌ Pas de support de l’heure
  • ❌ Pas de styles personnalisables
Date Version Description Auteur
2026-09-15 1.0 Création initiale Devin
Edit page

Last updated: