nukeop/nuclear

View on GitHub
packages/ui/lib/components/VolumeControls/PlayOptions/index.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import React from 'react';
import cx from 'classnames';
import { Icon, SemanticICONS } from 'semantic-ui-react';

import styles from './styles.scss';
import Tooltip from '../../Tooltip';

export type PlayOptionControlProps = {
  name: string;
  dataTestId?: string;
  icon: SemanticICONS;
  enabled?: boolean;
  onToggle?: () => void;
};

const PlayOptionControl: React.FC<PlayOptionControlProps> = ({
  name,
  dataTestId,
  icon,
  enabled = true,
  onToggle
}) => (
  <Tooltip
    content={name}
    position='top center'
    trigger={
      <Icon
        className={cx(
          styles.play_option_icon,
          { disabled: !enabled }
        )}
        data-testid={dataTestId}
        name={icon}
        onClick={onToggle}
        size='large'
      />
    }
  />);

export type PlayOptionsProps = {
  playOptions: PlayOptionControlProps[];
};

const PlayOptions: React.FC<PlayOptionsProps> = ({
  playOptions
}) => (
  <div className={styles.play_options}>
    {
      playOptions.map((playOption, i) => <PlayOptionControl {...playOption} key={i} />)
    }
  </div>
);

export default PlayOptions;