- {/* Sidebar no debe encogerse */}
{
@@ -153,29 +180,28 @@ export default function App() {
/>
- {/* min-w-0: evita que páginas anchas (tablas) empujen el layout */}
setSettingsOpen(true)}
- // props de perfil
userName={user.name}
userEmail={user.email}
avatarUrl={user.avatarUrl}
onOpenProfile={() => setProfileOpen(true)}
- onUploadAvatar={handleUploadAvatar}
+ // ✅ en vez de cerrar, abrimos confirm modal
+ onRequestLogout={() => setLogoutOpen(true)}
/>
- {/* Scroll solo aquí */}
-
{renderPage()}
+ {/* ✅ AQUÍ VA LA MARCA DE AGUA */}
+
+
+ {renderPage()}
+
- {/* Settings modal */}
setSettingsOpen(false)}
@@ -183,19 +209,39 @@ export default function App() {
setSettings={setSettings}
/>
- {/* ✅ Profile modal (con avatar + cambiar img + empresa) */}
setProfileOpen(false)}
onSave={handleSaveProfile}
- onUploadAvatar={handleUploadAvatar} // ✅ NUEVO (botón Cambiar img en modal)
+ onUploadAvatar={handleUploadAvatar}
+ />
+
+ {/* ✅ ConfirmModal: Cerrar sesión */}
+ setLogoutOpen(false)}
+ onConfirm={async () => {
+ setLoggingOut(true);
+ try {
+ handleLogout();
+ setLogoutOpen(false);
+ } finally {
+ setLoggingOut(false);
+ }
+ }}
/>
);
diff --git a/src/assets/images/grhWatermark.jpg b/src/assets/images/grhWatermark.jpg
deleted file mode 100644
index d7fe2f4..0000000
Binary files a/src/assets/images/grhWatermark.jpg and /dev/null differ
diff --git a/src/assets/images/grhWatermark.png b/src/assets/images/grhWatermark.png
new file mode 100644
index 0000000..62739fa
Binary files /dev/null and b/src/assets/images/grhWatermark.png differ
diff --git a/src/components/layout/TopMenu.tsx b/src/components/layout/TopMenu.tsx
index 881a36b..02499f5 100644
--- a/src/components/layout/TopMenu.tsx
+++ b/src/components/layout/TopMenu.tsx
@@ -10,8 +10,10 @@ interface TopMenuProps {
userEmail?: string;
avatarUrl?: string | null;
- onLogout?: () => void;
onOpenProfile?: () => void;
+
+ // ✅ NUEVO: en vez de cerrar, pedimos confirmación desde App
+ onRequestLogout?: () => void;
}
const TopMenu: React.FC