Files
sign/packages/ui/components/button/IconButton.tsx

49 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-02-03 16:33:00 +01:00
import React from "react";
2023-04-04 22:02:32 +00:00
import Link from "next/link";
import { classNames } from "@documenso/lib";
2023-02-03 16:33:00 +01:00
export function IconButton(props: any) {
const isLink = typeof props.href !== "undefined";
const { color = "primary", icon, disabled, onClick } = props;
const baseStyles = "disabled:text-gray-300";
const primaryStyles = "text-neon hover:text-neon-dark";
const secondaryStyles = "text-gray-700 hover:text-neon-dark";
return isLink ? (
<Link
id={props.id}
href={props.href}
className={classNames(
baseStyles,
color === "primary" ? primaryStyles : secondaryStyles,
props.className
)}
2023-04-04 22:02:32 +00:00
hidden={props.hidden}>
2023-02-03 16:33:00 +01:00
{props.icon ? (
2023-04-04 22:02:32 +00:00
<props.icon className="mr-1 inline h-6 text-inherit" aria-hidden="true"></props.icon>
2023-02-03 16:33:00 +01:00
) : (
""
)}
2023-02-24 11:10:30 +01:00
{props.children}
2023-02-03 16:33:00 +01:00
</Link>
) : (
<button
id={props.id}
className={classNames(
baseStyles,
color === "primary" ? primaryStyles : secondaryStyles,
props.className
)}
onClick={props.onClick}
disabled={props.disabled}
2023-04-04 22:02:32 +00:00
hidden={props.hidden}>
2023-02-03 16:33:00 +01:00
{props.icon ? (
2023-04-04 22:02:32 +00:00
<props.icon className="mr-1 inline h-6 text-inherit" aria-hidden="true"></props.icon>
2023-02-03 16:33:00 +01:00
) : (
""
)}
2023-02-24 11:10:30 +01:00
{props.children}
2023-02-03 16:33:00 +01:00
</button>
);
}