firq-dev-website/src/components/taCard.astro

163 lines
3 KiB
Text
Raw Normal View History

---
export interface Props {
date: string
2023-03-09 10:44:18 +00:00
title: string
link: string
image: string
2023-03-11 18:59:51 +00:00
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: url('/assets/ta_icons/${image}.webp')`
const servant: string = `/assets/ta_icons/ta_servants/${ta_servant}.webp`
2023-03-11 18:59:51 +00:00
let hasuser = ''
if (user !== undefined) {
hasuser = 'hasuser'
}
---
2023-03-09 10:44:18 +00:00
2023-01-27 10:16:01 +00:00
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
2023-03-09 10:44:18 +00:00
<article>
<div class="icon" style={icon}>
<span>
<h2>{title}</h2>
</span>
2023-03-09 10:44:18 +00:00
</div>
<p>
2023-03-11 18:59:51 +00:00
<span class={hasuser}>
By {user}<br /> •
</span>
{formatted_date}
</p>
<div class="expand-on-hover">
<img src={servant} alt="" />
<h2>{turns}</h2>
</div>
2023-03-09 10:44:18 +00:00
</article>
</a>
<style>
2023-03-11 18:59:51 +00:00
span {
display: none;
}
.hasuser {
display: flex;
}
a {
text-decoration: none;
}
2023-03-09 10:44:18 +00:00
article {
2023-03-05 20:58:01 +00:00
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;
2023-03-09 10:44:18 +00:00
}
article:hover {
transform: scale(var(--hover-scale));
2023-03-09 10:44:18 +00:00
}
article > .icon {
width: 128px;
height: 128px;
object-fit: cover;
object-position: 0% 0%;
2023-03-09 10:44:18 +00:00
}
article:hover .icon span {
padding: 0.5rem 0.5rem;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
2023-03-05 20:58:01 +00:00
background-color: var(--c-darkgray);
height: 90%;
width: 90%;
opacity: 90%;
2023-03-09 10:44:18 +00:00
}
article:hover span h2 {
margin: 0;
display: inline-flex;
font-weight: bold;
color: white;
font-size: 18px;
line-height: 150%;
}
article span h2 {
display: none;
}
article .icon span {
display: none;
2023-03-09 10:44:18 +00:00
}
.icon {
display: flex;
justify-content: center;
align-items: center;
}
p {
display: flex;
text-align: center;
justify-content: center;
2023-03-11 18:59:51 +00:00
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;
2023-03-11 18:59:51 +00:00
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: 95%;
left: 0px;
right: 0px;
color: white;
}
.expand-on-hover img {
width: 3rem;
height: 3rem;
margin: 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);
}
2023-03-09 10:44:18 +00:00
</style>