aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/shared/sidebar/SidebarItem.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/components/shared/sidebar/SidebarItem.tsx')
-rw-r--r--apps/web/components/shared/sidebar/SidebarItem.tsx55
1 files changed, 55 insertions, 0 deletions
diff --git a/apps/web/components/shared/sidebar/SidebarItem.tsx b/apps/web/components/shared/sidebar/SidebarItem.tsx
new file mode 100644
index 00000000..83ce776e
--- /dev/null
+++ b/apps/web/components/shared/sidebar/SidebarItem.tsx
@@ -0,0 +1,55 @@
+"use client";
+
+import React from "react";
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+import { cn } from "@/lib/utils";
+
+export default function SidebarItem({
+ name,
+ logo,
+ path,
+ className,
+ linkClassName,
+ style,
+ collapseButton,
+ right = null,
+}: {
+ name: string;
+ logo: React.ReactNode;
+ path: string;
+ style?: React.CSSProperties;
+ className?: string;
+ linkClassName?: string;
+ right?: React.ReactNode;
+ collapseButton?: React.ReactNode;
+}) {
+ const currentPath = usePathname();
+ return (
+ <li
+ className={cn(
+ "relative rounded-lg hover:bg-accent",
+ path == currentPath ? "bg-accent/50" : "",
+ className,
+ )}
+ style={style}
+ >
+ {collapseButton}
+ <Link
+ href={path}
+ className={cn(
+ "flex w-full items-center rounded-[inherit] px-3 py-2",
+ linkClassName,
+ )}
+ >
+ <div className="flex w-full justify-between">
+ <div className="flex items-center gap-x-2">
+ {logo}
+ <span>{name}</span>
+ </div>
+ {right}
+ </div>
+ </Link>
+ </li>
+ );
+}