world-game/src/components/ui/Button.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

98 lines
1.6 KiB
Svelte

<script>
export let variant = 'primary' // primary, secondary, outline
export let size = 'medium' // small, medium, large
export let disabled = false
export let href = null
</script>
{#if href}
<a
{href}
class="btn btn--{variant} btn--{size}"
class:disabled
on:click
>
<slot />
</a>
{:else}
<button
class="btn btn--{variant} btn--{size}"
{disabled}
on:click
>
<slot />
</button>
{/if}
<style>
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
padding: 0.75rem 2rem;
font-weight: 600;
text-decoration: none;
border: 2px solid transparent;
cursor: pointer;
transition: all 0.3s;
text-transform: uppercase;
letter-spacing: 0.05em;
font-size: 0.9rem;
}
.btn--primary {
background: #04fea0;
color: #000;
border-color: #04fea0;
}
.btn--primary:hover {
background: #03d98c;
border-color: #03d98c;
}
.btn--secondary {
background: #000;
color: #04fea0;
border-color: #04fea0;
}
.btn--secondary:hover {
background: #04fea0;
color: #000;
}
.btn--outline {
background: transparent;
color: #fff;
border-color: #fff;
}
.btn--outline:hover {
background: #fff;
color: #000;
}
.btn--small {
padding: 0.5rem 1.5rem;
font-size: 0.8rem;
}
.btn--medium {
padding: 0.75rem 2rem;
font-size: 0.9rem;
}
.btn--large {
padding: 1rem 2.5rem;
font-size: 1rem;
}
.btn:disabled,
.btn.disabled {
opacity: 0.5;
cursor: not-allowed;
pointer-events: none;
}
</style>