ADD transition to sidebar

This commit is contained in:
2025-05-28 16:10:54 +02:00
parent 81bd7318bb
commit e65abd045c
3 changed files with 14 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import clsx from "clsx"; import clsx from "clsx";
import MenuButton from "./buttons/MenuButton.tsx"; import MenuButton from "./buttons/MenuButton.tsx";
import { Cross } from 'lucide-react';
type props = { type props = {
className?: string className?: string
@@ -11,8 +12,8 @@ const Sidebar = ({className}: props) => {
<div className={clsx("w-64 h-screen bg-white shadow-sm border-r px-4 py-6 flex flex-col gap-2", className)}> <div className={clsx("w-64 h-screen bg-white shadow-sm border-r px-4 py-6 flex flex-col gap-2", className)}>
<Link <Link
to="/create"> to="/create">
<MenuButton> <MenuButton className={"flex items-center gap-2"}>
Create Clip <Cross size={20}/> Create Clip
</MenuButton> </MenuButton>
</Link> </Link>
</div> </div>

View File

@@ -1,14 +1,16 @@
import { Menu, X} from 'lucide-react'; import { Menu, X} from 'lucide-react';
import MenuButton from "./buttons/MenuButton.tsx"; import MenuButton from "./buttons/MenuButton.tsx";
import clsx from "clsx";
type props = { type props = {
sidebarToggled: boolean, sidebarToggled: boolean,
setSidebarToggled: Function setSidebarToggled: Function
className?: string;
} }
const Topbar = ({sidebarToggled, setSidebarToggled}: props) => { const Topbar = ({sidebarToggled, setSidebarToggled, className}: props) => {
return ( return (
<div> <div className={clsx(className)}>
<MenuButton onClick={() => setSidebarToggled(!sidebarToggled)}> <MenuButton onClick={() => setSidebarToggled(!sidebarToggled)}>
{sidebarToggled ? <X size={24}/> : <Menu size={24}/>} {sidebarToggled ? <X size={24}/> : <Menu size={24}/>}
</MenuButton> </MenuButton>

View File

@@ -8,9 +8,13 @@ const MainLayout = () => {
const [sidebarToggled, setSidebarToggled] = useState(false); const [sidebarToggled, setSidebarToggled] = useState(false);
return ( return (
<div className="grid grid-cols-[1fr_5fr] min-h-screen"> <div className={`transition-all duration-300 grid ${sidebarToggled ? "grid-cols-[0px_1fr]" : "grid-cols-[240px_1fr]"} gap-4`}>
<Sidebar className={`row-span-2 transition ${sidebarToggled ? 'hidden' : ''}`}/> <Sidebar
<Topbar sidebarToggled={sidebarToggled} setSidebarToggled={setSidebarToggled}/> className={`row-span-2 transition-all duration-300 ${sidebarToggled ? "-translate-x-full": "translate-x-0"}`}/>
<Topbar
className={"transition-all duration-300"}
sidebarToggled={sidebarToggled}
setSidebarToggled={setSidebarToggled}/>
<div className="flex-1 p-4"> <div className="flex-1 p-4">
<Outlet/> {/* This renders the nested route content */} <Outlet/> {/* This renders the nested route content */}
</div> </div>