{group.name}
+ {group.description ? ( +{group.description}
+ ) : null} +-
+
Aún sin plan de cobro configurado.
+ )} + +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. +
+ ) : ( ++ Si avisás con anticipación, tu cupo se libera para una clase de recuperación. +
+Hoy · {time} hs
+{session.groupName}
+{subtitle}
: null} ++ ¿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} +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. +
+{student.fullName}
+{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. +
+ +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%. +
+{label}
+{value}
+ {hint ?{hint}
: null} ++ {action.student.fullName}{' '} + {action.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. + > + )} +
+{selectedAttendee.fullName}
++ Incorporado el{' '} + {new Date(selectedAttendee.createdAt).toLocaleDateString('es-ES', { + day: 'numeric', + month: 'long', + year: 'numeric', + })} +
+Link para avisar ausencias
+
+ {absenceNotifyUrl}
+
+
+ + 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? +
++ Arrastra tu archivo aquí o haz clic para seleccionarlo +
+Formatos soportados: CSV (.csv) o Excel (.xlsx)
+ + {fileName ? ( +| Nombre | +Teléfono | +Estado | ++ | |
|---|---|---|---|---|
| + {contact.fullName || Sin nombre} + | ++ {contact.phone || Sin teléfono} + | +{contact.email || '—'} | +
+ {contact.isValid ? (
+ |
+ + + | +
+ El grupo {group?.name} ya alcanzó su cupo de{' '} + {group?.capacity} miembros. ¿Qué deseas hacer con{' '} + + {`${capacityPayload.firstName.trim()} ${(capacityPayload.lastName ?? '').trim()}`.trim()} + + ? +
++ Si eliges agregarlo de todos modos, el grupo quedará por encima de su cupo. +
++ {label} +
+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}` : ''} +
+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, podés pegarlo + directamente con Ctrl+V{' '} + o Cmd+V. +
+ > + )} +| Nombre | +Teléfono | ++ |
|---|---|---|
|
+
+
+
+ {attendee.fullName.charAt(0).toUpperCase()}
+
+ {attendee.fullName}
+ |
+ + {attendee.phone || —} + | +
+ |
+
+ {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. +
+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í. +
++ {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} + +| Nombre | +Teléfono | ++ |
|---|---|---|
|
+
+
+
+ {entry.fullName.charAt(0).toUpperCase()}
+
+
+
+ {entry.fullName} + {entry.notes ? ( +{entry.notes} + ) : null} + |
+ {entry.phone} | +
+ |
+
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. +
+ )} ++ {nextClass.isNow ? 'Clase en curso' : 'Próxima clase'} +
++ 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'}` + : ''} +
+{payment.attendeeName}
++ {payment.groupName} · {formatRelativeDateTime(payment.dueDate)} +
++ Profesor: {group.teacherName} +
+ {group.description ?{group.description}
: null} + ++ No pudimos encontrar este grupo. Por favor consulta con tu profesor para solicitar un nuevo enlace de + invitación. +
++ Ingresa tus datos para registrarte en la lista de alumnos de este grupo. +
+Cargando información del grupo...
++ 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. +
+{waitlistMessage}
++ El profesor se pondrá en contacto contigo cuando haya un lugar disponible en{' '} + {group.name}. +
++ 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. +
++ Iniciá sesión para configurar tus cobros y crear tu primer grupo. +
+ ++ 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}
+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
+