import { useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Clock, Timer } from 'lucide-react'; interface TimeCompletionModalProps { isOpen: boolean; onClose: () => void; onSave: (timeSpent: number) => void; // in minutes taskTitle: string; } export default function TimeCompletionModal({ isOpen, onClose, onSave, taskTitle }: TimeCompletionModalProps) { const [hours, setHours] = useState(0); const [minutes, setMinutes] = useState(0); const [manualHours, setManualHours] = useState(''); const [activeTab, setActiveTab] = useState('clock'); const handleSave = () => { let totalMinutes = 0; if (activeTab === 'clock') { totalMinutes = hours * 60 + minutes; } else { const parsedHours = parseFloat(manualHours) || 0; totalMinutes = Math.round(parsedHours * 60); } onSave(totalMinutes); console.log(`Time logged: ${totalMinutes} minutes for task: ${taskTitle}`); handleClose(); }; const handleClose = () => { setHours(0); setMinutes(0); setManualHours(''); setActiveTab('clock'); onClose(); }; const formatTime = (h: number, m: number) => { return `${h}h ${m}m`; }; const getCurrentTimeDisplay = () => { if (activeTab === 'clock') { return formatTime(hours, minutes); } else { const parsedHours = parseFloat(manualHours) || 0; const h = Math.floor(parsedHours); const m = Math.round((parsedHours - h) * 60); return formatTime(h, m); } }; return ( Task Completed!

How much time did you spend on:

{taskTitle}

Clock Manual {/* Apple-style Clock Picker */}
{formatTime(hours, minutes)}
{/* Hours Picker */}
{Array.from({ length: 13 }, (_, i) => ( ))}
{/* Minutes Picker */}
{Array.from({ length: 12 }, (_, i) => i * 5).map((minute) => ( ))}
{/* Manual Input */}
{getCurrentTimeDisplay()}
setManualHours(e.target.value)} data-testid="input-manual-hours" />

Examples: 0.5 = 30min, 1.25 = 1h 15min, 2.75 = 2h 45min

); }