/** Catégories visuelles partagées (badges `.home-skill--{cat}` dans `index.css`). */
export const SKILL_CATEGORY_KEYS = ['green', 'blue', 'yellow', 'red']

/**
 * Compétences listées hors `SKILLS` (ex. cartes projet) : couleur fixe par libellé.
 * `Java` est aligné sur `JAVA` (même famille).
 */
const SKILL_CATEGORY_EXTRA = {
  Java: 'yellow',
  Web: 'green',
  OSINT: 'blue',
  Cybersécurité: 'blue',
  Documentation: 'yellow',
  Scraping: 'green',
  API: 'blue',
  'Base de données': 'yellow',
  'C#': 'yellow',
  Multijoueur: 'yellow',
  'Jeu vidéo': 'yellow',
  Twitch: 'blue',
  STT: 'blue',
  Bot: 'green',
  'E-mail': 'blue',
  Social: 'blue',
  Stats: 'blue',
  C: 'red',
  'Jeux vidéo': 'yellow',
  Procédural: 'yellow',
  Carte: 'green',
  Association: 'green',
  Vitrine: 'blue',
  Dashboard: 'blue',
  Crypto: 'yellow',
  Trading: 'red',
  IA: 'green',
  Génération: 'green',
  Forum: 'blue',
  Light: 'green',
  Suivi: 'blue',
  Vidéo: 'blue',
  YouTube: 'red',
  Docker: 'green',
  JavaScript: 'blue',
  'C++': 'yellow',
  BookStack: 'blue',
  Stockage: 'yellow',
  Git: 'blue',
  Photos: 'yellow',
  Authentification: 'blue',
  Streaming: 'blue',
}

/** Compétences : couleur + courte phrase (page Profil). */
export const SKILLS = [
  {
    label: 'Linux',
    cat: 'green',
    desc: 'Utilisé en entreprise et quotidiennement. j\'utilise principalement ArchLinux ou Debian, j\'effectue installation et configuration complète d\'un OS, développement d\'applications Linux, etc.',
  },
  {
    label: 'Bash',
    cat: 'green',
    desc: 'Utilisé en entreprise et quotidiennement.  Je conçois et modifie des scripts ainsi que des services système, ces outils me permettent l\'automatisation de tâches répétitives, la gestion des sauvegardes, l\'analyse de données et l\'administration de serveurs à distance.. ',
  },
  {
    label: 'Python',
    cat: 'green',
    desc: 'Utilisé en entreprise et quotidiennement. pour des projets nécessitant une grande flexibilité : reconnaissance d\'image,api, ia, trading cryptomonnaie, etc.',
  },
  {
    label: 'Docker',
    cat: 'green',
    desc: 'Déploiement et maintenance de services conteneurisés : images, compose, réseaux et volumes, intégration dans un parc de serveurs privés et documentation des stacks.',
  },
  {
    label: 'Réseau Système',
    cat: 'blue',
    desc: 'Utilisation au quotidien et en entreprise. Mise en place de serveur privé avec des services privé et publique (vpn, docker, etc), avec réseau de serveur de backup, etc.',
  },
  {
    label: 'PHP',
    cat: 'blue',
    desc: 'Utilisé en entreprise avec un framework privé, ce back-office fait office de centre de contrôle pour un système complet gérant les serveurs, les bases de données et les applications mobiles.',
  },
  {
    label: 'Hardware',
    cat: 'blue',
    desc: 'Utilisé en entreprise et au domicile. Diagnostic, réparation et modification de fonctionnement.',
  },
  {
    label: 'JavaScript',
    cat: 'blue',
    desc: 'Interfaces web, outils côté client ou Node selon le besoin : intégration API, logique métier légère et automatisation dans l’écosystème des services hébergés.',
  },
  {
    label: 'JAVA',
    cat: 'yellow',
    desc: 'Utilisée en entreprise, cette application mobile remplace l\'interface utilisateur Android, Elle permet la gestion des droits d\'accès à l\'appareil ainsi que le suivi d\'activités pour faciliter la maintenance et l\'accompagnement de l\'intervenant. intègre également des fonctionnalité comme : trajets GPS, comptage de détections par reconnaissance d\'image, calendrier des missions...',
  },
  {
    label: 'C++',
    cat: 'yellow',
    desc: 'Performance, contrôle fin des ressources et interopérabilité : composants critiques, glue avec du code existant ou outils quand le typage fort et le déterminisme sont utiles.',
  },
  {
    label: 'C#',
    cat: 'yellow',
    desc: 'Développement d’applications et services sur l’écosystème .NET lorsque l’environnement ou l’existant impose ce langage et ses bibliothèques.',
  },
  {
    label: 'Base de données',
    cat: 'yellow',
    desc: 'Modélisation, requêtes et maintenance : schémas relationnels, sauvegardes, performances et intégration dans des backends (PHP, API, applications mobiles).',
  },
  {
    label: 'Assembleur',
    cat: 'red',
    desc: 'Utilisé en entreprise et au domicile lecture de partitions et modification de cette derniere, afin de modifier le comportement d\'appareils android, modification de comportement de logicel : jeux video, etc.',
  },
  {
    label: 'C',
    cat: 'red',
    desc: 'Programmation bas niveau et embarqué : lecture de code existant, corrections ciblées et intégration avec des chaînes de build ou du matériel contraint.',
  },
]

/** Libellé → catégorie (profil + projets + tout libellé ajouté dans `SKILL_CATEGORY_EXTRA`). */
export const SKILL_CATEGORY_BY_LABEL = {
  ...Object.fromEntries(SKILLS.map(({ label, cat }) => [label, cat])),
  ...SKILL_CATEGORY_EXTRA,
}

/**
 * Catégorie de couleur pour un badge compétence (stable pour un libellé donné).
 * Libellés inconnus : hash déterministe sur les 4 catégories.
 */
export function getSkillCategory(label) {
  const mapped = SKILL_CATEGORY_BY_LABEL[label]
  if (mapped) return mapped
  let h = 2166136261
  for (let i = 0; i < label.length; i++) {
    h ^= label.charCodeAt(i)
    h = Math.imul(h, 16777619)
  }
  return SKILL_CATEGORY_KEYS[(h >>> 0) % SKILL_CATEGORY_KEYS.length]
}
