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

/**
 * Visite de la gestion des propriétaires.
 *
 * Deux choses portent cette visite, et aucune ne se lit à l'écran :
 *
 *  - un propriétaire n'est pas une fiche de contact, c'est un COMPTE
 *    (`User::role('proprietaire')` dans `OwnerController::index`) — c'est lui
 *    qui consultera ses revenus ;
 *  - la recherche du tableau balaie la LIGNE ENTIÈRE, colonnes masquées
 *    comprises (`globalFilterFn` dans `owners/data-table.tsx`), alors que le
 *    téléphone et le préfixe sont justement masqués par défaut. On peut donc
 *    chercher par un numéro qui n'est affiché nulle part.
 *
 * L'onglet des contrats est décrit en une étape `openOnEnter` : son contenu est
 * démonté tant que l'onglet n'est pas actif, donc ses ancres internes ne
 * pourraient de toute façon pas être résolues au démarrage de la visite.
 *
 * Ancres posées dans `pages/owners/index.tsx`, `owners/columns.tsx` (première
 * ligne seulement) et `owners/data-table.tsx`.
 * Textes dans `lang/{fr,en}/tours.php`, clés `owners.<key>.title|content`.
 */
export const ownersTour: AppTour = {
    id: 'owners',
    components: ['owners/index'],
    steps: [
        {
            anchor: 'owners-tabs',
            key: 'tabs',
            order: 10,
        },
        {
            anchor: 'owners-add',
            key: 'add',
            order: 20,
        },
        {
            anchor: 'owners-search',
            key: 'search',
            order: 30,
        },
        {
            // Cellules de la première ligne : absentes quand aucun propriétaire
            // n'est encore enregistré.
            anchor: 'owners-properties',
            key: 'properties',
            order: 40,
            optional: true,
        },
        {
            anchor: 'owners-actions',
            key: 'actions',
            order: 50,
            optional: true,
        },
        {
            // Dernière étape, et volontairement : l'onglet reste ouvert derrière
            // la visite. `beforeLeave` ne le referme pas — un onglet Radix porte
            // `data-state="active"`, jamais `"open"`, donc la bascule inverse ne
            // se déclenche pas (cf. `needsToggle`). C'est le comportement voulu :
            // on laisse l'utilisateur devant ce qu'on vient de lui décrire.
            anchor: 'owners-contracts',
            key: 'contracts',
            order: 60,
            openOnEnter: true,
        },
    ],
};
