+ {laneCards.length === 0 ? (
+
+ Drop a card here or log a stage.
+
+ ) : (
+ laneCards.map(({ job, latestEventAt, stage }) => (
+
{
+ setDragging({ jobId: job.id, fromStage: stage });
+ event.dataTransfer.effectAllowed = "move";
+ }}
+ onDragEnd={() => {
+ setDragging(null);
+ setDropTargetStage(null);
+ }}
+ className={cn(
+ "block rounded-lg border border-border/60 bg-background/95 p-3 shadow-[0_8px_20px_-18px_rgba(0,0,0,1)] transition-colors",
+ "hover:border-border hover:bg-background hover:shadow-[0_12px_24px_-16px_rgba(0,0,0,1)]",
+ getCardLeftAccentClass(stage),
+ movingJobId === job.id && "opacity-70",
+ )}
+ >
+
+
+ {job.employer}
+
+ {stage === "closed" && (
+
+
+ Closed
+
+ {job.outcome ? (
+
+ {job.outcome.replaceAll("_", " ")}
+
+ ) : null}
+
+ )}
+
+ {latestEventAt != null
+ ? `Updated ${formatTimestamp(latestEventAt)}`
+ : "No stage events yet"}
+
+
+ ))
+ )}
+
+