<commit_before>import React from 'react';
import PropTypes from 'prop-types';
import { autobind } from 'core-decorators';
import ScrollAnimation from 'react-animate-on-scroll';
import '../../scss/admin/_user-card.scss';

@autobind
class UserCard extends React.Component {
	static propTypes = {
		user: PropTypes.shape({
			firstname: PropTypes.string,
			lastname: PropTypes.string,
			email: PropTypes.string,
			university: PropTypes.string,
			enabled: PropTypes.bool,
			paidAmount: PropTypes.number,
		}),
		paymentAmount: PropTypes.number.isRequired,
		renderProfile: PropTypes.func.isRequired
	}

	openProfile(e) {
		this.props.renderProfile(this.props.user);
	}

	render() {
		let { firstname, lastname, email, university, enabled } = this.props.user;
		let { paymentAmount } = this.props;

		return (
			<ScrollAnimation animateOnce animateIn='fadeInUp' offset={0} duration={0.1}>
				<div className='pt-card pt-elevation-0 pt-interactive user-card' onClick={this.openProfile}>
					<h5>
						{firstname + ' ' + lastname + ' '}
						<span className={'pt-icon ' + (this.props.user.paidAmount >= paymentAmount ? 'pt-icon-tick pt-intent-success' : 'pt-icon-dollar pt-intent-danger') }> </span>
						{enabled ? null : <span className='pt-icon pt-icon-ban-circle pt-intent-danger'> </span>}
					</h5>
					<p className='pt-text-muted'>
						{university}
					</p>
				</div>
			</ScrollAnimation>
		);
	}
}


export default UserCard;<commit_msg>[FIX] Move paid icon to left of User Card<commit_after>import React from 'react';
import PropTypes from 'prop-types';
import { autobind } from 'core-decorators';
import ScrollAnimation from 'react-animate-on-scroll';
import '../../scss/admin/_user-card.scss';

@autobind
class UserCard extends React.Component {
	static propTypes = {
		user: PropTypes.shape({
			firstname: PropTypes.string,
			lastname: PropTypes.string,
			email: PropTypes.string,
			university: PropTypes.string,
			enabled: PropTypes.bool,
			paidAmount: PropTypes.number,
		}),
		paymentAmount: PropTypes.number.isRequired,
		renderProfile: PropTypes.func.isRequired
	}

	openProfile(e) {
		this.props.renderProfile(this.props.user);
	}

	render() {
		let { firstname, lastname, email, university, enabled } = this.props.user;
		let { paymentAmount } = this.props;

		return (
			<ScrollAnimation animateOnce animateIn='fadeInUp' offset={0} duration={0.1}>
				<div className='pt-card pt-elevation-0 pt-interactive user-card' onClick={this.openProfile}>
					<h5>
						<span className={'pt-icon ' + (this.props.user.paidAmount >= paymentAmount ? 'pt-icon-tick pt-intent-success' : 'pt-icon-dollar pt-intent-danger') }> </span>
						{enabled ? null : <span className='pt-icon pt-icon-ban-circle pt-intent-danger'> </span>}
						{' ' + firstname + ' ' + lastname}
					</h5>
					<p className='pt-text-muted'>
						{university}
					</p>
				</div>
			</ScrollAnimation>
		);
	}
}


export default UserCard;
{'fraction_non_alphanumeric': 0.14850136239782016, 'fraction_numerical': 0.004087193460490463, 'mean_word_length': 3.760129659643436, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 29, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5098129', 'n_tokens_mistral': 1096, 'n_tokens_neox': 957, 'n_words': 201}