Compare commits

..

11 Commits

Author SHA1 Message Date
victorAnumudu 104295bdb2 select input added where necessary 2024-04-22 22:38:35 +01:00
ameye 44933d4362 Merge branch 'loan-application-process' of DigiFi/digifi-www into master 2024-04-22 17:08:37 +00:00
victorAnumudu 9ce7110a5d added steps to loan application 2024-04-22 15:42:40 +01:00
ameye 085b2d4aaa Merge branch 'get-started-page' of DigiFi/digifi-www into master 2024-04-22 11:39:10 +00:00
victorAnumudu 747c945659 get started first step added 2024-04-22 09:36:48 +01:00
ameye 94f9803ec5 Merge branch 'otp-input' of DigiFi/digifi-www into master 2024-04-17 18:49:10 +00:00
victorAnumudu 3998596fba validation bug fix 2024-04-16 20:56:34 +01:00
victorAnumudu 886fd64347 validated otp input to be numbers 2024-04-16 20:17:57 +01:00
tokslaw f95fd66c57 Merge branch 'layout-update' of DigiFi/digifi-www into master 2024-04-04 09:35:17 +00:00
tokslaw 98b5d4bc4f Merge branch 'Corporate' of DigiFi/digifi-www into master 2024-04-04 09:33:45 +00:00
Pascallina Ocheme 537d609117 Modified pathlink 2024-03-26 12:17:15 +01:00
17 changed files with 855 additions and 167 deletions
+1
View File
@@ -15,6 +15,7 @@
"formik": "2.4.5", "formik": "2.4.5",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-icons": "^5.0.1",
"react-redux": "^8.0.5", "react-redux": "^8.0.5",
"react-router-dom": "6.3.0", "react-router-dom": "6.3.0",
"react-select": "^5.8.0", "react-select": "^5.8.0",
+31 -9
View File
@@ -1,11 +1,16 @@
import { Button, InputCompOne, Stepper } from ".."; import { Button, InputCompOne, Stepper } from "..";
import { useNavigate } from "react-router-dom"; // import { useNavigate } from "react-router-dom";
import { RouteHandler } from "../../router/routes"; // import { RouteHandler } from "../../router/routes";
export default function DashboardFormInit() { type Props = {
let navigate = useNavigate(); handleNextStep:()=>any
}
export default function DashboardFormInit({handleNextStep}:Props) {
// let navigate = useNavigate();
// const navigateToProfile = () => navigate(RouteHandler.dashboardProfile);
const navigateToProfile = () => navigate(RouteHandler.dashboardProfile);
return ( return (
<div className="w-full"> <div className="w-full">
<div className="w-full flex justify-center"> <div className="w-full flex justify-center">
@@ -26,15 +31,18 @@ export default function DashboardFormInit() {
name="applyIshInput" name="applyIshInput"
label="For How Many Months?" label="For How Many Months?"
labelClass="font-bold text-[1.125rem]" labelClass="font-bold text-[1.125rem]"
input select={true}
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]" selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="12 Months" // selectValue=''
selectOptions={duration}
// onChange={()=>{}}
/> />
<InputCompOne <InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4" parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput" name="applyIshInput"
label="Direct sales agent ID ( Optional )" label="Direct sales agent ID ( Optional )"
labelClass="font-bold text-[1.125rem]" labelClass="font-bold text-[1.125rem]"
floatLabel='Enter agent ID'
input input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]" inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Agent ID" placeholder="Agent ID"
@@ -43,9 +51,23 @@ export default function DashboardFormInit() {
className="my-8 max-w-[25.875rem] btn-Y text-black w-full h-11" className="my-8 max-w-[25.875rem] btn-Y text-black w-full h-11"
text="Next" text="Next"
type="button" type="button"
onClick={navigateToProfile} onClick={handleNextStep}
/> />
</div> </div>
</div> </div>
); );
} }
interface Option {
value: string;
label: string;
}
const duration: Option[] = [
{ value: "", label: "Please Select" },
{ value: "6", label: "6 Months" },
{ value: "12", label: "12 Months" },
{ value: "18", label: "18 Months" },
{ value: "24", label: "24 Months" },
];
+12 -3
View File
@@ -1,6 +1,10 @@
import React, { FC } from "react"; import React, { FC } from "react";
import DashboardHomeIntro from "./DashboardHomeIntro"; import DashboardHomeIntro from "./DashboardHomeIntro";
import DashboardFormInit from "./DashboardFormInit"; import DashboardFormInit from "./DashboardFormInit";
import DashboardHomeDetail from "./home/DashboardHomeDetail";
import DashboardHomeEmploymentInfo from "./home/DashboardHomeEmploymentInfo";
import DashboardHomeRefereeInfo from "./home/DashboardHomeRefereeInfo";
import DashboardHomeAttestation from "./home/DashboardHomeAttestation";
interface DashboardHomeProps {} interface DashboardHomeProps {}
@@ -8,15 +12,20 @@ const DashboardHome: FC<DashboardHomeProps> = () => {
const [step, setStep] = React.useState(1); const [step, setStep] = React.useState(1);
const handleNextStep = () => { const handleNextStep = () => {
if (step < 2) { if (step < 7) {
setStep(step + 1); setStep(step + 1);
} }
}; };
return ( return (
<div className="w-full"> <div className="w-full">
{step === 1 && <DashboardHomeIntro handleNextStep={handleNextStep} />} {step === 1 && <DashboardHomeIntro step={step} handleNextStep={handleNextStep} />}
{step === 2 && <DashboardFormInit />} {step === 2 && <DashboardFormInit handleNextStep={handleNextStep} />}
{step === 3 && <DashboardHomeDetail handleNextStep={handleNextStep} />}
{step === 4 && <DashboardHomeEmploymentInfo handleNextStep={handleNextStep} />}
{step === 5 && <DashboardHomeRefereeInfo handleNextStep={handleNextStep} />}
{step === 6 && <DashboardHomeAttestation handleNextStep={handleNextStep} />}
{step === 7 && <DashboardHomeIntro step={step} handleNextStep={handleNextStep} />}
</div> </div>
); );
}; };
+39 -16
View File
@@ -69,26 +69,49 @@ export const DashBoardCard: React.FC<DashBoardCardProps> = ({
interface DashboardHomeIntroProps { interface DashboardHomeIntroProps {
handleNextStep: any; handleNextStep: any;
step?:number|string
} }
const DashboardHomeIntro: FC<DashboardHomeIntroProps> = ({ handleNextStep }) => { const DashboardHomeIntro: FC<DashboardHomeIntroProps> = ({ handleNextStep, step }) => {
return ( return (
<> <>
<h1 className="font-bold my-5 text-2xl">Hello, Olanrewaju</h1> {step == 1 ?
<div className="group w-full lg:w-[27.8125rem] h-[12.75rem] mt-7 "> <>
<DashBoardCard <h1 className="font-bold my-5 text-2xl">Hello, Olanrewaju</h1>
cardClass="bg-[#5C2684] relative" <div className="group w-full lg:w-[27.8125rem] h-[12.75rem] mt-7 ">
desc="Begin your application and get up to " <DashBoardCard
descSpan="5 million naira loan." cardClass="bg-[#5C2684] relative"
descClass="leading-[1.5625rem] text-lg text-white" desc="Begin your application and get up to "
descSpanClass="font-bold" descSpan="5 million naira loan."
btnTitle="Apply here" descClass="leading-[1.5625rem] text-lg text-white"
btnTextClass="w-[11.125rem] h-[2.8125rem] flex justify-center item-center btn-W text-[#FBB700]" descSpanClass="font-bold"
image={NairaBag} btnTitle="Apply here"
imgClass="translate-y-4 -rotate-6" btnTextClass="w-[11.125rem] h-[2.8125rem] flex justify-center item-center btn-W text-[#FBB700]"
onClick={handleNextStep} image={NairaBag}
/> imgClass="translate-y-4 -rotate-6"
</div> onClick={handleNextStep}
/>
</div>
</>
:
<>
<h1 className="font-bold my-5 text-2xl">Welcome Back, Olanrewaju</h1>
<div className="group w-full lg:w-[27.8125rem] h-[12.75rem] mt-7 ">
<DashBoardCard
cardClass="bg-[#5C2684] relative"
desc="Your loan application has been reviewed and accepted, please confirm for disbursement."
// descSpan="5 million naira loan."
descClass="leading-[1.5625rem] text-lg text-white"
// descSpanClass="font-bold"
btnTitle="View and accept"
btnTextClass="w-[11.125rem] h-[2.8125rem] flex justify-center item-center btn-W text-[#FBB700]"
image={NairaBag}
imgClass="translate-y-4 -rotate-6"
// onClick={handleNextStep}
/>
</div>
</>
}
</> </>
); );
}; };
+38 -34
View File
@@ -1,21 +1,34 @@
import { Button, InputCompOne, Stepper } from ".."; import { InputCompOne } from "..";
import { useNavigate } from "react-router-dom";
import { RouteHandler } from "../../router/routes";
export default function DashboardProfile() { export default function DashboardProfile() {
let navigate = useNavigate();
const navigateToProfile = () => navigate(RouteHandler.dashboardHome);
return ( return (
<div className="w-full"> <div className="w-full">
<div className="w-full flex justify-center"> <div className='my-[2rem] flex items-center'>
<Stepper step={1} /> <button onClick={navigateToProfile} className='w-6 h-6 text-lg flex justify-center items-center rounded-full bg-gray-500'>&lt;</button>
</div> </div>
<div className="mt-[3.25rem] flex flex-col gap-9"> <div className="max-w-[25.875rem] w-full p-4 rounded-xl flex flex-col gap-1 bg-[#FBB700]/30">
<div className="flex items-center gap-[4.125rem]">
<InputCompOne <InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4" parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput" name="applyIshInput"
label="Select your gender" label="Full name"
labelClass="font-bold text-[1.125rem]" labelClass="font-bold text-[1.125rem]"
input input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]" inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Male" placeholder="John James"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
label="Phone number"
labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="07000000000"
/> />
<InputCompOne <InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4" parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
@@ -26,17 +39,6 @@ export default function DashboardProfile() {
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]" inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Somewhere in lagos" placeholder="Somewhere in lagos"
/> />
</div>
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
label="Marital status"
labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Single"
/>{" "}
<InputCompOne <InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4" parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput" name="applyIshInput"
@@ -46,22 +48,24 @@ export default function DashboardProfile() {
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]" inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Lagos" placeholder="Lagos"
/> />
</div> <InputCompOne
<InputCompOne parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4" name="applyIshInput"
name="applyIshInput" label="Email address"
label="Email address" labelClass="font-bold text-[1.125rem]"
labelClass="font-bold text-[1.125rem]" input
input inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]" placeholder="johndoe@gmail.com"
placeholder="johndoe@gmail.com" />
/> <InputCompOne
<Button parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
className="my-8 max-w-[25.875rem] btn-Y text-black w-full h-11" name="applyIshInput"
text="Next" label="Date of birth"
type="button" labelClass="font-bold text-[1.125rem]"
// onClick={navigateToProfile} input
/> inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="12/10/1994"
/>
</div> </div>
</div> </div>
); );
@@ -0,0 +1,46 @@
import { Button, InputCompOne, Stepper } from '../../shared/index';
// import { useNavigate } from "react-router-dom";
// import { RouteHandler } from '../../../router/routes';
type Props = {
handleNextStep:()=>any
}
export default function DashboardHomeAttestation({handleNextStep}:Props) {
// let navigate = useNavigate();
// const navigateToProfile = () => navigate(RouteHandler.dashboardProfile);
return (
<div className="w-full">
<div className="w-full flex justify-center">
<Stepper step={4} />
</div>
<p className='my-10 text-red-500 text-lg md:text-2xl'>Applicant's Attestation and Debit Instruction</p>
<p className='text-red-500 text-base'>NB: Must be your FCMB account number</p>
<div className="flex flex-col gap-9">
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Disbursement account number"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="0102547896"
/>
</div>
<div className='max-w-[25.875rem] flex gap-4 items-start'>
<input type='checkbox' className='w-4 h-4 p-2 accent-purple-600 text-purple-600 bg-gray-100 border-gray-300 rounded focus:ring-purple-500' />
<p className='text-[12px] text-justify'>By pressing, you agree that you have read, understood and accept the <span className='text-blue-600'>applicatant's attestation</span> and <span className='text-blue-600'>terms and conditions</span> for FCMB
premium salary loan. You also give us permission to collect financial information and run credit checks on the account provided through our partners
</p>
</div>
<Button
className="my-8 max-w-[25.875rem] btn-Y text-black w-full h-11"
text="Apply"
type="button"
onClick={handleNextStep}
/>
</div>
</div>
);
}
@@ -0,0 +1,105 @@
import { Button, InputCompOne, Stepper } from '../../shared/index';
type Props = {
handleNextStep:()=>any
}
export default function DashboardHomeDetail({handleNextStep}:Props) {
return (
<div className="w-full">
<div className="w-full flex justify-center">
<Stepper step={1} />
</div>
<div className="mt-[3.25rem] flex flex-col gap-9">
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
label="Select your gender"
labelClass="font-bold text-[1.125rem]"
select={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
// selectValue=''
selectOptions={gender}
// onChange={()=>{}}
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
label="Residential address"
labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Somewhere in lagos"
/>
</div>
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
label="Marital status"
labelClass="font-bold text-[1.125rem]"
select={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
// selectValue=''
selectOptions={maritalStatus}
// onChange={()=>{}}
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
label="Select your state"
labelClass="font-bold text-[1.125rem]"
select={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
// selectValue=''
selectOptions={state}
// onChange={()=>{}}
/>
</div>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
label="Email address"
labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="johndoe@gmail.com"
/>
<Button
className="my-8 max-w-[25.875rem] btn-Y text-black w-full h-11"
text="Next"
type="button"
onClick={handleNextStep}
/>
</div>
</div>
);
}
interface Option {
value: string;
label: string;
}
const gender: Option[] = [
{ value: "", label: "Please Select" },
{ value: "male", label: "Male" },
{ value: "female", label: "Female" },
{ value: "others", label: "Prefer not to say" },
];
const maritalStatus: Option[] = [
{ value: "", label: "Please Select" },
{ value: "single", label: "Single" },
{ value: "married", label: "Married" },
{ value: "divorced", label: "Divorced" },
];
const state: Option[] = [
{ value: "", label: "Please Select" },
{ value: "abia", label: "Abia" },
{ value: "imo", label: "Imo" },
{ value: "lagos", label: "Lagos" },
];
@@ -0,0 +1,162 @@
import { Button, InputCompOne, Stepper } from '../../shared/index';
type Props = {
handleNextStep:()=>any
}
export default function DashboardHomeEmploymentInfo({handleNextStep}:Props) {
return (
<div className="w-full">
<div className="w-full flex justify-center">
<Stepper step={2} />
</div>
<div className="mt-[3.25rem] flex flex-col gap-9">
<p className='text-red-500 text-lg md:text-2xl'>Employment Informaton</p>
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Job Title"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Software Engineer"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Employer name"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Mr. Mark John"
/>
</div>
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Job Sector"
// labelClass="font-bold text-[1.125rem]"
select={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
// selectValue=''
selectOptions={jobSection}
// onChange={()=>{}}
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Select your industry"
// labelClass="font-bold text-[1.125rem]"
select={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
// selectValue=''
selectOptions={industry}
// onChange={()=>{}}
/>
</div>
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Date of resumption"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="12/12/2015"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Employers official email"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="example@gmail.com"
/>
</div>
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Annual Income"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="1,200,000"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Net monthly salary"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="100,000"
/>
</div>
<div className="flex items-center gap-[4.125rem]">
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Salary payment date"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="30th of every month"
/>{" "}
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Employee ID"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="LS/001/005"
/>
</div>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Highest level of education"
// labelClass="font-bold text-[1.125rem]"
select={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
// selectValue=''
selectOptions={qualification}
// onChange={()=>{}}
/>
<Button
className="my-8 max-w-[25.875rem] btn-Y text-black w-full h-11"
text="Next"
type="button"
onClick={handleNextStep}
/>
</div>
</div>
);
}
interface Option {
value: string;
label: string;
}
const jobSection: Option[] = [
{ value: "", label: "Please Select" },
{ value: "private (non academic)", label: "Private (non academic)" },
];
const industry: Option[] = [
{ value: "", label: "Please Select" },
{ value: "engineering", label: "Engineering" },
];
const qualification: Option[] = [
{ value: "", label: "Please Select" },
{ value: "b.sc + professional qualification", label: "B.Sc + Professional Qualification" },
];
@@ -0,0 +1,126 @@
import { Button, InputCompOne, Stepper } from '../../shared/index';
type Props = {
handleNextStep:()=>any
}
export default function DashboardHomeRefereeInfo({handleNextStep}:Props) {
return (
<div className="w-full">
<div className="w-full flex justify-center">
<Stepper step={3} />
</div>
<div className="mt-[3.25rem] flex flex-col gap-9">
<p className='text-red-500 text-lg md:text-2xl'>Reference Details <span className='text-base'>(Must be 18 years and above)</span></p>
<div className="flex items-center gap-[4.125rem]">
<div className='w-full max-w-[25.875rem]'>
<p className='text-red-500 text-base'>Reference one</p>
<div className='w-full flex flex-col gap-9'>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Full name"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="John James"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Relationship"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Sister"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Phone number"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="07000000000"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Email address"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="demo@gamil.com"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="BVN"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="2228457896"
/>
</div>
</div>
<div className='w-full max-w-[25.875rem]'>
<p className='text-red-500 text-base'>Reference two</p>
<div className='w-full flex flex-col gap-9'>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Full name"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="John James"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Relationship"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Sister"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Phone number"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="07000000000"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="Email address"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="demo@gamil.com"
/>
<InputCompOne
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
name="applyIshInput"
floatLabel="BVN"
// labelClass="font-bold text-[1.125rem]"
input
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="2228457896"
/>
</div>
</div>
</div>
<Button
className="my-8 max-w-[25.875rem] btn-Y text-black w-full h-11"
text="Next"
type="button"
onClick={handleNextStep}
/>
</div>
</div>
);
}
+89
View File
@@ -0,0 +1,89 @@
import React from "react";
import * as Yup from "yup";
import { Form, Formik } from "formik";
import { InputCompOne } from "../shared";
// To get the validation schema
const validationSchema = Yup.object().shape({
bvn: Yup.string()
.required("BVN is required")
.test("no-e", "Invalid number", (value:any) => {
if (value && /^[0-9]*$/.test(value) == false) {
return false;
}
return true;
})
.min(11, "must be 11 digits")
.max(11, "must be 11 digits")
});
// initial values for formik
let initialValues = {
bvn: ''
};
type Props = {
handleNextStep:()=>any
}
const BVN = ({handleNextStep}:Props) => {
const firstInputRef = React.useRef<HTMLInputElement>(null);
const handleSubmit = (values:any) => {
console.log('values', values)
};
return (
<Formik
initialValues={initialValues}
validationSchema={validationSchema}
onSubmit={handleSubmit}
>
{(props:any) => (
<Form className="">
<div className="w-full">
<div className="containerMode flex justify-between gap-1 xl:gap-8 flex-col">
<div className="my-[4rem] flex items-center justify-center w-full">
<h1 className="font-bold text-[2.375rem] text-[#5C2684] my-[.5rem] text-center">
Lets Get You Started
</h1>
</div>
<div className="mx-auto flex flex-col gap-8 max-w-[31.625rem]">
<InputCompOne
parentClass="flex flex-col gap-2"
label="Enter Your BVN "
name="bvn"
parentInputClass="w-full"
labelSpan="( To get your BVN, dial *565*0# )"
labelSpanClass="text-[13px] text-[#5a5a5a] font-semibold"
placeholder="Enter your BVN"
labelClass="font-bold text-[18px] leading-[21.78px] tracking-[2%] text-[#282828] mb-[2px] flex item-center gap-[4px]"
input
inputClass="w-full h-[3.625rem] rounded bg-[#EFEFEF] px-4"
value={props.values.bvn}
onChange={props.handleChange}
ref={firstInputRef}
maxLength={11}
error={(props.errors.bvn && props.touched.bvn) && props.errors.bvn}
/>
<button
type='submit'
className="w-full h-[3.625rem] rounded bg-[#FBB700] rounded-2 px-4 text-[18px] text-[#282828] font-semibold disabled:text-[#282828] disabled:text-opacity-50"
onClick={handleNextStep}
>
Enter
</button>
<p className="text-[#5C2684] mt-[1.5625rem] max-w-[31.625rem]">
***Every personal information attached to your BVN is safe and secured. It is only inportant for us to verify your information and also give you access to your application profile/account
</p>
</div>
</div>
</div>
</Form>
)}
</Formik>
);
};
export default BVN;
+1 -1
View File
@@ -81,7 +81,7 @@ const DebitAccount: React.FC = () => {
className="my-8 max-w-[33.875rem] btn-R bg-[#5A2C82] w-full h-11" className="my-8 max-w-[33.875rem] btn-R bg-[#5A2C82] w-full h-11"
text="Apply" text="Apply"
type="button" type="button"
onClick={()=>navigate(RouteHandler.dashboardHome, {replace:true})} onClick={()=>navigate(RouteHandler.letsGetStarted, {replace:true})}
/> />
</div> </div>
</> </>
+11 -11
View File
@@ -4,14 +4,14 @@ import YourAreAlmostThere from "./YourAreAlmostThere";
import LoanAmountComp from "./LoanAmountComp"; import LoanAmountComp from "./LoanAmountComp";
import ApplicantsAttestation from "./ApplicantsAttestation"; import ApplicantsAttestation from "./ApplicantsAttestation";
const GetStarted = () => { const GetStarted = ({handleNextStep, step}:{handleNextStep:any, step:string|number|any}) => {
const [step, setStep] = React.useState(1); // const [step, setStep] = React.useState(1);
const handleNextStep = () => { // const handleNextStep = () => {
if (step < 4) { // if (step < 5) {
setStep(step + 1); // setStep(step + 1);
} // }
}; // };
// const handlePreviousStep: React.MouseEvent<HTMLButtonElement> = () => { // const handlePreviousStep: React.MouseEvent<HTMLButtonElement> = () => {
// setStep(step - 1); // setStep(step - 1);
@@ -36,16 +36,16 @@ const GetStarted = () => {
<div className="containerMode"> <div className="containerMode">
{/* Main */} {/* Main */}
<main> <main>
{step === 1 && ( {step === 2 && (
<BasicInfo <BasicInfo
inputValues={inputValues} inputValues={inputValues}
setInputValues={setInputValues} setInputValues={setInputValues}
handleNextStep={handleNextStep} handleNextStep={handleNextStep}
/> />
)} )}
{step === 2 && <YourAreAlmostThere handleNextStep={handleNextStep} />} {step === 3 && <YourAreAlmostThere handleNextStep={handleNextStep} />}
{step === 3 && <LoanAmountComp handleNextStep={handleNextStep} />} {step === 4 && <LoanAmountComp handleNextStep={handleNextStep} />}
{step === 4 && <ApplicantsAttestation />} {step === 5 && <ApplicantsAttestation />}
</main> </main>
</div> </div>
</div> </div>
+7 -2
View File
@@ -1,10 +1,13 @@
import { FaCaretDown } from "react-icons/fa";
import dashIcon from "../../assets/images/dashboard/dashDefault.svg"; import dashIcon from "../../assets/images/dashboard/dashDefault.svg";
type Props = { type Props = {
name: string; name: string;
fillColor?: string; fillColor?: string;
className?:string;
}; };
export default function Icons({ name, fillColor }: Props) { export default function Icons({ name, fillColor, className }: Props) {
return ( return (
<> <>
{name == "home" ? ( {name == "home" ? (
@@ -106,7 +109,9 @@ export default function Icons({ name, fillColor }: Props) {
fill={fillColor ? fillColor : "#FFF"} fill={fillColor ? fillColor : "#FFF"}
/> />
</svg> </svg>
) : name == "dash-icon" ? ( ) :name == 'arrow-down'?
<FaCaretDown className={`text-xl ${className && className}`} />
:name == "dash-icon" ? (
<img src={dashIcon} alt="dash-icon" /> <img src={dashIcon} alt="dash-icon" />
) : null} ) : null}
</> </>
+131 -73
View File
@@ -1,21 +1,62 @@
import React from "react"; import React from "react";
import * as Yup from "yup";
import { Form, Formik } from "formik";
import { InputCompOne } from ".."; import { InputCompOne } from "..";
import {useNavigate} from 'react-router-dom'
import { RouteHandler } from "../../router/routes";
// To get the validation schema
const validationSchema = Yup.object().shape({
bvn: Yup.string()
.required("BVN is required")
.test("no-e", "Invalid number", (value:any) => {
if (value && /^[0-9]*$/.test(value) == false) {
return false;
}
return true;
})
.min(11, "must be 11 digits")
.max(11, "must be 11 digits"),
otp: Yup.string()
.required("OTP is required")
.test("no-e", "Invalid number", (value:any) => {
if (value && /^[0-9]*$/.test(value) == false) {
return false;
}
return true;
})
.min(5, "must be 5 digits")
.max(5, "must be 5 digits"),
// .test("no-e", "must be 11 characters", (value:any) => {
// if (value.length < 11) {
// return false;
// }
// return true;
// })
});
// initial values for formik
let initialValues = {
bvn: '',
otp: '',
};
const LetsGetStarted: React.FC = () => { const LetsGetStarted: React.FC = () => {
const [pinValues, setPinValues] = React.useState({ const navigate = useNavigate()
bvn: "", // const [pinValues, setPinValues] = React.useState({
otp: "", // bvn: "",
}); // otp: "",
// });
const [hideOTPComponent, setHideOTPComponent] = React.useState<boolean>(true); const [hideOTPComponent, setHideOTPComponent] = React.useState<boolean>(true);
const firstInputRef = React.useRef<HTMLInputElement>(null); const firstInputRef = React.useRef<HTMLInputElement>(null);
const secondInputRef = React.useRef<HTMLInputElement>(null); const secondInputRef = React.useRef<HTMLInputElement>(null);
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { // const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
let { name, value } = e.target as HTMLInputElement; // let { name, value } = e.target as HTMLInputElement;
setPinValues((prev) => ({ ...prev, [name]: value })); // setPinValues((prev) => ({ ...prev, [name]: value }));
}; // };
const handleInput = (e: React.FormEvent<HTMLInputElement>) => { const handleInput = (e: React.FormEvent<HTMLInputElement>) => {
let { name, value } = e.target as HTMLInputElement; let { name, value } = e.target as HTMLInputElement;
@@ -24,7 +65,7 @@ const LetsGetStarted: React.FC = () => {
const regex = /^[0-9]+$/; const regex = /^[0-9]+$/;
if (regex.test(value)) { if (regex.test(value)) {
if (value?.length == 10) { if (value?.length == 11) {
setHideOTPComponent(false); setHideOTPComponent(false);
// secondInputRef.current?.focus(); // secondInputRef.current?.focus();
} else setHideOTPComponent(true); } else setHideOTPComponent(true);
@@ -34,73 +75,90 @@ const LetsGetStarted: React.FC = () => {
} }
}; };
console.log(secondInputRef) const handleSubmit = (values:any) => {
console.log('values', values)
navigate(RouteHandler.dashboardHome, {replace:true})
};
return ( return (
<div className="w-full"> <Formik
<div className="containerMode flex justify-between gap-1 xl:gap-8 flex-col"> initialValues={initialValues}
<div className="my-[4rem] flex items-center justify-center w-full"> validationSchema={validationSchema}
<h1 className="font-bold text-[2.375rem] text-[#5C2684] my-[.5rem] text-center"> onSubmit={handleSubmit}
Lets Get You Started >
</h1> {(props:any) => (
</div> <Form className="">
<form className="mx-auto flex flex-col gap-8 max-w-[31.625rem] "> <div className="w-full">
<InputCompOne <div className="containerMode flex justify-between gap-1 xl:gap-8 flex-col">
parentClass="flex flex-col gap-2" <div className="my-[4rem] flex items-center justify-center w-full">
label="Enter Your BVN " <h1 className="font-bold text-[2.375rem] text-[#5C2684] my-[.5rem] text-center">
name="bvn" Lets Get You Started
parentInputClass="w-full" </h1>
labelSpan="( To get your BVN, dial *565*0# )" </div>
labelSpanClass="text-[13px] text-[#5a5a5a] font-semibold" <div className="mx-auto flex flex-col gap-8 max-w-[31.625rem] ">
placeholder="Enter your BVN" <InputCompOne
labelClass="font-bold text-[18px] leading-[21.78px] tracking-[2%] text-[#282828] mb-[2px] flex item-center gap-[4px]" parentClass="flex flex-col gap-2"
input label="Enter Your BVN "
inputClass="w-full h-[3.625rem] rounded bg-[#EFEFEF] px-4" name="bvn"
value={pinValues.bvn} parentInputClass="w-full"
onChange={handleChange} labelSpan="( To get your BVN, dial *565*0# )"
onInput={handleInput} labelSpanClass="text-[13px] text-[#5a5a5a] font-semibold"
ref={firstInputRef} placeholder="Enter your BVN"
maxLength={10} labelClass="font-bold text-[18px] leading-[21.78px] tracking-[2%] text-[#282828] mb-[2px] flex item-center gap-[4px]"
/> input
{!hideOTPComponent ? ( inputClass="w-full h-[3.625rem] rounded bg-[#EFEFEF] px-4"
<InputCompOne value={props.values.bvn}
parentClass="flex flex-col gap-2" onChange={props.handleChange}
label="Enter OTP " onInput={handleInput}
name="otp" ref={firstInputRef}
parentInputClass="w-full" maxLength={11}
labelSpan="( Please check your BVN phone number for verification pin )" error={(props.errors.bvn && props.touched.bvn) && props.errors.bvn}
labelSpanClass="text-[13px] text-[#5a5a5a] font-semibold" />
placeholder="Enter your OTP" {!hideOTPComponent && (
labelClass="font-bold text-[18px] leading-[21.78px] tracking-[2%] text-[#282828] mb-[2px] flex item-center gap-[4px]" <InputCompOne
input parentClass="flex flex-col gap-2"
inputClass="w-full h-[3.625rem] rounded bg-[#EFEFEF] px-4" label="Enter OTP "
value={pinValues.otp} name="otp"
onChange={handleChange} parentInputClass="w-full"
onInput={handleInput} labelSpan="( Please check your BVN phone number for verification pin )"
ref={secondInputRef} labelSpanClass="text-[13px] text-[#5a5a5a] font-semibold"
/> placeholder="Enter your OTP"
) : null} labelClass="font-bold text-[18px] leading-[21.78px] tracking-[2%] text-[#282828] mb-[2px] flex item-center gap-[4px]"
<button input
className="w-full h-[3.625rem] rounded bg-[#FBB700] rounded-2 px-4 text-[18px] text-[#282828] font-semibold disabled:text-[#282828] disabled:text-opacity-50" inputClass="w-full h-[3.625rem] rounded bg-[#EFEFEF] px-4"
disabled={!pinValues.otp} value={props.values.otp}
> onChange={props.handleChange}
Enter onInput={handleInput}
</button> ref={secondInputRef}
maxLength={11}
error={(props.errors.otp && props.touched.otp) && props.errors.otp}
/>
)}
<button
type='submit'
className="w-full h-[3.625rem] rounded bg-[#FBB700] rounded-2 px-4 text-[18px] text-[#282828] font-semibold disabled:text-[#282828] disabled:text-opacity-50"
disabled={!props.values.otp}
>
Enter
</button>
{hideOTPComponent ? ( {hideOTPComponent ? (
<p className="text-[#5C2684] mt-[1.5625rem] w-fit"> <p className="text-[#5C2684] mt-[1.5625rem] w-fit">
***Every personal information attached to your BVN is safe and ***Every personal information attached to your BVN is safe and
secure. It is only important for us to verify your information and secure. It is only important for us to verify your information and
also give you access to your application profile/account. also give you access to your application profile/account.
</p> </p>
) : ( ) : (
<p className="text-[#5C2684] mt-[1.5625rem] w-fit"> <p className="text-[#5C2684] mt-[1.5625rem] w-fit">
***Did not receive OTP? Click to resend ***Did not receive OTP? Click to resend
</p> </p>
)} )}
</form> </div>
</div> </div>
</div> </div>
</Form>
)}
</Formik>
); );
}; };
+32 -10
View File
@@ -1,10 +1,12 @@
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import { Icons } from "../Icons";
export interface InputCompOneProps { export interface InputCompOneProps {
label: string; label?: string;
labelClass: string; labelClass?: string;
labelSpan?: string; labelSpan?: string;
labelSpanClass?: string; labelSpanClass?: string;
floatLabel?: string;
placeholder?: string; placeholder?: string;
value?: string; value?: string;
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void; onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
@@ -20,9 +22,9 @@ export interface InputCompOneProps {
inputClass?: string; inputClass?: string;
parentInputClass?: string; parentInputClass?: string;
selectClass?: string; selectClass?: string;
parentSelectClass?: string;
parentClass?: string; parentClass?: string;
maxLength?: number; maxLength?: number;
error?: string;
} }
const InputCompOne = forwardRef<HTMLInputElement, InputCompOneProps>( const InputCompOne = forwardRef<HTMLInputElement, InputCompOneProps>(
@@ -32,6 +34,7 @@ const InputCompOne = forwardRef<HTMLInputElement, InputCompOneProps>(
labelClass, labelClass,
labelSpan, labelSpan,
labelSpanClass, labelSpanClass,
floatLabel,
placeholder, placeholder,
value, value,
onChange, onChange,
@@ -46,22 +49,23 @@ const InputCompOne = forwardRef<HTMLInputElement, InputCompOneProps>(
inputClass, inputClass,
parentInputClass, parentInputClass,
selectClass, selectClass,
parentSelectClass,
parentClass, parentClass,
maxLength, maxLength,
error,
}, },
forwardedRef forwardedRef
) => { ) => {
return ( return (
<div className={parentClass}> <div className={parentClass}>
{label && ( {label && (
<label htmlFor="" className={labelClass}> <label htmlFor={label ? label : floatLabel} className={labelClass}>
{label} {label}
{labelSpan && <span className={labelSpanClass}>{labelSpan}</span>} {labelSpan && <span className={labelSpanClass}>{labelSpan}</span>}
{error && <span className='text-[10px] text-red-500'>{error}</span>}
</label> </label>
)} )}
{input && ( {input && (
<div className={parentInputClass}> <div className={`relative ${parentInputClass}`}>
<input <input
type={inputType} type={inputType}
placeholder={placeholder} placeholder={placeholder}
@@ -71,18 +75,26 @@ const InputCompOne = forwardRef<HTMLInputElement, InputCompOneProps>(
name={name} name={name}
tabIndex={tabIndex} tabIndex={tabIndex}
ref={forwardedRef} ref={forwardedRef}
className={inputClass} className={`px-4 ${floatLabel && 'peer pt-4 placeholder:text-transparent'} ${inputClass}`}
maxLength={maxLength} maxLength={maxLength}
id={label ? label : floatLabel}
/> />
{floatLabel &&
<label
htmlFor={label ? label : floatLabel}
className={`cursor-pointer text-sm text-black/70 dark:text-white absolute left-4 top-0 translate-y-0 peer-focus:top-0 peer-focus:translate-y-0 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 transition-all duration-500`}
>{floatLabel}</label>
}
</div> </div>
)} )}
{select && ( {select && (
<div className={parentSelectClass}> <div className={`relative ${parentInputClass}`}>
<select <select
name={name} name={name}
id="" id={label ? label : floatLabel}
value={selectValue} value={selectValue}
className={selectClass} className={`px-4 appearance-none ${floatLabel && 'peer pt-4'} ${selectClass}`}
// onChange={onChange}
> >
{selectOptions.map(({ value, label }) => ( {selectOptions.map(({ value, label }) => (
<option key={value} value={value}> <option key={value} value={value}>
@@ -90,6 +102,16 @@ const InputCompOne = forwardRef<HTMLInputElement, InputCompOneProps>(
</option> </option>
))} ))}
</select> </select>
{floatLabel &&
<label
htmlFor={label ? label : floatLabel}
className={`cursor-pointer text-sm text-black/70 dark:text-white absolute left-4 top-0 translate-y-0 peer-focus:top-0 peer-focus:translate-y-0 transition-all duration-500`}
>{floatLabel}</label>
}
{/* select custon arrow */}
<div className='absolute right-4 top-1/2 -translate-y-1/2'>
<Icons name='arrow-down' />
</div>
</div> </div>
)} )}
</div> </div>
+20 -4
View File
@@ -1,12 +1,28 @@
import React from "react"; import React from "react";
import { GetStarted as Main } from "../components"; import { GetStarted as Main } from "../components";
import { GetStartedLayout } from "../layouts"; import { GetStartedLayout, LetsGetStartedLayout } from "../layouts";
import BVN from "../components/GetStarted/BVN";
const GetStartedPage: React.FC = () => { const GetStartedPage: React.FC = () => {
const [step, setStep] = React.useState(1);
const handleNextStep = () => {
if (step < 5) {
setStep(step + 1);
}
};
return ( return (
<GetStartedLayout> <>
<Main /> {step == 1 ?
</GetStartedLayout> <LetsGetStartedLayout>
<BVN handleNextStep={handleNextStep} />
</LetsGetStartedLayout>
:
<GetStartedLayout>
<Main step={step} handleNextStep={handleNextStep} />
</GetStartedLayout>
}
</>
); );
}; };
+4 -4
View File
@@ -32,7 +32,7 @@ export const lowerMenuItems = [
{ {
id: 3, id: 3,
name: "CORPORATE BANKING", name: "CORPORATE BANKING",
linkPath: "/corporate-banking", linkPath: "/cooperate-banking",
}, },
{ {
id: 4, id: 4,
@@ -277,7 +277,7 @@ export const _lowerMenuItems = [
}, },
{ {
name: "CORPORATE BANKING", name: "CORPORATE BANKING",
linkPath: "/corporate-banking", linkPath: "/cooperate-banking",
subItems: [ subItems: [
{ {
name: "FOREIGN EXCHANGE SERVICES", name: "FOREIGN EXCHANGE SERVICES",
@@ -436,12 +436,12 @@ export const footerItems = [
], ],
}, },
{ {
category: "CORPORATE BANKING", category: "COOPORATE BANKING",
subItems: [ subItems: [
{ text: "FOREIGN EXCHANGE SERVICES", href: "/foreign-exchange-services" }, { text: "FOREIGN EXCHANGE SERVICES", href: "/foreign-exchange-services" },
{ text: "TRADE SERVICES", href: "/node/166" }, { text: "TRADE SERVICES", href: "/node/166" },
{ text: "CASH MANAGEMENT SOLUTIONS", href: "/cash-management" }, { text: "CASH MANAGEMENT SOLUTIONS", href: "/cash-management" },
{ text: "CORPORATE FINANCE", href: "/corporate-finance" }, { text: "COOPORATE FINANCE", href: "/corporate-finance" },
], ],
}, },
{ {