Orders Table
A full-featured orders data table with search, filtering, sorting, column management, row selection, bulk actions, CSV export, and pagination.
| Order ID | Customer | Status | Date | Amount | Updated | Items | Payment Method | Channel | Tracking # | Actions | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ORD-1041 | Prestige Worldwide | Processing | Dec 10, 2026 | $7,479.11 | Apr 24 | prestigeworldwide.1041@orders.example.com | 26 | Credit Card | Phone | FDX-722284500 | ||
| ORD-1034 | Endframe | Pending | Dec 9, 2026 | $4,230.99 | 1d ago | endframe.1034@orders.example.com | 36 | Wire Transfer | Online Store | USPS-729054412 | ||
| ORD-1029 | Buy n Large | Delivered | Dec 7, 2026 | $5,331.21 | in 6d | buynlarge.1029@orders.example.com | 26 | Wire Transfer | Online Store | USPS-755387235 | ||
| ORD-1026 | Tyrell Corporation | Shipped | Nov 27, 2026 | $5,621.59 | in 1d | tyrellcorporation.1026@orders.example.com | 38 | Apple Pay | Phone | TRK-202316187 | ||
| ORD-1042 | Umbrella LLC | Shipped | Nov 25, 2026 | $7,450.93 | Apr 4 | umbrellallc.1042@orders.example.com | 3 | Invoice | Shopify | FDX-725140224 | ||
| ORD-1003 | Acme Corp | Cancelled | Nov 23, 2026 | $3,771.93 | Apr 22 | acmecorp.1003@orders.example.com | 13 | PayPal | Shopify | TRK-528658160 | ||
| ORD-1031 | Initech | Cancelled | Nov 23, 2026 | $1,751.57 | May 28 | initech.1031@orders.example.com | 7 | Wire Transfer | Phone | TRK-192769711 | ||
| ORD-1033 | Gringotts Bank | Processing | Nov 17, 2026 | $2,542.46 | Mar 23 | gringottsbank.1033@orders.example.com | 35 | Credit Card | Phone | USPS-335579455 | ||
| ORD-1022 | Lumon Industries | Delivered | Nov 16, 2026 | $7,309.81 | Apr 22 | lumonindustries.1022@orders.example.com | 14 | Wire Transfer | Shopify | — | ||
| ORD-1021 | Hooli | Pending | Nov 15, 2026 | $1,592.66 | Jan 23 | hooli.1021@orders.example.com | 19 | Credit Card | Amazon | TRK-051032367 |
Usage
OrdersTable is a ready-to-use block. Rendered on its own it shows a built-in
seeded sample dataset, so you can drop it in and see the full experience right away.
import { OrdersTable } from "@blakeui-pro/react";
function App() {
return <OrdersTable />;
}Your own data
Pass an orders array to render real data. Each order matches the exported
Order type.
import { OrdersTable, type Order } from "@blakeui-pro/react";
const orders: Order[] = [
{
id: "ORD-1001",
customer: "Acme Corp",
status: "Delivered",
date: "2026-04-12",
amount: 1299.0,
email: "orders@acme.example.com",
items: 3,
paymentMethod: "Credit Card",
channel: "Online Store",
trackingNumber: "TRK-000123456",
updatedAt: "2026-04-12T14:30:00",
updatedBy: "Jane Cooper",
},
// ...
];
function App() {
return <OrdersTable orders={orders} />;
}Need a quick dataset to prototype with? The built-in sample is exported too:
import { OrdersTable, ordersTableSampleData } from "@blakeui-pro/react";
// Also available as OrdersTable.sampleData
<OrdersTable orders={ordersTableSampleData} />;Loading & error states
OrdersTable is fully controlled. Drive isLoading and isError from your data
fetching, and respond to the retry affordance with onRetry.
function OrdersPage() {
const { data, isLoading, isError, refetch } = useOrders();
return (
<OrdersTable
orders={data}
isError={isError}
isLoading={isLoading}
onRetry={refetch}
/>
);
}isLoading— renders shimmer skeleton rows.isError— renders an inlineAlertwith a Retry button that callsonRetry.
Actions
Row-level buttons (view, edit, delete) and the bulk Selected Actions menu
report through a single onAction callback. Export selected and the toolbar
Export button are handled internally and download a CSV — they do not fire
onAction.
<OrdersTable
onAction={(action, orderIds) => {
// action: "view" | "edit" | "delete" | "mark-shipped"
// | "print-invoices" | "cancel-orders"
console.log(action, orderIds);
}}
/>Props
| Prop | Type | Default | Description |
|---|---|---|---|
orders | Order[] | Built-in sample | Orders to display. |
isLoading | boolean | false | Renders skeleton rows instead of data. |
isError | boolean | false | Renders an inline error state with a retry affordance. |
onRetry | () => void | — | Called when the user presses Retry in the error state. |
onAction | (action: OrderAction, orderIds: string[]) => void | — | Called for per-row and bulk actions. |
All other div props (className, style, id, …) are forwarded to the root element.
Features
- Search across order ID, customer, and status.
- Filter by one or more statuses and sort by any column (toolbar menu or column headers).
- Column management — toggle visibility and drag to reorder; resizable columns.
- Row selection with a contextual toolbar, including a "select all matching" affordance across pages.
- Density toggle (comfortable / compact).
- CSV export of all rows or just the current selection, respecting visible columns.
- Pagination with a results summary.
- States for loading (skeletons), error (with retry), and empty (clear-filters).
Icons
The toolbar and row actions use Material Icons (Two Tone) from the ic set via
@iconify/react, with the
secondary layer dimmed to match the BlakeUI two-tone look. Only the glyphs the
component needs are bundled, so there is no icon-library install step on your side.