eduardomoroni/trading-card-manager

View on GitHub
packages/frontend/src/presentation/components/ManaCheckbox.tsx

Summary

Maintainability
A
45 mins
Test Coverage
import React from 'react';
import { Color } from '../../domain/entities/Color';
import { ManaCost } from './ManaCost';
import { Ionicons } from '@expo/vector-icons';
import { StyleSheet, TouchableOpacity } from 'react-native';
import { Colors } from '../constants';

interface Props {
  color: Color;
  isSelected: boolean;
  onSelectColor: (color: Color) => void;
}

export const styles = StyleSheet.create({
  manaButton: {
    borderRadius: 4,
    borderColor: Colors.primary,
    borderWidth: 1,
    marginHorizontal: 12,
    alignItems: 'center',
    justifyContent: 'center',
    height: 25,
    width: 25,
  },
});

export const ManaCheckbox: React.FC<Props> = (props: Props) => {
  const { color, isSelected, onSelectColor } = props;
  const renderContent = (): React.ReactNode =>
    !isSelected ? (
      <ManaCost manaCost={color} />
    ) : (
      <Ionicons name="ios-checkmark" size={26} />
    );
  return (
    <TouchableOpacity
      style={styles.manaButton}
      onPress={(): void => onSelectColor(color)}
    >
      {renderContent()}
    </TouchableOpacity>
  );
};