ADD transition to sidebar
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user