import { Button } from '@/components/ui/button';
import { useTranslation } from '@/hooks/use-translation';
import { cn } from '@/lib/utils';
import { type SharedData } from '@/types';
import { Link, usePage } from '@inertiajs/react';
import { History } from 'lucide-react';

const NS = 'activity';

interface Props {
    /** L'élément, tel que le journal l'attend : « Reservation:15509 », « Property:373 », « Client:883 ». */
    subject: string;
    /** Ancre de visite guidée, quand la page hôte en a une. */
    dataTour?: string;
    className?: string;
}

/**
 * « Historique » : ouvre le journal d'activité filtré sur UN élément — qui l'a
 * créé, chaque modification avec la valeur avant et après, qui l'a supprimé.
 *
 * Posé sur les fiches (réservation, logement, client). Le journal est réservé
 * au SEUL compte TLL master (rôle `tll-master`, décision produit du
 * 25/09/2026) : pour tout autre compte la route répond 403, et un bouton qui
 * mène à un refus est pire que pas de bouton. Même règle que la barre latérale.
 *
 * Vit sous `pages/activity` pour que `ActivityTranslationsTest` vérifie sa clé
 * de traduction avec celles du journal.
 */
export function ActivityHistoryButton({ subject, dataTour, className }: Props) {
    const { t } = useTranslation();
    const { auth } = usePage<SharedData>().props;
    if (auth?.isTllMaster !== true) {
        return null;
    }

    return (
        <Button asChild variant="outline" size="sm" className={cn(className)} data-tour={dataTour}>
            <Link href={route('activity.index', { subject })} title={t(NS, 'history_button_title', "Voir l'historique de cet élément dans le journal d'activité")}>
                <History className="h-4 w-4" aria-hidden="true" />
                {t(NS, 'history_button', 'Historique')}
            </Link>
        </Button>
    );
}
