Tag

Compact label for categories, attributes, or filter pills. Size · Icon · Action · Checkbox — four independent Figma props.

import{ Tag, TagGroup } from "@pepulux/ui"

Size — sm · md · lg

Three sizes controlled by the size prop.

Small
Medium
Large

Action — "Text only" · "X close" · "Count"

action="none" (text only) · action="dismiss" (× button) · action="count" (trailing number).

Label
Label
Label5

Icon — Dot

dot shows a small colored circle. dotColor accepts any CSS color.

Active
Pending
Closed

Icon — Icon leading

Pass any ReactNode as icon. Renders before the label.

Global
Global
Global

Icon — Avatar

Pass an Avatar element as avatar. Renders before the label.

ACAlice Chen
BSBob Singh

Checkbox — boolean

Pass checked + onChange to make a Tag toggleable. A checkmark appears when checked.

Size × Action matrix

All three sizes with all three action variants.

sm
Label
Label
Label5
md
Label
Label
Label5
lg
Label
Label
Label5

Disabled

disabled reduces opacity and blocks all interaction.

Disabled
Disabled
Disabled

Tag Group

Wrap multiple Tags in TagGroup for consistent gap and wrap behaviour.

React
TypeScript
Tailwind
Next.js
Figma

Props

PropTypeDefaultDescription
label*stringText content of the tag.
size"sm" | "md" | "lg""md"Tag height: sm=24px, md=24px wider, lg=28px.
dotbooleanfalseShows a colored dot before the label (Figma: Icon=Dot).
dotColorstring"var(--brand)"CSS color for the dot.
iconReactNodeAny icon element before the label (Figma: Icon=Icon).
avatarReactNodeAvatar element before the label (Figma: Icon=Avatar).
action"none" | "dismiss" | "count""none"Trailing element: none (text only) · dismiss (×) · count (number). Maps to Figma Action prop.
countnumberNumber shown when action='count'.
onDismiss() => voidCalled when the × dismiss button is clicked.
checkedbooleanMakes the tag a toggle (Figma: Checkbox). Shows checkmark when true.
onChange(checked: boolean) => voidCalled when a checkable tag is toggled.
disabledbooleanfalseReduces opacity and blocks all interaction.