---
import Layout from '../layouts/Layout.astro';

const meetings = [
  {
    title: "Meeting around Jean-Yves Girard",
    date: "Nov 23, 2025",
    people: 4
  },
  {
    title: "Meeting RI2025 in Morbihan",
    date: "April 28 – May 2, 2025",
    organizers: "Jérémy Hervé, Boris Eng, Victor Benitah",
    people: 16,
    link: "/refli2025/",
    linkText: "Details of the meeting"
  },
  {
    title: "Fondements esthétiques de la logique",
    date: "November 1, 2024",
    by: "Pierre Cardascia",
    people: 16,
    talks: [
      {
        title: "Morts du mythe, de l'art, de la philosophie, de la logique : Itinéraire d'un problème serial-killer",
        speaker: "Pierre Cardascia",
        duration: "1h30",
        slides: "/documents/cardascia-01-11-2024.pdf"
      }
    ]
  },
  {
    title: "Introduction to transcendental syntax",
    date: "June 20, 2024",
    by: "Boris Eng and Pablo Donato",
    people: 5
  },
  {
    title: "Analytic and continental philosophy",
    date: "May 20, 2024",
    by: "Luc Pommeret",
    people: 17,
    talks: [
      {
        title: "Le professionnel et l'écrivain : le pouvoir offensif de la philosophie analytique",
        speaker: "Luc Pommeret",
        duration: "1h30"
      }
    ]
  },
  {
    title: "Technical introduction to transcendental syntax",
    date: "May 11, 2024",
    people: 4,
    talks: [
      { title: "Introduction to Peirce's philosophy", speaker: "Pablo Donato", duration: "30min" },
      { title: "Stellar resolution and Girard's knitting", speaker: "Boris Eng" }
    ]
  },
  {
    title: "Meeting around Jean-Yves Girard",
    date: "May 10, 2024",
    people: 5
  },
  {
    title: "Program verification",
    date: "June 26, 2023",
    by: "Xavier Denis",
    talks: [
      { title: "Presentation of the Rust programming language", speaker: "Xavier Denis", duration: "1h" },
      { title: "Why formal verification is getting it wrong", speaker: "Xavier Denis", duration: "1h" }
    ]
  },
  {
    title: "Logic and quantum computation",
    date: "May 31, 2023",
    by: "Kostia Chardonnet",
    chair: "Kostia Chardonnet",
    talks: [
      { title: "Quantum computation and Geometry of Interaction", speaker: "Kostia Chardonnet", duration: "45min" }
    ]
  },
  {
    title: "Logic and Categories",
    date: "March 24, 2023",
    by: "Tito and Valentin Maestracci",
    chair: "Pablo Donato",
    talks: [
      {
        title: "Pourquoi les catégories sont la bonne façon de faire de la sémantique dénotationnelle",
        speaker: "Tito",
        duration: "1h",
        slides: "https://nguyentito.eu/2023-03-refl.pdf"
      },
      { title: "Catégories monoïdales à trace", speaker: "Valentin Maestracci", duration: "1h" }
    ]
  },
  {
    title: "ReFL first seminar of the year",
    date: "February 21, 2023",
    by: "Pablo Donato, Davide Barbarossa, Adrien Ragot, Boris Eng, Sidney Congard",
    chair: "Boris Eng",
    people: 13,
    talks: [
      { title: "Du calcul des séquents à la logique linéaire", speaker: "Pablo Donato", duration: "30min" },
      { title: "Correspondance de Curry-Howard et théorie des types", speaker: "Davide Barbarossa", duration: "30min" },
      { title: "Réseaux de preuve multiplicatifs avec règle daemon", speaker: "Adrien Ragot", duration: "30min" },
      {
        title: "Introduction à la géométrie de l'interaction originale de Girard",
        speaker: "Boris Eng",
        duration: "30min",
        slides: "https://engboris.fr/documents/slides_tc1_2023.pdf"
      },
      { title: "Introduction à la syntaxe transcendantale", speaker: "Sidney Congard", duration: "30min" }
    ]
  },
  {
    title: "Freedom and Control in Logic and Computation",
    date: "February 1, 2023",
    people: 4,
    talks: [
      { title: "Apodictic and Epidictic in Girard's transcendental syntax. Control over computation (synchronicity, sequentiality, direction of computation)." }
    ]
  },
  {
    title: "Proof-nets and Deep Inference",
    date: "April 27, 2022",
    by: "Pablo Donato",
    people: 5,
    talks: [
      { title: "Comparison between deep inference and proof-nets. Non-sequentialisable multiplicative connectives, ludics, proof assistants, sequent calculi as recipes for computational objects (constellations)." }
    ]
  },
  {
    title: "Computation and Meaning",
    date: "March 23, 2022",
    by: "Boris Eng",
    people: 8,
    talks: [
      { title: "Discussion on stellar resolution and ways to put meaning on it (Girard's \"usine\" and \"usage\"), correctness criterion, realisability theory." }
    ]
  },
  {
    title: "Lambda-calculus and stellar resolution",
    date: "March 9, 2022",
    by: "Boris Eng and Julien Marquet",
    people: 6,
    talks: [
      { title: "Discussion on possible encodings of lambda-calculus and Lafont's interaction nets with unification (by using stellar resolution). Decomposition of tests as constellations. Discussions on optimal reduction of lambda-calculus." }
    ]
  },
  {
    title: "Round table discussion at CIRM's \"Logic and Interaction\" thematic month",
    date: "February 2022",
    people: 8,
    talks: [
      { title: "Discussions on Girard's transcendental syntax. Focus on Girard's \"conceptual knitting\"." }
    ]
  }
];
---

<Layout seo={{ title: "Meetings", description: "ReFL seminars and meetings" }}>
  <div class="max-w-4xl mx-auto">
    <h1 class="text-4xl font-bold mb-4">Meetings</h1>
    <p class="text-base-content/70 mb-8">Some meetings were private and informal. For these reasons, they are not recorded here.</p>

    <div class="space-y-6">
      {meetings.map((meeting) => (
        <article class="border-l-4 border-primary pl-5 py-2">
          <div class="flex flex-wrap items-baseline gap-x-3 gap-y-1">
            <h2 class="text-xl font-semibold">{meeting.title}</h2>
            <span class="text-sm text-base-content/60">{meeting.date}</span>
            {meeting.people && <span class="badge badge-ghost badge-sm">{meeting.people} people</span>}
          </div>

          {meeting.by && (
            <p class="text-sm text-base-content/70 mt-1">By {meeting.by}</p>
          )}

          {meeting.organizers && (
            <p class="text-sm text-base-content/70 mt-1">Organized by {meeting.organizers}</p>
          )}

          {meeting.chair && (
            <p class="text-sm text-base-content/70">Chair: {meeting.chair}</p>
          )}

          {meeting.link && (
            <a href={meeting.link} class="text-primary hover:opacity-80 text-sm mt-2 inline-block">
              → {meeting.linkText}
            </a>
          )}

          {meeting.talks && meeting.talks.length > 0 && (
            <ul class="mt-3 space-y-2">
              {meeting.talks.map((talk) => (
                <li class="text-sm bg-base-200/50 border border-base-content/20 rounded-lg px-4 py-2">
                  <div class="flex flex-wrap items-baseline gap-2">
                    {talk.slides ? (
                      <a href={talk.slides} target="_blank" rel="noopener noreferrer" class="text-primary hover:opacity-80">
                        {talk.title}
                      </a>
                    ) : (
                      <span>{talk.title}</span>
                    )}
                  </div>
                  {(talk.speaker || talk.duration) && (
                    <div class="text-base-content/60 mt-1">
                      {talk.speaker && <span>{talk.speaker}</span>}
                      {talk.speaker && talk.duration && <span> · </span>}
                      {talk.duration && <span>{talk.duration}</span>}
                    </div>
                  )}
                </li>
              ))}
            </ul>
          )}
        </article>
      ))}
    </div>
  </div>
</Layout>
