diff --git a/web/src/css/theme.css b/web/src/css/theme.css index 1b109183..01515bf6 100644 --- a/web/src/css/theme.css +++ b/web/src/css/theme.css @@ -18,7 +18,7 @@ --footer-background: 36, 39, 52; - --separator: 148, 163, 184; + --separator: 209, 213, 219; background: rgba(var(--background)); color: rgba(var(--content)); @@ -44,7 +44,7 @@ --footer-background: 26, 29, 51; - --separator: 108, 115, 150; + --separator: 43, 46, 61; background: rgba(var(--background)); color: rgba(var(--content)); diff --git a/web/src/hooks.server.ts b/web/src/hooks.server.ts index c2d6d694..cd4d7e2e 100644 --- a/web/src/hooks.server.ts +++ b/web/src/hooks.server.ts @@ -1,9 +1,11 @@ -import { createInstance, pb } from '$lib/pocketbase' +import { regenerateInstance } from '$lib/meilisearch' +import { pb } from '$lib/pocketbase' import type { Handle } from '@sveltejs/kit' export const handle: Handle = async ({ event, resolve }) => { // load the store data from the request cookie string pb.authStore.loadFromCookie(event.request.headers.get('cookie') || '') + regenerateInstance(); try { // get an up-to-date auth store state by verifying and refreshing the loaded auth model (if any) if (pb.authStore.isValid) { @@ -13,7 +15,7 @@ export const handle: Handle = async ({ event, resolve }) => { // clear the auth store on failed refresh pb.authStore.clear() } - + event.locals.pb = pb event.locals.user = pb.authStore.model diff --git a/web/src/lib/components/list/list_card.svelte b/web/src/lib/components/list/list_card.svelte new file mode 100644 index 00000000..d9222a2f --- /dev/null +++ b/web/src/lib/components/list/list_card.svelte @@ -0,0 +1,29 @@ + + +
+ avatar +
+
+
{list.name}
+ +
+

{list.description}

+
+
diff --git a/web/src/lib/components/list/list_modal.svelte b/web/src/lib/components/list/list_modal.svelte new file mode 100644 index 00000000..7a993bcf --- /dev/null +++ b/web/src/lib/components/list/list_modal.svelte @@ -0,0 +1,114 @@ + + + + + +
+ + +
+
diff --git a/web/src/lib/components/nav_bar.svelte b/web/src/lib/components/nav_bar.svelte index 44a960d7..4a3b11a0 100644 --- a/web/src/lib/components/nav_bar.svelte +++ b/web/src/lib/components/nav_bar.svelte @@ -52,6 +52,9 @@ case "/map": childPosition = 3; break; + case "/lists": + childPosition = 4; + break; default: break; } diff --git a/web/src/lib/components/trail/trail_card.svelte b/web/src/lib/components/trail/trail_card.svelte index 636025be..331836a0 100644 --- a/web/src/lib/components/trail/trail_card.svelte +++ b/web/src/lib/components/trail/trail_card.svelte @@ -1,5 +1,6 @@ + +
+
+
+

Sort

+
+ + +
+
+
+

Display as

+ + +
+
+ +
+ {#if trails.length == 0} +
+ +
+ {/if} + {#each trails as trail} + + {#if selectedDisplayOption === "cards"} + + {:else} + + {/if} + + {/each} +
+
+ + diff --git a/web/src/lib/components/trail/trail_list_item.svelte b/web/src/lib/components/trail/trail_list_item.svelte index 5430996a..459608e4 100644 --- a/web/src/lib/components/trail/trail_list_item.svelte +++ b/web/src/lib/components/trail/trail_list_item.svelte @@ -1,5 +1,6 @@ + +
+ + await lists_index()} + > + +
diff --git a/web/src/routes/lists/+page.ts b/web/src/routes/lists/+page.ts new file mode 100644 index 00000000..71b752b7 --- /dev/null +++ b/web/src/routes/lists/+page.ts @@ -0,0 +1,22 @@ +import type { TrailFilter } from "$lib/models/trail"; +import { lists_index } from "$lib/stores/list_store"; +import type { Load } from "@sveltejs/kit"; + +export const load: Load = async ({ params }) => { + const filter: TrailFilter = { + q: "", + category: [], + near: { + radius: 2000, + }, + distanceMin: 0, + distanceMax: 20000, + elevationGainMin: 0, + elevationGainMax: 4000, + sort: "created", + sortOrder: "+", + }; + await lists_index(); + + return {filter}; +}; \ No newline at end of file diff --git a/web/src/routes/trails/+page.svelte b/web/src/routes/trails/+page.svelte index 48548408..2c11ed3b 100644 --- a/web/src/routes/trails/+page.svelte +++ b/web/src/routes/trails/+page.svelte @@ -1,63 +1,23 @@