1/**2 * =============================================================================3 * Job·Ka — Groupe KA4 * Auteur : Simon-Pierre Boucher5 * Contact : contact@spboucher.ai6 * Fichier : frontend/src/components/JobCard.tsx7 * Rôle : Carte d'offre dans la liste (titre, employeur, badges, meta)8 * Créé : 2026-08-17 Modifié : 2026-08-179 * =============================================================================10 */11import { Link } from "react-router-dom";12import { displayTitle, formatDate, formatSalary, Job, MODE_FR, TYPE_FR } from "../api";1314export default function JobCard({ job }: { job: Job }) {15 const salary = formatSalary(job);16 return (17 <Link to={`/emploi/${job.uid}`} className="job-card">18 <h3>{displayTitle(job)}</h3>19 <span className="employer">{job.employer}</span>20 {job.city ? <span className="muted"> — {job.city}</span> : null}21 <div className="meta">22 {job.is_direct !== false && (23 <span24 className="badge direct"25 title="Offre publiée à la source : page carrière de l'employeur, pas un portail"26 >27 Offre directe28 </span>29 )}30 {salary && <span className="badge salary">{salary}</span>}31 {job.work_mode && <span className="badge mode">{MODE_FR[job.work_mode] ?? job.work_mode}</span>}32 {job.employment_type && <span className="badge">{TYPE_FR[job.employment_type] ?? job.employment_type}</span>}33 {job.category && <span className="badge">{job.category}</span>}34 {job.date_posted && <span>Publiée le {formatDate(job.date_posted)}</span>}35 </div>36 </Link>37 );38}39