aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/shared/sidebar/Sidebar.tsx
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2024-12-30 12:15:35 +0000
committerMohamed Bassem <me@mbassem.com>2024-12-30 12:15:35 +0000
commit5902664658a36e4afc81327eea9f8eef05561bcb (patch)
treeb72415e988efb5cd95e4a28634b0b53bf125b168 /apps/web/components/shared/sidebar/Sidebar.tsx
parent179f00b15525b024b6823088ef8fb94b7106b4f0 (diff)
downloadkarakeep-5902664658a36e4afc81327eea9f8eef05561bcb.tar.zst
refactor: Refactor sidebar into a shared component
Diffstat (limited to 'apps/web/components/shared/sidebar/Sidebar.tsx')
-rw-r--r--apps/web/components/shared/sidebar/Sidebar.tsx38
1 files changed, 38 insertions, 0 deletions
diff --git a/apps/web/components/shared/sidebar/Sidebar.tsx b/apps/web/components/shared/sidebar/Sidebar.tsx
new file mode 100644
index 00000000..bd5d23e6
--- /dev/null
+++ b/apps/web/components/shared/sidebar/Sidebar.tsx
@@ -0,0 +1,38 @@
+import { useTranslation } from "@/lib/i18n/server";
+import { TFunction } from "i18next";
+
+import serverConfig from "@hoarder/shared/config";
+
+import SidebarItem from "./SidebarItem";
+import { TSidebarItem } from "./TSidebarItem";
+
+export default async function Sidebar({
+ items,
+ extraSections,
+}: {
+ items: (t: TFunction) => TSidebarItem[];
+ extraSections?: React.ReactNode;
+}) {
+ const { t } = await useTranslation();
+
+ return (
+ <aside className="flex h-[calc(100vh-64px)] w-60 flex-col gap-5 border-r p-4 ">
+ <div>
+ <ul className="space-y-2 text-sm font-medium">
+ {items(t).map((item) => (
+ <SidebarItem
+ key={item.name}
+ logo={item.icon}
+ name={item.name}
+ path={item.path}
+ />
+ ))}
+ </ul>
+ </div>
+ {extraSections}
+ <div className="mt-auto flex items-center border-t pt-2 text-sm text-gray-400">
+ Hoarder v{serverConfig.serverVersion}
+ </div>
+ </aside>
+ );
+}