Stat
Used to display a statistic with a title and value.
- Unique visitors
- 192.1k
Usage
import { Stat } from "@chakra-ui/react"<Stat.Root>
<Stat.Label />
<Stat.ValueText />
<Stat.HelpText />
<Stat.UpIndicator />
</Stat.Root>Examples
Format Options
Use the FormatNumber component within Stat.ValueText to format the value.
- Revenue
- $935.40
Indicator
Here's an example of how to display a statistic with an indicator.
- Unique visitors
- 192.1k 1.9%
Info Tip
Compose the InfoTip and Stat.Label components to display an info tip.
- UniqueSome info
- 192.1k
Value Unit
Here's an example of how to display a value with a unit.
- Time to complete
- 3 hr20 min
Progress Bar
Here's an example of how to display a statistic with a progress bar.
- This week
- $1,340 +12% from last week
Icon
Here's an example of how to display a statistic with an icon.
- Sales
- $4.24k
Trend
Here's an example of how to display a statistic with a trend indicator.
- Unique
- $8,456.40 12%
Closed Component
Here's how to setup the Stat for a closed component composition.
import { Badge, Stat as ChakraStat, FormatNumber, Show } from "@chakra-ui/react"
import { InfoTip } from "@/components/ui/toggle-tip"
import * as React from "react"
interface StatProps extends ChakraStat.RootProps {
label?: React.ReactNode
value?: number
info?: React.ReactNode
valueText?: React.ReactNode
formatOptions?: Intl.NumberFormatOptions
change?: number
}
export const Stat = React.forwardRef<HTMLDivElement, StatProps>(
function Stat(props, ref) {
const { label, value, valueText, change, info, formatOptions, ...rest } =
props
return (
<ChakraStat.Root {...rest}>
{label && (
<ChakraStat.Label>
{label}
{info && <InfoTip>{info}</InfoTip>}
</ChakraStat.Label>
)}
<ChakraStat.ValueText {...rest} ref={ref}>
{valueText ||
(value != null && formatOptions && (
<FormatNumber value={value} {...formatOptions} />
))}
</ChakraStat.ValueText>
{change != null && (
<Badge colorPalette={change > 0 ? "green" : "red"} gap="0">
<Show when={change > 0} fallback={<ChakraStat.DownIndicator />}>
<ChakraStat.UpIndicator />
</Show>
<FormatNumber
value={Math.abs(change)}
style="percent"
maximumFractionDigits={2}
/>
</Badge>
)}
</ChakraStat.Root>
)
},
)
Props
Root
| Prop | Default | Type |
|---|---|---|
colorPalette | gray | 'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'The color palette of the component |
size | md | 'sm' | 'md' | 'lg'The size of the component |
as | React.ElementTypeThe underlying element to render. | |
asChild | booleanUse the provided child element as the default rendered element, combining their props and behavior. For more details, read our Composition guide. | |
unstyled | booleanWhether to remove the component's style. |
Explorer
Explore the Stat component parts interactively. Click on parts in the sidebar
to highlight them in the preview.
- Unique visitors
- New signups
Component Anatomy
Hover to highlight, click to select parts
root
label
helpText
valueText
valueUnit
indicator