+
+
+ Default
+
+
+ Secondary
+
+
+ Outline
+
+
+ Ghost
+
+
+ Link
+
+
+
+
+ Small
+
+
+ Default
+
+
+ Large
+
+
+
+ Internal Link
+
+ External Link
+
+
+
+ ),
+ parameters: {
+ docs: {
+ description: {
+ story: "A showcase of all ButtonLink variants, sizes, and link types.",
+ },
+ },
+ },
+};
diff --git a/mirascope-ui/ui/button-link.tsx b/mirascope-ui/ui/button-link.tsx
new file mode 100644
index 0000000..6986682
--- /dev/null
+++ b/mirascope-ui/ui/button-link.tsx
@@ -0,0 +1,47 @@
+import { Link } from "@tanstack/react-router";
+import type { LinkProps } from "@tanstack/react-router";
+import { buttonVariants } from "./button";
+import { cn } from "@/mirascope-ui/lib/utils";
+import type { ButtonProps } from "./button";
+
+export interface ButtonLinkProps {
+ href: string;
+ external?: boolean;
+ variant?: ButtonProps["variant"];
+ size?: ButtonProps["size"];
+ className?: string;
+ children?: React.ReactNode;
+}
+
+export function ButtonLink({
+ className,
+ variant = "outline",
+ size = "default",
+ href,
+ external,
+ children,
+ ...props
+}: ButtonLinkProps & Omit