diff --git a/app/(auth)/sign-in/page.tsx b/app/(auth)/sign-in/page.tsx new file mode 100644 index 0000000..35289f2 --- /dev/null +++ b/app/(auth)/sign-in/page.tsx @@ -0,0 +1,15 @@ +import AppLink from '@/ui/AppLink'; + +export default function Home() { + return ( +
+
+

+ Amuse toi avec Next.js et{' '} + Tailwindcss ! +

+ Dashboard +
+
+ ); +} diff --git a/app/(auth)/sign-up/page.tsx b/app/(auth)/sign-up/page.tsx new file mode 100644 index 0000000..35289f2 --- /dev/null +++ b/app/(auth)/sign-up/page.tsx @@ -0,0 +1,15 @@ +import AppLink from '@/ui/AppLink'; + +export default function Home() { + return ( +
+
+

+ Amuse toi avec Next.js et{' '} + Tailwindcss ! +

+ Dashboard +
+
+ ); +} diff --git a/app/dashboard/layout.tsx b/app/dashboard/layout.tsx index fb7d88e..2ca9fb1 100644 --- a/app/dashboard/layout.tsx +++ b/app/dashboard/layout.tsx @@ -1,11 +1,6 @@ -import Sidenav from '@/ui/dashboard/Sidenav'; +import Wrapper from '@/ui/dashboard/Wrapper'; import { type ReactNode } from 'react'; export default function Layout({ children }: { children: ReactNode }) { - return ( -
- -
{children}
-
- ); + return {children}; } diff --git a/app/dashboard/puzzles/page.tsx b/app/dashboard/puzzles/page.tsx index 54c053f..e5e4acf 100644 --- a/app/dashboard/puzzles/page.tsx +++ b/app/dashboard/puzzles/page.tsx @@ -27,7 +27,7 @@ export default function Page() { label="Code" name="code_file" type="file" - accept=".py,.js,.ts,.java,.rust" + accept=".py,.js,.ts,.java,.rust,.c" /> - -
- -
- -
- +
+ +
+ +
+ + )) || ( + + ) ); } -function NavItem({ item }: { item: NavItem }) { +function NavItem({ item, isOpen }: { item: NavItem; isOpen: boolean }) { const segment = useSelectedLayoutSegment(); const isActive = segment?.split('/').pop() === item.slug || (item.slug === '' && !segment); return ( - {item.name} +
+ + {item.name} +
); } diff --git a/ui/dashboard/Wrapper.tsx b/ui/dashboard/Wrapper.tsx new file mode 100644 index 0000000..6663716 --- /dev/null +++ b/ui/dashboard/Wrapper.tsx @@ -0,0 +1,43 @@ +'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} +
+
+ ); +}