feat: MVP Fase 0 — Process Cost Platform v0.1.0
Plataforma completa de análisis de costos operativos basada en BPMN 2.0. Funcionalidades incluidas: - Import de archivos BPMN 2.0 por drag & drop + 3 procesos de ejemplo - Visualización read-only del diagrama (bpmn-js) - Configuración de actividades (costo, tiempo, recursos asignados) - CRUD de recursos (rol, persona, sistema, equipo, insumo) - Configuración global (moneda, overhead %, nombre, cliente) - Motor de simulación determinístico agregado con propagación de gateways XOR/AND - Reporte visual con mapa de calor en dos modos (relativo/absoluto) - Gráficos: KPIs, top actividades, composición, costo por recurso - Export PDF (jsPDF + html2canvas) y CSV (papaparse) - Persistencia en IndexedDB (Dexie) - 268 tests unitarios/integración + 6 E2E con Playwright - Deploy: https://process-cost-platform.pages.dev Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
92
src/styles/globals.css
Normal file
92
src/styles/globals.css
Normal file
@@ -0,0 +1,92 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
|
||||
@import 'bpmn-js/dist/assets/diagram-js.css';
|
||||
@import 'bpmn-js/dist/assets/bpmn-js.css';
|
||||
@import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css';
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@layer base {
|
||||
:root {
|
||||
--background: 0 0% 100%;
|
||||
--foreground: 222.2 84% 4.9%;
|
||||
--card: 0 0% 100%;
|
||||
--card-foreground: 222.2 84% 4.9%;
|
||||
--popover: 0 0% 100%;
|
||||
--popover-foreground: 222.2 84% 4.9%;
|
||||
--primary: 221.2 83.2% 53.3%;
|
||||
--primary-foreground: 210 40% 98%;
|
||||
--secondary: 210 40% 96.1%;
|
||||
--secondary-foreground: 222.2 47.4% 11.2%;
|
||||
--muted: 210 40% 96.1%;
|
||||
--muted-foreground: 215.4 16.3% 46.9%;
|
||||
--accent: 210 40% 96.1%;
|
||||
--accent-foreground: 222.2 47.4% 11.2%;
|
||||
--destructive: 0 84.2% 60.2%;
|
||||
--destructive-foreground: 210 40% 98%;
|
||||
--border: 214.3 31.8% 91.4%;
|
||||
--input: 214.3 31.8% 91.4%;
|
||||
--ring: 221.2 83.2% 53.3%;
|
||||
--radius: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@layer base {
|
||||
* {
|
||||
@apply border-border;
|
||||
}
|
||||
body {
|
||||
@apply bg-background text-foreground font-sans;
|
||||
font-feature-settings: "rlig" 1, "calt" 1;
|
||||
}
|
||||
.font-mono {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
}
|
||||
}
|
||||
|
||||
/* ── bpmn-js canvas ─────────────────────────────────────────── */
|
||||
.bpmn-container .djs-container {
|
||||
background: #f8fafc; /* slate-50 */
|
||||
}
|
||||
|
||||
/* Elemento seleccionado desde nuestro código */
|
||||
.bpmn-container .bpmn-selected .djs-visual > :first-child {
|
||||
stroke: hsl(var(--primary)) !important;
|
||||
stroke-width: 2.5px !important;
|
||||
}
|
||||
|
||||
/* Elemento clickeable: cursor pointer en tasks */
|
||||
.bpmn-container .djs-element[data-element-id] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/* Hover visual en tasks */
|
||||
.bpmn-container .djs-shape:hover .djs-visual > rect,
|
||||
.bpmn-container .djs-shape:hover .djs-visual > path {
|
||||
filter: brightness(0.97);
|
||||
}
|
||||
|
||||
/* heatmap overlays — para la Etapa 5 */
|
||||
.heatmap-overlay {
|
||||
pointer-events: none;
|
||||
transition: fill 0.3s ease;
|
||||
}
|
||||
|
||||
/* Asegurar que bpmn-js ocupa todo su contenedor */
|
||||
.bpmn-container .djs-container svg {
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
/* Cursor pointer sobre tasks en el heatmap del reporte */
|
||||
.bpmn-container .djs-shape[data-element-id] .djs-hit {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/* Selección en el heatmap del reporte — stroke más prominente */
|
||||
.bpmn-container .bpmn-selected .djs-visual > rect {
|
||||
stroke: hsl(var(--primary)) !important;
|
||||
stroke-width: 3px !important;
|
||||
stroke-dasharray: none !important;
|
||||
}
|
||||
Reference in New Issue
Block a user