Data Display
Tables, badges, avatars, and data presentation components.
Components for displaying data, user information, and status indicators.
Table
Basic table for structured data.
import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from '@kit/ui/table';<Table> <TableHeader> <TableRow> <TableHead>Name</TableHead> <TableHead>Email</TableHead> <TableHead>Status</TableHead> </TableRow> </TableHeader> <TableBody> <TableRow> <TableCell>John Doe</TableCell> <TableCell>john@example.com</TableCell> <TableCell>Active</TableCell> </TableRow> </TableBody></Table>Data Table
Advanced table with sorting, filtering, and pagination using TanStack Table.
import { DataTable } from '@kit/ui/data-table';import { ColumnDef } from '@tanstack/react-table';const columns: ColumnDef<User>[] = [ { accessorKey: 'name', header: 'Name', }, { accessorKey: 'email', header: 'Email', }, { accessorKey: 'status', header: 'Status', },];<DataTable data={users} columns={columns} pageIndex={0} pageSize={10} pageCount={totalPages}/>With Pagination Callbacks
<DataTable data={users} columns={columns} pageIndex={page} pageSize={10} pageCount={totalPages} onPaginationChange={(pagination) => { setPage(pagination.pageIndex); }}/>Badge
Small label for status or categories.
import { Badge } from '@kit/ui/badge';<Badge>Default</Badge><Badge variant="secondary">Secondary</Badge><Badge variant="outline">Outline</Badge><Badge variant="destructive">Destructive</Badge>Avatar
User avatar with image and fallback.
import { Avatar, AvatarImage, AvatarFallback } from '@kit/ui/avatar';<Avatar> <AvatarImage src="/avatar.jpg" alt="User" /> <AvatarFallback>JD</AvatarFallback></Avatar>Profile Avatar
Avatar component with automatic initials fallback.
import { ProfileAvatar } from '@kit/ui/profile-avatar';{/* With image */}<ProfileAvatar displayName="John Doe" pictureUrl="/avatar.jpg"/>{/* Initials fallback */}<ProfileAvatar displayName="John Doe"/>{/* Single letter */}<ProfileAvatar text="J" />Empty State
Placeholder for empty content areas.
import { EmptyState, EmptyStateHeading, EmptyStateText, EmptyStateButton } from '@kit/ui/empty-state';<EmptyState> <EmptyStateHeading>No items found</EmptyStateHeading> <EmptyStateText> Get started by creating your first item. </EmptyStateText> <EmptyStateButton>Create Item</EmptyStateButton></EmptyState>With Icon
import { EmptyMedia } from '@kit/ui/empty-state';import { Inbox } from 'lucide-react';<EmptyState> <EmptyMedia variant="icon"> <Inbox /> </EmptyMedia> <EmptyStateHeading>No messages</EmptyStateHeading> <EmptyStateText>Your inbox is empty.</EmptyStateText></EmptyState>Skeleton
Loading placeholder animation.
import { Skeleton } from '@kit/ui/skeleton';{/* Text skeleton */}<Skeleton className="h-4 w-48" />{/* Avatar skeleton */}<Skeleton className="h-12 w-12 rounded-full" />{/* Card skeleton */}<div className="space-y-2"> <Skeleton className="h-4 w-full" /> <Skeleton className="h-4 w-3/4" /> <Skeleton className="h-4 w-1/2" /></div>Chart
Chart components using Recharts.
import { ChartContainer, ChartTooltip, ChartTooltipContent } from '@kit/ui/chart';import { Bar, BarChart, XAxis, YAxis } from 'recharts';const chartConfig = { value: { label: 'Value', color: 'hsl(var(--primary))', },};<ChartContainer config={chartConfig}> <BarChart data={data}> <XAxis dataKey="name" /> <YAxis /> <ChartTooltip content={<ChartTooltipContent />} /> <Bar dataKey="value" fill="var(--color-value)" /> </BarChart></ChartContainer>Next: Feedback & Loading →