diff --git a/src/pages/access/member-credentials/MemberCredential.tsx b/src/pages/access/member-credentials/MemberCredential.tsx deleted file mode 100644 index 49509f9..0000000 --- a/src/pages/access/member-credentials/MemberCredential.tsx +++ /dev/null @@ -1,11 +0,0 @@ -const MemberCredential = () => { - return ( -
-
-

Member Credential

-
-
- ); -}; - -export default MemberCredential; diff --git a/src/pages/access/member-credentials/MemberCredentials.tsx b/src/pages/access/member-credentials/MemberCredentials.tsx new file mode 100644 index 0000000..2ef4cfc --- /dev/null +++ b/src/pages/access/member-credentials/MemberCredentials.tsx @@ -0,0 +1,21 @@ +import MemberCredentialsForm from './blocks/MemberCredentialsForm'; +import { useMemberCredentials } from './hooks'; + +const MemberCredentials = () => { + const { error, memberCredentials, handleChange, handleSubmit } = useMemberCredentials(); + return ( +
+
+

Member Credential

+ +
+
+ ); +}; + +export default MemberCredentials; diff --git a/src/pages/access/member-credentials/blocks/MemberCredentialsForm.tsx b/src/pages/access/member-credentials/blocks/MemberCredentialsForm.tsx new file mode 100644 index 0000000..1f066f3 --- /dev/null +++ b/src/pages/access/member-credentials/blocks/MemberCredentialsForm.tsx @@ -0,0 +1,97 @@ +import { Alert } from '@/components'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue +} from '@/components/ui/select'; + +interface MemberCredentials { + accessType: string | null; + username: string; + credential: string; + confirmCredential: string; +} + +interface Props { + form: MemberCredentials; + error: string | null; + onChange: (key: keyof MemberCredentials, value: string) => void; + onSubmit: () => void; +} + +const MemberCredentialsForm = ({ form, error, onChange, onSubmit }: Props) => { + return ( +
+

Create Member Credentials

+ + {error && ( + + {error} + + )} + +
+ {/* Access Type */} +
+ + +
+ + {/* Username */} +
+ + onChange('username', e.target.value)} /> +
+ + {/* Credentials */} +
+ + onChange('credential', e.target.value)} + /> +
+ + {/* Confirm Credentials */} +
+ + onChange('confirmCredential', e.target.value)} + /> +
+ + +
+
+ ); +}; + +export default MemberCredentialsForm; diff --git a/src/pages/access/member-credentials/hooks/index.ts b/src/pages/access/member-credentials/hooks/index.ts new file mode 100644 index 0000000..e3b3fc4 --- /dev/null +++ b/src/pages/access/member-credentials/hooks/index.ts @@ -0,0 +1 @@ +export * from './useMemberCredentials'; diff --git a/src/pages/access/member-credentials/hooks/useMemberCredentials.tsx b/src/pages/access/member-credentials/hooks/useMemberCredentials.tsx new file mode 100644 index 0000000..4cfd302 --- /dev/null +++ b/src/pages/access/member-credentials/hooks/useMemberCredentials.tsx @@ -0,0 +1,42 @@ +import { useState } from 'react'; + +type AccessType = 'Pin Credentials' | 'Secret Auth' | 'APIKey' | 'Web Credentials' | 'OTM Tpay'; + +interface MemberCredentials { + accessType: AccessType | null; + username: string; + credential: string; + confirmCredential: string; +} + +export const useMemberCredentials = () => { + const [memberCredentials, setMemberCredentials] = useState({ + accessType: null, + username: '', + credential: '', + confirmCredential: '' + }); + const [error, setError] = useState(null); + + const handleChange = (key: keyof MemberCredentials, value: string) => { + setMemberCredentials((prevCredentials) => ({ ...prevCredentials, [key]: value })); + }; + + const handleSubmit = () => { + setError(null); + + if (memberCredentials.username === '' || memberCredentials.credential === '') { + setError('Please fill in all fields'); + return; + } + + if (memberCredentials.credential !== memberCredentials.confirmCredential) { + setError('Credentials do not match'); + return; + } + + console.log('Data Submitted: ', memberCredentials); + }; + + return { memberCredentials, handleChange, handleSubmit, error }; +};