PageSourceSearch

https://myka.ng/assets/DetailsPage-CGZyGle5.js

js myka.ng collected 2026-10-09 22:43:48 UTC 14,755 bytes, 1 lines download raw bytes

1import{d as ye,u as Se,r as B,j as e,N as je}from"./vendor-react-DfYGAhtm.js";import{b as ve,c as Ce,i as Ne,d as Be,C as d}from"./vendor-forms-BP-7CbAP.js";import{ar as Ae,Y as Ie,t as $,m as y,g as re,b0 as Pe}from"./index-DsBgCU7r.js";import{K as Re}from"./KycNinModal-HYhUNMVV.js";import{D as X}from"./DatePickerField-CClDGS0S.js";import{P as J}from"./PhoneNumberInput-BzKYFaoQ.js";import{S as z}from"./SelectField-B8rkxDSz.js";import{H as Ee,a as Te,r as ke,aF as Oe,b4 as De}from"./vendor-icons-1odZwi-b.js";import{w as Fe,x as Ve,h as s,p as Y,d as te,e as j,y as G,c as _e,z as Z,A as H,B as Me,C as Le,D as we,E as $e,F as ze}from"./SavingsCardShell-BXwb2Evc.js";import{a as v,T as h,v as P,F as E,H as R,I as Ge,G as ee}from"./vendor-ui-DA_r9yXk.js";import{S as W}from"./routes-BR5I3bEX.js";import{g as ie}from"./errors-BYKXB8DF.js";import{b as He,c as Ke}from"./savingsPolicyApi-D4i5qSCX.js";import{t as Ye,a as We}from"./dateOfBirth-BQh2Bcet.js";import{h as qe}from"./userEmail-9DwyWHBc.js";import{b as Ue}from"./savingsBudget-ALoZ0Gim.js";import"./LinkPaymentMethodOption-CuZHpNDU.js";import"./vendor-state-BsBVN-fX.js";import"./Modal-DS-VW05m.js";import"./NinVerificationPanel-Cl3L-HVS.js";import"./DropdownPopover-KjBTPKBF.js";import"./nigerianPhone-B1rv0Wc5.js";import"./checkoutSessionStore-BRM5sYZN.js";const Qe=r=>r.beneficiaries.map(a=>({name:`${a.firstName.trim()} ${a.lastName.trim()}`.trim(),dbirth:Ye(a.dateOfBirth),relationship:Fe(a.relationship),proportion:Number(a.percentage),phoneNumber:a.phoneNumber.trim(),...a.email.trim()?{email:a.email.trim()}:{},address:a.address.trim(),stateOfResidence:a.stateOfResidence.trim(),occupation:a.occupation.trim()})),oe={firstName:"",lastName:"",dateOfBirth:"",relationship:"",percentage:"",phoneNumber:"",email:"",address:"",stateOfResidence:"",occupation:""},ae={identity:{nin:"",fullName:"",dateOfBirth:"",gender:""},contact:{phoneNumber:"",email:"",residentialAddress:""},beneficiaries:[oe]},Xe=r=>{const a=r.trim().toLowerCase();return a==="m"||a==="male"?"male":a==="f"||a==="female"?"female":a},se=r=>({isIdentityLocked:!!(r?.kycApproved&&r.kyc),isEmailLocked:qe(r?.email)}),ne=({user:r,existing:a})=>{const t=a??ae,{isIdentityLocked:c,isEmailLocked:l}=se(r),n=c?r?.kyc:null,{fullName:g}=Ae(n);return{identity:{nin:n?.documentNo?.trim()||t.identity.nin,fullName:g||t.identity.fullName,dateOfBirth:n?.dateOfBirth?We(n.dateOfBirth):t.identity.dateOfBirth,gender:n?.gender?Xe(n.gender):t.identity.gender},contact:{phoneNumber:t.contact.phoneNumber.trim()||(n?.phoneNumber??r?.phoneNumber)?.trim()||"",email:l?(r?.email??"").trim():t.contact.email,residentialAddress:t.contact.residentialAddress.trim()||(n?.address?.trim()??"")}
1,beneficiaries:t.beneficiaries.length?t.beneficiaries:ae.beneficiaries}},Je=()=>{const r=ye(),{state:a}=Se(),t=a,c=t?.plan??null,l=t?.goal??null,n=t?.policy??null,g=t?.rider,m=t?.customerDetails??null,u=Ie(),{isIdentityLocked:o,isEmailLocked:A}=se(u),{updateSavingsBeneficiaries:T,isLoading:k}=He(),{createSavingsPolicyQuote:O,isLoading:D}=Ke(),F=k||D,V=B.useMemo(()=>ne({user:u,existing:m}),[u,m]),[S,C]=B.useState(()=>o?"contact":"identity"),[_,N]=B.useState(0),[M,I]=B.useState(!1),{control:i,handleSubmit:b,formState:le,getValues:q,reset:U}=ve({resolver:Ce(Ve),mode:"onChange",defaultValues:V}),Q=B.useRef(o);B.useEffect(()=>{!o||Q.current||(Q.current=!0,U(ne({user:u,existing:q()})))},[o,u,U,q]);const{fields:L,append:ce,remove:de}=Ne({control:i,name:"beneficiaries"}),w=(Be({control:i,name:"beneficiaries"})??[]).reduce((f,x)=>f+(Number(x.percentage)||0),0),pe=w===100,me=Math.max(0,100-w);if(!c||!l||!n)return{status:"redirect"};const ue=f=>{C(x=>x===f?null:f)},xe=f=>{de(f),N(x=>x>=f?Math.max(0,x-1):x)},he=()=>{ce(oe),N(L.length)},ge=()=>{C("contact"),$.success("Identity verified — we have filled in your details.")},fe=f=>{if(!o){I(!0);return}T({policyId:n.id,payload:{beneficiaries:Qe(f)}},{onSuccess:()=>{O({policyId:n.id,productId:c.id,paymentFrequency:l.frequency},{onSuccess:x=>{r(`/${W.Summary}`,{state:{plan:c,goal:l,customerDetails:f,policy:{...n,...x.data},...g?{rider:g}:{}}})},onError:x=>{$.error(ie(x)??"We could not price this plan. Please try again.")}})},onError:x=>{$.error(ie(x)??"We could not save your beneficiary details. Please try again.")}})},be=()=>r({pathname:`/${W.Plan}`,search:Ue({amount:l.contributionAmount,frequency:l.frequency,duration:l.durationYears})},{state:{plan:c,goal:l,...g?{rider:g}:{}}});return{status:"ready",control:i,handleSubmit:b,formState:le,fields:L,beneficiaryIndex:Math.min(_,Math.max(L.length-1,0)),setActiveBeneficiary:N,openSection:S,toggleSection:ue,isIdentityLocked:o,isEmailLocked:A,isKycModalOpen:M,openKycModal:()=>I(!0),closeKycModal:()=>I(!1),handleKycVerified:ge,handleAddBeneficiary:he,handleRemoveBeneficiary:xe,totalPercentage:w,isTotalValid:pe,remainingPercentage:me,isSubmitting:F,onSubmit:fe,goToPlan:be}},K=({title:r,isOpen:a,onToggle:t,children:c})=>e.jsxs(v,{bg:"white",border:"1px solid",borderColor:s.tileBorder,borderRadius:"16px",boxShadow:a?"0px 1px 1.5px rgba(0, 0, 0, 0.1), 0px 1px 1px rgba(0, 0, 0, 0.1)":void 0,children:[e.jsxs(Y,{type:"button",onClick:t,"aria-expanded":a,display:"flex",w:"100%",alignItems:"center",justifyContent:"space-between",p:"16px",_hover:{opacity:.85},children:[e.jsx(h,{fontFamily:te,fontSize:"16px",fontWeight:"600",lineHeight:"24px",color:y.text.tertiary,children:r}),e.jsx(P,{as:a?Ee:Te,boxSize:"18px",color:y.text.tertiary})]}),a&&e.jsx(E,{direction:"column",gap:"16px",px:"16px",pb:"16px",children:c})]}),Ze=({count:r,activeIndex:a,onSelect:t,onRemove:c,onAdd:l,canAdd:n})=>e.jsxs(R,{gap:"8px",pb:"8px",wrap:"wrap",children:[Array.from({length:r},(g,m)=>{const u=m===a;return e.jsxs(R,{gap:"8px",px:"13px",py:"7px",bg:"white",border:"1px solid",borderColor:u?s.orangeMain:s.tileBorder,borderRadius:"100px",cursor:"pointer",onClick:()=>t(m),children:[e.jsx(v,{boxSize:"16px",borderRadius:"full",border:"2px solid",borderColor:u?s.orangeMain:s.tileBorder,flexShrink:0}),e.jsxs(h,{fontFamily:j,fontSize:"13px",lineHeight:"19.5px",color:y.text.tertiary,whiteSpace:"nowrap",children:["Beneficiary ",m+1]}),r>1&&e.jsx(Y,{type:"button","aria-label":`Remove beneficiary ${m+1}`,display:"flex",pl:"4px",onClick:o=>{o.stopPropagation(),c(m)},children:e.jsx(P,{as:ke,boxSize:"14px",color:y.text.tertiary})})]},m)}),n&&e.jsx(Y,{type:"button","aria-label":"Add beneficiary",onClick:l,display:"flex",boxSize:"32px",alignItems:"center",justifyContent:"center",borderRadius:"full",border:"1px solid",borderColor:s.tileBorder,flexShrink:0,_hover:{borderColor:s.orangeMain},children:e.jsx(P,{as:Oe,boxSize:"16px",color:y.text.tertiary})})]}),p=({label:r,isRequired:a=!1,children:t,hint:c,trailing:l,placeholder:n,value:g,onChange:m,type:u="text",isReadOnly:o=!1})=>e.jsxs(v,{w:"100%",children:[e.jsxs(E,{direction:"column",gap:"6px",children:[e.jsxs(h,{fontFamily:j,fontSize:"13px",fontWeight:"medium",lineHeight:"19.5px",letterSpacing:"-0.13px",color:y.text.tertiary,children:[r,a&&e.jsxs(h,{as:"span",color:"#D92D20",children:[" ","*"]})]}),t??e.jsxs(v,{position:"relative",children:[e.jsx(Ge,{...G,type:u,placeholder:n,value:g??"",onChange:A=>m?.(A.target.value),readOnly:o,pr:l?"110px":G.px,opacity:o?.75:1,cursor:o?"default":"text",bg:o?"#F8FAFC":G.bg,_focusVisible:o?{outline:"none"}:{outline:"none",borderColor:y.orange[500]}}
1),l&&e.jsx(v,{position:"absolute",right:"12px",top:"50%",transform:"translateY(-50%)",children:l})]})]}),c&&e.jsx(h,{pt:"4px",fontFamily:j,fontSize:"10px",lineHeight:"15px",color:"#D92D20",children:c})]}),ei=({onVerify:r})=>e.jsxs(E,{direction:{base:"column",sm:"row"},align:{base:"stretch",sm:"center"},gap:"12px",bg:s.noticeBg,border:"1px solid",borderColor:s.noticeBorder,borderRadius:"16px",p:"16px",children:[e.jsx(P,{as:De,boxSize:"20px",flexShrink:0,color:s.orangeMain,display:{base:"none",sm:"block"}}),e.jsxs(v,{flex:"1",children:[e.jsx(h,{fontFamily:j,fontSize:"13px",fontWeight:"semibold",lineHeight:"19.5px",color:s.orangeMain,children:"Verify your identity"}),e.jsx(h,{pt:"2px",fontFamily:j,fontSize:"12px",lineHeight:"18px",color:y.text.tertiary,children:"Verify your NIN once and we will fill these details in for you."})]}),e.jsx(re,{buttonType:"primary",type:"button",text:"Verify NIN",h:"40px",borderRadius:"full",fontFamily:j,fontSize:"13px",fontWeight:"medium",flexShrink:0,onClick:r})]}),ii=()=>e.jsxs(R,{gap:"6px",bg:s.successBg,borderRadius:"full",px:"10px",py:"4px",children:[e.jsx(v,{boxSize:"6px",borderRadius:"full",bg:s.successGreen,flexShrink:0}),e.jsx(h,{fontFamily:j,fontSize:"11px",fontWeight:"medium",lineHeight:"16.5px",color:s.successGreen,children:"Verified"})]}),Ai=()=>{const r=Je();if(r.status==="redirect")return e.jsx(je,{to:`/${W.Budget}`,replace:!0});const{control:a,handleSubmit:t,formState:c,fields:l,beneficiaryIndex:n,setActiveBeneficiary:g,openSection:m,toggleSection:u,isIdentityLocked:o,isEmailLocked:A,isKycModalOpen:T,openKycModal:k,closeKycModal:O,handleKycVerified:D,handleAddBeneficiary:F,handleRemoveBeneficiary:V,totalPercentage:S,isTotalValid:C,remainingPercentage:_,isSubmitting:N,onSubmit:M,goToPlan:I}=r;return e.jsxs(_e,{onBack:I,children:[e.jsx(Re,{open:T,onClose:O,onVerified:D}),e.jsxs("form",{onSubmit:t(M),children:[e.jsxs(h,{as:"h1",pb:"27px",fontFamily:te,fontWeight:"600",fontSize:{base:"26px",md:"30px"},lineHeight:"40px",letterSpacing:"-0.5px",color:y.text.tertiary,children:["Tell us about"," ",e.jsx(h,{as:"span",color:s.orangeMain,children:"yourself"})]}),e.jsxs(E,{direction:"column",gap:"16px",pb:"16px",children:[e.jsxs(K,{title:"Identity & Verification",isOpen:m==="identity",onToggle:()=>u("identity"),children:[!o&&e.jsx(ei,{onVerify:k}),e.jsx(d,{name:"identity.nin",control:a,render:({field:i})=>e.jsx(p,{label:"NIN",isRequired:!0,placeholder:"e.g. 12345678901",value:i.value,onChange:i.onChange,isReadOnly:o,...o?{trailing:e.jsx(ii,{})}:{}})}),e.jsx(d,{name:"identity.fullName",control:a,render:({field:i})=>e.jsx(p,{label:"Full Name",placeholder:"e.g. Peculiar Keys Balogun",value:i.value,onChange:i.onChange,isReadOnly:o})}),e.jsxs(ee,{templateColumns:{base:"1fr",sm:"repeat(2, minmax(0, 1fr))"},gap:"16px",children:[e.jsx(d,{name:"identity.dateOfBirth",control:a,render:({field:i})=>e.jsx(p,{label:"Date of Birth",children:e.jsx(X,{value:i.value,onChange:i.onChange,iconPosition:"right",borderRadius:"48px",borderColor:s.inputBorder,isDisabled:o,inputProps:Z})})}),e.jsx(d,{name:"identity.gender",control:a,render:({field:i})=>e.jsx(p,{label:"Gender",children:e.jsx(z,{options:Me,value:i.value,onChange:i.onChange,placeholder:"",borderRadius:"48px",isDisabled:o,triggerProps:H})})})]})]}),e.jsxs(K,{title:"Contact & Address",isOpen:m==="contact",onToggle:()=>u("contact"),children:[e.jsx(d,{name:"contact.phoneNumber",control:a,render:({field:i,fieldState:b})=>e.jsx(p,{label:"Phone Number",isRequired:!0,children:e.jsx(J,{value:i.value,onChange:i.onChange,placeholder:"080...",hasError:!!b.error,error:b.error?.message,border:`1px solid ${s.inputBorder}`})})}),e.jsx(d,{name:"contact.email",control:a,render:({field:i})=>e.jsx(p,{label:"Email Address",type:"email",placeholder:"[email protected]",value:i.value,onChange:i.onChange,isReadOnly:A})}),e.jsx(d,{name:"contact.residentialAddress",control:a,render:({field:i,fieldState:b})=>e.jsx(p,{label:"Residential Address",isRequired:!0,placeholder:"Lekki Phase",value:i.value,onChange:i.onChange,...b.error?.message?{hint:b.error.message}:{}})})]}),e.jsxs(K,{title:"Beneficiary Details",isOpen:m==="beneficiary",onToggle:()=>u("beneficiary"),children:[e.jsx(Ze,{count:l.length,activeIndex:n,onSelect:g,onRemove:V,onAdd:F,canAdd:l.length<Le}),e.jsxs(ee,{templateColumns:{base:"1fr",sm:"repeat(2, minmax(0, 1fr))"},gap:"16px",children:[e.jsx(d,{name:`beneficiaries.${n}.firstName`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary First Name",placeholder:"First Name",value:i.value,onChange:i.onChange})}),e.jsx(d,{name:`beneficiaries.${n}.lastName`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary Last Name",placeholder:"Last Name",value:i.value,onChange:i.onChange})})]}),e.jsx(d,{name:`beneficiaries.${n}.dateOfBirth`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary DOB",children:e.jsx(X,{value:i.value,onChange:i.onChange,iconPosition:"right",borderRadius:"48px",borderColor:s.inputBorder,inputProps:Z,maxDate:Pe()})})}),e.jsx(d,{name:`beneficiaries.${n}.relationship`,control:a,render:({field:i})=>e.jsx(p,{label:"Relationship with policy holder",children:e.jsx(z,{options:we,value:i.value,onChange:i.onChange,placeholder:"",borderRadius:"48px",triggerProps:H})})}),e.jsx(d,{name:`beneficiaries.${n}.percentage`,control:a,render:({field:i})=>e.jsx(p,{label:"Percentage Distribution",hint:"* Specify how much of the benefit this beneficiary will receive as a percentage (max 100%).",placeholder:"e.g. 50",value:i.value,onChange:b=>
1{i.onChange($e(b))}})}),e.jsx(h,{fontFamily:j,fontSize:"12px",fontWeight:"medium",lineHeight:"18px",color:C?s.successGreen:s.orangeMain,children:C?`Allocated: ${S}%`:S>100?`Allocated: ${S}% · Over by ${S-100}% (must total 100%)`:`Allocated: ${S}% · Remaining: ${_}% (must total 100%)`}),e.jsx(d,{name:`beneficiaries.${n}.phoneNumber`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary Phone Number",children:e.jsx(J,{value:i.value,onChange:i.onChange,placeholder:"8123456789...",border:`1px solid ${s.inputBorder}`})})}),e.jsx(d,{name:`beneficiaries.${n}.email`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary Email Address (optional)",type:"email",placeholder:"[email protected]",value:i.value,onChange:i.onChange})}),e.jsx(d,{name:`beneficiaries.${n}.occupation`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary Occupation",placeholder:"e.g. Teacher",value:i.value,onChange:i.onChange})}),e.jsx(d,{name:`beneficiaries.${n}.stateOfResidence`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary State of Residence",children:e.jsx(z,{options:ze,value:i.value,onChange:i.onChange,placeholder:"Select state",searchable:!0,borderRadius:"48px",triggerProps:H})})}),e.jsx(d,{name:`beneficiaries.${n}.address`,control:a,render:({field:i})=>e.jsx(p,{label:"Beneficiary Residential Address",placeholder:"e.g. 12 Adeola Odeku Street, Victoria Island",value:i.value,onChange:i.onChange})})]})]}),(c.errors.beneficiaries?.root||m==="beneficiary"&&!C&&S>0)&&e.jsx(R,{pb:"12px",children:e.jsx(h,{fontSize:"12px",color:"#D92D20",children:c.errors.beneficiaries?.root?.message??"Beneficiary percentages must add up to 100%"})}),e.jsx(v,{pt:"25px",children:e.jsx(re,{buttonType:"primary",type:"submit",text:"Continue",size:"lg",h:"48px",fullWidth:!0,borderRadius:"full",fontSize:"14px",fontWeight:"medium",letterSpacing:"-0.9px",loading:N,disabled:!c.isValid||N})})]})]})};export{Ai as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.