diff --git a/src/new-frontend/index.html b/src/new-frontend/index.html
index e4b78ea..39bc239 100644
--- a/src/new-frontend/index.html
+++ b/src/new-frontend/index.html
@@ -1,13 +1,14 @@
-
+
- Vite + React + TS
+ Full Stack Project Generator
+
-
+
diff --git a/src/new-frontend/package.json b/src/new-frontend/package.json
index bc9ce06..e1187f3 100644
--- a/src/new-frontend/package.json
+++ b/src/new-frontend/package.json
@@ -11,10 +11,18 @@
"generate-client": "openapi --input ./openapi.json --useOptions --useUnionTypes --output ./src/client --client axios --exportSchemas true"
},
"dependencies": {
+ "@chakra-ui/icons": "2.1.1",
+ "@chakra-ui/react": "2.8.2",
+ "@emotion/react": "11.11.3",
+ "@emotion/styled": "11.11.0",
+ "@types/react-router-dom": "5.3.3",
"axios": "1.6.2",
"form-data": "4.0.0",
+ "framer-motion": "10.16.16",
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "react-hook-form": "7.49.3",
+ "react-router-dom": "6.21.1"
},
"devDependencies": {
"@types/node": "20.10.5",
diff --git a/src/new-frontend/src/App.tsx b/src/new-frontend/src/App.tsx
index 6893d8c..db440f5 100644
--- a/src/new-frontend/src/App.tsx
+++ b/src/new-frontend/src/App.tsx
@@ -1,11 +1,16 @@
-import './App.css'
+import { BrowserRouter, Route, Routes } from 'react-router-dom';
+
+import Login from './pages/auth/Login';
+import RecoverPassword from './pages/auth/RecoverPassword';
function App() {
-
-
return (
- <>
- >
+
+
+ } />
+ } />
+
+
)
}
diff --git a/src/new-frontend/src/assets/images/fastapi-logo.png b/src/new-frontend/src/assets/images/fastapi-logo.png
new file mode 100644
index 0000000..57d9eec
Binary files /dev/null and b/src/new-frontend/src/assets/images/fastapi-logo.png differ
diff --git a/src/new-frontend/src/assets/images/favicon.png b/src/new-frontend/src/assets/images/favicon.png
new file mode 100644
index 0000000..b3dcdd3
Binary files /dev/null and b/src/new-frontend/src/assets/images/favicon.png differ
diff --git a/src/new-frontend/src/main.tsx b/src/new-frontend/src/main.tsx
index 3d7150d..f9ebbd9 100644
--- a/src/new-frontend/src/main.tsx
+++ b/src/new-frontend/src/main.tsx
@@ -1,10 +1,21 @@
-import React from 'react'
-import ReactDOM from 'react-dom/client'
-import App from './App.tsx'
-import './index.css'
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+
+import { ChakraProvider } from '@chakra-ui/react';
+
+import App from './App';
+import { OpenAPI } from './client';
+
+OpenAPI.BASE = import.meta.env.VITE_API_URL;
+OpenAPI.TOKEN = async () => {
+ return localStorage.getItem('access_token') || '';
+}
ReactDOM.createRoot(document.getElementById('root')!).render(
-
+
+
+
,
)
+
diff --git a/src/new-frontend/src/pages/auth/Login.tsx b/src/new-frontend/src/pages/auth/Login.tsx
new file mode 100644
index 0000000..112ae1c
--- /dev/null
+++ b/src/new-frontend/src/pages/auth/Login.tsx
@@ -0,0 +1,72 @@
+import React from "react";
+
+import { ViewIcon, ViewOffIcon } from "@chakra-ui/icons";
+import { Button, Center, Container, FormControl, Icon, Image, Input, InputGroup, InputRightElement, Link, useBoolean } from "@chakra-ui/react";
+import { SubmitHandler, useForm } from "react-hook-form";
+import { Link as ReactRouterLink, useNavigate } from "react-router-dom";
+
+import Logo from "../../assets/images/fastapi-logo.png";
+import { LoginService } from "../../client";
+import { Body_login_login_access_token as AccessToken } from "../../client/models/Body_login_login_access_token";
+
+const Login: React.FC = () => {
+ const [show, setShow] = useBoolean();
+ const navigate = useNavigate();
+ const { register, handleSubmit } = useForm();
+
+ const onSubmit: SubmitHandler = async (data) => {
+ const response = await LoginService.loginAccessToken({
+ formData: data,
+ });
+ localStorage.setItem("access_token", response.access_token);
+ navigate("/");
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {show ? : }
+
+
+
+
+
+ Forgot password?
+
+
+
+
+
+ );
+};
+
+export default Login;