Componentdata
Order Card
Order status card with step dots and item summary.
Preview
Live Preview

25%
Premium Headphones
$299$399
Jordan Daisy
Product Designer
AvailableRemote

The Future of Design Systems
Alex Rivera8 min read
Oc
t 14
Tech Conference 2026
21:00
Berlin Arena
Invoice #INV-2026-0987draft
Date: 2026-09-15Due: 2026-10-15
| Item | Qty | Price |
|---|---|---|
| Design Services | 1 | $150 |
| Development Hours | 5 | $100 |
SubtotalNaN
Tax (10%)NaN
TotalNaN
THERMAL RECEIPT#5Z7ULR
Design Consultation$150
Development Hours$200
Total$385.00
Thank you for your purchase!
Subtotal$377.00
Tax$30.16
Total$407.16
Color
Size
✓✓✓✓✓✓
Order #102938Processing
Design Services1x
Development5x
VIP
LOYALTY TIER
$100
Jordan Daisy
Happy Birthday!
J
Jordan Daisy
Product Designer
UX
Badge: EMP-8942
Wedding Reception
Please confirm your attendance
Installation
Tokens guide →Add to your project via CLI (zero dependencies, code you own):
npx bigbullui add order-cardOr install the full npm package:
npm install bigbulluiUsage
import { OrderCard } from "@/components/ui/order-card";
<OrderCard />Source code
order-card.tsxZero dependencies (only React + utils). Copy and paste directly into your project:
"use client";
import * as React from "react";
import { cn } from "./lib/utils";
export interface OrderCardProps {
orderId: string;
status: "Processing" | "Shipped" | "Delivered" | "Cancelled";
progress?: number;
items?: { label: string; qty: number }[];
className?: string;
}
const ProgressBar = "order-progress-bar";
const StatusEnter = "order-status-enter";
export function OrderCard({
orderId,
status = "Processing",
progress = 0,
items,
className,
}: OrderCardProps) {
return (
<div
className={cn(
"rounded-lg border border-foreground bg-card text-card-foreground p-6 transition-all duration-300 hover:translate-y-1 hover:shadow-lg motion-reduce:transition-none motion-reduce:translate-y-0 motion-reduce:shadow-none",
className
)}
>
<div className="flex items-baseline justify-between mb-4">
<span className="font-mono text-sm uppercase tracking-widest">Order {orderId}</span>
<span className={cn(
"px-2 py-0.5 rounded text-xs font-mono uppercase tracking-wider",
status === "Processing" && "bg-amber-500 text-amber-100",
status === "Shipped" && "bg-green-500 text-green-100",
status === "Delivered" && "bg-emerald-500 text-emerald-100",
status === "Cancelled" && "bg-destructive text-destructive-foreground",
StatusEnter
)}>
{status}
</span>
</div>
{/* Progress bar */}
{progress > 0 && progress < 1 && (
<div className="w-full bg-secondary/20 rounded-h-full h-2 mb-3 overflow-hidden">
<div
className={cn(
"h-full bg-accent rounded-h-full transition-width duration-500",
ProgressBar,
`w-${Math.min(progress * 100, 100)}%`
)}
/>
</div>
)}
{/* Items list */}
{items && items.length > 0 && (
<div className="space-y-2 text-sm">
{items.map((it, i) => (
<div key={i} className="flex items-baseline justify-between">
<span className="font-medium">{it.label}</span>
<span className="font-mono text-muted-foreground">{it.qty}x</span>
</div>
))}
</div>
)}
</div>
);
}Props
| Prop | Type | Description |
|---|---|---|
| orderId | string | Order identifier (required). |
| status | "Processing" | "Shipped" | "Delivered" | "Cancelled" | Order status (required). |
| progress | number | Fulfilment progress 0-100. |