KDS
Chatbot

Context

Indicador de uso de tokens / context window — popover com breakdown por categoria.

Overview

Context mostra uso de tokens do modelo num HoverCard. Trigger é um button compacto com Progress circular; ao hover, abre painel com breakdown (input / output / reasoning / cached). Usa tokenlens pra calcular percentages relativos ao maxTokens do modelo.

Preview
Context badge — hover/click pra abrir o breakdown.

Anatomy

<Context maxTokens={N} usedTokens={N} usage={...} modelId="...">
  ├─ <ContextTrigger />
  └─ <ContextContent>
       ├─ <ContextContentHeader />
       ├─ <ContextContentBody>
       │    ├─ <ContextInputUsage />
       │    ├─ <ContextOutputUsage />
       │    ├─ <ContextReasoningUsage />
       │    └─ <ContextCacheUsage />
       └─ <ContextContentFooter />
</Context>

Usage

<Context
  maxTokens={128_000}
  usedTokens={usage.totalTokens}
  usage={usage}
  modelId="claude-opus-4-7"
>
  <ContextTrigger />
  <ContextContent>
    <ContextContentHeader />
    <ContextContentBody>
      <ContextInputUsage />
      <ContextOutputUsage />
      <ContextReasoningUsage />
      <ContextCacheUsage />
    </ContextContentBody>
    <ContextContentFooter />
  </ContextContent>
</Context>

Props

Context (Root)

PropTipoDefaultDescrição
maxTokensnumberTamanho do context window do modelo. Usado pra calcular percentages.
usedTokensnumberTotal de tokens consumidos.
usageLanguageModelUsage (AI SDK)Breakdown por categoria — input, output, reasoning, cached.
modelIdstringID do modelo (claude-opus-4-7, gpt-4o, ...).

Herda de HoverCardopenDelay, closeDelay.

ContextTrigger

Aceita ComponentProps<typeof Button>. Default visual: ring de progresso SVG + porcentagem.

ComponenteFunção
ContextContentWrapper do HoverCardContent.
ContextContentHeaderTítulo do popover (ex.: "Context · 21k / 128k").
ContextContentBodyWrapper das linhas de breakdown.
ContextContentFooterTotal + modelId + estimativa de custo (via tokenlens).

ContextInputUsage · OutputUsage · ReasoningUsage · CacheUsage

Linhas individuais. Cada uma lê do usage provider e mostra:

  • Label (Input / Output / Reasoning / Cache)
  • Valor numérico
  • Mini-progress bar (porção do max)

Não aceitam props além de className — leem tudo do contexto.

Subcomponents

  • Context — root, é HoverCard provider + ContextContext.
  • ContextTrigger — botão compacto com ring SVG circular.
  • ContextContent — popover content.
  • ContextContentHeader/Body/Footer — slots semânticos.
  • Context*Usage (Input / Output / Reasoning / Cache) — linhas de breakdown auto-leitas do usage.

useContextValue()

Hook interno que retorna { usedTokens, maxTokens, usage, modelId }. Use pra construir variantes custom de breakdown.

States

EstadoVisual
Used menor que 50%Ring verde.
Used 50-80%Ring amarelo (yellow-500).
Used acima de 80%Ring vermelho (red-500) — alerta de saturação.

Cores específicas dependem do tema.

When to use

  • Apps de IA com long-context — usuário precisa saber quando se aproxima do limite.
  • Debug UI pra otimizar prompt size.
  • Painéis admin de billing baseado em tokens.

When not to use

  • Apps com modelo único curto onde o limite raramente importa.
  • Surfaces simples — adiciona ruído visual.

Best practices

  • Sempre passe modelId. Sem isso, footer não pode estimar custo.
  • usage da própria response. AI SDK retorna usage em onFinish/finish — passe direto.
  • Cuidado com cache em prompts dinâmicos. Cached tokens só contam se você usou caching explicitamente — sem isso, aparece 0.

Accessibility

ConcernComportamento
HoverCardAcessível via teclado (Tab focus + Enter).
Progress visualPareie com texto — ring sozinho é canal único.
Number formattingUse Intl.NumberFormat pra "21,320" em vez de "21320".

On this page