feat(map): connect Global Map cases to their full application case pages
Closes the disconnect where a case study opened from the 3D globe had no
path to its full write-up — you had to leave the globe, open the right
application, and hunt for it.
- CaseStudyModal: new "View full case study" CTA for real installations
(not events / HQ). It deep-links via the locale-aware next-intl Link to
/applications/{application}#case-{nodeId}, closes the modal, and fires a
case_study_viewed GA event.
- ApplicationClient: on mount it reads a "#case-<id>" hash, auto-expands the
matching case in the "Proven Solutions" wall, and smooth-scrolls to it.
Each case row now carries id="case-<id>" + scroll-mt for correct offset.
- viewFullCase string added to the CaseStudyModal namespace in all 5 locales.
The GlobalNode.application field (already equal to the Application slug) is
the join key — no schema change needed.
Verified: production build compiles, TypeScript clean, 5 message files valid.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+2
-1
@@ -159,7 +159,8 @@
|
||||
"eventOverview": "Veranstaltungsübersicht",
|
||||
"projectChronicle": "Projektchronik",
|
||||
"pendingData": "[ Chronikdaten für diesen Knoten ausstehend ]",
|
||||
"mediaGallery": "Mediengalerie"
|
||||
"mediaGallery": "Mediengalerie",
|
||||
"viewFullCase": "Vollständige Fallstudie ansehen"
|
||||
},
|
||||
"Footer": {
|
||||
"madeInItaly": "Hergestellt in Italien",
|
||||
|
||||
+2
-1
@@ -159,7 +159,8 @@
|
||||
"eventOverview": "Event Overview",
|
||||
"projectChronicle": "Project Chronicle",
|
||||
"pendingData": "[ Chronicle data pending for this node ]",
|
||||
"mediaGallery": "Media Gallery"
|
||||
"mediaGallery": "Media Gallery",
|
||||
"viewFullCase": "View full case study"
|
||||
},
|
||||
"Footer": {
|
||||
"madeInItaly": "Made in Italy",
|
||||
|
||||
+2
-1
@@ -159,7 +159,8 @@
|
||||
"eventOverview": "Resumen del Evento",
|
||||
"projectChronicle": "Crónica del Proyecto",
|
||||
"pendingData": "[ Datos de crónica pendientes para este nodo ]",
|
||||
"mediaGallery": "Galería de Medios"
|
||||
"mediaGallery": "Galería de Medios",
|
||||
"viewFullCase": "Ver el caso completo"
|
||||
},
|
||||
"Footer": {
|
||||
"madeInItaly": "Hecho en Italia",
|
||||
|
||||
+2
-1
@@ -159,7 +159,8 @@
|
||||
"eventOverview": "Panoramica Evento",
|
||||
"projectChronicle": "Cronaca del Progetto",
|
||||
"pendingData": "[ Dati cronaca in attesa per questo nodo ]",
|
||||
"mediaGallery": "Galleria Media"
|
||||
"mediaGallery": "Galleria Media",
|
||||
"viewFullCase": "Vedi il caso completo"
|
||||
},
|
||||
"Footer": {
|
||||
"madeInItaly": "Made in Italy",
|
||||
|
||||
+2
-1
@@ -159,7 +159,8 @@
|
||||
"eventOverview": "Detaji de l'evento",
|
||||
"projectChronicle": "Storia del projeto",
|
||||
"pendingData": "[ Dati de la storia drio rivar par sto nodo ]",
|
||||
"mediaGallery": "Gałeria de foto"
|
||||
"mediaGallery": "Gałeria de foto",
|
||||
"viewFullCase": "Varda el caso completo"
|
||||
},
|
||||
"Footer": {
|
||||
"madeInItaly": "Fato in Itaia",
|
||||
|
||||
Reference in New Issue
Block a user