From 0c4fcf756082b8aa4135d4e2b4d86442b9b54461 Mon Sep 17 00:00:00 2001 From: Florian <45694132+flo-bit@users.noreply.github.com> Date: Fri, 9 Jan 2026 01:12:43 +0100 Subject: [PATCH] add map location card --- package.json | 1 + pnpm-lock.yaml | 8 ++ src/lib/EditableWebsite.svelte | 16 +++- .../SidebarItemBlueskyPostCard.svelte | 2 +- .../EmbedCard/SidebarItemEmbedCard.svelte | 12 ++- .../SidebarItemEmbedLivestreamCard.svelte | 2 +- .../SidebarItemLivestreamCard.svelte | 2 +- .../cards/MapCard/CreateMapCardModal.svelte | 56 +++++++++++++ src/lib/cards/MapCard/Map.svelte | 80 +++++++++++++++++++ src/lib/cards/MapCard/MapCard.svelte | 10 +++ .../cards/MapCard/SidebarItemMapCard.svelte | 22 +++++ src/lib/cards/MapCard/index.ts | 19 +++++ .../SidebarItemYoutubeCard.svelte | 4 +- src/lib/cards/index.ts | 4 +- src/lib/cards/types.ts | 1 + src/routes/api/geocoding/+server.ts | 20 +++++ 16 files changed, 242 insertions(+), 17 deletions(-) create mode 100644 src/lib/cards/MapCard/CreateMapCardModal.svelte create mode 100644 src/lib/cards/MapCard/Map.svelte create mode 100644 src/lib/cards/MapCard/MapCard.svelte create mode 100644 src/lib/cards/MapCard/SidebarItemMapCard.svelte create mode 100644 src/lib/cards/MapCard/index.ts create mode 100644 src/routes/api/geocoding/+server.ts diff --git a/package.json b/package.json index 5e0eab0..513880b 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "bits-ui": "^2.14.4", "clsx": "^2.1.1", "gsap": "^3.14.2", + "leaflet": "^1.9.4", "link-preview-js": "^4.0.0", "marked": "^15.0.11", "plyr": "^3.8.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94bc7c3..1543706 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,6 +68,9 @@ importers: gsap: specifier: ^3.14.2 version: 3.14.2 + leaflet: + specifier: ^1.9.4 + version: 1.9.4 link-preview-js: specifier: ^4.0.0 version: 4.0.0 @@ -1888,6 +1891,9 @@ packages: known-css-properties@0.35.0: resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==, tarball: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz} + leaflet@1.9.4: + resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==, tarball: https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz} engines: {node: '>= 0.8.0'} @@ -4437,6 +4443,8 @@ snapshots: known-css-properties@0.35.0: {} + leaflet@1.9.4: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 diff --git a/src/lib/EditableWebsite.svelte b/src/lib/EditableWebsite.svelte index a8fdade..166f3ea 100644 --- a/src/lib/EditableWebsite.svelte +++ b/src/lib/EditableWebsite.svelte @@ -175,7 +175,9 @@ }); } - const sidebarItems = AllCardDefinitions.filter((cardDef) => cardDef.sidebarComponent); + const sidebarItems = AllCardDefinitions.filter( + (cardDef) => cardDef.sidebarComponent || cardDef.sidebarButtonText + ); {#if !dev} @@ -328,10 +330,16 @@ - -
+ +
{#each sidebarItems as cardDef} - newCard(cardDef.type)} /> + {#if cardDef.sidebarComponent} + newCard(cardDef.type)} /> + {:else if cardDef.sidebarButtonText} + + {/if} {/each}
diff --git a/src/lib/cards/BlueskyPostCard/SidebarItemBlueskyPostCard.svelte b/src/lib/cards/BlueskyPostCard/SidebarItemBlueskyPostCard.svelte index a68e449..cbd61cc 100644 --- a/src/lib/cards/BlueskyPostCard/SidebarItemBlueskyPostCard.svelte +++ b/src/lib/cards/BlueskyPostCard/SidebarItemBlueskyPostCard.svelte @@ -4,7 +4,7 @@ let { onclick }: { onclick: () => void } = $props(); - + +
+ diff --git a/src/lib/cards/MapCard/Map.svelte b/src/lib/cards/MapCard/Map.svelte new file mode 100644 index 0000000..f1a2b99 --- /dev/null +++ b/src/lib/cards/MapCard/Map.svelte @@ -0,0 +1,80 @@ + + +
+ + diff --git a/src/lib/cards/MapCard/MapCard.svelte b/src/lib/cards/MapCard/MapCard.svelte new file mode 100644 index 0000000..4cbcdc5 --- /dev/null +++ b/src/lib/cards/MapCard/MapCard.svelte @@ -0,0 +1,10 @@ + + +{#key item.color} + +{/key} diff --git a/src/lib/cards/MapCard/SidebarItemMapCard.svelte b/src/lib/cards/MapCard/SidebarItemMapCard.svelte new file mode 100644 index 0000000..abef339 --- /dev/null +++ b/src/lib/cards/MapCard/SidebarItemMapCard.svelte @@ -0,0 +1,22 @@ + + + diff --git a/src/lib/cards/MapCard/index.ts b/src/lib/cards/MapCard/index.ts new file mode 100644 index 0000000..43936ab --- /dev/null +++ b/src/lib/cards/MapCard/index.ts @@ -0,0 +1,19 @@ +import type { CardDefinition } from '../types'; +import CreateMapCardModal from './CreateMapCardModal.svelte'; +import MapCard from './MapCard.svelte'; +import SidebarItemMapCard from './SidebarItemMapCard.svelte'; + +export const MapCardDefinition = { + type: 'mapLocation', + contentComponent: MapCard, + sidebarButtonText: 'map', + createNew: (item) => { + item.w = 2; + item.h = 2; + item.mobileH = 4; + item.mobileW = 4; + }, + + sidebarComponent: SidebarItemMapCard, + creationModalComponent: CreateMapCardModal +} as CardDefinition & { type: 'mapLocation' }; diff --git a/src/lib/cards/YoutubeVideo/SidebarItemYoutubeCard.svelte b/src/lib/cards/YoutubeVideo/SidebarItemYoutubeCard.svelte index e7f37fc..d05690a 100644 --- a/src/lib/cards/YoutubeVideo/SidebarItemYoutubeCard.svelte +++ b/src/lib/cards/YoutubeVideo/SidebarItemYoutubeCard.svelte @@ -4,8 +4,8 @@ let { onclick }: { onclick: () => void } = $props(); -