arnaucube
arnaucube/jellyfin-toolsPublic Self-hosted repository
jellyfin-tools/jellyfin-year-review/web/src/lib/Poster.svelte
jellyfin-year-review/web/src/lib/Poster.svelteRaw
 1<script>
 2  import { t } from './i18n.js';
 3  let { item } = $props();
 4  let failed = $state(false);
 5</script>
 6<div class="poster-block">
 7  <div class="poster">
 8    {#if item.poster && !failed}
 9      <img src={item.poster} alt={t("Poster for {title}", { title: item.title })} onerror={() => failed = true} loading="lazy" />
10    {:else}
11      <div class="poster-fallback" aria-label={t("Poster unavailable")}><span>▶</span><small>{item.title}</small></div>
12    {/if}
13  </div>
14  {#if item.posterSource}<a class="poster-credit" href={item.posterSource} target="_blank" rel="noreferrer">{t("TVmaze")}</a>{/if}
15</div>
16
17<style>
18  .poster-block { flex: none; }
19  .poster-credit { display: block; width: fit-content; font-size: 9px; line-height: 1.5; margin-top: 4px; }
20</style>