Skip to content

StatCard

Composant de carte pour afficher une metrique avec label, valeur, icone et style conditionnel.

Fichier source : frontend/src/components/StatCard.tsx

Props

PropTypeDefaultDescription
labelstringrequisLibelle en haut (uppercase, tracking-wider)
valuestring | numberrequisValeur principale (grand, bold)
detailstring-Texte secondaire sous la valeur
iconReactNode-Icone Lucide affichee a droite du label
variant'default' | 'success' | 'danger' | 'warning''default'Style de la carte

Variantes

VarianteBordureBackground
defaultslate-200blanc
successemerald-200emerald-50/50
dangerred-200red-50/50
warningamber-200amber-50/50

Exemple d'utilisation

tsx
import StatCard from '../components/StatCard';
import { Users, Package, Building2, ScrollText } from 'lucide-react';

// Dashboard - 4 cartes en grille
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4">
  <StatCard
    label="Utilisateurs"
    value={users?.length ?? 0}
    icon={<Users size={20} />}
  />
  <StatCard
    label="Produits"
    value={products?.length ?? 0}
    icon={<Package size={20} />}
  />
  <StatCard
    label="Tenants"
    value={tenants?.length ?? 0}
    icon={<Building2 size={20} />}
    variant="success"
  />
  <StatCard
    label="Erreurs"
    value={42}
    detail="+12 cette semaine"
    icon={<ScrollText size={20} />}
    variant="danger"
  />
</div>

Style

La carte utilise un design arrondi (rounded-xl) avec bordure, ombre et effet hover :

tsx
<div className={`rounded-xl border bg-white p-5 shadow-sm transition-shadow hover:shadow-md ${variants[variant]}`}>

La valeur est affichee en text-3xl font-bold tabular-nums pour un alignement numerique propre.

Tests

Voir frontend/src/components/__tests__/StatCard.test.tsx.

Released under the MIT License.