style(HistoriaClinica): Agrupar tabs en menu select unificado y mostrar botones de accion en linea

This commit is contained in:
2026-08-12 20:39:17 +00:00
parent 369112d384
commit fce539abc2
14 changed files with 747 additions and 110 deletions
+45
View File
@@ -0,0 +1,45 @@
const fs = require('fs');
function processFile(filename) {
let code = fs.readFileSync(filename, 'utf8');
// Add import if not present
if (!code.includes("import { createPortal }")) {
code = code.replace("import { useState }", "import { useState } from 'react';\nimport { createPortal }");
if (!code.includes("import { createPortal }")) {
code = "import { createPortal } from 'react-dom';\n" + code;
}
}
// Update component signatures
const components = [
'SeccionGlucemias', 'SeccionLaboratorios', 'SeccionEvoluciones',
'SeccionAcidosBase', 'SeccionCultivos', 'SeccionATB',
'SeccionEstudiosComplementarios', 'SeccionInterconsultas', 'SeccionPendientes',
'SeccionIndicaciones'
];
components.forEach(name => {
// 1. Add portalNode to the destructured props
const regex1 = new RegExp(`function ${name}\\(\\{ (.*?) \\}: \\{`, 'g');
code = code.replace(regex1, `function ${name}({ $1, portalNode }: {`);
// Some don't have spaces around the brackets
const regex1b = new RegExp(`function ${name}\\(\\{(.*?)\\}: \\{`, 'g');
code = code.replace(regex1b, `function ${name}({$1, portalNode}: {`);
// 2. Add portalNode?: HTMLDivElement | null; to the type definition
// Usually ends with canEdit?: boolean; }) or canEdit: boolean })
const regex2 = new RegExp(`(canEdit\\??: boolean;?\\s*)\\}\\)`, 'g');
// Actually we can just find the end of the props type definition for that component.
// It's safer to just replace `canEdit` or something similar, but let's do a more robust approach.
});
fs.writeFileSync(filename, code);
}
processFile('src/sections/HistoriaClinica.tsx');
try {
processFile('src/sections/SeccionIndicaciones.tsx');
} catch (e) {}