{label}
-{value}
- {hint ?{hint}
: null} -diff --git a/apps/web/src/components/auth/AuthShell.tsx b/apps/web/src/components/auth/AuthShell.tsx deleted file mode 100644 index f080c85..0000000 --- a/apps/web/src/components/auth/AuthShell.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import type { ReactNode } from 'react' -import { Logo } from '../brand' - -export type AuthShellProps = { - title: string - subtitle?: string - children: ReactNode -} - -export function AuthShell({ title, subtitle, children }: AuthShellProps) { - return ( -
{subtitle}
: null} -- Tu grupo se creó y ya podés empezar a cobrar a tus miembros. -
-- {formatSchedule(group.days ?? [], group.time)} -
-- Vas a cobrar con {providerName} en modo - prueba. -
-- Ya podés dejar listo tu primer grupo para cobrar con{' '} - {PAYMENT_PROVIDERS.find((p) => p.value === connected.provider)?.name ?? ''}. -
-Cuenta conectada
-- Los pagos de tus miembros van a llegar por esta plataforma. -
-- Por ahora la conexión se hace en modo prueba (sandbox). Más adelante vas a poder - vincular tu cuenta real de {selected === 'STRIPE' ? 'Stripe' : 'Mercado Pago'}. -
-- No pudimos conectar la cuenta. Intentalo de nuevo. -
- ) : null} - -- Vamos a configurar tu cuenta en 3 pasos. Vas a tardar menos de 5 minutos. -
-{title}
-{description}
-Cargando tus clases...
-- No pudimos identificarte con este enlace. Consultá con tu profesor para - solicitar uno nuevo. -
-- Grupo: {details.groupName} -
-- No tenés clases programadas para hoy. Si necesitás avisar de todas formas, - contactá a tu profesor. -
- ) : ( -- Hoy · {time} hs -
-- {session.groupName} -
-- Si avisás con anticipación, tu cupo se libera para una clase de recuperación. -
-{label}
-{value}
- {hint ?{hint}
: null} -Verificá tu conexión e intentá de nuevo.
- -- Asistencia y gestión de riesgo de {groupName ?? 'tu grupo'}. -
-- Alumnos con ausencias consecutivas o baja asistencia mensual. -
- - {atRisk.length === 0 ? ( -¡Sin alumnos en riesgo!
-- No hay ausencias consecutivas ni asistencia por debajo del 50%. -
-- {statusAction.student.fullName}{' '} - {statusAction.status === 'DROPPED' ? ( - <> - dejará de asistir al grupo y {groupName}. Su - vacante quedará disponible para otro alumno, y - su historial de asistencia se conservará. - > - ) : ( - <> - será pausado en{' '} - {groupName}. Su vacante quedará{' '} - libre y podés reactivarla en cualquier - momento. - > - )} -
-- ¿No tenés cuenta?{' '} - - Registrate - -
-- ¿Ya tenés cuenta?{' '} - - Iniciá sesión - -
-- Tu cuenta quedó verificada. Te estamos llevando a Gruperly… -
- ) : status === 'error' ? ( -- El vínculo de verificación no es válido o expiró. -
- ) : ( -- Te enviamos un correo a {email} para - confirmar tu cuenta. -
- )} - - {status === 'success' ? ( - - Ir a Gruperly - - ) : null} - - {status === 'error' ? ( - - Intentar iniciar sesión - - ) : null} -{student.fullName}
-No pudimos cargar la lista de alumnos.
- -- {startTime ? `Hoy · ${startTime} hs` : 'Clase de hoy'} -
-Este grupo no tiene alumnos
-- Agregá miembros desde la ficha del grupo para tomar asistencia. -
-No se pudo cargar la información de este grupo.
- -{group.description}
- ) : null} -Horario
-- {(group.days?.length ?? 0) > 0 ? formatSchedule(group.days ?? [], group.time) : 'Sin horario definido'} -
-Miembros & Cupo
-- {attendees.length} inscritos {waitlistTotal > 0 ? ` · ${waitlistTotal} en espera` : ''} - {group.capacity ? ` · Cupo de ${group.capacity}` : ''} -
-Cobro
-- {group.price != null ? formatPrice(group.price) : 'Sin precio'} - {group.billingType ? ` · ${BILLING_LABELS[group.billingType]}` : ''} - {group.dueDay ? ` · Vence día ${group.dueDay}` : ''} -
-- {listSection === 'members' - ? 'Listado de todos los miembros incorporados al grupo.' - : 'Personas que esperan un cupo libre en el grupo. Al pasar a alguien al grupo, se crea automáticamente su registro como miembro.'} -
-Todavía no hay miembros en este grupo
-- Puedes compartir el enlace de invitación único o agregar miembros de forma manual o masiva. -
-| Nombre | -Teléfono | -- |
|---|---|---|
|
-
-
-
- {attendee.fullName.charAt(0).toUpperCase()}
-
- {attendee.fullName}
- |
- - {attendee.phone || —} - | -
- |
-
No hay nadie en la lista de espera
-- Cuando el grupo alcance su cupo, las personas podrán sumarse a la espera y podrás pasarlas al grupo desde aquí. -
-| Nombre | -Teléfono | -- |
|---|---|---|
|
-
-
-
- {entry.fullName.charAt(0).toUpperCase()}
-
-
-
- {entry.fullName} - {entry.notes ? ( -{entry.notes} - ) : null} - |
- - {entry.phone} - | -
- |
-
Vista previa del mensaje para WhatsApp:
- -- 💡 Al hacer clic en Abrir en WhatsApp, el mensaje completo se copia automáticamente al portapapeles. Si WhatsApp Web solo carga el enlace, puedes pegarlo directamente con Ctrl+V o Cmd+V. -
- > - )} -- Arrastra tu archivo aquí o haz clic para seleccionarlo -
-- Formatos soportados: CSV (.csv) o Excel (.xlsx) -
- - {fileName ? ( -| Nombre | -Teléfono | -Estado | -- | |
|---|---|---|---|---|
| - {c.fullName || Sin nombre} - | -- {c.phone || Sin teléfono} - | -- {c.email || '—'} - | -
- {c.isValid ? (
- |
- - - | -
- El grupo {group.name} ya alcanzó su cupo de{' '} - {group.capacity} miembros. ¿Qué deseas hacer con{' '} - - {`${pendingCapacityPayload.firstName.trim()} ${pendingCapacityPayload.lastName.trim()}`.trim()} - - ? -
-- Si eliges agregarlo de todos modos, el grupo quedará por encima de su cupo. -
-- Estás por importar {validRowsCount} miembro(s), pero el grupo ya - tiene {attendeesTotal} inscrito(s) y su cupo es de{' '} - {group.capacity}. ¿Deseas importarlos de todos modos? -
-- {selectedAttendee.fullName} -
-- Incorporado el{' '} - {new Date(selectedAttendee.createdAt).toLocaleDateString('es-ES', { - day: 'numeric', - month: 'long', - year: 'numeric', - })} -
-- Link para avisar ausencias -
-
- {absenceNotifyUrl}
-
-
- - {attendeeToRemove.fullName} dejará de ser miembro del grupo{' '} - {group.name} - {firstWaitlistEntry ? ' y el cupo quedará libre.' : '.'} - {attendeeToRemove.phone ? ( - - Teléfono: {attendeeToRemove.phone} - - ) : null} -
- - {firstWaitlistEntry ? ( -- ¿Quieres pasar a{' '} - {firstWaitlistEntry.fullName}, el primero de - la lista de espera, al grupo? -
-- {selectedWaitlistEntry.fullName} -
-- En espera desde el{' '} - {new Date(selectedWaitlistEntry.createdAt).toLocaleDateString('es-ES', { - day: 'numeric', - month: 'long', - year: 'numeric', - })} -
-- El grupo alcanzó su cupo de miembros. Quita un miembro o aumenta el cupo para poder pasar - a esta persona al grupo. -
- ) : null} -- {label} -
-{group.description}
- ) : null} -Aún sin plan de cobro configurado.
- )} - -Tus grupos de cobranza.
-No pudimos cargar tus grupos.
- -Todavía no tenés grupos
-- Crea tu primer grupo para empezar a cobrar. -
- -- Clase de hoy -
-- {item.enrolledCount} inscrito{item.enrolledCount === 1 ? '' : 's'} - {item.availableSlots != null ? ` · ${item.availableSlots} cupo${item.availableSlots === 1 ? '' : 's'} disponible${item.availableSlots === 1 ? '' : 's'}` : ''} -
-- {nextClass.isNow ? 'Clase en curso' : 'Próxima clase'} -
-{payment.attendeeName}
-- {payment.groupName} · {formatRelativeDateTime(payment.dueDate)} -
-Tu actividad de cobros de un vistazo.
-No pudimos cargar tu resumen.
- -Todavía no tenés grupos
-- Crea tu primer grupo para empezar a cobrar. -
- -Sin clases programadas
-- Agregá días y horario a tus grupos para ver tu próxima clase acá. -
-- Sin cobros pendientes por ahora. -
- )} -Cargando información del grupo...
-- No pudimos encontrar este grupo. Por favor consulta con tu profesor para solicitar un nuevo enlace de invitación. -
-- Tus datos han sido registrados con éxito en el grupo{' '} - {group.name}. -
-- El profesor se pondrá en contacto contigo a la brevedad por WhatsApp para darte la bienvenida y coordinar los detalles de la clase. -
-- {waitlistInfo.message} -
-- El profesor se pondrá en contacto contigo cuando haya un lugar disponible en{' '} - {group.name}. -
-- Profesor: {group.teacherName} -
- {group.description ? ( -{group.description}
- ) : null} - - {/* Schedule & Price Details */} -- Ingresa tus datos para registrarte en la lista de alumnos de este grupo. -
-- Iniciá sesión para configurar tus cobros y crear tu primer grupo. -
- -Sigue los pagos de tus grupos.
-Tus datos personales.
-- {user?.name ?? 'Usuario'} -
-{user?.email}
-Todavía no registraste ninguna passkey.
- } - - return ( -- {passkey.name ?? 'Passkey'} -
-- {passkey.deviceType === 'singleDevice' ? 'Dispositivo' : 'Llave de seguridad'} ·{' '} - {new Date(passkey.createdAt).toLocaleDateString('es-AR')} -
-- Gestioná tu contraseña y tus llaves de acceso (passkeys). -
-{feedback}
- ) : null} - -Apariencia
-Tema claro u oscuro
-Configurá tu cuenta y tus grupos.
-Seguridad
-Contraseña y passkeys
-