import { useIsMobile } from '@/hooks/use-mobile'; import { authClient } from '@/lib/api-client'; import { useAuth } from '@/lib/auth'; import type { ComplexWithRole } from '@repo/api-contract'; import { useState } from 'react'; import { BookingProvider, useBooking } from './booking-provider'; import { BookingCreateDialog } from './components/booking-create-dialog'; import { BookingDaySummary, BookingQuickActions } from './components/booking-day-summary'; import { BookingHeader } from './components/booking-header'; import { BookingListView } from './components/booking-list-view'; import { BookingMobile } from './components/booking-mobile'; import { BookingTimeline } from './components/booking-timeline'; import { BookingToolbar } from './components/booking-toolbar'; import { BookingToolsDialog } from './components/booking-tools-dialog'; interface BookingProps { complex: ComplexWithRole; } export function Booking({ complex }: BookingProps) { const { user } = useAuth(); const [sending, setSending] = useState(false); const [emailSent, setEmailSent] = useState(false); const emailNotVerified = user && !user.emailVerified; const handleResendVerification = async () => { if (!user?.email || sending) return; setSending(true); try { await authClient.sendVerificationEmail({ email: user.email }); setEmailSent(true); setTimeout(() => setEmailSent(false), 6000); } catch { // Silently fail — the banner already shows the email to contact } finally { setSending(false); } }; return ( {emailNotVerified && (
No verificaste tu email. Para crear reservas necesitás verificar tu dirección de correo electrónico.
)}
); } function BookingInner() { const { viewMode } = useBooking(); const isMobile = useIsMobile(); if (viewMode === 'list') { return ; } if (isMobile) { return ; } return (
); }