"use client"; import { redirect } from "next/navigation"; import { Separator } from "@/components/ui/separator"; import { ZDay, ZHour } from "@lifetracker/shared/types/days"; import EditableDayComment from "./EditableDayComment"; import { MoodStars } from "./MoodStars"; import Link from "next/link"; import { cn } from "@/lib/utils"; import { ArrowLeftSquare, ArrowRightSquare } from "lucide-react"; import spacetime from "spacetime"; import EditableHour from "@/components/dashboard/hours/EditableHour"; import { DayMetrics } from "./DayMetrics"; import { api } from "@/lib/trpc"; import LoadingSpinner from "@/components/ui/spinner"; export default function DayView({ day, }: { day: ZDay; }) { const prevDay = spacetime(day.date).subtract(1, "day").format("iso-short"); const nextDay = spacetime(day.date).add(1, "day").format("iso-short"); const { data: userMetrics } = api.metrics.list.useQuery(); const groupConsecutiveHours = (day: ZDay) => { const result = []; let currentGroup: ZHour[] = []; for (const hour of day.hours) { if (hour.categoryCode === null) { if (currentGroup.length > 0) { result.push(currentGroup); currentGroup = []; } result.push([hour]); continue; } if (currentGroup.length === 0 || hour.categoryCode === currentGroup[currentGroup.length - 1].categoryCode) { currentGroup.push(hour); } else { result.push(currentGroup); currentGroup = [hour]; } } if (currentGroup.length > 0) { result.push(currentGroup); } return result; }; const consecutiveHours = groupConsecutiveHours(day); return (