From aec87a347c017f7376517595774b181255bfe52e Mon Sep 17 00:00:00 2001 From: Dorian Date: Tue, 3 Mar 2026 23:52:16 +0000 Subject: [PATCH] feat(renderer): interactive map with Leaflet + OpenStreetMap (M10.3) - MapRenderer.vue: lazy-loads Leaflet, renders OSM tiles - Orange marker pins for all places with coordinates - Place list sidebar on desktop, popup on click - "View on map" button in chat messages with places - Integrated into content panel via openMapView() Co-Authored-By: Claude Opus 4.6 --- packages/app/package.json | 2 + .../app/src/components/chat/ChatMessage.vue | 9 +- .../src/components/content/ContentPanel.vue | 10 +- .../src/components/renderers/MapRenderer.vue | 139 ++++++++++++++++++ .../app/src/composables/useContentPanel.ts | 8 + pnpm-lock.yaml | 23 +++ 6 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 packages/app/src/components/renderers/MapRenderer.vue diff --git a/packages/app/package.json b/packages/app/package.json index d82eecb7..6caa4d42 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -21,6 +21,7 @@ "dependencies": { "@aiui/core": "workspace:*", "@tanstack/vue-virtual": "^3.13.19", + "leaflet": "^1.9.4", "markdown-it": "^14.1.1", "pdfjs-dist": "^5.5.207", "pinia": "^3.0.4", @@ -32,6 +33,7 @@ "@eslint/js": "^10.0.1", "@playwright/test": "^1.49.0", "@tailwindcss/vite": "^4.2.1", + "@types/leaflet": "^1.9.21", "@types/markdown-it": "^14.1.2", "@vitejs/plugin-vue": "^6.0.4", "duck-duck-scrape": "^2.2.7", diff --git a/packages/app/src/components/chat/ChatMessage.vue b/packages/app/src/components/chat/ChatMessage.vue index 19698349..e2e347cc 100644 --- a/packages/app/src/components/chat/ChatMessage.vue +++ b/packages/app/src/components/chat/ChatMessage.vue @@ -242,6 +242,13 @@ > View all {{ inlinePlaces.length }} places → +