'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);
}
