// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { MouseEventHandler, ReactNode } from 'react'; import classNames from 'classnames'; import { assert } from '../util/assert'; export enum ButtonVariant { Primary, Secondary, Destructive, } type PropsType = { children: ReactNode; className?: string; disabled?: boolean; onClick: MouseEventHandler; variant?: ButtonVariant; }; const VARIANT_CLASS_NAMES = new Map([ [ButtonVariant.Primary, 'module-Button--primary'], [ButtonVariant.Secondary, 'module-Button--secondary'], [ButtonVariant.Destructive, 'module-Button--destructive'], ]); export const Button = React.forwardRef( ( { children, className, disabled = false, onClick, variant = ButtonVariant.Primary, }, ref ) => { const variantClassName = VARIANT_CLASS_NAMES.get(variant); assert(variantClassName, ' ); } );