---
name: kpi_card
kind: component
lang: ts
domain: ui
version: "2.0.0"
purity: impure
signature: "KPICard(props: KPICardProps): JSX.Element"
description: "Card de KPI con label, valor+unidad, delta descriptivo con color semántico, icono, slot de chart inline y action. 3 tamaños."
tags: [kpi, card, metrics, dashboard, component, ui, sparkline]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [react]
output: "Componente KPICard que renderiza card de métrica con label, valor, delta descriptivo, icono y slot de mini chart"
tested: false
tests: []
test_file_path: ""
file_path: "frontend/functions/ui/kpi_card.tsx"
props:
- name: label
type: "string"
required: true
description: "Etiqueta del KPI"
- name: value
type: "string | number"
required: true
description: "Valor principal"
- name: unit
type: "string"
required: false
description: "Unidad junto al valor en font menor (ej: k, ms, %)"
- name: delta
type: "{ value: number; isPositive: boolean; label?: string; suffix?: string }"
required: false
description: "Cambio con dirección, label descriptivo y sufijo"
- name: icon
type: "ReactNode"
required: false
description: "Icono a la izquierda del label"
- name: action
type: "ReactNode"
required: false
description: "Slot top-right para menú o acciones"
- name: chart
type: "ReactNode"
required: false
description: "Slot para mini chart inline junto al valor"
- name: size
type: "'sm' | 'default' | 'lg'"
required: false
description: "Tamaño"
emits: []
has_state: false
framework: react
variant: [sm, default, lg]
source_repo: "https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/Bl4cksmith/Frontend_Library"
source_license: "MIT"
source_file: "frontend/src/components/ui/kpi-card.tsx"
---
## Ejemplo
```tsx
import { KPICard, Sparkline } from '@fn_library'
{/* Básico */}
{/* Con unidad separada, delta descriptivo, y mini barras */}
}
delta={{ value: 15, isPositive: true, label: "Prompts Increased by", suffix: "vs yesterday" }}
chart={}
action={}
/>
{/* Dashboard dark sin bordes */}
```
## Notas
- El icono ahora se renderiza a la **izquierda** del label (antes estaba a la derecha).
- `unit` separa la unidad del valor con font menor para el efecto "124 k" del diseño.
- `delta.label` y `delta.suffix` permiten texto descriptivo: "Increased by ▲ +15% vs yesterday".
- `chart` es un slot genérico — pasar un `` para mini barras multicolor.
- `action` es un slot top-right para menú contextual.
- Usa `cn()` para merge de clases. `className="border-0 shadow-none"` para dashboards dark.