Merge branch 'login' into 'master'
Login UI See merge request !1
Showing
24 changed files
with
339 additions
and
59 deletions
turnel_FE/.idea/.name
0 → 100644
1 | +App.js | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | <component name="InspectionProjectProfileManager"> | 1 | <component name="InspectionProjectProfileManager"> |
2 | <profile version="1.0"> | 2 | <profile version="1.0"> |
3 | <option name="myName" value="Project Default" /> | 3 | <option name="myName" value="Project Default" /> |
4 | + <inspection_tool class="DuplicatedCode" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> | ||
4 | <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" /> | 5 | <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" /> |
5 | </profile> | 6 | </profile> |
6 | </component> | 7 | </component> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <project version="4"> | 2 | <project version="4"> |
3 | <component name="VcsDirectoryMappings"> | 3 | <component name="VcsDirectoryMappings"> |
4 | + <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> | ||
4 | <mapping directory="$PROJECT_DIR$" vcs="Git" /> | 5 | <mapping directory="$PROJECT_DIR$" vcs="Git" /> |
5 | </component> | 6 | </component> |
6 | </project> | 7 | </project> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
This diff is collapsed. Click to expand it.
... | @@ -6,9 +6,13 @@ | ... | @@ -6,9 +6,13 @@ |
6 | "@testing-library/jest-dom": "^5.15.0", | 6 | "@testing-library/jest-dom": "^5.15.0", |
7 | "@testing-library/react": "^11.2.7", | 7 | "@testing-library/react": "^11.2.7", |
8 | "@testing-library/user-event": "^12.8.3", | 8 | "@testing-library/user-event": "^12.8.3", |
9 | + "node-sass": "^6.0.1", | ||
9 | "react": "^17.0.2", | 10 | "react": "^17.0.2", |
10 | "react-dom": "^17.0.2", | 11 | "react-dom": "^17.0.2", |
12 | + "react-router-dom": "^6.0.2", | ||
11 | "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", | ||
12 | "web-vitals": "^1.1.2" | 16 | "web-vitals": "^1.1.2" |
13 | }, | 17 | }, |
14 | "scripts": { | 18 | "scripts": { | ... | ... |
turnel_FE/src/App.css
deleted
100644 → 0
1 | -.App { | ||
2 | - text-align: center; | ||
3 | -} | ||
4 | - | ||
5 | -.App-logo { | ||
6 | - height: 40vmin; | ||
7 | - pointer-events: none; | ||
8 | -} | ||
9 | - | ||
10 | -@media (prefers-reduced-motion: no-preference) { | ||
11 | - .App-logo { | ||
12 | - animation: App-logo-spin infinite 20s linear; | ||
13 | - } | ||
14 | -} | ||
15 | - | ||
16 | -.App-header { | ||
17 | - background-color: #282c34; | ||
18 | - min-height: 100vh; | ||
19 | - display: flex; | ||
20 | - flex-direction: column; | ||
21 | - align-items: center; | ||
22 | - justify-content: center; | ||
23 | - font-size: calc(10px + 2vmin); | ||
24 | - color: white; | ||
25 | -} | ||
26 | - | ||
27 | -.App-link { | ||
28 | - color: #61dafb; | ||
29 | -} | ||
30 | - | ||
31 | -@keyframes App-logo-spin { | ||
32 | - from { | ||
33 | - transform: rotate(0deg); | ||
34 | - } | ||
35 | - to { | ||
36 | - transform: rotate(360deg); | ||
37 | - } | ||
38 | -} |
1 | -import logo from './logo.svg'; | 1 | +//import React, {useState} from "react"; |
2 | -import './App.css'; | 2 | +import {BrowserRouter as Router, Route, Routes, Link} from "react-router-dom"; |
3 | - | 3 | +import LandingPage from "./component/views/LandingPage/LandingPage"; |
4 | -function App() { | 4 | +import LoginPage from "./component/views/LoginPage/LoginPage"; |
5 | +import RegisterPage from "./component/views/RegisterPage/RegisterPage"; | ||
6 | +import "./static/fonts/font.css"; | ||
7 | +function App () { | ||
5 | return ( | 8 | return ( |
6 | - <div className="App"> | 9 | + <Router> |
7 | - <header className="App-header"> | 10 | + <div> |
8 | - <img src={logo} className="App-logo" alt="logo" /> | 11 | + {} |
9 | - <p> | 12 | + <Routes> |
10 | - Edit <code>src/App.js</code> and save to reload. | 13 | + <Route exact path = "/" element={<LandingPage/>}/> |
11 | - </p> | 14 | + <Route exact path = "/login" element={<LoginPage/>}/> |
12 | - <a | 15 | + <Route exact path = "/register" element={<RegisterPage/>}/> |
13 | - className="App-link" | 16 | + </Routes> |
14 | - href="https://reactjs.org" | 17 | + </div> |
15 | - target="_blank" | 18 | + </Router> |
16 | - rel="noopener noreferrer" | ||
17 | - > | ||
18 | - Learn React | ||
19 | - </a> | ||
20 | - </header> | ||
21 | - </div> | ||
22 | ); | 19 | ); |
23 | } | 20 | } |
24 | 21 | ... | ... |
1 | +import React, { useState } from "react"; | ||
2 | +import "../style/LoginPage.scss"; | ||
3 | +import { Icon, Input } from "semantic-ui-react" | ||
4 | + | ||
5 | +function LoginPage() { | ||
6 | + const [Email, setEmail] = useState(""); | ||
7 | + const [Password, setPassword] = useState(""); | ||
8 | + | ||
9 | + const onIdHandler = (event) => { | ||
10 | + setEmail(event.currentTarget.value); | ||
11 | + }; | ||
12 | + const onPasswordHandler = (event) => { | ||
13 | + setPassword(event.currentTarget.value); | ||
14 | + }; | ||
15 | + const onSubmitHandler = (event) => { | ||
16 | + event.preventDefault(); | ||
17 | + console.log("Email", Email); | ||
18 | + console.log("Password", Password); | ||
19 | + }; | ||
20 | + return ( | ||
21 | + <div id="body"> | ||
22 | + <div className="login-form"> | ||
23 | + <form onSubmit={onSubmitHandler}> | ||
24 | + <h1>Tunnel</h1> | ||
25 | + <div className="input-area"> | ||
26 | + <Input | ||
27 | + icon={<Icon name='at'/>} | ||
28 | + iconPosition='left' | ||
29 | + placeholder="Email" | ||
30 | + type="text" | ||
31 | + value={Email} | ||
32 | + autoComplete="off" | ||
33 | + onChange={onIdHandler}/> | ||
34 | + </div> | ||
35 | + <div className="input-area"> | ||
36 | + <Input | ||
37 | + icon={<Icon name='lock'/>} | ||
38 | + iconPosition='left' | ||
39 | + placeholder="Password" | ||
40 | + type="password" | ||
41 | + value={Password} | ||
42 | + autoComplete="off" | ||
43 | + onChange={onPasswordHandler}/> | ||
44 | + </div> | ||
45 | + <div className="btn-area"> | ||
46 | + <button className="login-btn" >Login</button> | ||
47 | + <button className="register-btn" >Register</button> | ||
48 | + </div> | ||
49 | + </form> | ||
50 | + </div> | ||
51 | + </div> | ||
52 | + ); | ||
53 | +} | ||
54 | + | ||
55 | +export default LoginPage; |
1 | +import React, { useState } from "react"; | ||
2 | +import "../style/RegisterPage.scss"; | ||
3 | +import { Icon, Input } from "semantic-ui-react" | ||
4 | + | ||
5 | +function RegisterPage() { | ||
6 | + const [Email, setEmail] = useState(""); | ||
7 | + const [Password, setPassword] = useState(""); | ||
8 | + | ||
9 | + const onIdHandler = (event) => { | ||
10 | + setEmail(event.currentTarget.value); | ||
11 | + }; | ||
12 | + const onPasswordHandler = (event) => { | ||
13 | + setPassword(event.currentTarget.value); | ||
14 | + }; | ||
15 | + const onSubmitHandler = (event) => { | ||
16 | + event.preventDefault(); | ||
17 | + console.log("Email",Email); | ||
18 | + console.log("Password", Password); | ||
19 | + }; | ||
20 | + return ( | ||
21 | + <div id="body"> | ||
22 | + <div className="register-form"> | ||
23 | + <form onSubmit={onSubmitHandler}> | ||
24 | + <h1>Tunnel</h1> | ||
25 | + <div className="input-area"> | ||
26 | + <Input | ||
27 | + icon={<Icon name='at'/>} | ||
28 | + iconPosition='left' | ||
29 | + placeholder="Email" | ||
30 | + type="text" | ||
31 | + value={Email} | ||
32 | + autoComplete="off" | ||
33 | + onChange={onIdHandler}/> | ||
34 | + </div> | ||
35 | + <div className="input-area"> | ||
36 | + <Input | ||
37 | + icon={<Icon name='lock'/>} | ||
38 | + iconPosition='left' | ||
39 | + placeholder="Password" | ||
40 | + type="password" | ||
41 | + value={Password} | ||
42 | + autoComplete="off" | ||
43 | + onChange={onPasswordHandler}/> | ||
44 | + </div> | ||
45 | + <div className="btn-area"> | ||
46 | + <button className="register-btn" >Register</button> | ||
47 | + </div> | ||
48 | + </form> | ||
49 | + </div> | ||
50 | + </div> | ||
51 | + ); | ||
52 | +} | ||
53 | + | ||
54 | +export default RegisterPage; |
141 KB
109 KB
101 KB
40.1 KB
1 | +* { | ||
2 | + margin: 0; | ||
3 | + padding: 0; | ||
4 | + box-sizing: border-box; | ||
5 | +} | ||
6 | +#body{ | ||
7 | + display: flex; | ||
8 | + justify-content: center; | ||
9 | + align-items: center; | ||
10 | + height: 100vh; | ||
11 | + background-image: url("../images/login_background.png"); | ||
12 | + background-repeat: no-repeat; | ||
13 | + background-position: center; | ||
14 | + .login-form { | ||
15 | + display: flex; | ||
16 | + justify-content: space-around; | ||
17 | + align-items: center; | ||
18 | + flex-direction: row; | ||
19 | + width: 500px; | ||
20 | + height: 620px; | ||
21 | + box-shadow: 0px 0px 20px #000; | ||
22 | + } | ||
23 | + h1 { | ||
24 | + font-size: 40px; | ||
25 | + color: white; | ||
26 | + font-weight: bold; | ||
27 | + text-align: center; | ||
28 | + margin-bottom: 60px ; | ||
29 | + } | ||
30 | + .input-area { | ||
31 | + display: flex; | ||
32 | + justify-content: center; | ||
33 | + align-items: center; | ||
34 | + width: 400px; | ||
35 | + position: relative; | ||
36 | + margin-top: 20px; | ||
37 | + font-weight: bold; | ||
38 | + font-size: medium; | ||
39 | + | ||
40 | + input { | ||
41 | + width: 75%; | ||
42 | + padding: 15px .8em .8em; | ||
43 | + background-color: transparent; | ||
44 | + border: 2px solid white; | ||
45 | + border-radius: 30px; | ||
46 | + font-size: 18px; | ||
47 | + color: white; | ||
48 | + outline: none; | ||
49 | + } | ||
50 | + | ||
51 | + label { | ||
52 | + position: absolute; | ||
53 | + left: 10px; | ||
54 | + top: -2px; | ||
55 | + font-size: 14px; | ||
56 | + color: white; | ||
57 | + } | ||
58 | + } | ||
59 | + .btn-area { | ||
60 | + display: flex; | ||
61 | + justify-content: space-evenly; | ||
62 | + margin-top: 30px; | ||
63 | + | ||
64 | + .login-btn { | ||
65 | + width: 150px; | ||
66 | + height: 50px; | ||
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; | ||
79 | + font-size: 20px; | ||
80 | + color: white; | ||
81 | + border: 2px solid white; | ||
82 | + font-weight: bold; | ||
83 | + border-radius: 25px; | ||
84 | + cursor: pointer; | ||
85 | + } | ||
86 | + } | ||
87 | +} | ||
88 | + |
1 | +* { | ||
2 | + margin: 0; | ||
3 | + padding: 0; | ||
4 | + box-sizing: border-box; | ||
5 | +} | ||
6 | +#body{ | ||
7 | + display: flex; | ||
8 | + justify-content: center; | ||
9 | + align-items: center; | ||
10 | + height: 100vh; | ||
11 | + background-image: url("../images/login_background.png"); | ||
12 | + background-repeat: no-repeat; | ||
13 | + background-position: center; | ||
14 | + .register-form { | ||
15 | + display: flex; | ||
16 | + justify-content: space-around; | ||
17 | + align-items: center; | ||
18 | + flex-direction: row; | ||
19 | + width: 500px; | ||
20 | + height: 620px; | ||
21 | + box-shadow: 0px 0px 20px #000; | ||
22 | + } | ||
23 | + h1 { | ||
24 | + font-size: 40px; | ||
25 | + color: white; | ||
26 | + font-weight: bold; | ||
27 | + text-align: center; | ||
28 | + margin-bottom: 60px ; | ||
29 | + } | ||
30 | + .input-area { | ||
31 | + display: flex; | ||
32 | + justify-content: center; | ||
33 | + align-items: center; | ||
34 | + width: 400px; | ||
35 | + position: relative; | ||
36 | + margin-top: 20px; | ||
37 | + font-weight: bold; | ||
38 | + font-size: medium; | ||
39 | + | ||
40 | + input { | ||
41 | + width: 75%; | ||
42 | + padding: 15px .8em .8em; | ||
43 | + background-color: transparent; | ||
44 | + border: 2px solid white; | ||
45 | + border-radius: 30px; | ||
46 | + font-size: 18px; | ||
47 | + color: white; | ||
48 | + outline: none; | ||
49 | + } | ||
50 | + | ||
51 | + label { | ||
52 | + position: absolute; | ||
53 | + left: 10px; | ||
54 | + top: -2px; | ||
55 | + font-size: 14px; | ||
56 | + color: white; | ||
57 | + } | ||
58 | + } | ||
59 | + .btn-area { | ||
60 | + display: flex; | ||
61 | + justify-content: space-evenly; | ||
62 | + margin-top: 30px; | ||
63 | + | ||
64 | + .register-btn { | ||
65 | + width: 150px; | ||
66 | + height: 50px; | ||
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 | + } | ||
76 | +} | ||
77 | + |
... | @@ -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> | ... | ... |
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
turnel_FE/src/static/fonts/font.css
0 → 100644
1 | +@font-face { | ||
2 | + font-family: NotoSansKR-Black; | ||
3 | + src: url("./NotoSansKR-Black.eot"); | ||
4 | +} | ||
5 | + | ||
6 | +@font-face { | ||
7 | + font-family: NotoSansKR-Bold; | ||
8 | + src: url("./NotoSansKR-Bold.eot"); | ||
9 | +} | ||
10 | + | ||
11 | +@font-face { | ||
12 | + font-family: NotoSansKR-Light; | ||
13 | + src: url("./NotoSansKR-Light.eot"); | ||
14 | +} | ||
15 | + | ||
16 | +@font-face { | ||
17 | + font-family: NotoSansKR-Medium; | ||
18 | + src: url("./NotoSansKR-Medium.eot"); | ||
19 | +} | ||
20 | + | ||
21 | +@font-face { | ||
22 | + font-family: NotoSansKR-Regular; | ||
23 | + src: url("./NotoSansKR-Regular.eot"); | ||
24 | +} | ||
25 | + | ||
26 | +@font-face { | ||
27 | + font-family: NotoSansKR-Thin; | ||
28 | + src: url("./NotoSansKR-Thin.eot"); | ||
29 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment