<!-- Generado automáticamente por scripts/generate-docs.mjs. No editar a mano. -->
<!-- Fuente: src/app/componentes/badge/page.tsx -->

# Badge

Un badge enfatiza un elemento que requiere atención o ayuda a categorizarlo junto a elementos similares.

```tsx
<LexyBadge tone="blue" subtle>
  En curso
</LexyBadge>
<LexyBadge tone="amber" subtle icon={<Warning16Regular />}>
  Revisión
</LexyBadge>
<CounterBadge value="8" />
```

## Variantes

### Color y énfasis

Lexy usa badges compactos con borde, radio completo y peso tipográfico fuerte. Cada tono toma una escala del sistema: Indigo para marca, Salud y Deudor para verticales, y Red, Amber o Green para estados.

```tsx
<LexyBadge tone="gray">Neutral</LexyBadge>
<LexyBadge tone="gray" subtle>Neutral subtle</LexyBadge>

<LexyBadge tone="blue">Indigo</LexyBadge>
<LexyBadge tone="blue" subtle>Indigo subtle</LexyBadge>

<LexyBadge tone="purple">Deudor</LexyBadge>
<LexyBadge tone="purple" subtle>Deudor subtle</LexyBadge>

<LexyBadge tone="amber">Advertencia</LexyBadge>
<LexyBadge tone="amber" subtle>Advertencia subtle</LexyBadge>

<LexyBadge tone="red">Error</LexyBadge>
<LexyBadge tone="red" subtle>Error subtle</LexyBadge>

<LexyBadge tone="pink">Editorial</LexyBadge>
<LexyBadge tone="pink" subtle>Editorial subtle</LexyBadge>

<LexyBadge tone="green">Correcto</LexyBadge>
<LexyBadge tone="green" subtle>Correcto subtle</LexyBadge>

<LexyBadge tone="teal">Salud</LexyBadge>
<LexyBadge tone="teal" subtle>Salud subtle</LexyBadge>

<LexyBadge tone="inverted">Inverted</LexyBadge>
```

### Tamaños

Usa small en filas densas, medium como default y large solo cuando el badge acompaña títulos o superficies de baja densidad. Evita mezclar tamaños en el mismo contexto.

```tsx
<LexyBadge size="sm">Small</LexyBadge>
<LexyBadge size="md">Medium</LexyBadge>
<LexyBadge size="lg">Large</LexyBadge>
```

### Con iconos

El icono refuerza la lectura cuando el estado necesita escaneo rápido. No pongas dos iconos ni anides un badge dentro de otro badge.

```tsx
import { CheckmarkCircle16Regular, Info16Regular, Clock16Regular, ErrorCircle16Regular } from "@fluentui/react-icons";

<LexyBadge tone="green" icon={<CheckmarkCircle16Regular />}>
  Resuelto
</LexyBadge>
<LexyBadge tone="green" subtle icon={<CheckmarkCircle16Regular />}>
  Resuelto
</LexyBadge>

<LexyBadge tone="blue" icon={<Info16Regular />}>
  Informativo
</LexyBadge>
<LexyBadge tone="blue" subtle icon={<Info16Regular />}>
  Informativo
</LexyBadge>

<LexyBadge tone="amber" icon={<Clock16Regular />}>
  Por vencer
</LexyBadge>
<LexyBadge tone="red" subtle icon={<ErrorCircle16Regular />}>
  Bloqueado
</LexyBadge>
```

## Uso

### Cuándo usar

- Usa badges para metadata corta y escaneable: estado, etapa, rol, plan, ambiente o prioridad.
- Un badge debe tener una o dos palabras. Si necesitas una frase, el contenido pertenece al texto de la fila.
- El badge se ubica sobre o cerca del componente que describe, con proximidad suficiente para entender la relación.
- La variante sutil es el default para documentos, tablas y listados densos. La sólida queda para foco o alerta real.

### Buenas prácticas

- Usa sentence case en producto Lexy, salvo que el valor venga de una API o término canónico.
- El color debe usarse intencionalmente para dirigir la atención; warning y danger deben venir con una forma de resolver el problema.
- Los badges no tienen ancho máximo por defecto: si el texto viene de datos externos, agrega truncamiento.
- Por defecto no reciben foco. Si el badge abre más contexto, debe tener foco, etiqueta accesible y teclado.

## Layout

### Junto al elemento descrito

El badge debe quedar integrado al objeto que describe. No lo uses como adorno flotante ni como resumen duplicado.

```tsx
<div className="flex items-center justify-between gap-4">
  <div>
    <p className="font-semibold">Causa RIT C-1243-2026</p>
    <p className="text-sm text-gray-600">Juzgado de Familia de Santiago</p>
  </div>
  <LexyBadge tone="blue" subtle>En curso</LexyBadge>
</div>

<div className="flex items-center gap-2">
  <span>Notificaciones</span>
  <CounterBadge value="3" />
</div>
```

### Puntos de estado

Cuando el texto del entorno ya da contexto, un punto de estado puede ser suficiente. No dependas solo del color: acompáñalo con una etiqueta visible o accesible.

```tsx
function StatusDot({ tone, label }) {
  return (
    <span className="flex items-center gap-2">
      <span className="h-2 w-2 rounded-full" style={{ backgroundColor: tone }} />
      {label}
    </span>
  );
}

<StatusDot tone="green" label="Disponible" />
<StatusDot tone="amber" label="En espera" />
<StatusDot tone="red" label="Bloqueado" />
```

## Comportamiento

### Ancho y truncamiento

Los badges crecen con el contenido. En filas alimentadas por datos externos, define un ancho máximo y corta con elipsis para proteger la grilla.

```tsx
<LexyBadge tone="gray" subtle>
  Asignado
</LexyBadge>

<div className="max-w-[180px]">
  <LexyBadge tone="amber" subtle truncate>
    Pendiente de revisión documental
  </LexyBadge>
</div>
```

### No interactivo por defecto

Un badge es una etiqueta estática. Si el valor puede activar una acción o filtro, usa un botón, un link o una variante de chip interactivo con foco y estados visibles.

## Accesibilidad

### Icono solo

Si el badge solo muestra un icono o un punto, comunica el significado con aria-label o en el label del elemento asociado.

```tsx
import { Warning16Regular } from "@fluentui/react-icons";

<LexyBadge
  ariaLabel="Alerta: plazo vence hoy"
  tone="amber"
  icon={<Warning16Regular />}
/>

<LexyBadge tone="amber" subtle icon={<Warning16Regular />}>
  Vence hoy
</LexyBadge>
```

### Color no es suficiente

El texto, el icono o la etiqueta accesible deben sostener el significado incluso si el color no se percibe.

