--- import type { ImageMetadata } from 'astro' export interface Props { text: string icon: ImageMetadata link: string } const { text, icon, link } = Astro.props const icon_src_url = `url("${icon.src}")` --- <a href={link} target="_blank" rel="noopener noreferrer"> <div class="icon"></div> <span class="visually-hidden">{text}</span> </a> <style define:vars={{ icon_src_url }}> * { transition: all var(--a-time-default) var(--a-animation-1); } a { display: flex; align-items: center; justify-content: center; width: 2.25em; height: 2.25em; background-color: var(--c-primary-background); border-radius: .35rem; border: 2px solid var(--c-primary-text); } a:hover { border-color: var(--c-accent-1); & .icon { background: var(--c-accent-1); } } .icon { mask: var(--icon_src_url) no-repeat center; mask-size: contain; background-color: var(--c-primary-text); height: 1.5em; width: 1.5em; } </style>