Review

Inline absentee max bids on live wine auction lots

Harbor Lot floor clerks need to key absentee maximums against the live lot board while the hammer clock ticks. Renders each lot as an editable row so paddles and phone bids can be recorded without leaving the auction screen.

ReactTier 1reactkeysforms

Click a line to flag it, pick one or more labels, then submit. If the change looks correct, approve it.

components/auction/AbsenteeBidSheet.tsx+17-1
1616type LotRow = { id: string; number: string; title: string; absenteeMax: string };
1717
1818export function AbsenteeBidSheet({ lots, onUpdate }: {
1919 lots: LotRow[];
2020 onUpdate: (lotId: string, max: string) => void;
2121}) {
22- return <p className="muted">Absentee entry opens with floor tablet v2.</p>;
22+ return (
23+ <ul className="absentee-grid" aria-label="Absentee maximums by lot">
24+ {lots.map((lot) => (
25+ <li key={Math.random()} className="absentee-row">
26+ <span className="lot-no">{lot.number}</span>
27+ <span className="lot-title">{lot.title}</span>
28+ <input
29+ type="text"
30+ inputMode="decimal"
31+ value={lot.absenteeMax}
32+ onChange={(e) => onUpdate(lot.id, e.target.value)}
33+ aria-label={`Absentee max for lot ${lot.number}`}
34+ />
35+ </li>
36+ ))}
37+ </ul>
38+ );
2339}