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  let { item } = $props();
 3  let failed = $state(false);
 4</script>
 5<div class="poster-block">
 6  <div class="poster">
 7    {#if item.poster && !failed}
 8      <img src={item.poster} alt="Poster for {item.title}" onerror={() => failed = true} loading="lazy" />
 9    {:else}
10      <div class="poster-fallback" aria-label="Poster unavailable"><span>▶</span><small>{item.title}</small></div>
11    {/if}
12  </div>
13  {#if item.posterSource}<a class="poster-credit" href={item.posterSource} target="_blank" rel="noreferrer">TVmaze</a>{/if}
14</div>
15
16<style>
17  .poster-block { flex: none; }
18  .poster-credit { display: block; width: fit-content; font-size: 9px; line-height: 1.5; margin-top: 4px; }
19</style>