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 ( +
+
+ Connectez-vous pour accéder à votre espace. +
+
+ + +
+
+ + +
+
+ +
+
+ ) +} + +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 ( -
- -
-
- Connectez-vous pour accéder à votre espace. -
-
- - -
-
- - -
-
- -
-
-
- ) -} - -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;