diff --git a/.claude/launch.json b/.claude/launch.json index ae90fd0..d853ab7 100644 --- a/.claude/launch.json +++ b/.claude/launch.json @@ -6,6 +6,12 @@ "runtimeExecutable": "npm", "runtimeArgs": ["run", "dev"], "port": 8080 + }, + { + "name": "gwada-sirius-preview", + "runtimeExecutable": "npx", + "runtimeArgs": ["eleventy", "--serve", "--port=8099"], + "port": 8099 } ] } diff --git a/NOTES_PROJET.md b/NOTES_PROJET.md index 783f5e9..974e898 100644 --- a/NOTES_PROJET.md +++ b/NOTES_PROJET.md @@ -11,8 +11,8 @@ Refonte complète (v2) : passage d'une SPA Vite+Svelte 4 à un site **11ty** sta - **i18n** : catalogues `messages/{fr,en,ht}.json`, compilés par `@inlang/paraglide-js` en `src/paraglide/` avant chaque build (`npm run messages`). `ht` retombe automatiquement sur `fr` pour les clés non traduites (contenu long, cf. portée d'origine). - **Îlots Svelte 5** (3 seulement, le reste est HTML/CSS pur) : - `PredictionsCalculator` — hydratation immédiate, améliore le tableau statique des 7 sites - - `ObservationMap` — carte canvas schématique, hydratation différée (IntersectionObserver) - - `SiriusGlobe` — vague planétaire du lever héliaque (13 villes), hydratation différée + - `ObservationMap` — vraie carte Leaflet + fond OSM, marqueurs/popups pour les 7 sites, hydratation différée (IntersectionObserver). Leaflet est utilisé directement (pas de wrapper Svelte type Sveaflet/svelte-openlayers — évalués mais écartés : le premier cible une prérelease de Svelte 5 et vient d'être publié, le second embarque OpenLayers, bien plus lourd que nécessaire pour 7 marqueurs) + - `SiriusGlobe` — vague planétaire du lever héliaque (13 villes), carte canvas schématique (continents simplifiés), hydratation différée - **Onglets** (Science, Dogon) : 100 % CSS (`input[type=radio]` + `label`), zéro JS. - **Build** : `@11ty/eleventy-plugin-vite` fait passer la sortie 11ty par Vite (bundling CSS/JS, compilation Svelte). Un plugin maison recopie les assets passthrough après le build Vite (voir commentaire dans `eleventy.config.js` — `emptyOutDir` de Vite les efface sinon). @@ -26,9 +26,8 @@ Refonte complète (v2) : passage d'une SPA Vite+Svelte 4 à un site **11ty** sta ## 🔄 Améliorations possibles - Traduire le contenu long en Kreyòl (actuellement chrome/labels uniquement, contenu de fond en français) -- Vraies données GeoJSON pour `ObservationMap` (actuellement une carte schématique par position lat/lon normalisée, pas un tracé de côte réel) -- Service worker pour un usage hors-ligne (mentionné dans la doctrine, pas encore implémenté) - Mettre à jour chaque année les informations d'événements associatifs (`associations.njk`, données à vérifier auprès des organisateurs) +- Le chunk Leaflet (~44 Ko gzip) n'est chargé qu'au scroll sur la carte (`observer/`), mais reste le plus lourd du site ; envisager des tuiles vectorielles/un fournisseur plus léger si le budget JS devient un problème ## 📦 Build pour production diff --git a/package-lock.json b/package-lock.json index 1eff334..2453043 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,9 @@ "": { "name": "gwada-sirius", "version": "2.0.0", + "dependencies": { + "leaflet": "^1.9.4" + }, "devDependencies": { "@11ty/eleventy": "^3.1.6", "@11ty/eleventy-plugin-vite": "^8.0.0", @@ -2068,6 +2071,12 @@ "node": ">=20.0.0" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "license": "BSD-2-Clause" + }, "node_modules/lightningcss": { "version": "1.32.0", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", diff --git a/package.json b/package.json index 191794c..3bf36a1 100644 --- a/package.json +++ b/package.json @@ -19,5 +19,8 @@ "gh-pages": "^6.1.1", "svelte": "^5.56.4", "vite": "^8.1.3" + }, + "dependencies": { + "leaflet": "^1.9.4" } } diff --git a/src/islands/map/ObservationMap.svelte b/src/islands/map/ObservationMap.svelte index 35255f5..be04fcb 100644 --- a/src/islands/map/ObservationMap.svelte +++ b/src/islands/map/ObservationMap.svelte @@ -1,117 +1,81 @@
- pickSite(e.clientX, e.clientY)} - > - - {#if active} -
-

{active.name}

-

{active[`description_${locale}`] ?? active.description_fr}

-

{active.lat}°N, {active.lon}°O — {active.alt} m

-
- {/if} +