DE INNOVACIÓN
DE SANTIAGO
Patrón canónico de lockup de marca para cis, cds, cochid y todos los sitios.
Primero el componente, después la variación de marca y finalmente su uso dentro de una página.
<div class="ui-sample ui-lockup" data-namebrand-lockup data-brand="cis"><svg class="ui-lockup__mark" viewBox="0 0 200 200" fill="none" stroke="currentColor" aria-hidden="true"><circle cx="100" cy="100" r="92" stroke-width="4"></circle><circle cx="100" cy="100" r="56" stroke-width="18"></circle></svg><strong>COMPAÑÍA<br>DE INNOVACIÓN<br>DE SANTIAGO</strong></div>Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.
Compara 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.
La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.
| Dimensión | Contrato |
|---|---|
| Propietario canónico | Sistema de diseño CIS · core/core-style |
| Consumidores | CIS, CDS, COCHID y todos los sitios |
| Dependencias | HTML nativo, cis-auth para sesión |
| 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 |
|---|
| base |
| actual |
| móvil |
| sin sesión |
Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<div class="ui-sample ui-lockup" data-namebrand-lockup data-brand="cis"><svg class="ui-lockup__mark" viewBox="0 0 200 200" fill="none" stroke="currentColor" aria-hidden="true"><circle cx="100" cy="100" r="92" stroke-width="4"></circle><circle cx="100" cy="100" r="56" stroke-width="18"></circle></svg><strong>COMPAÑÍA<br>DE INNOVACIÓN<br>DE SANTIAGO</strong></div>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<div class="ui-sample ui-lockup border border-slate-300 bg-white p-4 text-slate-950" data-namebrand-lockup data-brand="cis"><svg class="ui-lockup__mark h-auto w-full" viewBox="0 0 200 200" fill="none" stroke="currentColor" aria-hidden="true"><circle cx="100" cy="100" r="92" stroke-width="4"></circle><circle cx="100" cy="100" r="56" stroke-width="18"></circle></svg><strong>COMPAÑÍA<br>DE INNOVACIÓN<br>DE SANTIAGO</strong></div>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
const NAME_LINES = ["COMPAÑÍA", "DE INNOVACIÓN", "DE SANTIAGO"];
export interface NamebrandLockupProps {
/** Marca del sitio (`data-brand`): `cis`, `usaia`, `cochid`, etc. */
brand?: string;
/** Nombre de la Compañía, una línea por elemento. */
nameLines?: string[];
/** Nombre del producto que se muestra tras el separador; sin él, sólo va la Compañía. */
product?: string;
className?: string;
}
/**
* Lockup de marca: símbolo y nombre de la Compañía, con el producto opcional tras un separador; se usa en la cabecera y en portadas.
*
* @example <NamebrandLockup />
* @example <NamebrandLockup brand="usaia" product="usaia" />
*/
export function NamebrandLockup({ brand = "cis", nameLines = NAME_LINES, product, className }: NamebrandLockupProps) {
return (
<div className={["ui-lockup", className].filter(Boolean).join(" ")} data-namebrand-lockup data-brand={brand}>
<svg className="ui-lockup__mark" viewBox="0 0 200 200" fill="none" stroke="currentColor" aria-hidden="true"><circle cx="100" cy="100" r="92" strokeWidth="4"></circle><circle cx="100" cy="100" r="56" strokeWidth="18"></circle></svg>
{nameLines.length ? <strong>{nameLines.flatMap((linea, i) => (i ? [<br key={i} />, linea] : [linea]))}</strong> : null}
{product ? <><span role="separator"></span><b>{product}</b></> : null}
</div>
);
}