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 && (
)}
);
}