"use client"; import { UserMinus } from "lucide-react"; import { useState, useTransition } from "react"; import { toast } from "sonner"; import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { initials } from "@/components/layout/user-menu"; import { tr } from "@/i18n/tr"; import type { ActionResult } from "@/lib/action-result"; import { HOUSEHOLD_ROLES, type HouseholdRole } from "../types"; export type MemberRow = { userId: string; name: string; username: string; role: HouseholdRole; banned: boolean; }; type Props = { members: MemberRow[]; householdName: string; currentUserId: string; canManage: boolean; onSetRole: (userId: string, role: HouseholdRole) => Promise; onRemove: (userId: string) => Promise; }; /** Hane üyeleri: owner (veya admin) rol değiştirir / haneden çıkarır. Kurallar sunucuda. */ export function MembersList({ members, householdName, currentUserId, canManage, onSetRole, onRemove, }: Props) { const [pending, startTransition] = useTransition(); const [removing, setRemoving] = useState(null); const t = tr.settings; function changeRole(member: MemberRow, role: HouseholdRole) { startTransition(async () => { const result = await onSetRole(member.userId, role); if (result.ok) toast.success(t.roleChanged(member.name)); else toast.error(result.error); }); } function confirmRemove() { const member = removing; if (!member) return; startTransition(async () => { const result = await onRemove(member.userId); if (result.ok) { toast.success(t.memberRemoved(member.name)); setRemoving(null); } else { toast.error(result.error); } }); } return ( <>
    {members.map((m) => (
  • {initials(m.name)}

    {m.name} {m.userId === currentUserId ? ( ({tr.adminUsers.you}) ) : null}

    @{m.username}

    {m.banned ? {t.banned} : null} {canManage ? (
    ) : ( {tr.household.roles[m.role]} )}
  • ))}
!open && setRemoving(null)}> {t.removeTitle} {removing ? t.removeDescription(removing.name, householdName) : null} {tr.common.cancel} ); }