import React, { useState } from ‘react’;
export default function HandicapConverter() {
const [golfHandicap, setGolfHandicap] = useState(»);
const [result, setResult] = useState(null);
// Tabla oficial de conversión Golf → Pitch & Putt
const conversionTable = {
‘-4’: -5, ‘-3’: -5, ‘-2’: -4, ‘-1’: -4,
‘0’: -3, ‘1’: -3, ‘2’: -2, ‘3’: -2,
‘4’: -1, ‘5’: -1, ‘6’: 0, ‘7’: 0,
‘8’: 1, ‘9’: 1, ’10’: 2, ’11’: 2,
’12’: 3, ’13’: 3, ’14’: 4, ’15’: 4,
’16’: 5, ’17’: 5, ’18’: 6, ’19’: 6,
’20’: 7, ’21’: 7, ’22’: 8, ’23’: 8,
’24’: 9, ’25’: 9, ’26’: 10, ’27’: 10,
’28’: 11, ’29’: 11, ’30’: 12, ’31’: 13,
’32’: 14, ’33’: 15, ’34’: 16, ’35’: 17,
’36’: 18
};
const convertHandicap = (handicap) => {
const h = parseFloat(handicap);
if (isNaN(h)) return null;
// Redondear al entero más cercano para buscar en la tabla
const roundedHandicap = Math.round(h);
// Verificar si está en el rango de la tabla
if (roundedHandicap < -4 || roundedHandicap > 36) {
return ‘fuera_rango’;
}
return conversionTable[roundedHandicap.toString()];
};
const handleConvert = () => {
const converted = convertHandicap(golfHandicap);
setResult(converted);
};
const handleKeyPress = (e) => {
if (e.key === ‘Enter’) {
handleConvert();
}
};
return (
⛳ Conversor de Hándicap
Golf → Pitch & Putt
setGolfHandicap(e.target.value)}
onKeyPress={handleKeyPress}
placeholder=»Ej: 18″
className=»w-full px-4 py-3 border-2 border-green-300 rounded-lg focus:outline-none focus:border-green-500 text-lg»
/>
Rango: -4 a 36
{result !== null && (
⚠️ Hándicap fuera de rango
Debe estar entre -4 y 36
) : (
Hándicap Pitch & Putt
{result >= 0 ? result : result}
)}
)}
{/* Tabla de conversión */}
📊 Tabla Oficial de Conversión
{Object.entries(conversionTable).map(([golf, pp]) => (
))}
);
}