export type BadgeVariant =
    'neutral' | 'success' | 'warning' | 'danger' | 'info';

const dateTimeFormat = new Intl.DateTimeFormat('fr-FR', {
    day: '2-digit',
    month: '2-digit',
    year: 'numeric',
    hour: '2-digit',
    minute: '2-digit',
});

export const formatDateTime = (value: string | null | undefined): string => {
    if (!value) {
        return '—';
    }

    return dateTimeFormat.format(new Date(value));
};

/** Variante de StatusBadge selon le slug de statut (seed du module support). */
export const statusVariant = (
    slug: string | null | undefined,
): BadgeVariant => {
    switch (slug) {
        case 'open':
        case 'customer_reply':
            return 'warning';
        case 'answered':
            return 'success';
        case 'in_progress':
            return 'info';
        default:
            return 'neutral';
    }
};

/** Variante de StatusBadge selon le slug d'urgence (seed du module support). */
export const priorityVariant = (
    slug: string | null | undefined,
): BadgeVariant => {
    switch (slug) {
        case 'normal':
            return 'info';
        case 'high':
            return 'warning';
        case 'critical':
            return 'danger';
        default:
            return 'neutral';
    }
};
