@@ -130,15 +117,6 @@
.hero figcaption a {
text-decoration: underline;
}
- .logo {
- width: 4.5rem;
- height: 4.5rem;
- object-fit: contain;
- padding: 0.5rem;
- border-radius: 1rem;
- background: #fff;
- border: 1px solid var(--site-border);
- }
.grid {
display: grid;
gap: 0.75rem;
diff --git a/src/routes/trackers/cars/random/+page.server.ts b/src/routes/trackers/cars/random/+page.server.ts
new file mode 100644
index 0000000..448b76b
--- /dev/null
+++ b/src/routes/trackers/cars/random/+page.server.ts
@@ -0,0 +1,11 @@
+import { redirect } from '@sveltejs/kit';
+import { randomCar } from '#lib/server/cars.js';
+import type { PageServerLoad } from './$types';
+
+// A page load (not a +server.ts endpoint): the client router only knows page routes, so an
+// endpoint here made client-side navigation fall through to the [brand] page and 404.
+export const load: PageServerLoad = async ({ setHeaders }) => {
+ const car = await randomCar();
+ setHeaders({ 'cache-control': 'no-store' });
+ redirect(303, car ? `/trackers/cars/${car.brandSlug}/${car.slug}` : '/trackers/cars');
+};
diff --git a/src/routes/trackers/cars/random/+page.svelte b/src/routes/trackers/cars/random/+page.svelte
new file mode 100644
index 0000000..aa432c5
--- /dev/null
+++ b/src/routes/trackers/cars/random/+page.svelte
@@ -0,0 +1 @@
+
diff --git a/src/routes/trackers/cars/random/+server.ts b/src/routes/trackers/cars/random/+server.ts
deleted file mode 100644
index 57f8c19..0000000
--- a/src/routes/trackers/cars/random/+server.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { redirect } from '@sveltejs/kit';
-import { randomCar } from '#lib/server/cars.js';
-import type { RequestHandler } from './$types';
-
-export const GET: RequestHandler = async ({ setHeaders }) => {
- const car = await randomCar();
- setHeaders({ 'cache-control': 'no-store' });
- redirect(303, car ? `/trackers/cars/${car.brandSlug}/${car.slug}` : '/trackers/cars');
-};
diff --git a/src/routes/trackers/planes/[maker]/+page.svelte b/src/routes/trackers/planes/[maker]/+page.svelte
index 3d98137..83f903c 100644
--- a/src/routes/trackers/planes/[maker]/+page.svelte
+++ b/src/routes/trackers/planes/[maker]/+page.svelte
@@ -45,20 +45,7 @@
{/if}
@@ -134,15 +121,6 @@
.hero figcaption a {
text-decoration: underline;
}
- .logo {
- width: 4.5rem;
- height: 4.5rem;
- object-fit: contain;
- padding: 0.5rem;
- border-radius: 1rem;
- background: #fff;
- border: 1px solid var(--site-border);
- }
.grid {
display: grid;
gap: 0.75rem;
diff --git a/src/routes/trackers/planes/random/+page.server.ts b/src/routes/trackers/planes/random/+page.server.ts
new file mode 100644
index 0000000..037bf6c
--- /dev/null
+++ b/src/routes/trackers/planes/random/+page.server.ts
@@ -0,0 +1,11 @@
+import { redirect } from '@sveltejs/kit';
+import { randomPlane } from '#lib/server/planes.js';
+import type { PageServerLoad } from './$types';
+
+// A page load (not a +server.ts endpoint): the client router only knows page routes, so an
+// endpoint here made client-side navigation fall through to the [maker] page and 404.
+export const load: PageServerLoad = async ({ setHeaders }) => {
+ const plane = await randomPlane();
+ setHeaders({ 'cache-control': 'no-store' });
+ redirect(303, plane ? `/trackers/planes/${plane.makerSlug}/${plane.slug}` : '/trackers/planes');
+};
diff --git a/src/routes/trackers/planes/random/+page.svelte b/src/routes/trackers/planes/random/+page.svelte
new file mode 100644
index 0000000..aa432c5
--- /dev/null
+++ b/src/routes/trackers/planes/random/+page.svelte
@@ -0,0 +1 @@
+
diff --git a/src/routes/trackers/planes/random/+server.ts b/src/routes/trackers/planes/random/+server.ts
deleted file mode 100644
index 87ace94..0000000
--- a/src/routes/trackers/planes/random/+server.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { redirect } from '@sveltejs/kit';
-import { randomPlane } from '#lib/server/planes.js';
-import type { RequestHandler } from './$types';
-
-export const GET: RequestHandler = async ({ setHeaders }) => {
- const plane = await randomPlane();
- setHeaders({ 'cache-control': 'no-store' });
- redirect(303, plane ? `/trackers/planes/${plane.makerSlug}/${plane.slug}` : '/trackers/planes');
-};
diff --git a/src/routes/trackers/trains/[maker]/+page.svelte b/src/routes/trackers/trains/[maker]/+page.svelte
index 206045b..ae7bf0b 100644
--- a/src/routes/trackers/trains/[maker]/+page.svelte
+++ b/src/routes/trackers/trains/[maker]/+page.svelte
@@ -45,20 +45,7 @@
{/if}
@@ -134,15 +121,6 @@
.hero figcaption a {
text-decoration: underline;
}
- .logo {
- width: 4.5rem;
- height: 4.5rem;
- object-fit: contain;
- padding: 0.5rem;
- border-radius: 1rem;
- background: #fff;
- border: 1px solid var(--site-border);
- }
.grid {
display: grid;
gap: 0.75rem;
diff --git a/src/routes/trackers/trains/operators/[operator]/+page.svelte b/src/routes/trackers/trains/operators/[operator]/+page.svelte
index 7c708af..e7f9508 100644
--- a/src/routes/trackers/trains/operators/[operator]/+page.svelte
+++ b/src/routes/trackers/trains/operators/[operator]/+page.svelte
@@ -44,20 +44,7 @@
{/if}
@@ -131,15 +118,6 @@
.hero figcaption a {
text-decoration: underline;
}
- .logo {
- width: 4.5rem;
- height: 4.5rem;
- object-fit: contain;
- padding: 0.5rem;
- border-radius: 1rem;
- background: #fff;
- border: 1px solid var(--site-border);
- }
.grid {
display: grid;
gap: 0.75rem;
diff --git a/src/routes/trackers/trains/random/+page.server.ts b/src/routes/trackers/trains/random/+page.server.ts
new file mode 100644
index 0000000..ca8fa16
--- /dev/null
+++ b/src/routes/trackers/trains/random/+page.server.ts
@@ -0,0 +1,11 @@
+import { redirect } from '@sveltejs/kit';
+import { randomTrain } from '#lib/server/trains.js';
+import type { PageServerLoad } from './$types';
+
+// A page load (not a +server.ts endpoint): the client router only knows page routes, so an
+// endpoint here made client-side navigation fall through to the [maker] page and 404.
+export const load: PageServerLoad = async ({ setHeaders }) => {
+ const train = await randomTrain();
+ setHeaders({ 'cache-control': 'no-store' });
+ redirect(303, train ? `/trackers/trains/${train.makerSlug}/${train.slug}` : '/trackers/trains');
+};
diff --git a/src/routes/trackers/trains/random/+page.svelte b/src/routes/trackers/trains/random/+page.svelte
new file mode 100644
index 0000000..aa432c5
--- /dev/null
+++ b/src/routes/trackers/trains/random/+page.svelte
@@ -0,0 +1 @@
+
diff --git a/src/routes/trackers/trains/random/+server.ts b/src/routes/trackers/trains/random/+server.ts
deleted file mode 100644
index d498dc0..0000000
--- a/src/routes/trackers/trains/random/+server.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { redirect } from '@sveltejs/kit';
-import { randomTrain } from '#lib/server/trains.js';
-import type { RequestHandler } from './$types';
-
-export const GET: RequestHandler = async ({ setHeaders }) => {
- const train = await randomTrain();
- setHeaders({ 'cache-control': 'no-store' });
- redirect(303, train ? `/trackers/trains/${train.makerSlug}/${train.slug}` : '/trackers/trains');
-};
diff --git a/src/routes/trackers/wildlife/random/+server.ts b/src/routes/trackers/wildlife/random/+page.server.ts
similarity index 55%
rename from src/routes/trackers/wildlife/random/+server.ts
rename to src/routes/trackers/wildlife/random/+page.server.ts
index f840552..2837cb7 100644
--- a/src/routes/trackers/wildlife/random/+server.ts
+++ b/src/routes/trackers/wildlife/random/+page.server.ts
@@ -1,8 +1,10 @@
import { redirect } from '@sveltejs/kit';
import { randomSpecies } from '#lib/server/wildlife.js';
-import type { RequestHandler } from './$types';
+import type { PageServerLoad } from './$types';
-export const GET: RequestHandler = async ({ setHeaders, url }) => {
+// A page load (not a +server.ts endpoint): the client router only knows page routes, so an
+// endpoint here made client-side navigation fall through to the [group] page and 404.
+export const load: PageServerLoad = async ({ setHeaders, url }) => {
const group = (url.searchParams.get('group') ?? '').replace(/[^a-z0-9-]/g, '') || undefined;
const s = await randomSpecies(group);
setHeaders({ 'cache-control': 'no-store' });
diff --git a/src/routes/trackers/wildlife/random/+page.svelte b/src/routes/trackers/wildlife/random/+page.svelte
new file mode 100644
index 0000000..aa432c5
--- /dev/null
+++ b/src/routes/trackers/wildlife/random/+page.svelte
@@ -0,0 +1 @@
+
- {:else}
-
{b.name}
{#if b.fullName && b.fullName !== b.name}
- {:else}
-
{b.name}
{#if b.fullName && b.fullName !== b.name}
- {:else}
-
{b.name}
{#if b.fullName && b.fullName !== b.name}