Componentticket-stub
WaxSeal
Circular wax blob with a pressed-in monogram entrance and an optional cracked break state.
Preview
Live Preview
B
Installation
Tokens guide →Add to your project via CLI (zero dependencies, code you own):
npx bigbullui add wax-sealOr install the full npm package:
npm install bigbulluiUsage
import { WaxSeal } from "@/components/ui/wax-seal";
<WaxSeal letter="B" onBreak={() => setOpen(false)} />Source code
wax-seal.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 WaxSealProps {
letter: string;
broken?: boolean;
onBreak?: () => void;
}
export function WaxSeal({ letter, broken = false, onBreak }: WaxSealProps) {
return (
<div
className={cn(
"relative size-24 rounded-full border border-dashed border-border/50 bg-card motion-reduce:transition-none",
"group"
)}
>
<div className="absolute inset-0 rounded-full bg-gradient-to-b from-accent to-destructive opacity-80 filter blur-sm" />
<div
className="absolute inset-0 flex items-center justify-center text-2xl font-bold text-white"
>
{letter}
</div>
<div className="absolute inset-0 ring-2 ring-white/20 blur-md" />
<style>{`
@keyframes waxSealPress {
from { transform: scale(1); }
to { transform: scale(0.9) rotate(-5deg); }
}
`}</style>
</div>
);
}Props
| Prop | Type | Description |
|---|---|---|
| letter | string | Monogram letter pressed into the wax. |
| broken | boolean | Crack the seal into two halves. |
| onBreak | () => void | Fired when the seal breaks. |
| className | string | Additional classes. |