diff --git a/frontend/static/common/thumbnails/screenshots/allotax-scrolly.jpg b/frontend/src/lib/assets/thumbnails/allotax-scrolly.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/allotax-scrolly.jpg
rename to frontend/src/lib/assets/thumbnails/allotax-scrolly.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/allotaxonometry.jpg b/frontend/src/lib/assets/thumbnails/allotaxonometry.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/allotaxonometry.jpg
rename to frontend/src/lib/assets/thumbnails/allotaxonometry.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/cnww.png b/frontend/src/lib/assets/thumbnails/cnww.png
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/cnww.png
rename to frontend/src/lib/assets/thumbnails/cnww.png
diff --git a/frontend/static/common/thumbnails/screenshots/dark-data-survey.jpg b/frontend/src/lib/assets/thumbnails/dark-data-survey.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/dark-data-survey.jpg
rename to frontend/src/lib/assets/thumbnails/dark-data-survey.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/explore-the-cat-project.jpg b/frontend/src/lib/assets/thumbnails/explore-the-cat-project.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/explore-the-cat-project.jpg
rename to frontend/src/lib/assets/thumbnails/explore-the-cat-project.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/explore-timeline.jpg b/frontend/src/lib/assets/thumbnails/explore-timeline.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/explore-timeline.jpg
rename to frontend/src/lib/assets/thumbnails/explore-timeline.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/friends-funnier-than-you-are.jpg b/frontend/src/lib/assets/thumbnails/friends-funnier-than-you-are.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/friends-funnier-than-you-are.jpg
rename to frontend/src/lib/assets/thumbnails/friends-funnier-than-you-are.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/hello-sciscidb.jpg b/frontend/src/lib/assets/thumbnails/hello-sciscidb.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/hello-sciscidb.jpg
rename to frontend/src/lib/assets/thumbnails/hello-sciscidb.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/interdisciplinarity.jpg b/frontend/src/lib/assets/thumbnails/interdisciplinarity.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/interdisciplinarity.jpg
rename to frontend/src/lib/assets/thumbnails/interdisciplinarity.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/networks-fast-and-slow.jpg b/frontend/src/lib/assets/thumbnails/networks-fast-and-slow.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/networks-fast-and-slow.jpg
rename to frontend/src/lib/assets/thumbnails/networks-fast-and-slow.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/open-academic-analytics.jpg b/frontend/src/lib/assets/thumbnails/open-academic-analytics.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/open-academic-analytics.jpg
rename to frontend/src/lib/assets/thumbnails/open-academic-analytics.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/tokenization.jpg b/frontend/src/lib/assets/thumbnails/tokenization.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/tokenization.jpg
rename to frontend/src/lib/assets/thumbnails/tokenization.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/uvm-research-groups.jpg b/frontend/src/lib/assets/thumbnails/uvm-research-groups.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/uvm-research-groups.jpg
rename to frontend/src/lib/assets/thumbnails/uvm-research-groups.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/vermont-livability-map.jpg b/frontend/src/lib/assets/thumbnails/vermont-livability-map.jpg
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/vermont-livability-map.jpg
rename to frontend/src/lib/assets/thumbnails/vermont-livability-map.jpg
diff --git a/frontend/static/common/thumbnails/screenshots/wikiwrangler.png b/frontend/src/lib/assets/thumbnails/wikiwrangler.png
similarity index 100%
rename from frontend/static/common/thumbnails/screenshots/wikiwrangler.png
rename to frontend/src/lib/assets/thumbnails/wikiwrangler.png
diff --git a/frontend/src/lib/components/Story.svelte b/frontend/src/lib/components/Story.svelte
index 49b06f79..92360a13 100644
--- a/frontend/src/lib/components/Story.svelte
+++ b/frontend/src/lib/components/Story.svelte
@@ -7,6 +7,18 @@
const isExternal = !!story.externalUrl;
const finalHref = isExternal ? story.externalUrl : `${base}/${story.slug}`;
+
+ // Glob-import all thumbnails through enhanced-img for automatic WebP/AVIF conversion
+ const thumbnails = import.meta.glob<{ default: string }>(
+ '/src/lib/assets/thumbnails/*.{jpg,png,webp}',
+ { eager: true, query: { enhanced: true } }
+ );
+
+ // Find this story's thumbnail (try jpg then png)
+ const thumbnailKey = Object.keys(thumbnails).find(
+ k => k.endsWith(`/${story.slug}.jpg`) || k.endsWith(`/${story.slug}.png`)
+ );
+ const thumbnail = thumbnailKey ? thumbnails[thumbnailKey].default : null;
@@ -22,11 +34,19 @@
{/if}
-
+ {#if thumbnail}
+
+ {:else}
+
+ {/if}