정의왕

Login ver1.1

1 +App.js
...\ No newline at end of file ...\ No newline at end of file
...@@ -1243,6 +1243,23 @@ ...@@ -1243,6 +1243,23 @@
1243 } 1243 }
1244 } 1244 }
1245 }, 1245 },
1246 + "@fluentui/react-component-event-listener": {
1247 + "version": "0.51.7",
1248 + "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.51.7.tgz",
1249 + "integrity": "sha512-NjVm+crN0T9A7vITL8alZeHnuV8zi2gos0nezU/2YOxaUAB9E4zKiPxt/6k5U50rJs/gj8Nu45iXxnjO41HbZg==",
1250 + "requires": {
1251 + "@babel/runtime": "^7.10.4"
1252 + }
1253 + },
1254 + "@fluentui/react-component-ref": {
1255 + "version": "0.51.7",
1256 + "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.51.7.tgz",
1257 + "integrity": "sha512-CX27jVJYaFoBCWpuWAizQZ2se137ku1dmDyn8sw+ySNJa+kkQf7LnMydiPW5K7cRdUSqUJW3eS4EjKRvVAx8xA==",
1258 + "requires": {
1259 + "@babel/runtime": "^7.10.4",
1260 + "react-is": "^16.6.3"
1261 + }
1262 + },
1246 "@gar/promisify": { 1263 "@gar/promisify": {
1247 "version": "1.1.2", 1264 "version": "1.1.2",
1248 "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", 1265 "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz",
...@@ -1873,6 +1890,11 @@ ...@@ -1873,6 +1890,11 @@
1873 } 1890 }
1874 } 1891 }
1875 }, 1892 },
1893 + "@popperjs/core": {
1894 + "version": "2.10.2",
1895 + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz",
1896 + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ=="
1897 + },
1876 "@rollup/plugin-node-resolve": { 1898 "@rollup/plugin-node-resolve": {
1877 "version": "7.1.3", 1899 "version": "7.1.3",
1878 "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", 1900 "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
...@@ -1911,6 +1933,15 @@ ...@@ -1911,6 +1933,15 @@
1911 } 1933 }
1912 } 1934 }
1913 }, 1935 },
1936 + "@semantic-ui-react/event-stack": {
1937 + "version": "3.1.2",
1938 + "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.2.tgz",
1939 + "integrity": "sha512-Yd0Qf7lPCIjzJ9bZYfurlNu2RDXT6KKSyubHfYK3WjRauhxCsq6Fk2LMRI9DEvShoEU+AsLSv3NGkqXAcVp0zg==",
1940 + "requires": {
1941 + "exenv": "^1.2.2",
1942 + "prop-types": "^15.6.2"
1943 + }
1944 + },
1914 "@sinonjs/commons": { 1945 "@sinonjs/commons": {
1915 "version": "1.8.3", 1946 "version": "1.8.3",
1916 "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", 1947 "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
...@@ -4307,6 +4338,11 @@ ...@@ -4307,6 +4338,11 @@
4307 "wrap-ansi": "^6.2.0" 4338 "wrap-ansi": "^6.2.0"
4308 } 4339 }
4309 }, 4340 },
4341 + "clsx": {
4342 + "version": "1.1.1",
4343 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
4344 + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
4345 + },
4310 "co": { 4346 "co": {
4311 "version": "4.6.0", 4347 "version": "4.6.0",
4312 "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 4348 "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
...@@ -6391,6 +6427,11 @@ ...@@ -6391,6 +6427,11 @@
6391 "strip-eof": "^1.0.0" 6427 "strip-eof": "^1.0.0"
6392 } 6428 }
6393 }, 6429 },
6430 + "exenv": {
6431 + "version": "1.2.2",
6432 + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
6433 + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50="
6434 + },
6394 "exit": { 6435 "exit": {
6395 "version": "0.1.2", 6436 "version": "0.1.2",
6396 "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 6437 "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
...@@ -9692,6 +9733,11 @@ ...@@ -9692,6 +9733,11 @@
9692 } 9733 }
9693 } 9734 }
9694 }, 9735 },
9736 + "jquery": {
9737 + "version": "3.6.0",
9738 + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
9739 + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
9740 + },
9695 "js-base64": { 9741 "js-base64": {
9696 "version": "2.6.4", 9742 "version": "2.6.4",
9697 "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", 9743 "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
...@@ -9834,6 +9880,11 @@ ...@@ -9834,6 +9880,11 @@
9834 "object.assign": "^4.1.2" 9880 "object.assign": "^4.1.2"
9835 } 9881 }
9836 }, 9882 },
9883 + "keyboard-key": {
9884 + "version": "1.1.0",
9885 + "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz",
9886 + "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ=="
9887 + },
9837 "killable": { 9888 "killable": {
9838 "version": "1.0.1", 9889 "version": "1.0.1",
9839 "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", 9890 "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
...@@ -9923,6 +9974,11 @@ ...@@ -9923,6 +9974,11 @@
9923 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 9974 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
9924 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 9975 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
9925 }, 9976 },
9977 + "lodash-es": {
9978 + "version": "4.17.21",
9979 + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
9980 + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
9981 + },
9926 "lodash._reinterpolate": { 9982 "lodash._reinterpolate": {
9927 "version": "3.0.0", 9983 "version": "3.0.0",
9928 "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 9984 "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
...@@ -12807,11 +12863,25 @@ ...@@ -12807,11 +12863,25 @@
12807 "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", 12863 "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz",
12808 "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" 12864 "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew=="
12809 }, 12865 },
12866 + "react-fast-compare": {
12867 + "version": "3.2.0",
12868 + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
12869 + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
12870 + },
12810 "react-is": { 12871 "react-is": {
12811 "version": "16.13.1", 12872 "version": "16.13.1",
12812 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 12873 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
12813 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 12874 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
12814 }, 12875 },
12876 + "react-popper": {
12877 + "version": "2.2.5",
12878 + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz",
12879 + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==",
12880 + "requires": {
12881 + "react-fast-compare": "^3.0.1",
12882 + "warning": "^4.0.2"
12883 + }
12884 + },
12815 "react-refresh": { 12885 "react-refresh": {
12816 "version": "0.8.3", 12886 "version": "0.8.3",
12817 "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", 12887 "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
...@@ -13874,6 +13944,34 @@ ...@@ -13874,6 +13944,34 @@
13874 "node-forge": "^0.10.0" 13944 "node-forge": "^0.10.0"
13875 } 13945 }
13876 }, 13946 },
13947 + "semantic-ui-css": {
13948 + "version": "2.4.1",
13949 + "resolved": "https://registry.npmjs.org/semantic-ui-css/-/semantic-ui-css-2.4.1.tgz",
13950 + "integrity": "sha512-Pkp0p9oWOxlH0kODx7qFpIRYpK1T4WJOO4lNnpNPOoWKCrYsfHqYSKgk5fHfQtnWnsAKy7nLJMW02bgDWWFZFg==",
13951 + "requires": {
13952 + "jquery": "x.*"
13953 + }
13954 + },
13955 + "semantic-ui-react": {
13956 + "version": "2.0.4",
13957 + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-2.0.4.tgz",
13958 + "integrity": "sha512-nTlIN/K1iEA7ybut2ICBlPfAushs2afkyUuwQ6vMlYpvLjnnUgN+JKhhoq47MlRuQ2ekdMDZ9OgctViTbDyBaQ==",
13959 + "requires": {
13960 + "@babel/runtime": "^7.10.5",
13961 + "@fluentui/react-component-event-listener": "~0.51.6",
13962 + "@fluentui/react-component-ref": "~0.51.6",
13963 + "@popperjs/core": "^2.6.0",
13964 + "@semantic-ui-react/event-stack": "^3.1.2",
13965 + "clsx": "^1.1.1",
13966 + "keyboard-key": "^1.1.0",
13967 + "lodash": "^4.17.21",
13968 + "lodash-es": "^4.17.21",
13969 + "prop-types": "^15.7.2",
13970 + "react-is": "^16.8.6 || ^17.0.0",
13971 + "react-popper": "^2.2.4",
13972 + "shallowequal": "^1.1.0"
13973 + }
13974 + },
13877 "semver": { 13975 "semver": {
13878 "version": "7.3.2", 13976 "version": "7.3.2",
13879 "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 13977 "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
...@@ -14035,6 +14133,11 @@ ...@@ -14035,6 +14133,11 @@
14035 "safe-buffer": "^5.0.1" 14133 "safe-buffer": "^5.0.1"
14036 } 14134 }
14037 }, 14135 },
14136 + "shallowequal": {
14137 + "version": "1.1.0",
14138 + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
14139 + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
14140 + },
14038 "shebang-command": { 14141 "shebang-command": {
14039 "version": "1.2.0", 14142 "version": "1.2.0",
14040 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 14143 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
...@@ -15553,6 +15656,14 @@ ...@@ -15553,6 +15656,14 @@
15553 "makeerror": "1.0.12" 15656 "makeerror": "1.0.12"
15554 } 15657 }
15555 }, 15658 },
15659 + "warning": {
15660 + "version": "4.0.3",
15661 + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
15662 + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
15663 + "requires": {
15664 + "loose-envify": "^1.0.0"
15665 + }
15666 + },
15556 "watchpack": { 15667 "watchpack": {
15557 "version": "1.7.5", 15668 "version": "1.7.5",
15558 "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", 15669 "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
11 "react-dom": "^17.0.2", 11 "react-dom": "^17.0.2",
12 "react-router-dom": "^6.0.2", 12 "react-router-dom": "^6.0.2",
13 "react-scripts": "4.0.3", 13 "react-scripts": "4.0.3",
14 + "semantic-ui-css": "^2.4.1",
15 + "semantic-ui-react": "^2.0.4",
14 "web-vitals": "^1.1.2" 16 "web-vitals": "^1.1.2"
15 }, 17 },
16 "scripts": { 18 "scripts": {
......
1 import React, { useState } from "react"; 1 import React, { useState } from "react";
2 import "../style/LoginPage.scss"; 2 import "../style/LoginPage.scss";
3 +import { Icon, Input } from "semantic-ui-react"
3 4
4 function LoginPage() { 5 function LoginPage() {
5 const [Id, setId] = useState(""); 6 const [Id, setId] = useState("");
...@@ -22,19 +23,28 @@ function LoginPage() { ...@@ -22,19 +23,28 @@ function LoginPage() {
22 <form onSubmit={onSubmitHandler}> 23 <form onSubmit={onSubmitHandler}>
23 <h1>Tunnel</h1> 24 <h1>Tunnel</h1>
24 <div className="input-area"> 25 <div className="input-area">
25 - <input type="id" value={Id} autoComplete="off" onChange={onIdHandler} /> 26 + <Input
26 - <label htmlFor="id">USER ID</label> 27 + icon={<Icon name='at'/>}
28 + iconPosition='left'
29 + placeholder="Email"
30 + type="text"
31 + value={Id}
32 + autoComplete="off"
33 + onChange={onIdHandler}/>
27 </div> 34 </div>
28 <div className="input-area"> 35 <div className="input-area">
29 - <input 36 + <Input
37 + icon={<Icon name='lock'/>}
38 + iconPosition='left'
39 + placeholder="Password"
30 type="password" 40 type="password"
31 value={Password} 41 value={Password}
32 - onChange={onPasswordHandler} 42 + autoComplete="off"
33 - /> 43 + onChange={onPasswordHandler}/>
34 - <label htmlFor="password">USER PASSWORD</label>
35 </div> 44 </div>
36 <div className="btn-area"> 45 <div className="btn-area">
37 - <button >Login</button> 46 + <button className="login-btn" >Login</button>
47 + <button className="register-btn" >Register</button>
38 </div> 48 </div>
39 </form> 49 </form>
40 </div> 50 </div>
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
8 justify-content: center; 8 justify-content: center;
9 align-items: center; 9 align-items: center;
10 height: 100vh; 10 height: 100vh;
11 - background-image: url("../images/register_background.jpg"); 11 + background-image: url("../images/login_background.png");
12 background-repeat: no-repeat; 12 background-repeat: no-repeat;
13 - background-size: cover; 13 + background-position: center;
14 .login-form { 14 .login-form {
15 display: flex; 15 display: flex;
16 justify-content: space-around; 16 justify-content: space-around;
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
21 box-shadow: 0px 0px 20px #000; 21 box-shadow: 0px 0px 20px #000;
22 } 22 }
23 h1 { 23 h1 {
24 - font-size: 32px; 24 + font-size: 40px;
25 - color: black; 25 + color: white;
26 font-weight: bold; 26 font-weight: bold;
27 text-align: center; 27 text-align: center;
28 margin-bottom: 60px ; 28 margin-bottom: 60px ;
...@@ -31,22 +31,18 @@ ...@@ -31,22 +31,18 @@
31 display: flex; 31 display: flex;
32 justify-content: center; 32 justify-content: center;
33 align-items: center; 33 align-items: center;
34 - width: 250px; 34 + width: 400px;
35 position: relative; 35 position: relative;
36 margin-top: 20px; 36 margin-top: 20px;
37 font-weight: bold; 37 font-weight: bold;
38 font-size: medium; 38 font-size: medium;
39 39
40 - &:first-child {
41 - margin-top: 0;
42 - }
43 -
44 input { 40 input {
45 - width: 100%; 41 + width: 75%;
46 - padding: 20px 10px 10px; 42 + padding: 15px .8em .8em;
47 background-color: transparent; 43 background-color: transparent;
48 - border: none; 44 + border: 2px solid white;
49 - border-bottom: 1px solid #999; 45 + border-radius: 30px;
50 font-size: 18px; 46 font-size: 18px;
51 color: white; 47 color: white;
52 outline: none; 48 outline: none;
...@@ -62,17 +58,28 @@ ...@@ -62,17 +58,28 @@
62 } 58 }
63 .btn-area { 59 .btn-area {
64 display: flex; 60 display: flex;
65 - justify-content: center; 61 + justify-content: space-evenly;
66 - margin-top: 20px; 62 + margin-top: 30px;
67 63
68 - button { 64 + .login-btn {
69 - width: 50%; 65 + width: 150px;
70 - height: 40px; 66 + height: 50px;
71 - background: slateblue; 67 + background-color: transparent;
68 + font-size: 20px;
69 + color: white;
70 + border: 2px solid white;
71 + font-weight: bold;
72 + border-radius: 25px;
73 + cursor: pointer;
74 + }
75 + .register-btn {
76 + width: 150px;
77 + height: 50px;
78 + background-color: transparent;
72 font-size: 20px; 79 font-size: 20px;
73 color: white; 80 color: white;
81 + border: 2px solid white;
74 font-weight: bold; 82 font-weight: bold;
75 - border: none;
76 border-radius: 25px; 83 border-radius: 25px;
77 cursor: pointer; 84 cursor: pointer;
78 } 85 }
......
...@@ -2,7 +2,7 @@ import React from 'react'; ...@@ -2,7 +2,7 @@ import React from 'react';
2 import ReactDOM from 'react-dom'; 2 import ReactDOM from 'react-dom';
3 import './index.css'; 3 import './index.css';
4 import App from './App'; 4 import App from './App';
5 - 5 +import 'semantic-ui-css/semantic.min.css'
6 6
7 ReactDOM.render( 7 ReactDOM.render(
8 <React.StrictMode> 8 <React.StrictMode>
......