-
-
- Sign in to Portal
-
-
- Don't have an account?{' '}
-
- Sign up
-
+
+
+
+
+ Welcome back
+
+
+ Sign in to access your maritime licensing dashboard.
-
-
-
+
+
+
+
+
+
+ }
+ onClick={() => notify.info('Phone sign-in is coming soon.')}
+ >
+ Sign in with phone number
+
+
+
+ Don't have an account?{' '}
+
+ Create one
+
+
+
+
);
}
diff --git a/apps/portal/src/app/features/auth/pages/OTPVerificationPage.tsx b/apps/portal/src/app/features/auth/pages/OTPVerificationPage.tsx
index c786d40fe..965737c38 100644
--- a/apps/portal/src/app/features/auth/pages/OTPVerificationPage.tsx
+++ b/apps/portal/src/app/features/auth/pages/OTPVerificationPage.tsx
@@ -1,18 +1,21 @@
import {
- Paper,
- TextInput,
+ Anchor,
Button,
+ Group,
Stack,
- Title,
- Center,
Text,
+ TextInput,
+ ThemeIcon,
+ Title,
} from '@mantine/core';
+import { IconArrowRight, IconShieldLock } from '@tabler/icons-react';
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';
import { useNavigate, useLocation } from 'react-router-dom';
import { useApiMutation } from '@ema-platform/api';
import { notify } from '@ema-platform/ui';
+import { AuthShell } from '../components/AuthShell';
const schema = z.object({
verificationCode: z.string().min(1, { message: 'Verification code is required' }),
@@ -72,38 +75,63 @@ export function OTPVerificationPage() {
};
return (
-
-
-
- Verify your email
-
- A verification code has been sent to {email || 'your email'}. Enter it
- below to complete your registration.
+
+
+
+
+
+
+
+
+ Verify your account
+
+
+ A verification code has been sent to{' '}
+
+ {email || 'your email'}
+
+ . Enter it below to continue.
-
-
+
+
+
+
+
+ Didn't receive a code?
+
+
- Send OTP again
-
-
-
-
+ Resend code
+
+
+
+
);
}
diff --git a/apps/portal/src/app/features/auth/pages/SignupPage.tsx b/apps/portal/src/app/features/auth/pages/SignupPage.tsx
index 5edd9cbac..d12d1ad6b 100644
--- a/apps/portal/src/app/features/auth/pages/SignupPage.tsx
+++ b/apps/portal/src/app/features/auth/pages/SignupPage.tsx
@@ -1,14 +1,24 @@
+import { useState } from 'react';
import {
- Paper,
- TextInput,
- PasswordInput,
- Button,
- Stack,
- Title,
- Center,
- Text,
Anchor,
+ Button,
+ Checkbox,
+ Group,
+ PasswordInput,
+ SimpleGrid,
+ Stack,
+ Text,
+ TextInput,
+ Title,
} from '@mantine/core';
+import {
+ IconArrowRight,
+ IconAt,
+ IconDeviceMobile,
+ IconLock,
+ IconMail,
+ IconUser,
+} from '@tabler/icons-react';
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';
@@ -17,6 +27,7 @@ import { useAppDispatch } from '../../../store/hooks';
import { loginSuccess } from '../store/auth.slice';
import { useApiMutation } from '@ema-platform/api';
import { notify } from '@ema-platform/ui';
+import { AuthShell } from '../components/AuthShell';
const schema = z
.object({
@@ -52,6 +63,7 @@ interface SignupPayload {
export function SignupPage() {
const navigate = useNavigate();
const dispatch = useAppDispatch();
+ const [agreed, setAgreed] = useState(false);
const [signupTrigger, { isLoading: loading }] = useApiMutation<{
token: string;
refreshToken: string;
@@ -103,67 +115,119 @@ export function SignupPage() {
};
return (
-