diff --git a/app/dashboard/layout.tsx b/app/dashboard/layout.tsx index 2ca9fb1..cc82104 100644 --- a/app/dashboard/layout.tsx +++ b/app/dashboard/layout.tsx @@ -1,6 +1,16 @@ -import Wrapper from '@/ui/dashboard/Wrapper'; import { type ReactNode } from 'react'; +import Sidenav from '@/ui/dashboard/Sidenav'; + export default function Layout({ children }: { children: ReactNode }) { - return {children}; + return ( +
+
+ +
+ {children} +
+
+
+ ); } diff --git a/public/logo.webp b/public/logo.webp new file mode 100644 index 0000000..bb14922 Binary files /dev/null and b/public/logo.webp differ diff --git a/ui/dashboard/Sidenav.tsx b/ui/dashboard/Sidenav.tsx index 2f7546a..a72bbb7 100644 --- a/ui/dashboard/Sidenav.tsx +++ b/ui/dashboard/Sidenav.tsx @@ -1,77 +1,111 @@ +'use client'; + import { NavItem, navItems } from '@/lib/nav-items'; import { cn } from '@/lib/utils'; +import Image from 'next/image'; import { useSelectedLayoutSegment } from 'next/navigation'; +import { useState } from 'react'; +import Logo from '../../public/logo.webp'; import AppLink from '../AppLink'; import Icon from '../Icon'; -export default function Sidenav({ - onClick, - width, - isOpen -}: { - onClick: () => void; - width: number; - isOpen: boolean; -}) { +export default function Sidenav() { + const [isOpen, setIsOpen] = useState(false); + + function toggleSidenav() { + setIsOpen(!isOpen); + } + return ( - (width >= 640 && ( - - )) || ( - + ); +} + +function NavItem({ item, isOpen }: { item: NavItem; isOpen: boolean }) { + const segment = useSelectedLayoutSegment(); + const isActive = segment?.split('/').pop() === item.slug || (item.slug === '' && !segment); + return ( + +
+ + + {item.name} + +
+
+ ); +} + +{ + /* - ) - ); -} - -function NavItem({ item, isOpen }: { item: NavItem; isOpen: boolean }) { - const segment = useSelectedLayoutSegment(); - const isActive = segment?.split('/').pop() === item.slug || (item.slug === '' && !segment); - return ( - -
- - {item.name} -
-
- ); + */ } diff --git a/ui/dashboard/Wrapper.tsx b/ui/dashboard/Wrapper.tsx deleted file mode 100644 index 6663716..0000000 --- a/ui/dashboard/Wrapper.tsx +++ /dev/null @@ -1,43 +0,0 @@ -'use client'; - -import { cn } from '@/lib/utils'; -import { useCallback, useEffect, useState, type ReactNode } from 'react'; -import Sidenav from './Sidenav'; - -export default function Wrapper({ children }: { children: ReactNode }) { - const [isOpen, setIsOpen] = useState(false); - const [width, setWidth] = useState(0); - - function toggleSidenav() { - setIsOpen(!isOpen); - } - - function useWidth() { - const handleResize = useCallback(() => setWidth(window.innerWidth), []); - useEffect(() => { - handleResize(); - window.addEventListener('resize', handleResize); - return () => window.removeEventListener('resize', handleResize); - }, [handleResize]); - return width; - } - - return ( -
- -
- {children} -
-
- ); -}