BankliPlus/forserverbankli/solarbank/frontend/node_modules/.cache/babel-loader/31c3837a4e1e4e4a71419b52ca982e811da0de41df6a2ad79e52fca00e977406.json
2025-08-13 18:05:26 +02:00

1 line
15 KiB
JSON

{"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 <div className=\"flex h-screen bg-gray-50\">\n {/* Sidebar for mobile */}\n <div \n className={`fixed inset-0 z-20 transition-opacity bg-black bg-opacity-50 lg:hidden ${\n sidebarOpen ? 'opacity-100 ease-out duration-300' : 'opacity-0 ease-in duration-200 pointer-events-none'\n }`}\n onClick={toggleSidebar}\n ></div>\n\n {/* Sidebar */}\n <div \n 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 ${\n sidebarOpen ? 'translate-x-0 ease-out' : '-translate-x-full ease-in'\n }`}\n >\n <div className=\"flex items-center justify-between px-4 py-6\">\n <div className=\"flex items-center\">\n <span className=\"text-2xl font-semibold text-primary-600\">SolarBank</span>\n </div>\n <button\n onClick={toggleSidebar}\n className=\"p-1 text-gray-500 rounded-md lg:hidden hover:text-primary-600 focus:outline-none\"\n >\n <FiX className=\"w-6 h-6\" />\n </button>\n </div>\n\n <nav className=\"mt-6 px-2 space-y-1\">\n <NavLink to=\"/\" className={({isActive}) => `sidebar-link ${isActive ? 'active' : ''}`}>\n <FiHome className=\"w-5 h-5\" />\n <span>Dashboard</span>\n </NavLink>\n <NavLink to=\"/devices\" className={({isActive}) => `sidebar-link ${isActive ? 'active' : ''}`}>\n <FiServer className=\"w-5 h-5\" />\n <span>Devices</span>\n </NavLink>\n <NavLink to=\"/map\" className={({isActive}) => `sidebar-link ${isActive ? 'active' : ''}`}>\n <FiMap className=\"w-5 h-5\" />\n <span>Map</span>\n </NavLink>\n <NavLink to=\"/logs\" className={({isActive}) => `sidebar-link ${isActive ? 'active' : ''}`}>\n <FiList className=\"w-5 h-5\" />\n <span>Logs</span>\n </NavLink>\n <NavLink to=\"/settings\" className={({isActive}) => `sidebar-link ${isActive ? 'active' : ''}`}>\n <FiSettings className=\"w-5 h-5\" />\n <span>Settings</span>\n </NavLink>\n </nav>\n </div>\n\n {/* Main content */}\n <div className=\"flex flex-col flex-1 overflow-hidden\">\n <header className=\"flex items-center justify-between px-6 py-4 bg-white border-b\">\n <div className=\"flex items-center\">\n <button\n onClick={toggleSidebar}\n className=\"p-1 text-gray-500 rounded-md lg:hidden hover:text-primary-600 focus:outline-none\"\n >\n <FiMenu className=\"w-6 h-6\" />\n </button>\n </div>\n\n <div className=\"flex items-center space-x-4\">\n <button className=\"p-1 text-gray-500 rounded-md hover:text-primary-600 focus:outline-none\">\n <FiBell className=\"w-6 h-6\" />\n </button>\n \n {/* User Menu */}\n <div className=\"relative\">\n <button \n onClick={toggleUserMenu}\n className=\"flex items-center p-1 text-gray-500 rounded-md hover:text-primary-600 focus:outline-none\"\n >\n <FiUser className=\"w-6 h-6\" />\n <span className=\"ml-2 text-sm font-medium text-gray-700 hidden sm:block\">\n {user?.username || 'User'}\n </span>\n </button>\n \n {userMenuOpen && (\n <div className=\"absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg py-1 z-50\">\n <div className=\"px-4 py-2 border-b\">\n <p className=\"text-sm font-medium text-gray-900\">{user?.username}</p>\n <p className=\"text-xs text-gray-500\">{user?.email}</p>\n </div>\n <button\n onClick={handleLogout}\n className=\"flex items-center w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-100\"\n >\n <FiLogOut className=\"w-4 h-4 mr-2\" />\n Sign out\n </button>\n </div>\n )}\n </div>\n </div>\n </header>\n\n <main className=\"flex-1 overflow-x-hidden overflow-y-auto bg-gray-50 p-6\">\n <Outlet />\n </main>\n </div>\n </div>\n );\n};\n\nexport default Layout;\n"],"mappings":"AAAA,MAAO,CAAAA,KAAK,EAAIC,QAAQ,KAAQ,OAAO,CACvC,OAASC,MAAM,CAAEC,OAAO,KAAQ,kBAAkB,CAClD,OACEC,MAAM,CACNC,QAAQ,CACRC,KAAK,CACLC,MAAM,CACNC,UAAU,CACVC,MAAM,CACNC,GAAG,CACHC,MAAM,CACNC,MAAM,CACNC,QAAQ,KACH,gBAAgB,CACvB,OAASC,OAAO,KAAQ,yBAAyB,CAAC,OAAAC,GAAA,IAAAC,IAAA,CAAAC,IAAA,IAAAC,KAAA,yBAElD,KAAM,CAAAC,MAAM,CAAGA,CAAA,GAAM,CACnB,KAAM,CAACC,WAAW,CAAEC,cAAc,CAAC,CAAGpB,QAAQ,CAAC,KAAK,CAAC,CACrD,KAAM,CAACqB,YAAY,CAAEC,eAAe,CAAC,CAAGtB,QAAQ,CAAC,KAAK,CAAC,CACvD,KAAM,CAAEuB,IAAI,CAAEC,MAAO,CAAC,CAAGX,OAAO,CAAC,CAAC,CAElC,KAAM,CAAAY,aAAa,CAAGA,CAAA,GAAM,CAC1BL,cAAc,CAAC,CAACD,WAAW,CAAC,CAC9B,CAAC,CAED,KAAM,CAAAO,cAAc,CAAGA,CAAA,GAAM,CAC3BJ,eAAe,CAAC,CAACD,YAAY,CAAC,CAChC,CAAC,CAED,KAAM,CAAAM,YAAY,CAAGA,CAAA,GAAM,CACzBH,MAAM,CAAC,CAAC,CACRF,eAAe,CAAC,KAAK,CAAC,CACxB,CAAC,CAED,mBACEL,KAAA,QAAKW,SAAS,CAAC,0BAA0B,CAAAC,QAAA,eAEvCd,IAAA,QACEa,SAAS,CAAE,0EACTT,WAAW,CAAG,mCAAmC,CAAG,oDAAoD,EACvG,CACHW,OAAO,CAAEL,aAAc,CACnB,CAAC,cAGPR,KAAA,QACEW,SAAS,CAAE,qIACTT,WAAW,CAAG,wBAAwB,CAAG,2BAA2B,EACnE,CAAAU,QAAA,eAEHZ,KAAA,QAAKW,SAAS,CAAC,6CAA6C,CAAAC,QAAA,eAC1Dd,IAAA,QAAKa,SAAS,CAAC,mBAAmB,CAAAC,QAAA,cAChCd,IAAA,SAAMa,SAAS,CAAC,yCAAyC,CAAAC,QAAA,CAAC,WAAS,CAAM,CAAC,CACvE,CAAC,cACNd,IAAA,WACEe,OAAO,CAAEL,aAAc,CACvBG,SAAS,CAAC,kFAAkF,CAAAC,QAAA,cAE5Fd,IAAA,CAACN,GAAG,EAACmB,SAAS,CAAC,SAAS,CAAE,CAAC,CACrB,CAAC,EACN,CAAC,cAENX,KAAA,QAAKW,SAAS,CAAC,qBAAqB,CAAAC,QAAA,eAClCZ,KAAA,CAACf,OAAO,EAAC6B,EAAE,CAAC,GAAG,CAACH,SAAS,CAAEI,IAAA,MAAC,CAACC,QAAQ,CAAC,CAAAD,IAAA,OAAK,gBAAgBC,QAAQ,CAAG,QAAQ,CAAG,EAAE,EAAE,EAAC,CAAAJ,QAAA,eACpFd,IAAA,CAACZ,MAAM,EAACyB,SAAS,CAAC,SAAS,CAAE,CAAC,cAC9Bb,IAAA,SAAAc,QAAA,CAAM,WAAS,CAAM,CAAC,EACf,CAAC,cACVZ,KAAA,CAACf,OAAO,EAAC6B,EAAE,CAAC,UAAU,CAACH,SAAS,CAAEM,KAAA,MAAC,CAACD,QAAQ,CAAC,CAAAC,KAAA,OAAK,gBAAgBD,QAAQ,CAAG,QAAQ,CAAG,EAAE,EAAE,EAAC,CAAAJ,QAAA,eAC3Fd,IAAA,CAACX,QAAQ,EAACwB,SAAS,CAAC,SAAS,CAAE,CAAC,cAChCb,IAAA,SAAAc,QAAA,CAAM,SAAO,CAAM,CAAC,EACb,CAAC,cACVZ,KAAA,CAACf,OAAO,EAAC6B,EAAE,CAAC,MAAM,CAACH,SAAS,CAAEO,KAAA,MAAC,CAACF,QAAQ,CAAC,CAAAE,KAAA,OAAK,gBAAgBF,QAAQ,CAAG,QAAQ,CAAG,EAAE,EAAE,EAAC,CAAAJ,QAAA,eACvFd,IAAA,CAACV,KAAK,EAACuB,SAAS,CAAC,SAAS,CAAE,CAAC,cAC7Bb,IAAA,SAAAc,QAAA,CAAM,KAAG,CAAM,CAAC,EACT,CAAC,cACVZ,KAAA,CAACf,OAAO,EAAC6B,EAAE,CAAC,OAAO,CAACH,SAAS,CAAEQ,KAAA,MAAC,CAACH,QAAQ,CAAC,CAAAG,KAAA,OAAK,gBAAgBH,QAAQ,CAAG,QAAQ,CAAG,EAAE,EAAE,EAAC,CAAAJ,QAAA,eACxFd,IAAA,CAACT,MAAM,EAACsB,SAAS,CAAC,SAAS,CAAE,CAAC,cAC9Bb,IAAA,SAAAc,QAAA,CAAM,MAAI,CAAM,CAAC,EACV,CAAC,cACVZ,KAAA,CAACf,OAAO,EAAC6B,EAAE,CAAC,WAAW,CAACH,SAAS,CAAES,KAAA,MAAC,CAACJ,QAAQ,CAAC,CAAAI,KAAA,OAAK,gBAAgBJ,QAAQ,CAAG,QAAQ,CAAG,EAAE,EAAE,EAAC,CAAAJ,QAAA,eAC5Fd,IAAA,CAACR,UAAU,EAACqB,SAAS,CAAC,SAAS,CAAE,CAAC,cAClCb,IAAA,SAAAc,QAAA,CAAM,UAAQ,CAAM,CAAC,EACd,CAAC,EACP,CAAC,EACH,CAAC,cAGNZ,KAAA,QAAKW,SAAS,CAAC,sCAAsC,CAAAC,QAAA,eACnDZ,KAAA,WAAQW,SAAS,CAAC,+DAA+D,CAAAC,QAAA,eAC/Ed,IAAA,QAAKa,SAAS,CAAC,mBAAmB,CAAAC,QAAA,cAChCd,IAAA,WACEe,OAAO,CAAEL,aAAc,CACvBG,SAAS,CAAC,kFAAkF,CAAAC,QAAA,cAE5Fd,IAAA,CAACP,MAAM,EAACoB,SAAS,CAAC,SAAS,CAAE,CAAC,CACxB,CAAC,CACN,CAAC,cAENX,KAAA,QAAKW,SAAS,CAAC,6BAA6B,CAAAC,QAAA,eAC1Cd,IAAA,WAAQa,SAAS,CAAC,wEAAwE,CAAAC,QAAA,cACxFd,IAAA,CAACL,MAAM,EAACkB,SAAS,CAAC,SAAS,CAAE,CAAC,CACxB,CAAC,cAGTX,KAAA,QAAKW,SAAS,CAAC,UAAU,CAAAC,QAAA,eACvBZ,KAAA,WACEa,OAAO,CAAEJ,cAAe,CACxBE,SAAS,CAAC,0FAA0F,CAAAC,QAAA,eAEpGd,IAAA,CAACJ,MAAM,EAACiB,SAAS,CAAC,SAAS,CAAE,CAAC,cAC9Bb,IAAA,SAAMa,SAAS,CAAC,wDAAwD,CAAAC,QAAA,CACrE,CAAAN,IAAI,SAAJA,IAAI,iBAAJA,IAAI,CAAEe,QAAQ,GAAI,MAAM,CACrB,CAAC,EACD,CAAC,CAERjB,YAAY,eACXJ,KAAA,QAAKW,SAAS,CAAC,oEAAoE,CAAAC,QAAA,eACjFZ,KAAA,QAAKW,SAAS,CAAC,oBAAoB,CAAAC,QAAA,eACjCd,IAAA,MAAGa,SAAS,CAAC,mCAAmC,CAAAC,QAAA,CAAEN,IAAI,SAAJA,IAAI,iBAAJA,IAAI,CAAEe,QAAQ,CAAI,CAAC,cACrEvB,IAAA,MAAGa,SAAS,CAAC,uBAAuB,CAAAC,QAAA,CAAEN,IAAI,SAAJA,IAAI,iBAAJA,IAAI,CAAEgB,KAAK,CAAI,CAAC,EACnD,CAAC,cACNtB,KAAA,WACEa,OAAO,CAAEH,YAAa,CACtBC,SAAS,CAAC,4EAA4E,CAAAC,QAAA,eAEtFd,IAAA,CAACH,QAAQ,EAACgB,SAAS,CAAC,cAAc,CAAE,CAAC,WAEvC,EAAQ,CAAC,EACN,CACN,EACE,CAAC,EACH,CAAC,EACA,CAAC,cAETb,IAAA,SAAMa,SAAS,CAAC,yDAAyD,CAAAC,QAAA,cACvEd,IAAA,CAACd,MAAM,GAAE,CAAC,CACN,CAAC,EACJ,CAAC,EACH,CAAC,CAEV,CAAC,CAED,cAAe,CAAAiB,MAAM","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}