All files / components/NewsEntry NewsEntry.svelte

0% Statements 0/69
0% Branches 0/1
0% Functions 0/1
0% Lines 0/69

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70                                                                                                                                           
<script lang="ts">
  import Link from "$lib/components/Link";
  import Tag from "$lib/components/Tag";
  import {
    headingTagByLevel,
    type HeadingLevel,
  } from "$lib/components/ContentfulRichText/headings";
  import { getDateStringFromUTCDate } from "$lib/util/dates";

  type NewsEntry = {
    __typename?: "News";
    type?: string | null;
    title?: string | null;
    subhead?: string | null;
    publicationDate?: Date | string | null;
    slug?: string | null;
    byline?: string | null;
    sys: {
      __typename?: "Sys";
      id: string;
    };
  };
  type NewsSnippetVariation = "default" | "homepage-featured" | "homepage-listed";

  export let entry: NonNullable<NewsEntry>;
  export let headingLevel: HeadingLevel = 2;
  export let variation: NewsSnippetVariation = "default";

  $: ({ slug, title, subhead, byline, type, publicationDate } = entry);

  $: dateString = getDateStringFromUTCDate(publicationDate as string);

  $: isArticle = type === "News article";
</script>

{#if title && slug}
  <div class={`ldaf-news-entry ldaf-news-entry--${variation}`}>
    <Link class="display-block" href={`/about/news/article/${slug}`}>
      <svelte:element this={headingTagByLevel[headingLevel]} class="news-title">
        {title}
      </svelte:element>
    </Link>
    {#if variation === "homepage-listed"}
      <div class="margin-bottom-1"><Tag>{type}</Tag></div>
    {/if}
    {#if subhead && variation !== "homepage-listed"}
      <p class="margin-y-1">{subhead}</p>
    {/if}
    <div class="font-body-2xs">
      {#if isArticle && byline}
        By {byline}<br />
      {/if}
      {dateString}
    </div>
    {#if variation !== "homepage-listed"}
      <div class="margin-y-1">
        <Tag>{type}</Tag>
      </div>
    {/if}
  </div>
  <hr class="margin-bottom-2" />
{/if}

<style>
  .news-title {
    font-size: 18px;
    margin: 0;
  }
</style>