<commit_before>import NavigationActions from '../actions/navigationActions';
import React from 'react';

export default class TabbedNavigationButton extends React.Component {
    handleChange() {
        NavigationActions.showPage(this.props.id);
    }
    
    render() {
        return (
            <li className="tabbedNavigationButton">
                <input
                    type="radio"
                    name="tab"
                    id={this.props.id}
                    onChange={this.handleChange.bind(this)} />
                <label htmlFor={this.props.id}>{this.props.title}</label>
            </li>
        );
    }
}<commit_msg>Tabbed Navigation Button Should Define PropTypes<commit_after>import NavigationActions from '../actions/navigationActions';
import React from 'react';

export default class TabbedNavigationButton extends React.Component {
    static get propTypes() {
        return {
            id: React.PropTypes.string.isRequired,
            title: React.PropTypes.string.isRequired
        };
    }
    
    handleChange() {
        NavigationActions.showPage(this.props.id);
    }
    
    render() {
        return (
            <li className="tabbedNavigationButton">
                <input
                    type="radio"
                    name="tab"
                    id={this.props.id}
                    onChange={this.handleChange.bind(this)} />
                <label htmlFor={this.props.id}>{this.props.title}</label>
            </li>
        );
    }
}
{'fraction_non_alphanumeric': 0.11103767349636484, 'fraction_numerical': 0.0, 'mean_word_length': 1.747731397459165, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, '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': '5395550', 'n_tokens_mistral': 389, 'n_tokens_neox': 373, 'n_words': 69}