2026-10-19 17:43:33 +02:00
|
|
|
import { PanelRightCloseIcon, PanelRightOpenIcon } from "lucide-react";
|
2026-10-16 12:07:08 +02:00
|
|
|
import { useEffect } from "react";
|
|
|
|
|
|
2026-03-30 14:17:31 +02:00
|
|
|
import { Button } from "@/components/ui/button";
|
|
|
|
|
import { useSidebar } from "@/components/ui/sidebar";
|
|
|
|
|
import {
|
|
|
|
|
Tooltip,
|
|
|
|
|
TooltipContent,
|
|
|
|
|
TooltipTrigger,
|
|
|
|
|
} from "@/components/ui/tooltip";
|
2026-10-16 12:07:08 +02:00
|
|
|
import useDeviceType from "@/hooks/use-device-type";
|
2026-10-19 17:43:33 +02:00
|
|
|
import trans from "@/hooks/use-translations";
|
2026-03-30 14:17:31 +02:00
|
|
|
|
|
|
|
|
export default function CustomSidebarTrigger() {
|
|
|
|
|
const { toggleSidebar, state } = useSidebar();
|
2026-10-16 12:07:08 +02:00
|
|
|
const { isMobile } = useDeviceType();
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (state === "collapsed") {
|
|
|
|
|
localStorage.setItem("vite-ui-collapsed", "true");
|
|
|
|
|
} else {
|
|
|
|
|
localStorage.removeItem("vite-ui-collapsed");
|
|
|
|
|
}
|
|
|
|
|
}, [state]);
|
2026-03-30 14:17:31 +02:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Tooltip>
|
|
|
|
|
<TooltipTrigger asChild>
|
|
|
|
|
<Button
|
|
|
|
|
onClick={toggleSidebar}
|
|
|
|
|
variant="ghost"
|
|
|
|
|
className="rotate-180"
|
|
|
|
|
size="icon"
|
|
|
|
|
>
|
2026-10-16 12:07:08 +02:00
|
|
|
{isMobile || state === "collapsed" ? (
|
2026-03-30 14:17:31 +02:00
|
|
|
<PanelRightOpenIcon />
|
|
|
|
|
) : (
|
|
|
|
|
<PanelRightCloseIcon />
|
|
|
|
|
)}
|
|
|
|
|
</Button>
|
|
|
|
|
</TooltipTrigger>
|
|
|
|
|
<TooltipContent side="right">
|
2026-10-19 17:43:33 +02:00
|
|
|
<p>{trans("uwil-backend::back.sidebar_trigger_tooltip")}</p>
|
2026-03-30 14:17:31 +02:00
|
|
|
</TooltipContent>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
);
|
|
|
|
|
}
|