diff --git a/apps/web/app/(admin)/memberships/page.tsx b/apps/web/app/(admin)/memberships/page.tsx index 4702712..4e2c1c9 100644 --- a/apps/web/app/(admin)/memberships/page.tsx +++ b/apps/web/app/(admin)/memberships/page.tsx @@ -68,10 +68,10 @@ interface MembershipsResponse { } const statusFilters = [ - { value: "", label: "Todos" }, - { value: "ACTIVE", label: "Activas" }, - { value: "EXPIRED", label: "Expiradas" }, - { value: "CANCELLED", label: "Canceladas" }, + { value: "", label: "All" }, + { value: "ACTIVE", label: "Active" }, + { value: "EXPIRED", label: "Expired" }, + { value: "CANCELLED", label: "Cancelled" }, ]; export default function MembershipsPage() { @@ -104,12 +104,12 @@ export default function MembershipsPage() { setLoadingPlans(true); try { const response = await fetch("/api/membership-plans?includeInactive=true"); - if (!response.ok) throw new Error("Error al cargar planes"); + if (!response.ok) throw new Error("Error loading plans"); const data = await response.json(); setPlans(data); } catch (err) { console.error("Error fetching plans:", err); - setError(err instanceof Error ? err.message : "Error desconocido"); + setError(err instanceof Error ? err.message : "Unknown error"); } finally { setLoadingPlans(false); } @@ -125,7 +125,7 @@ export default function MembershipsPage() { if (searchQuery) params.append("search", searchQuery); const response = await fetch(`/api/memberships?${params.toString()}`); - if (!response.ok) throw new Error("Error al cargar membresias"); + if (!response.ok) throw new Error("Error loading memberships"); const data: MembershipsResponse = await response.json(); setMemberships(data.data); @@ -138,7 +138,7 @@ export default function MembershipsPage() { }); } catch (err) { console.error("Error fetching memberships:", err); - setError(err instanceof Error ? err.message : "Error desconocido"); + setError(err instanceof Error ? err.message : "Unknown error"); } finally { setLoadingMemberships(false); } @@ -209,7 +209,7 @@ export default function MembershipsPage() { if (!response.ok) { const errorData = await response.json(); - throw new Error(errorData.error || "Error al guardar plan"); + throw new Error(errorData.error || "Error saving plan"); } setShowPlanForm(false); @@ -224,7 +224,7 @@ export default function MembershipsPage() { // Handle plan deletion const handleDeletePlan = async (plan: MembershipPlan) => { - if (!confirm(`¿Estas seguro de eliminar el plan "${plan.name}"? Esta accion lo desactivara.`)) { + if (!confirm(`Are you sure you want to delete the plan "${plan.name}"? This action will deactivate it.`)) { return; } @@ -235,13 +235,13 @@ export default function MembershipsPage() { if (!response.ok) { const errorData = await response.json(); - throw new Error(errorData.error || "Error al eliminar plan"); + throw new Error(errorData.error || "Error deleting plan"); } await fetchPlans(); } catch (err) { console.error("Error deleting plan:", err); - setError(err instanceof Error ? err.message : "Error desconocido"); + setError(err instanceof Error ? err.message : "Unknown error"); } }; @@ -262,7 +262,7 @@ export default function MembershipsPage() { if (!response.ok) { const errorData = await response.json(); - throw new Error(errorData.error || "Error al asignar membresia"); + throw new Error(errorData.error || "Error assigning membership"); } setShowAssignDialog(false); @@ -295,19 +295,19 @@ export default function MembershipsPage() { if (!response.ok) { const errorData = await response.json(); - throw new Error(errorData.error || "Error al renovar membresia"); + throw new Error(errorData.error || "Error renewing membership"); } await Promise.all([fetchMemberships(), fetchPlans()]); } catch (err) { console.error("Error renewing membership:", err); - setError(err instanceof Error ? err.message : "Error desconocido"); + setError(err instanceof Error ? err.message : "Unknown error"); } }; // Handle membership cancellation const handleCancelMembership = async (membership: Membership) => { - if (!confirm(`¿Estas seguro de cancelar la membresia de ${membership.client.firstName} ${membership.client.lastName}?`)) { + if (!confirm(`Are you sure you want to cancel the membership for ${membership.client.firstName} ${membership.client.lastName}?`)) { return; } @@ -318,13 +318,13 @@ export default function MembershipsPage() { if (!response.ok) { const errorData = await response.json(); - throw new Error(errorData.error || "Error al cancelar membresia"); + throw new Error(errorData.error || "Error cancelling membership"); } await Promise.all([fetchMemberships(), fetchPlans()]); } catch (err) { console.error("Error cancelling membership:", err); - setError(err instanceof Error ? err.message : "Error desconocido"); + setError(err instanceof Error ? err.message : "Unknown error"); } }; @@ -336,9 +336,9 @@ export default function MembershipsPage() { {/* Header */}
-

Membresias

+

Memberships

- Gestiona planes y membresias de tus clientes + Manage plans and memberships for your players

@@ -374,7 +374,7 @@ export default function MembershipsPage() {
-

Membresias Activas

+

Active Memberships

{stats.totalActive}

@@ -396,7 +396,7 @@ export default function MembershipsPage() {
-

Por Expirar

+

Expiring Soon

{stats.expiringSoon}

@@ -412,7 +412,7 @@ export default function MembershipsPage() {
-

Planes Activos

+

Active Plans

{activePlans.length}

@@ -428,7 +428,7 @@ export default function MembershipsPage() {
-

Total Suscriptores

+

Total Subscribers

{plans.reduce((sum, p) => sum + p.subscriberCount, 0)}

@@ -441,12 +441,12 @@ export default function MembershipsPage() { {/* Plans Section */}
-

Planes de Membresia

+

Membership Plans

@@ -454,7 +454,7 @@ export default function MembershipsPage() {
-

Cargando planes...

+

Loading plans...

) : plans.length === 0 ? ( @@ -468,10 +468,10 @@ export default function MembershipsPage() { > -

No hay planes

-

Crea tu primer plan de membresia

+

No plans

+

Create your first membership plan

@@ -496,12 +496,12 @@ export default function MembershipsPage() { {/* Memberships Section */}
-

Membresias

+

Memberships

@@ -513,7 +513,7 @@ export default function MembershipsPage() {
setSearchQuery(e.target.value)} className="w-full" @@ -527,7 +527,7 @@ export default function MembershipsPage() { onChange={(e) => setPlanFilter(e.target.value)} className="flex h-10 w-full rounded-md border border-primary-200 bg-white px-3 py-2 text-sm ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2" > - + {activePlans.map((plan) => (
{plan.description && ( @@ -72,7 +72,7 @@ export function PlanCard({ plan, onEdit, onDelete, isAdmin = false }: PlanCardPr {formatCurrency(price)}
- /{plan.durationMonths} {plan.durationMonths === 1 ? "mes" : "meses"} + /{plan.durationMonths} {plan.durationMonths === 1 ? "month" : "months"}
@@ -87,8 +87,8 @@ export function PlanCard({ plan, onEdit, onDelete, isAdmin = false }: PlanCardPr
-

{freeHours} horas gratis

-

de cancha al mes

+

{freeHours} free hours

+

of court time per month

)} @@ -102,8 +102,8 @@ export function PlanCard({ plan, onEdit, onDelete, isAdmin = false }: PlanCardPr
-

{discountPercent}% descuento

-

en reservas adicionales

+

{discountPercent}% discount

+

on additional bookings

)} @@ -117,8 +117,8 @@ export function PlanCard({ plan, onEdit, onDelete, isAdmin = false }: PlanCardPr
-

{storeDiscount}% descuento

-

en tienda

+

{storeDiscount}% discount

+

in store

)} @@ -126,7 +126,7 @@ export function PlanCard({ plan, onEdit, onDelete, isAdmin = false }: PlanCardPr {/* Other Benefits */} {otherBenefits.length > 0 && (
-

Beneficios adicionales:

+

Additional benefits: