diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..226262e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,39 @@ +# Changelog + +## [1.5.0] - 2024-01-07 + +### 🚀 Nouvelles fonctionnalités +- **Intégration d'AnimeJS** pour des animations fluides et performantes +- **Loader animé** au chargement de l'application avec barre de progression +- **Animations avancées** : + - Hero : Entrée progressive des éléments, étoiles filantes, patterns africains animés + - Navigation : Transitions fluides, menu mobile amélioré + - Prédictions : Calculateur avec animations de sélection et résultats + - Globe : Vague planétaire animée avec particules et progression temporelle +- **Effets visuels** : + - Effet parallaxe amélioré sur le ciel étoilé + - Hover animations sur les boutons avec effet élastique + - Shimmer effect sur la timeline + - Pulsation des marqueurs actifs sur le globe + +### 🎨 Améliorations design +- **Mobile-first** : Toutes les animations optimisées pour mobile +- **Performance** : Animations GPU-accelerated avec transform et opacity +- **Interactivité** : Feedback visuel immédiat sur toutes les interactions +- **Accessibilité** : Respect de prefers-reduced-motion + +### 🛠️ Technique +- AnimeJS 3.2.1 intégré +- Timeline orchestration pour les animations complexes +- Optimisation des animations Canvas +- Lazy loading des animations lourdes + +## [1.0.0] - 2024-01-07 + +### Version initiale +- Application Svelte avec design panafricain/caribéen +- Calculateur de prédictions pour 7 sites en Guadeloupe +- Globe interactif avec GeoJSON +- Support multilingue (FR, EN, HT) +- Sections : Science, Culture, Dogons, Observatoire +- Déploiement GitHub Pages \ No newline at end of file diff --git a/src/App.svelte b/src/App.svelte index 6f4e936..5d30adf 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,6 +1,7 @@ +
diff --git a/src/components/GlobeGeoJSON.svelte b/src/components/GlobeGeoJSON.svelte index f242f68..168a4e2 100644 --- a/src/components/GlobeGeoJSON.svelte +++ b/src/components/GlobeGeoJSON.svelte @@ -1,18 +1,18 @@ -
@@ -357,6 +440,8 @@ background: radial-gradient(circle at center, #0a192f 0%, #020c1b 100%); cursor: grab; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5); + opacity: 0; + transform: scale(0.8); } .globe-canvas:active { @@ -371,6 +456,11 @@ opacity: 0.7; } + .globe-info { + opacity: 0; + transform: translateX(50px); + } + .info-card h3 { color: var(--color-primary); margin-bottom: 1rem; @@ -396,6 +486,24 @@ background: rgba(255, 215, 0, 0.1); border-radius: 8px; border-left: 3px solid var(--color-primary); + position: relative; + overflow: hidden; + } + + .timeline-entry::before { + content: ''; + position: absolute; + left: -100%; + top: 0; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 215, 0, 0.3), transparent); + animation: shimmer 3s infinite; + } + + @keyframes shimmer { + 0% { left: -100%; } + 100% { left: 100%; } } .timeline-entry .date { @@ -416,4 +524,4 @@ height: 400px; } } - + \ No newline at end of file diff --git a/src/components/Hero.svelte b/src/components/Hero.svelte index 107cc0e..88d07dc 100644 --- a/src/components/Hero.svelte +++ b/src/components/Hero.svelte @@ -1,15 +1,81 @@ -
+
@@ -110,10 +242,20 @@ {$t('hero_date')}{$t('hero_date_value')}

@@ -181,7 +323,6 @@ transparent 10px, transparent 20px ); - animation: slidePattern 30s linear infinite; } .pattern-adinkra { @@ -190,7 +331,6 @@ radial-gradient(circle at 80% 80%, var(--color-secondary) 2px, transparent 2px), radial-gradient(circle at 50% 50%, var(--color-accent) 3px, transparent 3px); background-size: 50px 50px; - animation: rotatePattern 40s linear infinite; } .pattern-bogolan { @@ -202,22 +342,6 @@ ); background-size: 100px 100px; opacity: 0.05; - animation: pulsePattern 20s ease-in-out infinite; - } - - @keyframes slidePattern { - from { transform: translateX(0); } - to { transform: translateX(200px); } - } - - @keyframes rotatePattern { - from { transform: rotate(0deg); } - to { transform: rotate(360deg); } - } - - @keyframes pulsePattern { - 0%, 100% { opacity: 0.05; } - 50% { opacity: 0.15; } } .hero-content { @@ -244,12 +368,10 @@ .title-line { display: block; opacity: 0; - animation: fadeInUp 1s ease-out forwards; } .title-line:nth-child(2) { color: var(--color-primary); - animation-delay: 0.2s; } .hero-subtitle { @@ -257,23 +379,20 @@ color: var(--color-primary); font-family: var(--font-heading); margin-bottom: 0.5rem; - animation: fadeInUp 1s ease-out 0.4s; - animation-fill-mode: both; + opacity: 0; } .hero-description { font-size: clamp(1rem, 2.5vw, 1.2rem); color: var(--color-light); margin-bottom: 1rem; - animation: fadeInUp 1s ease-out 0.5s; - animation-fill-mode: both; + opacity: 0; } .hero-date { font-size: 1.2rem; margin-bottom: 2rem; - animation: fadeInUp 1s ease-out 0.6s; - animation-fill-mode: both; + opacity: 0; } .hero-date strong { @@ -286,8 +405,11 @@ gap: 1rem; flex-wrap: wrap; justify-content: center; - animation: fadeInUp 1s ease-out 0.8s; - animation-fill-mode: both; + } + + .btn { + opacity: 0; + transform-origin: center; } .btn-outline { @@ -301,17 +423,6 @@ color: var(--color-dark); } - @keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } - } - @media (max-width: 768px) { .hero-title { font-size: clamp(2.5rem, 10vw, 4rem); diff --git a/src/components/Loader.svelte b/src/components/Loader.svelte new file mode 100644 index 0000000..ec961c7 --- /dev/null +++ b/src/components/Loader.svelte @@ -0,0 +1,141 @@ + + +{#if loading} +
+
+
+
+ S + i + r + i + u + s +
+
+
+
+
{progress}%
+
+
+{/if} + + \ No newline at end of file diff --git a/src/components/Navigation.svelte b/src/components/Navigation.svelte index 5018f57..0204f1d 100644 --- a/src/components/Navigation.svelte +++ b/src/components/Navigation.svelte @@ -1,15 +1,57 @@ -