
Team members table with avatars, roles, and status
@reui
c-table-6.tsx
import { Badge } from "@/components/reui/badge"
import { Frame, FramePanel } from "@/components/reui/frame"
import {
Avatar,
AvatarFallback,
AvatarImage,
} from "@/components/ui/avatar"
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table"
const members = [
{
name: "Sarah Chen",
email: "sarah@example.com",
avatar:
"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=96&h=96&dpr=2&q=80",
role: "Admin",
roleVariant: "default" as const,
status: "Active",
statusVariant: "success-light" as const,
},
{
name: "Marcus Johnson",
email: "marcus@example.com",
avatar:
"https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=96&h=96&dpr=2&q=80",
role: "Developer",
roleVariant: "info-light" as const,
status: "Active",
statusVariant: "success-light" as const,
},
{
name: "Emily Park",
email: "emily@example.com",
avatar:
"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=96&h=96&dpr=2&q=80",
role: "Designer",
roleVariant: "warning-light" as const,
status: "Away",
statusVariant: "warning-light" as const,
},
{
name: "David Kim",
email: "david@example.com",
avatar:
"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=96&h=96&dpr=2&q=80",
role: "Viewer",
roleVariant: "outline" as const,
status: "Offline",
statusVariant: "outline" as const,
},
]
export function Pattern() {
return (
<div className="mx-auto flex w-full max-w-2xl flex-col">
<Frame spacing="xs">
<FramePanel className="p-0!">
<Table>
<TableHeader>
<TableRow>
<TableHead>Member</TableHead>
<TableHead>Role</TableHead>
<TableHead>Status</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{members.map((member) => (
<TableRow key={member.email}>
<TableCell>
<div className="flex items-center gap-3">
<Avatar size="sm">
<AvatarImage src={member.avatar} alt={member.name} />
<AvatarFallback>
{member.name
.split(" ")
.map((n) => n[0])
.join("")}
</AvatarFallback>
</Avatar>
<div className="flex flex-col">
<span className="text-sm font-medium">
{member.name}
</span>
<span className="text-muted-foreground text-xs">
{member.email}
</span>
</div>
</div>
</TableCell>
<TableCell>
<Badge variant={member.roleVariant} size="sm">
{member.role}
</Badge>
</TableCell>
<TableCell>
<Badge variant={member.statusVariant} size="sm">
{member.status}
</Badge>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</FramePanel>
</Frame>
</div>
)
}






























