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:
2026-06-05 12:17:08 -05:00
parent afcaf991b5
commit bf8b2aa631
7 changed files with 53 additions and 9 deletions
+2 -1
View File
@@ -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",