signal-desktop/sticker-creator/elements/Button.tsx

45 lines
831 B
TypeScript
Raw Normal View History

2020-10-30 20:34:04 +00:00
// Copyright 2019-2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import React from 'react';
import classnames from 'classnames';
2019-12-17 20:25:57 +00:00
import * as styles from './Button.scss';
export type Props = React.ButtonHTMLAttributes<HTMLButtonElement> & {
2019-12-17 20:25:57 +00:00
pill?: boolean;
primary?: boolean;
};
const getClassName = ({ primary, pill }: Props) => {
if (pill && primary) {
return styles.pillPrimary;
}
if (pill) {
return styles.pill;
}
if (primary) {
return styles.primary;
}
return styles.base;
};
2022-11-18 00:45:19 +00:00
export function Button({
className,
children,
...otherProps
2022-11-18 00:45:19 +00:00
}: React.PropsWithChildren<Props>): JSX.Element {
2019-12-17 20:25:57 +00:00
return (
<button
type="button"
className={classnames(getClassName(otherProps), className)}
2019-12-17 20:25:57 +00:00
{...otherProps}
>
{children}
</button>
);
2022-11-18 00:45:19 +00:00
}