diff --git a/src/components/layout/Header.svelte b/src/components/layout/Header.svelte index af03cf38b..d8c731462 100644 --- a/src/components/layout/Header.svelte +++ b/src/components/layout/Header.svelte @@ -71,6 +71,11 @@ $: mapsDropdownLinks = [ url: "/communities/map", icon: "communities" as MobileNavIconName, }, + { + title: $_("nav.eventMap"), + url: "/events/map", + icon: "map" as MobileNavIconName, + }, ] satisfies DropdownLink[]; $: statsDropdownLinks = [ diff --git a/src/lib/i18n/locales/en.json b/src/lib/i18n/locales/en.json index e43db0d0e..acfeca0f2 100644 --- a/src/lib/i18n/locales/en.json +++ b/src/lib/i18n/locales/en.json @@ -19,6 +19,7 @@ "menu": "Menu", "merchantMap": "Merchant Map", "communityMap": "Community Map", + "eventMap": "Event Map", "dashboard": "Dashboard", "taggerLeaderboard": "Tagger Leaderboard", "communityLeaderboard": "Community Leaderboard", diff --git a/src/lib/types.ts b/src/lib/types.ts index aabf8989d..24107346f 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -465,6 +465,16 @@ export type Place = { "osm:note"?: string; }; +export type EventMapEvent = { + id: number; + lat: number; + lon: number; + name: string; + website: string; + starts_at: string; + ends_at: string | null; +}; + // Worker progress tracking export interface ProgressUpdate { percent: number; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index c2d6f7277..2af3432ce 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -106,7 +106,7 @@ export let data; {#if $isLoading} {:else} - {#if !['/', '/map', '/communities/map', '/communities', '/countries'].includes(data.pathname)} + {#if !['/', '/map', '/communities/map', '/events/map', '/communities', '/countries'].includes(data.pathname)}
diff --git a/src/routes/events/map/+page.svelte b/src/routes/events/map/+page.svelte new file mode 100644 index 000000000..6405141f2 --- /dev/null +++ b/src/routes/events/map/+page.svelte @@ -0,0 +1,189 @@ + + + + BTC Map - Event Map + + + + + +
+

Event Map

+ + + +
+