Novedades · v1.2.7
Patrón depth stack para secciones de marketing, breakpoint xxl ≥ 1440px con 5 columnas para grids densos, y preview en sidebar del Panel Gerencial Analytics Pro.
box-shadow. Los inputs también van borderless: fondo tonal + focus ring cyan, sin borde.| Versión | Fecha | Tipo | Detalle |
|---|---|---|---|
| v1.2.7 | 05/06/2026 | DATOS | Panel gerencial: Embudo operativo conectado a datos reales del ERP — embudo de cumplimiento (pedidos del período → entregados → entregados a tiempo) con fugas calculadas y SLA. Deja de ser placeholder. |
| v1.2.7 | 05/06/2026 | DATA-VIZ | Nuevo donut "Participación por origen" (inline + modal) con leyenda propia y agrupación de cola en Otros. Semáforo diario con estado general computado + métrica destacada por señal. Actividad horaria pasa a mini-histograma vertical. |
| v1.2.7 | 05/06/2026 | SISTEMA | Barras horizontales unificadas (canal · franja · sucursal · embudo): track --line-strong visible, sin bordes, min-width para valores chicos y animación de entrada scaleX. Día pico resaltado en franjas y tendencia. |
| v1.2.7 | 05/06/2026 | SISTEMA | Tints de color tokenizados (--cyan-a24, --amber-a20, …) + tokens de chart (--cyan-chart-bar/line), todos con override en modo claro. Los gráficos leen --cyan vía getComputedStyle y se adaptan al tema. |
| v1.2.7 | 05/06/2026 | PATRÓN | No permitido: callouts/cards con borde de un solo lado (border-left/top de acento). Usar fondo tonal borderless. Backlog con status pills, borderless. |
| v1.2.7 | 05/06/2026 | A11Y | Modal con focus trap + Esc + retorno de foco; popover de ayuda (.kpi-help) abre hacia abajo (no se corta arriba); red global :focus-visible. Estados vacíos discretos (medios de pago, devoluciones) y plurales/acentos corregidos. |
| v1.2.6 | 31/05/2026 | SISTEMA | Tokens centralizados: única fuente en site.css (:root + light). Eliminados los :root inline duplicados de 13 páginas + asistente/tiendanube; ds-styles.css queda solo con tokens de componente (--nav-*, --login-*). --glow unificado a anillo de foco 3px. Guard anti-deriva en system/check-tokens.mjs. |
| v1.2.6 | 31/05/2026 | FIX | Sombras recalibradas a navy/cyan suave (menos negro) en --shadow-sm/md/lg. Sombra del card del showcase a 0 1px 2px en light; banner Analytics Pro suavizado. |
| v1.2.6 | 31/05/2026 | SISTEMA | Módulos sin gradiente: hover plano con sombra sutil y header del módulo abierto a var(--cyan-soft) plano. Removido el efecto Side card gradient (huérfano); Nav item gradient reetiquetado a Módulo abierto · header. |
| v1.2.6 | 31/05/2026 | MOTION | Banner Analytics Pro con animaciones de entrada (línea del chart dibujada, count-up de KPIs/deltas/categorías, checks de a uno) y sin relleno de área bajo la línea. |
| v1.2.6 | 15/05/2026 | EXT | Integración visual con paleta Google para badges de marca externa. Esquema 4 colores — — para integraciones con Google Workspace, Google Ads y Looker Studio. |
| v1.2.6 | 15/05/2026 | PATRÓN | Nuevo patrón depth stack: 3 capas (grilla con fade radial · radiales spotlight · halo de frame) + cards con multi-shadow. Aplicado a la sección Módulos de la landing. |
| v1.2.6 | 15/05/2026 | RESPONSIVE | Nuevo breakpoint xxl ≥ 1440px — grids densos suman columna. Tablas y módulos pasan de 4 → 5 columnas en monitores anchos. |
| v1.2.6 | 15/05/2026 | PREVIEW | Sidebar incluye preview del Panel Gerencial · Analytics Pro. Modo takeover: oculta el resto del DS y muestra el panel en full-bleed. |
| v1.2.5 | 07/05/2026 | TOKEN | Nuevo token --text-cyan-muted. Fix --muted-2 dark/light a valores WCAG AA. Logo iA Ready inline. |
| v1.2.5 | 06/05/2026 | FIX | Auditoría shadows: eliminado box-shadow de desplazamiento en 15 clases de ds-doc.css y styles.css. Tooltip y focus mantienen sombra funcional. |
| v1.2.5 | 05/05/2026 | COMPONENTE | Nuevo Search Input borderless: .search-wrap, .search-icon, .search-input, .search-clear, .search-kbd. |
| v1.2.5 | 30/04/2026 | SISTEMA | Filosofía borderless. Fondo con grilla 52×52px y radiales cyan. Toggle de tema en 3 pasos. Mod-card con zonas separadas. Filtro por tags. |
| v1.2.4 | 20/03/2026 | RESPONSIVE | Breakpoint mobile con navegación lateral colapsable. Iconografía Phosphor. |
| v1.2.3 | 19/03/2026 | COMPONENTE | Variante Instalar ámbar. Release notes para trazabilidad. |
| v1.2.1 | 17/03/2026 | FIX | Tabla sortable base. |
Logo & Marca
El logotipo de YiQi existe en dos variantes: wordmark completo y símbolo Q. Siempre usar SVG nativo.
El motor YiQiLogo usa data-axis="y" (flip vertical). Se reproduce al cargar; click para repetir.
Wordmark de certificación. SVG inline con colores fijos por variante. Clases globales: .iar (texto) y .iar-a (letra A).
Dark — letras #f0f1f3 · A #00ccff
Light — letras #17191c · A #009fc7
Producción — clases .iar / .iar-a
Paleta de colores
Sistema de variables CSS con dos modos. En Figma, crear como Variable Collection con grupos Dark y Light.
Escala tipográfica
Tres familias: Greycliff CF para jerarquías mayores (display titles), Inter para texto de interfaz, IBM Plex Mono para labels, tokens y badges, y Plus Jakarta Sans 500 (tabular) para las cifras de KPI.
Único peso cargado: Heavy (800). El archivo se declara con font-weight: 700 900 en @font-face, así cubre cualquier display title con peso 700-900. Pesos menores caen al fallback (Plus Jakarta Sans → Inter).
Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.
Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.
Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.
Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.
Escala de espaciado
Base de 4px. Usar múltiplos de 4 para todo padding, margin y gap.
Sistema de radios
Escala progresiva desde controles pequeños hasta tarjetas grandes. Pill para badges y elementos circulares.
Sombras & Bordes activos
Sistema de glows y ring shadows. No usar box-shadow de desplazamiento — solo inset ring para depth.
box-shadow: var(--glow)
Callouts, notas y cards con borde en un solo lado (border-left o border-top de acento) quedan prohibidos: rompen el sistema flat & borderless y combinan mal con esquinas redondeadas. El énfasis se logra con fondo tonal (--amber-soft, --cyan-soft, etc.), nunca con bordes parciales.
Callout con acento lateral y esquinas redondeadas.
Callout con fondo tonal, sin bordes.
Animaciones & Transiciones
Sistema de timing minimalista. Hover sobre las cards para ver el efecto.
Botones
Se incorpora la variante ámbar para instalación y descarga operativa. Todos comparten radius-14 como base y admiten iconografía inline en SVG.
Badges, Tags & Pills
Sistema de etiquetas para estados, categorías y metadata. IBM Plex Mono en todos los casos.
Inputs & Formularios
Borderless: sin borde. El campo se identifica por diferencia de color — su fondo es un escalón más elevado que el contenedor (ej. input --bg-elev-2 sobre card --bg-elev). Altura 40px, focus ring cyan, --radius-sm.
Componente canónico para buscadores en landings y páginas internas. Sin borde visible por defecto (borderless). Fondo var(--bg-elev-2). Focus ring cyan. Clear button opcional. Shortcut ⌘K opcional. Clases: .search-wrap · .search-icon · .search-input · .search-clear · .search-kbd.
Usado en: faq.html · ayuda-erp.html · topbar del DS (variante compacta .topbar-search-wrap)
Cards & KPIs
Tres niveles de elevación. Los KPI cards con delta indicator en mono.
Trust / Stats
Componente único para cifras de prueba/credibilidad. Unifica los patrones dispersos (fb-kpi, about-stat, tech3d-stat, mkt-banner-stat, hero-trust). Cifra en IBM Plex Mono tabular, unidad en --cyan, label en mono mayúscula. Cuatro variantes, una sola base.
Para el hero o franjas de credibilidad. Hasta ~5 ítems en una fila. .trust.trust--inline
Para secciones con más respiro, con delta opcional. .trust.trust--cards
Para banners densos de 4-5 cifras. .trust.trust--grid
Ícono cyan-soft a la izquierda o mini-gráfico bajo la cifra. .trust-item.has-media · .trust-icon · .trust-spark
| Patrón viejo | Dónde | Reemplazar por |
|---|---|---|
.fb-kpi (Poppins/Lora, naranja) | Banner feedback | .trust--cards |
.about-stat (Inter 32px) | Acerca de | .trust--inline ó --cards |
.tech3d-stat (Inter + mono) | Sección 3D | .trust--cards |
.mkt-banner-stat (grid 4) | Banner marketplace | .trust--grid |
.hero-trust | Hero landing | .trust--inline |
Sortable data tables
Patrón llevado desde YiQi ERP · v11.4: topbar con búsqueda, columnas ordenables y estados inline. Click en el header para ordenar y usar el buscador para filtrar.
| ID | Cliente | Canal | Fecha | Estado | Total |
|---|---|---|---|---|---|
| ORD-11824 | Abaco S.A. | Mercado Libre | 12/03/2026 | ENTREGADA | ARS 382.900 |
| ORD-11825 | CREA S.A. | Web | 12/03/2026 | EN GESTIÓN | ARS 148.200 |
| ORD-11826 | Laboratorio Bios | Mayorista | 11/03/2026 | FACTURADA | ARS 591.400 |
| ORD-11827 | Roca Hnos. | POS | 11/03/2026 | PENDIENTE | ARS 96.700 |
| ORD-11828 | Alemar Perú | E-commerce | 10/03/2026 | DESPACHADA | ARS 214.300 |
Iconografía · Phosphor
Biblioteca estándar para módulos, navegación, datos, operaciones y soporte. Base sugerida para implementación front-end en YiQi.
Elementos varios
Avatar, topbar icons, live indicator, search bar, integration card, tooltip.
→ Componente de app. Documentado en Kit base · Estados de carga (§27 Aplicaciones).
Grid & Layout system
App shell con CSS Grid. Sidebar fijo + topbar sticky + main scroll. Responsive collapsa sidebar en <980px.
| Breakpoint | Ancho | Cambio |
|---|---|---|
| NEW xxl | ≥ 1440px | Grids densos suman columna — módulos pasan a 5 cols, KPIs pueden ir 5–6 |
| xl | > 1200px | Layout completo — 4 col KPIs, sidebar expandido |
| lg | ≤ 1200px | KPIs 2 col, panel full width |
| md | ≤ 980px | Sidebar colapsable con overlay, layout 1 col y topbar simplificado |
| sm | ≤ 720px | Todo el sistema pasa a 1 columna, cards e iconografía apilan verticalmente |
Grilla cuadriculada
Patrón de fondo cuadriculado para cards de énfasis, heroes y banners. Siempre sutil — refuerza la estructura sin competir con el contenido.
::before.mi-card::before {
content: ""; position: absolute; inset: 0;
pointer-events: none;
background-image:
linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px),
linear-gradient(180deg, rgba(255,255,255,.045) 1px, transparent 1px);
background-size: 36px 36px;
mask-image: linear-gradient(180deg, rgba(0,0,0,.5), transparent 80%);
}
Depth stack NEW v1.2.6
Patrón de profundidad para secciones de marketing (landing, leads). Tres capas decorativas no intrusivas + cards con sombra multi-stop. Pensado para grids densos donde el fondo plano se sentía vacío.
/* Capa 1 — Grilla con fade radial */
.depth-section::before {
content: ""; position: absolute; inset: 0; pointer-events: none;
background:
linear-gradient(rgba(255,255,255,.022) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,.022) 1px, transparent 1px);
background-size: 52px 52px;
mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, #000, transparent 82%);
}
/* Capa 2 — Radiales spotlight */
.depth-section::after {
content: ""; position: absolute; inset: 0; pointer-events: none;
background:
radial-gradient(ellipse 55% 38% at 50% -6%, rgba(0,204,255,.10), transparent 62%),
radial-gradient(ellipse 85% 50% at 50% 118%, rgba(0,204,255,.045), transparent 68%);
}
/* Capa 3 — Halo detrás del grid (z-index negativo) */
.depth-grid::before {
content: ""; position: absolute; inset: -28px -40px; z-index: -1;
background: radial-gradient(ellipse 60% 70% at 50% 50%, rgba(0,204,255,.05), transparent 70%);
}
/* Card con multi-shadow */
.depth-card {
background: linear-gradient(180deg, rgba(255,255,255,.024), transparent 38%), var(--bg-elev-2);
/* Sombras tinted navy — DS v1.2.6 evita negro puro */
box-shadow:
0 1px 0 rgba(255,255,255,.045) inset,
0 2px 6px rgba(8,16,32,.28),
0 14px 32px rgba(8,16,32,.40);
}
Demo Form — Formulario multi-paso
Formulario de solicitud de demo en 3 pasos. Borderless, chips de selección múltiple, validación inline y estado de éxito. Componente vivo — interactuable.
LLM FAB
Botón flotante para copiar el contexto del DS al clipboard. Diseñado para uso en páginas servidas (no file://). Web Component reutilizable.
<script src="../../components/llm-fab.js" defer></script>
<!-- Antes de </body> -->
<llm-fab base="../../"></llm-fab>
content/design-system/yiqi-design.md y content/prompts/execution.md. Por defecto: ./
fetch() no funciona sobre file://. El botón mostrará estado de error si la página se abre directamente desde Finder. Funciona en Netlify, dev server y cualquier servidor HTTP.
Tabla de implementación
Timeline de pasos numerados + infografía de plazos por fases. Se usa en propuestas e informes para comunicar el proceso de puesta en marcha.
Entendemos tu operación
Revisamos canales, procesos, listas de precios y configuración impositiva para definir una base de trabajo clara.
Adaptamos YiQi
Configuramos módulos, flujos y reglas por canal según cómo trabaja el cliente hoy.
Conectamos los canales
Integramos marketplaces y canales de venta, y dejamos lista la base para sumar nuevos.
Salís a operar acompañado
Puesta en marcha gradual con soporte: bot de ayuda, tickets, tutoriales y llamadas por Calendly.
- Los procesos simples se pueden habilitar antes.
- El plazo final depende de la cantidad de módulos y la complejidad de los datos.
- El plan de implementación específico de cada cliente se construye en las primeras reuniones.
Contador animado
Función runCounters() — anima cifras de 0 al valor destino con easing cúbico en 900 ms. Sin dependencias. Activación por IntersectionObserver.
| Atributo | Tipo | Descripción |
|---|---|---|
data-count | number | Valor destino. Requerido. |
data-prefix | string | Texto antes de la cifra. Ej: $ |
data-suffix | string | Texto después de la cifra. Ej: % |
function runCounters(root = document) {
root.querySelectorAll('[data-count]').forEach(el => {
const target = parseFloat(el.dataset.count);
const prefix = el.dataset.prefix || '';
const suffix = el.dataset.suffix || '';
const isInt = Number.isInteger(target);
const dur = 900;
let start = null;
function fmt(v) {
return isInt
? prefix + Math.round(v) + suffix
: prefix + v.toFixed(1).replace('.', ',') + suffix;
}
el.textContent = fmt(0);
function step(ts) {
if (!start) start = ts;
const p = Math.min((ts - start) / dur, 1);
const ease = 1 - Math.pow(1 - p, 3); // ease-out-cubic
el.textContent = fmt(ease * target);
if (p < 1) requestAnimationFrame(step);
}
requestAnimationFrame(step);
});
}
// Activación por IntersectionObserver
const io = new IntersectionObserver(entries => {
entries.forEach(e => { if (e.isIntersecting) { runCounters(e.target); io.unobserve(e.target); } });
}, { threshold: 0.3 });
document.querySelectorAll('.kpi-block').forEach(b => io.observe(b));
Animación de gráficos
Configuración canónica de animation en Chart.js 4 y sparklines SVG. Consistencia de timing y easing en todos los entregables.
| Tipo | duration | easing | Notas |
|---|---|---|---|
Barras (bar) | 900 | easeOutQuart | Sube desde la base, impacto rápido |
| Línea / mixto | 1000 | easeOutQuart | Dibuja punto a punto de izq. a der. |
| Donut / pie | 1000 | easeOutQuart | Giro desde las 12 h, sentido horario |
// Patrón canónico — pegar en options{} de cualquier chart
const chartAnim = {
duration: 900, // 900 barras · 1000 línea · 1000 donut
easing: 'easeOutQuart'
};
// Respetar prefers-reduced-motion
const reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if (reduce) chartAnim.duration = 0;
// Uso en new Chart()
options: {
animation: chartAnim,
// ...
}
Los gráficos no se inicializan al cargar. Se crean solo cuando el contenedor entra en el viewport (threshold 0.25). Evita animar charts fuera de pantalla.
let played = false;
const io = new IntersectionObserver(entries => {
if (entries[0].isIntersecting && !played) {
played = true;
io.disconnect();
buildCharts(); // inicializar aquí, no antes
runCounters();
}
}, { threshold: 0.25 });
io.observe(document.querySelector('#dashboard-section'));
Líneas SVG animadas con stroke-dashoffset. Solo se activan si prefers-reduced-motion: no-preference.
/* Estado inicial */
@media (prefers-reduced-motion: no-preference) {
.sparkline polyline {
stroke-dasharray: 1;
stroke-dashoffset: 1;
}
body.anim-in .sparkline polyline {
animation: sparkDraw 1.1s cubic-bezier(.6,.04,.2,1) forwards;
}
.sparkline polygon { opacity: 0; }
body.anim-in .sparkline polygon {
animation: sparkFade .5s ease .8s forwards;
}
}
@keyframes sparkDraw { to { stroke-dashoffset: 0 } }
@keyframes sparkFade { to { opacity: 1 } }
/* Activar: agregar clase al body */
document.body.classList.add('anim-in');
Siempre usar easeOutQuart — nunca linear ni easeInOut en gráficos de datos. Respetar prefers-reduced-motion con duration:0. No animar en carga inicial si el chart está fuera del viewport. Los gráficos secundarios o de fondo pueden usar duration:0 directamente.
Apps del marketplace
Componentes y convenciones para construir apps de YiQi con un lenguaje visual consistente. Base para apps propias y de partners.
Las apps comparten tokens, paleta, radios y sombras con la web. Lo que cambia es intencional, no deriva:
| Aspecto | Web (www.yiqi) | Apps (marketplace) |
|---|---|---|
Display font (--display) | Greycliff CF | Plus Jakarta Sans |
| Sans / Mono | Inter / IBM Plex Mono (compartidos) | |
| Tokens · paleta · radios · sombras | compartidos — mismos var(--*), no redefinir | |
| Fondo | radiales + grilla | solo radiales |
| Tema | toggle 3 pasos (Oscuro · Sistema · Claro), default system | |
| Logo | SVG inline (letras --text, Q --cyan) — nunca texto ni <img> | |
| # | Paso |
|---|---|
| 1 | Cargá el DS: <link href="https://diguardia.github.io/yiqi-imagen/styles.css"> + fonts (Plus Jakarta, Inter, IBM Plex Mono). |
| 2 | No redefinas tokens. Consumí var(--*) del DS. |
| 3 | Armá la app con los componentes del Kit base (shell): topbar, sidebar, estados de carga, etc. (sección siguiente). |
| 4 | Para publicar en el marketplace, la app pasa por certificación. |
Shell de app
El marco que comparten todas las apps: topbar + sidebar + área de contenido. Se toma del DS; cada app solo construye lo de adentro.
| Parte | Clase | Regla |
|---|---|---|
| Barra | .topbar | Sticky, alto 56px, fondo translúcido + backdrop-filter:blur(16px), borde inferior --line. |
| Logo | SVG inline | Letras --text, Q --cyan. Opcional animado al cargar. |
| Pill de producto | .t-pill | Mono 10px mayúsculas, borde --line, fondo --bg-elev-2, color --muted. (nuevo) |
| Chip de cuenta | .account-chip | Avatar inicial + usuario (--muted) + esquema (--text) en sans. (compartido) |
| Selector de esquema | .schema-toggle | Botón aria-haspopup con menú de esquemas borderless. Para apps multi-esquema (ej. panel). (compartido) |
| Actualizar | .btn-refresh | Pill --cyan-soft-2/--cyan; re-renderiza la vista. (nuevo) |
| Cerrar sesión | .btn-exit | Pill --bg-elev-2/--muted; hover --red. (nuevo) |
| Parte | Clase | Regla |
|---|---|---|
| Contenedor | .sidebar | Sticky, altura 100vh − topbar, scroll propio, flex column. |
| Item | .nav-item | Alto 40px, sans 13px. Activo: fondo --cyan-soft, texto --cyan. (base en §12) |
| Caja de ícono | .nav-icon | 26px, --radius-xs, SVG stroke (nunca emoji). Activo: --cyan-soft-2/--cyan. |
| Switch de tema | .sb-theme-switch | Píldora con 3 íconos (luna/monitor/sol), default system. (compartido) |
| Footer | .sb-footer / .sb-copy | Mono 10px --muted-2: © año YiQi S.A. · App · DS v1.2.7. (nuevo) |
Usar .load-progress a todo ancho, dentro de un contenedor transparente (.card-flush) para no boxear ni deformar la vista. Etiqueta + % mono cyan, barra de 4px, y línea de estado con dot.
Panel Gerencial · Componentes
Componentes de YiQi Analytics Pro. Cada pieza vive acá como fuente única: si cambia en la app, se actualiza en el DS. Actualizado a v1.2.7 con embudo real, donut de origen, semáforo con métrica, histograma de actividad y status pills.
Tarjeta base de indicador. Jerarquía: kicker → cifra (count-up, Plus Jakarta) → chip de delta tonal → nota de contexto. La “i” despliega el detalle al tocar (no title nativo). Toda la card es clickeable para abrir el gráfico en detalle.
Cada card es colapsable: el chevron de la esquina la reduce a una tira que deja visible solo el título; al expandir vuelve a mostrar valor, delta y nota. El colapso es independiente por card y no dispara el modal.
| Parte | Clase | Regla |
|---|---|---|
| Kicker / etiqueta | .kpi-label + .metric-label | Mono, mayúsculas, --muted-2. Puede llevar icono Phosphor. |
| Cifra | .kpi-value | Plus Jakarta 500, tabular-nums, centrada, count-up con data-count. Siempre en --text (neutral). |
| Delta | .kpi-delta.is-* | Chip tonal con flecha. Sin mayúsculas. is-positive verde, is-negative rojo, is-neutral gris (muted, no compite). Centrado. |
| Nota | .kpi-note | Inter 12px, --muted-2. Contexto breve, no decorativo. |
| Detalle “i” | .kpi-help + .kpi-help-pop | Botón accesible; despliega popover al tocar (click/Esc), no title. |
Regla: la cifra va en --text (neutral). El color semántico (verde positivo / rojo negativo) vive solo en el chip de delta, no en el número.
<article class="kpi-card">
<div class="kpi-label">
<span class="metric-label">Facturación total</span>
<button type="button" class="kpi-help" aria-expanded="false">
<span aria-hidden="true">i</span>
<span class="kpi-help-pop" role="tooltip">Detalle del indicador…</span>
</button>
</div>
<div class="kpi-value" data-count="2.84" data-prefix="$" data-suffix="M">$0M</div>
<div class="kpi-delta is-positive">↑ +18,4% vs período anterior</div>
<div class="kpi-note">Facturas + NDs − NCs del período.</div>
</article>
Al tocar un KPI card (con valor + delta de comparación), se abre un modal con dos barras (anterior vs actual), cards 2×2 y una tabla comparativa. El período anterior se deriva del delta declarado del KPI (no es un dato extra): si el delta es +8,7%, anterior = actual ÷ 1,087. Los valores secundarios van en mono tabular; los deltas en porcentaje con color por signo.
| Período | Valor | Δ vs actual |
|---|---|---|
| Período actual | 2.433 | — |
| Período anterior | 2.238 | +8,7% |
Nota: «Período anterior estimado a partir del delta declarado (+8,7%).» Solo se muestra en KPIs con delta de comparación; los de serie diaria (línea) mantienen Total/Promedio/Máx/Mín.
Las 7 secciones de módulo reutilizan los mismos componentes, así que estas reglas se definen una vez a nivel de clase y aplican a todas. Todo el panel es flat y borderless: la profundidad va por fondo/sombra, nunca por borde, y no hay degradés ni glows en datos.
| Patrón | Regla |
|---|---|
Tablas (.data-table) | Header en --bg-elev, mono 700 .12em --muted-2; hover gris neutro; última fila sin borde. Columnas numéricas .num → mono tabular, alineadas a la derecha. |
| Barras (franja · sucursal · embudo · progreso) | Track borderless en --line-strong (visible en claro/oscuro), fill cyan sólido con min-width para valores chicos y animación de entrada scaleX (funnelGrow). El valor pico en cyan sólido y el resto atenuado (--cyan-chart-bar). |
| Cards / paneles internos | Borderless: --bg-elev-2 + --shadow-sm. Embudo y cards de listas igual. |
| Charts | Toda card con gráfico es clickeable (.card-clickable + data-chart) y abre el modal de detalle. |
| Sin datos | Estado discreto: etiqueta + valor en 13px --muted-2, sin icono ni valor grande. |
| Color | Acento único cyan. El --blue quedó fuera; neutral semántico va en --muted (gris), no azul. |
| Producto | Unidades | Facturación |
|---|---|---|
| Producto y servicios | 70 | $ 700.000 |
| Crema · ARCREMA | 17 | $ 110.600 |
Piezas de visualización del panel conectadas a datos reales del ERP. Todas flat & borderless, con tokens y animación de entrada.
| Componente | Clases | Regla |
|---|---|---|
| Embudo operativo | .funnel · .funnel-step · .funnel-track/-fill · .funnel-leak · .funnel-total · .funnel-note | Embudo de cumplimiento con datos reales: pedidos → entregados → entregados a tiempo. Cada etapa = barra full-width con fuga (−N); última en verde (.is-end). SLA/total a la derecha del header. |
| Donut — origen | .donut-block · .donut-chart · .donut-legend · .legend-row · .donut-center | Composición parte-todo (Chart.js doughnut, cutout 68%, sortDonutDesc). Agrupa la cola en «Otros»; leyenda propia; paleta DS sin --blue. En el modal: rosca + desglose en 2 columnas con cifra al centro. |
| Semáforo diario | .signal-summary.tone-* · .signal · .signal-metric | Encabezado «Estado general» computado del peor tono; filas con punto de tono + título + métrica destacada (neutral, a la derecha). Punto plano, sin glow. |
| Actividad horaria | .rib-col · .rib-track · .rib-fill | Mini-histograma vertical; barra pico en cyan sólido, resto atenuado (--cyan-chart-bar); animación ribGrow. |
| Status pills | .status-pill.pill-muted/-amber/-cyan | Estado de roadmap / backlog. Mono, mayúsculas, fondo tonal soft, borderless. |
Estructura del Resumen ejecutivo y los controles del topbar. Clases definidas a nivel de app; reglas canónicas acá.
| Componente | Clases | Regla |
|---|---|---|
| Cockpit — headline | .cp-headline · .cph-kicker · .cph-val · .cph-row · .cph-spark | Hero del Resumen: kicker + cifra grande (count-up) + delta + sparkline (Chart.js) embebido. Card .card-clickable → abre el modal de facturación. |
| Spark toggle | .spark-toggle · .spark-opt[data-spark] | Conmutador línea/barras del sparkline; barras por defecto en series diarias. .is-active marca el tipo vigente. |
| Panel de acción | .cp-action · .cpa-head · .cpa-list | Aside «Lo que requiere acción»: lista priorizada al lado del headline. |
| Sidebar · navegación | .nav · .nav-link(.is-active) · .nav-lbl · .nav-div · .n-ico | Ítems icono + label; hover --bg-soft, activo --cyan-soft. gap 4px entre opciones; grupos con label mono y divisor .nav-div. |
| Chip de usuario / esquema | → Componentes compartidos. Documentados en Kit base (§27 Aplicaciones). | |
Render en vivo de cada componente del panel, con su nombre.
118 sin entregar y 28 demorados en el período. Mayor fuga: pendientes (76).
- Estado general — Atención
1 punto requiere seguimiento · 2 OK
- Facturación consolidada$157,4 M
$157,4 M en 1335 pedidos procesados.
- Estado operativo de pedidos1 incid.
0 pendientes, 0 demorados y 1 cancelado en el período.
- Franja de mayor actividad31%
10-12 concentra 31% del flujo operativo.
Conmuta el tipo del sparkline/chart. .is-active marca el vigente; barras por defecto en series diarias.
Inventario completo: todos los componentes del Panel Gerencial (Analytics Pro) están documentados en esta sección a v1.2.7.
Banner Analytics Pro
Componente promocional para la web (no es una app). Banner de difusión de Analytics Pro.