From aa6f0e854b7edb8f11da6ab0b945e90965c1f5d7 Mon Sep 17 00:00:00 2001
From: "Embruch, Gerd" <gerd.embruch@uni-hamburg.de>
Date: Wed, 7 Aug 2024 18:27:25 +0200
Subject: [PATCH] organized imports

---
 src/App.jsx                                |   4 +-
 src/components/boxes/ConfirmBox.jsx        |   6 +-
 src/components/chat/Message.jsx            |   1 -
 src/components/chat/PromptInput.jsx        |   6 +-
 src/components/form/FlatListEdit copy.jsx  | 153 ---------------------
 src/components/form/Select.jsx             |   6 +-
 src/contexts/Chat/ChatState.jsx            |   6 +-
 src/main.jsx                               |   2 +-
 src/pages/Config/AI/NewModel.jsx           |  16 +--
 src/pages/Config/Config.jsx                |   2 +-
 src/pages/Config/Embeddings.jsx            |   6 +-
 src/pages/Config/Embeddings/Delete.jsx     |   7 +-
 src/pages/Config/Embeddings/Update.jsx     |  11 +-
 src/pages/Onboarding/Onboarding.jsx        |   2 +-
 src/pages/User/ChangeMail.jsx              |  87 ------------
 src/pages/User/ForgotPassword.jsx          |   6 +-
 src/pages/User/Login.jsx                   |  14 +-
 src/pages/User/RequestChangeMail.jsx       |  73 ----------
 src/pages/User/ResendVerificationToken.jsx |   6 +-
 src/pages/User/ResetPassword.jsx           |   8 +-
 src/pages/User/Signup.jsx                  |  17 ++-
 src/pages/User/Verify.jsx                  |   9 +-
 src/routes/Sitemap.jsx                     |   4 +-
 23 files changed, 66 insertions(+), 386 deletions(-)
 delete mode 100644 src/components/form/FlatListEdit copy.jsx
 delete mode 100644 src/pages/User/ChangeMail.jsx
 delete mode 100644 src/pages/User/RequestChangeMail.jsx

diff --git a/src/App.jsx b/src/App.jsx
index 3fce18b..1131e9f 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,7 +1,7 @@
-import { createBrowserRouter, RouterProvider } from 'react-router-dom';
-import { sitemap } from "./routes/Sitemap";
 import { HelmetProvider } from 'react-helmet-async';
+import { createBrowserRouter, RouterProvider } from 'react-router-dom';
 import AuthState from "./contexts/Auth/AuthState";
+import { sitemap } from "./routes/Sitemap";
 
 
 function App() {
diff --git a/src/components/boxes/ConfirmBox.jsx b/src/components/boxes/ConfirmBox.jsx
index b64f3ed..33f9078 100644
--- a/src/components/boxes/ConfirmBox.jsx
+++ b/src/components/boxes/ConfirmBox.jsx
@@ -1,4 +1,5 @@
 import React from 'react';
+import { Button } from '../ui/button';
 import {
   Dialog,
   DialogClose,
@@ -6,11 +7,8 @@ import {
   DialogDescription,
   DialogFooter,
   DialogHeader,
-  DialogTitle,
-  DialogTrigger,
+  DialogTitle
 } from "/src/components/ui/dialog";
-import { Button } from '../ui/button';
-import Heading from '../font/Heading';
 
 function ConfirmBox({ confirmDialog, closeDialog, item, handleProceed, ...props }) {
   // #################################
diff --git a/src/components/chat/Message.jsx b/src/components/chat/Message.jsx
index f948430..dfba636 100644
--- a/src/components/chat/Message.jsx
+++ b/src/components/chat/Message.jsx
@@ -1,5 +1,4 @@
 import React from 'react';
-import Tooltip from '../boxes/Tooltip';
 
 function Message({ chat }) {
   // #################################
diff --git a/src/components/chat/PromptInput.jsx b/src/components/chat/PromptInput.jsx
index b9d941d..3e87b48 100644
--- a/src/components/chat/PromptInput.jsx
+++ b/src/components/chat/PromptInput.jsx
@@ -4,10 +4,10 @@ import { FormProvider, useForm } from 'react-hook-form';
 import { RiLoopRightFill, RiSendPlane2Line } from 'react-icons/ri';
 import { z } from 'zod';
 
-import Input from '../form/Input';
-import { mergeBackendValidation } from '../../utils/ErrorHandling';
-import api from '../../utils/AxiosConfig';
 import { useChat } from '../../contexts/Chat/ChatState';
+import api from '../../utils/AxiosConfig';
+import { mergeBackendValidation } from '../../utils/ErrorHandling';
+import Input from '../form/Input';
 import Select from '../form/Select';
 
 function PromptInput() {
diff --git a/src/components/form/FlatListEdit copy.jsx b/src/components/form/FlatListEdit copy.jsx
deleted file mode 100644
index e3bbe15..0000000
--- a/src/components/form/FlatListEdit copy.jsx	
+++ /dev/null
@@ -1,153 +0,0 @@
-import React, { useEffect, useState } from 'react';
-import Textarea from './Textarea';
-import { Button } from '../ui/button';
-import ConfirmBox from '../boxes/ConfirmBox';
-import { useFieldArray } from 'react-hook-form';
-import { RiDeleteBin5Line } from 'react-icons/ri';
-import {
-  Table,
-  TableBody,
-  TableCaption,
-  TableCell,
-  TableRow,
-} from "@/components/ui/table";
-import THead from '../../components/table/THead';
-import { useTable } from '@/contexts/Table/TableState';
-
-function FlatListEdit({ methods, initialItems, fieldName, keyName, validator, tableCols, ...props }) {
-  // #################################
-  // HOOKS
-  // #################################
-
-  // ### DEFINE TABLE
-  const { tableState, initTable, replaceItems, removeItem } = useTable();
-
-  useEffect(() => {
-    // initialize table state
-    initTable({ tableCols, baseData: initialItems });
-    replace(initialItems);
-  }, [initialItems]);
-
-
-  // ### CONFIRM DIALOG
-  const [confirmDialog, setConfirmDialog] = useState({ open: false, item: {} });
-
-  // ### USE FIELD ARRAY TO STORE ITEMS
-  const { fields, remove, replace } = useFieldArray({
-    control: methods.control,
-    name: fieldName,
-  });
-
-
-  // #################################
-  // FUNCTIONS
-  // #################################
-
-  // ### ADD ITEMS FROM TEXTAREA
-  const handleAddItems = (e) => {
-    // clear errors
-    methods.clearErrors('addItem');
-    // fetch values from textarea and split new lines & csv into array
-    const addItems = methods.getValues('addItem').split(/[\n,]/);
-    // return on empty input
-    if (addItems.length === 1 && addItems[0] === '') return;
-
-    // get valid entries
-    // trim spaces from each input
-    addItems.forEach((input, idx) => addItems[idx] = input.trim());
-    // filter array for valid mail addresses using zod
-    const validInputs = addItems.filter((input, idx) => {
-      const isMail = validator(input);
-      return isMail.success ?? keyName;
-    });
-
-    // handle invalid inputs
-    // strip off valid entries from input to get remaining invalid inputs
-    const invalidInputs = addItems.filter(keyName => !validInputs.includes(keyName));
-    // set input value to remaining invalid entries
-    methods.setValue('addItem', invalidInputs.join('\n'));
-    if (invalidInputs.length > 0) {
-      // set error message on input
-      methods.setError('addItem', { message: 'invalid entries remaining' });
-    }
-
-    // handle valid inputs
-    // get existing items from fieldarray
-    const extistingItems = methods.getValues(fieldName);
-    // flatten fieldarray to array of strings only to merge with new inputs
-    let flatArray = extistingItems.map(field => field[keyName]);
-    // add valid inputs to existing items avoiding douplettes
-    flatArray = ([... new Set([...flatArray, ...validInputs])]);
-    // sort & convert flat array back into object
-    const wholeItemsObject = flatArray.sort().map(input => ({ [keyName]: input }));
-    // replace whole table data (invisible)
-    replaceItems(wholeItemsObject);
-    // replace whole fieldarray, which will be submitted to backend
-    replace(wholeItemsObject);
-    // set focus back to input field, which is only used for display
-    methods.setFocus('addItem');
-  };
-
-
-  // ### REMOVE ITEM FROM ARRAY
-  const handleRemoveItem = (idx) => {
-    // delete from fieldarray, which will be submitted to backend
-    remove(idx);
-    // delete from tableData, which is only used for display
-    replaceItems(methods.getValues(fieldName));
-  };
-
-  // #################################
-  // OUTPUT
-  // #################################
-  if (!tableState.tableData) return <div>loading...</div>;
-
-
-  return (
-    <>
-      {JSON.stringify(tableState.orderBy)}
-      {/* add Owner */}
-      <Textarea name='addItem' title={fieldName} tooltip={props.tooltip}>
-        <Button type='button' variant="default" onClick={handleAddItems} className='px-4 h-16 self-center'>add</Button>
-      </Textarea>
-      {/* List */}
-      <Table>
-        <TableCaption>{tableState.tableData.length} of {tableState.baseData.length}</TableCaption>
-        <THead actionCol={true} />
-        <TableBody>
-          {tableState.tableData && tableState.tableData.map((item, idx) => {
-            return <TableRow key={idx}>
-              <TableCell>
-                {item[keyName]}
-              </TableCell >
-              <TableCell>
-                <Button
-                  type="button"
-                  onClick={() => setConfirmDialog({ open: true, idToDelete: idx, displayName: item[keyName] })}
-                  variant='destructive'
-                  size='icon'
-                  title='delete from list'
-                >
-                  <RiDeleteBin5Line />
-                </Button>
-              </TableCell>
-            </TableRow>;
-          })}
-        </TableBody>
-      </Table>
-
-      {fields && fields.map((item, idx) => {
-        return <div key={idx}>
-          <input className='w-full h-full bg-transparent' type='hidden' key={item.id} {...methods.register(`${fieldName}.${idx}.${keyName}`)} disabled={true} />
-        </div>;
-      })}
-
-
-
-      {/* confirmDialog */}
-      <ConfirmBox confirmDialog={confirmDialog} closeDialog={() => setConfirmDialog({ ...confirmDialog, open: false })} handleProceed={() => { handleRemoveItem(confirmDialog.idToDelete); }} />
-    </>
-  );
-}
-
-export default React.memo(FlatListEdit);;
\ No newline at end of file
diff --git a/src/components/form/Select.jsx b/src/components/form/Select.jsx
index 3299f0c..164b7fb 100755
--- a/src/components/form/Select.jsx
+++ b/src/components/form/Select.jsx
@@ -1,9 +1,9 @@
 import React, { useId } from 'react';
-import { Controller, useFormContext, useFormState } from 'react-hook-form';
+import { Controller, useFormContext } from 'react-hook-form';
 import { twMerge } from 'tailwind-merge';
-import RequiredBadge from './RequiredBadge';
-import Tooltip from '../boxes/Tooltip';
 import { capitalizeFirstLetter } from '../../utils';
+import Tooltip from '../boxes/Tooltip';
+import RequiredBadge from './RequiredBadge';
 
 
 function Select({ options, name, title, defaultValue, className, tooltip, type, ...props }) {
diff --git a/src/contexts/Chat/ChatState.jsx b/src/contexts/Chat/ChatState.jsx
index 57a61d4..57fe6d0 100644
--- a/src/contexts/Chat/ChatState.jsx
+++ b/src/contexts/Chat/ChatState.jsx
@@ -1,9 +1,9 @@
-import React, { useContext, useReducer, useState } from 'react';
+import React, { useContext, useReducer } from 'react';
+import api from '../../utils/AxiosConfig';
+import { mergeBackendValidation } from '../../utils/ErrorHandling';
 import ChatContext from './ChatContext';
 import chatReducer from './ChatReducer';
 import { CHAT_ACTIONS } from './ChatTypes';
-import api from '../../utils/AxiosConfig';
-import { mergeBackendValidation } from '../../utils/ErrorHandling';
 
 // ### EXPORT useContext TO REDUCE NEEDED CODE IN CLIENT FILES
 export function useChat() {
diff --git a/src/main.jsx b/src/main.jsx
index 711d042..9a1e3ee 100644
--- a/src/main.jsx
+++ b/src/main.jsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import ReactDOM from 'react-dom/client';
-import App from './App.jsx';
 import "react-toastify/dist/ReactToastify.css";
+import App from './App.jsx';
 import './assets/sass/app.scss';
 
 
diff --git a/src/pages/Config/AI/NewModel.jsx b/src/pages/Config/AI/NewModel.jsx
index 3e41ab2..d103bc6 100644
--- a/src/pages/Config/AI/NewModel.jsx
+++ b/src/pages/Config/AI/NewModel.jsx
@@ -1,14 +1,14 @@
-import React, { useEffect, useState } from 'react';
-import { useAuth } from '/src/contexts/Auth/AuthState';
-import api from '/src/utils/AxiosConfig';
-import Heading from '/src/components/font/Heading';
-import { mergeBackendValidation, setFlashMsg } from '/src/utils/ErrorHandling';
-import { z } from 'zod';
 import { zodResolver } from '@hookform/resolvers/zod';
-import { FormProvider, useForm, useFormContext } from 'react-hook-form';
+import React from 'react';
+import { FormProvider, useForm } from 'react-hook-form';
+import { Link } from 'react-router-dom';
+import { z } from 'zod';
+import Heading from '/src/components/font/Heading';
 import Input from '/src/components/form/Input';
 import Submit from '/src/components/form/Submit';
-import { Link } from 'react-router-dom';
+import { useAuth } from '/src/contexts/Auth/AuthState';
+import api from '/src/utils/AxiosConfig';
+import { mergeBackendValidation, setFlashMsg } from '/src/utils/ErrorHandling';
 
 function NewModel({ data, setData }) {
   // #################################
diff --git a/src/pages/Config/Config.jsx b/src/pages/Config/Config.jsx
index b3bc0e0..7240bc4 100644
--- a/src/pages/Config/Config.jsx
+++ b/src/pages/Config/Config.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import React from 'react';
 import { Helmet } from 'react-helmet-async';
 import { useAuth } from '../../contexts/Auth/AuthState';
 import AIModels from './AIModels';
diff --git a/src/pages/Config/Embeddings.jsx b/src/pages/Config/Embeddings.jsx
index 80bc05b..2d57c9e 100644
--- a/src/pages/Config/Embeddings.jsx
+++ b/src/pages/Config/Embeddings.jsx
@@ -1,9 +1,9 @@
 import React, { useEffect, useState } from 'react';
-import Status from './Embeddings/Status';
-import { mergeBackendValidation } from '../../utils/ErrorHandling';
 import api from '../../utils/AxiosConfig';
-import Update from './Embeddings/Update';
+import { mergeBackendValidation } from '../../utils/ErrorHandling';
 import Delete from './Embeddings/Delete';
+import Status from './Embeddings/Status';
+import Update from './Embeddings/Update';
 
 function Embeddings() {
   // #################################
diff --git a/src/pages/Config/Embeddings/Delete.jsx b/src/pages/Config/Embeddings/Delete.jsx
index e440ae1..d1b2b1d 100644
--- a/src/pages/Config/Embeddings/Delete.jsx
+++ b/src/pages/Config/Embeddings/Delete.jsx
@@ -1,12 +1,11 @@
 import React, { useState } from 'react';
-import { useAuth } from '../../../contexts/Auth/AuthState';
 import { FormProvider, useForm } from 'react-hook-form';
+import ConfirmBox from '../../../components/boxes/ConfirmBox';
 import Heading from '../../../components/font/Heading';
-import Input from '../../../components/form/Input';
 import Submit from '../../../components/form/Submit';
-import ConfirmBox from '../../../components/boxes/ConfirmBox';
-import { mergeBackendValidation, setFlashMsg } from '../../../utils/ErrorHandling';
+import { useAuth } from '../../../contexts/Auth/AuthState';
 import api from '../../../utils/AxiosConfig';
+import { mergeBackendValidation, setFlashMsg } from '../../../utils/ErrorHandling';
 
 function Delete({ setStatus }) {
   // #################################
diff --git a/src/pages/Config/Embeddings/Update.jsx b/src/pages/Config/Embeddings/Update.jsx
index b2a2564..0a306d5 100644
--- a/src/pages/Config/Embeddings/Update.jsx
+++ b/src/pages/Config/Embeddings/Update.jsx
@@ -1,13 +1,12 @@
 import React, { useState } from 'react';
-import { Button } from '../../../components/ui/button';
-import Heading from '../../../components/font/Heading';
-import Tooltip from '../../../components/boxes/Tooltip';
-import api from '../../../utils/AxiosConfig';
-import { useAuth } from '../../../contexts/Auth/AuthState';
 import { FormProvider, useForm } from 'react-hook-form';
+import JsonToHtmlDL from '../../../components/boxes/JsonToHtmlDL';
+import Tooltip from '../../../components/boxes/Tooltip';
+import Heading from '../../../components/font/Heading';
 import Submit from '../../../components/form/Submit';
+import { useAuth } from '../../../contexts/Auth/AuthState';
+import api from '../../../utils/AxiosConfig';
 import { mergeBackendValidation, setFlashMsg } from '../../../utils/ErrorHandling';
-import JsonToHtmlDL from '../../../components/boxes/JsonToHtmlDL';
 
 function Update({ setStatus }) {
   // #################################
diff --git a/src/pages/Onboarding/Onboarding.jsx b/src/pages/Onboarding/Onboarding.jsx
index 2a2640b..0349efc 100644
--- a/src/pages/Onboarding/Onboarding.jsx
+++ b/src/pages/Onboarding/Onboarding.jsx
@@ -1,9 +1,9 @@
 import React from 'react';
 import { Helmet } from 'react-helmet-async';
-import Heading from '../../components/font/Heading';
 import Chats from '../../components/chat/Chats';
 import Messages from '../../components/chat/Messages';
 import PromptInput from '../../components/chat/PromptInput';
+import Heading from '../../components/font/Heading';
 import ChatState from '../../contexts/Chat/ChatState';
 
 
diff --git a/src/pages/User/ChangeMail.jsx b/src/pages/User/ChangeMail.jsx
deleted file mode 100644
index 20cf1de..0000000
--- a/src/pages/User/ChangeMail.jsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import { zodResolver } from '@hookform/resolvers/zod';
-import React, { useRef, useState } from 'react';
-import { Helmet } from 'react-helmet-async';
-import { FormProvider, useForm, useFormContext } from 'react-hook-form';
-import { Link, useNavigate, useParams } from 'react-router-dom';
-import { z } from 'zod';
-import Input from '../../components/form/Input';
-import Submit from '../../components/form/Submit';
-import { useAuth } from '../../contexts/Auth/AuthState';
-import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
-import Heading from '../../components/font/Heading';
-import api from '../../utils/AxiosConfig';
-
-function ForgotPassword() {
-  // #################################
-  // VALIDATION SCHEMA
-  // #################################
-  // TODO limit file size via .env
-  // TODO check for file types
-  const schema = z.object({
-    token: z.string().min(1),
-    password: z.string().min(1),
-  });
-
-  // #################################
-  // HOOKS
-  // #################################
-  // FETCH TOKEN FROM URL
-  const { token } = useParams();
-
-  // SET FORM
-  const methods = useForm({
-    resolver: zodResolver(schema),
-    mode: 'onSubmit',
-    defaultValues: {
-      token: token,
-    }
-  });
-
-  // ### ENABLE REDIRECTIONS
-  const redirect = useNavigate();
-
-  // #################################
-  // FUNCTIONS
-  // #################################
-
-  // ### HANDLE SUBMITTING FORM
-  async function handleSendForm(inputs) {
-
-    // TRY UPDATE
-    try {
-      // send data
-      const result = await api.post(`/users/confirmemailchange`, inputs);
-      redirect('/change_email');
-      // set flash message
-      setFlashMsg(result.data?.message);
-    } catch (error) {
-      // catch the error
-      mergeBackendValidation(error.response.status, error.response.data, methods.setError);
-    }
-  }
-
-  // #################################
-  // OUTPUT
-  // #################################
-  return (
-    <>
-      {/* render page title */}
-      <Helmet><title>[{import.meta.env.VITE_APP_NAME}] change E-Mail</title></Helmet>
-
-      <Heading level="1">e-mail reset</Heading>
-      <FormProvider {...methods} >
-        <form onSubmit={methods.handleSubmit(handleSendForm)}>
-          <Input name='token' type='text' title='confirm token' required={true} />
-          <Input name='password' type='password' title='current password' autoFocus={true} required={true} />
-          <Submit value='submit' />
-        </form>
-      </FormProvider>
-
-      <div className="my-4 flex justify-between">
-        <Link to="/change_email">Back to request</Link>
-      </div>
-    </>
-  );
-}
-
-export default React.memo(ForgotPassword);
\ No newline at end of file
diff --git a/src/pages/User/ForgotPassword.jsx b/src/pages/User/ForgotPassword.jsx
index 3d84cb4..b88aa94 100644
--- a/src/pages/User/ForgotPassword.jsx
+++ b/src/pages/User/ForgotPassword.jsx
@@ -1,14 +1,14 @@
 import { zodResolver } from '@hookform/resolvers/zod';
-import React, { useRef, useState } from 'react';
+import React from 'react';
 import { Helmet } from 'react-helmet-async';
-import { FormProvider, useForm, useFormContext } from 'react-hook-form';
+import { FormProvider, useForm } from 'react-hook-form';
 import { Link } from 'react-router-dom';
 import { z } from 'zod';
+import Heading from '../../components/font/Heading';
 import Input from '../../components/form/Input';
 import Submit from '../../components/form/Submit';
 import { useAuth } from '../../contexts/Auth/AuthState';
 import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
-import Heading from '../../components/font/Heading';
 
 function ForgotPassword() {
   // #################################
diff --git a/src/pages/User/Login.jsx b/src/pages/User/Login.jsx
index 0dbd5c0..120ae0b 100644
--- a/src/pages/User/Login.jsx
+++ b/src/pages/User/Login.jsx
@@ -1,15 +1,15 @@
+import { zodResolver } from '@hookform/resolvers/zod';
 import React, { useEffect } from 'react';
-import { Link, useLocation, useNavigate } from 'react-router-dom';
-import { useAuth } from '../../contexts/Auth/AuthState';
+import { Helmet } from 'react-helmet-async';
 import { FormProvider, useForm } from 'react-hook-form';
-import { zodResolver } from '@hookform/resolvers/zod';
-import { z } from "zod";
+import { Link, useLocation, useNavigate } from 'react-router-dom';
 import { toast } from 'react-toastify';
-import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
+import { z } from "zod";
+import Heading from '../../components/font/Heading';
 import Input from '../../components/form/Input';
 import Submit from '../../components/form/Submit';
-import { Helmet } from 'react-helmet-async';
-import Heading from '../../components/font/Heading';
+import { useAuth } from '../../contexts/Auth/AuthState';
+import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
 
 function Login() {
 
diff --git a/src/pages/User/RequestChangeMail.jsx b/src/pages/User/RequestChangeMail.jsx
deleted file mode 100644
index dfef9ef..0000000
--- a/src/pages/User/RequestChangeMail.jsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import { zodResolver } from '@hookform/resolvers/zod';
-import React from 'react';
-import { Helmet } from 'react-helmet-async';
-import { FormProvider, useForm } from 'react-hook-form';
-import { Link } from 'react-router-dom';
-import { z } from 'zod';
-import Input from '../../components/form/Input';
-import Submit from '../../components/form/Submit';
-import { useAuth } from '../../contexts/Auth/AuthState';
-import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
-import Heading from '../../components/font/Heading';
-
-function RequestChangeMail() {
-  // #################################
-  // VALIDATION SCHEMA
-  // #################################
-  // TODO limit file size via .env
-  // TODO check for file types
-  const schema = z.object({
-    email: z.string().email(),
-  });
-
-  // #################################
-  // HOOKS
-  // #################################
-  const methods = useForm({
-    resolver: zodResolver(schema),
-    mode: 'onSubmit'
-  });
-
-  // #################################
-  // FUNCTIONS
-  // #################################
-  // ### IMPORT FUNCTION FROM AuthContext
-  const { requestEmailReset } = useAuth();
-
-  // ### HANDLE SUBMITTING FORM
-  async function handleSendForm(inputs) {
-    try {
-      // send data to login function
-      const result = await requestEmailReset(inputs.email);
-      // set flash message
-      setFlashMsg(result.data?.message);
-    } catch (error) {
-      // catch the error
-      mergeBackendValidation(error.response.status, error.response.data, methods.setError);
-    }
-  }
-
-  // #################################
-  // OUTPUT
-  // #################################
-  return (
-    <>
-      {/* render page title */}
-      <Helmet><title>[{import.meta.env.VITE_APP_NAME}] change E-Mail</title></Helmet>
-
-      <Heading level="1">request e-mail reset</Heading>
-      <FormProvider {...methods} >
-        <form onSubmit={methods.handleSubmit(handleSendForm)}>
-          <Input name='email' type='mail' title='new E-Mail address' required={true} />
-          <Submit value='request' />
-        </form>
-      </FormProvider>
-
-      <div className="my-4 flex justify-between">
-        <Link to="/change_email/-">I already recieved a token</Link>
-      </div>
-    </>
-  );
-}
-
-export default React.memo(RequestChangeMail);
\ No newline at end of file
diff --git a/src/pages/User/ResendVerificationToken.jsx b/src/pages/User/ResendVerificationToken.jsx
index b899c8e..66029bc 100644
--- a/src/pages/User/ResendVerificationToken.jsx
+++ b/src/pages/User/ResendVerificationToken.jsx
@@ -1,14 +1,14 @@
 import { zodResolver } from '@hookform/resolvers/zod';
-import React, { useRef, useState } from 'react';
+import React from 'react';
 import { Helmet } from 'react-helmet-async';
-import { FormProvider, useForm, useFormContext } from 'react-hook-form';
+import { FormProvider, useForm } from 'react-hook-form';
 import { Link } from 'react-router-dom';
 import { z } from 'zod';
+import Heading from '../../components/font/Heading';
 import Input from '../../components/form/Input';
 import Submit from '../../components/form/Submit';
 import { useAuth } from '../../contexts/Auth/AuthState';
 import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
-import Heading from '../../components/font/Heading';
 
 function ForgotPassword() {
   // #################################
diff --git a/src/pages/User/ResetPassword.jsx b/src/pages/User/ResetPassword.jsx
index 72865b3..a7e9ca4 100644
--- a/src/pages/User/ResetPassword.jsx
+++ b/src/pages/User/ResetPassword.jsx
@@ -1,16 +1,16 @@
 import { zodResolver } from '@hookform/resolvers/zod';
 import React from 'react';
+import { Helmet } from 'react-helmet-async';
 import { FormProvider, useForm } from 'react-hook-form';
 import { Link, useNavigate, useParams } from 'react-router-dom';
+import { isStrongPassword } from 'validator';
 import { z } from 'zod';
+import Heading from '../../components/font/Heading';
 import Input from '../../components/form/Input';
 import Submit from '../../components/form/Submit';
+import { useAuth } from '../../contexts/Auth/AuthState';
 import api from '../../utils/AxiosConfig';
 import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
-import { isStrongPassword } from 'validator';
-import { useAuth } from '../../contexts/Auth/AuthState';
-import { Helmet } from 'react-helmet-async';
-import Heading from '../../components/font/Heading';
 
 
 function ResetPasswordForm() {
diff --git a/src/pages/User/Signup.jsx b/src/pages/User/Signup.jsx
index 988e11e..a2dadb7 100644
--- a/src/pages/User/Signup.jsx
+++ b/src/pages/User/Signup.jsx
@@ -1,17 +1,16 @@
-import React, { useEffect } from 'react';
-import { Link, useLocation, useNavigate } from 'react-router-dom';
-import { useAuth } from '../../contexts/Auth/AuthState';
-import { FormProvider, useForm } from 'react-hook-form';
 import { zodResolver } from '@hookform/resolvers/zod';
+import React from 'react';
+import { Helmet } from 'react-helmet-async';
+import { FormProvider, useForm } from 'react-hook-form';
+import { Link, useLocation, useNavigate } from 'react-router-dom';
+import validator from 'validator';
 import { z } from "zod";
-import { toast } from 'react-toastify';
-import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
+import Heading from '../../components/font/Heading';
 import Input from '../../components/form/Input';
 import Submit from '../../components/form/Submit';
-import { Helmet } from 'react-helmet-async';
-import Heading from '../../components/font/Heading';
-import validator from 'validator';
+import { useAuth } from '../../contexts/Auth/AuthState';
 import api from '../../utils/AxiosConfig';
+import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
 
 function Signup() {
 
diff --git a/src/pages/User/Verify.jsx b/src/pages/User/Verify.jsx
index cd6f660..7a0305c 100644
--- a/src/pages/User/Verify.jsx
+++ b/src/pages/User/Verify.jsx
@@ -1,15 +1,14 @@
 import { zodResolver } from '@hookform/resolvers/zod';
-import React, { useRef, useState } from 'react';
+import React from 'react';
 import { Helmet } from 'react-helmet-async';
-import { FormProvider, useForm, useFormContext } from 'react-hook-form';
+import { FormProvider, useForm } from 'react-hook-form';
 import { Link, useNavigate, useParams } from 'react-router-dom';
 import { z } from 'zod';
+import Heading from '../../components/font/Heading';
 import Input from '../../components/form/Input';
 import Submit from '../../components/form/Submit';
-import { useAuth } from '../../contexts/Auth/AuthState';
-import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
-import Heading from '../../components/font/Heading';
 import api from '../../utils/AxiosConfig';
+import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling';
 
 function Verify() {
   // #################################
diff --git a/src/routes/Sitemap.jsx b/src/routes/Sitemap.jsx
index 72b0953..a27a28f 100644
--- a/src/routes/Sitemap.jsx
+++ b/src/routes/Sitemap.jsx
@@ -1,7 +1,7 @@
-import MainLayout from "../layouts/MainLayout";
-import { loadComponent } from "./WrapRoutes";
 import { Link } from 'react-router-dom';
 import CleanLayout from '../layouts/CleanLayout';
+import MainLayout from "../layouts/MainLayout";
+import { loadComponent } from "./WrapRoutes";
 
 
 export const sitemap = [{
-- 
GitLab