diff --git a/src/lib/components/Image.svelte b/src/lib/components/Image.svelte index 22707905b..29512e2bb 100644 --- a/src/lib/components/Image.svelte +++ b/src/lib/components/Image.svelte @@ -25,7 +25,8 @@ eager: true, import: 'default', query: { - enhanced: true + enhanced: true, + w: '520;640;800;1280;1920;2560;3840' } } ) diff --git a/src/lib/components/LatestNews.svelte b/src/lib/components/LatestNews.svelte index ff5a67a90..8e187298f 100644 --- a/src/lib/components/LatestNews.svelte +++ b/src/lib/components/LatestNews.svelte @@ -5,6 +5,10 @@ import { onMount } from 'svelte' const pageSize = 6 + // Matches the 1/2/3-column grid below so browsers choose thumbnail-sized + // responsive image variants rather than downloading page-width images. + const newsCardImageSizes = + '(max-width: 500px) calc(100vw - 1rem), (max-width: 850px) calc((100vw - 3rem) / 2), 13rem' let newsItems: NewsItem[] = $state(Array.from({ length: pageSize })) let loading = $state(true) let currentPage = $state(1) @@ -40,7 +44,7 @@ {#if newsItems.length > 0}
{#each newsItems as item} - + {/each}
diff --git a/src/lib/components/NewsCard.svelte b/src/lib/components/NewsCard.svelte index 417026e89..32891ac79 100644 --- a/src/lib/components/NewsCard.svelte +++ b/src/lib/components/NewsCard.svelte @@ -9,6 +9,10 @@ interface Props { item?: NewsItem loading?: boolean + /** + * Passed by the parent layout so responsive images download a variant close to the + * card's rendered width instead of the image component's broad default. + */ imageSizes?: string id?: string } diff --git a/src/lib/components/PressCoveragePanel.svelte b/src/lib/components/PressCoveragePanel.svelte index 369b795f1..322ad420d 100644 --- a/src/lib/components/PressCoveragePanel.svelte +++ b/src/lib/components/PressCoveragePanel.svelte @@ -10,6 +10,11 @@ loading?: boolean } + // Matches the 1/2/3-column grid below so browsers choose thumbnail-sized + // responsive image variants rather than downloading page-width images. + const newsCardImageSizes = + '(max-width: 500px) calc(100vw - 1rem), (max-width: 850px) calc((100vw - 3rem) / 2), 13rem' + let { coverage = [], typeOrder = [], outletOrder = [], loading = false }: Props = $props() function toNewsItem(item: PressCoverage): NewsItem { @@ -75,7 +80,7 @@
{#each filteredCoverage as item (item.id)} - + {/each}
{/if}