'use client' import { useState } from 'react' import { Plus, ListTodo } from 'lucide-react' import { useAtom } from 'jotai' import { habitsAtom, settingsAtom, browserSettingsAtom } from '@/lib/atoms' import EmptyState from './EmptyState' import { Button } from '@/components/ui/button' import HabitItem from './HabitItem' import AddEditHabitModal from './AddEditHabitModal' import ConfirmDialog from './ConfirmDialog' import { Habit } from '@/lib/types' import { useHabits } from '@/hooks/useHabits' import { HabitIcon, TaskIcon } from '@/lib/constants' import { ViewToggle } from './ViewToggle' export default function HabitList() { const { saveHabit, deleteHabit } = useHabits() const [habitsData, setHabitsData] = useAtom(habitsAtom) const [browserSettings] = useAtom(browserSettingsAtom) const isTasksView = browserSettings.viewType === 'tasks' const habits = habitsData.habits.filter(habit => isTasksView ? habit.isTask : !habit.isTask ) const activeHabits = habits .filter(h => !h.archived) .sort((a, b) => (b.pinned ? 1 : 0) - (a.pinned ? 1 : 0)) const archivedHabits = habits.filter(h => h.archived) const [settings] = useAtom(settingsAtom) const [modalConfig, setModalConfig] = useState<{ isOpen: boolean, isTask: boolean }>({ isOpen: false, isTask: false }) const [editingHabit, setEditingHabit] = useState(null) const [deleteConfirmation, setDeleteConfirmation] = useState<{ isOpen: boolean, habitId: string | null }>({ isOpen: false, habitId: null }) return (

{isTasksView ? 'My Tasks' : 'My Habits'}

{activeHabits.length === 0 ? (
) : ( activeHabits.map((habit: Habit) => ( { setEditingHabit(habit) setModalConfig({ isOpen: true, isTask: isTasksView }) }} onDelete={() => setDeleteConfirmation({ isOpen: true, habitId: habit.id })} /> )) )} {archivedHabits.length > 0 && ( <>
Archived
{archivedHabits.map((habit: Habit) => ( { setEditingHabit(habit) setModalConfig({ isOpen: true, isTask: isTasksView }) }} onDelete={() => setDeleteConfirmation({ isOpen: true, habitId: habit.id })} /> ))} )}
{modalConfig.isOpen && { setModalConfig({ isOpen: false, isTask: false }) setEditingHabit(null) }} onSave={async (habit) => { await saveHabit({ ...habit, id: editingHabit?.id, isTask: modalConfig.isTask }) setModalConfig({ isOpen: false, isTask: false }) setEditingHabit(null) }} habit={editingHabit} isTask={modalConfig.isTask} /> } setDeleteConfirmation({ isOpen: false, habitId: null })} onConfirm={async () => { if (deleteConfirmation.habitId) { await deleteHabit(deleteConfirmation.habitId) } setDeleteConfirmation({ isOpen: false, habitId: null }) }} title={isTasksView ? "Delete Task" : "Delete Habit"} message={isTasksView ? "Are you sure you want to delete this task? This action cannot be undone." : "Are you sure you want to delete this habit? This action cannot be undone."} confirmText="Delete" />
) }