← Volver al index v6

Componentes V5 · Sprint P1

11 componentes nuevos del Sprint V5 (mayo 2026): tabs, accordion, stepper, empty, skeleton, hero, code, avatar, breadcrumb, más CSS canónico para modal y toast. Filosofía Swiss × CIS — bordes finos, ink monocromo, tokens.

01·Tabs

Tab navigation horizontal con underline (default), pill chips o boxed. Soporta data-active o aria-selected. Count badge inside.

default · underline

Panel del tab activo. Padding-top automático. Cambiá aria-selected para alternar.

variant="pill"

variant="bordered"

<div class="cis-tabs">
  <ul class="cis-tabs__list" role="tablist">
    <li><button class="cis-tab" role="tab" aria-selected="true">
      Overview
    </button></li>
    <li><button class="cis-tab" role="tab">
      Servicios <span class="cis-tab__count">12</span>
    </button></li>
  </ul>
  <div class="cis-tabs__panel">Contenido del tab activo</div>
  <div class="cis-tabs__panel" hidden>Otro panel</div>
</div>

Variantes

02·Accordion

Disclosure con <details> nativo (sin JS) o componente custom con aria-expanded. Chevron rota 90° al abrir.

default · <details> nativo

¿Cómo funciona el ranking de servicios? 3 min
El ranking se calcula con un score compuesto: latencia p95, uptime últimos 30 días y tasa de error 5xx. Se actualiza cada 15 minutos con datos de Prometheus.
¿Puedo agregar un servicio externo?
Sí. Vas a Configuración → Servicios externos y agregás la URL del healthcheck. Soportamos JSON con esquema { status, latency_ms }.
¿Hay límite de notificaciones?
En el plan starter, 100 notifs/mes. En pro, ilimitado.

variant="bordered"

Configuración avanzada
Variables de entorno, timeouts custom, retry policies.
Webhooks
Configura webhooks para eventos clave.
<div class="cis-accordion">
  <details class="cis-accordion__item">
    <summary class="cis-accordion__trigger">
      <svg class="cis-accordion__icon" .../>
      <span class="cis-accordion__title">Pregunta</span>
      <span class="cis-accordion__meta">3 min</span>
    </summary>
    <div class="cis-accordion__panel">Respuesta</div>
  </details>
</div>

Variantes

03·Stepper

Progreso multi-step con estados upcoming, current, complete. Connector entre indicadores. En mobile colapsa a indicador "Paso N de M".

horizontal

  1. 01
    Cuenta
    Datos básicos
    Paso 1 de 4
  2. 02
    Plan
    Suscripción
  3. 03
    Pago
    Tarjeta o transferencia
  4. 04
    Confirmación
    Activación

vertical

  1. 01
    Solicitud recibida
    06/05/26 09:32
  2. 02
    En revisión
    Análisis interno · ETA 24hs
  3. 03
    Resolución
    Pendiente
<ol class="cis-stepper">
  <li class="cis-stepper__step" data-state="complete">
    <span class="cis-stepper__indicator">
      <span class="cis-stepper__number">01</span>
    </span>
    <div class="cis-stepper__body">
      <div class="cis-stepper__label">Cuenta</div>
      <div class="cis-stepper__description">Datos básicos</div>
    </div>
  </li>
  <li class="cis-stepper__step" data-state="current">...</li>
  <li class="cis-stepper__step" data-state="upcoming">...</li>
</ol>

Variantes

04·Empty

Empty state centrado para listas vacías o búsquedas sin resultados. Variants compact (inline en dropdowns) y hero (full page).

default

No hay servicios configurados

Empezá agregando un servicio externo. Soportamos URL JSON o callback programático.

variant="compact"

Sin resultados Probá con otro término.

variant="hero"

Tu primer dashboard

Configurá tu primer dashboard combinando KPIs, gráficos y tablas. Plantillas listas para usar.

<div class="cis-empty">
  <span class="cis-empty__icon"><svg ...></svg></span>
  <h3 class="cis-empty__headline">Sin resultados</h3>
  <p class="cis-empty__description">Texto descriptivo...</p>
  <div class="cis-empty__actions">
    <button class="cis-empty__cta">Acción</button>
  </div>
</div>

Variantes

05·Skeleton

Loading placeholders con shimmer animation. Variants text · line · circle · rect. data-lines para multi-línea.

variants

data-lines="3" (multi-line text)

composición de card

<span class="cis-skeleton" data-variant="circle"></span>
<span class="cis-skeleton" data-variant="text" style="width: 60%;"></span>
<span class="cis-skeleton" data-variant="rect" style="height: 80px;"></span>
<span class="cis-skeleton" data-lines="3"></span>

Variantes

06·Hero

Encabezado de landing/sección con eyebrow + headline + lead. Variants split, centered, compact, bordered.

default · stacked

Sprint V5 · Mayo 2026

Componentes que escalan al ritmo de tus productos.

Un design system Swiss × CIS pensado para apps internas, dashboards densos y landings limpias. CSS puro, tokens, web components opcionales.

variant="centered"

Beta abierta

Análisis sin fricción.

Conectá tus fuentes de datos en minutos. Sin SQL, sin pipelines fragiles.

variant="compact"

Documentación

API Reference

Todos los endpoints, tipos y ejemplos en un solo lugar.

<section class="cis-hero" data-variant="centered">
  <div class="cis-hero__inner">
    <p class="cis-hero__eyebrow" data-accent>Beta abierta</p>
    <h1 class="cis-hero__headline">Análisis sin fricción.</h1>
    <p class="cis-hero__lead">Conectá tus fuentes en minutos.</p>
    <div class="cis-hero__actions">
      <a class="cis-hero__cta" data-variant="primary">Empezar</a>
      <a class="cis-hero__cta">Documentación</a>
    </div>
  </div>
</section>

Variantes

07·Code

Inline cis-code para chips dentro de párrafos, y cis-code-block para bloques con lang chip + copy button + line numbers.

inline

Para correr el build, ejecutá npm run build en el directorio raíz. La salida se genera en dist/v6/. Si querés watch mode, usá npm run dev.

block

jsconst tabs = document.querySelector('cis-tabs');
tabs.setTabs([
  { id: 'overview', label: 'Overview' },
  { id: 'services', label: 'Services', count: 12 },
]);
tabs.addEventListener('cis:tab:change', e => {
  console.log(e.detail.tab);
});

block · line numbers

html<div class="cis-empty">  <span class="cis-empty__icon">...</span>  <h3 class="cis-empty__headline">Sin resultados</h3>  <p class="cis-empty__description">...</p></div>

variant="terminal"

npm install @cis/style
npm run build
added 142 packages in 8s
<p>Ejecutá <code class="cis-code">npm run build</code>.</p>

<pre class="cis-code-block" data-line-numbers>
  <span class="cis-code-block__lang">js</span>
  <code>
    <span class="cis-code-line">const x = 1;</span>
    <span class="cis-code-line" data-highlight>const y = 2;</span>
  </code>
</pre>

Variantes

08·Avatar

Avatares circulares o cuadrados, con img o initials fallback. Status dot configurable. cis-avatar-group para stack overlap.

sizes

XS SM MD LG XL

variants

MI JT RC SQ CIS

status dot

MI JT AB CD

cis-avatar-group · overlap stack

MI JT AB CD +5
<span class="cis-avatar" data-size="lg" data-variant="ink">
  <span class="cis-avatar__initials">MI</span>
  <span class="cis-avatar__status" data-status="online"></span>
</span>

<div class="cis-avatar-group">
  <span class="cis-avatar">...</span>
  <span class="cis-avatar">...</span>
  <span class="cis-avatar cis-avatar-group__more">
    <span class="cis-avatar__initials">+5</span>
  </span>
</div>

Variantes

Navegación de migas de pan con separadores chevron o slash. Último item con aria-current="page". Truncation responsive opcional.

default · chevron separator

  1. Inicio
  2. Servicios
  3. USAIA
  4. Configuración

variant="mono" · slash separator

  1. srv
  2. projects
  3. cis
  4. cis-style

variant="bordered" · chip-style

  1. Inicio
  2. /
  3. Productos
  4. /
  5. Detalle del producto
<ol class="cis-breadcrumb">
  <li class="cis-breadcrumb__item"><a href="/">Inicio</a></li>
  <li class="cis-breadcrumb__separator">
    <svg ...chevron-right.../>
  </li>
  <li class="cis-breadcrumb__item"><a href="/p">Productos</a></li>
  <li class="cis-breadcrumb__separator">...</li>
  <li class="cis-breadcrumb__item" aria-current="page">
    <a href="" class="cis-breadcrumb__link">Detalle</a>
  </li>
</ol>

Variantes

CSS canónico para <cis-modal>. Backdrop con blur, panel centrado, animation fade-in 200ms. Variants size sm/md/lg/xl.

preview estático (sin overlay full-screen)

Confirmar eliminación

¿Estás seguro de eliminar el servicio USAIA?

Esta acción es irreversible. Todos los logs y métricas asociados se mantienen 30 días.

tamaños

Cada panel se renderiza con su data-size aplicado. Sólo render visual.

size sm · 420

Diálogo confirmación o login.

size md · 560 (default)

Forms y settings.
<!-- Standalone HTML markup -->
<div class="cis-modal" data-open data-size="md">
  <div class="cis-modal__overlay"></div>
  <div class="cis-modal__panel">
    <header class="cis-modal__header">
      <h3 class="cis-modal__title">Confirmar</h3>
      <button class="cis-modal__close" aria-label="Cerrar">×</button>
    </header>
    <div class="cis-modal__body">Cuerpo del diálogo.</div>
    <footer class="cis-modal__footer">
      <button class="btn">Cancelar</button>
      <button class="btn btn-primary">Confirmar</button>
    </footer>
  </div>
</div>

<!-- O como web component -->
<cis-modal id="m" modal-title="Título" size="md">
  <p>Contenido</p>
  <div slot="footer">
    <button class="btn btn-primary">OK</button>
  </div>
</cis-modal>

Variantes

11·Toast

Stack de notifications fixed bottom-right (default). Variants info · success · warning · error con border-left 3px en color semantic.

preview estático

i
Nueva versión disponible v6.0.2 · cambios menores en tokens.
Configuración guardada.
!
Latencia elevada USAIA p99 > 200ms en últimos 5min.
×
Error al guardar Network error. Reintentá en unos segundos.
<!-- Stack standalone -->
<div class="cis-toast-stack" data-position="bottom-right">
  <div class="cis-toast" data-variant="success">
    <span class="cis-toast__icon">✓</span>
    <div class="cis-toast__content">
      <span class="cis-toast__title">Guardado</span>
      <span class="cis-toast__message">Cambios persistidos.</span>
    </div>
    <button class="cis-toast__close">×</button>
  </div>
</div>

<!-- O via web component + event-driven -->
<cis-toast></cis-toast>
<script>
  document.dispatchEvent(new CustomEvent('cis:toast', {
    detail: { message: 'Hecho', type: 'success' }
  }));
</script>

Variantes