import KpiStatTile from '@/pages/logements/components/kpi-stat-tile';
import type { ActivityKpis as Kpis } from '@/types/activity';
import { Bot, MousePointerClick, Trash2, Users } from 'lucide-react';
import { fill, formatCount, type Translate } from './activity-format';

const NS = 'activity';

interface Props {
    kpis: Kpis;
    locale: string;
    t: Translate;
}

/**
 * Le coup d'œil : quatre compteurs sur la période filtrée. La tuile des
 * actions automatiques n'existe qu'au siège (`automatic === null` ailleurs) :
 * une franchise ne voit pas les synchronisations des autres.
 */
export function ActivityKpis({ kpis, locale, t }: Props) {
    return (
        <div data-tour="activity-kpis" className="grid grid-cols-2 gap-3 lg:grid-cols-4">
            <KpiStatTile
                label={t(NS, 'kpi_human_actions', 'Actions humaines')}
                value={formatCount(kpis.human_actions, locale)}
                icon={MousePointerClick}
                accent="text-primary"
                hint={t(NS, 'kpi_human_actions_hint', "Actions faites par un membre de l'équipe — et non par une tâche automatique — sur la période et les filtres choisis. Les connexions et déconnexions ne sont pas comptées : ce ne sont pas des actions.")}
            />
            <KpiStatTile
                label={t(NS, 'kpi_active_members', 'Membres actifs')}
                value={formatCount(kpis.active_members, locale)}
                unit={fill(t(NS, 'kpi_active_members_unit', 'sur :total'), { total: formatCount(kpis.team_size, locale) })}
                icon={Users}
                accent="text-primary"
                hint={t(NS, 'kpi_active_members_hint', "Membres ayant fait au moins une action sur la période, rapportés à l'équipe visible.")}
            />
            <KpiStatTile
                label={t(NS, 'kpi_deletions', 'Suppressions')}
                value={formatCount(kpis.deletions, locale)}
                icon={Trash2}
                accent="text-red-600"
                hint={t(NS, 'kpi_deletions_hint', 'Éléments supprimés sur la période. Filtrez sur « Suppression » pour les voir un par un.')}
            />
            {kpis.automatic !== null && (
                <KpiStatTile
                    label={t(NS, 'kpi_automatic', 'Actions automatiques')}
                    value={formatCount(kpis.automatic, locale)}
                    icon={Bot}
                    accent="text-muted-foreground"
                    hint={t(
                        NS,
                        'kpi_automatic_hint',
                        'Actions faites sans intervention humaine : synchronisation des canaux, tâches planifiées, applications connectées. Elles restent hors du flux tant que « Inclure les actions automatiques » n’est pas coché.',
                    )}
                />
            )}
        </div>
    );
}
