{"ast":null,"code":"var _jsxFileName = \"/home/gnx/Desktop/gnx-mail/frontend/src/components/Layout.js\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport { Mail, Inbox, Send, FileText, Users, Settings, Menu, X, LogOut, User, Bell, Search } from 'lucide-react';\nimport { useAuth } from '../hooks/useAuth';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst Layout = ({\n children\n}) => {\n _s();\n const [sidebarOpen, setSidebarOpen] = useState(false);\n const {\n user,\n logout\n } = useAuth();\n const location = useLocation();\n const navigation = [{\n name: 'Dashboard',\n href: '/dashboard',\n icon: Mail\n }, {\n name: 'Inbox',\n href: '/inbox',\n icon: Inbox\n }, {\n name: 'Compose',\n href: '/compose',\n icon: Send\n }, {\n name: 'Contacts',\n href: '/contacts',\n icon: Users\n }, {\n name: 'Settings',\n href: '/settings',\n icon: Settings\n }];\n const isActive = href => {\n return location.pathname === href || location.pathname.startsWith(href + '/');\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: `fixed inset-0 z-50 lg:hidden ${sidebarOpen ? 'block' : 'hidden'}`,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"fixed inset-0 bg-gray-600 bg-opacity-75\",\n onClick: () => setSidebarOpen(false)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 40,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"fixed inset-y-0 left-0 flex w-64 flex-col bg-white\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex h-16 items-center justify-between px-4\",\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n className: \"text-xl font-bold text-gray-900\",\n children: \"GNX Mail\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 43,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setSidebarOpen(false),\n className: \"text-gray-400 hover:text-gray-600\",\n children: /*#__PURE__*/_jsxDEV(X, {\n className: \"h-6 w-6\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 48,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 44,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 42,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"nav\", {\n className: \"flex-1 space-y-1 px-2 py-4\",\n children: navigation.map(item => {\n const Icon = item.icon;\n return /*#__PURE__*/_jsxDEV(Link, {\n to: item.href,\n className: `sidebar-item ${isActive(item.href) ? 'active' : ''}`,\n onClick: () => setSidebarOpen(false),\n children: [/*#__PURE__*/_jsxDEV(Icon, {\n className: \"mr-3 h-5 w-5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 61,\n columnNumber: 19\n }, this), item.name]\n }, item.name, true, {\n fileName: _jsxFileName,\n lineNumber: 55,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 51,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 41,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 39,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"hidden lg:fixed lg:inset-y-0 lg:flex lg:w-64 lg:flex-col\",\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"sidebar flex min-h-0 flex-1 flex-col\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex h-16 items-center px-4\",\n children: /*#__PURE__*/_jsxDEV(\"h1\", {\n className: \"text-xl font-bold text-gray-900\",\n children: \"GNX Mail\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 74,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"nav\", {\n className: \"flex-1 space-y-1 px-2 py-4\",\n children: navigation.map(item => {\n const Icon = item.icon;\n return /*#__PURE__*/_jsxDEV(Link, {\n to: item.href,\n className: `sidebar-item ${isActive(item.href) ? 'active' : ''}`,\n children: [/*#__PURE__*/_jsxDEV(Icon, {\n className: \"mr-3 h-5 w-5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 85,\n columnNumber: 19\n }, this), item.name]\n }, item.name, true, {\n fileName: _jsxFileName,\n lineNumber: 80,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 76,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 71,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"lg:pl-64\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"sticky top-0 z-40 flex h-16 shrink-0 items-center gap-x-4 border-b border-gray-200 bg-white px-4 shadow-sm sm:gap-x-6 sm:px-6 lg:px-8\",\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n type: \"button\",\n className: \"-m-2.5 p-2.5 text-gray-700 lg:hidden\",\n onClick: () => setSidebarOpen(true),\n children: /*#__PURE__*/_jsxDEV(Menu, {\n className: \"h-6 w-6\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 103,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 98,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex flex-1 gap-x-4 self-stretch lg:gap-x-6\",\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"relative flex flex-1 items-center\",\n children: [/*#__PURE__*/_jsxDEV(Search, {\n className: \"pointer-events-none absolute inset-y-0 left-0 h-full w-5 text-gray-400 pl-3\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 109,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n placeholder: \"Search emails...\",\n className: \"block h-full w-full border-0 py-0 pl-10 pr-0 text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 110,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 108,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 107,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center gap-x-4 lg:gap-x-6\",\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n type: \"button\",\n className: \"-m-2.5 p-2.5 text-gray-400 hover:text-gray-500\",\n children: /*#__PURE__*/_jsxDEV(Bell, {\n className: \"h-6 w-6\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 124,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center gap-x-3\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center gap-x-2\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"h-8 w-8 rounded-full bg-primary-600 flex items-center justify-center\",\n children: /*#__PURE__*/_jsxDEV(User, {\n className: \"h-5 w-5 text-white\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 131,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 130,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"hidden lg:block\",\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-sm font-medium text-gray-900\",\n children: [user === null || user === void 0 ? void 0 : user.first_name, \" \", user === null || user === void 0 ? void 0 : user.last_name]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 134,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-xs text-gray-500\",\n children: user === null || user === void 0 ? void 0 : user.email\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 137,\n columnNumber: 21\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 133,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: logout,\n className: \"text-gray-400 hover:text-gray-500\",\n title: \"Logout\",\n children: /*#__PURE__*/_jsxDEV(LogOut, {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 145,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 140,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 127,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 119,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 97,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"main\", {\n className: \"py-6\",\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8\",\n children: children\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 154,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 153,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 95,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 37,\n columnNumber: 5\n }, this);\n};\n_s(Layout, \"GC1k201nAfNx/qf2irOlrYa2YLk=\", false, function () {\n return [useAuth, useLocation];\n});\n_c = Layout;\nexport default Layout;\nvar _c;\n$RefreshReg$(_c, \"Layout\");","map":{"version":3,"names":["React","useState","Link","useLocation","Mail","Inbox","Send","FileText","Users","Settings","Menu","X","LogOut","User","Bell","Search","useAuth","jsxDEV","_jsxDEV","Layout","children","_s","sidebarOpen","setSidebarOpen","user","logout","location","navigation","name","href","icon","isActive","pathname","startsWith","className","onClick","fileName","_jsxFileName","lineNumber","columnNumber","map","item","Icon","to","type","placeholder","first_name","last_name","email","title","_c","$RefreshReg$"],"sources":["/home/gnx/Desktop/gnx-mail/frontend/src/components/Layout.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport { \n Mail, \n Inbox, \n Send, \n FileText, \n Users, \n Settings, \n Menu, \n X,\n LogOut,\n User,\n Bell,\n Search\n} from 'lucide-react';\nimport { useAuth } from '../hooks/useAuth';\n\nconst Layout = ({ children }) => {\n const [sidebarOpen, setSidebarOpen] = useState(false);\n const { user, logout } = useAuth();\n const location = useLocation();\n\n const navigation = [\n { name: 'Dashboard', href: '/dashboard', icon: Mail },\n { name: 'Inbox', href: '/inbox', icon: Inbox },\n { name: 'Compose', href: '/compose', icon: Send },\n { name: 'Contacts', href: '/contacts', icon: Users },\n { name: 'Settings', href: '/settings', icon: Settings },\n ];\n\n const isActive = (href) => {\n return location.pathname === href || location.pathname.startsWith(href + '/');\n };\n\n return (\n
\n {user?.first_name} {user?.last_name}\n
\n{user?.email}
\n