diff --git a/assets/icons/fa-solid/angle-double-left.svg b/assets/icons/fa-solid/angle-double-left.svg
new file mode 100644
index 000000000..0fe1d983d
--- /dev/null
+++ b/assets/icons/fa-solid/angle-double-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/fa-solid/angle-double-right.svg b/assets/icons/fa-solid/angle-double-right.svg
new file mode 100644
index 000000000..cf1bd72ff
--- /dev/null
+++ b/assets/icons/fa-solid/angle-double-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/fa-solid/angle-left.svg b/assets/icons/fa-solid/angle-left.svg
new file mode 100644
index 000000000..fd3f1a3aa
--- /dev/null
+++ b/assets/icons/fa-solid/angle-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/fa-solid/angle-right.svg b/assets/icons/fa-solid/angle-right.svg
new file mode 100644
index 000000000..fd3a66191
--- /dev/null
+++ b/assets/icons/fa-solid/angle-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/mingcute/arrow-left-fill.svg b/assets/icons/mingcute/arrow-left-fill.svg
new file mode 100644
index 000000000..fce0eb27a
--- /dev/null
+++ b/assets/icons/mingcute/arrow-left-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/sources/AppBundle/Site/Entity/Repository/ArticleRepository.php b/sources/AppBundle/Site/Entity/Repository/ArticleRepository.php
index dcab69ac1..799b565ea 100644
--- a/sources/AppBundle/Site/Entity/Repository/ArticleRepository.php
+++ b/sources/AppBundle/Site/Entity/Repository/ArticleRepository.php
@@ -49,7 +49,8 @@ public function getEventsLabelsById(): array
->from('afup_site_article', 'a')
->innerJoin('a', 'afup_forum', 'e', 'a.id_forum = e.id')
->groupBy('e.id')
- ->orderBy('e.date_debut', 'DESC')
+ ->addOrderBy('e.date_debut', 'DESC')
+ ->addOrderBy('e.titre', 'DESC')
->executeQuery()
->fetchAllAssociative();
diff --git a/templates/components/Form/Section.html.twig b/templates/components/Card/Section.html.twig
similarity index 100%
rename from templates/components/Form/Section.html.twig
rename to templates/components/Card/Section.html.twig
diff --git a/templates/components/Form/FilterList.html.twig b/templates/components/Form/FilterList.html.twig
new file mode 100644
index 000000000..53a1f0db1
--- /dev/null
+++ b/templates/components/Form/FilterList.html.twig
@@ -0,0 +1,33 @@
+{# @prop field Le champ de formulaire (choice multiple + expanded) #}
+{# @prop title Le titre de la section #}
+{# @prop limit Le nombre de choix affichés avant repli #}
+{%- props field, title, limit = 5 -%}
+
+{# les choix cochés remontent, l'ordre d'origine est conservé pour le reste #}
+{%- set choices = field|sort((a, b) => (b.vars.checked ? 1 : 0) - (a.vars.checked ? 1 : 0)) -%}
+{%- set visible_count = max(limit, choices|filter(choice => choice.vars.checked)|length) -%}
+{%- set shown = choices|slice(0, visible_count) -%}
+{%- set folded = choices|slice(visible_count) -%}
+
+
+
+ {% for choice in shown %}
+
{{ form_widget(choice) }}{{ form_label(choice) }}
+ {% endfor %}
+
+
+ {% if folded|length %}
+
+
+
+ Voir les {{ folded|length }} autres
+ Voir moins
+
+