import { useState } from "react";
import { TABS } from "../constants/index.js";
import { version } from "../version.js";
import { useUpdateCheck } from "../hooks/useUpdateCheck.js";
import { useApp } from "../context/AppContext.jsx";
const TAB_ICONS = [
,
,
,
,
];
const GEBRUIKERS_ICON = (
);
const INSTELLINGEN_ICON = (
);
const LOGOUT_ICON = (
);
const INFO_ICON = (
);
const MOON_ICON = (
);
function initials(naam = "") {
const parts = naam.trim().split(/\s+/);
if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();
return naam.slice(0, 2).toUpperCase();
}
function SectionLabel({ children }) {
return (
{children}
);
}
const ACTIVE_BG = "#7c3aed";
const ACTIVE_SHADOW = "0 4px 14px rgba(124,58,237,0.4)";
function NavItem({ active, onClick, icon, label, T, danger }) {
const [hovered, setHovered] = useState(false);
const isLit = active || hovered;
return (
setHovered(true)}
onMouseLeave={() => setHovered(false)}
style={{
display: "flex", alignItems: "center", gap: 10,
padding: "11px 12px", borderRadius: 9, cursor: "pointer", marginBottom: 4,
background: active
? ACTIVE_BG
: hovered ? "rgba(139,92,246,0.08)" : "transparent",
color: active ? "#fff" : hovered ? T.text : (danger ? "#ef4444" : T.muted),
fontWeight: active ? 600 : 400,
fontSize: 15,
boxShadow: active ? ACTIVE_SHADOW : "none",
transition: "all 0.15s",
}}
>
{icon}
{label}
);
}
function OverPopup({ onClose, nieuweVersie, T }) {
return (
<>
{/* Overlay */}
{/* Modal */}
e.stopPropagation()} style={{
background: T.popupBg,
border: `1px solid ${T.border}`,
borderRadius: 16, padding: "28px 28px 24px", width: 300,
boxShadow: "0 24px 60px rgba(0,0,0,0.5)",
position: "relative",
}}>
{/* Sluitknop */}
{/* Logo + naam */}
Versie
v{version}
{nieuweVersie && (
Nieuwe versie
v{nieuweVersie.latest}
)}
© {new Date().getFullYear()} VibeFinance
>
);
}
function DarkModeToggle({ darkMode, setDarkMode, T }) {
return (
setDarkMode(!darkMode)}
style={{
display: "flex", alignItems: "center", gap: 10,
padding: "11px 12px", borderRadius: 9, cursor: "pointer", marginBottom: 4,
color: T.muted, fontSize: 13.5, fontWeight: 500,
transition: "background 0.12s",
}}
onMouseEnter={e => e.currentTarget.style.background = "rgba(255,255,255,0.04)"}
onMouseLeave={e => e.currentTarget.style.background = "transparent"}
>
{MOON_ICON}
Dark Mode
{/* Toggle pill */}
);
}
export default function NavBar() {
const { tab, setTab, setShowUsers, setShowInstellingen, T, logout, darkMode, setDarkMode, currentUser, avatar } = useApp();
const nieuweVersie = useUpdateCheck();
const [overOpen, setOverOpen] = useState(false);
return (
{/* Logo */}
{/* Nav */}
{/* Uitloggen */}
);
}