Build [v1.4.0] - Audit Dashboard & LDAP Restoration

This commit is contained in:
Daniel Bedeleanu
2026-04-12 09:39:17 +03:00
parent 5cceba21f4
commit f3d861b1a2
23 changed files with 973 additions and 382 deletions

View File

@@ -68,10 +68,12 @@ export default function BottomNav({
{/* Logout */}
<button
onClick={() => {
import('@/lib/auth').then(m => m.clearAuth());
window.location.href = '/login';
if (window.confirm("Are you sure you want to logout?")) {
import('@/lib/auth').then(m => m.clearAuth());
window.location.href = '/login';
}
}}
className="flex flex-col items-center gap-1 hover:text-rose-500 transition-colors"
className="flex flex-col items-center gap-1 text-rose-500 hover:text-rose-400 transition-colors"
>
<LogOut size={20} />
<span className="text-xs font-bold transition-all">Logout</span>

View File

@@ -47,10 +47,14 @@ export default function PageShell({ children, requireAdmin = false }: PageShellP
}, [requireAdmin, router, pathname]);
if (!mounted) return null;
if (!mounted) {
return <div className="min-h-screen bg-slate-950" />;
}
// Prevent flicker by not rendering background if we're redirecting to login
if (!currentUser && pathname !== '/login') return null;
// Prevent flicker by showing dark background if we're redirecting to login
if (!currentUser && pathname !== '/login') {
return <div className="min-h-screen bg-slate-950" />;
}
return (
<div className="min-h-screen bg-slate-950 text-slate-100 flex flex-col">

View File

@@ -296,7 +296,7 @@ export default function Scanner({ onScanSuccess, onOCRMatch, paused }: ScannerPr
className="h-16 px-6 bg-slate-800 hover:bg-slate-700 border border-slate-700 text-white rounded-2xl flex flex-col items-center justify-center shadow-lg transition-all active:scale-95"
>
<span className="text-xs font-black">{zoom.toFixed(1)}x</span>
<span className="text-[10px] text-primary font-bold uppercase">Zoom</span>
<span className="text-[10px] text-primary font-bold">Zoom</span>
</button>
)}
@@ -310,7 +310,7 @@ export default function Scanner({ onScanSuccess, onOCRMatch, paused }: ScannerPr
<>
<Search className={cn("text-slate-500", !isStarted && "opacity-20")} size={20} />
<div className="flex flex-col">
<span className="text-[10px] text-slate-500 font-bold leading-none uppercase">Label Scanning</span>
<span className="text-[10px] text-slate-500 font-bold leading-none">Label Scanning</span>
<span className="text-sm font-black text-primary leading-tight">
{countdown === 0 ? "Scanning..." : `Next scan in ${countdown}s`}
</span>