world-game/src/App.svelte
isUnknown cbe89acb21 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

83 lines
1.7 KiB
Svelte

<script>
import { pageStore } from '@stores/page'
import Header from '@components/layout/Header.svelte'
import Footer from '@components/layout/Footer.svelte'
import Cursor from '@components/layout/Cursor.svelte'
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'
import Jouer from '@views/Jouer.svelte'
import Game from '@views/Game.svelte'
import Blog from '@views/Blog.svelte'
import Article from '@views/Article.svelte'
import Default from '@views/Default.svelte'
const templates = {
'home': Home,
'about': About,
'expertise': Expertise,
'portfolio': Portfolio,
'project': Project,
'jouer': Jouer,
'game': Game,
'blog': Blog,
'article': Article,
'default': Default
}
$: template = $pageStore.template || 'default'
$: component = templates[template] || Default
$: data = $pageStore.data
</script>
<div class="app">
<Cursor />
<Header />
<main class="main">
{#if data}
<svelte:component this={component} {data} />
{/if}
</main>
<Footer />
</div>
<style>
: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;
overflow-x: hidden;
}
.app {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.main {
flex: 1;
}
:global(a) {
color: inherit;
text-decoration: none;
}
:global(img) {
max-width: 100%;
height: auto;
}
</style>