{/* Rows */}
{slots.map((slot, sIdx) => (
{slot.split("–")[0]}
↓
{slot.split("–")[1]}
{grid[sIdx].map((courseKey, dIdx) => {
const course = courseKey ? COURSES[courseKey] : null;
const isHovered = hovered && hovered.s === sIdx && hovered.d === dIdx;
return (
course && setHovered({ s: sIdx, d: dIdx })}
onMouseLeave={() => setHovered(null)}
onClick={() => course && courseKey !== "open" && openSignup()}>
{course ? (
<>
{course.name}
{course.ch}
{isHovered &&
{course.desc}
}
>
) : (
休館
)}
);
})}