` | - | Props spread to the body div element. |
### `
`
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `children` | `React.ReactNode` | - | Custom footer content. If not provided, renders total cost when modelId is provided. |
| `...props` | `ComponentProps
` | - | Props spread to the footer div element. |
### Usage Components
All usage components (`ContextInputUsage`, `ContextOutputUsage`, `ContextReasoningUsage`, `ContextCacheUsage`) share the same props:
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `children` | `React.ReactNode` | - | Custom content. If not provided, renders token count and cost for the respective usage type. |
| `className` | `string` | - | Additional CSS classes. |
| `...props` | `ComponentProps
` | - | Props spread to the div element. |
## Component Architecture
The Context component uses a compound component pattern with React Context for data sharing:
1. **``** - Root provider component that holds all context data
2. **``** - Interactive trigger element (default: button with percentage)
3. **``** - Hover card content container
4. **``** - Header section with progress visualization
5. **``** - Body section for usage breakdowns
6. **``** - Footer section for total cost
7. **Usage Components** - Individual token usage displays (Input, Output, Reasoning, Cache)
## Token Formatting
The component uses `Intl.NumberFormat` with compact notation for automatic formatting:
- Under 1,000: Shows exact count (e.g., "842")
- 1,000+: Shows with K suffix (e.g., "32K")
- 1,000,000+: Shows with M suffix (e.g., "1.5M")
- 1,000,000,000+: Shows with B suffix (e.g., "2.1B")
## Cost Calculation
When a `modelId` is provided, the component automatically calculates costs using the `tokenlens` library:
- **Input tokens**: Cost based on model's input pricing
- **Output tokens**: Cost based on model's output pricing
- **Reasoning tokens**: Special pricing for reasoning-capable models
- **Cached tokens**: Reduced pricing for cached input tokens
- **Total cost**: Sum of all token type costs
Costs are formatted using `Intl.NumberFormat` with USD currency.
## Styling
The component uses Tailwind CSS classes and follows your design system:
- Progress indicator uses `currentColor` for theme adaptation
- Hover card has customizable width and padding
- Footer has a secondary background for visual separation
- All text sizes use the `text-xs` class for consistency
- Muted foreground colors for secondary information