Componentticket-stub
Stamp Card
Loyalty punch card with stamped circles and reward row.
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#W9YG80
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 stamp-cardOr install the full npm package:
npm install bigbulluiUsage
import { StampCard } from "@/components/ui/stamp-card";
<StampCard />Source code
stamp-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 StampCardProps {
text?: string;
subtext?: string;
tone?: "accent" | "primary" | "destructive";
className?: string;
}
const Pulse = "stamp-card-pulse";
const Entrance = "stamp-card-entrance";
export function StampCard({
text = "ADMITTED",
subtext = "OFFICIAL STUB",
tone = "accent",
className,
}: StampCardProps) {
return (
<div
className={cn(
"group relative w-full rounded-lg border border-foreground bg-card text-card-foreground p-4 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
)}
>
{/* Top tone badge */}
<div className="flex items-center justify-between mb-3">
<span className={cn(
"inline-flex size-4 rounded-full border-2 border-dashed border-border text-xs font-mono uppercase tracking-wider",
tone === "accent" && "border-accent text-accent",
tone === "primary" && "border-primary text-primary",
tone === "destructive" && "border-destructive text-destructive"
)}>
{text}
</span>
{/* Pulse indicator */}
<span className={cn(
"size-1.5 rounded-full bg-accent",
Pulse
)} />
</div>
{/* Subtext */}
<p className="text-xs text-muted-foreground line-clamp-2">
{subtext}
</p>
</div>
);
}Props
| Prop | Type | Description |
|---|---|---|
| text | string | Stamp headline text. |
| subtext | string | Secondary line under the stamp. |
| tone | "accent" | "primary" | "destructive" | Ink tone (default 'accent'). |