44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
|
|
"use client";
|
||
|
|
|
||
|
|
import { PanelLeftClose, PanelLeft } from "lucide-react";
|
||
|
|
|
||
|
|
import { Button } from "@/components/ui/button";
|
||
|
|
import {
|
||
|
|
Tooltip,
|
||
|
|
TooltipContent,
|
||
|
|
TooltipTrigger,
|
||
|
|
} from "@/components/ui/tooltip";
|
||
|
|
import { useSidebarStore } from "@/lib/stores/sidebar-store";
|
||
|
|
import { cn } from "@/lib/utils";
|
||
|
|
|
||
|
|
export function SidebarToggle({ className }: { className?: string }) {
|
||
|
|
const { isCollapsed, toggle } = useSidebarStore();
|
||
|
|
|
||
|
|
return (
|
||
|
|
<Tooltip delayDuration={0}>
|
||
|
|
<TooltipTrigger asChild>
|
||
|
|
<Button
|
||
|
|
type="button"
|
||
|
|
variant="ghost"
|
||
|
|
size="icon"
|
||
|
|
className={cn(
|
||
|
|
"size-8 shrink-0 text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
||
|
|
className,
|
||
|
|
)}
|
||
|
|
onClick={toggle}
|
||
|
|
aria-label={isCollapsed ? "Expand sidebar" : "Collapse sidebar"}
|
||
|
|
>
|
||
|
|
{isCollapsed ? (
|
||
|
|
<PanelLeft className="size-4" />
|
||
|
|
) : (
|
||
|
|
<PanelLeftClose className="size-4" />
|
||
|
|
)}
|
||
|
|
</Button>
|
||
|
|
</TooltipTrigger>
|
||
|
|
<TooltipContent side="bottom">
|
||
|
|
{isCollapsed ? "Expand sidebar" : "Collapse sidebar"}
|
||
|
|
</TooltipContent>
|
||
|
|
</Tooltip>
|
||
|
|
);
|
||
|
|
}
|