Componentdata
Event Card
Event card with perforated date block, venue and time chips.
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#U3AAS4
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 event-cardOr install the full npm package:
npm install bigbulluiUsage
import { EventCard } from "@/components/ui/event-card";
<EventCard />Source code
event-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 EventCardProps {
title: string;
date?: string;
venue?: string;
time?: string;
className?: string;
}
const FadeInUp = "animate-fade-in-up-0s fade-in-up-1";
const ScaleIn = "event-date-scale-in";
const Pulse = "event-stamp-pulse";
export function EventCard({
title,
date = "Oct 14",
venue = "Berlin Arena",
time = "21:00",
className,
}: EventCardProps) {
return (
<div
className={cn(
"group relative w-full 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
)}
>
{/* Date block with dashed left edge */}
<div className="relative flex items-start gap-3">
<div
className={cn(
"group/[.event-active]:translate-y-0 shrink-0 size-8 rounded-full border-2 border-dashed border-border bg-secondary/10 flex flex-col items-center justify-center transition-all duration-300 motion-reduce:transition-none",
ScaleIn,
"event-date"
)}
>
<div className="font-mono text-[24px] font-black uppercase tracking-widest">{date.slice(0, 2)}</div>
<div className="font-mono text-[10px] uppercase tracking-widest">{date.slice(2)}</div>
</div>
<div className="group-[.event-active]:translate-x-0 flex-1">
<h4 className="font-medium line-clamp-1">{title}</h4>
</div>
{time && (
<div className="mt-1 flex items-center gap-1 text-xs uppercase tracking-wider text-muted-foreground">
<span>{time}</span>
</div>
)}
</div>
{/* Venue chip */}
{venue && (
<div
className={cn(
"mt-3 inline-flex items-center rounded border border-dashed border-border bg-secondary/10 px-2.5 py-1 text-xs font-mono uppercase tracking-wider text-muted-foreground",
Pulse
)}
>
{venue}
</div>
)}
</div>
);
}Props
| Prop | Type | Description |
|---|---|---|
| title | string | Event name (required). |
| date | string | Date block string. |
| venue | string | Venue name. |
| time | string | Showtime string. |