Files for my website bwc9876.dev
at main 31 lines 799 B view raw
1--- 2import { Icon } from "astro-icon/components"; 3import type { HTMLAttributes } from "astro/types"; 4 5export type LabelPlacement = "top" | "left" | "right" | "bottom" | "inside"; 6 7export interface Props extends HTMLAttributes<"a"> { 8 icon: string; 9 label: string; 10 placement: LabelPlacement; 11 overridePack?: string; 12 isExternal?: boolean; 13} 14 15const { label, placement, icon, isExternal, overridePack, ...rest } = Astro.props; 16--- 17 18<a 19 aria-label={label} 20 data-tooltip={placement !== "inside" ? label : null} 21 data-placement={placement !== "inside" ? placement : null} 22 target={isExternal ? "_blank" : null} 23 {...rest} 24> 25 <Icon 26 width="1.2em" 27 height="1.2em" 28 name={overridePack === "local" ? icon : `${overridePack ?? "bi"}:${icon}`} 29 /> 30 {placement === "inside" && label} 31</a>