'use client' import { Habit } from '@/lib/types' import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { d2s, getNow, t2d, getCompletedHabitsForDate } from '@/lib/utils' import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts' import { useAtom } from 'jotai' import { settingsAtom, hasTasksAtom } from '@/lib/atoms' interface HabitStreakProps { habits: Habit[] } export default function HabitStreak({ habits }: HabitStreakProps) { const [settings] = useAtom(settingsAtom) const [hasTasks] = useAtom(hasTasksAtom) // Get the last 7 days of data const dates = Array.from({ length: 7 }, (_, i) => { const d = getNow({ timezone: settings.system.timezone }); return d2s({ dateTime: d.minus({ days: i }), format: 'yyyy-MM-dd', timezone: settings.system.timezone }); }).reverse() const completions = dates.map(date => { const completedHabits = getCompletedHabitsForDate({ habits: habits.filter(h => !h.isTask), date: t2d({ timestamp: date, timezone: settings.system.timezone }), timezone: settings.system.timezone }); const completedTasks = getCompletedHabitsForDate({ habits: habits.filter(h => h.isTask), date: t2d({ timestamp: date, timezone: settings.system.timezone }), timezone: settings.system.timezone }); return { date, habits: completedHabits.length, tasks: completedTasks.length }; }); return ( Daily Completion Streak
[`${value} ${name}`, 'Completed']} /> {hasTasks && ( )}
) }