Feat: page Portfolio avec galerie animée, navigation par scroll/touch/clavier
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
- Composable useScrollNav partagé entre Expertise et Portfolio (wheel/touch/clavier) - GalleryAnimation : 3 colonnes CSS défilantes infinies avec décalage et delay - Portfolio : golden grid, mockup centré, infos projet, sidebar vignettes navigables - API portfolio.json.php alignée sur blueprint project.yml (catchphrase, images_gallery, mockup, keywords, external_links) - Variable --ease-standard partagée dans variables.css - Alias @composables ajouté dans vite.config.js - Refactor Expertise pour utiliser le composable (comportement identique) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
feb300f76e
commit
0b563b4697
9 changed files with 505 additions and 125 deletions
|
|
@ -1,27 +1,23 @@
|
|||
<?php
|
||||
|
||||
$specificData = [
|
||||
'intro' => [
|
||||
'title' => $page->intro_title()->value(),
|
||||
'text' => $page->intro_text()->value()
|
||||
],
|
||||
'projects' => $page->children()->listed()->map(function($project) {
|
||||
return [
|
||||
'title' => $project->title()->value(),
|
||||
'slug' => $project->slug(),
|
||||
'url' => $project->url(),
|
||||
'tagline' => $project->tagline()->value(),
|
||||
'description' => $project->description()->value(),
|
||||
'cover' => $project->cover()->toFile()?->url(),
|
||||
'cover_thumb' => $project->cover()->toFile()?->thumb(['width' => 100])->url(),
|
||||
'gallery' => $project->files()->filterBy('template', 'image')->limit(5)->map(function($img) {
|
||||
return $img->url();
|
||||
})->values(),
|
||||
'impact' => $project->impact()->split(','),
|
||||
'category' => $project->category()->value(),
|
||||
'platforms' => $project->platforms()->split(','),
|
||||
'apple_link' => $project->apple_link()->value(),
|
||||
'android_link' => $project->android_link()->value()
|
||||
'title' => $project->title()->value(),
|
||||
'slug' => $project->slug(),
|
||||
'catchphrase' => $project->catchphrase()->value(),
|
||||
'description' => $project->description()->value(),
|
||||
'thumbnail' => $project->thumbnail()->toFile()?->url(),
|
||||
'images_gallery' => $project->images_gallery()->toFiles()->map(fn($f) => $f->url())->values(),
|
||||
'mockup' => $project->mockup()->toFile()?->url(),
|
||||
'keywords' => $project->keywords()->toStructure()->map(fn($i) => [
|
||||
'label' => $i->label()->value(),
|
||||
'text' => $i->text()->value(),
|
||||
])->values(),
|
||||
'external_links' => $project->external_links()->toStructure()->map(fn($i) => [
|
||||
'label' => $i->label()->value(),
|
||||
'url' => $i->url()->value(),
|
||||
])->values(),
|
||||
];
|
||||
})->values()
|
||||
];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue