signal-desktop/ts/components/LeftPaneBanner.tsx

49 lines
1 KiB
TypeScript
Raw Normal View History

// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { ReactNode } from 'react';
import React, { useCallback } from 'react';
const BASE_CLASS_NAME = 'LeftPaneBanner';
export type PropsType = Readonly<{
children?: ReactNode;
actionText: string;
onClick: () => void;
}>;
export function LeftPaneBanner({
children,
actionText,
onClick,
}: PropsType): JSX.Element {
const onClickWrap = useCallback(
(e: React.MouseEvent) => {
e.preventDefault();
e.stopPropagation();
onClick?.();
},
[onClick]
);
return (
<div className={BASE_CLASS_NAME}>
<div className={`${BASE_CLASS_NAME}__content`}>{children}</div>
<div className={`${BASE_CLASS_NAME}__footer`}>
<button
title={actionText}
aria-label={actionText}
className={`${BASE_CLASS_NAME}__footer__action-button`}
onClick={onClickWrap}
tabIndex={0}
type="button"
>
{actionText}
</button>
</div>
</div>
);
}