---
export type GlossaryPortalGridItem = {
  href: string;
  title: string;
  description: string;
  meta: string;
};

export interface Props {
  items?: GlossaryPortalGridItem[];
  secondary?: boolean;
}

const {
  items = [],
  secondary = false,
} = Astro.props;
---

<div
  class:list={[
    "glossary-portals",
    secondary && "glossary-portals--secondary",
  ]}
>
  {items.map((item) => (
    <a class="glossary-portal-card" href={item.href}>
      <strong>{item.title}</strong>
      <span>{item.description}</span>
      <small>{item.meta}</small>
    </a>
  ))}
</div>

<style>
  .glossary-portals{
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px;
    margin-top: 14px;
  }

  .glossary-portal-card{
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 16px 18px;
    border: 1px solid var(--glossary-border);
    border-radius: 18px;
    background: var(--glossary-bg-soft);
    text-decoration: none;
    transition: transform 120ms ease, background 120ms ease, border-color 120ms ease;
  }

  .glossary-portal-card:hover{
    transform: translateY(-1px);
    background: var(--glossary-bg-soft-strong);
    border-color: rgba(0,217,255,0.16);
    text-decoration: none;
  }

  .glossary-portal-card strong{
    color: var(--glossary-accent);
    font-size: 1.08rem;
    line-height: 1.28;
  }

  .glossary-portal-card span{
    color: inherit;
    font-size: 1rem;
    line-height: 1.5;
    opacity: .94;
  }

  .glossary-portal-card small{
    color: var(--glossary-accent);
    font-size: .94rem;
    line-height: 1.35;
    opacity: .9;
  }

  @media (prefers-color-scheme: dark){
    .glossary-portal-card{
      background: rgba(255,255,255,0.04);
    }

    .glossary-portal-card:hover{
      background: rgba(255,255,255,0.07);
    }
  }
</style>