---
export interface Props {
  date: string
  title: string
  link: string
  image: string
  user?: string
  ta_servant?: string
  turns?: string
}

const { turns, ta_servant, user, date, image, link, title } = Astro.props

const options_date: Intl.DateTimeFormatOptions = {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
}

const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date)
const icon: string = `background-image: url('/assets/ta_icons/${image}.webp')`
const servant: string = `/assets/ta_icons/ta_servants/${ta_servant}.webp`

let hasuser = ''
if (user !== undefined) {
  hasuser = 'hasuser'
}
---

<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
  <article>
    <div class="icon" style={icon}>
      <span>
        <h2>{title}</h2>
      </span>
    </div>
    <p>
      <span class={hasuser}>
        By {user}<br /> •
      </span>
      {formatted_date}
    </p>
    <div class="expand-on-hover">
      <img src={servant} alt="" />
      <h2>{turns}</h2>
    </div>
  </article>
</a>

<style>
  span {
    display: none;
  }
  .hasuser {
    display: flex;
  }
  a {
    text-decoration: none;
  }
  article {
    background-color: var(--c-darkergray);
    border-color: var(--c-darkgray);
    padding: 10px;
    text-align: center;
    transition: transform var(--speed) var(--ease);
    height: auto;
    width: auto;
    border-radius: 1.25rem;
    padding-bottom: 1.5rem;
  }
  article:hover {
    transform: scale(var(--hover-scale));
  }
  article > .icon {
    border-radius: 1.25rem;
    --size-value: 7rem;
    width: var(--size-value);
    height: var(--size-value);
    margin: 0.5rem;
    background-size: var(--size-value);
    background-position: center center;
  }

  article:hover .icon span {
    display: flex;
    position: absolute;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: var(--c-darkgray);
    height: calc(var(--size-value) + 0.1rem);
    width: calc(var(--size-value) + 0.1rem);
    opacity: 90%;
    border-radius: 1.25rem;
  }

  article:hover span h2 {
    margin: 0;
    display: inline-flex;
    font-weight: bold;
    color: white;
    font-size: 18px;
    line-height: 150%;
    padding: 0.5rem;
  }

  article span h2 {
    display: none;
  }

  article .icon span {
    display: none;
  }

  .icon {
    display: flex;
    justify-content: center;
    align-items: center;
  }

  p {
    display: flex;
    text-align: center;
    justify-content: center;
    align-items: center;
    line-height: 100%;
    text-decoration: none;
    color: white;
    font-size: 1rem;
    font-weight: bold;
    padding-top: 0.5rem;
    margin: 0.5rem 0px;
    flex-wrap: wrap;
    flex-direction: column;
  }

  .expand-on-hover {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-evenly;
    background-color: var(--c-duskgray);
    z-index: 99;
    transform: scaleY(0);
    transform-origin: top;
    position: absolute;
    top: 90%;
    left: 0px;
    right: 0px;
    color: white;
    border-radius: 0px 0px 1.25rem 1.25rem;
  }

  .expand-on-hover img {
    width: 3rem;
    height: 3rem;
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
    border-radius: 0.5rem;
  }

  .expand-on-hover h2 {
    margin: 0.5rem;
  }

  article:hover .expand-on-hover {
    transform: scaleY(1);
    transition: transform 200ms ease-in-out;
    background-color: var(--c-duskgray);
  }
</style>