diff --git a/modules/ppcp-settings/resources/js/Components/ReusableComponents/Fields/OptionSelector.js b/modules/ppcp-settings/resources/js/Components/ReusableComponents/Fields/OptionSelector.js
new file mode 100644
index 000000000..d2c52fa2d
--- /dev/null
+++ b/modules/ppcp-settings/resources/js/Components/ReusableComponents/Fields/OptionSelector.js
@@ -0,0 +1,100 @@
+import classNames from 'classnames';
+import { PayPalCheckbox, PayPalRdb } from './index';
+
+const OptionSelector = ( {
+ multiSelect = false,
+ options,
+ value,
+ onChange,
+} ) => (
+
+ { options.map(
+ ( { value: itemValue, title, description, contents } ) => {
+ let isSelected;
+
+ if ( Array.isArray( value ) ) {
+ isSelected = value.includes( itemValue );
+ } else {
+ isSelected = value === itemValue;
+ }
+
+ return (
+
+ { contents }
+
+ );
+ }
+ ) }
+
+);
+
+export default OptionSelector;
+
+const OptionItem = ( {
+ itemTitle,
+ itemDescription,
+ itemValue,
+ onChange,
+ isMulti,
+ isSelected,
+ children,
+} ) => {
+ const boxClassName = classNames( 'ppcp-r-select-box', {
+ 'ppcp--selected': isSelected,
+ } );
+
+ return (
+
+
+
+
+
+
+ { itemTitle }
+
+
+ { itemDescription }
+
+ { children && (
+
+ { children }
+
+ ) }
+
+
+
+ );
+};
+
+const InputField = ( { value, onChange, isRadio, isSelected } ) => {
+ if ( isRadio ) {
+ return (
+
+ );
+ }
+
+ return (
+
+ );
+};
diff --git a/modules/ppcp-settings/resources/js/Components/ReusableComponents/Fields/index.js b/modules/ppcp-settings/resources/js/Components/ReusableComponents/Fields/index.js
index 9544463a5..4cc675afc 100644
--- a/modules/ppcp-settings/resources/js/Components/ReusableComponents/Fields/index.js
+++ b/modules/ppcp-settings/resources/js/Components/ReusableComponents/Fields/index.js
@@ -8,4 +8,5 @@ export { default as RadioGroup } from './RadioGroup';
export { default as PayPalRdb } from './RadioButton';
export { default as PayPalRdbWithContent } from './RadioContent';
export { default as SelectBox } from './SelectableContent';
+export { default as OptionSelector } from './OptionSelector';
export { default as Select } from './Select';