{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\pages\\\\Login.js\",\n  _s = $RefreshSig$();\nimport React, { useState, useContext } from \"react\";\nimport { AuthContext } from \"../contexts/AuthContext\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport default function Login({\n  onClose\n}) {\n  _s();\n  const {\n    login\n  } = useContext(AuthContext);\n  const [form, setForm] = useState({\n    username: '',\n    password: ''\n  });\n  const [msg, setMsg] = useState('');\n  const handleChange = e => setForm({\n    ...form,\n    [e.target.name]: e.target.value\n  });\n  const handleSubmit = async e => {\n    e.preventDefault();\n    const res = await fetch('http://localhost:4000/api/auth/login', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json'\n      },\n      body: JSON.stringify(form)\n    });\n    const data = await res.json();\n    if (data.token) {\n      login({\n        ...data.user,\n        token: data.token\n      });\n      setMsg('로그인 성공');\n      if (onClose) onClose();\n    } else {\n      setMsg(data.msg || '로그인 실패');\n    }\n  };\n  return /*#__PURE__*/_jsxDEV(\"form\", {\n    onSubmit: handleSubmit,\n    children: [/*#__PURE__*/_jsxDEV(\"input\", {\n      name: \"username\",\n      onChange: handleChange,\n      placeholder: \"ID\",\n      required: true\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 28,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n      name: \"password\",\n      type: \"password\",\n      onChange: handleChange,\n      placeholder: \"\\uBE44\\uBC00\\uBC88\\uD638\",\n      required: true\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 29,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n      type: \"submit\",\n      children: \"\\uB85C\\uADF8\\uC778\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 30,\n      columnNumber: 7\n    }, this), msg && /*#__PURE__*/_jsxDEV(\"div\", {\n      children: msg\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 31,\n      columnNumber: 15\n    }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n      type: \"button\",\n      onClick: onClose,\n      children: \"\\uB2EB\\uAE30\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 32,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 27,\n    columnNumber: 5\n  }, this);\n}\n_s(Login, \"ZNG76k07dqFGqfAFel/PQLXwqVc=\");\n_c = Login;\nvar _c;\n$RefreshReg$(_c, \"Login\");","map":{"version":3,"names":["React","useState","useContext","AuthContext","jsxDEV","_jsxDEV","Login","onClose","_s","login","form","setForm","username","password","msg","setMsg","handleChange","e","target","name","value","handleSubmit","preventDefault","res","fetch","method","headers","body","JSON","stringify","data","json","token","user","onSubmit","children","onChange","placeholder","required","fileName","_jsxFileName","lineNumber","columnNumber","type","onClick","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/pages/Login.js"],"sourcesContent":["import React, { useState, useContext } from \"react\";\r\nimport { AuthContext } from \"../contexts/AuthContext\";\r\n\r\nexport default function Login({ onClose }) {\r\n  const { login } = useContext(AuthContext);\r\n  const [form, setForm] = useState({ username: '', password: '' });\r\n  const [msg, setMsg] = useState('');\r\n\r\n  const handleChange = e => setForm({ ...form, [e.target.name]: e.target.value });\r\n  const handleSubmit = async (e) => {\r\n    e.preventDefault();\r\n    const res = await fetch('http://localhost:4000/api/auth/login', {\r\n      method: 'POST', headers: { 'Content-Type': 'application/json' },\r\n      body: JSON.stringify(form)\r\n    });\r\n    const data = await res.json();\r\n    if (data.token) {\r\n      login({ ...data.user, token: data.token });\r\n      setMsg('로그인 성공');\r\n      if (onClose) onClose();\r\n    } else {\r\n      setMsg(data.msg || '로그인 실패');\r\n    }\r\n  };\r\n\r\n  return (\r\n    <form onSubmit={handleSubmit}>\r\n      <input name=\"username\" onChange={handleChange} placeholder=\"ID\" required />\r\n      <input name=\"password\" type=\"password\" onChange={handleChange} placeholder=\"비밀번호\" required />\r\n      <button type=\"submit\">로그인</button>\r\n      {msg && <div>{msg}</div>}\r\n      <button type=\"button\" onClick={onClose}>닫기</button>\r\n    </form>\r\n  );\r\n}\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}