{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\components\\\\TitleMenu.js\",\n  _s = $RefreshSig$();\n// components/TitleMenu.js\nimport React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport default function TitleMenu({\n  onOpenLogin,\n  onOpenRegister\n}) {\n  _s();\n  const [open, setOpen] = useState(false);\n\n  // 메뉴 항목 리스트\n  const menuList = [{\n    label: \"홈\",\n    to: \"/\"\n  }, {\n    label: \"모니터링\",\n    to: \"/monitoring\"\n  }, {\n    label: \"이력\",\n    to: \"/history\"\n  }, {\n    label: \"통계\",\n    to: \"/statistics\"\n  }, {\n    label: \"센서목록\",\n    to: \"/sensor\"\n  }, {\n    label: \"마커맵\",\n    to: \"/marker\"\n  }, {\n    label: \"관리자\",\n    to: \"/admin\"\n  }];\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    style: {\n      position: \"fixed\",\n      top: 0,\n      left: 0,\n      right: 0,\n      zIndex: 100,\n      background: \"#fff\",\n      boxShadow: \"0 2px 8px #0001\",\n      height: 60,\n      display: \"flex\",\n      alignItems: \"center\",\n      padding: \"0 18px\"\n    },\n    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        fontWeight: 800,\n        fontSize: 22,\n        color: \"#3887be\",\n        letterSpacing: 1\n      },\n      children: \"IoT \\uB300\\uC2DC\\uBCF4\\uB4DC\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 34,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"nav\", {\n      className: \"menu-list\",\n      style: {\n        marginLeft: 32,\n        display: \"flex\",\n        gap: 24,\n        flex: 1\n      },\n      children: menuList.map((item, i) => /*#__PURE__*/_jsxDEV(Link, {\n        to: item.to,\n        className: \"menu-link\",\n        style: {\n          display: \"none\" /*모바일에서 감춤*/\n        },\n        children: item.label\n      }, i, false, {\n        fileName: _jsxFileName,\n        lineNumber: 49,\n        columnNumber: 11\n      }, this))\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 39,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"menu-actions\",\n      style: {\n        marginLeft: \"auto\",\n        display: \"flex\",\n        gap: 10\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"button\", {\n        className: \"menu-btn\",\n        onClick: onOpenLogin,\n        children: \"\\uB85C\\uADF8\\uC778\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 64,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n        className: \"menu-btn\",\n        onClick: onOpenRegister,\n        children: \"\\uD68C\\uC6D0\\uAC00\\uC785\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 65,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 56,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n      className: \"menu-hamburger\",\n      onClick: () => setOpen(o => !o),\n      style: {\n        marginLeft: 18,\n        background: \"none\",\n        border: \"none\",\n        fontSize: 30,\n        display: \"block\"\n      },\n      children: \"\\u2630\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 69,\n      columnNumber: 7\n    }, this), open && /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"menu-mobile-drawer\",\n      style: {\n        position: \"fixed\",\n        top: 60,\n        right: 0,\n        width: \"70vw\",\n        maxWidth: 320,\n        background: \"#fff\",\n        boxShadow: \"-3px 0 12px #0002\",\n        zIndex: 200,\n        padding: \"18px 0\",\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: 6\n      },\n      children: [menuList.map((item, i) => /*#__PURE__*/_jsxDEV(Link, {\n        to: item.to,\n        onClick: () => setOpen(false),\n        style: {\n          padding: \"14px 24px\",\n          fontSize: 17,\n          color: \"#333\",\n          textDecoration: \"none\",\n          borderBottom: \"1px solid #f0f0f0\"\n        },\n        children: item.label\n      }, i, false, {\n        fileName: _jsxFileName,\n        lineNumber: 100,\n        columnNumber: 13\n      }, this)), /*#__PURE__*/_jsxDEV(\"div\", {\n        style: {\n          padding: \"14px 24px\",\n          display: \"flex\",\n          gap: 8\n        },\n        children: [/*#__PURE__*/_jsxDEV(\"button\", {\n          className: \"menu-btn\",\n          onClick: onOpenLogin,\n          children: \"\\uB85C\\uADF8\\uC778\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 114,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n          className: \"menu-btn\",\n          onClick: onOpenRegister,\n          children: \"\\uD68C\\uC6D0\\uAC00\\uC785\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 115,\n          columnNumber: 13\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 113,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 83,\n      columnNumber: 9\n    }, this), open && /*#__PURE__*/_jsxDEV(\"div\", {\n      onClick: () => setOpen(false),\n      style: {\n        position: \"fixed\",\n        top: 60,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        zIndex: 150,\n        background: \"rgba(0,0,0,0.07)\"\n      }\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 121,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(\"style\", {\n      children: `\n        @media (max-width: 768px) {\n          .menu-list .menu-link { display: none !important; }\n          .menu-hamburger { display: block !important; }\n        }\n        @media (min-width: 769px) {\n          .menu-list .menu-link { display: flex !important; }\n          .menu-hamburger, .menu-mobile-drawer { display: none !important; }\n        }\n      `\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 133,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 20,\n    columnNumber: 5\n  }, this);\n}\n_s(TitleMenu, \"xG1TONbKtDWtdOTrXaTAsNhPg/Q=\");\n_c = TitleMenu;\nvar _c;\n$RefreshReg$(_c, \"TitleMenu\");","map":{"version":3,"names":["React","useState","Link","jsxDEV","_jsxDEV","TitleMenu","onOpenLogin","onOpenRegister","_s","open","setOpen","menuList","label","to","style","position","top","left","right","zIndex","background","boxShadow","height","display","alignItems","padding","children","fontWeight","fontSize","color","letterSpacing","fileName","_jsxFileName","lineNumber","columnNumber","className","marginLeft","gap","flex","map","item","i","onClick","o","border","width","maxWidth","flexDirection","textDecoration","borderBottom","bottom","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/components/TitleMenu.js"],"sourcesContent":["// components/TitleMenu.js\r\nimport React, { useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nexport default function TitleMenu({ onOpenLogin, onOpenRegister }) {\r\n  const [open, setOpen] = useState(false);\r\n\r\n  // 메뉴 항목 리스트\r\n  const menuList = [\r\n    { label: \"홈\", to: \"/\" },\r\n    { label: \"모니터링\", to: \"/monitoring\" },\r\n    { label: \"이력\", to: \"/history\" },\r\n    { label: \"통계\", to: \"/statistics\" },\r\n    { label: \"센서목록\", to: \"/sensor\" },\r\n    { label: \"마커맵\", to: \"/marker\" },\r\n    { label: \"관리자\", to: \"/admin\" },\r\n  ];\r\n\r\n  return (\r\n    <div\r\n      style={{\r\n        position: \"fixed\",\r\n        top: 0, left: 0, right: 0,\r\n        zIndex: 100,\r\n        background: \"#fff\",\r\n        boxShadow: \"0 2px 8px #0001\",\r\n        height: 60,\r\n        display: \"flex\",\r\n        alignItems: \"center\",\r\n        padding: \"0 18px\",\r\n      }}\r\n    >\r\n      {/* 로고/타이틀 */}\r\n      <div style={{ fontWeight: 800, fontSize: 22, color: \"#3887be\", letterSpacing: 1 }}>\r\n        IoT 대시보드\r\n      </div>\r\n\r\n      {/* PC용 메뉴 */}\r\n      <nav\r\n        className=\"menu-list\"\r\n        style={{\r\n          marginLeft: 32,\r\n          display: \"flex\",\r\n          gap: 24,\r\n          flex: 1,\r\n        }}\r\n      >\r\n        {menuList.map((item, i) => (\r\n          <Link key={i} to={item.to} className=\"menu-link\" style={{ display: \"none\" /*모바일에서 감춤*/ }}>\r\n            {item.label}\r\n          </Link>\r\n        ))}\r\n      </nav>\r\n\r\n      {/* 로그인/회원가입 (PC) */}\r\n      <div\r\n        className=\"menu-actions\"\r\n        style={{\r\n          marginLeft: \"auto\",\r\n          display: \"flex\",\r\n          gap: 10,\r\n        }}\r\n      >\r\n        <button className=\"menu-btn\" onClick={onOpenLogin}>로그인</button>\r\n        <button className=\"menu-btn\" onClick={onOpenRegister}>회원가입</button>\r\n      </div>\r\n\r\n      {/* 햄버거(모바일) */}\r\n      <button\r\n        className=\"menu-hamburger\"\r\n        onClick={() => setOpen((o) => !o)}\r\n        style={{\r\n          marginLeft: 18,\r\n          background: \"none\",\r\n          border: \"none\",\r\n          fontSize: 30,\r\n          display: \"block\",\r\n        }}\r\n      >☰</button>\r\n\r\n      {/* 모바일 메뉴 Drawer */}\r\n      {open && (\r\n        <div\r\n          className=\"menu-mobile-drawer\"\r\n          style={{\r\n            position: \"fixed\",\r\n            top: 60, right: 0,\r\n            width: \"70vw\",\r\n            maxWidth: 320,\r\n            background: \"#fff\",\r\n            boxShadow: \"-3px 0 12px #0002\",\r\n            zIndex: 200,\r\n            padding: \"18px 0\",\r\n            display: \"flex\",\r\n            flexDirection: \"column\",\r\n            gap: 6,\r\n          }}\r\n        >\r\n          {menuList.map((item, i) => (\r\n            <Link\r\n              key={i}\r\n              to={item.to}\r\n              onClick={() => setOpen(false)}\r\n              style={{\r\n                padding: \"14px 24px\",\r\n                fontSize: 17,\r\n                color: \"#333\",\r\n                textDecoration: \"none\",\r\n                borderBottom: \"1px solid #f0f0f0\"\r\n              }}\r\n            >{item.label}</Link>\r\n          ))}\r\n          <div style={{ padding: \"14px 24px\", display: \"flex\", gap: 8 }}>\r\n            <button className=\"menu-btn\" onClick={onOpenLogin}>로그인</button>\r\n            <button className=\"menu-btn\" onClick={onOpenRegister}>회원가입</button>\r\n          </div>\r\n        </div>\r\n      )}\r\n      {/* 오버레이 닫기 */}\r\n      {open && (\r\n        <div\r\n          onClick={() => setOpen(false)}\r\n          style={{\r\n            position: \"fixed\",\r\n            top: 60, left: 0, right: 0, bottom: 0,\r\n            zIndex: 150,\r\n            background: \"rgba(0,0,0,0.07)\"\r\n          }}\r\n        />\r\n      )}\r\n\r\n      {/* CSS: 반응형 처리 */}\r\n      <style>{`\r\n        @media (max-width: 768px) {\r\n          .menu-list .menu-link { display: none !important; }\r\n          .menu-hamburger { display: block !important; }\r\n        }\r\n        @media (min-width: 769px) {\r\n          .menu-list .menu-link { display: flex !important; }\r\n          .menu-hamburger, .menu-mobile-drawer { display: none !important; }\r\n        }\r\n      `}</style>\r\n    </div>\r\n  );\r\n}\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}