Sticker Bubble
wa-ui/sticker-bubbleFreeComponent
WhatsApp-style sticker message — 160×160px, no bubble background, animated badge support.
Live preview
live · rendered by the registry
Rendered by wa-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.meta-cloud-api.site/r/sticker-bubble.jsonSource
1"use client";23import * as React from "react";4import { cn } from "@/lib/utils";5import { type MessageStatus, MessageStatusIcon } from "./message-status";6import "@/components/ui/whatsapp/styles/whatsapp.css";78export interface StickerBubbleProps extends React.HTMLAttributes<HTMLDivElement> {9 variant?: "incoming" | "outgoing";10 src: string;11 alt?: string;12 animated?: boolean;13 timestamp?: string;14 status?: MessageStatus;15 showTail?: boolean;16}1718const StickerBubble = React.forwardRef<HTMLDivElement, StickerBubbleProps>(19 (20 {21 className,22 variant = "incoming",23 src,24 alt = "Sticker",25 animated = false,26 timestamp,27 status,28 showTail = false,29 ...props30 },31 ref32 ) => {33 const isOutgoing = variant === "outgoing";3435 return (36 <div37 className={cn(38 "flex w-full",39 isOutgoing ? "justify-end" : "justify-start",40 showTail ? "mb-[6px]" : "mb-[2px]",41 className42 )}43 {...props}44 ref={ref}45 >46 <div className="flex flex-col items-end">47 {/* No bubble background — sticker floats directly */}48 <div className="relative h-[160px] w-[160px]">49 <img50 src={src}51 alt={alt}52 className="h-full w-full object-contain"53 draggable={false}54 />5556 {/* Animated badge */}57 {animated && (58 <span className="absolute left-1 top-1 rounded bg-black/50 px-[5px] py-[2px] text-[10px] font-bold uppercase tracking-wide text-white">59 GIF60 </span>61 )}62 </div>6364 {/* Timestamp pill below sticker */}65 {(timestamp || (isOutgoing && status)) && (66 <div className="mt-[-4px] flex items-center gap-[3px] rounded-full bg-black/40 px-[6px] py-[2px]">67 {timestamp && (68 <span className="text-[11px] leading-[15px] text-white">{timestamp}</span>69 )}70 {isOutgoing && status && (71 <span className="text-white"><MessageStatusIcon status={status} /></span>72 )}73 </div>74 )}75 </div>76 </div>77 );78 }79);80StickerBubble.displayName = "StickerBubble";8182export { StickerBubble };
Files it writes
More from wa-ui
All 29 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Action Buttonaction-button | wa-ui | Components | Free | 1 dep · 2 files | |
| Call Permissioncall-permission | wa-ui | Components | Free | 1 dep · 2 files | |
| Carousel Templatecarousel-template | wa-ui | Components | Free | 1 dep · 3 files | |
| Chat Bubblechat-bubble | wa-ui | Components | Free | no deps · 2 files | |
| Chat Headerchat-header | wa-ui | Components | Free | no deps · 2 files | |
| Chat List Itemchat-list-item | wa-ui | Components | Free | no deps · 2 files | |
| Chat Menuchat-menu | wa-ui | Components | Free | 1 dep · 2 files | |
| Contact Bubblecontact-bubble | wa-ui | Components | Free | 1 dep · 3 files |
