Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
<script>
|
2026-02-19 12:41:50 +01:00
|
|
|
import { onMount } from 'svelte'
|
2026-02-19 12:38:07 +01:00
|
|
|
import { slides } from '@state/slides.svelte'
|
2026-02-19 12:41:50 +01:00
|
|
|
import { slideTo } from '@router'
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
|
|
|
|
|
import Header from '@components/layout/Header.svelte'
|
|
|
|
|
import Cursor from '@components/layout/Cursor.svelte'
|
2026-04-01 19:16:58 +02:00
|
|
|
import Footer from '@components/layout/Footer.svelte'
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
import LanguageSwitcher from '@components/ui/LanguageSwitcher.svelte'
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
|
|
|
|
|
import Home from '@views/Home.svelte'
|
|
|
|
|
import About from '@views/About.svelte'
|
|
|
|
|
import Expertise from '@views/Expertise.svelte'
|
|
|
|
|
import Portfolio from '@views/Portfolio.svelte'
|
|
|
|
|
import Project from '@views/Project.svelte'
|
Feat: page Jouer renommée Play + vue implémentée
Renommage jouer → play (blueprint, template, txt, vue)
API play.json.php : title, lettering, description, thumbnail,
background_image, play_links par jeu enfant listed()
Vue Play.svelte :
- Fond image avec crossfade (transition opacity sur .play-bg)
- Section principale (.play-featured) : glissé/fondu au changement de jeu
via --slide-dir CSS var + classes is-out
- Carrousel nav (ul > li > button) : thumbnail + titre, active bordure verte
- Jeu sans play_links → bouton "Coming soon" désactivé
- Layout golden-grid, mobile adapté
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 17:58:29 +01:00
|
|
|
import Play from '@views/Play.svelte'
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
import Game from '@views/Game.svelte'
|
|
|
|
|
import Blog from '@views/Blog.svelte'
|
|
|
|
|
import Article from '@views/Article.svelte'
|
2026-03-18 17:37:22 +01:00
|
|
|
import WhitePapers from '@views/WhitePapers.svelte'
|
2026-03-30 18:43:35 +02:00
|
|
|
import Privacy from '@views/Privacy.svelte'
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
import Default from '@views/Default.svelte'
|
|
|
|
|
|
|
|
|
|
const templates = {
|
2026-02-19 12:38:07 +01:00
|
|
|
home: Home,
|
|
|
|
|
about: About,
|
|
|
|
|
expertise: Expertise,
|
|
|
|
|
portfolio: Portfolio,
|
|
|
|
|
project: Project,
|
Feat: page Jouer renommée Play + vue implémentée
Renommage jouer → play (blueprint, template, txt, vue)
API play.json.php : title, lettering, description, thumbnail,
background_image, play_links par jeu enfant listed()
Vue Play.svelte :
- Fond image avec crossfade (transition opacity sur .play-bg)
- Section principale (.play-featured) : glissé/fondu au changement de jeu
via --slide-dir CSS var + classes is-out
- Carrousel nav (ul > li > button) : thumbnail + titre, active bordure verte
- Jeu sans play_links → bouton "Coming soon" désactivé
- Layout golden-grid, mobile adapté
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 17:58:29 +01:00
|
|
|
play: Play,
|
2026-02-19 12:38:07 +01:00
|
|
|
game: Game,
|
|
|
|
|
blog: Blog,
|
|
|
|
|
article: Article,
|
2026-03-18 17:37:22 +01:00
|
|
|
'white-papers': WhitePapers,
|
2026-03-30 18:43:35 +02:00
|
|
|
privacy: Privacy,
|
2026-02-19 12:38:07 +01:00
|
|
|
default: Default
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
}
|
|
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
const wrapperWidth = $derived(`${slides.all.length * 100}vw`)
|
|
|
|
|
const wrapperTransform = $derived(`translateX(-${slides.activeIndex * 100}vw)`)
|
2026-02-19 12:41:50 +01:00
|
|
|
|
2026-03-30 14:13:41 +02:00
|
|
|
const linesBySlide = {
|
2026-03-30 18:43:35 +02:00
|
|
|
home: [6, 11, 16],
|
|
|
|
|
expertise: [6, 8, 11, 14, 16],
|
|
|
|
|
about: [6, 8, 11, 14, 16],
|
|
|
|
|
portfolio: [11, 16],
|
|
|
|
|
privacy: [6, 8, 11, 14, 16],
|
2026-03-30 14:13:41 +02:00
|
|
|
}
|
|
|
|
|
const ALL_COLS = [6, 8, 11, 14, 16]
|
2026-03-30 18:43:35 +02:00
|
|
|
const activeTemplate = $derived(slides.standalone?.template ?? slides.active?.template)
|
|
|
|
|
const activeLines = $derived(new Set(linesBySlide[activeTemplate] ?? []))
|
2026-03-30 14:13:41 +02:00
|
|
|
|
2026-03-05 17:54:28 +01:00
|
|
|
let isReady = $state(false)
|
2026-03-05 17:48:15 +01:00
|
|
|
let isResizing = $state(false)
|
|
|
|
|
let resizeTimer = null
|
|
|
|
|
|
2026-03-05 17:54:28 +01:00
|
|
|
// Active la transition seulement après le premier paint à la bonne position.
|
2026-03-06 12:23:47 +01:00
|
|
|
// Double rAF : le premier laisse passer un paint avec le bon translateX,
|
|
|
|
|
// le second active is-animated — évite l'animation parasite au chargement.
|
2026-03-05 17:54:28 +01:00
|
|
|
$effect(() => {
|
|
|
|
|
if (slides.all.length > 0 && !isReady) {
|
2026-03-06 12:23:47 +01:00
|
|
|
requestAnimationFrame(() => requestAnimationFrame(() => { isReady = true }))
|
2026-03-05 17:54:28 +01:00
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
2026-02-19 12:41:50 +01:00
|
|
|
onMount(() => {
|
2026-03-05 17:48:15 +01:00
|
|
|
const handleResize = () => {
|
|
|
|
|
isResizing = true
|
|
|
|
|
clearTimeout(resizeTimer)
|
|
|
|
|
resizeTimer = setTimeout(() => { isResizing = false }, 150)
|
|
|
|
|
}
|
|
|
|
|
window.addEventListener('resize', handleResize)
|
|
|
|
|
|
2026-02-19 12:41:50 +01:00
|
|
|
const handleKeydown = (e) => {
|
2026-03-19 07:36:43 +01:00
|
|
|
if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return
|
|
|
|
|
|
|
|
|
|
// Si on est sur une sous-page (ex: /livres-blancs/slug), ne pas changer de slide
|
|
|
|
|
const activePath = slides.active?.path ?? ''
|
|
|
|
|
const currentPath = window.location.pathname.replace(/^\/en/, '') || '/'
|
|
|
|
|
const isSubPage = activePath && currentPath.startsWith(activePath + '/')
|
|
|
|
|
|
|
|
|
|
if (isSubPage) {
|
|
|
|
|
if (e.key === 'ArrowLeft') history.back()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-19 12:41:50 +01:00
|
|
|
if (e.key === 'ArrowRight') {
|
|
|
|
|
const next = slides.all[slides.activeIndex + 1]
|
|
|
|
|
if (next) slideTo(next.path)
|
2026-03-19 07:36:43 +01:00
|
|
|
} else {
|
2026-02-19 12:41:50 +01:00
|
|
|
const prev = slides.all[slides.activeIndex - 1]
|
|
|
|
|
if (prev) slideTo(prev.path)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
window.addEventListener('keydown', handleKeydown)
|
2026-03-25 13:20:57 +01:00
|
|
|
|
|
|
|
|
// Swipe gauche/droite → même comportement que les touches clavier
|
|
|
|
|
const TOUCH_THRESHOLD = 50
|
|
|
|
|
let touchStartX = 0
|
|
|
|
|
let touchStartY = 0
|
|
|
|
|
|
|
|
|
|
const handleTouchStart = (e) => {
|
|
|
|
|
touchStartX = e.touches[0].clientX
|
|
|
|
|
touchStartY = e.touches[0].clientY
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleTouchEnd = (e) => {
|
|
|
|
|
const deltaX = touchStartX - e.changedTouches[0].clientX
|
|
|
|
|
const deltaY = touchStartY - e.changedTouches[0].clientY
|
|
|
|
|
if (Math.abs(deltaX) < TOUCH_THRESHOLD) return
|
|
|
|
|
if (Math.abs(deltaY) > Math.abs(deltaX)) return
|
|
|
|
|
|
|
|
|
|
const activePath = slides.active?.path ?? ''
|
|
|
|
|
const currentPath = window.location.pathname.replace(/^\/en/, '') || '/'
|
|
|
|
|
const isSubPage = activePath && currentPath.startsWith(activePath + '/')
|
|
|
|
|
if (isSubPage) return
|
|
|
|
|
|
|
|
|
|
if (deltaX > 0) {
|
|
|
|
|
const next = slides.all[slides.activeIndex + 1]
|
|
|
|
|
if (next) slideTo(next.path)
|
|
|
|
|
} else {
|
|
|
|
|
const prev = slides.all[slides.activeIndex - 1]
|
|
|
|
|
if (prev) slideTo(prev.path)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
window.addEventListener('touchstart', handleTouchStart, { passive: true })
|
|
|
|
|
window.addEventListener('touchend', handleTouchEnd, { passive: true })
|
|
|
|
|
|
2026-03-05 17:48:15 +01:00
|
|
|
return () => {
|
|
|
|
|
window.removeEventListener('resize', handleResize)
|
|
|
|
|
window.removeEventListener('keydown', handleKeydown)
|
2026-03-25 13:20:57 +01:00
|
|
|
window.removeEventListener('touchstart', handleTouchStart)
|
|
|
|
|
window.removeEventListener('touchend', handleTouchEnd)
|
2026-03-05 17:48:15 +01:00
|
|
|
clearTimeout(resizeTimer)
|
|
|
|
|
}
|
2026-02-19 12:41:50 +01:00
|
|
|
})
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
</script>
|
|
|
|
|
|
2026-02-19 12:58:32 +01:00
|
|
|
<Cursor />
|
|
|
|
|
<Header />
|
2026-03-25 13:44:03 +01:00
|
|
|
<div class="bg-fixed" style="background-image: url('/assets/img/scrollable-page-background.png')"></div>
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
|
2026-03-30 14:13:41 +02:00
|
|
|
<div class="vertical-lines" aria-hidden="true">
|
|
|
|
|
{#each ALL_COLS as col}
|
|
|
|
|
<div class="vl vl-col{col}" class:visible={activeLines.has(col)}></div>
|
|
|
|
|
{/each}
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-02-19 12:58:32 +01:00
|
|
|
<main class="main">
|
2026-03-30 18:43:35 +02:00
|
|
|
{#if slides.standalone}
|
|
|
|
|
<svelte:component
|
|
|
|
|
this={templates[slides.standalone.template] ?? Default}
|
|
|
|
|
data={slides.standalone}
|
|
|
|
|
/>
|
|
|
|
|
{:else}
|
|
|
|
|
<div
|
|
|
|
|
class="slides-wrapper"
|
|
|
|
|
class:is-animated={isReady && !isResizing}
|
|
|
|
|
style="width: {wrapperWidth}; transform: {wrapperTransform}"
|
|
|
|
|
>
|
|
|
|
|
{#each slides.all as slide, i}
|
|
|
|
|
<section class="slide" class:active={i === slides.activeIndex} data-slide={slide.id} inert={i !== slides.activeIndex}>
|
|
|
|
|
{#if slide.loaded}
|
|
|
|
|
<svelte:component
|
|
|
|
|
this={templates[slide.template] ?? Default}
|
|
|
|
|
data={slide.data}
|
|
|
|
|
/>
|
|
|
|
|
{/if}
|
|
|
|
|
</section>
|
|
|
|
|
{/each}
|
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
2026-02-19 12:58:32 +01:00
|
|
|
</main>
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
<LanguageSwitcher />
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
|
2026-04-01 19:16:58 +02:00
|
|
|
<Footer />
|
|
|
|
|
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
<style>
|
2026-02-19 12:58:32 +01:00
|
|
|
:global(#app) {
|
|
|
|
|
height: 100vh;
|
|
|
|
|
}
|
|
|
|
|
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
:global(*) {
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 0;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:global(body) {
|
|
|
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
|
|
|
background: #000;
|
|
|
|
|
color: #fff;
|
2026-02-19 12:38:07 +01:00
|
|
|
overflow: hidden;
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:global(a) {
|
|
|
|
|
color: inherit;
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:global(img) {
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
height: auto;
|
|
|
|
|
}
|
2026-02-19 12:38:07 +01:00
|
|
|
|
|
|
|
|
.main {
|
|
|
|
|
position: relative;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.slides-wrapper {
|
|
|
|
|
display: flex;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-05 17:54:28 +01:00
|
|
|
.slides-wrapper.is-animated {
|
|
|
|
|
transition: transform 1000ms cubic-bezier(0.77, 0, 0.175, 1);
|
2026-03-05 17:48:15 +01:00
|
|
|
}
|
|
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
.slide {
|
|
|
|
|
width: 100vw;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
}
|
2026-03-11 10:33:03 +01:00
|
|
|
|
|
|
|
|
.bg-fixed {
|
|
|
|
|
position: fixed;
|
|
|
|
|
inset: 0;
|
|
|
|
|
z-index: -1;
|
|
|
|
|
background-size: cover;
|
|
|
|
|
background-position: center;
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
}
|
2026-03-30 14:13:41 +02:00
|
|
|
|
|
|
|
|
.vertical-lines {
|
|
|
|
|
position: fixed;
|
|
|
|
|
inset: 0;
|
|
|
|
|
z-index: var(--z-base);
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.vl {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
height: 0;
|
|
|
|
|
border-left: 0.1px solid rgba(238, 238, 238, 0.2);
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
transition: height 600ms cubic-bezier(0.77, 0, 0.175, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.vl.visible { height: 100vh; }
|
|
|
|
|
|
|
|
|
|
.vl-col6 { left: calc(10.66 / 63.96 * 100%); }
|
|
|
|
|
.vl-col8 { left: calc(21.32 / 63.96 * 100%); }
|
|
|
|
|
.vl-col11 { left: calc(31.98 / 63.96 * 100%); }
|
|
|
|
|
.vl-col14 { left: calc(42.64 / 63.96 * 100%); }
|
|
|
|
|
.vl-col16 { left: calc(53.30 / 63.96 * 100%); }
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- 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>
2026-02-06 16:30:15 +01:00
|
|
|
</style>
|