--- import { Image } from 'astro:assets' import type { GlobImage } from '../types/generic' import { plsLoadImage } from '../utils/tools' export interface Props { title: string link: string imageFile: string } const { imageFile, link, title } = Astro.props const logoAltText = `${title} Logo` const imagePath = `/src/assets/technologies/${imageFile}` const images_logos = import.meta.glob<GlobImage>( '/src/assets/technologies/*.{png,webp}' ) const loadedImage = plsLoadImage(images_logos, imagePath) --- <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}> <article> <Image src={loadedImage} alt={logoAltText} /> <div> <h2>{title}</h2> </div> </article> <span class="visually-hidden">{logoAltText}</span> </a> <style> a { text-decoration: none; } article { --size-value: 6.25rem; background-color: var(--c-darkergray); border-color: var(--c-darkgray); padding: 10px; display: flex; justify-content: center; align-items: center; text-align: center; transition: transform var(--speed) var(--ease); height: auto; width: auto; line-height: 100px; border-radius: 1.25rem; position: relative; } article:hover { transform: scale(var(--hover-scale)); } article > img { border-radius: 1.25rem; width: var(--size-value); height: var(--size-value); } article:hover div { border-radius: 1.25rem; padding: 0 0.5rem; display: flex; align-items: center; justify-content: center; text-align: center; background-color: var(--c-darkgray); height: calc(var(--size-value)); width: calc(var(--size-value) - 1rem); opacity: 90%; z-index: 100; position: absolute; } article:hover h2 { margin: 0; position: absolute; display: inline-flex; font-weight: bold; color: white; font-size: 18px; line-height: 150%; } article h2 { display: none; } article div { display: none; } </style>