diff --git a/dump_invites.txt b/dump_invites.txt new file mode 100644 index 0000000..2c35e3f --- /dev/null +++ b/dump_invites.txt @@ -0,0 +1,352 @@ + + {/* Desktop Ledger Table (≥ 768px) */} + + + {/* Mobile Adaptive Cards View (< 768px) */} +
+ {invites.map((inv) => { + const usesCount = inv.uses_count || 0; + const maxUses = inv.max_uses; + const isUnlimited = maxUses === null; + const isExhausted = !isUnlimited && usesCount >= maxUses; + const isExpired = new Date(inv.expires_at) < new Date(); + const isActive = !isExhausted && !isExpired; + + return ( +
+
+
+ + {inv.code} + +
+ {inv.app_name || "Global / Open"} • Role:{" "} + {inv.role} +
+
+ + {isExhausted && ( + Exhausted + )} + {isExpired && !isExhausted && ( + Expired + )} + {isActive && Active} +
+ +
+
+ + Capacity:{" "} + {isUnlimited ? "Unlimited" : `${usesCount} / ${maxUses}`} + + + Expires: {new Date(inv.expires_at).toLocaleDateString()} + +
+ {!isUnlimited && ( +
+
+
+ )} +
+ +
+ {isActive && ( + + )} + {usesCount > 0 && ( + + )} + {isActive && ( + + )} +
+
+ ); + })} +
+ + {/* Redemptions Modal */} + + + + +