in btn.link astro
export interface Props {
href: string;
text: string;
className?: string;
variant: "primary" | "secondary" | "orange" | "blue";
target?: string;
}
const { href, text, className, variant, target } = Astro.props;
const finalTarget = target === "_blank" ? "_blank" : "_self";
const getThemeStyle = (variant: "primary" | "secondary" | "orange" | "blue") => {
if (variant === "primary") {
return "bg-primary border-transparent relative after:bg-[#172554] hover:border-[#172554]";
}
if (variant === "secondary") {
return "text-primary";
}
if (variant === "orange") {
return "bg-[#ea720f] border-transparent relative after:bg-[#c55d09] hover:border-[#c55d09]";
}
if (variant === "blue") {
return "bg-[#08439d] border-transparent relative after:bg-[#06367f] hover:border-[#06367f]";
}
};
const getTextColor = (variant: "primary" | "secondary" | "orange" | "blue") => {
if (variant === "primary") {
return "text-white";
}
if (variant === "secondary") {
return "text-primary";
}
if (variant === "orange" || variant === "blue") {
return "text-white";
}
};
<a
href={href}
target={finalTarget}
class={px-6 py-3 rounded-full outline-none relative overflow-hidden border duration-300 ease-linear after:absolute after:inset-x-0 after:aspect-square after:scale-0 after:opacity-70 after:origin-center after:duration-300 after:ease-linear after:rounded-full after:top-0 after:left-0 after:bg-[#172554] ${getThemeStyle(variant)} hover:after:opacity-100 hover:after:scale-[2.5] ${className}}
{...(text === "Book Online Now" ? { onclick: "return gtag_report_conversion(this.href)" } : {})}
<span class={relative ${getTextColor(variant)} z-10}>
{text}
</span>
</a>
<span class={relative ${getTextColor(variant)} z-10}>
{text}
</span>
</a>
why does target=_blank not work when i create a btnlink component?