Data table
Table with header, rows, and pagination.
Preview
| Name | Role | Status | ||
|---|---|---|---|---|
| Jane Doe | jane@example.com | Admin | Active | |
| Alex Chen | alex@example.com | Member | Invited | |
| Sam Ortiz | sam@example.com | Member | Active | |
| Priya Patel | priya@example.com | Member | Suspended |
Code
import { MoreHorizontal } from "lucide-react"
import {
Badge,
Button,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
Pagination,
PaginationContent,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@smaller-earth/ui"
const rows = [
{ id: 1, name: "Jane Doe", email: "jane@example.com", status: "Active", role: "Admin" },
{ id: 2, name: "Alex Chen", email: "alex@example.com", status: "Invited", role: "Member" },
{ id: 3, name: "Sam Ortiz", email: "sam@example.com", status: "Active", role: "Member" },
{ id: 4, name: "Priya Patel", email: "priya@example.com", status: "Suspended", role: "Member" },
]
export function DataTable() {
return (
<div className="w-full space-y-4">
<Table>
<TableHeader>
<TableRow>
<TableHead>Name</TableHead>
<TableHead>Email</TableHead>
<TableHead>Role</TableHead>
<TableHead>Status</TableHead>
<TableHead className="w-0" />
</TableRow>
</TableHeader>
<TableBody>
{rows.map((r) => (
<TableRow key={r.id}>
<TableCell className="font-medium">{r.name}</TableCell>
<TableCell className="text-muted-foreground">{r.email}</TableCell>
<TableCell>{r.role}</TableCell>
<TableCell>
<Badge variant={r.status === "Active" ? "secondary" : r.status === "Suspended" ? "destructive" : "outline"}>
{r.status}
</Badge>
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="ghost" size="sm" aria-label="Row actions"><MoreHorizontal className="size-4" /></Button>} />
<DropdownMenuContent align="end">
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Resend invite</DropdownMenuItem>
<DropdownMenuItem>Remove</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
<Pagination>
<PaginationContent>
<PaginationItem><PaginationPrevious href="#" /></PaginationItem>
<PaginationItem><PaginationLink href="#" isActive>1</PaginationLink></PaginationItem>
<PaginationItem><PaginationLink href="#">2</PaginationLink></PaginationItem>
<PaginationItem><PaginationNext href="#" /></PaginationItem>
</PaginationContent>
</Pagination>
</div>
)
}