File tree Expand file tree Collapse file tree 13 files changed +1569
-573
lines changed Expand file tree Collapse file tree 13 files changed +1569
-573
lines changed Original file line number Diff line number Diff line change 1
- ' use client' ;
1
+ " use client" ;
2
2
3
- import Sidebar from '@/shared/layout/sidebar/sidebar' ;
4
- import AppHeader from '@/shared/layout/appheader/header' ;
5
- import { Toaster } from '@/shared/ui/sonner' ;
3
+ import { SidebarApp } from "@/shared/layout/sidebar/sidebar" ;
4
+ import AppHeader from "@/shared/layout/appheader/header" ;
5
+ import { Toaster } from "@/shared/ui/sonner" ;
6
+ import { SidebarProvider , SidebarTrigger } from "@/shared/ui/sidebar" ;
6
7
7
8
/**
8
9
* Layout para todas las páginas autenticadas
9
10
* Se aplica a todas las rutas excepto login y otras públicas
10
11
*/
11
12
export default function AuthenticatedLayout ( { children } ) {
12
13
return (
13
- < div className = 'flex min-h-screen' >
14
- { /* Sidebar fijo en el lado izquierdo */ }
15
- < Sidebar />
16
-
17
- { /* Contenedor principal a la derecha del sidebar */ }
18
- < div className = 'flex-1 flex flex-col' >
19
- < AppHeader />
20
- < main className = 'flex-1 overflow-auto px-4 pt-4 pb-6 relative' >
21
- { children }
22
- < Toaster />
23
- </ main >
24
- </ div >
14
+ < div className = "flex min-h-screen" >
15
+ < SidebarProvider
16
+ style = { {
17
+ "--sidebar-width" : "18rem" ,
18
+ "--sidebar-width-mobile" : "16rem" ,
19
+ } }
20
+ >
21
+ < SidebarApp />
22
+ { /* Contenedor principal a la derecha del sidebar */ }
23
+ < div className = "flex-1 flex flex-col" >
24
+ < AppHeader >
25
+ < SidebarTrigger />
26
+ </ AppHeader >
27
+ < main className = "flex-1 overflow-auto px-4 pt-4 pb-6 relative" >
28
+ { children }
29
+ < Toaster />
30
+ </ main >
31
+ </ div >
32
+ </ SidebarProvider >
25
33
</ div >
26
34
) ;
27
35
}
Original file line number Diff line number Diff line change 130
130
--sidebar : # 330764 ;
131
131
--sidebar-foreground : oklch (0.985 0.001 106.423 );
132
132
--sidebar-primary : # 330764 ;
133
- --sidebar-primary-foreground : oklch ( 0.985 0.001 106.423 ) ;
134
- --sidebar-accent : # b8b8d1 ;
135
- --sidebar-accent-foreground : # 330764 ;
133
+ --sidebar-primary-foreground : # f5f5f5 ;
134
+ --sidebar-accent : # 5c3983 ;
135
+ --sidebar-accent-foreground : # f5f5f5 ;
136
136
--sidebar-border : # b8b8d1 ;
137
137
--sidebar-ring : oklch (0.709 0.01 56.259 );
138
138
--sidebar-dark-purple : # 1e0339 ; /* Violeta más oscuro para iconos */
Original file line number Diff line number Diff line change @@ -71,7 +71,7 @@ function UserMenu() {
71
71
72
72
return (
73
73
// Solo mostrar en vista de escritorio
74
- < div className = 'hidden md:block' >
74
+ < div >
75
75
< DropdownMenu open = { open } onOpenChange = { setOpen } >
76
76
< DropdownMenuTrigger asChild >
77
77
< button className = 'flex items-center space-x-2 rounded-full focus:outline-none' >
Original file line number Diff line number Diff line change
1
+ import * as React from "react"
2
+
3
+ const MOBILE_BREAKPOINT = 768
4
+
5
+ export function useIsMobile ( ) {
6
+ const [ isMobile , setIsMobile ] = React . useState ( undefined )
7
+
8
+ React . useEffect ( ( ) => {
9
+ const mql = window . matchMedia ( `(max-width: ${ MOBILE_BREAKPOINT - 1 } px)` )
10
+ const onChange = ( ) => {
11
+ setIsMobile ( window . innerWidth < MOBILE_BREAKPOINT )
12
+ }
13
+ mql . addEventListener ( "change" , onChange )
14
+ setIsMobile ( window . innerWidth < MOBILE_BREAKPOINT )
15
+ return ( ) => mql . removeEventListener ( "change" , onChange ) ;
16
+ } , [ ] )
17
+
18
+ return ! ! isMobile
19
+ }
You can’t perform that action at this time.
0 commit comments