Reapply "Add missing admin action files and navigation links"

This reverts commit 4d515bc400.
This commit is contained in:
Simo committed 2026-07-11 20:52:56 +02:00
1 parent 96ed768f14
commit 5b4228261a
338 files changed
+28143 -5948

No files matched your search

+47 -15
View File
@@ -26,7 +26,10 @@ export function NavbarColorPicker() {
if (typeof window === "undefined") return 0;
const saved = localStorage.getItem("navbarColor");
if (!saved) return 0;
return Math.max(0, COLORS.findIndex((c) => c.value === saved));
return Math.max(
0,
COLORS.findIndex((c) => c.value === saved),
);
});
const [mounted, setMounted] = useState(false);
@@ -39,7 +42,7 @@ export function NavbarColorPicker() {
try {
localStorage.setItem("navbarColor", c.value);
localStorage.setItem("navbarTextColor", c.text);
} catch { }
} catch {}
setActive(index);
setOpen(false);
}
@@ -65,7 +68,15 @@ export function NavbarColorPicker() {
aria-label="Navbar kleur"
title="Navbar kleur"
>
<svg className="w-4 h-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
<svg
className="w-4 h-4"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<circle cx="13.5" cy="6.5" r="0.5" fill="currentColor" />
<circle cx="17.5" cy="10.5" r="0.5" fill="currentColor" />
<circle cx="8.5" cy="7.5" r="0.5" fill="currentColor" />
@@ -74,13 +85,15 @@ export function NavbarColorPicker() {
</svg>
</button>
{mounted && open && (
<div
className="dropdown-menu absolute right-0 top-full mt-0.5 min-w-[200px] rounded-xl z-50 py-3 px-2"
>
<div className="text-xs font-semibold uppercase tracking-wider mb-2 px-2" style={{ color: "var(--color-text-muted)" }}>Navbar kleur</div>
<div className="grid grid-cols-5 gap-1.5">
{mounted && open && (
<div className="dropdown-menu absolute right-0 top-full mt-0.5 min-w-[200px] rounded-xl z-50 py-3 px-2">
<div
className="text-xs font-semibold uppercase tracking-wider mb-2 px-2"
style={{ color: "var(--color-text-muted)" }}
>
Navbar kleur
</div>
<div className="grid grid-cols-5 gap-1.5">
{COLORS.map((c, i) => (
<button
key={c.name}
@@ -89,19 +102,38 @@ export function NavbarColorPicker() {
className="flex flex-col items-center gap-1 p-1.5 rounded-lg transition-all duration-100"
title={c.name}
style={{
background: i === active ? "color-mix(in srgb, var(--color-primary) 12%, transparent)" : "transparent",
background:
i === active
? "color-mix(in srgb, var(--color-primary) 12%, transparent)"
: "transparent",
border: "none",
cursor: "pointer",
}}
onMouseEnter={(e) => {
if (i !== active) e.currentTarget.style.backgroundColor = "color-mix(in srgb, var(--color-text-muted) 8%, transparent)";
if (i !== active)
e.currentTarget.style.backgroundColor =
"color-mix(in srgb, var(--color-text-muted) 8%, transparent)";
}}
onMouseLeave={(e) => {
if (i !== active) e.currentTarget.style.backgroundColor = "transparent";
}}
>
<span className="block w-6 h-6 rounded-full border-2 shrink-0" style={{ backgroundColor: c.value, borderColor: i === active ? "var(--color-primary)" : "color-mix(in srgb, var(--color-text-muted) 20%, transparent)" }} />
<span className="text-[10px] font-medium leading-tight text-center" style={{ color: "var(--color-text-muted)" }}>{c.name}</span>
<span
className="block w-6 h-6 rounded-full border-2 shrink-0"
style={{
backgroundColor: c.value,
borderColor:
i === active
? "var(--color-primary)"
: "color-mix(in srgb, var(--color-text-muted) 20%, transparent)",
}}
/>
<span
className="text-[10px] font-medium leading-tight text-center"
style={{ color: "var(--color-text-muted)" }}
>
{c.name}
</span>
</button>
))}
</div>
@@ -109,4 +141,4 @@ export function NavbarColorPicker() {
)}
</div>
);
}
}