Components
- Accordion new
- ActionSheet new
- Alert new
- Alert Dialog new
- Angle Slider new
- Autocomplete new
- Avatar new
- Badge new
- Breadcrumb new
- Button new
- Button Group new
- Card new
- Carousel new
- Checkbox new
- Clipboard new
- Collapsible new
- Color Picker new
- Date Input new
- Date Picker new
- Dialog new
- DialogCaller new
- Drawer beta
- Editable new
- Empty new
- Field new
- Fieldset new
- File Upload new
- Filters new
- Floating Panel new
- Hover Card new
- Image new
- Image Cropper new
- Input new
- Input Group new
- Json Tree View new
- Kbd new
- Listbox new
- Marquee new
- Menu new
- Number Input new
- Pagination new
- Password Input new
- PhoneField new
- Pin Input new
- Popover new
- Progress Circular new
- Progress Linear new
- Qr Code new
- Radio Group new
- Rating Group new
- Scroll Area new
- ScrollSpy new
- Segment Group new
- Select new
- Separator new
- Sidebar new
- Signature Pad new
- Skeleton new
- Slider new
- Splitter new
- Steps new
- Switch new
- Table new
- Tabs new
- Tags Input new
- Textarea new
- Timeline new
- Timer new
- Toast new
- Toc new
- Toggle new
- Toggle Group new
- Tooltip new
- Tour new
- Tree View new
- Typography new
Table
Vue table layout with header, body, footer, and empty states for structured data display.
Features
- Composable — Flexible slot-based layout with
Table.Header,Table.Body,Table.Footer,Table.Row,Table.Head, andTable.Cell - Scrollable — Root wraps the table in an overflow container for wide datasets
- Empty state — Built-in
Table.Emptyfor zero-result views - Customizable — Override any part with the
classprop
Installation
Install from the Vuzeno registry:
bunx --bun shadcn-vue@latest add https://vuzeno.com/r/table.json
npx shadcn-vue@latest add https://vuzeno.com/r/table.json
yarn dlx shadcn-vue@latest add https://vuzeno.com/r/table.json
pnpm dlx shadcn-vue@latest add https://vuzeno.com/r/table.json
Composition
Table.Root
├── Table.Caption
├── Table.Header
│ └── Table.Row
│ └── Table.Head
├── Table.Body
│ └── Table.Row
│ └── Table.Cell
└── Table.Footer
└── Table.Row
└── Table.Cell
Usage
<script setup lang="ts">
import { Table } from "@/components/ui/table";
</script>
<template>
<Table.Root>
<Table.Caption>A list of your recent invoices.</Table.Caption>
<Table.Header>
<Table.Row>
<Table.Head>Invoice</Table.Head>
<Table.Head>Status</Table.Head>
<Table.Head class="text-right">Amount</Table.Head>
</Table.Row>
</Table.Header>
<Table.Body>
<Table.Row>
<Table.Cell>INV001</Table.Cell>
<Table.Cell>Paid</Table.Cell>
<Table.Cell class="text-right">$250.00</Table.Cell>
</Table.Row>
</Table.Body>
</Table.Root>
</template>
Examples
Empty state
Use Table.Empty when there are no rows to display.
With filters
Compose Filters above the table to narrow rows client-side. Use Table.Empty when nothing matches.