// ============================================================
// code_slides.typ — Module de génération de slides de code
// Thème clair, sobre, lisible
// ============================================================

// Couleurs
#let couleur-orange = rgb("#E85D04")
#let fond-code = rgb("#F4F4F4")   // gris très clair
#let texte-code = rgb("#1A1A1A")   // quasi-noir, très lisible
#let bordure-code = rgb("#CCCCCC")   // gris moyen pour le contour

// ----------------------------------------------------------
// STYLE DU BLOC DE CODE — fond clair, texte foncé, sobre
// ----------------------------------------------------------
#let style-bloc-code(contenu) = block(
  width: 100%,
  fill: fond-code,
  radius: 4pt,
  inset: (x: 1.2em, y: 1em),
  breakable: true,
  stroke: (paint: bordure-code, thickness: 1pt),
)[
  #set text(fill: texte-code, size: 14pt)  // taille augmentée
  #contenu
]

// ----------------------------------------------------------
// SLIDE DE TRANSITION — texte simple, pas d'effet
// ----------------------------------------------------------
#let slide-titre-fichier(nom-fichier, myslide, graphe_tanner_fond) = myslide(
  // Header : juste le texte de section
  [Code Source],
  // Contenu : nom du fichier centré, sobre
  align(center + horizon)[
    // Graphe de Tanner en fond décoratif (discret)
    #place(center + horizon, dy: 8.2cm)[
      #graphe_tanner_fond(0.9cm, 1.75)
    ]

    #place(center + horizon, dy: 7.5cm)[#text(size: 50pt, weight: "bold")[#nom-fichier]]
  ],
)

// ----------------------------------------------------------
// SLIDE DE CODE — header texte seul, sans icône
// ----------------------------------------------------------
#let slide-code-fichier(nom-fichier, contenu-code, myslide) = myslide(
  // Header : juste le nom du fichier, texte brut
  [#nom-fichier],
  // Contenu
  style-bloc-code[
    #raw(contenu-code, lang: "rust", block: true)
  ],
)

// ----------------------------------------------------------
// FONCTION PRINCIPALE
// ----------------------------------------------------------
#let generer_slides_code(fichiers, myslide, graphe_tanner_fond) = {
  for chemin in fichiers {
    let parties = chemin.split("/")
    let nom = parties.last()

    slide-titre-fichier(nom, myslide, graphe_tanner_fond)

    let source = read(chemin)

    slide-code-fichier(nom, source, myslide)
  }
}
