diff --git a/src/components/LoginForm/LonginForm.tsx b/src/components/LoginForm/LonginForm.tsx
new file mode 100644
index 0000000..1819808
--- /dev/null
+++ b/src/components/LoginForm/LonginForm.tsx
@@ -0,0 +1,39 @@
+import React, { memo, useCallback } from "react"
+import styles from "./styles.module.scss"
+
+const LoginForm = (): JSX.Element => {
+ const onSubmit = useCallback((event: React.SyntheticEvent): void => {
+ event.preventDefault()
+ const target = event.target as typeof event.target & {
+ email: { value: string }
+ password: { value: string }
+ }
+ const email = target.email.value
+ const password = target.password.value
+
+ console.log("email and password checked", email, password)
+
+ // call service with email & password
+ }, [])
+
+ return (
+
+ )
+}
+
+export default memo(LoginForm)
diff --git a/src/components/LoginForm/styles.module.scss b/src/components/LoginForm/styles.module.scss
new file mode 100755
index 0000000..b7ec2d9
--- /dev/null
+++ b/src/components/LoginForm/styles.module.scss
@@ -0,0 +1,26 @@
+@import "../../theme/variables";
+@import "../../theme/mixins";
+
+.loginIntro {
+ margin-bottom: 10px;
+}
+
+.formLine {
+ padding: 5px 0;
+
+ label {
+ display: block;
+ margin-left: 5px;
+ }
+ input {
+ width: 100%;
+ border: 1px solid #333;
+ border-radius: 4px;
+ }
+}
+
+.formButtons {
+ margin-top: 10px;
+ padding: 5px 0;
+ text-align: center;
+}
diff --git a/src/pages/Login/Login.tsx b/src/pages/Login/Login.tsx
deleted file mode 100644
index c87a09b..0000000
--- a/src/pages/Login/Login.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { RouteComponentProps } from "react-router-dom"
-import React, { memo, useCallback } from "react"
-import { Helmet } from "react-helmet"
-import styles from "./styles.module.scss"
-
-export type Props = RouteComponentProps
-
-const Login: React.FC = (): JSX.Element => {
- const onSubmit = useCallback((event: React.SyntheticEvent): void => {
- event.preventDefault()
- const target = event.target as typeof event.target & {
- email: { value: string }
- password: { value: string }
- }
- const email = target.email.value
- const password = target.password.value
-
- console.log("email and password checked", email, password)
-
- // call service with email & password
- }, [])
-
- return (
-
- )
-}
-
-export default memo(Login)
diff --git a/src/pages/Login/LoginPage.tsx b/src/pages/Login/LoginPage.tsx
new file mode 100644
index 0000000..1147f92
--- /dev/null
+++ b/src/pages/Login/LoginPage.tsx
@@ -0,0 +1,18 @@
+import { RouteComponentProps } from "react-router-dom"
+import React, { memo } from "react"
+import { Helmet } from "react-helmet"
+import styles from "./styles.module.scss"
+import LoginForm from "../../components/LoginForm/LonginForm"
+
+export type Props = RouteComponentProps
+
+const LoginPage: React.FC = (): JSX.Element => (
+
+)
+
+export default memo(LoginPage)
diff --git a/src/pages/Login/index.tsx b/src/pages/Login/index.tsx
index 7992e71..1822c33 100755
--- a/src/pages/Login/index.tsx
+++ b/src/pages/Login/index.tsx
@@ -1,14 +1,14 @@
import loadable from "@loadable/component"
import { Loading, ErrorBoundary } from "../../components"
-import { Props } from "./Login"
+import { Props } from "./LoginPage"
-const Login = loadable(() => import("./Login"), {
+const LoginPage = loadable(() => import("./LoginPage"), {
fallback: ,
})
export default (props: Props): JSX.Element => (
-
+
)
diff --git a/src/pages/Login/styles.module.scss b/src/pages/Login/styles.module.scss
index 78bc95b..ae21b75 100755
--- a/src/pages/Login/styles.module.scss
+++ b/src/pages/Login/styles.module.scss
@@ -1,36 +1,9 @@
-@import "../../theme/variables";
@import "../../theme/mixins";
-.Login {
- display: flex;
- justify-content: center;
- align-content: center;
+.loginPage {
+ @include page-wrapper-center;
}
-.form {
+.loginContent {
@include page-content-wrapper;
}
-
-.LoginIntro {
- margin-bottom: 10px;
-}
-
-.formLine {
- padding: 5px 0;
-
- label {
- display: block;
- margin-left: 5px;
- }
- input {
- width: 100%;
- border: 1px solid #333;
- border-radius: 4px;
- }
-}
-
-.formButtons {
- margin-top: 10px;
- padding: 5px 0;
- text-align: center;
-}
diff --git a/src/theme/mixins.scss b/src/theme/mixins.scss
index 6af9f45..098eb7f 100644
--- a/src/theme/mixins.scss
+++ b/src/theme/mixins.scss
@@ -6,6 +6,16 @@
}
}
+@mixin flex-center {
+ display: flex;
+ justify-content: center;
+ align-content: center;
+}
+
+@mixin page-wrapper-center {
+ @include flex-center;
+}
+
@mixin page-content-wrapper {
margin: 10px;
padding: 10px;