- Footer renommé page-scrollable-footer, positionné en dernier enfant
de .page-container dans About, Blog et Article
- Marges négatives pour aligner le footer pleine largeur (about / blog)
- Retrait du footer global fixe de App.svelte
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Footer global fixé en bas (App.svelte), masqué par le contenu des slides
- margin-bottom sur .page-scrollable pour l'effet footer reveal (about, blog, article)
- About : champ intro remplacé par heading (text) + subtitle (writer), blueprint + API + vue mis à jour
- LanguageSwitcher : div → button avec hitbox élargie
- i18n : clé our_team (fr: NOTRE ÉQUIPE / en: OUR TEAM)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Refonte complète du Footer (sémantique propre, données dynamiques depuis
le store site, bouton subscribe avec l'animation .button partagée).
Intégré dans About, Blog et Article. Scroll-to-top au départ de About et Blog.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Mise à jour de Svelte vers 5.53.7 pour supporter la syntaxe tableau/objet sur l'attribut class
- Cursor.svelte : class={[...]} avec états onTarget et onClick
- blueprints : catchphrase → catchPhrase
- buttons.css : suppression cursor: pointer
- Portfolio.svelte : scale hover nav item
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- variables.css : --breakpoint-mobile (700px) et --breakpoint-tablet (912px)
- Header : .navbar-item { display: none } en dessous de 700px
- Header/Menu : annotation des media queries avec les variables de référence
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
scale() dans le transform plutôt qu'en propriété CSS séparée.
La propriété scale CSS calcule son transform-origin sur la position
layout (avant translate), pas la position visuelle — d'où le décalage.
Avec transform: translate(-50%, -50%) scale(0.5), le centre reste en (0,0).
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Un seul wrapper positionné par transform, les deux éléments à l'intérieur
- translate(-50%, -50%) sur chaque enfant : centre exact = origine du wrapper
- upon-target sur le wrapper → scale(0.5) sur cursor-outline sans décalage
- Suppression du lerp JS (plus nécessaire avec le centrage CSS)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Détection de survol via mouseover sur a, button, [role="button"], [tabindex]
- Classe upon-target appliquée au curseur et à son outline
- cursor-outline scale(0.5) au survol d'un élément interactif
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- style.css : plage z-index (--z-base, --z-content, --z-menu, --z-header, --z-cursor)
- Menu : show() au lieu de showModal() pour sortir du top-layer natif,
Escape géré manuellement via keydown, z-index: var(--z-menu), position: fixed
- Header : z-index: var(--z-header) sur navbar, logo et toggle (toujours au-dessus du menu)
- Cursor/cursor.css : z-index: var(--z-cursor)
- Home : z-index: var(--z-content) sur home-text
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- App.svelte : suppression du wrapper .app redondant, montage direct sur #app, <section> pour les slides
- Header.svelte : <nav>, <ul><li><a> pour le menu, <button> pour le hamburger, animation hamburger en CSS pur (plus de style inline sur les cercles SVG)
- Home.svelte : fusion div[grid-area]+.olly en .home-bg, suppression de tous les style="" statiques
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- 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>
- src/state/router.js → src/router/index.js
- src/state/animations.js → src/utils/animations.js
- Ajout des alias @router et @utils dans vite.config.js
- Mise à jour des imports dans Header.svelte et main.js
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Renommage du dossier src/lib/ en src/state/
- Mise à jour de l'alias @lib vers @state dans vite.config.js
- Suppression de l'alias @stores devenu obsolète
- Mise à jour de tous les imports dans les composants et vues
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>