diff --git a/app/(app)/members/members-client.tsx b/app/(app)/members/members-client.tsx index f3ff3ab..2f68eee 100644 --- a/app/(app)/members/members-client.tsx +++ b/app/(app)/members/members-client.tsx @@ -306,7 +306,7 @@ export function MembersClient({ members: initialMembers, currentRole, areaLeadRo
-
+
@@ -480,6 +480,58 @@ export function MembersClient({ members: initialMembers, currentRole, areaLeadRo
+ + {/* Mobile: stacked cards (the table is unusable on phones). */} +
+ {sortedMembers.length > 0 ? sortedMembers.map(m => { + const hasIssue = m.payment_status && m.payment_status !== 'current' + return ( +
+
+
+

{m.display_name}

+

{m.email}

+
+ + {m.tier?.toUpperCase()} + +
+

+ {m.status === 'unverified' ? 'unverified' : (m.payment_status || m.status)} + {m.joined_at ? ` · joined ${new Date(m.joined_at).toLocaleDateString('en-US', { month: 'short', year: 'numeric' })}` : ''} +

+
+ {isAdmin(currentRole) && m.status === 'unverified' && ( + + )} + {isAdmin(currentRole) && ( + + )} + {canGrantCerts && ( + + )} + {canManageCards && ( + + )} + {canViewForms && ( + + )} + {isAdmin(currentRole) && ( + + )} +
+
+ ) + }) : ( + + + + No members match this filter + Try a different tab, clear the search, or change the tier filter. + + + )} +
diff --git a/app/(app)/payments/payments-client.tsx b/app/(app)/payments/payments-client.tsx index 316a67a..f347004 100644 --- a/app/(app)/payments/payments-client.tsx +++ b/app/(app)/payments/payments-client.tsx @@ -202,7 +202,7 @@ export function PaymentsClient({ payments: initialPayments, members, integration
-
+
@@ -262,6 +262,46 @@ export function PaymentsClient({ payments: initialPayments, members, integration
+ + {/* Mobile: stacked cards */} +
+ {filtered.length > 0 ? filtered.map(p => ( +
+
+ {'$'}{Number(p.amount).toFixed(2)} + {p.platform?.toUpperCase()} +
+

+ {p.from_identifier}{p.from_note ? ` · "${p.from_note}"` : ''} + {p.transaction_date ? ` · ${new Date(p.transaction_date).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}` : ''} +

+
+ {p.link_status === 'linked' && p.space_members ? ( + + ✓ {p.space_members.display_name} + + ) : canEdit(currentRole) ? ( + + ) : ( + unlinked + )} +
+
+ )) : ( + + + + No payments yet + Synced and logged transactions show up here once they exist. + + + )} +