diff --git a/apps/backoffice/app/(app)/layout.tsx b/apps/backoffice/app/(app)/layout.tsx
index 915e84c..42e219d 100644
--- a/apps/backoffice/app/(app)/layout.tsx
+++ b/apps/backoffice/app/(app)/layout.tsx
@@ -20,7 +20,6 @@ type NavItem = {
};
const navItems: NavItem[] = [
- { href: "/", labelKey: "nav.dashboard", icon: "dashboard" },
{ href: "/books", labelKey: "nav.books", icon: "books" },
{ href: "/series", labelKey: "nav.series", icon: "series" },
{ href: "/authors", labelKey: "nav.authors", icon: "authors" },
@@ -74,11 +73,13 @@ export default async function AppLayout({ children }: { children: ReactNode }) {
))}
-
+
+
+
@@ -91,7 +92,15 @@ export default async function AppLayout({ children }: { children: ReactNode }) {
- ({ ...item, label: t(item.labelKey) }))} />
+ ({ ...item, label: t(item.labelKey) })),
+ ]}
+ users={users}
+ activeUserId={activeUserId}
+ setActiveUserAction={setActiveUserAction}
+ />
diff --git a/apps/backoffice/app/components/MobileNav.tsx b/apps/backoffice/app/components/MobileNav.tsx
index 5d8c547..d3fc33a 100644
--- a/apps/backoffice/app/components/MobileNav.tsx
+++ b/apps/backoffice/app/components/MobileNav.tsx
@@ -1,10 +1,11 @@
"use client";
-import { useState, useEffect } from "react";
+import { useState, useEffect, useTransition } from "react";
import { createPortal } from "react-dom";
import Link from "next/link";
import { NavIcon } from "./ui";
import { useTranslation } from "../../lib/i18n/context";
+import type { UserDto } from "@/lib/api";
type NavItem = {
href: "/" | "/books" | "/series" | "/authors" | "/libraries" | "/jobs" | "/tokens" | "/settings";
@@ -24,10 +25,24 @@ const XIcon = () => (
);
-export function MobileNav({ navItems }: { navItems: NavItem[] }) {
+export function MobileNav({ navItems, users, activeUserId, setActiveUserAction }: {
+ navItems: NavItem[];
+ users: UserDto[];
+ activeUserId: string | null;
+ setActiveUserAction: (formData: FormData) => Promise;
+}) {
const { t } = useTranslation();
const [isOpen, setIsOpen] = useState(false);
const [mounted, setMounted] = useState(false);
+ const [, startTransition] = useTransition();
+
+ function select(userId: string | null) {
+ startTransition(async () => {
+ const fd = new FormData();
+ fd.append("user_id", userId ?? "");
+ await setActiveUserAction(fd);
+ });
+ }
useEffect(() => {
setMounted(true);
@@ -71,15 +86,49 @@ export function MobileNav({ navItems }: { navItems: NavItem[] }) {
))}
-
-
setIsOpen(false)}
- >
-
-
{t("nav.settings")}
-
+
+ {users.length > 0 && (
+ <>
+
{t("users.title")}
+
+ {users.map((user) => (
+
+ ))}
+ >
+ )}
+
+ setIsOpen(false)}
+ >
+
+ {t("nav.settings")}
+
+