feat(frontend): carte interactive desktop avec Konva.js

Story 3.6 : Carte interactive desktop (Konva.js)
- Installation de konva et vue-konva
- Configuration nuxt.config.ts pour transpile Konva
- Création mapZones.ts avec 5 zones et connexions
- Composant InteractiveMap.client.vue :
  - Canvas Konva avec zones cliquables
  - États visuels (visité/non visité/verrouillé)
  - Tooltip au hover avec statut
  - Marqueur de position animé
  - Navigation clavier (Tab + Enter)
  - Légende interactive
- Traductions map.* FR/EN
- Lazy-loading client-only (.client.vue)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 04:18:54 +01:00
parent dbe2ec4cb8
commit 4a7fba5999
9 changed files with 479 additions and 4 deletions

View File

@@ -12,8 +12,10 @@
"@nuxtjs/i18n": "^9.0.0",
"@nuxtjs/sitemap": "^7.2.0",
"@pinia/nuxt": "^0.9.0",
"konva": "^10.2.0",
"nuxt": "^3.16.0",
"pinia-plugin-persistedstate": "^3.2.0"
"pinia-plugin-persistedstate": "^3.2.0",
"vue-konva": "^3.3.0"
},
"devDependencies": {
"autoprefixer": "^10.4.24",
@@ -6643,6 +6645,25 @@
"resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.3.0.tgz",
"integrity": "sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw=="
},
"node_modules/konva": {
"version": "10.2.0",
"resolved": "https://registry.npmjs.org/konva/-/konva-10.2.0.tgz",
"integrity": "sha512-JBoz0Xjbf49UPxCZegZ4WseqOzJ+C4AUDOtJ9eBve5RS5Fcq/u8TdBD5fDl/uPFInpC3a9uycm0sRyZpF4hheg==",
"funding": [
{
"type": "patreon",
"url": "https://www.patreon.com/lavrton"
},
{
"type": "opencollective",
"url": "https://opencollective.com/konva"
},
{
"type": "github",
"url": "https://github.com/sponsors/lavrton"
}
]
},
"node_modules/launch-editor": {
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz",
@@ -11664,6 +11685,33 @@
"vue": "^3.0.0"
}
},
"node_modules/vue-konva": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/vue-konva/-/vue-konva-3.3.0.tgz",
"integrity": "sha512-z7yB4VSyYaBAfRRlNCaxINp3+h0lpy+C9wm+FeQ0rBZylGRBMbNOOQbURjNdsS/uo3togcWz8jrM+0TVTDUTeQ==",
"funding": [
{
"type": "patreon",
"url": "https://www.patreon.com/lavrton"
},
{
"type": "opencollective",
"url": "https://opencollective.com/konva"
},
{
"type": "github",
"url": "https://github.com/sponsors/lavrton"
}
],
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"peerDependencies": {
"konva": ">7",
"vue": "^3"
}
},
"node_modules/vue-router": {
"version": "4.6.4",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz",