import type { Review } from '@/types';

/**
 * TL-318 — types des panneaux de détail ouverts par un clic sur la note, dans
 * `/reviews` (avis des canaux) et `/questionnaires`.
 */

/** `t(namespace, key, fallback)` de `useTranslation`. */
export type Translate = (namespace: string, key: string, fallback?: string) => string;

/** Couleur d'une note : vert, ambre, rouge, ou neutre (question factuelle, note absente). */
export type ScoreTone = 'good' | 'fair' | 'poor' | 'neutral';

/** État d'une pastille de la barre de note. */
export type PipState = 'full' | 'half' | 'empty';

/** Ligne « libellé : valeur » de l'en-tête du panneau (séjour, date…). */
export interface DetailMeta {
    label: string;
    value: string;
}

/** Séjour derrière un avis des canaux (`ReviewStayResolver`, PHP). */
export interface ReviewStay {
    /** `reservations.id` (local). */
    reservation_id: number;
    /** `Y-m-d`. */
    check_in: string | null;
    check_out: string | null;
}

/** Ligne de l'onglet Avis (`ReviewListService`, PHP). */
export interface ReviewRow extends Review {
    stay?: ReviewStay | null;
}

/** Catégorie notée par le voyageur sur le canal, ramenée sur 5. */
export interface ReviewCategory {
    /** Clé de traduction : libellé du canal en minuscules-soulignés. */
    key: string;
    /** Libellé tel que reçu du canal — repli quand la clé n'a pas de traduction. */
    label: string;
    value: number;
}
