diff --git a/frontend/src/components/CortePrint.tsx b/frontend/src/components/CortePrint.tsx
index d7c2c4e..85ae951 100644
--- a/frontend/src/components/CortePrint.tsx
+++ b/frontend/src/components/CortePrint.tsx
@@ -14,8 +14,9 @@ const money = (v: number) =>
'$' + (v ?? 0).toLocaleString('es-MX', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
export const CortePrint: FC<{ corte: CashClosing | null; onClose: () => void }> = ({ corte, onClose }) => {
- if (!corte) return null;
+ // El hook va antes de cualquier return condicional (reglas de React).
const clinic = useClinicaPrint();
+ if (!corte) return null;
const fila = (label: string, valor: number) => (
diff --git a/frontend/src/components/EstadoCuentaPrint.tsx b/frontend/src/components/EstadoCuentaPrint.tsx
index 977ab4a..7349309 100644
--- a/frontend/src/components/EstadoCuentaPrint.tsx
+++ b/frontend/src/components/EstadoCuentaPrint.tsx
@@ -76,9 +76,10 @@ export const EstadoCuentaPrint: FC = ({ isOpen, onClose,
return () => { alive = false; };
}, [isOpen, paciente]);
+ // El hook va antes de cualquier return condicional (reglas de React).
+ const clinic = useClinicaPrint();
if (!paciente) return null;
- const clinic = useClinicaPrint();
const fechaEmision = new Date().toLocaleDateString('es-MX', { day: '2-digit', month: 'long', year: 'numeric' });
const totalVentas = ventas.reduce((a, v) => a + v.total, 0);
const totalPagado = ventas.reduce((a, v) => a + v.amount_paid, 0);
diff --git a/frontend/src/components/ReciboPrint.tsx b/frontend/src/components/ReciboPrint.tsx
index 5ab93e5..80e72ef 100644
--- a/frontend/src/components/ReciboPrint.tsx
+++ b/frontend/src/components/ReciboPrint.tsx
@@ -19,8 +19,10 @@ const money = (v: number) =>
export const ReciboPrint: FC<{ receipt: ReceiptData | null; onClose: () => void }> = ({ receipt, onClose }) => {
- if (!receipt) return null;
+ // El hook va antes de cualquier return condicional (reglas de React:
+ // mismo nĂºmero de hooks en todos los renders del componente).
const clinic = useClinicaPrint();
+ if (!receipt) return null;
// Recibo de recarga de saldo a favor (anticipo): mismo formato, sin el
// desglose de adeudo y mostrando el saldo a favor resultante.
const esDeposito = receipt.tipo === 'deposito';
diff --git a/frontend/src/components/inventario/ConteoPrint.tsx b/frontend/src/components/inventario/ConteoPrint.tsx
index 37659e0..1b15382 100644
--- a/frontend/src/components/inventario/ConteoPrint.tsx
+++ b/frontend/src/components/inventario/ConteoPrint.tsx
@@ -12,8 +12,9 @@ const money = (v: number) =>
export const ConteoPrint: FC<{ conteo: InventoryConteo | null; onClose: () => void }> = ({ conteo, onClose }) => {
- if (!conteo) return null;
+ // El hook va antes de cualquier return condicional (reglas de React).
const clinic = useClinicaPrint();
+ if (!conteo) return null;
const lineas = conteo.lines || [];
return (