Copia este prompt para iniciar
nuevos proyectos con estas reglas estrictas.
Antes de empezar, analiza mi design system en:
https://muni-surco.github.io/Design-system-C4-MSS/
Extrae tokens de color, tipografía (Chivo), espaciados, íconos, componentes y patrones visuales. Úsalos como guía estricta para todo lo que construyamos. No uses otros estilos ni componentes externos que no estén en el design system.
Proyecto a construir: [describe aquí tu nueva app]
Tokens de Diseño
Colores
Paleta Principal
Primary
#005ea5
P. Dark
#003D6B
P. Light
#E6EEF5
Secondary
#00C9A7
Sec. Dark
#00A88A
Sec. Light
#E0FAF5
Accent
#F5A623
Estados
Danger
#E03E3E
Warning
#F5A623
Success
#27AE60
Info
#2F80ED
Neutros
900
#1A1A2E
700
#4A4A6A
500
#8888AA
300
#D0D5E8
100
#F4F6FB
Tipografía
Font: Chivo — Tipografía corporativa moderna.
3xl / 700 · 38px
Seguridad Ciudadana
2xl / 700 · 30px
Panel de Incidentes
xl / 700 · 24px
Reporte Semanal
lg / 600 · 20px
Unidades Serenazgo
base / 400 · 15px
Texto de cuerpo principal para interfaces.
sm / 400 · 13px
Texto secundario, metadatos, descripciones.
xs UPPER / 11px
Etiquetas de sección
Espaciado & Border Radius
4px
8px
12px
16px
24px
32px
48px
Border Radius
4px sm
8px md
12px lg
16px xl
full pill
Íconos — Lucide
Librería recomendada: Lucide Icons — Open source, MIT license, más de 1,400
íconos de trazo consistente. Ideal para dashboards operativos internos.
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>Agregar en el <head> de tu app
<!-- Variantes de botón --><buttonclass="btn bp bmd">Nuevo Incidente</button><buttonclass="btn bse bmd">Ver Reportes</button><buttonclass="btn bo bmd">Exportar</button><buttonclass="btn bg2 bmd">Cancelar</button><buttonclass="btn bda bmd">Eliminar</button><!-- bp=primary bse=secondary bo=outline
bg2=ghost bda=danger bwa=warning -->
Tamaños
<buttonclass="btn bp bsm">Pequeño</button><buttonclass="btn bp bmd">Mediano</button><buttonclass="btn bp blg">Grande</button><!-- bsm=small bmd=medium blg=large -->
Con Ícono
<buttonclass="btn bp bmd"><idata-lucide="plus"style="width:15px;height:15px;stroke:white;
stroke-width:2.5;fill:none;flex-shrink:0"></i>
Registrar
</button><buttonclass="btn bda bmd"style="padding:9px 12px"><idata-lucide="trash-2"style="width:15px;height:15px;stroke:white;
stroke-width:2;fill:none;flex-shrink:0"></i></button>
<spanclass="av avsm"style="background:var(--cs)">JP</span><spanclass="av avmd"style="background:var(--cpd)">ML</span><spanclass="av avlg"style="background:var(--cd)">CR</span><spanclass="av avlg"style="background:var(--ca)">TS</span><spanclass="av avmd"style="background:var(--g7)">AD</span><!-- avsm=28px avmd=38px avlg=52px --><!-- Color de fondo con style="background:..." -->
Inputs & Forms
Inputs Estándar
DNI debe tener 8 dígitos.
<!-- Input estándar --><divclass="iw"><labelclass="il">Nombre Agente <span>*</span></label><inputclass="inp"type="text"placeholder="Ej: Juan Pérez"/></div><!-- Select --><divclass="iw"><labelclass="il">Zona</label><selectclass="sel"><option>Seleccionar...</option></select></div><!-- Input con error --><inputclass="inp err"type="text"value="12345"/><spanclass="ih err">DNI debe tener 8 dígitos.</span><!-- Input group (botón + input) --><divclass="ig"><inputclass="inp"type="text"placeholder="Nro. o descripción..."/><buttonclass="btn bp bmd">Buscar</button></div><!-- Textarea --><textareaclass="inp"rows="3"style="resize:vertical"placeholder="Descripción..."></textarea><!-- Date con ícono --><divclass="inp-date-wrap"><idata-lucide="calendar"class="inp-date-icon"></i><inputtype="date"class="inp"/></div>
Date Range Picker
→
Multiselect & Autocomplete
Seleccionar zonas...
Buscar agente por nombre...
File Upload
Haz clic o arrastra archivos aquí
Soporta imágenes, PDF y documentos (Máx. 10MB)
reporte_incidente_surco.pdf
2.4 MB · Completado
Signature Pad
Validación de Campos
El nombre debe tener al menos 10 caracteres.
<!-- Validación con error --><divclass="iw"><labelclass="il">Nombre</label><inputtype="text"class="inp is-invalid"value="Juan"/><divclass="invalid-feedback"><idata-lucide="alert-circle"style="width:12px"></i>
El nombre debe tener al menos 10 caracteres.
</div></div><!-- .is-invalid = borde rojo + focus rojo
.is-valid = borde verde + focus verde
.invalid-feedback se muestra con CSS -->
Alertas
Alerta Alta PrioridadIncidente crítico en Av. Primavera.
AdvertenciaSin reporte de posición por 2 horas.
ResueltoCaso cerrado satisfactoriamente.
InformaciónMantenimiento programado sábado.
<divclass="al ang"><divclass="al-i"><idata-lucide="shield-alert"style="width:20px;height:20px;stroke:var(--cd);
stroke-width:2;fill:none;flex-shrink:0"></i></div><div><strong>Alerta Alta Prioridad</strong>
Incidente crítico en Av. Primavera.
</div></div><!-- Variantes de alerta:
ang = danger (rojo)
awn = warning (amarillo)
aok = success (verde)
ainf = info (azul) --><divclass="al awn">...</div><divclass="al aok">...</div><divclass="al ainf">...</div>
Toggle / Switch
Control para activar o desactivar configuraciones del sistema. Disponible en tres tamaños y con
estado deshabilitado.
Tamaños
Small
Medium
Large
Disabled
<!-- Small --><labelclass="tg2 tg-sm"><inputtype="checkbox"checked><spanclass="tsl2"></span></label><!-- Medium (default) --><labelclass="tg2"><inputtype="checkbox"checked><spanclass="tsl2"></span></label><!-- Large --><labelclass="tg2 tg-lg"><inputtype="checkbox"checked><spanclass="tsl2"></span></label><!-- Disabled --><labelclass="tg2"><inputtype="checkbox"disabled><spanclass="tsl2"></span></label>
Toggle Cards — Con descripción
Alertas sonoras
Reproduce un sonido al recibir nuevos incidentes críticos.
Rastreo GPS en tiempo real
Actualiza la posición de las unidades cada 30 segundos.
Modo oscuro
Cambia la interfaz a tema oscuro para turnos nocturnos.
<divclass="tg-card"><divclass="tg-info"><divclass="tg-title"><idata-lucide="bell"style="width:15px;height:15px"></i>
Alertas sonoras
</div><divclass="tg-desc">
Reproduce un sonido al recibir incidentes.
</div></div><labelclass="tg2"><inputtype="checkbox"checked><spanclass="tsl2"></span></label></div>
Toggle en línea — Inline
Notificaciones
activas
Modo nocturno
GPS habilitado
Reportes
automáticos
Componentes Compuestos
Cards & Stats
Card Estándar
Reporte DiarioAl día
Se atendieron 14 incidentes en el turno nocturno.
Actualizado: hoy 06:45 AM
<divclass="card"><divclass="ch2"><spanclass="cht">Reporte Diario</span><spanclass="bdg dok"><spanclass="dot"></span>Al día
</span></div><divclass="cb"><p>Se atendieron <strong>14 incidentes</strong>.</p></div><divclass="cf">Actualizado: hoy 06:45 AM</div></div><!-- ch2=card header cht=card header title
cb=card body cf=card footer -->
Cards KPI
142
Incidentes mes
↑ 8%
28
Agentes activos
↑ 3 nuevos
<divclass="sc2"><divclass="si t"><idata-lucide="siren"style="width:22px;height:22px;stroke:var(--cpd);
stroke-width:2;fill:none"></i></div><div><divclass="sv">142</div><divclass="sl">Incidentes mes</div><divclass="str up">↑ 8%</div></div></div><!-- sc2=stat card si t=icon primary
si n=icon secondary si r=icon danger
si a=icon accent
sv=stat value sl=stat label
str.up=trend up str.dn=trend down -->
Agrupa contenido colapsable para mostrar información progresivamente. Ideal para FAQs,
procedimientos y configuración.
Accordion Estándar
Protocolo ante robo a transeúnte
Pasos obligatorios del agente de serenazgo
Garantizar la seguridad del denunciante y del área.
Registrar el incidente en el sistema con ubicación exacta.
Solicitar refuerzos si el sospechoso sigue en la zona.
Coordinar con la comisaría más cercana y trasladar al afectado.
Completar el parte policial antes de finalizar el turno.
Configuración de zonas de cobertura
Define los sectores asignados por turno
Cada zona se puede configurar con su área geográfica, número mínimo de unidades y horario de
cobertura. Los cambios entran en vigencia en el siguiente turno programado.
Zona NorteZona SurZona
CentroZona Este
Generación de reportes y estadísticas
Exporta datos del turno en PDF o Excel
Los reportes incluyen total de incidentes, tiempo promedio de respuesta, agentes activos y
cobertura por zona. Se generan automáticamente al cierre de cada turno.
Preguntas frecuentes del sistema
Soporte técnico y dudas operativas
Para soporte técnico contacta al área de TI al interno 1234 o escribe a
[email protected].
El horario de atención es de lunes a viernes de 8am a 6pm.
Usa el botón + Nuevo en la
barra superior o accede a Incidentes → Registrar. Completa todos los campos obligatorios marcados
con asterisco.
¿Cómo asignar un agente a un caso?
Abre el incidente y selecciona el botón
Asignar. El sistema mostrará los agentes disponibles en la zona. La asignación se
notifica automáticamente al agente.
¿Qué significa cada nivel de prioridad?
Alta Riesgo inmediato — responder en menos
de 5 min.
Media Situación controlable — atender en 20
min.
Baja Sin urgencia — resolver en el turno.
<divclass="pw"><divclass="flex ic"style="justify-content:space-between;margin-bottom:4px"><span>Resueltos</span><strong>91%</strong></div><divclass="pb2"><divclass="pf"style="width:91%;background:var(--cok)"></div></div></div><!-- .pw = progress wrapper
.pb2 = progress bar track
.pf = progress fill (ajusta width%) -->
Skeleton Loading
<divclass="skel"style="height:16px;width:60%"></div><divclass="skel"style="height:12px;width:80%"></div><divclass="skel"style="height:80px;width:100%;border-radius:var(--rmd)"></div><!-- .skel = elemento skeleton animado
Ajusta height/width según el contenido que reemplaza -->
Patrones
Patrón — Tarjeta de Incidente
Tarjeta de Incidente
#2026-0041 · hace 12 min
Vehículo
sospechoso estacionado
Av.
Primavera 1240, Zona Norte
AltaVehículos
JPJuan Pérez · SER-04
#2026-0040 · hace 45 min
Ruidos
molestos nocturnos
Jr. Los
Cóndores 456, Zona Sur
MediaRuidos
#2026-0038 · hace 2h
Desmonte
en vía pública
Ca. Los
Álamos 120, Zona Este
Resuelto
<divclass="inc"><divclass="ip palt"></div><divclass="ib"><divclass="iid">#2026-0041 · hace 12 min</div><divclass="itit">Título</div><divclass="imet">Dirección</div><divclass="flex g2 mt2"><spanclass="bdg dng">Alta</span><spanclass="chip">Categoría</span></div></div><buttonclass="btn bp bsm">Asignar</button></div><!-- .inc = tarjeta incidente
.ip = indicador de prioridad (palt/pmed/pbja)
.ib = body del incidente
.iid = id + timestamp
.itit = título
.imet = metadata (ubicación) -->
Timeline — Historial de Incidente
Secuencia cronológica de eventos de un caso de seguridad. Esencial para auditoría y seguimiento.
Timeline de Caso
08:32 AM — Hoy
Incidente
registradoAlta
Se reportó vehículo sospechoso en Av. Primavera 1240.
Guía al operador a través de un proceso de múltiples pasos. Ideal para registrar incidentes,
crear reportes o configurar zonas.
Horizontal
Tipo
Completado
Ubicación
Completado
3
Agente
En progreso
4
Evidencia
Pendiente
5
Confirmar
Pendiente
Datos básicos
!
Validación
Error
3
Revisión
4
Envío
<divclass="stp"><divclass="stp-item done"><divclass="stp-circle"><idata-lucide="check"></i></div><divclass="stp-label">Nombre</div><divclass="stp-sublabel">Estado</div></div><divclass="stp-item active">...</div><divclass="stp-item">...</div></div><!-- .stp-item done = completado
.stp-item active = en progreso
.stp-item error = con error
(sin clase) = pendiente -->
Vertical — Con contenido
Tipo de incidente
Vehículo
sospechoso
Ubicación
Av.
Primavera 1240, Zona Norte
3
Asignar agente
4
Evidencia fotográfica
Opcional — adjuntar imagen del incidente
5
Confirmar y registrar
Revisión final y envío al sistema
<divclass="stp-v"><divclass="stp-v-item done"><divclass="stp-v-left"><divclass="stp-circle"style="width:32px;height:32px"><idata-lucide="check"></i></div></div><divclass="stp-v-right"><divclass="stp-v-title">Título</div><divclass="stp-v-body">Contenido</div></div></div></div><!-- .stp-v = contenedor vertical
.stp-v-left = columna del círculo
.stp-v-right = columna de contenido
.active en step muestra form/acción -->
Data Filter Bar
Barra de filtros avanzada para tablas de incidentes, agentes y reportes. Combina búsqueda libre
con filtros contextuales.
Filter Bar completa
Zona
Estado
Filtros activos:
Zona Norte Alta prioridad
14 resultados
<divclass="flt-bar"><divclass="flt-search"><idata-lucide="search"></i><inputtype="text"placeholder="Buscar..."/></div><divclass="flt-divider"></div><divclass="flt-group"><spanclass="flt-label">Zona</span><selectclass="flt-sel">...</select></div><buttonclass="btn bp bmd">Filtrar</button></div><divclass="flex ic g3 fw"><divclass="flt-active-chips"><spanclass="flt-chip">Filtro ×</span></div><spanclass="flt-results">14 resultados</span></div><!-- .flt-bar = barra de filtros
.flt-search = campo de búsqueda
.flt-group = grupo label+select
.flt-chip = chip de filtro activo -->
Filter Bar compacta — Tabs + filtro
Todos
Activos
Pendientes
Resueltos
142 casos
<divclass="flex ic g3 fw"><divclass="tabs"style="border-bottom:none;gap:var(--s1)"><divclass="tab act"style="border:1px solid var(--g3);border-radius:var(--rmd);margin:0">
Todos
</div><divclass="tab"style="...">Activos</div></div><divclass="flt-search">...</div><selectclass="flt-sel">...</select><spanclass="flt-results">142 casos</span></div><!-- Combina tabs de estado + búsqueda + filtro
Variante compacta para espacios reducidos -->
Maquetaciones
Navegación
Componentes de navegación principal para apps internas. Incluye variantes de header principal,
compacto y sidebar lateral.
Header Principal
Seguridad Ciudadana
Municipalidad de Santiago de Surco