'use client' import { useState, useEffect } from 'react' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Calendar, Users, Clock, DollarSign, TrendingUp, LogOut } from 'lucide-react' import { format } from 'date-fns' import { es } from 'date-fns/locale' export default function ApertureDashboard() { const [activeTab, setActiveTab] = useState<'dashboard' | 'staff' | 'resources' | 'reports'>('dashboard') const [bookings, setBookings] = useState([]) const [loading, setLoading] = useState(false) const [stats, setStats] = useState({ totalBookings: 0, totalRevenue: 0, completedToday: 0, upcomingToday: 0 }) useEffect(() => { fetchBookings() fetchStats() }, []) const fetchBookings = async () => { setLoading(true) try { const today = format(new Date(), 'yyyy-MM-dd') const response = await fetch(`/api/aperture/dashboard?start_date=${today}&end_date=${today}`) const data = await response.json() if (data.success) { setBookings(data.bookings) } } catch (error) { console.error('Error fetching bookings:', error) } finally { setLoading(false) } } const fetchStats = async () => { try { const response = await fetch('/api/aperture/stats') const data = await response.json() if (data.success) { setStats(data.stats) } } catch (error) { console.error('Error fetching stats:', error) } } const handleLogout = () => { localStorage.removeItem('admin_enrollment_key') window.location.href = '/' } return (

Aperture - Admin

Citas Hoy

{stats.completedToday}

Completadas

Ingresos Hoy

${stats.totalRevenue.toLocaleString()}

Ingresos

Pendientes

{stats.upcomingToday}

Por iniciar

Total Mes

{stats.totalBookings}

Este mes

{activeTab === 'dashboard' && ( Dashboard Resumen de operaciones del día {loading ? (
Cargando...
) : (
{bookings.length === 0 ? (

No hay citas para hoy

) : ( bookings.map((booking) => (

{booking.customer?.first_name} {booking.customer?.last_name}

{booking.service?.name}

{format(new Date(booking.start_time_utc), 'HH:mm', { locale: es })} - {format(new Date(booking.end_time_utc), 'HH:mm', { locale: es })}

{booking.status}
)) )}
)}
)} {activeTab === 'staff' && ( Gestión de Staff Administra horarios y disponibilidad del equipo

Funcionalidad de gestión de staff próximamente

)} {activeTab === 'resources' && ( Gestión de Recursos Administra estaciones y asignación

Funcionalidad de gestión de recursos próximamente

)} {activeTab === 'reports' && ( Reportes Estadísticas y análisis de operaciones

Funcionalidad de reportes próximamente

)}
) }