sendou.ink/app/components/elements/Button.tsx
Kalle 8f156fb917
Team editors in addition to the owner (#2077)
* Initial

* Handle owner leaving

* Remove old team queries

* Progress

* Retire old toggle

* e2e tests

* Divide loaders/actions of team pages
2025-02-04 10:56:33 +02:00

54 lines
1012 B
TypeScript

import clsx from "clsx";
import * as React from "react";
import {
Button as ReactAriaButton,
type ButtonProps as ReactAriaButtonProps,
} from "react-aria-components";
interface MyDatePickerProps extends ReactAriaButtonProps {
variant?:
| "success"
| "outlined"
| "outlined-success"
| "destructive"
| "minimal"
| "minimal-success"
| "minimal-destructive";
size?: "miniscule" | "small" | "medium" | "big";
icon?: JSX.Element;
children?: React.ReactNode;
}
export function SendouButton({
children,
variant,
size,
className,
icon,
...rest
}: MyDatePickerProps) {
return (
<ReactAriaButton
{...rest}
className={clsx(
"react-aria-Button",
variant,
{
small: size === "small",
big: size === "big",
miniscule: size === "miniscule",
},
className,
)}
>
{icon &&
React.cloneElement(icon, {
className: clsx(icon.props.className, "sendou-button-icon", {
lonely: !children,
}),
})}
{children}
</ReactAriaButton>
);
}