diff --git a/src/components/astro/ColCentre.astro b/src/components/astro/ColCentre.astro
index 1f1f25b..41e1aec 100644
--- a/src/components/astro/ColCentre.astro
+++ b/src/components/astro/ColCentre.astro
@@ -3,8 +3,7 @@
// BAS : iframe carte AEP + scroll articles Substack (PC4).
import CarteOWrapper from '../vue/CarteOWrapper.vue';
import ChatbotV2 from '../vue/ChatbotV2.vue';
-import IframeCarteAEP from './IframeCarteAEP.astro';
-import ScrollArticles from './ScrollArticles.astro';
+import EmbedDynamique from '../vue/EmbedDynamique.vue';
---
@@ -66,12 +65,11 @@ import ScrollArticles from './ScrollArticles.astro';
-
-
diff --git a/src/components/astro/ScrollArticles.astro b/src/components/astro/ScrollArticles.astro
deleted file mode 100644
index c7b2e6d..0000000
--- a/src/components/astro/ScrollArticles.astro
+++ /dev/null
@@ -1,72 +0,0 @@
----
-// PC4 - Liste articles Substack en scroll sous l'iframe carte.
-// V1 placeholder data en dur ; PC6 (journal n8n) remplacera par fetch journal.json filtre tag #politique.
-const articles = [
- {
- date: '2026-04-28',
- titre: 'Cap sur l\'autonomie : retour sur 6 mois de chantier',
- url: 'https://transformations.substack.com/p/cap-autonomie',
- },
- {
- date: '2026-04-15',
- titre: 'Le commun comme infrastructure',
- url: 'https://transformations.substack.com/p/commun-infrastructure',
- },
- {
- date: '2026-03-30',
- titre: 'Architecte ou operateur de bifurcation ?',
- url: 'https://transformations.substack.com/p/architecte-bifurcation',
- },
- {
- date: '2026-03-12',
- titre: 'Reseaux AEP : pourquoi la coordination est politique',
- url: 'https://transformations.substack.com/p/aep-coordination',
- },
- {
- date: '2026-02-26',
- titre: 'Sortir du sauveur, entrer dans le compagnon',
- url: 'https://transformations.substack.com/p/sauveur-compagnon',
- },
- {
- date: '2026-02-08',
- titre: 'Petit manifeste contre l\'expert isole',
- url: 'https://transformations.substack.com/p/contre-expert-isole',
- },
- {
- date: '2026-01-22',
- titre: 'Ce que la commande publique fait a la pensee',
- url: 'https://transformations.substack.com/p/commande-publique',
- },
- // TODO PC6 : remplacer par fetch journal.json filtre tag #politique.
-];
----
-
diff --git a/src/components/vue/EmbedDynamique.vue b/src/components/vue/EmbedDynamique.vue
new file mode 100644
index 0000000..f4b289a
--- /dev/null
+++ b/src/components/vue/EmbedDynamique.vue
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+
+ Chargement de la carte AEP...
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ selectedItem.hashtag }}
+
+
+
+
+
+
{{ formatDate(selectedItem.date) }} - {{ selectedItem.platform }}
+
{{ selectedItem.titre }}
+
+ {{ selectedItem.extrait }}
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/vue/JournalList.vue b/src/components/vue/JournalList.vue
index f0e342d..20f0485 100644
--- a/src/components/vue/JournalList.vue
+++ b/src/components/vue/JournalList.vue
@@ -77,6 +77,15 @@ onUnmounted(() => {
window.removeEventListener('platform-filter-change', onPlatformChange as EventListener)
})
+const onItemClick = (item: JournalItem, e: MouseEvent) => {
+ if (e.metaKey || e.ctrlKey) {
+ window.open(item.url, '_blank', 'noopener')
+ return
+ }
+ e.preventDefault()
+ window.dispatchEvent(new CustomEvent('journal-item-click', { detail: { item } }))
+}
+
const visibleItems = computed(() => {
const keys = Object.keys(filters.value)
let filtered: JournalItem[]
@@ -156,6 +165,7 @@ const platformLabel = (p: string) => {
target="_blank"
rel="noopener noreferrer"
class="block group"
+ @click="onItemClick(item, $event)"
>