import { redirect } from "next/navigation";
import AllLists from "@/components/dashboard/sidebar/AllLists";
import MobileSidebar from "@/components/shared/sidebar/MobileSidebar";
import Sidebar from "@/components/shared/sidebar/Sidebar";
import SidebarLayout from "@/components/shared/sidebar/SidebarLayout";
import { Separator } from "@/components/ui/separator";
import { UserSettingsContextProvider } from "@/lib/userSettings";
import { api } from "@/server/api/client";
import { getServerAuthSession } from "@/server/auth";
import { TFunction } from "i18next";
import {
Archive,
ClipboardList,
Highlighter,
Home,
Search,
Tag,
} from "lucide-react";
import serverConfig from "@karakeep/shared/config";
export default async function Dashboard({
children,
modal,
}: Readonly<{
children: React.ReactNode;
modal: React.ReactNode;
}>) {
const session = await getServerAuthSession();
if (!session) {
redirect("/");
}
const [lists, userSettings] = await Promise.all([
api.lists.list(),
api.users.settings(),
]);
const items = (t: TFunction) =>
[
{
name: t("common.home"),
icon: ,
path: "/dashboard/bookmarks",
},
serverConfig.search.meilisearch
? [
{
name: t("common.search"),
icon: ,
path: "/dashboard/search",
},
]
: [],
{
name: t("common.tags"),
icon: ,
path: "/dashboard/tags",
},
{
name: t("common.highlights"),
icon: ,
path: "/dashboard/highlights",
},
{
name: t("common.archive"),
icon: ,
path: "/dashboard/archive",
},
].flat();
const mobileSidebar = (t: TFunction) => [
...items(t),
{
name: t("lists.all_lists"),
icon: ,
path: "/dashboard/lists",
},
];
return (
>
}
/>
}
mobileSidebar={}
modal={modal}
>
{children}
);
}