'use client'; import { parsePhaseBidClaim, type PhaseBidClaim } from '@/game/turn-bid-promises'; import { Input } from './ui/input'; export function phaseBidClaimInputError(value: unknown): string | null { try { parsePhaseBidClaim(value); return null; } catch (error) { return error instanceof Error ? error.message : 'Choose a positive whole bid minimum.'; } } /** Turn is fixed by the authoritative question context; the asker chooses the threshold. */ export function PhaseBidClaimFields(props: { value: PhaseBidClaim; onChange: (claim: PhaseBidClaim) => void; disabled?: boolean; }) { const error = phaseBidClaimInputError(props.value); return
Bid during this turn

Turn {props.value.turn} ยท Remaining ordinary Bidding phase

{ if (props.disabled) return; const next = { ...props.value, minimum: event.currentTarget.valueAsNumber }; if (phaseBidClaimInputError(next)) return; props.onChange(parsePhaseBidClaim(next)); }} /> {error &&

{error}

}

This asks about one accepted bid of at least this size after the answer, before Bidding ends this turn. Earlier bids do not count; it does not promise a win or change the winning payment.

; }