"use client" import type React from "react" import { useEffect, useState } from "react" import { Sidebar } from "@/components/sidebar" import { MaterialProvider } from "@/contexts/material-context" import { ColorProvider } from "@/contexts/color-context" import { DesignProvider } from "@/contexts/design-context" import { SidebarProvider, useSidebar } from "@/contexts/sidebar-context" import { ViewProvider } from "@/contexts/view-context" import { RightSidebar } from "@/components/right-sidebar" import { FixedHeader } from "@/components/fixed-header" import { RightSidebarToggle } from "@/components/right-sidebar-toggle" import { MobileDesignControls } from "@/components/mobile-design-controls" // Create a wrapper component that uses the sidebar context function AppLayoutContent({ children }: { children: React.ReactNode }) { const { sidebarVisible, toggleSidebar } = useSidebar() const [isInitialized, setIsInitialized] = useState(false) const [isFirstLoad, setIsFirstLoad] = useState(false) const [isMobile, setIsMobile] = useState(false) // Check if this is the first load of the app useEffect(() => { const hasLoadedBefore = sessionStorage.getItem("app-has-loaded") if (!hasLoadedBefore) { setIsFirstLoad(true) sessionStorage.setItem("app-has-loaded", "true") } }, []) // Check for mobile screen size useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 768) // md breakpoint } checkMobile() window.addEventListener("resize", checkMobile) return () => window.removeEventListener("resize", checkMobile) }, []) // Add event listener for the toggle-sidebar event useEffect(() => { const handleToggleSidebar = () => { toggleSidebar() } window.addEventListener("toggle-sidebar", handleToggleSidebar) return () => { window.removeEventListener("toggle-sidebar", handleToggleSidebar) } }, [toggleSidebar]) // Mark as initialized after first render to enable transitions useEffect(() => { if (isFirstLoad) { const timer = setTimeout(() => { setIsInitialized(true) }, 300) // Only delay on first load return () => clearTimeout(timer) } else { // Immediately initialize if not first load setIsInitialized(true) } }, [isFirstLoad]) // Calculate transform based on state const getTransform = () => { if (isFirstLoad && !isInitialized) { // First load entrance animation return "translate3d(-16px, 0, 0)" } else if (sidebarVisible) { // Visible state (both mobile and desktop) return "translate3d(0, 0, 0)" } else { // Hidden state - slide out to the left return "translate3d(-100%, 0, 0)" } } return (