{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\departments\\\\DepartmentList.js\",\n  _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { departmentService } from '../../services/departmentService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction DepartmentList() {\n  _s();\n  const formatDepartmentName = name => {\n    if (!name) return 'N/A';\n    return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n  };\n  const user = JSON.parse(localStorage.getItem('user') || '{}');\n  const isAdmin = user.role === 'ADMIN';\n  const [departments, setDepartments] = useState([]);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n  const navigate = useNavigate();\n  useEffect(() => {\n    fetchDepartments();\n  }, []);\n  const fetchDepartments = async () => {\n    try {\n      setLoading(true);\n      const response = await departmentService.getAllDepartments();\n      setDepartments(response.data);\n    } catch (err) {\n      setError('Failed to fetch departments');\n      console.error(err);\n    } finally {\n      setLoading(false);\n    }\n  };\n  if (loading) return /*#__PURE__*/_jsxDEV(Loading, {}, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 37,\n    columnNumber: 23\n  }, this);\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"flex justify-between items-center mb-6\",\n      children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n        style: {\n          fontSize: '36px',\n          fontWeight: 'normal',\n          color: '#7c3aed'\n        },\n        children: \"Hospital Departments\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 42,\n        columnNumber: 9\n      }, this), isAdmin && /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"space-x-2\",\n        children: /*#__PURE__*/_jsxDEV(\"button\", {\n          onClick: () => navigate('/departments/new'),\n          style: {\n            background: '#bfdbfe',\n            color: '#1e1035',\n            padding: '8px 16px',\n            borderRadius: '6px',\n            border: 'none',\n            cursor: 'pointer',\n            fontSize: '14px',\n            fontWeight: '400'\n          },\n          onMouseEnter: e => e.currentTarget.style.background = '#93c5fd',\n          onMouseLeave: e => e.currentTarget.style.background = '#bfdbfe',\n          children: \"Add Department\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 45,\n          columnNumber: 13\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 44,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 41,\n      columnNumber: 7\n    }, this), error && /*#__PURE__*/_jsxDEV(ErrorAlert, {\n      message: error,\n      onClose: () => setError(null)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 66,\n      columnNumber: 17\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n      children: departments.map(dept => /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"bg-white rounded-lg shadow p-6 hover:shadow-lg transition flex flex-col items-center\",\n        children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n          style: {\n            fontSize: '28px',\n            fontWeight: 'normal',\n            marginBottom: '20px',\n            textAlign: 'center'\n          },\n          children: formatDepartmentName(dept.departmentName)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 71,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"flex gap-3 w-full\",\n          children: [/*#__PURE__*/_jsxDEV(Link, {\n            to: `/departments/${dept.departmentId}/doctors`,\n            style: {\n              flex: 1,\n              display: 'flex',\n              alignItems: 'center',\n              justifyContent: 'center',\n              background: '#9333ea',\n              color: 'white',\n              padding: '6px 10px',\n              borderRadius: '50px',\n              textDecoration: 'none',\n              fontSize: '14px',\n              fontWeight: '400'\n            },\n            onMouseEnter: e => e.currentTarget.style.background = '#7e22ce',\n            onMouseLeave: e => e.currentTarget.style.background = '#9333ea',\n            children: \"View Doctors\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 73,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(Link, {\n            to: `/departments/${dept.departmentId}`,\n            style: {\n              flex: 1,\n              display: 'flex',\n              alignItems: 'center',\n              justifyContent: 'center',\n              background: '#7c3aed',\n              color: 'white',\n              padding: '6px 10px',\n              borderRadius: '50px',\n              textDecoration: 'none',\n              fontSize: '14px',\n              fontWeight: '400'\n            },\n            onMouseEnter: e => e.currentTarget.style.background = '#6d28d9',\n            onMouseLeave: e => e.currentTarget.style.background = '#7c3aed',\n            children: \"View Details\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 93,\n            columnNumber: 15\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 72,\n          columnNumber: 13\n        }, this)]\n      }, dept.departmentId, true, {\n        fileName: _jsxFileName,\n        lineNumber: 70,\n        columnNumber: 11\n      }, this))\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 68,\n      columnNumber: 7\n    }, this), departments.length === 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"text-center py-12\",\n      children: /*#__PURE__*/_jsxDEV(\"p\", {\n        className: \"text-gray-500\",\n        children: \"No departments found\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 120,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 119,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 40,\n    columnNumber: 5\n  }, this);\n}\n_s(DepartmentList, \"GJeGveWA86rQuC5M8UAbE5yTaiE=\", false, function () {\n  return [useNavigate];\n});\n_c = DepartmentList;\nexport default DepartmentList;\nvar _c;\n$RefreshReg$(_c, \"DepartmentList\");","map":{"version":3,"names":["React","useState","useEffect","Link","useNavigate","departmentService","Loading","ErrorAlert","jsxDEV","_jsxDEV","DepartmentList","_s","formatDepartmentName","name","replace","split","map","word","charAt","toUpperCase","slice","toLowerCase","join","user","JSON","parse","localStorage","getItem","isAdmin","role","departments","setDepartments","loading","setLoading","error","setError","navigate","fetchDepartments","response","getAllDepartments","data","err","console","fileName","_jsxFileName","lineNumber","columnNumber","children","className","style","fontSize","fontWeight","color","onClick","background","padding","borderRadius","border","cursor","onMouseEnter","e","currentTarget","onMouseLeave","message","onClose","dept","marginBottom","textAlign","departmentName","to","departmentId","flex","display","alignItems","justifyContent","textDecoration","length","_c","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/departments/DepartmentList.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { departmentService } from '../../services/departmentService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\n\nfunction DepartmentList() {\n  const formatDepartmentName = (name) => {\n    if (!name) return 'N/A';\n    return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n  };\n\n  const user = JSON.parse(localStorage.getItem('user') || '{}');\n  const isAdmin = user.role === 'ADMIN';\n  const [departments, setDepartments] = useState([]);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n  const navigate = useNavigate();\n\n  useEffect(() => {\n    fetchDepartments();\n  }, []);\n\n  const fetchDepartments = async () => {\n    try {\n      setLoading(true);\n      const response = await departmentService.getAllDepartments();\n      setDepartments(response.data);\n    } catch (err) {\n      setError('Failed to fetch departments');\n      console.error(err);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  if (loading) return <Loading />;\n\n  return (\n    <div>\n      <div className=\"flex justify-between items-center mb-6\">\n        <h1 style={{ fontSize: '36px', fontWeight: 'normal', color: '#7c3aed' }}>Hospital Departments</h1>\n        {isAdmin && (\n          <div className=\"space-x-2\">\n            <button\n              onClick={() => navigate('/departments/new')}\n              style={{\n                background: '#bfdbfe',\n                color: '#1e1035',\n                padding: '8px 16px',\n                borderRadius: '6px',\n                border: 'none',\n                cursor: 'pointer',\n                fontSize: '14px',\n                fontWeight: '400'\n              }}\n              onMouseEnter={(e) => e.currentTarget.style.background = '#93c5fd'}\n              onMouseLeave={(e) => e.currentTarget.style.background = '#bfdbfe'}\n            >\n              Add Department\n            </button>\n          </div>\n        )}\n      </div>\n\n      {error && <ErrorAlert message={error} onClose={() => setError(null)} />}\n\n      <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n        {departments.map((dept) => (\n          <div key={dept.departmentId} className=\"bg-white rounded-lg shadow p-6 hover:shadow-lg transition flex flex-col items-center\">\n            <h2 style={{ fontSize: '28px', fontWeight: 'normal', marginBottom: '20px', textAlign: 'center' }}>{formatDepartmentName(dept.departmentName)}</h2>\n            <div className=\"flex gap-3 w-full\">\n              <Link\n                to={`/departments/${dept.departmentId}/doctors`}\n                style={{\n                  flex: 1,\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center',\n                  background: '#9333ea',\n                  color: 'white',\n                  padding: '6px 10px',\n                  borderRadius: '50px',\n                  textDecoration: 'none',\n                  fontSize: '14px',\n                  fontWeight: '400'\n                }}\n                onMouseEnter={(e) => e.currentTarget.style.background = '#7e22ce'}\n                onMouseLeave={(e) => e.currentTarget.style.background = '#9333ea'}\n              >\n                View Doctors\n              </Link>\n              <Link\n                to={`/departments/${dept.departmentId}`}\n                style={{\n                  flex: 1,\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center',\n                  background: '#7c3aed',\n                  color: 'white',\n                  padding: '6px 10px',\n                  borderRadius: '50px',\n                  textDecoration: 'none',\n                  fontSize: '14px',\n                  fontWeight: '400'\n                }}\n                onMouseEnter={(e) => e.currentTarget.style.background = '#6d28d9'}\n                onMouseLeave={(e) => e.currentTarget.style.background = '#7c3aed'}\n              >\n                View Details\n              </Link>\n            </div>\n          </div>\n        ))}\n      </div>\n\n      {departments.length === 0 && (\n        <div className=\"text-center py-12\">\n          <p className=\"text-gray-500\">No departments found</p>\n        </div>\n      )}\n    </div>\n  );\n}\n\nexport default DepartmentList;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}