Chip
Small informational badges for displaying labels, statuses, and categories
Import
import { Chip } from '@heroui/react';Usage
DefaultAccentSuccessWarningDanger
"use client";
import {Chip} from "@heroui/react";
export function ChipBasic() {
  return (
    <div className="flex items-center gap-3">
      <Chip>Default</Chip>
      <Chip type="accent">Accent</Chip>
      <Chip type="success">Success</Chip>
      <Chip type="warning">Warning</Chip>
      <Chip type="danger">Danger</Chip>
    </div>
  );
}Variants
| Variant / Type | default | accent | success | warning | danger | 
|---|---|---|---|---|---|
| primary | Default | Accent | Success | Warning | Danger | 
| secondary | Default | Accent | Success | Warning | Danger | 
| tertiary | Default | Accent | Success | Warning | Danger | 
"use client";
import {Chip} from "@heroui/react";
export function ChipVariants() {
  const variants = ["primary", "secondary", "tertiary"] as const;
  const types = ["default", "accent", "success", "warning", "danger"] as const;
  return (
    <div className="overflow-x-auto">
      <table className="w-full">
        <thead>
          <tr>
            <th className="sr-only px-4 py-3 text-left text-sm font-medium">Variant / Type</th>
            {types.map((type) => (
              <th
                key={type}
                className="text-muted px-4 py-3 text-center text-sm font-medium capitalize"
              >
                {type}
              </th>
            ))}
          </tr>
        </thead>
        <tbody>
          {variants.map((variant) => (
            <tr key={variant} className="border-border border-t">
              <td className="text-muted px-4 py-4 text-sm font-medium capitalize">{variant}</td>
              {types.map((type) => (
                <td key={`${variant}-${type}`} className="px-4 py-4 text-center">
                  <Chip type={type} variant={variant}>
                    {type === "default" ? "Default" : type.charAt(0).toUpperCase() + type.slice(1)}
                  </Chip>
                </td>
              ))}
            </tr>
          ))}
        </tbody>
      </table>
    </div>
  );
}With Icons
InformationCompletedPendingFailedLabel
"use client";
import {Chip} from "@heroui/react";
import {Icon} from "@iconify/react";
export function ChipWithIcon() {
  return (
    <div className="flex items-center gap-3">
      <Chip>
        <Icon icon="gravity-ui:circle-fill" width={6} />
        Information
      </Chip>
      <Chip type="success">
        <Icon icon="gravity-ui:circle-check-fill" width={12} />
        Completed
      </Chip>
      <Chip type="warning">
        <Icon icon="gravity-ui:clock" width={12} />
        Pending
      </Chip>
      <Chip type="danger">
        <Icon icon="gravity-ui:xmark" width={12} />
        Failed
      </Chip>
      <Chip type="accent">
        Label
        <Icon icon="gravity-ui:chevron-down" width={12} />
      </Chip>
    </div>
  );
}Statuses
DefaultActivePendingInactive
New FeatureAvailableBetaDeprecated
"use client";
import {Chip} from "@heroui/react";
import {Icon} from "@iconify/react";
export function ChipStatuses() {
  return (
    <div className="flex flex-col gap-4">
      <div className="flex items-center gap-3">
        <Chip variant="primary">
          <Icon icon="gravity-ui:circle-fill" width={6} />
          Default
        </Chip>
        <Chip type="success" variant="primary">
          <Icon icon="gravity-ui:circle-fill" width={6} />
          Active
        </Chip>
        <Chip type="warning" variant="primary">
          <Icon icon="gravity-ui:circle-fill" width={6} />
          Pending
        </Chip>
        <Chip type="danger" variant="primary">
          <Icon icon="gravity-ui:circle-fill" width={6} />
          Inactive
        </Chip>
      </div>
      <div className="flex items-center gap-3">
        <Chip>
          <Icon icon="gravity-ui:circle-info" width={12} />
          New Feature
        </Chip>
        <Chip type="success">
          <Icon icon="gravity-ui:check" width={12} />
          Available
        </Chip>
        <Chip type="warning">
          <Icon icon="gravity-ui:triangle-exclamation" width={12} />
          Beta
        </Chip>
        <Chip type="danger">
          <Icon icon="gravity-ui:ban" width={12} />
          Deprecated
        </Chip>
      </div>
    </div>
  );
}Styling
Passing Tailwind CSS classes
import {Chip} from '@heroui/react';
function CustomChip() {
  return (
    <Chip className="rounded-full px-4 py-2 font-bold">
      Custom Styled
    </Chip>
  );
}Customizing the component classes
To customize the Chip component classes, you can use the @layer components directive.
Learn more.
@layer components {
  .chip {
    @apply rounded-full text-xs;
  }
  .chip--accent {
    @apply border-accent/20;
  }
}HeroUI follows the BEM methodology to ensure component variants and states are reusable and easy to customize.
CSS Classes
The Chip component uses these CSS classes (View source styles):
Base Classes
.chip- Base chip styles
Type Classes
.chip--accent- Accent type variant.chip--danger- Danger type variant.chip--default- Default type variant.chip--success- Success type variant.chip--warning- Warning type variant
Variant Classes
.chip--primary- Primary variant with filled background.chip--secondary- Secondary variant with border.chip--tertiary- Tertiary variant with transparent background
Compound Variant Classes
.chip--primary.chip--accent- Primary accent combination.chip--primary.chip--success- Primary success combination.chip--primary.chip--warning- Primary warning combination.chip--primary.chip--danger- Primary danger combination
Interactive States
The component supports focus visibility:
- Focus: 
:focus-visibleor[data-focus-visible="true"] 
API Reference
Chip Props
| Prop | Type | Default | Description | 
|---|---|---|---|
children | React.ReactNode | - | Content to display inside the chip | 
className | string | - | Additional CSS classes | 
type | "default" | "accent" | "success" | "warning" | "danger" | "default" | Type variant of the chip | 
variant | "primary" | "secondary" | "tertiary" | "secondary" | Visual style variant |