use leptos::prelude::*; use crate::components::layout::sidebar::Sidebar; use crate::components::layout::toolbar::Toolbar; use crate::components::layout::footer::Footer; use crate::components::ui::sidenav::{SidenavWrapper, Sidenav, SidenavInset}; use wasm_bindgen::JsCast; #[component] pub fn Protected(children: Children) -> impl IntoView { let (collapsed, set_collapsed) = signal(false); // Responsive Sidebar Logic Effect::new(move |_| { let window = web_sys::window().expect("window missing"); // Initial check let width = window.inner_width().unwrap().as_f64().unwrap_or(1920.0); if width < 1280.0 { set_collapsed.set(true); } else { set_collapsed.set(false); } // Listener let closure = wasm_bindgen::closure::Closure::::new(move |_: web_sys::Event| { let window = web_sys::window().expect("window missing"); let width = window.inner_width().unwrap().as_f64().unwrap_or(1920.0); if width < 1280.0 { set_collapsed.set(true); } else { set_collapsed.set(false); } }); let _ = window.add_event_listener_with_callback("resize", closure.as_ref().unchecked_ref()); closure.forget(); // Leak memory intentionally for global listener (or store in a cleanup handle if needed, but for layout component it's fine) }); view! { // Masaüstü Sidenav // İçerik Alanı // Toolbar (Üst Bar) // Ana İçerik
{children()}
} }