diff --git a/client/src/Hooks/v2/UseApi.tsx b/client/src/Hooks/v2/UseApi.tsx index fdb4e8a24..eab661793 100644 --- a/client/src/Hooks/v2/UseApi.tsx +++ b/client/src/Hooks/v2/UseApi.tsx @@ -4,6 +4,11 @@ import type { SWRConfiguration } from "swr"; import type { AxiosRequestConfig } from "axios"; import { get, post } from "@/Utils/ApiClient"; // your axios wrapper +export type ApiResponse = { + message: string; + data: any; +}; + // Generic fetcher for GET requests const fetcher = async (url: string, config?: AxiosRequestConfig) => { const res = await get(url, config); @@ -41,7 +46,8 @@ export const usePost = (endpoint: string) => { const res = await post(endpoint, body, config); return res.data; } catch (err: any) { - setError(err?.message ?? "Unknown error"); + const errMsg = err?.response?.data?.msg || err.message || "An error occurred"; + setError(errMsg); return null; } finally { setLoading(false); diff --git a/client/src/Pages/v2/Auth/Login.tsx b/client/src/Pages/v2/Auth/Login.tsx index 6a76fdf76..58eec01dc 100644 --- a/client/src/Pages/v2/Auth/Login.tsx +++ b/client/src/Pages/v2/Auth/Login.tsx @@ -8,28 +8,26 @@ import { TextInput } from "@/Components/Inputs/TextInput/indexV2.tsx"; import Button from "@mui/material/Button"; import Stack from "@mui/material/Stack"; import { usePost } from "@/Hooks/v2/UseApi"; +import type { ApiResponse } from "@/Hooks/v2/UseApi"; + const schema = z.object({ email: z.email("Invalid email address"), password: z.string().min(6, "Password must be at least 6 characters"), }); type FormData = z.infer; -type LoginData = { - username: string; - password: string; -}; const Login = () => { const { t } = useTranslation(); const theme = useTheme(); - const { post, loading, error } = usePost("/auth/login"); + const { post, loading, error } = usePost("/auth/login"); const { handleSubmit, control, formState: { errors }, } = useForm({ - resolver: zodResolver(schema), // ⬅️ connect Zod + resolver: zodResolver(schema), defaultValues: { email: "", password: "", @@ -39,7 +37,7 @@ const Login = () => { const onSubmit = async (data: FormData) => { const result = await post(data); if (result) { - console.log("Login successful:", result); + console.log(result.message); } else { console.error("Login failed:", error); } diff --git a/client/src/Utils/Theme/v2/theme.ts b/client/src/Utils/Theme/v2/theme.ts index f262386ce..55d2b9bb9 100644 --- a/client/src/Utils/Theme/v2/theme.ts +++ b/client/src/Utils/Theme/v2/theme.ts @@ -12,6 +12,27 @@ export const theme = (mode: string, palette: any) => typography: { fontFamily: fontFamilyPrimary, fontSize: typographyLevels.base, + h1: { + fontSize: typographyLevels.xl, + color: palette.primary.contrastText, + fontWeight: 500, + }, + h2: { + fontSize: typographyLevels.l, + color: palette.primary.contrastTextSecondary, + fontWeight: 400, + }, + + body1: { + fontSize: typographyLevels.m, + color: palette.primary.contrastTextTertiary, + fontWeight: 400, + }, + body2: { + fontSize: typographyLevels.s, + color: palette.primary.contrastTextTertiary, + fontWeight: 400, + }, }, components: {