Table
| Name | Status | |
|---|---|---|
| Ada Lovelace | ada@starwind.dev | Active |
| Grace Hopper | grace@starwind.dev | Inactive |
| Total: 2 users | ||
---import { Table, TableHeader, TableHead, TableBody, TableRow, TableCell, TableCaption, TableFoot } from "@/components/starwind/table";---
<Table class="max-w-md mx-auto"> <TableCaption>Example of a simple table</TableCaption> <TableHeader> <TableRow> <TableHead>Name</TableHead> <TableHead>Email</TableHead> <TableHead>Status</TableHead> </TableRow> </TableHeader> <TableBody> <TableRow> <TableCell>Ada Lovelace</TableCell> <TableCell>ada@starwind.dev</TableCell> <TableCell>Active</TableCell> </TableRow> <TableRow> <TableCell>Grace Hopper</TableCell> <TableCell>grace@starwind.dev</TableCell> <TableCell>Inactive</TableCell> </TableRow> </TableBody> <TableFoot> <TableRow> <TableCell colspan="3">Total: 2 users</TableCell> </TableRow> </TableFoot></Table>import { Table, TableHeader, TableHead, TableBody, TableRow, TableCell, TableCaption, TableFoot } from "@/components/starwind/table";
export function Example() { return ( <> <Table className="max-w-md mx-auto"> <TableCaption>Example of a simple table</TableCaption> <TableHeader> <TableRow> <TableHead>Name</TableHead> <TableHead>Email</TableHead> <TableHead>Status</TableHead> </TableRow> </TableHeader> <TableBody> <TableRow> <TableCell>Ada Lovelace</TableCell> <TableCell>ada@starwind.dev</TableCell> <TableCell>Active</TableCell> </TableRow> <TableRow> <TableCell>Grace Hopper</TableCell> <TableCell>grace@starwind.dev</TableCell> <TableCell>Inactive</TableCell> </TableRow> </TableBody> <TableFoot> <TableRow> <TableCell colSpan={3}>Total: 2 users</TableCell> </TableRow> </TableFoot> </Table> </> );}<script setup lang="ts">import { Table, TableHeader, TableHead, TableBody, TableRow, TableCell, TableCaption, TableFoot,} from "@/components/starwind/table";</script>
<template> <Table class="max-w-md mx-auto"> <TableCaption>Example of a simple table</TableCaption> <TableHeader> <TableRow> <TableHead>Name</TableHead> <TableHead>Email</TableHead> <TableHead>Status</TableHead> </TableRow> </TableHeader> <TableBody> <TableRow> <TableCell>Ada Lovelace</TableCell> <TableCell>ada@starwind.dev</TableCell> <TableCell>Active</TableCell> </TableRow> <TableRow> <TableCell>Grace Hopper</TableCell> <TableCell>grace@starwind.dev</TableCell> <TableCell>Inactive</TableCell> </TableRow> </TableBody> <TableFoot> <TableRow> <TableCell colspan="3">Total: 2 users</TableCell> </TableRow> </TableFoot> </Table></template>Installation
pnpx starwind@latest add table --framework astronpx starwind@latest add table --framework astroyarn dlx starwind@latest add table --framework astropnpx starwind@latest add table --framework reactnpx starwind@latest add table --framework reactyarn dlx starwind@latest add table --framework reactpnpx starwind@latest add table --framework vuenpx starwind@latest add table --framework vueyarn dlx starwind@latest add table --framework vueUsage
---import { Table, TableHeader, TableHead, TableBody, TableRow, TableCell, TableCaption, TableFoot } from "@/components/starwind/table";---
<Table class="max-w-md mx-auto"> <TableCaption>Example of a simple table</TableCaption> <TableHeader> <TableRow> <TableHead>Name</TableHead> <TableHead>Email</TableHead> <TableHead>Status</TableHead> </TableRow> </TableHeader> <TableBody> <TableRow> <TableCell>Ada Lovelace</TableCell> <TableCell>ada@starwind.dev</TableCell> <TableCell>Active</TableCell> </TableRow> <TableRow> <TableCell>Grace Hopper</TableCell> <TableCell>grace@starwind.dev</TableCell> <TableCell>Inactive</TableCell> </TableRow> </TableBody> <TableFoot> <TableRow> <TableCell colspan="3">Total: 2 users</TableCell> </TableRow> </TableFoot></Table>import { Table, TableHeader, TableHead, TableBody, TableRow, TableCell, TableCaption, TableFoot } from "@/components/starwind/table";
export function Example() { return ( <> <Table className="max-w-md mx-auto"> <TableCaption>Example of a simple table</TableCaption> <TableHeader> <TableRow> <TableHead>Name</TableHead> <TableHead>Email</TableHead> <TableHead>Status</TableHead> </TableRow> </TableHeader> <TableBody> <TableRow> <TableCell>Ada Lovelace</TableCell> <TableCell>ada@starwind.dev</TableCell> <TableCell>Active</TableCell> </TableRow> <TableRow> <TableCell>Grace Hopper</TableCell> <TableCell>grace@starwind.dev</TableCell> <TableCell>Inactive</TableCell> </TableRow> </TableBody> <TableFoot> <TableRow> <TableCell colSpan={3}>Total: 2 users</TableCell> </TableRow> </TableFoot> </Table> </> );}<script setup lang="ts">import { Table, TableHeader, TableHead, TableBody, TableRow, TableCell, TableCaption, TableFoot,} from "@/components/starwind/table";</script>
<template> <Table class="max-w-md mx-auto"> <TableCaption>Example of a simple table</TableCaption> <TableHeader> <TableRow> <TableHead>Name</TableHead> <TableHead>Email</TableHead> <TableHead>Status</TableHead> </TableRow> </TableHeader> <TableBody> <TableRow> <TableCell>Ada Lovelace</TableCell> <TableCell>ada@starwind.dev</TableCell> <TableCell>Active</TableCell> </TableRow> <TableRow> <TableCell>Grace Hopper</TableCell> <TableCell>grace@starwind.dev</TableCell> <TableCell>Inactive</TableCell> </TableRow> </TableBody> <TableFoot> <TableRow> <TableCell colspan="3">Total: 2 users</TableCell> </TableRow> </TableFoot> </Table></template>Composition
Use semantic table parts in the same order as native table markup:
Table├── TableCaption├── TableHeader│ └── TableRow│ └── TableHead├── TableBody│ └── TableRow│ └── TableCell└── TableFoot └── TableRow └── TableCellDynamic Data Table Example
Render a table of recent orders using Astro frontmatter and Starwind UI Table components:
| Order | Status | Customer | Total |
|---|---|---|---|
| ORD1001 | Shipped | Alice Smith | $120.00 |
| ORD1002 | Processing | Bob Johnson | $80.00 |
| ORD1003 | Delivered | Charlie Rose | $200.00 |
| ORD1004 | Cancelled | Dana Lee | $50.00 |
| Total Orders | $450.00 | ||
---import { Table, TableBody, TableCaption, TableCell, TableFoot, TableHead, TableHeader, TableRow,} from "@/components/starwind/table";
const orders = [ { order: "ORD1001", status: "Shipped", total: "$120.00", customer: "Alice Smith" }, { order: "ORD1002", status: "Processing", total: "$80.00", customer: "Bob Johnson" }, { order: "ORD1003", status: "Delivered", total: "$200.00", customer: "Charlie Rose" }, { order: "ORD1004", status: "Cancelled", total: "$50.00", customer: "Dana Lee" },];---<Table> <TableCaption>A list of your recent orders.</TableCaption> <TableHeader> <TableRow> <TableHead class="w-[120px]">Order</TableHead> <TableHead>Status</TableHead> <TableHead>Customer</TableHead> <TableHead class="text-right">Total</TableHead> </TableRow> </TableHeader> <TableBody> {orders.map(order => ( <TableRow> <TableCell class="font-medium">{order.order}</TableCell> <TableCell>{order.status}</TableCell> <TableCell>{order.customer}</TableCell> <TableCell class="text-right">{order.total}</TableCell> </TableRow> ))} </TableBody> <TableFoot> <TableRow> <TableCell colspan="3">Total Orders</TableCell> <TableCell class="text-right">$450.00</TableCell> </TableRow> </TableFoot></Table>import { Table, TableBody, TableCaption, TableCell, TableFoot, TableHead, TableHeader, TableRow } from "@/components/starwind/table";
const orders = [ { order: "ORD1001", status: "Shipped", total: "$120.00", customer: "Alice Smith" }, { order: "ORD1002", status: "Processing", total: "$80.00", customer: "Bob Johnson" }, { order: "ORD1003", status: "Delivered", total: "$200.00", customer: "Charlie Rose" }, { order: "ORD1004", status: "Cancelled", total: "$50.00", customer: "Dana Lee" },];
export function Example() { return ( <> <Table> <TableCaption>A list of your recent orders.</TableCaption> <TableHeader> <TableRow> <TableHead className="w-[120px]">Order</TableHead> <TableHead>Status</TableHead> <TableHead>Customer</TableHead> <TableHead className="text-right">Total</TableHead> </TableRow> </TableHeader> <TableBody> {orders.map((order) => ( <TableRow key={order.order}> <TableCell className="font-medium">{order.order}</TableCell> <TableCell>{order.status}</TableCell> <TableCell>{order.customer}</TableCell> <TableCell className="text-right">{order.total}</TableCell> </TableRow> ))} </TableBody> <TableFoot> <TableRow> <TableCell colSpan={3}>Total Orders</TableCell> <TableCell className="text-right">$450.00</TableCell> </TableRow> </TableFoot> </Table> </> );}<script setup lang="ts">import { Table, TableBody, TableCaption, TableCell, TableFoot, TableHead, TableHeader, TableRow,} from "@/components/starwind/table";
const orders = [ { order: "ORD1001", status: "Shipped", total: "$120.00", customer: "Alice Smith" }, { order: "ORD1002", status: "Processing", total: "$80.00", customer: "Bob Johnson" }, { order: "ORD1003", status: "Delivered", total: "$200.00", customer: "Charlie Rose" }, { order: "ORD1004", status: "Cancelled", total: "$50.00", customer: "Dana Lee" },];</script>
<template> <Table> <TableCaption>A list of your recent orders.</TableCaption> <TableHeader> <TableRow> <TableHead class="w-[120px]">Order</TableHead> <TableHead>Status</TableHead> <TableHead>Customer</TableHead> <TableHead class="text-right">Total</TableHead> </TableRow> </TableHeader> <TableBody> <template v-for="order in orders" :key="order.order"> <TableRow> <TableCell class="font-medium">{{ order.order }}</TableCell> <TableCell>{{ order.status }}</TableCell> <TableCell>{{ order.customer }}</TableCell> <TableCell class="text-right">{{ order.total }}</TableCell> </TableRow> </template> </TableBody> <TableFoot> <TableRow> <TableCell colspan="3">Total Orders</TableCell> <TableCell class="text-right">$450.00</TableCell> </TableRow> </TableFoot> </Table></template>API Reference
Changelog
View version history v1.2.1 5 releases
v1.2.1
- Named the generated aggregate default export so React and Astro tooling can identify the installed component cleanly.
v1.2.0
- Added contract-generated Astro and React implementations while preserving the component’s existing public API and styling.
v1.1.2
- Refactor tailwind variants functions into separate
variants.tsfile
v1.1.0
- Add a
data-slotattribute to all components to enable global styling updates, replacing the currentdata-tableand similar attributes.
v1.0.0
- Initial component release with starwind v1.6.0