mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2025-12-07 12:06:46 +03:00
69 lines
2.1 KiB
TypeScript
69 lines
2.1 KiB
TypeScript
import { useEffect, useState } from "react";
|
|
import { cn } from "@/lib/utils";
|
|
import { ExternalLink } from "lucide-react";
|
|
import { links } from "@/data/Sidebar";
|
|
import { VersionInfo } from "./VersionInfo";
|
|
|
|
interface SidebarProps {
|
|
className?: string;
|
|
}
|
|
|
|
export function Sidebar({ className }: SidebarProps) {
|
|
const [currentPath, setCurrentPath] = useState<string>("");
|
|
|
|
useEffect(() => {
|
|
// Hydration happens here
|
|
const path = window.location.pathname;
|
|
setCurrentPath(path);
|
|
console.log("Hydrated path:", path); // Should log now
|
|
}, []);
|
|
|
|
return (
|
|
<aside className={cn("w-64 border-r bg-background", className)}>
|
|
<div className="flex flex-col h-full pt-4">
|
|
<nav className="flex flex-col gap-y-1 pl-2 pr-3">
|
|
{links.map((link, index) => {
|
|
const isActive = currentPath === link.href;
|
|
const Icon = link.icon;
|
|
|
|
return (
|
|
<a
|
|
key={index}
|
|
href={link.href}
|
|
className={cn(
|
|
"flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors",
|
|
isActive
|
|
? "bg-primary text-primary-foreground"
|
|
: "text-muted-foreground hover:bg-accent hover:text-accent-foreground"
|
|
)}
|
|
>
|
|
<Icon className="h-4 w-4" />
|
|
{link.label}
|
|
</a>
|
|
);
|
|
})}
|
|
</nav>
|
|
|
|
<div className="mt-auto px-4 py-4">
|
|
<div className="rounded-md bg-muted p-3">
|
|
<h4 className="text-sm font-medium mb-2">Need Help?</h4>
|
|
<p className="text-xs text-muted-foreground mb-2">
|
|
Check out the documentation for help with setup and configuration.
|
|
</p>
|
|
<a
|
|
href="/docs"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
className="flex items-center gap-1 text-xs text-primary hover:underline"
|
|
>
|
|
Documentation
|
|
<ExternalLink className="h-3 w-3" />
|
|
</a>
|
|
</div>
|
|
<VersionInfo />
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
);
|
|
}
|