import { useState } from 'react'; import { settleArgument } from './utils/api'; function ScoreBar({ label, value, color }) { return (
{label}
{value}
); } function SidePanel({ side, color, accentClass }) { return (

{side.name}

{side.emotionalVsRational && (
Emotional {side.emotionalVsRational.emotional}%
Rational {side.emotionalVsRational.rational}%
)}

Strengths

Weaknesses

{side.fallacies?.length > 0 && ( <>

Logical Fallacies Detected

{side.fallacies.map((f, i) => (
{f.name} {f.quote &&

"{f.quote}"

}

{f.explanation}

))} )}

Evidence Quality

{side.evidenceQuality}

Devil's Advocate

{side.devilsAdvocate}

Steel Man (Strongest Version)

{side.steelMan}

What Would Change Their Mind?

{side.whatWouldChangeTheirMind}

); } export default function App() { const [topic, setTopic] = useState(''); const [side1Name, setSide1Name] = useState(''); const [side1Argument, setSide1Argument] = useState(''); const [side2Name, setSide2Name] = useState(''); const [side2Argument, setSide2Argument] = useState(''); const [result, setResult] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleSubmit = async () => { if (!topic || !side1Argument || !side2Argument) { setError('Please fill in the topic and both arguments'); return; } setLoading(true); setError(''); try { const data = await settleArgument(topic, side1Name || 'Person A', side1Argument, side2Name || 'Person B', side2Argument); setResult(data); } catch (err) { setError(err.message); } finally { setLoading(false); } }; const reset = () => { setResult(null); setTopic(''); setSide1Name(''); setSide1Argument(''); setSide2Name(''); setSide2Argument(''); }; if (loading) { return (

Argument Settler

The Settler is analyzing both sides...

Checking for logical fallacies, biases, and evidence quality

); } if (result) { return (

Argument Settler

{/* Verdict */}
THE WINNER IS
{result.winner === 'Draw' ? "It's a Draw!" : result.winner}
{result.verdict}
{/* Score comparison */}

{result.side1?.name}

{result.side1?.score}/100
VS

{result.side2?.name}

{result.side2?.score}/100
{/* Detailed panels */}
{result.side1 && } {result.side2 && }
{/* Bias Check */} {result.biasCheck && (

Shared Bias Check

{result.biasCheck}

)} {/* Common Ground */} {result.commonGround && (

Common Ground

{result.commonGround}

)} {/* Compromise */} {result.compromise && (

Suggested Compromise

{result.compromise}

)} {/* Plot Twist */} {result.plotTwist && (

Plot Twist

{result.plotTwist}

)} {/* Debate Tips */} {result.debateTips && (

Tip for {result.side1?.name}

{result.debateTips.side1Tip}

Tip for {result.side2?.name}

{result.debateTips.side2Tip}

)}
); } return (

Argument Settler

AI debate judge with logical fallacy detection, evidence scoring, and bias analysis.

{error &&

{error}

}
setTopic(e.target.value)} />

Side A

setSide1Name(e.target.value)} />