Sistema de diseño
Inventario completo de la propuesta, incluidos los controles que hoy usa el sistema anterior. Sirve como referencia para el equipo que lo construya.
Cómo se mantiene: el catálogo va por delante del producto. Un componente entra aunque todavía ninguna pantalla lo use: se resuelve una vez, aquí, para que el día que haga falta ya exista una sola forma de hacerlo y no tres inventadas con prisa. Lo que no se negocia es la forma de la ficha —estados, cuándo usarlo y cuándo no, y código— y que toda alta o cambio quede en el registro. Ante la duda de cómo debe comportarse un control, la referencia es baseweb.design: se toma de ahí la interacción y la accesibilidad, no la apariencia, que es la nuestra.
Estable ya vive en una pantalla Nuevo recién entrado Preparado listo, aún sin pantalla que lo use
Catálogo
Nada coincide con «».
Cómo funciona esto
Todo esto ya se cumplía y estaba escrito sólo en CLAUDE.md, un fichero dirigido a un asistente. Son las reglas que separan un sistema de una página de muestras.
Las seis reglas que hacen que esto se sostenga: qué forma tiene una ficha, qué dice cada pastilla, de dónde sale cada demo, hacia dónde mandan los tokens y qué se comprueba solo.
Código
Color de marca
Los dos azules salen del logotipo. El resto de la escala se deriva de ellos, y los tonos semánticos —verde, ámbar, rosa— sólo se usan para decir cómo va algo, nunca para decorar. Las gráficas con varias series tienen su propio juego de ocho tonos, porque una rampa de azules no distingue ocho marcas.
Código
Superficies
La jerarquía de esta propuesta se construye con sombra, no con líneas. Casi no hay bordes en todo el sistema: lo que separa una superficie de otra es a qué altura flota.
Código
Tipografía
Plus Jakarta Sans en 800. Toda cifra lleva tabular-nums para que no baile al actualizarse, y tracking-[-0.02em] a partir de 26px.
Código
Iconografía
Estaban todos en assets/icons.js y en ninguna pantalla: quien fuera a construir algo nuevo no tenía forma de saber qué existía ya, así que el camino corto era dibujar el número cincuenta y siete.
Los cincuenta y seis glifos del sistema, dibujados a mano sobre una retícula de 24×24 con trazo redondeado. No hay librería de iconos ni una sola petición externa.
Código
Espaciado y medidas
Los tokens sólo decían «escala de Tailwind sin cambios», que es cierto y no ayuda: lo que hacía falta era saber qué hueco usar dónde, y eso vivía únicamente en el HTML ya escrito.
La escala de Tailwind sin tocar, y —esto sí es decisión nuestra— dónde cae cada paso, las medidas que se repiten entre pantallas y qué decide cada punto de quiebre.
Código
Movimiento
Las tres duraciones ya se usaban —23 veces la de 150ms, 23 la de 200ms, 4 la de 300ms— pero no estaban escritas en ninguna parte, así que la cuarta la elegía cada quien.
Tres duraciones y una sola curva. Todo lo que se mueve en la propuesta elige una de las tres, y todo respeta la preferencia de movimiento reducido del sistema.
Código
Capas
Había trece valores distintos repartidos por la propuesta, incluidos un z-[89] y un z-[81] elegidos a ojo para colarse entre dos cosas. Funcionan, pero sólo se entienden leyendo las cuatro pantallas a la vez.
Doce peldaños con nombre para el orden de apilado, del contenido al enlace de salto, que se ve por encima de todo.
Código
Voz y microcopia
Estas diez reglas ya se cumplían casi siempre, y donde no, se notaba: los avisos decían «3 unidad(es)», y pegar el nombre del campo a « es obligatorio» daba «Marca es obligatorio». Se corrigieron al escribir la ficha.
Las reglas de redacción de la interfaz. Un sistema de diseño que no dice cómo se escribe deja la mitad de lo que el usuario ve fuera del sistema.
Código
Botones y controles
Tres jerarquías, y sólo una primaria por pantalla. El botón de envío se bloquea mientras dura la operación: sin eso, dos clics mandan el formulario dos veces.
Código
Estados
Tres vocabularios distintos —cumplimiento, operación y trámite— con la misma forma. El color va siempre con la palabra, para que se entienda sin distinguir tonos.
Código
Campos de captura
Etiqueta flotante: se ve siempre, ocupa una línea y no desaparece al escribir, que es lo que pasa con el marcador de posición. Con estados de error, inactivo y sólo lectura.
Código
Selectores con búsqueda
Para catálogos largos — conductores, marcas, tipos de documento. Búsqueda insensible a acentos (“cordoba” encuentra “Córdoba”), coincidencia resaltada y navegación con flechas y Enter.
Escritos a mano, sin librerías. Buscan por trozo y sin acentos: «cordoba» y «doba» encuentran «Córdoba». Sirven datos locales o remotos, y con datos remotos descartan las respuestas que llegan tarde.
Código
Interruptores, casillas y opciones
El interruptor aplica al instante; la casilla y el radio esperan a que se guarde. Confundirlos hace que el usuario no sepa si ya cambió algo.
Código
Opciones en tarjeta
Cuando la decisión merece explicación, no sólo una etiqueta.
Un grupo de radios con más superficie: cabe un icono y una explicación. La tarjeta entera es la zona de clic, no sólo el círculo.
Código
Campos especiales
Contraseña con ojo, selector de color y un selector que puede crear lo que no encuentra —el caso normal cuando la lista viene de otra tabla.
Código
Lista con acciones
Filas con acciones por elemento. Aparecen al pasar el cursor, pero siguen alcanzables con el teclado: si sólo se vieran al pasar el ratón, no existirían para quien no lo usa.
Código
Paleta de comandos
Un solo sitio para llegar a cualquier cosa: unidades, personal, documentos normativos, módulos y acciones. Se abre con ⌘K o Ctrl K, y siempre hay un disparador visible: donde existe el campo de búsqueda del encabezado es ese campo; donde no —este catálogo y el listado— es la lupa de arriba a la derecha.
Código
Avatares
Sin fotos: iniciales sobre color. Tres tintes según el fondo y el significado. En unidades, el color transmite el estado de cumplimiento.
Código
Tabla de datos
El componente más usado del producto. Cabeceras ordenables, selección múltiple, franja de hover redondeada, seis tipos de celda, estado vacío, paginación y barra de acciones masivas. Debajo de md se sustituye por una lista de tarjetas.
Código
Minigráfica · 44 px
Servicios
783
Completa · 196 px, con rejilla y puntos
Operación
Servicios completados
Sin operación registrada
Cuando haya movimientos, aparecerán aquí.
No se pudo cargar
Revisa la conexión e inténtalo otra vez.
Cumplimiento
96%
general
Arco simple
Un solo porcentaje, sin leyenda.
95.4%
disponible
Útil cuando la comparación es contra el total y no entre partes.
Sin cumplimiento que mostrar
Cuando haya movimientos, aparecerán aquí.
No se pudo cargar
Revisa la conexión e inténtalo otra vez.
Faltan 3 campos
Completa: No. de unidad, Marca, Año.
Tienes un borrador sin terminar
Puedes retomar la captura donde la dejaste.
Vehículo registrado
La unidad R500 ya forma parte de la flotilla.
R035
Kenworth T680 · 2021
Identificación
puesta(s) · en el catálogo. Retroceso con el campo vacío quita la última.
/
– de 78 unidades
Consultando…
El taller abre de 07:00 a 19:00.
Periodo
Elegido:
Kenworth T680
84AJ7T · Juan Pérez Morales
- Odómetro
- 412 880 km
- Combustible
- 68 %
Escala azul GLP
El 600 y el 900 se tomaron directamente del logotipo.
Series de gráfica
window.SERIES: un tono por identidad (marca, sucursal…), asignado por entidad y no por posición, para que filtrar no repinte a las que quedan. PALETA es una rampa y sirve para magnitudes; los tonos semánticos siguen reservados para estados.
El botón de envío se bloquea mientras dura la operación: sin eso, dos clics mandan el formulario dos veces.
Botón de icono con contador
El número también va en el aria-label: quien no ve la pastilla tiene que oír la cifra. A partir de 99 se recorta a 99+ para que la pastilla no deforme el botón. En el riel contraído el contador se reduce a un punto, porque no hay ancho para la cifra.
Código
Sobre fondo de color
La variante fantasma para tarjetas con degradado. Los botones normales pierden contraste ahí.
Cumplimiento de la unidad
Operación de la unidad
Trámite · estados del sistema anterior
Este campo es obligatorio.
Interruptor
Casillas
Opción única
Contraseña
Color
Selector con alta
Escribe un nombre que no exista y aparece Agregar «…». Es lo normal cuando la lista viene de una tabla relacionada.
Selección simple
Selección múltiple
Datos del servidor
Consulta al servidor a partir de 2 caracteres, con retardo de 260 ms y descarte de respuestas que lleguen tarde. Aquí la consulta está simulada con 700 ms de espera para que se vea el estado de carga.
Dentro de un formulario
Archivo cargado
Aún no eliges ningún archivo.
Personal asignado
persona(s)
-
Nadie asignado
Asigna personal para poder programar servicios.
Rendimiento promedio Km/lt
Barras agrupadas
Total km recorridos
Líneas múltiples
Total litros
Barras horizontales apiladas
Rendimiento promedio Km/lt
Barras agrupadas
Atención inmediata: 11 asuntos vencidos
Reporte ejecutivo ·
Hay 11 asuntos vencidos que frenan a 5 unidades: 2 de mantenimiento vehicular, 3 de seguridad operativa, 5 de compliance y 1 de documentos de vehículos. Las unidades detenidas son R095, R211, R035, R102, R178.
En los próximos 30 días vencen 18 asuntos más: 6 de mantenimiento vehicular, 3 de seguridad operativa, 3 de compliance, 2 de documentos del personal y 4 de documentos de vehículos. 8 vencen esta semana.
Resumen ejecutivo
Reporte ejecutivo ·
No hay nada vencido. Las 284 unidades están al corriente.
En los próximos 30 días vencen 18 asuntos: 6 de mantenimiento vehicular, 3 de seguridad operativa, 3 de compliance, 2 de documentos del personal y 4 de documentos de vehículos. 8 vencen esta semana.
Todo en orden
Así se ve cuando la carga funciona.
No pudimos cargar la página
Revisa tu conexión. Si sigue igual, avisa a soporte.
Sin resultados
Prueba con otra búsqueda.
Cargando
Avisos temporales
GLPIcon('truck', 'w-5 h-5') devuelve el SVG en línea; en una plantilla, ico(nombre, clases, grosor). Trazo de 24×24 y grosor 1.9 por omisión.
Escala
Múltiplos de 4 con dos excepciones (6 y 10) que ya venían de Tailwind. Lo que decidimos nosotros no es la escala: es dónde cae cada paso.
Dónde cae cada paso
Medidas que se repiten entre pantallas
El relleno izquierdo de <main> sigue al riel: 244px, o 76px cuando está plegado. Las barras flotantes también, o quedan descuadradas al plegarlo.
Puntos de quiebre y qué decide cada uno
Tres duraciones y una sola curva, cubic-bezier(.4, 0, .2, 1). Con prefers-reduced-motion todo baja a 0.01ms en @layer base; esa regla no alcanza al desplazamiento suave pedido desde JS, así que ése pasa siempre por GLPDesplazar().
Convenio: el velo va en N y su contenido en N+1. Y un aviso: un desplegable dentro de la cabecera vive en el contexto de apilado de la cabecera, así que su z sólo lo ordena frente a sus hermanos y nunca lo sube por encima del riel. Lo que tenga que escapar va fijo al <body>, como los avisos.
Fechas: 27 ago 2026 dentro de una tabla, 27 de agosto de 2026 en texto corrido. Vocabulario del sistema: unidad (vehículo), pipa (autotanque), sucursal, aviso, cumplimiento (Vigente / Próximo / Vencido), ID-CNE o permiso CRE.
Un enlace dentro de un texto se distingue por el color y el peso, no por el subrayado: en una tabla llena de enlaces subrayados no se lee nada. El subrayado aparece al pasar por encima y al enfocar. La unidad R035 venció hace doce días; su expediente normativo sigue disponible.
Acción principal
Acción secundaria, dentro de una fila
Nunca es el único botón de una barra: al lado va siempre la salida, y por delante la confirmación. El rojo es para lo que no se puede deshacer, no para «cancelar».
Una vista guarda la combinación de filtros, el orden y las columnas. Las dos primeras vienen con el sistema y no se pueden borrar; las demás son de quien las creó.
Flechas arriba y abajo recorren lo que se ve; derecha abre y entra, izquierda cierra y sale; Inicio y Fin van a los extremos; Intro elige. Todo el árbol es una sola parada del tabulador, no cuarenta. Con el ratón, la flecha del principio abre y cierra y el resto de la fila elige: elegir una sucursal no debe cerrarla.
El botón que confirma repite la acción —«Dar de baja»— en vez de decir «Aceptar»: quien llega al diálogo sin haber leído el título tiene que poder saber qué va a pasar leyendo sólo el botón. Y el que cancela va primero y sin peso, para que el pulgar no lo esquive.
Añadir un componente no depende de que alguna pantalla lo pida: el catálogo va por delante del producto a propósito. Lo que sí es obligatorio es la forma de la ficha y una línea en el registro de cambios.