31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
'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);
|
|
}
|