CDS-CTR-2026-014- Fondo
- CDS
- Serie
- CTR
- Año
- 2026
- Correlativo
- 014
Patrón canónico de número documental para firmas y documentos, scribe, medicamentos y editorial sebastián.
Primero el componente, después la variación de marca y finalmente su uso dentro de una página.
CDS-CTR-2026-014COCHID-CNV-2025-007CDS-CTR-2026-014<div class="ui-sample ui-document" data-document-number="true"><code>CDS-CTR-2026-014</code><dl><div><dt>Fondo</dt><dd>CDS</dd></div><div><dt>Serie</dt><dd>CTR</dd></div><div><dt>Año</dt><dd>2026</dd></div><div><dt>Correlativo</dt><dd>014</dd></div></dl><button class="btn btn--secondary" type="button" data-copy-value="CDS-CTR-2026-014">Copiar número</button></div>Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.
CDS-CTR-2026-014COCHID-CNV-2025-007Compara 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.
CDS-CTR-2026-014La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.
CDS-CTR-2026-014COCHID-CNV-2025-007| Dimensión | Contrato |
|---|---|
| Propietario canónico | Sistema de diseño CIS y Firmas y Documentos · core/core-style |
| Consumidores | Firmas y Documentos, Scribe, Medicamentos y Editorial Sebastián |
| Dependencias | contrato documental, representaciones versionadas |
| 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 |
|---|
| borrador |
| en revisión |
| firmado |
| archivado |
Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<div class="ui-sample ui-document" data-document-number="true"><code>CDS-CTR-2026-014</code><dl><div><dt>Fondo</dt><dd>CDS</dd></div><div><dt>Serie</dt><dd>CTR</dd></div><div><dt>Año</dt><dd>2026</dd></div><div><dt>Correlativo</dt><dd>014</dd></div></dl><button class="btn btn--secondary" type="button" data-copy-value="CDS-CTR-2026-014">Copiar número</button></div>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<div class="ui-sample ui-document border border-slate-300 bg-white p-4 text-slate-950" data-document-number="true"><code>CDS-CTR-2026-014</code><dl class="grid gap-2"><div><dt>Fondo</dt><dd>CDS</dd></div><div><dt>Serie</dt><dd>CTR</dd></div><div><dt>Año</dt><dd>2026</dd></div><div><dt>Correlativo</dt><dd>014</dd></div></dl><button class="btn btn--secondary border border-slate-950 px-3 py-2 focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed" type="button" data-copy-value="CDS-CTR-2026-014">Copiar número</button></div>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
import type { MouseEventHandler } from "react";
export interface DocumentNumberItem {
/** Nombre de la parte del número (`<dt>`): fondo, serie, año o correlativo. */
label: string;
value: string;
}
export interface DocumentNumberProps {
/** Partes del número, en el orden en que se escriben. */
items?: DocumentNumberItem[];
/** Número completo; por defecto, los valores de `items` unidos con guiones. */
value?: string;
/** Texto del botón de copiar; vacío oculta el botón. */
copyLabel?: string;
/** Se llama al pulsar el botón de copiar; el número está en `data-copy-value`. */
onCopy?: MouseEventHandler<HTMLButtonElement>;
className?: string;
}
const DOCUMENT_NUMBER_ITEMS: DocumentNumberItem[] = [
{ label: "Fondo", value: "CDS" },
{ label: "Serie", value: "CTR" },
{ label: "Año", value: "2026" },
{ label: "Correlativo", value: "014" },
];
/**
* Número documental desglosado en fondo, serie, año y correlativo, con botón para copiarlo; se usa en la ficha de un documento archivado para citarlo o buscarlo.
*
* El número se arma uniendo los valores de `items` con guiones; pasa `value` si sigue otro formato. Copiar es un botón secundario (`btn btn--secondary`).
*
* @example <DocumentNumber items={[{ label: "Fondo", value: "COCHID" }, { label: "Serie", value: "CNV" }, { label: "Año", value: "2025" }, { label: "Correlativo", value: "007" }]} onCopy={copiar} />
*/
export function DocumentNumber({
items = DOCUMENT_NUMBER_ITEMS,
value,
copyLabel = "Copiar número",
onCopy,
className,
}: DocumentNumberProps) {
const numero = value ?? items.map((item) => item.value).join("-");
return (
<div className={["ui-document", className].filter(Boolean).join(" ")} data-document-number>
{numero ? <code>{numero}</code> : null}
{items.length ? (
<dl>
{items.map((item, i) => (
<div key={`${item.label}-${i}`}>
<dt>{item.label}</dt>
<dd>{item.value}</dd>
</div>
))}
</dl>
) : null}
{numero && copyLabel ? (
<button className="btn btn--secondary" type="button" data-copy-value={numero} onClick={onCopy}>{copyLabel}</button>
) : null}
</div>
);
}