import { Clock, LogIn, LogOut } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; type TodayAttendance = { id: number; attendance_date: string; check_in_at: string | null; check_out_at: string | null; check_in_photo: string | null; check_out_photo: string | null; check_in_latitude: number; check_in_longitude: number; check_out_latitude: number | null; check_out_longitude: number | null; work_duration_minutes: number | null; } | null; type AttendanceCardProps = { todayAttendance: TodayAttendance; isOnLeave: boolean; canCheckIn: boolean; onCheckIn?: () => void; onCheckOut?: () => void; }; export function AttendanceCard({ todayAttendance, isOnLeave, canCheckIn, onCheckIn, onCheckOut }: AttendanceCardProps) { const hasCheckedIn = !!todayAttendance?.check_in_at; const hasCheckedOut = !!todayAttendance?.check_out_at; function formatTime(dateStr: string | null): string { if (!dateStr) { return '-'; } const d = new Date(dateStr); return d.toLocaleTimeString('id-ID', { hour: '2-digit', minute: '2-digit', hour12: false }); } return (
Presensi Hari Ini
{isOnLeave ? (
Anda sedang cuti hari ini.
) : !canCheckIn ? (
Anda tidak memiliki akses presensi.
) : (

Masuk

{formatTime(todayAttendance?.check_in_at ?? null)}

Pulang

{formatTime(todayAttendance?.check_out_at ?? null)}

{todayAttendance?.work_duration_minutes != null && (

Durasi Kerja

{Math.floor(todayAttendance.work_duration_minutes / 60)}j {todayAttendance.work_duration_minutes % 60}m

)}
{!hasCheckedIn ? ( ) : !hasCheckedOut ? ( ) : (
Presensi selesai untuk hari ini.
)}
)}
); }