---
import { Image } from 'astro:assets';
import type { GlobImage } from '../../types/generic'
import { plsLoadImage } from '../../utils/tools'

export interface Props {
  name: string
  level: string
  skills: string
  np: string
  servantImageFile: string
  bondceImageFile: string
  ml: string
  bond10: boolean
  index: number
}

const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name, index } = Astro.props
const servantImagePath = `/src/assets/servant/${servantImageFile}`
const bondceImagePath = `/src/assets/ce/bond-ce/${bondceImageFile}`
const images_servants = import.meta.glob<GlobImage>('/src/assets/servant/*.{png,webp}')
const images_bond_ces = import.meta.glob<GlobImage>('/src/assets/ce/bond-ce/*.{png,webp}')
const loadedServantImage = plsLoadImage(images_servants, servantImagePath)
const loadedBondCEImage = plsLoadImage(images_bond_ces, bondceImagePath)

let bondce_css: string = 'bond-ce'

if (bond10 === false) {
  bondce_css += ' unobtained'
}

let loading: "eager" | "lazy" = index <= 5 ? "eager" : "lazy";
---

<article>
  <Image src={loadedServantImage} width={128} height={128} alt={name} quality={100} loading={loading}/>
  <h2 class="subtext">
    Level {level}<br />
    {skills}<br />
    NP {np}
  </h2>
  <div class="expand-on-hover">
    <Image src={loadedBondCEImage} alt="" class={bondce_css}/>
    <h2 class="subtext">Mana Loading: {ml === 'Not Unlocked' && <br />}{ml}</h2>
  </div>
</article>

<style>
  .heading {
    display: flex;
    height: 4rem;
    width: 100%;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    color: white;
    max-width: 200px;
    padding-bottom: 0.3rem;
    font-weight: bold;
  }

  .servants-container {
    row-gap: 1em;
    column-gap: 1em;
    justify-content: center;
    align-self: center;
  }

  article:hover {
    transform: scale(1);
    border-color: var(--c-darkpurple);
  }

  article {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    background-color: var(--c-darkergray);
    border: 2px var(--c-darkgray) solid;
    padding: 10px;
    width: max(30%, 100px);
    height: auto;
    justify-content: center;
    align-items: center;
    text-align: center;
    border-radius: 1.25rem;
  }

  article > img {
    width: 90%;
    height: auto;
    border-radius: 2.5rem;
    margin-top: 0.75rem;
  }
  .subtext {
    color: white;
    font-size: 16px;
    font-weight: 600;
    margin: 5;
    line-height: 20px;
  }

  .expand-on-hover {
    background-color: var(--c-darkergray);
    border: 2px var(--c-darkpurple) solid;
    border-top: 0px;
    z-index: 99;
    transform: scaleY(0);
    transform-origin: top;
    position: absolute;
    top: 92.5%;
    border-radius: 0px 0px 1.25rem 1.25rem;
    width: 100%;
  }

  article:hover .expand-on-hover {
    transform: scaleY(1);
    transition: transform 200ms ease-in-out;
  }

  .bond-ce {
    padding-top: 0.25rem;
    width: auto;
    height: 3rem;
  }

  .unobtained {
    filter: grayscale(1);
  }

  @media (min-width: 512px) {
    article {
      padding: 10px;
      width: auto;
      height: auto;
    }

    article > img {
      width: 128px;
      height: 128px;
    }

    .bond-ce {
      height: 3rem;
    }
  }
</style>