import { useState } from "react"; import CalendarPostTile from "./CalendarPostTile"; import type { CalendarDay, EnrichedCalendarPost } from "../../hooks/useCalendarPosts"; import clsx from "clsx"; const MAX_VISIBLE = 3; interface Props { day: CalendarDay; onPostClick: (post: EnrichedCalendarPost) => void; onCreatePost?: (date?: string) => void; } export default function CalendarDayCell({ day, onPostClick, onCreatePost }: Props) { const [expanded, setExpanded] = useState(false); const visiblePosts = expanded ? day.posts : day.posts.slice(0, MAX_VISIBLE); const hiddenCount = day.posts.length - MAX_VISIBLE; const today = new Date(); today.setHours(0, 0, 0, 0); const isPast = day.date < today && !day.isToday; const canCreate = day.isCurrentMonth && !isPast && !!onCreatePost; return (
{/* + icon — absolutely positioned top-right, visible on cell hover via CSS */} {canCreate && ( )} {/* Day number — top left */}
{day.date.getDate()}
{/* Post tiles */}
{visiblePosts.map((post) => ( onPostClick(post)} /> ))} {!expanded && hiddenCount > 0 && ( )} {expanded && hiddenCount > 0 && ( )}
); }