+
+ {/* Selector de usuario */}
+
+
+
+
+
+ {/* Upload */}
+ {userId && preview.length === 0 && !result && (
+
fileRef.current?.click()}
+ className="border-2 border-dashed border-gray-300 rounded-2xl p-10 text-center cursor-pointer hover:border-gray-400 transition-colors"
+ >
+
📂
+
Subí el Excel de pronósticos
+
Formato: Equipo | Goles | vs | Goles | Equipo
+
e.target.files?.[0] && handleFile(e.target.files[0])}
+ />
+
+ )}
+
+ {error && (
+
{error}
+ )}
+
+ {/* Preview */}
+ {preview.length > 0 && (
+
+
+
+ {preview.length} pronósticos para {selectedUser?.name}
+
+
+
+
+
+
+
+ | Local |
+ Resultado |
+ Visitante |
+
+
+
+ {preview.map((r, i) => {
+ const result = r.homeScore > r.awayScore ? 'L' : r.homeScore < r.awayScore ? 'V' : 'E'
+ return (
+
+ | {r.homeTeamName} |
+
+
+ {r.homeScore} - {r.awayScore}
+
+ |
+ {r.awayTeamName} |
+
+ )
+ })}
+
+
+
+
+
+ )}
+
+ {/* Resultado */}
+ {result && (
+
+
+
✅
+
+
{result.imported} pronósticos importados
+ {result.skipped > 0 &&
{result.skipped} omitidos
}
+
+
+ {result.errors.length > 0 && (
+
+
Equipos no reconocidos:
+ {result.errors.map((e, i) =>
{e}
)}
+
+ )}
+
+
+ )}
+
+