{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\pages\\\\Register.js\",\n  _s = $RefreshSig$();\n// src/pages/Register.js\nimport React, { useState } from \"react\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport default function Register({\n  onClose\n}) {\n  _s();\n  const [form, setForm] = useState({\n    username: '',\n    password: '',\n    role: 'user'\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/register\", {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\"\n      },\n      body: JSON.stringify(form)\n    });\n    const data = await res.json();\n    setMsg(data.msg || \"회원가입 실패\");\n    if (data.msg && data.msg.includes(\"완료\")) {\n      setTimeout(() => onClose && onClose(), 1000);\n    }\n  };\n  return /*#__PURE__*/_jsxDEV(\"form\", {\n    className: \"editorial-modal-form\",\n    onSubmit: handleSubmit,\n    style: {\n      minWidth: 320\n    },\n    children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n      style: {\n        fontFamily: \"Source Sans Pro, Arial, sans-serif\",\n        fontWeight: 900,\n        marginBottom: \"1.3em\",\n        fontSize: \"1.5em\",\n        letterSpacing: \"-0.03em\"\n      },\n      children: \"\\uD68C\\uC6D0\\uAC00\\uC785\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 26,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"field\",\n      style: {\n        marginBottom: \"1.4em\"\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"label\", {\n        htmlFor: \"username\",\n        children: \"\\uC544\\uC774\\uB514\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 34,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n        type: \"text\",\n        name: \"username\",\n        id: \"username\",\n        required: true,\n        autoFocus: true,\n        value: form.username,\n        onChange: handleChange\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 35,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 33,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"field\",\n      style: {\n        marginBottom: \"1.5em\"\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"label\", {\n        htmlFor: \"password\",\n        children: \"\\uBE44\\uBC00\\uBC88\\uD638\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 46,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n        type: \"password\",\n        name: \"password\",\n        id: \"password\",\n        required: true,\n        value: form.password,\n        onChange: handleChange\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 47,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 45,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"field\",\n      style: {\n        marginBottom: \"1.5em\"\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"label\", {\n        htmlFor: \"role\",\n        children: \"\\uC5ED\\uD560\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 57,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n        name: \"role\",\n        id: \"role\",\n        value: form.role,\n        onChange: handleChange,\n        children: [/*#__PURE__*/_jsxDEV(\"option\", {\n          value: \"user\",\n          children: \"\\uC77C\\uBC18 \\uC0AC\\uC6A9\\uC790\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 59,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n          value: \"admin\",\n          children: \"\\uAD00\\uB9AC\\uC790\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 60,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 58,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 56,\n      columnNumber: 7\n    }, this), msg && /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        color: \"#d4403a\",\n        fontWeight: 600,\n        margin: \"0 0 1em 0\",\n        textAlign: \"center\"\n      },\n      children: msg\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 63,\n      columnNumber: 15\n    }, this), /*#__PURE__*/_jsxDEV(\"ul\", {\n      className: \"actions\",\n      style: {\n        justifyContent: \"center\"\n      },\n      children: /*#__PURE__*/_jsxDEV(\"li\", {\n        children: /*#__PURE__*/_jsxDEV(\"button\", {\n          type: \"submit\",\n          className: \"primary\",\n          style: {\n            minWidth: 120\n          },\n          children: \"\\uAC00\\uC785\\uD558\\uAE30\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 71,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 70,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 69,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 25,\n    columnNumber: 5\n  }, this);\n}\n_s(Register, \"jOhgR2l6HNzD4dqVQ8X9mQBfAp8=\");\n_c = Register;\nvar _c;\n$RefreshReg$(_c, \"Register\");","map":{"version":3,"names":["React","useState","jsxDEV","_jsxDEV","Register","onClose","_s","form","setForm","username","password","role","msg","setMsg","handleChange","e","target","name","value","handleSubmit","preventDefault","res","fetch","method","headers","body","JSON","stringify","data","json","includes","setTimeout","className","onSubmit","style","minWidth","children","fontFamily","fontWeight","marginBottom","fontSize","letterSpacing","fileName","_jsxFileName","lineNumber","columnNumber","htmlFor","type","id","required","autoFocus","onChange","color","margin","textAlign","justifyContent","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/pages/Register.js"],"sourcesContent":["// src/pages/Register.js\r\nimport React, { useState } from \"react\";\r\n\r\nexport default function Register({ onClose }) {\r\n  const [form, setForm] = useState({ username: '', password: '', role: 'user' });\r\n  const [msg, setMsg] = useState('');\r\n\r\n  const handleChange = e => setForm({ ...form, [e.target.name]: e.target.value });\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n    const res = await fetch(\"http://localhost:4000/api/auth/register\", {\r\n      method: \"POST\",\r\n      headers: { \"Content-Type\": \"application/json\" },\r\n      body: JSON.stringify(form),\r\n    });\r\n    const data = await res.json();\r\n    setMsg(data.msg || \"회원가입 실패\");\r\n    if (data.msg && data.msg.includes(\"완료\")) {\r\n      setTimeout(() => onClose && onClose(), 1000);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <form className=\"editorial-modal-form\" onSubmit={handleSubmit} style={{ minWidth: 320 }}>\r\n      <h2 style={{\r\n        fontFamily: \"Source Sans Pro, Arial, sans-serif\",\r\n        fontWeight: 900,\r\n        marginBottom: \"1.3em\",\r\n        fontSize: \"1.5em\",\r\n        letterSpacing: \"-0.03em\"\r\n      }}>회원가입</h2>\r\n      <div className=\"field\" style={{ marginBottom: \"1.4em\" }}>\r\n        <label htmlFor=\"username\">아이디</label>\r\n        <input\r\n          type=\"text\"\r\n          name=\"username\"\r\n          id=\"username\"\r\n          required\r\n          autoFocus\r\n          value={form.username}\r\n          onChange={handleChange}\r\n        />\r\n      </div>\r\n      <div className=\"field\" style={{ marginBottom: \"1.5em\" }}>\r\n        <label htmlFor=\"password\">비밀번호</label>\r\n        <input\r\n          type=\"password\"\r\n          name=\"password\"\r\n          id=\"password\"\r\n          required\r\n          value={form.password}\r\n          onChange={handleChange}\r\n        />\r\n      </div>\r\n      <div className=\"field\" style={{ marginBottom: \"1.5em\" }}>\r\n        <label htmlFor=\"role\">역할</label>\r\n        <select name=\"role\" id=\"role\" value={form.role} onChange={handleChange}>\r\n          <option value=\"user\">일반 사용자</option>\r\n          <option value=\"admin\">관리자</option>\r\n        </select>\r\n      </div>\r\n      {msg && <div style={{\r\n        color: \"#d4403a\",\r\n        fontWeight: 600,\r\n        margin: \"0 0 1em 0\",\r\n        textAlign: \"center\"\r\n      }}>{msg}</div>}\r\n      <ul className=\"actions\" style={{ justifyContent: \"center\" }}>\r\n        <li>\r\n          <button type=\"submit\" className=\"primary\" style={{ minWidth: 120 }}>가입하기</button>\r\n        </li>\r\n      </ul>\r\n    </form>\r\n  );\r\n}\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}