SolyQuiz/lib/utils.ts
2026-02-27 00:40:57 +01:00

32 lines
1.1 KiB
TypeScript

import { type ClassValue, clsx } from 'clsx'
import { twMerge } from 'tailwind-merge'
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}
export function calculateScore(correct: number, total: number): number {
if (total === 0) return 0
return Math.round((correct / total) * 20 * 100) / 100
}
export function formatScore(score: number): string {
return score.toFixed(2)
}
// Formatage de date identique sur Node.js (serveur) et navigateur (client).
// toLocaleDateString() produit des résultats différents selon l'environnement,
// ce qui cause des erreurs d'hydration React #418.
const MONTHS_FR = ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin',
'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.']
export function formatDate(dateStr: string | null | undefined): string {
if (!dateStr) return 'Jamais'
const d = new Date(dateStr)
if (isNaN(d.getTime())) return '—'
const day = String(d.getDate()).padStart(2, '0')
const month = MONTHS_FR[d.getMonth()]
const year = d.getFullYear()
return `${day} ${month} ${year}`
}