Design System v1.2.7
⌘K
ERP · Enterprise UI
YiQi ERP · Design System

Tokens, componentes
y patrones

Sistema de diseño listo para implementación. Incluye variables, tipografía, espaciado, radios, efectos y todos los componentes de interfaz, preparado para uso directo en producto y desarrollo.

Dark + Light mode Inter + IBM Plex Mono Cyan accent system Release notes incluidas
01 · Novedades

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.

Nuevo token
--text-cyan-muted
Texto con tinte cyan de baja intensidad para subtítulos, estado activo de módulos y labels secundarios con acento — sin la agresividad del cyan puro.
Filosofía de diseño
Borderless por defecto
Los elementos van sin borde siempre que sea posible. La profundidad se construye con elevación de fondo y box-shadow. Los inputs también van borderless: fondo tonal + focus ring cyan, sin borde.
Cambios de esta versión
VersiónFechaTipoDetalle
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.
02 · Marca

Logo & Marca

El logotipo de YiQi existe en dos variantes: wordmark completo y símbolo Q. Siempre usar SVG nativo.

Wordmark — modo oscuro
ERP
Propuesta UI
Wordmark — modo claro
Animación — flip vertical

El motor YiQiLogo usa data-axis="y" (flip vertical). Se reproduce al cargar; click para repetir.

data-axis="y" · flip vertical
Símbolo Q — mark solo
40px · dark 28px · dark 40px · light
Logo IA Ready

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

03 · Colores

Paleta de colores

Sistema de variables CSS con dos modos. En Figma, crear como Variable Collection con grupos Dark y Light.

Fondos (Backgrounds)
BG Base
--bg
#0a0a0b · #eeece7
BG Elevado
--bg-elev
#0f1013 · #f6f4ef
BG Elevado 2
--bg-elev-2
#14161b · #ffffff
BG Suave
--bg-soft
#181b21 · #ece9e2
Texto
Text Primary
--text
#f3f5f7 · #17191c
Text Muted
--muted
#908e8e · #5e5a57
Text Muted 2
--muted-2
#625f5f · #8a8580
Bordes / Líneas
Line Default
--line
rgba(255,255,255,.08) · rgba(0,0,0,.08)
Line Strong
--line-strong
rgba(255,255,255,.14) · rgba(0,0,0,.13)
Acento principal — Cyan
Cyan
--cyan
#00ccff · #009fc7
Cyan Soft
--cyan-soft
rgba(0,204,255,.10) · ≈#091d23
Cyan Soft 2
--cyan-soft-2
rgba(0,204,255,.16) · ≈#082932
Colores semánticos
Success / Green
--green
#15d49c · #0c9b6d
Warning / Amber
--amber
#ffb020 · #c78000
Danger / Red
--red
#ff637d · #d4485e
Info / Blue
--blue
#7ab7ff · #347de6
Accent / Purple
--purple
#a78bfa · #7c3aed
04 · Tipografía

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.

Jerarquía display — Greycliff CF Heavy NEW v1.2.6

Ú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).

Dashboard general
40px / 800 / ls -.028em
Hero title · Greycliff CF Heavy
Configuración
30px / 800 / ls -.028em
Placeholder title · Greycliff CF Heavy
$2,847,391
28px / 500 / tabular-nums
KPI value · Plus Jakarta 500
Facturación mensual
24px / 800 / ls -.024em
Section hero · Greycliff CF Heavy
Jerarquía UI — Inter (UI sans)
Panel de análisis
14px / 700
Panel title · Inter
Módulo Compras
13px / 600
Module title
Descripción del módulo y contexto de uso
13px / 400
Body / table cell
Subtexto de apoyo, fechas, metadata
12px / 400 / muted
Meta text
Ayuda contextual y notas de pie
11px / 400 / muted
Helper / caption
Mono — IBM Plex Mono (labels, tokens, badges)
MÓDULO ACTIVO
10px / 700 / ls .16em / UC
Kicker / section label
COMPRAS
10px / 700 / ls .12em / UC
Nav section label
+18.4%
11px / 600
Delta / KPI change
INV-2024-0047
10px / 700
ID / código mono
⌘K
10px / 600
Keyboard shortcut
Interlinea — line-height
1.1 tight

Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.

1.35 snug

Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.

1.4 compact

Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.

1.55 normal

Automatización de cobranzas con recordatorios multicanal, links de pago personalizados y conciliación automática.

05 · Espaciado

Escala de espaciado

Base de 4px. Usar múltiplos de 4 para todo padding, margin y gap.

4
6
8
10
12
14
16
18
20
22
24
28
32
36
40
Tokens de layout
--sidebar-w
308px
--topbar-h
54px
Sidebar colapsado
88px
Content padding
20–22px
Card gap
12px
Section gap
14–18px
06 · Border Radius

Sistema de radios

Escala progresiva desde controles pequeños hasta tarjetas grandes. Pill para badges y elementos circulares.

--radius-xs
6px
Checkboxes, chips peq.
--radius-sm
10px
Sub-items, icon btns
--radius
14px (base)
Botones, inputs, tags
--radius-md
16px
Nav items, módulos
--radius-lg
18px
Cards, panels, tables
--radius-xl
24px
Modales, placeholders
--radius-pill
999px
Badges, avatares, pills
07 · Efectos

Sombras & Bordes activos

Sistema de glows y ring shadows. No usar box-shadow de desplazamiento — solo inset ring para depth.

Glow ring (--glow)
box-shadow: 0 0 0 1px rgba(0,204,255,.14) inset
Usado en: cards accent, inputs focus, módulos abiertos
Input focus state
border-color: rgba(0,204,255,.28)
box-shadow: var(--glow)
Inputs, textareas, selects al focus
Módulo abierto · header
background: var(--cyan-soft)
Header del módulo accordion abierto
No permitido — borde de un solo lado

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.

Observaciones
Callout con acento lateral y esquinas redondeadas.
✕ No permitido · borde de un solo lado
Observaciones
Callout con fondo tonal, sin bordes.
✓ Correcto · fondo tonal borderless
08 · Motion

Animaciones & Transiciones

Sistema de timing minimalista. Hover sobre las cards para ver el efecto.

Micro transition
duration: 180ms · ease
Botones, inputs, borders, bg hover
Chevron rotate
duration: 180ms · ease
Módulo accordion open/close
LIVE
Live pulse
duration: 2s · infinite · ease
Indicador de estado en tiempo real
Fade in up
duration: 400ms · ease · delay escalonado
Carga inicial de cards y módulos
09 · Componentes

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.

Variantes
Tamaños
Con íconos
Uso recomendado
CTA operativo La variante .btn-amber queda reservada para acciones de instalación, descarga o activación. El ícono base es flecha descendente con línea inferior, siempre en SVG inline.
10 · Badges & Tags

Badges, Tags & Pills

Sistema de etiquetas para estados, categorías y metadata. IBM Plex Mono en todos los casos.

Status badges
ACTIVO COMPLETADO PENDIENTE ERROR INACTIVO
Status pills (sin dot)
SINCRONIZADO EN PROCESO FALLO
Feature tags
Facturación Real-time API Multi-empresa
Placeholder tags (outline)
Dashboard CRUD Reportes Exportar Permisos
Alert badge (sobre íconos)
3
!
11 · Inputs

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.

Input text
⌘K
Search Input — borderless

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.

⌘K

Usado en: faq.html · ayuda-erp.html · topbar del DS (variante compacta .topbar-search-wrap)

Text area
Select
Toggle switch
Checkbox
12 · Cards

Cards & KPIs

Tres niveles de elevación. Los KPI cards con delta indicator en mono.

KPI cards (grid 4 col)
Facturación MTD
$2.84M
↑ +18.4% vs mes anterior
Pedidos activos
1,247
↑ +6.2%
Tasa conversión
68.3%
→ Sin cambio
Pagos pendientes
$341K
↑ +12% (atención)
Panel card
Flujo de caja proyectado
Últimos 6 meses
Real-time
CHART AREA
13 · Trust / Stats NEW v1.2.7

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.

A · Inline con divisores

Para el hero o franjas de credibilidad. Hasta ~5 ítems en una fila. .trust.trust--inline

+15 años
de experiencia
30+
integraciones nativas
API REST
completa y abierta
B · Cards (borderless + sombra)

Para secciones con más respiro, con delta opcional. .trust.trust--cards

$2.84M
Facturación MTD↑ +18.4%
1.247
Pedidos activos↑ +6.2%
68,3%
Tasa conversión→ sin cambio
$341K
Pagos pendientes↑ +12%
C · Grid compacto (borde superior)

Para banners densos de 4-5 cifras. .trust.trust--grid

+16
Módulos
+60
Objetos documentados
3
Formas de integración
+20
Eventos automatizables
D · Con ícono / sparkline

Ícono cyan-soft a la izquierda o mini-gráfico bajo la cifra. .trust-item.has-media · .trust-icon · .trust-spark

99,9%
Uptime
30+
Integraciones
$2.84M
Facturación MTD
Migración
Patrón viejoDóndeReemplazar 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-trustHero landing.trust--inline
15 · Tablas

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.

Ventas / Pedidos recientes
Tabla base reutilizable para módulos operativos
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
No hay resultados para esa búsqueda.
Tokens aplicados
Header
Mono uppercase, tracking .12em, fondo var(--bg-elev).
Toolbar
Contenedor con search inline, borde sutil y spacing 14 / 16.
Sorting
Indicador de orden en header, asc/desc en cyan para feedback inmediato.
16 · Iconografía

Iconografía · Phosphor

Biblioteca estándar para módulos, navegación, datos, operaciones y soporte. Base sugerida para implementación front-end en YiQi.

Set base del sistema
ConfiguraciónGearSix
SeguridadShieldCheck
AnalyticsChartLineUp
AuditoríaListMagnifyingGlass
TestingFlask
AjustesSliders
LanzamientosRocket
CapacitaciónGraduationCap
SoporteHeadset
FinanzasCalculator
VentasShoppingCart
ClientesUsersThree
InventarioPackage
AltasUserPlus
ComprasBag
DocumentaciónBook
LogrosMedal
CanalesStorefront
AutomaciónLightning
CrecimientoTrendUp
ReportesChartBar
Base de datosDatabase
CloudCloud
VínculosLink
ConectoresPlugs
ExtensionesPuzzlePiece
ArchivosFiles
HistorialClockClockwise
GlobalGlobe
EmailEnvelope
ContactoPhone
InicioHouseLine
PartnersHandshake
ImportacionesShippingContainer
Línea de tendenciaChartLine
TareasListChecks
LogísticaTruck
VisualizaciónGraph
Guía de uso
Tamaño
16px para controles densos, 18px como tamaño base y 20px para navegación principal.
Color
Usar currentColor y heredar del contexto. Cyan para activo, muted para reposo, text para énfasis.
Implementación React
Base sugerida: @phosphor-icons/react. En esta versión HTML se documenta la librería web para preview visual.
17 · Varios

Elementos varios

Avatar, topbar icons, live indicator, search bar, integration card, tooltip.

Avatar & Live indicator
SM
JR
LIVE
Topbar icon buttons
3
Search bar
Buscar módulo, cliente, pedido... ⌘K
Integration card
Stripe
Pagos en línea
ACTIVO
Tooltip
Exportar a Excel (.xlsx)
Módulo en desarrollo — disponible en Q2
Load progress

→ Componente de app. Documentado en Kit base · Estados de carga (§27 Aplicaciones).

18 · Layout

Grid & Layout system

App shell con CSS Grid. Sidebar fijo + topbar sticky + main scroll. Responsive collapsa sidebar en <980px.

App shell
grid-template-columns: var(--sidebar-w) 1fr /* 308px sidebar + fluid main */
grid-template-rows: var(--topbar-h) 1fr /* 54px topbar sticky */
Topbar span: grid-column: 1 / -1
Content grids
KPIs: repeat(4, minmax(0, 1fr)) gap 12px
Main panel: minmax(0, 1.65fr) minmax(320px, 1fr) gap 12px
Integrations: repeat(4, minmax(0, 1fr)) gap 12px
Placeholder: minmax(0, 1.2fr) minmax(340px, 0.8fr)
Breakpoints
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
19 · Background Grid

Grilla cuadriculada

Patrón de fondo cuadriculado para cards de énfasis, heroes y banners. Siempre sutil — refuerza la estructura sin competir con el contenido.

.bg-grid 36px · default
.bg-grid-sm 20px · fine
.bg-grid-lg 64px · wide
fade-b (top)
fade-t (bottom)
fade-c (radial)
Uso recomendado — vía ::before
.mi-card { position: relative; overflow: hidden; }
.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%);
}
Tokens y clases
.bg-grid36px · rgba(255,255,255,.045)
.bg-grid-sm20px · rgba(255,255,255,.04)
.bg-grid-lg64px · rgba(255,255,255,.04)
.bg-grid-fade-b/t/cmáscaras de fade — top / bottom / radial
20 · Patrón

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.

Anatomía — 3 capas
CAPA 1 Grilla con fade radial
CAPA 2 Radiales spotlight
CAPA 3 · halo del frame
Resultado compuesto
VENTAS
Omnicanalidad
STOCK
Tiempo real
CRM
Pipeline
POS
Offline
Uso — CSS recomendado
.depth-section { position: relative; overflow: hidden; isolation: isolate; }

/* 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);
}
Cuándo aplicarlo
Sí — secciones de landing con grilla densa (módulos, features, pricing tiers), heroes secundarios, banners de campaña.
No — dashboards, informes, formularios, tablas largas. El patrón es para marketing, no para producto.
21 · Componentes
22 · Componentes

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.

Demo interactivo
Contacto
Reserva tu demo
Nuestro equipo te contacta en menos de 24 hs.
Ingresa tu nombre.
Ingresa un email válido.
Empleados
Módulos de interés
¡Solicitud recibida!
Nuestro equipo te contacta en menos de 24 hs para coordinar la demo.
Chips de selección
Section label
Error inline
Ingresa un valor válido.
Step bar
done active pending

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.

default
.copied
.errored
Uso
<!-- En el <head> -->
<script src="../../components/llm-fab.js" defer></script>

<!-- Antes de </body> -->
<llm-fab base="../../"></llm-fab>
Atributos
base Ruta relativa a la raíz del sitio donde viven content/design-system/yiqi-design.md y content/prompts/execution.md. Por defecto: ./
Requiere servidor. 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.
23 · Patrón

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.

01

Entendemos tu operación

Revisamos canales, procesos, listas de precios y configuración impositiva para definir una base de trabajo clara.

02

Adaptamos YiQi

Configuramos módulos, flujos y reglas por canal según cómo trabaja el cliente hoy.

03

Conectamos los canales

Integramos marketplaces y canales de venta, y dejamos lista la base para sumar nuevos.

04

Salís a operar acompañado

Puesta en marcha gradual con soporte: bot de ayuda, tickets, tutoriales y llamadas por Calendly.

Plazos orientativos 10–12 semanas
Configuración
Módulos e integraciones
Ajuste · Go live
Sem 1 Sem 3 Sem 5 Sem 8 Sem 12
Semanas 1–3 Parámetros del sistema, catálogo de productos, configuración impositiva y usuarios.
Semanas 4–8 Activación de módulos, flujos de compra y venta, integraciones con canales de venta.
Semanas 9–12 Pruebas en paralelo, capacitación del equipo y puesta en marcha gradual con soporte activo.
  • 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.
24 · Patrón

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.

Demo
0 ped.
Pedidos / mes
0%
Uptime
$0M
Facturado
0 mód.
Módulos
Atributos HTML
AtributoTipoDescripción
data-countnumberValor destino. Requerido.
data-prefixstringTexto antes de la cifra. Ej: $
data-suffixstringTexto después de la cifra. Ej: %
Función canónica
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));
25 · Patrón

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.

Demo
Barras · 900ms easeOutQuart
Línea · 1000ms easeOutQuart
Donut · 1000ms easeOutQuart
Chart.js — configuración por tipo
TipodurationeasingNotas
Barras (bar)900easeOutQuartSube desde la base, impacto rápido
Línea / mixto1000easeOutQuartDibuja punto a punto de izq. a der.
Donut / pie1000easeOutQuartGiro 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,
  // ...
}
Activación diferida — IntersectionObserver

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'));
Sparklines SVG — animación CSS

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');
Reglas

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.

26 · Aplicaciones · Overview

Apps del marketplace

Componentes y convenciones para construir apps de YiQi con un lenguaje visual consistente. Base para apps propias y de partners.

Convenciones de apps

Las apps comparten tokens, paleta, radios y sombras con la web. Lo que cambia es intencional, no deriva:

AspectoWeb (www.yiqi)Apps (marketplace)
Display font (--display)Greycliff CFPlus Jakarta Sans
Sans / MonoInter / IBM Plex Mono (compartidos)
Tokens · paleta · radios · sombrascompartidos — mismos var(--*), no redefinir
Fondoradiales + grillasolo radiales
Tematoggle 3 pasos (Oscuro · Sistema · Claro), default system
LogoSVG inline (letras --text, Q --cyan) — nunca texto ni <img>
Cómo empezar (dev externo)
#Paso
1Cargá el DS: <link href="https://diguardia.github.io/yiqi-imagen/styles.css"> + fonts (Plus Jakarta, Inter, IBM Plex Mono).
2No redefinas tokens. Consumí var(--*) del DS.
3Armá la app con los componentes del Kit base (shell): topbar, sidebar, estados de carga, etc. (sección siguiente).
4Para publicar en el marketplace, la app pasa por certificación.
27 · Aplicaciones · Kit base

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.

El shell
Mi App DVDev Externo
Sección
Inicio
Otra vista
© 2026 YiQi S.A.
Mi App · DS v1.2.7
Área de contenido — acá va lo propio de cada app.
Topbar
ParteClaseRegla
Barra.topbarSticky, alto 56px, fondo translúcido + backdrop-filter:blur(16px), borde inferior --line.
LogoSVG inlineLetras --text, Q --cyan. Opcional animado al cargar.
Pill de producto.t-pillMono 10px mayúsculas, borde --line, fondo --bg-elev-2, color --muted. (nuevo)
Chip de cuenta.account-chipAvatar inicial + usuario (--muted) + esquema (--text) en sans. (compartido)
Selector de esquema.schema-toggleBotón aria-haspopup con menú de esquemas borderless. Para apps multi-esquema (ej. panel). (compartido)
Actualizar.btn-refreshPill --cyan-soft-2/--cyan; re-renderiza la vista. (nuevo)
Cerrar sesión.btn-exitPill --bg-elev-2/--muted; hover --red. (nuevo)
Sidebar
ParteClaseRegla
Contenedor.sidebarSticky, altura 100vh − topbar, scroll propio, flex column.
Item.nav-itemAlto 40px, sans 13px. Activo: fondo --cyan-soft, texto --cyan. (base en §12)
Caja de ícono.nav-icon26px, --radius-xs, SVG stroke (nunca emoji). Activo: --cyan-soft-2/--cyan.
Switch de tema.sb-theme-switchPíldora con 3 íconos (luna/monitor/sol), default system. (compartido)
Footer.sb-footer / .sb-copyMono 10px --muted-2: © año YiQi S.A. · App · DS v1.2.7. (nuevo)
Estados de carga

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.

Conectando con el servidor... 65%
Listo 100%
28 · Aplicación

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.

KPI card

Tarjeta base de indicador. Jerarquía: kickercifra (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.

Facturación total
$0M
↑ +18,4% vs período anterior
Facturas + NDs − NCs del período seleccionado.
Ticket promedio
$0K
→ Estable vs período anterior
Facturación total / cantidad de comprobantes.
Pedidos del período
0
↑ +6,2% vs período anterior
Comprobantes de venta emitidos.
Pagos pendientes
$0K
↑ +12% — requiere atención
Saldo por cobrar a la fecha de corte.

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.

Anatomía
ParteClaseRegla
Kicker / etiqueta.kpi-label + .metric-labelMono, mayúsculas, --muted-2. Puede llevar icono Phosphor.
Cifra.kpi-valuePlus 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-noteInter 12px, --muted-2. Contexto breve, no decorativo.
Detalle “i”.kpi-help + .kpi-help-popBotó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.

Variantes de delta
↑ +18,4% → Sin cambio ↓ −7,1%
Markup
<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>
Modal de comparación de período

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 actual
2.433
Período seleccionado
Período anterior
2.238
Comparativa
Δ absoluto
+195
Diferencia neta
Δ relativo
+8,7%
vs período ant.
PeríodoValorΔ vs actual
Período actual2.433
Período anterior2.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.

Patrones de módulo (Ventas, Canales, Operación, Finanzas, Calidad, Rentabilidad, Backlog)

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ónRegla
Tablas (.data-table)Header en --bg-elev, mono 700 .12em --muted-2; hover gris neutro; última fila sin borde. Columnas numéricas .nummono 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 internosBorderless: --bg-elev-2 + --shadow-sm. Embudo y cards de listas igual.
ChartsToda card con gráfico es clickeable (.card-clickable + data-chart) y abre el modal de detalle.
Sin datosEstado discreto: etiqueta + valor en 13px --muted-2, sin icono ni valor grande.
ColorAcento único cyan. El --blue quedó fuera; neutral semántico va en --muted (gris), no azul.
Tabla — columnas numéricas a la derecha
ProductoUnidadesFacturación
Producto y servicios70$ 700.000
Crema · ARCREMA17$ 110.600
Componentes de datos · v1.2.7

Piezas de visualización del panel conectadas a datos reales del ERP. Todas flat & borderless, con tokens y animación de entrada.

ComponenteClasesRegla
Embudo operativo.funnel · .funnel-step · .funnel-track/-fill · .funnel-leak · .funnel-total · .funnel-noteEmbudo 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-centerComposició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-metricEncabezado «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-fillMini-histograma vertical; barra pico en cyan sólido, resto atenuado (--cyan-chart-bar); animación ribGrow.
Status pills.status-pill.pill-muted/-amber/-cyanEstado de roadmap / backlog. Mono, mayúsculas, fondo tonal soft, borderless.
Planificado En análisis En curso
Cockpit & chrome de aplicación

Estructura del Resumen ejecutivo y los controles del topbar. Clases definidas a nivel de app; reglas canónicas acá.

ComponenteClasesRegla
Cockpit — headline.cp-headline · .cph-kicker · .cph-val · .cph-row · .cph-sparkHero 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-listAside «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).
Galería visual

Render en vivo de cada componente del panel, con su nombre.

Embudo operativo
Pedidos del período1.926
Entregados −1181.808 · 94%
Entregados a tiempo −281.780 · 92%

118 sin entregar y 28 demorados en el período. Mayor fuga: pendientes (76).

Donut — participación por origen
Semáforo diario
  • 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.

Actividad horaria · histograma
11%
08-10
31%
10-12
31%
12-14
14%
14-16
6%
16-18
3%
18-20
3%
20-22
Status pills
Planificado En análisis En curso
Cockpit · headline + sparkline
Facturación total del período
$ 157,4 M
↑ +18,4% vs período anterior
Chip de usuario / esquema
SMUsuario YiQi Febo · 2026
Toggle de gráfico · línea / barras

Conmuta el tipo del sparkline/chart. .is-active marca el vigente; barras por defecto en series diarias.

Modal de detalle — serie diaria
Tendencia
Facturación diaria
×
Total
$157,4 M
Promedio
$11,2 M
Máx
$18,9 M
Mín
$2,1 M
Modal de composición — donut
Canales
Participación por origen
×
65%
POS
Origen líder
POS · 65%
Top 3
99%
Orígenes
4
Sidebar · navegación

Inventario completo: todos los componentes del Panel Gerencial (Analytics Pro) están documentados en esta sección a v1.2.7.

29 · Web

Banner Analytics Pro

Componente promocional para la web (no es una app). Banner de difusión de Analytics Pro.