Files
react-test/docs/data/joy/components/badge/badge.md
how2ice 005cf56baf
Some checks failed
No response / noResponse (push) Has been cancelled
CI / Continuous releases (push) Has been cancelled
CI / test-dev (macos-latest) (push) Has been cancelled
CI / test-dev (ubuntu-latest) (push) Has been cancelled
CI / test-dev (windows-latest) (push) Has been cancelled
Maintenance / main (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
init project
2025-12-12 14:26:25 +09:00

133 lines
4.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
productId: joy-ui
title: React Badge component
components: Badge
githubLabel: 'scope: badge'
---
# Badge
<p class="description">The Badge component generates a small label that is attached to its child element.</p>
{{"component": "@mui/docs/ComponentLinkHeader"}}
## Introduction
A badge is a small descriptor for UI elements.
It typically sits on or near an element and indicates the status of that element by displaying a number, icon, or other short set of characters.
{{"demo": "BadgeUsage.js", "hideToolbar": true, "bg": "gradient"}}
## Basics
```jsx
import Badge from '@mui/joy/Badge';
```
The Badge component wraps around the UI element that it's attached to.
Its default appearance is a dot in the app's `primary` color that sits on the top-right corner of the element that it's attached to.
{{"demo": "SimpleBadge.js"}}
### Content
Use a string or a number as a value for the `badgeContent` prop to display content inside the Badge.
{{"demo": "ContentBadge.js"}}
### Numbers
The following props are useful when `badgeContent` is a number.
#### showZero
By default, the Badge will be automatically hidden when `badgeContent={0}`.
You can override this behavior with the `showZero` prop:
{{"demo": "NumberBadge.js"}}
#### Maximum value
Use the `max` prop to cap the content to a maximum numerical value.
{{"demo": "BadgeMax.js"}}
## Customization
### Variants
The Badge component supports Joy UI's four [global variants](/joy-ui/main-features/global-variants/): `solid` (default), `soft` , `outlined`, and `plain`.
{{"demo": "BadgeVariants.js"}}
:::info
To learn how to add your own variants, check out [Themed components—Extend variants](/joy-ui/customization/themed-components/#extend-variants).
Note that you lose the global variants when you add custom variants.
:::
### Sizes
The Badge component comes in three sizes: `sm`, `md` (default), and `lg`:
{{"demo": "BadgeSizes.js"}}
:::info
To learn how to add custom sizes to the component, check out [Themed components—Extend sizes](/joy-ui/customization/themed-components/#extend-sizes).
:::
### Colors
Every palette included in the theme is available via the `color` prop.
{{"demo": "BadgeColors.js"}}
### Visibility
Use the `invisible` prop to control the Badge's visibility.
:::warning
If [`showZero`](#numbers) and `invisible` are both applied at the same time, then the Badge will still be visible when `badgeContent={0}`.
:::
{{"demo": "BadgeVisibility.js"}}
### Position
By default, the Badge sits on the top-right corner of the element that it's attached to.
Use the `anchorOrigin` prop to change the position of the Badge according to its `vertical` (top or bottom) and `horizontal` (left or right) placement.
Try clicking the arrows in the demo below to change the position of the Badge:
{{"demo": "BadgeAlignment.js", "hideToolbar": true}}
### Inset
Use the `badgeInset` prop to fine-tune the position of the Badge relative to the element that it's attached to.
This prop accepts a string composed of numbers expressed in units of `px`, `%`, `em`, or `rem`. (This syntax corresponds to the [inset CSS property](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/inset).)
This string defines the inset from the Badge's [`anchorOrigin`](#position)—for instance, the demo below pushes the Badge 14% closer to the center of its child element (relative to the top-right corner) along both the vertical and horizontal axes:
{{"demo": "BadgeInset.js"}}
If you pass two unit-numbers to the `badgeInset` prop—for example`"50px 10px"`—the first number applies to the vertical axis, and the second applies horizontally.
If you pass four unit-numbers to the prop—such as `"0 -10px 0 5px"`, they are applied clockwise starting from the top.
## Accessibility
Screen readers may not provide users with enough information about a badge's contents.
To make your Badge accessible, you must provide a full description with `aria-label`, as shown in the demo below:
{{"demo": "AccessibleBadges.js"}}
## Anatomy
The Badge component is composed of a root `<span>` that houses the element that the Badge is attached to, followed by a `<span>` to represent the Badge itself:
```html
<span class="MuiBadge-root">
<!-- the element the Badge is attached to -->
<span class="MuiBadge-badge">
<!-- Badge content -->
</span>
</span>
```