{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\pages\\\\Login.js\",\n  _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { login } from '../api';\nimport { setToken, setRole } from '../utils/auth';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction Login({\n  onLogin\n}) {\n  _s();\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 login(form);\n    if (res.token) {\n      setToken(res.token);\n      setRole(res.role);\n      onLogin();\n    } else {\n      setMsg(res.msg || 'Login failed');\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: 20,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n      name: \"password\",\n      type: \"password\",\n      onChange: handleChange,\n      placeholder: \"PW\",\n      required: true\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 21,\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: 22,\n      columnNumber: 7\n    }, this), msg && /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        color: 'red'\n      },\n      children: msg\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 23,\n      columnNumber: 15\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 19,\n    columnNumber: 5\n  }, this);\n}\n_s(Login, \"MD+/RF9ha0xqVJupiDUS863wztE=\");\n_c = Login;\nexport default Login;\nvar _c;\n$RefreshReg$(_c, \"Login\");","map":{"version":3,"names":["React","useState","login","setToken","setRole","jsxDEV","_jsxDEV","Login","onLogin","_s","form","setForm","username","password","msg","setMsg","handleChange","e","target","name","value","handleSubmit","preventDefault","res","token","role","onSubmit","children","onChange","placeholder","required","fileName","_jsxFileName","lineNumber","columnNumber","type","style","color","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/pages/Login.js"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { login } from '../api';\r\nimport { setToken, setRole } from '../utils/auth';\r\n\r\nfunction Login({ onLogin }) {\r\n  const [form, setForm] = useState({ username: '', password: '' });\r\n  const [msg, setMsg] = useState('');\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 login(form);\r\n    if (res.token) {\r\n      setToken(res.token); setRole(res.role); onLogin();\r\n    } else {\r\n      setMsg(res.msg || 'Login failed');\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=\"PW\" required />\r\n      <button type=\"submit\">로그인</button>\r\n      {msg && <div style={{ color: 'red' }}>{msg}</div>}\r\n    </form>\r\n  );\r\n}\r\nexport default Login;\r\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,KAAK,QAAQ,QAAQ;AAC9B,SAASC,QAAQ,EAAEC,OAAO,QAAQ,eAAe;AAAC,SAAAC,MAAA,IAAAC,OAAA;AAElD,SAASC,KAAKA,CAAC;EAAEC;AAAQ,CAAC,EAAE;EAAAC,EAAA;EAC1B,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGV,QAAQ,CAAC;IAAEW,QAAQ,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG,CAAC,CAAC;EAChE,MAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAGd,QAAQ,CAAC,EAAE,CAAC;EAClC,MAAMe,YAAY,GAAGC,CAAC,IAAIN,OAAO,CAAC;IAAE,GAAGD,IAAI;IAAE,CAACO,CAAC,CAACC,MAAM,CAACC,IAAI,GAAGF,CAAC,CAACC,MAAM,CAACE;EAAM,CAAC,CAAC;EAC/E,MAAMC,YAAY,GAAG,MAAMJ,CAAC,IAAI;IAC9BA,CAAC,CAACK,cAAc,CAAC,CAAC;IAClB,MAAMC,GAAG,GAAG,MAAMrB,KAAK,CAACQ,IAAI,CAAC;IAC7B,IAAIa,GAAG,CAACC,KAAK,EAAE;MACbrB,QAAQ,CAACoB,GAAG,CAACC,KAAK,CAAC;MAAEpB,OAAO,CAACmB,GAAG,CAACE,IAAI,CAAC;MAAEjB,OAAO,CAAC,CAAC;IACnD,CAAC,MAAM;MACLO,MAAM,CAACQ,GAAG,CAACT,GAAG,IAAI,cAAc,CAAC;IACnC;EACF,CAAC;EACD,oBACER,OAAA;IAAMoB,QAAQ,EAAEL,YAAa;IAAAM,QAAA,gBAC3BrB,OAAA;MAAOa,IAAI,EAAC,UAAU;MAACS,QAAQ,EAAEZ,YAAa;MAACa,WAAW,EAAC,IAAI;MAACC,QAAQ;IAAA;MAAAC,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC,eAC3E5B,OAAA;MAAOa,IAAI,EAAC,UAAU;MAACgB,IAAI,EAAC,UAAU;MAACP,QAAQ,EAAEZ,YAAa;MAACa,WAAW,EAAC,IAAI;MAACC,QAAQ;IAAA;MAAAC,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC,eAC3F5B,OAAA;MAAQ6B,IAAI,EAAC,QAAQ;MAAAR,QAAA,EAAC;IAAG;MAAAI,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAQ,CAAC,EACjCpB,GAAG,iBAAIR,OAAA;MAAK8B,KAAK,EAAE;QAAEC,KAAK,EAAE;MAAM,CAAE;MAAAV,QAAA,EAAEb;IAAG;MAAAiB,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAM,CAAC;EAAA;IAAAH,QAAA,EAAAC,YAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,OAC7C,CAAC;AAEX;AAACzB,EAAA,CArBQF,KAAK;AAAA+B,EAAA,GAAL/B,KAAK;AAsBd,eAAeA,KAAK;AAAC,IAAA+B,EAAA;AAAAC,YAAA,CAAAD,EAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}