diff --git a/src/App.jsx b/src/App.jsx index 3fce18b9747496c6f115d701b5bd9a5de02e3c36..1131e9fb10b31daf09a5962c53541e8502223cb2 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 b64f3ed55a0e483671bb6b525e956dc7b088c34e..33f907820b9aaf3fcdce1b8af0a3e99d1bbf20d3 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 f948430534034a8755b5690be37eca8909037385..dfba63695da83fe869abb0f6a59143e9fd155506 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 b9d941d7027ea38dc51d5a6894837bb8bd48cf94..3e87b4809311e1321e377dec94b335c6ef7a390a 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 e3bbe1522bcf2c2efab7768b2b406a1f79004095..0000000000000000000000000000000000000000 --- 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 3299f0cd8e56216ce93cbbe051794705846b85f0..164b7fbe509d0ae242d71c3005a30ba160b21293 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 57a61d4f690076b9ec963dc91084fa0ef3d3593e..57fe6d0b8282468144956ecd7c417ba27f9469b9 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 711d0421e4963587b70c423eedbeacce4e4fb069..9a1e3ee1b45498afb87b286c4f2df652ec8ab844 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 3e41ab24e0c61d450bd631d7a97b7aca943b6676..d103bc6cb403a2d1d845349d2b298c19ac572fa6 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 b3bc0e0d99820eda692b45c018036571fa2a2ae1..7240bc47b1da3be547d58ceb60eba5cce6574842 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 80bc05b0f77ba92c1247daae241b86d1e5a9051f..2d57c9e07b522d39e232c90352d015df1d9cbb90 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 e440ae12d2c403ea064d9f24392a9b82a1b28631..d1b2b1d50e923762ce7a29c11a852401b456f603 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 b2a2564e3eb8626ce6117e158706e029c8fdb18e..0a306d50d510bed9457c91885ec9bb99dfe7727e 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 2a2640b37639658a5600876d16e3b5a3f22e07b9..0349efce405de85c2072564e1ff665c4f33cfffe 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 20cf1de688ceb90fc529c4ec2a08d6841cf937fc..0000000000000000000000000000000000000000 --- 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 3d84cb4605cb837c4a4549ea5eee030797612a7e..b88aa94c354e243c973107189483e52370b68b8c 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 0dbd5c024e9238ce3dd13d8c4d838b22ea8908e1..120ae0b21bfcf30af44435ed360482751045361e 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 dfef9ef4dbd79b07a2c733caa251780783492bf3..0000000000000000000000000000000000000000 --- 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 b899c8eaf8c8d67b22a37bbcde0d43f591ffbfbb..66029bc2377794628289a2d5427f635411e1e4d8 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 72865b34adfac55d04be2f9711a9e11138be426e..a7e9ca4fd611e048a1901c910ac701835be1be39 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 988e11ee2c3a52988ce0d55965be3ee5288f97c5..a2dadb7b72e0f85ca18cebd1aae9342b0d47832e 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 cd6f66071f4ef0a985b12b78dba8020d23647fe2..7a0305c5a5d3f3dc557d77d3965a0cfb54b0e06d 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 72b095386acd7ccf140d2cb71aa853cd9b09faf4..a27a28fa7bea9c46242fd7ffe27ba3a5d9df572b 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 = [{