react ~4 KB 0 deps v0.3.0 ↗ GitHub ↗

@mshafiqyajid/react-badge

Headless badge hook and styled component. Three variants, six tones, dot indicator, count, dismissible.

Playground #

Animated count + BadgeAnchor

3
3
New feature0
Props
TSX
import { BadgeStyled } from "@mshafiqyajid/react-badge/styled";
import "@mshafiqyajid/react-badge/styles.css";

<BadgeStyled
  tone="primary"
/>

Install #

npm install @mshafiqyajid/react-badge

Quick start #

import { BadgeStyled } from "@mshafiqyajid/react-badge/styled";
import "@mshafiqyajid/react-badge/styles.css";

<BadgeStyled tone="success">Active</BadgeStyled>
<BadgeStyled tone="danger" variant="solid">Error</BadgeStyled>
<BadgeStyled tone="primary" dot>New</BadgeStyled>
<BadgeStyled tone="warning" dismissible onDismiss={() => {}}>Pending</BadgeStyled>

Headless #

import { useBadge } from "@mshafiqyajid/react-badge";

const { badgeProps, dismissProps, isDismissed } = useBadge({
  onDismiss: () => console.log("dismissed"),
});

if (isDismissed) return null;
return (
  <span {...badgeProps} className="my-badge">
    New
    <button {...dismissProps}>×</button>
  </span>
);

API #

PropTypeDefaultDescription
variant"solid" | "subtle" | "outline""subtle"Visual style
size"sm" | "md" | "lg""md"Size
tone"neutral" | "primary" | "success" | "warning" | "danger" | "info""neutral"Color tone
shape"rounded" | "square""rounded"Badge shape
dotbooleanfalseShow colored dot
pulsebooleanfalseAnimate dot with pulsing ring
countnumberNumeric count overlay
maxCountnumberCap count display, shows {n}+ when exceeded
uppercasebooleanfalseUppercase label with wider tracking
dismissiblebooleanfalseShow dismiss button
onDismiss() => voidCalled when dismissed
iconReactNodeLeading icon
hideOnZerobooleanfalseRender nothing when count is 0 and there is no other content. Useful for unread badges.
showZerobooleanfalseForce-render count={0}. Overrides hideOnZero.
classNamestringExtra class on the root element
styleCSSPropertiesInline style override

When count changes the displayed number animates with a flip transition (up when incrementing, down when decrementing).

Edit this page on GitHub