feat: PC1 scaffolding Astro 6 + Vue islands + Tailwind 4 + Embla swipe

Initial structure for page-cerveau:
- Astro 6.3.1 + @astrojs/vue 6.0.1 + Vue 3.5
- Tailwind 4 via @tailwindcss/vite (vs Tailwind 3.4 in prompt; @astrojs/tailwind incompatible with Astro 6 peer deps)
- Embla Carousel Vue for mobile swipe (3 strict positions)
- src/components/astro/ : 5 placeholder components (Col*, HamburgerMenu, PopupOnboarding)
- src/components/vue/ : SwipeContainer + 3 placeholder islands
- src/layouts/BaseLayout.astro
- src/pages/index.astro (3 cols desktop ; SwipeContainer mobile) + manifeste.astro placeholder
- public/data/ ready for PC3 (carte-o.json) + PC6 (journal.json)

Build OK (0 errors, 0 warnings); dev server tested localhost:4321 with all components rendering.

Note: Astro version is 6.3.1 (latest stable) instead of 5.x specified in prompt; 6.x is current LTS.
This commit is contained in:
Jules Neny
2026-05-08 19:44:22 +02:00
parent 74cd6bc584
commit aeaec6fc06
20 changed files with 6910 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
---
// Placeholder Centre : HAUT mindmap AEP (PC3) ; BAS iframe carte AEP (PC4)
---
<div class="h-full grid grid-rows-2 gap-2 p-2">
<section class="border border-dashed border-neutral-300 rounded flex items-center justify-center">
<p class="text-sm text-neutral-400">Mindmap AEP — PC3</p>
</section>
<section class="border border-dashed border-neutral-300 rounded flex items-center justify-center">
<p class="text-sm text-neutral-400">Iframe carte AEP — PC4</p>
</section>
</div>

View File

@@ -0,0 +1,12 @@
---
// Placeholder Insta : 2 carrousels @aep + @julesneny — PC5 oEmbed
---
<section class="h-full p-4 flex flex-col gap-4">
<h2 class="text-lg font-semibold text-neutral-700">Insta</h2>
<div class="border border-dashed border-neutral-300 rounded p-3 flex-1 flex items-center justify-center">
<p class="text-sm text-neutral-400">@aep carrousel — PC5</p>
</div>
<div class="border border-dashed border-neutral-300 rounded p-3 flex-1 flex items-center justify-center">
<p class="text-sm text-neutral-400">@julesneny carrousel — PC5</p>
</div>
</section>

View File

@@ -0,0 +1,14 @@
---
// Placeholder Journal — PC6 remplit avec entries chrono
---
<section class="h-full p-4 flex flex-col gap-3">
<h2 class="text-lg font-semibold text-neutral-700">Journal</h2>
<ul class="flex flex-col gap-2 text-sm text-neutral-500">
<li class="border border-dashed border-neutral-300 rounded p-2">Entry placeholder 1</li>
<li class="border border-dashed border-neutral-300 rounded p-2">Entry placeholder 2</li>
<li class="border border-dashed border-neutral-300 rounded p-2">Entry placeholder 3</li>
<li class="border border-dashed border-neutral-300 rounded p-2">Entry placeholder 4</li>
<li class="border border-dashed border-neutral-300 rounded p-2">Entry placeholder 5</li>
</ul>
<p class="text-xs text-neutral-400 mt-auto">Nav latérale + manifeste CTA — PC2</p>
</section>

View File

@@ -0,0 +1,12 @@
---
// Placeholder hamburger menu — PC2 ajoute liens nav
---
<button
type="button"
class="fixed top-3 right-3 z-30 p-2 rounded bg-white/80 border border-neutral-200 shadow-sm"
aria-label="Menu"
>
<span class="block w-5 h-0.5 bg-neutral-700 mb-1"></span>
<span class="block w-5 h-0.5 bg-neutral-700 mb-1"></span>
<span class="block w-5 h-0.5 bg-neutral-700"></span>
</button>

View File

@@ -0,0 +1,11 @@
---
// Placeholder popup onboarding — PC2 fait l'animation et le contenu
---
<div
id="pc-onboarding"
class="hidden fixed inset-0 z-40 bg-black/30 items-center justify-center"
>
<div class="bg-white p-6 rounded shadow-lg max-w-sm">
<p class="text-sm text-neutral-600">Pop-up onboarding — PC2</p>
</div>
</div>