refactor(admin): replace static dashboard stats with dynamic widget registry
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
'use client';
|
||||
|
||||
/**
|
||||
* Dashboard Client Registry — API générique
|
||||
*
|
||||
* Les features s'enregistrent ici via registerClientWidget().
|
||||
* Ce fichier ne doit jamais importer une feature directement.
|
||||
* Les features dépendent de ce fichier, pas l'inverse.
|
||||
*/
|
||||
|
||||
const widgets = [];
|
||||
|
||||
/**
|
||||
* Enregistre un composant React pour le tableau de bord.
|
||||
* Appelé en side effect par chaque feature (ex: auth/dashboard.widget.js).
|
||||
* @param {string} id - Identifiant unique de la feature (doit correspondre à l'id serveur)
|
||||
* @param {React.ComponentType} Component - Composant avec props { data, loading }
|
||||
* @param {number} order - Ordre d'affichage (croissant). Utiliser des intervalles de 10.
|
||||
*/
|
||||
export function registerClientWidget(id, Component, order) {
|
||||
widgets.push({ id, Component, order });
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne tous les widgets enregistrés, triés par order croissant.
|
||||
* @returns {Array<{ id: string, Component: React.ComponentType, order: number }>}
|
||||
*/
|
||||
export function getClientWidgets() {
|
||||
return [...widgets].sort((a, b) => a.order - b.order);
|
||||
}
|
||||
Reference in New Issue
Block a user