apple2js/js/components/ControlButton.tsx

30 lines
828 B
TypeScript
Raw Normal View History

import { h, JSX } from 'preact';
2022-06-09 19:22:59 +00:00
import cs from 'classnames';
import styles from './css/ControlButton.module.scss';
/**
* Interface for ControlButton.
*/
export interface ControlButtonProps {
icon: string;
title: string;
disabled?: boolean;
2022-06-09 19:22:59 +00:00
active?: boolean;
onClick: JSX.MouseEventHandler<HTMLButtonElement>;
}
/**
* Simple button with an icon, tooltip text and a callback.
*
* @param icon FontAwesome icon name
* @param title Tooltip text
* @param onClick Click callback
* @returns Control Button component
*/
2022-06-09 19:22:59 +00:00
export const ControlButton = ({ active, icon, title, onClick, ...props }: ControlButtonProps) => (
<button className={styles.iconButton} onClick={onClick} title={title} {...props} >
2022-06-09 19:22:59 +00:00
<i className={cs('fas', `fa-${icon}`, { [styles.active]: active })}></i>
</button>
);