Component
Library.
Componentes críticos para construir App (B2C) y Cloud (B2B) sin improvisar. Cada componente está documentado con sus estados, variantes y reglas de uso.
Modal / Dialog.
Para confirmaciones, formularios cortos y alertas críticas. Siempre con backdrop oscuro. Max border-radius: 8px. Foco atrapado mientras está abierto.
Estás por confirmar 4 líneas por un total de $ 3,240.00 MXN. El cargo se aplicará a la tarjeta terminada en 4242.
Entrega estimada: hoy, 14:00–17:00 hrs.
Esta acción es irreversible. Se eliminarán todos tus pedidos, direcciones y métodos de pago.
Escribe ELIMINAR para confirmar.
sm: 360px
md: 480px (default)
lg: 640px
--z-modal (300)
Esc · clic backdrop · botón ✕
Toast / Snackbar.
Feedback no-bloqueante. Auto-dismiss en 4 s. Aparece en esquina inferior-derecha (App) o superior-derecha (Cloud). Un solo toast visible a la vez.
Bottom-right: App
Top-right: Cloud
4 000ms auto-dismiss
Pausar en hover
--z-toast (400)
Form Fields.
Todos los campos usan border-radius: 4px, altura 44px mínima y estado de foco con el anillo --signal. Labels siempre fuera y arriba del campo.
Validacion inline.
Validar en onBlur, no en tiempo real. El error aparece debajo del campo con icono y texto. Nunca solo color — siempre texto.
Skeleton loaders.
Usar skeleton cuando el tiempo de carga es >300ms y la estructura del contenido es predecible. Spinner para acciones puntuales (submit). Nunca ambos juntos.
Carga de lista, página o datos de API. La estructura es conocida de antemano.
Acción puntual: submit de form, upload de archivo, operación en progreso sin estructura predecible.
Empty states.
Cada empty state tiene: número de sección, título en Lastica, descripción en Inter, y un CTA opcional. Nunca ilustración decorativa — la tipografía es el visual.
Aún no has realizado ningún pedido. Tu historial aparecerá aquí.
No hay cortes que coincidan con "Wagyu A5". Prueba con otro término.
No pudimos obtener la información. Revisa tu conexión e intenta de nuevo.
Estás sin internet. Los datos que ves pueden estar desactualizados.
Tu cuenta está lista. Configura tu perfil y realiza tu primer pedido.
No tienes permisos para ver esta sección. Contacta al administrador de tu cuenta.
Error pages.
Páginas de error completas. El código de error es el elemento visual principal — en Lastica, enorme. La acción siempre es clara: volver, reintentar o contactar.
La URL que buscas no existe o fue movida. Revisa que esté escrita correctamente.
Algo falló en nuestros sistemas. Estamos trabajando en resolverlo. Tu pedido no fue afectado.
Estamos actualizando el sistema. Regresa en aproximadamente 30 minutos.
Tabs.
Para alternar vistas dentro de la misma pantalla. Máximo 6 tabs visibles. El tab activo lleva un borde inferior negro de 2px — sin background, sin pill.
Contenido del tab Activos. Aquí van las órdenes en proceso.
Contenido de Historial. Lista de órdenes completadas.
Contenido de Facturación. CFDIs y timbres.
Contenido de Configuración. Cuenta y permisos.
Máximo 6 tabs. Siempre con borde inferior de 2px para el activo. Badge solo para contadores relevantes.
No usar tabs para navegación entre páginas (usa el nav). No usar pill/background en el activo. No anidar tabs.
Table.
Para Cloud B2B. Header sticky, columnas ordenables, selección de filas, paginación. Numerales tabulares en todas las celdas de datos. Máximo 7-8 columnas visibles.
| # Pedido | Cliente | Cortes | Total | Entrega | Estado | ||
|---|---|---|---|---|---|---|---|
| PED-08431 | Hotel Camino Real Puebla · HORECA |
14 cortes · 32.6 kg | $ 8,240.00 | Hoy · 14:00–17:00 | ● En ruta | ||
| PED-08430 | Restaurante Ambrosia CDMX · HORECA |
6 cortes · 18.0 kg | $ 3,960.00 | Hoy · 11:00–13:00 | ○ Preparando | ||
| PED-08428 | Colegio Americano Puebla · Comedor |
22 cortes · 68.4 kg | $ 14,120.00 | Mañana · 07:00–09:00 | ○ Confirmado | ||
| PED-08425 | Banquetes Morelia Michoacán · Eventual |
8 cortes · 24.0 kg | $ 5,280.00 | 08/05 · 10:00–12:00 | ✕ Incidencia |
Contrast matrix.
Todos los pares de color foreground/background del sistema con su ratio WCAG 2.2. Verde = pasa AA (≥4.5:1 texto normal, ≥3:1 texto grande). Rojo = falla.
| Foreground | Background | Muestra | Ratio | AA Normal | AA Grande | AAA |
|---|---|---|---|---|---|---|
| --ink #0A0A0A | --paper #FFF | Texto | 19.7 : 1 | ✓ Pasa | ✓ Pasa | ✓ Pasa |
| --paper #FFF | --ink #0A0A0A | Texto | 19.7 : 1 | ✓ Pasa | ✓ Pasa | ✓ Pasa |
| --ink #0A0A0A | --bone #FAFAF8 | Texto | 19.1 : 1 | ✓ Pasa | ✓ Pasa | ✓ Pasa |
| --graphite #5A5A55 | --paper #FFF | Texto | 7.0 : 1 | ✓ Pasa | ✓ Pasa | ✓ Pasa |
| --steel #A8A8A2 | --paper #FFF | Texto | 2.7 : 1 | ✕ Falla | ✕ Falla | ✕ Falla |
| --signal #C41D1D | --paper #FFF | Error | 5.1 : 1 | ✓ Pasa | ✓ Pasa | ✕ Falla |
| --signal #C41D1D | --ink #0A0A0A | Error | 3.9 : 1 | ✕ Falla | ✓ Pasa | ✕ Falla |
| --success #1F8A5B | --paper #FFF | OK | 4.5 : 1 | ✓ Pasa | ✓ Pasa | ✕ Falla |
| rgba(255,255,255,0.78) | --ink #0A0A0A | Body on dark | 13.8 : 1 | ✓ Pasa | ✓ Pasa | ✓ Pasa |
| rgba(255,255,255,0.50) | --ink #0A0A0A | Secondary | 7.0 : 1 | ✓ Pasa | ✓ Pasa | ✓ Pasa |
| rgba(255,255,255,0.35) | --ink #0A0A0A | Tertiary | 4.2 : 1 | ✕ Falla | ✓ Pasa | ✕ Falla |
ATENCIÓN: --steel sobre --paper (2.7:1) falla WCAG — úsalo solo para texto decorativo, íconos grandes ≥24px, o metadatos que no sean content esencial.
rgba(255,255,255,0.35) sobre --ink (4.2:1) falla para texto normal pero pasa para texto grande (≥18px / ≥14px bold) — solo para eyebrows y meta en secciones invertidas.
Icon set curado.
Subconjunto canónico de Phosphor Icons (Regular, 24px, stroke 1.5px). Estos son los únicos iconos aprobados. Para conceptos no cubiertos aquí, proponer antes de agregar.
Fuente: Phosphor Icons — Regular weight, 24×24px, stroke-width 1.5px.
Color: --ink en superficies claras · --paper en superficies oscuras · --signal solo en estados de error/destructivos.
Prohibido: FontAwesome, Material Icons, Heroicons, Feather, emojis en UI.
Drawer / Sheet.
Panel lateral para filtros, carrito y detalles sin salir de la vista actual. Desde la derecha en desktop (360px), full-width en mobile. Backdrop + Escape para cerrar.
Accordion.
Para FAQ, detalles de pedido, y secciones colapsables. Solo uno abierto a la vez (opcion). Chevron rota 180 grados al abrir.
Badge / Tag.
Para categorias de producto, estados, contadores y metadata. Siempre en mono, siempre compactos. No usar como botones.
Avatar.
Para listas de clientes en Cloud. Circulo con iniciales en Inter 600. 3 tamanos: 32px (tabla), 40px (lista), 48px (perfil). Sin imagenes — solo iniciales.