A compound component system for displaying AI model context window usage, token consumption, and cost estimation.
The Context component provides a comprehensive view of AI model usage through
a compound component system. It displays context window utilization, token
consumption breakdown (input, output, reasoning, cache), and cost estimation in
an interactive hover card interface.
See scripts/context.tsx for this example.
npx ai-elements@latest add context
tokenlens library| Prop | Type | Default | Description |
|---|---|---|---|
maxTokens | number | - | The total context window size in tokens. |
usedTokens | number | - | The number of tokens currently used. |
usage | LanguageModelUsage | - | Detailed token usage breakdown from the AI SDK (input, output, reasoning, cached tokens). |
modelId | ModelId | - | Model identifier for cost calculation (e.g., |
...props | ComponentProps<HoverCard> | - | Any other props are spread to the HoverCard component. |
| Prop | Type | Default | Description |
|---|---|---|---|
children | React.ReactNode | - | Custom trigger element. If not provided, renders a default button with percentage and icon. |
...props | ComponentProps<Button> | - | Props spread to the default button element. |
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes for the hover card content. |
...props | ComponentProps<HoverCardContent> | - | Props spread to the HoverCardContent component. |
| Prop | Type | Default | Description |
|---|---|---|---|
children | React.ReactNode | - | Custom header content. If not provided, renders percentage and token count with progress bar. |
...props | ComponentProps<div> | - | Props spread to the header div element. |
| Prop | Type | Default | Description |
|---|---|---|---|
children | React.ReactNode | - | Body content, typically containing usage breakdown components. |
...props | ComponentProps<div> | - | 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<div> | - | Props spread to the footer div element. |
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<div> | - | Props spread to the div element. |
The Context component uses a compound component pattern with React Context for data sharing:
<Context> - Root provider component that holds all context data<ContextTrigger> - Interactive trigger element (default: button with
percentage)<ContextContent> - Hover card content container<ContextContentHeader> - Header section with progress visualization<ContextContentBody> - Body section for usage breakdowns<ContextContentFooter> - Footer section for total costThe component uses Intl.NumberFormat with compact notation for automatic
formatting:
When a modelId is provided, the component automatically calculates costs using
the tokenlens library:
Costs are formatted using Intl.NumberFormat with USD currency.
The component uses Tailwind CSS classes and follows your design system:
currentColor for theme adaptationtext-xs class for consistency