{"ast":null,"code":"import React,{useState}from'react';import{Outlet,NavLink}from'react-router-dom';import{FiHome,FiServer,FiMap,FiList,FiSettings,FiMenu,FiX,FiBell,FiUser,FiLogOut}from'react-icons/fi';import{useAuth}from'../contexts/AuthContext';import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";const Layout=()=>{const[sidebarOpen,setSidebarOpen]=useState(false);const[userMenuOpen,setUserMenuOpen]=useState(false);const{user,logout}=useAuth();const toggleSidebar=()=>{setSidebarOpen(!sidebarOpen);};const toggleUserMenu=()=>{setUserMenuOpen(!userMenuOpen);};const handleLogout=()=>{logout();setUserMenuOpen(false);};return/*#__PURE__*/_jsxs(\"div\",{className:\"flex h-screen bg-gray-50\",children:[/*#__PURE__*/_jsx(\"div\",{className:`fixed inset-0 z-20 transition-opacity bg-black bg-opacity-50 lg:hidden ${sidebarOpen?'opacity-100 ease-out duration-300':'opacity-0 ease-in duration-200 pointer-events-none'}`,onClick:toggleSidebar}),/*#__PURE__*/_jsxs(\"div\",{className:`fixed inset-y-0 left-0 z-30 w-64 overflow-y-auto transition duration-300 transform bg-white lg:translate-x-0 lg:static lg:inset-0 ${sidebarOpen?'translate-x-0 ease-out':'-translate-x-full ease-in'}`,children:[/*#__PURE__*/_jsxs(\"div\",{className:\"flex items-center justify-between px-4 py-6\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"flex items-center\",children:/*#__PURE__*/_jsx(\"span\",{className:\"text-2xl font-semibold text-primary-600\",children:\"SolarBank\"})}),/*#__PURE__*/_jsx(\"button\",{onClick:toggleSidebar,className:\"p-1 text-gray-500 rounded-md lg:hidden hover:text-primary-600 focus:outline-none\",children:/*#__PURE__*/_jsx(FiX,{className:\"w-6 h-6\"})})]}),/*#__PURE__*/_jsxs(\"nav\",{className:\"mt-6 px-2 space-y-1\",children:[/*#__PURE__*/_jsxs(NavLink,{to:\"/\",className:_ref=>{let{isActive}=_ref;return`sidebar-link ${isActive?'active':''}`;},children:[/*#__PURE__*/_jsx(FiHome,{className:\"w-5 h-5\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Dashboard\"})]}),/*#__PURE__*/_jsxs(NavLink,{to:\"/devices\",className:_ref2=>{let{isActive}=_ref2;return`sidebar-link ${isActive?'active':''}`;},children:[/*#__PURE__*/_jsx(FiServer,{className:\"w-5 h-5\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Devices\"})]}),/*#__PURE__*/_jsxs(NavLink,{to:\"/map\",className:_ref3=>{let{isActive}=_ref3;return`sidebar-link ${isActive?'active':''}`;},children:[/*#__PURE__*/_jsx(FiMap,{className:\"w-5 h-5\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Map\"})]}),/*#__PURE__*/_jsxs(NavLink,{to:\"/logs\",className:_ref4=>{let{isActive}=_ref4;return`sidebar-link ${isActive?'active':''}`;},children:[/*#__PURE__*/_jsx(FiList,{className:\"w-5 h-5\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Logs\"})]}),/*#__PURE__*/_jsxs(NavLink,{to:\"/settings\",className:_ref5=>{let{isActive}=_ref5;return`sidebar-link ${isActive?'active':''}`;},children:[/*#__PURE__*/_jsx(FiSettings,{className:\"w-5 h-5\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Settings\"})]})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"flex flex-col flex-1 overflow-hidden\",children:[/*#__PURE__*/_jsxs(\"header\",{className:\"flex items-center justify-between px-6 py-4 bg-white border-b\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"flex items-center\",children:/*#__PURE__*/_jsx(\"button\",{onClick:toggleSidebar,className:\"p-1 text-gray-500 rounded-md lg:hidden hover:text-primary-600 focus:outline-none\",children:/*#__PURE__*/_jsx(FiMenu,{className:\"w-6 h-6\"})})}),/*#__PURE__*/_jsxs(\"div\",{className:\"flex items-center space-x-4\",children:[/*#__PURE__*/_jsx(\"button\",{className:\"p-1 text-gray-500 rounded-md hover:text-primary-600 focus:outline-none\",children:/*#__PURE__*/_jsx(FiBell,{className:\"w-6 h-6\"})}),/*#__PURE__*/_jsxs(\"div\",{className:\"relative\",children:[/*#__PURE__*/_jsxs(\"button\",{onClick:toggleUserMenu,className:\"flex items-center p-1 text-gray-500 rounded-md hover:text-primary-600 focus:outline-none\",children:[/*#__PURE__*/_jsx(FiUser,{className:\"w-6 h-6\"}),/*#__PURE__*/_jsx(\"span\",{className:\"ml-2 text-sm font-medium text-gray-700 hidden sm:block\",children:(user===null||user===void 0?void 0:user.username)||'User'})]}),userMenuOpen&&/*#__PURE__*/_jsxs(\"div\",{className:\"absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg py-1 z-50\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"px-4 py-2 border-b\",children:[/*#__PURE__*/_jsx(\"p\",{className:\"text-sm font-medium text-gray-900\",children:user===null||user===void 0?void 0:user.username}),/*#__PURE__*/_jsx(\"p\",{className:\"text-xs text-gray-500\",children:user===null||user===void 0?void 0:user.email})]}),/*#__PURE__*/_jsxs(\"button\",{onClick:handleLogout,className:\"flex items-center w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-100\",children:[/*#__PURE__*/_jsx(FiLogOut,{className:\"w-4 h-4 mr-2\"}),\"Sign out\"]})]})]})]})]}),/*#__PURE__*/_jsx(\"main\",{className:\"flex-1 overflow-x-hidden overflow-y-auto bg-gray-50 p-6\",children:/*#__PURE__*/_jsx(Outlet,{})})]})]});};export default Layout;","map":{"version":3,"names":["React","useState","Outlet","NavLink","FiHome","FiServer","FiMap","FiList","FiSettings","FiMenu","FiX","FiBell","FiUser","FiLogOut","useAuth","jsx","_jsx","jsxs","_jsxs","Layout","sidebarOpen","setSidebarOpen","userMenuOpen","setUserMenuOpen","user","logout","toggleSidebar","toggleUserMenu","handleLogout","className","children","onClick","to","_ref","isActive","_ref2","_ref3","_ref4","_ref5","username","email"],"sources":["/home/m3mo/Desktop/temparea/solarbank/frontend/src/components/Layout.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Outlet, NavLink } from 'react-router-dom';\nimport { \n FiHome, \n FiServer, \n FiMap, \n FiList, \n FiSettings, \n FiMenu, \n FiX,\n FiBell,\n FiUser,\n FiLogOut\n} from 'react-icons/fi';\nimport { useAuth } from '../contexts/AuthContext';\n\nconst Layout = () => {\n const [sidebarOpen, setSidebarOpen] = useState(false);\n const [userMenuOpen, setUserMenuOpen] = useState(false);\n const { user, logout } = useAuth();\n\n const toggleSidebar = () => {\n setSidebarOpen(!sidebarOpen);\n };\n\n const toggleUserMenu = () => {\n setUserMenuOpen(!userMenuOpen);\n };\n\n const handleLogout = () => {\n logout();\n setUserMenuOpen(false);\n };\n\n return (\n
{user?.username}
\n{user?.email}
\n