import type { Locator, Page } from '@playwright/test'

export type AdminLinkSlug = 'users' | 'roles' | 'sites' | 'categories' | 'audit-log'

/**
 * Page Object de la sidebar (MalioSidebar), scope sur les items "admin".
 *
 * Strategie selecteur : `a[href=...]` plutot que le texte i18n. Le slug de
 * route ne change pas quand on retraduit ou renomme une entree — c'est le
 * selecteur le plus stable pour cette suite.
 *
 * Si un jour la sidebar change et les slugs bougent, on met a jour CE
 * fichier uniquement ; les specs continuent de passer.
 */
export class SidebarComponent {
    readonly page: Page

    constructor(page: Page) {
        this.page = page
    }

    adminLink(slug: AdminLinkSlug): Locator {
        return this.page.locator(`a[href="/admin/${slug}"]`)
    }

    accountDashboardLink(): Locator {
        return this.page.locator('a[href="/"]').first()
    }

    logoutLink(): Locator {
        return this.page.locator('a[href="/logout"]')
    }
}
