Feat: navigation par slides horizontaux
All checks were successful
Deploy / Deploy to Production (push) Successful in 14s

- Nouveau store slides.svelte.js : gestion de l'état des slides (activeIndex, pendingPath, chargement progressif)
- Réécriture du router : remplace navaid par une logique custom avec chargement de la slide initiale puis des autres en arrière-plan
- App.svelte : layout slides-wrapper avec translateX, transition 1000ms
- Header.svelte : menu 100% dynamique depuis slides.all (ordre et titres multilingues depuis Kirby)
- site/controllers/site.php : navigation exposée via site->pages()->listed() avec titres par langue, home prependue

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-02-19 12:38:07 +01:00
parent 614098baf6
commit 8e01cbe611
5 changed files with 241 additions and 174 deletions

View file

@ -1,6 +1,11 @@
<?php
return function ($page, $kirby, $site) {
$homePage = $site->find('home');
$navPages = $homePage
? $site->pages()->listed()->prepend($homePage->id(), $homePage)
: $site->pages()->listed();
// Generic page data available in all templates
$genericData = [
'title' => $page->title()->value(),
@ -19,13 +24,19 @@ return function ($page, $kirby, $site) {
'name' => $l->name()
];
})->values(),
'navigation' => $site->main_navigation()->toStructure()->map(function($item) use ($kirby) {
$linkedPage = $item->link()->toPages()->first();
'navigation' => $navPages->map(function($p) use ($kirby) {
$titles = [];
foreach ($kirby->languages() as $lang) {
$titles[$lang->code()] = $p->content($lang->code())->title()->value();
}
if (empty($titles)) {
$titles['fr'] = $p->title()->value();
}
return [
'label_fr' => $item->label_fr()->value(),
'label_en' => $item->label_en()->value(),
'url' => $linkedPage?->url(),
'isActive' => $linkedPage?->isOpen() ?? false
'id' => $p->uid(),
'url' => '/' . $p->uri(),
'title' => $p->title()->value(),
'titles' => $titles
];
})->values()
]