Button
5 variantes (primary / secondary / ghost / danger / link) · 4 tamaños · estados loading, disabled, iconOnly.
Los componentes del design system con instancias reales, estados y variantes. Agrupados por categoría, con ancla directa a cada uno.
Los bloques básicos de toda pantalla. Accesibles desde el primer PR — ARIA + teclado.
5 variantes (primary / secondary / ghost / danger / link) · 4 tamaños · estados loading, disabled, iconOnly.
Campo de texto con label, helper, error, prefix / suffix, icon slots y tipografía mono opt-in.
4 variantes (default / muted / elevated / outlined) con slots
CardHeader / CardBody /
CardFooter y modo interactive.
5 intents (success / warning / danger / info / neutral) · 3 variantes (soft / outline / solid) · modos dot y count.
Dialogs, toasts, dropdowns, popovers, tooltips. Portales, focus-trap, Esc y click-outside cierran cuando aplica.
Modal con focus trap, Esc / click-outside cierran, variante danger para cancelaciones de CFDI y similares.
API imperativa vía useToast(). Duración adaptada
por variante; danger/warning usan aria-live="assertive".
Menu contextual con keyboard completo, typeahead, separadores, labels de grupo y items destructivos.
Panel flotante rico (no-menu) para filtros, previews y formularios cortos. Trap de foco opt-in cuando hay inputs dentro.
Hint textual en hover / focus. 4 lados con flip automático. No aparece en touch devices (regla dura del iter 2).
Label, Textarea, Select, Checkbox, Radio, Switch con keyboard navigation completo y labels accesibles por defecto.
Standalone para controles que no son el Input del DS.
Soporta required (asterisco visible + texto SR) y error para tinte danger.
Multi-línea con resize controlado (vertical / none) y contador visible opcional cuando hay maxLength, con tintes warning / danger al acercarse al límite.
Combobox accesible con listbox portaled, typeahead, y búsqueda opt-in para catálogos largos (régimen fiscal, uso CFDI, etc.).
Controlled / uncontrolled, soporte indeterminate
como estado visual (no lógico), CheckboxGroup con label.
Exige RadioGroup padre. Roving tabindex WAI-ARIA APG.
Arrow keys navegan y seleccionan simultáneamente.
Toggle on/off — distinto de Checkbox (Checkbox marca elección,
Switch activa un comportamiento). role="switch" + anuncio
"encendido/apagado" al screen reader.
Señales al usuario sobre el estado del sistema — persistentes (Alert), determinadas (Progress) o placeholders de carga (Skeleton).
Banner inline persistente — vive en la superficie
hasta resolverse. Contraste con Toast (transitorio). 4 variantes +
onDismiss opcional.
CFDI40105 — el RFC del receptor no está vigente ante el SAT.
Barra determinada con role="progressbar" + ARIA values.
4 variantes semánticas (primary / success / warning / danger) y 2
tamaños.
Placeholder con animación shimmer para estados de carga —
evita layout shift. 3 variantes (text / rectangle / circle) y count para listas.
Primitivos reusables del chrome — separadores, avatars, tabs, collapsibles, íconos y barras de navegación que se usan dentro de cualquier pantalla.
Línea divisoria horizontal o vertical. Por default decorativa (role="none") — opcionalmente semántica con
decorative= para exponer
role="separator".
Datos del emisor
Datos del receptor
Identidad visual compacta. Si falla la imagen cae a iniciales
del fallback, y sin ni src ni
fallback muestra icono genérico. 3 tamaños.
Segmented horizontal con paneles asociados — patrón WAI-ARIA APG
(tablist/tab/tabpanel).
Arrow keys navegan y seleccionan; Home/End
saltan al primero/último enabled.
Disclosure widget (CollapsibleTrigger +
CollapsibleContent) — botón con
aria-expanded/aria-controls hacia el content.
Controlled o uncontrolled.
Toolbar translúcido con 3 botones agrupados (bell, help, search) en el orden oficial del header.
Segmented control con overflow-scroll horizontal y fades en los bordes. Counts opcionales en mono tabular.
Navegación jerárquica minimal. El último item es la ruta activa y no es interactivo.
4 intents para distintos escenarios: estructural, filtrado, onboarding pendiente, y error de sistema.
Cuando emitas la primera la verás aquí.
Prueba con otro término o quita los filtros activos.
Para timbrar facturas necesitamos tu Certificado de Sello Digital.
Reintenta en unos segundos. Si persiste, avísanos.
Encabezado de cada ruta — título, meta pill y scroll tabs. Vive en el contenido, no en el shell. Acepta slots opcionales para breadcrumbs y actions cuando la ruta los requiere.