import * as React from "react";
import { Platform } from "react-native";
import RadioButtonAndroid from "./RadioButtonAndroid";
import RadioButtonIOS from "./RadioButtonIOS";
import { DefaultTheme } from "styled-components";
// import RadioButtonGroup from "./RadioButtonGroup";
// import RadioButtonItem from "./RadioButtonItem";

export type Props = {
    /**
     * Value of the radio button
     */
    value: string;
    /**
     * Status of radio button.
     */
    status?: "checked" | "unchecked";
    /**
     * Whether radio is disabled.
     */
    disabled?: boolean;
    /**
     * Function to execute on press.
     */
    onPress?: () => void;
    /**
     * Custom color for unchecked radio.
     */
    uncheckedColor?: string;
    /**
     * Custom color for radio.
     */
    color?: string;
    /**
     * @optional
     */
    theme?: DefaultTheme;
    /**
     * testID to be used on tests.
     */
    testID?: string;
};

/**
 * Radio buttons allow the selection a single option from a set.
 *
 * <div class="screenshots">
 *   <figure>
 *     <img src="screenshots/radio-enabled.android.png" />
 *     <figcaption>Android (enabled)</figcaption>
 *   </figure>
 *   <figure>
 *     <img src="screenshots/radio-disabled.android.png" />
 *     <figcaption>Android (disabled)</figcaption>
 *   </figure>
 *   <figure>
 *     <img src="screenshots/radio-enabled.ios.png" />
 *     <figcaption>iOS (enabled)</figcaption>
 *   </figure>
 *   <figure>
 *     <img src="screenshots/radio-disabled.ios.png" />
 *     <figcaption>iOS (disabled)</figcaption>
 *   </figure>
 * </div>
 *
 * ## Usage
 * ```js
 * import * as React from 'react';
 * import { View } from 'react-native';
 * import RadioButton from 'react-native-simple-elements/components/RadioButton';
 *
 * const MyComponent = () => {
 *   const [checked, setChecked] = React.useState('first');
 *
 *   return (
 *     <View>
 *       <RadioButton
 *         value="first"
 *         status={ checked === 'first' ? 'checked' : 'unchecked' }
 *         onPress={() => setChecked('first')}
 *       />
 *       <RadioButton
 *         value="second"
 *         status={ checked === 'second' ? 'checked' : 'unchecked' }
 *         onPress={() => setChecked('second')}
 *       />
 *     </View>
 *   );
 * };
 *
 * export default MyComponent;
 * ```
 */
const RadioButton = (props: Props) => {
    const Button = Platform.select({
        default: RadioButtonAndroid,
        ios: RadioButtonIOS,
    });

    return <Button {...props} />;
};

// RadioButton.Group = RadioButtonGroup;
// RadioButton.Android = RadioButtonAndroid;
// RadioButton.IOS = RadioButtonIOS;
// RadioButton.Item = RadioButtonItem;

export default RadioButton;

// @component-docs ignore-next-line
const RadioButtonWithTheme = RadioButton;
// @component-docs ignore-next-line
export { RadioButtonWithTheme as RadioButton };
