{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\pages\\\\Register.js\",\n  _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { register } from '../api';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction Register({\n  onSuccess,\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 [loading, setLoading] = useState(false);\n  const handleChange = e => setForm({\n    ...form,\n    [e.target.name]: e.target.value\n  });\n  const handleSubmit = async e => {\n    e.preventDefault();\n    setLoading(true);\n    setMsg('');\n    const res = await register(form);\n    setLoading(false);\n    setMsg(res.msg);\n    if (res.msg === 'Registered' && onSuccess) onSuccess();\n  };\n  return /*#__PURE__*/_jsxDEV(\"form\", {\n    onSubmit: handleSubmit,\n    className: \"form-massively-register\",\n    children: [/*#__PURE__*/_jsxDEV(\"style\", {\n      children: `\n        .form-massively-register {\n          display: flex;\n          flex-direction: column;\n          gap: 1.15em;\n          min-width: 260px;\n        }\n        .register-label {\n          font-size: 1.04em;\n          margin-bottom: 0.13em;\n          color: #4361ee;\n          font-weight: 600;\n        }\n        .register-input, .register-select {\n          border: 1.5px solid #d4d7ef;\n          border-radius: 0.6em;\n          font-size: 1.1em;\n          padding: 0.95em 1.1em;\n          background: #f8fafd;\n          outline: none;\n          transition: border .16s;\n        }\n        .register-input:focus, .register-select:focus {\n          border-color: #4361ee;\n          background: #fff;\n        }\n        .register-btn {\n          width: 100%;\n          background: linear-gradient(90deg,#4361ee 0%,#4895ef 100%);\n          color: #fff; font-weight: 700;\n          font-size: 1.11em;\n          padding: 0.95em 0;\n          border-radius: 0.8em;\n          border: none;\n          box-shadow: 0 4px 16px 0 rgba(60,60,130,0.09);\n          cursor: pointer;\n          transition: background .17s, box-shadow .17s;\n        }\n        .register-btn:hover, .register-btn:focus {\n          background: linear-gradient(90deg,#4361ee 12%,#4895ef 100%);\n          box-shadow: 0 6px 18px 0 rgba(60,60,130,0.11);\n        }\n        .register-msg {\n          margin-top: 0.4em;\n          text-align: center;\n          font-size: 0.97em;\n          color: #e32636;\n        }\n        .register-msg.success {\n          color: #3bb668;\n        }\n        .register-role-wrap {\n          margin-top: 0.4em;\n        }\n        @media (max-width: 500px) {\n          .form-massively-register { min-width: 95vw; }\n        }\n      `\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 23,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      children: [/*#__PURE__*/_jsxDEV(\"label\", {\n        htmlFor: \"reg-username\",\n        className: \"register-label\",\n        children: \"\\uC544\\uC774\\uB514\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 82,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n        className: \"register-input\",\n        id: \"reg-username\",\n        name: \"username\",\n        autoComplete: \"username\",\n        onChange: handleChange,\n        placeholder: \"ID\",\n        required: true,\n        value: form.username\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 83,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 81,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      children: [/*#__PURE__*/_jsxDEV(\"label\", {\n        htmlFor: \"reg-password\",\n        className: \"register-label\",\n        children: \"\\uBE44\\uBC00\\uBC88\\uD638\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 95,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n        className: \"register-input\",\n        id: \"reg-password\",\n        name: \"password\",\n        type: \"password\",\n        autoComplete: \"new-password\",\n        onChange: handleChange,\n        placeholder: \"\\uBE44\\uBC00\\uBC88\\uD638\",\n        required: true,\n        value: form.password\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 96,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 94,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"register-role-wrap\",\n      children: [/*#__PURE__*/_jsxDEV(\"label\", {\n        htmlFor: \"reg-role\",\n        className: \"register-label\",\n        children: \"\\uC5ED\\uD560\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 109,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n        className: \"register-select\",\n        id: \"reg-role\",\n        name: \"role\",\n        onChange: handleChange,\n        value: form.role,\n        children: [/*#__PURE__*/_jsxDEV(\"option\", {\n          value: \"user\",\n          children: \"\\uC77C\\uBC18 \\uC0AC\\uC6A9\\uC790\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 117,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n          value: \"manager\",\n          children: \"\\uB9E4\\uB2C8\\uC800\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 118,\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: 119,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 110,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 108,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n      className: \"register-btn\",\n      type: \"submit\",\n      disabled: loading,\n      children: loading ? \"가입 중...\" : \"회원가입\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 122,\n      columnNumber: 7\n    }, this), msg && /*#__PURE__*/_jsxDEV(\"div\", {\n      className: `register-msg${msg === 'Registered' ? ' success' : ''}`,\n      children: msg === 'Registered' ? '회원가입이 완료되었습니다!' : msg\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 126,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 22,\n    columnNumber: 5\n  }, this);\n}\n_s(Register, \"Zp/XMq9VFgyQ9c83nfp0UGxHD48=\");\n_c = Register;\nexport default Register;\nvar _c;\n$RefreshReg$(_c, \"Register\");","map":{"version":3,"names":["React","useState","register","jsxDEV","_jsxDEV","Register","onSuccess","onClose","_s","form","setForm","username","password","role","msg","setMsg","loading","setLoading","handleChange","e","target","name","value","handleSubmit","preventDefault","res","onSubmit","className","children","fileName","_jsxFileName","lineNumber","columnNumber","htmlFor","id","autoComplete","onChange","placeholder","required","type","disabled","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/pages/Register.js"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { register } from '../api';\r\n\r\nfunction Register({ onSuccess, onClose }) {\r\n  const [form, setForm] = useState({ username: '', password: '', role: 'user' });\r\n  const [msg, setMsg] = useState('');\r\n  const [loading, setLoading] = useState(false);\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    setLoading(true);\r\n    setMsg('');\r\n    const res = await register(form);\r\n    setLoading(false);\r\n    setMsg(res.msg);\r\n    if (res.msg === 'Registered' && onSuccess) onSuccess();\r\n  };\r\n\r\n  return (\r\n    <form onSubmit={handleSubmit} className=\"form-massively-register\">\r\n      <style>{`\r\n        .form-massively-register {\r\n          display: flex;\r\n          flex-direction: column;\r\n          gap: 1.15em;\r\n          min-width: 260px;\r\n        }\r\n        .register-label {\r\n          font-size: 1.04em;\r\n          margin-bottom: 0.13em;\r\n          color: #4361ee;\r\n          font-weight: 600;\r\n        }\r\n        .register-input, .register-select {\r\n          border: 1.5px solid #d4d7ef;\r\n          border-radius: 0.6em;\r\n          font-size: 1.1em;\r\n          padding: 0.95em 1.1em;\r\n          background: #f8fafd;\r\n          outline: none;\r\n          transition: border .16s;\r\n        }\r\n        .register-input:focus, .register-select:focus {\r\n          border-color: #4361ee;\r\n          background: #fff;\r\n        }\r\n        .register-btn {\r\n          width: 100%;\r\n          background: linear-gradient(90deg,#4361ee 0%,#4895ef 100%);\r\n          color: #fff; font-weight: 700;\r\n          font-size: 1.11em;\r\n          padding: 0.95em 0;\r\n          border-radius: 0.8em;\r\n          border: none;\r\n          box-shadow: 0 4px 16px 0 rgba(60,60,130,0.09);\r\n          cursor: pointer;\r\n          transition: background .17s, box-shadow .17s;\r\n        }\r\n        .register-btn:hover, .register-btn:focus {\r\n          background: linear-gradient(90deg,#4361ee 12%,#4895ef 100%);\r\n          box-shadow: 0 6px 18px 0 rgba(60,60,130,0.11);\r\n        }\r\n        .register-msg {\r\n          margin-top: 0.4em;\r\n          text-align: center;\r\n          font-size: 0.97em;\r\n          color: #e32636;\r\n        }\r\n        .register-msg.success {\r\n          color: #3bb668;\r\n        }\r\n        .register-role-wrap {\r\n          margin-top: 0.4em;\r\n        }\r\n        @media (max-width: 500px) {\r\n          .form-massively-register { min-width: 95vw; }\r\n        }\r\n      `}</style>\r\n      <div>\r\n        <label htmlFor=\"reg-username\" className=\"register-label\">아이디</label>\r\n        <input\r\n          className=\"register-input\"\r\n          id=\"reg-username\"\r\n          name=\"username\"\r\n          autoComplete=\"username\"\r\n          onChange={handleChange}\r\n          placeholder=\"ID\"\r\n          required\r\n          value={form.username}\r\n        />\r\n      </div>\r\n      <div>\r\n        <label htmlFor=\"reg-password\" className=\"register-label\">비밀번호</label>\r\n        <input\r\n          className=\"register-input\"\r\n          id=\"reg-password\"\r\n          name=\"password\"\r\n          type=\"password\"\r\n          autoComplete=\"new-password\"\r\n          onChange={handleChange}\r\n          placeholder=\"비밀번호\"\r\n          required\r\n          value={form.password}\r\n        />\r\n      </div>\r\n      <div className=\"register-role-wrap\">\r\n        <label htmlFor=\"reg-role\" className=\"register-label\">역할</label>\r\n        <select\r\n          className=\"register-select\"\r\n          id=\"reg-role\"\r\n          name=\"role\"\r\n          onChange={handleChange}\r\n          value={form.role}\r\n        >\r\n          <option value=\"user\">일반 사용자</option>\r\n          <option value=\"manager\">매니저</option>\r\n          <option value=\"admin\">관리자</option>\r\n        </select>\r\n      </div>\r\n      <button className=\"register-btn\" type=\"submit\" disabled={loading}>\r\n        {loading ? \"가입 중...\" : \"회원가입\"}\r\n      </button>\r\n      {msg && (\r\n        <div className={`register-msg${msg === 'Registered' ? ' success' : ''}`}>\r\n          {msg === 'Registered' ? '회원가입이 완료되었습니다!' : msg}\r\n        </div>\r\n      )}\r\n    </form>\r\n  );\r\n}\r\nexport default Register;\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}