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

60 lines
1.6 KiB
TypeScript
Raw Normal View History

2023-02-02 13:44:35 +01:00
import { classNames } from "@documenso/lib";
import Link from "next/link";
import React from "react";
export function Button(props: any) {
const isLink = typeof props.href !== "undefined";
const { color = "primary", icon, disabled, onClick } = props;
const baseStyles =
2023-02-03 13:20:34 +01:00
"inline-flex items-center justify-center min-w-[80px] rounded-md border border-transparent px-4 py-2 text-sm font-medium shadow-sm disabled:bg-gray-300";
2023-02-02 18:24:23 +01:00
const primaryStyles = "text-white bg-neon hover:bg-neon-dark";
2023-02-02 13:44:35 +01:00
const secondaryStyles =
"border-gray-300 bg-white text-gray-700 hover:bg-gray-50";
return isLink ? (
2023-02-02 14:46:24 +01:00
<Link
id={props.id}
href={props.href}
className={classNames(
baseStyles,
color === "primary" ? primaryStyles : secondaryStyles,
props.className
)}
2023-02-03 16:33:00 +01:00
hidden={props.hidden}
2023-02-02 14:46:24 +01:00
>
2023-02-02 18:24:23 +01:00
{props.icon ? (
<props.icon
2023-02-13 22:33:39 +01:00
className="inline h-5 mr-1 text-inherit"
2023-02-02 18:24:23 +01:00
aria-hidden="true"
></props.icon>
) : (
""
)}
2023-02-02 13:44:35 +01:00
{props.children}
</Link>
) : (
<button
id={props.id}
2023-02-09 19:58:24 +01:00
type="button"
2023-02-02 13:44:35 +01:00
className={classNames(
baseStyles,
2023-02-02 14:46:24 +01:00
color === "primary" ? primaryStyles : secondaryStyles,
props.className
2023-02-02 13:44:35 +01:00
)}
onClick={props.onClick}
2023-02-07 12:54:31 +01:00
disabled={props.disabled || props.loading}
2023-02-03 16:33:00 +01:00
hidden={props.hidden}
2023-02-02 13:44:35 +01:00
>
2023-02-02 14:46:24 +01:00
{props.icon ? (
<props.icon
2023-02-13 22:33:39 +01:00
className="inline h-5 mr-1 text-inherit"
2023-02-02 14:46:24 +01:00
aria-hidden="true"
></props.icon>
) : (
""
)}
2023-02-02 13:44:35 +01:00
{props.children}
</button>
);
}