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

/**
 * Visite du Yield Manager (tableau de tarification dynamique).
 *
 * Ancres posées dans `resources/js/pages/yield/index.tsx` (filtres, navigation),
 * `resources/js/pages/yield/components/YieldTable.tsx` (barre, colonnes,
 * première ligne, première nuit) et `components/FranchiseScope.tsx` (sélecteur
 * de franchise, compte principal seulement).
 * Textes dans `lang/{fr,en}/tours.php`, clés `yield.<key>.title|content`.
 *
 * Aucune étape n'est réservée à `yield.manage` : sans ce droit, l'écran ne
 * MASQUE pas l'interrupteur, le bouton d'envoi ni la bande de prix — il les
 * grise et dit pourquoi (voir `useYieldPermissions`). Un compte en lecture
 * seule les voit donc, et a besoin de savoir ce qu'ils signifient. (Seule la
 * flèche « Revenir aux prix d'avant » de la ligne n'est PAS rendue sans ce
 * droit.) Les textes ne détaillent plus ces cas de droits : ils sont tenus
 * COURTS — 2 à 3 phrases — pour que chaque fenêtre tienne sur un téléphone
 * (voir l'en-tête de la section dans `lang/fr/tours.php`) ; l'écran grisé dit
 * lui-même pourquoi.
 *
 * Écart assumé à TOURS.md §6.5 (« une étape par bouton de ligne ») : le ⚙️ (qui
 * ouvre la configuration d'un logement configuré, l'activation sinon) et la
 * flèche de retour n'ont pas encore d'étape propre — la flèche est décrite dans
 * l'étape d'envoi. La visite est tenue à 7 étapes pour cette livraison ; les
 * deux étapes (ancres `optional`, textes rangés sous « Actions de ligne ») sont
 * à ajouter quand la visite sera étoffée.
 */
export const yieldTour: AppTour = {
    id: 'yield',
    components: ['yield/index'],
    steps: [
        {
            anchor: 'yield-filters',
            key: 'filters',
            order: 10,
        },
        {
            // Ancre sur la POIGNÉE, pas sur la barre : la barre fait la hauteur
            // du tableau, bien plus haute que l'écran (TOURS.md §6.0).
            anchor: 'yield-resize',
            key: 'resize',
            order: 20,
        },

        // --- Première ligne du tableau --------------------------------------
        // `optional` : sans aucun logement à l'écran (filtre vide), aucune
        // ligne n'est rendue ; et l'utilisateur peut avoir masqué la colonne
        // yield en resserrant la zone figée — deux états normaux.
        {
            anchor: 'yield-row-switch',
            key: 'switch',
            order: 30,
            optional: true,
        },
        {
            // Sur l'en-tête « Min » ; absente si la bande est masquée par la barre.
            anchor: 'yield-band',
            key: 'band',
            order: 40,
            optional: true,
        },
        {
            anchor: 'yield-row-push',
            key: 'push',
            order: 50,
            optional: true,
        },
        {
            anchor: 'yield-calendar',
            key: 'calendar',
            order: 60,
        },
        {
            // Sélecteur de franchise : rendu pour le COMPTE PRINCIPAL seulement
            // (une franchise ne reçoit aucune option) — d'où `optional`. Pas
            // `adminOnly` : tout compte du siège ayant accès au yield le voit,
            // directeurs et gérants compris, pas seulement le rôle admin.
            anchor: 'yield-franchise',
            key: 'franchise',
            order: 65,
            optional: true,
        },
        {
            anchor: 'yield-nav',
            key: 'nav',
            order: 70,
        },
    ],
};
