Documento enviado a firma
Dos firmantes recibieron el enlace.
Ver comprobantePatrón canónico de estado de éxito para todos los consumidores.
Primero el componente, después la variación de marca y finalmente su uso dentro de una página.
Dos firmantes recibieron el enlace.
Ver comprobanteRecibo PAY-2026-184 disponible.
Ver reciboDos firmantes recibieron el enlace.
Ver comprobante<section class="ui-sample ui-feedback" data-success-state="true" role="status"><h3>Documento enviado a firma</h3><p>Dos firmantes recibieron el enlace.</p><a class="btn btn--secondary" href="#comprobante">Ver comprobante</a></section>Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.
Dos firmantes recibieron el enlace.
Ver comprobanteRecibo PAY-2026-184 disponible.
Ver reciboCompara la propuesta con cortes reales del repositorio. La ausencia de una muestra se declara y nunca se reconstruye de memoria.
Preparando comparación histórica…
La comparación convierte una regla abstracta en una diferencia visible y verificable.
Dos firmantes recibieron el enlace.
Ver comprobanteLa misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.
Dos firmantes recibieron el enlace.
Ver comprobanteRecibo PAY-2026-184 disponible.
Ver recibo| Dimensión | Contrato |
|---|---|
| Propietario canónico | Sistema de diseño CIS · core/core-style |
| Consumidores | Todos los consumidores |
| Dependencias | HTML nativo, ARIA sólo cuando aporta |
| Estado | candidato |
Patrón propuesto. 0 implementaciones observadas en 0 repositorios.
La observación demuestra uso existente; la aceptación canónica sigue dependiendo de esta ficha y de su propietario.
| Dato | Resultado |
|---|---|
| Clasificación | Patrón propuesto |
| Implementaciones | 0 implementaciones observadas |
| Repositorios | Ningún repositorio observado |
| Snapshot | kit/componentes/componentes-observados.json |
El inventario conserva repositorio, archivo fuente y criterio de asociación. Observar una implementación no la convierte automáticamente en canónica.
| Estado requerido |
|---|
| información |
| advertencia |
| error |
| éxito |
Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<section class="ui-sample ui-feedback" data-success-state="true" role="status"><h3>Documento enviado a firma</h3><p>Dos firmantes recibieron el enlace.</p><a class="btn btn--secondary" href="#comprobante">Ver comprobante</a></section>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<section class="ui-sample ui-feedback border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-success-state="true" role="status"><h3>Documento enviado a firma</h3><p>Dos firmantes recibieron el enlace.</p><a class="btn btn--secondary underline underline-offset-4" href="#comprobante">Ver comprobante</a></section>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
export interface SuccessStateProps {
/** Qué quedó hecho, en participio («Pago registrado»). */
title?: string;
/** Resultado concreto: a quién llegó, folio o comprobante. */
description?: string;
/** Texto del enlace al comprobante o al paso siguiente; vacío lo oculta. */
linkLabel?: string;
/** Destino del enlace. */
href?: string;
className?: string;
}
/**
* Confirmación de una operación terminada, como un envío o un pago, con el resultado y un enlace al comprobante o al paso siguiente.
*
* Usa `role="status"`: se anuncia sin interrumpir.
*
* @example <SuccessState title="Documento enviado a firma" description="Dos firmantes recibieron el enlace." href="/firmas/184" />
* @example <SuccessState title="Pago registrado" description="Recibo PAY-2026-184 disponible." linkLabel="Ver recibo" href="/recibos/PAY-2026-184" />
*/
export function SuccessState({
title = "Documento enviado a firma",
description = "Dos firmantes recibieron el enlace.",
linkLabel = "Ver comprobante",
href = "#comprobante",
className,
}: SuccessStateProps) {
return (
<section className={["ui-feedback", className].filter(Boolean).join(" ")} data-success-state role="status">
{title ? <h3>{title}</h3> : null}
{description ? <p>{description}</p> : null}
{linkLabel ? <a className="btn btn--secondary" href={href}>{linkLabel}</a> : null}
</section>
);
}