"use client"; import { Trash2, UserPlus } from "lucide-react"; import { useMemo, useState } from "react"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { cn } from "@/lib/utils"; interface Member { id: string; name: string; email: string; role: string; avatar?: string; status: "active" | "pending"; } interface SettingsMembers4Props { heading?: string; description?: string; members?: Member[]; className?: string; } const SettingsMembers4 = ({ heading = "اعضای سازمان", description = "کنترل کنید چه کسانی به داده‌ها و پایپ‌لاین سازمان دسترسی دارند.", members = [ { id: "1", name: "نینا کاویانی", email: "nina.k@startup.co", role: "مالک", avatar: "/block-media/shadcnblocks/block/avatar/avatar2.jpg", status: "active", }, { id: "2", name: "جمشید لیوایی", email: "james.l@startup.co", role: "مدیر عملیات", avatar: "/block-media/shadcnblocks/block/avatar/avatar3.jpg", status: "active", }, { id: "3", name: "راحله سبزواری", email: "rachel.g@startup.co", role: "کارشناس فروش", avatar: "/block-media/shadcnblocks/block/avatar/avatar9.jpg", status: "active", }, { id: "4", name: "عمران حسنی", email: "omar.h@startup.co", role: "کارشناس فروش", status: "pending", }, { id: "5", name: "لیلا وهابی", email: "lisa.w@startup.co", role: "عملیات بازاریابی", avatar: "/block-media/shadcnblocks/block/avatar/avatar10.jpg", status: "active", }, ], className, }: SettingsMembers4Props) => { const [selectedIds, setSelectedIds] = useState([]); const [isInviteOpen, setIsInviteOpen] = useState(false); const allSelected = selectedIds.length === members.length; const someSelected = selectedIds.length > 0 && !allSelected; const toggleAll = () => { if (allSelected) { setSelectedIds([]); } else { setSelectedIds(members.map((m) => m.id)); } }; const toggleMember = (id: string) => { setSelectedIds((prev) => prev.includes(id) ? prev.filter((i) => i !== id) : [...prev, id], ); }; const selectedCount = selectedIds.length; const roleStats = useMemo(() => { const stats: Record = {}; members.forEach((m) => { stats[m.role] = (stats[m.role] || 0) + 1; }); return stats; }, [members]); return (

{heading}

{description}

{Object.entries(roleStats).map(([role, count]) => ( {role}: {count.toLocaleString("fa-IR")} ))}
{selectedCount > 0 ? `${selectedCount.toLocaleString("fa-IR")} عضو انتخاب‌شده` : `${members.length.toLocaleString("fa-IR")} عضو سازمان`}
{selectedCount > 0 && ( )} دعوت به سازمان عضو جدیدی با نقش مشخص به سازمان دعوت کنید.
{ e.preventDefault(); setIsInviteOpen(false); }} className="space-y-4" >
    {members.map((member) => (
  • toggleMember(member.id)} aria-label={`انتخاب ${member.name}`} /> {member.name .split(" ") .map((n) => n[0]) .join("")}

    {member.name}

    {member.status === "pending" && ( دعوت در انتظار )}

    {member.email}

    {member.role}
  • ))}
); }; export { SettingsMembers4 };