Files for my website
bwc9876.dev
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>