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

/**
 * Visite du calendrier des séjours (Réservations & Séjours › Calendrier).
 *
 * Trois choses que l'écran ne dit nulle part et qui font l'essentiel de cette
 * visite :
 *
 *  1. seuls les logements ayant un séjour dans la semaine affichée ont une
 *     ligne (`visibleProperties`) — c'est une vue de l'OCCUPATION, pas de la
 *     disponibilité, et un logement vide disparaît au lieu d'apparaître libre ;
 *  2. la navigation de semaine est purement locale, alors que le serveur n'a
 *     chargé qu'une fenêtre de ±3 mois autour d'aujourd'hui
 *     (`ReservationService::getFilteredReservationsForCalendar`) : au-delà, la
 *     grille est vide parce que rien n'a été chargé, pas parce que rien n'est
 *     réservé ;
 *  3. la couleur d'une barre est celle du canal d'origine, et un canal non
 *     reconnu retombe sur la couleur maison (`CalendarController::$colorMap`).
 *
 * Ancres posées dans `pages/calendrier/index.tsx`, y compris sur la première
 * ligne de logement et sa première barre — une étape ne surligne qu'un élément.
 * Textes dans `lang/{fr,en}/tours.php`, clés `calendar.<key>.title|content`.
 */
export const calendarTour: AppTour = {
    id: 'calendar',
    components: ['calendrier/index'],
    steps: [
        {
            anchor: 'calendar-filters',
            key: 'filters',
            order: 10,
        },
        {
            anchor: 'calendar-sources',
            key: 'sources',
            order: 20,
        },
        {
            anchor: 'calendar-property',
            key: 'property',
            order: 30,
        },
        {
            // Réservé au siège.
            anchor: 'calendar-franchise',
            key: 'franchise',
            order: 40,
            adminOnly: true,
            optional: true,
        },
        {
            anchor: 'calendar-country',
            key: 'country',
            order: 50,
        },
        {
            anchor: 'calendar-refresh',
            key: 'refresh',
            order: 60,
        },
        {
            anchor: 'calendar-weeknav',
            key: 'weeknav',
            order: 70,
        },
        {
            anchor: 'calendar-grid',
            key: 'grid',
            order: 80,
        },
        {
            // Absentes quand aucun séjour ne tombe dans la semaine affichée —
            // l'écran montre alors « Aucune réservation cette semaine ». C'est
            // un état normal, surtout hors de la fenêtre chargée.
            anchor: 'calendar-rows',
            key: 'rows',
            order: 90,
            optional: true,
        },
        {
            anchor: 'calendar-bar',
            key: 'bar',
            order: 100,
            optional: true,
        },
    ],
};
