import type { AppTour } from '../types';

/**
 * Visite de la gestion des clients.
 *
 * Trois choses portent cette visite, et aucune ne se devine à l'écran :
 *
 *  - le filtre « Sources » ne filtre pas la PERSONNE mais ses RÉSERVATIONS
 *    (`whereHas('reservations', creator IN …)` dans `ClientService::getClients`)
 *    — un client venu deux fois par deux canaux ressort sous les deux ;
 *  - il n'y a pas de pagination serveur (`->get()`) : toute la base arrive d'un
 *    coup, donc la recherche et le tri du tableau portent sur TOUT, pas sur la
 *    page affichée ;
 *  - l'export Excel reprend le jeu FILTRÉ (et non la page) mais n'en sort que
 *    six colonnes, ni CIN ni passeport (`exportExcel` dans `clients/data-table.tsx`).
 *
 * Ancres posées dans `pages/clients/index.tsx` et `clients/data-table.tsx` —
 * ce dernier n'est utilisé que par cette page.
 * Textes dans `lang/{fr,en}/tours.php`, clés `clients.<key>.title|content`.
 */
export const clientsTour: AppTour = {
    id: 'clients',
    components: ['clients/index'],
    steps: [
        {
            anchor: 'clients-filters',
            key: 'filters',
            order: 10,
        },
        {
            anchor: 'clients-country',
            key: 'country',
            order: 20,
        },
        {
            anchor: 'clients-source',
            key: 'source',
            order: 30,
        },
        {
            anchor: 'clients-indication',
            key: 'indication',
            order: 40,
        },
        {
            anchor: 'clients-reset',
            key: 'reset',
            order: 50,
        },
        {
            anchor: 'clients-add',
            key: 'add',
            order: 60,
        },
        {
            anchor: 'clients-search',
            key: 'search',
            order: 70,
        },
        {
            anchor: 'clients-export',
            key: 'export',
            order: 80,
        },
        {
            anchor: 'clients-table',
            key: 'table',
            order: 90,
        },

        // --- Les trois actions, sur le premier client affiché ----------------
        // `optional` : liste vide (ou filtres qui ne rendent rien) = aucune
        // ligne, donc aucune ancre. C'est un état normal.
        //
        // Pas d'`openOnEnter` sur la corbeille : son déclencheur ouvre une
        // `AlertDialog` modale, qui prendrait le focus et passerait par-dessus
        // le dialogue de la visite. L'étape la décrit sans l'ouvrir.
        {
            anchor: 'clients-row-edit',
            key: 'rowEdit',
            order: 100,
            optional: true,
        },
        {
            anchor: 'clients-row-view',
            key: 'rowView',
            order: 110,
            optional: true,
        },
        {
            anchor: 'clients-row-delete',
            key: 'rowDelete',
            order: 120,
            optional: true,
        },
    ],
};
