import type { DriveStep } from 'driver.js';

/**
 * Guided-tour steps per admin page, keyed by the `data-tour-page` value set
 * on <body>. Element selectors target ids/classes that already exist in the
 * templates, plus a few `data-tour="..."` anchors added where no stable
 * selector was available.
 */
export const TOUR_STEPS: Record<string, DriveStep[]> = {
    dashboard: [
        {
            element: '.header h1',
            popover: {
                title: 'Bienvenue dans l\'administration',
                description: 'Ce tableau de bord centralise l\'accès aux pages, médias, tags et utilisateurs du site. Le bouton "Aide" relance ce tour à tout moment.',
            },
        },
        {
            element: '[data-tour="pages-section"]',
            popover: {
                title: 'Pages récentes',
                description: 'Les dernières pages modifiées. Utilisez "Gérer toutes les pages" pour voir la liste complète et créer une nouvelle page.',
            },
        },
        {
            element: '[data-tour="media-card"]',
            popover: {
                title: 'Médias',
                description: 'La bibliothèque de médias regroupe toutes les images et vidéos utilisables sur le site.',
            },
        },
        {
            element: '[data-tour="tags-card"]',
            popover: {
                title: 'Tags',
                description: 'Les tags catégorisent les actualités et projets. Un tag ne peut pas être supprimé tant qu\'il est utilisé par une page.',
            },
        },
        {
            element: '[data-tour="users-card"]',
            popover: {
                title: 'Utilisateurs',
                description: 'Gérez les comptes administrateurs. Tout compte créé ici a accès complet au back-office.',
            },
        },
        {
            element: '[data-tour="maintenance-card"]',
            popover: {
                title: 'Mode maintenance',
                description: 'Active une page "Bientôt disponible" sur tout le site public. À utiliser avec précaution : le site reste inaccessible aux visiteurs tant que ce mode est actif.',
            },
        },
        {
            element: '[data-tour="prehome-card"]',
            popover: {
                title: 'Blocage de la préhome',
                description: 'L\'animation d\'accueil ne joue qu\'une fois par session de navigation. Désactivez ce blocage pour la revoir à chaque chargement de la page d\'accueil, le temps de la relire ou de la présenter.',
            },
        },
    ],

    'page-create': [
        {
            element: '#title',
            popover: {
                title: 'Titre (FR)',
                description: 'Champ obligatoire. Le titre anglais (EN) est optionnel : s\'il est vide, le titre FR est utilisé par défaut.',
            },
        },
        {
            element: '#slug',
            popover: {
                title: 'Slug (URL)',
                description: 'Obligatoire et unique. Uniquement des lettres minuscules, chiffres et tirets (ex. "mon-projet"). Détermine l\'adresse de la page.',
            },
        },
        {
            element: '#template',
            popover: {
                title: 'Template',
                description: 'Détermine la structure et les blocs de contenu disponibles sur la page. Choisissez-le avec soin : il conditionne toute l\'édition qui suit.',
            },
        },
        {
            element: '#menuStyle',
            popover: {
                title: 'Style de menu',
                description: 'Principal = grande police dans le menu, Secondaire = petite police (menu burger), Aucun = page masquée du menu (ex. sous-page).',
            },
        },
        {
            element: '#parentId',
            popover: {
                title: 'Page parente',
                description: 'Optionnel. Si définie, la page devient une sous-page accessible via /parent-slug/slug.',
            },
        },
        {
            element: 'button[type="submit"]',
            popover: {
                title: 'Créer la page',
                description: 'Une fois créée, vous êtes redirigé directement vers l\'éditeur inline pour remplir le contenu.',
            },
        },
    ],

    editor: [
        {
            element: '.editor-content',
            popover: {
                title: 'Édition inline',
                description: 'Cliquez directement sur un texte ou une image dans la page pour la modifier sur place.',
            },
        },
        {
            element: '#save-btn',
            popover: {
                title: 'Enregistrer',
                description: 'Sauvegarde le contenu et crée automatiquement une nouvelle version consultable dans l\'historique.',
            },
        },
        {
            element: '#preview-toggle-btn',
            popover: {
                title: 'Aperçu',
                description: 'Masque les outils d\'édition pour voir la page telle que les visiteurs la verront. Le même bouton (ou la touche Échap) ramène à l\'édition.',
            },
        },
        {
            element: '#publish-toggle-btn',
            popover: {
                title: 'Publier / Dépublier',
                description: 'Rend la page visible ou invisible sur le site public.',
            },
        },
        {
            element: '.editor-toolbar__actions [data-tooltip="Historique"]',
            popover: {
                title: 'Historique des versions',
                description: 'Consultez et restaurez une version précédente de la page.',
            },
        },
        {
            element: '.locale-badge',
            popover: {
                title: 'Langue en cours d\'édition',
                description: 'Utilisez le bouton FR/EN à côté pour basculer vers l\'autre langue de la page.',
            },
        },
    ],

    'media-library': [
        {
            element: '[data-tour="upload-zone"]',
            popover: {
                title: 'Ajouter des médias',
                description: 'Glissez-déposez ou sélectionnez des fichiers. Images : JPG, PNG, GIF, WebP (max 20 Mo). Vidéos : MP4, WebM (max 100 Mo).',
            },
        },
        {
            element: '#create-folder-btn',
            popover: {
                title: 'Organiser en dossiers',
                description: 'Créez des dossiers pour ranger vos médias. Un dossier non vide ne peut pas être supprimé.',
            },
        },
        {
            element: '[data-tour="media-images-section"]',
            popover: {
                title: 'Médias du dossier courant',
                description: 'Survolez un média pour le sélectionner ou le supprimer. La sélection multiple permet de déplacer plusieurs fichiers à la fois.',
            },
        },
    ],

    tags: [
        {
            element: '[data-tour="tag-create-link"]',
            popover: {
                title: 'Créer un tag',
                description: 'Un tag a un nom (unique), un slug (généré automatiquement si vide) et une portée : Actualités, Projets, ou les deux.',
            },
        },
        {
            element: '[data-tour="tags-table"]',
            popover: {
                title: 'Liste des tags',
                description: 'La colonne "Pages associées" indique combien de pages utilisent ce tag. Un tag utilisé ne peut pas être supprimé : retirez-le des pages concernées d\'abord.',
            },
        },
    ],

    users: [
        {
            element: '[data-tour="user-create-link"]',
            popover: {
                title: 'Créer un utilisateur',
                description: 'Email, prénom, nom et mot de passe (8 caractères minimum) sont requis. Tout nouvel utilisateur a un accès administrateur complet — il n\'y a pas de rôle restreint.',
            },
        },
        {
            element: '[data-tour="users-table"]',
            popover: {
                title: 'Liste des utilisateurs',
                description: 'Vous ne pouvez pas supprimer votre propre compte. La suppression d\'un autre compte est définitive.',
            },
        },
    ],
};
