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" : ""}
23 {...rest}
24>
25 <Icon width="1.2em" height="1.2em" name={`${overridePack ?? "bi"}:${icon}`} />
26 {placement === "inside" && label}
27</a>